公鑰 私鑰 證書 HTTPS那些事兒

2021-08-13 08:18:25 字數 1864 閱讀 4547

如今流行的加密主要分為對稱加密和不對稱加密兩種.

對稱加密指的是通訊雙方加密解密使用事先約定好的同乙個金鑰.常用的演算法有aes,des等.

其優點是加密解密速度快,運算開銷低.

但缺點也很明顯,安全的將這個金鑰傳輸到另一方的手中可能會是乙個很困難的事情.在不安全的環境中,有可能是一件高風險的事情.事實上,金鑰一旦暴露,整個加密系統也就隨之失效.

由於對稱加密的這個缺點,密碼學專家又研究了不對稱加密.

它們具有以下重要的性質:

結合以上幾點,不難知道,每一次通訊的流程通常如下所示:

這個過程看似很完美,但存在著乙個漏洞.我在前面寫了,公鑰即身份,問題是,有的時候很難驗證這個公鑰對應的身份.這也就引出了後面的中間人攻擊以及ca簽發證書.

簽名意為對某些東西的承諾.

紙質簽名時,你在合同上簽名了,意為你認同了這個合同上的全部條款.但這避免不了兩個問題,

現在有了金鑰對,數字簽名就變得簡單了.前文中說公私鑰性質的時候,有提到過私鑰加密的東西,公鑰可以解開.那麼現在首先對原文m計算出其摘要h,再用私鑰對其進行加密,並附在原文最後.那麼就確保了兩個事情:

前文中,我們提到了乙個觀點,叫做公鑰即身份.回到之前提到的乙個問題,就是如何去校驗這個身份.因此,我們引入了證書這個概念.證書為了實現身份驗證的功能,根據前面公鑰即身份的概念,它會包含乙個公鑰.此外,還包含這個身份持有者的一些描述,一般包括:公司組織的相關資訊,證書的有效期,簽發組織機構,摘要使用的演算法等,此外,還有乙個最關鍵的,就是簽名.簽名者對這份證書在這段時間內的有效性做出了承諾.

那麼是誰來簽名呢?假設,有一家公司c,我完全可以用openssl生成100個公私鑰對,填上完全一樣的資訊,用私鑰在每張證書上都做簽名,這樣可以做出一百張都看起來像是公司c的證書.這樣肯定是行不通的,必須引入乙個權威的第三方證書簽發機構,這樣的機構稱為ca.這樣做有以下兩點好處:

https是在傳統的http協議之下,tcp協議之上,插入了乙個tls/ssl協議。相比於http,其主要特性在於,通訊內容全部加密,這就使得第三方無法竊聽你們的通訊內容.

在開始加密通訊之前, 需要有乙個步驟來完成對服務端證書的獲取和校驗過程,這個過程稱為證書握手.以瀏覽器為例, 這個證書握手的過程通常如下:

至此,乙個單向驗證的證書握手就完成了.之所以是單向驗證,是只需要瀏覽器驗證伺服器證書,而伺服器無需驗證瀏覽器證書.為每乙個瀏覽器配發乙個證書和私鑰成本太高,很多時候也沒有必要關心瀏覽器的身份.

既然瀏覽器端沒有證書和私鑰,那加密是怎麼實現的呢? 答案是對稱加密.這個對稱加密的金鑰,是通過a b c三個隨機數,用商定好的演算法生成的(證書握手的前兩步中包含了商定加密演算法的內容). a b為明文傳輸,而c是密文傳輸,因此即使旁人監聽到a 和b,仍然無法獲得c,因為沒有伺服器的私鑰就解不開這個密文, 因此整個隨機數是安全的,從而保證對稱金鑰是無法竊聽的並且難以破解的.

這裡可以發現,只有c是整個金鑰演算法的核心,為什麼不直接用c生成金鑰呢? 答案是瀏覽器(客戶端)的隨機演算法不一定可靠, 如果瀏覽器端隨機數隨機性太差,隨機數被猜到的可能性就大大增加. 因此需要引入服務端的隨機數,為整個隨機數再增加一層不確定性,保證金鑰難以被破解或猜測.

整個https流程並沒有太多的問題,唯一的可能的威脅就是中間人攻擊.中間人攻擊有兩個重要的條件:

在滿足以上兩個前提的情況下,一次中間人攻擊的流程如下所示:

至此,瀏覽器傳送給伺服器的加密報文實際上是傳送給了h,h再**給伺服器,整個通訊內容就完全暴露在h的監控之下.

再回來看看之前的前提,為什麼這兩個條件缺一不可.

服務端單向驗證: 如果需要校驗瀏覽器身份, h同樣無法偽造, 原理同上類似.

因為有中間人攻擊的存在,就引入了雙向驗證的機制.整體流程與單向驗證類似,加入了瀏覽器端證書,徹底杜絕了中間人的存在.

Https 公鑰 私鑰 證書

一般的數字證書產品的主題通常含有如下字段 證書申請單位所在地 所在城市 locality 簡稱 l 字段 所在省份 state provice 簡稱 s 字段 所在國家 country 簡稱 c 字段,只能是國家字母縮寫,如中國 cn 其他一些字段 電子郵件 email 簡稱 e 字段 多個姓名字段...

公鑰私鑰證書與https

非對稱加密 在乙個過程中使用兩個金鑰,公共金鑰用於加密資訊,私用金鑰用於解譯加密的資訊。這種加密方法稱為非對稱加密,也稱為公鑰加密,因為其中乙個金鑰是公開的 另乙個私鑰則需要自己保密 私鑰簽名 如果我用私鑰加密一段資料 當然只有我可以用私鑰加密,因為只有我知道我的私鑰 結果所有的人都看到我的內容了,...

https 公鑰,私鑰,數字證書

https是http與ssl的結合,為了解決http明文傳輸導致資訊洩露的問題。ssl通過公鑰和私鑰保證客戶端和伺服器之間的通訊加密,由權威機構辦法的數字證書杜絕了中間人攻擊的可能。http是處於應用層的傳輸協議,ssl是處於與tcp同層的傳輸層和應用層之間的協議,由於http使用明文傳輸,就會導致...