Vundebleco en efektivigoj de la post-kvantuma ĉifrada algoritmo Kyber

En la efektivigo de la ĉifrada algoritmo de Kyber, kiu gajnis la konkurson de ĉifrikaj algoritmoj imunaj al kruda forto sur kvantuma komputilo, vundebleco estis identigita kiu permesas al flankaj kanalaj atakoj rekrei sekretajn ŝlosilojn surbaze de mezurado de la tempo de operacioj dum deĉifrado de la. ĉifroteksto provizita de la atakanto. La problemo influas kaj la referencan efektivigon de la CRYSTALS-Kyber KEM-ŝlosila enkapsuliga mekanismo kaj multajn triajn Kyber-ebligitajn ĉifradbibliotekojn, inkluzive de la pqcrypto-biblioteko uzita en la Signal-mesaĝo.

La esenco de la vundebleco, kiu ricevis la kodnomon KyberSlash, estas en la uzo de la divida operacio "t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;" en la procezo de malkodado de mesaĝo. , en kiu la dividendo enhavas la sekretan valoron "t" kun tipo "duobla", kaj la dividanto estas la konata publika valoro KYBER_Q. La problemo estas, ke la tempo de divida operacio ne estas konstanta, kaj en malsamaj medioj la nombro da CPU-cikloj faritaj por divido dependas de la enigdatenoj. Tiel, surbaze de ŝanĝoj en operaciotempoj, oni povas havi ideon pri la naturo de la datumoj uzataj en divido.

Daniel J. Bernstein, konata fakulo en la fako de kriptografio, povis prepari funkcian pruvon de pruvo, ke la atako povas esti efektivigita en la praktiko. En du el la tri eksperimentoj faritaj, kiam oni funkciis kodon sur la Raspberry Pi 2-tabulo, eblis tute rekrei la privatan ŝlosilon Kyber-512 surbaze de mezurado de la datummalkoda tempo. La metodo ankaŭ povas esti adaptita por Kyber-768 kaj Kyber-1024-ŝlosiloj. Por sukcese efektivigi atakon, necesas, ke la ĉifroteksto specifita de la atakanto estu prilaborita uzante la saman ŝlosilparon kaj ke la ekzekuttempo de la operacio povas esti precize mezurita.

Alia liko (KyberSlash2) estis identigita en iuj bibliotekoj, kiu ankaŭ okazas pro la uzo de sekreta valoro dum divido. La diferencoj de la unua opcio venas al la voko ĉe la ĉifrada stadio (en la poly_compress kaj polyvec_compress funkcioj), kaj ne dum deĉifrado. Tamen, la dua opcio povas esti utila por atako nur en kazoj kie la proceduro estas uzita en re-ĉifradaj operacioj en kiuj la eligo de la ĉifroteksto estas konsiderita konfidenca.

La vundebleco jam estis riparita en la bibliotekoj:

  • zig/lib/std/crypto/kyber_d00.zig (22-a de decembro),
  • pq-crystals/kyber/ref (30 decembro),
  • symbolicsoft/kyber-k2so (la 19-an de decembro),
  • nuboflamo/cirklo (8 januaro),
  • aws/aws-lc/crypto/kyber (januaro 4),
  • liboqs/src/kem/kyber (8 januaro).

Bibliotekoj ne komence trafitaj de la vundebleco:

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

La vundebleco restas neflikita en la bibliotekoj:

  • antontutoveanu/crystals-kyber-javascript,
  • Argyle-Programaro/kyber,
  • debian/src/liboqs/unstable/src/kem/kyber,
  • kudelskisecurity/kristaloj-go,
  • mupq/pqm4/crypto_kem/kyber* (La 20-an de decembro, nur 1 versio de la vundebleco estis riparita),
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/clean,
  • randombit/botan (La 20-an de decembro, nur 1 vundebleco estis riparita),
  • rustpq/pqcrypto/pqcrypto-kyber (riparo estis aldonita al libsignal la 5-an de januaro, sed la vundebleco ankoraŭ ne estis riparita en pqcrypto-kyber mem).

fonto: opennet.ru

Aldoni komenton