
一位密码学家或严肃的实现者在审查 CESS 时,通常会先打开 vectors/ 和 testdata/,然后再阅读文字描述。测试套件就是工作证明:它编码了领域知识,而这些知识仅靠叙述是无法替代的。
这并不意味着要向其他人隐藏要点。评估项目以决定采购、是否贡献、制定政策、或者在没有深入加密测试方法培训的情况下发布代码的人们,仍然需要一个指向具体证据的指引。该仓库已经声明了审计规则和算法排除项;将这些叙述与已发布的测试向量关联起来,弥合了“页面上的声明”与“可运行的工件”之间的差距。
查看内容: 一致性材料包括 RFC 8439 中关于 ChaCha20-Poly1305(该项目规范性引用的 IETF AEAD)的工作示例,以及 [testdata/wycheproof/](https://github.com/supermagnum/cess/blob/HEAD/testdata/wycheproof/) 下包含的 Wycheproof 中用于 ChaCha20-Poly1305 边界情况的 JSON。连同项目自身在 [vectors/](https://github.com/supermagnum/cess/blob/HEAD/vectors/) 中的 TOML 向量,它们是运行者和审查者可以验证的事实依据。
RFC 8439 由互联网工程任务组(IETF) 发布,该组织负责标准化互联网互操作的许多方面。RFC(意见征求稿) 是协议和许多加密规范的常用形式。RFC 8439 定义了 ChaCha20-Poly1305 认证加密(基于 Daniel Bernstein 的设计),并包含了具体的输入和期望输出的工作示例,以便独立实现可以检查它们是否逐字节符合标准。广泛流传的明文开头是 Ladies and Gentlemen of the class of '99: wear sunscreen,出现在 RFC 的附录示例中:如果你的代码精确地重现了 AEAD 输出,那么你就有了一个强有力的检查,证明你正确地实现了该结构。这相当于加密领域的官方答案。 (更早的 RFC 7539 为其他 IETF 上下文记录了 ChaCha20 和 Poly1305;RFC 8439 是本项目及 spec/CESS-v0.2.md 中使用的 AEAD 的常用参考。)
Wycheproof 是由 Google 安全团队(2017 年)发布的测试语料库。其名称指的是澳大利亚的 Wycheproof 山——常被引为世界上最小的山——因为该项目专注于清除微小但致命的障碍:整数溢出、边界情况、畸形输入和被篡改的认证标签;这些失败在真实部署的加密中反复出现。它补充了 RFC 风格的向量:RFC 8439 风格的示例证明了针对已发布 AEAD 的正确性;Wycheproof 则强调了实现历史上容易出错的地方的健壮性。
至于这对该标准意味着什么,由见多识广的读者自行判断。
当 PR 关闭后,还可以使用以下方式检查 crate 的完整性: https://github.com/rust-lang/cargo/issues/16850
版本: 0.2
状态: 仅规范(规范性文本和测试向量)
本项目已在 开放发明网络 (OIN) 注册,这是一个保护与 Linux 相关的开源软件的防御性专利池。开放预印本发布(确立现有技术)、OIN 会员身份和 GPL-3.0 许可的组合,旨在确保该技术保持自由可用,并且不能被任何国家或商业行为者私有化或限制。
CESS 是一个开放的加密标准,用于阈值秘密共享,并结合了密码无关的认证加密、基于密码的分片包装以及可选的后量子混合密钥交换。它专为需要长期保密性、离线注册、硬件令牌绑定以及独立于 NSA/NIST 仅算法基线的采购路径的部署而设计。
非技术读者可以从词汇表开始(A–Z 的通俗术语)。
现有的生态系统解决了部分问题,但仍存在空白:
CESS 定义的是标准;SplitDisk(以及类似产品)是参考场景和示例部署,而非标准本身。
CESS 固定了GF(2^8) 上的沙米尔秘密共享以及若干经审计的非可选完整性和密码原语。所有批量加密、KEM、KDF 和 MAC 层都可以从经审计的注册表中选择,但必须遵守两名独立审计员规则和硬性排除列表(参见 spec/CESS-v0.2.md 和 ALGORITHM-REGISTRY.md)。
广泛用于美国政府和行业的 NIST 素数域曲线(P-256、P-384、P-521)是通过一个 NSA 发挥了记录在案作用的过程选出的。CESS 并非依赖单个数学证明这些曲线是弱的;它应用了一项策略排除,以便该标准可以服务于需要在 NSA/NIST 仅基线之外证明合理性的加密、并且偏好独立审查原语的采购、联络和工程路径(参见 spec/CESS-v0.2.md 第 3 节和 ALGORITHM-REGISTRY.md)。
CESS 中的经典 ECDH 使用 Brainpool 曲线(RFC 5639) 代替。这些曲线的参数由已发布的生成规则产生,并且它们非常适合 BSI 对齐和 欧盟中心的讨论,同时覆盖了可比的安全性目标(例如 BrainpoolP384r1 与 P-384 级安全性)而无需采用被排除的 NIST 曲线族。
详细信息:spec/CESS-v0.2.md 第 3 节、spec/CRYPTO.md 和 ALGORITHM-REGISTRY.md。
贡献者同意 PATENTS.md 中的专利不主张承诺。本项目已在 开放发明网络 (OIN) 注册,这是一个用于与 Linux 相关的开源软件的防御性专利池。通过 OIN 进行的交叉许可本身并不涵盖该生态系统之外的各方;该承诺旨在为符合规范的实现填补这一空白。
参见 CONTRIBUTING.md。拉取请求被视为同意 PATENTS.md。规范变更需要来自不同国家的两名审查员。新算法使用 ALGORITHM-REGISTRY.md(先对注册表开启 PR,如需,再对 spec/CESS-v0.2.md 中的交叉引用开启 PR)。
ALGORITHM-REGISTRY.md(证据表、标识符分配)。vectors/ 下添加或扩展覆盖新套件的测试向量。CONTRIBUTING.md 获得两名维护者审查。CESS 是标准。SplitDisk 是一个示例实现场景(例如磁盘加密结合分片分发);该工具的规范存在于该仓库中。产品可以根据 CONFORMANCE.md 声明符合 CESS-CORE、CESS-FULL 或 CESS-PQ,而无需使用 SplitDisk 名称。
| 路径 | 作用 |
|---|
spec/CESS-v0.2.md | 主要规范性标准(RFC 2119 关键词) |
spec/CRYPTO.md | 加密原理与证明草图 |
spec/GOVERNMENT.md | 政府和高安全性部署说明 |
ALGORITHM-REGISTRY.md | 经批准和排除算法的活动注册表 |
GLOSSARY.md | 加密和 CESS 术语的通俗词汇表(A–Z) |
vectors/ | 机器可读的测试向量(TOML:ChaCha/Serpent/Twofish 批量、集成等);CC0 |
testdata/wycheproof/ | 包含的 Wycheproof ChaCha20-Poly1305 JSON(上游 Apache-2.0);参见 testdata/wycheproof/README.md |
scripts/ | 向量生成辅助工具(代码部分为 GPL-3.0) |
runner/ | 一致性测试运行器(Rust,GPL-3.0) |
LICENSE-SPEC | CC0 1.0 — 规范和向量 |
LICENSE-CODE | GPL-3.0 — 代码 |
PATENTS.md | OIN 上下文和贡献者专利不主张承诺 |
CONTRIBUTING.md | 贡献规则和审查策略 |
CONFORMANCE.md | 如何声明和记录一致性 |
IMPLEMENTATIONS.md | 合规产品的可选列表 |
| 内容 | 许可 |
|---|
规范正文(spec/*.md)、README.md、ALGORITHM-REGISTRY.md、GLOSSARY.md、vectors/*.toml | CC0 1.0 通用(公有领域奉献) — 参见 LICENSE-SPEC |
Rust 运行器、参考实现、scripts/serpent_helper/ | GNU GPL v3.0 — 参见 LICENSE-CODE |