使用一种算法使消息难以分辨,这种方法并不新鲜。像埃及人、罗马人,早已开始运用各种方法来解密消息。这些相对简单的技术在不断演进。密码学在第二次世界大战期间已经发展成一门学科。
图4.1展示了密码学的基本原则。加密密钥用来加密明文,加密后的信息被传输给接收者,接收者使用解密密钥来重构信息。在传输过程中,一些人可以将加密的信息复原出来,采取不同的方式对其进行破译。
图4.1 数据加密
密码学
加密系统包括加密设计和加密方法,试图破译已加密文字被称为密码分析,密码学就是研究加密系统和密码分析的学科。
在法国,对密钥的长度有着严格限制。最大长度为40bit的密钥可以被公众或私人使用。在私人使用时,密码的长度可达128bit。如果长度超过了128bit,密钥就必须传送到当地的网络安全主管部门。在美国或者日本,对于密码长度的规定是不同的,人们应当关注当地对密钥长度的规范。
有两种加密技术:一种为对称密钥算法;另一种为非对称密钥算法,更通俗的说法就是公钥加密算法。
对称密钥算法
对称密钥算法使用单独的密钥来加密和解密数据。所有希望安全传输数据的用户都必须共享一个秘密,那就是密钥。图4.2展示了处理过程。
图4.2 对称密钥加密
在这个系统中,有一个明显的漏洞:如何在发送者和接收者之间共享和传输密钥。
目前人们已经开发了多种对称密钥算法,例如DES、RC2~RC6系列、AES(高级加密标准)等。
DES(数据加密标准)
DES算法是由IBM公司和NSA(美国国家安全局)合作开发的。DES是一种“基于块”的加密算法。这个算法的密钥长度固定(40bit或56bit)。DES算法的目的是通过在密钥和文本之间进行一系列代入与置换来加密信息的。
加密机制如下:
1)把需要加密的文本分成若干个64bit的块(block)(其中有8bit用于奇偶校验)。
2)对分割后的块进行初始置换。
3)每个块都分成两个部分,每部分32bit,分别称为左部分和右部分。
4)对左右两个部分各进行16轮操作。每一次操作都包括对这个部分进行代入和置换,每轮操作都将数据和密钥进行混合。
5)16轮操作结束置之后,将左右两个部分合并起来,然后对合并后的块进行逆向初始置换。
一旦所有的块都被加密,它们就会被重组以便产生加密文档,加密文档便在网络上传输。解密的时候也使用相同的密钥。
直到最近,DES仍是对称密钥算法的参考方式,仍在多个系统中得到使用。例如,40bit的DES算法被SSL Internet v1.0用于信息交换协议。
然而,因为担心DES算法过于简单,所以直到1998年才被使用。当前,它的加密算法已经得到了改进。
3-DES
3-DES就是先后3次使用DES。因此,数据信息将会通过使用2或3个不同的密钥来解密和加密。3-DES密钥大约为118bit。因此,在法国不能使用。3-DES被认为是安全合理的。
IDEA(国际数据加密算法)
IDEA是一种密钥长度为128bit的算法。被加密的信息将被分为4块,对每个块进行8次循环加密。每次循环将分别“异或”操作,模216和以及模216乘这3个动作。在每次循环中,数据和密钥将被混合。这一技术使IDEA更加安全。
IDEA在广泛使用的PGP(Pretty Good Privacy)软件中得到使用。
RC2
RC2算法是由Ron Rivest发明的,他把这种算法命名为Ron’s Code 2。该算法基于块长度为64bit的数据块,密钥最大长度为2048bit,比DES算法快2~3倍。(www.xing528.com)
该算法归RSA安全局所有,并在SSL v2.0中得到使用。
RC4
RC4不再使用块加密而是通过数据流加密。这个算法的特别之处在于对数据加密和解密采用了伪随机置换技术。
在RC4中定义了两种机制:
●KSA(密钥调度算法)。它由简单置换方式使用密钥生成一个密钥列表。
●PRGA(伪随机生成算法)。由KSA生成的状态表被置于伪随机数生成器(PRNG)中,PRNG将通过复杂的排列方式产生密钥流。
与其他算法不同,数据信息不用被分割成块来加密和解密。在RC4中,加密算法是把数据和密钥流进行“异或”操作,解密算法是把加密后的数据和相同的密钥流进行“异或”操作。
RC4的计算速度比RC2快。和RC2一样,该算法的所有权归RSA安全局。RC4算法在SSL v2.0和SSL v3.0中用于安全连接,也用于IEEE802.11系列标准中的WEP协议。
RC5和RC6
RC5的所有权依然归RSA安全局。RC5算法作为一种加密算法,它使用的块大小在32~128bit之间,循环的长度在0~255之间,动态密钥的长度在0~2040bit之间。
RC6是RC5的改进算法,因此其参数与RC5相同。唯一不同之处在于循环中增加了一个新的数学运算。
Blowfish
和DES算法一样,Blowfish算法应用于长度为64bit的数据块中。该算法基于DES,其密钥长度在40~448bit之间。这种算法速度快而且相当可靠。
Twofish
和Blowfish一样,Twofish加密算法的密钥算法长度可变,块大小为128bit,循环16次。这一算法可靠,并且速度快。
AES(高级加密标准)
AES算法诞生于NIST(美国国家标准与技术研究所)2000年发起的用于代替DES算法的研究项目中。在过去,AES算法看起来并不可靠。以前提出过多种算法,例如RC6和Twofish;但是因为速度快,算法可靠,最后Rijndael被接受,现在被命名为AES。
AES算法的块大小为128bit或16bit,密钥的长度可为128bit、192bit或256bit。依据密钥的大小,循环的次数可以为10次、12次或者14次。
在每次循环中,AES进行4项运算:
●字节替换(SubBytes),在每个加密的数据块之中所使用的非线性替代(S)机制是不同的。
●行位移变换(ShiftRows),转换块元素的置换(P)机制。
●列混合变换(MixColumns),在不同的块元素之间进行相乘的变换(M)机制。块元素的相乘形式与传统的方式不同,采用的是GF(28)的形式。
●异或运算(AddRoundly),是一种密钥推导算法。它导致每次循环都有一个新的加密密钥Ki,其中,i对应的是循环的次数。
数据信息在加密之前被分割成128bit的块。加密的第一步是把信息块和密钥进行“或”操作。然后,对每个信息块连续进行10次循环,每个循环都进行代替(S)、置换(P)和变换(M)操作。在每一次循环结束后,初始密钥产生一个新的加密密钥,变换(M)操作的结果与该密钥进行异或,所有这些结果进入下一次循环。在最后一个循环当中,不需要变换(M)操作,至此,数据块被加密。
一旦所有的信息块都被加密了,它们会被重组并生成加密信息,以便于在网络上传输。AES加密的过程如图4.3所示。
图4.3 AES加密
解密的过程与加密的过程相反,如图4.4所示。
AES被美国管理部门用来代替DES,也被IEEE802.11标准作为一种新的加密算法使用,以替代RC4。
图4.4 AES解密
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。