zoukankan      html  css  js  c++  java
  • Https

    引:
    HTTP协议传输的数据都是未加密的,也就是明文的,容易受到篡改和窃听。于是后来提出了https

    Https

    网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定义在RFC 6101中,之后IETF对SSL 3.0进行了升级,于是出现了TLS(Transport Layer Security) 1.0,定义在RFC 2246。
    (SSL/TLS)

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

    服务器把数据加密后,客户端如何读懂这些数据呢?服务器如果将这个对称密钥以明文的方式给客户端,还是会被中间人截获,中间人也会知道对称密钥,依然无法保证通信的保密性。下面这样是不行的:

    因为:

    于是引入了数字证书的概念。

    服务器首先生成公私钥,将公钥提供给相关机构(CA),CA将公钥放入数字证书并将数字证书颁布给服务器,给客户端一个数字证书,数字证书中加入了一些数字签名的机制,中间人发送的伪造证书,不能够获得CA的认证,此时,客户端和服务器就知道通信被劫持了。

    综合以上三点:
    非对称加密算法(公钥和私钥)交换对称密钥+
    数字证书验证身份(验证公钥是否是伪造的)+
    利用对称密钥加解密后续传输的数据 =
    安全

    非对称加解密(极端消耗CPU资源)目前只能用来作对称密钥交换或者CA签名

    数字证书有三个作用:
    1、身份授权。确保浏览器访问的网站是经过CA验证的可信任的网站。
    2、分发公钥。每个数字证书都包含了注册者生成的公钥。
    3、验证证书合法性。客户端接收到数字证书后,会对证书合法性进行验证。只有验证通过后的证书,才能够进行后续通信过程。

    数字证书验证:

    数字签名是证书的防伪标签,目前使用最广泛的SHA-RSA(SHA用于哈希算法,RSA用于非对称加密算法)。数字签名的制作和验证过程如下:
    1、数字签名的签发。
    首先是使用哈希函数对待签名内容进行安全哈希,生成消息摘要,然后使用CA自己的私钥对消息摘要进行加密。
    2、数字签名的校验。使用CA的公钥解密签名,然后使用相同的签名函数对签名证书内容进行签名,并和服务端数字签名里的签名内容进行比较,如果相同就认为校验成功。
    ( 秘钥交换:公钥加密,私钥解密。数字签名:私钥加密,公钥解密)

  • 相关阅读:
    poj 2528 Mayor's posters (线段树+离散化)
    poj 1201 Intervals (差分约束)
    hdu 4109 Instrction Arrangement (差分约束)
    poj 1195 Mobile phones (二维 树状数组)
    poj 2983 Is the Information Reliable? (差分约束)
    树状数组 讲解
    poj 2828 Buy Tickets (线段树)
    hdu 1166 敌兵布阵 (树状数组)
    Ubuntu网络配置
    Button控制窗体变量(开关控制灯的状态)
  • 原文地址:https://www.cnblogs.com/xawei/p/6860479.html
Copyright © 2011-2022 走看看