Ранливост Π²ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° пост-ΠΊΠ²Π°Π½Ρ‚Π½ΠΈΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚Π°ΠΌ Π·Π° ΡˆΠΈΡ„Ρ€ΠΈΡ€Π°ΡšΠ΅ Kyber

ΠŸΡ€ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΡ‚ Π·Π° ΡˆΠΈΡ„Ρ€ΠΈΡ€Π°ΡšΠ΅ Kyber, кој ΠΏΠΎΠ±Π΅Π΄ΠΈ Π²ΠΎ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΡ˜Π° Π½Π° криптографски Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ ΠΎΡ‚ΠΏΠΎΡ€Π½ΠΈ Π½Π° Π±Ρ€ΡƒΡ‚Π°Π»Π½Π° сила Π½Π° ΠΊΠ²Π°Π½Ρ‚Π΅Π½ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€, бСшС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΡƒΠ²Π°Π½Π° ранливост ΡˆΡ‚ΠΎ ΠΈΠΌ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π½Π° Π½Π°ΠΏΠ°Π΄ΠΈΡ‚Π΅ ΠΎΠ΄ страничнитС ΠΊΠ°Π½Π°Π»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π΄Π° создадат Ρ‚Π°Ρ˜Π½ΠΈ ΠΊΠ»ΡƒΡ‡Π΅Π²ΠΈ Π²Ρ€Π· основа Π½Π° ΠΌΠ΅Ρ€Π΅ΡšΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΡˆΠΈΡ„Ρ€ΠΈΡ€Π°Π½ тСкст ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½ ΠΎΠ΄ Π½Π°ΠΏΠ°Ρ“Π°Ρ‡ΠΎΡ‚. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΡ‚ влијаС ΠΈ Π½Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½Π°Ρ‚Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΡ‚ Π·Π° Π΅Π½ΠΊΠ°ΠΏΡΡƒΠ»Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΊΠ»ΡƒΡ‡Π΅Π²ΠΈ CRYSTALS-Kyber KEM ΠΈ Π½Π° ΠΌΠ½ΠΎΠ³Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π° ΡˆΠΈΡ„Ρ€ΠΈΡ€Π°ΡšΠ΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ΠΈ ΠΎΠ΄ Ρ‚Ρ€Π΅Ρ‚ΠΈ страни Π½Π° Kyber, Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Ρ˜ΡœΠΈ ја ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° pqcrypto ΡˆΡ‚ΠΎ сС користи Π²ΠΎ ΠΌΠ΅ΡΠΈΠ½ΡŸΠ΅Ρ€ΠΎΡ‚ Signal.

Π‘ΡƒΡˆΡ‚ΠΈΠ½Π°Ρ‚Π° Π½Π° ранливоста, која Π³ΠΎ Π΄ΠΎΠ±ΠΈ ΠΊΠΎΠ΄Π½ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅ KyberSlash, Π΅ Π²ΠΎ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° ΠΏΠΎΠ΄Π΅Π»Π±Π° β€žt = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;β€œ Π²ΠΎ процСсот Π½Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ ΠΏΠΎΡ€Π°ΠΊΠ° , Π²ΠΎ која Π΄ΠΈΠ²ΠΈΠ΄Π΅Π½Π΄Π°Ρ‚Π° ја содрТи Ρ‚Π°Ρ˜Π½Π°Ρ‚Π° врСдност β€žtβ€œ со Ρ‚ΠΈΠΏ β€ždoubleβ€œ, Π° Π΄Π΅Π»ΠΈΡ‚Π΅Π» Π΅ Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠ·Π½Π°Ρ‚Π°Ρ‚Π° јавна врСдност KYBER_Q. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΡ‚ Π΅ ΡˆΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° ΠΏΠΎΠ΄Π΅Π»Π±Π° Π½Π΅ Π΅ константно, Π° Π²ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ срСдини Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° циклуси Π½Π° процСсорот ΡˆΡ‚ΠΎ сС Π²Ρ€ΡˆΠ°Ρ‚ Π·Π° ΠΏΠΎΠ΄Π΅Π»Π±Π° зависи ΠΎΠ΄ Π²Π»Π΅Π·Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Π’Π°ΠΊΠ°, Π²Ρ€Π· основа Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π΄ΠΎΠ±ΠΈΠ΅ идСја Π·Π° ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ сС користат ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π΅Π»Π±Π°Ρ‚Π°.

Π”Π°Π½ΠΈΠ΅Π» Ј. Π’ΠΎ Π΄Π²Π° ΠΎΠ΄ Ρ‚Ρ€ΠΈΡ‚Π΅ спровСдСни СкспСримСнти, ΠΏΡ€ΠΈ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚ Π½Π° ΠΏΠ»ΠΎΡ‡ΠΊΠ°Ρ‚Π° 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 Π΄Π΅ΠΊΠ΅ΠΌΠ²Ρ€ΠΈ),
  • simbolicsoft/kyber-k2so (19 Π΄Π΅ΠΊΠ΅ΠΌΠ²Ρ€ΠΈ),
  • cloudflare/circl (8 Ρ˜Π°Π½ΡƒΠ°Ρ€ΠΈ),
  • aws/aws-lc/crypto/kyber (4 Ρ˜Π°Π½ΡƒΠ°Ρ€ΠΈ),
  • liboqs/src/kem/kyber (8 Ρ˜Π°Π½ΡƒΠ°Ρ€ΠΈ).

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΊΠΎΠΈ ΠΏΡ€Π²ΠΈΡ‡Π½ΠΎ Π½Π΅ Π±Π΅Π° ΠΏΠΎΠ³ΠΎΠ΄Π΅Π½ΠΈ ΠΎΠ΄ ранливоста:

  • boringssl/crypto/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-Software/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*/clean,
  • randombit/botan (Π½Π° 20 Π΄Π΅ΠΊΠ΅ΠΌΠ²Ρ€ΠΈ бСшС ΠΏΠΎΠΏΡ€Π°Π²Π΅Π½Π° само 1 ранливост),
  • rustpq/pqcrypto/pqcrypto-kyber (ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠ° бСшС Π΄ΠΎΠ΄Π°Π΄Π΅Π½Π° Π½Π° libsignal Π½Π° 5 Ρ˜Π°Π½ΡƒΠ°Ρ€ΠΈ, Π½ΠΎ ранливоста сè ΡƒΡˆΡ‚Π΅ Π½Π΅ Π΅ ΠΏΠΎΠΏΡ€Π°Π²Π΅Π½Π° Π²ΠΎ самиот pqcrypto-kyber).

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€