本文把 Parano1d 的精确生产实例与已公开的 Poseidon2b 代数攻击逐项对应。ePrint 2026/306 的前馈模型可以应用,工作量投影约为 2^409.8738。ePrint 2026/1792 的非线性子空间构造在 GF(2^128) 上通过精确秩检验后同样可以迁移,但其最低投影约为 2^1022.8301。自适应选取矩阵的攻击和新的 S 盒跳过结果都不能迁移到固定的四字压缩实例。这些数字是特定攻击模型的投影,不是安全位数。
“Poseidon2b 是安全的”这句话故意只说了一半。
在密码学里,算法名称从来不是安全性结论。只有把底层域、状态宽度、速率、容量、摘要长度、S 盒、轮数、线性层、工作模式和攻击模型全部固定下来,“安全”二字才有明确对象。
本文要检验的是一个可以被反驳的具体命题:
截至目前公开的代数攻击,无法攻破 Parano1d 实际部署的这组 Poseidon2b 参数。
这不等于宣称未来不会出现更好的攻击。它只表示:我们把最新论文中的攻击条件逐项对照到了实际源码,而不是拿一个算法族名称替代分析。
先把实例钉死
Parano1d 使用定义在二元扩域上的四字 Poseidon2b 置换。实际部署参数如下:
| 参数 | 实际部署值 |
|---|---|
| 有限域 | GF(2^128) |
| 状态宽度 | |
| 速率 | |
| 容量 | |
| 摘要 | 2 个域元素,共 256 位 |
| S 盒 | |
| 全轮 | |
| 部分轮 |
矩阵同样属于安全参数。宽度为四时,二元 M4 就是完整的外部 MDS 线性层,并不是某个宽状态张量矩阵中的重复小块。内部线性层也由源码中的固定矩阵给出。
Merkle 节点采用二对一前馈压缩,而不是泛泛的海绵调用。设两个 256 位子节点为 与 ,置换输入为
输出取 的前两个域元素:
固定的容量标签只是一次仿射平移。它不会把该构造变成另一张攻击表中的宽状态海绵。
Skipping Class 攻击覆盖了什么
Merz 与 Rodríguez García 在 ePrint 2026/306 中改进了 Poseidon2 和 Poseidon2b 的代数攻击。论文结果本身没有问题,问题通常出在脱离参数引用结论。
论文主体的跳轮方法利用宽状态外部矩阵的张量结构,并明确处理
实际部署的 不在其中。这里的 M4 已经是完整 MDS 层,宽状态方法所需的重复张量结构并不存在。
经常被单独转述的 改进也属于另一组参数:
那是宽度 24、容量 8、15 个部分轮的二元海绵。把该数字贴到宽度 4、容量 2、58 个部分轮的前馈压缩上,没有密码分析意义。
真正命中的部分在附录 A
不能因为主体攻击不适用就停止阅读。附录 A 单独研究了采用 MDS 的二对一前馈压缩,这正是生产 Merkle 树使用的模式。
将 和 代入后,跳轮形式为
再用摘要宽度 、跳过一个全轮且不跳过部分轮,定理 5.1 给出
按照论文采用的二次 Gröbner 基工作量投影 ,得到
它是由 ideal degree 上界推得的某一种经典代数攻击的描述性工作量。它不能排除其他攻击,也不能替代端到端 QROM 定理中关于固定 Poseidon2b 的独立前提。这里能够得到的结论只有一个:针对这组固定参数,该公开攻击没有给出低于 128 位目标的路径。
自适应选择矩阵,研究的是另一组实例
Slipway 与 Midpoint Reset 都是在轮常数已知后再选择 MDS 矩阵,从而构造一组弱参数。Slipway 让受约束的输入族经过开头的全轮后落入有限子空间轨迹;Midpoint Reset 则利用同一种自由度构造贯穿全部轮次的碰撞。
这对自行生成参数的人很重要。只检查矩阵是否满足 MDS 性质还不够,还必须确认矩阵的选择不依赖轮常数。
但它们没有攻击本文固定的生产实例。两层生产矩阵与完整轮常数表已经写入被钉住的置换,攻击者不能替换矩阵。Midpoint Reset 还要求奇特征素域,而生产实现使用 GF(2^128)。两篇论文都没有给出针对 Parano1d 固定矩阵的碰撞、见证或攻击成本。
状态宽度为四时,S 盒跳过法没有新增收益
From Round Skipping to S-Box Skipping 针对普通 Poseidon CICO- 模型提出广义子空间限制。它在部分轮层新增的跳过量为 个 S 盒。
与生产压缩的两条固定输出通道最接近但并不等同的情形是 CICO-2。代入宽度四后:
此外,论文约束的是普通 CICO 输出,而不是带左输入前馈的输出方程。因此,它没有额外跳过任何部分轮,也没有为这套压缩给出更低成本。上文根据附录 A 得到的结果仍是适用的 round-skipping 计算。
非线性子空间确实适用于固定矩阵
Beyond Linear Subspace Trails 不能用“状态宽度不同”或“矩阵可自适应选择”来排除。它面向压缩模式的构造可以专门化到这组精确的生产几何。
摘要包含两个域元素,因此可用约束预算为:
每个部分轮只有一个 S 盒处于活跃状态。线性子空间可以覆盖两个部分轮,新的非线性构造则可以覆盖四个。使用更长轨迹之前,论文要求对具体内部矩阵做秩检验。把生产内部矩阵分块为 后得到:
在实际生产域中,这个 核为:
秩条件成立。四轮非线性轨迹确实存在于这组内部矩阵上,但它只覆盖 58 个部分轮中的 4 个。
随后,我用生产轮数配置与论文的 投影,计算了四种适用的 Macaulay 模型:
| 模型 | 最佳位置 | 变量数 | |
|---|---|---|---|
| 前向、代换、线性 | 6 | 1090.060133886114 | |
| 前向、代换、非线性 | 8 | 1403.209025315336 | |
| 前向、不代换、线性 | 直接计算 | 4 | 1022.830074998558 |
| 前向、不代换、非线性 | 直接计算 | 4 | 1022.830074998558 |
在宽度四的实例中,代换引入的额外变量比延长非线性轨迹所节省的成本更高。这个攻击族的最低投影来自不使用代换的线性模型,仍远高于 ePrint 2026/306 给出的 前馈投影。因此,先前的结果仍是成本更低、也更强的适用攻击模型。
论文在 上定义其构造,并在素域实例上报告半正则性实验。这里仅迁移代数构造,所有矩阵运算与秩检验都直接在实际的 GF(2^128) 中完成,四个复杂度表达式也重新计算。所得数字是压缩原语的原像模型工作量投影,不是 1022 位安全性,也不是具体的生产碰撞或有效树可达性见证。
为什么在二元域里选择 Poseidon2b
Parano1d 不是只优化一次证明生成。矿工为每个区块生成一份递归 HistoryStep,随后所有全节点都要验证它。新节点同步当前 State 时,也会经过同一条验证路径。这是一套“生成一次、处处验证”的网络。
Poseidon2b 的 Binius 参考基准展示了这种取舍。在 AMD Ryzen 9 7900X 上,表中的 Keccak-f 电路多线程证明更快,证明也更小;但 n=128, t=4 的 Poseidon2b 电路验证明显更快:
| 完整基准电路 | 证明大小 | 多线程证明 | 多线程验证 |
|---|---|---|---|
| Keccak-f | 438 KiB | 0.425 秒 | 46.59 毫秒 |
Poseidon2b,n=128, t=4 | 507 KiB | 0.564 秒 | 6.52 毫秒 |
这是同一 Binius 软件栈中两套完整电路实现的测量,不是“Poseidon2b 永远快于 Keccak”的定理。电路实现质量与算术化方式都包含在数字里。对于实际系统,这并非隐藏偏差,而是成本本身。
Parano1d 的工作负载也恰好适合四字状态。两个 256 位 Merkle 子节点装入四条 128 位通道,一次置换输出一个 256 位摘要。PCS 数值和 Fiat–Shamir 挑战本来就在 GF(2^128) 通道上,递归验证不必切换算术表示。
Keccak 仍然是二元证明系统中的真实备选。BLAKE2 的 ARX 加法需要额外表达进位,因此不占优势。最终选择依据不是品牌,而是某个确定运算在确定算术化下的完整代价。
让参数变化自动推翻旧审计
一份只写在文章里的审计很容易失效。可执行密码分析对照会先读取被钉住的生产参数,再计算两类真正适用的攻击模型。
检查项包括域宽、状态宽度、速率、摘要长度、S 盒、完整轮数、两层线性矩阵和 Merkle 压缩模式。审计还钉住了每篇已审论文的版本及其 PDF 哈希。任何一项发生变化,旧审计都会直接失败,不会继续把旧结论显示在新原语旁边。
推导见 Category 1 文档,另有逐篇论文的完整审查记录。对应的生产实现固定在同一源码版本。
本文的结论
我没有声称所有 Poseidon2b 参数都安全,也没有把 包装成安全等级,更没有声称不会再出现新的密码分析。
可检验的结论是:
截至目前公开的代数攻击,无法攻破这组精确的 Poseidon2b 实例。
参数、矩阵、工作模式、推导和代码全部公开。源码版本固定的公开研究任务接受更低成本的攻击、在生产输入路径中可达的碰撞或原像,以及论文与实现对应关系中的错误。
不要攻击一个算法族名称。
请攻击这个精确实例。
