Viga postkvantumkrüpteerimise algoritmi Kyber teostustes

Kyberi krüpteerimise algoritmi, mis võitis kvantkomputerite rünnakutele vastupidavate krüptoalgoritmide võistluse, rakendamisel avastati haavatavus, mis võimaldab häkkeritel kasutada kõrvalkanaleid, et taastada salajasi võtmeid, mõõtes operatsioonide ajal pidevat aega, kui rünnatakse kolmandate osapoolte krüpteeritud tekstide dekodeerimist. Probleem mõjutab nii CRYSTALS-Kyber KEMi võtmeinkapsuleerimise mehhanismi võrdlevat teostust kui ka paljusid teisi Kyberi toetavaid krüpteerimiskogusid, sealhulgas pqcrypto teeki, mida kasutab sõnumirakendus Signal.

KyberSlashi nime all olnud haavatavuse tuum seisneb jagamisoperatsiooni "t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;" dekrüptimise protsessis, kus jagatav sisaldab salajast väärtust "t", mille tüüp on "double", ja jagaja on tuntud avalik väärtus KYBER_Q. Probleem seisneb selles, et jagamisoperatsiooni aeg ei ole konstantne ja erinevates keskkondades sõltub jagamise jaoks vajalik tsüklite arv sisendandmetest. Seega võib operatsioonide ajamuutuse põhjal saada teavet jagamisel kasutatavate andmete olemuse kohta.

Daniel J. Bernstein, tunnustatud krüptograafia ekspert, suutis valmistada ette tööpõhise demonstreerimise selle võimalusest, et rünnak saaks praktikas toimuma. Kahes kolmest läbi viidud eksperimendist õnnestus Raspberry Pi 2 plaadil käivitatud koodi abil täielikult rekonstrueerida Kyber-512 privaatvõti, tuginedes andmete dekodeerimise aja mõõtmisele. Meetodit saab ka kohandada Kyber-768 ja Kyber-1024 võtmete jaoks. Rünnaku edukaks teostamiseks on vajalik, et ründaja sätestatud šifritöötlust teostataks sama võtmepaariga ning et operatsiooni täitmise ajal saaks täpselt mõõta.

Mõnedes raamatukogudes on avastatud veel üks lekkimine (KyberSlash2), mis ilmneb samuti salajase väärtuse kasutamisest jagamisel. Erinevused esimesest variandist tulenevad sellest, et seda kutsutakse välja krüpteerimise etapis (funktsioonides poly_compress ja polyvec_compress), mitte dekrüpteerimise ajal. Teine variant võib osutuda kasulikuks rünnakuks ainult nendes olukordades, kus protseduuri kasutatakse uuesti krüpteerimise operatsioonides, kus salajaste tekstide väljundit peetakse konfidentsiaalseks.

Haavatavust on juba parandatud järgmistes raamatukogudes:

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

Raamatukogud, mis algselt haavatavusele ei olnud:

  • 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-crystals/kyber/avx2,
  • pqclean/crypto_kem/kyber*/avx2.

Haavatavus jääb parandamata järgmistes raamatukogudes:

  • antontutoveanu/crystals-kyber-javascript,
  • Argyle-Software/kyber,
  • debian/src/liboqs/unstable/src/kem/kyber,
  • kudelskisecurity/crystals-go,
  • mupq/pqm4/crypto_kem/kyber* (20. detsember parandati ainult 1 variandi haavatavusest),
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/clean,
  • randombit/botan (20. detsember, korrigeeritud ainult 1 haavatavus),
  • rustpq/pqcrypto/pqcrypto-kyber (5. jaanuaril lisatud parandused libsignal'i, kuid pqcrypto-kyberis ise haavatavus veel parendamata).

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster