加密技术---openss 理论

OpenSSL算法

 

两台主机之间怎样进行安全的数据传输呢?安全

wKiom1cE_H_SF4j4AAYx0hLPSus236.bmp


ssl/TLS 是什么?为何能够实现数据的加密传输?bash

 ssl/TLS是安全的套接字层,在应用层和传输层又虚拟了一个层,当http封装完后传输给TCP层时候,调用SSL层来对数据进行加密服务器


什么是openssl?并发

openssl 是SSL的开源的实现。它有三部分构成。ide

libcrypto:加密库(不通讯时候能够单纯加密本地数据)工具

libssl (ssl/TLS的实现。基于会话的、实现身份认证、数据机密性和会话完整性的ssl/TLS库)openssl 多用途的命令行工具编码



***类型:
      威胁保密性的***:窃听、通讯量分析;
      威胁完整性的***:更改、假装、重放、否定
      威胁可用性的***:拒绝服务(DoS)
解决方案:
      技术(加密和解密)、
      服务(用于抵御***的服务,也便是为了上述安全目标而特意设计的安全服务)
      
      服务: 认证机制 、访问控制机制




密钥算法和协议加密

   对称加密spa

       特性:

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

           二、将原始数据分割成为固定大小的块,逐个进行加密; 注:能够保证数据的机密性

      缺陷:

           一、密钥过多;

           二、密钥分发困难;

      算法:3DES,AES,Blowfish



  公钥加密 密钥分为公钥与私钥

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

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

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

             数据加密

     算法:RSA(主要用于密钥交换,也可签名,也能够加密和解密数据), DSA(只能用于签名),           ELGamal


    单向加密

          特性:定长输出、雪崩效应;提出数据指纹;只能加密,不能解密;

       

          算法:md5: 128bits  sha1 160bits  sha224, sha256, sha384, sha512



你知道怎样保证密钥传输的安全性?密钥交换: IKE

   公钥加密RSA(使用对方的公钥加密)  缺点是:在网上传输了

   Diffie-Hellman(密码不在网上传输)




A和B传输数据如何保证数据机密性、完整性、身份验证的呢? 以下图

wKiom1cFDryx3RtdAAYwRgz0fFs086.bmp

一、同理B收到数据后,用本身的私钥解密,获得对称密钥。

二、而后用对称密码解密整个数据,保证了数据的机密性。B用A的公钥可以解密数据特征码,能够验证数据来自于A。

三、B再次用单向加密算法就算出数据特征码进行比对,若是同样表示数据没有改动,验证了数据的完整性。



为何要用到pki?

wKiom1cFG7yS8_aEAApn_nUQVB8887.bmp

PKI: 公钥基础设施:能够用来验证数据来源的合法性

 组成:   签证机构:CA

          注册机构:RA

         证书吊销列表:CRL

         证书存取库:





SSL会话主要三步:

     客户端向服务器端索要并验正证书;

     双方协商生成“会话密钥”;

     双方采用“会话密钥”进行加密通讯;




如图:

 client                         server

A-----------------------------------B

 ------->hello

                hello <---------------              

验证证书,公钥加密随机数--------->

                               B计算全部的随机密钥,生成一个对称密钥

             服务端握手结束通知




SSL Handshake Protocol:

第一阶段:ClientHello:

      支持的协议版本,好比tls 1.2;

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

      支持的加密算法,好比AES、3DES、RSA;

      支持的压缩算法;


第二阶段:ServerHello

        确认使用的加密通讯协议版本,好比tls 1.2;

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

        确认使用的加密方法;

        服务器证书;


第三阶段:

        验正服务器证书,在确认无误后取出其公钥;(发证机构、证书完整性、证书持有者、证书有效期、吊销列表)

        发送如下信息给服务器端:一个随机数;

        编码变动通知,表示随后的信息都将用双方商定的加密方法和密钥发送;

        客户端握手结束通知;


第四阶段:

        收到客户端发来的第三个随机数pre-master-key后,计算生成本次会话全部到的“会话密钥”;

        向客户端发送以下信息:

        编码变动通知,表示随后的信息都将用双方商定的加密方法和密钥发送;

        服务端握手结束通知;

相关文章
相关标签/搜索