nickharris808/pqc-sizes-js

GitHub: nickharris808/pqc-sizes-js

一个零依赖的纯ESM JavaScript库,用于计算后量子凭证的字节大小、网络分片数量及安全的重组窗口边界。

Stars: 0 | Forks: 0

# pqc-sizes (JavaScript) [![license](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE) [![node](https://img.shields.io/badge/node-%E2%89%A518-green.svg)](package.json) [![tests](https://img.shields.io/badge/tests-19%20passing-brightgreen.svg)](test/) [![deps](https://img.shields.io/badge/dependencies-0-brightgreen.svg)](package.json) **你的后量子凭证无法放入单个数据帧中。看看这需要付出什么代价 —— 无论是在浏览器还是在 Node 中。** ``` import { reassemblyWindow } from 'pqc-sizes'; reassemblyWindow(12000, 32768, 3).explain(); // "EMPTY WINDOW: floor 12,000 B > ceiling 10,922 B (short by 1,078 B). // No capacity cap is both feasible and safe. Raise the budget to at least // 36,000 B, reduce concurrency to at most 2, or choose a smaller credential." ``` 零依赖。纯 ESM。无加密、无网络、无遥测。 ## 为什么会有这个项目 一个 X25519 共享密钥为 32 字节,可以放入一个数据帧中。一个 3 级后量子凭证 为 **7,533 字节**,在 802.11 管理路径上会变成 **20 个数据分片**。 因此,接收方现在在对其进行身份验证*之前*,就持有了受攻击者影响的局部状态, 并且它需要一个重组上限。该上限有**两个**边界: ``` floor = the largest legitimate object you must accept ceiling = global reassembly budget / worst-case concurrent contexts ``` 如果 `floor > ceiling`,则该区间为空,并且**没有任何有效的上限**。 这是一个设计层面的答案,而不是一个错误 —— 并且这是算术运算, 因此它可以在任何地方运行,包括浏览器。 ## 安装 ``` npm install pqc-sizes # once published ``` ## 快速开始 ``` import { credentialBytes, fragmentsFor, reassemblyWindow, maxConcurrentContexts, } from 'pqc-sizes'; credentialBytes('ML-KEM-768', 'ML-DSA-65'); // 7533 fragmentsFor(7533, 384); // 20 (Wi-Fi mgmt fragment) fragmentsFor(7533, 1500); // 6 (Ethernet) const w = reassemblyWindow(12000, 65536, 4); w.ceiling; // 16384 w.isEmpty; // false w.admits(16385); // false — one byte over budget maxConcurrentContexts(12000, 32768); // 2 — derived, not guessed ``` ## 实际示例 — 实际输出 ``` > credentialBytes('ML-KEM-768', 'ML-DSA-65') 7533 > fragmentsFor(7533, 384) 20 > reassemblyWindow(12000, 32768, 3).explain() 'EMPTY WINDOW: floor 12,000 B > ceiling 10,922 B (short by 1,078 B). No capacity cap is both feasible and safe. Raise the budget to at least 36,000 B, reduce concurrency to at most 2, or choose a smaller credential.' > maxConcurrentContexts(12000, 32768) 2 ``` **最后那个数字才是关键。** 你不必通过部署上线并看着设备崩溃来发现你的并发限制 —— 你只需在一次调用中就能将其推导出来。 ## 跨语言一致性 这是 Python 版 [`pqc-sizes`](https://github.com/nickharris808/pqc-sizes) 的移植版本,并且两者**决不能产生偏差** —— 否则它们会针对同一个协议向用户反馈不同的信息。 测试套件将整个算法和传输表以及每一个文档中的实际示例都与 Python 的值进行了锚定比对。 一个一致性测试工具会在 31 个共享值(13 种算法、9 种传输方式、5 种分片情况、4 种窗口情况) 上运行两种实现,并对输出进行 diff 比对: ``` IDENTICAL — 31 values agree across JS and Python ``` ## API | 导出 | 用途 | |---|---| | `ALGORITHMS` | 13 种算法及其公钥和密文/签名大小 | | `TRANSPORTS` | 9 种传输方式及其每帧可用的 payload 字节数 | | `credential(kem, sig, opts?)` | `{ totalBytes, breakdown }` | | `credentialBytes(kem, sig, opts?)` | 仅有总字节数 | | `fragmentsFor(objectBytes, framePayload)` | 向上取整的分片数量 | | `reassemblyWindow(largest, budget, concurrency)` | 双向窗口 | | `maxConcurrentContexts(largest, budget)` | 最高安全并发数 | `reassemblyWindow` 返回 `{ floor, ceiling, budget, concurrency, isEmpty, recommended, admits(cap), explain() }`。 错误的输入会抛出异常,而不是返回一个看似合理但实际错误的数字 —— 承载零字节的传输方式是调用者的错误,而不是返回 `0`。 ## 浏览器 纯 ESM,没有 Node 内置模块,因此可以直接加载: ``` ``` ## 测试 ``` npm test # 19 passing, node:test, no test framework needed ``` ## 适用范围 针对已发布的对象大小进行算术运算。它**不会**检查你的代码实现, 不会进行任何密码学验证,也不会对你的协议做出任何安全声明。非空窗口意味着 上限*存在* —— 而不是说你的代码强制执行了该上限。 ## 相关项目 [`pqc-sizes` (Python)](https://github.com/nickharris808/pqc-sizes) · [`pqc-mfb`](https://github.com/nickharris808/pqc-mfb) · [`pqc-guard-action`](https://github.com/nickharris808/pqc-guard-action) · [`pqc-migration-mcp`](https://github.com/nickharris808/pqc-migration-mcp) 这个包告诉你该选择什么上限。而强制执行该上限,并关闭其他 38 种失败类型,则是闭源核心所做的 事情。相关的技术主题已由提交的临时专利申请涵盖。如需完整信封的商业用途,请发起一个 [GitHub Discussion](https://github.com/nickharris808)或在本仓库提一个 issue。 ## PQC 迁移工具包 为将身份验证密钥交换迁移到后量子时代的团队提供的九款免费工具。它们**负责发现和测量**;不负责修复。 | 工具 | 功能描述 | 位置 | |---|---|---| | [pqc-sizes](https://github.com/nickharris808/pqc-sizes) | 大小、分片数量和双向重组窗口 | PyPI | | **pqc-sizes-js** ← 你在这里 | 适用于 Node 和浏览器的相同算术逻辑 | npm | | [pqc-guard-action](https://github.com/nickharris808/pqc-guard-action) | 当窗口为空时使构建失败 | GitHub Action | | [pqc-dos-embedded](https://github.com/nickharris808/pqc-dos-embedded) | 169 行 C 代码:真实 64 KB 设备上的失败案例 | source | | [farkas-check](https://github.com/nickharris808/farkas-check) | 在设备上重新验证边界,无需 SMT solver | source | | [pqc-migration-mcp](https://github.com/nickharris808/pqc-migration-mcp) | 面向 AI agent 的六款 MCP 工具 | PyPI | | [pqc-mfb](https://github.com/nickharris808/pqc-mfb) | 322 个用例 · 39 种失败类型 · 评分器 | PyPI | | [pqc-mfb (数据)](https://huggingface.co/datasets/nickh007/pqc-mfb) | 作为数据集的基准测试 | HF | | [pqc-formal-corpus](https://huggingface.co/datasets/nickh007/pqc-formal-corpus) | 122 个命名的形式化结果,6 个证明器 | HF | | [pqc-explorer](https://huggingface.co/spaces/nickh007/pqc-explorer) | 在浏览器中直接尝试,无需安装 | HF Space | **从这里开始:**[`pqc-sizes`](https://github.com/nickharris808/pqc-sizes) 可以在五秒钟内告诉你,你的凭证是否会被分片,以及是否存在安全的上限。[`pqc-explorer`](https://huggingface.co/spaces/nickh007/pqc-explorer) 可以在浏览器中完成同样的工作。 ### 闭源核心 关闭这 39 种失败类型 —— 降级绑定、重传安全安装、分片记录、漫游前向保密、多链路密钥隔离、准入控制、组密钥绑定 —— 是一个独立的专有代码库。相关的技术主题已由提交的临时专利申请涵盖。 这种分离是经过测量的,而非断言:在复制噪声控制下,只有 **32 种**修复机制中的 **4 种**在外部是可区分的,因此发布这些检测器并不会暴露修复方案。 如需商业授权,请发起一个[GitHub Discussion](https://github.com/nickharris808/pqc-sizes/discussions)或在上述任何一个仓库中提交一个 issue。 ## 许可证 Apache-2.0。请参阅[LICENSE](LICENSE)和[CONTRIBUTING.md](CONTRIBUTING.md)。
标签:CMS安全, GNU通用公共许可证, JavaScript, MITM代理, Node.js, 内核驱动, 后量子加密, 密码学, 手动系统调用, 数据可视化, 网络协议, 自定义脚本