Kuantum sonrası şifreleme algoritması Kyber'in uygulamalarındaki güvenlik açığı

Kuantum bilgisayar üzerinde kaba kuvvete dayanıklı kriptografik algoritmalar rekabetini kazanan Kyber şifreleme algoritmasının uygulanmasında, yan kanal saldırılarının, şifrenin çözülmesi sırasında işlem sürelerinin ölçülmesine dayalı olarak gizli anahtarların yeniden oluşturulmasına olanak sağlayan bir güvenlik açığı tespit edildi. Saldırganın sağladığı şifreli metin. Sorun, hem CRYSTALS-Kyber KEM anahtar kapsülleme mekanizmasının referans uygulamasını hem de Signal messenger'da kullanılan pqcrypto kütüphanesi dahil olmak üzere birçok üçüncü taraf Kyber özellikli şifreleme kütüphanesini etkiliyor.

KyberSlash kod adını alan güvenlik açığının özü, bir mesajın kodunu çözme sürecinde “t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;” bölme işleminin kullanılmasında yatıyor. temettü, "double" türünde gizli "t" değerini içerir ve bölen, iyi bilinen genel değer KYBER_Q'dur. Sorun, bölme işleminin süresinin sabit olmaması ve farklı ortamlarda bölme için gerçekleştirilen CPU döngülerinin sayısının giriş verilerine bağlı olmasıdır. Böylece işlem sürelerindeki değişikliklere dayanarak bölme işleminde kullanılan verilerin niteliği hakkında fikir sahibi olunabilir.

Kriptografi alanında tanınmış bir uzman olan Daniel J. Bernstein, saldırının pratikte gerçekleştirilebileceğine dair işe yarar bir kanıt hazırlamayı başardı. Yapılan üç deneyden ikisinde, Raspberry Pi 2 kartında kod çalıştırırken, veri kod çözme süresini ölçerek Kyber-512 özel anahtarını tamamen yeniden oluşturmak mümkün oldu. Yöntem aynı zamanda Kyber-768 ve Kyber-1024 anahtarlarına da uyarlanabilir. Bir saldırının başarılı bir şekilde gerçekleştirilebilmesi için saldırganın belirlediği şifreli metnin aynı anahtar çifti kullanılarak işlenmesi ve operasyonun yürütülme süresinin doğru bir şekilde ölçülebilmesi gerekmektedir.

Bazı kütüphanelerde bölme işlemi sırasında gizli bir değerin kullanılması nedeniyle ortaya çıkan başka bir sızıntı (KyberSlash2) tespit edildi. İlk seçenekten farklar, şifre çözme sırasında değil, şifreleme aşamasında (poly_compress ve polyvec_compress işlevlerinde) çağrıya gelir. Ancak ikinci seçenek, yalnızca prosedürün şifreli metnin çıktısının gizli kabul edildiği yeniden şifreleme işlemlerinde kullanıldığı durumlarda bir saldırı için yararlı olabilir.

Güvenlik açığı kütüphanelerde zaten düzeltildi:

  • zig/lib/std/crypto/kyber_d00.zig (22 Aralık),
  • pq-crystals/kyber/ref (30 Aralık),
  • semboliksoft/kyber-k2so (19 Aralık),
  • cloudflare/circl (8 Ocak),
  • aws/aws-lc/crypto/kyber (4 Ocak),
  • liboqs/src/kem/kyber (8 Ocak).

Başlangıçta bu güvenlik açığından etkilenmeyen kitaplıklar:

  • sıkıcıssl/kripto/kyber,
  • filippo.io/mlkem768,
  • formosa-crypto/libjade/tree/main/src/crypto_kem,
  • kyber/ortak/amd64/avx2,
  • formosa-crypto/libjade/tree/main/src/crypto_kem/kyber/common/amd64/ref,
  • pq kristalleri/kyber/avx2,
  • pqclean/crypto_kem/kyber*/avx2.jpg

Güvenlik açığı kütüphanelerde yama yapılmadan kalıyor:

  • antontutoveanu/kristaller-kyber-javascript,
  • Argyle-Yazılım/kyber,
  • debian/src/liboqs/kararsız/src/kem/kyber,
  • kudelskisecurity/crystals-go,
  • mupq/pqm4/crypto_kem/kyber* (20 Aralık'ta güvenlik açığının yalnızca 1 sürümü düzeltildi),
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/clean,
  • randombit/botan (20 Aralık'ta yalnızca 1 güvenlik açığı giderildi),
  • Ruspq/pqcrypto/pqcrypto-kyber (5 Ocak'ta libsignal'a bir düzeltme eklendi, ancak güvenlik açığı henüz pqcrypto-kyber'de düzeltilmedi).

Kaynak: opennet.ru

Yorum ekle