2013-02-07 45 views
1

我正在開發一個板卡,收集環境信息並將其數據發送回單個服務器進行處理。與這個服務器的唯一連接將由最終將被髮布到現場的電路板完成。大部分開發工作已經完成,但現在我想嘗試確保所有的連接。速度至關重要,因爲數據對實時性很敏感,並且板上有一個相當小的處理器(8Mhz)。由於我對此有着如此嚴格的控制,所以我希望在WiFi芯片和接受連接的基於Java的服務器之間共享相同的私鑰。這有望使我能夠通過SSL解密和加密消息,而不必每次連接其中一個板時都要經過握手過程。正確?在客戶端和服務器端爲SSL連接使用相同的私鑰

我一直在試驗幾天沒有運氣。但在深入挖掘兔子洞之前,我想確保這是可能的。謝謝,任何建議將非常感激。

+3

鑑於您處於這種狀況,聽起來像對稱加密更符合您的需求。 SSL是不對稱的,適用於您無法物理控制密鑰分發的情況。 – Aurand

+0

@Aurand - 這聽起來不錯,假設電路板的安全性得到了適當的控制。請注意,驗證簽名可能仍應完成,以防止重播攻擊等。無論如何,您可能需要在[Security](http://security.stackexchange.com/?as=1)網站上提出類似的問題。 –

+2

@Aurand:SSL/TLS使用*對稱*加密。非對稱加密僅用於握手期間的身份驗證。 – Bruno

回答

5

您似乎對whay SSL/TLS作品感到困惑。

在握手過程中,服務器顯示其證書(除非使用匿名密碼套件)以向客戶端證明其身份,然後同意與客戶端共享密鑰(通過交換預主密鑰) 。一旦握手完成,只有共享密鑰用於加密。 (更多詳細信息here。)

服務器的私鑰用於向客戶端證明其身份(通過其證書)。這樣做的目的是防止MITM攻擊。

將服務器的私鑰提供給客戶端只會允許任何客戶端模擬服務器。

您無法真正避免握手,如果您進行多次連續連接,也可以使用會話恢復功能。 您也可以使用TLS PSK(預共享密鑰)密碼套件(共享對稱密鑰,而不是私鑰),但它們在Oracle JSSE提供程序中不可用。

+0

謝謝先生!你的鏈接比維基百科,Java教程,谷歌的前10頁更有幫助!好東西。我試圖upvote,但可悲的是我還不能:( – Ben

+0

[Here](http:// security。stackexchange.com/a/3213/2435)是另一個可能感興趣的鏈接(關於小型SSL實現)。如果你的數據只有30個字節,你可以確實使用接收者的公鑰手動加密(這比SSL中使用的預主密鑰小)。這可以在受控環境中確定。但是,與往常一樣,如果設計自己的安全機制,則需要小心。 (大多數自制協議往往是不安全的。) – Bruno

相關問題