Dobësi në implementimet e algoritmit të kriptimit post-kuantik Kyber

Në zbatimin e algoritmit të kriptimit Kyber, i cili fitoi konkurrencën e algoritmeve kriptografike rezistente ndaj forcës brutale në një kompjuter kuantik, u identifikua një dobësi që lejon sulmet e kanaleve anësore të rikrijojnë çelësat sekretë bazuar në matjen e kohës së operacioneve gjatë dekriptimit të teksti shifror i ofruar nga sulmuesi. Problemi prek si zbatimin e referencës së mekanizmit të kapsulimit të çelësit CRYSTALS-Kyber KEM, ashtu edhe shumë biblioteka të enkriptimit të palëve të treta me mbështetje Kyber, duke përfshirë bibliotekën pqcrypto të përdorur në mesazherin Signal.

Thelbi i cenueshmërisë, i cili mori emrin e koduar KyberSlash, është në përdorimin e operacionit të ndarjes "t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;" në procesin e dekodimit të një mesazhi , në të cilën dividenti përmban vlerën sekrete “t” me tipin “double”, dhe pjesëtues është vlera e njohur publike KYBER_Q. Problemi është se koha e një operacioni të ndarjes nuk është konstante dhe në mjedise të ndryshme numri i cikleve të CPU-së që kryhen për ndarje varet nga të dhënat hyrëse. Kështu, bazuar në ndryshimet në kohën e funksionimit, mund të merret një ide për natyrën e të dhënave të përdorura në ndarje.

Daniel J. Bernstein, një ekspert i njohur në fushën e kriptografisë, ishte në gjendje të përgatiste një demonstrim pune të provës se sulmi mund të kryhej në praktikë. Në dy nga tre eksperimentet e kryera, gjatë ekzekutimit të kodit në tabelën Raspberry Pi 2, ishte e mundur të rikrijohej plotësisht çelësi privat Kyber-512 bazuar në matjet e kohës së deshifrimit të të dhënave. Metoda mund të përshtatet edhe për çelësat Kyber-768 dhe Kyber-1024. Për të kryer me sukses një sulm, është e nevojshme që teksti i koduar i specifikuar nga sulmuesi të përpunohet duke përdorur të njëjtin çift çelësash dhe që koha e ekzekutimit të operacionit të mund të matet me saktësi.

Një tjetër rrjedhje (KyberSlash2) është identifikuar në disa biblioteka, e cila gjithashtu ndodh për shkak të përdorimit të një vlere sekrete gjatë kryerjes së ndarjes. Dallimet nga opsioni i parë zbresin në thirrjen në fazën e enkriptimit (në funksionet poly_compress dhe polyvec_compress), dhe jo gjatë deshifrimit. Megjithatë, opsioni i dytë mund të jetë i dobishëm për një sulm vetëm në rastet kur procedura përdoret në operacionet e rikriptimit në të cilat dalja e tekstit të shifruar konsiderohet konfidenciale.

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

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

Bibliotekat që nuk janë prekur fillimisht nga cenueshmëria:

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

Dobësia mbetet e parregulluar në biblioteka:

  • antontutoveanu/crystals-kyber-javascript,
  • Argyle-Software/kyber,
  • debian/src/liboqs/unstable/src/kem/kyber,
  • kudelskisecurity/crystals-go,
  • mupq/pqm4/crypto_kem/kyber* (Më 20 dhjetor, vetëm 1 version i cenueshmërisë u rregullua)
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/clean,
  • randombit/botan (Më 20 dhjetor, vetëm 1 cenueshmëri u rregullua),
  • rustpq/pqcrypto/pqcrypto-kyber (një rregullim u shtua në libsignal më 5 janar, por dobësia nuk është rregulluar ende në vetë pqcrypto-kyber).

Burimi: opennet.ru

Shto një koment