本發(fā)明涉及信息安全,具體涉及一種基于國密密碼模塊的mqtt協(xié)議的安全通訊方法和系統(tǒng)。
背景技術(shù):
1、?mqtt?(message?queuing?telemetry?transport)?是一種輕量級(jí)的消息傳遞協(xié)議,專門設(shè)計(jì)用于在資源受限的網(wǎng)絡(luò)環(huán)境中高效、可靠地傳輸數(shù)據(jù)。mqtt協(xié)議具有簡單、低開銷、低帶寬占用的特點(diǎn),尤其適用于物聯(lián)網(wǎng)(iot)設(shè)備、小型設(shè)備、移動(dòng)應(yīng)用間通信。
2、mqtt協(xié)議的安全機(jī)制有兩種實(shí)現(xiàn):一是mqtt協(xié)議支持用戶名/密碼認(rèn)證,以確保只有授權(quán)的設(shè)備能夠連接到mqtt服務(wù)器,也就是說每個(gè)設(shè)備分配一個(gè)唯一的用戶名和密碼,并在服務(wù)器端進(jìn)行驗(yàn)證,以確保服務(wù)器對(duì)客戶端的身份確認(rèn)。二是,為了確保這種通信的安全性,特別是當(dāng)涉及敏感數(shù)據(jù)或遠(yuǎn)程控制指令時(shí),mqtt?通常依賴于?transport?layersecurity?(tls)?或其前身?secure?sockets?layer?(ssl)?來提供加密、身份驗(yàn)證和數(shù)據(jù)完整性保護(hù),實(shí)現(xiàn)服務(wù)器和客戶端的身份驗(yàn)證與加密傳輸。
3、然而mqtt協(xié)議使用用戶名/密碼認(rèn)證的安全機(jī)制,其用戶名/密碼在客戶端和服務(wù)器均是明文儲(chǔ)存和傳輸,攻擊者能輕易竊取設(shè)備的用戶名/密碼。而mqtt協(xié)議與tls協(xié)議結(jié)合使用,雖然可以保證數(shù)據(jù)的安全傳輸和通信雙方的身份驗(yàn)證,但tls協(xié)議中使用到的密碼算法、數(shù)字證書等均為國際算法與國際證書,不符合密碼合規(guī)性要求。
4、mqtt協(xié)議工作在tcp/ip協(xié)議族之上,雖然mqtt本身只要求基礎(chǔ)傳輸層能夠提供有序、可靠的雙向傳輸字節(jié)流,但它通常選擇使用tcp作為其主要的傳輸層協(xié)議,以確保連接的可靠性和數(shù)據(jù)的順序傳輸。
5、然而tcp/ip協(xié)議本身尚未實(shí)現(xiàn)協(xié)議的安全性功能。一是tcp/ip協(xié)議中以ip地址作為網(wǎng)絡(luò)節(jié)點(diǎn)的唯一標(biāo)識(shí),缺乏對(duì)主機(jī)或從機(jī)的可信的身份認(rèn)證措施,攻擊者可以模仿主機(jī)或從機(jī)發(fā)送惡意指令,雖然mqtt協(xié)議本身提供了如用戶名/密碼認(rèn)證進(jìn)行身份認(rèn)證的一些基本安全機(jī)制,但用戶名/密碼在客戶端和服務(wù)器均是明文儲(chǔ)存和傳輸,攻擊者能輕易竊取設(shè)備的用戶名/密碼;二是tcp/ip協(xié)議沒有對(duì)包內(nèi)數(shù)據(jù)進(jìn)行加密以及沒有提供數(shù)據(jù)完整性校驗(yàn)措施,攻擊者可以通過竊聽獲取通信傳輸?shù)年P(guān)鍵機(jī)密信息。
6、為了增強(qiáng)數(shù)據(jù)傳輸?shù)陌踩?,現(xiàn)有的方案是將mqtt協(xié)議與tls(傳輸層安全)協(xié)議結(jié)合使用,形成mqtt?over?tls的方案。tls為mqtt提供了三個(gè)基本安全目標(biāo):加密(confidentiality)、完整性(integrity)、以及認(rèn)證(authentication)。通過加密信息,阻止未授權(quán)的第三方獲取敏感信息;通過消息摘要等技術(shù)確認(rèn)消息在傳輸過程中未被篡改;通過證書和密鑰的機(jī)制確認(rèn)通訊雙方的身份。
7、但現(xiàn)有的方案mqtt協(xié)議與tls協(xié)議結(jié)合使用時(shí),首先必須保證使用的tls版本和算法庫是當(dāng)前被認(rèn)為是安全的,其次tls協(xié)議若錯(cuò)誤配置可能會(huì)暴露出安全隱患,或者加大系統(tǒng)的脆弱性,最后tls協(xié)議目前主流的密碼算法與證書均是國際密碼算法與國際數(shù)字證書,若使用在重要的信息系統(tǒng)或關(guān)鍵物聯(lián)網(wǎng)、車聯(lián)網(wǎng)等設(shè)備通信時(shí),無法通過密碼應(yīng)用與安全性評(píng)估的要求,存在密碼應(yīng)用不合規(guī)的情況。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明為了克服以上技術(shù)的不足,提供了一種基于國密密碼模塊的mqtt協(xié)議的安全通訊方法和系統(tǒng)來實(shí)現(xiàn)mqtt協(xié)議的安全通信,基于國密硬件密碼模塊,在mqtt協(xié)議中融合sm2算法簽名與驗(yàn)簽、并使用sm2公鑰對(duì)每個(gè)客戶端的用戶名和密碼進(jìn)行加密和存儲(chǔ),采用sm4算法對(duì)稱加解密mqtt協(xié)議傳輸?shù)臄?shù)據(jù),設(shè)計(jì)符合國密的mqtt協(xié)議,實(shí)現(xiàn)設(shè)備間mqtt協(xié)議的安全與合規(guī)通訊,保證數(shù)據(jù)的機(jī)密性。
2、本發(fā)明克服其技術(shù)問題所采用的技術(shù)方案是:本發(fā)明的第一個(gè)方面提出了一種基于國密密碼模塊的mqtt協(xié)議的安全通訊方法,?基于mqtt協(xié)議通訊的服務(wù)器和客戶端均配置有國密密碼模塊,其中客戶端為訂閱端或發(fā)布端,所述安全通訊方法具體包括:服務(wù)器和客戶端基于國密密碼模塊生成初始密鑰對(duì),并基于國密算法和初始密鑰對(duì)進(jìn)行簽名驗(yàn)簽從而實(shí)現(xiàn)服務(wù)器和客戶端之間的安全身份認(rèn)證;服務(wù)器和客戶端之間基于國密算法協(xié)商加密密鑰;客戶端發(fā)送基于加密密鑰和國密算法加密的mqtt協(xié)議的連接報(bào)文至服務(wù)器,進(jìn)行客戶端用戶名和密碼的驗(yàn)證;基于驗(yàn)證結(jié)果進(jìn)行基于加密密鑰和國密算法的mqtt協(xié)議的通訊。
3、進(jìn)一步的,所述服務(wù)器和客戶端基于國密密碼模塊生成初始密鑰對(duì),并基于國密算法和初始密鑰對(duì)進(jìn)行簽名驗(yàn)簽從而實(shí)現(xiàn)服務(wù)器和客戶端之間的安全身份認(rèn)證,具體包括:所述服務(wù)器和客戶端分別基于國密密碼模塊生成對(duì)應(yīng)的密鑰對(duì),并共享對(duì)方密鑰對(duì)中的公鑰;服務(wù)器broker與客戶端建立了tcp連接;服務(wù)器基于國密密碼模塊生成第一隨機(jī)數(shù),并發(fā)送至客戶端;客戶端基于國密密碼模塊生成第二隨機(jī)數(shù),并基于客戶端私鑰對(duì)第一隨機(jī)數(shù)和第二隨機(jī)數(shù)進(jìn)行簽名,并將簽名數(shù)據(jù)發(fā)送至服務(wù)器;服務(wù)器接收簽名數(shù)據(jù)后,基于客戶端公鑰驗(yàn)證簽名,若驗(yàn)證通過,則服務(wù)器基于服務(wù)器私鑰對(duì)第二隨機(jī)數(shù)進(jìn)行簽名,并將簽名數(shù)據(jù)發(fā)送至客戶端,若驗(yàn)證不通過,則關(guān)閉與對(duì)應(yīng)客戶端之間的連接;客戶端基于服務(wù)器公鑰驗(yàn)證簽名,若驗(yàn)證通過,則客戶端返回確認(rèn)消息至服務(wù)器從而完成對(duì)服務(wù)器的身份認(rèn)證,若驗(yàn)證不通過,則關(guān)閉與對(duì)應(yīng)服務(wù)器之間的連接。
4、通過sm2非對(duì)稱密鑰進(jìn)行簽名驗(yàn)簽從而進(jìn)行身份認(rèn)證。
5、進(jìn)一步的,所述服務(wù)器和客戶端之間基于國密算法協(xié)商加密密鑰,具體包括:服務(wù)器基于國密硬件密碼模塊生成對(duì)稱密鑰,基于客戶端公鑰對(duì)其加密得到加密密文,以及基于服務(wù)器私鑰對(duì)加密密文進(jìn)行簽名生成簽名消息,并將加密密文和簽名消息發(fā)送至客戶端;客戶端基于服務(wù)器公鑰驗(yàn)證簽名消息,并在驗(yàn)證通過后基于客戶端私鑰解密加密密文得到對(duì)稱密鑰,并返回確認(rèn)消息;服務(wù)器和客戶端均將對(duì)稱密鑰作為加密密鑰。
6、通過sm2非對(duì)稱密鑰和sm2非對(duì)稱加密進(jìn)行協(xié)商得到sm4對(duì)稱密鑰。
7、進(jìn)一步的,所述客戶端的每個(gè)設(shè)備在初始部署時(shí)分配唯一的客戶端用戶名和密碼,客戶端基于國密密碼模塊使用服務(wù)器公鑰對(duì)客戶端用戶名和密碼進(jìn)行加密。
8、根據(jù)sm2非對(duì)稱密鑰對(duì)用戶名和密碼進(jìn)行加密。
9、進(jìn)一步的,所述客戶端發(fā)送基于加密密鑰和國密算法加密的mqtt協(xié)議的連接報(bào)文至服務(wù)器,進(jìn)行客戶端用戶名和密碼的驗(yàn)證,具體包括:客戶端向服務(wù)器發(fā)送基于國密算法和加密密鑰加密的連接報(bào)文,其中,連接報(bào)文中至少包括基于服務(wù)器公鑰加密的客戶端的用戶名和密碼,服務(wù)器基于加密密鑰解密連接報(bào)文,并基于服務(wù)器私鑰解密客戶端的用戶名和密碼;服務(wù)器驗(yàn)證客戶端的用戶名和密碼,若驗(yàn)證通過,則服務(wù)器向客戶端回復(fù)對(duì)應(yīng)連接報(bào)文的回復(fù)報(bào)文,若驗(yàn)證不通過,則關(guān)閉與對(duì)應(yīng)客戶端之間的連接。
10、進(jìn)一步的,所述進(jìn)行基于加密密鑰和國密算法的mqtt協(xié)議的通訊,至少包括客戶端的訂閱端向服務(wù)器訂閱主題,具體包括:訂閱端向服務(wù)器發(fā)送基于國密算法和加密密鑰加密的訂閱報(bào)文中的主題信息和負(fù)載信息;服務(wù)器基于加密密鑰解密接收的主題信息和負(fù)載信息,并回復(fù)訂閱回復(fù)報(bào)文至訂閱端。
11、進(jìn)一步的,所述進(jìn)行基于加密密鑰和國密算法的mqtt協(xié)議的通訊,至少包括客戶端的發(fā)布端發(fā)布數(shù)據(jù),具體包括:發(fā)布端向服務(wù)器發(fā)送發(fā)布報(bào)文,并基于國密算法和加密密鑰加密的發(fā)布報(bào)文中的主題信息和負(fù)載信息;服務(wù)器基于加密密鑰解密接收的主題信息和負(fù)載信息,并回復(fù)發(fā)布報(bào)文的回復(fù)報(bào)文;服務(wù)器向訂閱端發(fā)送發(fā)布報(bào)文,并基于國密算法和加密密鑰加密發(fā)布報(bào)文中的主題信息和負(fù)載信息,訂閱端基于加密密鑰解密主題信息和負(fù)載信息后回復(fù)對(duì)應(yīng)發(fā)布報(bào)文的回復(fù)報(bào)文至服務(wù)器。
12、使用sm4對(duì)稱密鑰進(jìn)行加密數(shù)據(jù)傳輸。
13、進(jìn)一步的,所述國密算法采用sm2非對(duì)稱算法和sm4對(duì)稱算法的組合,其中,sm2非對(duì)稱算法用于簽名驗(yàn)簽和協(xié)商sm4對(duì)稱密鑰,所述sm4對(duì)稱算法用于數(shù)據(jù)加密傳輸。
14、進(jìn)一步的,所述初始密鑰對(duì)為sm2密鑰對(duì)。
15、本發(fā)明的另一個(gè)方面提出了一種運(yùn)行上述基于國密密碼模塊的mqtt協(xié)議的安全通訊方法的安全通訊系統(tǒng),安全通訊系統(tǒng)至少包括基于mqtt協(xié)議通訊的服務(wù)器和若干客戶端,所述服務(wù)器和客戶端均至少配置有國密密碼模塊,所述國密密碼模塊至少包括初始密鑰單元,簽名與驗(yàn)簽單元、非對(duì)稱加密解密單元,隨機(jī)數(shù)單元、密鑰單元和對(duì)稱加密解密單元,所述初始密鑰單元用于生成設(shè)備初始非對(duì)稱密鑰;所述隨機(jī)數(shù)單元用于生成隨機(jī)數(shù);所述密鑰單元用于生成對(duì)稱密鑰;所述簽名驗(yàn)簽單元用于基于隨機(jī)數(shù)和初始非對(duì)稱密鑰進(jìn)行簽名驗(yàn)簽從而實(shí)現(xiàn)服務(wù)器和客戶端的安全身份認(rèn)證;所述非對(duì)稱加密解密單元用于對(duì)客戶端的用戶名和密碼基于初始非對(duì)稱密鑰進(jìn)行加密和解密,以及用于基于對(duì)稱密鑰和初始非對(duì)稱密鑰協(xié)商加密密鑰;所述對(duì)稱加密解密單元用于基于加密密鑰對(duì)mqtt協(xié)議傳輸?shù)膱?bào)文進(jìn)行加密和解密。
16、硬件國密密碼模塊具有國家密碼局頒發(fā)的商密產(chǎn)品型號(hào)證書,能夠滿足應(yīng)用系統(tǒng)的信息安全合規(guī)性要求,可用于對(duì)密鑰進(jìn)行安全管理/存儲(chǔ),且可提供密碼計(jì)算操作的硬件設(shè)備,該模塊一般通過擴(kuò)展或外部設(shè)備的形式連接到設(shè)備。
17、本發(fā)明的有益效果是:
18、1、通過配置硬件國密密碼模塊,實(shí)現(xiàn)密碼算法運(yùn)算、簽名驗(yàn)簽、密鑰生成以及產(chǎn)生隨機(jī)數(shù),從而支撐實(shí)現(xiàn)設(shè)備的國密算法mqtt協(xié)議通信,滿足應(yīng)用系統(tǒng)的信息安全合規(guī)性要求;
19、2、通過國密算法的數(shù)字簽名、密鑰協(xié)商、數(shù)據(jù)加密等技術(shù),能實(shí)現(xiàn)mqtt協(xié)議進(jìn)行通信和數(shù)據(jù)傳輸?shù)臋C(jī)密性、完整性和不可否認(rèn)性;
20、3、通過采用sm2簽名驗(yàn)簽進(jìn)身份認(rèn)證,并根據(jù)sm4算法和sm4對(duì)稱密鑰的進(jìn)行用戶名和密碼驗(yàn)證,多重確認(rèn)通訊雙方的身份,保證mqtt協(xié)議的傳輸安全性。