你在問什麼是通常所說的「密鑰管理」的一部分。如果你谷歌這個詞,你會發現很多有趣的閱讀。您可能會發現您的解決方案需要解決的關鍵管理還有其他方面的問題,比如撤銷和輪換。
在您所關注的密鑰管理的特定部分,您需要弄清楚如何讓兩個節點相互信任。這意味着你必須確定一個你信任的單獨的東西來建立節點的信任。有兩種常見方法:
信任第三方。這是我們用於我們訪問的大多數網站的模型。當我們的計算機被創建時,受信任的第三方創建設備以便已經瞭解並信任某些實體,如Verisign。當我們通過HTTPS聯繫網站時,瀏覽器會自動檢查Verisign(或其他可信的第三方證書頒發機構)是否同意這是它聲稱的網站。公鑰密碼學的神奇之處在於它是如何工作的,這是一個完全獨立的話題,我建議你調查一下(只是谷歌:))。
單獨的安全通道。在這個模型中,我們使用一個單獨的頻道,就像一個將密鑰從一個節點轉移到另一個節點的管理員一樣。管理員可以以他/她希望的任何方式執行此操作,例如通過U盤通過sneakernet攜帶的加密數據,或者數據可以通過已經引導的單獨SFTP服務器進行傳輸,並且可以驗證它是否安全(如他/她自己的內部認證機構)。其中一些變化是在名片上共享PGP密鑰(如果您相信給予您名片的人是您想與之通信的人),或通過電話呼叫密鑰所有者並口頭確認您收到的數據的散列與他們發送的數據的散列相同。
有上線的密鑰交換協議 - 你可以看看他們,甚至可能在維基百科上,使用短語「密鑰交換」,但你必須要小心,他們實際上保證你需要的東西確定 - 就像協議如何驗證通信信道的另一端一樣。例如,Diffie Hellman保證你在交換密鑰前不會交換密鑰的實際內容,但你不知道與誰通信 - 這是一個匿名密鑰交換模型。
你還提到你擔心消息重播。現代安全通信協議,如SSH和TLS可以防止這種情況發生。任何優秀的協議都會收到有關其安全屬性的分析,這些屬性在維基百科上經常詳細描述。
哦,你不應該創建自己的協議。關於如何編寫安全協議,分析現有協議和安全特性(或缺少安全特性)有很多內容。除非你打算成爲這個話題的專家(這將需要數年和數千頁的閱讀),你應該採取阻力最小的路徑,只使用一個衆所周知的,行使良好,備受尊敬的協議,你需要的工作。
來源
2013-08-05 19:18:06
atk
可能更傾向於對http://security.stackexchange.com –
有雙方交換的公共密鑰提前定義並輸入給客戶。這是唯一的方法 - 但即使他們被劫持的個人電腦也可能遭到內存劫持等。簡單的回答:你不能。更復雜的答案:防止通過網絡發送敏感信息並讓用戶使用其他方式傳輸信息。 –
以前一直在考慮持續監控的問題:p請參閱[Diffie-Hellman](http://en.wikipedia.org/wiki/Diffie-Hellman_key_exchange)(例如不推薦)。重點是在安全通道上交換密鑰是安全的。 – keyser