你不知道的HTTP之HTTPS

2022-02-04 09:01:25 字數 3056 閱讀 7623

https=http+ 加密 + 認證 + 完整性保護

1、加密:

1)通訊的加密

所謂網際網路,是由能連通到全世界的網路組成的。無論世界哪個角 落的伺服器在和客戶端通訊時,

在此通訊線路上的某些網路裝置、光 纜、計算機等都不可能是個人的私有物,所以在某個環節中都

有可能會遭到惡意窺視行為。竊聽相同段上的通訊並非難事。只需要收集在網際網路上流動的資料 包幀)就行了。

對於收集來的資料報的解析工作,可交給那些抓包 (packet capture)或嗅探器(sniffer)工具。

所以,這時就需要對同信的過程進行加密,加密的方式就是通過和ssl(secure socket layer,安全套接層)

或 tls(transport layer security,安全層傳輸協議)的組合使用。

這樣,就可以在這條較安全的通訊線路上進行http通訊了。

2)內容的加密

通訊的內容不經過任何處理的話,都將以明文的方式進行傳輸,這樣便很容易被人竊取到傳輸的資訊,所以需要對

參與通訊的內容本身進行加密。由於 http 協議中沒有加密機制,那麼就對 http 協議傳輸的內容本身加密。

這樣的方式要求客戶端和伺服器同時具備加密和解密機制。

2、認證

http 協議中的請求和響應不會對通訊方進行確認。也就是說存在「伺服器是否就是

傳送請求中 uri 真正指定的主機,返回的響應是否真的返回到實際提出請求的客戶端」等類似問題。

那麼如果不確認通訊方,就會存在各種隱患,為了解決這一問題,我們使用證書這一方法來解決。

證書由值得信任的第三方機構頒發,用以證明伺服器和客戶端是實際存在的。

另外,偽造證書從技術角度來說是異常困難的一件事。所以 只要能夠確認通訊方

(伺服器或客戶端)持有的證書,即可判斷通訊方 的真實意圖。通過使用證書,

以證明通訊方就是意料中的伺服器。這對使用者個 人來講,也減少了個人資訊洩露的危險性。

另外,客戶端持有證書即可完成個人身份的確認,也可用於對 web **的認證環節。

3、完整性

所謂完整性是指資訊的準確度。若無法證明其完整性,通常也就意味著無法判斷資訊是否準確。

http協議沒有辦法確認發出的請求 / 響應和接收到的請求 / 響應是前後相同的。像這樣,請求或響應在傳輸途中,

遭攻擊者攔截並篡改內容的攻擊稱為中間人攻擊(man-in-the-middle attack,mitm)。

http本身有為了防止篡改的方法,常用的是 md5 和 sha-1 等雜湊值校驗的方法,以及用來確認檔案的數字簽名方法。

然而,用這些方法都無法百分百保證確認結果正確;僅靠 http 確保完整性是非常困難的,因此需要通過和其他協議組合使用來實現這個目標。

https是通過什麼方法來完成加密和認證的過程呢?

1、其實https不是應用層的一種新協議。只是 http 通訊的介面部分用 ssl(secure socket layer)

和 tls(transport layer security)協議代替 而已。通常,http 直接和 tcp 通訊。當使用 ssl 時,

則演變成先和 ssl 通訊,再由 ssl 和 tcp 通訊了。簡言之,所謂https,其實就是身披 ssl 協議這

層外殼的 http。所以,在採用 ssl 後,http 就擁有了 https 的加密、證書和完整性保護這些功能。

所以,要想弄清楚加密和認證的過程,只需要知道ssl做了什麼就行了。

1)公開金鑰加密技術:ssl 採用一 種叫做公開金鑰加密(public-key cryptography)的加密處理方式。

- 首先,我們在加密和解密時都會用到金鑰,過程中使用同乙個金鑰的方式稱為共享金鑰加密

也叫做對稱金鑰加密。以共享金鑰方式加密時必須將金鑰也發給對方,所以,在將金鑰發給對方的時候,

就有可能會被攻擊者獲取到,這樣加密就失去了意義。

- 公開金鑰加密的方式很好的解決了這一問題;我們使用兩把金鑰的公開金鑰加密,公開金鑰加密使

用一對非對稱的金鑰。一把叫做私有金鑰(private key),另一把叫做公開金鑰(public key)。私有密

鑰不能讓其他任何人知道,而公開金鑰則可以隨意發布,任何人都可以獲得。使用公開金鑰加密方式,發

送密文的一方使用對方的公開金鑰進行加密處理,對方收到被加密的資訊後,再使用自己的私有金鑰進行

解密。利用這種方式,不需要傳送用來解密的私有金鑰,也不必擔心金鑰被攻擊者竊聽而盜走。

- https採用共享金鑰加密和公開金鑰加密兩者並用的混合加密機制。若金鑰能夠實現安全交換,

那麼有可能會考慮僅使用共享金鑰加密來通訊。但是公開金鑰加密與共享金鑰加密相比,其處理速度要慢。

所以應充分利用兩者各自的優勢,將多種方法組合起來用於通訊。 在交換金鑰環節使用公開金鑰加密方式,

之後的建立通訊交換報文階段則使用共享金鑰加密方式。

- 遺憾的是,公開金鑰加密方式存在無法證明公開金鑰本身就是貨真價實的公開金鑰的問題。所以為了解決

這一問題,可以使用由數字證書認證機構(ca,certificate authority)和其相關機關頒發的公開金鑰證書。數

字證書認證機構處於客戶端與伺服器雙方都可信賴的第三方機構的立場上。認證流程如下:

1)伺服器的 運營人員向數字證書認證機構提出公開金鑰的申請;

2)數字證書認證機構判明提出申請者的身份之後,會對已申請的公開金鑰做數字簽名;

3)分配這個已簽名的公開金鑰,然後將該公開金鑰放入公鑰證書並繫結在一起;

4)伺服器將這份由數字證書認證機構頒發的公鑰證書傳送給客戶端,以進行公開金鑰加密方式通訊;

5)接到證書的客戶端可使用數字證書認證機構的公開金鑰,對那張證書上的數字簽名進行驗證;

以上便是https加密和認證的相關方法及過程。

你不知道的 和

開發中,編寫有一定逼格的 是每個程式猿都追求的。經常用來判斷的符號 和 也經常用來定義變數哦,你知道嗎?邏輯與 在有乙個運算元不是布林值的情況下,就不一定返回布林值。比如以下情況 1 第乙個運算元是物件,返回第二個數 var myinfo console.log myinfo 2 輸出22 第二個運...

你不知道的box shadow

我們可以僅使用乙個div利用shadow配合animation實現很多豐富的效果 github 求 必需。水平陰影的位置。允許負值。v shadow 必需。垂直陰影的位置。允許負值。blur 可選。模糊距離。spread 可選。陰影的尺寸。color 可選。陰影的顏色。請參閱 css 顏色值。ins...

你不知道的 gitignore

乙個.gitignore檔案顯式地指定了哪些檔案不應被git追蹤,即被git忽略掉。在被gitignore之前已經被git追蹤的檔案不受gitignore規則的影響。關於gitignore規則的詳情請繼續往下看。gitignore檔案中的每一行都指定了一種匹配模式。通常來說,git會從多個可能的規則...