關於HTTPS的一點理解

2021-08-20 07:09:32 字數 1993 閱讀 9764

通訊使用明文(不加密),內容可能會被竊聽。

不驗證通訊方的身份,因此有可能遭遇偽裝。

無法證明報文的完整性,所以有可能已經遭到篡改。

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

https是與ssl(安全套接層)組合使用的http協議(http secure),使用ssl之後,請求則變成先和ssl通訊,ssl再和tcp通訊;請求經過加密之後,可以有效防止黑客竊聽,篡改,和偽裝請求,並保證了報文的完整性;

優點

https彌補了http的缺點,具備以下兩個優點:

確認通訊雙方的身份。

建立安全通道,保證資料傳輸安全。

缺點

1. ssl 證書費用相對較高,以及其在伺服器上的部署、更新維護非常繁瑣。

2. https 因需要多次「握手」,降低使用者訪問速度。

3. https涉及到的安全演算法會更多的消耗cpu和記憶體資源,導致處理速度變慢。

https採用共享秘鑰加密和公開金鑰加密兩者並用的混合加密機制。

公開秘鑰加密方式

公開金鑰加密也稱非對稱金鑰加密,該加密演算法使用兩個不同的金鑰:加密金鑰和解密金鑰。前者公開,又稱公開金鑰,簡稱公鑰;後者保密,又稱私有金鑰,簡稱私鑰,加密金鑰加密後所得的資訊只能用解密金鑰才能解密。

舉乙個例子:

假設兩個使用者a,b進行通訊,公鑰為c,私鑰為d,明文為x.

step 1. a用公鑰對明文進行加密形成密文c(x),然後傳輸密文;

step 2. b收到密文,用私鑰對密文進行解密d(c(x)),得到要通訊的明文

共享秘鑰加密方式

共享秘鑰加密又叫對稱秘鑰加密,即,加密和解密用同乙個秘鑰

https在通訊中,通過「簽名」技術,通訊雙方可以確認對方身份。身份認證分為單向認證和雙向認證。單向認證中只有伺服器端有證書,雙向認證中伺服器和客戶端都有證書。

證明某個訊息或者檔案是本人發出/認同的。

ssl證書主要分以下三種:

公司認證(company validation):確認網域名稱所有人是哪一家公司,證書裡面會包含公司資訊。

擴充套件認證(extended validation):最高端別的認證,瀏覽器位址列會顯示公司名

rsa簽名

既可以用公鑰加密然後私鑰解密,也可以用私鑰加密然後公鑰解密(對稱性),每乙個公鑰都有唯一的私鑰與之對應,任一公鑰只能解開對應私鑰加密的內容。

例子

rsa簽名過程,如下:

小明對外發布公鑰,並宣告對應的私鑰在自己手上。

小明對訊息m計算摘要,得到摘要d。

小明使用私鑰對d進行簽名,得到簽名s。

將m和s一起傳送出去。

驗證過程,如下:

接收者首先對m使用跟小明一樣的摘要演算法計算摘要,得到d。

使用小明公鑰對s進行解籤,得到d』。

如果d和d』相同,那麼證明m確實是小明發出的,並且,沒有本篡改過。

為確保安全建立安全通道,保證資料傳輸安全。

首先,通過證書中的數字簽名(非對稱秘鑰加密方式),安全的交換在稍後的對稱秘鑰加密中要使用的秘鑰。

然後,在確保交換的秘鑰是安全的前提下,使用對稱秘鑰加密方式進行通訊。

加密通訊的流程:

瀏覽器將自己支援的一套加密演算法、hash演算法傳送給**。

**接收瀏覽器發來的資料之後,通過私鑰進行解密,然後hash校驗,如果一致,則使用瀏覽器發來的數字串使加密一段握手訊息發給瀏覽器。

瀏覽器解密,並hash校驗,沒有問題,則握手結束。接下來的傳輸過程將由之前瀏覽器生成的隨機密碼並利用對稱加密演算法進行加密。

關於malloc的一點理解

在函式中使用malloc,如果是大的記憶體分配,而且malloc與free的次數也不是特別頻繁,使用malloc與free是比較合適的,但是如果記憶體分配比較小,而且次數特別頻繁,那麼使用malloc與free就有些不太合適了。因為過多的malloc與free容易造成記憶體碎片,致使可使用的堆記憶體...

關於Action的一點理解

之前學習jsp,就是從網上找些jsp例項 然後模仿,再加工成自己想要的,這樣一來,好多東西都是學了一點皮毛,例如action。下面是在看書時所知道的,看完後,有種頓悟的感覺。action的主要功能是生成頁面顯示所需要的資料,頁面則負責顯示action中的所設定的資料。頁面中的標籤在獲得action所...

關於total start 的一點理解

在看c語言程式設計的一些書籍的時候,總會遇到這樣的一行類似的 total start 其實這句話是兩行 的分解,也就是說其實是這樣的 total start start 也就是說,的執行流程是這樣的,即先通過解引用得到start指標所指向的值,然後再將start指標自增。一元運算子 和 具有相同的優...