Ranljivost v implementacijah postkvantnega šifrirnega algoritma Kyber

Pri implementaciji šifrirnega algoritma Kyber, ki je zmagal v konkurenci kriptografskih algoritmov, odpornih na surovo silo na kvantnem računalniku, je bila ugotovljena ranljivost, ki omogoča stranskim kanalskim napadom poustvarjanje skrivnih ključev na podlagi merjenja časa operacij med dešifriranjem šifrirano besedilo, ki ga posreduje napadalec. Težava vpliva tako na referenčno izvedbo mehanizma enkapsulacije ključev CRYSTALS-Kyber KEM kot tudi na številne šifrirne knjižnice drugih proizvajalcev, ki podpirajo Kyber, vključno s knjižnico pqcrypto, ki se uporablja v Messengerju Signal.

Bistvo ranljivosti, ki je dobila kodno ime KyberSlash, je v uporabi operacije deljenja “t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;” v procesu dekodiranja sporočila. , v katerem dividenda vsebuje tajno vrednost “t” s tipom “double”, delitelj pa je dobro znana javna vrednost KYBER_Q. Težava je v tem, da čas operacije deljenja ni konstanten in je v različnih okoljih število ciklov procesorja, izvedenih za deljenje, odvisno od vhodnih podatkov. Tako lahko na podlagi sprememb v časih delovanja dobite predstavo o naravi podatkov, uporabljenih pri delitvi.

Daniel J. Bernstein, znani strokovnjak na področju kriptografije, je lahko pripravil delujoč prikaz dokaza, da je napad mogoče izvesti v praksi. V dveh od treh izvedenih poskusov je bilo pri izvajanju kode na plošči Raspberry Pi 2 mogoče popolnoma poustvariti zasebni ključ Kyber-512 na podlagi meritev časa dekodiranja podatkov. Metodo je mogoče prilagoditi tudi za ključe Kyber-768 in Kyber-1024. Za uspešno izvedbo napada je potrebno, da je šifrirano besedilo, ki ga določi napadalec, obdelano z istim parom ključev in da je mogoče natančno izmeriti čas izvedbe operacije.

V nekaterih knjižnicah je bilo ugotovljeno še eno puščanje (KyberSlash2), ki se prav tako pojavi zaradi uporabe tajne vrednosti pri izvajanju deljenja. Razlike od prve možnosti se nanašajo na klic na stopnji šifriranja (v funkcijah poly_compress in polyvec_compress) in ne med dešifriranjem. Vendar pa je druga možnost lahko uporabna za napad samo v primerih, ko se postopek uporablja v operacijah ponovnega šifriranja, pri katerih se izhod šifriranega besedila šteje za zaupnega.

Ranljivost je že odpravljena v knjižnicah:

  • zig/lib/std/crypto/kyber_d00.zig (22. december),
  • pq-crystals/kyber/ref (30. december),
  • symbolicsoft/kyber-k2so (19. december),
  • cloudflare/circl (8. januar),
  • aws/aws-lc/crypto/kyber (4. januar),
  • liboqs/src/kem/kyber (8. januar).

Knjižnice, na katere prvotno ni vplivala ranljivost:

  • boringssl/crypto/kyber,
  • filippo.io/mlkem768,
  • formosa-crypto/libjade/tree/main/src/crypto_kem,
  • kyber/skupno/amd64/avx2,
  • formosa-crypto/libjade/tree/main/src/crypto_kem/kyber/common/amd64/ref,
  • pq-kristali/kyber/avx2,
  • pqclean/crypto_kem/kyber*/avx2.

Ranljivost ostaja nepopravljena v knjižnicah:

  • antontutoveanu/kristali-kyber-javascript,
  • Argyle-Programska oprema/kyber,
  • debian/src/liboqs/unstable/src/kem/kyber,
  • kudelskisecurity/crystals-go,
  • mupq/pqm4/crypto_kem/kyber* (20. decembra je bila odpravljena le 1 različica ranljivosti),
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/clean,
  • randombit/botan (20. decembra je bila odpravljena le 1 ranljivost),
  • rustpq/pqcrypto/pqcrypto-kyber (popravek je bil v libsignal dodan 5. januarja, vendar ranljivost še ni bila odpravljena v samem pqcrypto-kyber).

Vir: opennet.ru

Kupite zanesljivo gostovanje za strani z DDoS zaščito, VPS VDS strežniki 🔥 Kupite zanesljivo spletno gostovanje z zaščito DDoS, VPS VDS strežniki | ProHoster