一文弄懂HTTP,HTTPS,對稱加密,非對稱加密,數字證書

HTTP:明文傳輸(不安全)

要弄清楚HTTPS,先來說說加密傳輸的演變:

1.首先,對稱加密(不安全;一把密鑰;密鑰明文傳輸,數據加密傳輸。):分兩步,服務器生成密鑰,發給客戶端,這樣客戶端和服務器都有這把密鑰了;然後雙方數據都用這個密鑰加密傳輸。這種方式中間人雖然看不到明文數據,但是可以截取密鑰,從然可以解密數據,不能保證服務器的密鑰是否安全傳到客戶端。主要算法有DES和AES等

2.其次,非對稱加密(不安全,客兩套密鑰:戶端和服務器各自擁有一套私鑰和公鑰,各自的私鑰和公鑰能彼此解密):分兩步,首先要拿到對方的公鑰;然後服務器和客戶端分別用對方的公鑰來加密數據,對方用私鑰解密。這樣雖然公鑰是明文傳輸,但是各自的私鑰不公開,所以相對與對稱加密來說較爲安全。主要算法有RSA、Elgamal、揹包算法、Rabin、Diffie-Hellman、ECC(橢圓曲線加密算法)等。(補充:由於非對稱加密加密和解密過程耗費時間長,所以還有一種將對稱加密和非對稱加密相結合的方式:非對稱加密傳密鑰,對稱加密傳數據,只用到了服務器端的一套公私鑰:客戶端在收到服務器的公鑰後,用這個公鑰生成一個密鑰R,然後將密鑰R回傳給服務器,這樣服務器和客戶端同時擁有了這個密鑰R,然後用這個密鑰R加密傳數據,相當於對稱加密),儘管如此,還是不安全的,理由:問題出在第一步明文傳公鑰的時候,中間人可以拿到公鑰,自己再冒充服務器有一套公私鑰,發自己的公鑰給客戶端,客戶端生成祕鑰R回來時,又被中間人截取,中間人再用第一步拿到的服務器公鑰加密祕鑰R回給服務器。這樣中間人能拿到祕鑰R,數據在中間人這裏相當於明文存在。客戶端不能確定對方公鑰是不是屬於服務器,所以也不安全

3.最後,數字證書(爲了能確認公鑰屬於服務器):a.找一個有公信力的認證中心(CA),服務器在給客戶端傳輸公鑰的過程中,會把公鑰以及服務器的個人信息通過Hash算法生成信息摘要;b.用CA提供的私鑰對信息摘要進行加密來形成數字簽名;c.把原來沒Hash算法之前的個人信息以及公鑰 和 數字簽名合併在一起,形成數字證書。客戶端拿到這份數字證書之後,就會用CA提供的公鑰來對數字證書裏面的數字簽名進行解密來得到信息摘要,然後對數字證書裏服務器的公鑰以及個人信息進行Hash得到另外一份信息摘要。最後把兩份信息摘要進行對比,如果一樣,則證明這個人是服務器,否則就不是。這樣,就可以保證服務器的公鑰安全着交給客戶端了。至於CA的公私鑰,服務器一開始就會申請,客戶端也會申請或者是下載。由於有時間差,中間人不可能同時擁有CA給你的這一套公私鑰,也就保證了服務器的公鑰安全傳輸。

HTTPS就是在HTTP基礎上加了一層加密層(數字證書)。

以上純屬個人理解,如有不當之處,望指正!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章