1 puan yazan GN⁺ 2024-02-02 | 1 yorum | WhatsApp'ta paylaş

Go ekosistemi için kuantum dirençli kriptografi

  • filippo.io/mlkem768, doğruluk ve okunabilirlik için optimize edilmiş, ML-KEM-768'in saf Go implementasyonudur.
  • ML-KEM, NIST tarafından standardizasyon sürecinde olan ve sektörün büyük bölümünde benimsenen kuantum dirençli bir anahtar değişim mekanizmasıdır.
  • Paket yaklaşık 500 satır kod, 200 satır yorum ve 650 satır testten oluşur; golang.org/x/crypto/sha3 dışında bağımlılığı yoktur.
  • Go standart kütüphanesine entegre edilmesi planlanmaktadır ve inceleme kolaylığı, sadelik ve kapsamlı testler sayesinde yüksek güvenlik güvencesi sağlayacak şekilde tasarlanmıştır.

Spesifikasyonu doğrulamak için bir implementasyon

  • Çoğu implementasyonun aksine bu kod, referans pq-crystals kütüphanesinden port edilmemiş; başka kod tabanları ayrıntılı biçimde incelenmeden sıfırdan yazılmıştır.
  • FIPS 203 belgesi, ayrıntılı sözde kod, kapsamlı tanımlar ve tutarlı tip bilgileri sunarak mükemmel bir implementasyon rehberi işlevi görür.
  • Kodun okunabilirliğini ve öğrenme kaynağı olarak değerini artırmak için fonksiyon ve değişken adları ile işlem sırası dikkatle FIPS spesifikasyonuna göre seçilmiştir.

Implementasyon için yeterli polinom ve lineer cebir

  • Spesifikasyon görece sınırlı bir matematik altyapısı gerektirse de, implementatörün işini kolaylaştırmak için 'Kyber implementasyonu için yeterli polinom ve lineer cebir' yazılmıştır.
  • Geri kalanı okuyucuya bırakılan alıştırmalardır: 1) 3329 asalına göre modüler aritmetik, 2) [0, 3329) ile [0, 2ᵈ) arasındaki sıkıştırma ve açma fonksiyonlarının somut implementasyonu, 3) sabit zamanlı işlem garantisi.

Okunabilirlik ve eğitsel değer

  • Okunabilirlik, implementasyonun temel hedeflerinden biridir; etkili incelemeyi mümkün kılar ve gelecek nesil bakımcılar ile kriptografi mühendisleri için bir eğitim kaynağı görevi görür.
  • Karmaşık fonksiyonların okunabilirliğini artırmak için bazen kod daha uzun ve yeniden kullanılabilirliği daha düşük olacak şekilde yazılmıştır.

Testlerle yüksek güvenlik güvencesi

  • Anahtar üretimi, encapsulation ve decapsulation işlemlerinin doğru yapıldığını doğrular ve %95'in üzerinde test kapsamını korur.
  • NIST ve diğer implementasyonlardan elde edilen test vektörleriyle birlikte çalışabilirliği garanti eder ve temel alan aritmetiği işlemlerini beklenen değerlerle karşılaştırarak kapsamlı biçimde test eder.
  • CCTV projesinin bir parçası olarak, başka implementasyonlarda da yeniden kullanılabilecek test vektörleri yayımlar.

Performans

  • Performans ana hedef olmasa da paketin faydalı olacak kadar hızlı olması gerekir.
  • ML-KEM yeterince hızlıdır ve bu basit implementasyon, assembly ile optimize edilmiş P-256 ve X25519 implementasyonlarıyla rekabet edebilir.
  • Performansı artırmak için Go programlama kalıpları izlenmiş ve heap tahsisleri en aza indirilmeye çalışılmıştır.

