时间戳(timestamp)是使用数字签名技术产生的数据,是事件发生日期和时间的数字记录,其具有精确性、不可篡改性、可验证性等特性。签名的对象包括了原始文件信息、签名参数、签名时间等信息。相关时间戳机构对此进行数字签名产生时间戳,以证明原始文件在签名时间之前就已经存在。
时间戳源自办公室使用的橡皮图章,以记录收到文件的时间。随着
数字电路的发展,时间戳的使用范围已扩大到指附在数字数据上的数字日期和时间信息。20世纪60年代末,
unix操作系统被开发出来,为了统一
内存存储时间和处理日期的计算,
肯·汤普逊(Ken Thompson)决定对时间戳进行一个规范。20世纪90年代,时间戳协议工作开展开来。1988年,ISO 8601标准规范化了时间和日期表示。2001年,IETF发布了RFC 3161协议,定义了公钥基础设施时间戳协议,而2002年的RFC 3339协议对ISO 8601标准进行了进一步优化完善。2014年,
法国的eIDAS法规(第42条)制定了
电子时间戳指南,定义为以电子方式将日期和时间附加到任何数字数据的过程。
时间戳系统至少需要包括可信时间源、签名系统和时间戳数据库三个部分,通过如简单时间戳协议、线性连接协议、树形协议、
二进制协议、分布式协议等多种类型的时间戳协议进行管理。时间戳在
知识产权、合同签署、金融、电子投标、股票交易和个人文件管理等领域得到广泛应用,主要用于跟踪数据的创建、修改或访问时间。但时间戳面临着物理环安全和软件安全等挑战,随着应用需求增加,缺乏统一的标准成为电子签名应用的发展障碍。
发展历程
“时间戳”一词源自办公室使用的橡皮图章,用于在纸质文件上盖章,有时还印有时间,以记录收到文件的时间。随着数字数据系统的出现,该术语已扩展为指附加到数字数据的数字日期和时间信息,例如,计算机文件包含时间戳,表明文件上次修改的时间,数码相机将时间戳添加到拍摄的照片中,记录拍摄照片的日期和时间。
在计算机系统中,出于节省
磁盘空间的需要,早期的日期格式大多数都是使用4
字节或32位存储空间进行编码,但在准确性和范围上有一定的限制。20世纪60年代末,Unix操作系统在贝尔实验室被开发出来,Ken Thompson决定使用1970年1月1日00:00:00(
UTC)作为Unix时间的起点,以此来统一在操作系统内存储时间和处理日期计算,该日期确保时间戳对于大多数32位时间表示范围都是
正数, 所以,Unix时间戳的计算是从世界标准时间(UTC)1970年1月1日00:00:00起至所求时刻经过的秒数的转换。
有预计在2038年1月19日,
unix时间戳会因32位溢出而停止工作,数以万计的应用程序将需要采用新的时间戳约定。为了解决32位的时间表示的限制,一些系统开始使用64位的时间表示,从而允许更大的时间范围。尽管有局限性,但Unix纪元时间戳由于其简单性和
兼容性仍然被广泛使用。
为了时间戳格式的规范和统一,开始涌现出许多
时间标准和协议。1985年,网络时间协议(NTP)开始使用,它具有较低的网络开销和较低的服务响应延迟,可用于时间戳开发。1988年,国际标准组织ISO发布ISO 8601标准,对时间和日期的表示方式进行了国际化规范和统一,有助于人和机器理解,消除因影响全球运营的各种日期惯例、文化和
时区而产生的差异。
20世纪90年代,时间戳协议工作开展开来,
美国出现许多关于时间戳的专利,如数字文档的安全时间戳方法、数字文档认证系统等。直到21世纪,时间戳才引起人们的广泛关注。2001年,IETF制定了RFC 3161协议,即公钥基础设施时间戳协议,描述了发送到时间戳机构 (TSA) 的请求和返回的响应的格式。2002年,IEEE发布了精确时间协议(PTP),同年,IETF发布了RFC 3339标准——《互联网上的日期和时间:时间戳》,该协议在日期和时间格式上对ISO 8601标准进行了改进和完善。2014 年,
法国的eIDAS法规(第42条)制定了电子时间戳指南,规定以电子方式将日期和时间附加到任何数字数据的过程。
随着
数字技术的不断成熟,时间戳开始应用到其他领域,比如司法实践等,时间戳认证在
知识产权纠纷中的应用有明显的增长。2021年,新一轮科技革命和产业变革进一步深化,区块链技术快速发展,而时间戳因能确保交易的有效性在区块链中被当作底层技术广泛应用,而区块链数据库让全网的记录者在每一个区块中都盖上一个时间戳,形成一个不可篡改, 不可伪造的数据库。
系统组成
时间戳是一个能表示一份数据在某个特定时间之前已经存在的、完整的、可验证的数据,而时间戳系统就是用来产生时间戳的可信第三方。时间戳系统可以作为数字证书认证系统一个组件提供服务,也可以单独提供服务。
时间戳服务的本质是将用户的数据和当前准确时间绑定,在此基础上用时间戳系统的数字证书进行签名,凭借时间戳系统在法律上的权威授权地位,产生可用于法律证据的时间戳,用来证明用户数据的产生时间,达到“不可否认”或“抗抵赖的目标”。
时间戳系统至少需要包括可信时间源、签名系统和时间戳数据库三个部分:
可信时间源
可信时间源就是时间戳系统的时间来源,TSA系统中的所有部件的时间都必须以这个可信时间源为标准,尤其在颁发的时间戳中填写的时间必须严格按照可信时间源填写。而作为可信时间源自身,其或者就是国家权威时间部门发布的时间,或者是用国家权威时间部门认可的硬件和方法获得的时间。
签名系统
签名系统负责接收时间戳申请、验证申请合法性以及产生和颁发时间戳,最后将时间戳存储到数据库中。这个过程中,申请消息和颁发时间戳格式、时间戳的产生和颁发都必须符合规范中给出的要求。用户向签名系统发起时间戳申请,签名系统获取用户的文件数据摘要后,再验证申请的合法性,最后将当前时间和文件摘要按一定格式绑定后签名返回并保存在数据库中。
时间戳数据库
时间戳数据库负责保存TSA系统颁发的时间戳,而且必须定期备份,以便用户需要时可以申请从中取得时间戳。对时间戳数据库的存储、备份和检索也要求符合规范中给出的规定。
协议原理
时间戳由操作系统提供应用程序编程接口 (API) 和系统调用来管理,使用这些接口读取和设置文件时间戳、检索当前时间生成时间戳。
时间戳的主要目的在于通过一定的技术手段,对数据产生的时间进行认证,从而验证这段数据在产生后是否经过篡改。所以时间戳服务的提供者必须证明服务中使用的时间源是可信的,所提供的时间戳服务是安全的。时间戳协议原理有简单的时间戳协议、线性连接协议、树形协议、
二进制协议、分布式协议等。
简单的时间戳协议
在使用时间戳服务时,会涉及到三个角色提供时间戳服务的机构TSA(
时间 stamping authoritor),申请时间戳服务的用户(Subcriber)和时间戳证书的验证者(Relying Party),TSA为一段数据申请时间戳证书,证明这段数据在申请时间戳证书的时间点之前真实存在,在这个时间点之后对数据的更改可以进行追查,能够防止伪造数据来进行欺骗。证书持有者把需要申请时间证书的数据发送给时间戳机构,时间戳机构将生成时间戳证书发送给证书持有者。在需要证明该数据未被篡改时,证书持有者展示数据所对应的时间戳证书,时间戳证书的验证者来验证它的真实性,而从确认该数据是否经过篡改。
最基本的时间戳协议的工作流程为:申请时间戳服务的用户将需要认证的数据传输给时间戳服务的提供者,然后时间戳服务的提供者将经过认证后的时间戳证书返还给用户。
但是这个协议中存在一些隐患,主要体现在隐私性、
带宽、时间戳结构的错误操作、信任等方面。
树形协议
树型协议是线性链接协议的优化协议,这个协议把时间戳证书链接分解成很多小的组,在每组中,时间戳服务的使用者可以向TSA提出时间戳证书申请,通过建立一棵树型结构实现整个流程,其中树型结构的叶子是使用者的时间戳证书申请,TSA使用一个一种基于身份认证的可信时间戳服务体系研究安全的Hash函数来计算树型结构中的节点值。
分布式协议
分布式协议中,TSA包括两种服务器:一个接收服务器和多个部分签名服务器,每个部分签名服务器拥有TSA签名
密钥的一部分,当接受服务器收到一个时间戳服务请求,它将此请求的拷贝和收到此请求的时间传递给每一个部分签名服务器,当部分签名服务器收到签名请求,它将检查请求中所附的时间,并与本地时间进行比较,如果两者相近,则每个部分签名服务器用他们的部分密钥对文件和时间进行签名,然后把这个部分签名传至接受服务器,接受服务器把所有的部分签名组合成最后的完整签名。
线性连接协议
线性链接协议是为了解决时间戳机构必须完全信任这一问题而提出的,该协议的设计思想是为了建立起时间戳证书之间的紧密联系,像
链表一样将用户申请的时间戳证书按照顺序链接起来。为了验证时间戳机构是否存在欺骗行为,机构设定一个固定的时间,通过不同渠道将最近通过的时间戳证书列表公布出来,任何人都可以通过时间戳机构公布的证书列表来验证时间戳链表的有效性,从而确定时间戳机构是否公正可靠。
分层请求时间戳协议
分层请求时间戳协议是为了使得
局域网用户可以获取及时可信的时间戳而提出的,在该协议中,用户群与本地时间戳机构(LTSA)处在局域网中,构成第一级时间戳请求层;公共时间戳机构(PTSA)独自构成第二级时间戳请求层,且对用户群透明;用户群从 LTSA 获取时间截LTS(local timestamp),完全在局域网中进行时间戳的加盖,能够避免网内用户对
广域网的访问。
协议比较
时间戳特性
格式与标准
UTC(UTC)格式是时间戳最常用的一种格式,其精度至少精确到秒,语法结构为:YYYYMMDDhhmmss[.s..]Z,例如:20240219001326.34352Z。(其中,YYYY为年份;MM为月份;DD为日;hh为小时;mm为分钟;ss为秒;[.s..]是可选的,表示秒的
小数部分;Z表示是一个UTC时间)。
计算机的内部时钟和时间戳值是根据纪元确定的。计算机的日期和时间是根据自该计算机定义的纪元以来经过的秒数来确定的。纪元的时间对应于
UTC的0小时0分0秒,纪元日期取决于所使用的操作系统,
unix纪元日期是1970年1月1日,而Windows电脑纪元日期是1601年1月1日00:00:00(UTC),如果Unix纪元时间为1639172876秒,则日期为2021年12月10日星期五晚上9:47:56。
ISO 8601
国际标准ISO 8601指定了日期和时间的数字表示形式,可以用来构造时间戳值。该标准符号有助于避免国际通信中因许多不同的国家符号而造成的混乱,并增加
计算机用户界面的可移植性。
国际标准日期的表示法是:YYYY-MM-DD,其中YYYY指公历的年份,MM是一年中01到12之间的月份,DD是一个月中01到31之间的日期,例如2016年9月1日用标准表示法写为2016-09-01。一天中的国际表示法是:hh:mm:ss,其中hh是00到24之间的小时数,mm是00到59之间的分钟数,ss是00到60之间的秒数。ISO 3601标准的时间值前通常带有T指示符,例如,下午1点31分16秒可以表示为T13:31:16。
RFC 2822
RFC 2822标准中对日期和时间进行规范,用于在 HTTP 和电子邮件标题等位置统一表示日期和时间,RFC 2822的日期显示格式包括星期几、数字日期、月份的首字母缩写、年、时间和
时区,如01 Jun 2016 14:31:46 -0700,表示时间为2016年9月1日14点31分46秒,“-0700”表示晚于
UTC7个小时,具体格式为“+”或“-”hhmm,“+”表示早于世界标准时间,“-”表示晚于世界标准时间。
RFC 3339
RFC 3339标准对时间戳进行的规范完善了ISO 8601标准和RFC 2822标准,它将日期时间和日期格式化为单个紧凑
字符串,2016年9月1日14点31分46秒表示为2016-09-01T14:31:16-0700,其中ISO8601中的指示符“T”可以用其他字符代替,包括空格。
RFC 3161
RFC 3161描述了发送到时间戳机构 (TSA) 的请求和返回的响应的格式,对于时间格式的表现没有变化。客户向TSA发出时间戳请求,附带散列值Y,TSA把当时的
标准时间值、本次请求的
序列号和一些状态参数附在Y后,签名并发送给客户。此外,此协议还将COSE保护与时间戳结合,有TTC(Timestamp then COSE)和CTT(COSE then Timestamp)两种组合格式。
eIDAS
法国的eIDAS 法规制定了电子时间戳指南,合格的电子时间戳应准确的显示日期和时间以及日期和时间所链接的数据的完整性的
推定,且需要满足:将日期和时间与数据绑定在一起,以合理地排除数据被不可察觉地更改的可能性;使用高级
电子签名进行签名,或使用合格信托服务提供商的高级电子印章进行密封,或通过某种等效方法进行签名;基于与
UTC相关的准确时间源。
其他格式
如果数据存储器是
DB2,可以使用DATE、
时间和TIMESTAMP类型的 DB2 字符串表示时间,日期或时间的字符串表示可以使用ISO(时间戳的字符串表示格式)、
美国、 EUR或JIS格式。
产生和颁发
可信时间的产生
可信时间的最初源头来源于国家权威时间部门(如国家授时中心),或者使用国家权威时间部门认可的硬件和方法获得的时间,获得方法包括:使用某种无线接收装置,通过无线手段获得国家权威时间部门的时间发布,如
长波信号、
卫星信号等;使用某种时间同步协议从一个指定网络地址获得时间;使用某种通过国家权威时间部门认证的硬件获得时间,如使用
子钟等。
TSA接收的途径
时间戳机构(TSA)接受时间戳申请和颁发时间戳的方式有通过电子邮箱申请、通过文件传输申请、通过套接字申请和通过HTTP申请。
相关技术
时区处理
时区是一组用于确定本地时间的规则,与特定地理区域的增量时间相关,操作系统使用用户系统上的区域设置将
UTC转换为用户的本地时区。
时钟同步
基于网络通信的时钟同步主要是通过各个同步节点之间交换时间戳信息来完成的,从每个节点上来看,它们拥有自己的时钟,并且能够知道来自于参考时钟的发送时间间隔。
分布式系统中的所有节点定期更新其时钟值、维护与时间相关的信息的过程,使得每个节点在经过适当变化后显示的时间仍然接近一致。
夏令时调整
夏令时(DST)是
美国和
加拿大大部分地区和其他一些国家和地区实行的一小时时钟调整,
Linux将DST偏移量加入到时间戳中,如果DST在文件时间戳指定的时间已经到位,Linux就会添加偏移量,在夏令时期间创建的文件始终提前一小时显示。而
Windows不关心文件所处的时间环境,以相同的方式处理 DST ,如果当前系统时间包含 DST 偏移量,则会将 DST偏移量添加到时间戳中,还可以通过自行更改系统上时间修改夏令时开始或结束的时间。
哈希算法
密码学中的哈希(Hash)算法确保接收方收到的数据是没有经过第三方攻击者篡改的数据的完整性的验证,其根本思想是将任意长度的数据通过 Hash 函数计算得出较短的固定长度的
二进制值,这个结果就叫做Hash值,一个数据经过任何修改,经过计算产生的Hash值都会不同,所以通过数据的Hash值可以检验数据是否完整。
数字签名
时间戳是使用数字签名技术产生的数据,数字签名的过程如下:发送方用一个哈希函数对消息进行处理,形成一个固定长度的信息摘要,并将自己的私人
密钥和消息摘要进行DSA算法计算,产生数字签名,然后将数字签名和消息一起发送出去。接收方用同样的哈希函数对消息进行计算,产生消息摘要,并用DSA算法对消息摘要和发送方的公开密钥进行计算,产生数字签名A,同时从接收的消息中得到数字签名B,若数字签名A和数字签名B
相等,则数字签名得到验证,否则验证失败。
风险与挑战
多方位保护:由于时间戳在电子取证中的重要作用及其法律地位,时间戳系统必须拥有极高的安全级别,安全保护应包括物理环墇安全和软件安全。物理环境安全包括机房安全、设备安全和记录介质安全。软件安全包括运行环境、可信时间源、签名系统、时间戳数据库和审计。
重放攻击风险:重放攻击是攻击者拦截并重新传输数据以获得系统或网络的未经授权的一种攻击类型,需要采用随机数作为时间戳来限制重放攻击,要使时间戳正常工作,客户端
计算机和
域控制器的时钟需要紧密同步,否则也会容易遭受到重放攻击。
不兼容风险:随着时间戳应用需求的大量增加,
信息安全厂商纷纷进行相关产品的开发。由于缺乏统一的时间戳标准可以依据,导致各开发商提供的时间戳产品之间不能互相兼容,限制了不可否认服务只能在小范围内实现,成为
电子签名应用发展中的一大障碍。此外,在跨
时区的数据采集及数据计算过程中,常常会出现因用户需求和服务器时区以及数据采集时区的不同,存在不同的运算结果,所以时间戳在处理跨时区问题时比较困难。
相关应用
时间戳显示创建、交换、修改或删除某些信息的时间,可以用来显示社交媒体帖子的发布日期,在线聊天的发送和查看消息的日期,显示数码相机拍摄照片的日期,还可以应用在计算机系统、法律认证、区块链技术和数据管理等。
区块链技术
区块链块使用时间戳来确保交易的有效性,例如加密货币。在
区块链技术中,数据以电子记录的形式被永久储存下来,存放这些电子记录的文件被称为区块,区块链数据库让全网的记录者在每一个区块中都盖上一个时间戳,时间戳对区块链中的每一个区块上的信息生产加上时间验证,对每一个数据的输入追本溯源、 根据时间顺序排列、验证、确保数据的真实性,不容数据被篡改,证明数据的原创性和所有权的归属。
数据库管理
数据管理依靠时间戳来确保数据的完整性和质量。时间戳在数据库管理系统中用于跟踪数据更改。通过使用时间戳,数据库可以记录插入或更新记录的时间,从而实现高效的数据检索和审计。它们还用于在
时态数据库中实现基于时间的查询和数据版本控制。
计算机系统
在分布式系统中,时间戳用于管理并发操作并维护跨多个节点的一致性。Lamport 时间戳和
矢量时间戳是在分布式系统中对事件进行排序的常用技术,允许进程协调操作并避免冲突。此外,时间戳可以帮助识别软件漏洞。通过分析
日志文件中的时间戳和监控系统活动,安全专业人员可以检测可疑模式、潜在的攻击媒介和
异常行为。
法律认证
时间戳可用于数字版权保护,通过对数字内容进行时间戳,创作者可以证明他们的所有权和创作时间,能够解决
知识产权的法律纠纷,带有时间戳的数据可以作为版权所有权的可靠证据。此外,数字合同和数字签名使用时间戳来显示文档的签署时间。
发展趋势
量子压缩技术:随着量子技术的不断发展,一种量子压缩技术提供了一个方法来提高最小尺度特性的测量灵敏度,能够进行高精度计时,提高了时间戳的精度。
分布式账本技术:为了增强时间戳令牌的长期有效性和后向
兼容性,分布式账本时间戳被引入,它还能够提高安全性。
智能合约:智能合约是存储在区块链上的程序,通常用于自动执行协议,以便所有参与者都可以立即确定结果,而无需任何中间人参与。智能合约没有第三方参与,因此交易记录非常重要,所以非常依靠时间戳作为记录标准。
物联网(loT)技术:物联网技术中,数据的收集过程中,时间至关重要,
时间序列数据必须准确无误才能保证物联网应用的正常运行,基本要求是每台设备上的每笔交易都放在正确的时间戳上,以便进行排序和对齐,时间戳还能够定位到异常发生的时间。
参考资料
Time.basicknowledge101.2024-04-07