第四章 中级协议

4.1时间戳服务   

    在很多情况中,人们需要证明某个文件在某个时期存在。版权或专利争端即是谁有产生争议的工作的最早的副本,谁就将赢得官司。对于纸上的文件,公证人可以对文件签名,律师可以保护副本。如果产生了争端,公证人或律师可以证明某封信产生于某个时间。

    在数字世界中,事情要复杂得多。没有办法检查窜改签名的数字文件。他们可以无止境地复制和修改而无人发现。在计算机文件上改变日期标记是轻而易举的事,没有人在看到数字文件后说:“是的,这个文件是在1952年12月4日以前创建的。”

    Bellcore的Stuart Haber和W.Scott Stornetta考虑了这个问题[682,683,92]。他们认为数字时间标志协议有下列三条性质:

  • 数据本身必须有时间标记,而不用考虑它所用的物理媒介。
  • 必定不存在改变文件的1个比特而文件却没有明显变化。
  • 必定不可能用不同于当前日期和时间的日期和时间来标记文件。

仲裁解决方法

    这个协议需要Trent和Alice,Trent提供可信的时间标记服务,Alice希望对文件加上时间标记:

        (1)Alice将文件的副本传送给Trent。

        (2)Trent将他收到文件的日期和时间记录下来,并妥善保存文件的副本。

    现在,如果有人对Alice所声明的文件产生的时间有怀疑,Alice只要打电话给Trent,Trent将提供文件的副本,并证明他在标记的日期和时间接收到文件。

    这个协议是可行的,但有些明显的问题。第一,没有保密性,Alice不得不将文件的副本交给Trent。在信道上窃听的任何人都可以读它。她可以对文件加密,但文件仍要放入Trent的数据库中,谁知道这个数据库有多安全?

    第二,数据库本身将是巨大的。并且发送大量的文件给Trent所要求的带宽也是非常大。

    第三,存在潜在错误。传送错误或Trent的中央计算机中某些地方的电磁炸弹引爆将使Alice声明的时间标志完全无效。

    第四,可能有些运行时间标记业务的人并不像Trent那样诚实。也许Alice正在使用Bob的时间标记和Taco Stand系统。没有任何事情能阻止Alice和Bob合谋,他们可以用他们想要的任何时间对文件作时间标记。

改进的仲裁解决方法

    单向hash函数和数字签名能够轻而易举地解决大部分问题:

        (1)Alice产生文件的单向hash值。

        (2)Alice将hash值传送给Trent。

        (3)Trent将接收到hash值的日期和时间附在hash值后,并对结果进行数字签名。

        (4)Trent将签名的散列和时间标记送回给Alice。

    这种方法解决了除最后一个问题的所有问题。Alice再也不用担心展示她的文件内容,因为hash值就足够了。Trent也不用存储文件的副本(或者甚至hash值),这样,大量的存储要求和安全问题被解决了(记住,单向hash函数不需要密钥),Alice可以马上检查她在第(4)步中接收到的对时间标记的hash值的签名。这样,她将马上发现在传送过程中的任何错误。这里唯一存在的问题是Alice和Trent仍然可以合谋来产生他们想要的任何时间标记。

链接协议

    解决这个问题的一种方法是将Alice的时间标记同以前由Trent产生的时间标记链接起来。这些时间标记很可能是为其他人产生,而不是为Alice产生的。由于Trent预先不知道他所接收的不同时间标记的顺序,Alice的时间标记一定发生在前一个时间标记之后。并且由于后面来的请求是与Alice的时间标记链接,那么她必须出现在前面。Alice的请求正好夹在两个时间之间。

    如果A表示Alice,Alice想要做时间标记的Hash值是Hn,并且前一个时间标记是Tn-1,那么协议如下:

        (1)Alice将Hn和A发送给Trent。

        (2)Trent将如下消息送回给Alice。

Tn = Sk(n,A,Hn,,Tn;In-1,Hn-1,Tn-1, Ln

    这里,Ln是由下面的hash链接信息组成:

Ln =H(In-1,Hn-1,Tn-1,Ln-1

    SK表示信息是用Trent的私钥签名的。Alice的名字标识她是请求的发起者,参数n表示请求的序号:这是Trent发布的第n个时间标志。参数Tn是时间,另外的信息是标识、源hash值、时间和Trent对以前文件做的时间标记的hash值。

        (3)在Trent对下一个文件做时间标记后,他将那个文件的发起者的标识符In+1发送给Alice。

    如果有人对Alice的时间标记提出疑问,她只同她的前后文件的发起者In-1和In+1接触就行了。如果对她前后文件也有疑问,他们可以同In-2和In+2接触等等,每个人都能够表明他们的文件是在先来的文件之后和后来的文件之前打上时间标记的。

    这个协议使Alice和Trent很难合谋去产生一文件的时间标记,使它不同于实际的时间标记。Trent不可能为Alice顺填文件的日期。因为那样的话, Trent就要预先知道在它之前是哪个文件的请求。即使他伪造那个文件,但也得知道在那个文件前来的是什么文件的请求,等等。由于时间标记必须嵌入到马上发布的后一文件的时间标记中,并且那个文件也已经发布了,他不可能倒填文件的日期。破坏这个方案的唯一的办法是在Alice的文件前后创建一虚构的文件链,该链足够的长以至于可以穷举任何人对时间标记提出的疑问。