一种适用于区块链和嵌入式领域的新型时间戳签名验证方法与流程

文档序号:16318216发布日期:2018-12-19 05:34阅读:650来源:国知局
一种适用于区块链和嵌入式领域的新型时间戳签名验证方法与流程

本发明应用于公开密钥基础设施系统(pki)领域,为数字时间戳提供一种轻量级、安全、高效的组成格式以及签名方法、验证方法,使数字时间戳更适用于嵌入式和区块链领域。

背景技术

数字证书

数字证书是身份认证机构通过密码学盖在数字身份证的一个章或印(或者说加在数字身份证上的签名),由权威机构ca机构(certificateauthority,证书授权中心)发行,是用户在数字领域的身份,通过数字证书可以解决在虚拟、网络领域中解决“我是谁”的问题。

数字签名

数字签名是使用公钥加密算法来对数据进行数字签名,起到不可伪造,不可抵赖性。我国已经实施了《电子签发法》,确立了电子签名的法律效力。

pkcs

pkcs全称是公钥加密标准,是为了促进公钥密码的发展而制定的一系列标准。

pkcs#7

pkcs#7是pkcs的第七个标准,全称为加密签名语法消息,对使用密码算法的数据规定了通用语法,比如数字信封。pkcs#7提供了许多格式选项,包括未加密或签名的格式化消息、已封装(加密)消息、已签名消息和既经过签名又经过加密的消息。

pkcs#9

pkcs#9是pkcs第九个标准,可选属性类型。pkcs#9定义了pkcs#6扩展证书、pkcs#7数字签名消息、pkcs#8私钥信息和pkcs#10证书签名请求中要用到的可选属性类型。已定义的证书属性包括e-mail地址、无格式姓名、内容类型、消息摘要、签名时间、签名副本(countersignature)、质询口令字和扩展证书属性。

asn1#编码格式

asn.1提供了多种数据编码方法。包括了ber、der、per和xer等。这些编码方法规定了将数字对象转换成应用程序能够处理、保存和网络传输的二进制编码形式的一组规则。目前经常被采用的是ber(basicencoderules)编码,但是ber编码具有编码不唯一的性质,也就是说,一个相同的对象通过ber编码可能会产生几种不同的编码数据。

der编码

der(distinguishedencodingrules)是asn.1数据编码方法其中一种,在密码学相关领域中广泛使用,对于每一个asn.1对象,使用der编码得出的二制编码的数据是唯一的。

oid

oid是由iso/iec、itu-t国际标准化组织上世纪80年代联合提出的标识机制,采用分层树形结构对任何类型的对象(包括实体对象、虚拟对象、复合对象等)进行全球无歧义、唯一命名。

数字时间戳

数字时间戳是对数字签名的上打一个权威第三方提供可信赖的且不可抵赖的时间戳,用于防止文件中的时间和日志被伪造和篡改。

tsa

tsa全称是(timestampauthority),有法定认证的可信赖时间源,用来生产和管理时间戳的权威机构。



技术实现要素:

现有数字时间戳是由数字加密语法消息(pkcs#7)保护,时间戳数据根据公钥算法,证书大小不同,一般1k~3k字节,在一般桌面级应用上没有问题,但是在存储空间较小,空间有限(例如区块链或者嵌入式领域中)的显得较大,不适合大规模使用。

针对现有数字时间戳签名本发明提出了一种新型的时间戳格式,以及签名、验证方法。

本发明的适用于区块链和嵌入式领域的时间戳数字签名格式,至少包括:

此种时间戳是由一个asn1编码串组成,包括时间戳token,签名算法、签名值;时间戳token部分包含此种时间戳的oid,版本信息,原文消息摘要,证书唯一值,时间,时间精度,策略、nonce等;用户通过此种时间戳能够对数据、文档等进行时间戳签名,把第三方可信时间源附在数字签名中,从而满足对时间的不可抵赖性,不可伪造性。

具体技术特征为:

其中signaturealgorithm是签名算法;

signaturevalue是tsa使用tsa证书对应的私钥对timestamptoken结构der编码后使用signaturealgorithm签名算法得出的签名值;

其中id-timestamping是此时间戳格式的oid定义,具体定义为

a)id-timestampingobjectidentifier;

