Openssl相关的理论知识

 

一、OpenSSL的相关内容  

1、OpenSSL: SSL的开源实现 

  1. libcrypto: 通用加密解密的功能库,提供了各种加密函数(crpty,decrypt)  

  2. libssl: TLS/SSL协议的实现,库文件,能够被其他文件所调用(TLS/SSL本身是实现基于会话的、实现了身份认证、数据机密性和会话完整性的TLS/SSL库)  

  3. openssl: 多用途命令行工具(实现私有证书颁发机构)         

  4. openssl speed des   测试openssl加密des的速度  

  5.    eg:openssl enc -des3 -salt -a -in inittab out inittab.des3     被des3加密后的文件  

  6.    eg:openssl enc -des3 -salt -a -in inittab.des3 out inittab     被解密后的文件  

  7. md5sm inittab     计算inittab md5的校验码  

  8. sha1sum inittab   计算inittab sha1的校验码  

  9.    eg:openssl dgst -sha1 inittab  什么样的数据摘要算法对inittab做校验码  

  10.    eg:openssl passwd -l -salt tPsgh0st         salt存在的意义是避免反吞密码  

  11.    eg:openssl rand -base64 12       base64加密以后的长度是12(rand:伪随机数生成工具,  

  12. genrsa  :帮助生成一个rsa私钥(公钥是从私钥中提取的)  

  13. openssl genrsa 后面可以带上密钥长度,若不指明则默认为512  

  14.    eg: openssl genrsa 2048 > server.key    使用输出重定向保存私钥  

  15. openssl genrsa -out /PATH/TO/KEYFILENAME NUMBITS   明确保存在某文件中,不用使用数据重定向  

  16.    eg:(umask 077; openssl genrsa -out server1024.key 1024)   用括号括起来的命令只在当前子shell当中执行,执行完后子shell就退出了,创建文件都是600创建目录都是700,密钥长度是1024  

  17. openssl rsa -in /PATH/TO/KEYFILENAME -pubout  

  18.    eg:openssl rsa -in server.key -pubout       openssl生成rsa子命令  -in从哪里读取密钥,-putout输出公钥  

  19.    eg:openssl rsa -in server1024.key -pubout  把公钥从私钥中提取出来  

二、Openssh的相关知识 

1、OpenSSH(开源)

  1. ssh 是一种协议,有两个版本v1, v2 但v1目前处于废弃状态  

  2. 客户端:  

  3.     Linux: ssh  

  4.     Windows: putty, SecureCRT()(很著名的远程连接工具商业版), SSHSecureShellClient, Xmanager  

  5. 服务器端:  

  6.     sshd      

2、openssh (ssh, sshd)  

  1. ssh --> telnet 用来实现将认证过程加密 

  2. sshd: ssh服务器端需要一个主机密钥  

  3. netstat  

  4.     -r:显示路由表的  

  5.     -n:以数字方式显示IP地址和端口号  

  6.     -t: tcp connections (tcp协议)  

  7.     -u: udp connections  (udp协议)  

  8.     -l: listening   显示处于监听状态的服务  

  9.     -p: process   显示哪一个程序监听了当前状态  

  10. ssh  客户端的配置文件叫(ssh_config)  

  11. sshd 服务器端的配置文件叫(sshd_config)  

  12. ssh:  

  13.     ssh -l USERNAME REMOTE_HOST ['command']     指定用户名和远程主机  

  14.       eg:ssh -l root 172.16.66.1   

  15.     ssh USERNAME@REMOTE_HOST      

  16.       eg: ssl [email protected] 'ifconfig'    不用登录远程主机,只需执行远程主机上的命令       

  17.     -p port  指定端口  

  18.     -X:登录到远程主机上,而且执行远程主机上的窗口命令  

  19.     -Y:Y比X更安全  

三、如何保证数据的机密性?  

1、根据转换规则将输入的数据转换成密文 

  1.    机密性:  

  2.      加密:plaintext(明文) --> 转换规则 -->  ciphertext(密文) 

  3.      解密:ciphertext(密文) --> 转换规则 --> plaintext(明文) 

  4.    转换算法:密钥(保证数据机密性的最核心的不是算法本身而是密钥,我们要靠密钥保证数据的安全性)     

  5.    对称加密:算法(提供加密算法本身,并且要求用户提供密钥以后能够结合密钥和算法将明文转换成密文,算法计算速度非常快,但其安全性几乎完全依赖于密钥,因为很多算法是分开的)  

2、加密的方法  

1)对称加密:  

  1.     DES:Data Encrption Standard(数据加密标准), 56bit  

  2.     3DES:实现3轮的DES,这是目前最常用的DES  

  3.     AES:Advanced(高级加密标准)可以使用变长密钥(如:AES192, AES256, AES512)    

  4.     Blowfish  

