SSL協議:
HTTPS就是在普通的HTTP基礎上加上SSL協議變成安全的通訊協議的。
SSL就是利用非對稱加密來互通對稱加密的密鑰的。
對稱加密就是一個密鑰,既可以加密也可以解密。非對稱加密就是有兩把密鑰(公鑰,私鑰),一把只能加密,一把只能解密。
小紅給小灰公鑰Key1的同時,自己手裏還有一把私鑰Key1。
小灰生成的密鑰Key2,在之後二者通訊加密要用的密鑰。由於這個時候Key2被Key1加密了,只有小紅手裏有對應的可以解密的私鑰Key1,包括小灰也不能破解公鑰Key1來獲取裏面的密鑰Key2,他只是能利用公鑰Key1來加密而不能解密,但是由於密鑰Key2是他自己生成的,所以他不用界面也知道里面是什麼。
現在再回傳的過程中,如果有人劫持了數據包,他沒有小紅手裏的私鑰Key1,劫持了也解密不出來裏面的密鑰。等到小紅收到了數據包,她用手裏的私鑰Key1就能知道小灰生成的密鑰是什麼了,二者就用這個密鑰key2加密數據。
由於沒有第三個人知道這個密鑰Key2 是什麼,所以也就無法破解二者傳輸的數據了。
證書:
如果第三方不是試圖破解小紅生成的公鑰Key1,而是直接替換成了自己的密鑰Key3,等到小灰往回發數據的時候,就是用的這個Key3加密的數據,第三方又劫持下來,解密裏面的預定密鑰Key2而且把公鑰Key3再替換爲小紅剛開始生成的Key1,這樣當收到數據的時候他也不能發現數據被劫持了。
爲了避免這種情況,引入證書機制:
還有一種情況:
證書的作用就是驗證服務器端的身份,CA也是利用非對稱加密來加密服務器端的網址信息(標識身份用)和生成的公鑰(之後傳輸數據用),當客戶端收到證書的時候解密(本地客戶端都有各種機構的密鑰)出證書的裏的簽名。客戶端同樣的利用證書機構的方法生成一個新的簽名,如果兩個簽名一致就說明證書有效。
證書細節:
證書內容裏包含了客戶端的信息,所以如果第三方修改了公鑰(因爲證書內容不能修改,修改就會被發現。那麼只修改了服務器端的公鑰加密之後生成的簽名肯定不正確),證書驗證肯定不會通過。