安全數據傳輸平台項目——總結1.0 --- 報文規則部分。


項目描述:

已經和組員完成安全數據傳輸平台項目有好一會了,最近也比較忙,所以抽周末一上午的時間來寫這篇博客。

首先先提我們的項目——安全數據傳輸平台。

一句話概括我們要解決的社會痛點:基於用戶互相通信間上安全的需求,通過對稱密鑰給信息包上安全。

我們要解決的需求有:1.用戶服務器與用戶客戶端一對一通信上安全的需求。

          2.用戶服務器與多個用戶客戶端通信過程中,利用不同密鑰分別上安全的需求。

          3.用戶服務器集群能在某一用戶服務器崩潰的情況下,完成處理與其通信客戶端保存繼續正常通信的需求。

          4.用戶客戶端下存在級聯,客戶端級聯的客戶端主機 需要與 客戶端通信上安全的需求。

          5.密鑰的分配,密鑰的定時更新,密鑰更新時用戶通信保持正常和穩定。

          6.機器崩潰時用戶可以手動協商密鑰。

而我的任務就是完成我們項目組件中:Linux下搭建密鑰協商服務器與Linux與Windows密鑰協商客戶端以及共享內存設置部分。

今天博客的內容主要圍繞密鑰的生成與分配展開,涉及到的知識點有——ASN.1 DER編碼規則,socket。

 

提出疑問:

《計算機網絡》(謝希仁)里就有提及,對稱性密鑰的實現有兩大難點:

  1.如果有n個用戶,每個用戶都渴望和剩下n-1個用戶建立連接,那么就一共要分配n(n-1)/2個密鑰,這就是一個很典型的n^2問題。

  2.網絡環境是復雜又不安全的,所以密鑰的分配也是一個很大的問題。

 

解決疑難:

針對第一個問題,因為我們的測試環境下用戶並不是很多,完全可以用四位數字來概括所有用戶。將來如果真的存在這種需求,那么就要利用多個密鑰,以一個主密鑰和多個副密鑰來加密 和 解密用戶的信息包,這樣其實多個用戶可以共用的密鑰時一樣的,只是他們加密與解密的副密鑰次序有了差別。

 

我們項目制作過程中最主要遇到的還是密鑰分配的問題,我們的大致思路是:由用戶1生成一個隨機數並發送給用戶2,然后再由用戶2生成一個隨機數並發送,雙方通過協商生成一個密鑰,並將其存入數據庫(同時在數據庫中完成注冊),要記住一個宗旨:密鑰的分配過程一定不可以涉及網絡。

 

以上,就要涉及到我的任務:密鑰協商服務器和密鑰協商客戶端的涉及!

 

當然,涉及密鑰協商服務器和密鑰協商客戶端並沒有設計兩個socket,一個connect一個accept這么簡單。

我們首先要注意一個問題:如果用戶雙方系統不一致怎么辦???64位系統的數據到32位系統是否就會出現信息丟失。

 

所以要引入今日重點——報文規則。

 

今日重點:

  我在這里着重介紹幾個著名的報文規則:

  1.HTTP與HTML

    HTTP就是我們著名的超文本傳輸協議,迄今為止用的最廣泛的網絡協議。HTML即為文本標記語言,HTML是一種規范,一種標准,它通過標記符號來標記要顯示的網頁中的各個部分。HTML在HTTP上運行,通過HTTP也可以傳輸圖片,影像,數據等內容。

  2.XML

    XML為可擴充標注語言,由SGML所精簡而來的一種通用標注語言,現在XML被廣泛用於四方面:1.應用於具有不同復雜格式的不同數據源間的交互。2.應用於大量運算負荷分布在客戶端的情況,用戶可以根據自己的需求選擇和制作不同的應用程序以處理數據,而服務器只需發出同一個XML文件。3.應用於將同一數據以不同的形式表現出來。4.應用於網絡代理對所取得的信息進行編輯、增減以適應個人用戶的需要,形成具有個人特色的數據文件。

    XML可以很好的滿足我們的需求,因為我們傳遞的密鑰協商信息包實際上就是一個結構體,里面包含了不同的數據類型,當然XML也有其局限性,它增加了信息包的內容,為了正確的傳輸和信息交互犧牲了一定的空間。

  3.JSON

    JSON是一種輕量級的數據交換格式。它並不是編程語言,其語法只支持字符串、數值、布爾值與NULL以及在此基礎上的對象和數組。其讀寫成本低,極其適合互聯網上的數據傳遞。

    JSON采用與編程無關的文本格式,只要該語言按JSON規則,就可以解析數據,跨平台無阻礙。

    JSON的語法實際上就是以鍵值對的形式存放數據,鍵值對間以‘,’相隔,鍵與值之間以‘:’相隔。

  4.用戶自定義

    這個往往應用於公司內部,因為報文的復雜而且繁雜,所以需要自定義報文規則,針對win和Linux平台內存規則的不同,還有指針內部資源的獲取,還有大小端字節序的不一致,綜合考慮,自定義報文規則不失為一種明智的抉擇。

  5.ASN.1 DER編碼規則。

    ASN.1抽象語法標記,ASN.1可以理解成一個標准,描述了如何對一個數據進行表示、編碼、傳輸和解碼。它提供了一整套正規的格式用於描述數據對象的結構。

    DER為ASN.1標准下的其中一種編碼規則,表示識別名編碼規則。

    ASN.1提供了一些基本的預定義數據類型:

    https://baike.baidu.com/item/ASN.1/498523

    這里我調用了ITCAST的DER編解碼庫和日志打印庫(windows下運行要屏蔽日志打印頭文件)。

    以下是其githup地址:

    https://github.com/gitsshylalala/DER.git


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM