Rijndael规范在第7.2节中详细介绍了S盒的设计选择。他们描述了仿射映射的选择,如下所示:

我们选择的仿射映射本身具有非常简单的描述,但是如果与“反”映射结合使用,则会具有复杂的代数表达式。可以看成是
模多项式相乘后加:$ b(x)=(x ^ 7 + x ^ 6 + x ^ 2 + x)+ a(x)(x ^ 7 + x ^ 6 + x ^ 5 + x ^ 4 + 1)$ $ mod $ $ x ^ 8 + 1 $

模数已被选为最简单的模数。乘法多项式是从多项式互质数到模数中选择的,是最简单的描述。选择常数的方式应使S-box没有固定点(S-box(a)= a),也没有“相反的固定点”(S-box(a)=ā)。 >
乘法多项式为$ x ^ 7 + x ^ 6 + x ^ 5 + x ^ 4 + 1 $,这是不可约的,因此互质为模数$ x ^ 8 + 1 $。逆映射乘法是$ x ^ 7 + x ^ 5 + x ^ 2 $。
但是,$ x ^ 7 + x + 1 $也是不可约的,并且表示更为简单。它是7级最简单的不可约多项式。它的仿射周期也更长(8对4),据说更好。对于增加的常数有许多有效的选择,这些选择不会导致固定点或相反的固定点。逆映射乘法是$ x ^ 6 + x ^ 5 + x ^ 3 + x ^ 2 + 1 $,是模的互质数。
是否有明显的原因不使用更简单的多项式? Rijndael规范中的含义是它没有最简单的描述,事实并非如此。我的假设是在所得s-box或其逆中缺乏代数表达式的复杂性,但是我没有办法确定是否是这种情况。
update
考虑到原因可能是给定仿射多项式的s-box的统计性能,我将其与$ x ^ 7 + x + 1 $进行了比较,结果如下:
                             AES        x^7 + x + 1
SAC Relative Error           12.5%      9.4%            lower is better
SAC Satisfaction %           67.2%      67.2%           higher is better
Distance to SAC              432        432             lower is better
Negative DSAC                176        152             lower is better

2nd order SAC Rel Err        12.5%      12.5%           lower is better
2nd order SAC Sat %          56.7%      61.2%           higher is better
Dist to 2nd order SAC        1664       1424            lower is better
Negative 2nd order DSAC      844        684             lower is better

AVAL Relative Error          3.52%      3.12%           lower is better
Guaranteed Avalanche         339.2      339.2           my own metric

Bit Independence Rel Err     13.412%    12.856%         lower is better
Bit Independence Sat %       56.2%      63.8%           my own metric

它很明显,与选择的多项式相比,$ x ^ 7 + x + 1 $在许多s-box性能指标上都有更好的结果。
在测试中,我还发现Rijndael s-box具有自逆映射在0x73和0x8F,s-box和反s-box的输入产生相同的结果。这意味着可能没有足够仔细地选择加法常数。最佳常数似乎为0x15。

评论

我刚刚进行了SAC测试,实际上更简单的多项式的性能稍有提高。

您是否有证据表明这些指标与AES的安全性有关?是否存在已知的针对AES的理论(减少的回合)攻击,这些攻击可以通过这些指标更好的sbox来阻止?

@poncho不,我不知道。他们关注差分特性,这些测试中更好的性能通常意味着对差分密码分析的更高抵抗力。 AES s-box在这些方面已经非常出色,我要说的是,他们的仿射多项式选择不是从统计上更好的那些子集中选择的,因此这不是不使用更多参数的潜在原因。简单多项式。

@RichieFrame您是否进一步进行了此操作?我会做一个不错的硬件实现。

@RichieFrame,请在下面查看新答案。

#1 楼

由于我错误地重复了您的问题,而我们当中没有一个人得到了答案,因此,我请求帮助作者了解为什么如此选择这些参数。

仿射变换是向量空间操作$ (\ mathbb {F} _ {2})^ 8 $,其简单性来自以下事实:从一堆可能的转换中,所使用的转换也可以描述为多项式环乘以$ x ^ 8 +的乘积1 $。

