加盐随机乱序建造密钥加密组保护数据的研究

2011-03-23 02:06李京倍
漳州职业技术学院学报 2011年2期
关键词:明文加密算法解密

李京倍



加盐随机乱序建造密钥加密组保护数据的研究

李京倍1,2

(1.华侨大学 计算机科学与技术学院,福建 泉州 362021;2.泉州财贸职业技术学校,福建 泉州 362000)

阐述了加盐密钥加密现状和随机乱序建造密钥的作用以及流程方法。探讨加密、解密流程设计以确保数据安全的设想,探索一种加盐随机乱序建造密钥加密数据,并结合文字置换应对穷举密钥攻击,设计并构建应用于java的加密软件,以应对不断提高的个人商业信息隐私要求,保证重要文件信息不被泄露。

数据保护;密钥加密组;文字置换;加盐随机乱序

1 引言

随着人类社会进入信息时代,全球信息化进程加快,计算机、因特网、小型网络设备(如:手机)在信息全球化中扮演着非常重要的角色。通信、计算机技术等高科技手段在社会各个方面广泛运用,网络支付迅速发展,给人们带来方便的同时,利用信息网络技术犯罪也在迅速增长。曾几何时,银行存折和信用卡明明在自己手里,计算机操作密码慎之又慎,账户上的存款却不翼而飞;自己公司的机密信息经过加密,却被对手公司成功窃取。这些情况有的是因为被木马窃取密码进而被盗,而还有一些则是通过破解密钥的方式直接暴力破解。为此,众多学者设计了各种加密算法来应对。从早期的DES,到RSA(Ron Rivest,Adi Shamir,Len Adleman)[1],再到ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)[2],加密算法也由此变得更加复杂,除了不断加强算法的复杂性,有没有别的方法增强信息的保密性?这里笔者考虑用文字置换、加盐随机乱序建造密钥加密组保护真实数据。

2 目前加密算法研究

2.1 国内外研究动态

加盐加密法在国外很早就有使用过,UNIX系统的口令加密就是先使用密码进行加密,然后将结果与加盐随机值结合在一起,再进行24次DES加密,最后得到密钥。同时,由于盐和密码的无关性,它的生成方式也是多种多样的,有的使用md5.,有的使用hash,有的使用随机数。最后,盐的存放位置也是各不相同,有的统一存放在机器的存储器上,有的存在文件中,储存位置灵活多变。因此,大家公认使用加盐的方式进行加密使其自身被破解的抵抗力得到了大大加强。加盐算法发展至今,有的甚至使用迭代加盐的方式去防止对方破解。

在随机数的生成上,各种算法也有了长足的进步,不同于以前需要多个参数才能使生成的随机数真正随机,现在很多算法都可以在参数差异极小的情况下生成相关度极小的随机数组。如使用混沌算法[3]的混沌Hash函数构造算法[4]就可以由最初极小参数的改变而使得结果产生极大的差异性。通过这些随机数组的生成,各种密钥的生成也越来越难以被人破解,使加密算法有了长足的进步。

2.2 算法研究

2.2.1 随机乱序

这里的目的是通过随机乱序方法来建立作为密钥的随机数组。要建立的随机数组要求具有真随机数[5]的某些性质,例如数组元素之间没有任何关系,每个元素都是独立的存在,并且无法由前面的数据推算后面的数据,没有周期等,但它们又是可以控制的可以重复产生,目的是用来做加密文件的密钥,所以它的产生要和用户密码密切关联。

2.2.2 加盐

加盐法的最大特色是增加加密强度,它是一种动态方法。所谓盐也是一种随机数,最常见的盐所用的随机数一般是由程序读取时间流而得到数值,然后以数值做种子启用随机函数得到多个随机数作为盐。得到盐后,让盐和用户密码共同决定函数种子的数值,这样可以保证同一个密码对同一个文件进行加密,得到的加密结果也不相同,防止有人用同一个文件相同密码加密分析破解加密算法。当然,使用这种方法,盐是要保存下来的。这里可以选择将其保存在加密后的文件里,也可以保存在系统中的别的位置。

2.2.3 文字置换的探索

