Niels MΓΆller
Π― ΡΠ°Π΄ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΎ Π½ΠΎΠ²ΠΎΠΌ ΠΊΡΡΠΏΠ½ΠΎΠΌ ΡΠ΅Π»ΠΈΠ·Π΅ GNU Nettle, Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠΎΡ ΡΠ΅Π»ΠΈΠ· Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ API, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΡΡ ΠΎΠ΄Π½Π° Π·Π°ΠΌΠ΅ΡΠ½Π°Ρ Π½ΠΎΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ: ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° SLH-DSA ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΉ (Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π΅Π· ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ).
ΠΡΠΎ Π½ΠΎΠ²ΡΠΉ ΠΊΡΡΠΏΠ½ΡΠΉ ΡΠ΅Π»ΠΈΠ·. ΠΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ SLH-DSA. ΠΠ½Π΅ΡΠ΅Π½Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² API Nettle, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄Π°Π»Π΅Π½Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ»ΡΡΡΠ΅Π½ ABI, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ API ΠΎΡΡΠ°Π»ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠΌΠ΅Π½ΡΡΠ΅Π½Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π»Ρ ΡΡΠ΄Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ²β¦
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ:
- Π ΡΡΠ½ΠΊΡΠΈΡΡ _digest Ρ Π΅Ρ-Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ², MAC ΠΈ AEAD Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π΄Π°ΠΉΠ΄ΠΆΠ΅ΡΡΠ°, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ΠΈ Π²ΡΠ΅Π³Π΄Π° Π²ΡΠ΄Π°ΡΡ Π΄Π°ΠΉΠ΄ΠΆΠ΅ΡΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π±ΡΠ» ΠΈΠ·ΠΌΠ΅Π½ΡΠ½ ΠΈ ΡΠΈΠΏ nettle_hash_digest_func.
- Π€ΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ»Π½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ CCM AES ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ccm_aes128_encrypt_message ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° aes128_ctx*. Π Π°Π½Π΅Π΅ ΡΡΠΎ Π±ΡΠ»Π° ΡΡΡΡΠΊΡΡΡΠ° ccm_aes128_ctx*, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ Π²ΡΡ, ΠΊΡΠΎΠΌΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ.
- Π’Π΅ΠΏΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ SHA3 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΡΡΡΡΠΊΡΡΡΡ sha3_ctx Π΄Π»Ρ Π²ΡΠ΅Ρ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Ρ Π΅ΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ sha3_init. Π‘ΡΠ°ΡΡΠ΅ ΠΈΠΌΠ΅Π½Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, sha3_256_ctx ΠΈ sha3_256_init, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΊΠ°ΠΊ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ.
- ΠΡΠ³ΡΠΌΠ΅Π½Ρ dst_length ΡΡΠ½ΠΊΡΠΈΠΉ base16_decode_update ΠΈ base64_decode_update ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²Ρ ΠΎΠ΄Π½ΡΠΌ ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ. ΠΠ° Π²Ρ ΠΎΠ΄Π΅ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ°, Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ΅ΠΉ Π΅ΡΠ»ΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ. Π Π°Π½Π΅Π΅ dst_length Π±ΡΠ» ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΡ ΠΎΠ΄Π½ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ, ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ Π±ΡΡΠ΅Ρ Π±ΡΠ» Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΈΠΌ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ src_length.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru
