Sårbarhed i implementeringer af post-kvantekrypteringsalgoritmen Kyber

I implementeringen af ​​Kyber-krypteringsalgoritmen, som vandt konkurrencen mellem kryptografiske algoritmer, der er resistente over for brute force på en kvantecomputer, blev der identificeret en sårbarhed, der gør det muligt for sidekanalangreb at genskabe hemmelige nøgler baseret på måling af operationstiden under dekryptering af chifferteksten leveret af angriberen. Problemet påvirker både referenceimplementeringen af ​​CRYSTALS-Kyber KEM-nøgleindkapslingsmekanismen og mange tredjepartskrypteringsbiblioteker med Kyber-understøttelse, inklusive pqcrypto-biblioteket, der bruges i Signal Messenger.

Essensen af ​​sårbarheden, der har fået kodenavnet KyberSlash, ligger i brugen af ​​divisionsoperationen “t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;”. i processen med at afkode beskeden, hvor dividenden indeholder den hemmelige værdi "t" af typen "double", og divisoren er den velkendte offentlige værdi KYBER_Q. Problemet er, at tiden for divisionen ikke er konstant, og i forskellige miljøer afhænger antallet af CPU-cyklusser, der udføres til division, af inputdataene. Således kan man, baseret på ændringen i driftstidspunktet, få en idé om arten af ​​de data, der anvendes i opdelingen.

Daniel J. Bernstein, en anerkendt kryptografiekspert, har formået at producere en fungerende demonstration af angrebets konceptuelle bevis. I to af de tre udførte eksperimenter, hvor koden blev kørt på et Raspberry Pi 2-kort, var det muligt fuldstændigt at genskabe Kyber-512's private nøgle baseret på målingerne af dataafkodningstiden. Metoden kan også tilpasses til Kyber-768 og Kyber-1024 nøgler. For at angrebet kan lykkes, er det nødvendigt, at den krypterede tekst, som angriberen leverer, behandles med det samme nøglepar, og at operationens udførelsestid kan måles nøjagtigt.

En anden lækage (KyberSlash2) er blevet opdaget i nogle biblioteker, som også opstår på grund af brugen af ​​en hemmelig værdi ved division. Forskellene fra den første mulighed ligger i kaldet i krypteringsfasen (i funktionerne poly_compress og polyvec_compress), og ikke under dekryptering. Den anden mulighed kan dog kun være nyttig til angreb i tilfælde, hvor proceduren bruges i rekrypteringsoperationer, hvor outputtet af den krypterede tekst betragtes som fortroligt.

Sårbarheden er allerede rettet i bibliotekerne:

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

Biblioteker, der ikke oprindeligt var påvirket af sårbarheden:

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

Sårbarheden forbliver upatchet i bibliotekerne:

  • antontutoveanu/crystals-kyber-javascript,
  • Argyle-Software/kyber,
  • debian/src/liboqs/unstable/src/kem/kyber,
  • kudelskisecurity/crystals-go,
  • mupq/pqm4/crypto_kem/kyber* (den 20. december blev kun 1 version af sårbarheden rettet),
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/clean,
  • randombit/botan (den 20. december blev kun 1 sårbarhed rettet),
  • rustpq/pqcrypto/pqcrypto-kyber (en rettelse blev tilføjet til libsignal den 5. januar, men sårbarheden er endnu ikke rettet i selve pqcrypto-kyber).

Kilde: opennet.ru

Køb pålidelig hosting til websteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster