我想知道一步一步地构造AES S盒的SAC依赖矩阵。有人能帮我吗?
发布于 2018-07-04 21:25:16
这是一个简洁的解释,但应该足以让你得出结果。
首先,必须生成中间数据。
对于每个布尔函数和位掩码,您需要运行一个从0到255的循环$i$:
testval = sbox(i) XOR sbox(i XOR mask)
bitval = testval AND 1
results(mask,0) += bitval
该比特是S盒输入$i$测试结果的低位.结果是给定掩码和布尔函数的所有比特之和,在本例中为布尔函数0。
对于其他布尔函数,在测试其他位而不是低位时,您必须正确地转移测试值:
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个输出位的数量。下面是一个优化的循环来计算结果
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
现在您已经计算了结果,只需将它们显示为一个矩阵:
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个掩码。
https://crypto.stackexchange.com/questions/60501
复制相似问题