【知識詳解】Https詳解

Https詳解

1.什麼是Https

Http + SSL = Https
一句話說:Https是身披SSL的Http,當使用了SSL後,Http先和SSL通訊,再由SSL和TCP通訊,

2.為什麼需要Https

在用Http協議時,主要可能存在以下三個問題。

  • 1.通訊使用明文,內容可能會被竊聽。
  • 2.不驗證通訊方的身份,可能遭遇偽裝。
  • 3.無法證明報文是否完整,可能遭到篡改

相應的,Https就是解決上述三個問題

  • 1.數據隱私:內容經過對稱加密。
  • 2.身份認證:第三方無法偽造身份。
  • 3.數據完整性:內容傳輸經過完整性校驗。

所以也可以這樣說:
Http+加密+認證+完整性保護=Https

image

3.加密

3.1 對稱加密

加密和解密使用同一個密鑰,想要加密資訊,那就需要把密鑰傳給客戶端,只能通過光碟拷給對方,不能在網路上傳輸,因為很容易就被其他人獲得密鑰,這樣誰都可以解密資訊了,失去了加密的意義。優點是效率高

3.2 非對稱加密

是一個密鑰對,一把公鑰,一把私鑰,公鑰任何人都能獲得,但是私鑰只有自己知道,發送方使用公鑰加密,接收方收到後使用私鑰解密,只有公鑰資訊也不能做到解密。缺點是加密解密需要一定時間。

3.3 對稱加密+非對稱加密

為了結合效率高且安全加密,使用兩者混合:在交換密鑰環節使用非對稱加密,數據傳輸時用對稱加密。具體是:發送密文的一方使用對方的公鑰加密對稱密鑰,然後用對稱密鑰加密文件,接收方用私鑰解密對稱密鑰,用對稱密鑰解密文件。

4.數字簽名

數字簽名是用來解決數據可能遭到篡改的情況,即校驗數據完整性。
實現:A在發送文件前,先用單向散列函數(Hash)生成消息摘要,然後再用A私鑰進行加密生成數字簽名,然後將其與文件和A公鑰一起發給B,B收到後先對文件使用相同的散列函數得到摘要,然後用A的公鑰解密數字簽名得到原來的摘要,兩個摘要進行對比,若不相同,則證明文件被篡改。
數字簽名的特點就是發送文件不加密,但不能更改,比如發送紅頭文件到各個地方或者官方群發特定通知,文件本身不是機密,但不能更改;
問題:A的公鑰怎麼傳給B,或者說如何證明這個公鑰就是A的。比如C可以用自己的私鑰生成數字簽名,然後把自己的公鑰給A,然後冒充B

image

5.CA證書

CA證書是為了解決通訊方身份被偽裝的問題。
CA機構使用散列函數將證書上的明文資訊(申請者公鑰,申請者資訊等)計算得到資訊摘要,然後用CA私鑰加密得到數字簽名,然後將證書和數字簽名一起發給客戶端,客戶端得到後,使用CA公鑰對數字簽名解密得到摘要,然後對證書計算得到摘要,將兩者對比如果一樣表示證書沒有被中間人篡改過,確認證書的合法性,也就是伺服器的公鑰是值得信賴的。

注:即使中間人有CA公鑰,能夠解析數字簽名並篡改,但是篡改完成後中間人仍然需要將證書重新加密,但是中間人沒有CA私鑰,無法加密,強行加密會導致客戶端無法解密(客戶端只認那幾個權威機構的公鑰)。

6.公鑰和私鑰

要明白兩種用法:

  • 1.公鑰加密,私鑰解密 -- 用於傳輸密文
  • 2.私鑰簽名,公鑰驗證 -- 用於簽名

第一種情景:既然是加密,那肯定不想讓別人知道我的資訊,只有我才能解密,所以公鑰加密,私鑰解密。這過程中資訊不可見,但是可能被篡改。
第二種情景:既然是簽名,我就不希望別人冒充我發資訊,只有我才能發,所以是私鑰簽名,公鑰驗證。這過程中資訊不可篡改,但是他人可以獲得。

7.Https工作流程

1、客戶端發起一個https請求,根據規定,知道需要連接伺服器的443埠。
2、伺服器把配置好的公鑰證書返回給客戶端。
3、客戶端驗證公鑰證書,比如是否在有效期內等資訊。如果驗證通過則繼續,不通過則顯示警告資訊。
客戶端拿CA機構的公鑰解密數字簽名,得到摘要,然後用散列函數計算證書得到摘要,對兩個摘要進行對比,驗證證書是否被篡改,伺服器公鑰是否可靠。
4、客戶端使用偽隨機數生成加密要用的對稱密鑰,然後用證書的公鑰加密這個對稱密鑰,發給服務端。
5、服務端使用自己的私鑰解密這個消息,得到對稱密鑰,現在,伺服器和客戶端都擁有了相同的對稱密鑰。(所以使用https開始的時候會有點慢)
6、伺服器用對稱密鑰加密明文內容A,發給客戶端。
7、客戶端使用對稱密鑰解密密文,得到明文內容A。

image

8.https和http區別

  • http是明文傳輸,而https是使用SSL+http構成的加密傳輸,更安全。
  • http使用80埠,https使用443埠
  • http基於應用層,而https基於傳輸層

參考鏈接

深入理解HTTPS工作原理
數字簽名
非對稱加密