一种AES算法和HASH认证结合的文件加密方案

2019-03-21 11:35:36叶小艳
计算机技术与发展 2019年3期
关键词:序列号用户名解密

叶小艳

(广州大学华软软件学院 网络技术系,广东 广州 510990)

0 引 言

个人电脑的信息安全,侧重于个人计算机内部的信息管理。对重要文件进行加密,是常用的信息管理策略。因此,运用有效的信息加密策略,对个人电脑的安全具有重要的意义。传统的文件加密方法一般有两种[1]:一种是利用应用软件本身所带的加密功能给文件加密,例如Word、Excel、Access、WPS、PDF文件都有自带的加密功能。这种加密方法容易操作,是常用的文件加密方法。但它的缺点是只能针对部分格式的文件进行加密解密。另一种是利用专门软件的加密功能进行加密。例如使用WinZip、WinRaR以及脚本编程对文件(夹)进行加密。这类加密方法采用的是单向加密方法,加密速度显然较慢,使用过程比较麻烦。

无论是用应用软件本身所带的加密功能给文件加密,还是利用专门软件的加密功能进行加密,它们采取的都是基于单一模式加密算法的文件保护方案。这使得文件的保密性以及数据的完整性得不到很好地保护。另外大多数文件加密软件只支持本地加密和本地解密。例如,文件夹加密超级大师只允许用户在本地进行加密、解密操作来防止别人盗取加密信息。当加密数据必须转移到别的计算机上进行解密操作时,解密操作将不会成功。

为了提高数据的保密性和完整性,最大限度地防止恶意用户攻击或用户的错误操作,提出一种基于AES算法和HASH认证相结合的文件加密机制。在该机制中,对于需要加密的文件,加密软件用文件流读取的方式读取文件,同时使用HASH认证,并用AES算法进行加密,密钥使用即时生成策略,以用户名、硬盘序列号和SALT生成的SALT值作为参数进行保存,使得加密文件不仅能很好地保证文件的机密性和完整性,而且能够在异地进行解密,而不影响其安全性[2-6]。

1 AES算法和HASH认证结合的加密方案

1.1 AES算法

AES算法是一种对称密钥加密体制算法,又称Rijndael加密算法,是一种安全高效的加密算法[7]。这种加密体制中信息的发送方和接受方用同一个密钥去加密和解密数据,运用了宽轨迹策略的设计策略,针对差分密码分析和线性密码分析原理提出的算法优化。Rijndael是一种迭代分组算法,采用了可变的分组长度和密钥长度。为了满足AES算法的要求,对分组长度和密钥长度进行了限制,分别为:分组长度128 bit,密钥长度128 bit/192 bit/256 bit,相应的轮数为10/12/14[8]。

1.2 HASH认证

HASH认证是利用HASH函数的消息认证,就是将任意长度的消息压缩到某一固定长度的消息摘要的函数进行认证,为数据的快速存取提供了一种方法,或者说通过一种算法建立键值与真实值之间的对应关系[9]。因为每一个真实值只能有一个键值,而一个键值可以对应多个真实值,因此通过键值与真实值对应的关系快速地在数组等条件中存取数据。HASH认证不仅能够提供口令相互认证,而且克服了传统单一模式加密算法的弱点,有效地保护文件信息,并能有效防止他方攻击,能很好地加强文件加密的安全性与提高解密的效率。

1.3 AES算法和HASH认证结合的文件加密方案

1.3.1 文件加密过程

文件加密的过程实际上就是把明文转换为密文的过程。文件加密不但要保证文件的机密性,还需要保证文件的完整性。而保证数据完整的有效性方法就是使用消息认证。AES算法和HASH认证相结合的文件加密过程如下所述。

该加密方法的基本思想是改变源文件内容,进行混合加密。为此用二进制方式读取源文件,然后采用HASH认证技术。假定通信双方为A和B,当A有要发送B的报文时,计算该报文的散列值,散列值将作为消息摘要。由于散列值是输入消息的函数值,只要输入消息有任何改变,就会导致得到不同的散列值[10]。例如采用SHA-256算法,SHA-256算法输入的是264-1位数据,输出的消息摘要是256位。然后使用Rijndael算法进行加密,用加密后的数据覆盖源文件,以达到加密和消息认证的功能。

当源文件加密后,消息认证会对信息的完整性和真实性进行验证,要求发送方A和接收方B共享一个秘密值S,发送方生成消息M和秘密值S的散列值,然后与消息M一起发送给对方[11],即:A→B:M‖[H(M‖S)];接收方B可以按照发送方相同的处理办法生成消息M和秘密值S的散列值,两者进行比较,从而实现验证。该方法中秘密值S并不参与传递。因此,可以保证攻击者无法伪造。然而,要使用加密算法确保数据的机密性,还需把加密机制与认证机制相混合。Rijndael算法与HASH认证混合加密过程模型如图1所示。

图1 混合加密模型

1.3.2 文件解密过程

文件解密包括基于本地和基于异地的两种环境的解密。

(1)基于本地的文件解密。

本地文件解密,实际上是文件加密的逆过程。

如图2所示,解密可以简单地看作密文转化为明文的过程。

图2 解密过程

在解密的过程中,要读取附在加密文件中的SALT值、当前硬盘序列号的X、Y值以及当前用户名,流程如图3所示。

通过Rijndael算法与HASH认证混合运算得到256位的即时密钥[12]。对加密文件数据进行解密后,便得到了HASH函数认证后的源文件数据了。然后分离HASH认证部分和源文件的数据,对源文件数据进行完整性验证操作。生成HASH函数散列值后与HASH认证的散列值相比较,便可判断数据的完整性。最后,删除文件名、SALT值、X、Y值。

图3 本地解密流程

(2)基于异地的文件解密。

异地文件解密,顾名思义就是在非本地计算机上对加密数据进行解密。

异地文件解密流程如图4所示。

图4 异地文件解密流程

①把用户名和硬盘序列号简单地看作两个8阶矩阵,其中的元素为十六进制数(0-F),这样,一个矩阵就可以表示32字节的数据,如果使用ASCII码,则可以表示32个字母或数字(用户名和硬盘序列号不会超过32个字节)。其中,用户名矩阵为A,硬盘序列号矩阵为B。当用户名和硬盘序列号的数据不足32位时,就要进行填充。填充的方法是先填充比特最高位F,其余填充0。填充完毕后,两个矩阵分别存有256位的数据。

②根据SALT值、用户名以及硬盘序列号得出一个256位的密钥。在文件异地解密的过程中,因为硬盘序列号是未知的,所以混合解密的算法与混合加密算法有所不同。

硬盘序列号矩阵的实对称矩阵B1、B2可以用λ1、X和λ2、Y(λ1、X和λ2、Y分别是B1、B2对应的最小特征值和对应特征向量)代替,且B1、B2是不能由λ1、X和λ2、Y反推得到的[13]。保存λ1、X和λ2、Y值,便可以代替矩阵B。对λ1、X和λ2、Y进行处理,便可以代替对B1、B2进行处理[14]。从而得到异地文件解密的算法。

2 验证与效果

以用户名0640109129,硬盘序列号081005FB0B00LGCM3SNA为例。

将用户名转化成ASCII码的十六进制表示:

3 0 3 6 3 4 3 0 3 1 3 0 3 9 3 1 3 2 3 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

将硬盘序列号转化成ASCII码的十六进制表示:

3 0 3 8 3 1 3 0 3 0 3 5 4 6 4 2 3 0 4 2 3 0 3 0 4 C 4 7 4 3 4 D 3 3 5 3 4 E 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

得到:

K=

加密过程:(1)分解B矩阵,得到B1、B2:

分别计算B1、B2的λ1、X值和λ2、Y值(文中使用了athematica 5.0计算)。解得B1的特征值有:37.67863723027871(取最大特征值)。其对应的特征向量为(X值):

{0.11768585809982075`,0.1074119768921271`,

0.1355670682574105`,0.13484618706555201`,

0.4214799748600844`,0.38710584297166695`,

0.28900995565292276`,0.7259667516656944`}

B2的特征值有:39.66680261555876(取最大特征值),其对应的特征向量为(Y值):

{0.2050783476568194`,0.09100674266886734`,

0.17354467785099853`,0.27472793463327216`,

0.3906151655916963`,0.44295236831364776`,

0.24892415015479563`,0.6582683420290661`}

(2)计算出:

AC={{149,87,131,108,145,187,92,111},{122,112,83,70,91,170,97,117},{155,54,119,112,181,203,62,73},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}}

A1={{4,7,3,12,1,11,12,15},{10,13,3,6,11,10,1,5},{11,6,4,0,5,11,14,9},{0,0,0,13,0,0,0,0},{0,0,0,0,10,0,0,0},{0,0,0,0,0,5,0,0},{0,0,0,0,0,0,3,0},{0,0,0,0,0,0,0,13}}

