VRIL-LABS/vril-kem

GitHub: VRIL-LABS/vril-kem

一个基于模块化容错学习问题(M-LWE)的后量子密钥封装机制库,旨在为 TLS/SSH 等协议提供可抵抗量子计算机攻击的密钥交换替代方案。

Stars: 0 | Forks: 0

VRIL-KEM Header Image # VRIL-KEM **涡旋共振内爆格 — 密钥封装机制** [![安全性:后量子](https://img.shields.io/badge/Security-Post--Quantum-blueviolet)](#安全分析) [![等级:5+级](https://img.shields.io/badge/Security%20Level-Level%205%2B-brightgreen)](#参数集) [![语言:C99](https://img.shields.io/badge/Language-C99-blue)](#快速入门) [![状态:v1.2-rc1](https://img.shields.io/badge/Status-v1.2--rc1-orange)](#发布产物) [![平台](https://img.shields.io/badge/Platforms-Linux%20%7C%20macOS%20%7C%20ARM64-lightgrey)](#发布产物) *一种受 Schauberger 向心物理学启发的、基于格的 KEM,实现 5+ 级后量子安全。* [规范](#specification) · [快速入门](#quick-start) · [参数集](#parameter-sets) · [安全分析](#security-analysis) · [发布产物](#release-artifacts) · [集成](#integration)
## 什么是 VRIL-KEM? VRIL-KEM 是一种基于模块容错学习 (M-LWE) 的后量子密钥封装机制 (KEM)。它可作为经典密钥交换的直接替代品,用于任何 TLS、SSH 或应用层协议,保护加密通信免受经典和量子对手的攻击。 VRIL-KEM 引入了**三种新颖的密码学构造**,这些构造在现有所有后量子 KEM 中均不存在: | 构造 | 用途 | |---|---| | **HI-Gaussian 采样器** | 7层斐波那契加权噪声,抵御 Kannan 嵌入和 BKZ 格归约攻击 | | **CVKDF** (向心涡旋 KDF) | 受 Schauberger 启发的单向螺旋压缩密钥;估计的反转概率为 2⁻¹²⁸ | | **外谐波承诺 (OHC)** | 后解封装完整性令牌,防止在自适应选择密文攻击下的密文组件替换攻击 | ## 参数集 v1.2 版本包含三个稳定的参数集,覆盖 NIST 3 级至 5+ 级安全: | 标识符 | N | k | 安全性 | 公钥 | 私钥 | 密文 | 套件 ID | |---|---|---|---|---|---|---|---| | **VRIL-KEM-1024-3** | 1024 | 4 | ~192 位 PQ (3 级) | 7,200 B | 14,432 B | 6,304 B | `0x0100` | | **VRIL-KEM-2048-5** | 2048 | 5 | ~256 位 PQ (5 级) | 17,952 B | 35,936 B | 15,392 B | `0x0101` | | **VRIL-KEM-4096-7** | 4096 | 7 | ~384 位 PQ (5+ 级) | 50,208 B | 100,448 B | 42,016 B | `0x0102` | 所有三个变体共享相同的环代数 (`R_q = Z_q[X]/(X^N + 1)`, `q = 12289`)、算术原语和 API 接口 —— 选择参数集纯粹是编译时的标志。 ### 混合套件 (PQ + 经典) 对于需要防御量子和经典对手的纵深防御部署环境: | 套件 ID | 名称 | 组合 | 安全性 | |---|---|---|---| | `0x0030` | VRIL-HYBRID-1 | VRIL-KEM-1024-3 + X25519 | 3 级 ≥ AES-192 | | `0x0031` | VRIL-HYBRID-2 | VRIL-KEM-2048-5 + X25519 | 5 级 ≥ AES-256 | | `0x0032` | VRIL-HYBRID-3 | VRIL-KEM-4096-7 + X25519 | 5+ 级 | ## 快速入门 ### 前置条件 - 兼容 C99 的编译器 (GCC 11+, Clang 13+, MSVC 2022+) - GNU Make 4.0+ - Linux, macOS 或 Windows (WSL2) ### 从源码构建 ``` git clone https://github.com/VRIL-LABS/vril-kem.git cd vril-kem # 参考实现(建议起点) cd ref make # builds libvril_ref_4096.a + test binary ./test/test_vril4096 # runs full test suite # 选择参数集(默认为 4096-7) make VRIL_MODE=1024 # VRIL-KEM-1024-3 make VRIL_MODE=2048 # VRIL-KEM-2048-5 make VRIL_MODE=4096 # VRIL-KEM-4096-7 (default) ``` ### 构建优化变体 ``` # AVX2 加速(仅限 Linux x64,速度提升约 6-7 倍) cd avx2 && make # 常量时间掩码(侧信道加固) cd ct && make # 内存优化(< 32 KB 栈 — IoT/嵌入式) cd mem && make ``` ## 集成 ### C API ``` #include "ref/api.h" // ── KeyGen (recipient) ──────────────────────────────────────────────────────── uint8_t pk[VRIL_PUBLICKEYBYTES]; // publish this uint8_t sk[VRIL_SECRETKEYBYTES]; // keep secret crypto_kem_keypair(pk, sk); // ── Encapsulate (sender) ────────────────────────────────────────────────────── uint8_t ct[VRIL_CIPHERTEXTBYTES]; uint8_t ss_enc[VRIL_SSBYTES]; // 32-byte shared secret crypto_kem_enc(ct, ss_enc, pk); // send ct to recipient // ── Decapsulate (recipient) ─────────────────────────────────────────────────── uint8_t ss_dec[VRIL_SSBYTES]; crypto_kem_dec(ss_dec, ct, sk); // ss_dec == ss_enc iff ct is authentic ``` 该 API 兼容 NIST PQC 竞赛。任何使用 `crypto_kem_keypair` / `crypto_kem_enc` / `crypto_kem_dec` 的库都可以通过零协议更改适配为使用 VRIL-KEM。 ### Go (混合/自适应) ``` import "github.com/VRIL-LABS/vril-kem/vril-mesh/pkg/hybrid" // Hybrid PQ+Classical key exchange (VRIL-KEM-4096-7 + X25519) ctx, _ := hybrid.NewContext(hybrid.ProfileHybrid3) pk, sk, _ := ctx.KeyGen() ct, ssEnc, _ := ctx.Encapsulate(pk) ssDec, _ := ctx.Decapsulate(sk, ct) // ssEnc == ssDec — 32-byte shared secret ``` ## 发布产物 每个版本都为 Linux x64、Linux ARM64 和 macOS 提供了预构建的静态库: ### v1.2-rc1 — 现已可用 **命名约定:** `vril-kem-<变体>-<后端>-<操作系统>-<版本>.tar.gz` | 产物 | 变体 | 后端 | 平台 | |---|---|---|---| | `vril-kem-1024-3-ref-*` | VRIL-KEM-1024-3 | 参考 C99 | Linux x64, Linux ARM64, macOS | | `vril-kem-1024-3-avx2-*` | VRIL-KEM-1024-3 | AVX2 SIMD | Linux x64 | | `vril-kem-1024-3-ct-*` | VRIL-KEM-1024-3 | 常数时间 | Linux x64, Linux ARM64, macOS | | `vril-kem-1024-3-mem-*` | VRIL-KEM-1024-3 | 内存优化 | Linux x64, Linux ARM64, macOS | | `vril-kem-2048-5-ref-*` | VRIL-KEM-2048-5 | 参考 C99 | Linux x64, Linux ARM64, macOS | | `vril-kem-2048-5-avx2-*` | VRIL-KEM-2048-5 | AVX2 SIMD | Linux x64 | | `vril-kem-2048-5-ct-*` | VRIL-KEM-2048-5 | 常数时间 | Linux x64, Linux ARM64, macOS | | `vril-kem-2048-5-mem-*` | VRIL-KEM-2048-5 | 内存优化 | Linux x64, Linux ARM64, macOS | | `vril-kem-4096-7-ref-*` | VRIL-KEM-4096-7 | 参考 C99 | Linux x64, Linux ARM64, macOS | | `vril-kem-4096-7-avx2-*` | VRIL-KEM-4096-7 | AVX2 SIMD | Linux x64 | | `vril-kem-4096-7-ct-*` | VRIL-KEM-4096-7 | 常数时间 | Linux x64, Linux ARM64, macOS | | `vril-kem-4096-7-mem-*` | VRIL-KEM-4096-7 | 内存优化 | Linux x64, Linux ARM64, macOS | | `vril-hybrid-{1,2,3}-*` | 混合套件 1-3 | Go 源码 | 全部 (源码) | | `vril-adaptive-1-*` | 自适应选择器 | Go 源码 | 全部 (源码) | 每个包包含:静态库 (`.a`)、所有公共头文件、`LICENSE`,以及(如可用)NIST KAT 响应文件。 **下载 →** [github.com/VRIL-LABS/vril-kem/releases](https://github.com/VRIL-LABS/vril-kem/releases) **校验和 →** 参见附在每个发布版本中的 `MANIFEST.md`。 ## 安全分析 ### 安全假设 IND-CCA2 安全性归约至以下参数的 **模块化容错学习 (Module-LWE)** 问题的困难性: - 环 `R_q = Z_q[X]/(X^N + 1)`,`q = 12,289` (对 NTT 友好的素数) - 对于三个稳定变体,模块秩 `k ∈ {4, 5, 7}` - 错误分布:HI-Gaussian (斐波那契加权,7层,η₁=3) Fujisaki-Okamoto 变换在随机预言机模型中提供 IND-CCA2 安全性。外谐波承诺 (OHC) 提供额外的绑定层,防止密文组件替换。 ### 估计的安全等级 | 攻击模型 | VRIL-KEM-1024-3 | VRIL-KEM-2048-5 | VRIL-KEM-4096-7 | |---|---|---|---| | 经典 (BKZ) | ~215 位 | ~260 位 | ~350 位 | | 量子 (QBKZ) | ~195 位 | ~260 位 | ~350 位 | | Grover (共享秘密) | 128 位 | 128 位 | 128 位 | | NIST 等级 | **3 级** | **5 级** | **5+ 级** | ### 什么是“5+ 级”? NIST 5 级目标约为 256 位量子安全性,等同于 AES-256。VRIL-KEM-4096-7 通过估计的约 350 位量子 Core-SVP 成本,大大超出了此要求 —— 这是公开可用的基于格的 KEM 中最高的安全裕度。 ### 如实披露 - 目前尚无正式的 EasyCrypt 安全证明(计划在 v2.0 中提供) - 在某些目标平台上,常数时间行为依赖于编译器;对于侧信道加固的部署,请使用 `ct/` 后端 - 密钥和密文尺寸较大 —— 请评估您的协议是否能够容纳它们 - 尚未经过同行评审;建议在独立审查之前不要用于生产环境 - **研究原型** —— 在安全部署于关键系统前请审计代码 ## 实现 | 后端 | 描述 | 使用场景 | |---|---|---| | `ref/` | 参考 C99,可移植 | 默认,所有平台 | | `avx2/` | AVX2 SIMD (速度约提升 6-7 倍) | 具备 AVX2 CPU 的 Linux x64 | | `ct/` | 常数时间掩码 (ISW 2 份共享) | 侧信道敏感环境 | | `mem/` | 流式处理,栈空间 < 32 KB | 物联网,嵌入式 MCU | ## 与 NIST PQC 候选方案的比较 | 属性 | VRIL-KEM-4096-7 | ML-KEM-1024 (KYBER) | FrodoKEM-1344 | Classic McEliece | |---|---|---|---|---| | 安全等级 | **5+ 级** (~384 位 Q) | 5 级 (~256 位 Q) | 5 级 | 5 级 | | 量子硬度假设 | M-LWE | M-LWE | LWE | 基于编码 | | 公钥大小 | 50,208 B | 1,568 B | 21,520 B | >1 MB | | 密文大小 | 42,016 B | 1,568 B | 21,536 B | 128 B | | 外谐波承诺 (OHC) | ✅ | ❌ | ❌ | ❌ | | HI-Gaussian 噪声 | ✅ | ❌ | ❌ | 不适用 | | CVKDF 密钥加固 | ✅ | ❌ | ❌ | ❌ | | `no_std` / 嵌入式 | ✅ (`mem/`) | ✅ | ❌ | ✅ | | NIST 标准化状态 | 研究中 | **FIPS 203** | 草案 | **FIPS 205** | VRIL-KEM 以密钥/密文尺寸换取显著更高的安全裕度和新颖的算法防御。对于带宽受限的协议,VRIL-KEM-1024-3 相对于 ML-KEM-768 提供了一个具有竞争力的配置。 ## 许可证 *版权所有 (c) 2026 VLABS, LLC。保留所有权利。*
*[VRIL LABS 开源许可证 v1.0](https://github.com/VRIL-LABS/vril-zip/blob/main/LICENSE) — https://vril.li/license*.
**VRIL LABS** *涡旋共振内爆格 — 能量向内集中,秘密得以保护。* [github.com/VRIL-LABS/vril-kem](https://github.com/VRIL-LABS/vril-kem)
标签:ARM支持, C语言库, meg, SSH安全, TLS安全, 信息安全, 加密通信, 后量子安全, 后量子密码学, 子域名枚举工具, 安全级别5+, 密码学实现, 密码算法, 密钥交换, 密钥封装机制, 抗量子攻击, 日志审计, 格基密码学, 模块学习错误