首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >严格雪崩准则(SAC)

严格雪崩准则(SAC)
EN

Cryptography用户
提问于 2018-07-04 03:59:42
回答 1查看 848关注 0票数 2

我想知道一步一步地构造AES S盒的SAC依赖矩阵。有人能帮我吗?

EN

回答 1

Cryptography用户

发布于 2018-07-04 21:25:16

这是一个简洁的解释,但应该足以让你得出结果。

首先,必须生成中间数据。

对于每个布尔函数和位掩码,您需要运行一个从0到255的循环$i$:

代码语言:javascript
运行
复制
testval = sbox(i) XOR sbox(i XOR mask)
bitval = testval AND 1
results(mask,0) += bitval

该比特是S盒输入$i$测试结果的低位.结果是给定掩码和布尔函数的所有比特之和,在本例中为布尔函数0。

对于其他布尔函数,在测试其他位而不是低位时,您必须正确地转移测试值:

代码语言:javascript
运行
复制
divisor = 2^booleanfunction
testval = sbox(i) XOR sbox(i XOR mask)
bitval = (testval / divisor) AND 1
results(mask,booleanfunction) += bitval

单位掩码的循环为0到7,因为对于一个具有8个输入位的S盒,该掩码是$2^{ loop }$。布尔函数的循环是从0到7,因为这是S盒有8个输出位的数量。下面是一个优化的循环来计算结果

代码语言:javascript
运行
复制
m = 0 to 7      [loop for masks]
i = 0 to 255    [s-box input entries]
n = 0 to 7      [boolean functions]

for m:
  mask = 2^m
  for i:
    testval = sbox(i) XOR sbox(i XOR mask)
    for n:
      divisor = 2^n
      bitval = (testval / divisor) AND 1
      results(m,n) += bitval

现在您已经计算了结果,只需将它们显示为一个矩阵:

代码语言:javascript
运行
复制
             boolean function
       7   6   5   4   3   2   1   0
   0  128 116 124 116 144 116 132 132 
   1  136 128 116 124 128 144 124 120 
m  2  128 136 128 144 120 128 132 132 
a  3  140 128 136 128 116 120 136 136 
s  4  136 140 128 128 132 116 128 116 
k  5  136 136 140 120 120 132 132 116 
   6  124 136 136 120 132 120 136 136 
   7  132 124 136 124 136 132 144 132 

这是对于单位掩码(一阶SAC)对于其他命令,位掩码的计算是不同的,并且会有更多的掩码,例如二阶有28个掩码。

票数 3
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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