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