加密是以某种特殊的算法改变原有的信息数据使得未授权的用户即使获得了已加密的信息但因不知解密的方法仍然无法了解信息的内容。在互联网上对数据的加密主要是保证三个方面内容数据的保密性、完整性以及对方的身份验证。

wKiom1kasb3S3wlWAAj3u8ZJX-g010.png-wh_50

安全实现的目标:

  机密性:confidentiality,保证信息不泄露

  完整性:integrity,保证信息不被篡改

  可用性:availability,保证信息内在价值


 威胁机密性的***行为:

  窃听

  嗅探

  扫描

  通信量分析


 威胁完整性的***行为

  更改

  伪装

  重放

  否认


 威胁可用性的***行为:

   拒绝服务(DOS)


 安全解决方案:

   技术:加密和解密;

     传统的加密方法:

         替代加密算法

         置换加密算法

      现代加密算法

         块加密算法

   服务:安全服务;

      身份认证

      访问控制机制,


  加密方案:

    加密算法和密钥


    加密算法:

       对称加密算法:

         加密和解密使用同一密钥;

         特性:

           1.每队通信主机都需要保有一个相同的密钥。用于加密和解密

           2.将原始的数据分割成固定大小的块,逐个加密

           3.加密解密的速度较快


         缺陷:

           1.加密解密所需要保有的密钥过多

           2.密钥分发过于困难


         主流加密算法:

           DES: Data Encryption Standard,数据加密标准

              56bit密钥,664bit块

             3DES:

           AES: Advanced Encryption Standard,嘎吉加密标准

               AES126bit         AES192bit      AES256bit

           Blowfish

           Twofish

           IDEA

           RC4,  RC6


       公钥加密算法:

         密钥分为私钥和由私钥抽取生成的公钥组成;

         私钥:512bit, 1024bit, 2048bit, 4096bit,8192bit,16384bit

         用途:

           数字签名:数字指纹,主要用于让接收方确认发送方的身份;使用发送方的私钥加密数据,到了接收方后,使用发送方的公钥解密数据


           密钥交换:发送数据的一方使用接受方的公钥加密对称密匙,将加密后的密钥发送给对方


           数据加密:通常用于加密小数据c


          特点:

            1.使用密钥对进行加密和解密,使用私钥加密的数据,必须用从中抽取出的公钥解密;使用公钥加密的数据,必须用与之对应的私钥解密

              私钥:通过特定的***创建生成,由使用者自己保留,务必保证其私密性;secret key或private key

              公钥:从私钥中提取生成,公钥可以公开给所有人使用;public key

            2.密钥长度比较长,加密后数据安全等级高


          缺陷:

            加密数据时消耗的系统资源和时间比较多,很少用来加密大批量数据


          常用的公钥加密算法:

            RSA: 加密,数字签名

            DSA: digital signature algorithm,只能实现数字签名的功能,有时候也被称为DSS,Digital signature standard

            ELgamal:


       单向加密算法:

         只能进行加密,不能解密;从已知数据中提取密码指纹;

         特性:

           1.定长输出

           2.雪崩效应


         功能:

            保证数据的完整性

         常用算法:

           md5:message digest version 5,信息摘要算法第5版

             128bit定长输出

           sha系列:

             sha-1: secure hash algorithm,安全哈希算法;169bit定长输出

             sha224

             sha256

             sha384

             sha512


       密钥交换加密算法:IKE(Internet key exchange)

         公钥加密;

         DH算法:deffie-hellan



  加密算法的联合应用:

    1.通信双方互相交换证书,并到信任的CA进行证书验证;

    2.发送方使用某种对称加密算法对数据进行加密,对加密后的数据使用单项加密,计算其特征值;发送方再用自己的私钥加密此特征值,以证明数据来源的可靠;发送方使用接收方的整数加密对称密钥

    3.接收方在收到数据后,先是用自己的私钥解秘对称密钥,然后使用发送方的公钥揭秘特征值,再利用相同的单项加密算法,诚信结算加密数据的特征值;比较两个特征值;如果特征值一致,则表明数据完整;再用解密出来的对称密钥解密出原始数据


  国际标准化组织(ISO)定义了证书的结构和标准:x.509协议标准

  证书包括的主要内容:

    拥有者名称

    拥有者所提交的公钥

    有效期

    证书的版本号

    证书的序列号

    签发算法ID

    签发CA的名称

    主体名称

    发证者的唯一标识

    发证者的数字签名

    扩展信息


 PKI: public key infrastructure,公钥基础设施

      证书签证机构:CA

      注册机构:RA

      证书吊销列表:CRL,certificatiion revoke list

      证书存取库:CAB, certification access base


 CA如何发挥其作用的:

   1.通信双方互相交换证书

   2.双方协商加密算法

   3.双方验证证书的真伪

   4.用证书的公钥去解密证书中CA 的签名,能解密说明证书来源可靠

   5.用同样的加密算法加密证书,取得特征值,与解密出来的特征值比较,如果相同,说明证书完整性可靠

   6.检查证书的有效期是否在合法时间内,如果过期则不被认可

   7.检查证书的主体名称和此次通信的目标是否能够对应



二、SSL: secure socket layer,安全的套接字层


  TLS:transport layer security,传输层安全

    分层设计:

      1.最底层:基础算法原语的实现;AES.MD5,SHA

      2.向上一层:各种算法的基本实现;

      3.在向上一层:各种算法组合实现的半成品

      4.最高层:各种组件拼装成的各种成品密码学协议软件


  SSL/TLS的handshake(握手)的四个阶段:

    1.客户端向服务器索要证书并验证

        client hello发送的信息内容

           支持的协议版本

           客户端生成一个随机数,稍后用户生成会话密钥

           支持的加密算法

           支持的压缩算法


    2.双发协商生成会话密钥

        server hello发送的信息内容

           确认使用的加密协议的版本号

           服务器生成一个随机数,稍后用于生成会话密钥

           确认加密算法及压缩算法


    3.双方采用已经生成的会话密钥进行安全加密的通信

       客户端验证服务器证书,在验证无误后,去除其公钥


       验证服务器证书需要验证下述内容:

         验证发证机构(CA)

         验证证书的完整性

         验证证书的持有者信息

         验证证书的有效期

         验证证书的吊销列表


       客户端发送信息给服务器端:

         一个随机数,用于服务器上的公钥加密

         编码格式变更通知,表示随后的信息都将用双方已经协商好的加密算法和密钥进行加密发送


       客户端握手结束;


    4.双方互相通告握手结束的信息

        服务器收到客户端发送来的此次握手阶段的第三个随机数;计算生成本次会话所用到的会话密钥,向客户端发送相关信息

          编码变更通知,表示随后的信息都将用双方已经协商好的加密算法和密钥进行加密发送


        服务器端握手结束