1. 程式人生 > 實用技巧 >Linux系統之加密、解密、openssl的基本應用及CA的實現過程

Linux系統之加密、解密、openssl的基本應用及CA的實現過程

Linux系統之加密、解密、openssl的基本應用及CA的實現過程


簡介

加密技術是最常用的安全保密手段,利用技術手段把重要的資料變為亂碼(加密)傳送,到達目的地後再用相同或不同的手段還原(解密)。

  加密技術包括兩個元素:演算法和金鑰。演算法是將普通的資訊或者可以理解的資訊與一串數字(金鑰)結合,產生不可理解的密文的步驟,金鑰是用來對資料進行編碼和解密的一種演算法。在安全保密中,可通過適當的鑰加密技術和管理機制來保證網路的資訊通訊安全。


分類:

對稱加密:加密方解密方使用同一個口令

加密方法:

DES、AES、3DES、Blowfish、Twofish、IDEA、RC6、CASTS、Serpent

其中常見的為:

DES(資料加密標準):56為金鑰

AES(高階加密標準):128位金鑰

特性:

1、加密解密使用同一個口令

2、將原文分割成固定大小的資料塊,對這些塊進行加密

優點:加密效率高、計算量小、加密解密的速度很快

缺點:口令傳輸且口令較多,無法實現金鑰交換

公鑰加密:也叫非對稱加密,公鑰加密的加密和解密使用的不是同一個密碼,而是一對密碼中的一個,,它的祕鑰是成對出現的,一個叫公鑰,一個叫私鑰,使用公鑰加密的只能使用與之配對的私鑰解密;反之,使用私鑰加密的只能使用與之配對的公鑰解密;用私鑰加密是用來認證使用者的,能實現所謂的電子憑證。

單向加密

加密方法:

RSA、EIGamal、DSA

其中DSA不能實現資料加密,只能實現身份認證

特性:可以實現金鑰交換以及身份認證

缺點:花費時間長

在非對稱加密長度中,最常用的就是2048位,雖然比對稱加密安全,卻花費了太多的時間,所以,我們通常用對稱加密來實現資料的加密盒解密,而用非對稱加密實現使用者的身份認證。

單向加密:單向加密具有雪崩效應,只要輸入的資料相同,輸出的資料就相同;反之,如果輸入不同,結果就有巨大不同,可以避免逆推。

加密演算法:

MD5、MD4、SHA1、SHA512、CRC-32

特性:保證資料的完整性,不可逆


OpenSSL

作為一個基於密碼學的安全開發包,OpenSSL提供的功能相當強大和全面,囊括了主要的密碼演算法、常用的金鑰和證書封裝管理功能以及SSL協議,並提供了豐富的應用程式供測試或其它目的使用。

基本功能:

OpenSSL整個軟體包由三個套件組成:

libcrypto:具有通用功能的加密庫

libssl:用於實現TLS/SSL的功能

openssl:多功能命令工具,可以生產金鑰、建立數字證書、手動加密解密資料

利用openssl加密解密技術常用的功能及演算法:

對稱加密:

演算法:

DES、AES、3DES、Blowfish、Twofish、IDEA、RC6、CASTS、Serpent

工具: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

例子:

加密:

wKioL1M1NFSCaZwNAAAqeg0EacE437.jpg

wKiom1M1NHvQTjAyAACuWrDI75k525.jpg

wKioL1M1NFGxXK4dAAANxFhJ94w353.jpg

wKiom1M1NHjwbINmAAA7vQBXRG0824.jpg

解密:

wKioL1M1NFDT9W2RAABzPmNy1RQ720.jpg

-in:需要加密的檔案

-out:需要解密的檔案

-des3:演算法,也可以使用以上列出的其它演算法


單向加密:

演算法:md5:128bits

sha1:160bits

sha512:512bits

工具:sha1sum,md5sum,cksum,openssl dgst

格式:

openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] [-out filename] /path/to/somefile

例子:

wKiom1M1NH-iga1kAABguCh9OnY231.jpg

CA的實現過程:

數字證書的格式:

x509,pkcs

x509格式:

公鑰和有效期限;

持有者的個人合法身份資訊;

證書的使用方式;

CA的資訊;

CA的數字簽名;

簽名是用來驗證證書的有效性和合法性;

證書籤署請求:

生成一對金鑰;

把所需的資訊按固定格式製作成證書申請;

用openssl實現私有CA(自建CA並完成對伺服器發證):

1、自建CA

生成金鑰對兒:

wKioL1M1NFriPVh6AAFRbNYQWv8718.jpg

檢視公鑰的命令為:

openssl rsa -in private/cakey.pem -pubout -text -noout


生成自簽證書:

wKiom1M1NIOCBczAAABUn9iheNo445.jpg

-new:新的自簽證書

-x509:x509格式的證書

-key:私鑰檔案

-out:輸出的證書檔案

-days:有效期限為多少天


按需要填寫證書內容:


wKiom1M1NJWzlTfhAAHoh9wkak8023.jpg

建立需要的檔案:

wKiom1M1NJjTw2KnAAArQukW_nU476.jpg

wKioL1M1NG_xh-kCAABVJz1R1Bs399.jpg

2、用openssl實現證書申請:

在主機上生成金鑰,儲存至應用此證書的服務的配置檔案目錄下

wKiom1M1NJvS_9sKAABL4UAZVdQ869.jpg

wKioL1M1NHGxSxRIAADizRVAW14155.jpg

生成證書籤署請求:

wKiom1M1NJ2D_xZyAANj8GubJrs020.jpg

將請求檔案發往CA:

wKioL1M1NHfjy1gyAAHe8A5LoPE867.jpg

CA端簽署證書:

wKiom1M1NKKgDVT8AAJaFkXVHcA535.jpg

將證書傳回請求者:

wKioL1M1NHvAUfrqAAAuBDZ3cck619.jpg

吊銷證書:

wKiom1M1NKTByPJdAAAt4wdupSY086.jpg

注意:吊銷證書並不是必要步驟,是隻有在證書過期或掛失的時候才會吊銷。


轉載於:https://blog.51cto.com/junfengwang/1386131