天天看點

OpenSSL 與 SSL 數字證書概念貼

首先簡單區分一下https、ssl、openssl三者的關系:

ssl是在用戶端和伺服器之間建立一條ssl安全通道的安全協定,而openssl是tls/ssl協定的開源實作,提供開發庫和指令行程式。常說的https是http的加密版,底層使用的加密協定是ssl。

pki 就是 public key infrastructure 的縮寫,翻譯過來就是公開密鑰基礎設施。它是利用公開密鑰技術所建構的,解決網絡安全問題的,普遍适用的一種基礎設施;是一種遵循既定标準的密鑰管理平台,它能夠為所有網絡應用提供加密和數字簽名等密碼服務及所必需的密鑰和證書管理體系。

為保證使用者之間在網上傳遞資訊的安全性、真實性、可靠性、完整性和不可抵賴性

ca 機構,又稱為證書認證中心 (certificate authority) 中心,是一個負責發放和管理數字證書的第三方權威機構,它負責管理pki結構下的所有使用者(包括各種應用程式)的證書,把使用者的公鑰和使用者的其他資訊捆綁在一起,在網上驗證使用者的身份。ca機構的數字簽名使得攻擊者不能僞造和篡改證書。

認證中心主要有以下5個功能:

證書的頒發:接收、驗證使用者(包括下級認證中心和最終使用者)的數字證書的申請。可以受理或拒絕

證書的更新:認證中心可以定期更新所有使用者的證書,或者根據使用者的請求來更新使用者的證書

證書的查詢:查詢目前使用者證書申請處理過程;查詢使用者證書的頒發資訊,這類查詢由目錄伺服器ldap來完成

證書的廢棄:由于使用者私鑰洩密等原因,需要向認證中心提出證書廢棄的請求;證書已經過了有效期,認證中心自動将該證書廢棄。認證中心通過維護證書廢棄清單 (certificate revocation list,crl) 來完成上述功能。

證書的歸檔:證書具有一定的有效期,證書過了有效期之後就将廢棄,但是我們不能将廢棄的證書簡單地丢棄,因為有時我們可能需要驗證以前的某個交易過程中産生的數字簽名,這時我們就需要查詢廢棄的證書。

"ssl證書"這個詞是一個相對較大的概念,整個pki體系中有很多ssl證書格式标準。pki的标準規定了pki的設計、實施和營運,規定了pki各種角色的"遊戲規則",提供資料文法和語義的共同約定。x.509是pki中最重要的标準,它定義了公鑰證書的基本結構,可以說pki是在x.509标準基礎上發展起來的:

ssl公鑰證書

證書廢除清單crl(certificate revocation lists 證書黑名單)

example:

對稱密鑰加密(一個密鑰),也叫做共享密鑰加密或機密密鑰加密,使用發件人和收件人共同擁有的單個密鑰。這種密鑰既用于加密,也用于解密,叫做機密密鑰。對稱密鑰加密是加密大量資料的一種行之有效的方法。

