1.加密解密

背景:在网络通信中为了达到安全需要,比如通信保密性,保证信息完整性和可用性,这就需要一些技术,下面就来介绍相关的技术

技术包括:加密和解密

       服务(用于抵御***的服务,也即是为了上述安全目标而特地设计的安全服务)


 加密和解密:

      传统加密方法:替代加密方法、置换加密方法

      现代加密方法:主要是现代块加密方法

注:真正的加密主要依赖密钥而不是加密算法

 服务:

    认证机制

    访问控制机制

 加密包括:

      对称加密

      公钥加密

      单向加密

      认证加密

2.对Linux系统:为了实现上述安全目标需要一些工具需要一些服务来实现上述功能,而linux的常用工具如下:

   linux常用于上述功能(就是的加密算法、协议或服务等)

   解决方案的工具主要有两个OpenSSL(ssl),GPG(pgp)

     OpenSSL(ssl):是ssl协议和加密解密的实现

     GPG(pgp):是gpg协议的实现


3. OpenSSL是什么?

   OpenSSL由三部分组成:

         libencrypt库(用于实现加密解密的库)

         libssl库(用于实现ssl安全通信机制的库)

         openssl多用途命令行工具(能实现加密解密等)

   

4.详解加密解密

加密算法和协议:(我们了解工作模式就行了)

  4.1对称加密:加密和解密使用同一个密钥

      常见的方式:

      DES:data encryption standard 使用16位加密

      3DES:Triple DES(即三倍的DES)

      AES:advanced encryption standart高级加密

          (128bits,192bits,256bits,384bits)

      blowfish

      twofish

      IDEA

      RC6

      CASTS

     加密算法特性: 

        1、加密解密使用同一个密钥 

        2、将原始数据分隔成为固定大小的块逐个进行加密

      缺陷:

        1、密钥过多()

        2、密钥发放困难

  4.2公钥加密:密钥分为公钥和私钥

    公钥:从私钥中提取产生;可公开给所有人;pubkey

    私钥:通过工具创建,使用者自己留存,必须保证其私密性:secret key

    特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然 

   

   公钥加密的算法:

     算法:RSA,DSA,ELGamal

         dsa不能用于加密解密,仅能用于签名

         rsa:既能加密解密又能用于签名

         DSS:Digital Signature Standard(数字签名标准)

         DSA:Digital Signature Algorthm

    公钥加密用途:

        数字签名:主要在于让接收方确认发送方的身份

        密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方

        数据加密

        主要是前两种

    双方通信的加密过程步骤:

      第一:发送方(A)先生成一份数据,为了保证数据安全无误保密的送达给接收方(B),A要先用单向加密的算法计算出这段数据的特征码

      第二:A会用自己的私钥加密这段特征码,并将结果附加在数据后面,

      第三:A生成一个临时的对称密钥,并使用这对称密钥加密整段数据

      第四:A会获取B的公钥,并使用B的公钥去再加密上一步已经加密的整段数据,并发送给B,实现秘密通信

    双方的解密过程:

       第一:B用自己的私钥去解密发送过来的对称密钥

       第二:用对称密钥解密整段加密的内容

       第三:用A的公钥去解密这段特征码,能解密则判断是A发送过来的,A的身份得到验证。

       第四:B再用同样的对称加密算法去计算这段数据的特征码,并与解密出来的进行比较,如果相同,数据完整性得到验证,同时保密性也得到验证。

    

    思考:这中间存在安全隐患就是,中途有个人在冒充,同时冒充AB,这时中间人就将AB的信息全部看了一遍。为了解决这个问题于是就有了第三方CA


   4.3 单向加密:即提取数据指纹(特征码),只能加密,不能解密

    

     特性:定长输出,雪崩效应(初始结果的微小改变将导致结果的巨大变化)

     功能:实现数据的完整性校验

     算法:md5:Message Digest5,128bits消息摘要算法

         sha1, sha256,sha224,  sha384,  sha512

         sha1:secure hash algorthm 1,安全的hash算法



5. PKI:public key infrastructure

     公钥基础设施

  它是以CA为核心生成的另一个安全机构

  其组成:

      签证机构:CA

      注册机构:RA

      证书吊销列表:CRL

      证书存取库

  证书包含的内容:

     X509v3(数字证书结构标准v3版):定义了证书的结构以及认证协议标准

         版本号: 

         序列号: serial

         签名算法ID(用什么算法算的)

         发行者名称

         有效期限

         主体名称(拥有者的信息)

         主体公钥

         发行者的唯一标识

         主体的唯一标识

         扩展

         发行者的签名

部分截图:如下

wKiom1cZiPbD5SqBAABJk420JP4356.png



6. CA:

  CA种类:公共信任的CA,私有CA;

    

  建立私有CA:(只在私有范围内使用时)

      工具:openssl:使用范围很小就可以用此来生成CA

          OpenCA

      

  6.1 构建私有CA:

      在确定配置为CA的服务上生成一个自签证书,并为CA提供所需要的目录及文件即可;    

    步骤:(要做到耳熟能详)

      (1) 生成私钥;

         ~]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

      (2) 生成自签证书;

         ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655

          以上命令内容说明:

            -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时,就是只有作为CA主机的时候才在/etc/pki/CA/目录下进行创建,即上面的例子。在用到证书目录下的服务器要在其对应目录下创建,比如下面的例子实现,以httpd服务器为例。其目录为/etc/httpd/ssl

      

  6.2 某服务器要用到证书进行安全通信的服务器,需要向CA请求签署证书:   

        步骤123在服务器172.18.26.22上执行

        步骤4在主机172.18.26.21上执行

    步骤:(以httpd为例)

       (1) 用到证书的主机A生成私钥;

          ~]# 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主机;

             比如远程复制:

               #scp httpd.csr root@172.18.26.21:/tmp/

       (4) 在CA主机上签署证书;

           先创建文件

           ~]# touch  /etc/pki/CA/{serial,index.txt}

           ~]# echo  01 > /etc/pki/CA/serial

           再签署

           ~]# openssl ca  -in  /tmp/httpd.csr  -out  /etc/pki/CA/certs/httpd.crt  -days  365

     注:在第二步的时候配置服务地址比如httpd注意是以www开头的。

    查看证书中的信息:

      ~]# openssl  x509  -in /etc/pki/CA/certs/httpd.crt  -noout  -serial  -subject

             -serial表示查看序列号

             -subject 查看

知识补充:1.scp 命令:把本机文件复制到远程主机上