第十九讲 Feistel密码结构
1Feistel密码设计思想乘积密码指顺序地执行两个或多个基本密码系统,使得最后结果的密码强度高于每个基本密码系统产生的结果.Feistel还提出了实现代换和置换的方法。其思想实际上是Shannon提出的利用乘积密码实现混淆和扩散思想的具体应用。Feistel密码实现的参数Feistel网络的实现与以下参数和特性有关:① 分组大小: 分组越大则安全性越高,但加密速度就越慢。② 密钥大小:密钥越长则
1 Feistel密码设计思想
乘积密码指顺序地执行两个或多个基本密码系统,使得最后结果的密码强度高于每个基本密码系统产生的结果.
Feistel还提出了实现代换和置换的方法。其思想实际上是Shannon提出的利用乘积密码实现混淆和扩散思想的具体应用。
Feistel密码实现的参数
Feistel网络的实现与以下参数和特性有关:
① 分组大小: 分组越大则安全性越高,但加密速度就越慢。
② 密钥大小:密钥越长则安全性越高,但加密速度就越慢。
③ 轮数:单轮结构远不足以保证安全性,但多轮结构可提供足够的安全性。 典型地,轮数取为16。
④ 子密钥产生算法:该算法的复杂性越大,则密码分析的困难性就越大。
⑤ 轮函数:轮函数的复杂性越大,密码分析的困难性也越大。
设计Feistel密码的两个要求
在设计Feistel网络时,还有以下两个方面需要考虑:
① 快速的软件实现:在很多情况中,算法是被镶嵌在应用程序中,因而无法用硬件实现。此时算法的执行速度是考虑的关键。
② 算法容易分析:如果算法能被无疑义地解释清楚,就可容易地分析算法抵抗攻击的能力,有助于设计高强度的算法。
2 Feistel密码加解密结构
Feistel加密结构
输入是分组长为2w的明文和一个密钥K。将每组明文分成左右两半和,在进行完n轮迭代后,左右两半再合并到一起以产生密文分组。第 i 轮迭代的输入为前一轮输出的函数:
其中是第i轮用的子密钥,由加密密钥K得到。一般地,各轮子密钥彼此不同而且与K也不同。
Feistel解密结构
Feistel解密过程本质上和加密过程是一样的,算法使用密文作为输入
但使用子密钥的次序与加密过程相反,即第1轮使用,第2轮使用,……,最后一轮使用。这一特性保证了解密和加密可采用同一算法。
Feistel密码解密的正确性
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)