MAC
MAC (Message Authentication Code, ΠΊΠΎΠ΄ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ) β ΡΡΠΎ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ . MAC ΡΠΎΠ·Π΄Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΠΊΡΠ΅ΡΠ° (ΠΊΠ»ΡΡΠ°), ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠ΄Π΄Π΅Π»Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π· Π·Π½Π°Π½ΠΈΡ ΠΊΠ»ΡΡΠ° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΠΈΠ»ΠΈ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π΄Π°Π½Π½ΡΡ .
- ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ MAC Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°.
- ΠΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ (ΡΠΊΡΡΡΠΈΠ΅) ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ, ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΡΠΈΡΡ ΠΎΡ ΠΏΠΎΠ΄Π΄Π΅Π»ΠΊΠΈ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ MAC
- HMAC (Hash-based MAC) β Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΉ (ΠΎΠ±ΡΡΠ½ΠΎ SHA256, SHA512 ΠΈ Π΄Ρ.).
- CMAC β Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π±Π»ΠΎΡΠ½ΡΡ ΡΠΈΡΡΠΎΠ².
- ΠΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ MAC (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, GCM tag) β ΡΠ΅Π³ Π°ΡΡΠ΅Π½ΡΠΈΡΠ½ΠΎΡΡΠΈ, ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌΡΠΉ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΠΆΠΈΠΌΠ°Ρ Π±Π»ΠΎΡΠ½ΡΡ ΡΠΈΡΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, AES-GCM).
ΠΡΠΈΠΌΠ΅Ρ (HMAC Π½Π° Python)
import hmac
import hashlib
key = b'secret'
msg = b'important data'
mac = hmac.new(key, msg, hashlib.sha256).hexdigest()
print(mac)
ΠΡΠ»ΠΈΡΠΈΠ΅ MAC ΠΎΡ Π°ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ
ΠΡΠΈΡΠ΅ΡΠΈΠΉ | MAC | ΠΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½Π°Ρ ΡΠΈΡΡΠΎΠ²Π°Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡ |
---|---|---|
Π’ΠΈΠΏ ΠΊΠ»ΡΡΠ΅ΠΉ | Π‘ΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠΉ (ΠΎΠ±ΡΠΈΠΉ ΡΠ΅ΠΊΡΠ΅Ρ) | ΠΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠ΅ (ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ/ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ) |
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΎΡΡΠΈ | Π’ΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π»Π°Π΄Π°ΡΠ΅Π»Ρ ΠΊΠ»ΡΡΠ° | ΠΡΠ±ΠΎΠΉ Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ |
ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° | Π¦Π΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ ΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠ½ΠΎΡΡΡ | Π¦Π΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ, Π°ΡΡΠ΅Π½ΡΠΈΡΠ½ΠΎΡΡΡ, Π½Π΅ΠΎΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΡΡΡ |
ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ | HMAC, CMAC, GCM tag ΠΈ Π΄Ρ. | RSA, DSA, ECDSA ΠΈ Π΄Ρ. |
Π‘ΠΊΠΎΡΠΎΡΡΡ | ΠΡΡΡΡΠ΅Π΅ | ΠΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ |
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ | ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠΉ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ, ΠΌΠ΅ΠΆΠ΄Ρ Π΄ΠΎΠ²Π΅ΡΡΡΡΠΈΠΌΠΈ ΡΡΠΎΡΠΎΠ½Π°ΠΌΠΈ | ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΉ |