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


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