网络系列3 HTTPS

参考:
关于HTTPS的详解 https://www.jianshu.com/p/ca7df01a9041
关于公钥、私钥和数字签名 https://blog.csdn.net/forever_2015/article/details/76040311

一.HTTPS背景

1.HTTP的缺点
  • 通信使用明文,通讯内容可能被窃听
  • 无法证明报文完整性,通讯内容可能被篡改
  • 不验证通信方身份,通讯可能遭遇伪装
2.加密协议SSL/TLS
  • 为保障互联网通信安全,NetScape公司于1994年和1995年设计了SSL1.0和SSL2.0
  • 1995年,NetScape发布SSL3.0,得到大规模应用
  • 1999年,互联网标准化组织ISOC接替NetScape发布SSL的升级版TLS1.0
  • 截止2011年,ISOC最新发布TSL1.2的修订版
  • TSL1.0通常被标示为SSL3.1,TLS1.1为SSL3.2,TLS1.2为SSL3.3

二.HTTPS = HTTP + SSL/TLS

1.相关概念
  • 对称加密
    加密和解密都使用同一个密钥。如DES、AES-GCM等
    传输效率高
  • 非对称加密
    使用公开的公钥和保密的私钥。如RSA、DSA、ECDSA、DH、ECDHE等
    性能较低,安全性超强,但待加密数据不能太长
  • 公钥和私钥
    公钥和私钥成对出现,互相解密
    使用公钥加密数据,可以保证只有私钥持有者能够解密读取
    使用私钥数字签名,接收者用公钥解密后,通过验证解密信息的一致性,可以确保数据来源
  • 哈希算法
    将任意长度的信息转换为较短的固定长度的值,通常其长度比信息小得多,且算法不可逆。如MD5、SHA-1、SHA-2、SHA-256等
  • 数字签名
    在信息后面加上信息经哈希算法计算后的Hash值,以证明信息没有被修改过
    签名一般会加密后再和信息一起发送,以保证签名不被修改
2.安全通信的困难
  • 安全传输数据
    1)存在问题:使用何种加密方式和如何告知密钥?
    2)非对称加密效率低且对加密数据的长度有限制,无法满足加密要求
    3)故选择对称加密。该算法效率高,但要求每个客户端密钥唯一,且在通信前确认
  • 安全传输对称加密使用的密钥K
    1)使用非对称加密传输密钥K,需要把客户端生成的密钥A发送给服务器
    2)客户端使用服务器的A公钥加密生成的密钥L,服务器再用自己的A私钥解密
    2)存在服务器A公钥被掉包为A公钥的“中间人攻击”问题
网络系列3 HTTPS_第1张图片
中间人攻击

注:上图第7步是”坏人用B私钥解密得到K,然后用A公钥加密发给服务器“

  • 安全传输服务器下发的公钥A
    1)服务器通过发送权威机构发布的数字证书CA(包含公钥和权威机构信息)证明身份
    2)权威机构事先将身份证明所需的数字证书A公钥内置在浏览器或操作系统环境中
  • 安全传输证书:保证客户端收到的是服务器下发的证书,解决“中间人攻击”隐患
    1)客户端收到证书CA后使用本机的A公钥解密,获取证书内容和证书上的数字签名D,再通过证书上描述的算法重新计算其数字签名E,如E=D,则证书为服务器下发
    2)如果中间人拦截并试图篡改证书,由于仅有解密的A公钥而没有加密的A私钥,篡改后的证书使用其他公钥加密后,被客户端接收但无法通过A公钥解密,证明该证书已被篡改
3.HTTPS通信过程
网络系列3 HTTPS_第2张图片
Https通信

战气今如此,从军复几年

你可能感兴趣的:(网络系列3 HTTPS)