加密强度可定制的新型文本加解密算法*

2017-09-18 00:28姜文超林德熙郭楚谋武继刚孙傲冰
计算机与生活 2017年9期
关键词:明文加密算法缓冲区

姜文超,林德熙,郭楚谋,武继刚,孙傲冰

1.广东工业大学 计算机学院,广州 510006 2.广东电子工业研究院,广东 东莞 523808

加密强度可定制的新型文本加解密算法*

姜文超1+,林德熙1,郭楚谋1,武继刚1,孙傲冰2

1.广东工业大学 计算机学院,广州 510006 2.广东电子工业研究院,广东 东莞 523808

各类信息服务系统在生活中各领域的广泛应用导致用户需要管理和记忆越来越多的账号和密码,设计一种让用户能够根据实际需求自定制的、加密强度可调节的账户和密码管理方法成为急需解决的问题。提出了一种加密强度可定制与调节的加密策略,并设计、实现了一个加密算法实例。算法分为3个步骤:哈希映射、空白填补、字符加密。哈希映射用于制作密码本,负责把明文根据密码本放到密文缓冲区,或根据密码本把明文从密文缓冲区读取出来;空白填补把密文缓冲区空白部分填上随机字符,进一步增加保密级别;字符加密允许用户采用自己特定的加密算法对每个明文字符进行加密。理论分析和实验测试均表明该加/解密算法灵活、便捷,同时可以有效保证用户隐私数据的安全性,允许用户根据实际需求自定制专属自己的独特的保密方法,并且证明在不知道密钥的情况下无法使用蛮力穷举法破解。

加密强度可定制;文本加密;哈希映射

1 引言

随着各类信息系统的广泛应用,人们拥有越来越多的账号和密码,但是人的记忆力是有限的,记住众多的账号和密码会给用户带来很大困扰。通用的数据加密算法虽然可以保护用户的隐私信息,但理论上仍然具有被破解的可能,倘若某一加密算法被破解,所有使用该方法的信息系统和用户都将面临突发的泄密灾难。因此在数据保护需求强度越来越高的情况下,能否设计一种用户可自定义的、加密强度可调的加密算法,使广大非加解密领域和IT领域专家的普通用户可以设计、开发具有自己个人特色的且每个用户都互不相同的加密方法成为一种迫切需求。另外,目前各类信息系统的账户和密码均采用数字和字符组合的方式,而没有利用中文汉字数量大且方便记忆的独特优势。设计一种新型的、可自定义的、加密强度可定制的、结合中文复杂性的加密策略可以在保证用户隐私数据安全的同时,使用户容易记忆账户、密码等高度隐私的数据信息。

本文提出了一种加密强度可自主定制与调节的加密策略,并实现了一个加/解密算法实例,让用户根据自己的需求和特色轻松设计专属于自己的加密算法。对于任何一段数据,该方法分为3个步骤:哈希映射、空白填补、字符加密。哈希映射用于制作密码本,负责把明文根据密码本放到密文缓冲区,或根据密码本把明文从密文缓冲区读取出来;空白填补把密文缓冲区空白部分填上随机字符,进一步增加保密级别;字符加密允许用户采用自己特定的加密算法对每个明文字符进行加密。理论分析和实验测试均表明本文加密算法可以有效保证用户隐私数据的安全性,在不知道密钥的情况下无法使用蛮力穷举法破解。

2 算法设计

2.1 术语定义

本加密策略考虑到使广大非加/解密领域和IT领域专家的普通用户可以设计、开发具有自己个人特色的且每个用户都互不相同的加密方法的原型,需要让加密过程简单、灵活,且加密强度可以调节,为描述其加/解密原理,定义基本术语如表1所示。

2.2 加密原理

如图1所示,加密过程由校验密码模块、哈希映射[1]模块、填补空白模块和加密字符模块构成。校验密码模块包括检查密码是否能作为密钥和是否能对明文进行分解两个功能。明文分解是把明文分解为多个子明文进行加密,在明文长度过大情况下,转换为小于一定长度的明文作为输入。其中,哈希映射需要申请一段内存空间作为缓冲区,哈希映射根据密钥把明文字符乱序放在缓冲区。

Table 1 Basic definitions表1 基本术语定义

填补空白模块负责在缓冲区空白位置填补随机字符。字符加密模块对每个字符运用用户特定的加密算法进行加密,保证攻击者无法猜测明文信息。只要缓冲区足够大,填补空白使明文和填补组成的密文无法知道给定一段字符是输入填补还是明文。

