SP网络

在密码学中,SP网络,或称替换-换位网络SPN),是AES(Rijndael)、3-Way、Kalyna、Kuznyechik、PRESENT、SAFER、SHARK和Square等块密码算法中使用的一系列链接数学运算。

这种网络将明文块和密钥作为输入,并应用几个交替的"轮"或"层"的替换盒(S-盒)和换位盒(P-盒)来产生密文块。S-boxes和P-boxes将输入位的(子)块转化为输出位。这些变换通常是在硬件中高效执行的操作,如独占或(XOR)和位向旋转。在每一轮中引入密钥,通常是以"圆密钥"的形式衍生出来的。(在一些设计中,S盒本身依赖于密钥)。

解密只需将过程反过来(使用S盒和P盒的反转,并按相反的顺序应用圆键)即可。

S-box将一小块比特(S-box的输入)替换成另一块比特(S-box的输出)。这种替换应该是一对一的,以确保可逆性(从而确保解密)。特别是输出的长度应该和输入的长度一样(右图中的S-box有4个输入位和4个输出位),这和一般的S-box也可以改变长度不同,比如DES(数据加密标准)。一个S-box通常不是简单的位的排列组合。相反,一个好的S-box会有这样的特性:改变一个输入位会改变大约一半的输出位(或雪崩效应)。它还将具有这样的特性:每个输出位将取决于每个输入位。

一个P-box是所有比特的排列组合:它把某一轮所有S-box的输出,排列组合,并把它们送入下一轮的S-box。一个好的P-box具有这样的特性:任何S-box的输出位都会被分配给尽可能多的S-box输入。

在每一轮,圆键(通过一些简单的操作获得,例如使用S盒和P盒)使用一些分组操作,通常是XOR组合。

单独一个典型的S-盒或单独一个P-盒并不具有太多的密码强度:S-盒可以被认为是一种替换密码,而P-盒可以被认为是一种转置密码。然而,一个设计良好的SP网络,其S盒和P盒的几轮交替已经满足香农的混淆和扩散特性

  • 扩散的原因如下。如果一个人改变了明文中的一个位子,那么它就会被送入一个S盒,它的输出会在几个位子上发生变化,然后所有这些变化被P盒分配到几个S盒中,因此所有这些S盒的输出又在几个位子上发生变化,以此类推。做几个回合,每个比特都会来回变化几次,因此,到最后,密文已经完全改变了,是一种伪随机的方式。特别是,对于一个随机选择的输入块,如果翻转第i位,那么对于任何ij,第j个输出位发生变化的概率大约是一半,这就是严格雪崩准则。反之亦然,如果改变密文的一个位,然后试图解密,结果是一个与原始明文完全不同的信息--SP密码是不容易变通的。
  • 混乱的原因与扩散的原因完全一样:改变密钥的一个位子会改变几个圆密钥,而每个圆密钥的每一次改变都会扩散到所有位子上,改变密文的方式非常复杂。
  • 即使攻击者以某种方式获得一个明文对应一个密文--已知明文攻击,或者更糟糕的是,选定明文或选定密文攻击--混乱和扩散使攻击者难以恢复密钥。

虽然使用S盒(如DES)的Feistel网络与SP网络十分相似,但也有一些区别,使得这种或那种网络在某些情况下更适用。对于给定的混淆和扩散量,SP网络具有更多的"内在并行性",因此--给定一个具有许多执行单元的CPU--可以比Feistel网络计算得更快。执行单元少的CPU--比如大多数智能卡--不能利用这种固有的并行性。另外SP密码要求S盒是可反转的(执行解密);Feistel内部函数没有这样的限制,可以构造为单向函数。


AlegsaOnline.com - 2020 / 2023 - License CC3