在区块链中基于混合算法的数字签名技术

2018-07-23 02:14田道坤彭亚雄
电子科技 2018年7期
关键词:数字签名加密算法公钥

田道坤,彭亚雄

(贵州大学 大数据与信息工程学院,贵州 贵阳550025)

区块链产生于比特币,但不同于比特币。比特币之后区块链技术创新发展,并且不断探索新的应用领域。区块链的诞生为互联网带来了新的曙光,其技术的应用打破了互联网无序、混沌、不安全的状态,且试图构造一个更加有序、安全、稳定的新世界。《块数据3.0》[1]指出,区块链就是一个块数据组织,或者说是一个在公正算法控制下的数据化组织。

区块链技术具有去中心化、去信任、集体维护、可靠、开源、匿名等特征,对解决传统中心化系统的成本高、效率低、储存数据不安全等问题提出了更好的解决方法。区块链技术利用了密码学中的数字时间戳、哈希函数、非对称加密、数字签名等手段来解决交易中存在的虚假交易和双重支付等问题。区块链中的数字签名技术使用非对称加密原理,在使用过程中需要同时拥有公钥和私钥,公钥和私钥一一对应。比如:A、B双方进行交易,A生成一对密钥,把其中的一份密钥作为公钥发送给B,同时用自己的私钥信息进行加密后发送给B,B使用接收到的公钥对加密数据进行解密,如果成功解密即证实信息确实由A所发送,这样就形成了签名。数字签名技术最开始应用于用户的登录验证,即验证用户名和密码是否相匹配。其中EIGamal签名[2]是一种经常使用的数字签名。在1991年,文献[3]提出了多重数字签名[3]概念,文献[4~5]提出了不同类型的多重数字签名[4-5]。本文基于区块链技术下,运用AES(Advanced Data Encryption Standard)和ECC(Elliptic Curve Cryptography)算法混合,然后双方利用DH算法对密钥进行计算分配,实现数字签名的方案。该方案运用3种混合加密算法,使系统具有很强的抗攻击能力,能更好的完成身份认证,并提高了数字签名的安全性和真实性。

1 高级加密标准算法

高级加密标准(AES),在密码学中又称Rijndael加密法。2001年由美国国家标准技术研究所发布,旨在取代数据加密算法(DES)成为广泛使用的标准。AES是一种对称分组加密算法。其加密的数据块分组长度必须为128 Byte,密钥长度可以是128 Byte,192 Byte和256 Byte,形式分别为AES-128,AES-192和AES-256。如果以上二者长度不够时,该算法会自动补齐[6]。AES加解密流程图如图1所示。

图1 AES加解密流程图

从图1可知AES加密过程共分4个步骤[7]:字节代替、行移位、列混淆以及轮密相加。解密过程是加密过程对应的逆过程,所以按照加密过程相反的顺序进行解密即可得到明文。

1.1 字节代替

字节代替主要是通过S盒完成一个字节到另一个字节的映射,S盒是AES定义的矩阵,把State(数据块要经过多次数据转换操作,每次转换操作产生一个中间结果,中间结果即State)中每个字节的高4位作为行值,低4位作为列值,然后取S盒对应行列元素作为输出。这种方法提高了AES加密的非线性变换能力。

1.2 行移位

行移位分为两种:正向行移位和逆向行移位。行移位的功能是实现一个4×4矩阵字节之间转换,即State第1行字节维持不变,第2行向左循环移1 Byte,第3行向左循环移2 Byte,第4行向左循环移3 Byte,如式(1)所示。

(1)

其中,Si,j代表每个字节,i、j分别代表行、列,0≤i≤3, 0≤j≤3。

以上是正向行移的转移方程,其逆向行移位是正向行移位的逆操作。

1.3 列混淆

列混淆[8]分为正向列混淆和逆向列混淆。原理是每列的4 Byte通过线下变换后相互结合,对每列进行独立操作。其中在每列中被当做系数的4个元素,合并以后即为有限域中的一个多项式,然后将该多项式和固定的矩阵多项式相乘,相似于有限域下的矩阵乘法。

(2)

式(2)即正向列混淆。依照矩阵的乘法法则可知,列混淆中的每个对应的值仅和列的4个值有关系。

(3)

又因为

(4)

从式(4)可以看出,等号左边的两个矩阵互逆。由式(2)~式(4)可以看出,经过一次逆向列混淆即可恢复出明文。

1.4 轮密钥加

在每轮的循环加密中,都会由主密钥扩展产生一组轮密钥,轮密钥的大小和原来的矩阵大小一样。在加密过程中,每轮的输入与轮密钥异或一次;解密时再次异或该轮的密钥就可以得出该轮的输入。密钥扩展的复杂性,确保了该算法的安全性[9]。

AES综合运用了置换、代替、矩阵的乘法等多种方法,加密速度快,适合加密较长明文。但是,由于AES采用的是单一的密码系统,在密钥管理方面,算法需要在密钥秘密分配之前继续保密通信。所以密钥替换比较困难。

2 椭圆曲线加密算法

椭圆曲线加密算法(ECC)作为一种公钥加密算法,不仅在功能上和RSA加密算法相同,而且具有加密强度高、密钥短等诸多技术优点,因此应用非常广泛。椭圆曲线提供了“元素”和“组合规则”来组成群的构造方式,用这些群来构造密码算法具有完全相似的特性。但它们并没有减少密码的分析量。换句话说,椭圆曲线密码体制是基于有限域上椭圆曲线的有限群,而不是离散对数中的有限循环群得到的一种新型密码体制[10],其目的是在椭圆曲线系统上实现各种密码编码方案。

2.1 椭圆曲线的定义[11]

椭圆曲线是由椭圆周长计算以及椭圆积分得到

(5)

