在一个例子中,我接触到了一个处理SPN的算法,首先,我想给出它的定义:
设l, m, 和N是正整数,\pi_s: \{0,1\}^l \to \{0,1\}^l是置换,\pi_p:\{1,...,lm\} \to \{1,...,lm\}是置换。让P = C = \{0,1\}^{lm}和K \subseteq (\{0,1\}^{lm})^{N+1}包含可以使用密钥调度算法从初始密钥K派生的所有可能的密钥调度。对于密钥调度(K^1, ..., K^{N+1}),我们使用已知的算法(我无法键入)加密明文x:
因此,我想做以下示例:
假设l = m = N = 4。将\pi_s定义为(带有输入z)和输出(用十六进制符号编写)\pi_s、(0 \leftrightarrow(0,0,0,0)、.、9 \leftrightarrow(1,0,0,1), A \leftrightarrow(1,0,1,0)等),并将\pi_p定义为:
\pi(1)=1、\pi(2)=5、\pi(3)=9、\pi(4)=13、\pi(5)=2、\pi(6)=6、\pi(7)=10、\pi(8)=14、\pi(9)=3、\pi(10)=7、\pi(11)=11、\pi(12)=15、\pi(13)=4、\pi(14)=8、\pi(15)=12、\pi(16)=16。
假设密钥为K = 0011 1010 1001 0100 1101 0110 0011 1111,明文x = 0010 0110 1011 0111,那么如何逐行应用(在算法中)?此外,我还想了解一下,例如,我们将w^{r-1} \oplus K^r 归因于u^r,为什么是v_{<i>}\leftarrow \pi_s(u^r_{<i>})?
考虑到v_{<i>} = (x_{{(i-1)}{l-1}}, ..., x_{il})
发布于 2022-01-05 15:45:48
这个问题被理解为;
我们有置换网络(SPN)
一条一条接一条的圆(有些部分由于我们不知道排列而没有计算)
[0010 0110 1011 0111] : w^r-1 as the round input
[0011 1010 1001 0100] : X-or with round key K^r
[0001 1100 0010 0011] : X-or result
[Sbox Sbox Sbox Sbox] : Apply the Sbox for each block i.e. \pi_x
[ Permute to Confuse] : Apply \pi_p for confussion没有定义密钥计划,所以我们不能像AES那样应用超过两轮或一轮(第一次x-或比带有子键x-或圆形结束的密钥)。
此外,我还想了解一下,例如,我们将w^{r-1} \oplus K^r 归因于u^r,为什么是v_{<i>}\leftarrow \pi_s(u^r_{<i>})?考虑到v_{<i>} = (x_{{(i-1)}{l-1}}, ..., x_{il})
https://crypto.stackexchange.com/questions/97965
复制相似问题