加密过程实例伪代码描述如下。

1.encryption(str,key)

2.input str,key//明文,密码

3.get temp_length//获得缓冲区长度

4.if(IsNullorEmptyorWhitechar(str))//明文判断不空

5.return str

6.hstr=md5(key)+end_string//后缀

7.get per//获得缓冲区使用率

clearstr=distribution(str,temp_length*per)//分割明文函数,输入字符串和分割字符串长度temp_length*per,可以把字符串str分割为长度不大于temp_length*per的多个字符串

8.foreach(temp in clearstr)//分割的明文分别进行加密

9.ciphertext+=encryption_string(temp,temp_length,hstr,key)

10.return ciphertext

加密子明文需先申请缓冲区,长度temp_length,明文后面加上后缀,对明文每个字符,使用哈希映射得到其在缓冲区的位置,如果哈希映射得到位置冲突,则使用冲突函数得到一个没有冲突的位置。之后通过fill_gaps填补空白,输入缓冲区temp和密钥,对temp填补空白,填补空白之后对temp每个字符加密。其伪代码描述如下。

1.encryption_string(str,temp_length,hstr,key)

2.temp=char[temp_length]//申请缓冲区

3.str=str+hstr//明文后缀

4.for i=0 to str.length

5.position=hash(i,key);//哈希映射

6.temp[position]=str[i]

7.fill_gaps(temp,key)//填补空白

8.for i=0 to temp_length

9.temp[i]=encryption_character(temp[i],key,i)

10.return temp

2.3 解密原理

如图2所示,解密过程包括校验密钥、哈希映射、字符解密3个模块。当存在多个密文需要进行解密且费时较长时需要验证密钥,一旦密钥错误,校验密钥模块可以停止解密以节约时间,可对原密钥进行特定加密过程,比如MD5[2],然后用加密算法使用经过MD5加密后的密钥。首先用经过验证的密钥对密文解密,然后比较要验证密钥的MD5和明文是否相同来验证密钥。

Fig.1 Encryption图1 加密过程

解密过程中的哈希映射和加密过程类似,除了冲突处理conflict之外,用于判断当前位置在缓冲区是否已经存在字符,如果不存在字符,那么解密冲突。这和加密过程相反,加密过程是存在字符时发生冲突。使用哈希映射得到密文字符在明文中的位置,哈希映射和密钥以及明文的字符所在位置有关,和明文本身无关,用相同的密钥可以得到处于相同明文位置的字符在缓冲区唯一位置。

字符解密模块包括加密哈希映射得到的结果和截取密文,也可以对随机字符解密。截取密文根据后缀截取,字符解密后可以得到明文加上后缀、随机字符后的字符串,对字符串截取后缀后即可得到明文。

解密过程实例伪代码描述如下。

1.decryption(str,key)

2.get temp_length

3.if(IsNullorEmptyorWhitechar(str))

4.return str

5.hstr=md5(key)+end_string

6.ciphertext=distribution(str,temp_length)//分割密文

7.foreach(temp in ciphertext)

8.clearstr+=decryption_string(temp,temp_length,hstr,key)//对分割的密文解密

9.return clearstr

1.decryption_string(str,temp_length,hstr,key)

2.tempclearstr=char[temp_length]//申请缓冲区

3.tempciphertext=char[temp_length]

4.for i=0 to temp_length

5.tempciphertext[i]=decryption_character(str[i],key,i)//解密字符

6.position=hash(i,key)//哈希路径

7. count=0

8.while(!IsNull(temp[position]))//冲突处理

9. position=conflict(count,position,key,temp_length)

10.tempclearstr[i]=tempciphertext[position[i]]

11.return subhstr(tempclearstr,hstr)//去后缀

3 算法实现

根据加/解密原理,一个加密算法需要分别对加密过程和解密过程用到的校验密码、哈希映射、填补空白、字符加密子模块分别加以实现。

3.1 校验密码

