En sÄrbarhet har identifierats i implementeringen av Kyber-krypteringsalgoritmen, som vann tÀvlingen om kvantresistenta kryptografiska algoritmer, vilket gör det möjligt för sidokanalattacker att rekonstruera hemliga nycklar baserat pÄ att mÀta tiden för operationer under dekryptering av chiffertexten som tillhandahÄlls av angriparen. Problemet pÄverkar bÄde referensimplementeringen av nyckelinkapslingsmekanismen CRYSTALS-Kyber KEM och mÄnga tredjepartskrypteringsbibliotek med Kyber-stöd, inklusive pqcrypto-biblioteket som anvÀnds i Signal messenger.
KÀrnan i sÄrbarheten, som fÄtt kodnamnet KyberSlash, ligger i anvÀndningen av divisionsoperationen "t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;". i processen att avkoda meddelandet, dÀr dividenden innehÄller det hemliga vÀrdet "t" av typen "dubbel", och delaren Àr det vÀlkÀnda offentliga vÀrdet KYBER_Q. Problemet Àr att tiden för divisionsoperationen inte Àr konstant och i olika miljöer beror antalet CPU-cykler som utförs för division pÄ indata. SÄledes, baserat pÄ förÀndringen i operationstid, kan man fÄ en uppfattning om vilken typ av data som anvÀnds i uppdelningen.
Daniel J. Bernstein, en vÀlrenommerad kryptografiexpert, har lyckats producera en fungerande demonstration av attackens konceptuella bevis. I tvÄ av de tre experiment som utfördes, nÀr koden kördes pÄ ett Raspberry Pi 2-kort, var det möjligt att helt Äterskapa den privata Kyber-512-nyckeln baserat pÄ mÀtningarna av dataavkodningstiden. Metoden kan Àven anpassas för Kyber-768- och Kyber-1024-nycklar. För att attacken ska lyckas Àr det nödvÀndigt att den chiffertext som angriparen tillhandahÄller bearbetas med samma nyckelpar och att operationens exekveringstid kan mÀtas korrekt.
En annan lÀcka (KyberSlash2) har upptÀckts i vissa bibliotek, vilken ocksÄ uppstÄr pÄ grund av anvÀndningen av ett hemligt vÀrde vid division. Skillnaderna frÄn det första alternativet ligger i anropet i krypteringsstadiet (i funktionerna poly_compress och polyvec_compress), och inte under dekryptering. Det andra alternativet kan dock vara anvÀndbart för attacker endast i fall dÀr proceduren anvÀnds vid omkrypteringsoperationer, dÀr utdata frÄn den krypterade texten anses vara konfidentiell.
SÄrbarheten har redan ÄtgÀrdats i biblioteken:
- zig/lib/std/crypto/kyber_d00.zig (22 december),
- pq-kristaller/kyber/ref (30 december),
- symbolicsoft/kyber-k2so (19 december),
- cloudflare/circl (8 januari),
- aws/aws-lc/crypto/kyber (4 januari),
- liboqs/src/kem/kyber (8 januari).
Bibliotek som inte initialt Àr sÄrbara:
- boringssl/krypto/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-kristaller/kyber/avx2,
- pqclean/crypto_kem/kyber*/avx2.
SÄrbarheten Àr fortfarande ouppdaterad i biblioteken:
- antontutoveanu/kristaller-kyber-javascript,
- Argyle-programvara/kyber,
- debian/src/liboqs/instabil/src/kem/kyber,
- kudelskisecurity/crystals-go,
- mupq/pqm4/crypto_kem/kyber* (endast 20 sÄrbarhetsvariant ÄtgÀrdad den 1 december),
- PQClean/PQClean/crypto_kem/kyber*/aarch64,
- PQClean/PQClean/crypto_kem/kyber*/clean,
- randombit/botan (endast 20 sÄrbarhetsvariant ÄtgÀrdad den 1 december),
- rustpq/pqcrypto/pqcrypto-kyber (den 5 januari lades korrigeringen till i libsignal, men sÄrbarheten Àr Ànnu inte ÄtgÀrdad i sjÀlva pqcrypto-kyber).
KĂ€lla: opennet.ru
