Kwesbaarheid in implementering van die post-kwantum-enkripsie-algoritme Kyber

In die implementering van die Kyber-enkripsie-algoritme, wat die kompetisie van kriptografiese algoritmes wat bestand is teen brute krag op 'n kwantumrekenaar gewen het, is 'n kwesbaarheid geïdentifiseer wat sykanaalaanvalle toelaat om geheime sleutels te herskep gebaseer op die meting van die tyd van bedrywighede tydens dekripsie van die syferteks verskaf deur die aanvaller. Die probleem raak beide die verwysingsimplementering van die CRYSTALS-Kyber KEM-sleutelinkapselingsmeganisme en baie derdeparty Kyber-geaktiveerde enkripsiebiblioteke, insluitend die pqcrypto-biblioteek wat in die Signal messenger gebruik word.

Die kern van die kwesbaarheid, wat die kodenaam KyberSlash ontvang het, is in die gebruik van die verdelingsbewerking "t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;" in die proses om 'n boodskap te dekodeer , waarin die dividend die geheime waarde "t" met tipe "dubbel" bevat, en die deler die bekende publieke waarde KYBER_Q is. Die probleem is dat die tyd van 'n verdelingsbewerking nie konstant is nie, en in verskillende omgewings hang die aantal SVE-siklusse wat vir deling uitgevoer word af van die insetdata. Dus, gebaseer op veranderinge in bedryfstye, kan 'n mens 'n idee kry van die aard van die data wat in verdeling gebruik word.

Daniel J. Bernstein, 'n bekende kenner op die gebied van kriptografie, kon 'n werkende demonstrasie voorberei van bewys dat die aanval in die praktyk uitgevoer kon word. In twee van die drie eksperimente wat uitgevoer is, wanneer kode op die Raspberry Pi 2-bord uitgevoer word, was dit moontlik om die Kyber-512-privaatsleutel heeltemal te herskep op grond van die meting van die data-dekoderingstyd. Die metode kan ook aangepas word vir Kyber-768- en Kyber-1024-sleutels. Om 'n aanval suksesvol uit te voer, is dit nodig dat die syferteks wat deur die aanvaller gespesifiseer is, met dieselfde sleutelpaar verwerk word en dat die uitvoeringstyd van die operasie akkuraat gemeet kan word.

Nog 'n lekkasie (KyberSlash2) is in sommige biblioteke geïdentifiseer, wat ook voorkom as gevolg van die gebruik van 'n geheime waarde wanneer deling uitgevoer word. Die verskille van die eerste opsie kom neer op die oproep by die enkripsiestadium (in die poly_compress- en polyvec_compress-funksies), en nie tydens dekripsie nie. Die tweede opsie kan egter slegs nuttig wees vir 'n aanval in gevalle waar die prosedure gebruik word in herenkripsie-operasies waarin die uitvoer van die syferteks as vertroulik beskou word.

Die kwesbaarheid is reeds in die biblioteke reggestel:

  • zig/lib/std/crypto/kyber_d00.zig (22 Desember),
  • pq-kristalle/kyber/ref (30 Desember),
  • symbolicsoft/kyber-k2so (19 Desember),
  • wolkvlam/sirkel (8 Januarie),
  • aws/aws-lc/crypto/kyber (4 Januarie),
  • liboqs/src/kem/kyber (8 Januarie).

Biblioteke wat nie aanvanklik deur die kwesbaarheid geraak is nie:

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

Die kwesbaarheid bly nie opgepas in die biblioteke:

  • antontutoveanu/kristalle-kyber-javascript,
  • Argyle-sagteware/kyber,
  • debian/src/liboqs/unstable/src/kem/kyber,
  • kudelskisecurity/crystals-go,
  • mupq/pqm4/crypto_kem/kyber* (Op 20 Desember is slegs 1 weergawe van die kwesbaarheid reggestel),
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/clean,
  • randombit/botan (Op 20 Desember is slegs 1 kwesbaarheid reggestel),
  • rustpq/pqcrypto/pqcrypto-kyber ('n oplossing is op 5 Januarie by libsignal gevoeg, maar die kwesbaarheid is nog nie in pqcrypto-kyber self reggestel nie).

Bron: opennet.ru

Voeg 'n opmerking