Sebezhetőség a Kyber utáni kvantumtitkosítási algoritmus implementációiban

A Kvantumszámítógépen a nyers erőnek ellenálló kriptográfiai algoritmusok versenyét megnyerő Kyber titkosítási algoritmus implementációja során olyan sérülékenységet azonosítottak, amely lehetővé teszi az oldalcsatornás támadások számára titkos kulcsok újbóli létrehozását a műveletek idejének mérése alapján a dekódolás során. a támadó által biztosított titkosított szöveg. A probléma érinti a CRYSTALS-Kyber KEM kulcs-beágyazási mechanizmus referencia megvalósítását és számos harmadik féltől származó Kyber-kompatibilis titkosítási könyvtárat, beleértve a Signal messengerben használt pqcrypto könyvtárat is.

A KyberSlash kódnevet kapott sebezhetőség lényege a „t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;” osztási művelet használata az üzenet dekódolása során. , amelyben az osztalék a „t” titkos értéket tartalmazza „double” típussal, az osztó pedig a jól ismert KYBER_Q nyilvános érték. A probléma az, hogy az osztási művelet ideje nem állandó, és különböző környezetekben az osztáshoz végrehajtott CPU ciklusok száma a bemeneti adatoktól függ. Így a működési idők változása alapján képet kaphatunk az osztás során felhasznált adatok természetéről.

Daniel J. Bernstein, a kriptográfia területén ismert szakértő, képes volt egy működő bemutatót készíteni annak bizonyítására, hogy a támadás a gyakorlatban is végrehajtható. A három elvégzett kísérlet közül kettőben, amikor a Raspberry Pi 2 kártyán kódot futtattak, az adatok dekódolási idejének mérése alapján sikerült teljesen újra létrehozni a Kyber-512 privát kulcsot. A módszer Kyber-768 és Kyber-1024 kulcsokhoz is adaptálható. A támadás sikeres végrehajtásához szükséges, hogy a támadó által megadott rejtjelezett szöveget ugyanazzal a kulcspárral dolgozzák fel, és hogy a művelet végrehajtási ideje pontosan mérhető legyen.

Egyes könyvtárakban egy másik szivárgást (KyberSlash2) is azonosítottak, ami szintén egy titkos érték használatának köszönhető az osztás végrehajtása során. Az első opciótól való eltérések a titkosítási szakaszban (a poly_compress és polyvec_compress függvényekben) való hívásban jelentkeznek, és nem a visszafejtés során. A második lehetőség azonban csak olyan esetekben lehet hasznos támadás esetén, amikor az eljárást olyan újratitkosítási műveletekben használják, amelyekben a titkosított szöveg kimenete bizalmasnak minősül.

A sérülékenységet már javították a könyvtárakban:

  • zig/lib/std/crypto/kyber_d00.zig (december 22.),
  • pq-crystals/kyber/ref (december 30.),
  • symbolicsoft/kyber-k2so (december 19.),
  • cloudflare/circl (január 8.),
  • aws/aws-lc/crypto/kyber (január 4.),
  • liboqs/src/kem/kyber (január 8.).

A biztonsági rés által kezdetben nem érintett könyvtárak:

  • 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.

A sérülékenység javítás nélkül marad a könyvtárakban:

  • antontutoveanu/crystals-kyber-javascript,
  • Argyle-Software/kyber,
  • debian/src/liboqs/unstable/src/kem/kyber,
  • kudelskissecurity/crystals-go,
  • mupq/pqm4/crypto_kem/kyber* (december 20-án a sérülékenységnek csak 1 verzióját javították ki),
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/clean,
  • randombit/botan (december 20-án csak 1 biztonsági rést javítottak ki),
  • rustpq/pqcrypto/pqcrypto-kyber (január 5-én javították a libsignal-t, de magában a pqcrypto-kyberben még nem javították ki a biztonsági rést).

Forrás: opennet.ru

Hozzászólás