IDEA加密解密算法的设计与实现策略探究
魏革
摘要:随着社会不断的进步和发展,网络的应用越来越广泛,如何解决网络安全问题显得日益重要。解决网络安全问题的关键就是信息和数据传输的安全性,而IDEA加密解密算法在保证信息传输安全性方面起着重要的作用,因此,文章将简单介绍密码学的基础知识,并对IDEA加密解密算法进行概述,主要研究了IDEA加密解密算法设计一些改进的建议和计算方法,使得该算法可以更加有效地运用在生活中,提高数据传输的安全性,取得该算法的经济效益和社会效益。
关键词:IDEA;加密解密;改进
国际数据加密算法IDEA(International DataEncryption Algorithm)密钥长度128位,密钥空间是2128,属于对称加密算法的一种,该算法具有保密性强、加密速度快的特点。1990年,曾被瑞士联邦技术学院的来学嘉X.J.Lai和Massey建议称为PES,1992年Lai和Massey提高了该算法的抗差分分析能力,并改成位IDEA。IDEA逐渐代替了DES,并被誉为“好的分组密码”,应用在许多行业和产品中。
1 密码基础知识
1.1 密码学的基本概念
密码学的基本概念主要包括5个部分:明文(没有加密数据,也就是算法的输入)、密文(加密后的数据,即算法的输出)、加密算法(从明文到密文的转换)、解密算法(从密文到明文的转换)、密钥(加密解密算法的输入,独立于明文密文及算法)。
一个完整的密码体制通常包括5个部分:明文空间(所有明文的集合)、密文空间(所有密文的集合)、密钥空间(所有密钥的集合)、加密算法(加密密钥控制的加密运算)、解密算法(解密密钥控制的解密运算)。
1.2 密码体制
1.2.1 古典密码学
在古典密码学中,主要分为单表密码体制和多表密码体制2个部分,加密解密算法一般运用加密表一一对应的关系来进行,根据使用的表的个数区分。因此这种加密解密的算法具有比较简便、容易理解、安全性较低的特点,它的规律性和线性较强,容易破译,该算法为现代密码学奠定了基础,是现代密码学的雏形。
1.2.2 公钥密码
公钥密码(非对称密码)的主要内容就是加密密钥是公开的,安全性主要是数学上的难题。该加密解密算法主要是根据单项函数和单向限门函数的设计,在该算法中运算是不可以逆转的,并且包括2个密钥,即公钥(可以向大家公开的)和私钥(只有拥有者可以知道)。该体制具有加密密钥可以公开的优点,但是也存在运算速度较慢的问题,因此,只有一些安全级别较高的信息才可以用公钥密码体制加密。
1.2.3 分组密码
分组密码(对称密码或秘密钥密码),目前广泛地应用在各个方面的密码体制,典型的分组密码有DES、IDEA、NESSIE、韩国标准ARIA,本文将主要探讨IDEA加密解密算法。该体制的基本原理就是:先将加密明文分成长度相同的分组,不足的比特用“0”或“1”补,不同的算法有不同的补足方法,然后对长度相同的分组的加密数据进行结合就可以得到密文。这种体制具有安全性高、运算速度较快、易于硬件实现的特点。
1.2.4 序列密码
序列密码(流密码)常用于特殊场合,比如军事安全和国际外交等安全级别较高的领域,它属于分组密码的一类,但与分组密码又有一些不同。该体制的基本原理是:用一个随机的密钥序列和明文序列叠加起来产生密文,并用同一个随机序列和密文序列叠加起来恢复密文,所有的密钥都是随机序列。该体制被誉为“一次一密”,因此攻击者破译起来较难。序列密码转换速度快,传播粗无低,易于硬件实现,但也存在一些缺陷,比如扩散都低、插入的不敏感性、密钥管理困难等问题。
2 IDEA加密解密算法的概述
2.1 IDEA加密算法的特性与密码强度的关系
第一,分组长度。首先,如果分组的长度够强,对于阻止统计分析越有利,阻止破坏者利用一些分组比其他分组出现机率频繁的现象。其次,加密函数的分组的增大则该函数的复杂性指数也会随之增大,一般情况下,分组大小为64位就足够了。最后,如果想加强算法的强度可以使用密码反馈操作办法,可以进一步加强密码的强度。第二,密钥长度。为了防止被穷举式密钥搜索到,密钥的长度应该够长,并运用128位的密钥长度,保证IDEA在长时间内的安全性。第三,扰乱。密文对密钥的依赖关系越复杂,密文和明文统计特性之间的依赖关系越复杂,这样密码的强度就越强。第四,扩散。每个明文比特和每个密钥比特之间应该相互影响,单个的明文比特扩散到密文比特就会掩盖明文比特的统计性,增加密码的强度。通过循环8次后,有效地提高了扩散性。
2.2 IDEA加密
IDEA加密方案与其他方案的加密一样,加密函数包括64位长度的待加密明文和128位的密钥2个输入。
IDEA总共进行8次循环和1次变换函数。该过程有6个子密钥和额外的4个子密钥输出变换,共52个子密钥从128比特密钥中扩散出。输入64bit的明文数据,并分成X1,X2,X3,X4这4个16bit的子块,将这4个子块进行第l轮的循环输入,一共循环输入8次。每一次循环时,这4个子块相加相乘、相互异或,最后输出密文Y。
2.3 IDEA解密
解密过程和加密结构基本上是一样的,不过是使用不同的子密钥,并将解密密钥扩展,运用加法逆或者乘法逆的方法运算。加密时用的密钥EK,解密时变成DK,同样是输入64bit的数据块,并分成Y1,Y2,Y3,Y4这4个16bit的子块进行循环输入,一共进行8次循环输入。
2.4 IDEA加密解密算法
IDEA加密和解密的算法是相同的,处理的过程中,就是将63bit输入分成16bit的4个子块A,B,C,D,然后进行8次循环,得到最后的输出效果。
2.5 IDEA密钥生成的算法
在密钥生成的算法中,有223个密钥是一个线性因子,有235个是概率为1的环形阶,还有251个可以解非线性布尔等式的密钥是否属于这一部分,如果使用的密钥是这一部分的,就可以找到办法破译程序。这种办法可以针对IDEA的密钥进行线性分析,极大地影响密码的安全性。
2.6 IDEA的实现
IDEA的实现主要包括方便硬件实现和方便软件实现2个部分。在软件实现方面应该遵循2个原则:第一,使用子分组。子分组有8,16,32bit,为了使密码操作方便软件操作,IDEA应该采用16bit的子分组;第二,操作简单方便。加密和解密的程序类似,便于在同一设备上既可以加密又可以解密;密码要求是有规则的模块化结构,以便实现VLSI。
3 IDEA加密解密算法的改进
虽然IDEA的安全性强,计算速度快,但IDEA加密解密算法也有其缺陷,比如存在大量的弱密钥,所以要对IEDA的加密解密算法进行改进。
3.1 IDEA加密算法的改进
可以对加密过程的第2个过程和第3个过程进行改进,改进后的算法和原本的算法差别不大,但是在第3个步骤有所改变。
3.2 IDEA解密算法的改进
IDEA解密算法的改进和加密算法基本上是一样的,主要是改变第3个步骤的算法。当然,与加密算法一样,解密算法改进后所使用的子密钥也会跟着改变,或者使用转换过的加密密钥。而且可以使用求乘法逆元和求加法逆元的方法来导出密钥,对于每一个加密子密钥,该加法逆元也是唯一的。
3.3 改进IDEA密钥生成算法
IDEA加密解密算法的改进主要是针对第2个步骤和第3个步骤的运算,虽然已经具有了较强的攻击性,但是如果密钥生成算法过于简单,就会导致IDEA出现大量的弱密钥。通过置换、循环左移的办法来改进密钥的生成,本文将通过采用置换的方法举例说明,达到混淆的目的,计算出一个不可逆转的种子密钥。
具体的算法根据以下步骤:(1)把128bit的数据分成8个子块。(2)将8个子分组分别进入置换P1,置换出12bit的密钥。(3)把第2步置换的12bit的密钥跟下一个12bit的密钥合成进入置换P2,计算出16bit的子密钥。(4)将第3步循环执行7次,可以计算出7个16bit的子密钥。(5)把8个子分组合成的128bit的密钥K,循环左移25位,执行第2步和第3步,又可以输出8个子密钥。(6)将第5步循环4次,又可以输出32个子密钥。(7)执行第5步输出8个子密钥,将4个子密钥保持,剩下4个丢弃,最后就可以得到需要的52个子密钥了。
该密钥的生成算法改变了原有算法形成密钥之间的线性关系,大大加强了密钥的安全性。
4 结语
在科学技术突飞猛进的同时,人们对计算机技术和数据安全的要求也越来越高,要求对所传输的数据和信息进行加密及解密。因此,本文通过对IDEA解密加密的详细阐述,提出相应的改进措施,提高了密码的安全性,保证了数据传输过程中的安全,从而建立一个安全、可靠、快捷、方便的网络系统,为网络生活乃至其他方方面面提供便利。可以看出,在网络不断发展的今天,信息传输变得不可或缺,在人们日常的网络生活中不仅仅要设置比较复杂的密码,同时更要抵挡密码窃取者的破译,这就更需要不断地研究IDEA加密解密的方法,在原有的基础上改进和创新,使其更有助于网络安全乃至整个社会的和谐发展。