Ранливост во имплементациите на пост-квантниот алгоритам за шифрирање Kyber

При имплементацијата на алгоритмот за шифрирање Kyber, кој победи во конкуренција на криптографски алгоритми отпорни на брутална сила на квантен компјутер, беше идентификувана ранливост што им овозможува на нападите од страничните канали повторно да создадат тајни клучеви врз основа на мерење на времето на операции за време на дешифрирање на шифриран текст обезбеден од напаѓачот. Проблемот влијае и на референтната имплементација на механизмот за енкапсулација на клучеви CRYSTALS-Kyber KEM и на многу библиотеки за шифрирање овозможени од трети страни на Kyber, вклучувајќи ја и библиотеката pqcrypto што се користи во месинџерот Signal.

Суштината на ранливоста, која го доби кодното име KyberSlash, е во употребата на операцијата за поделба „t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;“ во процесот на декодирање порака , во која дивидендата ја содржи тајната вредност „t“ со тип „double“, а делител е добро познатата јавна вредност KYBER_Q. Проблемот е што времето на операцијата за поделба не е константно, а во различни средини бројот на циклуси на процесорот што се вршат за поделба зависи од влезните податоци. Така, врз основа на промените во времето на работа, може да се добие идеја за природата на податоците што се користат при поделбата.

Даниел Ј. Во два од трите спроведени експерименти, при извршување на кодот на плочката Raspberry Pi 2, беше можно целосно да се рекреира приватниот клуч Kyber-512 врз основа на мерење на времето за декодирање на податоците. Методот може да се прилагоди и за клучевите Kyber-768 и Kyber-1024. За успешно извршување на нападот, неопходно е шифрениот текст наведен од напаѓачот да се обработи со користење на истиот пар клучеви и времето на извршување на операцијата да може точно да се мери.

Друго истекување (KyberSlash2) е идентификувано во некои библиотеки, што исто така се јавува поради употребата на тајна вредност при извршување на поделбата. Разликите од првата опција се сведуваат на повикот во фазата на шифрирање (во функциите poly_compress и polyvec_compress), а не при дешифрирање. Меѓутоа, втората опција може да биде корисна за напад само во случаи кога постапката се користи во операции за повторно шифрирање во кои излезот на шифрениот текст се смета за доверлив.

Ранливоста е веќе поправена во библиотеките:

  • zig/lib/std/crypto/kyber_d00.zig (22 декември),
  • pq-crystals/kyber/ref (30 декември),
  • simbolicsoft/kyber-k2so (19 декември),
  • cloudflare/circl (8 јануари),
  • aws/aws-lc/crypto/kyber (4 јануари),
  • liboqs/src/kem/kyber (8 јануари).

Библиотеки кои првично не беа погодени од ранливоста:

  • 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-кристали/kyber/avx2,
  • pqclean/crypto_kem/kyber*/avx2.

Ранливоста останува незакрпена во библиотеките:

  • antontutoveanu/crystals-kyber-javascript,
  • Argyle-Software/kyber,
  • debian/src/liboqs/unstable/src/kem/kyber,
  • kudelskisecurity/crystals-go,
  • mupq/pqm4/crypto_kem/kyber* (на 20 декември беше поправена само 1 верзија на ранливоста)
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/clean,
  • randombit/botan (на 20 декември беше поправена само 1 ранливост),
  • rustpq/pqcrypto/pqcrypto-kyber (поправка беше додадена на libsignal на 5 јануари, но ранливоста сè уште не е поправена во самиот pqcrypto-kyber).

Извор: opennet.ru

Купете доверлив хостинг за сајтови со DDoS заштита, VPS VDS сервери 🔥 Купете сигурен веб-хостинг со DDoS заштита, VPS VDS сервери | ProHoster