各种加密算法的综述与比较分析
摘要
如今,数据安全是一个极具挑战性的问题,涉及计算机与通信等多个领域。最近, 我们遇到了许多针对网络安全的攻击,这些攻击破坏了用户的机密性。这些攻击 打破了所有安全算法,影响了用户数据的机密性、认证、完整性、可用性和身份 识别。密码学是一种能够确保用户数据的机密性、认证、完整性、可用性和身份 识别得以维护,同时为用户提供数据安全与隐私保护的方法。加密是通过应用数 学变换或公式将普通数据或明文转换为不可理解的内容或密文的过程。用于加密 过程的这些数学变换或公式称为算法。我们分析了十种数据加密算法:DES、三 重数据加密标准、RSA、高级加密标准、ECC、Blowfish、Twofish、 Threefish、RC5 和 IDEA 等。其中,DES、三重数据加密标准、高级加密标准、 RC5、Blowfish、Twofish、Threefish 和 IDEA 属于对称密钥加密算法。
RSA 和 ECC 属于非对称密钥加密算法。本文基于不同参数对各种加密算法进行了 分析,并对其进行比较,以选择最佳的数据加密算法,以便在今后的工作中使用。
关键词 :安全、密码学、算法、密钥、密码、安全攻击、美国国家标准与技术研究院等。
1. 引言
密码学算法是一种通过提供安全来保护数据或网络的技术或某种公式。密码 学是一门设计方法的科学,这些方法能够以安全的形式发送信息,使得只有预期 的接收方才能检索到该信息。网络的广泛使用导致在系统之间进行通信时需要通 过网络交换数据。在通信过程中,对消息进行加密至关重要,以防止入侵者读取 消息。网络安全高度依赖于密码学[18]。基本上,密码学是通过对消息进行加密 来隐藏信息的艺术。这种保护信息的艺术(加密)将信息转换为不可读的格式 (加密文本),称为密文。只有那些
本文档由 funstory.ai 的开源 PDF 翻译库 BabelDOC v0.5.10 (http://yadt.io) 翻译,本仓库正在积极的建设当中,欢迎 star 和关注。
国际安全及其应用杂志 第9卷,第4期(2015年)
290 版权所有 c 2015 SERSC
只有拥有密钥的人才能将加密消息解密为明文。在发送方使用唯一密钥或特定公式 对数据(明文)进行加密,并在接收方再次使用该密钥或公式将加密数据解密回明 文的系统称为密码系统。加密消息有时可能被密码分析所破解,这也称为破译 [26]。
尽管现代密码技术几乎是不可破解的。随着互联网和其他形式的电子通信日益普及, 电子安全正变得越来越重要。密码学被用于保护电子邮件消息、信用卡信息和企业 数据。互联网上使用最广泛的密码系统之一是优良隐私(PGP),因为它高效且免 费。
根据输入数据,加密算法可分为分组密码和流密码。其中,分组密码在加密时采用 固定大小的块,而流密码则通过连续流进行加密和解密。在所考虑的算法中,部分 属于分组密码,如RSA、DES、高级加密标准、Blowfish、Twofish、 Threefish等;另一些则属于流密码,如ECC、RC5等。
2. 密码学中的基本术语
有一些术语我们需要了解,以便更好地理解加密算法。这些术语非常重要,因 为在描述每种算法时,我们都会讨论这些常见术语:
2.1 明文或普通文本
在通信中使用的原始文本或消息称为明文。例如:约翰发送“你好”给佩里。这里 的“你好”就是明文或原始消息。
2.2 密文
明文被加密成不可读消息。这种无意义消息称为密文。
国际安全及其应用杂志 第9卷,第4期(2015年)
版权所有 c 2015 SERSC 291
示例:“你好”消息被转换为“-&tt%”。这种无意义消息是密文。
2.3 加密
加密是将明文转换为密文的过程。这种不可读的消息可以通过不安全网络进行 安全通信。加密过程使用加密算法完成。
2.4 解密
解密过程是加密过程的逆过程,即使用特定加密算法将密文转换为明文。
2.5 密钥
密钥是数字或字母数字文本(数学公式)。在加密过程中,它作用于明文;在解密过程 中,它作用于密文。
2.6 密钥长度
密钥长度是用于衡量任何算法中密钥长度的比特数。
2.7 块大小
密钥密码对固定长度的比特字符串进行操作。该比特字符串的固定长度称为块大小。该 块大小取决于算法。
2.8 轮次
加密轮次是指在完整的加密过程中,加密函数执行的次数,直到生成密文作为输出。
密码系统 broadly can be divided into two categories: 对称加密算法 非对称加密算法 对称加密算法使用发送方和接收方都拥有的单个密钥。该密钥在发送方和接收 方之间保密,以防止入侵者通过加密手段窃取要传输的数据。
非对称加密算法或使用两个密钥的公钥系统,其中一个公钥是众所周知的,另 一个私钥仅由消息的接收方使用。从事该领域的人被称为密码学家。
与对称密钥加密相比,非对称加密提供了更高的安全,但在加密速度方面,对称加密占据优 势。
3. 密码学的主要目标
加密或密码学有一些需要实现的目标,以保障用户利益。现代密码学关注以下四个目标:
3.1 机密性
信息无法被未授权的人员理解。
3.2 完整性
在存储或从发送方传输到预期接收方的过程中,信息不能被篡改而不被检测到。
国际安全及其应用杂志 第9卷,第4期(2015年)
292 版权所有 c 2015 SERSC
3.3 不可否认性
信息的创建者/发送方以后不能否认其在创建或传输该信息时的意图。
3.4 认证
发送方和接收方可以确认彼此的身份以及信息的来源/目的地。
3.5 访问控制
只有授权用户才能访问数据。这是为了避免未经授权的用户访问。
明文使用称为“加密算法”的算法进行加密。密文使用称为“解密算法”的算 法进行解密。在加密和解密过程中使用密钥。密码学的安全级别由密钥空间或密钥 长度(密钥大小)决定。
4. 各种算法概述
在本节中,我们将讨论各种加密算法,并对其性能评估进行分析。为了开始算 法分析,我们首先需要了解什么是算法。所谓算法,“就是一组用于解决问题的明 确指令序列”,即在有限时间内针对任何合法输入获得所需输出。我们考虑了十二 种加密算法,包括DES、三重数据加密标准、RSA、高级加密标准、ECC、 Blowfish、Twofish、Threefish、RC5、IDEA等。
4.1 数据加密标准(数据加密标准)
它由IBM实验室的霍斯特·费斯托尔于1975年初开发。数据加密标准(DES) 于1978年被国家标准局(National Bureau of Standards,现称为 NIST — 美国国家标准与技术研究院)批准。DES由美国国家标准协会(ANSI,American National Standard Institute)标准化,命名为ANSI X3.92,更广为人知的是DEA(数据加密算 法)。DES曾是电子数据加密领域中占主导地位的对称密钥算法。但现在它已成为 一种过时的对称密钥数据加密方法。DES使用56位密钥进行加密和解密。它对每个 64位数据块执行16轮加密。数据加密标准基于特定原理工作。数据加密标准是一种 对称加密系统,使用64位块,其中8位(一个八位组)用于奇偶校验(以验证密钥 完整性)[25]。每个密钥的奇偶校验位(每8位中的1位)通过奇校验来检查对应的 一个八位组,即每个奇偶校验位被调整为使其所属八位组中包含奇数个“1”。因 此,该密钥的实际有效长度为56比特,意味着算法中仅使用了56位。因此,最多
需要 2^56 或72,057,594,037,927,936次尝试才能找到正确的密钥[20]。
以上是DES算法中F函数的结构。消息块被分为两部分。右半部分通过另一个固定 表从32位扩展到48位。结果使用异或操作与该轮的子密钥进行组合。通过S盒,生 成的48位再被转换为32位,随后使用另一个固定的表再次进行置换。此时已充分 打乱的右半部分再通过异或操作与左半部分组合。在下一轮中,此组合结果作为新 的左半部分。许多安全专家认为,即使在DES被采纳为标准之前,56位密钥长度就 已不够足够的。尽管如此,数据加密标准在整个20世纪90年代中期仍是一种受信 任且广泛使用的加密算法[26]。然而,在1998年,电子前沿基金会(EFF)建造的 一台计算机在56小时内成功解密了一条DES加密的消息。通过利用数千台联网计算 机的计算能力,第二年电子前沿基金会(EFF)将解密时间缩短至22小时。数据加 密标准也可用于单用户加密,例如将某些数据存储在硬盘中。
国际安全及其应用杂志 第9卷,第4期(2015年)
294 版权所有 c 2015 SERSC
在其加密过程中,数据加密标准使用56位密钥进行加密和解密。它对每个64位数 据块完成16轮加密。在所有轮次中,加密通过F函数实现。数据加密标准有三种工作模 式:电子密码本(ECB)、密文块链接(CBC)、密文反馈(CFB)和输出反馈( OFB)[20]。加密强度与密钥长度直接相关,而56位密钥长度相对于现代计算机的处理 能力而言已变得过小。因此,美国国家标准与技术研究院认为有必要在该领域引入一种 新的、更安全的数据加密算法。数据加密标准于2005年5月正式被撤销。
未发现明显的限制,只是其密钥长度较小导致安全性较低。对数据加密标准的 唯一成功攻击是暴力破解攻击。另一个弱点是其加密速度非常慢。
4.2 三重数据加密标准(3DES)
在密码学技术中,三重数据加密标准(3DES)是三重数据加密算法(TDEA) 对称密钥分组密码的通用名称,该算法对每个数据块应用三次数据加密标准( DES)加密算法。三重DES也由IBM于1978年提出,作为DES的替代方案。因此, 3DES就是将DES对称加密算法在同一数据上使用三次。三重DES也称为T-DES。
它使用简单的DES加密算法三次,以增强加密文本的安全性[14]。
在此过程中,相同的数据使用DES再次加密两次,从而使得加密更加强大且更 难破解。三重DES基本上是一种分组密码,在其计算中使用48轮(DES的三倍), 密钥长度为168位。3-DES还使用64位的块大小进行加密[14]。以下是几种模式:
4.2.1 DES-EDE3 :使用上述提到的3个独立密钥(密钥1、密钥2、密钥3)进行加密、解密、 再加密。
4.2.2 DES-EEE3 :一个数据块被加密,然后使用不同密钥再次加密,最后使用另一个 密钥第三次加密,共使用3个独立密钥。
4.2.3 DES-EDE2 :这里我们仅使用两个密钥,其中第一次和最后一次加密使用完全相 同的密钥。
4.2.4 DES-EEE2:最后,这也使用两个密钥,第一次和最后一次加密使用相同的密钥。
国际安全及其应用杂志 第9卷,第4期(2015年)
版权所有 c 2015 SERSC 295
3DES 是一种重用 DES 加密算法的技巧,但使用三个不同的密钥。3DES 被认 为至少在 2^112安全方面是安全的,但它速度慢,尤其是在软件计算 [18] 中。三重 DES 也提供了足够的安全性。这就是为什么用户需要 3-DES 的替代者。
三重数据加密标准的主要优势在于其安全性是数据加密标准的三倍(因为它结 合了三个使用不同密钥的DES算法),因此比简单的DES加密算法更受青睐。它为 数据提供了足够的安全性,但并非最佳选择,因为它消耗大量时间,且其加密速度 也低于DES加密算法。
4.3 RSA(Rivest-沙米尔-Adleman算法)
RSA(Rivest-Shamir-Adleman)算法是最重要的公钥密码系统。它是最著 名且被广泛使用的公钥方案,使用如1024位大小的大整数,仅包含一轮加密,属于 非对称分组密码。RSA 是现代计算机用于加密和解密消息的一种算法,是一种非 对称加密算法。非对称意味着在加密和解密过程中使用两个不同的密钥[8]。
这也称为公钥密码学,因为其中一个密钥可以与所有人共享,而另一个密钥必 须保持私密。它基于因式分解问题。RSA代表罗恩·里维斯特、阿迪·萨米尔和伦纳 德·阿德曼,他们于1978[18]年开发并公开描述了该算法。RSA用户创建两个大素 数的乘积(P
Q)以及一个辅助值(I),并将其作为公钥发布。素因子(P
Q)必 须保密。任何人都可以使用公钥来加密消息,但根据目前公布的方法,如果公钥足 够大,只有知道素因子的人才能实际解码消息。RSA算法可用于公钥加密和数字签 名。其安全性基于分解大整数的困难性。
RSA中使用了以下算法,
1. 选择 p 和 q
2. 计算 n = p * q
3. 计算 φ(n)=(p - 1) * (q - 1)
4. 选择 e,使得 1< e < φ(n) 且 e 和 n 互素。
5. 计算 d 的值,使得 (d * e) % φ(n) = 1。
6. 公钥为 (e, n)
7. 私钥为 (d, n)
8. 加密时 C=m^e (mod n),解密时 m =c^d (mod n)
因此,通过遵循上述算法,明文被转换为加密形式或密文,然后从密文解密回明文。
国际安全及其应用杂志 第9卷,第4期(2015年)
296 版权所有 c 2015 SERSC
在RSA加密算法中,主要缺点是其加密速度。它需要大量时间来加密数据。这实际 上是非对称密钥算法的缺点,因为使用了两个非对称密钥。它提供了良好的安全水 平,但加密文件时速度较慢。该算法中的另一个威胁是在解密级别存在虚假密钥插 入,因此密钥必须是私有的且正确的,才能成功实现加密。
4.4 高级加密标准(AES)
1997年,美国国家标准与技术研究院(NIST)宣布启动一项计划,旨在选择 DES的替代者;2001年,NIST选定高级加密标准(AES)作为DES和三重DES的 替代方案。高级加密标准(AES)由文森特·里杰芒和琼·达门于2001年开发。高级 加密标准(AES)是一种对称分组密码,被美国政府用于保护机密信息,并在全球 范围内的软件和硬件中用于敏感数据加密。AES实际上包含三种分组密码: AES-128、AES-192和AES-256。每种加密算法分别使用128位、192位和256位的 加密密钥,对128位块的数据进行加密和解密。在高级加密标准中,128位密钥对应 10轮,192位密钥对应12轮,256位密钥对应14轮[21]。
在每种情况下,除最后一轮外,所有其他轮次都相同。
加密过程中的每一轮都会执行若干步骤,直至第n轮。每一轮包含四个步骤, 即字节替换、行移位、列混淆和轮密钥加。
国际安全及其应用杂志 第9卷,第4期(2015年)
版权所有 c 2015 SERSC 297
替换轮
:在此步骤中,字节替换在正向加密过程中逐字节进行替换。
行移位
:在此过程中,在前向处理(S盒过程)期间对状态数组的行进行移位
列混淆
:在正向过程中,对每列的字节分别进行混合。
轮密钥加
:在这一步中,轮密钥被添加到前一步的输出结果中,该步骤在正向过程中进行。由于密 钥长度的不同,此步骤与其他步骤有所区别。
在高级加密标准加密过程中,使用不同的轮密钥。这些密钥与其它数学运算一 起应用于数据数组。该数据以特定大小的块形式存在。此数组称为状态数组。该加 密过程包括以下步骤:
1. 首先从密钥派生出不同的轮密钥。
2. 使用块数据或明文初始化状 态数组。
3. 通过添加轮密钥开始初始状态数组的处理。
4. 在九个轮次中 执行状态操作过程。
5. 经过第十轮操作后,得到最终输出为密文。
通过 以上步骤,我们获得最终的加密文本或密文。
4.5 椭圆曲线密码学(ECC)
椭圆曲线密码学(ECC)由IBM的维克多·米勒和华盛顿大学的尼尔·科布利茨 于1985年发现,作为一种实现公钥密码学的替代机制。该ECC(椭圆曲线密码学) 基于有限域上椭圆曲线的代数结构,即椭圆曲线理论。与其它加密算法相比, ECC能够创建更快、更小且更高效的密钥。在此方法中,加密以椭圆曲线方程(数 学中使用的形式)进行。ECC具有如此高的效率,以至于使用164位密钥即可达到 其他系统需要1024位密钥才能实现的安全级别,即它能够在更小的位大小下提供最 高级别的安全,因此功耗更低[25] ,正因如此,椭圆曲线密码学也适用于电池备份 设备。在密码学中使用椭圆曲线的建议由尼尔·科布利茨和维克多·S·米勒于1985年 独立提出。椭圆曲线密码学算法在2004年至2005年开始被广泛使用。本质上,椭 圆曲线是定义在有限域(而非实数)上的平面曲线。
其中包含满足该方程的点值,
p y² = x³ +Ax+B,
其中 a 和 b 是常数点值。
在椭圆曲线密码学的加密过程中,我们有许多使用 ECC 密码学的选项,但我们将讨论最简单的方 法。
根据这种加密技术,
1. 发送方必须首先将任何消息M编码为椭圆曲线上的点Pm。
2. 用户必须首先将 任何消息M编码为椭圆曲线上的点Pm。
3. 选择合适的曲线和点G,如D-H中所述。
国际安全及其应用杂志 第9卷,第4期(2015年)
298 版权所有 c 2015 SERSC
- 每个用户选择私钥 nA<n 并计算公钥 PA=nAG
- 加密时:Pm 的 加密形式为:Cm={kG, Pm+kPb},其中 k 是一个随机数
-
解密 Cm 时
计算:Pm+kPb–nB(kG) = Pm+k(nBG)–nB(kG) = Pm
如今,它主要应用于资源受限环境,如自组织无线网络和移动网络。ECC 的主 要优势在于使用短密钥长度,从而实现快速加密速度和更低的功耗。例如,160位 椭圆曲线加密密钥大小提供的安全级别与1024位RSA加密密钥相当,并且根据其实 现平台的不同,性能可快15倍。
椭圆曲线加密的缺点是它增加了密文大小,第二个缺点是ECC依赖于非常复杂 的方程,这导致了加密算法的复杂性增加。
各种加密算法的综述与比较分析
4.6 Blowfish
Blowfish由布鲁斯·施奈尔于1993年开发。它本质上是一种对称分组密码,密 钥长度可变,范围从32位到448位。其块大小为64比特。它是一种16轮Feistel密码, 使用大型密钥相关的S盒。每个S盒包含32位数据。
上图展示了Blowfish的F函数。该函数将32位输入分成四个8位部分,并将这些部
分用作S盒的输入。输出结果通过模运算2^32相加并进行异或操作,以生成最终32位 输出,即加密数据。在另一端进行解密时,采用相同的流程,但顺序为逆序[21]。
国际安全及其应用杂志 第9卷,第4期(2015年)
版权所有 c 2015 SERSC 299
迄今为止,尚未发现任何针对Blowfish加密算法的成功攻击。
Blowfish是一种密钥长度可变的算法,采用64位分组密码。该算法包含两个子部 分:一是密钥扩展部分,二是数据加密部分。数据加密通过完成16轮Feistel网络实现。
每一轮包括在P盒中的与密钥相关的置换以及在S盒中的与密钥/数据相关的代换[4]。
该算法由S盒和P盒组成。P数组包含18个32位的子密钥:P1,
P2,…,P18。有四个32位的S盒,每个包含256个条目:S1[0], S1[20],…,
S1[255];S2[0], S2[20],..,, S2[255];S3[0], S3[20],…, S3[255];S
4[0], S4[20],..,, S4[255]。加密过程如下:将x分为两个32位的部分:
(xL) 和 (xR);对于i = 1到16:xL = xL 与 Pi 异或;xR = F(xL) 与 xR 异或;交换xL和xR;下一个i;交换xL和xR(或撤销最后一次交 换);xR = xR 与 P17 异或;xL = xL 与 P18 异或;重新组合xL和 xR。将xL分为四个八位部分:a, b, c 和 d;F(xL) =((S1,a + S2,b 模运算 2^32) 与 S3,c 异或) + S4,d 模运算 2^32 ;解密过程与加密完全 相同,但采用逆向流程。
Blowfish在软件中提供良好的加密速率。它比DES和IDEA更快。在许多加密 模拟实验中,Blowfish加密算法因其提供的安全级别和优于大多数可用加密算法 的加密速度而被认为是最好的。
4.7 Twofish
Twofish也是一种具有Feistel结构的对称分组密码。它也是由布鲁斯·施奈尔 在1998年开发并提出的。Twofish也像Blowfish一样使用分组加密。它适用于在 较小的处理器(如智能卡)上运行的软件以及嵌入硬件中。它允许实现者自定义加 密速度、密钥设置时间和代码大小,以平衡性能。Twofish是免许可、无专利且可 免费使用的。在Twofish加密中,它使用128、192和256位的密钥长度。其块大小 为128位,在该加密算法中有16轮加密。
上图展示了Twofish的轮函数工作原理。该轮函数用于加密数据。此轮函数对 数据重复加密16次,然后在16th轮[26]后生成最终密文。
在上图中,
1. X0和X1在左侧是g函数的输入,在其中一个输入进行8位旋转之后。
2. g函数由4字节密钥相关的S盒和一个线性混合步骤(MDS矩阵)组成。3. 两 个g函数的结果通过PHT(伪哈达玛变换)进行合并。4. 随后加入两个关键词。其 中一个右侧的关键词旋转1位,然后这两个关键词与左侧的结果进行异或。5. 为进 入下一轮,左右两半交换。
国际安全及其应用杂志 第9卷,第4期(2015年)
版权所有 c 2015 SERSC 301
-
经过16轮加密后,最后一次交换被反转,并且四个关键词与另外四个关键词进行异或,以 生成最终的加密文本或密文。
上图表示Blowfish加密算法的整体工作过程。Twofish总共包含16轮数据加 密,在完成16轮加密后得到最终的128位密文[12]。Twofish加密算法也提供了良 好的安全级别,但与Blowfish相比,其加密速度较慢。
4.8 Threefish
Threefish 是由布鲁斯·施奈尔、尼尔斯·弗格森、斯特凡·拉克斯、道格·惠廷、米 希尔·贝拉雷和杰西·沃克设计的一种对称密钥分组密码。它于 2008 年首次发布。
Threefish 分组密码与 Blowfish 和 Twofish 直接相关。Threefish 算法是一种可调 式分组密码。可调式分组密码接受三个输入:密钥、调整值和消息块。每个消息块的加 密都使用唯一的调整值。对于所有块大小,调整值均为 128 位。Threefish 加密使用三 种类型的密钥:256 位、512 位或 1024 位。在 Threefish 中,密钥长度等于块大小, 这意味着它使用三种块大小,即 256、512 或 1024 位。通常情况下,Threefish 的加 密轮数为 72 轮,但在 1024 位块大小的情况下,其加密轮数也是 72 轮。Threefish 不 使用 S 盒或其他表查找,以避免时间攻击[21]。
Threefish加密算法使用以下轮函数。
在此加密过程中,遵循以下步骤:
1. Threefish 使用 Nr/4+1 个不同的轮密钥。
2. 为了计算这些密
钥,将原始密钥字 K0,K1 ...., KNw-1 进行追加。同时,调整字 t0, t1 也
被追加,并额外添加一个调整字。t
2= 1
Nw= 240⊕ t0⊕t kC k0⊕k1,......
⊕kNw-1
3. 轮密钥ks,I的定义如下,
Ks,I=
k( s+i) mod(Nw+1) i= 0,....,Nw-4
k(s+i) mod(Nw+1)+ t s mod 3 i=Nw-3
k(s+1) mod(Nw+1)+ t s mod 3 i=Nw-2 k(s+1) mod(Nw+1)+ s i= Nw-1
4. 混合函数接收一个字元组(X0,X1),并返回另一个字元组(Y0,Y1)
5 2 64 0= 0+ 1 。该函数为 Y X X mod Y1=(Y1<<< R
(d 0
6
8 mod),J) ⊕Y 。 R d, j 是一组固定的旋转 常数。7. 如果 d mod 4==0成立,则将轮密钥 Kd/4加到相应的字上。
8. 然后, 将混合函数应用于连续的字。
Threefish-256 和 Threefish-512 将此轮应用 72 次。Threefish-1024 将此轮应用 80次。
上图表示Threefish-1024的一轮加密,包含明文块、子密钥和调整值。它使 用四个各为256位的块。在此情况下,共进行80轮加密。
4.9 RC5
RC5 是一种对称密钥分组密码,由罗纳德·里维斯特于 1994 年设计。RC 代表“里 维斯特密码”,也被称为“罗恩的代码”。高级加密标准(AES)直接基于 RC5。它 支持 0 到 2040 位的密钥长度,但建议使用 128 位。RC5 使用 32、64 或 128 位的块大 小,但建议使用 64 位。它采用类似费斯妥网络的结构 [16],具有 1 到 255 轮加密,最 初建议使用 12 轮。由于仅使用典型微处理器中可用的操作,因此适用于硬件和软件实 现 [19]。
上图展示了RC5加密算法的基本工作流程。RC5 16、32、64加密算法是一种 分组密码,可将长度为和比特的明文数据块转换为相同长度的密文数据块。该算法 由称为轮次r的一系列迭代组成,轮次r取一定的数值。RC5使用两个32位寄存器 A和B,它们存储初始输入文本或明文,同时也存储输出密文。
国际安全及其应用杂志 第9卷,第4期(2015年)
版权所有 c 2015 SERSC 303
加密结束。首先将明文加载到寄存器A和B中,然后对其应用加密和解密函数[23]。
在加密过程中,输入文本存储在两个32位输入寄存器A和B中,加密的轮数为2r+2 ,轮密钥为S
[0,1,2,....2r+1] 。
输出文本将被存储在A和B中。过程:A = A + S[0] 且 B = B + S[20] ,对于 i = 1 到 r 执行 { A = ] ⊕ <<< +[2 = ⊕ <<< +[2
((A B) B) S i B ((B A) A) S i
+ 1] }
经过此过程后,数据被加密并存储在称为密文的寄存器A和B中。
在解密过程中,将密文加载到寄存器A和B中。过程如下:对 于 i 从 = r 递减到 1 执行: B =((B -S[2i + 1]) >>>A) ⊕ A A =((A -S[2i]) >>> B) ⊕ B 然后执行:B = B – S[20] ,A =
A -S[0] 。 完成后将得到 A 和 B 的值。该算法对寄存器A和 B执行逆向操作。
4.10 IDEA(国际数据加密算法)
IDEA(国际数据加密算法)是由来学嘉和詹姆斯·L设计的一种分组加密算法, 首次于1991年提出。该原始算法经过了几次修改,最终被命名为国际数据加密算法 (IDEA)[11]。
IDEA是一种分组密码,对64位明文和密文数据块进行操作,并由128位密钥 控制。该算法一次处理64位明文和密文块。在加密过程中,64位明文被划分为四 个16比特的子块。在我们的讨论中,将这四个块表示为P1(16位)、P2(16位)、 P3(16位)和P4(16位)。
每个块都要经过8轮和一个输出变换阶段。在这八轮中的每一轮,都会执行一 些(算术和逻辑)操作。在整个八轮中,相同的操作序列被重复执行。在最后一轮
国际安全及其应用杂志 第9卷,第4期(2015年)
304 版权所有 c 2015 SERSC
阶段,在输出变换阶段,我们仅执行算术运算。在加密过程开始时,64位明文被分为四 个等大小的块,准备作为第1轮的输入。第1轮的输出作为第2轮的输入,同样地,第2轮 的输出作为第3轮的输入,依此类推。最后,第8轮的输出作为输出变换阶段的输入,其 输出即为最终的64位密文[,假设为C1(16位)、C2(16位)、C3(16位)和C4(16 位)]。由于IDEA是一种对称密钥算法,因此它在加密和解密过程中使用相同的密钥。
解密过程与加密过程相同,只是子密钥是通过不同的算法生成的[7]。密钥的长度为 128位。在整个加密过程中,我们共使用52个密钥(第1轮到第8轮以及输出变换阶段), 这些密钥由一个128位的密钥生成。在每一轮(第1轮到第8轮)中,我们使用六个子密 钥。每个子密钥由16位组成,而输出变换阶段使用4个子密钥。
5. 对比表
| 参数 | DES | 3DES | AES | RSA | Blowfish |
|---|---|---|---|---|---|
| 开发 |
20世纪70年代初 由 IBM 和 发表于
1977年。 | IBM 于 1978年。 |
文森特·里杰芒, 琼·达门 在
2001 |
罗恩·里维斯特, 沙米尔 & 阿伦德纳曼德 在
1978 |
布鲁斯·施奈尔
在1993年 |
| 密钥长度 (位) | 64(56可用) | 168,112 | 128,192, 256 |
密钥长度 取决于数量
模块中的位数 模块 |
可变密钥 长度即
32 – 448 |
| 轮次 | 16 | 48 | 10,12,14 | 1 | 16 |
| 块大小 (位) | 64 | 64 | 128 |
可变块
size | 64 |
| 攻击 发现 | 独占密钥 搜索,线性 密码分析, 差分 分析 | 相关密钥 攻击 |
密钥恢复
攻击,旁道 通道攻击 | 暴力破解 攻击,时序 攻击 |
没有发现任何攻击是 被发现是 成功的 对抗
Blowfish。 |
| 级别 安全 | 足够的 安全性 | 足够的 安全 | 极好的 安全 | 良好的水平 安全 | 高度安全的 |
| ENCRYPTION SPEED | 非常慢 | 非常慢 | 更快 | 平均 | 非常快 |
| 参数 | Twofish | Threefish | RC5 | ECC | IDEA |
|---|---|---|---|---|---|
| 开发 |
布鲁斯·施奈尔
在1998年 |
布鲁斯·施奈尔, 尼尔斯·弗格森,
斯特凡·拉克斯在 2008 |
罗恩·里维斯特 在
1994 | 维克多·米勒 来自 IBM 和 尼尔·科布利茨 在 1985 |
来学嘉 和
詹姆斯 在 1991 |
| 密钥长度 (位) | 128, 192, 256 | 256,512, 1024 |
0 到 2040 位
密钥大小(128 建议) | 更小但 有效密钥 | 128 |
| 轮次 | 16 |
对于 256,512 密钥 = 72
对于 1024 密钥 = 80 | 1 到 255(64 建议) | 1 | 8 |
| 块大小 (位) | 128 |
256,512 和
1024 | 32, 64, 128(64 建议) | 流大小是 可变 | 64 |
| 攻击 发现 |
差分 攻击,相关
密钥 攻击 | 改进 相关密钥 弹道 攻击 | 相关性 攻击,时间 攻击 | 双重攻击 | 线性攻击 |
| 级别 安全 | 安全 | 安全 | 安全 | 高度安全的 | 安全 |
| 加密速度 | Fast | Fast | Slow | 非常快 | Fast |
6. 结论
在本文中,我们分析了各种加密算法。研究发现,每种算法根据不同的参数都 有其自身的优势。通过本文完成的工作可以观察到,每种加密算法的强度取决于密 钥管理、密码学类型、密钥数量以及密钥中使用的位数。密钥长度和数据长度越长, 功耗就越高,从而导致更多的散热。因此,不建议使用过短的数据序列和密钥长度。
所有密钥都基于数学特性,且其安全性会随着时间推移而降低。密钥中使用的比特 数越多,所需的计算时间就越长,这意味着系统需要更多时间来加密数据。通过上 述分析我们发现,ECC和Blowfish这两种加密算法在所提供的安全级别和加密速度 方面处于领先地位。ECC存在一些攻击案例,但目前尚未有成功攻击Blowfish的案 例。因此,通过本次综述与分析,我们筛选出了ECC和Blowfish加密算法。这两种 加密算法更加安全且运行快速,在未来,这两种加密算法仍有广阔的发展和改进空 间。
19万+

被折叠的 条评论
为什么被折叠?



