Bagian ini memerlukan pengembangan. Anda dapat membantu dengan mengembangkannya.
Kotak-S memetakan nilai 8 bit, c, ke keluaran 8 bit, s = S(c).
Kotak-S AES
00
01
02
03
04
05
06
07
08
09
0a
0b
0c
0d
0e
0f
00
63
7c
77
7b
f2
6b
6f
c5
30
01
67
2b
fe
d7
ab
76
10
ca
82
c9
7d
fa
59
47
f0
ad
d4
a2
af
9c
a4
72
c0
20
b7
fd
93
26
36
3f
f7
cc
34
a5
e5
f1
71
d8
31
15
30
04
c7
23
c3
18
96
05
9a
07
12
80
e2
eb
27
b2
75
40
09
83
2c
1a
1b
6e
5a
a0
52
3b
d6
b3
29
e3
2f
84
50
53
d1
00
ed
20
fc
b1
5b
6a
cb
be
39
4a
4c
58
cf
60
d0
ef
aa
fb
43
4d
33
85
45
f9
02
7f
50
3c
9f
a8
70
51
a3
40
8f
92
9d
38
f5
bc
b6
da
21
10
ff
f3
d2
80
cd
0c
13
ec
5f
97
44
17
c4
a7
7e
3d
64
5d
19
73
90
60
81
4f
dc
22
2a
90
88
46
ee
b8
14
de
5e
0b
db
a0
e0
32
3a
0a
49
06
24
5c
c2
d3
ac
62
91
95
e4
79
b0
e7
c8
37
6d
8d
d5
4e
a9
6c
56
f4
ea
65
7a
ae
08
c0
ba
78
25
2e
1c
a6
b4
c6
e8
dd
74
1f
4b
bd
8b
8a
d0
70
3e
b5
66
48
03
f6
0e
61
35
57
b9
86
c1
1d
9e
e0
e1
f8
98
11
69
d9
8e
94
9b
1e
87
e9
ce
55
28
df
f0
8c
a1
89
0d
bf
e6
42
68
41
99
2d
0f
b0
54
bb
16
Tiap kolom ditentukan oleh nilai tempat satuan (nibel bawah) dan tiap baris ditentukan oleh nilai tempat enam belasan (nibel atas). Misalnya, 9a16 diubah ke b816.
Inversi kotak-S
Bagian ini memerlukan pengembangan. Anda dapat membantu dengan mengembangkannya.
Inversi kotak-S sejatinya adalah kotak-S yang dibalik pemetaannya. Misal, b816 dikembalikan ke 9a16.
Inversi kotak-S
00
01
02
03
04
05
06
07
08
09
0a
0b
0c
0d
0e
0f
00
52
09
6a
d5
30
36
a5
38
bf
40
a3
9e
81
f3
d7
fb
10
7c
e3
39
82
9b
2f
ff
87
34
8e
43
44
c4
de
e9
cb
20
54
7b
94
32
a6
c2
23
3d
ee
4c
95
0b
42
fa
c3
4e
30
08
2e
a1
66
28
d9
24
b2
76
5b
a2
49
6d
8b
d1
25
40
72
f8
f6
64
86
68
98
16
d4
a4
5c
cc
5d
65
b6
92
50
6c
70
48
50
fd
ed
b9
da
5e
15
46
57
a7
8d
9d
84
60
90
d8
ab
00
8c
bc
d3
0a
f7
e4
58
05
b8
b3
45
06
70
d0
2c
1e
8f
ca
3f
0f
02
c1
af
bd
03
01
13
8a
6b
80
3a
91
11
41
4f
67
dc
ea
97
f2
cf
ce
f0
b4
e6
73
90
96
ac
74
22
e7
ad
35
85
e2
f9
37
e8
1c
75
df
6e
a0
47
f1
1a
71
1d
29
c5
89
6f
b7
62
0e
aa
18
be
1b
b0
fc
56
3e
4b
c6
d2
79
20
9a
db
c0
fe
78
cd
5a
f4
c0
1f
dd
a8
33
88
07
c7
31
b1
12
10
59
27
80
ec
5f
d0
60
51
7f
a9
19
b5
4a
0d
2d
e5
7a
9f
93
c9
9c
ef
e0
a0
e0
3b
4d
ae
2a
f5
b0
c8
eb
bb
3c
83
53
99
61
f0
17
2b
04
7e
ba
77
d6
26
e1
69
14
63
55
21
0c
7d
Kriteria desain
Kotak-S Rijndael didesain khusus untuk tahan terhadap serangan analisis kriptografi linear dan diferensial. Caranya adalah dengan meminimalkan kolerasi transformasi linear antara masukan dan keluaran sekaligus meminimalkan peluang rambantan selisih.
Kotak-S Rijndael dapat ditukar dalam penyandian Rijndael.[1] Hal tersebut melemahkan tuduhan bahwa suatu pintu belakang dibuat dengan menggunakan kotak-S statis. Para pembuat mengeklaim bahwa struktur penyandian Rijndael seharusnya sudah cukup tahan terhadap analisis kriptografi linear dan diferensial jika kotak-S yang memiliki sifat korelasi/rambatan selisih "rata-rata" dipakai.
#include<stdint.h>#define ROTL8(x,shift) ((uint8_t) ((x) << (shift)) | ((x) >> (8 - (shift))))voidinitialize_aes_sbox(uint8_tsbox[256]){uint8_tp=1,q=1;/* perulangan: p * q == 1 dalam medan Galois */do{/* kalikan p dengan 3 */p=p^(p<<1)^(p&0x80?0x1B:0);/* bagi q dengan 3 (sama dengan perkalian dengan 0xf6) */q^=q<<1;q^=q<<2;q^=q<<4;q^=q&0x80?0x09:0;/* hitung transformasi afinnya */uint8_txformed=q^ROTL8(q,1)^ROTL8(q,2)^ROTL8(q,3)^ROTL8(q,4);sbox[p]=xformed^0x63;}while(p!=1);/* 0 adalah kasus khusus karena ia tidak memiliki inversi */sbox[0]=0x63;}