
# 先说两条结论
1. 360的实现是基于国家标准的,没有夹带自己的私货。标准化对国家是好事情,对用户是好事情,对技术人员是天大的好事情。再难看、简陋的标准,也强过没有标准。
2. 这是一件三观正确的事情,虽然360的实现不尽完备,政府推动的因素也不可忽略。但把技术力量用在这上面,总强过去和各种全家桶撕逼。
# 什么是360浏览器国密专版
* 简而言之,就是使用国家商用密码算法和国家商用密码协议的版本。
为什么我国要有自己的密码算法?这个问题不在此展开回答了,密码技术对国家的重要性可以参考二战时期英美和德国的密码对抗。
目前我国公开发布的主要商用密码算法如下(SM也即拼音“商密”):
- SM2:256位的椭圆曲线算法,包括密钥生成,签名,密钥交换和公钥加密四种算法
- SM3:摘要算法,输出长度32字节(与SHA-256同样长度)
- SM4:分组长度为16字节的对称加密算法
而目前我国发布的商用密码协议很多,360实现的协议特指GM/T 0024-2014 《SSLVPN技术规范》。这个协议与国际上SSL/TLS位于同一层次,是HTTPS的基础。而HTTPS可以说是整个互联网的安全根基,无数的终端、服务器环境与之息息相关。
《SSLVPN技术规范》与TLS/SSL的主要区别如下:
1. 使用了独立的版本号(目前是01 01),不再遵从SSL/TLS的版本规则
2. 定义了独立的算法套件(12个)
3. 可以使用SM2的密钥交换和公钥加密这两种算法来完成密钥协商,这两者在TLS协议和美标ECC算法中都找不到对应。
4. P_HASH算法基于SM3
5. 使用中国特色的双证书体系(不做评价,这里有一篇比较详细介绍的PPT
)
360就是基于以上算法和协议规范来实现其国密专版的,这些标准和规范均已公开。
# 360国密专版的功能如何
笔者对该版本进行了简单的测试和抓包分析,小结如下:
## 功能
* 70分: 具备标准的国密协议和算法实现。
测试中一些记录如下:
1. 在输入带https的URL后,浏览器会发起预访问,先逐次尝试TLS 1.2/1.1/1.0和SSL 3.0,如果服务端都返回wrong version,则使用国密协议;而如果服务端对TLS/SSL协议正常返回ServerHello,则不再发起国密协议的ClientHello。
2. ClientHello中声明的算法组合只有ECC-SM4-SM3(E0 13),此组合在协议中对应的算法如下:
- 身份认证:SM2签名算法
- 密钥交换:SM2公钥加密算法
- 对称加密:SM4对称加密算法
- HMAC摘要计算:SM3摘要算法
- P_HASH计算:SM3摘要算法
3. 对服务端证书未做CRL或OCSP校验(抓包时未发现浏览器有下载CRL或OCSP访问的动作)
4. 具备SSL Session重用功能——页面刷新时,会使用原先的SSL Session进行连接。
## 性能
* 50分:还有待改进
1. 在XP和Windows 7上,性能表现都不佳,64M的文件下载要接近1分钟,推算出的性能大约是8Mbps。而此时360se.exe进程已经把单个CPU核心用满。
2. 测试中发现360对于一个网站只有一个SSL连接,多个页面的访问是串行的,如果某个在下载的资源较大,那就无法并行处理其他资源。
# 如何评价这个版本
首先,360这个版本的确是基于国家标准来实现的,就这一点而言要给100个赞。虽然从目前提供的功能和表现来看,还不尽如人意,但相信很快会有后续的改进版本(据知情人士称这个项目1年前就启动了,从时间成本上来说,管理层一定是下了决心的)
360发布这个版本之后,接下来首先影响到的是政府和金融行业。从笔者了解到的客户情况来看,这可以直接加速整个行业的标准化进程——国内大大小小有资质的CA平台,这些年基本上都升级到支持国产算法的版本了,但没有浏览器的支持,这些CA发出的SM2证书就没法真正落地。各大银行的网银证书数量早已过千万,但使用SM2算法的寥寥无几。为了推进国产算法的证书,CFCA之前都自己攒了一把浏览器但也没推广开。而现在有360了,并且是基于国家行业标准的实现,各大银行和政务网站搭建基于国产算法的安全Web服务的最大障碍扫清了。
除此之外,国内大小SSL产品厂商将面临一次洗牌:踏实做事的厂商终于可以在市场上来证明自己的价值,偷换概念打插边球的厂商也无法再滥竽充数了。从这点上来说,360的发布对安全行业是一次明确的推动。
# 对后续版本的一些期待
目前的版本是一个基本及格的版本,如果360真有野心,笔者觉得后续可以做的工作还很多:
首先,360可以借助这个版本,建立一套网上银行安全的标准,包括SSL,网站可信检测,安全密码输入控件,基于数字证书的U盾环境等。把现有网上银行涉及到的多种技术和算法,用更统一的模式进行封装,真正体现出与通用浏览器的差异。
其次,在Android端,我觉得360可以为各网银APP提供国产算法的SSL引擎,同时推动一下360手机版。
再走远一点,360可以同步打造对应的支持国产算法的云端环境——在提供服务器虚拟化的同时,还提供支持国密协议的SSL服务。
最后,在纯技术层面,我认为360还可以做的改进如下:
1. 优化SM3/SM4算法的性能,这部分的上升空间还是很大的。
2. 支持SM2密钥交换(而不仅仅是现在的SM2公钥加密),实现Perfect Forward Secrecy(
)。
3. 实现CRL和OCSP校验,对服务端证书进行更严格的校验。
4. 优化国密协议的IO模型,避免单个连接阻塞整个页面访问。
# 其他
360开发国密版浏览器的项目,从去年知道消息到昨天正式发布,差不多经历了1年多的时间,笔者的公司间接参与了一部分技术调试工作。
密码行业是信息安全中的一个细分行业,在涉及到自主算法的技术层面上,长期缺乏互联网厂商的参与。360这次入局,会将更多的密码技术直接部署到普通用户的终端上,这对密码技术的基础环境是一个有力的推动,希望他们将这部分实现带到更多的平台上。也希望其他浏览器厂商能更技术化地看待此次事件,一个基于标准的实现不是门槛。
