linux加密和解密技术基础、KPI及创建私有CA

一、加密方式分为:
1.对称加密:加密和解密使用同一个密钥;
      对称加密:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,在对称加密算法中常用的算法有:DES、 3DES、TDEA、AES、    Blowfish、Twofish
          IDE、ARC6、CAST5等。
    特性:
      1、加密、解密使用同一个密钥;
      2、强原始数据分割成固定大小的块,逐个进行加密;
    缺陷:
      1、密钥过多;
      2、密钥分发困难;
2.公钥加密:密钥分为公钥与私钥
      公钥加密:也叫非对称加密,属于通信科技下的网络安全二级科学,指的是由对应唯一性密钥组成的加密方法。它解决了密钥的发布和管理问题,是目前商业密码的核心,在公钥加密体制中,没有公开的是明文,公开的是密文,公钥,算法。
      公钥:从私钥中提取产生;可公开给所有人;pubkey
      私钥:通过工具创建,使用者自己留存,必须保证其私密性;secret key;
        
        特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然;
                
        用途:
            数字签名:主要在于让接收方确认发送方的身份;
            密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方;
            数据加密
                
        算法:RSA, DSA, ELGamal
                    DSS: Digital Signature Standard
                    DSA:Digital Signature Algorithm
3.单向加密:即提出数据指纹;只能加密,不能解密;
      单向加密:是非可逆加密,就是不可解密的加密方法,提取数据的指纹。常见的加密算法有MD5、SHA、HMAC这三种加密算法。
      特性:定长输出、雪崩效应;
        功能:完整性;
        算法:
            md5:Message Digest 5, 128bits
            sha1:Secure Hash Algorithm 1, 160bits
                  sha224, sha256, sha384, sha512

        密钥交换: IKE(Internet Key Exchange)
                公钥加密
                DH(Deffie-Hellman)
                    A:p, g
                    B:p, g
                    
                    A: x
                        --> p^x%g ==> B
                        
                        A: (p^y%g)^x=p^yx%g
                        
                    B: y
                        --> p^y%g ==> A
                        
                        B: (p^x%g)^y=p^xy%g    
二、PKI
       PKI是public key infrastructure的首字母缩写,翻译过来就是公钥基础设施;PKI是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。
    公钥基础设施:
        签证机构:CA是PKI的核心,CA负责管理PKI结构下的所有用户的证书,把用户的公钥和用户的其他信息捆绑在一起,在网上验证用户的身份,CA还要负责用户证书的黑名单等级和黑名单发布。
        注册机构:RA
        证书吊销列表:CRL
        证书存取库:
    X.509v3:定义了证书的结构以及认证协议标准
        版本号
        序列号
        签名算法ID
        发行者名称
        有效期限
        主体名称
        主体公钥
        发行者的惟一标识
        主体的惟一标识
        扩展
        发行者的签名
                
        SSL:Secure sockets Layer
            Netscape: 1994
            V1.0, V2.0, V3.0
        TLS: Transport Layer Security
            IETF: 1999            
            V1.0, V1.1, V1.2, V1.3
            
            分层设计:
                1、最底层:基础算法原语的实现,aes, rsa, md5
                2、向上一层:各种算法的实现;
                3、再向上一层:组合算法实现的半成品;
                4、用各种组件拼装而成的各种成品密码学协议软件;
                
三、CA:
        公共信任的CA,私有CA;
        
        建立私有CA:
            openssl
            OpenCA
            
        openssl命令:
            配置文件:/etc/pki/tls/openssl.cnf
            
            构建私有CA:
                在确定配置为CA的服务上生成一个自签证书,并为CA提供所需要的目录及文件即可;
                
                步骤:
                    (1) 生成私钥;
                        ~]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

                  wKiom1aOXPiyoqTmAAAouuSkMUc013.png

  (2) 生成自签证书;
                        ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655

wKioL1aOXkDi42DnAABLwvkbedE867.png

                           

                            -new:生成新证书签署请求;
                            -x509:生成自签格式证书,专用于创建私有CA时;
                            -key:生成请求时用到的私有文件路径;
                            -out:生成的请求文件路径;如果自签操作将直接生成签署过的证书;
                            -days:证书的有效时长,单位是day;
                    (3) 为CA提供所需的目录及文件;
                        ~]# mkdir  -pv  /etc/pki/CA/{certs,crl,newcerts}

                        ~]# touch  /etc/pki/CA/{serial,index.txt}
                        ~]# echo  01 > /etc/pki/CA/serial
                        
            要用到证书进行安全通信的服务器,需要向CA请求签署证书:
                
                步骤:(以httpd为例)
                    (1) 用到证书的主机生成私钥;
                        ~]# mkdir  /etc/httpd/ssl
                        ~]# cd  /etc/httpd/ssl
                        ~]# (umask  077; openssl  genrsa -out  /etc/httpd/ssl/httpd.key  2048)
                    (2) 生成证书签署请求
                        ~]# openssl  req  -new  -key  /etc/httpd/ssl/httpd.key  -out /etc/httpd/ssl/httpd.csr  -days  365
                    (3) 将请求通过可靠方式发送给CA主机;
                    
                    (4) 在CA主机上签署证书;
                        ~]# openssl ca  -in  /tmp/httpd.csr  -out  /etc/pki/CA/certs/httpd.crt  -days  365
                      

                        查看证书中的信息:
                            ~]# openssl  x509  -in /etc/pki/CA/certs/httpd.crt  -noout  -serial  -subject
                            
            吊销证书:
                步骤:
                    (1) 客户端获取要吊销的证书的serial(在使用证书的主机执行):
                        ~]# openssl  x509  -in /etc/pki/CA/certs/httpd.crt  -noout  -serial  -subject
                    (2) CA主机吊销证书
                        先根据客户提交的serial和subject信息,对比其与本机数据库index.txt中存储的是否一致;
                        
                        吊销:
                            # openssl  ca  -revoke  /etc/pki/CA/newcerts/SERIAL.pem
                            
                                其中的SERIAL要换成证书真正的序列号;
                                
                    (3) 生成吊销证书的吊销编号(第一次吊销证书时执行)
                        # echo  01  > /etc/pki/CA/crlnumber
                    
                    (4) 更新证书吊销列表
                        # openssl  ca  -gencrl  -out  thisca.crl
                        
                        查看crl文件:
                            # openssl  crl  -in  /PATH/FROM/CRL_FILE.crl  -noout  -text            
                           
四、加密解密技术常用的功能及算法;

       (1)对称加密

        工具:openssl enc、gpg

         使用openssl enc 加密/etc/fstab文件:

         wKioL1aOUuLBKZbgAAAmSJmlF4k182.png

         wKioL1aOVI-AAlr9AADXKcRRfCA117.png

          解密/tmp/fstab文件:

          wKiom1aOVLLhileJAABreGNkQ7s345.png

  (2)单向加密:

    工具: sha1sum,md5sum,openssl dgst

     wKiom1aOWbfiv9W3AAARVYFr1oA518.png