页:1
概览
该项目为WebAssembly编译的量子后非对称密码提供了JS装订和游乐场 标记 和JS的倒计时.
现有方法是: NIST 量子后密码学竞赛数字 :
- 密钥封装方法( KEM): 瑙鲁, (中文(简体) ), 凯伯, (中文(简体) ), 萨尔瓦多, (中文(简体) ), 麦克埃利斯-克兰西克, (中文(简体) )NTRU 质点, (中文(简体) ), 弗罗多肯, (中文(简体) ), HQC - 管理系统) (中文(简体) ).
- 签字方法: 帝力, (中文(简体) ), 法尔康, (中文(简体) ), 兰博, (中文(简体) )南太平洋+) (中文(简体) ).
用于创建约束的 C 执行是 clean 提供的案文 PQClean 分类。 。 。 .
这个项目的灵感来自 国家 曾经提供 NTRU JS 约束.
游戏场
有可能在现实世界条件下对约束进行测试和比较 这个游乐场。 。 。 .
如何下载预建的装订和国家预防机制包
预建装订在 游乐场。 。 。 .
如何建设
sudo apt install emscriptennpm cimake cleanmake kem-<the KEM algorithm you want to build>或者说make sign-<the signature algorithm you want to build>- 所有绑定可以使用
make all
输出目录为 docs/bin/ 每个输出装订都用联署材料模块及其相关的WebAssembly文件制作,
浏览器软件包和节点软件包.
如何使用
密钥封装
import kemBuilder from 'pqc-kem-<algoName>.js'
async function run() {
const kem = await kemBuilder();
const { publicKey, privateKey } = await kem.keypair();
const { ciphertext, sharedSecret: sharedSecretA } = await kem.encapsulate(publicKey);
const { sharedSecret: sharedSecretB } = await kem.decapsulate(ciphertext, privateKey);
// sharedSecretA === sharedSecretB
}
run();
签署
import signBuilder from 'pqc-sign-<algoName>.js'
async function run() {
const sign = await signBuilder();
const message = new Uint8Array([0x44, 0x61, 0x73, 0x68, 0x6c, 0x61, 0x6e, 0x65]);
const { publicKey, privateKey } = await sign.keypair();
const { signature } = await sign.sign(message, privateKey);
const validSignature = await sign.verify(signature, message, publicKey);
// validSignature === true
}
run();
禁用 Web Assembly 执行
构建者的第一个可选参数设置为 true 您想要禁用 Web Assembly 执行 .
如果设定为虚假, 如果 Web Assembly 失败, 仍然可能使用倒置 JavaScript .
更改 Web Assembly 的路径
构建者的第二个可选参数是WebAssembly文件的路径.
执行说明
- 随机生成由 lib 这是在使用
crypto.randomBytes。 。 。 . SHA-2财务报告和审定财务报表AES由执行Web Crypto API的SubtleCrypto提供执行。 这可能 由于同步调用SubtleCrypto,当AES-ECB是时会更慢地执行捆绑 使用,因为在此情况下,每个区块需要AES-CTR.SHA-2PQClean 执行仍然被使用sphincs-sha256-*绑定,因为它们使用增量版本 联 合 国sha256在Web Crypto API中不存在.SHA-3NTRU、Kyber、SABER、FrodoKEM和McEliece-Classic仍然使用PQClean执行,因为没有 在Web Crypto API中实现.