我注意到有关置换和替换的混乱定义,这使我无法理解其区别。

置换会更改集合中不同元素的顺序,但是可以将其写为通过以下方式更改一个元素的函数:

那么,我们究竟如何区分这两个概念呢?

这个问题很有趣,因为我们在块密码中有这两个概念哪些S盒执行替换。问题在于该表用于将一个元素替换为另一个元素,就像排列一样。

#1 楼

如该答案和对另一个问题的答案所述,置换只是函数$ \ sigma:X {\ rightarrow} X $的数学术语,该函数将一个有限集$ X $映射到其自身,使得每个$ y \ X $中存在一个$ x \ X $,使得$ \ sigma(x)= y $。这也等同于在密码术中使用术语“替换”的方式,因此您的问题确实合理。

例如,“伪随机置换”一词表示一个函数,该函数也可能被描述为“伪随机”替代(但永远不会替代)。

作为DW在下面的评论中指出,术语P盒(置换盒)和S盒(替代盒)在分组密码设计中具有特定含义。假设您有一个P-box和S-box,它们都将一个长度为$ n $的位串映射到另一个长度为$ n $的位串。在这种情况下,P-box可以表示为函数$ \ sigma:[0..n-1] \ rightarrow [0..n-1] $,它将位串中的一个索引映射到另一个索引,而S简而言之,-box的功能更多。这意味着只有$ n! = \ Pi_ {i = 1} ^ ni $个将一个长度为$ n $的位串映射到另一个的不同的P盒,而还有$ 2 ^ n!-n!$个不同的将任何长度的位串映射的P盒。 $ n $到另一个,而不是P-box,也没有将两个不同的输入映射到相同的输出。

在分组密码设计领域中,使用上段中描述的特定含义的术语置换是明确的。但是,我建议使用术语“ P-box”,据我所知,它永远不会以与上述不同的含义使用。

为什么?好吧,举例来说,分组密码设计者假设决定合并例如设置块密码中使用的S-box的RC4密钥计划在技术上是正确的,因为将这些S-Box设置为“置换”的操作是正确的(因为这种S-box的一个属性可能是最好通过排列分解来了解设置)。但是,结果显然不是P-box。

因此,最好的答案可能是,必须与术语出现的上下文中的定义清楚区分。如有疑问,请避免使用可能引起混淆的术语。

#2 楼



置换

“ P-box”是所有位的置换,这意味着:它取一轮所有S-b​​ox的输出,对位,然后将它们送入下一轮的S盒中。一个好的P-box具有以下特性:任何S-box的输出位都分配给尽可能多的S-box输入。

替换

“ S-box”通常不只是位的排列。而是,一个好的S盒将具有以下特性:更改一个输入位将更改大约一半的输出位……所谓的“雪崩效应”。 S-box还具有每个输出位将取决于每个输入位的属性。

#3 楼

答案是,P和S盒子实际上是同一事物的两半。这就是人们将两者混淆的原因。
e-sushi的S-P网络图是同时需要两者的一个很好的例子。加密功能的目的是以一种不可预测的方式更改输入,无论是用于加密密码还是用于哈希。这意味着结果与输入的结果几乎没有相似之处。这就是香农的混淆和扩散原理。

操纵输入位的最佳理论方法(全都是位操纵的问题)是使用查找表将传入的字节替换为其存储的值,例如$ x = S [x] $中的$ S $中填充了随机数。对于一个字节来说很棒。 $ S $是可以存储为256个字节的$ 2 ^ 8 $值。 e-sushi显示了64位的加密,这是DES之类的常见块大小(我知道它是$ 2 \乘以32 $位,但是谁在计数?)这需要$ 2 ^ {64} $ $ S $中的64位字,在一个完美的世界中。实际上是$ 2 ^ {64} \ x 8 $字节或大约$ 10 ^ {20} $字节。足以容纳几张软盘。这是密码学处理大量数字的原因之一。

这些东西必须在从大型机到智能卡以及iButton的任何东西上运行,才能广泛接受流。 e-sushi向我们展示了16个较小的S盒,带有$ 2 ^ 4 $位输入。这需要$ 2 ^ 4 \ times $ 16个半字节或128个字节。惊人!所有存储需求都去了哪里?

问题是4位S框与1位输入框没有什么不同,即直接1-1映射。您牺牲了存储空间以减少位处理,从而降低了安全性和可逆性。因此,在再次执行所有操作之前,P框将尽可能广泛地分布S框输出。 e-sushi的P框在位级别具有1-1映射,但不是必须的。任何位都可以映射到其他位,因此输入和输出宽度不必匹配。您可以丢失位,也可以重复位。

将S和P框放在一起可以创建另一种函数,因此现在有了$ x = f(x)$。您可以将其称为Feistel函数。如果您真的很擅长,也可以将其称为Bent函数。在里面的某个地方,您可能还会进行一些模块化算术和/或按位运算,例如SHA-1。因此,您会一遍又一遍(令人惊讶地称为“回合”),直到您认为原始输入已被充分加密。您已将存储空间用于cpu周期/时间。

因此,总而言之,为了更好地处理位并在常用硬件上实现算法,您必须妥协并在两者之间执行平衡。 S和P盒。因此,您也可以平衡安全性。

#4 楼

尽管置换和置换(或运输)密码之间存在很多混淆,但是,我们可以从基础上有所作为。众所周知,替换密码是指单字母(如果我们以字母为例),而置换是指多字母。也就是说,对于替换密码中的每个单个字母将具有唯一的字母,并且在置换密码中的每个字母可以具有不同的值(字母)。