在現代社會,網際網路已經滲透到人們日常生活的方方面面,娛樂、經濟、社會關係等都離不開網際網路的幫助。在這個背景下,網際網路安全就顯得十分重要,沒有提供足夠的安全保障,人們是不會如此依賴它的。幸運的是,在大牛們的努力下,很早以前就有一套安全體系來保障網際網路資訊的傳遞。下面我們一起來了解一下這套體系。
加密演算法
首先我們需要了解一下加密相關的知識,加密可以分為對稱加密和非對稱加密。兩者的主要區別就是是否使用同一個祕鑰,對稱加密需要用同一個祕鑰。非對稱加密不需要用同一個祕鑰,而是需要兩個祕鑰:公開金鑰(publickey)和私有金鑰(privatekey),並且加密金鑰和解密金鑰是成對出現的。
對稱加密
對稱加密演算法的特點是演算法公開、計算量小、加密速度快、加密效率高。對稱加密有很多種演算法,由於它效率很高,所以被廣泛使用在很多加密協議的核心當中。不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。常見的對稱加密有 DES、AES 等。
非對稱加密
非對稱加密使用一對“私鑰-公鑰”,用私鑰加密的內容只有對應公鑰才能解開,反之亦然。非對稱加密有以下特性:
- 對於一個公鑰,有且只有一個對應的私鑰。
- 公鑰是公開的,並且不能通過公鑰反推出私鑰。
- 通過私鑰加密的密文只能通過公鑰能解密,通過公鑰加密的密文也只能通過私鑰能解密。
非對稱加密不需要共享同一份祕鑰,安全性要比對稱加密高,但由於演算法強度比對稱加密複雜,加解密的速度比對稱加解密的速度要慢。常見的非對稱加密有 RSA、ESA、ECC 等。
摘要演算法
除了加密演算法,摘要演算法在網際網路安全體系中也扮演了重要的角色。摘要演算法有以下特性:
- 只要源文字不同,計算得到的結果,必然不同(或者說機會很少)。
- 無法從結果反推出源資料。
基於以上特性,我們一般使用摘要演算法來校驗原始內容是否被篡改。常見的摘要演算法有 MD5、SHA 等。
Tips: 摘要演算法不能算作加密演算法,加密演算法需要使用祕鑰加解密,但摘要演算法無法根據結果反推出內容。另外 MD5 目前也不算安全了,例如彩虹表攻擊。
具體例子
假設甲公司要給乙公司傳送一份機密的檔案,那麼這次傳輸需要確保以下幾點:
- 檔案內容不能被讀取(加密)
- 檔案內容不能被篡改(數字簽名)
- 檔案不能被掉包(數字證書)
加密
對稱加密需要用同一份祕鑰,這一份祕鑰的約定就有被中途截獲的可能。因此可以採用非對稱加密演算法加密對稱祕鑰的方式來加密內容,也就是用乙的公鑰加密對稱祕鑰,並用這個對稱祕鑰加密檔案內容。
假設這份檔案被黑客截獲,但是黑客沒有乙的私鑰無法解出對稱祕鑰,也就無法解密檔案內容。但是這裡有個風險,雖然黑客無法解密檔案內容,但他可以自己生成一份祕鑰並用乙的公鑰加密,再用這份祕鑰加密一份偽造的檔案發給乙,這種情況下乙收到的就是被篡改的檔案。
數字簽名
上面提到乙有可能收到被篡改的檔案,這個問題可以用數字簽名的方式解決,數字簽名就是用摘要演算法提取出原始檔的摘要並用私鑰進行加密後的內容。針對上面那個問題,甲在傳送檔案時再附帶上原始檔的數字簽名。如果被黑客擷取到加密後的檔案和數字簽名,黑客即使使用甲的公鑰解出了檔案摘要,由於摘要演算法的特性黑客也無法還原出原始內容。但乙可以解密出檔案內容再用同樣的摘要演算法提取出摘要來和數字簽名裡的摘要進行比對,摘要一致則說明檔案沒有被篡改過。
到目前為止還有一個風險就是乙無法確定自己用的公鑰就是甲提供的,如果黑客乙手裡的甲的公鑰替換成自己的並用自己的私鑰生成數字簽名,那麼乙還是會受到被篡改的檔案。
數字證書
數字證書的出現就是為了解決上述提到的問題,數字證書是一個經證書授權中心數字簽名的包含公開金鑰擁有者資訊以及公開金鑰的檔案。
數字證書裡一般會包含公鑰、公鑰擁有者名稱、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 協議保證客戶端和伺服器端資料的機密性、完整性、身份驗證。
- 自開發安全應用系統:自開發安全應用系統是指各行業自開發的各種具體應用系統,例如銀行、證券的應用系統等。
總結
數字簽名和數字證書是兩個不同的概念,理解的關鍵點是數字簽名是內容提供方用自己的私鑰對內容摘要(MD5、SHA)非對稱加密,而數字證書的關鍵是 CA 用自己的私鑰對證書內容的摘要非對稱加密從而確保證書內的使用者合法擁有證書裡列出的公鑰。
理解了這兩個概念後再回頭去看前面例子裡的流程就很清楚了,後面有空再說明下 https 祕鑰協商的過程~
轉載請註明出處,有任何疑問都可聯絡我,歡迎探討。
參考資料
www.enkichen.com/2016/04/12/…
my.oschina.net/dyyweb/blog…
www.ruanyifeng.com/blog/2011/0…
最後做個推廣,歡迎關注公眾號 MrPeakTech,我從這裡學到很多,推薦給大家,共同進步~