校验密码包括密码长度检验[3]、重复字符检验两个模块。因为在加密过程需要一个正确的密码,如果一个长度过短并且有很多重复字符的密码,使用哈希映射将会容易产生冲突,导致性能差。经过哈希映射处理后,和明文相比,密文熵没有足够大,密码长度如果和缓冲区长度相同,每个缓冲区数据都能分配一个密码作为密钥的关键字key,但是用户极少能输入这么长的密码。如果检验到用户密码过短,可以让用户重新输入或组合用户的密码得到密钥。重复的字符检验存在多个相同字符,在哈希映射得不到比较散列的位置,因为由密钥字符决定明文在缓冲区位置,相同的字符会得到相同的位置,因而造成冲突,之后调用冲突处理conflict会降低加密性能。位置分布不够分散导致密文熵不够大,影响加密强度。因此缓冲区temp长度temp_length与密钥长度存在一定关系temp_length=f(k_length),获得最好的比例,temp_length越长加密效果越好,需要空间越大,调用冲突处理次数越大,而temp_length越小,分割越多,加密性能越差。例如:密钥长度为l,如果冲突处理使用步长为l的conflict,就会让哈希映射失去作用。可以寻找到一个新的起点,排列出m,满足m==M,从而避免步长为l的冲突发生。

为满足密钥长度和加密的要求,首先判断密码长度,然后选择去除重复字符。在用户输入过短的情况下,可以把用户的输入进行MD5,得到比较长的密钥,但这种情况限于用户输入为英文和数字的情况,并没有使用中文加密。而选择使用何种哈希映射也可以依靠密码来调整,如密码只有英文和数字,没有中文,则选择对英文和数字有优化的哈希映射。同时,根据密钥可以决定缓冲区长度,但缓冲区长度选择和哈希算法有关,如果使用密钥单字符作为哈希映射关键字,选择缓冲区长度应为密钥的10倍,保证每10个明文字符所用的密钥字符是相同的。如果选择缓冲区长度100倍,则每100个明文字符所用的密钥字符是相同的。因此选择多个字符作为关键字,明文字符所用的关键字相同的数量会比选择密钥单字符作为哈希映射关键字少,密钥作为哈希关键字中重复数越少,加密效果会越好。

加密校验密钥的算法实例如下。

1.input key//输入密码

2.if(IsNullorEmptyorWhitechar(key))//判断输入字符串是否空字符串、无效字符串、空格字符串

3.fail

4.else

5.key=remove_same_character(key)//删除字符串的相同字符

6.if(key.length<MinLength)//判断密码是否小于作为密钥最小长度

7. fail

8.else

9.true

解密过程校验密钥可利用已有的MD5算法,把MD5后的密文放到本算法中加密,得到密钥key,如果保存在本地的密钥密文解密后和输入密钥MD5后一样,那么密钥正确。

解密校验密钥的一个算法实例如下。

1.input key,keystr//key是输入密钥,keystr是保存在本地的密钥密文

2.str=md5(key)//MD5是已有的MD5加密算法,能对输入的字符串输入一段定长的密文

3.str1=decryption(keystr,key)//decryption是本加密算法的解密函数,需要输入明文和密钥,输入密文

4.if(str==str1)

5. right

6.else

7.fail

3.2 哈希映射

哈希映射包括分割明文或密文模块、哈希路径判断、冲突处理3个功能。哈希映射的设计目标是让每个明文字符对应到缓冲区中不同位置,如图3所示。其中,明文每个字符的位置和明文本身无关,只和密钥k、字符在明文中的位置i有关。

Fig.3 Hash mapping图3 哈希映射过程

具体哈希映射、路径 p和冲突处理方法有多种选择,可以根据用户实际需要和加密强度需求自主选择和调节加密强度。其实现伪代码描述如下。

1.hash(i,key)

2.position=p(i,key)//哈希路径

3.while(!IsNull(temp[position]))//冲突处理,加密判断位置不为空,解密过程判断位置为空

4.position=conflict(count,position,key,temp_length)

5.return position

哈希映射的关键是产生哈希路径,只要满足输入一个关键字,得到一个在缓冲区长度temp_length以内的数值即可满足算法的哈希路径要求。当key和value唯一对应时产生的哈希路径效率最高。如果可以保证有大量不同的key得到不同的value,只有少量不同的key可能得到相同的value的哈希路径即可使用,此时可以调用冲突处理函数来得到另一个确定的位置。

哈希路径输入关键字可以使用单个密钥字符、多个密钥字符、密钥字符和明文字符所在明文位置的混合等多种方式。使用单个关键字可以把关键字的unicode作为返回的value参数进行计算,比如式(1)采用除留余数法。除留余数法是将key对一个常数取模。

其中,a、b、c为常数;%为取模,取模操作确保最后的value不会超过缓冲区的大小。

哈希路径产生过程都依赖密钥,可能得到一个不适合的熵值,会增加冲突处理次数,进而降低算法性能。为解决这个问题,如式(2)所示,关键字key可以使用密钥中的字符和value与明文的第i个字符的比值得到,从而使每个关键字都不相同,存在一个哈希路径使value也都不同。

