基于区块链技术的数字签名方法及系统与流程

文档序号:22971074发布日期:2020-11-19 21:55阅读:264来源:国知局
基于区块链技术的数字签名方法及系统与流程

本发明属于信息安全技术领域,具体来说涉及一种基于区块链技术实现的数字签名方法,以及数字签名系统。



背景技术:

数字签名(digitalsignature,又称公钥数字签名)是一种使用公钥加密领域技术,用于解决网络交易中可信身份认证、数据加密、数据完整性和抗抵赖的问题。现有的数字签名技术存在以下一些问题:第一、数字签名需要公钥和私钥,其数据交换双方需要遵循同一协议进行公私钥生成,由于数据交换双方的运行系统环境不同,其产生的公私钥可能会有差别,造成数字签名的签发,验证的兼容性会产生差异,导致数据交换的失败。第二、为确保双方的数字签名可验证,需相互保存对方的公钥。这就意味着服务端的公钥是对外公开,因此会存在公钥被第三方掉包、第三方冒充服务端与客户端进行信息交互,骗取客户端身份信息和交易信息的问题。第三、数字签名的安全性离不开加解密算法,加解密是一种相对复杂的计算方式,会耗费一定系统资源,在数据交换频繁的场景下,通常需要采用购置密码机进行本地部署实现服务端签名,但又会产生密码机本身的采购成本;另一方面,密码机作为物理设备存在单点故障风险和维护成本;同时缺少密码运算能力,无法实现并发能力的动态扩展。区块链技术不依赖额外的第三方管理机构或硬件设施,没有中心管制,除了自成一体的区块链本身,通过分布式核算和存储,各个节点实现了信息自我验证、传递和管理。去中心化是区块链最突出最本质的特征。区块链技术基础是开源的,除了交易各方的私有信息被加密外,区块链的数据对所有人开放,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。基于协商一致的规范和协议,整个区块链系统不依赖其他第三方,只要未掌控全部数据节点的51%,就无法肆意操控修改网络数据,这使区块链本身变得相对安全,避免了主观人为的数据变更。因此,如何设计出一种基于区块链技术实现的新型数字签名方法,以克服上述各项问题,是本领域技术人员需要研究的方向。



技术实现要素:

本发明的目的是提供一种数字签名系统,能够降低设备成本和维护成本、降低故障风险,用户通过sdk或接口接入方式即可实现数据加密,数据身份签名和验签功能。

一种数字签名系统,其包括:签名代理服务器和应用节点服务器;所述签名代理服务器包括:信息接收单元,身份验证单元,签名请求单元,身份请求路由单元,签名返回接受单元,节点公钥请求单元,签名验证单元,网络通讯单元和数据管理单元;所述应用节点服务器包括:签名响应单元,公私钥管理单元,数据加密单元,共识单元和签名返回单元。

所述网络通讯单元用于实现使用者与签名代理服务器的数据交互;所述信息接收单元用于通过网络通讯单元接受使用者发起的签名身份识别请求、并从签名身份识别请求中提取身份信息数据;所述身份信息数据包括明文数据、唯一用户id、时间戳,随机字符串,终端ip和md值;所述身份验证单元用于校验所述信息接收单元提取的身份信息数据;所述签名请求单元用于在身份信息数据通过校验时、获取身份信息数据中的应用节点路由信息;所述身份请求路由单元用于根据所述应用节点路由信息,向对应于该应用节点路由信息的应用节点服务器发起签名请求;签名响应单元用于将身份请求路由单元发起的签名请求转发至公私钥管理单元;所述公私钥管理单元用于在读取签名请求时提取预先内置的公钥文件和私钥文件并发送至数据加密单元、在读取公钥文件请求时提取预先内置的公钥文件并回传至签名代理服务器;所述数据加密单元用于根据所述私钥文件、对明文数据进行非对称加密,获得密文数据并生成该密文数据的数据身份签名;所述共识单元中预存有raft共识算法,用于在各应用节点服务器间对数据身份签名发起和完成有效性共识;所述签名返回单元用于将达成有效性共识的所述密文数据和数据身份签名返回至签名代理服务器;所述节点公钥请求单元用于在读取所述密文数据和数据身份签名后向节点应用服务器输出公钥文件请求;所述签名验证单元用于根据公钥文件对所述密文数据进行解密,并将解密后的密文数据与明文数据进行比对,并在比对无误时通过网络通讯单元将数字身份签名传送至使用者;所述数据管理单元用于在签名验证单元通过网络通讯单元将数字身份签名传送至使用者后,销毁信息接收单元从签名身份识别请求中提取身份信息数据、数据加密单元形成的密文数据和数据身份签名、以及公私钥管理单元提取的公钥文件和私钥文件。