b)version域说明时间戳的版本号;

c)messageimprint域应该包含需要加盖时间戳的数据的散列值;

d)uniqueid域,此域用于保存tsa证书唯一相关信息,通过此域查找出对应tsa的签名证书;

e)gentime时间域,是tsa创建时间戳的时间;

f)accuracy表示时间可能出现的最大误差,gentime加上accuracy的值,就求得tsa创建这个时间戳的时间上限,同理,减去accuracy的值就是tsa创建时间戳的时间下限;

g)policy策略域,tsa通过什么策略来签发此时间戳;

h)nonce域,nonce是个大随机数,用于客户端区分响应和抗重放攻击;

i)扩展(extensions)域是为将来增加额外的信息而采用的一种通常的做法。

上述适用于区块链和嵌入式领域的时间戳数字签名方法,其特征在于:

步骤一、对原文进行杂凑计算,计算出messageimprint;

步骤二、从第三方可信时间源中获取时间、时间精度;

步骤三、构造并填充timestamptoken结构;

步骤四、使用时间戳证书私钥对timestamptoken进行签名;

步骤五、把timestamptoken,signaturealgorithm,signaturevalue构造时间戳编码。

本发明还公开了一种适用于区块链和嵌入式领域的时间戳数字签名的验证方法,其特征在于:

步骤一、首先对原文进行杂凑计算,计算出messageimprint;

步骤二、通过timestamptoken中uniqueid查找tsa的相关对应证书,如果查找不到相关证书退出;

步骤三、通过tsa证书对时间戳签名中的数字签名进行计算,验证通过则时间戳验证成功。

有益效果:本发明的时间戳格式、签名、验证签名与原来的时间戳格式、签名、验证流程比较,主要有以下区别:

1、本发明是一种适用于嵌入式领域或区块链领域的轻量级时间戳,原来时间戳是加密签名语法消息格式(pkcs#7),包含了可信时间及相关信息,证书本身、pkcs7签名,tsa证书签发者的主题项和序列号,pkcs#9属性等等,一个时间戳数据往往有数千个字节。本发明所构建时间戳包含tsa证书的唯一标识、可信时间及相关信息,因此单个时间戳大小最大才不到三百个字节,最小只需要几十个字节,大大的减少了存储空间。

2、原来的签名方式,先对可信时间及相关信息做摘要,然后添加加密签名语法消息格式的pkcs#9属性,最后对pkcs#9的可认证属性进行数字签名。本发明是直接对时间相关信息直接做签名方式,极大的减少的签名流程的复杂度,减少了签名流程步骤,提高了在低性能、大并发应用时间戳领域的应用。

3、原来的验证方式、先对可信时间及相关信息做摘要,然后通过于加密签名语法消息中的可认证pkcs#9属性中的摘要进行对比,通过查找证书,对可认证pkcs#9属性进行验证签名,本发明是直接获取证书对时间相关信息进行验证签名操作,大量减少了验证流程,提高了验证签名效率。

附图说明

图1是本发明实例的适用于区块链和嵌入式领域的新型时间戳格式组成图。

图2是本发明实例的新型时间戳签名流程图。

图3是本发明实例的新型时间戳验证签名流程图。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步详细地说明。

本发明所创造的时间戳格式主要使用以下内容格式存储,编码规则按照asn1编码书写规范撰写。

一、新型时间戳格式。

其中signaturealgorithm是签名算法。

signaturevalue是tsa使用tsa证书对应的私钥对timestamptoken结构der编码后使用signaturealgorithm签名算法得出的签名值。

其中id-timestamping是此时间戳格式的oid定义,具体定义为

a)id-timestampingobjectidentifier。

b)version域说明了时间戳的版本号,根据本文档时间戳版本号为1。

