V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
HowardMei
V2EX  ›  问与答

请教 Crypto 和算法达人一个有趣的问题

  •  
  •   HowardMei · 2015-04-01 00:58:00 +08:00 · 1742 次点击
    这是一个创建于 3533 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前文件防篡改,可以通过GPG私钥签名,然后别人通过公钥来验证,电子文档水印不知道什么原理。

    有没有这样一种自包含的文件校验机制:
    假设一个文件A,用一种对计算时点敏感的指纹算法FT[假设每次计算必须通过公共网络校验真正时间点],生成该文件以时间戳S为基的内容特征指纹X=FT(A,S0),使得A+X这个新文件的指纹Y=FT(A+X,S1),可用于文件完整性校验Check(X,Y),还可反向求解出唯一正确的S0=GT(Y,S1) ,也就是说发布该文件和它的指纹X后,无论更改文件内容A,或更改指纹内容X,或更改A后用FT重新生成X达到同步更改A+X的目的,由于指纹算法FT和GT本身是计算时点敏感的,会使得校验无法通过,且能算出更改的时间戳S2。

    对比:目前的Checksum机制,发布文件A,同时发布MD5值X供校验,如果随后更改A成为A2,会和X不匹配,但只要原作者再生成新的MD5值X2,清除原来X就行了,人们根本无从知晓A+X悄悄变成了A2+X2,因为生成MD5的算法对计算时点并不敏感。另有Bitstamp用Bitcoin的Blockchain记录曾经算过的文件指纹,但算法本身并不随时间演化。

    请问这样的不依赖Blockchain的自包含指纹算法有吗?或者不可能有吗?
    7 条回复    2015-04-01 17:11:43 +08:00
    SoloCompany
        1
    SoloCompany  
       2015-04-01 03:13:02 +08:00 via iPad
    只要算法是公开,就容易证明没可能,这也是公私钥系统存在的必要性所在,如果你的算法对时间敏感,打个比方,互联网有个时钟种子发生器生成不可篡改的时间戳,那只不过是然这个后面的时钟发生器系统成为另一种ca签名机制而已,你完全可以简单设计算法

    签名= 内容发布时间+sign(发布时间,内容md5,时间系统私钥)

    关键是,时间系统的私钥没有任何人掌握,要有一个ca中心负责签名而已

    只不过是把gpg的个人私钥换成一个ca系统的私钥而已,毫无差别
    SoloCompany
        2
    SoloCompany  
       2015-04-01 03:15:56 +08:00 via iPad
    真正去中心化的,参考各种虚拟货币系统是怎么设计就好了
    jybox
        3
    jybox  
       2015-04-01 07:45:17 +08:00   ❤️ 1
    这个问题的关键是「时间」是独立于计算机世界之外的一个变量,必须要由外部来定义时间。

    简而言之有两种方案,一种是使用一些机构提供的时间证明服务,即你发给它一段数据,它用数字签名签上当时的时间。一般靠谱的机构都是收钱的,不收钱的通常不是很靠谱,国内的比如 http://www.tsa.cn/

    另一种方案是就是把这段数据嵌入到一个链状的 P2P 网络中,比如比特币网络,我有写过一篇日志来讨论这个话题: https://jysperm.me/2013/12/1443/
    jybox
        4
    jybox  
       2015-04-01 07:50:06 +08:00
    我上面的日志是一年多以前写的,刚刚发现似乎已经有很多人把这个过程自动化了,比如 https://www.btproof.com/
    cfan8
        5
    cfan8  
       2015-04-01 10:06:16 +08:00
    比特币在技术上的创新之处就是提供了一种证明时间先后的办法

    @jybox 说的非常清楚了,楼主可以多了解
    HowardMei
        6
    HowardMei  
    OP
       2015-04-01 16:09:18 +08:00
    @SoloCompany 算法公开的是没错,我在幻想有一种活的算法,即便公开了,但因为它本身是时变的,所以不需要root ca xD

    @jybox 日志写得不错,挺清楚,但它利用了Bitcoin Blockchain,需要Proof of work,而且交易的时效性不佳,作为电子合同来讲聊甚于无

    @cfan8 比特币本身的交易合同不是按时间锁定的,而是按工作量扩散锁定,时间精度不够
    SoloCompany
        7
    SoloCompany  
       2015-04-01 17:11:43 +08:00
    @HowardMei 怎么可能会有这样的独立算法,注意我强调的是 [独立] 两个字。这个和热寂定律差不多。封闭系统是不可能的。

    非独立系统那就是上面讨论的这些了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2739 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:25 · PVG 23:25 · LAX 07:25 · JFK 10:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.