Varnarleysi í útfærslum á dulkóðunaralgrími eftir skammtafræði Kyber

Við innleiðingu Kyber dulkóðunaralgrímsins, sem vann samkeppni dulritunaralgríma sem eru ónæm fyrir brute force á skammtatölvu, kom í ljós varnarleysi sem gerir hliðarrásarárásum kleift að endurskapa leynilega lykla sem byggjast á því að mæla tíma aðgerða meðan á afkóðun stendur. dulmálstexti frá árásarmanninum. Vandamálið hefur áhrif á bæði viðmiðunarútfærslu CRYSTALS-Kyber KEM lyklahlífunarbúnaðarins og mörg Kyber-virkuð dulkóðunarsöfn frá þriðja aðila, þar á meðal pqcrypto bókasafnið sem notað er í Signal Messenger.

Kjarninn í varnarleysinu, sem fékk kóðanafnið KyberSlash, er í notkun skiptingaraðgerðarinnar „t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;“ í því ferli að afkóða skilaboð , þar sem arðurinn inniheldur leynigildið „t“ með gerðinni „tvöfalt“ og deilirinn er hið vel þekkta opinbera gildi KYBER_Q. Vandamálið er að tími skiptingaraðgerðar er ekki stöðugur og í mismunandi umhverfi fer fjöldi örgjörvalota sem framkvæmdar eru fyrir skiptingu eftir inntaksgögnum. Þannig er hægt að fá hugmynd um eðli gagna sem notuð eru við skiptingu miðað við breytingar á rekstrartíma.

Daniel J. Bernstein, vel þekktur sérfræðingur á sviði dulmáls, gat útbúið sýnikennslu um sönnun þess að hægt væri að framkvæma árásina í reynd. Í tveimur af þremur tilraunum sem gerðar voru, þegar kóða var keyrt á Raspberry Pi 2 borðinu, var hægt að endurskapa Kyber-512 einkalykilinn algjörlega á grundvelli mælingar á umskráningartíma gagna. Aðferðina er einnig hægt að aðlaga fyrir Kyber-768 og Kyber-1024 lykla. Til að framkvæma árás með góðum árangri er nauðsynlegt að dulmálstextinn sem árásarmaðurinn tilgreinir sé unninn með því að nota sama lyklaparið og að hægt sé að mæla framkvæmdartíma aðgerðarinnar nákvæmlega.

Annar leki (KyberSlash2) hefur fundist í sumum bókasöfnum, sem einnig á sér stað vegna notkunar á leynilegu gildi við skiptingu. Munurinn frá fyrsta valkostinum kemur niður á símtalinu á dulkóðunarstigi (í poly_compress og polyvec_compress aðgerðunum), en ekki meðan á afkóðun stendur. Hins vegar getur seinni valkosturinn aðeins verið gagnlegur fyrir árás í þeim tilvikum þar sem aðferðin er notuð í endurdulkóðunaraðgerðum þar sem framleiðsla dulkóðunartextans er talin trúnaðarmál.

Varnarleysið hefur þegar verið lagað í bókasöfnunum:

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

Bókasöfn höfðu ekki áhrif á varnarleysið í upphafi:

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

Varnarleysið er enn óuppfært í bókasöfnunum:

  • antontutoveanu/kristallar-kyber-javascript,
  • Argyle-hugbúnaður/kyber,
  • debian/src/liboqs/unstable/src/kem/kyber,
  • kudelskisecurity/crystals-go,
  • mupq/pqm4/crypto_kem/kyber* (20. desember var aðeins 1 útgáfa af veikleikanum lagfærð),
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/clean,
  • randombit/botan (20. desember var aðeins 1 veikleiki lagaður),
  • rustpq/pqcrypto/pqcrypto-kyber (leiðréttingu var bætt við libsignal 5. janúar, en varnarleysið hefur ekki enn verið lagað í pqcrypto-kyber sjálfum).

Heimild: opennet.ru

Bæta við athugasemd