Уязвимост Π² ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° постквантовия Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ Π·Π° ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π΅ Kyber

ΠŸΡ€ΠΈ внСдряванСто Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΠ° Π·Π° ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π΅ Kyber, ΠΊΠΎΠΉΡ‚ΠΎ спСчСли ΡΡŠΡΡ‚Π΅Π·Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° криптографски Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ, устойчиви Π½Π° Π³Ρ€ΡƒΠ±Π° сила Π½Π° ΠΊΠ²Π°Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€, бСшС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π° уязвимост, която позволява Π°Ρ‚Π°ΠΊΠΈ ΠΎΡ‚ страничСн ΠΊΠ°Π½Π°Π» Π΄Π° ΠΏΡ€Π΅ΡΡŠΠ·Π΄Π°Π΄Π°Ρ‚ сСкрСтни ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ въз основа Π½Π° ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°Π½Π΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π΄Π΅ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ тСкст, прСдоставСн ΠΎΡ‚ нападатСля. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ засяга ΠΊΠ°ΠΊΡ‚ΠΎ Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½Π°Ρ‚Π° рСализация Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° капсулиранС Π½Π° ΠΊΠ»ΡŽΡ‡ CRYSTALS-Kyber KEM, Ρ‚Π°ΠΊΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΈ страни, Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ Kyber, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° pqcrypto, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² ΠΌΠ΅ΡΠΈΠ½Π΄ΠΆΡŠΡ€Π° Π½Π° Signal.

Π‘ΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° уязвимостта, която ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅ KyberSlash, Π΅ Π² ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° опСрацията Π·Π° раздСлянС β€žt = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;β€œ Π² процСса Π½Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ , Π² ΠΊΠΎΠΉΡ‚ΠΎ Π΄ΠΈΠ²ΠΈΠ΄Π΅Π½Ρ‚ΡŠΡ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Ρ‚Π°ΠΉΠ½Π°Ρ‚Π° стойност β€œt” с Ρ‚ΠΈΠΏ β€œdouble”, Π° дСлитСлят Π΅ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΠΎΠ·Π½Π°Ρ‚Π°Ρ‚Π° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Π° стойност KYBER_Q. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅, Ρ‡Π΅ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° опСрацията Π·Π° раздСлянС Π½Π΅ Π΅ постоянно ΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ срСди броят Π½Π° процСсорнитС Ρ†ΠΈΠΊΠ»ΠΈ, ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½ΠΈ Π·Π° раздСлянС, зависи ΠΎΡ‚ Π²Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, въз основа Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΠΎΠ»ΡƒΡ‡ΠΈ прСдстава Π·Π° СстСството Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΏΡ€ΠΈ раздСлянС.

Daniel J. Bernstein, извСстСн СкспСрт Π² областта Π½Π° криптографията, успя Π΄Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈ Ρ€Π°Π±ΠΎΡ‚Π½Π° дСмонстрация Π½Π° доказатСлство, Ρ‡Π΅ Π°Ρ‚Π°ΠΊΠ°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½Π° Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°. Π’ Π΄Π²Π° ΠΎΡ‚ Ρ‚Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈ СкспСримСнта, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС изпълнява ΠΊΠΎΠ΄ Π½Π° ΠΏΠ»Π°Ρ‚ΠΊΠ°Ρ‚Π° Raspberry Pi 2, бСшС възмоТно напълно Π΄Π° сС ΠΏΡ€Π΅ΡΡŠΠ·Π΄Π°Π΄Π΅ частният ΠΊΠ»ΡŽΡ‡ Kyber-512 въз основа Π½Π° ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°Π½Π΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ. ΠœΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π°Π΄Π°ΠΏΡ‚ΠΈΡ€Π° ΠΈ Π·Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ Kyber-768 ΠΈ Kyber-1024. Π—Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡ‚ΠΎ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° Π°Ρ‚Π°ΠΊΠ° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ посочСният ΠΎΡ‚ атакуващия ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ тСкст Π΄Π° бъдС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΡΡŠΡ‰Π°Ρ‚Π° Π΄Π²ΠΎΠΉΠΊΠ° ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π½Π° опСрацията Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ‚ΠΎΡ‡Π½ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΎ.

Π”Ρ€ΡƒΠ³ΠΎ ΠΈΠ·Ρ‚ΠΈΡ‡Π°Π½Π΅ (KyberSlash2) Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ΠΎ Π² някои Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΡΡŠΡ‰ΠΎ възниква ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° сСкрСтна стойност ΠΏΡ€ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° раздСлянС. Π Π°Π·Π»ΠΈΠΊΠΈΡ‚Π΅ ΠΎΡ‚ ΠΏΡŠΡ€Π²Π°Ρ‚Π° опция сС свСТдат Π΄ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π΅ (във Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ poly_compress ΠΈ polyvec_compress), Π° Π½Π΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π΄Π΅ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ. Π’Ρ‚ΠΎΡ€Π°Ρ‚Π° опция ΠΎΠ±Π°Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΠΎΠ»Π΅Π·Π½Π° Π·Π° Π°Ρ‚Π°ΠΊΠ° само Π² случаитС, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ‚Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π΅, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·Ρ…ΠΎΠ΄ΡŠΡ‚ Π½Π° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ тСкст сС счита Π·Π° ΠΏΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅Π»Π΅Π½.

Уязвимостта Π²Π΅Ρ‡Π΅ Π΅ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π° Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅:

  • zig/lib/std/crypto/kyber_d00.zig (22 Π΄Π΅ΠΊΠ΅ΠΌΠ²Ρ€ΠΈ),
  • pq-crystals/kyber/ref (30 Π΄Π΅ΠΊΠ΅ΠΌΠ²Ρ€ΠΈ),
  • symbolicsoft/kyber-k2so (19 Π΄Π΅ΠΊΠ΅ΠΌΠ²Ρ€ΠΈ),
  • cloudflare/circl (8 януари),
  • aws/aws-lc/crypto/kyber (4 януари),
  • liboqs/src/kem/kyber (8 януари).

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Π½Π΅ са засСгнати ΠΎΡ‚ уязвимостта:

  • boringssl/ΠΊΡ€ΠΈΠΏΡ‚ΠΎ/kyber,
  • filippo.io/mlkem768,
  • formosa-crypto/libjade/tree/main/src/crypto_kem,
  • kyber/common/amd64/avx2,
  • formosa-crypto/libjade/tree/main/src/crypto_kem/kyber/common/amd64/ref,
  • pq-кристали/kyber/avx2,
  • pqclean/crypto_kem/kyber*/avx2.

Уязвимостта остава нСотстранСна Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅:

  • antontutoveanu/crystals-kyber-javascript,
  • Argyle-софтуСр/kyber,
  • debian/src/liboqs/unstable/src/kem/kyber,
  • kudelskisecurity/crystals-go,
  • mupq/pqm4/crypto_kem/kyber* (На 20 Π΄Π΅ΠΊΠ΅ΠΌΠ²Ρ€ΠΈ бСшС ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π° само 1 вСрсия Π½Π° уязвимостта),
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/чисто,
  • randombit/botan (Π½Π° 20 Π΄Π΅ΠΊΠ΅ΠΌΠ²Ρ€ΠΈ бСшС ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π° само 1 уязвимост),
  • rustpq/pqcrypto/pqcrypto-kyber (корСкция бСшС Π΄ΠΎΠ±Π°Π²Π΅Π½Π° към libsignal Π½Π° 5 януари, Π½ΠΎ уязвимостта всС ΠΎΡ‰Π΅ Π½Π΅ Π΅ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π° Π² самия pqcrypto-kyber).

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с DDoS Π·Π°Ρ‰ΠΈΡ‚Π°, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ ΡƒΠ΅Π± хостинг със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS Π°Ρ‚Π°ΠΊΠΈ, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster