楊旸 王明華 潘俊臣 胡沖
摘? ?要:文章分析研究了WebAssembly的相關技術,提出了一種基于瀏覽器WebAssembly虛擬機加密的即時通信加密通信系統(tǒng)方案。系統(tǒng)瀏覽器的客戶端之間加密通信采用端到端的加密機制,傳輸信息的加密密鑰自動生成、安全分發(fā),能夠實現通信傳輸全過程加密和通信加密“一次一密”,有效地抵御攻擊者分析、破譯瀏覽器客戶端之間的加密傳輸通信信息。
關鍵詞:WebAssembly;瀏覽器;三層密鑰體系;密鑰協商;即時通信加密
1 引言
即時通信作為互聯網上被廣泛使用的網絡應用,可為用戶提供文字、語音、圖片、文件等多種媒體信息通信的能力,在用戶的工作和生活中發(fā)揮出越來越大的作用。在對獲得便捷、高效地通信體驗的同時,用戶出于個人隱私和企業(yè)秘密的保護,對即時通信信息安全需求也越發(fā)迫切[1]。本文旨在研究設計一套基于WebAssembly技術的即時通信加密通信系統(tǒng),實現即時通信的信息安全傳輸,同時實現了基于瀏覽器的跨平臺即時通信客戶端,可為用戶提供安全的即時通信和多平臺下便捷的客戶端訪問。
如今的智能手機終端操作系統(tǒng)主要有兩類:谷歌的Android系統(tǒng)和蘋果的iOS系統(tǒng)。而計算機桌面的操作系統(tǒng),則有微軟的Windows,蘋果的Mac OS和Linux等。即時通信加密通信系統(tǒng)若要為不同的終端類型和操作系統(tǒng)開發(fā)和適配不同的即時通信APP軟件,則會存在開發(fā)成本高、用戶使用成本高、產品迭代速度慢、系統(tǒng)維護復雜等諸多問題。研究設計基于瀏覽器的即時通信加密通信系統(tǒng)具有現實意義,系統(tǒng)可部署運行于公眾互聯網絡,實現即時消息傳輸加密,同時通過瀏覽器實現客戶端的跨平臺訪問。
在各類瀏覽器中,即使Chrome、Firefox、Safari、Edge能夠運行的語言是JavaScript,但是由于傳統(tǒng) JavaScript這門解釋性腳本語言本身的缺陷,使得瀏覽器端的即時通信加密性能很不理想[2]。本方案重點研究WebAssembly技術在瀏覽器上的應用,WebAssembly是一種運行在網絡瀏覽器中低級的類匯編語言,具有緊湊的二進制格式,與JavaScript相比,可以使得瀏覽器端即時通信中加密運算性能得到明顯提升。
2 WebAssembly技術
WebAssembly(簡稱“WASM”)是一種以安全有效地方式運行可移植程序的新技術,主要針對Web平臺[3]。它是一種可以使用非 JavaScript 編程語言編寫代碼并且能在瀏覽器上運行的技術方案。它可以用高級語言編譯出字節(jié)碼放到WebAssembly虛擬機中運行,各瀏覽器廠商根據WebAssembly字節(jié)碼標準規(guī)范實現虛擬機。
WebAssembly格式是一種新的字節(jié)碼格式,和JavaScript需要解釋執(zhí)行不同的是,WebAssembly字節(jié)碼和底層機器碼很相似,可快速裝載運行,因此性能相對于JavaScript解釋執(zhí)行大大提升。相對于JavaScript,WebAssembly有三個優(yōu)點。
(1)體積小。由于瀏覽器運行時只加載編譯成的字節(jié)碼,一樣的邏輯比字符串描述的JavaScript文件體積小很多。
(2)加載快。由于文件體積小,再加上無需解釋執(zhí)行,WebAssembly能更快的加載并實例化,減少運行前的等待時間。
(3)兼容問題少。WebAssembly是非常底層的字節(jié)碼規(guī)范,制定好以后很少變動,就算發(fā)生變化,只需要從高級語言編譯成字節(jié)碼過程做兼容。
3 基于混合密碼體制和多層密鑰體系
基于即時通信業(yè)務的應用特點,加密的密碼體制采用非對稱密碼和對稱密碼相結合的混合密碼體制[4]。業(yè)務信息加密和本地存儲加密采用對稱密鑰密碼體制,即時通信密鑰協商采用非對稱密碼體制和對稱密碼體制結合實現。
系統(tǒng)設計非對稱的用戶密鑰、對稱的密鑰加密密鑰、會話密鑰三層密鑰體系,為即時通信加密系統(tǒng)提供安全高效的密碼保護,密鑰結構如圖1所示。
用戶密鑰采用非對稱的公私鑰對,提供密鑰管理中心與瀏覽器客戶端間的簽名認證和密鑰加密密鑰協商服務,以及瀏覽器客戶端間簽名認證和會話密鑰協商服務。密鑰加密密鑰用于瀏覽器客戶端與密鑰分發(fā)中心間群組密鑰、會話密鑰分發(fā),以及管理信息的加密保護。會話密鑰用于業(yè)務信息的加密保護。
4 系統(tǒng)設計
4.1系統(tǒng)組成
即時通信加密通信系統(tǒng)由即時通信服務器、Web服務器和密鑰管理中心組成,組成結構如圖2所示。
即時通信服務器為即時通信提供服務,實現了對單人或群組的文字、圖片、語音、文件的收發(fā)[5]。Web服務器提供HTTPS的Web服務,為手機終端(操作系統(tǒng)為iOS、Android)和PC終端用戶提供基于瀏覽器的操作界面,實現用戶注冊、點對點即時消息、群組即時消息等操作。同時,Web服務器將加密功能代碼進行WebAssembly封裝并且載入到終端瀏覽器虛擬機中,為即時消息內容加密保護以及通信雙方身份鑒別提供安全保障。密鑰管理中心離線部署,為用戶離線分發(fā)密鑰和證書文件并通過用戶口令加密存儲在瀏覽器嵌入式數據庫indexeDB中。
4.2 部署示意
即時通信加密通信系統(tǒng)拓撲圖如圖3所示。
即時通信服務器和Web服務器支持用戶自建或者云端部署,用戶自建支持集群部署,通過LVS+Keepalived實現高可用性集群,LVS提供負載均衡,Keepalived提供健康檢查,故障轉移,提高系統(tǒng)的可用性。密鑰管理中心離線部署不聯網,通過移動存儲介質將密鑰和證書文件導入到用戶終端瀏覽器內。
4.3 密碼算法和密鑰配用
即時通信加密系統(tǒng)配置對稱分組密碼算法(以AES為例)、公鑰密碼算法(以ECC公鑰密鑰算法為例)和雜湊密碼算法(以SHA256為例)三類密碼算法[6]。對稱算法用于即時消息傳輸加密保護和本地數據加密保護。ECC公鑰算法密鑰協商簽名驗簽。雜湊算法用于計算簽名數據摘要和認證口令保護。
即時通信加密系統(tǒng)配用的密鑰如表1所示。
4.4 即時通信安全性設計
4.4.1 點對點即時通信流程
點對點即時通信業(yè)務通過即時通信服務器中轉實現,即時通信服務器為即時通信提供緩存與轉發(fā)服務,實現文字、圖片、語音、短視頻等即時通信業(yè)務和通信信息的收發(fā)。具體流程如圖4所示。
(1)發(fā)送方發(fā)起點對點即時消息通信,用戶選擇接收方;
(2)發(fā)送方通過即時通信服務器與接收方進行密鑰協商,具體密鑰協商流程參見4.4.3;
(3)發(fā)送方編輯即時消息,對消息進行加密,消息加密機制參見4.4.4,然后將加密消息發(fā)送給即時通信服務器;
(4)即時通信服務器查找接收對象,若接收方在線,發(fā)送有消息提醒給接收方;
(5)接收方從即時通信服務器獲取消息內容;如果是文字語音類消息,解密瀏覽器網頁閱讀消息;如果是文件圖片視頻類消息,將附件密文存儲在本地,通過瀏覽器打開附件,在內存中解密閱讀;
(6)若接收方離線,待其上線后,向即時通信服務器查詢有新消息,則通過即時通信服務器獲取發(fā)送方的密鑰協商信息,獲取通信密鑰后,從即時通信服務器獲取消息進行解密查看,查看方式和在線時相同。
4.4.2 群組即時通信流程
群組即時消息通信流程與點對點相似,在創(chuàng)建群組或成員加入群組時,由發(fā)起群組即時消息的發(fā)起方與參與方進行一對一的密鑰協商,協商出預主密鑰A_CC,通過A_CC加密保護群組密鑰TGK(由發(fā)起方產生)后分發(fā)給群里各參與方。后續(xù)即時消息通信發(fā)送接收流程與點對點流程類似,只是通過群組密鑰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。然后,采用對稱算法對消息進行加密保護,最后將數據組幀發(fā)送。
其中,群組密鑰TGK采用定時更換機制或者發(fā)送一定數量的消息后進行更換。群組密鑰TGK也可以增加按天進行滾動的滾動機制,進行滾動更新。
通過本文描述的預主密鑰協商、定時更換機制、按天進行滾動的滾動機制以及基于每條消息產生的工作密鑰,實現了即時消息的“一話一密”加密通信和一定時間間隔的前向安全防護。通過對消息的完整性驗證,實現了隱式的用戶身份驗證及數據源驗證。
如果攻擊者進行假冒、偽造和替代,由于不知道通信雙方的私鑰,不能得到工作密鑰,攻擊者和合法用戶接收到的信息為亂碼,實現了機密性保護和用戶身份認證。
5 結束語
基于瀏覽器WebAssembly技術的即時通信加密系統(tǒng),基于混合密碼體制和多層密鑰體系設計,采用安全適用的加密體制和加密協議,無中心端到端的密鑰協商分發(fā)機制和離線加載的密碼保障方案。目前,該系統(tǒng)已經在安卓、蘋果手機的Safari瀏覽器,計算機上的Chrome、Firefox、Safari、Edge等多款主流瀏覽器上成功應用,經過測試運行穩(wěn)定,符合預期要求。
參考文獻
[1] 陳旭,郭文平. 基于RSA和TDES的安全即時通信系統(tǒng)設計[J]. 微型電腦應用,2009(09).
[2] Paul Krill,Paul Krill. Google's V8 JavaScript engine now backs WebAssembly[J]. InfoWorld.com,2016.
[3] 唐偉,劉國山,王亞翔. 一種基于分級保護的企業(yè)即時通信系統(tǒng)的設計與實現[J].通信技術,2016(06).
[4] 何文海,信佳佳. 網絡信息安全中存在的問題及數據加密技術研究[J].網絡空間安全,2019(01).
[5] 張杰,李曄,宮曉飛,張鵬,姜競賽. 應用于衛(wèi)星電話的端到端加密系統(tǒng)的研究與實現[J]. 電聲技術,2019(06).
[6] 張義偉. 關于AES算法在端到端通信加密模塊中的實現及應用設計研究[J].中國新通信,2016(20).