“哈希到曲线将输出对象换为合法曲线点:先扩展为域元素,再经确定映射与点加法完成P256编码。它与点反序列化的输入域不同;输出满足曲线方程也不足以证明适用于理想群随机预言机,还须检查域分离、映射…”
形式陈述
哈希到曲线把字节串 P256_XMD:SHA-256_SSWU_RO_ 套件,并用完整的坐标计算复现其公开向量。[1]
固定坐标域和目标群
坐标在有限域
5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b
P256整个点群的阶为素数
q = ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551
这里
接口 hash_curve(m,DST) 接受字节串和非空、至多255字节的用途标签DST,返回点
第一步:得到两个域元素
取
数字前缀均为定长大端字节,00/01指一个字节。把 hash_to_field(m,2);它还没有产生曲线点。
第二步:把一个域元素映成点
固定
- 若
,取 - 若
,改取 ,不对零求逆 - 令
;若 是平方,选 ,否则选 - 取平方根
,再在 中选择整数代表奇偶性与 相同者
由于
最后分别计算
点加法沿用曲线群公式,包含两点互为逆元时输出
直觉
直接把哈希字节当作横坐标,未必能找到纵坐标,因为
两次映射再相加承担另一项责任:单个映射的像和原像数通常不均匀,点“在曲线上”只证明代数合法。让整条构造适用于理想群随机预言机,需要额外的分布与模拟论证。RFC称之为indifferentiability,即相对理想随机预言机的不可区分模拟性质;它不是微积分中的可微性。[1,2]
例子与边界
从空串走到一个规范压缩点
采用RFC9380 Appendix J.1.1的标签
QUUX-V01-CS02-with-P256_XMD:SHA-256_SSWU_RO_
空消息产生的两个域元素为
u0 = ad5342c66a6dd0ff080df1da0ea1c04b96e0330dd89406465eeba11582515009
u1 = 8c0f1d43204bd6f6ea70ae8013070a1518b43873bcd850aafa0a9e220e2eea5a
两次映射点和最终点的压缩编码为
Q0 = 03ab640a12220d3ff283510ff3f4b1953d09fad35795140b1c5d64f313967934d5
Q1 = 0251cce63c50d972a6e51c61334f0f4875c9ac1cd2d3238412f84e31da7d980ef5
P = 032c15230b26dbc6fc9a37051158c95b79656e17a1a920b11394ca91c44247d3e4
编码的首字节 02/03 表示纵坐标偶/奇,余下32字节是横坐标;它不是对点再次做哈希。把消息换为ASCII的 abc,最终压缩点为
020bb8b87485551aa43ed54f009230450b492fead5f1cc91658775dac4a3388a0f
参考程序同时打印两份域元素、两份映射点与最终点。逐层比较能区分“扩展字节错”“模数错”“符号错”和“点加法错”,而不仅看到最终摘要不同。
零输入也需要合法输出
SSWU的 if u == 0 会漏掉这两种输入。程序直接检查分母,并用这三个值作回归。
哈希到域的384位整数按
另一个有害替代是先公开算标量
推论与应用
两个候选为何至少有一个可开平方
在非例外分支,
最后一步恰好使用
48字节控制的是什么偏差
暂把一段48字节视为均匀整数
这解释为什么不只取256位再约简。此计算的前提是扩展字节均匀;现实SHA-256是固定确定函数,不能把这项理想分布计算当作其无条件安全证明。完整哈希到曲线的模拟性质按RFC的哈希模型和映射条件使用,点加法闭包证明也不能替代它。
执行代价和终点任务
固定P256时,扩展96字节调用4次SHA-256,其中第一次读取整个消息;两次映射各用常数次模逆和模幂,再做一次点加法。若消息有
终点任务:复算空串的三个压缩点;把DST换成另一非空标签并报告两个新域元素;找到
参考资料
- Armando Faz-Hernandez等,RFC9380: Hashing to Elliptic Curves,2023-08,§§2.2.3–3、5.2–5.3.1、6.6.2、8.2、10.1及Appendix J.1.1:编码与反序列化、P256套件、异常值和公开向量。
- Éric Brier等,Efficient Indifferentiable Hashing into Ordinary Elliptic Curves,CRYPTO2010扩展版,§7 Proposition7,PDF pp.15–16:消去三次项得到两个相关候选;RFC所用Z及符号约定以[1]为准。