對稱密鑰加密有許多種算法如des,rc4,idea等,但所有這些算法都有一個共同的目的:以可還原的方式将明文 (未加密的資料轉換為暗文。暗文使用加密密鑰編碼,對于沒有解密密鑰的任何人來說它都是沒有意義的。由于對稱密鑰加密在加密和解密時使用相同的密鑰,是以這種加密過程的安全性取決于是否有未經授權的人獲得了對稱密鑰。

衡量對稱算法優劣的主要尺度是其密鑰的長度。密鑰越長,在找到解密資料所需的正确密鑰之前必須測試的密鑰數量就越多。需要測試的密鑰越多,破解這種算法就越困難。

公鑰加密使用兩個密鑰:一個公鑰和一個私鑰,這兩個密鑰在數學上是相關的。為了與對稱密鑰加密相對照,公鑰加密有時也叫做不對稱密鑰加密。在公鑰加密中,公鑰可在通信雙方之間公開傳遞,或在公用儲備庫中釋出,但相關的私鑰是保密的。隻有使用私鑰才能解密用公鑰加密的資料。使用私鑰加密的資料隻能用公鑰解密。下圖中,發件人擁有收件人的公鑰,并用它加密了一封郵件,但隻有收件人掌握解密該郵件的有關私鑰。

OpenSSL 與 SSL 數字證書概念貼

公鑰算法的主要局限在于,這種加密形式的速度相對較低。實際上,通常僅在關鍵時刻才使用公鑰算法,如在實體之間交換對稱密鑰時,或者在簽署一封郵件的散列時(散列是通過應用一種單向數學函數獲得的一個定長結果,對于資料而言,叫做雜湊演算法)。将公鑰加密與其它加密形式(如對稱密鑰加密)結合使用,可以優化性能,如數字簽名和密鑰交換。

常用公鑰算法:

rsa:适用于數字簽名和密鑰交換。 是目前應用最廣泛的公鑰加密算法,特别适用于通過 internet 傳送的資料,rsa算法以它的三位發明者的名字命名。

dsa:僅适用于數字簽名。 數字簽名算法 (digital signature algorithm, dsa) 由美國國家安全署 (united states national security agency, nsa) 發明,已作為數字簽名的标準。dsa 算法的安全性取決于自計算離散算法的困難。這種算法,不适用于資料加密。

diffie-hellman:僅适用于密鑰交換。 diffie-hellman 是發明的第一個公鑰算法,以其發明者 whitfield diffie 和 martin hellman 的名字命名。diffie-hellman 算法的安全性取決于在一個有限字段中計算離散算法的困難。

散列,也稱為散列值或消息摘要 ,是一種與基于密鑰(對稱密鑰或公鑰)的加密不同的資料轉換類型。散列就是通過把一個叫做雜湊演算法的單向數學函數應用于資料,将任意長度的一塊資料轉換為一個定長的、不可逆轉的數字,其長度通常在128~256位之間。所産生的散列值的長度應足夠長,是以使找到兩塊具有相同散列值的資料的機會很少。如發件人生成郵件的散列值并加密它,然後将它與郵件本身一起發送。而收件人同時解密郵件和散列值,并由接收到的郵件産生另外一個散列值,然後将兩個散列值進行比較。如果兩者相同,郵件極有可能在傳輸期間沒有發生任何改變。

下面是幾個常用的散列函數:

md5:是rsa資料安全公司開發的一種單向雜湊演算法,md5被廣泛使用,可以用來把不同長度的資料塊進行暗碼運算成一個128位的數值。

sha-1:與 dsa 公鑰算法相似,安全雜湊演算法1(sha-1)也是由 nsa 設計的,并由 nist 将其收錄到 fips 中,作為散列資料的标準。它可産生一個 160 位的散列值。sha-1 是流行的用于建立數字簽名的單向雜湊演算法。

mac(message authentication code):消息認證代碼,是一種使用密鑰的單向函數,可以用它們在系統上或使用者之間認證檔案或消息,常見的是hmac(用于消息認證的密鑰雜湊演算法)。

crc(cyclic redundancy check):循環備援校驗碼,crc校驗由于實作簡單,檢錯能力強,被廣泛使用在各種資料校驗應用中。占用系統資源少,用軟硬體均能實作,是進行資料傳輸差錯檢測地一種很好的手段(crc 并不是嚴格意義上的雜湊演算法,但它的作用與雜湊演算法大緻相同,是以歸于此類)。

數字簽名是郵件、檔案或其它數字編碼資訊的發件人将他們的身份與資訊綁定在一起(即為資訊提供簽名)的方法。對資訊進行數字簽名的過程,需要将資訊與由發件人掌握的秘密資訊一起轉換(使用私鑰)為叫做簽名的标記。數字簽名用于公鑰環境(任何人都可以擁有)中,它通過驗證發件人确實是他或她所聲明的那個人,并确認收到的郵件與發送的郵件完全相同。

雜湊演算法處理資料的速度比公鑰算法快得多。散列資料還縮短了要簽名的資料的長度,因而加快了簽名過程。

對稱密鑰算法非常适合于快速并安全地加密資料。但其缺點是,發件人和收件人必須在交換資料之前先交換機密密鑰。結合使用加密資料的對稱密鑰算法與交換機密密鑰的公鑰算法可産生一種既快速又靈活的解決方案。

繼續閱讀