W3C

Web 中文兴趣组会议

2022年9月6日

题目:GM/T 0020 标准解读以及浏览器国密应用场景

讲者:张志磊(360)[演示文稿]

现场纪要

张志磊:

大家好,我是来自360浏览器的张志磊,今天分享的是GM/T 0020 标准解读以及浏览器国密应用场景。

今天将从三个方面进行分享:第一,GM/T 0020介绍。首先介绍一下GM/T0020标准。它在2012年发布第一版,全称是《证书应用综合服务接口规范》,定义了客户端的服务接口和服务器的服务接口。19~20年迎来了修订,加入了JavaScript形式描述的客户端脚本接口。此外,还有个国标的版本在制定中,名称是《信息安全技术 证书应用综合服务接口规范》。到目前为止,两个版本都由北京CA同步进行,内容上基本保持一致,目前都是在征求意见稿的阶段。

下面我来介绍一下这个浏览器正确使用密码算法的大背景。业务系统在开发和使用的过程中,需要遵守一些法律法规。首先是《网络安全法》的第21条,国家实行网络安全的等保制度。然后是《密码法》,密码法会要求一些应用系统进行密评。

然后是密评标准的要求。《GBT 39786-2021信息安全技术 信息系统密码应用基本要求》,8.4a规定应采用密码技术对登录用户进行身份鉴别,在5b当中信息系统中使用的密码技术应遵循密码相关国家标准和行标。在《GM/T 0115-2021 信息系统密码应用测评要求》的6.4.1C当中规定了应用系统要检查密码使用方式,0020标准则是规范了业务系统使用基于公钥密码算法的数字签名机制这种身份鉴别方式的接口。

然后就是客户端证书,我们知道客户端证书可以以文件的形式存在,也可以存在硬件的形式。硬件形式主要是USBkey或者是SIM卡这样的智能密码钥匙。国内标准主要是《GM/T 0016-2012智能密码钥匙密码应有接口规范》和《GB/T 35291-2017 信息安全技术智能密码钥匙应用接口规范》,分别是行标和国标。它定义了SKF接口,比如浏览器或者其他的应用程序可以调用,调用读它的证书、签名机制,除了SKF这个国内标准之外,还有PKCS11以及CSP,分别应用于信创和windows环境,目前可以通过这三种接口调用硬件形式的智能密码钥匙。

我们知道应用系统调用智能密码钥匙,因为它本身在浏览器当中,无法直接调用。之前基本上是采用插件的方式,以前都是IE开发,是用ActiveX,后来有火狐等浏览器,也提供NPAPI的插件,但这个插件技术已经被废弃了。现在调用的方式,一种是Native message、一种是local server,无论是扩展还是本地服务都要安装,也会因为跨平台或者跨操作系统也会带来额外的部署量,部署运维额外的工作量。

0020规范了客户端和业务系统的接口,在0020中定义了33个接口,包括了数据签名、验证、加解密,获取证书用户列表、导出用户证书、获取证书基本信息、验证证书口令、数据签名,在实际应用之中,一般业务系统首先会枚举当前系统上有几个用户证书把它们导出来,导出后解析,会显示在业务系统上,由用户选择由哪个业务证书进行登录,验证证书口令,验证之后会验证签名,这张图就是详细的描述了应用系统可以通过这个接口怎么调用SDK。

这个优势就是可以通过浏览器实现,浏览器向下调用SKF、PKCS11、CSP等接口,向上提供解析数字证书等SOF接口,屏蔽了底层USBKEY的差异和操作系统的差异,无论是使用哪个厂商的设备,用户系统不用关心细节,只要和浏览器适配之后,调用浏览器实现的SOF接口,就可以实现公钥密钥算法的要求。

另外,浏览器本身就实现了这个接口,不再需要额外安装一些软件,运维压力也会减轻很多。

除了浏览器之外,还有其他的国密应用,目前有两个协议标准,分别是《GM/T 0024-2014 SSL VPN技术规范》,还有是《GB/T 38636 信息安全技术 传输层密码协议(TLCP)》。因为38636和0024制定时间都比较早,参考的是TLS1.1和1.2,而前几年TLS已经更新到了1.3,而RFC8998规范了国密算法在TLS1.3中的使用方式,这是蚂蚁牵头,360也参与了。

因为HTTP2.0、DOH、WSS等都运行于TLS协议之上,,因此也可以无缝切换到国密协议上。Web RTC支持基于TCP的协议,因为它基于TCP就可以无缝切换到国密协议,但是在码流传输上,由于使用了dtls,目前还没有标准规范国密算法在dtls的使用,所以目前我们还在研究阶段。

另外就是国内的OCSP标准,现在还在修订,修订版本已经添加了国密算法的支持,目前我们正在做相应的研究。

除了应用协议,国内还有专门针对浏览器应用接口规范,《GM/T 0087浏览器密码应用接口规范》,它是扩展了webcrypto的接口,添加了SM3、SM4、SM2等国密算法的使用方式。业务系统只需修改密码标识,如果以前是通过Web crypto就可以从SHA1切换到SM3、AES切换到SM4,就可以节省在国密算法的迁移工作量,360都已经支持了。由于这是浏览器原生实现,可以复用浏览器的底层算法能力,相较于jivascript实现的软算法,我们测试可能有成千上万倍的提升。

目前我们正在向W3C的WebAppSec工作组提交webcrypto对国密算法的支持。

以上就是我的分享!谢谢!


返回[会议总结页面]获取其他话题的会议纪要。

若您对上述内容有任何疑问或需进一步协助,请联系会议主办方 W3C 北航总部 <team-beihang-events@w3.org>。