利用MQTT和SSL實現雙向CA安全授權的方法與流程
2023-11-10 12:03:02 5

本發明涉及ca安全授權技術領域,具體涉及一種利用mqtt和ssl實現雙向ca安全授權的方法。
背景技術:
mqtt(messagequeuingtelemetrytransport):
由ibm開發的一個即時通訊協議,使用發布/訂閱消息模式,提供一對多的消息發布。使用tcp/ip提供網絡連接。有三種消息發布服務質量:至多一次,至少一次,只有一次。
ssl(securesocketslayer安全套接層):
提供網絡通信安全及數據完整性的一種安全協議。tls與ssl在傳輸層對網絡連接進行加密。
衍生算法:
採用用戶的唯一的硬體設備id通過衍生算法衍生成用戶的個性密鑰,個性密鑰被分散保存到終端。
設備證書:
根據用戶設備id信息,運營商信息生成設備證書,證書由伺服器私鑰進行籤名。
有線電視網絡是未來社會發展中最重要的網絡資源.處於世紀之交的有線電視網未來面對的是數位化,網絡化,綜合信息交互化的機遇和挑戰;正處於從模擬轉向數字,單向廣播朝向雙向互動轉變;基本業務向擴展增值服務的拓展.數位化是調整傳輸信息的工具,網絡化是達到信息資源全民共享,信息化就是開展增值擴展服務.其中有條件接收(ca)是達到這個目標的技術基礎,也是我國文憑電視向高層次發展的一條必經之路。有條件接收是一種技術手段,它只容許被授權的用房使用某一業務,未經授權的用戶不能使用這一業務.它可以確保有線電視增值業務的正常收益.有條件接收系統(cas)正是實現功能的系統.計算機代數。ca也被用在有線數位電視行業中的加密,對流媒體文件進行ca加密,並需要進行解密後用戶才能正常收看,以此來對用戶進行管理,並防止了信號的私自盜用。
為了實現ca的雙向功能,需要在用戶和伺服器之間建立一種安全可靠的雙向通訊鏈路,同時需要保證用戶和伺服器數據安全。
技術實現要素:
本發明克服了現有技術的不足,提供一種利用mqtt和ssl實現雙向ca安全授權的方法。
為解決上述的技術問題,本發明採用以下技術方案:
一種利用mqtt和ssl實現雙向ca安全授權的方法,所述的方法包括以下步驟:
授權推送流程:
服務端將用戶的授權劃分不同類型,分別為每種類型的授權設計一個主題,針對用戶發送的授權主題設計為:
/userid/{用戶id}/{授權類型},
其中消息體內容為授權內容;
mqtt支持定義通配符主題,對於這類主題,終端訂閱的主題為:
/userid/{用戶id}#
其中,用戶id為當前用戶自己的id,#表示訂閱所有以/userid/{用戶id}開頭的主題;
鏈路安全認證過程:
採用標準的ssl雙向認證流程,由終端公鑰證書驗證服務端合法性,由伺服器使用終端對應的公鑰證書驗證客戶端合法性;
數據安全性保護:
由設備id和運營商信息為每個設備衍生一個不同密鑰,出廠時將該密鑰寫入到設備中,服務端和該設備通訊的數據採用該密鑰進行加密,同時進行籤名。
更進一步的技術方案是所述的授權推送流程還包括:
步驟1,為設備的每個授權定義一個序號,每個設備擁有自己的授權序號,這個序號在每次授權發生變更時加1;
步驟2,系統定義一個公共的主題,用於終端收到每類授權時上報自己的這類授權的序號;
步驟3,伺服器為每個設備所有待推送授權存放到一個隊列中;
步驟4,伺服器首先推送一個授權,等待接收該終端上報這個授權的版本;
步驟5,伺服器收到終端上報的該授權的序號時,如果授權不一致,再推送一次該授權;
步驟6,進行下一個授權的推送,形成一個迭代的過程,直到把所有的授權推送完成。
更進一步的技術方案是還包括:當伺服器發現終端某個授權序號和服務端不一致時,觸發該授權推送流程。
更進一步的技術方案是所述的數據安全性保護步驟中,出廠時將所述密鑰通過燒寫工具寫入到otp或flash中。
更進一步的技術方案是如果將所述密鑰寫入到flash中,則採用分散算法將所述密鑰分散為多組數據,然後分別存放到不同的地方,使用時通過還原算法還原出密鑰使用。
與現有技術相比,本發明實施例的有益效果之一是:本發明採用mqtt作為通信基礎,採用雙向ssl保證鏈路安全,使用設備個性密鑰保證數據安全來實現ca雙向安全授權功能。
附圖說明
圖1為本發明一個實施例中一種觸發授權推送流程圖。
圖2為本發明一個實施例中另一種觸發授權推送流程圖。
具體實施方式
本說明書中公開的所有特徵,或公開的所有方法或過程中的步驟,除了互相排斥的特徵和/或步驟以外,均可以以任何方式組合。
本說明書(包括任何附加權利要求、摘要和附圖)中公開的任一特徵,除非特別敘述,均可被其他等效或具有類似目的的替代特徵加以替換。即,除非特別敘述,每個特徵只是一系列等效或類似特徵中的一個例子而已。
下面結合附圖及實施例對本發明的具體實施方式進行詳細描述。
在下面的詳細描述中,出於解釋的目的描述了許多具體描述以便能夠徹底理解所公開的實施方案,然而,很明顯一個或多個實施方式可以在不使用這些具體描述的情況下實施,在其他實例中,示意性地顯示已知結構和裝置,以便簡化附圖。
根據本發明的一個實施例,本實施例公開一種利用mqtt和ssl實現雙向ca安全授權的方法,具體的,該利用mqtt和ssl實現雙向ca安全授權的方法包括以下步驟:
授權推送流程:
服務端將用戶的授權劃分幾種類型,分別為每種類型的授權設計一個主題,針對用戶發送的授權主題設計為:
/userid/{用戶id}/{授權類型}
其中消息體內容為授權內容。
mqtt本身是支持定義通配符主題的,對於這類主題,終端訂閱的主題為:
/userid/{用戶id}#
其中用戶id為當前用戶自己的id,#表示訂閱所有以/userid/{用戶id}開頭的主題,這樣設計後只要服務端向/userid/{用戶id}/{授權類型}主題發送信息,該設備(且只有該設備,其他設備不會訂閱其他設備的主題)立即就能收到發送的授權數據。從而實現授權過程。
進一步的,對於mqtt伺服器,會持久化最後一條消息,這樣會導致一個問題,當一個終端設備長期沒有開機,在這個時期中可能針對該設備有多條授權,如果把所有的授權都發送給mqtt伺服器會導致中間其他授權丟失。為了解決問題我們進行了如下設計:
步驟1,為設備的每個授權定義了一個序號,每個設備擁有自己的授權序號,這個序號在每次授權發生變更時加1。
步驟2,系統定義了一個公共的主題,用於終端收到每類授權時上報自己的這類授權的序號。
步驟3,伺服器為每個設備所有待推送授權存放到一個隊列中
步驟4,伺服器首先推送一個授權,等待接收該終端上報這個授權的版本。
步驟5,伺服器收到終端上報的該授權的序號,如果授權不一致,再推送一次該授權(出現這種情況是上一個授權推送的過程中用戶的授權又發生了變更)。
步驟6,進行下一個授權的推送,形成一個迭代的過程,直到把所有的授權推送完成。
另外:終端上線時會主動上報一次所有授權的序號,伺服器發現終端某個授權序號和服務端不一致觸發該授權推送流程,如圖1和圖2所示。
鏈路安全認證過程:
採用標準的ssl雙向認證流程,由終端公鑰證書驗證服務端合法性,由伺服器使用終端對應的公鑰證書驗證客戶端合法性。
數據安全性保護:
由設備id和運營商信息為每個設備衍生一個不同key,出廠時將該key(燒寫工具,該工具不會對外提供)寫入到設備中(otp或flash),如果寫入到flash中的話採用分散算法將key分散為多組數據,然後分別存放到不同的地方,使用時通過還原算法還原出密鑰使用。服務端和該設備通訊的數據採用該密鑰進行加密,同時進行籤名。
在本說明書中所談到的「一個實施例」、「另一個實施例」、「實施例」等,指的是結合該實施例描述的具體特徵、結構或者特點包括在本申請概括性描述的至少一個實施例中。在說明書中多個地方出現同種表述不是一定指的是同一個實施例。進一步來說,結合任一個實施例描述一個具體特徵、結構或者特點時,所要主張的是結合其他實施例來實現這種特徵、結構或者特點也落在本發明的範圍內。
儘管這裡參照發明的多個解釋性實施例對本發明進行了描述,但是,應該理解,本領域技術人員可以設計出很多其他的修改和實施方式,這些修改和實施方式將落在本申請公開的原則範圍和精神之內。更具體地說,在本申請公開權利要求的範圍內,可以對主題組合布局的組成部件和/或布局進行多種變型和改進。除了對組成部件和/或布局進行的變型和改進外,對於本領域技術人員來說,其他的用途也將是明顯的。