基于区块链技术的加密算法应用研究

2018-11-23 05:54李为为刘志云
绥化学院学报 2018年11期
关键词:素数明文私钥

李为为 刘志云

(阜阳职业技术学院工程科技学院 安徽阜阳 236000)

随着计算机以及互联网+技术的发展,教育领域中的教育资源也开始网络化,慕课的发展就是计算机在教育领域的典型应用。人们的学习形式不再是传统的单靠书本了,而是更加多样化。教育的方式也随着学习形式的多样化趋于多样化。区块链技术的发展和智能化技术的流行也给教育带来了前所未有的变化[1]。区块链技术目前在教育领域中的教学及教学平台等都有相关应用[2]。

要想发展区块链技术,教育的发展是必不可少的[3]。区块链技术目前的发展还处于初级阶段,人们了解区块链技术更多是基于对技术的好奇,对区块链技术的基础技术及加密货币技术还是知之甚少[4]。

一、区块连技术

(一)区块链的概念。区块链这个概念来源于比特币,这是一种数字货币,区块链技术是将数据以区块的方式组合到一起形成链的方式,它是一种分布式存储与记录结构,不是通过中心结构进行管理。区块链的交易方式是通过记录时间来实现的,实现这项功能离不开块主体和块头这两个部分,存储数据信息的功能通过块主体来完成,区块头完成对下个区块的链接。区块链的生成的同时会将时间标签标在数据信息上,这是基于区块链的数据库的优点之一。区块链技术能够实现整个网络中的所有节点进行信息维护,不再依靠单个节点,对账单的记账不再是单一通过中心节点进行,处于网络中的所有节点用户都可以监测网络中的每项交易信息。除了可以实现如上功能,区块链技术还解决了没有第三方能够信息安全交易的问题,所有用户都可以核对账单,账单是网络中所有用户共有。这样以来信息的可信度和真实性也可以得到保障。

(二)区块链核心技术。区块链的技术核心是密码学,通过这项技术双方只要达成一致就可以实现支付,省去了参与的第三方平台,对中介信用的问题提出了解决方案。区块链技术要想实现这种双方互信能够在不要任何单位参与的情况下实现可信的转账,涉及到主要技术为智能合约、非对称加密算法和分布式账本技术。非对称加密算法的加密方法是采取生成公钥和私钥的方式来保证网络中的用户信息的安全性。公钥的生成保证了信息的真实性;生成的私钥,只有拥有信息的用户才可以使用相应的私钥进行解密,通过私钥可以确保信息的安全性。以上介绍了区块链技术的特点,可以得到区块链技术中加密是必不可少的一部分,根据这个特点,本文研究了非对称加密算法RSA,并提出将相应的算法应用于区块链技术的数据加密,通过这种方式保证数据的安全性。

二、RSA算法相关

(一)RSA加密算法。RSA[5]是公钥加密算法中的一种,目前这中算法在公钥加密中得到了广泛应用,该算法可以通过网络进行数据传送,还可以实现交换密钥和数字签名等。国际上的一些标准化组织ISO、ITU、SWIFT将该算法作为衡量其他算法的标准。

(二)RSA算法的基本原理。如下所示为RSA算法的原理:

1.独立地选取两个大素数p!=q(保密)。公开对n=pq进行计算,对 Ø(n)=(p-1)(q-1)(欧拉函数值)的计算保密。

2.任意选取一个整数 e,并且 e的范围为 1≤e≤Φ(n),gcd(e,Φ(n))=1,e是公开的密钥即公钥。

3.d的计算采用扩展欧几里得算法[6],d=e-1modΦ(n),d为私钥(保密的密钥)。

4.加密变换:对明文m∈Zn,密文为c=Ek(m)=memod n。

5.解密变换:对密文c∈Zn,明文为m=Dk(c)=cdmod n。

另外,第4和第5步的加密和解密变换也能够转变成数据签名和数据验证的过程,通过将以上两步变成d进行加密,e进行解密来实现。

(三)RSA算法的实现步骤。

步骤1 素数的产生。

检测产生的随机数是否为素数,如果为素数则通过,否则,将该数加上一个步长值再检测该数是否为素数,以此类推,直到找到素数为止。素数检测采用Fermat测试。检测数值是否为素数采用费尔马小定理,该定理如下:已知一个素数m,数a与m不是倍数关系,依据该定理a(m-1)=1(mod m)。实际应用 a(m-1)=1(modm)⇔a=am(modm),将计算的算 am(modm)的结果与a进行比较。如果两者相同,则m为素数。选取a=2,则a一定不会是任何素数的倍数。

步骤2 随机数的产生。

密钥生成和在公钥加密进行字符填充时都会用到随机数。为了防止破译者破译密码或者找到在加密块中的明文,随机数的随机性比较强。随机数的生成在计算机实际的运行过程中不能完全实现,在加密过程中的随机数通过2256位以上的随机序列来产生。

步骤3 密钥的生成。

(1)选择e的值为2623883或者94475891;

(2)生成满足 gcd(e,p-1)=1的随机素数 p;

(3)随机生成不同于p的大素数q,直到gcd(e,p-1)=1;

(4)计算 n=pq,Ø(n)=(p-1)(q-1);

(5)计算 d,d=e(-1)modØ(n);

(6)计算 dmod(p-1),dmod(q-1);

(7)计算(q-1)modp;

(8)将(e,n)放入 RSA 公钥;将 n,e,dmod(p-1),dmod(q-1)modp放入RSA私钥。

步骤4 加密。

第一,要采用RSA算法进行加密,首先数字化明文。明文编码格式如下:空格=00,A=01,B=02,C=03,…,Z=26,则明文数字化HI为08、09;接着将明文M分成块长为s的等长的数据块 m1,m2,m3,…mi,其中 25<n,s尽可能大。加密过程如下:Ek(x)=xemodn,x∈Zn,其中这里的x为明文。加密过程中需要输入如下数据:e(公钥),d(私钥),M(明文),n(模数)。明文M的长度范围在[logn2]-11之内。

第二,格式化明文。采用PKCS格式:EB=00||BT||PS||OO|M。其中参数如下:块的类型:B,填充串:PS,明文数据:M,0为起始值用以确保k的值小于EB的长度。BT的值当为公钥和私钥加密值分别为02和01。当02为BT的值时,PS的值为非0随机数;当01为BT的值时,PS的值为FF。

明文数据转换方式:从字符型数据到整形数据。

第三,RSA计算:对整数数据加密块x进行模幂运算:y=xcmodn,0≤y<0,其中y为密文。其中c的值在公钥和私钥加密时不同,当为公钥时,c的值为e,当为私钥时,c的值为d。

第四,密文数据转换为从整型数据到字符型数据。

步骤5 解密。

解密规则为:Dk(x)=ycmodn,y∈Zn,y为密文。加密实现时需要输入如下数据:密文数据C;模数n;公钥e或私钥d,输出为明文。

第一,密文数据转换方式为:由字符型数据到整型数据。

第二,模运算密文实现对RSA解密:x=ycmodn,0≤x<n,,这里 x指明文。

第三,这个时候转换为ASCII类型的明文数据的明文就是PKCS格式。

第四,将原明文从PKCS格式中分离出来。这同时也可以实现对数据完整性的检测。如果存在下面几个问题则证明解密失败:分割不清楚;不匹配BT注明的数据类型或者少于64位的填充字符;BT与实际操作类型不符。

三、仿真及结果分析

以下部分是对算法进行具体的分析仿真,仿真软件为MATLAB。

(一)仿真中参数假设。

1.RSA秘钥的生成参数设置。

(1)任意两个大的质数:p,q,计算。n=pq。

(2)扩展欧几里得算法:e_gcd(e,r);

(3)求取 e关于 r的模反元素 d=(e_gcd#(e,r)),明文数据转换方式:从字符型数据到整形数据。d的求取依据扩张欧几里得算法。

(4)公钥:{n,e};私钥:{n,d},通过 n 所占用的二进制位的宽度和n的值来决定密钥的位数。如果n=1023,那么秘钥就是10位的。

2.数据的加密参数设置。

明文:m(十进制);

密文:c(十进制);

得到密文公式:c=me0/0n,就是m的e次方对n求余。注意:要进行加密的值m要小于n,如果不小于n的值就要进行分组切割。

3.解密过程参数设置。

密文:c;

得到明文公式:cd=m(mod n);

明文:m=cd0/0n。

(二)仿真结果分析。为了对比算法所带来的效果,最后采用MATLAB进行网络仿真,仿真过程包括加密、解密过程,私钥以及公钥生成,另外仿真中还计算了进行加密和解密所需的时间,算法仿真运行后的结果如图1所示。由图可以看出仿真中得到公钥为{163793,557},私钥为{162793,154133},最后通过扩展欧几里得算法正确进行解密。

图1 加密解密仿真结果

四、结语

本文首先介绍了目前区块链技术的发展现状,进而引出区块链的发展离不开教育的发展,指出区块链的功能的实现需要解决安全问题,进而引出RSA加密算法,提出在区块链技术网络中采用RSA的加密算法保证数据的安全性,接着对RSA加密算法加密和解密的过程进行介绍,最后通过仿真得出RSA加密和解密过程,其加密和解密的特点表明,能够将该算法运用到区块链技术中。

猜你喜欢
素数明文私钥
清扫机器人避障系统区块链私钥分片存储方法
两个素数平方、四个素数立方和2的整数幂
比特币的安全性到底有多高
有关殆素数的二元丢番图不等式
基于改进ECC 算法的网络信息私钥变换优化方法
关于两个素数和一个素数κ次幂的丢番图不等式
关于素数简化剩余系构造的几个问题
一种基于虚拟私钥的OpenSSL与CSP交互方案
奇怪的处罚
奇怪的处罚