在上述方案中:所述签名代理服务器可选用硬件型号:dellpoweredger340企业机架式服务器。所述应用节点服务器可选用硬件型号:dellpoweredger6415机架式服务器。使用者可通过https通讯协议向签名代理服务器发起签名请求。应用节点服务器对外提供restful架构的访问接口,签名代理服务器通过rpc远程过程调用协议访问应用节点服务器。各应用节点服务器之间通过p2p网络做为底层传输方式。p2p网络的核心是数据存储在客户本地,通过存储信息(名称、地址、分块)的查询,让终端之间直接数据传递。在p2p网络上层采用rpc远程过程调用请求进行节点间数据通讯。所述raft算法由斯坦福大学的diegoongaro和johnousterhout于2014年在论文《insearchofanunderstandableconsensusalgorithm》中提出,基于multi-paxos算法进行重新简化设计和实现,提高了工程实践性。利用raft算法可实现通过先选出领导节点来简化流程和提高效率。实现上分解了领导者选举、日志复制和安全方面的考虑,并通过约束减少了不确定性的状态空间。

基于上述系统,本发明还公开了一种数字签名方法,其技术方案如下:

一种数字签名方法,其包括如下步骤:

s1:使用者对签名代理服务器发起签名身份识别请求;

s2:信息接收单元接收签名身份识别请求,从签名身份识别请求中提取身份信息数据,所述身份信息数据包括明文数据、用户id、时间戳和随机数;

s3:身份验证单元校验s2所得身份信息数据;

s4:签名请求单元从通过校验的身份信息数据中获取对应的应用节点路由信息;

s5:身份请求路由单元基于s4所得应用节点路由信息,访问对应的应用节点服务器并发起签名请求;

s6:签名响应单元读取身份请求路由单元发起的签名请求后启动公私钥管理单元;

s7:公私钥管理单元提取所在应用节点服务器中预先内置的公钥文件和私钥文件并输出至数据加密单元;

s8:数据加密单元基于s7所得私钥文件、对明文数据进行非对称加密,获得密文数据并生成该密文数据的数据身份签名;

s9:共识单元基于raft共识算法在各应用节点服务器间对s8所得数据身份签名发起和完成有效性共识;

s10:签名返回单元将密文数据和数据身份签名返回至签名代理服务器;

s11:节点公钥请求单元向节点应用服务器输出公钥文件请求;

s12:公私钥管理单元提取公钥文件并回传至签名代理服务器;

s13:签名验证单元基于公钥文件对密文数据进行解密,并将解密后的密文数据与明文数据进行比对,若比对无误跳转至s15;

s14:签名验证单元通过网络通讯单元将数字身份签名传送给使用者;

s15:数据管理单元销毁信息接收单元从签名身份识别请求中提取身份信息数据、数据加密单元形成的密文数据和数据身份签名、以及公私钥管理单元提取的公钥文件和私钥文件。

优选的是,上述数字签名方法中,步骤s9包括:

s91:将共识节点信息存储于区块链上,并将共识节点的初始状态置为跟随者;

