基于浏览器WebAssembly技术的即时通信加密通信系统的设计与研究
2019-03-18杨旸王明华潘俊臣胡冲
杨旸 王明华 潘俊臣 胡冲
摘 要:文章分析研究了WebAssembly的相关技术,提出了一种基于浏览器WebAssembly虚拟机加密的即时通信加密通信系统方案。系统浏览器的客户端之间加密通信采用端到端的加密机制,传输信息的加密密钥自动生成、安全分发,能够实现通信传输全过程加密和通信加密“一次一密”,有效地抵御攻击者分析、破译浏览器客户端之间的加密传输通信信息。
关键词:WebAssembly;浏览器;三层密钥体系;密钥协商;即时通信加密
1 引言
即时通信作为互联网上被广泛使用的网络应用,可为用户提供文字、语音、图片、文件等多种媒体信息通信的能力,在用户的工作和生活中发挥出越来越大的作用。在对获得便捷、高效地通信体验的同时,用户出于个人隐私和企业秘密的保护,对即时通信信息安全需求也越发迫切[1]。本文旨在研究设计一套基于WebAssembly技术的即时通信加密通信系统,实现即时通信的信息安全传输,同时实现了基于浏览器的跨平台即时通信客户端,可为用户提供安全的即时通信和多平台下便捷的客户端访问。
如今的智能手机终端操作系统主要有两类:谷歌的Android系统和苹果的iOS系统。而计算机桌面的操作系统,则有微软的Windows,苹果的Mac OS和Linux等。即时通信加密通信系统若要为不同的终端类型和操作系统开发和适配不同的即时通信APP软件,则会存在开发成本高、用户使用成本高、产品迭代速度慢、系统维护复杂等诸多问题。研究设计基于浏览器的即时通信加密通信系统具有现实意义,系统可部署运行于公众互联网络,实现即时消息传输加密,同时通过浏览器实现客户端的跨平台访问。
在各类浏览器中,即使Chrome、Firefox、Safari、Edge能够运行的语言是JavaScript,但是由于传统 JavaScript这门解释性脚本语言本身的缺陷,使得浏览器端的即时通信加密性能很不理想[2]。本方案重点研究WebAssembly技术在浏览器上的应用,WebAssembly是一种运行在网络浏览器中低级的类汇编语言,具有紧凑的二进制格式,与JavaScript相比,可以使得浏览器端即时通信中加密运算性能得到明显提升。
2 WebAssembly技术
WebAssembly(简称“WASM”)是一种以安全有效地方式运行可移植程序的新技术,主要针对Web平台[3]。它是一种可以使用非 JavaScript 编程语言编写代码并且能在浏览器上运行的技术方案。它可以用高级语言编译出字节码放到WebAssembly虚拟机中运行,各浏览器厂商根据WebAssembly字节码标准规范实现虚拟机。
WebAssembly格式是一种新的字节码格式,和JavaScript需要解释执行不同的是,WebAssembly字节码和底层机器码很相似,可快速装载运行,因此性能相对于JavaScript解释执行大大提升。相对于JavaScript,WebAssembly有三个优点。
(1)体积小。由于浏览器运行时只加载编译成的字节码,一样的逻辑比字符串描述的JavaScript文件体积小很多。
(2)加载快。由于文件体积小,再加上无需解释执行,WebAssembly能更快的加载并实例化,减少运行前的等待时间。
(3)兼容问题少。WebAssembly是非常底层的字节码规范,制定好以后很少变动,就算发生变化,只需要从高级语言编译成字节码过程做兼容。
3 基于混合密码体制和多层密钥体系
基于即时通信业务的应用特点,加密的密码体制采用非對称密码和对称密码相结合的混合密码体制[4]。业务信息加密和本地存储加密采用对称密钥密码体制,即时通信密钥协商采用非对称密码体制和对称密码体制结合实现。
系统设计非对称的用户密钥、对称的密钥加密密钥、会话密钥三层密钥体系,为即时通信加密系统提供安全高效的密码保护,密钥结构如图1所示。
用户密钥采用非对称的公私钥对,提供密钥管理中心与浏览器客户端间的签名认证和密钥加密密钥协商服务,以及浏览器客户端间签名认证和会话密钥协商服务。密钥加密密钥用于浏览器客户端与密钥分发中心间群组密钥、会话密钥分发,以及管理信息的加密保护。会话密钥用于业务信息的加密保护。
4 系统设计
4.1系统组成
即时通信加密通信系统由即时通信服务器、Web服务器和密钥管理中心组成,组成结构如图2所示。
即时通信服务器为即时通信提供服务,实现了对单人或群组的文字、图片、语音、文件的收发[5]。Web服务器提供HTTPS的Web服务,为手机终端(操作系统为iOS、Android)和PC终端用户提供基于浏览器的操作界面,实现用户注册、点对点即时消息、群组即时消息等操作。同时,Web服务器将加密功能代码进行WebAssembly封装并且载入到终端浏览器虚拟机中,为即时消息内容加密保护以及通信双方身份鉴别提供安全保障。密钥管理中心离线部署,为用户离线分发密钥和证书文件并通过用户口令加密存储在浏览器嵌入式数据库indexeDB中。
4.2 部署示意
即时通信加密通信系统拓扑图如图3所示。
即时通信服务器和Web服务器支持用户自建或者云端部署,用户自建支持集群部署,通过LVS+Keepalived实现高可用性集群,LVS提供负载均衡,Keepalived提供健康检查,故障转移,提高系统的可用性。密钥管理中心离线部署不联网,通过移动存储介质将密钥和证书文件导入到用户终端浏览器内。
4.3 密码算法和密钥配用
即时通信加密系统配置对称分组密码算法(以AES为例)、公钥密码算法(以ECC公钥密钥算法为例)和杂凑密码算法(以SHA256为例)三类密码算法[6]。对称算法用于即时消息传输加密保护和本地数据加密保护。ECC公钥算法密钥协商签名验签。杂凑算法用于计算签名数据摘要和认证口令保护。
即时通信加密系统配用的密钥如表1所示。
4.4 即时通信安全性设计
4.4.1 点对点即时通信流程
点对点即时通信业务通过即时通信服务器中转实现,即时通信服务器为即时通信提供缓存与转发服务,实现文字、图片、语音、短视频等即时通信业务和通信信息的收发。具体流程如图4所示。
(1)发送方发起点对点即时消息通信,用户选择接收方;
(2)发送方通过即时通信服务器与接收方进行密钥协商,具体密钥协商流程参见4.4.3;
(3)发送方编辑即时消息,对消息进行加密,消息加密机制参见4.4.4,然后将加密消息发送给即时通信服务器;
(4)即时通信服务器查找接收对象,若接收方在线,发送有消息提醒给接收方;
(5)接收方从即时通信服务器获取消息内容;如果是文字语音类消息,解密浏览器网页阅读消息;如果是文件图片视频类消息,将附件密文存储在本地,通过浏览器打开附件,在内存中解密阅读;
(6)若接收方离线,待其上线后,向即时通信服务器查询有新消息,则通过即时通信服务器获取发送方的密钥协商信息,获取通信密钥后,从即时通信服务器获取消息进行解密查看,查看方式和在线时相同。
4.4.2 群组即时通信流程
群组即时消息通信流程与点对点相似,在创建群组或成员加入群组时,由发起群组即时消息的发起方与参与方进行一对一的密钥协商,协商出预主密钥A_CC,通过A_CC加密保护群组密钥TGK(由发起方产生)后分发给群里各参与方。后续即时消息通信发送接收流程与点对点流程类似,只是通过群组密钥TGK来导出或保护工作密钥。
4.4.3 预主密钥协商流程
浏览器客户端点对点即时通信时,通过密钥协商协议实现预主密钥A_CC定期更换和用户身份认证。协商流程如图5所示。
(1)接收方预先上传相关的NT_PKB和CertB、MACB到即时通信服务器;IDB为接收方浏览器客户端B的唯一编号,CertB为密钥管理中心离线注入到浏览器客户端B的证书,NT_PKB 为浏览器客户端B产生的临时公钥,MACB为IDB+NT_PKB+CertB杂凑算法计算后的验证码;
(2)浏览器客户端A向即时通信服务器获取IDB、NT_PK B和CertB、MACB,通过提取CertA中密钥管理中心公钥R_PK对 CertB进行验证,并杂凑算法计算验证MACB;
(3)浏览器客户端A通过浏览器私钥B_SKA与NT_PK B进行ECC点乘运算得到DAB;
(4)瀏览器客户端A上传与相关的NT_PK A和CertA、MACA到即时通信服务器, IDA为接收方浏览器客户端A的唯一编号,CertB为密钥管理中心离线注入到浏览器客户端A的证书,NT_PKA浏览器客户端A产生的临时公钥,MACA为IDA+NT_PKA+CertA杂凑算法计算后的验证码;
(5)浏览器客户端B向即时通信服务器获取IDA、NT_PKA和CertA、MACA,通过提取CertB中密钥管理中心公钥R_PK对 CertA进行验证,并杂凑算法计算验证MACA;
(6)浏览器客户端B通过浏览器私钥B_SKB与NT_PKA进行ECC点乘运算得到DAB;协议双方对DAB进行杂凑算法计算得到预主密钥A_CC。
4.4.4 消息加密密钥产生机制
点对点通信时,使用用户密钥GBK和协商出的预主密钥A_CC派生工作密钥WK和初始向量IV(派生过程采用PBKDF2伪随机函数)。群组工作时,使用用户密钥GBK、群组密钥TGK派生工作密钥和初始向量IV。然后,采用对称算法对消息进行加密保护,最后将数据组帧发送。
其中,群组密钥TGK采用定时更换机制或者发送一定数量的消息后进行更换。群组密钥TGK也可以增加按天进行滚动的滚动机制,进行滚动更新。
通过本文描述的预主密钥协商、定时更换机制、按天进行滚动的滚动机制以及基于每条消息产生的工作密钥,实现了即时消息的“一话一密”加密通信和一定时间间隔的前向安全防护。通过对消息的完整性验证,实现了隐式的用户身份验证及数据源验证。
如果攻击者进行假冒、伪造和替代,由于不知道通信双方的私钥,不能得到工作密钥,攻击者和合法用户接收到的信息为乱码,实现了机密性保护和用户身份认证。
5 结束语
基于浏览器WebAssembly技术的即时通信加密系统,基于混合密码体制和多层密钥体系设计,采用安全适用的加密体制和加密协议,无中心端到端的密钥协商分发机制和离线加载的密码保障方案。目前,该系统已经在安卓、苹果手机的Safari浏览器,计算机上的Chrome、Firefox、Safari、Edge等多款主流浏览器上成功应用,经过测试运行稳定,符合预期要求。
参考文献
[1] 陈旭,郭文平. 基于RSA和TDES的安全即时通信系统设计[J]. 微型电脑应用,2009(09).
[2] Paul Krill,Paul Krill. Google's V8 JavaScript engine now backs WebAssembly[J]. InfoWorld.com,2016.
[3] 唐伟,刘国山,王亚翔. 一种基于分级保护的企业即时通信系统的设计与实现[J].通信技术,2016(06).
[4] 何文海,信佳佳. 网络信息安全中存在的问题及数据加密技术研究[J].网络空间安全,2019(01).
[5] 张杰,李晔,宫晓飞,张鹏,姜竞赛. 应用于卫星电话的端到端加密系统的研究与实现[J]. 电声技术,2019(06).
[6] 张义伟. 关于AES算法在端到端通信加密模块中的实现及应用设计研究[J].中国新通信,2016(20).