格子暗号に興味を持って実装をしてみた。RSA暗号と違って理解するのにとても時間がかかる。
理解するのが難しいので参考のところに貼ってあるやつを見ながら実装。高速化はそこまでしてない。
params.hppの中身の設定はこれをもとに設定している。
| n | k | q | n1 | n2 | NIST Security level | |
|---|---|---|---|---|---|---|
| ML-KEM-512 | 256 | 2 | 3329 | 3 | 2 | 1 |
| ML-KEM-768 | 256 | 3 | 3329 | 2 | 2 | 3 |
| ML-KEM-1024 | 256 | 4 | 3329 | 2 | 2 | 5 |
CPUはIntel(R) Core(TM) i5-3230Mを使用
| 1000 回ループ | ML-KEM-512 | ML-KEM-768 | ML-KEM-1024 |
|---|---|---|---|
k_pke_keygen() |
1.394s | 2.786s | 4.730s |
k_pke_encrypt() |
1.758s | 3.117s | 5.017s |
k_pke_decrypt() |
0.448s | 0.614s | 0.821s |