费斯妥密码
在密码学中,Feistel密码是一种用于构造块密码的对称结构,以德国IBM密码学家Horst Feistel的名字命名,它也通常被称为Feistel网络。一大套块密码都使用了该方案,包括数据加密标准的
Feistel结构的优点是加密和解密操作非常相似,甚至在某些情况下完全相同,只需要颠倒一下密钥表。因此,实现这种密码所需的代码或电路的大小几乎减半。
Feistel结构具有迭代性,这使得在硬件中实现密码系统更加容易。
费斯特尔网络和类似的构造都是产品密码,所以结合了多轮重复运算,如。
- 位洗箱
- 简单的非线性函数(通常称为替换盒或S盒
- 线性混合(在模块代数的意义上)使用XOR来产生一个具有大量Claude Shannon所描述的"混淆和扩散"的函数。
位洗牌会产生扩散效应,而替换则是用来混淆的。
理论工作
许多现代对称块密码都使用了Feistel网络,密码学家们对Feistel密码的结构和特性进行了广泛的探索。具体来说,Michael Luby和Charles Rackoff分析了Feistel块密码结构,并证明了如果轮函数是一个密码学上安全的伪随机函数,用Ki作为种子,那么3轮就足以使块密码成为一个伪随机换算,而4轮就足以使其成为一个"强"伪随机换算(这意味着即使对一个获得其逆换算的谕令访问权的对手来说,它仍然是伪随机的)。由于Luby和Rackoff的这一非常重要的结果,Feistel密码有时被称为Luby-Rackoff块密码。进一步的理论研究对该构造进行了概括,并定义了更精确的安全性限制。
建筑业
让F {displaystyle {\rm {F}}是轮函数,让K 1 ,K 2 ,...,K n {displaystyle K_{1},K_{2},\ldots ,K_{n}}分别是轮1 ,2 ,...,n {displaystyle 1,2,\ldots ,n}的子键。
那么基本操作如下。
将明文块分割成两个相等的片段,( L 1 {\displaystyle L_{1}} , R 1 {\displaystyle R_{1}} )
对于每一轮i=1,2,...,n {\displaystyle i=1,2,\dots ,n}。,计算
L i + 1 = R i {\displaystyle L_{i+1}=R_{i}\,}。
R i + 1 = L i ⊕ F ( R i , K i ) {\displaystyle R_{i+1}=L_{i}\oplus {\rm {F}}(R_{i},K_{i})} .
那么密文是 ( R n + 1 , L n + 1 ) {\displaystyle (R_{n+1},L_{n+1})} 。(通常R n {\displaystyle R_{n}}和L n {\displaystyle L_{n}}这两块在最后一轮之后不会交换。)
密文的解密 ( R n , L n ) {\displaystyle (R_{n},L_{n})}是通过计算 i = n , n - 1 , ... , 1 {\displaystyle i=n,n-1,\ldots ,1}来完成的。
R i = L i + 1 {\displaystyle R_{i}=L_{i+1}\,}。
L i = R i + 1 ⊕ F ( L i + 1 , K i ) {\displaystyle L_{i}=R_{i+1}/\oplus {\rm {F}}(L_{i+1},K_{i})} .
那么 ( L 1 , R 1 ) {\displaystyle (L_{1},R_{1})}又是明文。
这个模型的一个优点是,圆函数F {\displaystyle {\rm {F}}不一定是可逆的,可以很复杂。
该图说明了加密过程。解密只需要将子键K n , K n - 1 , ... , K 1 {\displaystyle K_{n},K_{n-1},\ldots ,K_{1}}的顺序颠倒过来,使用相同的过程;这是加密和解密之间的唯一区别。
非平衡Feistel密码使用一种修改过的结构,其中L 1 {\displaystyle L_{1}}和R 1 {\displaystyle R_{1}}的长度不相等。MacGuffin密码是这种密码的一个实验性例子。
Feistel结构还被用于除块密码器以外的其他密码算法中。例如,最佳非对称加密填充(OAEP)方案在某些非对称密钥加密方案中使用简单的Feistel网络来随机化密码文本。
费斯特尔网络对块密码的操作,其中P是明文,C是密文。
费斯特尔密码器列表
Feistel或改性Feistel:Blowfish、Camellia、CAST-128、DES、FEAL、ICE、KASUMI、LOKI97、Lucifer、MARS、MAGENTA、MISTY1、RC5、TEA、Triple DES、Twofish、XTEA、GOST 28147-89。
问题和答案
问:什么是费斯特尔密码?答:费斯特尔密码是一种用于构建块状密码的对称结构,以德国IBM密码学家霍斯特-费斯特尔命名。它通常也被称为费斯特尔网络。
问:使用Feistel结构有什么优势?
答:使用Feistel结构的主要优点是,加密和解密操作非常相似,在某些情况下甚至完全相同,只需要颠倒一下密钥计划。这使实现这种密码所需的代码或电路的大小减少了近一半。此外,它的迭代性质使得在硬件中实现密码系统更加容易。
问:克劳德-香农是如何描述 "混淆和扩散 "的?
答:克劳德-香农将 "混乱和扩散 "描述为有大量的两种元素存在,以使攻击者难以破译加密信息。
问:使用什么技术来制造混乱和扩散?
答:混淆和扩散是通过比特洗牌(通常称为排列盒或P盒)和简单的非线性函数(通常称为替换盒或S盒),以及使用XOR的线性混合(在模块化代数的意义上)来创建的。比特洗牌产生了扩散效应,而置换则是用于混淆。
问:菲斯特尔网络是什么类型的密码?
答:Feistel网络是一种产品密码,它结合了多轮的重复操作,以安全地加密数据。
问:谁开发了这种类型的密码学?
答:Feistel结构是由德国IBM密码学家Horst Feistel开发的。
问:数据加密标准是基于这种类型的密码学吗?
答:是的,数据加密标准使用这种密码学,它利用上述相同的原则,在加密信息中制造混乱和扩散。