互聯網安全之數字簽名、數字證書與PKI系統

在現代社會,互聯網已經滲透到人們平常生活的方方面面,娛樂、經濟、社會關係等都離不開互聯網的幫助。在這個背景下,互聯網安全就顯得十分重要,沒有提供足夠的安全保障,人們是不會如此依賴它的。幸運的是,在大牛們的努力下,很早之前就有一套安全體系來保障互聯網信息的傳遞。下面咱們一塊兒來了解一下這套體系。html

加密算法

首先咱們須要瞭解一下加密相關的知識,加密能夠分爲對稱加密非對稱加密。二者的主要區別就是是否使用同一個祕鑰,對稱加密須要用同一個祕鑰。非對稱加密不須要用同一個祕鑰,而是須要兩個祕鑰:公開密鑰(publickey)和私有密鑰(privatekey),而且加密密鑰和解密密鑰是成對出現的。git

對稱加密

對稱加密算法的特色是算法公開、計算量小、加密速度快、加密效率高。對稱加密有不少種算法,因爲它效率很高,因此被普遍使用在不少加密協議的核心當中。不足之處是,交易雙方都使用一樣鑰匙,安全性得不到保證。常見的對稱加密有 DES、AES 等。web

非對稱加密

非對稱加密使用一對「私鑰-公鑰」,用私鑰加密的內容只有對應公鑰才能解開,反之亦然。非對稱加密有如下特性:算法

  • 對於一個公鑰,有且只有一個對應的私鑰。
  • 公鑰是公開的,而且不能經過公鑰反推出私鑰。
  • 經過私鑰加密的密文只能經過公鑰能解密,經過公鑰加密的密文也只能經過私鑰能解密。

非對稱加密不須要共享同一份祕鑰,安全性要比對稱加密高,但因爲算法強度比對稱加密複雜,加解密的速度比對稱加解密的速度要慢。常見的非對稱加密有 RSA、ESA、ECC 等。apache

摘要算法

除了加密算法,摘要算法在互聯網安全體系中也扮演了重要的角色。摘要算法有如下特性:瀏覽器

  • 只要源文本不一樣,計算獲得的結果,必然不一樣(或者說機會不多)。
  • 沒法從結果反推出源數據。

基於以上特性,咱們通常使用摘要算法來校驗原始內容是否被篡改。常見的摘要算法有 MD五、SHA 等。安全

Tips: 摘要算法不能算做加密算法,加密算法須要使用祕鑰加解密,但摘要算法沒法根據結果反推出內容。另外 MD5 目前也不算安全了,例如彩虹表攻擊服務器

具體例子

假設甲公司要給乙公司發送一份機密的文件,那麼此次傳輸須要確保如下幾點:網絡

  1. 文件內容不能被讀取(加密)
  2. 文件內容不能被篡改(數字簽名)
  3. 文件不能被掉包(數字證書)

加密

對稱加密須要用同一份祕鑰,這一份祕鑰的約定就有被中途截獲的可能。所以能夠採用非對稱加密算法加密對稱祕鑰的方式來加密內容,也就是用乙的公鑰加密對稱祕鑰,並用這個對稱祕鑰加密文件內容。socket

假設這份文件被黑客截獲,可是黑客沒有乙的私鑰沒法解出對稱祕鑰,也就沒法解密文件內容。可是這裏有個風險,雖然黑客沒法解密文件內容,但他能夠本身生成一份祕鑰並用乙的公鑰加密,再用這份祕鑰加密一份僞造的文件發給乙,這種狀況下乙收到的就是被篡改的文件。

數字簽名

上面提到乙有可能收到被篡改的文件,這個問題能夠用數字簽名的方式解決,數字簽名就是用摘要算法提取出源文件的摘要並用私鑰進行加密後的內容。針對上面那個問題,甲在發送文件時再附帶上源文件的數字簽名。若是被黑客截取到加密後的文件和數字簽名,黑客即便使用甲的公鑰解出了文件摘要,因爲摘要算法的特性黑客也沒法還原出原始內容。但乙能夠解密出文件內容再用一樣的摘要算法提取出摘要來和數字簽名裏的摘要進行比對,摘要一致則說明文件沒有被篡改過。

