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