OpenSSL

一、OpenSSL簡介;

SSL是Secure Sockets Layer(安全套接層協議)的縮寫,可以在Internet上提供祕密性傳輸。Netscape公司在推出第一個Web瀏覽器的同時,提出了SSL協議標準。其目標是保證兩個應用間通信的保密性和可靠性,可在服務器端和用戶端同時實現支持。已經成爲Internet上保密通訊的工業標準。

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

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


二、加密方式及算法;


wKioL1SH5Ojgb1kaAAN5hMSgzBs628.jpg


參考資料:公鑰加密:http://baike.baidu.com/link?url=QCguCuAn6Kf6bmx-7YDnDDNtE-flQtQdXun_B0djhpF0ESVcZfSyvIxR4327FT-yJo711xKh9Bzznmo_IbSEeq

                 對稱加密:http://baike.baidu.com/view/119320.htm#2

                 單向加密:http://book.51cto.com/art/201102/245328.htm


三、SSL握手協議;

wKioL1SH-RbRDMsbAAGvU1fubqk270.jpg


更多詳細信息請參考;http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html


四、OpenSSL 應用

4.1 OpenSSL程序包

libcrypto:公共加密庫

libssl:ssl協議的實現

openssl:多用途的命令行工具,各功能分別使用子命令實現生成密鑰、創建數字證書、手動加密解密數據;

4.2 OpenSSL加密應用

4.2.1對稱加密

      工具:openssl enc, gpg

     算法:des, 3des, aes, blowfish, twofhish, rc6, idea, cast5

     enc工具:

     加密:# openssl enc -e -CIPHERNAME -a -salt -in /path/from/somefile -out /path/to/somecipher.file

     解密:# openssl enc -d -CIPHERNAME -a -salt -in /path/from/somecipher.file -out /path/to/someclear.file

     解析:-e:加密encrypt

               -d:解密decrypt

               -ciphername:加密算法

               -a/-base64:基於base64編碼

               -salt:在密文中加入salt

               -in /path/from/somefile:要加密/解密的輸入文件,缺省爲標準輸入 
               -out /path/to/somecipher.file:要加密/解密的輸出文件,缺省爲標準輸出

   

4.2.2單向加密:

      特性:One-Way, Collision-free

      算法:md5, sha1, sha256, sha384, sha512

      工具:md5sum, sha1sum, sha256sum, sha512sum, openssl dgst, chsum

      用法:# openssl dgst [-md5|-sha1] [-out /path/to/somedgst.file] /path/from/someclear.file

      解析:[-md5|-sha1]:加密算法

                [-out /path/to/somedgst.file]:加密後的輸出文件保存路徑

                /path/from/someclear.file:指名對哪個文件做加密計算


MAC:消息認證碼,單向加密的一種延伸應用,用於實現在網絡通信中保證所傳輸的數據的完整性;

                 機制

CBC-MAC

HMAC: 使用md5或sha1算法

生成用戶密碼:

openssl passwd -1 -salt SALT(加入數字或者其他salt,一般爲八位,也可以跟上‘openssl rand -base64|-hex NUM ’,則每次salt不會固定

生成隨機數:

 openssl rand -base64|-hex NUM  (對輸出結果編碼,-hex爲16進制編碼)


NUM: 表字節;-hex時,每個字符爲4位,因此,兩個字符爲一個字節;生成八位隨機數,NUM爲4即可


4.2.3公鑰加密:

(1)加密:

算法:RSA, ELGamal

工具:gpg, openssl rsautl


(2)數字簽名:

算法:RSA, DSA, ELGamal

DSA:Digital Signature Algorithm

DSS: Digital Signature Standard


(3)密鑰交換:

算法:公鑰加密、DH:Diffie-Hellman


(4)生成密鑰對兒:

# (umask 077; openssl genrsa -out /path/to/PRIVATEKEY.FILENUM_BITS)

從私鑰中提取公鑰:

# openssl rsa -in /patn/from/PRIVATEKEY.FILE -pubout


五、常見縮略語


wKiom1SIHO2j2jlnAAMiWQGW9tg056.jpg


SSL技術白皮書鏈接:http://www.h3c.com.cn/Products___Technology/Technology/Security_Encrypt/Other_technology/Technology_book/200812/622834_30003_0.htm


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章