Kahinaan sa mga pagpapatupad ng post-quantum encryption algorithm Kyber

Sa pagpapatupad ng Kyber encryption algorithm, na nanalo sa kumpetisyon ng mga cryptographic algorithm na lumalaban sa brute force sa isang quantum computer, natukoy ang isang kahinaan na nagpapahintulot sa mga pag-atake sa side-channel na muling likhain ang mga lihim na key batay sa pagsukat sa oras ng mga operasyon sa panahon ng pag-decryption ng ciphertext na ibinigay ng umaatake. Ang problema ay nakakaapekto sa parehong reference na pagpapatupad ng CRYSTALS-Kyber KEM key encapsulation mechanism at maraming third-party Kyber-enabled encryption library, kabilang ang pqcrypto library na ginagamit sa Signal messenger.

Ang kakanyahan ng kahinaan, na nakatanggap ng code name na KyberSlash, ay nasa paggamit ng operasyon ng paghahati na "t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;" sa proseso ng pag-decode ng mensahe , kung saan ang dibidendo ay naglalaman ng lihim na halaga na "t" na may uri na "doble", at ang divisor ay ang kilalang pampublikong halaga na KYBER_Q. Ang problema ay ang oras ng isang operasyon ng dibisyon ay hindi pare-pareho, at sa iba't ibang mga kapaligiran ang bilang ng mga cycle ng CPU na ginanap para sa paghahati ay nakasalalay sa data ng input. Kaya, batay sa mga pagbabago sa mga oras ng operasyon, ang isa ay makakakuha ng ideya ng likas na katangian ng data na ginamit sa paghahati.

Si Daniel J. Bernstein, isang kilalang eksperto sa larangan ng cryptography, ay nakapaghanda ng isang gumaganang pagpapakita ng patunay na ang pag-atake ay maaaring isagawa sa pagsasanay. Sa dalawa sa tatlong eksperimento na isinagawa, kapag nagpapatakbo ng code sa Raspberry Pi 2 board, posible na ganap na muling likhain ang Kyber-512 private key batay sa pagsukat sa oras ng pag-decode ng data. Ang pamamaraan ay maaari ding iakma para sa Kyber-768 at Kyber-1024 key. Upang matagumpay na maisagawa ang isang pag-atake, kinakailangan na ang ciphertext na tinukoy ng umaatake ay maproseso gamit ang parehong key pair at ang oras ng pagpapatupad ng operasyon ay maaaring tumpak na masukat.

Ang isa pang pagtagas (KyberSlash2) ay natukoy sa ilang mga aklatan, na nangyayari rin dahil sa paggamit ng isang lihim na halaga kapag nagsasagawa ng paghahati. Ang mga pagkakaiba mula sa unang opsyon ay bumaba sa tawag sa yugto ng pag-encrypt (sa poly_compress at polyvec_compress function), at hindi sa panahon ng pag-decryption. Gayunpaman, ang pangalawang opsyon ay maaaring maging kapaki-pakinabang para sa isang pag-atake lamang sa mga kaso kung saan ang pamamaraan ay ginagamit sa muling pag-encrypt na mga operasyon kung saan ang output ng ciphertext ay itinuturing na kumpidensyal.

Ang kahinaan ay naayos na sa mga aklatan:

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

Mga aklatan na hindi unang apektado ng kahinaan:

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

Ang kahinaan ay nananatiling unpatched sa mga library:

  • antontutoveanu/crystals-kyber-javascript,
  • Argyle-Software/kyber,
  • debian/src/liboqs/unstable/src/kem/kyber,
  • kudelskisecurity/crystals-go,
  • mupq/pqm4/crypto_kem/kyber* (Noong Disyembre 20, 1 bersyon lang ng kahinaan ang naayos),
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/clean,
  • randombit/botan (Noong Disyembre 20, 1 vulnerability lang ang naayos),
  • rustpq/pqcrypto/pqcrypto-kyber (isang pag-aayos ay idinagdag sa libsignal noong Enero 5, ngunit ang kahinaan ay hindi pa naaayos sa pqcrypto-kyber mismo).

Pinagmulan: opennet.ru

Magdagdag ng komento