根据key得到value可以用传统的Hash函数,比如Robert Sedgwicks(RS)[4]、Justin Sobel(JS)[5]等。但是这些哈希映射不能很好地适应本算法,因为最终得到的值需要对缓冲区长度取模,这样散列映射空间很小,冲突次数增多。

为解决该问题,本文采用密钥排序法,能够利用密钥中的字符和i来得到明文第i个字符所在缓冲区位置。密钥排序法按照密钥字符规律先对密钥可能的字符进行排序,如英文的次序和汉字拼音次序。去掉密钥中相同的字符,计算密钥剩下字符,并更新密钥长度。把缓冲区分割为temp_length/k_length个区,每个区按照字符顺序,每个区长度相同,多余的缓冲区字符可以放在每个区之间。明文的第i1个字符对应密钥第i2个字符,反之可以按照密钥第i2个字符所在顺序位置得到明文的第i1个字符首位置。密钥第i2个字符作为i1/k_length个字符的关键字,明文的第i1个字符位置可以是a+b,b∈B。B是可以在分割后的缓冲区内没有重复数的数组。例如:密钥只有英文,那么将存在的英文字符排序,删除重复的字符,分割缓冲区为temp_length/k_length。如果明文的第i1个字符刚好对应的密钥第i2个字符是B,那么寻找B所在的位置a,则明文的i1字符首位置就是a,判断当前i2和i1的比,获取的当前明文是所在区域第i3个进入明文,根据冲突处理放到相对的位置。

假如密钥ABCGFKJ

明文是123456789

那么首先对密钥进行分析,按照ASCII对密钥字符进行排序。可以看到A排在第1位,B排在第2位,C排在第3位,因为没有DE,F排在第4位,G排在第5位,J排在第6位,K排在第7位。通过函数 place(key),根据key得到所在区域,如图4所示。

Fig.4 Zone of secret key characters图4 每个密钥字符区域

把缓冲区分为7部分,称为区域,如图5所示。这里设每个区域大小都一样,不能被整数划分的缓冲区空间放在最后。

Fig.5 Zone of each character图5 每个字符区域大小

把每个明文字符根据所在位置选择密钥的字符,得到位置,如图6所示。

Fig.6 Placement of plain text图6 把明文放到区域

密钥排序法简单,对于英文和数字加密效果不够理想,但是中文汉字数量大,可以充分发挥其算法优势。另外,对于汉字密钥,可以依照拼音或笔画等对汉字进行排序,得到密钥每个字符对应排序后所在位置,明文的第i个字符和密钥的第i1个字符相对应,分配到密钥第i1个字符所在区域。汉字密钥产生前必须有一套规则来对汉字排序,需要汉字库的支持。汉字库最简单的有按照拼音和比划排序。普通字典也可以在排序前先加密,防止攻击者依靠汉字库来猜明文所在区域。

冲突处理[6]是指当输入相同关键字时就出现了冲突,相同关键字哈希路径得到相同位置,而在加密过程把明文M放到已有明文的位置会丢失明文,不使用冲突处理可以作为摘要加密。冲突处理需要访问内存寻找一个没有冲突的位置,时间较长,如果加密一个字符需要访问冲突处理次数很多,那么效率很低。当前可用冲突处理可以是简单使用密钥来获得一个数,然后判断这个数对应位置是否冲突,如果冲突则继续步骤。而奇数环法则是申请缓冲区长度为奇数,采用步长为偶数的冲突处理方法。加密过程的冲突处理是判断当前位置已经被占用,则调用冲突处理寻找其他位置。解密过程的冲突处理是判断当前位置如果没有经过加密的字符,即空区域,则调用冲突处理进行下一个加密字符的搜索。冲突处理函数由原位置position和步长step组成。

conflict(i,position)=(position+k_i)%temp_length

解密过程的冲突处理不能出现某些位置一直访问不到,如果只出现很少量小于temp_length/(1-per)的位置,那么明文可以全部放进缓冲区。如果用户需要得到一个无冲突的方法,冲突处理可以使用奇数环法。

3.3 填补空白

填补空白把缓冲区空白部分填补随机字符,可以进一步打乱明文的持续。在填补空白之前,需要在明文后面添加后缀,用以区分明文和填补的垃圾信息,如图7所示。

Fig.7 Filling blanks图7 填补空白

