2012-10-05 40 views
3

我剛剛在我的網站的帳戶創建頁面上設置了SSL。我期待着進一步擴展到我的整個網站。SSL如何實際加密信息?

雖然我有一個問題。 SSL加密如何實際工作並保護傳輸中的數據?此外,黑客通常有哪些方法可以攔截通過HTTP以純文本格式發送的數據?我知道有「嗅探」,但這總是唯一的方法,從來沒有任何闡述。有沒有辦法檢查通過HTTP和HTTPS發送的數據?比較和對比?

+0

[此問題](http://stackoverflow.com/a/313394/62576)和第一個答案中包含的鏈接可能會有所幫助。但這不是一個真正的編程問題;這是一個網絡問題,谷歌可能會提供許多網站提供解釋,如[這一個](http://en.wikipedia.org/wiki/Transport_Layer_Security)作爲搜索「SSL加密」的第一個結果。 –

+0

Security.SE上有許多類似的問題,例如:http://security.stackexchange.com/q/6290/2435 – Bruno

+0

@KenWhite,我想說這個問題可以在主題上(儘管它更好對Security.SE),只是因爲了解SSL/TLS的工作原理以及HTTPS的位置可以帶來更好(更安全)的編程。此外,使用SSL加密的搜索還會導致一些誤導性的答案,尤其是來自CA的頁面,其中許多頁面錯誤地將加密密鑰的大小與證書的類型相關聯。 – Bruno

回答

7

HTTP未以任何方式加密。任何可以嗅探HTTP客戶端和服務器之間的數據包的網絡嗅探器(大多數網絡適配器都支持用於此目的的混雜模式)可以查看HTTP數據。

另一方面,HTTPS數據是使用SSL/TLS加密的HTTP數據。 SSL/TLS在出站數據到達網絡之前對其進行加密,並在離開網絡後對入站數據進行解密。網絡上沒有純文本,所以數據包是否被第三方嗅探並不重要。沒有加密密鑰,被嗅探的數據就是垃圾。在SSL/TLS握手過程中,客戶端和服務器在任何應用程序數據可以交換之前相互協商加密密鑰,證書等。這確保了客戶端發送的加密數據只能被服務器解密,反之亦然。

關於從SSL/TLS加密連接攔截和提取純文本的唯一方法是使用中間人攻擊。這意味着SSL客戶端連接到MITM,然後MITM連接到SSL服務器,並在它們之間來回傳遞數據。 MITM需要訪問運行客戶端或服務器的網絡,並且必須能夠將客戶端的連接重新路由到自己而不是服務器。但是,如果可以這樣做,MITM可以與雙方協商其自己的SSL/TLS連接,以便擁有所有必要的加密信息。然後,它可以使用它與SSL客戶端協商的加密密鑰接收和解密SSL客戶端發送的數據,然後使用與SSL服務器協商的加密密鑰重新加密並將該數據傳遞給SSL服務器。反之亦然。除非您使用證書,否則SSL客戶端和SSL服務器不會知道他們正在與MITM交談,因此SSL客戶端和SSL服務器可以在初始握手期間驗證彼此的身份。 SSL/TLS不需要證書,但如果您擁有證書,則它們很好用。