我們經常聽到數字證書,數字簽名這些詞。
這些證書,簽名到底是什么?
他們又起到什么樣的作用? 其原理是什么?
了解這些我們需要先了解加密方式,以及什么是公鑰?什么是私鑰?
1. 加密方式
先解釋一下2種常用的加密方式。
◆ 對稱加密
加密的傳統方法是對稱加密。發出訊息者用一把鑰匙對訊息加密。
接收訊息者需用這把鑰匙將加密了的訊息解密。
這把鑰匙必須以一種其他人沒有機會得到它的方式給予接收訊息者。
如果其他人得到了這把鑰匙,這種加密方式就沒用了。
◆ 非對稱加密算法
非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)
公開密鑰與私有密鑰是一對,可以相互加密和解密。
如果用公鑰對數據進行加密,只有用對應的密鑰才能解密。
如果用密鑰對數據進行加密,那么只有用對應的公鑰才能解密。
因為非對稱加密算法安全性比較高,所以下面的數字簽名,數字證書都是用了非對稱加密算法。
2. 數字簽名digital signature
在現實生活中,簽名是為了表示這是簽名者寫的。計算機中,數字簽名也是相同的含義。
舉一個例子如果A,B兩台計算機相互通訊:
A計算機傳輸給B計算機信息的時候,A計算機會在消息的最后寫上去自己的簽名,以代表這些信息是A計算機的。
B計算機接到消息后,先看簽名是不是A計算機判斷不是別人冒充A計算機發送不安全或是無效的信息(有效性)。
除此之外,數字簽名還能證明消息傳輸過程中沒有被篡改(完整性)。
◆
原理
簡單的說的話其實就是:
A計算機給B計算機傳輸信息的時候,
A計算機在信息后面加自己的簽名(字符串),用自己的私鑰(privatekey)加密。
B計算機接到數據后,用A計算機的公鑰(publickey)解密,確認來源是不是A計算機。
這樣確保了`完整性`,而且A計算機也`不可抵賴`
(因為用A計算機公鑰解密的信息只能是A計算機的私鑰加密的信息)
3. 數字證書
先預想一個場景,如果有10台計算機,10台計算機需要記住相互之間的公鑰(publickey),
那有100台計算機,1000台呢? 他們之間都需要記住相互的公鑰嗎?
答案肯定是不能,那如何解決這些問題呢?
其實很簡單,有個第三方中介機構。記住了這些1000台的公鑰相對應的資料。
這種機構稱為認證機構(Certification Authority, CA)。
CA開一個證明這是計算機A的信息,發給B計算機。
B計算機通過CA的證明,可以確認這是A計算機的信息。
◆
如何生成證書?
A計算機將自己的【公鑰A】給CA
CA用自己的【私鑰CA】給【公鑰A】加密,生成【數字簽名A】
CA把【公鑰A】,【數字簽名A】,附加一些【A計算機的信息】整合在一起,生成證書,發給A計算機。
◆
如何驗證證書?
A計算機發信息給B計算機的時候,會附加【數字簽名A】
B計算機通過CA的公鑰解密【數字簽名A】,既可以確認這是A計算機發的信息。
(其實詳細原理不是這樣,是解證書得到哈希值,通過算法比較這個哈希值的。)
總結
兩台計算機相互通訊的時候,為了確保有效性和完整性。需要簽名證明是自己(
數字簽名)。
這簽名不能隨便公開,所以需要加密。
加密的時候使用的是非對稱加密算法。(
公鑰,
私鑰)
相互通訊的計算機多了后,需要一個中介公司來證明這個簽名是合法的(
數字證書)。
這中介機構叫(Certification Authority, CA)。
以后通訊的時候,A計算機拿着CA開的
數字證書一起發送給對應的B計算機。
接受信息的B計算機是可以通過CA的證明書,確認是A計算機發送的信息是合法的。
----------------------------------------------
歡迎大家的意見和交流
email: li_mingxie@163.com