RC5
编辑RC5(Rivest Cipher 5)是 Ronald Rivest 于 1994 年设计的对称分组密码。 这意味着相同的密钥用于加密和解密。 它属于 Feistel 密码类。 数据首先被分成大小相等的块,并通过重复应用简单操作(即所谓的“原语”)来加密或解密。 块大小、密钥长度和重复次数(“轮数”)未由算法指定,而是在加密前设置为参数。
设计 RC5 的目标是简单快速的密码。 它建立在依赖于数据的旋转之上,在开发时,其作为原语的适用性在很大程度上仍未得到探索。
与许多其他分组密码不同,RC5 不使用任何 S 盒来实现 Claude Shannon 在 1949 年所说的“混淆”,这对于明文、密钥和密文之间统计关系的安全操作很重要。 S-Box 会引起很多混乱,因为人们可以在很大程度上自由选择,例如 a b × b {displaystyle btimes b} -S-Box 包含 2 b {displaystyle 2^{b}} 可能b {displaystyle b} 输入位的值到 2 b {displaystyle 2^{b}} 可能的输出值。 然而,在实际实现中,S-Box 需要额外的内存和一定的计算量,因为必须首先将数据字分成足够小的部分输入 S-Box,因为 16 或更多的整个字位对于这个来说太大了。 然后你必须再次把结果放在一起形成一个词。 没有 S-Box 使得 RC5 非常简单和快速,特别适合在资源匮乏的地区使用——例如芯片面积有限的数字硬件。
RFC 2040 标准中指定了一种具体的软件实现,它为连接块提供了不同的操作模式。
描述
编辑RC5 具有可变块大小(32、64 或 128 位)、密钥长度(0-2040 位)和轮数(0-255)。 这些参数的具体选择通常表示为“RC5-w/r/b”——w 是一个字的长度(一个块是两个字),r 是轮数,b 是长度以字节为单位的键。 Rivest 最初推荐 RC5-32/12/16 和 RC5-64/16/16 用于 64 位架构。
RC5 由三个部分组成:加密、解密和密钥扩展。 加密和解密中使用的方法的密码原语是:
- 两个词的加法 modulo 2 w
- 两个词的按位异或将一个单词旋转 b 位位置,其中 b 由另一个单词的 log 2 w {displaystyle log _{2}w} 最低有效位给出
原语对 w 位字进行操作,每个字形成一个半块。 该算法的安全性在很大程度上取决于旋转的使用,这是该方法中xxx的非线性操作。 后继算法 RC6 和部分 AES 候选 MARS 也基于数据相关旋转。
按键扩展
通过密钥扩展,从秘密密钥生成轮密钥 S0、...、S2r+1(其中 S0 和 S1 用于密钥白化)。 轮密钥系统也称为扩展密钥表。为此,首先将密钥分成半块 Li,并在必要时用零填充。
密码分析
编辑一种称为 RC5⊕ 的变体也用于密码分析目的,其中半块的模加法完全交换为按位 XOR。 由于密文的位与链接到 XOR 下的明文的轮密钥的位之间的连接,此变体在密码学上较弱,并且主要适合作为数据相关旋转分析的简化。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/373691/