Zaurgarritasuna Kyber enkriptazio-algoritmo post-kuantikoaren inplementazioetan

Ordenagailu kuantikoan indar gordinari erresistenteak diren algoritmo kriptografikoen lehiaketa irabazi zuen Kyber enkriptazio algoritmoaren ezarpenean, alboko kanaleko erasoei gako sekretuak birsortzeko aukera ematen dien ahultasun bat identifikatu zen, deszifratzean eragiketen denbora neurtzean oinarrituta. Erasotzaileak emandako testu zifratua. Arazoak CRYSTALS-Kyber KEM gako enkapsulatzeko mekanismoaren erreferentzia-inplementazioan eta Kyber-en laguntza duten hirugarrenen zifratze-liburutegi askori eragiten dio, Signal messenger-en erabiltzen den pqcrypto liburutegia barne.

KyberSlash kode izena jaso zuen ahultasunaren funtsa "t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;" zatiketa eragiketaren erabileran dago mezu bat deskodetzeko prozesuan. , zeinetan dibidenduak "t" balio sekretua dauka "bikoitza" motarekin, eta zatitzailea KYBER_Q balio publiko ezaguna da. Arazoa da zatiketa-eragiketa baten denbora ez dela konstantea, eta ingurune desberdinetan zatiketa egiteko burutzen diren PUZaren ziklo kopurua sarrerako datuen araberakoa da. Horrela, eragiketa-denboretan izandako aldaketetan oinarrituta, zatiketan erabilitako datuen izaeraren ideia bat egin daiteke.

Daniel J. Bernstein, kriptografiaren alorreko aditu ezagunak, erasoa praktikan egin zitekeela frogatzeko lan-erakusketa bat prestatu ahal izan zuen. Egindako hiru esperimentuetatik bitan, Raspberry Pi 2 plakan kodea exekutatzean, Kyber-512 gako pribatua guztiz birsortzea posible izan zen datuak deskodetzeko denbora neurtzean oinarrituta. Metodoa Kyber-768 eta Kyber-1024 giltzetarako ere egokitu daiteke. Eraso bat arrakastaz burutzeko, beharrezkoa da erasotzaileak zehaztutako testu zifratua gako-pare berdina erabiliz prozesatzea eta eragiketaren exekuzio-denbora zehaztasunez neurtzea.

Liburutegi batzuetan beste filtrazio bat (KyberSlash2) identifikatu da, zatiketa egitean balio sekretu bat erabiltzeagatik ere gertatzen dena. Lehenengo aukerarekiko desberdintasunak zifratze fasean (poly_compress eta polyvec_compress funtzioetan) deian jaisten dira, eta ez deszifratzean. Hala ere, bigarren aukera baliagarria izan daiteke eraso baterako prozedura berriro enkriptatze-eragiketetan erabiltzen den kasuetan, zifra-testuaren irteera isilpekotzat hartzen den kasuetan.

Ahultasuna dagoeneko konpondu da liburutegietan:

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

Hasieran ahultasunak kaltetutako liburutegiak:

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

Ahultasunak adabakirik gabe jarraitzen du liburutegietan:

  • antontutoveanu/crystals-kyber-javascript,
  • Argyle-Software/kyber,
  • debian/src/liboqs/unstable/src/kem/kyber,
  • kudelskisegurtasuna/kristalak-go,
  • mupq/pqm4/crypto_kem/kyber* (abenduaren 20an, ahultasunaren bertsio bakarra konpondu zen),
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/clean,
  • randombit/botan (abenduaren 20an, ahultasun bakarra konpondu zen),
  • rustpq/pqcrypto/pqcrypto-kyber (urtarrilaren 5ean libsignal-i konponketa bat gehitu zitzaion, baina ahultasuna oraindik ez da konpondu pqcrypto-kyber-en bertan).

Iturria: opennet.ru

Gehitu iruzkin berria