
# VRIL-KEM
**涡旋共振内爆格 — 密钥封装机制**
[](#安全分析)
[](#参数集)
[](#快速入门)
[](#发布产物)
[](#发布产物)
*一种受 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)