吳克河 李 巖 崔文超 李 為
(華北電力大學(xué)控制與計(jì)算機(jī)工程學(xué)院 北京 102206)
北斗衛(wèi)星導(dǎo)航系統(tǒng)BDS(BeiDou Navigation Satellite System,BDS)是中國(guó)自行研制的全球衛(wèi)星導(dǎo)航系統(tǒng)與通信系統(tǒng)[1],為軍民用戶(hù)提供了快速定位、實(shí)時(shí)導(dǎo)航、精密授時(shí)、位置報(bào)告、短信服務(wù)“五位一體”的服務(wù)功能,具備安全可靠的優(yōu)勢(shì)[2]。北斗短報(bào)文是北斗衛(wèi)星導(dǎo)航系統(tǒng)的特色功能,區(qū)別于世界上的其他幾大導(dǎo)航定位系統(tǒng)。北斗短報(bào)文通信具有覆蓋范圍廣、建設(shè)周期短、投資成本低等優(yōu)勢(shì),逐漸在智能交通、森林防火、農(nóng)業(yè)精耕、電力監(jiān)控、水文監(jiān)測(cè)等諸多行業(yè)已經(jīng)有了較為廣泛的應(yīng)用(以電力監(jiān)控為例,截止2016年7月,北斗短報(bào)文通信已在國(guó)家電網(wǎng)公司的青海、冀北、四川、重慶、安徽、蒙東、福建、山西、浙江共9個(gè)省公司應(yīng)用,共建設(shè)北斗數(shù)據(jù)傳輸終端1996臺(tái))。因此需要針對(duì)北斗短報(bào)文通信設(shè)計(jì)適用的安全防護(hù)方案,確保敏感數(shù)據(jù)能夠通過(guò)北斗短報(bào)文進(jìn)行安全的傳輸。
商密算法即國(guó)家密碼局認(rèn)定的商用密碼算法。商用密碼的應(yīng)用領(lǐng)域十分廣泛,主要用于對(duì)不涉及國(guó)家秘密內(nèi)容但又具有敏感性的內(nèi)部信息、行政事務(wù)信息、經(jīng)濟(jì)信息等進(jìn)行加密保護(hù)。比如:商用密碼可用于企業(yè)門(mén)禁管理、企業(yè)內(nèi)部的各類(lèi)敏感信息的傳輸加密、存儲(chǔ)加密,防止非法第三方獲取信息內(nèi)容[3];也可用于各種安全認(rèn)證、網(wǎng)上銀行、數(shù)字簽名等[4]。商密算法能夠?qū)崿F(xiàn)商用密碼算法的加密、解密和認(rèn)證等功能的技術(shù)[5]。常用的商密算法包括SM1算法、SM2算法、SM3算法和SM4算法,其密碼類(lèi)型、密碼特征和密碼用途如下表1所示。
表1 常用商密算法
北斗衛(wèi)星通信是指利用北斗導(dǎo)航衛(wèi)星作為中繼站轉(zhuǎn)發(fā)無(wú)線(xiàn)電波,在兩個(gè)或多個(gè)地球站之間進(jìn)行的通信,它是在微波通信和航天技術(shù)基礎(chǔ)上發(fā)展起來(lái)的一門(mén)新興的無(wú)線(xiàn)通信技術(shù),所使用的無(wú)線(xiàn)電波頻率為微波頻段(300MHz~300GHz,即波段1m~1mm)。這種利用北斗導(dǎo)航衛(wèi)星在地球站之間進(jìn)行通信的通信系統(tǒng),則稱(chēng)為北斗衛(wèi)星通信系統(tǒng)[6~11]。
北斗通信網(wǎng)絡(luò)是基于北斗衛(wèi)星導(dǎo)航系統(tǒng)的空地結(jié)合無(wú)線(xiàn)通信網(wǎng)絡(luò),該網(wǎng)絡(luò)的傳輸單元是北斗通信協(xié)議下的短報(bào)文[12]。北斗系統(tǒng)最大的特色在于有源定位和短報(bào)文特色服務(wù),不止解決了中國(guó)有無(wú)衛(wèi)星導(dǎo)航系統(tǒng)的問(wèn)題,還能將短信和導(dǎo)航結(jié)合,是中國(guó)北斗衛(wèi)星導(dǎo)航系統(tǒng)的獨(dú)特發(fā)明,也是一大優(yōu)勢(shì)[13]。北斗短報(bào)文通信從應(yīng)用角度來(lái)看,存在一些限制:
1)通信容量限制。采用短報(bào)文通信方式,其一次通信有容量的限制,即每次通信內(nèi)容的長(zhǎng)度是受限的。一般情況下,民用通信每條短報(bào)文信息最大容量為78字節(jié)數(shù)據(jù)[14]。
2)通信頻次限制。北斗在使用時(shí),對(duì)頻度有要求。一般的設(shè)備使用頻度基本是1min,也就是1min可以使用一次,如果需要更高頻度,需要在入網(wǎng)時(shí)提出特殊申請(qǐng)。
3)通信不可靠性。北斗衛(wèi)星通信鏈路是不可靠的通信鏈路,而且北斗民用通信系統(tǒng)是沒(méi)有通信回執(zhí)的。
由于北斗短報(bào)文通信長(zhǎng)度和頻率的限制,原有的對(duì)于SSL、TLS等安全傳輸協(xié)議難以適用北斗短報(bào)文通信。針對(duì)北斗衛(wèi)星通道的技術(shù)特色,基于現(xiàn)有安全通信技術(shù),設(shè)計(jì)適應(yīng)短報(bào)文通信的安全通信協(xié)議。主要實(shí)現(xiàn)的安全防護(hù)功能包括通過(guò)基于商密算法的認(rèn)證協(xié)商協(xié)議認(rèn)證通信雙方和利用硬件加密芯片實(shí)現(xiàn)數(shù)據(jù)加解密。
安全通信協(xié)議包括兩個(gè)主要的通信流程,分別是密鑰協(xié)商流程和加密通信流程。通信雙方要進(jìn)行安全通信,需要初始化北斗終端獲取北斗衛(wèi)星信號(hào)確保能夠進(jìn)行北斗短報(bào)文通信。一旦初始化完畢后,就進(jìn)行密鑰協(xié)商流程,雙方通過(guò)密鑰協(xié)商流程進(jìn)行雙向身份認(rèn)證和協(xié)商出一個(gè)公共的會(huì)話(huà)密鑰。如果在密鑰協(xié)商流程中出錯(cuò),整個(gè)安全通信協(xié)議流程退出。
身份認(rèn)證和會(huì)話(huà)密鑰協(xié)商完成后,密鑰協(xié)商流程結(jié)束,通信雙方就可以使用會(huì)話(huà)密鑰進(jìn)行加密通信,從而進(jìn)入加密通信流程。在加密通信流程中,通信雙方把自己想要發(fā)送的數(shù)據(jù)使用會(huì)話(huà)密鑰加密后,通過(guò)北斗短報(bào)文發(fā)送給對(duì)方。當(dāng)接收到來(lái)自對(duì)方的北斗短報(bào)文數(shù)據(jù)后,要進(jìn)行身份認(rèn)證和數(shù)據(jù)完整性校驗(yàn),認(rèn)證和校驗(yàn)成功后,使用會(huì)話(huà)密鑰進(jìn)行解密操作獲得明文數(shù)據(jù)。如果在加密通信流程中出錯(cuò),銷(xiāo)毀會(huì)話(huà)密鑰并且結(jié)束整個(gè)安全通信協(xié)議流程,下一次使用安全通信協(xié)議進(jìn)行通信,還要進(jìn)行密鑰協(xié)商流程,保證會(huì)話(huà)密鑰的安全性。整個(gè)安全通信協(xié)議的通信流程如圖1所示。
圖1 安全通信協(xié)議通信流程圖
密鑰協(xié)商有兩個(gè)或多個(gè)實(shí)體協(xié)商,共同建立會(huì)話(huà)密鑰[15],任何一個(gè)參與者均對(duì)結(jié)果產(chǎn)生影響,不需要任何可信的第三方??煞譃樽C書(shū)型和無(wú)證書(shū)型。本文設(shè)計(jì)的安全通信協(xié)議采用證書(shū)型密鑰協(xié)商方式,使用SM2證書(shū)來(lái)實(shí)現(xiàn)通信雙方的雙向身份認(rèn)證。圖和文字中出現(xiàn)的符號(hào)見(jiàn)表2。
表2 安全通信協(xié)議符號(hào)說(shuō)明
密鑰協(xié)商的通信流程如圖2所示。通信過(guò)程中使用商密算法的具體操作總共七個(gè)步驟。
步驟一,裝置1產(chǎn)生隨機(jī)數(shù)r1,隨機(jī)數(shù)r1為16字節(jié)的數(shù)據(jù),之后使用key作密鑰,通過(guò)SM1算法加密隨機(jī)數(shù)r1,生成A=Ekey(r1),將A發(fā)送到裝置2。
步驟二,裝置1對(duì)隨機(jī)數(shù)r1的進(jìn)行SM3算法的雜湊值計(jì)算,并將結(jié)果進(jìn)行SM2算法的簽名運(yùn)算,生成B=SSkey1(H(r1)),將B發(fā)送到裝置2。
步驟三,裝置2對(duì)A使用key進(jìn)行SM1算法的解密操作得到明文的隨機(jī)數(shù)r1并用B通過(guò)SM2算法的驗(yàn)簽操作驗(yàn)證裝置1產(chǎn)生的隨機(jī)數(shù)r1和裝置1的身份。之后裝置2產(chǎn)生隨機(jī)數(shù)r2,隨機(jī)數(shù)r2為16字節(jié)的數(shù)據(jù),之后使用key作密鑰,通過(guò)SM1算法加密隨機(jī)數(shù)r2,生成C=Ekey(r2),將C發(fā)送到裝置1。
圖2 密鑰協(xié)商通信流程
步驟四,裝置2對(duì)隨機(jī)數(shù)r2的進(jìn)行SM3算法的雜湊值計(jì)算,并將結(jié)果進(jìn)行SM2算法的簽名運(yùn)算,生成D=SSkey2(H(r2)),將D發(fā)送到裝置1。
步驟五,裝置1對(duì)C使用key進(jìn)行SM1算法的解密操作得到明文的隨機(jī)數(shù)r2并用D通過(guò)SM2算法的驗(yàn)簽操作驗(yàn)證裝置2產(chǎn)生的隨機(jī)數(shù)r2和裝置2的身份。之后裝置1將隨機(jī)數(shù)r1和隨機(jī)數(shù)r2進(jìn)行異或操作,生成會(huì)話(huà)密鑰DK=r1⊕r2。裝置1對(duì)回話(huà)密鑰DK進(jìn)行SM3算法的雜湊值計(jì)算,生成E=H(DK),將E發(fā)送到裝置2。
步驟六,裝置2將隨機(jī)數(shù)r1和隨機(jī)數(shù)r2進(jìn)行異或操作,生成會(huì)話(huà)密鑰DK=r1⊕r2。裝置2對(duì)回話(huà)密鑰DK進(jìn)行SM3算法的雜湊值計(jì)算,生成F=H(DK),判斷接收到E是否與F一致,進(jìn)行數(shù)據(jù)完整性校驗(yàn)。如果一致將F發(fā)送到裝置1,否則密鑰協(xié)商失敗。
步驟七,裝置1判斷接收到F是否與E一致,進(jìn)行數(shù)據(jù)完整性校驗(yàn)。如果F與E一致,則密鑰協(xié)商成功,否則密鑰協(xié)商失敗。
經(jīng)過(guò)上述的七個(gè)步驟,通信雙方(裝置1和裝置2)都完成了對(duì)對(duì)方的身份校驗(yàn)和密鑰協(xié)商,雙方都持有相同的會(huì)話(huà)密鑰DK,之后就可以通過(guò)會(huì)話(huà)密鑰DK進(jìn)行加密通信。
密鑰協(xié)商成功后,通信雙方就可以進(jìn)行加密通信。圖和文字中出現(xiàn)的符號(hào)見(jiàn)表2。
加密通信流程如圖3所示。通信過(guò)程中使用商密算法的具體操作包括以下四個(gè)步驟:
步驟一,裝置1需要發(fā)送DATA1到裝置2,使用會(huì)話(huà)密鑰DK通過(guò)SM1算法進(jìn)行加密運(yùn)算生成密文G=EDK(DATA1),將G通過(guò)北斗短報(bào)文通信發(fā)送給裝置2。
圖3 加密通信流程
步驟二,裝置2接收到G之后使用會(huì)話(huà)密鑰DK通過(guò)SM1算法進(jìn)行解密運(yùn)算生成明文DA?TA1。在此過(guò)程中,完成對(duì)裝置1的身份認(rèn)證和對(duì)報(bào)文G的數(shù)據(jù)完整性校驗(yàn),如果失敗,丟棄掉報(bào)文G和銷(xiāo)毀會(huì)話(huà)密鑰DK,整個(gè)安全通信協(xié)議流程結(jié)束。
步驟三,裝置2需要發(fā)送DATA2到裝置1,使用會(huì)話(huà)密鑰DK通過(guò)SM1算法進(jìn)行加密運(yùn)算生成密文H=EDK(DATA2),將H通過(guò)北斗短報(bào)文通信發(fā)送給裝置1。
步驟四,裝置1接收到H之后使用會(huì)話(huà)密鑰DK通過(guò)SM1算法進(jìn)行解密運(yùn)算生成明文DATA2。在此過(guò)程中,完成對(duì)裝置1的身份認(rèn)證和對(duì)報(bào)文H的數(shù)據(jù)完整性校驗(yàn),如果失敗,丟棄掉報(bào)文H和銷(xiāo)毀會(huì)話(huà)密鑰DK,整個(gè)安全通信協(xié)議流程結(jié)束。
重復(fù)上述四個(gè)步驟,通信雙方(裝置1和裝置2)都可以與對(duì)方進(jìn)行加密通信。
本文設(shè)計(jì)的安全通信協(xié)議具有如下特性:
1)雙向身份認(rèn)證。基于SM2數(shù)字證書(shū)等多種方式提供對(duì)通信雙方的強(qiáng)身份認(rèn)證功能,從而實(shí)現(xiàn)雙向?qū)Φ辱b別和認(rèn)證功能。
2)數(shù)據(jù)完整性?;赟M3雜湊算法計(jì)算數(shù)據(jù)的雜湊值,保證數(shù)據(jù)完整性。
3)數(shù)據(jù)保密性?;谟布艽a算法實(shí)現(xiàn)對(duì)數(shù)據(jù)的非對(duì)稱(chēng)方式及對(duì)稱(chēng)方式的高強(qiáng)度加密功能。實(shí)現(xiàn)終端和接入網(wǎng)關(guān)之間基于專(zhuān)用密碼算法的密鑰協(xié)商功能,實(shí)現(xiàn)動(dòng)態(tài)密鑰協(xié)商、密鑰更換、密鑰銷(xiāo)毀等功能。
4)北斗短報(bào)文限制。每一幀的通信報(bào)文都符合北斗短報(bào)文的限制,包括通信容量限制、通信頻次限制和通信不可靠性的限制。最大程度地保證數(shù)據(jù)傳輸過(guò)程中的安全性。
考慮到北斗短報(bào)文通信的不可靠性,本文的實(shí)驗(yàn)主要測(cè)試安全通信協(xié)議的數(shù)據(jù)保密性,分別測(cè)試在密鑰協(xié)商階段和加密通信階段數(shù)據(jù)傳輸?shù)陌踩浴?/p>
本次協(xié)議測(cè)試將實(shí)驗(yàn)室的服務(wù)器作為通信裝置,北斗終端通過(guò)USB轉(zhuǎn)RS232串口線(xiàn)與服務(wù)器相連。整體測(cè)試環(huán)境如下圖4所示。
圖4 測(cè)試環(huán)境
通信結(jié)果如下圖5和圖6所示。
圖5 裝置1通信結(jié)果
圖6 裝置2通信結(jié)果
裝置1生成16字節(jié)的隨機(jī)數(shù)r1為[0x3D,0x97,0x29,0xA8,0x5F,0xF3,0xE7,0xD7,0xF7,0x45,0xFB,0xD4,0x07,0xA0,0x7E,0x41],裝置2生成 16字節(jié)的隨機(jī)數(shù) r2為[0x16,0xDE,0x55,0x42,0x5A,0x67,0x4E,0x51,0xB8,0xCC,0x14,0x7E,0xAA,0x91,0xC8,0xBB]。經(jīng)過(guò)步驟一、步驟二、步驟三和步驟四之后,裝置1和裝置2完成了對(duì)對(duì)方的身份認(rèn)證和數(shù)據(jù)完整性校驗(yàn),得到了對(duì)方生成的隨機(jī)數(shù)。之后,使用2個(gè)隨機(jī)數(shù)通過(guò)異或運(yùn)算得到會(huì)話(huà)密鑰 DK 為[0x2B,0x49,0x7C,0xEA,0x05,0x94,0xA9,0x86,0x4F,0x89,0xEF,0xAA,0xAD,0x31,0xB6,0xFA],經(jīng)過(guò)步驟五、步驟六和步驟七,裝置1和裝置2完成了對(duì)對(duì)方的會(huì)話(huà)密鑰的數(shù)據(jù)完整性校驗(yàn),得到了相同的會(huì)話(huà)密鑰DK。之后可以通過(guò)會(huì)話(huà)密鑰進(jìn)行加密通信,裝置1發(fā)送[Hi,I am device1?。莸窖b置2,裝置2發(fā)送[Hi,I am device2?。莸窖b置1。
綜上所述,在裝置1和裝置2的密鑰協(xié)商過(guò)程和加密通信過(guò)程中,實(shí)現(xiàn)了對(duì)隨機(jī)數(shù)的加密傳輸、通信雙方的身份認(rèn)證和數(shù)據(jù)完整性校驗(yàn),能夠解決北斗短報(bào)文通信的數(shù)據(jù)安全性問(wèn)題。
本文主要介紹和總結(jié)了國(guó)家密碼局發(fā)布的商密算法和北斗短報(bào)文通信的特點(diǎn)和限制,論述了基于商密算法的北斗短報(bào)文安全通信協(xié)議的設(shè)計(jì)和應(yīng)用。本文設(shè)計(jì)的基于商密算法的北斗短報(bào)文安全通信協(xié)議已經(jīng)成功運(yùn)用了北斗用電采集項(xiàng)目和北斗配電自動(dòng)化項(xiàng)目,驗(yàn)證該協(xié)議通信穩(wěn)定、安全可靠。