奚宇航 黃一平 蘇檢德 王淑沛
(廣西師范大學(xué)電子工程學(xué)院 廣西 桂林 541004)
隨著移動(dòng)互聯(lián)網(wǎng)的迅猛發(fā)展,中國(guó)已成為全球最大的互聯(lián)網(wǎng)市場(chǎng)之一。CNNIC第42次《中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》顯示,截至2018年6月,中國(guó)互聯(lián)網(wǎng)用戶總數(shù)達(dá)8.02億,超過(guò)印度位居全球網(wǎng)民首位[1]?!?018年中國(guó)互聯(lián)網(wǎng)流量年度數(shù)據(jù)報(bào)告》中指出截至2018年12月,以微信、QQ為首的即時(shí)通信聊天行業(yè)獨(dú)立設(shè)備數(shù)達(dá)12.35億,同比增長(zhǎng)10.3%,行業(yè)滲透率達(dá)91.67%,其中微信的月獨(dú)立設(shè)備達(dá)10.87億臺(tái),為12月唯一破十億的APP,同比增長(zhǎng)9.5%[2]。以QQ和微信所代表的即時(shí)通信應(yīng)用服務(wù)在擁有如此龐大數(shù)量的用戶基礎(chǔ)上隨之而來(lái)的是巨大的安全隱患[3]。用戶使用QQ、微信每天都會(huì)接收發(fā)送龐大的數(shù)據(jù),其信息安全問(wèn)題值得關(guān)注。信息安全保護(hù)的核心就是以RSA加密算法和隨機(jī)AES密鑰加密相結(jié)合進(jìn)行即時(shí)數(shù)據(jù)加密[4]。雖然RSA的私鑰保存在系統(tǒng)的通信服務(wù)器中,想要通過(guò)攻克AES算法的密鑰獲取聊天內(nèi)容的難度很大[5]。但是,一方面由于承擔(dān)的流量巨大,運(yùn)營(yíng)商或者服務(wù)商通常只對(duì)包數(shù)據(jù)中的個(gè)人數(shù)據(jù)進(jìn)行隱藏,其中通信的大部分還是通過(guò)明文的方式進(jìn)行傳輸,因此存在被竊取和篡改的可能性[6]。另一方面,在手機(jī)數(shù)據(jù)的顯示端是明文顯示,非常容易造成截取傳播敏感社交信息、行政事務(wù)信息和金融信息的不良后果,進(jìn)而造成非常惡劣的影響[7]。
針對(duì)上述即時(shí)通信軟件存在的安全性問(wèn)題,本文設(shè)計(jì)實(shí)現(xiàn)了基于國(guó)密算法的即時(shí)通信加密軟件系統(tǒng)。以iOS操作系統(tǒng)的智能手機(jī)終端為例,本文采用隨機(jī)密鑰生成器,按照PKI的安全體系,利用對(duì)稱(chēng)與非對(duì)稱(chēng)加密算法相結(jié)合的思想,通過(guò)具備自主可控、安全性更高、性能更強(qiáng)的國(guó)密算法和智能移動(dòng)終端的手勢(shì)、數(shù)字密碼鎖相結(jié)合技術(shù),實(shí)現(xiàn)了即時(shí)通信加密軟件系統(tǒng)。本系統(tǒng)在數(shù)據(jù)傳輸層采用SM2公鑰加密SM4隨機(jī)密鑰進(jìn)行會(huì)話密鑰分配,再由SM4密鑰加密明文成密文進(jìn)行傳輸。在消息顯示層采用手勢(shì)、數(shù)字密碼鎖的方式進(jìn)行顯示保護(hù)。
整個(gè)通信系統(tǒng)由系統(tǒng)服務(wù)器、蘋(píng)果APNs服務(wù)器和手機(jī)移動(dòng)客戶端組成。其中手機(jī)移動(dòng)客戶端主要由密聊首頁(yè)、聯(lián)系人和個(gè)人三個(gè)界面組成,系統(tǒng)的即時(shí)通信總流程圖如圖1所示。圖中實(shí)線表示移動(dòng)端A給移動(dòng)端B發(fā)送即時(shí)消息,虛線為移動(dòng)端B給移動(dòng)端A發(fā)送即時(shí)消息,ID為系統(tǒng)服務(wù)器隨機(jī)給移動(dòng)端分配的標(biāo)識(shí)符,UUID為移動(dòng)客戶端的蘋(píng)果手機(jī)唯一標(biāo)識(shí)符,其中ID和UUID形成鍵值對(duì)保存在系統(tǒng)服務(wù)器中,UUID可以被蘋(píng)果的APNs服務(wù)器識(shí)別。在移動(dòng)客戶端進(jìn)行三方登錄成功后會(huì)由隨機(jī)密鑰生成器生成國(guó)密算法的SM2的公私鑰對(duì),公鑰上傳服務(wù)器,私鑰保存在Keychain中。每次進(jìn)行三方登錄會(huì)更新Keychain中保存的私鑰,同時(shí)更新系統(tǒng)服務(wù)器公鑰。在首次即時(shí)通信的同時(shí)進(jìn)行統(tǒng)一會(huì)話密鑰操作,之后在移動(dòng)客戶端進(jìn)行發(fā)送消息時(shí),發(fā)送方通過(guò)統(tǒng)一的會(huì)話密鑰將消息加密成密文和接收方的ID發(fā)送給服務(wù)器,由系統(tǒng)服務(wù)器找到ID對(duì)應(yīng)的UUID,然后由蘋(píng)果的APNs服務(wù)器將密文消息推送給接收方移動(dòng)客戶端進(jìn)行會(huì)話密鑰解密,最后通過(guò)手勢(shì)數(shù)字密碼驗(yàn)證成功后進(jìn)行顯示。
圖1 系統(tǒng)即時(shí)通信總流程圖
Keychain是一個(gè)獨(dú)立于APP之外的iOS系統(tǒng)級(jí)別安全的存儲(chǔ)容器,可以用來(lái)為不同的應(yīng)用保存敏感信息[8],比如私鑰、密碼、網(wǎng)絡(luò)密碼、認(rèn)證令牌等。蘋(píng)果用Keychain來(lái)保存Wi-Fi密碼、VPN憑證等。Keychain中的Keychain Services安全機(jī)制保證存儲(chǔ)的敏感信息不會(huì)被竊取,它可以包含任意數(shù)量的Keychain item,每條item 包含一條數(shù)據(jù)和很多的屬性。每個(gè)Keychain包含數(shù)據(jù)和一組屬性,對(duì)于需要保護(hù)的item,比如私鑰或密碼數(shù)據(jù)是加密的,會(huì)被Keychain保護(hù)起來(lái);對(duì)于無(wú)需保護(hù)的item,比如證書(shū)數(shù)據(jù)未被加密。Keychain一共有五種類(lèi)型:一般密碼、網(wǎng)絡(luò)密碼、證書(shū)、密鑰和身份證書(shū)(帶私鑰的證書(shū)),分別對(duì)應(yīng)GenericPassword、InternetPassword、Certificate、Key和Identity[9]。本系統(tǒng)在三方登錄成功后自動(dòng)生成SM2密鑰對(duì),其中公鑰上傳系統(tǒng)服務(wù)器,私鑰通過(guò)item關(guān)聯(lián)Key類(lèi)型保存在Keychain中,在統(tǒng)一會(huì)話密鑰操作的過(guò)程中采用相同的方式將密鑰保存在Keychain中。
國(guó)產(chǎn)密碼算法簡(jiǎn)稱(chēng)國(guó)密算法是由國(guó)家密碼局認(rèn)定的擁有自主知識(shí)產(chǎn)權(quán)的密碼算法,在目前互聯(lián)網(wǎng)領(lǐng)域使用最為廣泛加密算法為SM2、SM3、SM4。其中SM2算法是基于ECC橢圓曲線密碼機(jī)制使用256位曲線作為標(biāo)準(zhǔn)曲線的非對(duì)稱(chēng)加密算法,求解倍點(diǎn)的離散對(duì)數(shù)的難度遠(yuǎn)遠(yuǎn)大于大數(shù)分解和有限域上的離散對(duì)數(shù)求解,與目前使用最多的RSA非對(duì)稱(chēng)加密算法比較來(lái)看,其計(jì)算復(fù)雜度、安全度更高,相同安全性能下需要的公鑰位數(shù)更少,加解密速度更快,在密鑰生成速度上比RSA快百倍以上[10]。SM4是一種基于分組密碼的對(duì)稱(chēng)加密算法,可實(shí)現(xiàn)對(duì)數(shù)據(jù)的實(shí)時(shí)加解密,保證數(shù)據(jù)的機(jī)密性,其加密機(jī)制是對(duì)明文消息進(jìn)行固定塊切割后再進(jìn)行迭代加密,加密解密使用相同的密鑰[11]。與目前使用較多的AES對(duì)稱(chēng)加密算法比較來(lái)看,在進(jìn)行疊加加密輪操作的過(guò)程中兩個(gè)算法的安全性均是基于S盒的非線性以及線性變換提供擴(kuò)散作用,密鑰的使用方式也均是將密鑰與明文或加密結(jié)果“異或”。區(qū)別在于AES算法在每輪的最后使用密鑰,而SM4算法在每輪開(kāi)始使用密鑰,在密鑰調(diào)度算法的復(fù)雜度上,SM4更加簡(jiǎn)單[12]。故本系統(tǒng)在進(jìn)行即時(shí)消息加密和統(tǒng)一會(huì)話密鑰的過(guò)程中采用了安全性更高、自主可控性更好的國(guó)密算法進(jìn)行即時(shí)消息加解密操作,這也更加符合國(guó)家自主可控的安全發(fā)展需求。
系統(tǒng)采用了C/S架構(gòu)模式,服務(wù)器端使用了J2EE標(biāo)準(zhǔn)、Spring框架和MySQL數(shù)據(jù)庫(kù),使用Java語(yǔ)言進(jìn)行開(kāi)發(fā),連接遵循Http協(xié)議。移動(dòng)客戶端使用Objective-C語(yǔ)言進(jìn)行開(kāi)發(fā),使用MVC架構(gòu)和SQLite數(shù)據(jù)庫(kù),測(cè)試環(huán)境為iPhone simulator和iPhone真機(jī)。
系統(tǒng)對(duì)于即時(shí)消息的安全措施有兩個(gè)方面:消息顯示查閱層和傳輸層。在消息傳輸層中,移動(dòng)客戶端在三方登錄后首先會(huì)自動(dòng)隨機(jī)生成SM2加密算法的公鑰、私鑰對(duì),公鑰上傳到本地服務(wù)器,私鑰保存到Keychain。三方登錄成功后進(jìn)入密聊首頁(yè)進(jìn)行添加好友的操作,好友添加成功是進(jìn)行統(tǒng)一會(huì)話的前提,在互為好友進(jìn)行第一次即時(shí)聊天時(shí)會(huì)通過(guò)拼接消息密文和會(huì)話密鑰密文進(jìn)行統(tǒng)一會(huì)話密鑰操作,之后的即時(shí)消息加解密使用統(tǒng)一后的密鑰。
系統(tǒng)在接收顯示查閱端采用手勢(shì)密碼和數(shù)字密碼結(jié)合進(jìn)行顯示安全驗(yàn)證保護(hù)。在聊天室顯示聊天會(huì)話消息的時(shí)候會(huì)先進(jìn)行手勢(shì)密碼解密校驗(yàn),判斷是不是第一次進(jìn)入聊天室。如果是第一次進(jìn)入聊天室則顯示明文,之后再次進(jìn)入聊天室全部消息統(tǒng)一顯示“消息已加密!”,只有先設(shè)置手勢(shì)密碼才能對(duì)聊天室中消息進(jìn)行解密后明文顯示。在二次進(jìn)入軟件時(shí)會(huì)進(jìn)行數(shù)字密碼解密校驗(yàn),不論軟件是從熄屏狀態(tài)、掛起后臺(tái)還是完全殺死重新進(jìn)入軟件均需執(zhí)行數(shù)字密碼校驗(yàn)后才能進(jìn)入軟件,數(shù)字密碼不要求用戶強(qiáng)制設(shè)置。不進(jìn)行數(shù)字密碼設(shè)置二次進(jìn)入軟件后就不會(huì)喚起數(shù)字密碼鎖。
系統(tǒng)的三方登錄是進(jìn)入系統(tǒng)軟件的首步操作,包含了通過(guò)SDK獲取關(guān)聯(lián)值,登錄系統(tǒng)服務(wù)器和添加用戶信息。系統(tǒng)采用嵌入QQ和微信的SDK進(jìn)行三方登錄,使用三方登錄對(duì)于用戶來(lái)說(shuō)能夠顯著降低用戶的注冊(cè)和登錄成本,方便用戶實(shí)現(xiàn)快捷登錄或者注冊(cè);對(duì)應(yīng)用來(lái)說(shuō)降低了用戶注冊(cè)登錄繁瑣成本,減少隱形客戶流失提高注冊(cè)轉(zhuǎn)化率;對(duì)第三方而言促進(jìn)用戶粘性,有利于對(duì)平臺(tái)的拉新促活。三方登錄成功后會(huì)生成SM2的公私密鑰對(duì),公鑰上傳系統(tǒng)服務(wù)器,私鑰保存在Keychain中,詳細(xì)步驟如下:
(1) 通過(guò)QQ或微信的SDK三方登錄成功后得到微信或QQ關(guān)聯(lián)登錄用戶的唯一標(biāo)識(shí)uid和關(guān)聯(lián)登錄token,否則重新進(jìn)行三方登錄操作。
(2) 調(diào)用系統(tǒng)服務(wù)器的“服務(wù)器登錄”接口傳遞uid和token參數(shù),成功后會(huì)返回系統(tǒng)ID、系統(tǒng)昵稱(chēng)nickname、系統(tǒng)頭像icon,否則重新登錄系統(tǒng)服務(wù)器。
(3) 調(diào)用隨機(jī)密碼生成器生成SM2的公、私鑰對(duì)(Uk,Pk),其中私鑰保存在Keychain中。
(4) 調(diào)用系統(tǒng)服務(wù)器的“添加用戶信息接口”傳遞ID和Uk參數(shù)到系統(tǒng)服務(wù)器,并以鍵值對(duì)的形式保存在數(shù)據(jù)庫(kù)中。用戶信息添加成功后跳轉(zhuǎn)到密聊首頁(yè),否則重新進(jìn)行添加。
三方登錄的流程圖如圖2所示。
添加好友是建立即時(shí)會(huì)話的前提,只有添加好友成功后,才能建立即時(shí)會(huì)話,統(tǒng)一會(huì)話密鑰。在添加好友時(shí)掃描對(duì)方二維碼獲得系統(tǒng)對(duì)應(yīng)的身份信息ID后會(huì)先與自己的ID進(jìn)行比較。如果相同會(huì)彈出窗口“不能添加自己為好友!”;如果不相同則會(huì)和自己的聯(lián)系人列表中的所有好友ID進(jìn)行比較,如果有相同的,則直接跳轉(zhuǎn)到與該聯(lián)系人的聊天室界面,如果都不相同就會(huì)進(jìn)行添加好友操作,向?qū)Ψ桨l(fā)送添加好友請(qǐng)求的即時(shí)推送,對(duì)方得到推送消息后同意添加則添加成功,反之不成功。系統(tǒng)的添加好友流程圖如圖3所示。
圖3 添加好友流程圖
本系統(tǒng)在即時(shí)消息的推送過(guò)程中使用系統(tǒng)服務(wù)器和蘋(píng)果原生的APNs服務(wù)器結(jié)合進(jìn)行推送。系統(tǒng)具體推送步驟如下:
(1) 發(fā)送方Sender調(diào)用系統(tǒng)服務(wù)器的即時(shí)消息推送API接口接收會(huì)話密文消息Message和接收方Receiver的ID。
(2) 數(shù)據(jù)庫(kù)保存Message并生成對(duì)應(yīng)的字段Num。
(3) 根據(jù)Num生成一個(gè)URL查詢地址Address,并且通過(guò)Receiver的ID找到對(duì)應(yīng)的UUID。
(4) 調(diào)用APNs的接口將Address和UUID發(fā)送給APNs服務(wù)器,APNs根據(jù)UUID找到Receiver并推送Address即時(shí)消息。
在即時(shí)消息的推送過(guò)程中由于APNs每次推送的字節(jié)數(shù)有限,較長(zhǎng)字節(jié)數(shù)的即時(shí)消息不能一次性推送完,所以通過(guò)訪問(wèn)URL查詢地址獲得完整的即時(shí)推送消息。系統(tǒng)的即時(shí)推送流程圖如圖4所示。
圖4 即時(shí)推送流程圖
本系統(tǒng)在即時(shí)會(huì)話消息的傳輸過(guò)程中基于PKI的安全體系,采用數(shù)字信封的方式進(jìn)行統(tǒng)一會(huì)話密鑰分發(fā)。數(shù)字信封的原理就是采用對(duì)稱(chēng)加密算法加密大批量的數(shù)據(jù),然后采用非對(duì)稱(chēng)加密算法對(duì)其中的對(duì)稱(chēng)密鑰進(jìn)行加密[13]。在解密的過(guò)程中首先用非對(duì)稱(chēng)加密算法解密獲取對(duì)稱(chēng)加密算法的密鑰,然后使用獲取的密鑰解密獲取數(shù)據(jù)明文[14]。本系統(tǒng)在安全傳輸中主要包括兩大部分:第一次建立即時(shí)會(huì)話時(shí)進(jìn)行統(tǒng)一會(huì)話密鑰操作;使用統(tǒng)一后的密鑰對(duì)即時(shí)會(huì)話消息進(jìn)行加密解密。
2.4.1統(tǒng)一會(huì)話密鑰
系統(tǒng)在Sender(發(fā)送方)和Receiver(接收方)互為好友的前提下第一次進(jìn)行即時(shí)聊天會(huì)統(tǒng)一會(huì)話密鑰,具體步驟如下:
(1) Sender打開(kāi)與Receiver的聊天室,監(jiān)聽(tīng)此時(shí)聊天室的文字輸入。
(2) 監(jiān)聽(tīng)聊天室鍵盤(pán)中的“Send”按鈕的點(diǎn)擊,此時(shí)的即時(shí)會(huì)話明文為C1。
(3) 隨機(jī)密碼生成器會(huì)自動(dòng)生成定長(zhǎng)的SM4會(huì)話密鑰Mk,并在Sender中的Keychain進(jìn)行存儲(chǔ)。同時(shí)通過(guò)Receiver的ID向系統(tǒng)服務(wù)器獲取其SM2的公鑰Pk。
(4) 通過(guò)公鑰Pk加密Mk生成定長(zhǎng)的會(huì)話密鑰密文Ck。同時(shí)使用會(huì)話密鑰Mk加密明文即時(shí)消息C1成C。拼接Ck和C成即時(shí)消息密文Message。
(5) 向系統(tǒng)服務(wù)器發(fā)送Message和Receiver的ID,系統(tǒng)服務(wù)器生成URL查詢地址Address,調(diào)用APNs服務(wù)器接口發(fā)送Address和ID。
(6) APNs服務(wù)器通過(guò)ID將Address推送給Receiver。
(7) Receiver通過(guò)向Address發(fā)送POST請(qǐng)求獲取到拼接的密文消息Message,截取定長(zhǎng)的會(huì)話密鑰密文Ck和即時(shí)密文消息C。
(8) Receiver用自己的私鑰Uk解密Ck得到Mk,在Receiver中Keychain中存儲(chǔ)Mk,同時(shí)用Mk解密C得到即時(shí)消息明文C1,并在Receiver的聊天室中顯示。
當(dāng)Sender和Receiver互加好友后的第一次即時(shí)聊天時(shí),會(huì)在傳遞首條即時(shí)消息時(shí)同時(shí)傳遞會(huì)話密鑰,經(jīng)過(guò)第一條即時(shí)消息后Sender和Receiver就保持了統(tǒng)一的會(huì)話密鑰,之后的即時(shí)聊天信息加解密全部使用Mk,本系統(tǒng)不作密鑰的預(yù)先設(shè)定,每次三方登錄后都會(huì)產(chǎn)生的新的SM2密鑰對(duì)定期更新會(huì)話密鑰。系統(tǒng)的統(tǒng)一會(huì)話密鑰流程如圖5所示。
圖5 統(tǒng)一會(huì)話密鑰流程圖
2.4.2即時(shí)消息加解密
在Sender進(jìn)行即時(shí)聊天中首先會(huì)判斷是不是第一次與該好友進(jìn)行即時(shí)會(huì)話,如果是,則會(huì)在第一次發(fā)送即時(shí)消息時(shí)進(jìn)行統(tǒng)一會(huì)話密鑰操作,如圖5所示;如果不是,那么雙方已經(jīng)統(tǒng)一了會(huì)話密鑰Mk,此時(shí)Sender只需要向系統(tǒng)服務(wù)器發(fā)送即時(shí)消息密文C和Receiver的ID,APNs調(diào)用推送接口推送的URL查詢地址中只有即時(shí)消息密文C,Receiver接收到即時(shí)推送消息密文C,直接用本地保存的會(huì)話密鑰Mk解密即可。同時(shí)在即時(shí)消息解密后在聊天室進(jìn)行顯示時(shí)要經(jīng)過(guò)手勢(shì)數(shù)字密碼驗(yàn)證成功后才會(huì)顯示即時(shí)消息明文。系統(tǒng)在Sender和Receiver進(jìn)行即時(shí)會(huì)話通信中的消息加解密流程圖如圖6所示。
圖6 即時(shí)消息加解密流程圖
系統(tǒng)在對(duì)解密后的會(huì)話消息查閱的安全設(shè)計(jì)中采用數(shù)字、手勢(shì)密碼驗(yàn)證對(duì)會(huì)話消息進(jìn)行安全保護(hù)。其中數(shù)字密碼是進(jìn)入APP時(shí)的安全驗(yàn)證,手勢(shì)密碼是在聊天中顯示明文消息時(shí)的安全驗(yàn)證。詳細(xì)信息查閱驗(yàn)證流程如下:
(1) 在進(jìn)入軟件的過(guò)程中判斷如果是從熄屏狀態(tài)、后臺(tái)狀態(tài)、完全殺死狀態(tài)進(jìn)入軟件,那么就會(huì)查看用戶有沒(méi)有設(shè)置數(shù)字密碼安全保護(hù)。如果設(shè)置了則會(huì)進(jìn)入數(shù)字密碼安全驗(yàn)證,驗(yàn)證成功進(jìn)入軟件,驗(yàn)證不成功則無(wú)法打開(kāi)軟件;如果沒(méi)有設(shè)置數(shù)字密碼安全驗(yàn)證則直接進(jìn)入軟件。
(2) 當(dāng)進(jìn)入軟件后來(lái)到聊天室進(jìn)行消息明文查閱時(shí),判斷是否第一次進(jìn)入聊天室,如果是,則直接顯示明文,否則進(jìn)行手勢(shì)密碼安全驗(yàn)證。
(3) 在進(jìn)行手勢(shì)密碼安全驗(yàn)證前,聊天室顯示的聊天內(nèi)容全部為“消息已加密!”,點(diǎn)擊聊天室的“解密”按鈕,判斷用戶有沒(méi)有設(shè)置手勢(shì)安全驗(yàn)證密碼。如果設(shè)置了就直接進(jìn)行手勢(shì)安全驗(yàn)證,否則提示“請(qǐng)先設(shè)置手勢(shì)密碼”。設(shè)置成功后進(jìn)行手勢(shì)密碼安全驗(yàn)證,驗(yàn)證成功后聊天記錄刷新顯示為明文消息。系統(tǒng)的信息查閱安全驗(yàn)證流程如圖7所示。
(a) 數(shù)字密碼驗(yàn)證 (b) 手勢(shì)密碼驗(yàn)證
本系統(tǒng)設(shè)計(jì)的創(chuàng)新點(diǎn)首要是在加密算法的選擇上采用了安全性更高的自主國(guó)密算法,使得本系統(tǒng)在即時(shí)消息傳輸中更加安全;其次在公鑰和會(huì)話密鑰的保存中使用了Keychain安全存儲(chǔ)容器,并且不對(duì)密鑰做預(yù)先設(shè)定,每次三方登錄會(huì)同步更新Keychain和系統(tǒng)服務(wù)器中的密鑰,使得本系統(tǒng)在密鑰保存中相對(duì)更加靈活安全;最后在信息查閱中設(shè)計(jì)了數(shù)字密碼和手勢(shì)密碼安全驗(yàn)證兩層保護(hù),使得聊天室中的即時(shí)會(huì)話消息不能隨意被查閱截取傳閱,提高了信息查閱的安全性。
系統(tǒng)的客戶端實(shí)際應(yīng)用效果圖如圖8、圖9所示。其中,圖8是手勢(shì)、數(shù)字密碼的界面圖,圖9是聊天室即時(shí)會(huì)話消息界面圖。由圖9可見(jiàn)在進(jìn)入聊天室后顯示的消息均為“消息已加密!”如果沒(méi)有設(shè)置手勢(shì)密碼會(huì)提示“請(qǐng)先設(shè)置手勢(shì)密碼”,設(shè)置之后進(jìn)入聊天室點(diǎn)擊右上角的“解密”按鈕,此時(shí)經(jīng)過(guò)手勢(shì)安全驗(yàn)證得到最終的明文即時(shí)會(huì)話消息。
圖8 設(shè)置手勢(shì)數(shù)字密碼界面圖
圖9 聊天室會(huì)話消息圖
本文研究的基于國(guó)密算法的即時(shí)通信加密軟件系統(tǒng)依靠iOS平臺(tái)設(shè)計(jì)并實(shí)現(xiàn),在服務(wù)器端的即時(shí)消息傳輸層和移動(dòng)客戶端的即時(shí)消息顯示層都進(jìn)行了安全措施保護(hù)。在即時(shí)消息經(jīng)過(guò)服務(wù)器進(jìn)行即時(shí)推送的過(guò)程中使用非對(duì)稱(chēng)加密算法分發(fā)對(duì)稱(chēng)加密算法的密鑰,并且在即時(shí)消息經(jīng)過(guò)移動(dòng)客戶端進(jìn)行即時(shí)消息查閱顯示的過(guò)程中使用了手勢(shì)、數(shù)字密碼結(jié)合的方式對(duì)即時(shí)消息顯示進(jìn)行加密保護(hù),最終設(shè)計(jì)并實(shí)現(xiàn)了本軟件系統(tǒng)。該系統(tǒng)目前已在企業(yè)進(jìn)行了試用,取得了不錯(cuò)的應(yīng)用效果,滿足商務(wù)人士更高要求的信息安全需求,具有較好的應(yīng)用前景。本文設(shè)計(jì)方案也將為即時(shí)通信的安全方案提供有益參考。