如何评价 Chrome Android 不再选用 ChaCha20 作为首选算法

使用Chrome,且经常访问谷歌的人可能会发现(虽然,在天朝,这个世界上largest的网站已经被伟大的河(G)蟹(F)墙(W)吞噬了),不知从何时起,谷歌开始采用一种叫做CHACHA20-POLY1305的加密方法。不论是从名称长度上,还是从这个名字给人的感觉上,就是和其它加密方法不一样。上面的让人觉得高大上什么的都是扯淡。那么这东西到底有什么好处呢?(CHACHA20-POLY1305好处都有啥?谁说对了就给他。CHACHA20,CHACHA20,性能好;HTTPS掺了CHACHA20,不流失,不蒸发,刷新两次都不卡。以上扯淡请无视。。。)采用CHACHA20-POLY1305的主要原因是因为它性能超级好,特别是在ARM平台上。因为ARM的CPU是精简指令集,没有AES硬件加速,所以美国国防部的那套AES再加上ECDHE什么的在烂一点的安卓手机上性能表现就是一坨。而谷歌的解决方案就是CHACHA20,它在同配置的手机上的性能表现是AES的四倍。(如下图)下面就开始实现这一高大上的加密方法吧!0、准备:由于本文并不包括一个Nginx/Apache的安装教程,所以,在开始之前,你应该已经编译安装过服务器软件!!系统:Ubuntu14.04LTSx86_64(其余系统请自己测试)服务器软件:Nginx1.6.0+/Apache2.2+加密库:libssl-dev的apt-get最新版(用于自动安装libressl的依赖)网站:具有可信的认证证书,并已启用SSL加密。1、编译加密库:使用LibreSSL来代替OpenSSL处理HTTPS加密wgethttp,//ftp,openbsd,org/pub/OpenBSD/LibreSSL/libressl-2.1.2.tar.gztarzxvflibressl-2.1.2.tar.gzcdlibressl-2.1.2/./configure--prefix=/usrLDFLAGS=-lrtmakeQ:加密库为什么是LibreSSL,不是OpenSSL?A:OpenSSL还未在生产环境版本中支持CHACHA20-POLY1305,仅在一个aead的开发分支中进行了提供,不适合用来直接使用。Q:为什么make完了不install?A:因为那会把原来的OpenSSL给换掉,其他软件出问题你就活该倒霉了。2、处理加密库,使之与Nginx/Apache相适应:请在上一步的目录内操作mkdir-p.openssl/libcpcrypto/.libs/libcrypto.assl/.libs/libssl.a.openssl/libcd.openssl&&ln-s../include./cdlib&&strip-glibssl.a&&strip-glibcrypto.acd../../../3、配置Nginx/Apache:1°Nginx:(1)输入nginx-V查看当前Nginx的版本和编译参数。(2)准备Nginx源代码wget-clibressl-2.1.2}--with-ld-opt="-lrt"(4)更新文件时间,防止被Nginx重新编译touch{LibreSSL-2.1.1目录的绝对路径,如:/root/libressl-2.1.2}/.openssl/include/openssl/ssl.h(5)编译并安装makemakeupgrade(6)配置CHACHA20-PLOY1305打开一个你已经配置了SSL的网站的配置文件,在其中加入,或修改原有相应配置为:ssl_protocolsTLSv1TLSv1.1TLSv1.2;ssl_ciphersCHACHA20:AES128:AES256:GCM:!DH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;add_headerStrict-Transport-Securitymax-age=31536000;ssl_prefer_server_cipherson;(7)重启Nginx(具体操作依服务器配置而定,不行直接reboot)2°Apache:目前阶段下,单独采用Apache会使得mod_ssl出错,无法启动任何基于ssl的网站。所以只有采用Nginx对Apache进行反向代理的方式才可能达到目的。