久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

OpenSSL

來自站長百科
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索

OpenSSL,為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議,囊括了主要的密碼算法、常用的密鑰和證書封裝管理功能以及SSL協(xié)議,并提供了豐富的應(yīng)用程序供測試或其它目的使用。

OpenSSL簡介[ ]

眾多的密碼算法、公鑰基礎(chǔ)設(shè)施標(biāo)準(zhǔn)以及SSL協(xié)議,或許這些有趣的功能會讓你產(chǎn)生實(shí)現(xiàn)所有這些算法和標(biāo)準(zhǔn)的想法。果真如此,在對你表示敬佩的同時(shí),還是忍不住提醒你:這是一個(gè)令人望而生畏的過程。這個(gè)工作不再是簡單的讀懂幾本密碼學(xué)專著和協(xié)議文檔那么簡單,而是要理解所有這些算法、標(biāo)準(zhǔn)和協(xié)議文檔的每一個(gè)細(xì)節(jié),并用你可能很熟悉的C語言字符一個(gè)一個(gè)去實(shí)現(xiàn)這些定義和過程。我們不知道你將需要多少時(shí)間來完成這項(xiàng)有趣而可怕的工作,但肯定不是一年兩年的問題。

首先,應(yīng)該感謝Eric A. Young和Tim J. Hudson,他們自1995年開始編寫后來具有巨大影響的OpenSSL軟件包,更令我們高興的是,這是一個(gè)沒有太多限制的開放源代碼的軟件包,這使得我們可以利用這個(gè)軟件包做很多事情。Eric A. Young 和Tim J. Hudson是加拿大人,后來由于寫OpenSSL功成名就之后就到大公司里賺大錢去了。1998年,OpenSSL項(xiàng)目組接管了OpenSSL的開發(fā)工作,并推出了OpenSSL的0.9.1版,到目前為止,OpenSSL的算法已經(jīng)非常完善,對SSL2.0、SSL3.0以及TLS1.0都支持。

OpenSSL采用C語言作為開發(fā)語言,這使得OpenSSL具有優(yōu)秀的跨平臺性能,這對于廣大技術(shù)人員來說是一件非常美妙的事情,可以在不同的平臺使用同樣熟悉的東西。OpenSSL支持LinuxWindows、BSDMac、VMS等平臺,這使得OpenSSL具有廣泛的適用性。不過,對于目前新成長起來的C++程序員,可能對于C語言的代碼不是很習(xí)慣,但習(xí)慣C語言總比使用C++重新寫一個(gè)跟OpenSSL相同功能的軟件包輕松不少。

OpenSSL的基本功能[ ]

OpenSSL整個(gè)軟件包大概可以分成三個(gè)主要的功能部分:密碼算法庫、SSL協(xié)議庫以及應(yīng)用程序。OpenSSL的目錄結(jié)構(gòu)自然也是圍繞這三個(gè)功能部分進(jìn)行規(guī)劃的。

作為一個(gè)基于密碼學(xué)的安全開發(fā)包,OpenSSL提供的功能相當(dāng)強(qiáng)大和全面,囊括了主要的密碼算法、常用的密鑰和證書封裝管理功能以及SSL協(xié)議,并提供了豐富的應(yīng)用程序供測試或其它目的使用。

對稱加密算法[ ]

OpenSSL一共提供了8種對稱加密算法,其中7種是分組加密算法,僅有的一種流加密算法是RC4。這7種分組加密算法分別是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持電子密碼本模式(ECB)、加密分組鏈接模式(CBC)、加密反饋模式(CFB)和輸出反饋模式(OFB)四種常用的分組密碼加密模式。其中,AES使用的加密反饋模式(CFB)和輸出反饋模式(OFB)分組長度是128位,其它算法使用的則是64位。事實(shí)上,DES算法里面不僅僅是常用的DES算法,還支持三個(gè)密鑰和兩個(gè)密鑰3DES算法。

