zoukankan      html  css  js  c++  java
  • 初识OpenSSL

    首先来认识一下SSL和TLS

      SSL:Secure Sockets Layer 安全套接层协议 由Netscape公司在1994年发布;

      TLS:Transport Layer Security 传输层安全协议 由IETF在1999年发布 与SSL基本上兼容;

    SSL会话三部曲:
      客户端向服务器端索要并验证证书;
      双方协商生成“会话密钥”;
      双方采用“会话密钥”进行加密通信;

        第一阶段:ClientHello
             客户端支持的协议版本、加密算法、压缩算法等
             并生成一个随机数,用于之后生成的“会话密钥”

        第二阶段:ServerHello
             确认使用的协议版本、加密算法等,也生成一个随机数,用于之后生成的“会话密钥”,
             并向客户端发送服务器证书;

        第三阶段:
             客户端验证服务器证书(发证机构,证书完整性,证书持有者,证书有效期,吊销列表等),在确认无误后取出其公钥;
             发送以下信息至服务器:
                一个随机数,
                编码变更通知,
                客户端握手结束通知;

        第四阶段:
             收到客户端发来的随机数,计算生成本次会话用到的“会话密钥”;
             发送以下信息至客户端:
                编码变更通知,
                服务器握手结束通知;

    如图阐述手动在用户A和用户B之间进行加密通信的简单原理。

      

          第一步:用户A,B都是CA的信任用户,他们事先需协商好进行加密通信所需要的加密算法等等,并相互认证各自的身份。

          第二步:用户B将需要发送的数据(元数据)进行单向加密,并用自己的私钥对数据特征码进行加密(也就是数字签名)。

          第三步:用户B将元数据和数字签名用一个一次性的密钥进行对称加密,并用A的公钥加密这段对称加密密钥,然后将其一起发送给用户A。

          第四步:用户A接收到数据后,先用自己的私钥解密对称加密,得到数字签名和元数据;再用B的公钥解密数字签名,如果能解开,说明数据是B发来的(验证B的身份);

              然后再用单向加密加密元数据,将特征码与解密后的数字签名对比,如果相同,则证明数据没有被篡改(保证了数据的完整性)。

      

  • 相关阅读:
    Btrace入门到熟练小工完全指南
    mysqldump常用于MySQL数据库逻辑备份
    thrift总结
    十大技巧优化Android App性能
    Google 发布 Android 性能优化典范
    Android性能优化之一:ViewStub
    Android实战技巧:ViewStub的应用
    安装andriod studio时出现Internal error. Please report to https://code.google.com/p/an
    Android Service的生命周期
    Android 70道面试题汇总不再愁面试
  • 原文地址:https://www.cnblogs.com/trymybesttoimp/p/5973162.html
Copyright © 2011-2022 走看看