很多情况下,有许多人会采用暴力破解密钥的方法对数据进行破解,当然,这种破解可能带来两种截然不同的结果,比如明文是“确定”,破解后的结果为“否定”,仅仅是由于二者用的密码不同。由于正确的使用者知道自己的密码是什么,所以解密后仍能得到正确的信息,而破解者由于无法确定哪个是正确的密码,所以他仍然面临两种选择,这样至少有50%的机率保护自己的商业秘密。这个可以尝试一下,当然由于概率、语法等原因,结果可能不尽如人意,但这给我们提供了一个思路。如果说我们由密码来设计一个算法,用以控制我们对上述词语的修改,即使最后密钥被人破解了,但由于密码修改词语的算法没有被破解,仍可以一定程度上弥补明文被破解的后果。

3 总体设计

3.1 首先加密流程设计

首先设计加密流程,流程如图1所示。

(1) 要求用户选择好要加密的文件并输入密码;

(2) 为明文添加校验码,方便解密后校验数据;

(3) 用随机信息生成盐,这里可以选择时间,随机数甚至机器串号等经过一系列随机函数计算后得到的一长串数字,一般要求长度不得小于密码的长度;

(4) 对明文使用盐进行文字置换,置换可基于一个加密软件默认数据表,也可生成表附在明文后;

(5) 将盐和密码一起作为参数通过计算得到密钥;

(6) 用密钥对添加了校验码的明文进行加密;

(7) 将盐进行一次可逆变换,算法可以由密码来决定,这样可以使盐不被人直接获取;

(8) 由密码计算出一个位置,在加密好的信息中将这个位置放入变换好的盐(不一定连续放入,如跳位,多区域等),最后得到密文。

图1 加密流程示意图

3.2 解密流程设计

设计解密流程,流程如图2所示。

图2 解密流程示意图

(1) 要求用户选择好要解密的文件并输入密码;

(2) 用密码计算出盐的变换参数、文件插入位置;

(3) 输入密文,从中找出并运算得到盐并将盐从密文中去除;

(4) 将盐和密码一起作为参数通过计算得到密钥;

(5) 用密钥对去除了盐的密文进行解密;

(6) 解密后的明文信息进行反转换修改,得到明文;

(7) 使用解密后的校验码校验明文无误后,输出结果。

3.3 文字置换的初步设想

为了实现文字置换加密,最简单的实现方法就是加密时,将明文中的“不是”改成“是”,“yes”改成“no”等等,而这个改正则由密码或者是盐控制什么时候改,什么时候不改。在上述加密过程中,由于是对明文进行直接修改,所以即使对方使用暴力破解,破解后的两种明文进行校验的结果仍然是正确的。当然,这种应该有一定的局限性,对于简单的回答“是”“否”的应答加密效果好,但对于“你是不是想要去学校”这类的否定+否定的语句就会对最后的结果造成干扰,从而泄露这方面的算法。因此,这需要对语言方面的数据库进行完善,并可能对文字的语法进行一定的限定才能较好的解决这个问题,当然这带来的可能是运算量大大增加(如反问句,汉语,英语等等)。如:“你是不是想要去学校”这个例子,对于这样的疑问句,不对其进行置换对加密结果并无影响。实际上,笔者认为用这种方法对带数字的语句加密会更加简单易行,如“早上10点到香港”“5月7日去北京”这样带数字的语句,可以使用密码作为算法,对数字进行改变,如改成“早上11点到香港”“6月8日去北京”,这种改变对于实验室的关键数据保护是可以起到良好的效果的,就算算法被公布,但由于上述破解的是密钥而非密码,破解人员仍然不知道原数据是多少。

3.4 安全性

3.4.1 密钥长度

在上述加密解密过程中,实际的最后参与者都是用密钥进行加密,不过由于有了盐的不确定性(位置不确定,无法将其与加密后的文件正确分离,长度不定),所以安全性仍是有一定保证的,当然这里的安全性很大部分也是由密钥的长度决定的。由于考虑到一般通讯的速度要求,所以密钥长度仍要取一个适量的范围。

3.4.2 明文与盐的长度

首先,由于明文的不确定性,造成的结果可能是明文长度小于盐的长度,这种情况下,可能就会有一定的安全隐患。为了防止加密算法被破解,所以很可能会在加密前将明文扩展到一个比较合适的长度[6]。同样,受限于机器的运算速度及存储状况,对于长明文可能也要采用分组加密的方式进行加密[7]。当然,这种时候最好能采用每一个分组都用不同的盐的方法来保证密钥不被破解。