s92:基于raft算法并结合区块高度选举初始领导者状态的共识节点,所述领导者状态的共识节点用于记录交易事件并生成新区块;

s93:领导者状态的共识节点任期结束,跳回至s92重新选举领导者状态的共识节点。

通过采用上述技术方案,取得的技术效果如下:

1、上述方案基于区块链技术原理实现,因此无需在本地部署密码机,降低了签名成本和建设的成本。

2、本发明的数据身份签名链基于云计算系统构建,云计算系统具有良好的扩展性能,可以便利的扩展服务器资源,结合p2p网络,动态扩充调整链上节点,动态调整运算能力和并发能力,进一步降低了整体的应用风险和维护成本。

3、通过pki体系的sm2,rsa密码运算,通过raft共识算法,在数据身份签名链内部节点网络实现签名数据合法共识。发挥了区块链技术的去中心化,唯一性、可溯源、不可篡改的特点。构建出可信的数据签名闭环。保证了数据传输、签名产生及验证的信息安全。

附图说明

下面结合附图与具体实施方式对本发明作进一步详细的说明:

图1为实施例1的工作流程示意图;

图2为实施例1中签名服务器的结构框图;

图3为实施例1中应用节点服务器的结构框图。

各附图标记与部件名称对应关系如下:

1、签名代理服务器;2、应用节点服务器;

11、信息接收单元;12、身份验证单元;13、签名请求单元;14、身份请求路由单元;15、签名返回接受单元;16、节点公钥请求单元;17、签名验证单元;18、网络通讯单元;19、数据管理单元;21、签名响应单元;22、公私钥管理单元;23、数据加密单元;24、共识单元;25、签名返回单元。

具体实施方式

为了更清楚地说明本发明的技术方案,下面将结合各个实施例作进一步描述。

一种基于区块链技术的数字签名系统,其包括:签名代理服务器1和应用节点服务器2;所述签名代理服务器1包括:信息接收单元11,身份验证单元12,签名请求单元13,身份请求路由单元14,签名返回接受单元15,节点公钥请求单元16,签名验证单元17,网络通讯单元18和数据管理单元19;所述应用节点服务器2包括:签名响应单元21,公私钥管理单元22,数据加密单元23,共识单元24和签名返回单元25。

所述网络通讯单元18用于实现使用者与签名代理服务器1的数据交互;所述信息接收单元11用于通过网络通讯单元18接受使用者发起的签名身份识别请求、并从签名身份识别请求中提取身份信息数据;所述身份信息数据包括明文数据、唯一用户id、时间戳,随机字符串,终端ip和md5值;所述身份验证单元12用于校验所述信息接收单元11提取的身份信息数据;所述签名请求单元13用于在身份信息数据通过校验时、获取身份信息数据中的应用节点路由信息;所述身份请求路由单元14用于根据所述应用节点路由信息,向对应于该应用节点路由信息的应用节点服务器2发起签名请求;所述签名响应单元21用于将身份请求路由单元14发起的签名请求转发至公私钥管理单元22;所述公私钥管理单元22用于在读取签名请求时提取预先内置的公钥文件和私钥文件并发送至数据加密单元23、在读取公钥文件请求时提取预先内置的公钥文件并回传至签名代理服务器1;所述数据加密单元23用于根据所述私钥文件、对明文数据进行非对称加密,获得密文数据并生成该密文数据的数据身份签名;所述共识单元24中预存有raft共识算法,用于在各应用节点服务器2间对数据身份签名发起和完成有效性共识;所述签名返回单元25用于将达成有效性共识的所述密文数据和数据身份签名返回至签名代理服务器1;所述节点公钥请求单元16用于在读取所述密文数据和数据身份签名后向节点应用服务器2输出公钥文件请求;所述签名验证单元17用于根据公钥文件对所述密文数据进行解密,并将解密后的密文数据与明文数据进行比对,并在比对无误时通过网络通讯单元18将数字身份签名传送至使用者;所述数据管理单元19用于在签名验证单元17通过网络通讯单元18将数字身份签名传送至使用者后,销毁信息接收单元11从签名身份识别请求中提取身份信息数据、数据加密单元23形成的密文数据和数据身份签名、以及公私钥管理单元22提取的公钥文件和私钥文件。