后缀是区分明文和垃圾的字符串,在解密过程,通过哈希映射得到结果,从结果的末尾开始寻找后缀所在的位置,去除后缀及之后的垃圾数据,可以得到明文,故后缀的设置需要和填补的垃圾位置不存在冲突。后缀可以是固定的字符串,和密钥无关,也可以是和密钥有关的字符串,根据密钥的摘要采用MD5来得到后缀。

在加密过程中,可以通过哈希映射把垃圾填补在明文里面。先申请一个和缓冲区相同大小的空间Mtemp,利用哈希映射在Mtemp添加上temp_length-M_length个垃圾字符,然后把明文按照顺序放到Mtemp,如果位置被占用,则向下寻找没有字符的位置放入明文。解密过程则使用哈希映射找出填补垃圾所在的位置,然后去除垃圾字符得到明文。

填补空白的一个实例描述如下。

1.input temp,key

2.for i=0 to temp_length

3.if(IsNull(temp[i])

4.temp[i]=ran_char

3.4 加密字符

加密字符可以根据用户需要选择使用目前的任何一种加密算法[7-8]。通过加密字符,攻击者要得到原有的信息,通过排列只能得到一个和自己随机组合得到的一样的结果。比如将字符的unicode加上一个随机数,或对每个字符进行异或,或使用DES(data encryption standard)[9]加密算法对每个字符进行加密。例如:在只有英文大写字符的情况,Z+1=A。对每个字符异或一个数和加上一个数相同,这个数可以是根据密钥得到的,但是如果能保证源代码不被攻击者得到,加上一个固定数也是可以的。

异或操作可以让原有的数据类型发生变化,即:原本是英文,加密后超过英文的范围;原本是数字,加密后超过数字范围。另外,异或操作会导致转换字符编码出现问题,解密后得不到原文,异或操作的使用是对于不进行字符编码的加密。

字符加密算法描述如下。

1.for i=1 to temp_length

2.encryption_character(n,temp_i)

3.end for

1.encryption_character(str,key,i)

2.get type(str)up,down//获得字符的类型Unicode最大值up,最小down

3.return range(str,key[i%key.length],up,down)//range区间加法

4 实例测试

明文M:这是;

后缀h:明文;

密钥:用户。

整个加密过程如图8所示。

4.1 哈希映射对明文乱序

哈希映射包括哈希路径和冲突处理。哈希路径使用密钥相关,其中:

(1)p(K0,M0)=2

(2)p(K1,M1)=5

Fig.8 Example of Hash mapping图8 哈希映射实例

冲突处理conflict函数的作用是在原有位置加1得到新的位置。如果采用冲突处理得到的位置和原哈希路径得到位置相同,那么可能存在某些位置没有被访问到[10],这时需要更改冲突处理的方法,修改步长让冲突处理可以访问所有位置。

1.begin temp_position≠''

2.position=conflict(i,position);

3.i=i+1;

4.if position==p(k[i],M[i])then

5.change conflict step=1

6.end if

7.loop

4.2 填补空白

使用随机字符填充,让非法破解难以找到填补的字符,如图9所示。

Fig.9 Example of filling blanks图9 填补空白实例

4.3 加密字符

实际只加密明文,因为可以把填补的空白看成加密后字符,如图10所示。

Fig.10 Example of character encryption图10 字符加密实例

tempi=tempi⊕kimodk_length

对原有字符加密,填补的字符不用加密,因为是随机的,加快速度。

4.4 解密

(1)使用哈希映射得到明文位置,如图11所示。

Fig.11 Example of decryption图11 解密实例

(2)进行字符解密,如图12所示。

第0个字符位置2

第1个字符位置5

第2个字符位置2冲突位置3

第3个字符位置5冲突位置6

第4个字符位置2冲突位置3冲突位置4

第5个字符位置5冲突位置6冲突位置7

第6个字符位置2冲突位置3、4、5、6、7冲突位置8

第7个字符位置5、6、7、8冲突位置9

第8个字符 位置2 冲突 位置3、4、5、6、7、8、9 冲突 位置0

第9个字符 位置5、6、7、8、9、0 冲突 位置 1

Fig.12 Example of character decryption图12 字符解密实例

(3)去掉后缀,如图13所示。

Fig.13 Example of plain text图13 明文实例

“明文”是后缀,“明文”右边是随机字符,去掉“明文”右边得到明文。

5 安全性分析与测试

5.1 安全性分析

如果攻击者在没有密钥情况下,只获得密文和算法、源代码,依靠这些数据想通过计算得到明文是难以做到的[11]。由于本文提供的算法在随机数加密步骤中使用填补随机数所在缓冲区位置的方式,根据柯克霍夫斯原则,本文算法策略难以从密文得到明文和密钥。假设一个攻击者发送两个明文给加密算法,加密算法随机取其中一个明文进行加密,然后返回密文,这时攻击者无法判断加密算法返回的密文是哪个明文加密得到的。

本加密算法对于同一个明文、同一密钥,在不同的时间加密,同一明文也会产生不同的密文。但如果对照同一明文、同一密钥,在不同时间加密得到的密文,则可以判断出填补的字符。如果存在需要对同一明文进行多次加密的情况或同一明文在分割后存在相同字符串的情况,则建议填补空白使用密钥产生随机字符的方法。

(1)理论安全

一个加密算法是理论安全的,是指攻击者截获了无数不同明文的密文m,使用无限的时间或有限时间l,由无穷计算资源或有穷资源r进行分析得到的结果是直接猜测明文M或猜测明文中的n位[12]。假设加密算法密文m,加密算法hash_encryption(),明文M,密钥key,随机数ran,缓冲区长度length,其中m=hash_encryption(M,key,ran,length)。如果攻击者不知道有两个密文是同一个明文加密后的密文,那么他无法判断哪些是随机数位,因为攻击者不知道随机数ran所产生的数。ran根据时间产生随机数,但攻击者不知道明文加密的时间,也就不知道密文m有哪些是同一个明文加密后的密文。如果明文超过缓冲区长度,会把明文对半拆直到每个明文小于缓冲区长度。缓冲区长度length,明文数n,密文长度l=length×n大于明文长度,可以达到明文M的结果和破解结果相同的条件。

(2)计算的安全

加密算法在穷举解密时需要时间T=t×ln列举一个密钥破解密文的时间t,假设用户密钥长度固定且被攻击者知道长度l,密钥的总可能字符数为n,则哈希加密验证密钥正确需要时间如式(3)所示。

假设要验证的密钥和n大小等于缓冲区长度,则密钥解密密文需要时间t=O(2n),n等于缓冲区长度。哈希加密支持中文加密,假设常用5 000字,n=5 000,密钥长度k_length=10,得到结果T=O(2n)×35000,这个时间超过人类发展到现在的时间,因此是不可能破解的。

(3)性能

哈希加密需要的解密时间复杂度为t=O(2n),n大小等于缓冲区长度。对整个明文进行哈希映射得到位置,时间复杂度为t1=O(n),对明文进行字符加密,填补空白需要时间复杂度为t2=O(n),因此总时间复杂度为t=O(2n)。

空间复杂度为O(n),n是明文超过缓冲区长度,将明文拆为两个明文,直到每个明文都小于缓冲区长度加密的明文。

(4)加密信息有效率

信息有效率指明文长度和密文长度的比例,有效率越小,信息填充的垃圾越多,破解难度越大。对于不同明文在不超过缓冲区长度,得到的密文长度都是缓冲区长度,比例根据明文大小变化。哈希加密安全性依赖于密钥的保密,不依赖算法和源代码,时间复杂度低且加密解密速度快,需要密钥长度低,破解需要时间很长,空间复杂度比较高。

5.2 正确性测试

使用原密钥进行MD5加密,再用加密算法把密钥作为明文加密,然后用要验证的密钥对密文解密,比较要验证密钥的MD5和明文是否相同来验证密钥,解密校验密码,具体细节见3.1节所述。实验中采用双路4核服务器,用6线程运行72 h证明5 184 000条验证密钥的正确性。其中设置1/2为错误密钥,结果全部错误,1/2正确密钥,全部正确。在使用简单的汉字密码作为密钥,也是难以通过蛮力法穷举。比如:输入一个密钥“林德熙”,经过72 h计算无法破解。

5.3 强度可调节分析

本文加解密方法的最大优势是可以根据用户加密强度的实际需求进行自主调整[13-15]。具体加密强度的调节方法包括以下几种。

(1)缓冲区长度可以固定,也可以依靠密钥而变化,固定的缓冲区长度加密强度比较低,而可变长的缓冲区加密强度较高。

(2)后缀可以依靠密钥而变化,依靠密钥而变化的后缀添加方法使得加密强度更高。

(3)使用多重哈希映射和字符加密方法保证了用户加密强度自主调节。

(4)用户可以依靠密钥来决定加密字符在加密字符串中的顺序。可以根据不同密钥,先对明文字符进行字符加密,再使用哈希映射乱序,填补空白。也可以把加密字符放到哈希映射之后或填补空白之后。

5.4 性能比较

随机产生任意长字符串,随机产生1到10位密钥,对各种哈希映射在不同缓冲区中出现冲突的测试结果如表2所示。由表2可知,随机数法对密钥过度依赖,使用不同密钥结果冲突相差过大,密钥排序法能得到很好的性能。测试中密钥排序法必须使用奇数环步长为2作为冲突处理,其余所有函数使用步长为1的冲突处理。

6 结束语

本文提出了一种加密强度可自主定制与调节的加/解密策略,让用户根据自己的需求和特色轻松设计属于自己的加密算法。对于用户越来越多的账户和密码以及任何一段需要加密的数据,该方法分为3个步骤:哈希映射、空白填补、字符加密。哈希映射的作用是制作密码本,把明文根据密码本放到密文缓冲区或根据密码本把明文从密文缓冲区读取;空白填补把密文缓冲区空白的部分填上随机字符;字符加密把每个明文字符用已有字符加密算法加密。理论分析和实验测试结果均表明,本文加密算法可以有效保证用户隐私数据的安全性,在不知道密钥的情况下使用蛮力穷举法破解是难以实现的。

Table 2 Conflicts comparison in buffer with different Hash mapping functions表2 各种哈希映射在不同缓冲区中的冲突数

[1]Cormen T H,Leiserson C E,Rivest R L.Introduction to algorithms[M].Cambridge,USA:MIT Press,1990.

[2]Schneier B.Opinion:cryptanalysis of MD5 and SHA:time for a new standard[R].Computerworld,2014.

[3]Liu Fanbao.Security analysis of hash function and some applications[D].Changsha:National University of Defense Technology,2012.

[4]Sedgewick R.Algorithms in C[M].Boston,USA:Addison-Wesley Professional.1997.

[5]Coron J S,Dodis Y,Malinaud C,et al.Merkle-Damgård revisited:how to construct a hash function[C]//LNCS 3621:Proceedings of the 25th Annual International Conference on Advances in Cryptology,Santa Barbara,USA,Aug 14-18,2005.Berlin,Heidelberg:Springer,2005:430-448.

[6]Du Zhilin.Research on construction method of hash mapping[J].Computer CD Software and Applications,2014(5):126-127.

[7]Liu Jianwei,Wang Yumin.Network security:technology and experience[M].Beijing:Tsinghua Universiy Press,2005.

[8]Cui Yanrong.Design and implementation of random encryption and decryption algorithm for character type cipher[J].Computer Engineering and Design,2013,34(3):826-830.

[9]Smid M E,Branstad D K.Data encryption standard:past and future[J].Proceedings of the IEEE,1988,76(5):550-559.

[10]Feng Kaicheng.Computer cryptology:data confidentiality and security in computer networks[M].Beijing:Tsinghua Universiy Press,2003.

[11]Tan Huabin.Research on digital audio watermarking algorithm[D].Changchun:Jilin University,2004.

[12]Song Zhen.Cryptology[M].Beijing:China WaterPower Press,2002.

[13]Wang Xu,Wu Jigang,Jiang Guiyuan,et al.Fast replica placement and update strategies in tree networks[C]//Proceedings of the 15th IEEE/ACM International Symposium on Cluster,Cloud and Grid Computing,Shenzhen,China,May 4-7,2015.Piscataway,USA:IEEE,2015:915-920.

[14]Jiang Guiyuan,Wu Jigang,Sun Jizhou.Reducing the interconnection length for 3D fault-tolerant processor arrays[C]//LNCS 8630:Proceedings of the 14th International Conference on Algorithms and Architectures for Parallel Processing,Dalian,China,Aug 24-27,2014.Berlin,Heidelberg:Springer,2014:497-510.

[15]Wu Jigang,Jiang Guiyuan,Zheng Lili,et al.Algorithms for balanced graph bi-partitioning[C]//Proceedings of the 2014 International Conference on High Performance Computing and Communications,6th International Symposium on Cyberspace Safety and Security,11th International Conference on Embedded Software and Systems,Paris,2014.Piscataway,USA:IEEE,2014:185-188.

附中文参考文献:

[3]刘凡保.散列函数及若干应用的安全性分析[D].长沙:国防科学技术大学,2012.

[6]杜志林.哈希映射构造方法研究[J].计算机光盘软件与应用,2014(5):126-127.

[7]刘建伟,王育民.网络安全:技术与实践[M].北京:清华大学出版社,2005.

[8]崔艳荣.字符型密码随机加密与解密算法的设计与实现[J].计算机工程与设计,2013,34(3):826-830.

[10]冯开澄.计算机密码学:计算机网络中的数据保密与安全[M].北京:清华大学出版社,2003.

[11]谈华斌.数字音频水印算法的研究[D].长春:吉林大学,2004.

[12]宋震.密码学[M].北京:中国水利水电出版社,2002.

姜文超(1977—),男,2009年于华中科技大学获得博士学位,主要研究领域为分布式计算,云计算,系统安全等。

LIN Dexi was born in 1994.His research interests include system security and artificial intelligence,etc.

林德熙(1994—),男,主要研究领域为系统安全,人工智能等。

GUO Chumou was born in 1994.His research interests include software engineering and file system,etc.郭楚谋(1994—),男,主要研究领域为软件工程,文件系统等。

WU Jigang was born in 1963.He is a professor at Guangdong University of Technology.His research interests include high performance computing and fault-tolerant computing,etc.

武继刚(1963—),男,博士,广东工业大学教授,主要研究领域为高性能计算,容错计算等。

SUN Aobing was born in 1976.He received the Ph.D.degree from Huazhong University of Science and Technology in 2010.Now he is an associate researcher at Guangdong Electronics Industry Institute.His research interests include cloud computing and grid computing,etc.

孙傲冰(1976—),男,2010年于华中科技大学获得博士学位,现为广东电子工业研究院副研究员,主要研究领域为云计算,网格计算等。

Novel StrengthAdaptive Text EncryptionAlgorithm*

JIANG Wenchao1+,LIN Dexi1,GUO Chumou1,WU Jigang1,SUNAobing2
1.College of Computer Science,Guangdong University of Technology,Guangzhou 510006,China 2.Guangdong Electronics Industry Institute,Dongguan,Guangdong 523808,China

Users have to manage and remember more and more accounts and passwords with the application of all kinds of information systems.Designing a novel,simple,convenient,secure and adaptive encryption policy is becoming urgent requirement,using which the users can realize their own encryption algorithm.This paper proposes a novel strength adaptive encryption policy and a relevant algorithm framework.The encryption algorithm includes three sub-modules,e.g.Hash mapping,blank filling and character encryption.The Hash mapping is used to make password book,and is responsible of placing clear-text or obtaining cipher-text from the buffer according to the password book.Blank filling is used to fill some random characters in the buffer to enhance the security.Character encryption is used to encrypt the character by certain encryption algorithm that the users choose themselves.Through the encryption policy,all users can have their own and specific encryption algorithm according to the prac-tical need.Both the theory analysis and experiments prove that the encryption algorithm is flexible,convenient and secure enough.The theory analysis also proves that it is impossible to crack the password using enumeration method if there is no the correct secret key.

encryption strength adaptive;text encryption;Hash mapping

the Ph.D.degree from Huazhong University of Science and Technology in 2009.His research interests include distributed computing,cloud computing and system security,etc.

2016-07, Accepted 2016-10.

A

TP316.2

+Corresponding author:E-mail:jiangwenchao@gdut.edu.cn

JIANG Wenchao,LIN Dexi,GUO Chumou,et al.Novel strength adaptive text encryption algorithm.Journal of Frontiers of Computer Science and Technology,2017,11(9):1439-1450.

10.3778/j.issn.1673-9418.1607033

*The National Science and Technology Support Program of China under Grant No.2015BAK19B03(国家科技支撑计划);the Natural Science Foundation of Guangdong Province under Grant No.2016A030313703(广东省自然科学基金);the Science and Technology Program of Guangdong Province under Grant Nos.2015B010109001,2015B090901051,2016B030305002(广东省科技计划项目);the Science and Technology Program of Guangzhou under Grant No.2012Y2-00040(广州市科技计划);the Innovative Research Team Program of Guangdong Province under Grant No.201001D0104726115(广东省创新团队项目).

CNKI网络优先出版: 2016-10-31, http://www.cnki.net/kcms/detail/11.5602.TP.20161031.1650.006.html

猜你喜欢
明文加密算法缓冲区
加密文档排序中保序加密算法的最优化选取
DES加密算法的实现
基于整数矩阵乘法的图像加密算法
串行连续生产线的可用度与缓冲库存控制研究*
基于ARC的闪存数据库缓冲区算法①
奇怪的处罚
奇怪的处罚
奇怪的处罚
初涉缓冲区
本期导读