DSA 签名工具
数字签名算法(FIPS 186)
FIPS 186-5 弃用声明
根据 FIPS 186-5(2023年2月),DSA 签名生成功能已被弃用。仅签名验证功能被批准使用。新应用建议使用 ECDSA 或 Ed25519。
导入 DSA 密钥
粘贴您的 DSA 密钥(PEM 格式)。由于浏览器环境限制,本工具不支持生成 DSA 密钥。您可以使用 OpenSSL 生成密钥后在此导入。
使用 OpenSSL 生成密钥
# 生成 DSA 参数 openssl dsaparam -out dsaparam.pem 2048
# 生成私钥 openssl gendsa -out private.pem dsaparam.pem
# 导出公钥 openssl dsa -in private.pem -pubout -out public.pem
密钥验证成功
文档说明
DSA(数字签名算法)是 FIPS 186 中规定的联邦信息处理标准数字签名方案。最初于 1994 年发布,DSA 被广泛用于政府和商业系统中的数字签名应用。虽然正确实现时仍然安全,但 NIST 已在 FIPS 186-5(2023)中弃用了 DSA 的签名生成功能,推荐使用更高效的椭圆曲线算法。
FIPS 186-5 状态
截至 2023 年 2 月,NIST FIPS 186-5 不再批准将 DSA 用于数字签名生成。仅保留 DSA 签名验证功能用于验证过渡前创建的签名。对于需要数字签名的新应用,NIST 推荐使用 ECDSA(P-256、P-384、P-521)或 EdDSA(Ed25519、Ed448)。
核心特性
- 符合 FIPS 标准:符合 NIST FIPS 186-4 数字签名标准
- 多种参数:支持 (L, N) 组合 (2048, 256)、(3072, 256) 和旧版尺寸
- SHA-2 系列:兼容 SHA-1(仅用于旧系统)、SHA-224 和 SHA-256 哈希函数
- DER 编码:输出标准 ASN.1 DER 格式签名
- 浏览器本地运行:所有操作在浏览器本地运行,使用 jsrsasign 库
支持的参数
- (2048, 256):推荐参数集。L=2048 位素数模,N=256 位素数因子。提供 112 位安全级别。
- (3072, 256):高安全性参数集。L=3072 位素数模,提供 128 位安全级别。速度较慢但更具前瞻性。
- (1024, 160):旧版参数集。仅用于与现有系统兼容。不建议用于新应用。
- (2048, 224):备选参数集,N=224 位因子。较少使用但仍然安全。
哈希算法
- SHA-256:DSA 的推荐哈希函数。提供 128 位抗碰撞能力,适用于 (2048, 256) 参数。
- SHA-224:备选哈希函数,提供 112 位抗碰撞能力。适用于标准安全要求。
- 注意:由于 jsrsasign 库限制,本工具不支持 SHA-384 和 SHA-512。
- SHA-1:已知存在弱点的旧版哈希函数。仅用于验证旧签名,切勿用于新签名。
安全注意事项
- 建议迁移:NIST 建议将新签名应用从 DSA 迁移到 ECDSA 或 EdDSA。
- 随机数质量:DSA 安全性严重依赖签名过程中的高质量随机数。糟糕的随机性可能暴露私钥。
- 私钥保护:永远不要暴露或分享您的私钥。敏感应用请考虑使用硬件安全模块(HSM)。
- 参数验证:使用前务必验证 DSA 参数(p、q、g),以防止使用恶意构造的参数进行攻击。
- 本地处理:本工具完全在浏览器中运行,您的密钥永远不会离开您的设备。
DSA 与现代签名方案对比
| 特性 | DSA (2048, 256) | ECDSA (P-256) | Ed25519 |
|---|---|---|---|
| 私钥大小 | 约 256 位 | 256 位 | 256 位 |
| 公钥大小 | 约 2048 位 | 512 位 | 256 位 |
| 签名大小 | 约 512 位 | 512 位 | 512 位 |
| 安全级别 | 112 位 | 128 位 | 128 位 |
| FIPS 186-5 状态 | 已弃用 | 已批准 | 已批准 |