如图1-3所示为实施例1:

s01:使用者通过https协议向签名代理服务器发起签名请求,请求内容包括请求签名的数据,使用者身份信息数据,其签名请求的数据结构如下:

s02:签名代理服务器身份接收单元获取签名请求和签名请求数据,签名代理服务器校验terminalip是否为访问地址ip白名单中;再根据uniqueid判断当前使用者是否存在应用节点服务器以及应用节点服务器当前是否可用;如上述校验通过则使用者身份信息确认通过。

s03:根据校验后的身份信息,由签名请求单元通过身份请求路由单元获取使用者身份信息对应的应用节点服务器的访问路由,通过rpc协议向应用节点服务器发起远程签名请求,上送请求数据。

s04:应用节点服务器签名响应单元接收签名请求和请求数据。

s05:应用节点服务器公私钥管理单元根据身份信息提取预先内置对应的公私钥文件。应用节点服务器公私钥管理单元数据结构如下:

s06:应用节点服务器数据加密单元,用节点私钥文件与明文数据进行rsa非对称加密。生成密文数据。并生成当前密文数据的数据身份签名。数据身份签名生成步骤如下:

i.对uniqueid+timestamp+noncestr+data进行标准md5运算,将运算后新md5与请求中md5比对。如果比对一致则继续。

ii.用私钥(privatekey)对请求数据的data进行加密得到密文。

iii.通过hmac-sha256对uniqueid+密文进行哈希计算,生成数据身份签名。

s07:当前节点应用服务器通过内置raft共识算法和网络协议将数据身份签名向节点应用服务器链路中的leader节点发送包含命令的请求。leader节点将新请求附加到其日志并将此请求发送到节点应用服务器链路上各节点。其他节点将把这个请求添加到他们的日志中并发送一条确认消息。一旦大多数节点发送了一条确认消息,leader就会将其日志提交到其状态机,从而产生一些输出。一旦leader提交日志,其他各节点也将提交日志到各自的状态机。最终leader将共识响应发送给当前节点。

s08:应用服务器共识响应结果后,应用节点服务器将身份信息+密文数据+数据身份签名回传签名代理服务器。其数据结构如下

s09:签名代理服务器接收身份信息+密文数据+数据身份签名,内部发起数据身份验证,节点公钥请求单元向节点应用服务器请求节点公钥。

s10:节点应用服务器公私钥管理单元提取公钥,使用私钥对用户uniqueid进行rsa加密,并将加密后的uniqueid密文与公钥回送签名代理服务器。

s11:签名代理服务器获取公钥后,签名验证单元对uniqueid密文进行rsa公钥解密,对解密后的结果与原始uniqueid比对是否一致。如果一直则公钥有效。

s12:签名代理服务器的签名验证单元使用公钥对密文数据进行rsa解密,并与明文数据进行比对。步骤如下:

i.通过hmac-sha256对密文进行哈希计算,对计算结果与传回的数据身份签名比对是否一致,如果一直则继续。

ii.对uniqueid+timestamp+noncestr+密文进行标准md5计算,将计算结果与回传md5比对是否一致。

iii.用s11获取的公钥(publickey)对密文数据进行rsa解密得到明文。与原始数据中的明文进行文本比对是否一致。

s13:比对无误后,将数字身份签名传送给使用者进行网络传输使用。

s14:签名代理服务器销毁本次签名请求的原始数据,签名数据和节点公钥信息。

以上所述,仅为本发明的具体实施例,但本发明的保护范围并不局限于此,任何熟悉本领域技术的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围以权利要求书的保护范围为准。

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