到目前爲止還有一個風險就是乙沒法肯定本身用的公鑰就是甲提供的,若是黑客乙手裏的甲的公鑰替換成本身的並用本身的私鑰生成數字簽名,那麼乙仍是會受到被篡改的文件。

數字證書

數字證書的出現就是爲了解決上述提到的問題,數字證書是一個經證書受權中心數字簽名的包含公開密鑰擁有者信息以及公開密鑰的文件。

數字證書裏通常會包含公鑰、公鑰擁有者名稱、CA 的數字簽名、有效期、受權中心名稱、證書序列號等信息。

數字證書如何確保列出的用戶就是公鑰的擁有者呢?關鍵點是 CA 的數字簽名,CA會用本身的私鑰將證書內容的摘要進行加密。由於 CA 的公鑰是公開的,任何人均可以用公鑰解密出 CA 的數字簽名的摘要,再用一樣的摘要算法提取出證書的摘要和解密 CA 數字簽名後的摘要比對,一致則說明這個證書沒有被篡改過,能夠信任。

PKI

PKI(Public Key Infrastructure)翻譯過來就是公鑰基礎設施,能夠理解爲利用公鑰技術爲網絡應用提供加密和數字簽名等密碼服務以及必需的密鑰和證書管理體系。它是一個提供安全服務的基礎設施,PKI 技術是信息安全技術的核心,同時也是電子商務的關鍵和基礎技術。

PKI 既不是一個協議,也不是一個軟件,它是一個標準,在這個標準之下發展出的爲了實現安全基礎服務目的的技術統稱爲 PKI。

PKI是一個標準,它包括一些基本的組件,不一樣的組件提供不一樣的服務,主要由一下幾個組件組成:

  • 認證中心 CA(證書籤發):CA 機構,又稱爲證書授證 (Certificate Authority) 中心,是 PKI 的」核心」,即數字證書的申請及簽發機關,CA 必須具有權威性的特徵,它負責管理 PKI 結構下的全部用戶(包括各類應用程序)的證書,把用戶的公鑰和用戶的其餘信息捆綁在一塊兒,在網上驗證用戶的身份,CA 還要負責用戶證書的黑名單登記和黑名單發佈。
  • X.500目錄服務器(證書保存):X.500目錄服務器用於」發佈」用戶的證書和黑名單信息,用戶可經過標準的 LDAP 協議查詢本身或其餘人的證書和下載黑名單信息。
  • 具備高強度密碼算法(SSL)的安全 WWW 服務器(即配置了 HTTPS 的apache):Secure socket layer(SSL)協議最初由 Netscape 企業發展,現已成爲網絡用來鑑別網站和網頁瀏覽者身份,以及在瀏覽器使用者及網頁服務器之間進行加密通信的全球化標準。
  • Web(安全通訊平臺):Web 有 Web Client 端和 Web Server 端兩部分,分別安裝在客戶端和服務器端,經過具備高強度密碼算法的 SSL 協議保證客戶端和服務器端數據的機密性、完整性、身份驗證。
  • 自開發安全應用系統:自開發安全應用系統是指各行業自開發的各類具體應用系統,例如銀行、證券的應用系統等。

總結

數字簽名和數字證書是兩個不一樣的概念,理解的關鍵點是數字簽名是內容提供方用本身的私鑰對內容摘要(MD五、SHA)非對稱加密,而數字證書的關鍵是 CA 用本身的私鑰對證書內容的摘要非對稱加密從而確保證書內的用戶合法擁有證書裏列出的公鑰。

理解了這兩個概念後再回頭去看前面例子裏的流程就很清楚了,後面有空再說明下 https 祕鑰協商的過程~

轉載請註明出處,有任何疑問均可聯繫我,歡迎探討。

參考資料

www.enkichen.com/2016/04/12/…
my.oschina.net/dyyweb/blog…
www.ruanyifeng.com/blog/2011/0…


最後作個推廣,歡迎關注公衆號 MrPeakTech,我從這裏學到不少,推薦給你們,共同進步~

相關文章
相關標籤/搜索