Sårbarhet i implementeringer av post-kvantekrypteringsalgoritmen Kyber

En sårbarhet er identifisert i implementeringen av Kyber-krypteringsalgoritmen, som vant konkurransen om kvanteresistente kryptografiske algoritmer, og som tillater sidekanalangrep å rekonstruere hemmelige nøkler basert på måling av operasjonstiden under dekryptering av kryptert tekst levert av angriperen. Problemet påvirker både referanseimplementeringen av CRYSTALS-Kyber KEM-nøkkelinnkapslingsmekanismen og mange tredjeparts krypteringsbiblioteker som støtter Kyber, inkludert pqcrypto-biblioteket som brukes i Signal messenger.

Sårbarheten, med kodenavnet KyberSlash, er basert på bruken av divisjonsoperasjonen "t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;" i meldingsdekodingsprosessen, der dividenden inneholder den hemmelige verdien "t" av typen "dobbel", og divisoren er den velkjente offentlige verdien KYBER_Q. Problemet er at divisjonsoperasjonstiden ikke er konstant, og i forskjellige miljøer avhenger antallet CPU-sykluser som utføres for divisjon av inngangsdataene. Dermed kan man, basert på endringen i operasjonstiden, få en idé om arten av dataene som brukes til divisjon.

Daniel J. Bernstein, en anerkjent kryptografiekspert, har produsert en fungerende konseptdemonstrasjon av angrepet. I to av tre eksperimenter ble koden kjørt på en Raspberry Pi 2, og den klarte å gjenskape den private Kyber-512-nøkkelen fullstendig basert på dekodingstiden. Metoden kan også tilpasses for Kyber-768- og Kyber-1024-nøkler. For at angrepet skal lykkes, må krypteringsteksten som angriperen leverer, behandles med samme nøkkelpar, og utførelsestiden kan måles nøyaktig.

En annen lekkasje (KyberSlash2) er funnet i noen biblioteker, som også oppstår på grunn av bruk av en hemmelig verdi når man utfører divisjon. Forskjellen fra den første varianten er at den kalles i krypteringsfasen (i poly_compress- og polyvec_compress-funksjonene), og ikke under dekryptering. Den andre varianten kan imidlertid bare være nyttig for et angrep i tilfeller der prosedyren brukes i rekrypteringsoperasjoner, der resultatet av den krypterte teksten anses som konfidensielt.

Sårbarheten er allerede rettet i bibliotekene:

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

Biblioteker som ikke er sårbare i utgangspunktet:

  • boringssl/krypto/kyber,
  • filippo.io/mlkem768,
  • formosa-krypto/libjade/tree/main/src/krypto_kem,
  • kyber/common/amd64/avx2,
  • formosa-crypto/libjade/tree/main/src/crypto_kem/kyber/common/amd64/ref,
  • pq-krystaller/kyber/avx2,
  • pqclean/crypto_kem/kyber*/avx2.

Sårbarheten er fortsatt uoppdatert i bibliotekene:

  • antontutoveanu/crystals-kyber-javascript,
  • Argyle-programvare/kyber,
  • debian/src/liboqs/unstable/src/kem/kyber,
  • kudelskisikkerhet/krystaller-go,
  • mupq/pqm4/crypto_kem/kyber* (kun én sårbarhetsvariant fikset 20. desember),
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/clean,
  • randombit/botan (kun én sårbarhetsvariant fikset 20. desember),
  • rustpq/pqcrypto/pqcrypto-kyber (5. januar ble rettelsen lagt til i libsignal, men sårbarheten er ennå ikke fikset i selve pqcrypto-kyber).

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster