密码系统的两个基本要素是加密算法密钥管理

加密算法是一些公式和法则,它规定了明文和密文之间的变换方法。由于密码系统的反复使用,仅靠加密算法已难以保证信息的安全了。事实上,加密信息的安全可靠依赖于密钥系统,密钥是控制加密算法和解密算法的关键信息,它的产生、传输、存储等工作是十分重要的。

数据经过加密工具 既是一种加密算法 变成密文(一堆乱码)
所有算法的安全性都基于密钥的安全性;而不是基于算法的细节的安全性,这也就意味着算法可以公开,也可以被分析,可以大量生产使用算法的产品,即使偷听着知道你的算法也没关系,如果不知道你是用的具体密钥,也就不能阅读数据 。
EK1(M)=C    DK2(C)=M 
K1是加密密钥  K2是解密密钥

 

密码学可以实现的目的 :
          保密性:防止用户的标示或数据被读取
          数据完整性:防止数据被更改。
           身份验证:确保数据发自特定的一方。

数据加密解密的实现 :
    对称加密
    公钥加密
    单向加密

对称加密:加密方和解密码使用同一个密钥:
   
     可以采用: 56bit 128bit 256bit  512bit 
算法:
 DES:Data enpcryption standard :数据加密标准,速度极快,适用于加密大量的数据场合
    3DES:是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
     AES:advanced data encryption standard:高级加密标准,是下一代的加密算法标准,
                                         速度快安全级别高
  可以使用128,192,256位密钥
     AES256
     AES192
     AES512

公钥加密:采用一对密钥加密 secret key public key 公钥和私钥。
         采用:          512bit 2048bit 
     功能:1、密钥交换 IKE(internet key exchange )
         2、数字签名 ,身份验证,防抵赖
   算法:  
 RSA 加密/签名      由RSA公司发明,是一个支持变长密钥的公共密钥算法,
                    需要加密的文件块的长度也是可变的
   DSA (Digital Signature Algorithm)签名
                    :数字签名算法,是一种标准的DSS(数字签名标准)
         ECC(Elliptic Curves Cryptography) :椭圆曲线密码编码学

单向加密:(散列算法)
   不是加密,而是提取数据特征码 且一定是不可逆的。
   雪崩效应:任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化
   定长输出 :散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度 。
  
   功能:验证数据的完整性
   常见算法:
       md5 :Message Digest Algorithm 5,128bit 是RSA 数据安全公司开发的一种单向散列 算法
       SHA (Secure Hash Algorithm ):可以对任意长度的数据运算生成一个160位的数值;   
   sha1:Secure Hash Algorithm 1 ,160bit
   SHA256: 256bit的定长输出
   SHA512:

三种方法,各有有缺, 所以,  在实际的操作中,我们通常采用的方法是:采用非对称的加密算法管理对称算法的密钥,然后用对称加密算法加密数据。
发送方:   
   1、发送发用单行加密算法计算数据的特征码
   2、发送方用自己的私钥加密这段特征码,并附加在数据的尾部
   3、发送方生成一个对称密钥
   4、用此对称码加密这段数据 和加密后特征码
   5、发送方用接收方的公钥加密这个对称密钥,附加在密文的尾部,并发送之
接收方:   
   1、用自己的私钥解密加密过的对称密码;
   2、用密码解密密文;
   3、对发送方的公钥解密发送方私钥加密的特征码;
   4、用同样的单向加密算法计算出原始数据的特征码;
   5、比较两段特征码;

CA认证:是Certificate Authority的简称,指电子商务认证授权机构。它是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。

CA是证书的签发机构,它是PKI(public key infrastructure 公钥基础设施)的核心。CA是负责签发证书、认证证书、管理已颁发证书的机关。它要制定政策和具体步骤来验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和公钥的拥有权。。
CA 也拥有一个证书(内含公钥)和私钥。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。
 

如果用户想得到一份属于自己的证书,他应先向 CA 提出申请。在 CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。
如果一个用户想鉴别另一个证书的真伪,他就用 CA 的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。

CA认证的主要作用就是:保证公钥的合法性。同时也提供 CRL (certificate revoke )证书吊销列表 (当客户端的私钥丢了,可申请调销证书)

  公共CA (收费 )      私有CA 

证书格式 :x509  通用的格式

    ,pkcs#l0  pkcs#12  pkcs#7  证书存储的格式, 证书信息的组织格式 即证书里面包含什么

 

SSL:(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

OpenSSL:是一个开放源代码的实现了SSL及相关加密技术的软件包,由加拿大的Eric Yang等发起编写的。

      组件:
         libcrpto: 库 通用的加密库 
         libssl :实现ssl  tls 协议的  
         openssl:  多用途的加密工具 命令行工具

openssl 可以实现多种加密算法:

      对称加密算法
      非对称加密算法
      单向加密算法
      CA (openCA) (可以实现证书格式转换 )

openssl提供的CA应用程序就是一个小型的证书管理中心,实现了证书签发的整个流程和证书管理的大部分机制 。
  配置文件:

           /etc/tls/pki/openssl.cnf 默认位置,我们也可以自己定义。

openssl 的一些简单命令的使用

  

 
  
  1. #openssl passwd -1 -salt 123456 -1采用MD5 -salt是接入的杂质 是123456   
  2. Password:   <<-- 输入密码   
  3. $1$123456$wWKtx7yY/RnLiPN.KaX.z.   加密后的 密码 $$$分成三段   
  4. 加密一个文件   
  5.     #openssl enc   -des3     -salt    -a   -in inittab -out inittab.des  
  6.             子命令 加密方法 自己加杂志  ASCLL码输出   
  7. 解密一个文件    
  8.       
  9.     #openssl enc -d -des3 -salt -a -in inittab.des3 -out inittab.plain     
  10.  
  11.  
  12. 测试加密速度  
  13.    #openssl speed MD5  
  14.  
  15. base64 编码 格式   
  16.    #echo -n "redhat" | openssl base64      
  17.  
  18. 生成密钥对    
  19.    #openssl genrsa -out key.pem(密钥保存位置) 1024(长度)
  20. 生成的是私钥 公钥可以从私钥提取  
  21.  
  22.    #openssl rsa -in key.pem -pubout -out key.pem.pub  提取公钥   
  23.  
  24.    #openssl genrsa 1024 >key.pem  也可以生成密钥。权限是 644  
  25.    #(umask 077;openssl genrsa 1024 -out key.test ) 权限是600 
  26. 计算特征码  
  27.      #openssl md5 ininttab  计算inittab 的MD5格式 的特征码   
  28.  
  29.     #echo -n "redhat" |openssl md5 计算一段数据的md5格式的特征码  

 

创建一个简易的CA :

过程:

        1、先给自己发一证书 :
        2、某主机或用户 自己生成证书颁发请求
        3、递交请求
        4、服务验证信息,并签署

        /etc/pki/tls/openssl.conf  配置文件
      /etc/pki/CA/  自己给自己发的证书

具体步骤:

一、CA 服务器配置文件的修改

     

 
  
  1. 1.vim /etc/pki/tls/openssl.cnf   
  2.        dir   =/etc/pki/CA明确说明目录   
  3. 2.cd /etc/pki/CA  
  4.  #mkdir cents(证书存放) newcerts(新证书) crl (调销证书 )#touch  index.txt  (证书索引表 )serial (序列号)     
  5.   #echo 01 >serial 证书序列号 第几个证书了   
  6. 3、自签证书 (先生成一个密钥对 放在 private )  
  7.   #(umask 077;openssl genrsa -out private/cakey.pem 2048)生成密钥对  
  8.                                             在配置文件里固定位置和名称   
  9.  # openssl req -x509 -new -key private/cakey.pem -out cacert.pem -days 365  
  10.                    申请 自签 新证书   密钥位置             证书保存位置    证书有效期  

  证书申请方 :

 
  
  1. 1.为某服务生成密钥   
  2. #cd /etc/vsftpd/  
  3. #mkdir ssl  
  4. #cd ssl  
  5. #(umask 077;openssl genrsa 1024 > vsftpd.key) 生成密钥    
  6. #openssl req -new -key vsftpd.key -out vsftpd.csr  申请证书   
  7.  
  8.  
  9. 2.将此证书 通过某方式传递给CA服务器   
  10.      #scp vsftpd.csr root@172.16.100.1:/tmp  
  11.        
  12. 3、CA 签署证书 (在CA 服务器上 )  
  13. #openssl ca -in vsftpd.csr -out vsftpd.crt -days N
  14. #scp vsftpd.crt root@客户端IP:/etc/vsftpd/ssl/  直接复制到申请方的对应目录下  

  加密解密就先总结到此,每个知识点扩展开来都可以出一本书,我这里只是抛砖引玉而以,望大家共同学习进步~·