时间戳服务工作流程:
◆ 用户对文件数据进行Hash摘要处理;
◆ 用户提出时间戳的请求,Hash值被传递给时间戳服务器;
◆ 时间戳服务器对哈希值和一个日期/时间记录进行签名,生成时间戳;
◆ 时间戳数据和文件信息绑定后返还,用户进行下一步电子交易操作。
验证工作流程
一、用时间戳标记顺序
时间戳服务:time-stamp service
时间戳标记:time-stamp token
可信第三方:trusted third part,TTP
时间戳服务机构:time-stamp authority,TSA
我们知道,对数据做数字签名可以保证其完整性,进行数据源鉴别,提供抗抵赖性,但这些还不够。
比如:假设A和B因为发表了内容完全相同的两篇小说作品,从而产生了著作权归属的争议。在这种情况下,两人都能够出示“自己的”小说的签名,但对解决争端毫无作用,这是因为缺少了判断著作权归属的重要依据——时间先后顺序。
再比如:假设C丢失了自己私钥,于是向CA申请撤销了自己的证书。此后,D声称C与自己签订了一项合同却未依约执行,且经验证,合同的数字签名是用C的私钥签署的,C却表示改签名是自己的私钥丢失后有人冒充所为。已知CA签发的CRL中有证书撤销的时间,在这种情况下,如果能通过合理可靠渠道证明合同所签订时间,从而判定合同签订和证书撤销(私钥失效)的时间,那么问题就迎刃而解了。
在数字业务中,标记一份文档出现的时间或一件事的发生顺序是很有必要的,这就像对原始数据加盖了一枚包含权威时间信息的印章,故被称为“时间戳”。在PKI中,时间戳服务可由第三方提供,并不失去公正性和权威性。
时间戳服务提供的结果称为“时间戳标记”,它将当时的时间(可以是一个代表顺序的数字)和原始数据绑定在一起,需要验证的时候可作为证据证明原始数据在时间戳标明的时间之前已经存在,根据时间的不可重复性,时间戳就可用来判断原始数据出现的(或其代表的时间的发生的)顺序。
二、时间戳原理
结合例子来说明,假设A准备向网站运营者B提交作品,这时A需要向B证明作品完成的时间,这就需要一个满足以下条件的时间戳服务提供者C:
1、时间戳标记中提供的时间信息是“权威”的。这里包含两层意思:C提供的日期和时间是准确的;C只会用当时的真实时间标记,而不会故意标记虚假的信息。简单说来,就是C必须是“可信第三方”。基于X.509 PKI,这点可用C的证书来保证,即相信了签署其证书的CA,也就相信了C。
2、时间戳标记可提供数据来源鉴别以及完整性保护,即B可确信时间戳标记来自C且传输过程中未被篡改,这可依靠数字签名来实现。一般情况下,使用非对称密码技术进行数字签名。
3、时间信息与原文内容绑定在一起,以证明该时间正是C收到A此篇原文的时间。即,时间戳标记中要充分地包含原文的信息,加盖时间戳之后原文不应再有改动,不论是自己做的改动还是别人篡改的。
为了即不透露原文又能抵抗篡改,可以使用杂凑算法。A自己计算原文件的杂凑值并交给C加盖时间戳,在出示时间戳标记的时候,验证者B根据收到的文件计算杂凑值并与时间戳标记中的比较,如果相同则证明与时间戳标记中的时间信息绑定的正是原文件。这样,如果修改原文,哪怕只有一个比特,杂凑值也会有显著的变化,而且其“碰撞自由”(collision-free,或称“抗碰撞”,collision-resistant)的性质可避免他人或A自己在加盖时间戳之后对原始数据的伪造或篡改。
根据以上原理,基于X.509 PKI的时间戳服务过程如下:
1、用户对原始数据做杂凑运算。
2、用户将杂凑值发给TSA
3、TSA将接收时间列在杂凑结果之后,并对整体进行数字签名。
4、TSA将带有数字签名的杂凑值和时间信息发回给用户。
三、时间戳服务机构(TSA)
TSA拥有用于数字签名的私钥和CA签署的数字证书,其证书除了是合法的末端实体证书以外,还必须满足以下两个条件:
1、必须含有Extended Key Usage扩展,并且KeyPurposeId字段等于1.3.6.1.5.5.7.3.8,表明该证书主体可以担任TSA,该密钥可以用于时间戳服务。
2、如果含有Key Usage扩展,则digitalSignature位必须等于1,表明对应的密钥可用作数字签名。
另外,TSA也可以有多个策略,同一个TSA可以根据不同的策略拥有多个签名算法,对应多个有不同安全需求的场景。
用户与TSA的通信过程很简单:
1、用户向TSA发送时间戳请求
2、TSA返回包含时间戳标记或出错信息的时间戳应答。
参考:中宇万通时间戳服务器 - 时间戳服务器 - 北京中宇万通科技股份有限公司
参考:数字证书基础知识:时间戳服务简介,时间戳服务为服务器端和客户端应用提供可信的时间证明