摘要

本文把 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)
状态宽度t=4t=4
速率r=2r=2
容量c=2c=2
摘要2 个域元素,共 256 位
S 盒x7x^7
全轮RF=8R_F=8
部分轮RP=58R_P=58

矩阵同样属于安全参数。宽度为四时,二元 M4 就是完整的外部 MDS 线性层,并不是某个宽状态张量矩阵中的重复小块。内部线性层也由源码中的固定矩阵给出。

Merkle 节点采用二对一前馈压缩,而不是泛泛的海绵调用。设两个 256 位子节点为 a=(a0,a1)a=(a_0,a_1)b=(b0,b1)b=(b_0,b_1),置换输入为

x=(a0,a1,b0+IV0,b1+IV1),x=(a_0,a_1,b_0+\mathsf{IV}_0,b_1+\mathsf{IV}_1),

输出取 P(x)+xP(x)+x 的前两个域元素:

Tr2(P(x)+x).\operatorname{Tr}_2(P(x)+x).

固定的容量标签只是一次仿射平移。它不会把该构造变成另一张攻击表中的宽状态海绵。

Skipping Class 攻击覆盖了什么

Merz 与 Rodríguez García 在 ePrint 2026/306 中改进了 Poseidon2 和 Poseidon2b 的代数攻击。论文结果本身没有问题,问题通常出在脱离参数引用结论。

论文主体的跳轮方法利用宽状态外部矩阵的张量结构,并明确处理

t{12,16,20,24}.t\in\{12,16,20,24\}.

实际部署的 t=4t=4 不在其中。这里的 M4 已经是完整 MDS 层,宽状态方法所需的重复张量结构并不存在。

经常被单独转述的 21062^{106} 改进也属于另一组参数:

(n,t,c,d)=(32,24,8,8),RP=15.(n,t,c,d)=(32,24,8,8),\qquad R_P=15.

那是宽度 24、容量 8、15 个部分轮的二元海绵。把该数字贴到宽度 4、容量 2、58 个部分轮的前馈压缩上,没有密码分析意义。

真正命中的部分在附录 A

不能因为主体攻击不适用就停止阅读。附录 A 单独研究了采用 MDS 的二对一前馈压缩,这正是生产 Merkle 树使用的模式。

t=4t=4α=7\alpha=7 代入后,跳轮形式为

(1,[1]+[7]t/21)=(1,[1,7]).(1,[1]+[7]^{t/2-1})=(1,[1,7]).

再用摘要宽度 d=2d=2、跳过一个全轮且不跳过部分轮,定理 5.1 给出

dI7d(RFrF)+(RPrP)iδi=72(81)+587=773.\begin{aligned} d_I &\le 7^{d(R_F-r_F)+(R_P-r_P)}\prod_i\delta_i\\ &=7^{2(8-1)+58}\cdot7\\ &=7^{73}. \end{aligned}

按照论文采用的二次 Gröbner 基工作量投影 ω=2\omega=2,得到

log2(dI2)=409.873818620410\log_2(d_I^2)=409.873818620410\ldots
409.87 不是安全位数

它是由 ideal degree 上界推得的某一种经典代数攻击的描述性工作量。它不能排除其他攻击,也不能替代端到端 QROM 定理中关于固定 Poseidon2b 的独立前提。这里能够得到的结论只有一个:针对这组固定参数,该公开攻击没有给出低于 128 位目标的路径。

自适应选择矩阵,研究的是另一组实例

SlipwayMidpoint Reset 都是在轮常数已知后再选择 MDS 矩阵,从而构造一组弱参数。Slipway 让受约束的输入族经过开头的全轮后落入有限子空间轨迹;Midpoint Reset 则利用同一种自由度构造贯穿全部轮次的碰撞。

这对自行生成参数的人很重要。只检查矩阵是否满足 MDS 性质还不够,还必须确认矩阵的选择不依赖轮常数。

但它们没有攻击本文固定的生产实例。两层生产矩阵与完整轮常数表已经写入被钉住的置换,攻击者不能替换矩阵。Midpoint Reset 还要求奇特征素域,而生产实现使用 GF(2^128)。两篇论文都没有给出针对 Parano1d 固定矩阵的碰撞、见证或攻击成本。