非對稱加密算法[ ]

OpenSSL一共實(shí)現(xiàn)了4種非對稱加密算法,包括DH算法、RSA算法、DSA算法和橢圓曲線算法(EC)。DH算法一般用戶密鑰交換。RSA算法既可以用于密鑰交換,也可以用于數(shù)字簽名,當(dāng)然,如果你能夠忍受其緩慢的速度,那么也可以用于數(shù)據(jù)加密。DSA算法則一般只用于數(shù)字簽名。

信息摘要算法[ ]

OpenSSL實(shí)現(xiàn)了5種信息摘要算法,分別是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事實(shí)上包括了SHA和SHA1兩種信息摘要算法,此外,OpenSSL還實(shí)現(xiàn)了DSS標(biāo)準(zhǔn)中規(guī)定的兩種信息摘要算法DSS和DSS1。

密鑰和證書管理[ ]

密鑰和證書管理是PKI的一個(gè)重要組成部分,OpenSSL為之提供了豐富的功能,支持多種標(biāo)準(zhǔn)。

首先,OpenSSL實(shí)現(xiàn)了ASN.1的證書和密鑰相關(guān)標(biāo)準(zhǔn),提供了對證書、公鑰、私鑰、證書請求以及CRL等數(shù)據(jù)對象的DER、PEM和BASE64的編解碼功能。OpenSSL提供了產(chǎn)生各種公開密鑰對和對稱密鑰的方法、函數(shù)和應(yīng)用程序,同時(shí)提供了對公鑰和私鑰的DER編解碼功能。并實(shí)現(xiàn)了私鑰的PKCS#12和PKCS#8的編解碼功能。OpenSSL在標(biāo)準(zhǔn)中提供了對私鑰的加密保護(hù)功能,使得密鑰可以安全地進(jìn)行存儲和分發(fā)。

在此基礎(chǔ)上,OpenSSL實(shí)現(xiàn)了對證書的X.509標(biāo)準(zhǔn)編解碼、PKCS#12格式的編解碼以及PKCS#7的編解碼功能。并提供了一種文本數(shù)據(jù)庫,支持證書的管理功能,包括證書密鑰產(chǎn)生、請求產(chǎn)生、證書簽發(fā)、吊銷和驗(yàn)證等功能。

事實(shí)上,OpenSSL提供的CA應(yīng)用程序就是一個(gè)小型的證書管理中心(CA),實(shí)現(xiàn)了證書簽發(fā)的整個(gè)流程和證書管理的大部分機(jī)制。

SSLTLS協(xié)議

OpenSSL實(shí)現(xiàn)了SSL協(xié)議的SSLv2和SSLv3,支持了其中絕大部分算法協(xié)議。OpenSSL也實(shí)現(xiàn)了TLSv1.0,TLS是SSLv3的標(biāo)準(zhǔn)化版,雖然區(qū)別不大,但畢竟有很多細(xì)節(jié)不盡相同。

雖然已經(jīng)有眾多的軟件實(shí)現(xiàn)了OpenSSL的功能,但是OpenSSL里面實(shí)現(xiàn)的SSL協(xié)議能夠讓我們對SSL協(xié)議有一個(gè)更加清楚的認(rèn)識,因?yàn)橹辽俅嬖趦牲c(diǎn):一是OpenSSL實(shí)現(xiàn)的SSL協(xié)議是開放源代碼的,我們可以追究SSL協(xié)議實(shí)現(xiàn)的每一個(gè)細(xì)節(jié);二是OpenSSL實(shí)現(xiàn)的SSL協(xié)議是純粹的SSL協(xié)議,沒有跟其它協(xié)議(如HTTP)協(xié)議結(jié)合在一起,澄清了SSL協(xié)議的本來面目。

應(yīng)用程序[ ]

功能

