SSL密钥交换与性能优化

为强化SSL的密钥交换,我们或会考虑使用4096位的RSA证书、384位的EC(DSA)证书和384位的ECDH密钥交换;但性能需要被考虑进其中。

以下一组数据使用openssl speed命令在我的VPS上测出。

                  sign    verify    sign/s verify/s
rsa 2048 bits 0.001924s 0.000065s    519.7  15327.8
rsa 4096 bits 0.013287s 0.000205s     75.3   4867.0
 
                             sign    verify    sign/s verify/s
256 bit ecdsa (nistp256)   0.0001s   0.0002s  11360.3   4645.4
384 bit ecdsa (nistp384)   0.0004s   0.0015s   2715.1    666.2
 
                             op      op/s
256 bit ecdh (nistp256)   0.0002s   6527.8
384 bit ecdh (nistp384)   0.0013s    789.4

其中可看出,强化密钥交换后的配置性能大大降低,有时甚至达一个数量级。而现在认为,RSA-2048与的EC-256*1(包含用于签名的ECDSA和用于密钥交换的ECDH,下同)已经足够安全,没必要使用RSA-4096与EC-384*1

但对于个人网站(的并发访问量),即便是用RSA-4096与EC-384,也不至对服务器的性能需求增高。

综上,更需要安全性可以考虑强化密钥交换。但许多证书链中的CA证书都是RSA-2048或EC-256,域名证书使用RSA-4096或EC-384似乎并无意义.*2


*1.EC-256等效于RSA-3072;EC-384等效于RSA-7680
*2.如CA证书私钥被暴力破解,攻击者可以用于(未经授权地)签发任何域名的证书.因而,安全性高于CA证书的域名证书『似乎并无意义』