数字签名时间戳服务器的原理

46 篇文章 6 订阅

时间戳服务工作流程:

◆ 用户对文件数据进行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返回包含时间戳标记或出错信息的时间戳应答。
 

参考:中宇万通时间戳服务器 - 时间戳服务器 - 北京中宇万通科技股份有限公司

参考:数字证书基础知识:时间戳服务简介,时间戳服务为服务器端和客户端应用提供可信的时间证明

Chronos,在古希腊语意为时间,是小米公司开发的实现高可用、高性能、提供全局唯一而且严格单调递增timestamp的服务。Chronos 采用主备架构,主服务器挂了以后备服务器迅速感知并接替服务,从而实现系统的高可用。服务端使用Thrift框 架,经测试每秒可处理约60万次RPC请求,客户端单线程每秒可请求6万次(本地服务器),保证高性能与低延时。全局只有唯一的 ChronosServer提供服务,分配的timestamp保证严格单调递增,并且将已分配的值持久化到ZooKeeper上,即使发生 failover也能保证服务的正确性。Chronos依赖ZooKeeper实现与HBase类 似的Leader Election机制,ChronosServer启动时将自己的信息写到ZooKeeper的Master临时节点上,如果主服务器已经存在,那么就记 录到BackupServers节点上。一旦Master临时节点消失(主服务器发生failover),所有备服务器收到ZooKeeper通知后参与 新一轮的选主,保证最终只有一个新的主服务器接替服务。ChronosServer运行时会启动一个Thrift服务器,提供getTimestamp()和getTimestamps(int)接口, 并且保证每次返回的timestamp都是严格单调递增的。返回的timestamp与现实时间有基本对应关系,为当前Unix time乘以2的18次方(足够使用1115年),由于我们优化了性能,所以如果存在failover就不能保证这种对应关系的可靠性。ChronosClient启动时,通过访问ZooKeeper获得当前的主ChronosServer地址,连接该服务器后就可以发送 Thrift RPC请求了。一旦主服务器发生failover,客户端请求失败,它会自动到ZooKeeper获得新的主ChronosServer地址重新建立连 接。 标签:小米
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值