加密技术---openss 理论

OpenSSL

 

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

wKiom1cE_H_SF4j4AAYx0hLPSus236.bmp


ssl/TLS 是什么?为什么可以实现数据的加密传输?

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


什么是openssl?

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

libcrypto:加密库(不通信时候可以单纯加密本地数据)

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



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




密钥算法和协议

   对称加密

       特性:

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

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

      缺陷:

           1、密钥过多;

           2、密钥分发困难;

      算法:3DES,AES,Blowfish



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

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

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

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

             数据加密

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


    单向加密

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

       

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



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

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

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




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

wKiom1cFDryx3RtdAAYwRgz0fFs086.bmp

1、同理B收到数据后,用自己的私钥解密,得到对称密钥。

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

3、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后,计算生成本次会话所有到的“会话密钥”;

        向客户端发送如下信息:

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

        服务端握手结束通知;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章