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

文档序号:11215484阅读:2772来源:国知局
基于区块链技术的数字签名方法及系统与流程

本发明涉及网络安全技术领域,尤其涉及一种基于区块链技术的数字签名方法及系统。



背景技术:

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。区块链的设计是一种保护措施,比如(应用于)高容错的分布式计算系统,使混合一致性成为可能,这使区块链适合记录事件、标题、医疗记录和其他需要收录数据的活动、身份识别管理,交易流程管理和出处证明管理。因此,区块链对于金融脱媒有巨大的潜能,对于引领全球贸易有着巨大的影响。

但是,区块链的系统是开放的,除了交易各方的私有信息被加密外,区块链的数据对所有人公开,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。因此,数据发送的可靠性和完整性有待提高。



技术实现要素:

本发明实施例提供基于区块链技术的数字签名方法及系统,以解决现有技术中,区块链技术的数据发送可靠性和完整性有待提高的问题。

一方面,本发明实施例提供一种基于区块链技术的数字签名方法,包括:

获取待发送数据的数据摘要;

对所述数据摘要进行哈希变换,生成报文摘要;

计算得到加密算法的加密参数;

根据所述加密参数加密所述待发送数据,得到加密数据。

在其中一个实施例中,所述对所述数据摘要进行哈希变换,得到报文摘要的步骤,包括:

对所述数据摘要进行字符串变换,将原始的明文信息填补到长度为448位的第一变换数据;

将所述第一变换数据的长度追加64位正整数,得到输入长度为512的倍数的第二变换数据;

将一个128位的缓冲区初始化为一个固定的运算值;

将所述第二变换数据中的所有输入块与所述运算值进行运算,所述输入块的长度为512字节;

生成所述报文摘要,所述报文摘要由128位的缓冲区构成。

在其中一个实施例中,所述计算得到加密算法的加密参数的步骤,包括:

选取素数a和b;

计算得到c和d,令c=a*b,d=(a-1)*(b-1);

选取e,使得e与d互为素数;

选取f,使得f*e=1(mod)d。

在其中一个实施例中,所述根据所述加密参数加密所述待发送数据,得到加密数据的步骤,包括:

将所述待发送数据分块,生成消息块,令每个所述消息块的长度g满足:0≤g≤c;

根据加密函数i=gf(modc),生成所述加密数据。

另一方面,本发明实施例还提供了一种基于区块链技术的数字签名系统,包括:

获取模块,用于获取待发送数据的数据摘要;

变换模块,用于对所述数据摘要进行哈希变换,生成报文摘要;

计算模块,用于计算得到加密算法的加密参数;

加密模块,用于根据所述加密参数加密所述待发送数据,得到加密数据。

在其中一个实施例中,所述变换模块包括:

第一变换单元,用于对所述数据摘要进行字符串变换,将原始的明文信息填补到长度为448位的第一变换数据;

第一变换单元,用于将所述第一变换数据的长度追加64位正整数,得到输入长度为512的倍数的第二变换数据;

初始化单元,用于将一个128位的缓冲区初始化为一个固定的运算值;

运算单元,用于将所述第二变换数据中的所有输入块与所述运算值进行运算,所述输入块的长度为512字节;

生成单元,用于生成所述报文摘要,所述报文摘要由128位的缓冲区构成。

在其中一个实施例中,所述计算模块包括:

第一选取单元,用于选取素数a和b;

计算单元,用于计算得到c和d,令c=a*b,d=(a-1)*(b-1);

第二选取单元,用于选取e,使得e与d互为素数;

第三选取单元,用于选取f,使得f*e=1(mod)d。

在其中一个实施例中,所述加密模块包括:

分块单元,用于将所述待发送数据分块,生成消息块,令每个所述消息块的长度g满足:0≤g≤c;

加密单元,用于根据加密函数i=gf(modc),生成所述加密数据。

本发明实施例提供的基于区块链技术的数字签名方法,通过获取待发送数据的数据摘要;对所述数据摘要进行哈希变换,生成报文摘要;计算得到加密算法的加密参数;根据所述加密参数加密所述待发送数据,得到加密数据。由此,实现了用于提高数据在发送过程中的可靠性和完整性,进而提高了数据发送的安全性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例的附图,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明基于区块链技术的数字签名方法的第一实施例的流程图;

图2是本发明基于区块链技术的数字签名方法的第二实施例的流程图;

图3是本发明基于区块链技术的数字签名系统的第一实施例的结构框图;

图4是本发明基于区块链技术的数字签名系统的第二实施例的结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

