公鑰 私鑰 數字簽名 CA證書

2021-10-14 15:43:53 字數 3695 閱讀 8076

簡單來說分為兩種,對稱加密和非對稱加密。

對稱加密

加密和解密用的是同乙個秘鑰,在對稱加密演算法中常用的演算法有:des、3des、tdea、blowfish、rc2、rc4、rc5、idea等。這類加密演算法的優點就是計算量小、加密速度快、加密效率高;但是缺點也很明顯,在傳輸資料前,雙方必須商定並儲存好秘鑰,任何一方的秘鑰被洩露,加密資訊就不再安全了。另外,每次使用對稱加密演算法時,都需要使用其他人不知道的唯一秘鑰,這會使得收、發雙方所擁有的鑰匙數量巨大,金鑰管理成為雙方的負擔。

非對稱加密

非對稱加密需要兩個秘鈅來進行加密和解密,這兩個秘鑰非別是公有秘鑰(公鑰)和私有秘鑰(私鑰),公鑰與私鑰是一對,如果用公鑰對資料進行加密,那麼就必須用對應的私鑰才能解密;同理,如果用私鑰對資料進行加密,那麼只有用對應的公鑰才能解密。在非對稱加密中使用的主要演算法有:rsa、elgamal、揹包演算法、rabin、d-h、ecc(橢圓曲線加密演算法)等。

公鑰和私鑰是非對稱密碼學中的概念。他們的特點是用公鑰加密的密文只能用私鑰解密,用私鑰加密的密文只能用公鑰解密。在通訊過程中,私鑰由伺服器持有,不可外洩,公鑰則通過http傳送給客戶端。伺服器傳送經過私鑰加密的密文給客戶端,客戶端可以通過公鑰解開密文;客戶端傳送經過公鑰加密的密文給伺服器,伺服器通過私鑰解開密文。這個過程如圖所示

一、公鑰加密

假設一下,我找了兩個數字,乙個是1,乙個是2。我喜歡2這個數字,就保留起來,不告訴你們(私鑰),然後我告訴大家,1是我的公鑰。

我有乙個檔案,不能讓別人看,我就用1加密了。別人找到了這個檔案,但是他不知道2就是解密的私鑰啊,所以他解不開,只有我可以用

數字2,就是我的私鑰,來解密。這樣我就可以保護資料了。

我的好朋友x用我的公鑰1加密了字元a,加密後成了b,放在網上。別人偷到了這個檔案,但是別人解不開,因為別人不知道2就是我的私鑰,

只有我才能解密,解密後就得到a。這樣,我們就可以傳送加密的資料了。

二、私鑰簽名

如果我用私鑰加密一段資料(當然只有我可以用私鑰加密,因為只有我知道2是我的私鑰),結果所有的人都看到我的內容了,因為他們都知

道我的公鑰是1,那麼這種加密有什麼用處呢?

但是我的好朋友x說有人冒充我給他發信。怎麼辦呢?我把我要發的信,內容是c,用我的私鑰2,加密,加密後的內容是d,發給x,再告訴他

解密看是不是c。他用我的公鑰1解密,發現果然是c。

這個時候,他會想到,能夠用我的公鑰解密的資料,必然是用我的私鑰加的密。只有我知道我得私鑰,因此他就可以確認確實是我發的東西。

這樣我們就能確認傳送方身份了。這個過程叫做數字簽名。當然具體的過程要稍微複雜一些。用私鑰來加密資料,用途就是數字簽名。

三、舉例

比如有兩個使用者alice和bob,alice想把一段明文通過雙鑰加密的技術傳送給bob,bob有一對公鑰和私鑰,那麼加密解密的過程如下:

1.bob將他的公開金鑰傳送給alice。

2.alice用bob的公開金鑰加密她的訊息,然後傳送給bob。

3.bob用他的私人金鑰解密alice的訊息。

公鑰和私鑰是成對的,它們互相解密。

公鑰加密,私鑰解密。

私鑰數字簽名,公鑰驗證。

非對稱加密的優點:

非對稱加密採用公有密匙和私有密匙的方式,解決了http中訊息保密性問題,而且使得私有密匙洩露的風險降低。

因為公匙加密的訊息只有對應的私匙才能解開,所以較大程度上保證了訊息的**性以及訊息的準確性和完整性。

非對稱加密的缺點:

