Dalam pelaksanaan algoritma penyulitan Kyber, yang memenangi persaingan algoritma kriptografi yang tahan terhadap kekerasan pada komputer kuantum, kelemahan telah dikenal pasti yang membolehkan serangan saluran sisi mencipta semula kunci rahsia berdasarkan pengukuran masa operasi semasa penyahsulitan teks sifir yang disediakan oleh penyerang. Masalahnya menjejaskan kedua-dua pelaksanaan rujukan mekanisme pengkapsulan kunci CRYSTALS-Kyber KEM dan banyak pustaka penyulitan didayakan Kyber pihak ketiga, termasuk perpustakaan pqcrypto yang digunakan dalam messenger Signal.
Intipati kelemahan, yang menerima nama kod KyberSlash, adalah dalam penggunaan operasi pembahagian "t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;" dalam proses penyahkodan mesej , di mana dividen mengandungi nilai rahsia “t” dengan jenis “double”, dan pembahagi ialah nilai awam yang terkenal KYBER_Q. Masalahnya ialah masa operasi pembahagian tidak tetap, dan dalam persekitaran yang berbeza bilangan kitaran CPU yang dilakukan untuk pembahagian bergantung pada data input. Oleh itu, berdasarkan perubahan dalam masa operasi, seseorang boleh mendapatkan idea tentang sifat data yang digunakan dalam pembahagian.
Daniel J. Bernstein, seorang pakar terkenal dalam bidang kriptografi, dapat menyediakan demonstrasi bukti yang berfungsi bahawa serangan itu boleh dilakukan secara praktikal. Dalam dua daripada tiga eksperimen yang dijalankan, apabila menjalankan kod pada papan Raspberry Pi 2, adalah mungkin untuk mencipta semula kunci peribadi Kyber-512 sepenuhnya berdasarkan ukuran masa penyahkodan data. Kaedah ini juga boleh disesuaikan untuk kunci Kyber-768 dan Kyber-1024. Untuk berjaya menjalankan serangan, teks sifir yang ditentukan oleh penyerang perlu diproses menggunakan pasangan kunci yang sama dan masa pelaksanaan operasi boleh diukur dengan tepat.
Satu lagi kebocoran (KyberSlash2) telah dikenal pasti dalam beberapa perpustakaan, yang juga berlaku disebabkan oleh penggunaan nilai rahsia semasa melakukan pembahagian. Perbezaan daripada pilihan pertama datang kepada panggilan pada peringkat penyulitan (dalam fungsi poly_compress dan polyvec_compress), dan bukan semasa penyahsulitan. Walau bagaimanapun, pilihan kedua mungkin berguna untuk serangan hanya dalam kes di mana prosedur digunakan dalam operasi penyulitan semula di mana output teks sifir dianggap sulit.
Kerentanan telah pun diperbaiki dalam perpustakaan:
- zig/lib/std/crypto/kyber_d00.zig (22 Disember),
- pq-crystals/kyber/ref (30 Disember),
- symbolicsoft/kyber-k2so (19 Disember),
- cloudflare/circl (8 Januari),
- aws/aws-lc/crypto/kyber (4 Januari),
- liboqs/src/kem/kyber (8 Januari).
Perpustakaan yang pada mulanya tidak terjejas oleh kerentanan:
- 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.
Kerentanan masih belum ditambal dalam perpustakaan:
- antontutoveanu/crystals-kyber-javascript,
- Argyle-Software/kyber,
- debian/src/liboqs/unstable/src/kem/kyber,
- kudelskisecurity/crystals-go,
- mupq/pqm4/crypto_kem/kyber* (Pada 20 Disember, hanya 1 versi kerentanan telah diperbaiki),
- PQClean/PQClean/crypto_kem/kyber*/aarch64,
- PQClean/PQClean/crypto_kem/kyber*/clean,
- randombit/botan (Pada 20 Disember, hanya 1 kelemahan telah diperbaiki),
- rustpq/pqcrypto/pqcrypto-kyber (pembetulan telah ditambahkan pada libsignal pada 5 Januari, tetapi kelemahan masih belum diperbaiki dalam pqcrypto-kyber itu sendiri).
Sumber: opennet.ru
