nqp-llc/enqpy
GitHub: nqp-llc/enqpy
Enqpy 是一款提供 Shannon 有限密钥理想系统构造性证明的流密码的 C 语言参考实现,包含自测向量与基准测试工具。
Stars: 0 | Forks: 0
# Enqpy™ 流密码 — 参考实现
[](https://github.com/nqp-llc/enqpy/actions/workflows/ci.yml)
**论文:** *Enqpy™ 流密码:Shannon 有限密钥密码理想系统的构造性证明。* 规范引用和当前论文链接维护在官方网站上 — 参见
[enqpy.com/technical.html](https://enqpy.com/technical.html)。
**项目站点:** [enqpy.com](https://enqpy.com)
**咨询:** [RPM@enqpy.com](mailto:RPM@enqpy.com) — 关于四条商业化路径,请参见
[enqpy.com/use.html](https://enqpy.com/use.html)。
## 参考实现
本仓库提供了一个单一的规范 C 参考实现,
**`src/enqpy_reference.c`** — 处于其**规范配置**(仅基于 nonce 的 OffsetKey 派生 / 密钥角色分离,Case-1 `W` 生成,
规范的 2,048 字节 HIGH 窗口,以及同步密钥更新)下的 Enqpy。它是在其上证明 Rev 3.0 结果**在两个轴向上均闭合**的配置 —
密钥轴向 H(EK,QK | T^∞) = log₂(4) = 恰好 2 比特(定理 2),以及消息轴向
H(PT | CT,OR) = H∞ ≥ 128 比特且具有均匀后验分布(定理 3)。通过 Case 1 生成
`W` 恰好使得 (EK,QK) → W 映射成为一个 ℤ₁₆-模同态,从而完成了消息轴向最小熵定理的证明。
| 文件 | 阶段 3 `W` 生成 | 窗口 (HIGH) | 自测 |
|---|---|---|---|
| **`src/enqpy_reference.c`** | Case-1 | 2,048-byte | **84/84** |
使用 `-DENQPY_SELFTEST` 构建并自测。
## 快速验证
只需几分钟即可克隆、构建并验证该实现 — 无需注册,
无需许可。
```
# Clone the repo
git clone https://github.com/nqp-llc/enqpy.git
cd enqpy
# 使用 self-test + benchmark 构建 reference
cc -O3 -std=c11 -DENQPY_SELFTEST -DENQPY_BENCHMARK \
src/enqpy_reference.c -o enqpy_test
./enqpy_test
```
预期输出开头为:
```
Enqpy(tm) Stream Cipher -- Reference Rev 3.0
Canonical Configuration, Case-1 W generation (proof-complete profile)
Copyright (c) 2026 NQP LLC -- Apache License 2.0
Platform: n=64, tile_len=144, W_bytes=2048 (window)
Self-test: 84 PASS 0 FAIL
Self-test PASSED.
```
随后是基准测试表。在任何现代机器上,总挂钟时间远远不到一
秒。
如果您看到 `84 PASS 0 FAIL`,则表明该实现逐字节精确匹配
[正式密码学描述](./FCD.md) (FCD §13) 和论文 (§15) 中的测试向量 —
包括端到端进行加密和解密的往返断言 (TV3 RT)。
**基准测试数据为可移植 C 代码,无硬件加速**,运行于
传统桌面 CPU 上 — 是对等的可移植 C 比较。有关完整的
测试方法学,包括硬件加速 AES 的对比情况,请参见
[enqpy.com/speed_bench.html](https://enqpy.com/speed_bench.html)。
### 顺利运行的结果说明 — 以及它未说明的内容
顺利运行表明该**产出物**是真实的,构建无需依赖,并且
能够复现已发布的测试向量(包括端到端的加密/解密
往返)。它本身并**不能**确立该**证明** — 证明存在于
论文中,并供密码学审查。这是两种不同的信任行为:运行
此处的代码;检查那里的数学。
## 管理与许可
Enqpy™ 参考实现由 **Enqpy™ Foundation
Inc.**(一家于 2026 年 4 月成立的特拉华州无股本非营利公司)管理,该协会拥有
Enqpy™ 商标。商业关系由 **NQP LLC**(发明者的弗吉尼亚州商业实体,
于 2026 年 3 月 19 日成立)运营,并获得
基金会的永久、非排他性许可(基金会–NQP IP 许可协议)。基金会确保这项工作的
持久性;NQP 则确保其在商业上的可用性。
参见 [enqpy.com/foundation.html](https://enqpy.com/foundation.html)。
**对所有人而言专利安全。** 根据 **开放基础设施专利
不主张承诺**([enqpy.com/covenant](https://enqpy.com/covenant),
以及在此仓库中),NQP LLC 不可撤销地承诺不对 Enqpy™ 密码的任何合规实现
主张 NQP 专利 —
任何人、出于任何目的、在任何规模下,包括商业部署。使用、实现或
部署该密码本身无需任何费用,无需注册,无需保密协议 (NDA),也无需
许可。
**开源。** NQP 的参考实现、测试工具和测试
向量基于 **Apache License 2.0** 授权(参见
[`LICENSE`](./LICENSE) 和 [`NOTICE`](./NOTICE)); 文档和
规范为 CC-BY-4.0。Apache-2.0 第 3 节增加了一项明确的、
代码范围内的专利授权;该承诺仍然是更广泛的、具有控制力的
专利承诺,不受代码许可的限制或终止。
**商业关系(可选 — 争取优势)。** 这些都不是
使用该密码的条件;它们为这项工作提供资金,并为有需要的组织提供保证:
- **基金会合规性认证** — 适用于寻求 Enqpy™-Certified 标志和注册列表的第三方实现
- **NQP 高性能专有实现** — 经过优化的
VHDL/FPGA pipeline 和相关材料,作为 NQP
商业机密/版权作品单独授权(非公开参考实现,不受
承诺约束)
- **NQP 商业服务** — 架构评审、审计、培训、定制
实现、集成、咨询、支持、服务级别协议 (SLA)、赔偿
- **合作伙伴计划** — 五个类别(Enqpy-Certified 产品、Enqpy Inside
商标、定制实现、高级技术服务、硬件集成)
- **可选的签署专利许可和赔偿** — 适用于尽管有承诺对其使用提供保护,但仍倾向于签署书面文件的组织
有关框架,请参见 [enqpy.com/use.html](https://enqpy.com/use.html),或者
发送电子邮件至 RPM@enqpy.com,并在主题行中注明 `[Commercial]`。
## 这是什么
本仓库包含:
- **`src/enqpy_reference.c`** — Enqpy 的 C11 参考(Case-1 `W`
生成,规范配置)。单文件,无外部
依赖,可从 8 位微控制器移植到 64 位服务器。这是已证明 Rev 3.0 结果的规范参考。
- **[`FCD.md`](./FCD.md)** — 正式密码学描述:该
密码的散文与数学规范(OWC、PDAF、PDAF_SEC、
五个阶段、密钥管理、安全分析以及自测所依据的 §13 测试向量)。关于密码“做什么”的权威声明;C 参考展示了“一种实现是如何做到的”。
- **84 条嵌入式自测断言**,涵盖 PDAF 模式 0/1、PDAF_SEC 输出
和往返、推动 Shannon 理想系统结果的 `[+8]` 陪集不变量,以及窗口边界和 NIL 密钥更新向量。
- **内置基准测试工具**,可复现论文中报告的
性能数据。
- **`src/aead_bench.c`** — 一个独立的跨密码 AEAD 基准测试
(Enqpy™ + Poly1305 vs ChaCha20-Poly1305、AES-256-CTR、AES-256-GCM),
在计时前通过 KAT 验证;这是性能对比页面背后的同等条件比较。
## 这不是什么
- **未达到生产就绪状态**,若缺少论文第 §16 节中描述的额外操作机制:
完整性(基于密文和
`eff_or` 的 MAC)、nonce 唯一性基础设施、安全密钥存储、MOD16 表查找的常量时间
实现,以及使用后安全擦除密钥
材料。具体细节请参见 `src/enqpy_reference.c`
中的实现注释。
## 自测验证内容
这 84 条断言直接对应论文中提出的声明:
| 断言组 | 数量 | 验证内容 |
|---|---:|---|
| TV1 — PDAF 模式 0 (n=10, 30 nibbles) | 30 | 核心 PDAF 原语,加法模式 — 匹配 FCD §13.2 |
| TV2 — PDAF 模式 1 (n=10, 30 nibbles) | 30 | 核心 PDAF 原语,单向门模式 — 匹配 FCD §13.2 |
| TV3 — PDAF_SEC W 输出 (n=64) | 8 | Enqpy 密钥流 `W[0..7]` = `2434B58845C6FDE8` (CT = 零明文上的 W) |
| TV3 RT — 往返解密 | 8 | W ⊕ (W ⊕ PT) = PT; 确认 XOR 流式传输的正确性 |
| TV4 — EK 轴上的 `[+8]` 陪集不变性 | 1 | EK+8·**1** 产生相同的密文 (注 1, 定理 2) |
| TV5 — QK 轴上的 `[+8]` 陪集不变性 | 1 | QK+8·**1** 产生相同的密文 (注 1, 定理 2) |
| TV6 — 两个轴上的 `[+8]` 陪集不变性 | 1 | EK+8 **和** QK+8 产生相同的密文 (4→1 陪集折叠) |
| TV7 — 窗口边界 (2,048 字节窗口) | 2 | 字节 [2046,2047] 尾部 + 跨越阶段 5 更新的 2,050 字节往返 |
| TV8 — NIL 密钥更新策略 | 3 | 方法 1 被拒绝,方法 2 成功,且陪集折叠 4→1 (引理 B4) |
| **总计** | **84** | |
TV4 和 TV5 是对 `[+8]` 全局位移不变性的实证确认,
该不变性推动了 4 元素密文等价陪集
{EK, EK+8} × {QK, QK+8} — 这是论文中证明的
H(EK, QK | T^∞) = log₂(4) = 恰好 2 比特含糊度结果的代数基础
(定理 2,第 6.1 节;附录 A,第 4 层六步证明)。
有关每项断言验证内容的更详细映射以及如何扩展测试套件,请参见
[`tests/README.md`](./tests/README.md)。
## 安全配置
该参考实现支持 FCD 规定的三种强制密钥长度配置:
| 配置 | 密钥长度 | PDAF 输出 | 目标部署场景 |
|---|---|---|---|
| LOW | 32 nibbles (128 bits) | 1,024 nibbles | 物联网,嵌入式 |
| MEDIUM | 48 nibbles (192 bits) | 2,304 nibbles | 企业 |
| **HIGH** | **64 nibbles (256 bits)** | **4,096 nibbles** | **政府,国防(默认)** |
论文中的数值界限均针对 HIGH 配置 (n=64) 给出:
明文含糊度 H(PT | CT, OR) ≥ 128 比特(在
≥ 2^128 个一致明文上的均匀后验分布;闭合),在规范配置下密钥含糊度 = 恰好
2 比特。
## 从源码构建
### 要求
- 支持 C11 的编译器(`gcc` ≥ 4.9, `clang` ≥ 3.3, MSVC ≥ 2015)
- 用于 `build.sh` 的兼容 POSIX 的 shell,或手动运行相关命令
- 无需外部库;无需 `make`、`cmake` 或构建系统
### 单行构建(仅库)
```
cc -O2 -std=c11 -c src/enqpy_reference.c -o enqpy.o
```
### 包含自测
```
cc -O3 -std=c11 -DENQPY_SELFTEST src/enqpy_reference.c -o enqpy_test
./enqpy_test
```
### 包含基准测试
```
cc -O3 -std=c11 -DENQPY_BENCHMARK src/enqpy_reference.c -o enqpy_bench
./enqpy_bench
```
### 包含两者(首次检查推荐)
```
cc -O3 -std=c11 -DENQPY_SELFTEST -DENQPY_BENCHMARK src/enqpy_reference.c -o enqpy_all
./enqpy_all
```
包含的 `build.sh` 会执行这种组合构建,并将
二进制文件放置在 `./build/enqpy_test` 中。
### 跨密码基准测试(同等条件 AEAD)
`src/aead_bench.c` 是一个独立的测试工具,用于在同等条件下将 **Enqpy™ + Poly1305** 与 **ChaCha20-Poly1305**、**AES-256-CTR** 和 **AES-256-GCM** 进行比较 — 每个密码都经过认证,并且在任何计时之前,每个实现都已通过其已知答案测试向量的验证。这是
[enqpy.com/speed_bench.html](https://enqpy.com/speed_bench.html) 页面背后的同等条件比较。其他
密码均通过内联实现(无需外部库);只有PDAF_SEC`
原语是从参考代码 `src/enqpy_reference.c` 链接的,
因此请将这两个文件放在一起构建。在此处请**不要**
传递 `-DENQPY_SELFTEST` / `-DENQPY_BENCHMARK` — 这些标志会启用参考代码自己的 `main`,会与测试工具发生冲突。
```
cc -O3 -march=native -std=c11 -D_POSIX_C_SOURCE=200809L \
src/aead_bench.c src/enqpy_reference.c -o aead_bench
./aead_bench
```
软件排名取决于 CPU — 请在您自己的硬件上运行。(`-march=native`
是可选的;它允许编译器使用您 CPU 的完整指令集。)
## 移植与绑定
Enqpy™ 旨在供任何语言或 runtime 使用。欢迎进行移植和绑定 —
编写移植无需获得许可。
- **规范测试向量:** [`tests/vectors/enqpy-vectors.json`](./tests/vectors/enqpy-vectors.json),
记录在 [`TEST_VECTORS.md`](./TEST_VECTORS.md) 中 — 您的移植必须精确复现的标准(大写十六进制)。请从零明文向量开始,在这种情况下,
密文等于密钥流,从而将 W 的生成与 XOR 步骤隔离开来。
- **如何移植、验证并加入列表:** [`PORTING.md`](./PORTING.md)
- **现有移植:** [`PORTS.md`](./PORTS.md)
能够复现这些向量的移植,通过自我声明即为**参考兼容 (Reference-Compatible)** —
请为其命名,并将其描述为*“与 Enqpy™ 参考实现参考兼容 (Reference-Compatible)”*(该标志不能用于类似“Enqpy-Rust”或“PyEnqpy”的项目名称中)。在移植中使用该密码是专利安全的,依据与参考实现相同条款的[承诺](https://enqpy.com/covenant)
— 任何合规使用均无需费用或许可(NQP 的
参考源代码本身依据 Apache-2.0 开源;参见 [`LICENSE`](./LICENSE))。将
**Enqpy™** 标志用于产品名称,以及 **Enqpy™-Certified** 或 **Enqpy™-Compatible** 声明,需要获得基金会的合规性认证 — 有关这三个级别,请参见 [`CONFORMANCE.md`](./CONFORMANCE.md)。
## 论文
有关规范引用和当前论文链接,请参见
[enqpy.com/technical.html](https://enqpy.com/technical.html)。
该论文无条件地、在没有任何计算复杂性假设的情况下,确立了 Enqpy™ 是第一个被正式证明满足 Shannon 理想系统定义的有限密钥密码。
主要结果:
- **定理 1 (§5)** — PDAF 模式 1 反转下界:|P(O*)| ≥ 16ⁿ。
- **定理 2 (§6)** — Shannon 理想系统特性:
在规范配置下 H(EK, QK | T^∞) = log₂(4) = 恰好 2 比特;
T_{>t} ⊥ (EK, QK) | T_{≤t}。
- **推论 2 (§7)** — 所有界限在量子计算下均保持不变
(证明过程中未引入任何计算复杂性假设)。
- **定理 3 (§12)** — Enqpy 明文含糊度(闭合):
对于 HIGH 配置,H(PT | CT, OR) = H∞ ≥ 128 比特,且在整个一致集上的后验分布均匀;对于任何密文,至少有 2^128 个一致的明文。
一份相关的技术说明,[*对抗性结果等价性 — 在 DSMV 下证明*](https://enqpy.com/papers/enqpy-dsmv.pdf),
证明了在二元成功度量标准下,Enqpy™ 和
一次性密码本 (OTP) 具有相同的操作保密性结果,并包含一项结构性观察,指出 Enqpy™ 维持了两个代数独立的
不确定性轴向(而 OTP 仅维持一个)。
## 仓库治理
本仓库遵循社区标准规范进行治理、
贡献和安全披露:
- [`LICENSE`](./LICENSE) — Apache License 2.0(代码、测试工具和
测试向量;文档为 CC-BY-4.0)
- [`NOTICE`](./NOTICE) — 版权、承诺协调通知以及
商标声明
- **专利不主张承诺** —
[enqpy.com/covenant](https://enqpy.com/covenant)(以及在此仓库中);
使密码对所有合规使用实现专利安全的具有控制力的文书
- [`CODE_OF_CONDUCT.md`](./CODE_OF_CONDUCT.md) — 行为准则和
可接受使用政策
- [`CONTRIBUTING.md`](./CONTRIBUTING.md) — 如何贡献(可接受的
范围、DCO 签署、审查流程)
- [`SECURITY.md`](./SECURITY.md) — 漏洞披露和
协调披露政策
合规性与移植:
- [`CONFORMANCE.md`](./CONFORMANCE.md) — 合规级别(参考兼容 (Reference-Compatible)、
合规实现、Enqpy™-Certified)、规范来源以及由 Enqpy™ 基金会管理的
提交流程
- [`PORTING.md`](./PORTING.md) — 如何将 Enqpy™ 移植到另一种语言,对照
向量进行验证,并自我声明参考兼容 (Reference-Compatible)
- [`PORTS.md`](./PORTS.md) — 社区移植和绑定注册表
- [`TEST_VECTORS.md`](./TEST_VECTORS.md) — 规范的测试向量格式和
验证程序
这是一个由发明者管理的参考实现,而不是一个社区开发的
项目。欢迎对文档、构建、可移植性
和测试基础设施做出贡献;但不接受修改核心
密码算法的提交 — 该实现必须与形式证明保持精确的
对应关系。欢迎独立的其他语言移植和绑定,并在 [`PORTS.md`](./PORTS.md) 中进行跟踪 — 若要添加移植,请参见
[`PORTING.md`](./PORTING.md)。
## 引用
规范引用和当前论文链接集中维护在
[enqpy.com/technical.html](https://enqpy.com/technical.html)。
仓库根目录下的 `CITATION.cff` 文件还支持 GitHub 的原生
引用导出。BibTeX 格式:
```
@techreport{mcgough2026enqpy,
author = {Paul McGough},
title = {{E}nqpy\texttrademark{} Stream Cipher: Constructive Proof of
Shannon's Ideal System for a Finite-Key Cipher},
institution = {NQP LLC},
year = {2026},
number = {Rev 3.0},
note = {Canonical citation and paper link: https://enqpy.com/technical.html}
}
```
## 仓库状态
| 产出物 | 状态 |
|---|---|
| C 参考实现 | ✅ Rev 3.0 — Enqpy(规范配置,Case-1) |
| 正式密码学描述 | ✅ `FCD.md` |
| 测试向量 | ✅ 84/84 PASS |
| 基准测试工具 | ✅ 已包含 |
| 形式证明论文 | ✅ 2026年6月1日(规范链接见 enqpy.com/technical.html) |
| 仓库治理 (LICENSE, COC, CONTRIBUTING, SECURITY) | ✅ 2026年6月1日生效 |
| 合规性规范 | ✅ `CONFORMANCE.md` — Rev 0.1 框架(第 4-6 个月推出 Rev 1.0) |
| 移植指南与向量格式 | ✅ `PORTING.md`, `TEST_VECTORS.md` |
| 社区移植注册表 | ✅ `PORTS.md` — 开放提交 |
| VHDL 参考实现 | 🔒 可通过直接许可获取 |
| NIST SP 800-22 完整测试套件 | 🟡 摘要见 FCD §14;完整运行结果可通过直接咨询获取 |
*版权所有 © 2026 NQP LLC。代码基于 Apache License 2.0 授权;
文档基于 CC-BY-4.0。参见 [`LICENSE`](./LICENSE) 和 [`NOTICE`](./NOTICE)。*
*Enqpy™ 和 Enqpy™-Certified 是
Enqpy™ Foundation Inc. 的商标,已许可给 NQP LLC。*
标签:加密算法, 安全理论基础, 客户端加密, 密码学, 手动系统调用, 流密码