首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >置换网络(SPN)实例

置换网络(SPN)实例
EN

Cryptography用户
提问于 2022-01-04 21:27:41
回答 1查看 514关注 0票数 1

在一个例子中,我接触到了一个处理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})

EN

回答 1

Cryptography用户

发布于 2022-01-05 15:45:48

这个问题被理解为;

我们有置换网络(SPN)

  • 一种分组大小为lm的分组密码
  • K^r的圆键加法
  • \pi_s是扩散部分,它是输入输出大小为l的S盒,这是有效的,因为SPN需要可逆S盒,子指数也表明了这一点。
  • \pi_p是与lm大小混淆的步骤的置换。

一条一条接一条的圆(有些部分由于我们不知道排列而没有计算)

代码语言:javascript
复制
 [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})

  • w^{r-1} \oplus K^r 可能是键添加之前的输入。我们可以假设它是对回合的投入。
  • u^r是x-或键的输出。
  • v_{<i>}\leftarrow \pi_s(u^r_{<i>});如果我们仔细查看索引,这是将块大小转换为l大小的块,以便输入到\pi_s。在示例中,它的大小为4,我们在一轮中调用4 \pi_s
票数 1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/97965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档