2)单向加密 :(提取数的特征码,提取数据的数据的指纹,通过数据的指纹来完成数据的完整性)  

  1.     MD4  

  2.     MD5  (120)  

  3.     SHA1 (160)  

  4.     SHA192(192指输出长度), SHA256, SHA384   

  5.     CRC-32 (不是一种加密算法,只是一种校验码应用机制,所以它不接受任何安全性)  

  6. 单向加密算法:提取数据特征码  

  7.     输入一样:输出必然相同  

  8.     雪崩效应:输入的微小改变,将会引起结果的巨大改变  

  9.     定长输出:无论原始数据是多大,结果大小都是相同的  

  10.     不可逆:无法根据特征码还原原来的数据    

3)公钥加密:(加密/签名)  

  1.     身份认证(数字签名)  

  2.     数据加密  

  3.     密钥交换  

  4. 公钥加密的算法:  

  5.     RSA: 既能实现加密又能实现签名  

  6.     DSA:签名,  

  7.     ElGamal:是一种商业加密算法  

  8. 公钥加密本身可以实现两种功能:身份验证、加密数据,但也可以实现密钥交换  

四、基于密钥的认证:  

1、一台主机为客户端(基于某个用户实现):

1)生成一对密钥  

  1. ssh-keygen   

  2.     -t {rsa|dsa}     指定算法  

  3.     -f /path/to/keyfile    表示密钥文件  

  4.     -N 'password'    指定密码  

2)将公钥传输至服务器端某用户的家目录下的.ssh/authorized_keys文件中  

  1. 使用文件传输工具传输(ssh-copy-id, scp)  

  2. 用法:ssh-copy-id -i /path/to/pubkey USERNAME@REMOTE_HOST  

3)测试登录  

  1. scp: 基于ssh的远程复制命令,可以实现在主机之间传输数据 (传输过程中是加密的)  

  2. 用法:scp [options] SRC DEST  

  3. REMOTE_MACHINE  

  4.     USERNAME@HOSTNAME:/path/to/somefile  (远程主机上的通常用这种格式)  

  5. eg:scp [email protected]:/etc/fstaab ./  把远程的复制到本机上来  

2、基于密钥认证的总结:

  1. 1)密码应该经常换且足够复杂;  

  2. 2)使用非默认端口;  

  3. 3)限制登录客户地址;  

  4. 4)禁止管理直接登录;  

  5. 5)仅允许有限制用户登录;  

  6. 6)使用基于密钥的认证;  

  7. 7)禁止使用版本1  

五、小实例PKI(A、B间的加密通信)

  1. 证书:(主机,用户)  

  2.     用户信息,公钥  

  3.     颁发者的信息,签名  

  4.     证书有效期限  

  5. A发送方:  

  6. 1)计算数据的特征码(单向加密);  

  7. 2)用自己的私钥加密特征码,并附加在数据后面;  

  8. 3)生成一个临时对称密钥;  

  9. 4)用此密钥结合某算法加密数据及加密后的特征码;  

  10. 5)对接收方的公钥加密此对称密钥,并附加加密后的数据后面;  

  11. 6)发送至接收方;  

  12. B接收方:  

  13. 1)用自己的私钥解密加密的对称密钥;  

  14. 2)用对称密钥解密数据;  

  15. 3)用对方的公钥解密加密的特征码;  

  16. 4)用同样的算法计算数据的特征码,并与解密而来的特征码进行比较;  

六、OpenSSL实现私有CA的原理过程: 

1)创建CA  

  1.     自己生成一对密钥;(把公钥做成证书)  

  2.     生成自签证书;   

2)客户端  

  1.     生成一对密钥;  

  2.     生成证书颁发请求, .csr;  

  3.     将请求发给CA;      

3)CA端  

  1.     签署此证书;  

  2.     传送给客户端; 

 

你可能感兴趣的:(OpenSSL,openssl基础知识)