我已經設計了一個簡單的通信協議,通過原始的TCP套接字來實現一些嵌入式設備之間的簡單消息傳遞。爲了說明問題,我的嵌入式設備是一個包含相對較小的微控制器的電子設備,它運行基本的嵌入式RTOS(基本上只提供任務優先級和消息隊列)和TCP/IP協議棧。爲TCP協議的預期用途是微控制器嵌入式設備通過TCP的簡單驗證和加密方法
- 啓用兩個或更多個「方框」在一個大廈
- 彼此通過LAN通信,從而允許一個框來通過因特網與外部的服務器進行數據交換。
我現在有一個消息協議在我很滿意的金屬箱之間工作。兩個盒子之間的基本消息傳遞過程基本上是:
- 框'A'啓動到'B'的套接字連接。
- 框'A'發送消息報告或命令序列。
- 框'B'以確認和/或命令響應作出響應。
- 框'A'關閉插座。
我現在想要做的是合併一些安全和認證級別。這裏最大的限制是我沒有任何一種操作系統或榮耀的TCP協議棧,可以爲我提供任何安全功能;我只有簡單的TCP堆棧,因此我必須在應用層面實施安全措施,並考慮到微控制器的限制。
我想滿足的目標是:
設備之間的身份驗證。爲了達到這個目的,我打算採取以下措施:
保存已知IP的表格,從中只能接受連接。
每次建立套接字連接時,都會首先交換唯一標識符。該號碼可能是給定設備的唯一序列號,並且必須爲其他設備所知。
加密數據,在數據包以某種方式被截取的情況下。據推測,我需要某種密碼算法,對於在小型微控制器上執行並不太「昂貴」,與編入所有設備的唯一密鑰結合使用。我見過的一個這樣的算法,看起來很緊湊,足以在我的代碼中實現,它是TEA(微型加密算法)。
我會非常感謝任何建議或指針。
我強烈建議使用SSL - 也許你可以找到一個輕量級的實現。即使你堅持認爲你必須手工實現它,你幾乎可以肯定會得到一些在功能上等同於SSL但質量和密碼正確性較低的東西。 –
你是否擔心中間人的攻擊? – Ariel
我認爲你應該閱讀這個:http://en.wikipedia.org/wiki/Extensible_Authentication_Protocol然後做它說的。它似乎完全適用於您的情況。手動加密很難,最好複製別人的工作。 – Ariel