解密过程:分为本地解密和异地解密两种情况。

(1)本地解密状态。

A1B1(B2Y)T={{6 830.46,3 031.12,5 780.18,9 150.25,13 010.1,14 753.2,8 290.81,21 924.7},{4 970.09,2 205.55,4 205.86,6 658.05,9 466.58,10 735,6 032.69,15 953.2},{5 954.44,2 642.38,5 038.86,7 976.71,11 341.5,12 861.1,7 227.5,19 112.8},{537.309,238.439,454.69,719.792,1 023.42,1 160.54,652.186,1 724.68},{1 291.87,573.288,1 093.23,1 730.62,2 460.64,2 790.34,1 568.07,4 146.7},{593.256,263.267,502.034,794.74,1 129.98,1 281.38,720.094,1 904.25},{265.752,117.932,224.889,356.008,506.181,574.002,322.57,853.02},{2 892.69,1 283.68,2 447.9,3 875.12,5 509.75,6 247.98,3 511.15,9 285.08}}

(2)异地解密状态。

A1λ1X(λ2Y)T={{6 830.46,3 031.12,5 780.18,9 150.25,13 010.1,14 753.2,8 290.81,21 924.7},{4 970.09,2 205.55,4 205.86,6 658.05,9 466.58,10 735,6 032.69,15 953.2},{5 954.44,2 642.38,5 038.86,7 976.71,11 341.5,12 861.1,7 227.5,19 112.8},{537.309,238.439,454.69,719.792,1 023.42,1 160.54,652.186,1 724.68},{1 291.87,573.288,1 093.23,1 730.62,2 460.64,2 790.34,1 568.07,4 146.7},{593.256,263.267,502.034,794.74,1 129.98,1 281.38,720.094,1 904.25},{265.752,117.932,224.889,356.008,506.181,574.002,322.57,853.02},{2 892.69,1 283.68,2 447.9,3 875.12,5 509.75,6 247.98,3 511.15,9 285.08}}

由以上计算结果可得知A1B1(B2Y)T的值和A1λ1X(λ2Y)T的值相等。

经过十六轮运算,得到结果为:

A16={{11,1,12,13,13,14,2,7},{3,1,5,8,0,2,15,3},{12,4,12,6,11,2,7,5},{7,1,1,12,5,5,5,3},{9,10,13,12,1,3,12,2},{10,0,9,10,14,10,11,4},{3,10,12,11,2,15,0,8},{1,15,11,10,14,5,4,13}}

A1XORA16={{8,1,15,11,14,10,1,7},{0,0,6,8,3,11,12,2},{15,6,15,15,11,2,7,5},{7,1,1,12,5,5,5,3},{9,10,13,12,1,3,12,2},{10,0,9,10,14,10,11,4},{3,10,12,11,2,15,0,8},{1,15,11,10,14,5,4,13}}

由此获得密钥为:

3 结束语

文件加密软件采用AES算法和HASH认证相结合的加密方式对文件数据进行加密。其机密性源于加密算法的实施。文件加密软件采用密钥长度为256位的Rijndael算法[15]。该算法有效抵御穷举搜索和抵抗线性密码分析和差分密码分析,并且该算法复杂度低、效率高,令文件加密软件可以抵御被动攻击(截取),使得攻击者在截取数据后,利用即时密钥生成的密钥管理方案,可以令攻击者因不在本地计算机上进行解密,而无法还原数据信息,从而更大地保证了加密数据的安全性。为保证数据完整性,文件加密软件采用基于Hash散列函数的认证,使得文件加密软件在保证数据完整性中取得了不错效果,可以有效防止攻击者对系统进行主动攻击,包括伪造、篡改信息。但文中未对文件的存储、备份和灾难恢复等进行研究,下一步将从这些方面深入研究文件加密体制。

猜你喜欢
序列号用户名解密
解密“热胀冷缩”
《护士进修杂志》投稿程序
解密“一包三改”
少先队活动(2020年9期)2020-12-17 06:17:31
炫词解密
recALL
机智的快递员
故事会(2017年17期)2017-09-04 17:36:42
解密“大调解”
中国卫生(2014年12期)2014-11-12 13:12:38
PP助手教你辨别翻新iPhone5小白不再中招
温度传感器DS18B20序列号批量搜索算法
ESET NOD32专家答疑等