本目录包含参考 RTL 模块、预编译的 FPGA 镜像以及可选的 TCL 测试脚本,用于实现原子测量–塌缩原语。该原语是一种 CMOS 兼容的硬件测量–塌缩机制,强制实现单次读取语义:第一次合格的读取返回存储的字节,而测量行为会确定性地触发不可逆的塌缩事件。塌缩后,单元仅产生混淆或基于 PRNG 的输出,确保原始值无法恢复。该实现展示了确定性首次读取披露、基于基态条件的访问控制以及独立存储单元组上的原子单向状态转换。
提供的 .sof 文件允许直接进行硬件验证,无需任何额外的总线接口模块。
状态: 研究工件发布
许可证: 仅限非商业使用(请参见下文许可证)
专利申请中: US 19/286,600
目标硬件: Intel Cyclone V (5CSEBA6 / DE-SoC)
| 文件/文件夹 | 描述 |
|---|---|
fpga/collapse_cell.sv | 论文中使用的基本只读一次单元核心原语 |
fpga/collapse_bank.sv | 1024 单元组,带有共享熵/混淆总线 |
fpga/Atomic1024Bank.sof | 干净的 1024 单元比特流(无 SignalTap – 最快烧写路径) |
fpga/SignalTap.sof | 带有免手动自动运行演示的仪表化构建 |
fpga/SignalTap.stp | 预配置的 SignalTap 文件 – 打开 → 运行 → 观察塌缩时序 |
fpga/program_clean.bat | 一键烧写脚本 (Windows,干净版本) |
fpga/program_clean.sh | 一键烧写脚本 (Linux,干净版本) |
fpga/program_signaltap.bat | 一键烧写脚本 (Windows,SignalTap 演示) |
fpga/program_signaltap.sh | 一键烧写脚本 (Linux,SignalTap 演示) |
tcl/ | 可选的 System Console TCL 脚本,用于自动化测试 |
images/ | 来自相关论文的单周期披露 + 销毁波形图 |
ROADMAP.md | 项目路线图及计划中的 ASIC/FPGA 开发阶段 |
LICENSE.md | 非商业许可证 |
README.md | 本文件 |
collapse_cell.sv实现测量–塌缩只读一次存储器 (ROOM) 原语:
INIT 加载值和基态关键内部状态:
basis_valid_qarmed_qcollapsed_qcollapse_bank.sv实现完整的 1024 单元阵列。该模块提供:
collapse_cell 单元的并行实例化data_o、collapsed_q、状态等)RO 路径仅在塌缩后激活,并在启用时对塌缩后的混淆输出流做出贡献。它不影响首次读取的正确性或塌缩语义。
Atomic1024Bank.sofSignalTap.sof探测信号 (参见 SignalTap.stp):
read_pulsebasis_in[7:0]basis_valid_qarmed_qcollapsed_qdata_o[7:0]valid_out (如果存在)tcl/)这些可选脚本提供给希望自动化交互、驱动序列或重现内部测试流程的用户。
示例功能包括:
这些脚本不依赖此工件中包含的任何总线接口 HDL。用户可以将其适配到自己的主机接口、GPIO 序列器或 System Console 工作流程中。
Atomic1024Bank.sof 或 SignalTap.sof使用这些镜像不需要 Avalon-MM 从设备或外部 IP 封装。
请参见完整的 LICENSE.md 文件。
适用非商业研究许可证。
此摘要仅供信息参考。以 LICENSE.md 中的完整文本为准。
如果您在学术工作中使用此工件,请引用相关论文:
引用格式:
Francis X. Cunnane III. A CMOS Measurement–Collapse Primitive for Ephemeral Secrets in Post-Quantum Cryptography. TechRxiv. 2025 年 12 月 2 日。
https://doi.org/10.36227/techrxiv.176463742.23048082/v3
BibTeX 示例:
@misc{cunnane2025measurementcollapse,
author = {Cunnane III, Francis X.},
title = {A CMOS Measurement--Collapse Primitive for Ephemeral Secrets in Post-Quantum Cryptography},
year = {2025},
month = dec,
note = {TechRxiv},
doi = {10.36227/techrxiv.176463742.23048082/v1},
url = {https://doi.org/10.36227/techrxiv.176463742.23048082/v1}
}