1 poin oleh GN⁺ 2024-02-02 | 1 komentar | Bagikan ke WhatsApp

Kriptografi Tahan Kuantum untuk Ekosistem Go

  • filippo.io/mlkem768 adalah implementasi murni Go untuk ML-KEM-768, yang dioptimalkan untuk akurasi dan keterbacaan.
  • ML-KEM adalah mekanisme pertukaran kunci tahan kuantum yang sedang dalam proses standardisasi oleh NIST dan mulai diadopsi di sebagian besar industri.
  • Paket ini terdiri dari sekitar 500 baris kode, 200 baris komentar, dan 650 baris pengujian, serta tidak memiliki dependensi selain golang.org/x/crypto/sha3.
  • Paket ini direncanakan akan diintegrasikan ke pustaka standar Go, dan dirancang untuk memberikan keyakinan keamanan yang tinggi melalui kemudahan review, kesederhanaan, dan pengujian yang menyeluruh.

Implementasi untuk Verifikasi Spesifikasi

  • Berbeda dari kebanyakan implementasi, kode ini tidak dipindahkan dari pustaka referensi pq-crystals, melainkan ditulis dari nol tanpa membaca detail codebase lain.
  • Dokumen FIPS 203 merupakan panduan implementasi yang sangat baik karena menyediakan pseudocode yang rinci, definisi yang menyeluruh, dan informasi tipe yang konsisten.
  • Untuk meningkatkan keterbacaan kode dan nilainya sebagai sumber belajar, nama fungsi dan variabel serta urutan operasi dipilih dengan cermat agar sesuai dengan spesifikasi FIPS.

Polinomial dan Aljabar Linear yang Cukup untuk Implementasi

  • Spesifikasi ini membutuhkan latar belakang matematika yang relatif terbatas, tetapi untuk memudahkan pekerjaan implementor, ditulislah 'Polinomial dan Aljabar Linear yang Cukup untuk Mengimplementasikan Kyber'.
  • Sisanya dibiarkan sebagai latihan bagi pembaca, yaitu 1) aritmetika modulo terhadap prima 3329, 2) implementasi konkret fungsi kompresi dan dekompresi dari [0, 3329) ke [0, 2ᵈ), dan 3) jaminan operasi waktu konstan.

Keterbacaan dan Nilai Edukasi

  • Keterbacaan adalah salah satu tujuan utama implementasi ini, agar efektif untuk review sekaligus berfungsi sebagai sumber belajar bagi generasi berikutnya dari maintainer dan engineer kriptografi.
  • Demi meningkatkan keterbacaan fungsi yang kompleks, dalam beberapa kasus kode sengaja dibuat lebih panjang dan kurang dapat digunakan ulang.

Keyakinan Keamanan Tinggi melalui Pengujian

  • Implementasi ini memverifikasi bahwa pembuatan kunci, encapsulation, dan decapsulation berjalan dengan benar, serta mempertahankan cakupan pengujian di atas 95%.
  • Interoperabilitas dijamin melalui test vector dari NIST dan implementasi lain, sementara operasi aritmetika field dasar diuji secara menyeluruh dengan membandingkannya terhadap nilai yang diharapkan.
  • Sebagai bagian dari proyek CCTV, test vector yang dapat digunakan ulang oleh implementasi lain juga dipublikasikan.

Performa

  • Performa bukan tujuan utama, tetapi paket ini tetap harus cukup cepat agar berguna.
  • ML-KEM sudah cukup cepat, dan implementasi sederhana ini dapat bersaing dengan implementasi P-256 dan X25519 yang dioptimalkan dengan assembly.
  • Untuk meningkatkan performa, berbagai upaya dilakukan seperti mengikuti pola pemrograman Go dan meminimalkan alokasi heap.

Menggunakan Implementasi ML-KEM sebagai Kyber v3

  • NIST membuat beberapa perubahan kecil pada submission Round 3 dari Kyber.
  • Sejumlah protokol eksperimental didefinisikan berdasarkan Kyber v3 (atau "draft00"), tetapi tidak perlu membuat paket terpisah.
  • ML-KEM dapat digunakan untuk menghasilkan shared secret K, lalu derivasi kunci tambahan dapat diterapkan untuk menghasilkan shared secret Kyber.

Opini GN⁺

  • Pentingnya kriptografi tahan kuantum: Seiring kemajuan komputasi kuantum, teknologi enkripsi yang ada saat ini bisa menjadi rentan, sehingga pengembangan dan standardisasi teknologi kriptografi tahan kuantum seperti ML-KEM sangat penting.
  • Ekstensibilitas bahasa Go: Implementasi ini menunjukkan ekstensibilitas dan fleksibilitas bahasa Go, dan rencana integrasinya ke pustaka standar menjadikannya sumber daya yang berguna bagi komunitas pengembang Go.
  • Nilai edukasi: Pendekatan yang menekankan keterbacaan kode dan nilai edukasi akan sangat membantu sebagai sumber belajar bagi generasi berikutnya dari engineer kriptografi dan pengembang yang tertarik.

1 komentar

 
GN⁺ 2024-02-02
Komentar Hacker News
  • Pertanyaan tentang kondisi terkini komputasi kuantum

    Mempertanyakan apakah komputasi kuantum benar-benar sudah mencapai tingkat yang diperlukan, atau apakah seperti AI, definisinya berubah sehingga produk lama dirilis ulang dengan nama baru.

  • Sapaan dan berbagi dari Kudelski Security

    Memperkenalkan kasus terbaru di mana Kudelski Security harus menghentikan salah satu library bahasa Go untuk kriptografi tahan-kuantum. Detail lebih lanjut bisa dilihat di tulisan yang ditautkan.

  • Rekomendasi buku tentang sistem kriptografi yang diimplementasikan dalam Go

    Memperkenalkan buku John Arundel tentang implementasi sistem kriptografi untuk Go versi 1.22. Pada bagian akhir buku ada pembahasan tentang kriptografi tahan-kuantum, dan buku tersebut mungkin akan diperbarui setelah standardisasi NIST PQ.

  • Pertanyaan tentang implementasi dalam bahasa lain (Java, C#, dll.)

    Pertanyaan yang meminta informasi tentang implementasi serupa dalam bahasa pemrograman lain.

  • Kekhawatiran tentang implementasi murni yang ditulis dalam Go

    Menyampaikan kekhawatiran bahwa jika ditulis sepenuhnya dalam Go, implementasi tersebut bisa rentan terhadap serangan side-channel timing/daya.

  • Ketertarikan dan pertanyaan tentang dukungan Kyber v3

    Penilaian positif terhadap dukungan untuk draft00/kyber v3 serta pertanyaan tentang kemungkinan mendukung mode Kyber 90's tanpa SHA-3.

  • Lelucon tentang tabel system call 32-bit

    Lelucon bahwa tabel system call 32-bit akan 'segera dirilis'.

  • Apresiasi terhadap penggunaan nama variabel Unicode

    Mengaku tidak mampu menilai kualitas algoritme atau implementasinya, tetapi sangat menghargai penggunaan Unicode pada nama variabel.

  • Pujian untuk proyek lain dari FiloSottile

    Mengungkapkan apresiasi terhadap alat lain buatan FiloSottile, yaitu 'age'.

  • Berbagi tautan dokumen NIST FIPS 203

    Berbagi tautan ke dokumen NIST FIPS 203 yang disebut dalam artikel.