OpenSSL的應(yīng)用程序已經(jīng)成為了OpenSSL重要的一個(gè)組成部分,其重要性恐怕是OpenSSL的開發(fā)者開始沒有想到的。現(xiàn)在OpenSSL的應(yīng)用中,很多都是基于OpenSSL的應(yīng)用程序而不是其API的,如OpenCA,就是完全使用OpenSSL的應(yīng)用程序?qū)崿F(xiàn)的。OpenSSL的應(yīng)用程序是基于OpenSSL的密碼算法庫和SSL協(xié)議庫寫成的,所以也是一些非常好的OpenSSL的API使用范例,讀懂所有這些范例,你對OpenSSL的API使用了解就比較全面了,當(dāng)然,這也是一項(xiàng)鍛煉你的意志力的工作。

OpenSSL的應(yīng)用程序提供了相對全面的功能,在相當(dāng)多的人看來,OpenSSL已經(jīng)為自己做好了一切,不需要再做更多的開發(fā)工作了,所以,他們也把這些應(yīng)用程序成為OpenSSL的指令。OpenSSL的應(yīng)用程序主要包括密鑰生成、證書管理、格式轉(zhuǎn)換、數(shù)據(jù)加密和簽名、SSL測試以及其它輔助配置功能。

機(jī)制

Engine機(jī)制 Engine機(jī)制的出現(xiàn)是在OpenSSL的0.9.6版的事情,開始的時(shí)候是將普通版本跟支持Engine的版本分開的,到了OpenSSL的0.9.7版,Engine機(jī)制集成到了OpenSSL的內(nèi)核中,成為了OpenSSL不可缺少的一部分。 Engine機(jī)制目的是為了使OpenSSL能夠透明地使用第三方提供的軟件加密庫或者硬件加密設(shè)備進(jìn)行加密。OpenSSL的Engine機(jī)制成功地達(dá)到了這個(gè)目的,這使得OpenSSL已經(jīng)不僅僅使一個(gè)加密庫,而是提供了一個(gè)通用地加密接口,能夠與絕大部分加密庫或者加密設(shè)備協(xié)調(diào)工作。當(dāng)然,要使特定加密庫或加密設(shè)備OpenSSL協(xié)調(diào)工作,需要寫少量的接口代碼,但是這樣的工作量并不大,雖然還是需要一點(diǎn)密碼學(xué)的知識。Engine機(jī)制的功能跟Windows提供的CSP功能目標(biāo)是基本相同的。目前,OpenSSL的0.9.7版本支持的內(nèi)嵌第三方加密設(shè)備有8種,包括:CryptoSwift、nCipher、Atalla、Nuron、UBSEC、Aep、SureWare以及IBM 4758 CCA的硬件加密設(shè)備。現(xiàn)在還出現(xiàn)了支持PKCS#11接口的Engine接口,支持微軟CryptoAPI的接口也有人進(jìn)行開發(fā)。當(dāng)然,所有上述Engine接口支持不一定很全面,比如,可能支持其中一兩種公開密鑰算法。

輔助功能

BIO機(jī)制是OpenSSL提供的一種高層IO接口,該接口封裝了幾乎所有類型的IO接口,如內(nèi)存訪問、文件訪問以及Socket等。這使得代碼的重用性大幅度提高,OpenSSL提供API的復(fù)雜性也降低了很多。

OpenSSL對于隨機(jī)數(shù)的生成和管理也提供了一整套的解決方法和支持API函數(shù)。隨機(jī)數(shù)的好壞是決定一個(gè)密鑰是否安全的重要前提。

OpenSSL還提供了其它的一些輔助功能,如從口令生成密鑰的API,證書簽發(fā)和管理中的配置文件機(jī)制等等。如果你有足夠的耐心,將會在深入使用OpenSSL的過程慢慢發(fā)現(xiàn)很多這樣的小功能,讓你不斷有新的驚喜。

相關(guān)條目[ ]

參考資料[ ]

http://baike.baidu.com/view/300712.htm#8