Vulnerabilitet në implementimet e algoritmit post-kantor të enkriptimit Kyber

Në implementimin e algoritmit të enkriptimit Kyber, fitues të garës së algoritmave kriptografikë të qëndrueshëm ndaj përpjekjeve me kompjuterë kuantikë, është zbuluar një dobësi që lejon kryerjen e sulmeve përmes kanaleve të jashtme për të rikrijuar çelësat sekretë duke u bazuar në matjen e kohës së operacioneve gjatë dekriptimit të tekstit të enkriptuar të paraqitur nga sulmuesi. Problemi preku si implementimin referencë të mekanizmit të inkapsulimit të çelësave CRYSTALS-Kyber KEM, ashtu edhe shumë biblioteka të jashtme të enkriptimit që mbështesin Kyber, duke përfshirë bibliotekën pqcrypto të përdorur në mesazherin Signal.

Thelbi i dobësisë, e cila mori emrin kodor KyberSlash, qëndron në përdorimin gjatë dekodimit të mesazhit të operacionit të ndarjes "t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;", në të cilin shifra ndarëse përmban një vlerë sekrete "t" me tipin "double", ndërsa ndarësi është një vlerë publike e njohur KYBER_Q. Problemi është që koha e operacionit të ndarjes nuk është një konstantë dhe në ambiente të ndryshme numri i cikleve të CPU-të të kërkuar për ndarjen varet nga të dhënat hyrëse. Kështu, duke u bazuar në ndryshimin e kohës së operacioneve, mund të merret një ide mbi natyrën e të dhënave të përdorura gjatë ndarjes.

Daniel Bernstein, ekspert i njohur në fushën e kriptografisë, arriti të përgatisë një demonstruese funksionale të provës së mundësisë për të kryer një sulm në praktikë. Në dy nga tre eksperimentet e kryera në pllakat Raspberry Pi 2 u arrit të rikrijohej plotësisht çelësi i mbyllur Kyber-512 mbi bazën e matjes së kohës së dekodimit të të dhënave. Metoda gjithashtu mund të adaptohet për çelësat Kyber-768 dhe Kyber-1024. Për kryerjen e suksesshme të sulmit, është e nevojshme që teksti i enkriptuar, i paracaktuar nga sulmuesi, të përpunojë të njëjtën palë çelësa dhe që të jetë e mundur të matet saktësisht koha e ekzekutimit të operacionit.

Në disa biblioteka është zbuluar një rrjedhje tjetër (KyberSlash2), e cila gjithashtu ndodh për shkak të përdorimit të një vlerë sekrete gjatë kryerjes së ndarjes. Diferencat nga versioni i parë përfshijnë thirrje në fazën e enkriptimit (në funksionet poly_compress dhe polyvec_compress), dhe jo gjatë dekriptimit. Megjithatë, versioni i dytë mund të jetë i dobishëm për sulmin vetëm në rastet e përdorimit të procedurës në operacionet e ri-enkriptimit, në të cilat rezultati i tekstit të enkriptuar konsiderohet konfidencial.

Dobësia tashmë është rregulluar në bibliotekat:

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

Bibliotekat, të cilat fillimisht nuk ishin të ndjeshme ndaj dobësisë:

  • 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.

Dobësia mbetet e pa rregulluar në bibliotekat:

  • antontutoveanu/crystals-kyber-javascript,
  • Argyle-Software/kyber,
  • debian/src/liboqs/unstable/src/kem/kyber,
  • kudelskisecurity/crystals-go,
  • mupq/pqm4/crypto_kem/kyber* (20 dhjetor rregulluar vetĂ«m njĂ« variant tĂ« dobĂ«sisĂ«),
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/clean,
  • randombit/botan (20 dhjetor rregulluar vetĂ«m njĂ« variant tĂ« dobĂ«sisĂ«),
  • rustpq/pqcrypto/pqcrypto-kyber (5 janar rregullimi Ă«shtĂ« shtuar nĂ« libsignal, por nĂ« vetĂ« pqcrypto-kyber dobĂ«sia nuk Ă«shtĂ« rregulluar ende).

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster