用于在线升级的无密钥加解密方法研究

2021-01-07 08:36陈栩睿
数字通信世界 2020年12期
关键词:明文密文字节

陈栩睿

(西南大学电子信息工程学院,重庆 400715)

1 传统的主流加密方式

随着数字化信息技术的不断发展,信息安全问题也日显突出,企业或个人的部分敏感数据应该加密保存或发布,在特定装置中才能被解密使用,例如嵌入式设备的程序升级文件。同时,移动互联网内容消费时代正在普及,越来越多的用户愿意为优质内容付费,企业或个人为保护自己的数字内容不被窃取,需要对内容进行加密传输,最后在智能终端解密使用。另外,应用中还要求数据解密过程应尽量不消耗额外的硬件资源,否则会降低用户的体验感。

目前,主流的加密方式有单密钥模式、双密钥模式两种。单密钥模式采用的是对称加密算法,即加密密钥和解密密钥相同,加密产生密文,其长度和明文大致相同,一般包括 DES、3DES、AES等。双密钥模式也称为公钥模式,其采用的是非对称加密算法,加密和解密所使用的是不同的密钥,即通常所说的“公钥”和“私钥”,公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。但严格意义上说,只能使用公钥加密,使用私钥来解密。而使用私钥加密更多的起到签名的作用,让公钥解密来验证身份,因为公钥是要传递的,有泄露风险。 RSA算法、 Elgamal算法、椭圆离散对数算法等就属于双密钥模式。

然而,单密钥加密方式中,由于加密和解密使用的是同一个密钥,一旦加密方或解密方泄露了密钥,就会丧失安全,因此,安全性较低。双密钥加密方式的计算压力较大,而且,采用双密钥加密方式加密后,密文的数据长度会增长,保存和传输压力会加大。因此,上述传统的主流加密方式不适用于嵌入式平台的智能终端程序和文件的在线升级应用。针对嵌入式平台的智能终端中的程序和文件的在线升级应用,本文提出了一种无密钥的加解密方法及算法。

2 算法描述

嵌入式平台的智能终端中程序和文件在线升级的无密钥加密方法,主要是在确保算法安全性的基础上考虑算法的便捷性。本文提出的无密钥加密方法是通过选用不同的摘要算法来得到类密钥信息,并通过异或运算来生成密文;同时,通过选用相应的长度算法,来确保数据块的分割不易被反译识别。

具体过程是:先将程序和文件数据分割为n个不固定字节长度的数据块,自数据的起始到结尾依次为DB1、DB2……DBn,DBn的长度为Ln,其中,n≥1。再从每个数据块的起始地址开始,选取不少于一个字节作为头部,DBn的头部为Hn,数据块的起始地址是通过迭代的方式获取,即数据块DBn的地址取决数据块DBn-1的地址和长度,数据块DB1的起始地址为整个数据文件的首地址。

接着,从Hn任取不少于一个比特作为摘要算法的输入元素Xn。然后,使用摘要算法fH(·)计算出每个数据块头部的类密钥信息,再将该类密钥信息与头部明文进行相应的异或运算,得到头部密文。同时,利用长度算法fL(·)计算数据块长度,利用不同的摘要算法fK(·)计算数据块内所有字节数据流的摘要信息来作为数据块内的类密钥信息,再利用该类密钥信息与每一个字节数据进行相应的异或运算得到密文。

图1 数据块及其头部划分示意图

摘要算法主要是指数据摘要算法,它表示输入任意长度的数据,输出固定长度的数据,相同的输入数据始终得到相同的输出,不同的输入数据尽量得到不同的输出。数据摘要算法具有不可逆性,其主要功能有数据签名、数据完整性验证等,这里我们主要是利用它来计算生成类密钥信息。常用的数据摘要算法有:CRC、MD5、SHA等,可以根据实际应用的便捷或复杂程度的要求进行选择。

解密方法与加密方法对称,先提取第一个数据块的头部密文和元素,通过摘要算法计算出第一个数据块的头部明文,并通过长度算法fL(·)计算第一个数据块的长度,然后计算第一个数据块中除头部外每一个字节的类密钥信息和明文,接着再提取第二个数据块的头部密文和元素,依次进行解密计算。

3 算法流程

整个无密钥加解密算法的具体流程如下:

3.1 加密流程

(1)提取数据块DB1的头部H1。

(2)从H1中任意选不少于一个比特作为所选摘要算法的输入元素X1,数据块长度和字节的类密钥信息计算均以该元素作为输入。

(3)按如下摘要算法计算 H1的类密钥信息,并通过异或运算得到密文C1:

式中,数据块头部密文摘要算法fH使用前一个数据块的头部密文Cn-1,计算本数据块的头部类密钥信息,并通过与头部明文Hn进行异或运算得到密文Cn。当n=1时,Cn-1即C0为一个约定的初值M。注意,使用头部密文时,不能覆盖X1所在的比特位。

(4)计算数据块DB1的长度L1:

(5)计算数据块DB1内除头部外的每一个字节Dk的类密钥信息Sk和密文Ek,数据块中每一个字节Dk使用不同的摘要算法,计算出第k个字节的类密钥信息Sk:

(6)提取下一数据块的头部,重复步骤(2)-(5),直到所有数据块加密完成即可。流程图如图2所示。

图2 无密钥加密算法流程图

图3 无密钥解密算法流程图

3.2 解密流程

(1)从数据块DB1的头部中提取出密文C1。

(2)从数据块DB1的头部中提取出元素X1。

(3)按如下算法解密生成数据块DB1的头部明文H1:

其中,明文不覆盖X1。

(4)计算数据块 DB1长度L1:

(5)计算数据块DB1内除头部外的每一个字节密文Ek的类密钥信息Sk,然后与密文Ek进行异或运算得到明文Dk:

(6)提取下一数据块的头部密文和元素,重复步骤(2)-(5),直到所有数据解密完成即可。流程图如图3所示。

4 结束语

由于该无密钥加解密方法先将数据分割为n个不固定长度的数据块;再从每个数据块的起始地址开始,选取不少于一个字节作为头部;接着从数据块的头部中任取不少于一个比特作为摘要算法的输入元素;然后使用摘要算法和异或运算,从每个数据块的头部计算出头部类密钥信息和密文、数据块长度以及数据块所有字节的类密钥信息,使用该类密钥信息与每一个字节的明文进行异或运算得到密文,从而完成加密。解密是通过与加密过程对称的解密过程实现。这种加解密方法的加密过程中数据块长度和每个字节的类密钥信息具备随机性,所以逆向“碰撞”难以破解,而且本方法属于算法流程不公开的加密方法,只是应用在专属的智能终端等设备上,并很好地利用了多种数据摘要算法,安全性高。

同时,本方法按字节顺序计算密文,不用缓存数据,没有复杂的运算,计算压力较小。另外,采用本方法加密后不会改变密文的数据长度,从而不会增加数据的保存和传输压力。我们已将该方法应用于专用智能终端的嵌入式软件的在线升级中,一年共完成了4版软件的在线升级,流程很顺畅,用户体验感很好,没有发生软件被破译后盗用的现象。

猜你喜欢
明文密文字节
一种支持动态更新的可排名密文搜索方案
No.8 字节跳动将推出独立出口电商APP
基于模糊数学的通信网络密文信息差错恢复
基于网络报文流量的协议密文分析方法
密钥共享下跨用户密文数据去重挖掘方法*
No.10 “字节跳动手机”要来了?
轻量级分组密码Midori64的积分攻击
奇怪的处罚
奇怪的处罚
奇怪的处罚