时间戳的主要目的在于通过一定的技术手段,对数据产生的时间进行认证,从而验证这段数据在产生后是否经过篡改。所以时间戳服务的提供者必须证明服务中使用的时间源是可信的,所提供的时间戳服务是安全的。下面介绍最常见的几种时间戳协议,并对各个协议的原理进行分析。[3]
在使用时间戳服务时,所涉及到的角色一般有以下几种:提供时间戳服务的机构(Time-Stamping Authoritor),申请时间戳服务的用户(Subscriber)和时间戳证书的验证者(Relying Party)。时间戳机构的主要职责是为一段数据申请时间戳证书,证明这段数据在申请时间戳证书的时间点之前真实存在,在这个时间点之后对数据的更改都是可以追查的,这样就可以防止伪造数据来进行欺骗。证书持有者把需要申请时间戳证书的数据发送给时间戳机构,时间戳机构将生成时间戳证书发送给证书持有者。在需要证明该数据未被篡改时,证书持有者展示数据所对应的时间戳证书,时间戳证书的验证者来验证它的真实性,而从确认该数据是否经过篡改。[3]
最基本的时间戳协议的工作流程如下;申请时间戳服务的用户将需要认证的数据传输给时间戳服务的提供者;时间戳服务的提供者将经过认证后的时间戳证书返还给用户。[3]
简单时间戳协议的工作流程如图1所示:用户将需要认证的数据传输给时间戳机构,数据经过 Hash运算得到 m=Hash(M),时间戳机构将 m 和收到数据的时间 t 一起进行数字签名,然后将生成的时间戳证书 Sign(m,t)返还给用户。在需要验证时间戳证书时,首先验证时间戳证书 Sign(m,t)是否为时间戳机构签发的,其次验证 m 是否为用户数据经过Hash 运算得到的结果。如果两项验证中有任何一项不通过,就证明用户的数据经过了篡改;如果都通过,说明用户的数据在时间 t 之后没有进行过任何修改。这个方法通过对数据进行 Hash 运算,保护了用户数据的隐私,在另一方面也减少了时间戳机构的存储容量,为时间戳机构削减了成本。[3] 图1 简单时间戳协议
线性链接协议是为了解决时间戳机构必须完全信任这一问题而提出的。[3]