满足以下条件:矩阵(或多项式视图中的被乘数常数)必须是可逆的,并且向量(或加法常数)应避免有固定点,而没有相反的固定点,它们仅具有

即时计算S-Box时,计时功能很有用,但是通过它们预先计算出的差异并不重要(我认为)。

#2 楼

更新:RichieFrame的Sbox比AES Sbox稍微复杂些,请参见下文,在代数表达式下。

我已经在Magma(此处输入链接描述)中编写了一个计算代数系统。我试图使其尽可能详细。此代码可在其链接上的在线计算器上运行。


(a ^ 7 + a ^ 6)* W ^ 255 +(a ^ 6 + a ^ 5 + a ^ 3 + a + 1)* W ^ 254 +(a ^ 4 + a ^ 3)* W ^ 253> +(a ^ 6 + a ^ 5)* W ^ 252 +(a ^ 4 + a ^ 2 + 1 )* W ^ 251 +(a ^ 6 + a ^ 5 + a ^ 4 + a ^ 2)* W ^ 250 +(a ^ 3 +
a ^ 2 + a + 1)* W ^ 249 + (a ^ 5 + a ^ 4 + a ^ 2)* W ^ 248 +(a ^ 7 + a ^ 6 + a ^ 2 +1)* W ^ 247 +
(a ^ 5 + a ^ 4 + a ^ 3 + a ^ 2 + a + 1)* W ^ 246 +(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 4 + a ^ 2 +
1)* W ^ 245 + (a ^ 5 + a ^ 4 + a ^ 2)* W ^ 244 +(a ^ 5 + a ^ 4 + a ^ 2 + a +1)* W ^ 243 +(a ^ 7
+ a ^ 6 + a ^ 5 + a ^ 4 + a ^ 3 + a ^ 2 + a)* W ^ 242 +(a ^ 7 + a ^ 6 + a ^ 4 + a)* W ^ 241 +
(a ^ 6 + a ^ 5 + a ^ 4 + a ^ 3 + a +1)* W ^ 240 +(a ^ 6 + a ^ 5 + a ^ 4 + a ^ 3 + a ^ 2)* W ^ 239
+(a ^ 6 + a ^ 5 + a ^ 4 + a +1)* W ^ 238 +(a ^ 6 + a ^ 5 + a ^ 4 + a ^ 2 + a)* W ^ 237 +(a ^ 3
+ a ^ 2 +1)* W ^ 236 +(a ^ 7 + a ^ 4 + a ^ 2 +1)* W ^ 235 +(a ^ 5 + a ^ 3 + a ^ 2 + a +
1)* W ^ 234 +(a ^ 5 + a ^ 4 + a ^ 3 + a)* W ^ 233 +(a ^ 6 + a ^ 5 + a ^ 4 + a ^ 3 + a ^ 2 + a +
1)* W ^ 232 +(a ^ 7 + a ^ 6 + a ^ 4)* W ^ 231 +(a ^ 7 + a ^ 5 + a ^ 2 +1)* W ^ 230 + a ^ 2 * W ^ 229
+(a ^ 7 + a + 1)* W ^ 228 +(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 4 + a ^ 2 +1) * W ^ 227 +(a ^ 7 + a ^ 6
+ a ^ 3 + a ^ 2 + a +1)* W ^ 226 +(a ^ 6 + a ^ 5 + a ^ 4 + a ^ 2 + 1)* W ^ 225 +(a ^ 7 + a ^ 2
+ a +1)* W ^ 224 +(a ^ 7 + a ^ 3 + a)* W ^ 223 +(a ^ 5 + a ^ 4 + a ^ 3 + a ^ 2 + a)* W ^ 222 +
(a ^ 7 + a ^ 6 + a ^ 4 + a ^ 3 + a ^ 2)* W ^ 221 +(a ^ 6 + a + 1)* W ^ 220 +(a ^ 6 + a ^ 4 + a ^ 3
+ a ^ 2 + a)* W ^ 219 +(a ^ 7 + a ^ 6 + a ^ 4 + a ^ 2 + 1)* W ^ 218 +(a ^ 6 + a ^ 5 + a ^ 4 +
a ^ 2 + a + 1)* W ^ 217 +(a ^ 7 + a ^ 5 + a ^ 2 + a)* W ^ 216 +(a ^ 7 + a ^ 6 + a ^ 2)* W ^ 215 +
(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 4 + a ^ 3 + a ^ 2 + a +1)* W ^ 214 +(a ^ 5 + a ^ 4 +1)* W ^ 213 +
(a ^ 7 + a ^ 6 + a ^ 2 + a + 1)* W ^ 212 +(a ^ 4 + a)* W ^ 211 +(a ^ 5 + a ^ 3 + a)* W ^ 210 +
(a ^ 7 + a ^ 6 + a +1)* W ^ 209 +(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 4)* W ^ 208 +(a ^ 3 + a ^ 2 + a +
1)* W ^ 207 +(a ^ 6 + a ^ 5 + a ^ 3 +1)* W ^ 206 +(a ^ 4 + a ^ 3 + a ^ 2 +1)* W ^ 205 +(a ^ 6
+ a ^ 4 + a ^ 3 + a +1)* W ^ 204 +(a ^ 4 + a ^ 3 + a)* W ^ 203 +(a ^ 7 + a ^ 3 + a ^ 2 +
a)* W ^ 202 +(a ^ 7 + a ^ 6 + a ^ 4 + a ^ 3 + a ^ 2 +1)* W ^ 201 +(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 4
+ a +1)* W ^ 200 +(a ^ 7 + a ^ 5 + a ^ 4 + a)* W ^ 199 +(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 4)* W ^ 198
+(a ^ 5 + a ^ 4 + a ^ 2)* W ^ 197 +(a ^ 5 + a ^ 3)* W ^ 196 +(a ^ 3 + a + 1)* W ^ 195 +(a ^ 6 +
a ^ 5 + a ^ 3 + a ^ 2 + a + 1)* W ^ 194 +(a ^ 7 + a + 1)* W ^ 193 +(a ^ 7 + a ^ 6 + a ^ 5 +
a)* W ^ 192 +(a ^ 7 + a ^ 6 + a ^ 4 + a + 1)* W ^ 191 +(a ^ 5 + a ^ 3 + a ^ 2 + a)* W ^ 190 +
(a ^ 7 + a ^ 6 + a ^ 2 + a +1)* W ^ 189 +(a ^ 7 + a ^ 5 +1)* W ^ 188 +(a ^ 7 + a ^ 6 + a ^ 4 +
a ^ 2 + a)* W ^ 187 +(a ^ 5 + 1)* W ^ 186 +(a ^ 7 + a ^ 3 + a ^ 2 + a + 1)* W ^ 185 +(a ^ 7 +
a ^ 6 + a ^ 5 + a ^ 3 + a ^ 2 +1)* W ^ 184 +(a ^ 6 +1)* W ^ 183 +(a ^ 7 + a ^ 4 + a ^ 3 +
1)* W ^ 182 + (a ^ 7 + a ^ 5 + a ^ 4 + a ^ 3)* W ^ 181 +(a ^ 7 + a ^ 4 + a)* W ^ 180 +(a ^ 7 +
a ^ 6 + a ^ 5 + a ^ 3 + a ^ 2 + 1)* W ^ 179 +(a ^ 7 + a ^ 6 + a ^ 2)* W ^ 178 +(a ^ 7 +
a ^ 3)* W ^ 177 +(a ^ 7 + a ^ 4 + a ^ 2 +1)* W ^ 176 +( a ^ 5 + 1)* W ^ 175 +(a ^ 6 + a ^ 5 +
a ^ 3)* W ^ 174 +(a ^ 6 + a ^ 5 + a + 1)* W ^ 173 +(a ^ 7 + a ^ 4 + a ^ 3 + a ^ 2)* W ^ 172 +
(a ^ 6 + a ^ 4 + a ^ 3 +1)* W ^ 171 +(a ^ 5 + a ^ 4 + a + 1)* W ^ 170 +(a ^ 7 + a ^ 6 + a ^ 4 +
a ^ 3 + 1)* W ^ 168 +(a ^ 6 + a ^ 5 + a ^ 4 + a ^ 3 + a ^ 2 + a +1)* W ^ 167 +(a ^ 5 + a ^ 3 +
a + 1)* W ^ 166 +(a ^ 7 + a ^ 2)* W ^ 165 +(a ^ 6 + a ^ 5 + a ^ 3 + a ^ 2)* W ^ 164 +(a ^ 7 +
a ^ 6 + a ^ 5 + a ^ 4)* W ^ 163 +(a ^ 7 + a ^ 3 + a)* W ^ 162 +(a ^ 7 + a ^ 4 + 1)* W ^ 161 +
(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 4 + a ^ 3 + a ^ 2 + a +1)* W ^ 160 +(a ^ 7 + a ^ 5 + a ^ 3 + a ^ 2 +
a) * W ^ 159 +(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 4 + a ^ 3 + a)* W ^ 158 +(a ^ 5 + a ^ 4 + a ^ 2 +
1)* W ^ 157 +(a ^ 7 + a ^ 5 + a ^ 4 + a + 1)* W ^ 156 + a ^ 7 * W ^ 155 +(a ^ 5 + a)* W ^ 154 +
a ^ 4 * W ^ 153 +(a ^ 5 + a ^ 4 + a ^ 3 + a ^ 2 +1)* W ^ 152 +(a ^ 6 + a ^ 5 + a ^ 3 +1) * W ^ 151
+(a ^ 6 + a ^ 5 + a ^ 3 + a +1)* W ^ 150 +(a ^ 4 + a ^ 2 +1)* W ^ 149 +(a ^ 6 + a ^ 4 + a ^ 3
+ a + 1)* W ^ 148 +(a ^ 6 + a ^ 4 + a ^ 3)* W ^ 147 +(a ^ 6 + a ^ 5 + a ^ 4 + a ^ 3 + a +
1)* W ^ 146 +(a ^ 4 + a ^ 3 + a ^ 2 + 1)* W ^ 145 +(a ^ 6 + a ^ 5 + a ^ 4 + a ^ 2 + 1)* W ^ 144 +
(a ^ 4 + a ^ 3 + a)* W ^ 142 +(a ^ 6 + a + 1)* W ^ 141 +(a ^ 7 + a ^ 5 + a ^ 3 + a ^ 2 +
a)* W ^ 140 +(a ^ 6 + 1)* W ^ 139 +(a ^ 7 + a ^ 4 + a ^ 2 + a)* W ^ 138 +(a ^ 6 + a ^ 4 +
a ^ 3)* W ^ 137 +(a ^ 7 + a ^ 3 + a)* W ^ 136 +(a ^ 7 + a ^ 4 + a ^ 2)* W ^ 135 +(a ^ 6 + a ^ 4 +
a ^ 3 + a +1)* W ^ 134 +(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 4 + a ^ 3 + a ^ 2)* W ^ 133 +(a ^ 4 + a +
1)* W ^ 132 +(a ^ 7 + a ^ 3 + a + 1)* W ^ 131 +( a ^ 6 + a ^ 5 + 1)* W ^ 130 +(a ^ 7 + a ^ 6 +
a ^ 5 + a ^ 2 + a)* W ^ 129 +(a ^ 6 + a ^ 5)* W ^ 128 +(a ^ 7 + a ^ 5 +1)* W ^ 127 +(a ^ 7 +
a ^ 6 + a ^ 5 +1)* W ^ 126 +(a ^ 6 + a ^ 5 + a ^ 4 + a + 1)* W ^ 125 +(a ^ 6 + a ^ 4 +
a)* W ^ 124 +(a ^ 7 + a ^ 6)* W ^ 123 +(a ^ 6 + a ^ 4 + a ^ 2)* W ^ 122 +(a ^ 7 + a ^ 6 + a ^ 5 +
a ^ 3 + a ^ 2 + a + 1) * W ^ 121 +(a ^ 7 + a ^ 6 + a ^ 4 + a ^ 3 + a +1)* W ^ 1 20 +(a ^ 6 +
a ^ 5 + a ^ 4 + a ^ 3 + a ^ 2 + a +1)* W ^ 119 +(a ^ 5 + a ^ 4 + a ^ 2 + 1 )* W ^ 118 +(a ^ 6 +
a ^ 3 +1)* W ^ 117 +(a ^ 7 + a ^ 6 + a ^ 5 + a)* W ^ 116 +(a ^ 7 + a ^ 5 + a ^ 3 + a ^ 2 +
1)* W ^ 114 +(a ^ 6 + a ^ 4 + a + 1)* W ^ 113 +(a + 1)* W ^ 112 +(a ^ 4 + a ^ 3 + a ^ 2 +
a)* W ^ 111 +(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 2 + a +1)* W ^ 110 +(a ^ 6 + a ^ 4 + a)* W ^ 109 +
(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 4 + a ^ 2 + a)* W ^ 108 + (a ^ 7 + a ^ 3 + a ^ 2 +1)* W ^ 107 +(a ^ 7
+ a ^ 6 + a ^ 5 + a ^ 3 + a ^ 2 + a +1)* W ^ 106 +(a ^ 7 + a ^ 5 + a)* W ^ 105 +(a ^ 7 + a ^ 6
+ a ^ 5 + a ^ 2 +1)* W ^ 104 +(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 2)* W ^ 103 +(a ^ 7 + a ^ 5 + a ^ 3 +
a ^ 2)* W ^ 102 +(a ^ 7 + a ^ 6 + a ^ 4 + a ^ 3 + a ^ 2 + a +1)* W ^ 101 +(a ^ 4 + a ^ 3 + a ^ 2
+ 1)* W ^ 100 + (a ^ 5 + a ^ 3 + a ^ 2 +1)* W ^ 99 +(a ^ 6 + a ^ 5 + a ^ 3 + a ^ 2 + a)* W ^ 98 +
(a ^ 7 + a ^ 4 + a ^ 3 + a ^ 2 +1)* W ^ 97 +(a ^ 7 + a ^ 5 + a ^ 4 + a ^ 2)* W ^ 96 +(a ^ 4 + a ^ 3
+ a ^ 2 +1)* W ^ 95 +(a ^ 6 + a ^ 5 + a ^ 3 + a ^ 2)* W ^ 94 +(a ^ 6 + a ^ 5 + a ^ 3 + a ^ 2 +
1)* W ^ 93 +(a ^ 6 + a ^ 5 + a ^ 2)* W ^ 92 +(a ^ 6 + a ^ 5 + a ^ 4 + a ^ 2 +1)* W ^ 91 +( a ^ 7 +
a ^ 3 + a ^ 2 + a +1)* W ^ 90 +(a ^ 6 + a ^ 3 + a ^ 2 + a +1)* W ^ 89 +(a ^ 7 + a ^ 3 +
a)* W ^ 88 +(a ^ 5 + a ^ 3 + 1)* W ^ 87 +(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 2 + a)* W ^ 86 +(a ^ 5 +
a ^ 4 + a ^ 3 + a ^ 2 + a)* W ^ 85 +(a ^ 7 + a ^ 6 + a)* W ^ 84 +(a ^ 7 + a ^ 6 + a ^ 2 +
a)* W ^ 83 +(a ^ 7 + a ^ 5 + a ^ 2 + 1)* W ^ 82 +(a ^ 7 + a ^ 5 + a ^ 2)* W ^ 81 +(a ^ 7 + a ^ 4 +
a ^ 3 + a + 1)* W ^ 80 +(a ^ 7 + a ^ 6 + a ^ 4 + a ^ 2 + 1)* W ^ 79 +(a ^ 7 + a ^ 6 + a ^ 5 +
a ^ 3 + a ^ 2 + 1)* W ^ 78 +(a ^ 7 + a ^ 5 + a ^ 3 + a ^ 2 + a +1)* W ^ 77 +(a ^ 6 + a ^ 5 +
a)* W ^ 76 +(a ^ 6 + a ^ 5 + a ^ 4)* W ^ 75 +(a ^ 7 + a ^ 5 + a ^ 4)* W ^ 74 +(a ^ 5 + a ^ 4 + a ^ 2
+ a +1)* W ^ 73 +(a ^ 7 + a ^ 5 + a ^ 4 + a ^ 2 +1)* W ^ 72 +(a ^ 6 + a ^ 5 + a ^ 2 +
1)* W ^ 71 +(a ^ 5 + a ^ 4 + a ^ 3 + a ^ 2)* W ^ 70 +(a ^ 6 + a ^ 5 + a ^ 3 + a ^ 2 + a +
1)* W ^ 69 +(a ^ 6 + a ^ 5 + 1)* W ^ 68 +(a ^ 5 + a ^ 4 + a ^ 3 + a ^ 2 + 1)* W ^ 67 +(a ^ 6 +
a ^ 5 + a ^ 3 + a ^ 2)* W ^ 66 +(a ^ 7 + a ^ 5 + a ^ 4 + a ^ 3 + a ^ 2 +1)* W ^ 65 +(a ^ 7 + a ^ 6
+ a ^ 5 + a ^ 3 + a ^ 2)* W ^ 64 +(a ^ 6 + a ^ 5 + a ^ 4 + a ^ 2 + a)* W ^ 63 +(a ^ 5 +
a ^ 4)* W ^ 62 +(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 3)* W ^ 61 +(a ^ 7 + a ^ 5 + a ^ 2 + a + 1)* W ^ 60 +
a ^ 3 * W ^ 59 + a ^ 4 * W ^ 58 +(a ^ 4 + a +1)* W ^ 57 +(a ^ 6 + a ^ 5 + a ^ 4 + a ^ 3 +1)W ^ 56
+ aW ^ 55 +(a ^ 6 + a + 1)* W ^ 54 +(a ^ 6 + a ^ 5 + 1)* W ^ 53 +(a ^ 7 + a ^ 6 + a ^ 5 +
a ^ 4 + a ^ 3 +1)* W ^ 52 +(a ^ 7 + a)* W ^ 51 +(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 3 +1)* W ^ 50 +
(a ^ 6 + a + 1)* W ^ 49 +(a ^ 5 + a ^ 4 + a ^ 3 + a ^ 2)* W ^ 48 +(a ^ 7 + a ^ 3 + 1)* W ^ 47 +
(a ^ 7 + a ^ 5 + a ^ 3 + a ^ 2 + a + 1)* W ^ 46 +(a ^ 7 + a ^ 6 + a ^ 4 + a ^ 2 + a)* W ^ 45 +
(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 4 + a ^ 3 + 1)* W ^ 44 +(a ^ 7 + a ^ 6 + a ^ 4 + a ^ 3 + 1)* W ^ 43 +
(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 2 + a +1)* W ^ 42 +(a ^ 7 + a ^ 6 + a ^ 3 + a)* W ^ 41 +(a ^ 6 +
a ^ 5 + a ^ 3 + a ^ 2)* W ^ 40 +(a ^ 6 + a ^ 5 + a ^ 4 + a ^ 3 + 1)* W ^ 39 +(a ^ 7 + a ^ 2 +
a)* W ^ 38 +(a ^ 3 + a ^ 2)* W ^ 37 +(a ^ 7 + a ^ 4 + a)* W ^ 36 +(a ^ 6 + a + 1 )* W ^ 35 +
(a ^ 6 + a ^ 4 + a ^ 3 +1)* W ^ 34 +(a ^ 7 + a ^ 5 + a ^ 2 +1)* W ^ 33 +(a ^ 5 + a ^ 3 + a ^ 2 +
1)* W ^ 32 +(a ^ 4 + a ^ 3 + 1)* W ^ 31 +(a ^ 7 + a ^ 6 + a ^ 4 + a ^ 3 + a ^ 2 + 1)* W ^ 30 +
(a ^ 5 + a ^ 4 + a ^ 3 + a ^ 2)* W ^ 29 +(a ^ 4 +1)* W ^ 28 +(a ^ 7 + a ^ 6 + a ^ 4)* W ^ 27 +
(a ^ 6 + a ^ 4 + a ^ 3)* W ^ 26 +(a ^ 7 + a ^ 5 + a ^ 4 + a ^ 3 + a)* W ^ 25 +(a ^ 5 + a ^ 4 + a +
1)* W ^ 24 +(a ^ 4 + a ^ 2)* W ^ 23 +(a ^ 7 + a ^ 6 + a ^ 4 + a)* W ^ 22 +(a ^ 6 + a ^ 5 +
a)* W ^ 21 +(a ^ 6 + a ^ 5 + a ^ 4 + a ^ 2 + a + 1)* W ^ 20 +(a ^ 7 + a ^ 6 + a ^ 4 + a ^ 3 + a
+ 1)* W ^ 19 +(a ^ 4 + a + 1 )* W ^ 18 +(a ^ 7 + a ^ 5 + a ^ 4 + a ^ 2 + a)* W ^ 17 +(a ^ 7 +
a ^ 6 + a ^ 3 + a ^ 2 + a)* W ^ 16 +(a ^ 6 + a ^ 3 + a ^ 2 +1)* W ^ 15 +(a ^ 4 + a ^ 3)* W ^ 14 +
(a ^ 4 + a ^ 3)* W ^ 13 +(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 2 + a)* W ^ 12 +(a ^ 7 + a ^ 6 + a ^ 4 + a ^ 3
+ a ^ 2)* W ^ 11 +(a ^ 7 + a ^ 4 + a ^ 2 + a +1)* W ^ 10 +(a ^ 7 + a ^ 5 + a ^ 4 + 1 )* W ^ 9 +
(a ^ 7 + a ^ 6 + 1)* W ^ 8 + a ^ 6 * W ^ 7 +(a ^ 7 + a ^ 6 + a ^ 5 + a ^ 3 + a + 1)* W ^ 6 +(a ^ 7 +
a ^ 5 + a ^ 4 + a)* W ^ 5 +(a ^ 7 + a ^ 4)* W ^ 4 +(a ^ 5 + a ^ 4)* W ^ 3 +(a ^ 4 + a ^ 3 + a ^ 2 +


首先我在AES Sbox的代数表达式上方显示。
看起来几乎所有W的幂从0到255 [我已经检查过,并且256个系数中的253个非零]。因此,这个表达式在代数上非常复杂。

如果将SBox映射表作为表提供,我也可以计算其代数表达式,我们可以对其进行比较。

我发现RichieFrame的SBox的代数表达式,它的非零元素比AES多2个,因此稍微复杂一些。我没有做过反向SBox,因为我必须手动插入“,0x”类型的分隔符。

下面我解释代码。

我从十六进制开始子字节列表。


0xCA,0x82、0xC9、0x7D,0xFA,0x59、0x47、0xF0、0xAD,0xD4、0xA2、0xAF,0x9C,0xA4、0x72、0xC0,
0xB7、0xFD,0x93、0x26、0x36、0xF 0xCC,0x34、0xA5、0xE5、0xF1、0x71、0xD8、0x31、0x15,
0x04、0xC7、0x23、0xC3、0x18、0x96、0x05、0x9A,0x07、0x12、0x80、0xE2、0xE2 0xB2,0x75,
0x09,0x83,0x2C,0x1A,0x1B,0x6E,0x5A,0xA0,0x52,0x3B,0xD6,0xB3,0x29,0xE3,0x2F,0x84,
0xD0、0xEF,0xAA,0xFB,0x43、0x4D,0x33、0x85、0x85 0x02、0x7F,0x50、0x3C,0x9F,0xA8,
0x51、0xA3、0x40、0x8F,0x92、0x9D,0x38、0xF5、0xBC,0xB6、0xDA,0x21、0x10、0xFF,0xF3 /> 0xCD,0x0C,0x13、0xEC,0x5F,0x97、0x44、0x17、0xC4、0xA7、0x7E,0x3D,0x64、0x5D,0x19、0x73,
0x60、0x81、0x4F,0xDC,0x22 0x90、0x88、0x46、0xEE,0xB8、0x14、0xDE,0x5E,0x0B,0xDB,
0xE0、0x32、0x3A,0x0A,0x49、0x06、0 x24、0x5C,0xC2、0xD3、0xAC,0x62、0x91、0x95、0xE4、0x79,
0xE7、0xC8、0x37、0x6D,0x8D,0xD5、0x4E,0xA9、0x6C,0x56、0x56、0x56 0x7A,0xAE,0x08,
0xBA,0x78、0x25、0x2E,0x1C,0xA6、0xB4、0xC6、0xE8、0xDD,0x74、0x1F,0x4B,0xBD,0x8B,0x8A,
0 0xB5、0x66、0x48、0x03、0xF6、0x0E,0x61、0x35、0x57、0xB9、0x86、0xC1、0x1D,0x9E,
0xE1、0xF8、0x98、0x11、0x69、0xD9、0x9、0xE9 0x1E,0x87、0xE9、0xCE,0x55​​、0x28、0xDF,
0x8C,0xA1、0x89、0x0D,0xBF,0xE6、0x42、0x68、0x41、0x99、0x2D,0x0F,0xB0、0x54、0xB0、0x54 br />];

