数学建模社区-数学中国

标题: AES加密算法的若干个问题? [打印本页]

作者: wangzheng3056    时间: 2013-8-6 09:36
AES每一个圈变换由以下三个层组成:
0 [; X+ w; w& m- @" D, d( m% X非线性层——进行Subbyte变换;+ w# [) i  ]* E2 t( I+ i
线行混合层——进行ShiftRow和MixColumn运算;
5 m1 h' U* ~' r密钥加层——进行AddRoundKey运算。& k  `! W4 ^9 B( w
① Subbyte变换是作用在状态中每个字节上的一种非线性字节转换,可以通过计算出来的S盒进行映射。2 B( h) J4 N1 W) K2 W; t
② ShiftRow是一个字节换位。它将状态中的行按照不同的偏移量进行循环移位,而这个偏移量也是根据Nb的不同而选择的[3]。
3 t) \2 H0 S7 I$ H7 v' T; J) U6 c③ 在MixColumn变换中,把状态中的每一列看作GF(28)上的多项式a(x)与固定多项式c(x)相乘的结果。 b(x)=c(x)*a(x)的系数这样计算:& U! s: R3 R% c& j* |9 _
& ?+ `7 _* g$ S# ?- D! _# t
*运算不是普通的乘法运算,而是特殊的运算,即 b(x)=c(x)·a(x)(mod x4+1) 对于这个运算 b0=02。a0+03。a1+a2+a3 令xtime(a0)=02。a0
* R) l- E8 M3 n( _4 a0 w; e6 e2 T
其中,符号“。”表示模一个八次不可约多项式的同余乘法[3]。4 w, r; t, N7 E$ y1 L  N. [$ s2 \
; b9 \: r% v2 \" v3 U/ @) i4 Z8 U  B6 v
11.jpg
9 O2 }' W& Q1 S) s4 b6 |+ _" N7 Q( s, ?
对于逆变化,其矩阵C要改变成相应的D,即b(x)=d(x)*a(x)。1 R! G! ^, [+ f% P( _7 }  V1 r8 s
④ 密钥加层运算(addround)是将圈密钥状态中的对应字节按位“异或”。, [( ~: q- ~" ?) g6 G9 Z
⑤ 根据线性变化的性质[1],解密运算是加密变化的逆变化。这里不再详细叙述。
1 ^1 G5 K' V. f: `6 i/ O" v* w* X二、轮变化     D6 Z3 ]( [% p/ s# Y
% e+ a* p) H2 B/ j7 w
对不同的分组长度,其对应的轮变化次数是不同的,如表1所列。
6 _) u$ Q& l( @/ t3 @! N# W4 z& z8 ~3 k8 M1 E
1.jpg
8 l! j$ D% o8 C% `# K$ _! x0 G6 p& p  D# }( F
三、密钥扩展  6 {3 p$ t* z+ A4 h

. @. x. q* G( t; o. R! J4 RAES算法利用外部输入密钥K(密钥串的字数为Nk),通过密钥的扩展程序得到共计4(Nr+1)字的扩展密钥。它涉及如下三个模块:4 a% z! @; M) {7 B9 [' L: o
) Z! k* U2 a0 T! e* {
① 位置变换(rotword)——把一个4字节的序列[A,B,C,D]变化成[B,C,D,A];4 ^+ ?. X; ?4 X

; V- ]  ^: h5 U7 D& ~6 @6 ?② S盒变换(subword)——对一个4字节进行S盒代替;
7 e2 C7 E! ~) W* j9 \; W# e" @. M7 `& A+ ?. @: y
③ 变换Rcon——Rcon表示32位比特字[xi-1,00,00,00]。
! ^7 S& w% p& `4 |: |8 i2 @0 f) u) s% d
这里的x是(02),如 Rcon[1]=[01000000];Rcon[2]=[02000000];Rcon[3]=[04000000]……   ! N8 d( m. P, A: s0 I

1 {& v6 W) J: b+ Y扩展密钥的生成:扩展密钥的前Nk个字就是外部密钥K;以后的字W[[i]]等于它前一个字W[[i-1]]与前第Nk个字W[[i-Nk]]的“异或”,即W[[i]]=W[[i-1]]W[[i- Nk]]。但是若i为Nk的倍数,则W[i]=W[i-Nk]Subword(Rotword(W[[i-1]]))Rcon[i/Nk]。
& u! \& S, z/ M
* _# c% U0 t3 p: |& {AES的加密与解密流程。( `, E: A9 q' R, d
- Z- R/ [! c$ q0 }& o+ }) l
12.jpg




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5