-- 作者:waumo
-- 发布时间:3/27/2006 5:56:00 PM
-- 人类还没有探索过的密码学新领域
[color=#FF0000][color=#FF6600]人类还没有探索过的密码学新领域[/color][/color] 河北工业大学计算机科学与软件学院 武金木,武优西,刘依 摘要 本文简单介绍了被普遍认为是密码界真理的一些现状,根据我们研制排列码的实践提出了我们的一些新的见解,以供科学界进行验证。 关键字 密码学 分组密码 流密码 排列码 信息论 信息安全 1密码学的现状 1.1 当前对密码的分类 根据密钥的特点,Simmons[1]将密码体制分为对称和非对称密码体制两种。对称密码体制又称单钥或私钥或传统密码体制,非对称密码体制又称双钥或公钥密码体制。在私钥密码体制中,加密密钥和解密密钥是一样的或彼此之间容易相互确定。按加密方式又可将私钥密码体制分为流密码和分组密码两种。在流密码中,将明文消息按字符逐位地加密。在分组密码中,将明文消息分组(每组含有多个字符),逐组地进行加密。在公钥密码体制中,加密密钥和解密密钥不同,从一个难于推出另一个,可将加密能力和解密能力分开。当前对分组密码的概念是模糊的,一个字符是8比特,这是分组密码还是流密码?许多初学者无法区分分组密码和流密码。由此把人们的研究引入到研究分组密码,密钥一定不能改变,因此分析分组密码仅分析一个分组就可以,因为整个文件的加密强度是一个分组的加密强度。而流密码每次加密一个单位(一个单位或一个比特),每个单位的加密强度等于1,流密码的加密强度取决于对密钥流变化规律的隐藏。 1.2 当前对信息空间的认识 由n位2进制数字组成的信息空间的大小是2^n[2]。因为他的真值表是2^n,或者说他的全排列个数2^n。这里忽略了n位2进制数字的位置信息。因此人们研究的信息空间不能越过2^n。一见到超过2^n,不用想就是错的,研究超过2^n的信息空间就好象发明了永动机一样不可思议。 1.3 当前加密方法只能使用一对一的影射 现在所见到的所有的除我们以外所有的书籍和论文,以及文字资料,都认为加密不能有两个以上的明文加密成同一密文,也不能有两个以上的密文解密成同一明文。因为若有两个明文对应同一个密文,那这个密文变成哪个明文无法确定[7],因此此加密没有实用价值。人们只能在一对一的影射领域内研究问题。 1.4 分组密码的加密强度只能靠增加加密强度来实现。 DES被攻破之后,人们认为只有加大n,才能解决加密强度问题。因此美国推出AES时主要指标之一是n=128,认为n<128是不可靠的。加密强度不能大于2^n。 2.排列码简介 排列码加密方法[3],[4]让我们获得了中国发明专利,专利号为ZL 99 1 07969.8。 用排列码方法我们注册了7项软件,登记号为2005SR09926、2005SR09927、2005SR10917、2005SR10918、2005SR12749、2005SR12750、2005SR12751 。 2.1 n=4的排列码演示程序设计说明:[6] ①排列码表见表1,这样的表共有24!个。 我们任意地建立其中的256个。 表中第5行4 0 3 1 2表示当Key=4时,明文第0位的2进制数送第0位做密文, 明文第1位的2进制数送第3位做密文, 明文第2位的2进制数送第1位做密文, 明文第3位的2进制数送第2位做密文。 为了节省存储空间,0用2进制数00表示 , 1用2进制数01表示 ,2用2进制数10表示 , 3用2进制数11表示, Key 用存储地址来表示。这样1个排列码表占24个字节。 表1 排列码表 Key 0 1 2 3 0 0 1 2 3 1 1 2 3 0 2 2 3 0 1 3 3 0 1 2 4 0 3 1 2 5 0 3 2 1 …….. 23 3 2 1 0 ②关于密钥的设计,用1个字节作整数,它表示的范围是0~255。根据他的值就可以确定一个排列码表。 在这个排列码表中,再进行模24运算。得到一个0~23的整数,恰好对应排列码表中的Key值,确定bit的交换顺序。 ③关于求非的运算,为了进一步增加破密的难度,我们在交换顺序的同时,在某些交换路径上求反。因为n=4,0点有可能有4个路径,1、2、3点都有可能有4个路径,所以可能的路径总数共有16条,每一bit 对应一条路径,使用16bit或者说2个字节控制哪个路径上是否加非。用0表示不加非,用1表示加非,或者反之。 ④综合以上密钥的长度为24bit。 ⑤为了进一步增加加密强度,第二个分组的密钥选取,密钥是在原密钥的基础上加上前一个密钥的一定规律的变换,只要加密密钥和解密密钥的规律相同则解密不成问题,但密码分析者虽然可以从程序知道密钥是如何变换的,因它的原始密钥的输入密码分析者是不知道的,因此知道的仅是密钥的一部分;密码设计这每下一个分组再加3个字节的明文,输入都是已知,所以方法可行。密码分析者相当于用未知数求未知数,因此无规律可寻。 ⑥这样一来每个分组的密钥都是一个伪随机数。但必定有明文的特征。可是产生的密文随机性特别强。 ⑦以上过程连续做多遍,每遍都用不同的24bit的密钥。 ⑧为了提高速度,并不是一遍加密结束后再进行下一遍,而是一个分组连续进行多遍加密,这种做法理论上进行4遍,按目前的密码分析水平加密强度可能已经达到2^96,远远超过了DES,几乎是目前破密难度的极限。 因为加密强度是关于n的函数,f(n)的常数为1。所以当n稍微大一点的时候, 函数的值都相当大,可以说是2的n次方的高阶无穷大。如果n=4你都不能破密,那想破密n=64还不是天方夜谈。 这里我们给出的是查表法;实际上128! 排列码表无法用查表法实现,但是可以用计算法实现。使用计算法n可以是任意的正整数。 2.2 n=3的排列码的一些结果 因为加密强度是关于n的函数,为了读者体会加密强度,验证较小的n,比验证较大的n要容易的多,所以我们给出n=3时,密钥是16进制的000000时,排列码程序仅仅对每个字节的最低3位进行运算的结果。为了是感兴趣的人能验证我们的数据,产生此结果的程序我们交给了杂志社。下面是说明问题的数据。 ① 明文是:00000000000000000000000000000000000000000000000000000000000000000 密文是:76226620234204620644100540021061241605034252250014020562154521061 ② 密文是:0000000000000000000000000000000000000000000000000000000000000000 明文是:7746711631743661714140713076565005510653223736345310704360555105 ③ 明文是:0123456701234567012345670123456701234567012345670123456701234567 密文是:7622662023420462064410054002106124160503425225001402056215452106 ④ 密文是:0123456701234567012345670123456701234567012345670123456701234567 明文是:7315214301652164722246106370602715370027570327745411544336777216 3.我们的新发现 3.1 分组流密码 对于分组密码,我们见到的资料基本上都只强调分组(每组含有多个字符),逐组地进行加密,有的明确指出了用同一个密钥进行加密。而排列码每个分组都更换密钥,按这个原则应该属于流密码;但是我们见到的所有流密码都是可以很容易从明文、密文对推出密钥,不存在同一明文、密文对有多个密钥对应的情况,因此研究流密码都引导到研究伪随机函数发生器的轨道上来了。检测流密码的加密强度就是检测伪随机函数的随机特性。如果随机特性不好就很容易破密;排列码根据分组密码多对多的路径概念设计出来,分析每个分组只能分析出密钥的几个比特,而下一个分组需要用分组密码的分析法重新分析,不能使用流密码的分析方法。所以排列码是以往分类中没有包括的分组流密码,因此人类史上没有研究过。 3.2 信息的下标是客观存在的 对于信息00000000000000…………0B,人们一直见到的就是一串0,因此才得出1.2节 当前对信息空间的认识。而客观世界可以把这一串0分成j个分组,每个分组有i个比特。这才是客观世界的真实表示。也就是每个比特的0都可以带上两个下标,一个下标表示在组内它是第几比特,另一个下标则表示它是第几个分组。这才是分组密码的完整客观的表示。 3.3 多对多的路径解决了一对一的影射不能解决的问题 鉴于当前对于一串0不带下标,只能导出现在的一对一的影射,加密强度也就不可能跨越2^n,但是有了2.2对客观世界的描述,比如有0000,都给他们带上下标他们的全排列个数就是24,而不是1了。而2.1编程方法就是可以理解的了,带下标的4个0交换位置后是不同的表示,交换后做密文,我们可以把再在交换回来,我们可以用Key那个整数记录怎么交换的,这个交换的过程我们称做路径。有了2.2的表示我们就可以把0~7变成0,而且能把0再变回0~7,解决了1.3人们用一对一的影射不能解决的问题。由2.2的①可见明文0可以加密成密文0~7,密文0~7都可以解密成0,由2.2的②可见明文0~7都可以加密成密文0,密文0可以解密成明文0~7。 3.4 排列码使差分分析法失效 因为差分分析法是针对一对一的影射设计的,现在每一个明文密文对有多个密钥,差分分析法忽略了下标这个信息,只能分析出多个密钥中的一个密钥的一部分信息对得到整个密钥的信息没有帮助,因此排列码使差分分析法失效。 3.5 排列码使线性分析法失效 同样道理,因为线性分析法是针对一对一的影射设计的,现在每一个明文密文对有多个密钥,线性分析法忽略了下标这个信息,只能分析出多个密钥中的一个密钥的一部分信息对得到整个密钥的信息没有帮助,因此排列码使线性分析法失效。 3.6 排列码使字典分析法失效 由2.2①可见明文0~7都可以加密成0,由2.2②可见密文0~7都可以解密成0。0~7即可以变成0,也可以变所有的8个值,没有密钥配合,明文密文就没有对应关系,因此即使有无限的资源排列码也使字典分析法失效。 3.7 排列码使流密码分析法失效 我们给出的编程方法并没有使用真正的伪随机数,密钥的变化规律全部公开对排列码破解没有任何帮助,而流密码的分析方法都是检测伪随机数的随机特性的,因此排列码和流密码是毫不相干的事。 3.8 排列码使唯密文攻击失效 一串密文0可以由2^96个密钥确定2^96个不同的明文,和密文0的个数无关,仅和密钥有关,因此排列码使唯密文攻击失效。 同样一串1,一串2都可以是密文。 3.9 排列码使已知明文攻击失效 之所以有已知明文攻击,那是现实中很容易找到已知明文攻击事例[5],但是对于排列码就不存在了。比如2.2③明文给出了8遍,明密文对给出的信息仍然使你很难攻击。 3.10 排列码使Kerckhoffs原则必须修改 因为排列码每个分组都要换一个算法,不同的分组使用不同的算法,使用的算法和密钥相关。而且算法有(n!)!个。当n>6的时候,算法的个数就已经超过了2的500次方,任何人是不可能依靠弄明白这么多算法来提高密码分析的能力的。因此Kerckhoffs原则必须修改,它原来仅仅对密码设计者提出密码的安全性不能建立在密码算法的保密上。但另一方面密码分析者分析密码也不能建立在对密码算法的公开上。 3.11 排列码可以在很小的n的情况下获得牢不可破的密码 就对称密码体制来说,我们几乎永远不会用到比512比特更长的密钥[8],这是因为:即使假设宇宙中每个原子(约有2^300个)都是计算机,并且均可每秒搜索2^100个密钥,要搜索512比特也需10^51年,根据宇宙大爆炸理论,宇宙诞生至今也不超过10^10年。而排列码当n=22时,密钥的长度就远远超过了512比特。况且我们如果用换算法做密钥,(5!)!就已经远远大于2^512。也就是说n=5的时候,排列码就可以做成牢不可破。n小了的好处是容易提高加密速度,且使用很少的逻辑元件就可以实现。比如n=4的排列码加密芯片,加密每个分组仅仅7ns。 3结论 任何信息都可以用2进制信息来表示,2进制信息总是按一定顺序出现才有意义,有一定顺序的2进制信息,用两个下表来表示它的顺序,不考虑下表的信息量仅仅是有下标信息量的沧海之一滴。目前的密码学仅仅研究和探索了不考虑下标的信息空间,若进入带下标的信息空间,那么密码学的许多概念需要改变,密码编码学可以使加密强度更高,加密速度更快,加密更简洁,密码分析法需要更新,相关的新的数学领域需要建立。 参考文献 [1]Simmons,G.J.,Symmetric and Asymmetric Encryption Computing Surveys, Vol.11, No.4, Dec.1979, 305-330. [2]冯登国,裴定一.密码学导引[M].北京:科学出版社,1999. 292. [3]武金木,武优西.建立分组密码加密技术的新概念[J].河北工业大学学报,2000,(1):78-81. [4]武金木,武优西.排列码加密解密方法及其排列码加密解密器中国发明专利, CN99107969.8,2003,3. [5]张焕国,刘玉珍.密码学引论.[M].武汉大学出版社,2003.11. [6]武优西,武金木,洪流涛等.分组密码加密解密的方法及其加密解密器,中国发明专利, CN200510013807.X,2005,11. [7]黄月江,龚奇敏.信息安全与保密――现代战争的信息卫士[M].国防工业出版社,1999.19. [8]胡向东,魏琴芳.应用密码学教程[M].电子工业出版社,2005,61
|