第一实施例

如图1所示,是本发明基于区块链技术的数字签名方法的第一实施例的流程图。该基于区块链技术的数字签名方法包括:

步骤101,获取待发送数据的数据摘要。

已知地,数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。数字签名是非对称密钥加密技术与数字摘要技术的应用

步骤102,对所述数据摘要进行哈希变换,生成报文摘要。

步骤103,计算得到加密算法的加密参数。

步骤104,根据所述加密参数加密所述待发送数据,得到加密数据。

在本发明实施例中,区块链技术是一种分布式存储技术,主要包括两个方面:第一,数据的分布式存储;第二,数据的分布式记录。分布式存储是指数据存储在参与记录的节点中,而不是存储在中心化的机器中;分布式记录是指系统的参与节点一起记录。

数据存储采用分布式,其存储结构如下所示:分布式存储技术将数据分块,然后后使用链技术将所有的块连接在一起,构成全部的数据。另外,每个块由块头和块身两部分组成,块头负责与前面的块连接,并保证数据的完整性,块身存储数据交换的全部记录。

数据的记录也采用分布式。区块链中的每一次数据交换的记录的传播都采用分布式,消息由单个节点直接发送给其他节点。在发送的过程中,为了保证数据的可靠性和完整性,使用了数字签名技术。首先,数字签名可以判断信息是否由对方发送;第二,数字签名可以判定接收到的信息是否为完整的信息。在发送方,用哈希函数从信息中生成报文摘要,然后用密钥进行加密,加密的摘要作为数字签名,和加密数据一起发送给对方;在接收方,使用与发送方相同的哈希函数对原始报文提取摘要,然后用密钥对数字签名进行解密,并判断两者是否一致,如果一致,则说明信息的完整性。

本发明实施例提供的基于区块链技术的数字签名方法,通过获取待发送数据的数据摘要;对所述数据摘要进行哈希变换,生成报文摘要;计算得到加密算法的加密参数;根据所述加密参数加密所述待发送数据,得到加密数据。由此,实现了用于提高数据在发送过程中的可靠性和完整性,进而提高了数据发送的安全性。

第二实施例

如图2所示,是本发明基于区块链技术的数字签名方法的第二实施例的流程图。该基于区块链技术的数字签名方法包括:

步骤201,获取待发送数据的数据摘要。

步骤202,对所述数据摘要进行字符串变换,将原始的明文信息填补到长度为448位的第一变换数据。

在本发明实施例中,使用md5算法对数据摘要进行处理。

md5即message-digestalgorithm5(信息-摘要算法5),为计算机安全领域广泛使用的一种散列函数,是哈希函数的一种,用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有md5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,md5的前身有md2、md3和md4。

md5算法具有以下特点:

1、压缩性:任意长度的数据,算出的md5值长度都是固定的。

2、容易计算:从原数据计算出md5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的md5值都有很大区别。

4、强抗碰撞:已知原数据和其md5值,想找到一个具有相同md5值的数据(即伪造数据)是非常困难的。

md5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。

在本步骤中,通过这样一种足够复杂的算法来打乱明文信息中的所有位,各输出位都会受到输入位的影响。换句话说,就是将原始的明文信息填补到448位的长度(以512为模)。

步骤203,将所述第一变换数据的长度追加64位正整数,得到输入长度为512的倍数的第二变换数据。

在本步骤中,将第一变换数据的长度追加为64位正整数,从而使得整个输入的长度为512的倍数。

步骤204,将一个128位的缓冲区初始化为一个固定的运算值。

步骤205,将所述第二变换数据中的所有输入块与所述运算值进行运算,所述输入块的长度为512字节。

在本步骤中,将一个128位的缓冲区初始化为一个固定的运算值后,每一轮取出一个512字节的输入块,将其与128位的缓冲区进行混淆,md5对每个输入块执行4轮,这个过程不断进行,直到所有的输入块都完成执行。

步骤206,生成所述报文摘要,所述报文摘要由128位的缓冲区构成。

步骤207,选取素数a和b。

在本发明实施例中,根据加密算法,我们可以得到数字签名算法。在数字签名算法中,可以使用rsa算法。rsa公开密钥密码体制,所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。在公开密钥密码体制中,加密密钥(即公开密钥)pk是公开信息,而解密密钥(即秘密密钥)sk是需要保密的。加密算法e和解密算法d也都是公开的。虽然解密密钥sk是由公开密钥pk决定的,但却不能根据pk计算出sk。正是基于这种理论,1978年出现了著名的rsa算法,它通常是先生成一对rsa密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,rsa密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的des或idea对话密钥加密,然后使用rsa密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。

