TLS 1.2 中的 SHA 函式是什麼意思?
我正在查看 TLS 1.2 的技術文件,它說它使用 SHA(所以散列算法):
但是散列只是消化輸入,做使用者認證之類的事情。
TLS 應該提供“通信安全”。資訊本身是否使用 TLS 加密?它使用什麼加密算法?
您正在查看協議的一小部分。與任何其他通信協議一樣,TLS 結合了幾個加密原語來提供通信安全性。用於保護通信通道的算法由密碼套件描述,它結合了密鑰交換方法(通常是某種形式的Diffie-Hellman)、身份驗證方法(通常是簽名算法)、對稱身份驗證加密方法和雜湊與認證方法一起使用的算法。(這是典型的 TLS 1.2 密碼套件的格式。有幾種變體,我不會在這裡討論。TLS 1.3 使用相同的建構塊,但對選擇的編碼方式不同。)
TLS 協議從客戶端和伺服器建立安全通道的握手開始。對於基於簽名的密碼套件,這是最常見的情況,客戶端和伺服器進行 Diffie-Hellman 密鑰交換,讓他們獲得一個共享的秘密(預主秘密)。然後,他們從這個共享的秘密中派生出用於經過身份驗證的加密的秘密密鑰。觀察交換的對手無法獲得共享秘密。然而,一個積極的中間人可以打開與客戶端的連接並與伺服器打開另一個連接。為防止這種情況發生,伺服器計算握手期間交換的數據的雜湊值,並使用其私鑰對其進行簽名。客戶端計算它已交換的數據的雜湊值,並使用伺服器的公鑰驗證簽名。如果雙方正在交談,他們看到的數據相同,所以簽名是正確的。如果雙方都在與中間人交談,他們看到的數據不同,因此簽名不正確,客戶端會中止連接。
認證加密有許多不同的方法。在過去(直到 TLS 1.2),加密是使用 CBC 模式的塊密碼或流密碼 RC4 完成的,並且數據的身份驗證是使用 HMAC 完成的。從 TLS 1.2 開始,可以且首選使用適當的AEAD結構,例如 GCM 或 CCM 模式下的分組密碼,或其他一些經過身份驗證的密碼 ( ChaCha20+Poly1305 )。
我遺漏了許多零件和變體。有關 TLS 的更詳細概述,請閱讀SSL/TLS 如何工作?.