360发布首款支持国密算法的浏览器对网络安全有哪些影响?

360发布首款支持国密算法的浏览器对网络安全有哪些影响?

# 先说两条结论

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这次入局,会将更多的密码技术直接部署到普通用户的终端上,这对密码技术的基础环境是一个有力的推动,希望他们将这部分实现带到更多的平台上。也希望其他浏览器厂商能更技术化地看待此次事件,一个基于标准的实现不是门槛。