rsa算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。rsa是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。

rsa算法基于数论中的一些理论,需要先计算出一些基本参数,在本步骤中,挑选两个较大的素数a和b(一般情况下为1024位)。

步骤208,计算得到c和d,令c=a*b,d=(a-1)*(b-1)。

步骤209,选取e,使得e与d互为素数;

步骤210,选取f,使得f*e=1(mod)d。

步骤211,将所述待发送数据分块,生成消息块,令每个所述消息块的长度g满足:0≤g≤c。

在本发明实施例中,计算出以上参数之后,将明文信息,即待发送数据分块(可以看成是一个位串),令每个明文消息块g满足:0≤g≤c。为此,我们只需要将明文划分为h位的块即可,其中h是满足2h<c的最大整数。

步骤212,根据加密函数i=gf(modc),生成所述加密数据。

在本步骤中,计算i=gf(modc),从而加密消息g。

当接收方接收到加密数据后,计算g=ie(modc),从而解密消息g。

对于所有符合要求的消息g,加密函数与解密函数互为反函数。要执行加密操作,则需要得到f及c,要执行解密操作,则需要得到e和c。所以,公钥是由(f,c)对组成的,私钥是由(e,c)对组成的。

这种算法的安全性是建立在大数分解的困难度的基础上的。如果密码破解者能够获取c,从而得到a和b,那么他就可以得到d。在得到d和f之后,就可以根据欧几里得算法得到f。然而这几乎是不可能的,数学家们探索大数分解已经300多年了,几百年的经验告诉我们这是一个极其困难的问题。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁盘、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

上文对本发明的基于区块链技术的数字签名方法的实施例作了详细介绍。下面将相应于上述方法的系统作进一步阐述。

第三实施例

如图3所示,为本发明基于区块链技术的数字签名系统的第一实施例的结构框图,该系统300可以实施本发明基于区块链技术的数字签名方法的第一实施例的各步骤,具体包括:

获取模块301,用于获取待发送数据的数据摘要。

变换模块302,用于对所述数据摘要进行哈希变换,生成报文摘要。

计算模块303,用于计算得到加密算法的加密参数。

加密模块304,用于根据所述加密参数加密所述待发送数据,得到加密数据。

本发明实施例提供的系统,通过获取待发送数据的数据摘要;对所述数据摘要进行哈希变换,生成报文摘要;计算得到加密算法的加密参数;根据所述加密参数加密所述待发送数据,得到加密数据。由此,实现了用于提高数据在发送过程中的可靠性和完整性,进而提高了数据发送的安全性。

第四实施例

如图4所示,为本发明基于区块链技术的数字签名系统的第二实施例的结构框图,该系统400可以实施本发明基于区块链技术的数字签名方法的第二实施例的各步骤,使基于本发明基于区块链技术的数字签名系统的第一实施例的改进,具体包括:

获取模块401,用于获取待发送数据的数据摘要。

变换模块402,用于对所述数据摘要进行哈希变换,生成报文摘要。其中,变换模块402还包括以下单元:

第一变换单元4021,用于对所述数据摘要进行字符串变换,将原始的明文信息填补到长度为448位的第一变换数据。

第一变换单元4022,用于将所述第一变换数据的长度追加64位正整数,得到输入长度为512的倍数的第二变换数据。

初始化单元4023,用于将一个128位的缓冲区初始化为一个固定的运算值。

运算单元4024,用于将所述第二变换数据中的所有输入块与所述运算值进行运算,所述输入块的长度为512字节。

生成单元4025,用于生成所述报文摘要,所述报文摘要由128位的缓冲区构成。

计算模块403,用于计算得到加密算法的加密参数。其中,计算模块403还包括以下单元:

第一选取单元4031,用于选取素数a和b。

计算单元4032,用于计算得到c和d,令c=a*b,d=(a-1)*(b-1)。

第二选取单元4033,用于选取e,使得e与d互为素数。

第三选取单元4034,用于选取f,使得f*e=1(mod)d。

加密模块404,用于根据所述加密参数加密所述待发送数据,得到加密数据。其中,加密模块404还包括以下单元:

分块单元4041,用于将所述待发送数据分块,生成消息块,令每个所述消息块的长度g满足:0≤g≤c。

加密单元4042,用于根据加密函数i=gf(modc),生成所述加密数据。

以上所说实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应该认为是本说明书记载的范围。

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

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