天天看點

OpenSSL簡介

OpenSSL是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協定,并提供豐富的應用程式供測試或其它目的使用。

SSL是SecureSockets Layer(安全套接層協定)的縮寫,可以在Internet上提供秘密性傳輸。其目标是保證兩個應用間通信的保密性和可靠性,可在伺服器端和使用者端同時實作支援。已經成為Internet上保密通訊的工業标準。

安全套接層協定能使使用者/伺服器應用之間的通信不被攻擊者竊聽,并且始終對伺服器進行認證,還可選擇對使用者進行認證。SSL協定要求建立在可靠的傳輸層協定(TCP)之上。SSL協定的優勢在于它是與應用層協定獨立無關的,高層的應用層協定(例如,HTTP, FTP, TELNET等)能透明地建立于SSL協定之上。SSL協定在應用層協定通信之前就已經完成加密算法、通信密鑰的協商及伺服器認證工作。在此之後應用層協定所傳送的資料都會被加密,進而保證通信的私密性。

SSL協定提供的安全信道有三個特性:(1)、資料的保密性:資訊加密就是把明碼的輸入檔案用加密算法轉換成加密的檔案以實作資料的保密。加密的過程需要用到密鑰來加密資料然後在解密。沒有了密鑰,就無法解開加密的資料。資料加密之後,隻有密鑰要用一個安全的方法傳送。加密過的資料可以公開地傳送。(2)、資料的完整性:加密也能保證資料的一緻性。例如,消息驗證碼(MAC),能夠校驗使用者提供的加密資訊,接收者可以用MAC來校驗加密資料,保證資料在傳輸過程中沒有被篡改過。(3)、安全驗證:加密的另外一個用途是用來作為個人的辨別,使用者的密鑰可以作為他的安全驗證的辨別。SSL是利用公開密鑰的加密技術(RSA)來作為使用者端與伺服器端在傳送機密資料時的加密通訊協定。

OpenSSL采用C語言作為開發語言,這使得OpenSSL具有優秀的跨平台性能。OpenSSL支援Linux、Windows、BSD、Mac、VMS等平台。

OpenSSL整個軟體包大概可以分成三個主要的功能部分:SSL協定庫、應用程式以及密碼算法庫。

OpenSSL對于随機數的生成和管理也提供了一整套的解決方法和支援API函數。随機數的好壞是決定一個密鑰是否安全的重要前提。

OpenSSL還提供了其它的一些輔助功能,如從密碼生成密鑰的API,證書簽發和管理中的配置檔案機制等等。

OpenSSL提供了産生各種公開密鑰對和對稱密鑰的方法、函數和應用程式,同時提供了對公鑰和私鑰的DER編解碼功能。OpenSSL在标準中提供了對私鑰的加密保護功能,使得密鑰可以安全地進行存儲和分發。

OpenSSL一共提供了8種對稱加密算法,其中7種是分組加密算法,僅有的一種流加密算法是RC4.這7種分組加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支援電子密碼本模式(ECB)、加密分組連結模式(CBC)、加密回報模式(CFB)和輸出回報模式(OFB)四種常用的分組密碼加密模式。其中,AES使用的加密回報模式(CFB)和輸出回報模式(OFB)分組長度是128位,其它算法使用的則是64位。

OpenSSL一共實作了4種非對稱加密算法,包括DH算法、RSA算法DSA算法和橢圓曲線算法(EC)。DH算法一般用于密鑰交換。RSA算法既可以用于密鑰交換,也可以用于數字簽名。DSA算法則一般隻用于數字簽名。

OpenSSL實作了5種資訊摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事實上包括了SHA和SHA1兩種資訊摘要算法。此外,OpenSSL還實作了DSS标準中規定的兩種資訊摘要算法DSS和DSS1.

OpenSSL的應用程式主要包括密鑰生成、證書管理、格式轉換、資料加密和簽名、SSL測試以及其它輔助配置功能。

Engine機制目的是為了使OpenSSL能夠透明地使用第三方提供的軟體加密庫或者硬體加密裝置進行加密。