本文悼念了密码学大师Claus Peter Schnorr,回顾了他的职业生涯和其在密码学领域的贡献,重点介绍了Schnorr签名和身份验证方案,以及他与DSA专利的争议。文章还提及了Schnorr签名在比特币交易中的应用以及他在零知识证明等领域的legacy。
我知道这有点迟了,但我对 Claus Peter Schnorr 的去世感到非常难过,他于 2025 年 6 月 8 日去世。自 1986 年以来,他一直是法兰克福大学计算机科学系的教授。2011 年,在大学工作 40 年后,他被授予荣誉教授职位。
总的来说,Claus 可以被认为是有史以来最伟大的密码学家之一, 并且无疑是最伟大的德国密码学家。就在 2021 年,他发表了一项研究工作,提出了一种突破性的 RSA 方法 [ here]。在一篇经典版本的论文中,他引用说:“这摧毁了 RSA 密码系统” [ here]:
当全世界屏住呼吸,以为 RSA 已经被破解时,这篇论文引起了极大的争议,最终得到了修正:
在他漫长的职业生涯中,他撰写了许多经典论文,包括 [ here][1]:
在这篇论文中,他定义了经典的 Schnorr 身份验证和签名方法。对于身份验证,我们有:
然后是 Schnorr 签名:
使用 Schnorr 身份识别,Peggy(证明者)具有(N,g,X)的证明公钥和(N,x)的证明私钥。N 是模运算的素数,x 是密钥,其中:
在注册密钥时,Peggy 生成一个随机值(y),然后计算 Y:
该值被发送给 Victor(验证者)。然后,Victor 生成一个随机值(c)并将其发送给 Peggy。这是对 Peggy 产生正确结果的挑战。然后,Peggy 计算:
然后,他将其发送给 Victor,以证明他知道 x。然后,Victor 计算两个值:
如果这些值相同(val 1≡ val 2),则 Peggy 已证明她知道 x。
其原理是:
在一个正式的定义中(取自这篇 论文)[2],该方法是 [ here]:
此签名版本现在称为 Schnorr 签名,并且是 EdDSA 签名方法的核心部分。
1989 年 2 月,Claus Schnorr 提交了一项专利,该专利未分配给任何人。它有 11 项权利要求,并允许合并多个签名者的数字签名 [ here]:
这种方法的最大优点是,我们可以让多个签名者对一条消息或交易进行签名,最终得到所有签名者的单个签名。它现在被用于比特币交易中,因此我们可以为一个涉及多个实体的交易提供有效的签名。
使用 Schnorr 签名,我们为消息(m)的哈希创建签名(R,s)。最初,Peggy(证明者)具有私钥 x,然后她的公钥为:
其中 G 是曲线上的基点。然后,她生成一个随机 nonce(r_t)用于消息签名并定义对此值的承诺:
接下来,对于一条消息(m),她使用以下哈希函数计算一个挑战(e):
接下来,Peggy 计算:
然后,Peggy 将 e、s 发送给 Victor(验证者)。然后,Victor 确定是否:
这些应该彼此相等。其原理是:
使用椭圆曲线方法的 Schnorr 方法在此处实现:
**Golang Schnorr**
当时,另一种竞争签名方法是由 David W. Kravitz(前 NSA 雇员)创建,并以免版税的方式分配给美国的 DSA 专利(No 5,231,668):
David 在美国国家安全局(NSA)工作了 11 年,目前是 Spring Labs 的高级研究主管 [ here]:
DSA 最初由 NIST 在 1991 年的数字签名标准(DSS)中概述。然后在 1994 年的 FIPS(联邦信息处理标准)186 中以及 2013 年的 FIPS 186–4 中对其进行了标准化。但是,在 FIPS 186–5 中,定义了 DSA 不应 用于生成签名,但可以用于签名验证。现在大多数方法都使用 RSA 或 ECDSA 签名。
ECDSA 方法基本上是 DSA 的扩展,但使用椭圆曲线(EC)方法实现。总的来说,ECSDA 在其计算和密钥大小方面效率更高。
与大多数公钥签名方法一样,在 DSA 中,我们获取消息的哈希值 – H(M) – 然后应用私钥来创建签名(r,s)。这是通过创建一个随机值(k)来生成签名来完成的。然后,使用关联的公钥验证签名。然后,验证签名的创建者,并且消息未被更改。
最初,Bob 创建两个素数(p 和 q)并生成一个生成器值 g。接下来,他生成他的私钥(x),然后计算他的公钥:
要为消息(M)创建签名,他创建一个随机值(k),然后计算签名的两个值:
当 Alice 收到此签名时,她会获取 Bob 的公钥(p,q,g,Y)和消息,并计算:
然后,她检查 v 是否等于 r。如果是这样,则该签名签出。其原理是:
使用离散对数的 DSA 方法在此处实现:
https://asecuritysite.com/powershell/dsa
关于 DSA 是否基于 Schnorr 专利一直存在争议。似乎 NIST 只是更改了足够的 DSA,使其成为免版税的专利。Schnorr 实际上将其专利权出售给了 Siemens 和 RSADSI,他们没有进一步处理 DSA 和 Schnorr 签名方法之间的专利侵权行为。Schnorr 专利现在已经过期,并且正在 ZKP(零知识证明)以及分布式和可扩展签名中实现。
如果 NIST 无法以无专利形式提供 DSA,那么 ECDSA 就不太可能被采用。ECDSA 的无专利使用可能使 Satoshi Nakamoto 能够采用 ECDSA,剩下的就是历史了。
我们失去这样一位伟大的思想家真是令人难过,但他的遗产在他的方法中得以延续:
**零知识证明**
和:
**EdDSA, Ed25519 and Ed448**
[1]. C. P. Schnorr. Efficient signature generation by smart cards(通过智能卡高效生成签名). Journal of Cryptology, 4(3):161–174, 1991. [ 论文]
[2] Bellare, M., & Palacio, A. (2002, August). GQ and Schnorr identification schemes: Proofs of security against impersonation under active and concurrent attacks(GQ 和 Schnorr 识别方案:在主动和并发攻击下防止冒充的安全证明). In Annual International Cryptology Conference (pp. 162–177). Springer, Berlin, Heidelberg. [ 论文]
- 原文链接: medium.com/asecuritysite...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!