可能有读者不知道本文标题的ECC是什么意思,但是RSA大家应该都非常熟悉了,是一种采用大素数的密码算法,目前大家用的各种数字证书基本上都是RSA算法证书,大家用浏览器上网看到的SSL证书基本上都是RSA SSL证书。而ECC则是另外一种密码算法,是一种采用椭圆曲线的密码算法,我国商用密码SM2也是一种采用椭圆曲线的密码算法,只是采用了不同的曲线实现密码算法。
大家都知道,为了保证RSA算法的密钥安全,密钥长度一直在不断增加,从512位增加到1024位,现在的用户证书必须是2048位,中级根证书则是3072位,顶级根证书则必须是4096位了,位数越来越长,对服务器CPU和内存及网络带宽的要求也就越来越高,这就是为何大家的电脑硬件需要不断的升级的原因之一。这对于当下移动互联网普及的时代,对手机终端的要求更是一个大问题,为了实现RSA SSL证书的https加密需要消耗不少CPU和内存,当然也就需要消耗不少电量,大家手机的电量上网时间太长的话,耗电非常快,电池一下子就没电了,这是原因之一,因为所有常用的网站都已经部署了SSL证书实现https加密来保证用户数据的加密传输。
而采用ECC算法的SSL证书要求的是256位,密钥长度只有RSA的2048位的八分之一,如下左图所示,网站部署绑定一个域名的RSA SSL证书时,浏览器需要下载中级根证书和用户证书的大小为4.24K(电脑显示为3K+3K)。如下右图所示,网站部署绑定一个域名的ECC SSL证书时,浏览器需要下载中级根证书和用户证书的大小为2.74K(电脑显示为2K+2K),也就是说,采用ECC SSL证书实现每次SSL证书的握手能节省1.5K带宽,对于一个日访问量高达1000万次的网站,是可以节省不少带宽费用的。如:目前阿里云用的SSL证书绑定了218个域名,加上中级根证书合计文件大小为9.93K,比ECC SSL单域证书大7.19K,按日访问量1000万次计算,大概一年要多花20万元带宽费用。
节省带宽费用可能对财大气粗的互联网巨头是小事,但是,让我们再看看赛门铁克(Symantec)做的专题研究,如下图所示,Apache服务器部署256位的ECC SSL证书和部署同等加密强度的3072位RSA SSL证书,Web服务器对ECC算法的响应速度是RSA的18倍!也就是说,用户访问一个部署了ECC SSL证书的网站只需要1秒,而访问一个部署了RSA SSL证书的网站需要18秒!这个数据对于需要追求极致用户体验的互联网巨头们应该是一个比较震撼的数据吧,实验用的Apache和IIS服务器软件,现在流行用Nginx服务器软件,估计性能差距更大。
ECC算法由于密钥更短,不仅能改进用户体验,还能降低用户手机的CPU能耗和流量,并且能降低网站服务器的CPU和内存资源,还能节省带宽费用,并且还能全面支持完美全向加密(PSF),具有更好的抗攻击能力。正因为ECC算法有这么多优秀特点,各大互联网巨头如内容分发服务巨头CloudFlare官网和其用户都是部署ECC SSL证书,如下左图所示;谷歌官网和油管(Youtube)等网站也都是部署ECC SSL证书,如下右图所示。
这些大流量的网站都已经部署使用了ECC SSL证书,这应该能打消有些用户对ECC算法是否得到广泛的系统和设备支持的怀疑。简单地说吧,只有早就不存在或者不再使用的操作系统Windows XP和iPhone 4才不支持ECC算法,其他所有系统和设备都支持。
OK,既然ECC SSL证书这么好,哪家CA能签发ECC SSL证书,就本人所知,Sectigo和DigiCert是支持的。细心的读者一定能看出上面的第二张截图的举例证书的三级证书链都是ECC算法,这是零信技术定制的ECC中级根证书,用于为证签技术和零信技术的用户签发ECC算法的DV SSL证书、OV SSL证书和EV SSL证书,证书链如下图所示,这是一个三级证书都采用ECC算法的完整ECC SSL证书链,上面的Cloudflare官网只是中级根和用户证书是ECC算法,顶级根证书不是ECC算法;而谷歌网站的ECC SSL证书则只是用户证书是ECC算法,中级根证书和顶级根证书都还是RSA算法。
Sectigo是全球唯一一家拥有两个最老的ECC算法顶级根证书的CA,一个是2008年的,一个是2010年的,我们选择从2010年的顶级根证书定制ECC中级根证书,是因为不太喜欢用Comodo的老品牌,因为2010年的根证书已经有12年,已经够老了,如果还有更老的设备不信任这个根证书的话,Sectigo也提供了一个更老的2004年的根证书AAA Certificate Services的交叉签名证书。
总之,为了提升网站访问用户的浏览体验,为了降低网站服务器的CPU、内存和带宽的消耗,是时候为网站启用ECC SSL证书了,特别是大流量的网站。