Understanding ECDSA
5 months ago
- #ECDSA
- #Cryptography
- #Ethereum
- ECDSA(椭圆曲线数字签名算法)被以太坊区块链用于消息签名。
- 本文重点从安全性角度讲解ECDSA,包括签名可塑性攻击。
- 学习前提包括公钥密码学基础知识和基础数学,无需抽象代数背景。
- 文章采用建设性、启发性和朴素易懂的写作风格,鼓励批判性思维与参与。
- 模数运算是ECDSA的基础,其中模p加法和乘法运算是关键。
- 扩展欧几里得算法(EEA)用于高效计算模p下的乘法逆元。
- 斐波那契数列与EEA的时间复杂度相关,其增长速度与黄金比例呈指数关系。
- secp256k1是以太坊使用的椭圆曲线,其方程为y² = x³ + 7 mod p,其中p为大质数。
- 椭圆曲线上的点构成群结构,群运算中包含无穷远点的定义。
- 文章详述了椭圆曲线上点的加法运算,包括连续域和模p两种情况。
- 引入射影空间概念以处理无穷远点并简化计算。
- ECDSA私钥是ℤₙ范围内的数字,公钥通过私钥与生成点G相乘推导得出。
- 消息签名过程需生成随机数k,计算R=kG,并导出签名分量r和s。
- 签名验证需从签名中恢复R点,并校验其与消息哈希及公钥的匹配性。
- 签名可塑性攻击允许攻击者从合法签名(r,s,v)构造出(r, n-s, 1-v)变体,可绕过黑名单机制。