Tls
TLS 握手相對於預共享公鑰的優勢
讓我們假設以下設置:
供應商製造物聯網設備,每個設備都能夠生成單獨的私鑰/公鑰對。僅公開公鑰,假設私鑰在設備內部受到保護。這些公鑰的數據庫由供應商提供,並在帶外傳輸給每個客戶端。
對於與設備的每個連接,客戶端:
- 獲取目標設備的 ID
- 查找公鑰
- 用公鑰加密一個新的對稱密鑰(例如 AES)
- 傳輸它,AES 加密的數據和 AES 加密的 MAC
- (進一步的雙向數據傳輸)
只有選定的設備才能解密對稱密鑰,從而解密其餘數據。數據完整性由 MAC 驗證。
設備部署到現場後隨時可能發生攻擊,但請關注協議。不應考慮物理側通道攻擊或設備本身的其他修改。供應商是值得信賴的。不需要客戶端身份驗證。
問題
與預共享公鑰相比,TLS 握手有哪些優勢?
簡單的公鑰數據庫將替換為供應商簽署的證書以驗證設備。
完美的前向保密將是一個優勢,不需要 TLS 的其他額外功能(如密碼套件選擇或會話恢復)。
與預共享公鑰相比,TLS 握手有哪些優勢?
實際上TLS 支持 raw public keys,所以你實際上可以用 TLS 做你剛才描述的事情。現在,對於初學者來說,它會為你帶來的是這樣一個事實,即你得到一個經過大量分析的協議,它降低了安全性,它有一些非常好的實現,並且你可以更容易/更便宜地購買好的安全性審查/諮詢具體實施。
傳輸它,AES 加密的數據和 AES 加密的 MAC
例如,TLS 不這樣做(在握手中),因為這被稱為MAC-then-Encrypt,這是非常不鼓勵的,並且過去曾導致對草率實施的攻擊。此外,TLS 還具有例如防止重放攻擊的措施,即攻擊者只需再次向您的設備發送與前一個會話相同的握手和相同的記錄數據。
除此之外,您不必使用 TLS 的全部靈活性。您可以關閉並剝離除 TLS 1.2 之外的任何程式碼,例如帶有 RSA 和 GCM 的 ECDHE。這還有一個好處,即您可以只使用已知良好的庫,而不必滾動您自己的協議,從而節省開發時間、精力並從標準化中受益。