• 简单了解HTTPS


    HTTPS

    HTTPS并非是应用层一个新的协议,通常HTTP直接和TCP通信,HTTPS则先和安全层(SSL、TLS)通信,然后安全层再和TCP层通信。

    可以看出HTTPS就是在HTTP的基础上增加了一层SSL/TLS那么SSL都起了什么作用呢?

    1. 所有信息是加密传输的
    2. 配备身份验证(服务端),防止身份被冒充
    3. 具有校验机制,一旦被篡改,通信双方会立刻发现

    TLS全称传输层安全协议Transport Layer Security Protocol,TLS/SSL是一种加密通道的规范。

    TLS协议是SSL协议发展来的,目前大都用的是TLS协议了

    理解HTTPS前需要理解这些概念:对称加密、非对称加密、摘要算法、数字签名、证书、认证中心(CA - Certificate Authority)

    1. 对称加密算法

    定义:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密。

    特点:

    • 优点:算法公开、计算量小,加密速度快
    • 缺点:相对来说不算特别安全,如果密钥被劫持,信息容易被破译

    常用算法:

    • DES:现在用的比较少,因为加密强度不够,能够暴力破解
    • 3DES:原理和DES几乎一样,只是使用3个密钥,对相同的数据三次加密,增加了加密强度,但是需要维护3个密钥
    • AES:用于替代原先的DES,是现在公认最安全的加密方式,对称加密中最流行的算法。AES128和AES256主要区别是密钥长度不同,加密处理轮数不同(10轮、14轮),后者强度更高

    2. 非对称加密算法

    定义:非对称加密算法需要两个密钥:公钥和私钥,公钥和私钥是一对。

    特点:

    如果用公钥加密,只有用对应的私钥能解密;

    如果用私钥加密,只有用对应的公钥能解密

    由于算法复杂,使得加解密速度没用对称加密那么快。有两种密钥,其中一个是公开的,就不需要传输对方的密钥了,安全性提高了很多。

    常用算法:

    RSA、DSA、ECDSA

    3. 数字签名

    数字签名有两种功能:

    1. 能确认消息是由发送方签名并发出来的,因为别人假冒不了发送方的签名
    2. 能确认消息的完整性,校验数据是否被篡改。

    数字签名的过程:

    将要发送的原文数据用Hash算法(摘要算法,散列算法)生成消息摘要,然后用发送者的私钥加密生成数字签名。

    签名校验过程:

    接收者用对应的公钥解密开签名,然后也用HASH算法对收到的原文数据生成一个消息摘要。两相对比,如果一致说明信息完整有效。

    消息摘要算法分为三类:

    • MD(Message Digest):消息摘要算法
    • SHA(Secure Hash Algorithm):安全散列算法
    • MAC (Message Authentication Code):消息认证码

    4. 证书

    数字证书:是一种经证书认证构数字签名的,包含公钥,拥有者信息的文件。

    SSL证书文件中包含:组织信息、域名信息、公钥、证书有效期等等。

    5. 认证中心(CA)

    CA是证书的签发机构,它是公钥基础设施的核心。CA是负责签发证书、认证证书、管理已颁发证书的机关。

    CA把自己的CA证书集成在了浏览器和操作系统里面。客户端浏览器通过这个CA证书能够识别服务器返给他的证书的真伪。

    介绍完上述知识后,接着了解下HTTPS的请求流程:

    1. 浏览器给出TLS协议版本号、一个客户端生成的随机数1,以及客户端支持的加密方法去服务端请求证书。
    2. 服务器确认双方使用的加密方法,并给出数字证书,以及一个服务器生成的随机数2。
    3. 浏览器确认数字证书有效,然后生成一个新的随机数3,并使用数字证书中的公钥加密这个随机数,发给服务器。
    4. 服务器使用自己的私钥,解密获取客户端发来的随机数。这时双方交换过3个随机数了。
    5. 客户端和服务器根据约定的加密方法,使用前面的三个随机数经过特定的算法,生成“对话密钥”,用来加密整个对话过程。

    客户端怎么校验服务器发来的数字证书的合法性?

    • 证书路径信任链逐级校验通过(证书确有可信任的CA认证签发)
    • 签名解密成功(确系证书持有者亲笔)
    • 签名解析出来的摘要和客户端算出的摘要一致(证书内容完整,未被篡改)
    • 主题子域与URL中的HOST一致,综上确保访问的网站是来自预期目标服务器,没有被劫持。
  • 相关阅读:
    如何勾选 servlet如何获取?
    过滤器 如何实现获取不到用户名跳转回登录界面
    验证码
    cookie保存用户名及密码
    游标
    存储过程和自定义函数的区别
    瞎搞
    sql 试图索引
    sql 常用函数
    sql 简单的定义变量 声明 输出
  • 原文地址:https://www.cnblogs.com/javammc/p/15799886.html
Copyright © 2020-2023  润新知