非對稱加密時需要使用到接收方的公匙對訊息進行加密,但是公匙不是保密的,任何人都可以拿到,中間人也可以。那麼中間人可以做兩件事,第一件是中間人可以在客戶端與伺服器交換公匙的時候,將客戶端的公匙替換成自己的。這樣伺服器拿到的公匙將不是客戶端的,而是中間人的。伺服器也無法判斷公匙**的正確性。第二件是中間人可以不替換公匙,但是他可以截獲客戶端發來的訊息,然後篡改,然後用伺服器的公匙加密再發往伺服器,伺服器將收到錯誤的訊息。

中間商可以冒充伺服器篡改公鑰,如下圖↓

為了防止中間商篡改公鑰,需要用到數字證書,在講數字證書之前還需要先了解一下數字簽名

數字簽名是個什麼東西呢?它是資訊的指紋。但是這不是重點,重點是數字簽名的生成過程。數字簽名的生成有兩個步驟:

對明文進行雜湊,得到一串雜湊值;

對第一步得到的雜湊值用私鑰加密。

數字簽名是如何使用的呢?其實看一張圖就明白了。數字簽名會隨著內容一起被傳送出去,接收方首先用公鑰解密數字簽名得到雜湊值h1,然後對內容用同樣的演算法計算雜湊值h2,如果h1=h2,那麼說明內容沒有被串改過。

然而這個過程也存在風險,如果中間商篡改了公鑰,那麼他就可以偽造數字簽名,一樣完蛋。如下

所以引入數字證書

數字證書包含兩部分內容:

這裡的伺服器資訊中就包含了伺服器的公鑰,當然還有一些其他資訊,比如證書名稱、發布機構、有限期、雜湊演算法等。數字簽名就是對伺服器資訊進行雜湊,然後用ca認證中心的私鑰加密的結果。

這裡特別強調數字簽名是用ca認證中心的私鑰加密的,因為這樣才能防止中間商串改公鑰。這裡還有一點需要注意,那就是作業系統會自動安裝ca認證中心的公鑰,所以,每個客戶端都預設有ca認證中心的公鑰。

如果中間商想偽造數字證書,篡改數字證書中的公鑰,由於中間商沒有ca認證中心的私鑰,無法偽造數字簽名,於是也就無法偽造數字證書了。

但是這樣就萬無一失了嗎?並不是,如果中間商也在ca認證中心註冊了數字證書,並且用這個合法的數字證書替換了伺服器的數字證書,還是會完蛋。但這就不是我們該操心的問題了,這是ca認證中心該考慮的問題,應該給什麼人發證書,拒絕給什麼人發證書。只有ca認證中心能夠區分好人和壞人,我們才是安全的。

其實到最後就是客戶端把對伺服器的信任委託給了ca認證中心,因為伺服器是不一定可信的,那就創造乙個相對一定可信的第三方。

ps:真正的https通訊並不是通過公鑰和私鑰加密的,公鑰和私鑰只用在握手過程中,當客戶端請求到真正的公鑰後,會生成乙個隨機數(對稱金鑰)並用公鑰加密,傳送給伺服器,後續的通訊就用對稱金鑰加密了。這樣做的原因是非對稱加密的效能相對對稱加密來說會慢上幾倍甚至幾百倍,比較消耗系統資源。正是因為如此,https將兩種加密結合了起來。詳見http和https

數字簽名,公鑰,私鑰

數字簽名是什麼?翻譯 阮一峰 原文 1.鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。2.鮑勃把公鑰送給他的朋友們 帕蒂 道格 蘇珊 每人一把。3.蘇珊要給鮑勃寫一封保密的信。她寫完後用鮑勃的公鑰加密,就可以達到保密的效果。4.鮑勃收信後,用私鑰解密,就看到了信件內容。這裡要強調的是,只要鮑勃的私鑰不洩...

公鑰 私鑰 數字簽名

公鑰 私鑰 數字簽名 數字證書 作用1 傳送方的資訊加密,保證不被竊取 他人用公鑰加密,我用私鑰解密 2 傳送方的身份驗證 我用私鑰簽名,他人用公鑰驗證 如數字簽名 1 傳送方的身份驗證 公鑰私鑰實現 也可用於防止抵賴 2 驗證傳送資訊是否被篡改 hash函式實現 證明數字簽名中的公鑰是否可信 未被...

公鑰 私鑰 數字簽名 數字證書

1.公鑰與私鑰原理 1 鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰 2 鮑勃把公鑰送給他的朋友們 帕蒂 道格 蘇珊 每人一把。3 蘇珊要給鮑勃寫一封保密的信。她寫完後用鮑勃的公鑰加密,就可以達到保密的效果。4 鮑勃收信後,用私鑰解密,就看到了信件內容。這裡要強調的是,只要鮑勃的私鑰不洩露,這封信就是安...