HSM KitHSM 工具箱
中文

ECC 与 ECDSA:椭圆曲线密码学详解

加密# ECC# ECDSA# ECDH# 数字签名
最后更新: 2026年4月3日4 分钟阅读By HSM Kit Team
现在需要计算吗?
使用我们免费的在线 ECC 工具 工具。

椭圆曲线密码学(ECC)以更小的密钥提供比 RSA 更强的安全性。它驱动着现代 TLS、比特币和大多数移动认证系统。本文解释 ECC 的核心概念和实践用法。

什么是 ECC?

ECC 是一种基于有限域上椭圆曲线代数结构的非对称密码学。其安全性依赖于椭圆曲线离散对数问题(ECDLP)——给定曲线上的点 Q = k·G,找到 k 在计算上不可行。

为什么选择 ECC 而非 RSA?

属性RSA-2048ECC-256ECC-384
安全位数~112~128~192
密钥大小2048 位256 位384 位
签名大小256 字节64 字节96 字节
密钥生成~100ms~1ms~2ms
签名/验证较慢快得多
TLS 握手较慢更快

安全性相当的情况下,ECC 密钥比 RSA 密钥小 10 倍

常用椭圆曲线

P-256(secp256r1 / prime256v1)

  • NIST 标准曲线
  • 用于 TLS、JWT(ES256)、Android、iOS
  • 128 位安全
  • 兼容性最广

P-384(secp384r1)

  • NIST 标准曲线
  • 用于政府/高安全性应用
  • 192 位安全

secp256k1

  • 比特币使用的曲线
  • 用于以太坊、大多数加密货币
  • 非 NIST 曲线,但在区块链中广泛使用

Curve25519 / Ed25519

  • 现代高度优化的曲线
  • 设计上避免了实现陷阱
  • 用于 SSH、Signal、WireGuard
  • 新系统推荐(在兼容性允许的情况下)

ECDSA——椭圆曲线数字签名算法

ECDSA 是最常见的基于 ECC 的签名方案。

ECDSA 签名过程

  1. 生成随机 Nonce k
  2. 计算点 R = k·G,取 x 坐标为 r
  3. 计算 s = k⁻¹(hash(消息) + r·私钥) mod n
  4. 签名 = (r, s)

ECDSA 验证过程

  1. 计算 u1 = hash(消息) · s⁻¹ mod n
  2. 计算 u2 = r · s⁻¹ mod n
  3. 计算点 X = u1·G + u2·公钥
  4. 验证 X.x ≡ r (mod n)

关键警告:Nonce 重用是灾难性的

如果两个不同签名使用了相同的 Nonce k,私钥可以被数学推导出来。PlayStation 3 在 2010 年就是这样被破解的。

每次签名都必须使用密码学安全的随机 Nonce。

ECDH——椭圆曲线 Diffie-Hellman

ECDH 用于密钥协商——双方在不传输密钥的情况下推导出共享密钥。

ECDH 工作原理

  1. Alice 有私钥 a,公钥 A = a·G
  2. Bob 有私钥 b,公钥 B = b·G
  3. Alice 计算:S = a·B = a·b·G
  4. Bob 计算:S = b·A = b·a·G
  5. 双方得到相同的共享密钥 S

该共享密钥随后用于派生 AES 密钥进行对称加密。

ECC 在支付安全中的应用

ECC 在支付系统中的应用日益广泛:

  • EMV 芯片卡:ECDSA 用于卡片认证
  • VISA 证书:基于 ECDSA 的证书链 —— 参见 VISA 证书工具
  • SSL/TLS:支付网关中 ECDHE 用于密钥交换 —— 参见 SSL 证书解析器

ECC 与 RSA:如何选择

选择 ECC 的场景:

  • 构建新系统
  • 性能敏感(移动端、IoT、高并发)
  • 密钥/签名大小重要(带宽、存储)
  • 现代 TLS(ECDHE 密码套件)

坚持使用 RSA 的场景:

  • 需要兼容遗留系统
  • 与旧硬件 HSM 互操作
  • 法规要求指定使用 RSA

在线工具

使用我们的 ECC 加密工具

  • 生成 ECC 密钥对(P-256、P-384、P-521、secp256k1)
  • 使用 ECDSA 签名消息
  • 验证 ECDSA 签名
  • 执行 ECDH 密钥协商
  • 以 PEM/DER 格式导出密钥

如需检查证书中的 ECC 密钥,使用 ASN.1 解析器SSL 证书解析器

相关工具
ECC 工具