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