状态宽度为四时,S 盒跳过法没有新增收益

From Round Skipping to S-Box Skipping 针对普通 Poseidon CICO-kk 模型提出广义子空间限制。它在部分轮层新增的跳过量为 t2kt-2k 个 S 盒。

与生产压缩的两条固定输出通道最接近但并不等同的情形是 CICO-2。代入宽度四后:

t2k=422=0.t-2k=4-2\cdot2=0.

此外,论文约束的是普通 CICO 输出,而不是带左输入前馈的输出方程。因此,它没有额外跳过任何部分轮,也没有为这套压缩给出更低成本。上文根据附录 A 得到的结果仍是适用的 round-skipping 计算。

非线性子空间确实适用于固定矩阵

Beyond Linear Subspace Trails 不能用“状态宽度不同”或“矩阵可自适应选择”来排除。它面向压缩模式的构造可以专门化到这组精确的生产几何。

摘要包含两个域元素,因此可用约束预算为:

Ec=td=42=2.E_c=t-d=4-2=2.

每个部分轮只有一个 S 盒处于活跃状态。线性子空间可以覆盖两个部分轮,新的非线性构造则可以覆盖四个。使用更长轨迹之前,论文要求对具体内部矩阵做秩检验。把生产内部矩阵分块为 A,B,C,DA,B,C,D 后得到:

Ne=BSCA11,S=DCA1B.N_e=BSC A^{-1}-1,\qquad S=D-CA^{-1}B.

在实际生产域中,这个 1×11\times1 核为:

Ne=0xbe320.N_e=\mathtt{0xbe32}\neq 0.

秩条件成立。四轮非线性轨迹确实存在于这组内部矩阵上,但它只覆盖 58 个部分轮中的 4 个。

随后,我用生产轮数配置与论文的 ω=2\omega=2 投影,计算了四种适用的 Macaulay 模型:

模型最佳位置变量数log2(C2)\log_2(C^2)
前向、代换、线性τ=28\tau=2861090.060133886114
前向、代换、非线性τ=27\tau=2781403.209025315336
前向、不代换、线性直接计算41022.830074998558
前向、不代换、非线性直接计算41022.830074998558

在宽度四的实例中,代换引入的额外变量比延长非线性轨迹所节省的成本更高。这个攻击族的最低投影来自不使用代换的线性模型,仍远高于 ePrint 2026/306 给出的 409.873818620410409.873818620410 前馈投影。因此,先前的结果仍是成本更低、也更强的适用攻击模型。

这是攻击模型的迁移,不是一次碰撞

论文在 FpF_p 上定义其构造,并在素域实例上报告半正则性实验。这里仅迁移代数构造,所有矩阵运算与秩检验都直接在实际的 GF(2^128) 中完成,四个复杂度表达式也重新计算。所得数字是压缩原语的原像模型工作量投影,不是 1022 位安全性,也不是具体的生产碰撞或有效树可达性见证。

为什么在二元域里选择 Poseidon2b

Parano1d 不是只优化一次证明生成。矿工为每个区块生成一份递归 HistoryStep,随后所有全节点都要验证它。新节点同步当前 State 时,也会经过同一条验证路径。这是一套“生成一次、处处验证”的网络。

Poseidon2b 的 Binius 参考基准展示了这种取舍。在 AMD Ryzen 9 7900X 上,表中的 Keccak-f 电路多线程证明更快,证明也更小;但 n=128, t=4 的 Poseidon2b 电路验证明显更快:

完整基准电路证明大小多线程证明多线程验证
Keccak-f438 KiB0.425 秒46.59 毫秒
Poseidon2b,n=128, t=4507 KiB0.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 参数都安全,也没有把 2409.872^{409.87} 包装成安全等级,更没有声称不会再出现新的密码分析。

可检验的结论是:

截至目前公开的代数攻击,无法攻破这组精确的 Poseidon2b 实例。

参数、矩阵、工作模式、推导和代码全部公开。源码版本固定的公开研究任务接受更低成本的攻击、在生产输入路径中可达的碰撞或原像,以及论文与实现对应关系中的错误。

不要攻击一个算法族名称。

请攻击这个精确实例。