式(5)中E(x)为x的3次或4次多项式,由于这样的积分形式不能用初等函数来表达,所以引入椭圆曲线函数的概念。椭圆曲线是由一个三次方程

y2+axy+by=x3+cx2+dx+e

(6)

所确立的平面曲线。

设F是一个域,如果F中(x,y)满足方程式(6),然后加上一个无穷远点O,就组成了椭圆曲线。

2.2 椭圆曲线的数字签名

椭圆曲线的数字签名的定义实际上是一种基于椭圆曲线上乘法群离散对数的数字签名的模拟。算法过程有:参数选取、密码生成、签名和认证。参数组D=(q,FR,S,A,B,P,n,h),其中[12],q表示有限域的阶;FR表示有限域;S为椭圆曲线生成时的种子,即计算椭圆曲线方程中参数所需的种子;a、b为椭圆曲线方程中的俩个系数,且a,b∈Fq;P为椭圆曲线上的基点(生成元);n表示基点的阶;h表示余因子。

数字签名过程[13]:

(1) 在区间[1,n-1]内选取一个随机数k,并计算(x1,y1)=kP;

(2) 计算r=h(m)+x1modn;

(3) 若r+d=0(modn),则返回步骤(1),否则计算 (r+d)-1modn;

(4) 计算s=(r+d)-1(k-dr)modn,若s=0,则返回步骤(1);

(5) 将带有附加消息(r,s)的m发送给接受者。

接收方验证签名:

(1) 验证r和s是否是区间[1,n-1]中的整数;其中任何一个检验失败,则拒绝签名。否则进行以下操作;

(2) 计算散列函数h(m)的值;

(3) 计算w=s-1modn,φ1=ewmodnφ2=rwmodn;

(4) 计算X=φ1P+φ2Q;

(7) 若v=r时,则接受签名。否则,拒绝签名。

3 DH算法

Diffie-Hellman(DH)算法是第一个公开密钥算法,DH算法能够用于密钥分配,即发、收双方可以用DH算法产生秘密密钥,发、收双方共同拥有这个密钥。首先,发送方A和接收方B协商一个大的素数n和g,g是模n的本原元。n和g可以选择是公开的,所以A和B不必要秘密的协商它们。具体协议如下[14]:

(1)A取一个随机整数x,并发送到B:

X=gxmodn;

(2)B取一个随机整数y,并发送到A:

Y=gymodn;

(3)A计算k=Yxmodn;

(4)B计算k′=Xymodn;

k和k′都等于gxymodn。即使在发送过程中被窃听了,窃听者也无法计算出这个值。因此k就是A和B独立计算的共享私密密钥。

4 改进的数字签名技术

由于区块链技术的“去中心化”的提出,为了防止在交易过程中数据被非法篡改和非法使用。本文通过分析AES算法和ECC算法的性能,综合AES算法和ECC算法的优点,提出二者混合的方案[15],且在密钥管理方面,提出用DH算法对密钥进行计算分配。3种算法的相互结合,提高了数字签名的安全性。

4.1 数字签名生成过程

(1) 发送方A和接收方B在通信之前构建自己的密钥对,即(dA,QA)(dB,QB)dA、dB为私钥,QA、QB为公钥;

(2) 发、收双方互相交换公钥,A有B的公钥QB,B有A的公钥QA,然后A用自己的私钥dA和接收到的公钥QB用DH算法计算出一个密钥da,同理B也可以得到一个密钥db,由DH算法的分析可知,da=db=d,即生成的密钥是双方私有且共享的,如图2所示;

图2 双方由DH算法产生密钥

(3) 发送方A将发送的明文m用哈希函数生成消息摘要M;

(4) 将明文m用AES算法进行加密,得到密文Cm;

(5)A使用自己私钥对生成的消息摘M要进行加密,得到摘要的签名CM;

(6)A将AES的密钥和双方产生的私有共享密钥d用接收到公钥QB进行加密形成密文Ce;

(7) 最后把Cm、CM、Ce一起发送给接收者。如图3所示。

图3 生成数字签名

4.2 验证数字签名

(1)B接收到A发送的所有密文,首先B用自己的私钥dB把接收到的密文中的Ce部分进行解密,得到AES的密钥和共享密钥d′;

(2)B验证自己共享密钥d和解密后得到的d′是否相等,若d=d′则进行下一步,否则,拒绝签名;

(3) 将获得的AES密钥对密文中的Cm进行解密,得到解密明文m′;

(4) 用接收到的QA对摘要密文CM进行解密得到M。

(5) 将解密后的密文m′进行Hash()运算得到M′;

(6) 若M=M′则签名成功;否则,拒绝签名。如图4所示。

图4 验证数字签名

5 结束语

本文提出的对称加密算法AES和公钥加密算法ECC相结合,交易双方由DH算法产生共享密钥的混合加密方案,既能对数据进行快速加密,也可以较好的解决密钥分配的问题,使双方在交易过程中可以进行双向私有的认证和识别[16],防止攻击者的篡改,有效的保证了数据的完整性,也保障了数字签名的时效性。如果可以进行深入的研究,在双方签名的过程中加上时间戳记,然后再由时间戳服务商予以签章记录,作为时间的证明。这样的数字签名更加具有时效性、安全性,为双方交易提供更可靠的保障。

猜你喜欢
数字签名加密算法公钥
浅析计算机安全防护中数字签名技术的应用
一种基于混沌的公钥加密方案
基于数字签名的QR码水印认证系统
HES:一种更小公钥的同态加密算法
数字签名简述
SM2椭圆曲线公钥密码算法综述
基于小波变换和混沌映射的图像加密算法
Hill加密算法的改进
基于格的公钥加密与证书基加密
对称加密算法RC5的架构设计与电路实现