加密解密、Openssl、自建CA
一、三種加密方式
? ?1.對(duì)稱加密
? ? ?工作機(jī)制:需要對(duì)加密和解密使用相同密鑰的加密算法。密鑰是控制加密及解密過(guò)程的指令。算法是一組規(guī)則,規(guī)定如何進(jìn)行加密和解密。將原文分割成固定大小的數(shù)據(jù)塊,對(duì)這些進(jìn)行加密,前后塊可能還有關(guān)聯(lián)。
? ? ?優(yōu)點(diǎn)和使用范圍:對(duì)稱密碼技術(shù)進(jìn)行安全通信前需要以安全方式進(jìn)行密鑰交換,且它的規(guī)模復(fù)雜對(duì)稱密碼技術(shù)的優(yōu)點(diǎn)在于效率高,算法簡(jiǎn)單,系統(tǒng)開(kāi)銷(xiāo)小,適合加密大量數(shù)據(jù)。對(duì)稱密鑰算法具有加密處理簡(jiǎn)單,加解密速度快,密鑰較短,發(fā)展歷史悠久等優(yōu)點(diǎn)。
? ? ?缺點(diǎn):加密的安全性不僅取決于加密算法本身,密鑰管理的安全性更是重要。因?yàn)榧用芎徒饷芏际褂猛粋€(gè)密鑰,如何把密鑰安全地傳遞到解密者手上就成了必須要解決的問(wèn)題。
? ? ?算法:DES(56bits),3DES, AES(128bits), Blowfish,Twofish, IDEA, RC6, CAST5, Serpent
`
? ?2.公鑰加密(非對(duì)稱加密)(解決了對(duì)稱加密需要傳遞秘鑰的缺點(diǎn))
? ? ?工作機(jī)制:非對(duì)稱加密算法需要兩個(gè)密鑰:公開(kāi)密鑰(publickey)和私有密鑰(privatekey)。公開(kāi)密鑰與私有密鑰是一對(duì),如果用公開(kāi)密鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用對(duì)應(yīng)的私有密鑰才能解密;如果用私有密鑰對(duì)數(shù)據(jù)進(jìn)行加密,那么只有用對(duì)應(yīng)的公開(kāi)密鑰才能解密。
? ? ?優(yōu)點(diǎn)和使用范圍:非對(duì)稱加密體系不要求通信雙方事先傳遞密鑰或有任何約定就能完成保密通信,并且密鑰管理方便,可實(shí)現(xiàn)防止假冒和抵賴,因此,更適合網(wǎng)絡(luò)通信中的保密通信要求。
? ? ?缺點(diǎn):算法強(qiáng)度復(fù)雜、安全性依賴于算法與密鑰但是由于其算法復(fù)雜,而使得非對(duì)稱加密算法比對(duì)稱加密算法慢三個(gè)數(shù)量級(jí)(1000)。
? ? ?算法:RSA, EIGamal, DSA
? ?3.單向加密(hash加密)
? ? ?工作機(jī)制:不是用來(lái)加密數(shù)據(jù)的,是用來(lái)實(shí)現(xiàn)抽取數(shù)據(jù)摘要的技術(shù)。數(shù)據(jù)摘要是一個(gè)唯一對(duì)應(yīng)一個(gè)消息或文本的固定長(zhǎng)度的值,它由一個(gè)單向Hash加密函數(shù)對(duì)消息進(jìn)行作用而產(chǎn)生。如果消息在途中改變了,則接收者通過(guò)對(duì)收到消息的新產(chǎn)生的摘要與原摘要比較,就可知道消息是否被改變了。因此消息摘要保證了消息的完整性。 消息摘要采用單向Hash 函數(shù)將需加密的明文"摘要"成一串128bit的密文,這一串密文亦稱為數(shù)字指紋(Finger Print),它有固定的長(zhǎng)度,且不同的明文摘要成密文,其結(jié)果總是不同的,而同樣的明文其摘要必定一致。這樣這串摘要便可成為驗(yàn)證明文是否是"真身"的"指紋"了。
? ? ?優(yōu)點(diǎn)和使用范圍:HASH函數(shù)的抗沖突性使得如果一段明文稍有變化,哪怕只更改該段落的一個(gè)字母,通過(guò)哈希算法作用后都將產(chǎn)生不同的值。而HASH算法的單向性使得要找到哈希值相同的兩個(gè)不同的輸入消息,在計(jì)算上是不可能的。所以數(shù)據(jù)的哈希值,即消息摘要,可以檢驗(yàn)數(shù)據(jù)的完整性。
? ? ?算法:MD5,SHA1,SHA512,CRC-32
二、加密(保證私密性、身份驗(yàn)證、數(shù)據(jù)完整性)
? ?1.生成一段數(shù)據(jù);
? ?2.使用單向加密算法,抽取數(shù)據(jù)的特征碼;(保證完整性)
? ?3.使用私鑰加密特征碼,然后附加在數(shù)據(jù)后面;(保證身份認(rèn)證)
? ?3.使用對(duì)稱加密算法,加密數(shù)據(jù)和私鑰加密的特征碼;(保證加密速度)
? ?4.使用對(duì)方公鑰加密對(duì)稱加密的密碼;(保證私密性)
三、SSL
? ?SSL 是一個(gè)縮寫(xiě),代表的是 Secure Sockets Layer。它是支持在 Internet 上進(jìn)行安全通信的標(biāo)準(zhǔn),并且將數(shù)據(jù)密碼術(shù)集成到了協(xié)議之中。數(shù)據(jù)在離開(kāi)您的計(jì)算機(jī)之前就已經(jīng)被加密,然后只有到
達(dá)它預(yù)定的目標(biāo)后才被解密。證書(shū)和密碼學(xué)算法支持了這一切的運(yùn)轉(zhuǎn),使用 OpenSSL,您將有機(jī)會(huì)切身體會(huì)它們。
? ?理論上,如果加密的數(shù)據(jù)在到達(dá)目標(biāo)之前被截取或竊聽(tīng),那些數(shù)據(jù)是不可能被破解的。不過(guò),由于計(jì)算機(jī)的變化一年比一年快,而且密碼翻譯方法有了新的發(fā)展,因此,SSL 中使用的加密協(xié)議被破解的可能性也在增大。可以將 SSL 和安全連接用于 Internet 上任何類型的協(xié)議,不管是 HTTP、POP3,還是 FTP。還可以用 SSL 來(lái)保護(hù) Telnet 會(huì)話。雖然可以用 SSL 保護(hù)任何連接,但是不必對(duì)每一類連接都使用 SSL。如果連接傳輸敏感信息,則應(yīng)使用 SSL。
四、Openssl
? ?openSSL 不僅僅是 SSL。它可以實(shí)現(xiàn)消息摘要、文件的加密和解密、數(shù)字證書(shū)、數(shù)字
簽名和隨機(jī)數(shù)字。
? ?OpenSSL是套開(kāi)放源代碼的SSL套件,其函式庫(kù)是以C語(yǔ)言所寫(xiě)成,實(shí)作了基本的傳輸層資料加密功能。包含以下三部分: ?
? ? ? ?1.libcryto:通用功能的加密庫(kù),眾多軟件要想實(shí)現(xiàn)加密機(jī)制直接可以調(diào)用這個(gè)庫(kù),而且調(diào)用機(jī)制也特別簡(jiǎn)單;
? ? ? ?2.libssl:用于實(shí)現(xiàn)TSL/SSL的功能;(更多TSL/SSL機(jī)制可參考)
? ? ? ?3.openssl:多功能命令工具。生成秘鑰,創(chuàng)建數(shù)字證書(shū),手動(dòng)加密解密數(shù)據(jù)
五、數(shù)字證書(shū)
? ?(公鑰加密的重要應(yīng)用)讓第三方機(jī)構(gòu)能夠用一種比較可靠的手段,將申請(qǐng)者的公鑰安全的分發(fā)出去的一種機(jī)制。
? ?證書(shū)格式:x509、pkcs
? ? ? ? x509格式:
? ?公鑰和有效期限:
? ?持有者的個(gè)人合法身份信息:(主機(jī)名)
? ?證書(shū)的使用方式:
? ?CA的信息:
? ?CA的數(shù)字簽名:
補(bǔ)充:
? ? ? ? ? ?CA,身份認(rèn)證機(jī)構(gòu) (Certificate Authority)
? ? ? ? ? ?數(shù)字簽名,即私鑰加密,公鑰解密。若使用公開(kāi)的公能夠解密,即可確定密鑰串的主人,用以完成身份認(rèn)證。
? ? ? ? ? ?通過(guò)證書(shū)可以向CA查看此公鑰是否被CA認(rèn)可,即為,合法公鑰。
? ? ?誰(shuí)給CA發(fā)證:自簽署證書(shū)。CA的證書(shū)內(nèi)置于操作系統(tǒng)。
六、openssl的基本應(yīng)用
? ?1.對(duì)稱加密:
? ? ? ?算法:DES ?3DES ?AES ?Blowfish ?Twofish ?RCG ?CAST5
? ? ? ?工具:gpg , ?openssl enc ? ?
加密#openssl enc -des3 -a -salt -in /path/to/input_file -out /path/to/cipher_file 解密#openssl enc -d -des3 -a -salt -in /path/to/cipher_file -out /path/to/clear_file例:
? ?2.單向加密:
? ? ? ?特性:One-Way ?, ?Collision-free
? ? ? ?算法:md5:128bits
? ? ? ? ? ? ? sha1:160bits
? ? ? ?工具:sha1sum ?,md5sum , cksum , openssl dgst
#openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] [-out filename]
? ? ? ?例:
七、使用openssl自建CA
? ?注:把openssl當(dāng)CA使用,只能用于測(cè)試,功能小而單一;如果真的需要更大范圍的CA應(yīng)用,
? ? ? ?需要使用基于openssl的openCA.
1.服務(wù)端自簽CA(用openssl實(shí)現(xiàn)私有CA)
? ? ? a.查看配置文件 ? ? ? ?
vim /etc/pki/tls/openssl.conf ? ? ? ? 與ca相關(guān)的配置
? ? ? ?b.生成秘鑰對(duì):(公鑰是從私鑰中按某種格式提取出來(lái)的)
cd /etc/pki/CA openssl genrsa -out private/cakey.pem 2048 ? ? ? ?為避免此種情況發(fā)生,可使用子shell
? ? ? ?查看公鑰:(man rsa)(非必要的步驟)
? ? ? ?c.生成自簽證書(shū):(man req)
? ? ? ? ? ?生成幾個(gè)配置文件中需要的文件(這步CentOS6,可省)
? ?2.客戶端實(shí)現(xiàn)證書(shū)申請(qǐng)(另外一臺(tái)主機(jī))
? ? ? ?私鑰放服務(wù)器的配置文件中(這里以httpd為例)
? ? ? ?生成證書(shū)請(qǐng)求
、
? ? ? ?請(qǐng)請(qǐng)求傳給CA簽署
? ?3.服務(wù)器端簽署證書(shū)
? ? ? ? ? ?傳遞給客戶端
? ?4.客戶端查看證書(shū)
? ?5.服務(wù)器端吊銷(xiāo)證書(shū)(一般用不著)
轉(zhuǎn)載于:https://blog.51cto.com/hoolee/1384763
總結(jié)
以上是生活随笔為你收集整理的加密解密、Openssl、自建CA的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: HDOJ 2546饭卡(01背包问题)
- 下一篇: Tricks with Direct M