数字签名技术已经广泛使用于网络安全协议或分布式系统中,目前比较流行的数字签名算法有RSA和ECDSA。很多同学在产品设计中往往都难以区分RSA和ECDSA的优劣,所以笔者将基于自己的实践,来给出一些初步的建议。
1. 密码强度比较
Symmetric | ECC | RSA |
96 | 192 | 1536 |
112 | 224 | 2048 |
128 | 256 | 3072 |
192 | 384 | 7680 |
256 | 521 | 15360 |
这是学术界普遍认可的密码强度对照表。比如,7680-bit的RSA密码强度,大约相当于384-bit的ECC密码强度,大约相当于192-bit的对称密码算法的强度。换句话说,攻击分组加密算法AES-192的难度,与攻击数字签名算法ECDSA-384、RSA-7680的难度相当。
2. 性能比较
笔者基于开源的tommathlib实现了ECDSA(符合ANSI X9.62标准)和RSA签名算法(符合PKCS#1 v2.1, e=65537)。