在互聯(lián)網獲取信息的過程中,HTTPS是常用的加密信息傳輸方式。當訪問某個站點時,瀏覽器的地址欄中出現(xiàn)一個綠***標,表示該站點支持HTTPS信息傳輸。HTTPs是我們常用的HTTP協(xié)議和某種加密協(xié)議(即HTTP+s)的混合體,它可以是TLS(安全傳輸層協(xié)議)或SSL(安全套接字層),但我同意另一個抽象的泛化,HTTP+security。
首先,HTTPS不是這項加密技術的正式名稱。HTTPS表示“在TLS/SSL上實現(xiàn)的HTTP協(xié)議”。因此,HTTP下的TLS/SSL層實際上是用來實現(xiàn)加密的。
HTTPS和HTTP有什么區(qū)別,安全性如何?
讓我們看看TLS/SSL實現(xiàn)的主要機制:
1、證書:通過第三方有名證書頒發(fā)機構(如VeriSign)驗證和保證網站的身份,防止他人偽造網站身份,與未知用戶建立加密連接。
2、密鑰交換:通過公鑰(非對稱)加密,由網站服務器與用戶協(xié)商生成公共會話密鑰。
3、會話加密:通過機制協(xié)商的會話密鑰,使用對稱加密算法對會話內容進行加密。
4、消息驗證:消息驗證算法用于防止加密信息在傳輸過程中被篡改。
通過上述機制,保護用戶與網站之間的傳輸內容,從而獲得高安全性。然而,任何加密方法都不是安全的。事實上,上述機制可能存在風險:
1、證書:如果有人偽造證書,瀏覽器會發(fā)出警告,提醒用戶該網站的證書可能是偽造的,用戶應停止訪問,但如果忽略瀏覽器的警告,您的會話信息可能會被偽造者竊取。此外,如果第三方證書頒發(fā)機構受到攻擊,攻擊者竊取頒發(fā)的證書密鑰,就可以偽造相應的網站證書,完全欺騙瀏覽器的安全機制。這樣的例子確實發(fā)生過。
2、密鑰交換:RSA是常用的公鑰加密算法,通常非常安全。
3、會話加密:AES-256(cbcmode)是一種應用非常廣泛的加密算法,使用256位密鑰來表示其高安全性,如果使用128位密鑰(AES-128),則安全性較差。
4、消息驗證:SHA1,這是一個哈希算法。SHA1比MD5有更好的安全性,但是如果使用sha256,安全性會更好。
很抽象,不是嗎?讓我們用“通行證”來描述每個人年輕時的所作所為。
HTTPS協(xié)議
為了解決這個問題,HTTPS采用了“加密”的方式。出名的原始加密方法是對稱加密算法,即雙方約定一個密碼,用哪個字母代替哪個字母等。現(xiàn)在我們通常使用一種稱為AES(高級加密算法)的對稱算法。
對稱加密算法是指用于加密和解密的密鑰是相同的。
AES從數學上保證,只要你使用的密鑰足夠長,就幾乎不可能破解它(除非光子計算機能破解)
我們先假設沒有鑰匙密文是不能破解的,然后再回到這個教室。你把AES加密的內容寫在紙上,就要發(fā)出去了,你突然想,ta沒有密鑰怎么解密內容,或者怎么把密鑰給ta?
如果密鑰也寫在便條上,中間人仍然可以破解***便條的內容。也許在現(xiàn)實環(huán)境中,你有其他的方法通過某種安全的渠道把密鑰發(fā)送給ta,但是在Internet上實現(xiàn)起來比較困難。畢竟,不管怎樣,數據都必須經過這些路線。
所以聰明人發(fā)明了另一種加密算法——非對稱加密算法。此加密算法生成兩個密鑰(key1和key2)。對于key1加密數據,key1本身無法解密,key2需要解密;對于key2加密數據,key2本身無法解密,只有key1可以解密。