Tls
TLS 握手強度
我最近問了這個問題,但有人告訴我,簡單地發送您要使用的加密方法的標識符並不省事。例如,假設伺服器有加密方法 3 5 和 6,客戶端有 2、3 和 6。
客戶端發送它可以執行的方法,伺服器檢查可能的最高版本。中間的人可以截獲來自客戶端的消息並且只發送3個,所以伺服器將使用最弱的通用方法。顯然你不想要這個,我們希望他們使用 6(在這種情況下最高是最強的)。
我試圖弄清楚為什麼 TLS 沒有這個弱點(除了 FREAK 錯誤),但不知何故我不知道為什麼 TLS 做得更好。所以我的問題是:TLS 如何確保使用伺服器和客戶端共享的最佳加密方法?
背景資料
我目前有一段程式碼,它有一個加密層(非常舊),它目前發送 00 表示它需要使用我們的舊加密方法,但 01 將是 TLS(我將要實現)但是有 TLS 和不安全確定加密方法的交易所顯然與我們不安全的交易所一樣強大。但是為了保持向後兼容,我們不能簡單地將舊的加密方法切換為 TLS,所以我們需要進行這種交換。這就是為什麼我需要知道如何正確地做到這一點。
TLS 如何確保使用伺服器和客戶端共享的最佳加密方法?
它不是。伺服器負責選擇密碼,不能保證它會選擇最好的。但是,如果中間人篡改 ClientHello 以更改提供給伺服器的密碼,那麼這種篡改將在握手結束時被檢測到,因為它們是對所有握手數據的最終簽名,並且此簽名將不再匹配。