ΠΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½Ρ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ. Π΅. ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΡΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° AES.
Π‘Ρ
Π΅ΠΌΠ° ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΡΠΈΠΏΡΠΎΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½Π° ΡΠ°ΠΊ:
- 1. Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ° KeyExpansion.
- 2. 9 ΡΠ°ΡΠ½Π΄ΠΎΠ² ΠΈΠ· ΡΠ΅ΡΡΡΠ΅Ρ
ΡΠ°Π³ΠΎΠ² ΠΊΠ°ΠΆΠ΄ΡΠΉ:
- 2.1 AddRoundKey — ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠ°ΡΠ½Π΄ΠΎΠ²ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ.
- 2.2 InvMixColumns — ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠΎΠ»Π±ΡΠΎΠ² state.
- 2.3 InvShiftRows — ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΄Π²ΠΈΠ³ ΡΡΡΠΎΠΊ state.
- 2.4 InvSubBytes — ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ Π·Π°ΠΌΠ΅Π½Π° Π±Π°ΠΉΡΠΎΠ² state ΠΏΠΎ ΡΠ°Π±Π»ΠΈΡΠ΅ Π·Π°ΠΌΠ΅Π½.
- 3. ΠΠ°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ 10-ΠΉ ΡΠ°ΡΠ½Π΄:
- 3.1 AddRoundKey — ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠ°ΡΠ½Π΄ΠΎΠ²ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ.
- 3.2 InvShiftRows — ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΄Π²ΠΈΠ³ ΡΡΡΠΎΠΊ state.
- 3.3 InvSubBytes — ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ Π·Π°ΠΌΠ΅Π½Π° Π±Π°ΠΉΡΠΎΠ² state ΠΏΠΎ ΡΠ°Π±Π»ΠΈΡΠ΅ Π·Π°ΠΌΠ΅Π½.
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ InvMixColumns. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ InvMixColumns ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΌ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ MixColumns. Π ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ InvMixColumns, ΡΡΠΎΠ»Π±ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ (state) ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΡ Π½Π°Π΄ ΠΏΠΎΠ»Π΅ΠΌ F (28) ΠΈ ΡΠΌΠ½ΠΎΠΆΠ°ΡΡΡΡ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ x4 + 1 Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΌ ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠΎΠΌ d (x) = a-1(x), Π² ΠΏΠΎΠ»Π΅ F (28):
d (x) = 0Bhx3 + 0Dhx2 + 09hx + 0Eh.
ΠΡΠΎΡΠ΅ΡΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠΎΠ² ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠΌΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ:
=.
Π³Π΄Π΅ ΡΠ½ΠΎΠΌΠ΅Ρ ΡΡΠΎΠ»Π±ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° state ΠΈ 0 Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ, Π±Π°ΠΉΡΡ ΡΡΠΎΠ»Π±ΡΠ° Ρ Π·Π°ΠΌΠ΅Π½ΡΡΡΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π½Π° Π±Π°ΠΉΡΡ:
;
;
;
;
ΠΠ°Π½Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
=.
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ InvShiftRows. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ InvShiftRows ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ShiftRows. ΠΠ°ΠΉΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
ΡΡΠ΅Ρ
ΡΡΠ΄ΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° state ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΄Π²ΠΈΠ³Π°ΡΡΡΡ Π²ΠΏΡΠ°Π²ΠΎ. Π‘ΡΡΠΎΠΊΠ° 1 (Π½ΡΠΌΠ΅ΡΠ°ΡΠΈΡ Ρ Π½ΡΠ»Ρ) ΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π½Π° 1 Π±Π°ΠΉΡ, ΡΡΡΠΎΠΊΠ° 2 — Π½Π° 2 Π±Π°ΠΉΡΠ°, ΡΡΡΠΎΠΊΠ° 3 — Π½Π° 3 Π±Π°ΠΉΡΠ°.
Π ΠΈΡΡΠ½ΠΎΠΊ 6 — ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° InvShiftRows.
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ InvSubBytes. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ InvSubBytes Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ Π·Π°ΠΌΠ΅Π½Ρ Π±Π°ΠΉΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ Π·Π°ΠΌΠ΅Π½. ΠΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° Π·Π°ΠΌΠ΅Π½ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π½ΠΈΠΆΠ΅:
Π’Π°Π±Π»ΠΈΡΠ° 5
|
| | | | | | | | | | a. | b. | c. | d. | e. | f. |
| | | 6a. | d5. | | | a5. | | bf. | | a3. | 9e. | | f3. | d7. | fb. |
| 7c. | e3. | | | 9b. | 2f. | ff. | | | 8e. | | | c4. | de. | e9. | cb. |
| | 7b. | | | a6. | c2. | | 3d. | ee. | 4c. | | 0b. | | fa. | c3. | 4e. |
| | 2e. | a1. | | | d9. | | b2. | | 5b. | a2. | | 6d. | 8b. | d1. | |
| | f8. | f6. | | | | | | d4. | a4. | 5c. | cc. | 5d. | | b6. | |
| 6c. | | | | fd. | ed. | b9. | da. | 5e. | | | | a7. | 8d. | 9d. | |
| | d8. | ab. | | 8c. | bc. | d3. | 0a. | f7. | e4. | | | b8. | b3. | | |
| d0. | 2c. | 1e. | 8f. | ca. | 3f. | 0f. | | c1. | af. | bd. | | | | 8a. | 6b. |
| 3a. | | | | 4f. | | dc. | ea. | | f2. | cf. | ce. | f0. | b4. | e6. | |
| | ac. | | | e7. | ad. | | | e2. | f9. | | e8. | 1c. | | df. | 6e. |
a0. | | f1. | 1a. | | 1d. | | c5. | | 6f. | b7. | | 0e. | aa. | | be. | 1b. |
b0. | fc. | | 3e. | 4b. | c6. | d2. | | | 9a. | db. | c0. | fe. | | cd. | 5a. | f4. |
c0. | 1f. | dd. | a8. | | | | c7. | | b1. | | | | | | ec. | 5f. |
d0. | | | 7f. | a9. | | b5. | 4a. | 0d. | 2d. | e5. | 7a. | 9f. | | c9. | 9c. | ef. |
e0. | a0. | e0. | 3b. | 4d. | ae. | 2a. | f5. | b0. | c8. | eb. | bb. | 3c. | | | | |
f0. | | 2b. | | 7e. | ba. | | d6. | | e1. | | | | | | 0c. | 7d. |
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ AddRoundKey. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ AddRoundKey, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π² ΠΏΡΠ½ΠΊΡΠ΅ ΡΠ°Π½Π΅Π΅ Π² ΠΏΡΠ½ΠΊΡΠ΅ 4.4, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΌ Π΄Π»Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ΅Π±Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ XOR.