Key-Exchange
客戶端的密鑰不同,但伺服器上有 1 個密鑰
是否可以在許多(嵌入式)設備上擁有不同的密鑰,而在伺服器上只有一個密鑰(以連接所有這些設備)?這裡的要點是,當 1 台設備被入侵時,這並不意味著其他設備和伺服器之間的流量被入侵(即使伺服器不知道 1 台設備被入侵)。
背景:
所有設備都將在設備組裝過程中預先安裝一個密鑰,但必須可以通過網際網路進行更改。
目前 1 個系統中的所有設備(一個客戶可以有多個系統)具有相同的密鑰。但我試圖以這樣一種方式創建它,即它們都有不同的鍵,因此問題。
我想我知道
的: 1. 我相信 DVD 和 dvd 播放器使用類似的方案(ccr?),但這是壞的。
- 有可用於此場景的密鑰派生函式。
對於第 2 點,我不太確定如何使用它,我可以(在組裝設備時)製作鹽並將其與(例如)PBKDF2 和主密鑰(伺服器將擁有)一起使用,而不是儲存 PBKDF2 生成的密鑰和設備上的鹽並在設備連接時將鹽發送到伺服器,以便伺服器可以再次創建密鑰。雖然在此之後我也應該設置一個會話密鑰。最糟糕的是,鹽會很脆弱。
所以這對我來說似乎不是一個解決方案。
我應該如何正確地做到這一點,還是我看錯了,我應該做一些不同的事情嗎?
簡單的解決方案(使用對稱加密):
- 為每個設備分配一個 ID(可能已經存在)
- 在伺服器上儲存主密鑰
- 使用主密鑰上的 KDF 和設備 ID 為設備生成密鑰。然後您只需要設備上的設備 ID,伺服器可以根據需要使用主密鑰和設備 ID 重新創建該密鑰。當然,設備 ID 必須在連接階段傳輸。
- 如果您想更改設備的密鑰,您還需要對 KDF 進行一些隨機輸入,這些輸入也必須為每個設備 ID 儲存。
這樣,每個設備都有自己的密鑰,伺服器可以僅從他的一個主密鑰重建所有密鑰。但是,這種方式設備沒有共享密鑰並且無法相互通信。為此,您需要某種公鑰基礎設施,或者您可以將 IBE 方案應用於您的設備,伺服器持有主密鑰。但是,公鑰加密的效率比對稱加密和散列低很多,因此您必須檢查設備的限制。