量子安全密码
在抗量子密码方向,目前The National Institute of Standards and Technology (NIST)已经进入到第三轮密码学评测/筛选。
Open Quantum Safe
关于NIST评测的抗量子密码实验的算法都开源于此项目,Open Quantum Safe framework it may be easier to use liboqs ==> https://github.com/open-quantum-safe/liboqs。另外一个更加实用的抗量子密码算法集合 ==> https://github.com/PQClean/PQClean/。
他们之中,都有关于 Kyber 和 Dilithium 算法实现,可以直接使用。
Kyber-对称加密算法和非对称加密算法
该项目由实验室量子方向研究员提供,其开源版本如下:
- C 语言版本 https://github.com/pq-crystals/kyber, 此版本为官方版本。
- Go 语言版本 https://github.com/symbolicsoft/kyber-k2so,该版本与下面的node.js版本的实现算法是一致的,论文如下。
- javascript/node.js 语言版本 https://github.com/antontutoveanu/crystals-kyber-javascript,具体实现方法的论文 ==> https://eprint.iacr.org/2021/356.pdf。
Kyber 包含了对称加密算法和非对称加密算法,Kyber 算法的介绍内容 ==> https://pq-crystals.org/kyber/software.shtml。
一句话概括其算法 ==> Kyber IND-CCA2-secure key encapsulation mechanism (KEM), whose security is based on the hardness of solving the learning-with-errors (LWE) problem over module lattices.
使用方法:
- 在所谓的混合模式下使用 Kyber 并结合已建立的“前量子”安全性; 例如结合椭圆曲线 Diffie-Hellman。
- 建议使用 Kyber-768 参数集,根据保守的分析,该参数集可针对所有已知的经典攻击和量子攻击实现超过 128 位的安全性。
Dilithium-数字签名算法
- C 语言版本 https://github.com/pq-crystals/dilithium/。
- rust 语言版本 https://github.com/Argyle-Software/dilithium。
- Java 语言版本 https://github.com/mthiim/dilithium-java
算法介绍 ==> https://www.pq-crystals.org/dilithium/。
具体实现的论文 ==> https://www.pq-crystals.org/dilithium/resources.shtml,目前最新版本为 CRYSTALS-Dilithium – Algorithm Specifications and Supporting Documentation (Version 3.1)