ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ β WPA2-AES, WPA2-TKIP ΠΈΠ»ΠΈ ΠΈ ΡΠΎ ΠΈ Π΄ΡΡΠ³ΠΎΠ΅
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Β«ΡΠ°Π·ΠΎΠ±Π»Π°ΡΠ°ΡΡΠΈΡ Β» ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΉ ΠΎ Π²Π·Π»ΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΈΠ»ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΡΡΡΠ΅Π³ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π±Π΅ΡΠΏΡΠΎΠ²ΠΎΠ΄Π½ΡΡ ΡΠ΅ΡΠ΅ΠΉ. Π’Π°ΠΊ Π»ΠΈ ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΡΠ΅Π³ΠΎ ΡΡΠΎΠΈΡ Π±ΠΎΡΡΡΡΡ, ΠΈ ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎΠ±Ρ Π΄ΠΎΡΡΡΠΏ Π² Π²Π°ΡΡ ΡΠ΅ΡΡ Π±ΡΠ» ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π·Π°ΡΠΈΡΠ΅Π½? Π‘Π»ΠΎΠ²Π° WEP, WPA, 802.1x, EAP, PKI Π΄Π»Ρ Π²Π°Ρ ΠΌΠ°Π»ΠΎ ΡΡΠΎ Π·Π½Π°ΡΠ°Ρ? ΠΡΠΎΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠ±Π·ΠΎΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π΅ΡΡΠΈ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ Π²ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΠΈΠ΅ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π΄ΠΈΠΎ-Π΄ΠΎΡΡΡΠΏΠ°. Π― ΠΏΠΎΠΏΡΠΎΠ±ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π±Π΅ΡΠΏΡΠΎΠ²ΠΎΠ΄Π½Π°Ρ ΡΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π΅ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»ΠΈΠΌΡΠΉ Π±Π°ΡΡΠ΅Ρ Π΄Π»Ρ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠ° (Π΄ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π΅Π»Π°, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ).
ΠΡΠ½ΠΎΠ²Ρ
ΠΡΠ±ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠΎΡΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ° (ΡΠ΅ΡΠΈ), ΠΈ Π±Π΅ΡΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΎ Π½Π°:- ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ — ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈ ΡΠΎΡΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ ΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ, ΡΡΠΎ Ρ Π½ΠΈΡ Π΅ΡΡΡ ΠΏΡΠ°Π²ΠΎ ΠΎΠ±ΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ;
- Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠΈ — ΠΊΠ°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΊΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ»ΡΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π±Π΅ΡΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΡΠΈ, Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π΅Π΅ ΠΈΠΌΡ (SSID), ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ Π°Π½ΠΎΠ½ΡΠΈΡΡΡΡΡΡ ΡΠΎΡΠΊΠΎΠΉ Π΄ΠΎΡΡΡΠΏΠ° Π² ΡΠΈΡΠΎΠΊΠΎΠ²Π΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ beacon ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ . ΠΠΎΠΌΠΈΠΌΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠΎΠΆΠ΅Π»Π°Π½ΠΈΡ ΠΏΠΎ QoS, ΠΏΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ 802.11n, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΊΠΎΡΠΎΡΡΠΈ, ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΠΏΡΠΎΡΠ΅Π΅. ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠΊΠ΅. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ:
- Open — ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΎΡΠΊΡΡΡΠ°Ρ ΡΠ΅ΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΡΠ°Π·Ρ
- Shared — ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΎΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π° ΠΊΠ»ΡΡΠΎΠΌ/ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ
- EAP — ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΎΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π° ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ EAP Π²Π½Π΅ΡΠ½ΠΈΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ
- None — ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ, Π΄Π°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² ΠΎΡΠΊΡΡΡΠΎΠΌ Π²ΠΈΠ΄Π΅
- WEP — ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ΅ RC4 ΡΠΈΡΡ Ρ ΡΠ°Π·Π½ΠΎΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° (64 ΠΈΠ»ΠΈ 128 Π±ΠΈΡ)
- CKIP — ΠΏΡΠΎΠΏΡΠΈΠ΅ΡΠ°ΡΠ½Π°Ρ Π·Π°ΠΌΠ΅Π½Π° WEP ΠΎΡ Cisco, ΡΠ°Π½Π½ΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ TKIP
- TKIP — ΡΠ»ΡΡΡΠ΅Π½Π½Π°Ρ Π·Π°ΠΌΠ΅Π½Π° WEP Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΠΌΠΈ ΠΈ Π·Π°ΡΠΈΡΠΎΠΉ
- AES/CCMP — Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° AES256 Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΠΌΠΈ ΠΈ Π·Π°ΡΠΈΡΠΎΠΉ
ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Open Authentication, No Encryption ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π³ΠΎΡΡΠ΅Π²ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° Π²ΡΠΎΠ΄Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π² ΠΊΠ°ΡΠ΅ ΠΈΠ»ΠΈ Π³ΠΎΡΡΠΈΠ½ΠΈΡΠ΅. ΠΠ»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΡ Π±Π΅ΡΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΡΠΈ. ΠΠ°ΡΠ°ΡΡΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΡΠ΅ΡΡΡ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ Π½Π° Captive Portal ΠΏΡΡΠ΅ΠΌ ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ HTTP-Π·Π°ΠΏΡΠΎΡΠ° Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΠΎΡΠΈΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ (Π»ΠΎΠ³ΠΈΠ½-ΠΏΠ°ΡΠΎΠ»Ρ, ΡΠΎΠ³Π»Π°ΡΠΈΠ΅ Ρ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ ΠΈ Ρ.ΠΏ).
Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ WEP ΡΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΎ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π½Π΅Π»ΡΠ·Ρ (Π΄Π°ΠΆΠ΅ Π² ΡΠ»ΡΡΠ°Π΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ).
Π¨ΠΈΡΠΎΠΊΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΠΈΠ΅ΡΡ ΡΠ΅ΡΠΌΠΈΠ½Ρ WPA ΠΈ WPA2 ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ (TKIP Π»ΠΈΠ±ΠΎ AES). Π ΡΠΈΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠΆΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π΄Π°Π²Π½ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ Π°Π΄Π°ΠΏΡΠ΅ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ WPA2 (AES), ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ TKIP Π½Π΅Ρ ΡΠΌΡΡΠ»Π°.
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ WPA2 Personal ΠΈ WPA2 Enterprise ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΠΎΡΠΊΡΠ΄Π° Π±Π΅ΡΡΡΡΡ ΠΊΠ»ΡΡΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΠΌΠ΅Ρ Π°Π½ΠΈΠΊΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° AES. ΠΠ»Ρ ΡΠ°ΡΡΠ½ΡΡ (Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΡ , ΠΌΠ΅Π»ΠΊΠΈΡ ) ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠ»ΡΡ (ΠΏΠ°ΡΠΎΠ»Ρ, ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ, PSK (Pre-Shared Key)) ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ 8 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°Π΄Π°Π΅ΡΡΡ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΡΠΎΡΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ°, ΠΈ Ρ Π²ΡΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΠΎΠΉ Π±Π΅ΡΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΡΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ. ΠΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠ°ΡΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° (ΠΏΡΠΎΠ±ΠΎΠ»ΡΠ°Π»ΠΈΡΡ ΡΠΎΡΠ΅Π΄Ρ, ΡΠ²ΠΎΠ»Π΅Π½ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊ, ΡΠΊΡΠ°Π΄Π΅Π½ Π½ΠΎΡΡΠ±ΡΠΊ) ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ΡΠΌΠ΅Π½Ρ ΠΏΠ°ΡΠΎΠ»Ρ Ρ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΈΡ ΡΠΈΡΠ»Π°. ΠΠ»Ρ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠ»ΡΡ, ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠΉ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΡΠΎΡ ΠΊΠ»ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ ΠΏΠΎ Ρ ΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ Π±Π΅Π· ΡΠ°Π·ΡΡΠ²Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΈ Π·Π° Π΅Π³ΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ —
ΠΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½ AES / Habr
Π ΡΡΠΌ ΡΡΠ° ΡΡΠ°ΡΡΡ
ΠΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Ρ ΡΡΠΈΡΠ°Π», ΡΡΠΎ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²ΡΠΎΠ΄Π΅ AES ΠΈ MD5, ΡΡΡΡΠΎΠ΅Π½Ρ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΡ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΠΏΡΠΎΡΡΠΎ, Π΄Π°ΠΆΠ΅ ΠΈΠΌΠ΅Ρ ΠΏΠΎΠ΄ ΡΡΠΊΠΎΠΉ ΠΏΠΎΠ»Π½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. ΠΠ°ΠΏΡΡΠ°Π½Π½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π½Π° ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΡΠ΅ΠΏΠ»ΡΠ»ΠΈ ΡΡΠΎ ΠΌΠ½Π΅Π½ΠΈΠ΅. ΠΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ Ρ ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ Ρ ΡΠ΅ΡΠΈΠ» ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΡΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°Ρ ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΡ . ΠΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ ΡΡΡΡΠΎΠ΅Π½Ρ ΠΈ Π΄Π»Ρ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ Π½Π°ΠΏΠΈΡΡ ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ AES (ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·ΡΠ²Π°ΡΡ Rijndael) ΠΈ Π½Π°ΠΏΠΈΡΡ Π΅Π³ΠΎ Π½Π° JavaScript. ΠΠΎΡΠ΅ΠΌΡ Π½Π° JavaScript? Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΡΠΎΠΌ ΡΠ·ΡΠΊΠ΅, Π½ΡΠΆΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π±ΡΠ°ΡΠ·Π΅Ρ Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ ΡΠΈΡΠ°Π΅ΡΠ΅ ΡΡΡ ΡΡΠ°ΡΡΡ. Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π½Π° C, Π½ΡΠΆΠ΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΈ Π½Π°ΠΉΠ΄ΡΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΌΠ°Π»ΠΎ ΠΆΠ΅Π»Π°ΡΡΠΈΡ , Π³ΠΎΡΠΎΠ²ΡΡ ΠΏΠΎΡΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΊΠ°ΠΊΠΎΠΉ ΡΠΎ ΡΡΠ°ΡΡΠΈ. Π ΠΊΠΎΠ½ΡΠ΅ Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠ° ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°ΡΠ°ΡΡ Π°ΡΡ ΠΈΠ² Ρ html ΡΡΡΠ°Π½ΠΈΡΠ΅ΠΉ ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ js ΡΠ°ΠΉΠ»Π°ΠΌΠΈ β ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ AES Π½Π° JavaScript.
ΠΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ AES
ΠΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΎΠ΄ΠΈΠ½ 128-Π±ΠΈΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ Π² Π΄ΡΡΠ³ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ»Ρ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ 128-Π±ΠΈΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π²ΡΠΎΡΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ. ΠΡΠ³Π»ΡΠ΄ΠΈΡ ΡΡΠΎ ΡΠ°ΠΊ:
cipher = encrypt(block, key) // ΡΠΈΡΡΡΠ΅ΠΌ block Ρ ΠΏΠΎΠΌΠΎΡΡΡ key
block = decrypt(cipher, key) // ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΡΠ²Π°Π΅ΠΌ cipher Ρ ΠΏΠΎΠΌΠΎΡΡΡ key
Π Π°Π·ΠΌΠ΅Ρ Π±Π»ΠΎΠΊΠ° Π²ΡΠ΅Π³Π΄Π° ΡΠ°Π²Π΅Π½ 128 Π±ΠΈΡ. Π Π°Π·ΠΌΠ΅Ρ ΠΊΠ»ΡΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ. Π§ΡΠΎΠ±Ρ Π·Π°ΡΠΈΡΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ Π»ΡΠ±ΡΠΌ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΏΠΈΡΡ ΡΠ°ΠΊ:
- ΠΏΠΎΠ»ΡΡΠΈΡΡ Ρ Π΅Ρ ΠΎΡ ΠΏΠ°ΡΠΎΠ»Ρ
- ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Ρ Π΅Ρ Π² ΠΊΠ»ΡΡ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ AES
- ΡΠ°Π·Π±ΠΈΡΡ ΡΠ΅ΠΊΡΡ Π½Π° Π±Π»ΠΎΠΊΠΈ ΠΏΠΎ 128 Π±ΠΈΡ
- Π·Π°ΡΠΈΡΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π±Π»ΠΎΠΊ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ cipher
ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊ:
hash = md5(password) // MD5 Ρ
Π΅Ρ ΠΈΠΌΠ΅Π΅Ρ Π΄Π»ΠΈΠ½Ρ 128 Π±ΠΈΡ
key = keyexpansion(hash) // ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ Ρ
Π΅Ρ Π² ΠΊΠ»ΡΡ
blocks = split(text, 16) // ΡΠ°Π·Π±ΠΈΡΡ ΡΠ΅ΠΊΡΡ Π½Π° Π±Π»ΠΎΠΊΠΈ ΠΏΠΎ 16 Π±Π°ΠΉΡ
for (i = 0; i < blocks.length; i++)
cipher[i] = encrypt(blocks[i], key)
Π§ΡΠΎΠ±Ρ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² Π±Π»ΠΎΠΊΠΎΠ² cipher Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π±Π»ΠΎΠΊΡ decrypt:
hash = md5(password)
key = keyexpansion(hash)
for (i = 0; i < cipher.length; i++)
blocks[i] = decrypt(cipher[i], key)
text = merge(blocks) // ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π²ΡΠ΅ Π±Π»ΠΎΠΊΠΈ Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π΄Π»ΠΈΠ½Π° ΡΠ΅ΠΊΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ ΠΊΡΠ°ΡΠ½Π° 128 Π±ΠΈΡΠ°ΠΌ. Π ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡ Π½ΡΠ»ΡΠΌΠΈ Π΄ΠΎ Π½ΡΠΆΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ, Π° Π² Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π°ΠΉΡ Ρ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°. Π€ΡΠ½ΠΊΡΠΈΠΈ aes.encrypt ΠΈ aes.decrypt Π² ΡΠ°ΠΉΠ»Π΅ aes.js Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄.
ΠΠΎΠ»Π΅ GF(28)
AES Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ΅ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ GF(2 8). Π§ΡΠΎΠ±Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ AES Π½Π° JavaScript Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π½Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π·Π° ΠΏΠΎΠ»Π΅, Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ AES, ΠΏΡΠΎΡΡΠΈΡΠ΅ ΡΡΠΎΡ ΡΠ°Π·Π΄Π΅Π».
ΠΠΎΠ»Π΅ GF(28) ΡΡΠΎ ΡΠΈΡΠ»Π° 0..255 Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΎΡΠΎΠ±ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΠΎΠ±ΠΎΠ΅ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΠ·ΠΌΡΠΌ ΠΊΠ°ΠΊΠΎΠ΅ Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΈΡΠ»ΠΎ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ Π²ΠΎΡΡΠΌΠΈ Π±ΠΈΡΠΎΠ²: a = a7a6a5a4a3a2a1a0. Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΡΠΈΡΠ»ΠΎ b. Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ a ΠΈ b ΡΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ xor:
a + b = a xor b
Π£ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΅ΡΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°:
a + a = 0
-a = 0 - a = a
a - b = a + (-b) = a + b
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ»ΠΎΠΆΠ½Π΅Π΅. ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»Π΅Π½Ρ Ρ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈΠ· Π±ΠΈΡΠΎΠ² ΡΡΠΈΡ ΡΠΈΡΠ΅Π»:
p = a7x7 + a6x6 + a5x5 + a4x4 + a3x3 + a2x2
q = b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x + b0
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠΈΠΌ ΡΡΠΈ Π΄Π²Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ»Π΅Π½Π° ΠΈ Π½Π°ΠΉΠ΄ΡΠΌ ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° m:
m = x8 + x4 + x3 + x + 1
r = pq mod (m)
ΠΠΎΡΠ΅ΠΌΡ Π²ΡΠ±ΡΠ°Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠΎΠΉ m? Π£ ΡΡΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»Π΅Π½Π° Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π° Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ-ΠΌΠ½ΠΎΠ³ΠΎΡΠ»Π΅Π½Π° Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ Π΄Π΅Π»ΠΈΡΡΡ Π±Π΅Π· ΠΎΡΡΠ°ΡΠΊΠ°: Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΠΈ ΠΎΠ½ ΡΠ°ΠΌ. ΠΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ ΠΏΡΠΎΡΡΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ, ΠΌΠ½ΠΎΠ³ΠΎΡΠ»Π΅Π½ m Β«ΠΏΡΠΎΡΡΠΎΠΉΒ». ΠΠ°Ρ ΠΎΠ΄ΠΈΡΡ ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΎΠ±ΡΡΠ½ΡΡ ΡΠΈΡΠ΅Π»: Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΌΠ΅ΡΡ ΡΠΌΠ½ΠΎΠΆΠ°ΡΡ, ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ ΠΈ Π²ΡΡΠΈΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»Π΅Π½Ρ, ΠΏΡΠΈΡΡΠΌ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ GF(28), Ρ.Π΅. ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»Π΅Π½ΠΎΠ² ΡΡΠΎ xor ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΡΠΎΠΉ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ². ΠΠΎΡ Π΄Π²Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°:
x3 + x2 + 1 mod (x 3 + 1) = x2 // Π½ΡΠΆΠ½ΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΎΡΠ½ΡΡΡ x3+1
x3 + x2 + 1 mod (x2 + 1) = (x3 + x2 + 1) - (x + 1)(x2 + 1) = -x
ΠΠ½ΠΎΠ³ΠΎΡΠ»Π΅Π½ r ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ Π² Π²ΠΈΠ΄Π΅
r = r7x7 + r6x6 + r5x5 + r4x4 + r3x3 + r2x2 + r1x + r0
ΠΠ³ΠΎ 8 ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ 8-Π±ΠΈΡΠΎΠ²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΈΠ· ΠΏΠΎΠ»Ρ GF(28) ΠΈ ΡΡΠΎ ΡΠΈΡΠ»ΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ aβ’b. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅Π»ΡΠ·Ρ Π½Π°ΠΉΡΠΈ ΠΏΠ°ΡΠΎΠΉ ΠΏΡΠΎΡΡΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»Π΅Π½ Π² ΠΏΠΎΠ»Π΅ GF(28) ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ»Π΅Π½ x, Π° ΡΠΌΠ½ΠΎΠΆΠΈΡΡ Π½Π° x ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ, ΠΎ ΡΡΠΌ ΠΏΠΎΠΉΠ΄ΡΡ ΡΠ΅ΡΡ Π½ΠΈΠΆΠ΅.
ΠΠ»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»Π΅Π½ΠΎΠ² Π² GF(28) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ 16-ΡΠΈΡΠ½ΡΠ΅ ΡΠΈΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ
m = x8 + x4 + x3 + x + 1 = 100011011 = 0x011b = {01}{1b}
Π£ΠΌΠ½ΠΎΠΆΠΈΡΡ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ»Π΅Π½ x = {02} Π² ΠΏΠΎΠ»Π΅ GF(28) ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅:
xp = x(a7x7 + a6x6 + a5x5 + a4x4 + a3x3 + a2x2 + a1x + a0) =
a7x8 + a6x7 + a5x6 + a4x5 + a3x4 + a2x3 + a1x<2 + a0x
p = a7a6a5a4a3a2a1a0
xp = a7a6a5a4a3a2a1a00 // ΡΡΠΎ ΡΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° m. ΠΡΠ»ΠΈ Π±ΠΈΡ a 7 = 1, ΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π²ΡΡΠ΅ΡΡΡ m. ΠΡΠ»ΠΈ a7 = 0 ΡΠΎ Π²ΡΡΠΈΡΠ°ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ. ΠΡΠ°ΠΊ:
r = xp mod (m) = xp - m Π΅ΡΠ»ΠΈ a7 = 1
r = xp mod (m) = xp Π΅ΡΠ»ΠΈ a7 = 0
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° x ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ:
gf.xtime = function(b)
{
var highbit = b & 0x80
var shl = (b << 1) & 0xff
return highbit == 0 ? shl : shl ^ 0x1b
}
ΠΠ½Π°Ρ ΠΊΠ°ΠΊ ΡΠΌΠ½ΠΎΠΆΠ°ΡΡ Π½Π° x ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ½ΠΎΠΆΠΈΡΡ Π½Π° Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»Π΅Π½. ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π°ΠΉΠ΄ΡΠΌ aβ’b Π³Π΄Π΅ a = {3c}, b = {a1}:
b = {a1} = 10100001 = {80} + {20} + {01}
aβ’b = aβ’{80} + aβ’{20} + aβ’{01} = aβ’x7 + aβ’x5 + a =
aβ’{02}β’{02}β’{02}β’{02}β’{02}β’{02}β’{02} + aβ’{02}β’{02}β’{02}β’{02}β’{02} + a =
{29} + {c1} + {3c} = {d4}
ΠΡΡΠ°Π»Π°ΡΡ ΠΎΠ΄Π½Π° ΠΏΡΠΎΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π² ΠΏΠΎΠ»Π΅ GF(28). Π£ Π»ΡΠ±ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ° b, ΠΊΡΠΎΠΌΠ΅ Π½ΡΠ»Ρ, Π΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π±Π°ΠΉΡ a = b-1 ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ aβ’b = {01}. ΠΡΠ΅ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΠ»Π΅ΠΌ β ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° x, ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ Π±Π°ΠΉΡΠΎΠ² ΠΈ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ β Ρ ΡΠΎΠ±ΡΠ°Π» Π² ΠΌΠ°Π»Π΅Π½ΡΠΊΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ gf Π½Π° JavaScript.
Π’Π°Π±Π»ΠΈΡΠ° SBox
ΠΡΠ° ΡΠ°Π±Π»ΠΈΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ 256-Π±Π°ΠΉΡΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ° Π΄ΡΡΠ³ΠΈΠΌ. ΠΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ². Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΡΠ΅ΠΌΡ ΡΠ°Π²Π΅Π½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ SBox[b] Π½ΡΠΆΠ½ΠΎ ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
- Π½Π°ΠΉΡΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π±Π°ΠΉΡ ΠΊ b Π² ΠΏΠΎΠ»Π΅ GF(28) (Π½ΠΎΠ»Ρ ΠΎΡΡΠ°Π²ΠΈΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ)
- ΡΠΌΠ½ΠΎΠΆΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· Π²ΠΎΡΡΠΌΠΈ Π±ΠΈΡΠΎΠ² Π½Π° ΠΌΠ°ΡΡΠΈΡΡ 8Γ8 ΠΈΠ· 64 Π±ΠΈΡΠΎΠ²
- Π΄ΠΎΠ±Π°Π²ΠΈΡΡ {63}
Π ΡΡΠΌΠΌΠ΅ ΡΡΠΈ ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄Π°ΡΡ Π°ΡΠΈΠ½Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅:
ΠΠ΅ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° ΡΡΠ° ΠΌΠ°ΡΡΠΈΡΠ° ΠΈΠ· Π±ΠΈΡΠΎΠ². ΠΠ»Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΠΈΡΠΎΠ² Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Β«andΒ», Π΄Π»Ρ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β Β«xorΒ». ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
r0 = b0 + b4 + b5 + b6 + b7 + 1
Π€ΡΠ½ΠΊΡΠΈΡ sbox Ρ Π½Π°ΠΏΠΈΡΠ°Π» ΡΠ°ΠΊ:
aes.sbox = function(b)
{
var m = 0xf8
var r = 0
var q = gf.inv(b) || 0
for (var i = 0; i < 8; i++)
{
r = (r << 1) | bits.xorbits(q & m)
m = (m >> 1) | ((m & 1) << 7)
}
return r ^ 0x63
}
ΠΠΎΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76
ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0
b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15
04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75
09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84
53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf
d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8
51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2
cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73
60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db
e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79
e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08
ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a
70 3e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e
e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df
8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16
ΠΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠΈΡΠ»ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ sbox ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π°Π΄ΠΎΠ±Π½ΠΎΡΡΠΈ.
Π’Π°Π±Π»ΠΈΡΠ° InvSBox
ΠΠ»Ρ Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° AES ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΠΊ SBox. Π’Π°Π±Π»ΠΈΡΠ° InvSBox ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΎΠ΄Π½ΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ: InvSBox[SBox[i]] = i. InvSBox Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
52 09 6a d5 30 36 a5 38 bf 40 a3 9e 81 f3 d7 fb
7c e3 39 82 9b 2f ff 87 34 8e 43 44 c4 de e9 cb
54 7b 94 32 a6 c2 23 3d ee 4c 95 0b 42 fa c3 4e
08 2e a1 66 28 d9 24 b2 76 5b a2 49 6d 8b d1 25
72 f8 f6 64 86 68 98 16 d4 a4 5c cc 5d 65 b6 92
6c 70 48 50 fd ed b9 da 5e 15 46 57 a7 8d 9d 84
90 d8 ab 00 8c bc d3 0a f7 e4 58 05 b8 b3 45 06
d0 2c 1e 8f ca 3f 0f 02 c1 af bd 03 01 13 8a 6b
3a 91 11 41 4f 67 dc ea 97 f2 cf ce f0 b4 e6 73
96 ac 74 22 e7 ad 35 85 e2 f9 37 e8 1c 75 df 6e
47 f1 1a 71 1d 29 c5 89 6f b7 62 0e aa 18 be 1b
fc 56 3e 4b c6 d2 79 20 9a db c0 fe 78 cd 5a f4
1f dd a8 33 88 07 c7 31 b1 12 10 59 27 80 ec 5f
60 51 7f a9 19 b5 4a 0d 2d e5 7a 9f 93 c9 9c ef
a0 e0 3b 4d ae 2a f5 b0 c8 eb bb 3c 83 53 99 61
17 2b 04 7e ba 77 d6 26 e1 69 14 63 55 21 0c 7d
ΠΠΈΠ΄Ρ AES
ΠΠ»Π³ΠΎΡΠΈΡΠΌ AES ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π±Π»ΠΎΠΊ Π΄Π»ΠΈΠ½ΠΎΠΉ 128 Π±ΠΈΡΠΎΠ² Π² Π΄ΡΡΠ³ΠΎΠΉ Π±Π»ΠΎΠΊ ΡΠΎΠΉ ΠΆΠ΅ Π΄Π»ΠΈΠ½Ρ. ΠΠ»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ w ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΠΎΠ΅ ΠΈΠ· ΠΊΠ»ΡΡΠ°. 128-Π±ΠΈΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ Π² AES ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΡΡ 4ΓNb. Π‘ΡΠ°Π½Π΄Π°ΡΡ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Nb = 4, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»ΠΈΠ½Π° Π±Π»ΠΎΠΊΠ° Π²ΡΠ΅Π³Π΄Π° 128 Π±ΠΈΡ, Ρ ΠΎΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π»ΡΠ±ΡΠΌ Nb. ΠΠ»ΠΈΠ½Π° ΠΊΠ»ΡΡΠ° ΡΠ°Π²Π½Π° 4Nk Π±Π°ΠΉΡ. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Nr ΡΠ°ΡΠ½Π΄ΠΎΠ² β ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ Π³ΡΡΠΏΠΏΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ 128-Π±ΠΈΡΠ½ΠΎΠΌΡ Π±Π»ΠΎΠΊΡ Π΄Π°Π½Π½ΡΡ . Π‘ΡΠ°Π½Π΄Π°ΡΡ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΡΡΠΈΡ ΡΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²:
| Nk | Nb | Nr | |
| AES-128 | 4 | 4 | 10 |
| AES-192 | 6 | 4 | 12 |
| AES-256 | 8 | 4 | 14 |
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ KeyExpansion
ΠΠ»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° AES ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π½Π΅ ΠΏΠ°ΡΠΎΠ»Ρ ΠΈΠ»ΠΈ Ρ Π΅Ρ ΠΎΡ ΠΏΠ°ΡΠΎΠ»Ρ, Π° ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ΅ Β«ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉΒ» ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΠΎΠ΅ ΠΈΠ· ΠΊΠ»ΡΡΠ°. ΠΡΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΠΊΠ°ΠΊ Nr + 1 ΠΌΠ°ΡΡΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° 4ΓNb. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π΅Π»Π°Π΅Ρ Nr + 1 ΡΠ°Π³ΠΎΠ² ΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Π΅ ΠΎΠ½, ΠΏΠΎΠΌΠΈΠΌΠΎ Π΄ΡΡΠ³ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, Π±Π΅ΡΡΡ ΠΎΠ΄Π½Ρ ΠΌΠ°ΡΡΠΈΡΡ 4ΓNb ΠΈΠ· Β«ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡΒ» ΠΈ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π΅Ρ ΠΊ Π±Π»ΠΎΠΊΡ Π΄Π°Π½Π½ΡΡ .
Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° Π΄Π°Π½Π½ΡΡ
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π½Π° Π²Ρ ΠΎΠ΄ 128-Π±ΠΈΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ Π΄Π°Π½Π½ΡΡ input ΠΈ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ w, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ KeyExpansion. 16-Π±Π°ΠΉΡΡΠΉ input ΠΎΠ½ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΡΡ s ΡΠ°Π·ΠΌΠ΅ΡΠ° 4ΓNb, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ AES, ΠΈ Π·Π°ΡΠ΅ΠΌ Nr ΡΠ°Π· ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΊ ΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΠ΅ 4 ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. Π ΠΊΠΎΠ½ΡΠ΅ ΠΎΠ½ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ ΠΏΠΎΠ΄Π°ΡΡ Π΅Π³ΠΎ Π½Π° Π²ΡΡ ΠΎΠ΄ β ΡΡΠΎ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠΉ Π±Π»ΠΎΠΊ. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΡΠ΅ΡΡΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠ΅.
- AddRoundKey Π±Π΅ΡΡΡ ΠΈΠ· ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΎΠ΄Π½Ρ ΠΌΠ°ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° 4ΓNb ΠΈ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π΅Ρ ΠΊ ΠΌΠ°ΡΡΠΈΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. ΠΡΠ»ΠΈ Π΄Π²Π° ΡΠ°Π·Π° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ AddRoundKey, ΡΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΠΊ AddRoundKey ΡΡΠΎ ΠΎΠ½ΠΎ ΡΠ°ΠΌΠΎ.
- SubBytes Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΠ²ΡΡΡΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΡΠ°Π±Π»ΠΈΡΡ SBox: sij = SBox[sij]. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ SubBytes ΠΎΠ±ΡΠ°ΡΠΈΠΌΠΎ. ΠΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΠΊ Π½Π΅ΠΌΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ InvSBox.
- ShiftRows ΡΠ΄Π²ΠΈΠ³Π°Π΅Ρ i-ΡΡ ΡΡΡΠΎΠΊΡ ΠΌΠ°ΡΡΠΈΡΡ s Π½Π° i ΠΏΠΎΠ·ΠΈΡΠΈΠΉ Π²Π»Π΅Π²ΠΎ, ΡΡΠΈΡΠ°Ρ i Ρ Π½ΡΠ»Ρ. ΠΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ InvShiftRows ΡΠ΄Π²ΠΈΠ³Π°Π΅Ρ ΡΡΡΠΎΠΊΠΈ Π²ΠΏΡΠ°Π²ΠΎ.
- MixColumns ΡΠΌΠ½ΠΎΠΆΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ s ΡΠ»Π΅Π²Π° Π½Π° ΠΎΡΠΎΠ±ΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° 4Γ4:
ΠΠ»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ [a b c d] = [{02} {03} {01} {01}]. ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΠΊ MixColumns[{02} {03} {01} {01}] ΡΡΠΎ MixColumns[{0e} {0b} {0d} {09}].
Π‘Ρ Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΡΠ°ΠΊ:
AddRoundKey(0)
for (var i = 1; i <= Nr - 1; i++)
{
SubBytes()
ShiftRows()
MixColumns([0x02, 003, 0x01, 0x01])
AddRoundKey(i)
}
SubBytes()
ShiftRows()
AddRoundKey(Nr)
Π Π°ΡΡΠΈΡΡΠΎΠ²ΠΊΠ°
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, Π΄Π»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠ° Π΄Π°Π½Π½ΡΡ AES ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΊ Π½Π΅ΠΌΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΠΌΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ. ΠΠ»Ρ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ
Π€ΡΠ½ΠΊΡΠΈΡ sbox ΠΈΠΌΠ΅Π΅Ρ Π²ΡΠ΅Π³ΠΎ 256 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ 256 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. Π§ΡΠΎΠ±Ρ Π½Π΅ Π²ΡΡΠΈΡΠ»ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π· sbox Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, Π½ΡΠΆΠ½ΠΎ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ. ΠΠ° JavaScript ΡΡΠΎ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΡΠ°Π½Π΅Π΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π΄ΠΎΠΏΠΈΡΠ°ΡΡ Π½ΠΈΠΆΠ΅ Π²ΠΎΡ ΡΡΠΎ:
Function.prototype.cached = function()
{
var old = this
var cache = {}
return function(x)
{
if (cache[x] !== undefined)
return cache[x]
cache[x] = old(x)
return cache[x]
}
}
aes.sbox = aes.sbox.cached()
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ sbox ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΊΠΎΡΠΎΡΠ°Ρ ΠΊΠ΅ΡΠΈΡΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ sbox. Π’ΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π»Ρ Π»ΡΠ±ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ invsbox ΠΈ rcon. ΠΡΠΎΡ ΠΆΠ΅ ΠΏΡΠΈΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ gf.mul ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΌΠ½ΠΎΠΆΠ°Π΅Ρ Π΄Π²Π° Π±Π°ΠΉΡΠ° Π² ΠΏΠΎΠ»Π΅ GF(28), Π½ΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π΅Π½ 256Γ256 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ.
Π‘ΡΡΠ»ΠΊΠΈ
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΊ AES Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ FIPS 197.
ΠΠ»ΡΡ ΡΠ΅ΡΠΈ Π½Π° Π°Π½Π΄ΡΠΎΠΈΠ΄Π΅. ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ Π·Π°ΡΠΈΡΠΈΡΡΡΡ? ΠΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ β TKIP ΠΈΠ»ΠΈ AES
ΠΡΠ»ΠΈ Π²Ρ Π·Π°Π±ΡΠ»ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΠΎΡ Π±Π΅ΡΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΡΠΈ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΡΠΎ ΡΠ·Π½Π°ΡΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ΅ΡΠ΅Π· ΡΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ, Π½Π΅ ΡΠΊΠ°ΡΠΈΠ²Π°Ρ ΠΏΡΠΈ ΡΡΠΎ ΡΡΠΎΡΠΎΠ½Π½Π΅Π³ΠΎ ΡΠΎΡΡΠ°. ΠΠ°Π½Π½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΊ Π²Π°ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ Π³ΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΡΡΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ΅ΡΡΡ Wi Fi, Π° Π²Ρ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π΄Π°Π²Π½ΠΎ Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ»ΠΈ, ΡΡΠΎ ΠΏΠΎΠ·Π°Π±ΡΠ»ΠΈ Π²ΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Windows, ΡΠΎ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π΄Π²Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ·Π½Π°ΡΡ ΠΊΠ»ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΠ΅ΡΠΈ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ. Π Π΄ΡΡΠ³ΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ Π»ΡΡΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π΅Π³ΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΡΠ΅ΡΠ΅Π· Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠΎΡΡΠ΅ΡΠ°. ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° Π²ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π΄Π»Ρ ΡΠ΅Π±Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΉ.
ΠΠ°ΠΊ ΡΠ·Π½Π°ΡΡ ΠΊΠ»ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΠ΅ΡΠΈ Π² Windows
ΠΠ°Π½Π½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π³ΠΈΠ±ΠΊΠ°Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ Π±Π΅Π· ΡΡΡΠ΄Π° ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΈ ΠΊΠ»ΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΌΠΈ ΠΆΠ΅ Π²Π²ΠΎΠ΄ΠΈΠ»ΠΈ. ΠΠ°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π° ΡΠ΅ΡΡ Wi Fi.
ΠΠ°ΠΊ ΡΠ·Π½Π°ΡΡ ΠΊΠ»ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΠ΅ΡΠΈ ΡΠ΅ΡΠ΅Π· ΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°
- Π‘Π°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ·Π½Π°ΡΡ ΠΏΠ°ΡΠΎΠ»Ρ ΠΎΡ WiFi. ΠΡΠΎΡΡΠΎ ΠΎΡΡΡΠΈΡΠ΅ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Π·Π½Π°ΡΠΎΠΊ ΡΠ΅ΡΠΈ Π² ΡΡΠ΅Π΅. ΠΠ½ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΡΠ΄ΠΎΠΌ Ρ Π΄Π°ΡΠΎΠΉ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ, ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ Π°Π½ΡΠ΅Π½Π½Π° ΠΈΠ»ΠΈ Π·Π½Π°ΠΊ ΡΠ΅ΡΠΈ Π² ΡΠ΅Π»Π΅ΡΠΎΠ½Π΅.
- ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΡ ΡΠ΅ΡΡ, ΠΎΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½ΡΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ ΠΏΠ°ΡΠΎΠ»Ρ. ΠΠ°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΊ Π½Π΅ΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½.
ΠΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ ΠΏΠΎ Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΡ.
- ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΡΠ½ΠΊΡ βΠ‘Π²ΠΎΠΉΡΡΠ²Π°β Π² ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ΅ΠΌΡΡ ΡΠΏΠΈΡΠΊΠ΅.


- ΠΡΠΊΡΠΎΠ΅ΡΡΡ ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π·Π°ΠΏΠΈΡΠ°Π½ Π²Π°Ρ ΠΏΠ°ΡΠΎΠ»Ρ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΠ°ΡΠΎΠ»Ρ Π·Π°ΡΠΈΡΠ΅Π½Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠΎΡΡΠ°Π²ΡΡΠ΅ Π³Π°Π»ΠΎΡΠΊΡ Π²ΠΎΠ·Π»Π΅ ΡΠ»ΠΎΠ² βΠΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ Π²Π²ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π½Π°ΠΊΠΈβ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΠ°ΡΠΎΠ»Ρ.


ΠΠ°ΠΊ ΡΠ·
ΠΠ΅ΡΠΎΠ΄Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π² Π±Π΅ΡΠΏΡΠΎΠ²ΠΎΠ΄Π½ΡΡ ΡΠ΅ΡΡΡ πΆ ΠΠ΅ΡΠΏΡΠΎΠ²ΠΎΠ΄Π½Π°Ρ ΡΠ΅ΡΡ
WEP ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΎΡΠΎΠΊΠΎΠ» WEP (Wired Equivalent Privacy) ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΌ ΡΠΈΡΡΠ΅ RC4. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π² ΡΠΈΡΡΠ΅ RC4 Π±ΡΠ»ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ WEP Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ.
WEP ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ. ΠΡΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ WEP-ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ»ΡΡ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ. ΠΡΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌ, ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΌΠ΅Π½Π° ΠΊΠ»ΡΡΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠ° WEP:
- WEP Ρ Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΊΠ»ΡΡΠ° 128 Π±ΠΈΡ, ΠΏΡΠΈ ΡΡΠΎΠΌ 104 Π±ΠΈΡΠ° ΡΠ²Π»ΡΡΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ ΠΈ 24 Π±ΠΈΡΠ° Π² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΠΎΠΌ Π²Π΅ΠΊΡΠΎΡΠ΅ (IV). Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ Π΅ΡΡ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·ΡΠ²Π°ΡΡ 104-Π±ΠΈΡΠ½ΡΠΉ WEP.
- WEP Ρ Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΊΠ»ΡΡΠ° 64 Π±ΠΈΡ, ΠΏΡΠΈ ΡΡΠΎΠΌ 40 Π±ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ ΠΈ 24 Π±ΠΈΡΠ° Π² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΠΎΠΌ Π²Π΅ΠΊΡΠΎΡΠ΅ (IV). Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ Π΅ΡΡ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·ΡΠ²Π°ΡΡ 40-Π±ΠΈΡΠ½ΡΠΉ WEP.
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ Π΅ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ Ρ Π΄Π»ΠΈΠ½ΠΎΠΉ 152 Π±ΠΈΡΠ° ΠΈ 256 Π±ΠΈΡ. ΠΠΎ Π² ΡΠ»ΡΡΠ°Π΅ WEP ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ ΠΊΠ»ΡΡΠ° Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΡΠΎΠΉΠΊΠΎΡΡΠΈ.
CKIP ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΎΡΠΎΠΊΠΎΠ» CKIP (Cisco Key Integrity Protocol) ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ CISCO Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ WEP. ΠΠΎ ΡΡΡΠΈ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π½Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ TKIP. ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ CMIC (Cisco Message Integrity Check).
TKIP ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΎΡΠΎΠΊΠΎΠ» ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ TKIP (Temporal Key Integrity Protocol) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠΈΡΡ RC4 ΡΡΠΎ ΠΈ WEP, Π½ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΡΠΉ Π²Π΅ΠΊΡΠΎΡ ΠΈΠΌΠ΅Π΅Ρ Π΄Π»ΠΈΠ½Ρ 48 Π±ΠΈΡ, ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Michael Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ (Message Integrity Check β MIC). ΠΡΠ»ΠΈ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΌΠΈΠ½ΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ»Π°Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡΡ Π½Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ, ΡΠΎ Π±Π΅ΡΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ Π½Π° ΠΎΠ΄Π½Ρ ΠΌΠΈΠ½ΡΡΡ. Π’Π΅ΠΏΠ΅ΡΡ RC4 ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ βΠ² ΡΡΠΏΡΡβ ΠΊΠ°ΠΊ Π² WEP, ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΌΠ΅ΡΡ ΠΏΡΠΎΡΠΈΠ² ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ Π°ΡΠ°ΠΊ Π½Π° ΡΡΠΎΡ ΡΠΈΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ RC4 ΠΎΡΡΠ°ΡΡΡΡ ΡΡΠ·Π²ΠΈΠΌΡΠΌ, ΡΠΎ ΠΈ TKIP ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΡΠ·Π²ΠΈΠΌΡΠΌ.
AES-CCMP ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΈΠ· ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ² ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ. Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ CCMP (Counter Mode with Cipher Block Chaining Message Authentication Code Protocol). ΠΠ»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΈΡΡ AES.

