方今社会,互联网的普及给我们的生活带来了极大的便利,但任何事物都有其两面性:窗户打开了,阳光和新鲜的空气进来了,苍蝇也进来了。如何在利用互联网带来便利的同时,又尽量规避其风险,保护自己网络通信中信息的安全及私密,成为了一个热门话题,下面本文将主要探讨两个方面的问题,不当之处还请各位前辈不吝斧正。


(一)加密解密基础


        首先要搞清楚的一个问题是,我们平时的网络通信存在哪些风险呢?目前互联网上常见的攻击方式有两种:主动攻击和被动攻击。主动攻击包括报文伪装、重复、消息篡改、拒绝服务等;被动攻击主要是监听等。

        基于对抗这种种攻击的目的,我们就需要对自己在网络通信中的数据进行加密,常见的加密方式有三种:对称加密、公钥加密和单向加密。       

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

            依赖于:算法和密钥

                因为算法可以公开,所以其安全性依赖于密钥,而非算法

             常见算法

                DES:(Data Encryption Standard),使用56bits密钥

                3DES

                AES:(Advanced Encryption Standard),可自定密钥长度,最长512bits

                Blowfish

                Twofish

                IDEA

                RC6

                CAST5

            特性

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

                2、将明文分隔成固定大小的块,逐个进行加密;

            缺陷

                1、密钥过多

                2、密钥分发难


    非对称加密(公钥加密):密钥成对儿出现,公钥从私钥中提取而来

            公钥:public key--公开给所有人获取

            私钥:secret key--仅允许个人使用

            常见算法

                RSA

                DSA:仅能做数字签名,用于身份认证

                ELGamal

       特性

         1、使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密;反之亦然;

                2、密钥长度较大,最短512bits,常见2048bits、4096bits;

                3、常用于数字签名和密钥交换;

            用处

                身份认证:私钥拥有者用自己的私钥加密的数据,只要能用其公钥解密,即可认证其身份

                密钥交换:与被通信方通信前,首先获取对方的公钥,自己生成一个加密密码,用对方的公钥加密,并发给对方--用于密钥交换

                数据加密:因加密速度太慢(比对称加密慢3个数量级0,所以很少用于数据加密


    单向加密:用于提取数据特征码

            依赖于算法

            特性

                1、定长输出:无论原来数据大小,加密结果的长度一样;

                2、雪崩效应:原始数据的微小变化,将会导致结果的巨大变化;

                3、不可逆;

            常见算法

                MD5:128bits定长输出

                SHA1:160bits定长输出

                SHA256

                SHA384

                SHA512


                CRC32:循环冗余校验码

            用处

                数据完整性校验


        由上述三种加密方式的特性我们可以知道,在网络通信中,我们主要借助于对称加密来加密我们的通信数据,借助于公钥加密来完成对称加密密钥的交换及身份认证,借助于单向加密来验证数据的完整性,那么一次完整的加密通信过程应该如下:

        发送者:

            1、使用单向加密算法提取生成数据的特征码;

            2、使用自己的私钥加密特征码附加在数据后面;

            3、生成用于对称加密的临时密钥;

            4、用此临时密钥加密数据和已经使用私钥加密后的特征码;

            5、使用接收方的公钥加密此临时密钥,附加在对称加密后的数据后方;


        接收方:

            1、使用自己的私钥解密加密的临时密钥;从而获得对称密钥;

            2、使用对称密钥解密对称加密的数据和私钥加密的特征码密文;获得数据和特征码密文;

            3、使用发送方的公钥解密特征码密文,从而获得从计算生成的特征码;

            4、使用与对方同样的单向加密算法计算数据的特征码,并与解密而来的进行比较;

   
    上述加密方式就基本保障了整个通信过程的安全性,但是不知各位有没有发现,其中有一个极大的漏洞:我们如何确保自己获得的对方的公钥是安全合法的呢?由此我们要引入PKI和CA的概念。

    1、PKI

    PKI是Public Key Infrastructure的首字母缩写,翻译过来就是公钥基础设施;PKI是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范;包含四个部分:签证机构(CA)、注册机构(RA)、证书吊销列表(CRL)和证书存取库。

   

    2、CA

    CA是PKI系统中通信双方都信任的实体,被称为可信第三方(Trusted Third Party,简称TTP),是整个PKI组成的基石和灵魂。目前其证书版本为x509的v3版,格式如下图所示:

    加密解密基础及openssl构建私有CA初步_CA


 (二)使用openssl命令构建私有CA


   openssl命令初解


   1、使用openssl命令生成密钥对儿

  加密解密基础及openssl构建私有CA初步_加密_02

  加密解密基础及openssl构建私有CA初步_ 解密_03


   2、openssl命令的配置文件及工作目录

   加密解密基础及openssl构建私有CA初步_opensll_04

 加密解密基础及openssl构建私有CA初步_opensll_05

   

   使用openssl构建私有CA及证书签发、吊销流程

    

   前期准备:构建私有CA

 加密解密基础及openssl构建私有CA初步_CA_06

加密解密基础及openssl构建私有CA初步_加密_07

加密解密基础及openssl构建私有CA初步_ 解密_08  

  

   证书签发及吊销流程

   加密解密基础及openssl构建私有CA初步_CA_09

   加密解密基础及openssl构建私有CA初步_CA_10

   加密解密基础及openssl构建私有CA初步_CA_11

   加密解密基础及openssl构建私有CA初步_加密_12

   加密解密基础及openssl构建私有CA初步_ 解密_13

   加密解密基础及openssl构建私有CA初步_opensll_14