专利名称:同音替代对称加密的制作方法
技术领域:
本发明涉及密码学,更具体地,涉及编码数据生成或转换。
背景技术:
加密技术已经广泛地用于在网络上发送数据以提供信息安全性。 已经推荐了用于加密信息的若干不同技术和算法,当前在产业中广泛 使用这些技术中的多种技术进行加密。可以将加密技术分类成对称密 钥加密或公共密钥加密。选择特定加密技术和算法的主要标准是由该 技术提供的安全等级、整体性能和执行方便性。
对称密钥加密涉及使用相同加密密钥加密和解密所关注的数据 消息。典型地,可以根据加密密钥计算出解密密钥,反之亦然。通常 可以非常快速地电子执行用于对称密钥加密的算法。然而,加密密钥 副本应当保密或者安全地保存在加密传输的每端上。 一些最公知的对 称密钥数据加密技术是简单替代密码、同音替代密码、多码替代密码、 互换密码、密码合成和流密码。
发明内容
根据本发明的一个实施例, 一种对称密钥数据加密方法可以涉及 使用导致增强同音替代的转换的合成,其中字符映射根据消息文本内 的字符序列而改变。在执行该方法中,首先生成加密密钥。随后,在 数据上执行多码替代,这涉及"异或,,(例如布尔逻辑异或运算/计算) 原始数据和所生成的密钥。接着,将存储格式从高字节开头
(big-endian)改变成低字节开头(little-endian),或者反之。最后, 在将数据放置在一个或多个方阵(square matrix)内之后,执行増强 同音替代(homophonic substitution )。现有的同音替代可以将预替代域中的每个元素映射成后替代共
域中的分离子集。本发明的增强同音替代可以是对合(involution), 以便可以在共域(co-domain)内将元素映射到的子集是整个共域本 身。因此,可以将该域中的任意给定元素映射到共域的任意元素。此 外,域中的元素映射到的共域中的特定元素随着在数据块内的字符或 其它数据元素的顺序和选定的密钥而改变。
本发明一个实施例的特征可以在于一种用于加密多个数据元素 的同音替代方法,其中将每个数据元素从预替代域映射到后替代共域 中的多个元素之一,和其中每个数据元素可映射到任一共域元素。为 了将数据元素映射到共域元素,使用另 一单元中的数据交换在每个方 阵内每个单元中的一部分数据元素。具体而言,在对角线上跨矩阵借 助另一个单元中的四位字节交换一个单元中的四个比特的(这些比特
不必是连续的)一个四位字节。根据对角交换公式选择特定的单元对。 根据基于加密密钥的值、并且取决于预替代域中数据元素顺序针对每 一交换改变的线性等式,计算将要交换的比特位置。
根据本发明的附加实施例,该数据加密方法可以涉及使用 一个或 多个加密密钥对数据执行多码(polyalphabetic)替代操作,随后改变 数据的存储格式(可选择地从高字节开头格式到低字节开头格式或者 反之)。随后,可以对数据执行同音替代操作,例如上述的增强同音 替代操作,或者另一种同音替代操作。通过级联一个或多个中间密钥 和初始密钥,可以生成一个或多个加密密钥,其中中间密钥的数量基 于密钥深度,并且中间密钥是从初始密钥计算的。
通过参考附图,阅读非限制实施例的下述描述,将更好地理解本 发明,在附图中
图1是图示根据本发明一个实施例的对称密钥数据加密方法的 步骤的流程图2是该方法的示意图;图3是标准的十六进制到二进制到十进制的转换图; 图4是图示用于生成加密密钥的步骤的流程图; 图5是图示用于加密数据的步骤的流程图;和 图6是在方阵内排列中间密文的示意图。
具体实施例方式
参考图1至图6,本发明的实施例涉及一种使用对称密钥算法加 密数据的方法。典型地,将把本方法实施为用于使用计算机或其它电 子设备执行本方法的计算机编程代码。为了加密所关注的数据,在步 骤100访问包含"明文"数据12 (指将要加密的原始数据)的文件10。 例如,该文件可以是包含计算机可读格式的数据,例如二进制格式的 数据等,的电子文件或记录。在步骤102,生成一个或多个加密密钥 14以在加密明文数据12中使用。这可以在访问数据文件IO之前执行。 随后,在步骤104,执行多码替代,其涉及"异或"16 (例如布尔逻辑 异或计算/运算,也称作模2相加)数据12与所生成的加密密钥14 以生成包含中间密文20的记录、文件或其它数据阵列18。换句话说, 中间密文20=明文数据12 加密密钥14。接着,在步骤106,将具有 中间密文20的文件18的存储格式从高字节开头改变成低字节开头, 或者反之。这产生包含中间密文20、但是具有重新排列的存储格式/ 顺序的修正文件或数据阵列22。(该新文件22可以占用与原始文件 18相同的存储空间。)最后,在步骤108执行中间密文20的增强同 音替代以生成"最后的,,完整加密密文24,可以将其存储在文件、记录 或数据阵列26内。
根据两个参数,用于密钥生成过程的"最小深度"和初始密钥,生 成加密密钥14。举例来说,假定最小深度为2,初始密钥为十六进制 0xCA8E。(在图3中图示用于在十六进制、二进制和十进制之间转 换的标准表格。)根据图4所示的步骤,使用该初始密钥生成该组加 密密钥14。典型地,根据给定的例子,初始密钥将对应于两个字节的 数据,例如四位十六进制数或十六位二进制数。首先,在步骤IIO,用二进制格式表示该初始密钥。例如,对于 上面给定的初始密钥(CA8E ) , 二进制表示是1100 1010 1000 1110。 接着,在步骤112,确定二进制表示初始密钥内每个四位字节("四位 字节"是四个比特)的十进制等价数。因而,四位字节1=1100=>12; 四位字节2=1010=>10;四位字节3=1000=>8;和四位字节4=1110=>4。 接着,在步骤114,计算四位字节1和四位字节4的乘积,例如 12*14=168。随后,在步骤116,分别对后两个数字执行模8操作(6 模8-6)和(8模8 - 0 )。如应当理解的,将模8操作("a,,模"b,^"n") 定义为计算"a,,除以"b,,的整数余数。因而,(6模8)具有整数余数6, 和(8模8)具有余数0,即8/8=1,余数O。
为了计算所需要的密钥生成深度,在步骤118,计算四位字节2 和四位字节3的乘积,例如10.8=80。随后,在步骤120,对乘积执 行模2操作,例如(80模2=0)。再次,80/2=40,余数O。随后,在 步骤122,将初始选择的最小密钥深度,例如2,添加给这个值。在 当前的例子中,这产生所需要的密钥生成深度2 (0+2=2)。总之
所需要的深度=最小深度+ ((四位字节一2—十进制*四位字节一3— 十进制)模2)。
如果已经为了计算所需要的密钥生成深度执行步骤118-122,如 在步骤123中确定的,该算法可以直接前进到步骤124。
继续地,在步骤124,使用在步骤116中获得的值(例如6和0 ), 如果在步骤116中获得的数值乘积是偶数,则将四位字节1和四位字 节2在一起向右旋转六次。反之,将它们向左旋转六次。在任一情况 下,旋转程度等于在步骤116中获得的第一值,例如6。类似地,根 据可能的情况,将四位字节3和4向左或向右旋转到等于在步骤116 中获得的第二值的程度,例如0。因而,在该例子中,不旋转四位字 节3和4,因为在步骤116中获得的第二值是O。在当前的例子中, 在旋转之后,将初始密钥0xCA8E转换为0x2B8E。 0x2B8E是"l级,, 中间密钥。在步骤125,根据所需要的密钥深度,确定是否已经计算 出全部所需的中间密钥。例如,如果所需要的深度是3,则计算三个中间密钥。通过对前一中间密钥重复该处理,生成其它中间密钥。在
当前的例子中,因为所需要的深度是2,对1级密钥,例如0x2B8E, 重复步骤112、 114、 116和124以获得"2级,,中间密钥,在该例子中 将是0xCA8E。
根据其标准含义,如本领域技术人员公知的,术语"向右旋转,, 和"向左旋转,,是指将二进制数(在这种情况下)向左或向右移位,但 是将移位数字"环绕"返回该数的前端或后端。如果将二进制数向右旋 转一个位置,则将最低有效数(最右数)移至最高有效位置(最左位 置)。类似地,如果将二进制数向左旋转一个位置,将最高有效数(最 左数)移至最低有效位置(最右位置)。例如,将二进制数10010111 向右旋转两个位置生成11100101。将该数向左旋转一个位置生成 00101111。
一旦计算出中间密钥,则通过级联中间密钥和初始密钥的四位字
节,在步骤126获得最后的加密密钥组14。级联顺序是
a) 2级密钥的四位字节1和2
b) l级密钥的四位字节l和2
c) 初始密钥的四位字节1和2
d) 初始密钥的四位字节3和4
e) 2级密钥的四位字节3和4
f) l级密钥的四位字节3和4。
在假定的例子中,最后的密钥将是OxCA、 0x2B、 OxCA、 0x8E、 0x8E和0x8E。如果存在附加中间密钥,将使用其以类似方式生成最 后的密钥,例如a-d)分别地,3-1级密钥和初始密钥的四位字节1和 2; e-h)分别地,初始密钥和3-1级密钥的四位字节3和4。
参见图5,在该数据加密方法中的随后步骤顺序涉及使用在步骤 102 (图4)中生成的密钥14的多码替换(图1中的步骤104)。在 步骤130,如果需要,使用二进制等价数表示将要加密的数据12 (例 如文本等)。例如,可以将文本转换称ASCII格式,其中每个键盘字 符具有标准的指定十六进制等价数,例如在ASCII中,字母"b"具有十六进制值62,分号具有十六进制值3B。在步骤132,为了多码替 换,将二进制的每个数据字符按顺序逐个与加密密钥14异或。具体 而言,将第一数据字节与第一密钥字节异或。随后,将下一个数据字 节与下一个密钥字节异或,该处理以循环队列方式继续,即一旦达到
密钥的最后一个字节,该处理从开始继续。根据其标准定义,如果仅 输入之一为真,则异或功能16返回真值(1);如果两者都为真或者 都不为真,则返回假值(O)。因而,0XOR0-0; 1XOR1=0; 1 XOR 0 =1;和0 XOR 1 =1。因此,在将异或功能应用于小写字母"b", ASCII 十六进制值62 (二进制01100010)时,所获得的中间密文20将是62 XOR CA=>01100001 XOR 11001010 = 10101011。如果下一个数据字 符是分号,则所获得的中间密文20将是3BXOR2B。
典型地,将在步骤132中计算出的中间密文20存储在临时存储 器或存储装置18内。在步骤134 (图1中的步骤106),根据一开始 如何存储密文20,从高字节开头格式到低字节开头格式或者反之,反 转中间密文20的存储格式。"高字节开头"和"低字节开头"是指在多 字节数据类型中哪些字节是最高有效位,并描述字节序列在计算机存 储器内存储的顺序。在高字节开头系统中,将序列中的最高有效值存 储在最低存储地址上(例如第一)。在低字节开头系统中,首先存储 序列中的最低有效值。因此,对于二进制数1001 0001 0101 1111:
高字节开头/低字节开头
地址0: 1001/1111
地址1: 0001/0101
地址2: 0101/0001
地址3: 1111/1001
在步骤136,将中间密文20存储在一个或多个方阵28。如果"L" 是在块内将要编码的文本的长度,将方阵大小"J,,选择成最高可能的 "j^丄",以{更J"2,"(1,2,3,…7V)。换句话i兌,因为I是整数, J-1,4,9,16,…N2,其中将J限制为最大值L。可替代地,可以进一步 使方阵的大小取决于初始密钥。为了根据初始密钥选择矩阵大小,计算初始密钥的最高有效字节和最低有效字节的乘积"P"。将矩阵大小选择为J二(2 + (尸mod(/-2)))2,/e(l,2,3,…A0 。
剩余字符(L-J)也设置在一个或多个方阵内。将用于剩余字符(L-J )的方阵大小"K,,选择为最高可能的"K"i:-J)",以便
《=M2,Me (1,2,3,... TV)。如果((L-J ) <4 ),则在执行异或运算之后,将最后的(L-J)字节放置在方阵内的恰好在这些最后(L-J)字节之
前编码的那些字符之前。
图6图示对于30字符数据块,L=30,如何将数据设置在方阵内。
满足J"和J〃2,/e(I,2,3,.JV)的最大"J"将是25。因而,用于该数据的第一矩阵将是5x5方阵28a。剩余五个字符(L-J-30-25-5 )将排列在2x2矩阵28b内。因为五个字符不能放置在2x2矩阵内,将留下一个剩余字符28c,将其放置在方阵28b之前。如所指示的,方阵将包括划分成8比特数据元素30等的中间密文。(再次,数据元素是指数据的特定片段、串或组。)
增强同音替代是加密方法的最后步骤(图1中的步骤108), —般来说,同音替代涉及将数据元素从预替代域(在此,方阵28内的中间密文20)映射到多个共域元素,例如密码符号。为了执行同音替代,对于每个矩阵28,跨越该矩阵28的对角线,交换该矩阵28内每个单元中数据元素30中的四位字节(四个比特)。将要交换的特定四位字节的选择基于y-mx形式的线性等式(是指定义和图示两个变量之间直线关系的双变量等式)。因为从字符到字符将"x"递增一正数,针对块内的每个字符交换的四位字节也改变,从而产生增强同音替代。在等式y-mx中,在步骤138,根据下述等式,从在密钥生成步骤(图4)内生成的最后密钥14确定出"m"的值(直线斜率)、x的开始值和x的增量
m的值=第一密钥/最后一个密钥
x的初始值=(第一密钥*最后一个密钥)模10
x的增量- (第二密钥)模10
如果最后一个密钥具有数值零,则采用4作为最后一个密钥的缺省值。在这种情况下,m-第一密钥/4。对于上面计算出的示例最后密钥m=0xCA/0x8E=202/142=1.4x的初始值=(202'142)模10=4乂的增量=43模10=3
在更一般的含义上,用于选择将要交换的特定四位字节的线性等式的形式可以是y-mx+b,其中"b"是常数。如应当理解的,上面给出的线性等式y-mx具有b值0。可以将不同数值用于"b",但是因为它是常数偏移,将不影响整体加密结果。
在位置"a[i[j,,和a[n-l-i[n-l-j处的数据元素之间跨越矩阵对角交换四位字节,其中
矩阵大小-(nxn)
0^"(( /2)-1)0".""-1)
因而,关于图6所示的矩阵28a:n=5
0化1.5 (舍入为2)
a[i川与a[4-i[4-j交换:
a(0)(0)—a(4)(4) ; a(0)(1)—a(4)(3) ; a(0)(2)—a(4)(2);a(0)(3)—a(4)(l); a(0)(4)—a(4)(0)
a(1)(0)—a(3)(4) ; a(1)(1)—a(3)(3) ; a(1)(2)—a(3)(2);a(1)(3)—a(3)(l); a(1)(4)—a(3)(0)
a(2)(0)—a(2)(4); a(2)(1)—a(2)(3); a(2)(2)—a(2)(2)
如应当理解的,由a[i[j]和a[n-l-i[n-l-j定义的每对方阵单元形成"排它对,,,由此意味着在每单元中的一部分数据元素与一个和仅一个其它单元中的一部分交换。
用于确定将在数据元素之间交换的四位字节的具体步骤如下。首先,在步骤140,根据m的计算值和x的初始值,从线性等式y-mx计算y值。在步骤142,根据yl-(7-(y mod 8))计算"yl"值,其中yl是需要交换的四位字节的开始比特。在步骤144,开始于yl,交换a[i[j内的四个比特与a[n-l-in-l-j内的对应比特。交换的比特位置将是yl、 ( (yl+7) mod 8) 、 ( ( yl+6 ) mod 8 )和((yl+5 ) mod 8 )。随后,在步骤146,将x值递增增量值,例如在上面给出的例子中,增量值是三。继续地,为每个"i",如在步骤147中确定的,和为每个矩阵,重复步骤140-146。以这种方式,将明文数据12加密成最终的密文24,如在步骤148,可以将其存储在文件26内。随后,可以发送和随后解密该文件26。
如上文指出的,现有的同音替代将预替代域中的每个元素映射到后替代共域中的分离子集。举例来说,根据一种现有方法,将字母表内的每个字母映射到排它地与该字母关联的多个符号之一 (共域元素),其中符号数量基于该字母在所关注的语言中的频率。例如
"A,,映射到3、 4、 12、 19、 23、 25、 32"B"映射到:5、 14、 20"C,,映射到1、 24、 34等等。
在此,例如"A,,是在包括A、 B、 C.......的预替代域中的元素。
后替代共域包括所有的数字符号1、 3、 4、 5、 12、 14、等等。符号5、14和20是B的共域的分离子集,其中"分离"(disjoint)是指没有子集具有公共符号,以便每个符号排它地与其对应字母关联。根据本发明的增强同音替代的处理,可以将预替代域中的每个数据元素(例如在交换之前的矩阵28内的数据元素30)映射到后替代共域中的任一元素(例如在已经进行交换之后,在矩阵内的数据元素)。例如,可以将预替代(交换前)方阵28a内的8比特数映射成共域中的任一其它8比特数,其中共域包括所有256个可能的8比特数(包括零)。因而,对于每个元素,在共域中可以将元素映射到的子集是整个共域本身,从而提供用于给定共域的最大可能子集。此外,域中的元素映射到的共域中的特定元素随着数据块中字符的顺序和选定密钥而改变。
为了解密,如下所述,以相反顺序执行上述加密步骤。首先,以
与上文参考图5描述的相反顺序,"重新交换"方阵内的四位字节。在重新交换四位字节之前,计算在方阵块的块中设置字符之后留下的最后若干字符"R"(例如在图6内的28c)。如果"R,,小于四,则互换最后"R"个字符与最后一个方阵的前"R"个字符。随后,在此从高字节开头到低字节开头格式或者反之反转存储格式。最后,使用如上所述的异或运算和最后密钥执行多码替代。
如上文指出的,根据本发明的用于对称密钥数据加密的方法使用转换组合。用于同音替代的对合具有使用给定共域的最大可能子集来替代字符的优点。该转换具有动态的附加优点,意味着将任一给定字符映射到共域中的元素在消息文本内的不同位置上不同,从而增强该加密技术的安全性。
使用可由计算机或其它电子设备执行的指令,如在诸如光盘、固定盘或集成电路等计算机可读介质(未图示)上存储的,可以执行本发明的方法。
因为可以在对称密钥数据加密的上述方法中进行某些改变,而不脱离在此所述的本发明的精神和范围,应当将上文描述或者附图所示的全部主题仅解释为示例,其说明在此的创造性概念,而不应当构建为限制本发明。
权利要求
1. 一种加密多个数据元素的方法,所述方法包括步骤将每个数据元素从一个域映射到多个共域元素之一,其中每个数据元素可映射到任一共域元素。
2. 权利要求l的方法,其中数据元素映射到的共域元素随着该域中数据元素的顺序而改变;和映射数据元素的步骤包括在排它对中相互交换数据元素的各部分。
3. 权利要求2的方法,进一步包括步骤使用随着每次交换改变的线性等式计算将要交换的数据元素部 分,其中每个数据元素是长于四个比特的二进制数,并且用于交换的 每个数据元素部分是四个比特的四位字节,所述四个比特是连续或不 连续的;生成一个或多个密钥;和根据一个或多个密钥对数据元素执行多码替代操作,其中该线性 等式至少部分地基于至少一个密钥。
4. 权利要求3的方法,还包括步骤将数据元素设置在至少一个方阵内;和 计算要跨越至少一个方阵的对角交换的排它对。
5. —种加密数据的方法,包括步骤使用至少一个密钥对数据执行多码替代操作以生成第一组加密数据;改变第一组加密数据的存储格式以生成第二组加密数据;和 对第二组加密数据执行同音替代操作。
6. 权利要求5的方法,还包括步骤在执行同音替代操作的步骤之前,在至少一个方阵内存储第二组 加密数据,其中在该至少一个方阵中的每个单元包括来自第二组加密数据的数据元素。
7. 权利要求5的方法,包括步骤 生成至少一个密钥; 计算所需要的密钥深度;从初始密钥计算一个或多个中间密钥,中间密钥数量对应于所需 要的密钥深度;和级联一个或多个中间密钥和初始密钥以生成至少一个密钥。
8. 权利要求5的方法,其中执行多码替代操作的步骤包括异或 该数据与至少一个密钥。
9. 权利要求8的方法,其中将该数据初始存储成高字节开头格式或低字节开头格式;和 改变第 一组加密数据存储格式的步骤包括根据初始数据存储格式从高字节开头格式改变成低字节开头格式或者反之。
10. 权利要求9的方法,包括在执行同音替代操作的步骤之前,在至少一个方阵内存储第二组 加密数据,在该至少一个方阵内的每个单元包括来自第二组加密数据 的数据元素;其中执行同音替代操作的步骤包括跨越至少一个方阵的对角线 在排它对中相互交换数据元素的各部分,并使用随着每次交换改变的 线性等式计算将要交换的数据元素部分。
全文摘要
一种对称密钥加密方法涉及使用转换组合,产生增强同音替代,其中字符映射根据消息文本内的字符顺序而改变。在执行该方法时,首先生成加密密钥。随后,执行多码替代,这涉及异或(例如布尔逻辑异或操作/计算)明文数据元素与所生成的密钥。接着,从高字节开头到低字节开头或者反之,改变存储格式,并将数据存储在一个或多个方阵内。最后,执行增强同音替代,意味着对于每个元素,在共域中该元素可映射到的子集是整个共域本身,从而提供用于给定共域的最大可能子集。换句话说,可以将在该域中的任意给定元素映射到共域的任意元素。
文档编号H04L9/06GK101461173SQ200680027168
公开日2009年6月17日 申请日期2006年7月17日 优先权日2005年7月28日
发明者杰亚迪普·班特沃 申请人:朗迅科技公司