Solana 上的 Secp256r1
什么是 Secp256r1
Secp256r1,也被称为 P-256 或 prime256v1,是由高效密码学标准组 (SECG) 定义并被 NIST 采纳为推荐椭圆曲线之一的椭圆曲线。
它是现代密码学应用中最广泛使用的椭圆曲线,支持从 TLS 连接到硬件安全密钥的各种应用。
该曲线通过 256 位密钥大小提供大约 128 位的安全强度,与 RSA 相比显著更高效,同时提供等效的安全性。
其数学特性结合广泛的硬件优化,使其成为椭圆曲线密码学的事实标准。
为什么它如此占主导地位?
Secp256r1 通过早期标准化、普遍的硬件支持和监管批准实现了主导地位。
与可能在数学上更优的新曲线不同,secp256r1 代表了密码强度、实现效率和生态系统兼容性之间的最佳平衡,这是现实世界系统所需的。
此外,其特定的数学结构允许高度优化的实现,从智能手机安全元件到高性能服务器都能高效运行。
它是如何工作的?
Secp256r1 定义了一条数学曲线,其形式为 y2 = x3 - 3x + b
。这形成了一个具有特殊数学特性的椭圆形状。该曲线上有且仅有 2256
个有效点,这是一个天文数字。
该曲线上的每个点由两个坐标 (x, y) 定义,其数学结构确保某些操作可以高效执行,而其他操作则在计算上难以实现。
生成密钥
该过程从选择一个在 1 和 2256 之间的加密安全随机数开始,这个随机数将成为您的私钥。
系统随后选择曲线上的一个预定起点,称为生成点,它作为一个所有人都认可的通用参考点。
通过一种称为标量乘法的特殊数学运算,您的私钥数字被用来从这个生成点“导航”到曲线上的一个新的、唯一的位置。
这个目标点成为您的公钥,可以安全地与任何需要验证您数字签名的人共享。
签名
当您想创建一个数字签名时,过程从将您的消息通过一个加密哈希函数(通常是 SHA-256)开始,该函数会生成一个固定大小的数字表示,作为您的消息内容的唯一指纹。
签名算法随后将此消息哈希值与您的私钥以及一个随机生成的数值(称为随机数 nonce)结合起来,生成两个数学值,传统上标记为 r
和 s
。这些值与您的私钥和特定的消息内容密切相关,创建了一个只有您才能生成的加密证明。
验证
验证过程展示了椭圆曲线密码学中优雅的不对称性。任何人都可以使用您的公钥、原始消息和签名值(r, s),并执行一系列数学运算,只有在签名由拥有相应私钥的人创建时,这些运算才会产生有效结果。
验证者会计算若干中间值,并在曲线上执行额外的标量乘法运算,最终得出一个点。如果签名是可信的,该点应符合签名的特定属性。
这一验证过程无需了解私钥,却能提供关于签名真实性的数学确定性。
Secp256r1 on Solana
Solana 通过其内置的预编译功能提供对 Secp256r1 签名验证的原生支持,该功能由 Orion 在 SIMD-0075 中引入。
这是在 Solana 上实现现代认证方法(如通行密钥)的关键一步,因为 Secp256r1 是 WebAuthn 和通行密钥实现所使用的相同椭圆曲线。有了这一支持,我们终于可以结合现代认证方法和 PDA 来管理用户操作。
Web3 认证挑战
Web3 对助记词的依赖构成了普及的根本障碍。传统钱包的注册流程因助记词导致 60-80% 的用户流失率。
问题在于助记词要求不完美的人类实现完美的安全性。用户必须记住 12-24 个随机单词,永远安全地存储它们,并且永不成为网络钓鱼的受害者;这对主流用户来说是一个不可能的标准。
解决方案可能是现代认证方法,例如通行密钥,它通过将私钥移入专用的安全硬件来消除人为错误。然而,要在 Solana 上支持这些方法,我们需要合适的密码学原语。