费斯妥密码

密码学中,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}{\rm F}}是轮函数,让K 1 ,K 2 ,...,K n {displaystyle K_{1},K_{2},\ldots ,K_{n}K_1,K_2,\ldots,K_{n}}1,2,\ldots,n分别是轮1 ,2 ,...,n {displaystyle 1,2,\ldots ,n}的子键。

那么基本操作如下。

将明文块分割成两个相等的片段,( L 1 {\displaystyle LL_1_{1}} , R 1 {\displaystyle R_{1}R_1} )

对于每一轮i=1,2,...,n {\displaystyle i=1,2,\dots ,n}。i =1,2,\dots,n,计算

L i + 1 = R i {\displaystyle L_{i+1}=R_{i}\,}。 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_{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+1}, L_{n+1}) 。(通常R n {\displaystyle R_{n}}R_nL n {\displaystyle L_{n}L_n}这两块在最后一轮之后不会交换。)

密文的解密 ( R n , L n ) {\displaystyle (R_{n},L_{n})}(R_n, L_n)是通过计算 i = n , n - 1 , ... , 1 {\displaystyle i=n,n-1,\ldots ,1}来完成的。 i=n,n-1,\ldots,1

R i = L i + 1 {\displaystyle R_{i}=L_{i+1}\,}。 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_{i} = R_{i+1} \oplus {\rm F}(L_{i+1}, K_{i}).

那么 ( L 1 , R 1 ) {\displaystyle (L_{1},R_{1})}(L_1,R_1)又是明文。

这个模型的一个优点是,圆函数F {\displaystyle {\rm {F}{\rm F}}不一定是可逆的,可以很复杂。

该图说明了加密过程。解密只需要将子键K n , K n - 1 , ... , K 1 {\displaystyle K_{n},K_{n-1},\ldots ,K_{1}}的顺序颠倒过来,K_{n},K_{n-1},\ldots,K_1使用相同的过程;这是加密和解密之间的唯一区别。

非平衡Feistel密码使用一种修改过的结构,其中L 1 {\displaystyle L_{1}}L_1R 1 {\displaystyle R_{1}R_1}的长度不相等。MacGuffin密码是这种密码的一个实验性例子。

Feistel结构还被用于除块密码器以外的其他密码算法中。例如,最佳非对称加密填充(OAEP)方案在某些非对称密钥加密方案中使用简单的Feistel网络来随机化密码文本。

费斯特尔网络对块密码的操作,其中P是明文,C是密文。Zoom
费斯特尔网络对块密码的操作,其中P是明文,C是密文。

费斯特尔密码器列表

Feistel或改性Feistel:Blowfish、Camellia、CAST-128、DES、FEAL、ICE、KASUMI、LOKI97、Lucifer、MARS、MAGENTA、MISTY1、RC5、TEA、Triple DESTwofish、XTEA、GOST 28147-89。

通用Feistel:CAST-256,MacGuffin,RC2RC6,Skipjack。

问题和答案

问:什么是费斯特尔密码?
答:费斯特尔密码是一种用于构建块状密码的对称结构,以德国IBM密码学家霍斯特-费斯特尔命名。它通常也被称为费斯特尔网络。

问:使用Feistel结构有什么优势?
答:使用Feistel结构的主要优点是,加密和解密操作非常相似,在某些情况下甚至完全相同,只需要颠倒一下密钥计划。这使实现这种密码所需的代码或电路的大小减少了近一半。此外,它的迭代性质使得在硬件中实现密码系统更加容易。

问:克劳德-香农是如何描述 "混淆和扩散 "的?
答:克劳德-香农将 "混乱和扩散 "描述为有大量的两种元素存在,以使攻击者难以破译加密信息。

问:使用什么技术来制造混乱和扩散?
答:混淆和扩散是通过比特洗牌(通常称为排列盒或P盒)和简单的非线性函数(通常称为替换盒或S盒),以及使用XOR的线性混合(在模块化代数的意义上)来创建的。比特洗牌产生了扩散效应,而置换则是用于混淆。

问:菲斯特尔网络是什么类型的密码?
答:Feistel网络是一种产品密码,它结合了多轮的重复操作,以安全地加密数据。

问:谁开发了这种类型的密码学?
答:Feistel结构是由德国IBM密码学家Horst Feistel开发的。

问:数据加密标准是基于这种类型的密码学吗?
答:是的,数据加密标准使用这种密码学,它利用上述相同的原则,在加密信息中制造混乱和扩散。

AlegsaOnline.com - 2020 / 2023 - License CC3