“ SubBytes中的前几个条目为整数”; SBHex [1..5];
//岩浆将其转换为整数

函数Pad(u,n)

if(#u eq 8)then
返回u;
else
返回[0:[1..8-#u]中的k] cat u;
if结束;
end function; //将零填充为8位数字

SBList:= [Pad(IntegerToSequence(SBHex [k],2),8):[1 ..#SBHex]中的k];
“子字节中作为向量的前几个条目”; SBList [1..5];

R:= PolynomialRing(GF(2));
m:= x ^ 8 + x ^ 4 + x ^ 3 + x + 1; //来自AES定义的场多项式
FF:= ext; //在AES

SBLF中定义的GF(2 ^ 8):= [[GF(2)!(IntegerRing(2)!SBList [k,i]):[1 .. 8]]:[1 ..#SBList]中的k;

“一些随机字段元素,a是上面定义的m的根”;
[1.中的k]。 .3]做Random(FF);结束于

“一些元素作为矢量和多项式”;

[1..5]中k的作用
SBLF [k];
SequenceToElement(SBLF [k],FF);
结束于;

SBFF:= [SequenceToElement(SBLF [k],FF):[1 ..#SBList]中的k];
// GF(2 ^ 8)的元素列表以SubBytes顺序
Ident:= [[0]] cat [Reverse(IntegerToSequence(k,2)):[1.中的k。 255]];
Ident:= [Pad(Ident [k],8):[1..256]中的k];
“在替换之前的前几个未排序(输入到SBox的元素) >正常顺序”;
Ident [1..5];
IdentFF:= [SequenceToElement([GF(2)!(IntegerRing(2)!Ident [k,i]):i in [ 1..8]],FF):[1 ..#SBList]]中的k;
“这是GF(2 ^ 8)中元素的列表,未排序”;
“第一个少数未排序的元素作为字段元素“;
IdentFF [1..5];
R2:= PolynomialRing(FF);
”将W定义为FF上多项式的不确定对象,即,> GF(2 ^ 8)AES“;

” SBox的代数表达式“;
插值(IdentFF,SBF F);


评论


$ \ begingroup $
那么在这种情况下变量a和W是什么?
$ \ endgroup $
–Q-Club
18年3月14日在7:07

$ \ begingroup $
a是GF(2 ^ 8)生成不可约多项式m(x)的根。由于多项式不是不可约的,因此它的幂不能生成该字段的所有元素,因此只能将其写为a中不超过8的多项式。 W只是不确定的,因为我们正在考虑从GF(2 ^ 8)到其自身的映射,并且有限域之间的所有映射都可以唯一地表示为多项式。因此,用一个字段元素(a中的多项式)代替W,减少所得多项式表达式mod m(a),然后获得与该输入对应的输出到SubBytes中。
$ \ endgroup $
– kodlu
18-3-14的11:21

$ \ begingroup $
s-box和反向的表:pastebin.com/pqL4HnzD
$ \ endgroup $
– Richie车架
18年3月14日在12:23

$ \ begingroup $
您有255个非零系数,并以2个系数击败了AES选择。当然,两者几乎都完全为非零[256]。
$ \ endgroup $
– kodlu
18-3-15的3:54

$ \ begingroup $
AES s盒应该只有9个项,我认为它的倒数应该是253,您确定计算正确吗?
$ \ endgroup $
– Richie车架
18 Mar 15 '18在5:03