ML-KEM implementasyonunu Kyber v3 olarak kullanmak

  • NIST, Kyber'in Round 3 gönderiminde birkaç küçük değişiklik yaptı.
  • Bazı deneysel protokoller Kyber v3'e (veya "draft00") dayanarak tanımlanmış olsa da ayrı bir paket oluşturmaya gerek yoktur.
  • Paylaşılan gizli K'yı üretmek için ML-KEM kullanılabilir, ardından Kyber paylaşılan sırrını üretmek için ek anahtar türetme uygulanabilir.

GN⁺ görüşü

  • Kuantum dirençli kriptografinin önemi: Kuantum bilişimin ilerlemesiyle mevcut kriptografi teknikleri zayıflayabileceğinden, ML-KEM gibi kuantum dirençli kriptografi teknolojilerinin geliştirilmesi ve standartlaştırılması çok önemlidir.
  • Go dilinin genişletilebilirliği: Bu implementasyon, Go dilinin genişletilebilirliğini ve esnekliğini gösteriyor; ayrıca kriptografi kütüphanesini standart kütüphaneye entegre etme planı sayesinde Go geliştirici topluluğu için faydalı bir kaynak olacak.
  • Eğitsel değer: Kodun okunabilirliğine ve eğitsel değerine odaklanan bu yaklaşım, gelecek nesil kriptografi mühendisleri ve ilgili geliştiriciler için güçlü bir öğrenme kaynağı olacaktır.

1 yorum

 
GN⁺ 2024-02-02
Hacker News yorumları
  • Kuantum hesaplamanın mevcut durumuna dair soru

    Kuantum hesaplamanın gerçekten ihtiyaç duyulan seviyeye ulaşıp ulaşmadığı ya da AI'da olduğu gibi tanım değiştirilip mevcut ürünlerin yeni bir adla yeniden piyasaya sürülüp sürülmediği sorgulanıyor.

  • Kudelski Security'den selam ve paylaşım

    Kudelski Security'de kuantuma dayanıklı şifreleme için Go dili kütüphanelerinden birini yakın zamanda durdurmak zorunda kaldıkları bir örnek paylaşılıyor. Ayrıntılar bağlantısı verilen yazıda görülebilir.

  • Go diliyle uygulanan şifreleme sistemleri hakkında kitap önerisi

    John Arundel'in Go 1.22 sürümü için şifreleme sistemlerinin uygulanmasını anlatan kitabı tanıtılıyor. Kitabın son kısmında kuantuma dayanıklı şifrelemeden söz ediliyor ve NIST PQ standardizasyonundan sonra kitabın güncellenebileceği belirtiliyor.

  • Diğer dillerdeki (Java, C# vb.) uygulamalar hakkında soru

    Diğer programlama dillerindeki benzer uygulamalar hakkında bilgi soruluyor.

  • Go diliyle yazılmış saf uygulamaya dair endişe

    Saf Go diliyle yazılmış olmasının zamanlama/güç yan kanal saldırılarına karşı savunmasız olabileceği yönünde endişe dile getiriliyor.

  • Kyber v3 desteğine ilgi ve soru

    draft00/kyber v3 desteği olumlu değerlendiriliyor ve SHA-3 olmadan Kyber 90's modunu desteklemenin mümkün olup olmadığı soruluyor.

  • 32 bit sistem çağrısı tablosu hakkında şaka

    32 bit sistem çağrısı tablosunun 'yakında çıkacak' olmasına dair bir şaka yapılıyor.

  • Unicode değişken adlarının kullanımına beğeni

    Algoritmanın ya da uygulamanın kalitesini değerlendirecek yetkinlikleri olmadığını, ancak değişken adlarında Unicode kullanılmasını çok olumlu bulduklarını söylüyor.

  • FiloSottile'nin diğer projesine övgü

    FiloSottile'nin geliştirdiği bir diğer araç olan 'age' için beğeni ifade ediliyor.

  • NIST FIPS 203 belgesi bağlantısının paylaşılması

    Yazıda anılan NIST FIPS 203 belgesine ait bağlantı paylaşılıyor.