• java-信息安全(七)-https001-基于非对称加密,对称加密等理解


    概述

    java-信息安全(一)-BASE64,MD5,SHA,HMAC

    java-信息安全(二)-对称加密算法DES,3DES,AES,Blowfish,RC2,RC4

    java-信息安全(四)-数据签名、数字证书

    java-信息安全(五)-非对称加密算法RSA

    如果想要理解好https,请尽量了解好以上信息等。

    基本概念

      HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。

      Https是一种基于SSL/TLS的Http协议,所有的http数据都是在SSL/TLS协议封装之上传输的。

      Https协议在Http协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议。

      ——>HTTP协议运行在TCP之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。

      ——>HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。

      TLS/SSL中使用了非对称加密,对称加密以及HASH算法

    图例【基于RSA模型】

    第一步

      浏览器给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的一套加密规则发送给网站服务器。

    第二步

      服务器从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器、以及一个服务器生成的随机数(Server random)。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。

    第三步

      浏览器确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给服务器。

      获得网站证书之后浏览器要做以下工作:

        a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。

        b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。

        c) 使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。

    第四步

      服务器使用自己的私钥,获取浏览器发来的随机数(即Premaster secret)。

      网站接收浏览器发来的数据之后要做以下的操作:

        a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。

        b) 使用密码加密一段握手消息,发送给浏览器。

    第五步

      浏览器和服务器根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。

    HTTPS一般使用的加密与HASH算法

      非对称加密算法:RSA,DSA/DSS

      对称加密算法:AES,RC4,3DES

      HASH算法:MD5,SHA1,SHA256

    参看文章:

    http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html

    https://cattail.me/tech/2015/11/30/how-https-works.html

    http://www.cnblogs.com/binyue/p/4500578.html

  • 相关阅读:
    【java规则引擎】drools6.5.0版本中kmodule.xml解析
    【java规则引擎】drools6.5.0版本api简介
    git撤销各种状态下的操作
    【策略】一致性Hash算法
    【策略】一致性Hash算法(Hash环)的java代码实现
    【转载】对一致性Hash算法,Java代码实现的深入研究
    Zookeeper之Curator(1)客户端对节点的一些监控事件的api使用
    【2】基于zookeeper,quartz,rocketMQ实现集群化定时系统
    NIO之直接缓冲区与非直接缓冲区
    NIO之缓冲区(Buffer)的数据存取
  • 原文地址:https://www.cnblogs.com/bjlhx/p/6560870.html
Copyright © 2020-2023  润新知