c)messageimprint域应该包含需要加盖时间戳的数据的散列值。该散列值的类型是octetstring,它的长度应是相应散列算法的结果长度。具体格式:

在hashalgorithm域中表示的散列算法应该是一个已知的散列算法。

由于不管是签名、还是验证,messageprint都可由外部传入,或通过外部输入计算得出,为了减少存储大小,所以此域在存储过程中是个可选项,但是在计算过程中是必选项。

d)uniqueid域,此域用于保存tsa证书唯一相关信息,可以通过此域查找出对应tsa的签名证书。

e)gentime时间域,是tsa创建时间戳的时间。用utc时间表示,以减少使用本地时区用法造成的混乱。时间的具体格式应遵守以下的规定;

时间戳中使用的时间应是utc时间。其精度应至少精确到秒。

语法结构为:yyyymmddhhmmss[.s...]z。

例如:20031101001326.34352z。

各个位解释如下:

·yyyy为年份,应是4位数年份如2003;

·mm为月份,如果月份只有一位数,要加上一个前导0,如01、11;

·dd为日,如果只有一位数,要加上前导0,如01、20;

·hh为小时,如果只有一位数,要加上前导0,如00、23;

·mm为分钟,如果只有一位数,要加上前导0,如05、59;

·ss为秒,如果只有一位数,要加上前导0,如01、59;

·[.s...]是可选的,表示秒的小数部分。小数点如果出现应是“.”,秒的小数部分如果出现,应把后面跟的0都省略掉,如果秒的小数部分等于0,则应全部都省略掉,小数点也应省略掉;

·最后的z表示这是一个utc时间。

·午夜(格林威治时间)应该表示成:"yyyymmdd000000z",其中的"yyyymmdd"表示午夜之后的这一天。

f)accuracy表示时间可能出现的最大误差,gentime加上accuracy的值,就可以求得tsa创建这个时间戳的时间上限,同理,减去accuracy的值就是tsa创建时间戳的时间下限。具体定义如下:

如果seconds、millis或者micros没出现,则不出现的这些域的值应被赋为0。

当accuracy这个可选项不出现时,精确度可以从别的途径得到,例如policy;

g)policy策略域,tsa通过什么策略来签发此时间戳,可选项。

h)nonce域,nonce是个大随机数,用于客户端区分响应和抗重放攻击,可选项。

i)扩展(extensions)域是为将来增加额外的信息而采用的一种通常的做法。特殊的扩展类型可以由组织或者团体自行定义并声明注册,可选项。

总结,此种新型时间戳签名格式是由一个asn1串组成,包含了可信时间及相关信息,签名算法、签名值。其中可信时间及相关信息包含了时间戳oid,版本号,签名消息指纹,时间戳策略(可选),nonce(可选),可信时间,可信时间精度,tsa证书唯一id的集合。

如说明书附图1所示:一种适用于区块链和嵌入式领域的新型时间戳签名格式图。

二、时间戳签名流程步骤。

1、对原文进行杂凑计算,计算出messageimprint。

2、从第三方可信时间源中获取时间、时间精度。

3、构造并填充timestamptoken结构。

4、使用时间戳证书私钥对timestamptoken进行签名。

5、把timestamptoken,signaturealgorithm,signaturevalue构造时间戳编码。

如说明书附图图2所示:新型时间戳签名流程图。

三、时间戳验证签名流程。

1、首先对原文进行杂凑计算,计算出messageimprint。

2、通过timestamptoken中uniqueid查找tsa的相关对应证书,如果查找不到相关证书退出。

3、通过tsa证书对时间戳签名中的数字签名进行计算,验证通过则时间戳验证成功。

如说明书附图图3所示:新型时间戳验证签名流程图。

虽然本发明已以较佳实施例公开如上,但它们并不是用来限定本发明,任何熟习此技艺者,在不脱离本发明之精神和范围内,自当可作各种变化或润饰,但同样在本发明的权利要求书的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1