前些天逛技術網,偶爾看到一篇國外關於金鑰的通俗易懂的詳解文章,當時對具體的細節還是有點模糊搞不清楚,so昨天惡補了一下,今天簡單整理一下自己的收穫,以備以後回顧。
1.鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。
2.鮑勃把公鑰送給他的朋友們—-帕蒂、道格、蘇珊—-每人一把。
3.蘇珊給鮑勃寫信,寫完後用鮑勃的公鑰加密,達到保密的效果。
4.鮑勃收信後,用私鑰解密,看到信件內容。
5.鮑勃給蘇珊回信,寫完後用hash函式,生成信件的摘要(digest)。
6.然後,鮑勃使用私鑰,對這個摘要加密,生成」數字簽名」(signature)。
7.鮑勃將這個簽名,附在信件下面,一起發給蘇珊。
8.蘇珊收信後,取下數字簽名,用鮑勃的公鑰解密,得到信件的摘要。由此證明,這封信確實是鮑勃發出的。
9.蘇珊再對信件本身使用hash函式,將得到的結果,與上一步得到的摘要進行對比。如果兩者一致,就證明這封信未被修改過。
10.複雜的情況出現了。道格想欺騙蘇珊,他偷偷使用了蘇珊的電腦,用自己的公鑰換走了鮑勃的公鑰。因此,他就可以冒充鮑勃,寫信給蘇珊。
11.蘇珊發現,自己無法確定公鑰是否真的屬於鮑勃。她想到了乙個辦法,要求鮑勃去找」證書中心」(certificate authority,簡稱ca),為公鑰做認證。證書中心用自己的私鑰,對鮑勃的公鑰和一些相關資訊一起加密,生成」數字證書」(digital certificate)。
12.鮑勃拿到數字證書以後,就可以放心了。以後再給蘇珊寫信,只要在簽名的同時,再附上數字證書就行了。
13.蘇珊收信後,用ca的公鑰解開數字證書,就可以拿到鮑勃真實的公鑰了,然後就能證明」數字簽名」是否真的是鮑勃籤的。
14.下面,我們看乙個應用」數字證書」的例項:https協議。這個協議主要用於網頁加密。
15.首先,客戶端向伺服器發出加密請求。
16.伺服器用自己的私鑰加密網頁以後,連同本身的數字證書,一起傳送給客戶端。
17.客戶端(瀏覽器)的」證書管理器」,有」受信任的根證書頒發機構」列表。客戶端會根據這張列表,檢視解開數字證書的公鑰是否在列表之內。
18.如果數字證書記載的**,與你正在瀏覽的**不一致,就說明這張證書可能被冒用,瀏覽器會發出警告。
19.如果這張數字證書不是由受信任的機構頒發的,瀏覽器會發出另一種警告。
20.如果數字證書是可靠的,客戶端就可以使用證書中的伺服器公鑰,對資訊進行加密,然後與伺服器交換加密資訊。
想更好地理解上面這篇形象生動的技術文章,你還需要理解一些概念和術語
1.1、公鑰密碼體制(public-key cryptography)
公鑰密碼體制分為三個部分,公鑰、私鑰、加密解密演算法,它的加密解密過程如下:
公鑰密碼體制的公鑰和演算法都是公開的(這是為什麼叫公鑰密碼體制的原因),私鑰是保密的。大家都以使用公鑰進行加密,但是只有私鑰的持有者才能解密。在實際的使用中,有需要的人會生成一對公鑰和私鑰,把公鑰發布出去給別人使用,自己保留私鑰。
1.2、對稱加密演算法(symmetric key algorithms)
在對稱加密演算法中,加密使用的金鑰和解密使用的金鑰是相同的。也就是說,加密和解密都是使用的同乙個金鑰。因此對稱加密演算法要保證安全性的話,金鑰要做好保密,只能讓使用的人知道,不能對外公開。這個和上面的公鑰密碼體制有所不同,公鑰密碼體制中加密是用公鑰,解密使用私鑰,而對稱加密演算法中,加密和解密都是使用同乙個金鑰,不區分公鑰和私鑰。
// 金鑰,一般就是乙個字串或數字,在加密或者解密時傳遞給加密/解密演算法。前面在公鑰密碼體制中說到的公鑰、私鑰就是金鑰,公鑰是加密使用的金鑰,私鑰是解密使用的金鑰
很多時候如果要完全程的安全通訊,需要對稱加密和非對稱加密一起使用。
目前很流行加密演算法 即 rsa演算法,它是基於乙個十分簡單的數論事實:將兩個大素數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密金鑰。
參考
公鑰和私鑰的理解
公鑰和私鑰就是俗稱的不對稱加密方式,是從以前的對稱加密 使用使用者名稱與密碼 方式的提高。用電子郵件的方式說明一下原理。使用公鑰與私鑰的目的就是實現安全的電子郵件,必須實現如下目的 1.我傳送給你的內容必須加密,在郵件的傳輸過程中不能被別人看到。2.必須保證是我傳送的郵件,不是別人冒充我的。要達到這...
關於公鑰和私鑰的理解
個人有幾天的時間對於公鑰和私鑰總是搞不清楚,所以後來研究之後,分享給大家 公鑰和私鑰就是俗稱的非對稱加密方式,是從以前的對稱加密 使用使用者名稱與密碼 方式的提高。用電子郵件的方式說明一下原理。使用公鑰與私鑰的目的就是實現安全的電子郵件,必須實現如下目的 1.我傳送給你的內容必須加密,在郵件的傳輸過...
公鑰,私鑰和數字證書基本概念
加密和認證 首先我們需要區分加密和認證這兩個基本概念。加密是將資料資料加密,使得非法使用者即使取得加密過的資料,也無法獲取正確的資料內容,所以資料加密可以保護資料,防止監聽攻擊。其重點在於資料的安全性。身份認證是用來判斷某個身份的真實性,確認身份後,系統才可以依不同的身份給予不同的許可權。其重點在於...