3.4.3 盐的位置

由于盐的位置是由密码得到的,所以如果有人用同一密码对相同文件进行加密,盐的位置都在同一位置,这可能使得有心人得到盐并将盐从加密后的文件中取出[8]。所以为了安全起见,未来可能会对其算法进行改进。如:除了密码之外,将计算机的串号,内存的大小等作为参数,这样可以加强盐的防范,保证即时有人用同一密码对相同文件进行加密,得到了盐,却无从推导出密码和盐位置间的关系。当然,还可以专门将盐放置在系统中的某个位置,不过,这种方法容易被人从进程中发现调用的文件位置,从而使盐被发现。

3.5 结果验证

一个好的算法和思路是需要事实验证的。同时为了更好的在多平台上使用,程序使用java编写,然后大批量输入数据和密码让其运行加密来实验其算法的可靠性和实用性。由于用文字置换加密的文件主要是应对于文字,所以验证的时候也应以文档为主进行验证,保证其实用性。从实验结果看,这种加密方法对有数字的语句加密效果最好,对选择以及肯定否定的回答加密效果较好。

4 结束语

本设计力图探索一种加盐随机乱序建造密钥加密数据,并结合文字置换应对穷举密钥攻击,设计并构建应用于java的加密软件,主要应对不断提高的个人商业信息隐私要求,保证重要文件信息不被泄露。相较于传统的加密方式用了加盐的方法,并让盐的长度不固定,由多组函数随机生成,使得用同一密钥对相同文件加密后的结果会每次都不相同,保证了安全性;同时对明文使用文字置换的欺骗,保证消息泄露后也能取得不错的保密措施。完成基本的加密过程后,将其用于各种支持java的设备进行文字通讯传输,达到加密通讯的效果。

[1] Agrawal S, Krishnan V, Haritsa J R. On Addressing Efficiency Concerns in Privacy-preserving Mining[C]//Proc. of the 9th Int'l Conf. on Database Systems for Advanced Applieations. Jeju, Island: [s. n.],2004.

[2] 韦鹏程,等.一种多级混沌图像加密算法研究[J].计算机科学,2005,32(7):172-175.

[3] Fridrich J. Symmetric ciphers based on two-dimensional chaotic maps[J].Iht J Bifurcat Chaos,1998,8(6):1259~1284.

[4] 姜楠,等.一种基于混沌系统的密钥生成方法[J].东北师大学报,2008,40(4):43-46.

[5] 张伟,等.一种基于符号动力学的伪随机序列发生器设计方法[J].计算机科学,2005,32(6):140-141.

[6] 徐子杰.多层加密算法的设计与分析[J].计算机工程与应用,2005,41(24):36-37.

[7] 冯登国,吴文玲.分组密码的设计与分析[M].北京:清华大学出版社,2000.

[8] 胡志远.口令破解与加密技术[M].北京:机械工业出版社,2003.

The Research of Data Protection by Salt-contained Random Out-of-order Build-key Encryption Groups

LI Jing-bei1,2

(1.College of Computer Science & Technology, Huaqiao University. Quanzhou, Fujian 362021, China;2.Finance and Accounting College of Quanzhou,Quanzhou, Fujian 362000, China)

To expound not only the present situation of salt-contained key encryption but also the functions and the process methods of random out-of-order build-key. Explored encryption and decryption process design to ensure the idea of data security. Explored a kind of encrypted data built by salt-contained random out-of-order,and combined with text replacement deal with exhaustive key attack, design and build encryption software applied in Java, in respond to continuously improvement of personal business information privacy requirements, ensure that the important file information could not be revealed.

data protection; key encryption groups; text replacement; salt-contained random out-of-order

2011-03-10

李京倍(1984-),男,福建泉州人,助理讲师,华侨大学在职研究生,研究方向:计算机数据传输与加密。

TP309.7

A

1673-1417(2011)02-0030-05

(责任编辑:季平)

猜你喜欢
明文加密算法解密
炫词解密
解密“一包三改”
炫词解密
基于整数矩阵乘法的图像加密算法
基于混沌系统和DNA编码的量子图像加密算法
奇怪的处罚
混沌参数调制下RSA数据加密算法研究
奇怪的处罚
基于小波变换和混沌映射的图像加密算法
四部委明文反对垃圾焚烧低价竞争