





摘 要:近年來網(wǎng)絡(luò)數(shù)據(jù)安全的重要性日益凸顯,為了進(jìn)一步提高網(wǎng)絡(luò)數(shù)據(jù)的安全性,文中闡述了一種基于申威芯片的語音通信加密服務(wù)。語音通信加密服務(wù)基于申威3231處理器平臺設(shè)計與實現(xiàn),采用國密SM3、SM4算法對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行加密,并對服務(wù)軟件性能及加密算法性能進(jìn)行測試。測試結(jié)果表明:在語音服務(wù)中采用國密SM3、SM4算法對協(xié)議進(jìn)行加解密,完全能夠滿足設(shè)計需求。
關(guān)鍵詞:國密算法;加解密;數(shù)據(jù)安全;網(wǎng)絡(luò)數(shù)據(jù)完整性;申威平臺;3231處理器;語音通信加密
中圖分類號:TP391 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2024)09-00-03
DOI:10.16667/j.issn.2095-1302.2024.09.018
0 引 言
隨著社會和科技的發(fā)展,網(wǎng)絡(luò)將承載越來越多的數(shù)據(jù),這些數(shù)據(jù)在社會生活中占據(jù)著非常重要的位置。因此,數(shù)據(jù)安全日益引起人們的重視并采用了各種應(yīng)對手段[1]。為了提高網(wǎng)絡(luò)數(shù)據(jù)安全性,需要對網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行加密處理。在這方面,國密算法提供了許多可供選擇的加密算法。例如,集群通信作為一款實時通信系統(tǒng),其中就采用了國密算法[2-3]提高網(wǎng)絡(luò)數(shù)據(jù)安全性。集群通信中的語音通信加密服務(wù)端是基于申威芯片實現(xiàn)的子系統(tǒng),該系統(tǒng)在功能、安全和性能方面達(dá)到了設(shè)計要求。
申威芯片[4]是一款國產(chǎn)自主可控的芯片。申威處理器采用SW64國產(chǎn)自主指令系統(tǒng),是中國自主研發(fā)的重要處理器之一。目前,已有諸多基于申威平臺算法及功能的應(yīng)用與研究[5-6]。集群通信正是一款基于申威3231處理器開發(fā)的加密實時通信系統(tǒng)。
1 語音服務(wù)
在語音通信中網(wǎng)絡(luò)傳輸?shù)恼Z音數(shù)據(jù)都是采用國密SM3、SM4算法進(jìn)行加密處理的,在一定程度上確保了語音數(shù)據(jù)的安全性。SM3算法能夠確保語音數(shù)據(jù)經(jīng)過網(wǎng)絡(luò)傳輸時的完整性和不變性;SM4算法能夠確保語音數(shù)據(jù)在網(wǎng)絡(luò)上的私
密性。
語音通信主要包含兩種方式:點對點語音加密通信、群對講語音加密通信。
點對點通信采用一話一密的方式,每次通話都會產(chǎn)生新的密鑰進(jìn)行數(shù)據(jù)加密通信。點對點語音通信模擬手機通話流程,大致分為以下步驟:呼叫,響鈴,接通,語音數(shù)據(jù)傳輸,掛斷。呼叫過程中生成密鑰,每條數(shù)據(jù)包中的語音數(shù)據(jù)都采用國密算法進(jìn)行加密。
群對講通信采用組建群組方式,每個群組在約定時間段共用一個密鑰,參加對講的用戶創(chuàng)建一個群組,每個群組用戶通過指令方式加入群,在入群過程中完成密鑰的交互,每次只允許一個用戶進(jìn)行對講,對講過程中語音數(shù)據(jù)全部
加密。
1.1 集群系統(tǒng)框架
集群系統(tǒng)是基于申威3231芯片開發(fā)的,系統(tǒng)包含多個功能子系統(tǒng):語音子系統(tǒng)、視頻子系統(tǒng)、定位子系統(tǒng)、人臉檢測子系統(tǒng)、信息管理子系統(tǒng)等。系統(tǒng)框架如圖1所示。
1.2 語音通信加密系統(tǒng)框架
語音子系統(tǒng)在整個集群系統(tǒng)中占據(jù)重要位置,采用基于UDP的自定義協(xié)議實現(xiàn),主要是為了保證語音通信的實時性,特別是在運動過程中對講、基站切換時語音的連貫性。
語音子系統(tǒng)服務(wù)端包含多個處理模塊:心跳模塊(身份認(rèn)證、單點登錄等)、群對講模塊、點對點語音模塊、數(shù)據(jù)保存模塊、數(shù)據(jù)加解密模塊(SM3、SM4算法)等。數(shù)據(jù)基礎(chǔ)信息以MySQL、Redis、RabbitMQ為來源。語音子系統(tǒng)框架如圖2所示。
通過普通心跳維持終端用戶和服務(wù)端的連接。雙端通過心跳互相驗證對端,服務(wù)端通過心跳數(shù)據(jù)判定終端用戶身份,確定是否單點登錄。
1.3 點對點語音邏輯
點對點語音通信是在通話時模擬手機通話邏輯,先由主叫端發(fā)起呼叫流程,服務(wù)端判斷被叫用戶的狀態(tài)再進(jìn)行下一步操作,流程對終端用戶是透明的。點對點語音通信邏輯流程如圖3所示。
呼叫過程結(jié)束時,同步完成了數(shù)據(jù)加密所需的密鑰交互,服務(wù)端會創(chuàng)建一個通話通道,保證雙方可以進(jìn)行實時加密通話。每次通話都將進(jìn)行密鑰的確定,以此確保一話一密,提高通話過程中數(shù)據(jù)的安全性。通話數(shù)據(jù)將采用SM3、SM4算法加密。
掛斷操作在通話流程的任何一個節(jié)點都可以執(zhí)行。通話掛斷后,服務(wù)端會釋放創(chuàng)建的對應(yīng)通話通道,以保證服務(wù)端資源可循環(huán)利用。
1.4 群對講語音邏輯
群對講語音是語音通信的另一種形式。創(chuàng)建擁有一定用戶的群;服務(wù)端獲取群組成員信息并維護(hù)群成員狀態(tài)。群成員終端用戶執(zhí)行指令進(jìn)入到群組,獲取服務(wù)端分發(fā)的群組密鑰以用于數(shù)據(jù)加解密。群對講語音通信分以下幾個步驟:
(1)終端用戶進(jìn)群:服務(wù)判斷用戶是否可以進(jìn)群,如果
是,則用戶獲得指定時間內(nèi)的群密鑰;否則拒絕加群。
(2)終端用戶在群維持:間隔一定時間發(fā)送群心跳,維持用戶在群狀態(tài)以及在群鏈路。
(3)終端用戶發(fā)言請求:用戶請求發(fā)言,服務(wù)判定用戶是否可以發(fā)言,如果是,則用戶發(fā)送語音;否則拒絕用戶
發(fā)言。
(4)終端用戶語音:將語音發(fā)送到服務(wù)端,服務(wù)端對語音協(xié)議進(jìn)行處理,之后將其轉(zhuǎn)發(fā)給在線群內(nèi)成員。
(5)終端結(jié)束發(fā)言:服務(wù)端接收到用戶結(jié)束發(fā)言指令,釋放當(dāng)前群組發(fā)言資源,更新群組發(fā)言狀態(tài)。
(6)終端擁有指揮權(quán)限的用戶發(fā)言:擁有指揮權(quán)限的用戶具有最高級別發(fā)言權(quán)限,每個群組內(nèi)最多只能有一個指揮權(quán)限高級別用戶。高級別用戶申請發(fā)言時,判斷是否有用戶在發(fā)言,若有普通用戶發(fā)言,終止普通用戶發(fā)言,允許高級別用戶發(fā)言。高級別用戶至多允許在3個群內(nèi)同時進(jìn)行收發(fā)語音操作。
群對講語音通信邏輯流程如圖4所示。
2 SM3算法
已有研究中針對SM3算法進(jìn)行了諸多研究與優(yōu)化[7]。SM3算法[8]在基于申威3231芯片實現(xiàn)循環(huán)移位時應(yīng)注意不要越界。SM3密碼雜湊算法適用于長度小于264比特的消息,經(jīng)過計算生成長度為256比特的雜湊值。算法中約定了字的長度為32比特。
2.1 算法描述
將消息的長度填充為512比特的整數(shù)倍。
2.1.1 迭代
代碼如下:
for i=0 to n-1
V(i+1)=CF(V(i), B(i))
end for
其中:CF是壓縮函數(shù);V(i)是256比特消息的初始值;B(i)是填充后的512比特消息的分組。
2.1.2 消息擴(kuò)散
將消息分組B(i)生成132字節(jié),具體如下:
(1)將消息分組B(i)劃分為16個字:W0, W1, ..., W15。
(2)代碼如下:
for j=16 to 67
Wj←P1(Wj-16⊕Wj-9⊕(Wj-3lt;lt;lt;15))⊕(Wj-13
lt;lt;lt;7)⊕Wj-6
end for
for j=0 to 63
Wj'=Wj⊕Wj+4
end for
2.1.3 壓縮函數(shù)
將A、B、C、D、E、F、G、H存儲于字寄存器中,并且按大端格式進(jìn)行排列。SS1、SS2、TT1、TT2為中間變量,V(i+1)=CF(V(i), B(i)),0≤i≤n-1,壓縮函數(shù)計算過程描述
如下:
ABCDEFGH ←V(i)
for j=0 to 63
SS1←((Alt;lt;lt;12) + E + (Tjlt;lt;lt;j)) lt;lt;lt;7
SS2←SS1⊕(Alt;lt;lt;12)
TT1←FFj (A, B, C) + D + SS2 + Wj'
TT2←GGj (E, F, G) + H + SS1 + Wj
D←C
C←Blt;lt;lt;9
B←A
A←TT1
H←G
G←Flt;lt;lt;19
F←E
E←P0(TT2)
end for
V(i+1)←ABCDEFGH⊕V(i)
2.2 循環(huán)移位
代碼實現(xiàn):
SS1←((Alt;lt;lt;12) + E + (Tjlt;lt;lt;(j))) lt;lt;lt;7
for( int j=16 ; jlt;64 ; j++ ){
SS1=ROTL((ROTL(A, 12) + E + ROTL(T[j], j%32)), 7);
……}
申威3231芯片在計算時默認(rèn)使用64位操作,但針對SM3算法的實現(xiàn),該算法內(nèi)部設(shè)計為基于32位操作。因此,在實現(xiàn)SM3算法的循環(huán)移位操作時,以32位為界限進(jìn)行取模運算,以確保得到正確的結(jié)果。
3 算法在申威3231芯片上的性能測試
語音通信加密服務(wù)在運行期間,需要頻繁地對數(shù)據(jù)進(jìn)行加解密運算。本文測試了在單線程條件下兩種算法在申威服務(wù)器上的性能。
3.1 SM3算法
SM3算法在申威3231芯片上的性能測試數(shù)據(jù)見表1所列。
由表1可知,SM3算法在申威3231芯片上的單線程加密數(shù)據(jù)速率約為342 Mb/s。在設(shè)計語音服務(wù)協(xié)議時,每條協(xié)議的長度不超過512字節(jié),每秒可處理87 746條協(xié)議。理論上,語音服務(wù)單線程可使用SM3算法處理87 746條通信協(xié)議,完全能夠滿足需求。
3.2 SM4算法
SM4算法在軟硬件[9-10]方面都可實現(xiàn)并已有諸多研究。SM4算法在申威3231芯片上的性能測試數(shù)據(jù)見表2所列。
由表2可知,SM4算法在申威3231芯片上的單線程加解密數(shù)據(jù)速度約為25 Mb/s。以協(xié)議數(shù)據(jù)最大長度為512字節(jié)作為參考,單線程每秒可處理6 598條協(xié)議數(shù)據(jù)。加解密算法模塊可采用多線程方式提高算法的性能。
4 結(jié) 語
本文基于申威芯片3231實現(xiàn)了集群系統(tǒng)中語音通信加密服務(wù)端,語音服務(wù)采用國密SM3、SM4算法對協(xié)議進(jìn)行加解密,提高了數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中的完整性與安全性。經(jīng)過對算法的性能測試及系統(tǒng)的實際測試,本文設(shè)計可滿足服務(wù)端每秒處理上萬條加解密協(xié)議數(shù)據(jù)的需求。
參考文獻(xiàn)
[1]邵晶晶,韓曉峰.國內(nèi)外數(shù)據(jù)安全治理現(xiàn)狀綜述[J].信息安全研
究,2021,7(10):922-932.
[2]姚鍵.國產(chǎn)商用密碼算法研究及性能分析[J].計算機應(yīng)用與軟件,2019,36(6):327-333.
[3]蘇彬庭,陳明志,許力,等.國密算法在工業(yè)互聯(lián)網(wǎng)安全中的應(yīng)用研究[J].信息技術(shù)與網(wǎng)絡(luò)安全,2021,40(3):28-31.
[4]黃樸,劉世巍,張昊,等.基于申威SIMD指令的H.264編碼優(yōu)化
[J].現(xiàn)代電子技術(shù),2024,47(6):49-54.
[5]明旭,何慧文,陳磊. DPDK在國產(chǎn)申威處理器平臺上的應(yīng)用與研究[J].信息安全研究,2018,4(1):53-62.
[6]劉芳芳,楊超,袁欣輝,等.面向國產(chǎn)申威26010眾核處理器的SpMV實現(xiàn)與優(yōu)化[J].軟件學(xué)報,2018,29(12):3921-3932.
[7]陳博宇,王宏.基于FPGA的SM3算法的優(yōu)化實現(xiàn)[J].信息技術(shù),2018,42(7):143-147.
[8]國家密碼管理局. SM3雜湊密碼算法:GM/T 0004-2012 [S].北京:中國標(biāo)準(zhǔn)出版社,2012.
[9]張笑從,郭華,張習(xí)勇,等. SM4算法快速軟件實現(xiàn)[J].密碼
學(xué)報,2020,7(6):799-811.
[10]何詩洋,李暉,李鳳華. SM4算法的FPGA優(yōu)化實現(xiàn)方法 [J].西安電子科技大學(xué)學(xué)報,2021,48(3):155-162.
收稿日期:2023-09-02 修回日期:2023-10-09
作者簡介:侯憲鋒(1984—),男,碩士,工程師,研究方向為網(wǎng)絡(luò)傳輸、數(shù)據(jù)安全。