CAST(密码)

来自Citizendium
跳转到导航 跳转到搜索
这篇文章可能很快就会被删除。
要反对或讨论提名,请访问CZ:建议删除并按照说明进行操作。

有关月度提名名单,请参阅
类别:删除文章.


铸件是构造一个分组密码; 单个密码的名称如下铸件-128铸件-256.

CAST的原始工作在卡莱尔·亚当斯'博士论文[1].他的上司是斯塔福德·塔瓦雷斯但他们说这个名字与他们的首字母无关。一篇著名的论文是“使用CAST设计程序构造对称密码”[2].还有一个美国专利在一些技巧上。

F功能和S盒

CAST密码是费斯特尔密码使用大S盒,8*32而不是DES的6*4。它们主要是为软件实现而设计的,而不是20世纪70年代DES设计的硬件,因此一次查找一个完整的计算机单词是有意义的。一个8*32的S盒占用1 K字节的存储空间;几个可以在现代机器上毫不费力地使用。

在早期的费斯特尔密码中,DES公司俄罗斯国家标准,F函数本质上是SP网络这些密码使用八个6*4或4*4 S盒来获得32位S盒输出。这些位通过简单的转换重新排序,成为F函数的32位输出。雪崩特性并不理想,因为每个输出位仅取决于一个S盒的输入。输出变换对此进行补偿,确保一轮中一个S盒的输出影响下一轮中的几个S盒,以便在几轮后实现良好的雪崩。

CAST密码,以及河豚,使用较大的S盒,不要直接使用S盒位作为F函数输出。相反,它们从几个S框中提取32位单词,并将其组合成32位输出,以便F函数具有理想的雪崩特性-每个输出位都依赖于所有S-box输出字,因此也依赖于所有输入位和所有密钥位。使用Feistel结构和这样的F函数,可以在三轮中实现完全雪崩(所有64个输出位取决于所有64个输入位)。这还需要比DES或GOST中的8个更少的S盒查找,因此F函数以及整个密码可以相当有效。

在这种F函数中不需要输出转换,但无论如何也可以使用一个;CAST-128和CAST-256均采用键控旋转。

CAST S盒使用bent函数(最高度非线性的布尔函数)作为其列。也就是说,从所有输入位到任何单个输出位的映射是一个bent函数。此类S盒满足严格雪崩判据 [3]; 不仅循环输入的每一位和循环键的每一位都会影响循环输出的每一位,而且补充任何输入位都有50%的机会改变任何给定的输出位。关于生成S盒的论文是Mister&Adams的“实用S盒设计”[4].组合弯曲函数可获得额外的理想特性——平衡的S盒(输出0和1的概率相等)、输出位之间的最小相关性以及高整体S盒非线性。

第一个CAST密码[5](在论文中)是一种具有64位块、64位密钥、8轮16位圆密钥、非常简单的密钥调度和6个8*32 S盒的Feistel密码。对于F函数,将32位输入拆分为4个字节,将圆键拆分为2个字节。通过不同的S-box运行6个字节中的每个字节,以获得6个32位输出,并使用XOR将这些输出合并。这个密码使用得不多;当人们提到“CAST”时,他们几乎总是指广泛部署的CAST-128。

抵抗线性和差分攻击

CAST设计程序的一个目标是生成不易受到任何攻击的密码线性密码分析差分密码分析 [6].这些是唯一已知的破坏性攻击DES公司用比暴力更少的努力。更普遍地说,它们是已知的最强大的密码分析学攻击分组密码的方法。然而,两者都需要大量已知或选定的明文,因此针对它们的一个简单防御方法是频繁地重新键入密钥,使敌人无法收集到足够的文本。

CAST更进一步,构建了一个可证明不受线性或微分分析的影响包含任意数量的文本。该方法以线性密码分析为例,缩写为LC,如下所示:

从F函数的属性开始,特别是S盒中的bent函数
导出极限m,即单轮线性近似的最大可能质量
考虑轮数r作为变量
导出e的表达式,即LC破解密码所需的工作量,用r和m表示
找到最小r,使e超过蛮力所需的力,使LC不切实际的
导出c的表达式,即LC所需的选定明文数,也可以用r和m表示
(只有已知明文的LC需要更多文本,因此可以忽略)
求最小r,使c超过可能的明文,2块大小,制作LC不可能的

应用于差分的类似方法给出了r的值,使得差分密码分析不切实际或不可能。选择实际的回合数,这样,至少两种攻击都是不切实际的。理想情况下,使两者都不可能,然后添加一个安全系数。

这种类型的分析现在是密码学家工具包的标准组成部分。许多AES候选人例如,在其设计文档中包含了这些行的证明,以及高级加密标准它本身使用这种计算来确定各种密钥大小所需的轮数。

铸件-128

铸件-128也称为CAST5,是最著名、使用最广泛的CAST密码。它被替换了想法在里面PGP公司在版本3.0中,并在所有版本的打开PGP标准[7].北电和他们的剥离委托也用于多种产品中;亚当斯为这两家公司工作。

CAST-128是一种具有64位块和16发子弹的Feistel密码。支持40到128位的密钥大小;128几乎总是被使用。有八个8*32 S盒,其中四个用于密钥调度,另外四个用于实际加密。圆形键为37位。

F函数使用32位的圆键对输入进行异或运算,将结果拆分为字节,并通过不同的S盒运行每个字节,以获得四个32位结果。这些是非线性组合的,在不同的轮次中使用不同的组合函数。最后,输出是由其他5个圆键位控制的旋转。

这个密码可以免费使用。规范位于副本请求2144.

RFC提供了一组标准S盒,通常用于CAST-128或CAST-256的任何实现。然而,通过使用Mister&Adams论文生成自己的S盒,一个大型组织有可能拥有自己的两种密码版本[4]作为指导。

铸件-256

CAST-256是AES竞赛; 它没有进入决赛。与所有AES候选一样,它使用128位块,支持128、192或256位的密钥大小。

它是的变体费斯特尔密码使用四个32位子块。根据火星团队,它是一个“1型Feistel网络”;每一轮以一个32位块作为输入,并改变一个块。使用了48发子弹。圆形功能和S-盒与CAST-128相同。

这个密码可以免费使用。规范位于RFC 2612号文件.

工具书类

  1. C.M.Adams(1990),置换置换网络密码系统的形式化和实用化设计方法女王大学电气工程系
  2. C.M.Adams(1997年11月),“使用CAST设计程序构造对称密码",设计、代码和密码
  3. A.F.Webster和斯塔福德·E·塔瓦雷斯(1985),“关于S盒的设计”,密码学进展-85年加密(计算机科学讲稿)
  4. 4 4.1 S.Mister,C.Adams(1996年8月),“实用S盒设计",密码学中的选定领域(SAC’96): 61-76
  5. 布鲁斯·施奈尔(第二版,1996年),应用密码学约翰·威利父子公司,国际标准书号0-471-11709-9
  6. H.M.Heys和S.E.Tavares(1994年9月),“关于CAST加密算法的安全性”,加拿大电气与计算机工程会议
  7. J.Callas、L.Donnerhacke、H.Finney、D.Shaw和R.Thayer(2007年11月),OpenPGP消息格式,副本请求4880