首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Ed25519中,为什么不让批验证和未批验证都遵循核因素验证方法而不是使用无因素的批处理?

在Ed25519中,为什么不让批验证和未批验证都遵循核因素验证方法而不是使用无因素的批处理?
EN

Cryptography用户
提问于 2022-09-13 11:07:05
回答 1查看 149关注 0票数 2

Ed25519在主群的素数阶子群中使用了一个复合阶椭圆曲线(带有辅助因子8)。签名操作应该使用来自素数级子群的生成器/基点。

有一些参数

曲线的阶是8.q,其中q是一个大素数。

a =标量/pvt密钥

B =基点,素数阶子群的生成元

A = a.B =公钥/verification密钥

在签名过程中,确定地生成一个秘密的r

那么,R = rB

k = Hash(R + A + M) \bmod q
s = r + ka \bmod q

\lbrace R, s \rbrace作为签名输出。

然而,验证过程依赖于一个检查,这在批验证和未批验证之间是不同的。

根据这个博客

批处理验证使用了一个核心因素公式。

[8]R = [8] ([s]B−[k]A)

Unbatched使用无cofactorless公式

R=([s]B−[k]A)

最初的博客解释了为什么批验证将验证,即使您使用非扭转安全的协因数清除,而未批处理将验证只有当您使用扭转安全的辅助因素清除。

这个来自CryptoSE的问答解释了差异&为什么cofactored更好。

这个预印还说

我们认为,只有单次和批处理的协因数检验是相互兼容的。其他组合(无因子单和无cofactored批处理;cofactored signle与cofactored批处理;cofactored-single和cofactored批处理)都是不兼容的。

我可以理解批验证和未批验证之间的其他区别(可以进行批处理优化)。然而,为什么两个批处理和未批处理都不使用核因素验证?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2022-09-13 12:01:48

考虑一下未批处理的无代码验证R\overset{?}{=} sB-kA,用于签名(R,s)

有7个不同的小扭转点,可以添加到R,以使它走出素数阶子群。(它是7,而不是8,因为第八点是无穷远点,在素数阶子群中)。

无论使用的是k值还是s值,都不可能通过无因素的单独验证。

然而,根据在执行无代码批处理验证时使用的随机标量的选择,批处理验证有时会通过,有时会失败,当批处理中至少有一个签名的点不在素数级子群中时。

因此,我们必须作出选择。我们是否应该:

  1. 允许不一致的批验证结果,以及由此产生的混乱?
  2. 防止不一致的批验证结果与协因子相乘,强制所有点进入素数阶子群。

备选案文2最有意义。它提供了一致性。您可能会争辩说,这是以成功验证签名为代价的,而这些签名不会使用无cofactorless的单独验证进行验证。然而,这种情况并没有看上去那么可怕。这并不是说不属于素数级子群的带有R值的签名是伪造的。只是它已经被调整了,所以它不会单独验证。它仍然是私钥a知识的充分的零知识证明.

正如您所链接的文件所解释的,个人验证最初是以无因素形式实现的原因:

伯恩斯坦等人的原始论文。并没有乘以8,这就是所谓的无因素验证。几乎所有的密码库都使用无因素版本来使验证速度更快。

无因子验证消除了点的标量乘8的需要,因此,如果您知道永远不需要执行任何批处理验证,那么就有意义了。

票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/101873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档