HTTPS的加密原理你知道吗?什么是中间人攻击?什么是对称加密什么是非对称加密?

原文来自于公众号:三不猴子

1、什么是HTTPS?

是一种通过计算机网络进行安全通信的传输协议。HTTPS是在HTTP上建立SSL/TLS加密层,并对传输数据进行加密,简单来说就是安全版的HTTP协议。

2、TLS/SSL 协议介绍

TLS/SSL 的功能实现主要依赖于三类基本算法:散列算法 、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性。

SSL 协议介绍

3、加解密相关知识介绍

3.1、对称加密

  加密和解密同用一个密钥的方式称为对称加密,也被叫做共享密钥加密(Common key crypto system)。
  常见的对称加密有:DES(Data Encryption Standard)、AES(Advanced Encryption Standard)、RC4、IDEA

3.2、非对称加密

  非对称加密加密使用一对非对称的密钥。一把叫做私有密钥
(private key),另一把叫做公开密钥(public key)。顾名思
义,私有密钥不能让其他任何人知道,而公开密钥则可以随意发
布,任何人都可以获得。也被称为公开密钥加密

(1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
(2)甲方获取乙方的公钥,然后用它对信息加密。
(3)乙方得到加密后的信息,用私钥解密。

常见的非对称加密有:RSA算法、ECC算法

3.2、数字签名

  数字签名,简单来说就是通过提供可鉴别的数字信息验自身身份的一种方式。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。分别由 发送者持有能够 代表自己身份 的 私钥 (私钥不可泄露),由接受者持有与私钥对应的公钥,能够在接受到来自发送者信息时用于验证其身份。数字签名具有验证身份和确保信息完整新的作用。

3.2.1、数字签名生成
image.png

  将一段文本通过哈希(hash)生成消息摘要,再通过私钥加密处理后生成数字签名。

3.2.2、数字签名校验
image.png

  假设A和B通信,A将消息和签名一起发送给B,B收到后就可以校验信息是不是A发送的,以及是不是被篡改了。
  假设B知道A的公钥,通过公钥就可以解密被加密的消息摘要,然后利用哈希(hash)对收到的原文产生一个消息摘要,与上一步得到的消息摘要进行对比,如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。

3.2.3、证书颁发机构

  在前文中,校验数字签名的时候,是假设知道公钥的,问题的关键是和消息一样,公钥本身不在不安全的网络中直接发送。此时,就引入了证书颁发机构(Certificate Authority,简称CA)。CA数量并不多,B客户端内置了所有受信任CA的证书。CA对A的公钥(和其他信息)数字签名后生成证书。

  A将证书发送给B后,B通过CA证书的公钥验证证书签名。
B信任CA,CA信任A 使得 Bob信任A,信任链(Chain Of Trust)就是这样形成的。
事实上,B客户端内置的是CA的根证书(Root Certificate),HTTPS协议中服务器会发送证书链(Certificate Chain)给客户端。

3.2.4、证书

证书包含:

  • 证书颁发机构的名称
  • 证书本身的数字签名
  • 证书持有者公钥
  • 证书签名用到的Hash算法
image.png

数字证书认证机构的业务流程:

  • 服务器的运营人员向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证;
  • CA通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等;
  • 如信息审核通过,CA会向申请者签发认证文件-证书。证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA的信息、有效时间、证书序列号等信息的明文,同时包含一个签名。 其中签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用 CA的私钥对信息摘要进行加密,密文即签名;
  • 客户端 Client 向服务器 Server 发出请求时,Server 返回证书文件;
  • 客户端 Client 读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应 CA的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即服务器的公开密钥是值得信赖的。
  • 客户端还会验证证书相关的域名信息、有效时间等信息; 客户端会内置信任CA的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA的证书,证书也会被判定非法。
    四、 HTTPS工作流程

二、HTTPS与HTTP区别

1、http信息是明文传输;https 则是具有安全性的SSL/TLS加密传输协议。
2、http使用的默认端口是80;https的默认端口是443
3、https对搜索引擎更友好,利于SEO,谷歌、百度优先索引HTTPS网页;

三、HTTPS对比HTTP

HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用
SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代
替而已。

HTTPS和HTTP
  1. 内容加密:内容经过对称加密,每个连接生成一个唯一的加密密钥,来保证传输过程中的数据安全;
  2. 身份认证: 确认网站的真实性,第三方无法伪造服务端(客户端)身份
  3. 数据完整性: 内容传输经过完整性校验,防止内容被第三方冒充或者篡改

四、HTTPS工作流程

image.png
  1. Client发起一个HTTPS(https://yanyuzhe.com/)的请求,根据RFC2818的规定,Client知道需要连接Server的443(默认)端口。
  2. Server把事先配置好的公钥证书(public key certificate)返回给客户端。
  3. Client验证公钥证书:比如是否在有效期内,证书的用途是不是匹配Client请求的站点,是不是在CRL吊销列表里面,它的上一级证书是否有效,这是一个递归的过程,直到验证到根证书(操作系统内置的Root证书或者Client内置的Root证书)。如果验证通过则继续,不通过则显示警告信息。
  4. Client使用伪随机数生成器生成加密所使用的会话密钥,然后用证书的公钥加密这个会话密钥,发给Server。
  5. Server使用自己的私钥(private key)解密这个消息,得到会话密钥。至此,Client和Server双方都持有了相同的会话密钥。
  6. Server使用会话密钥加密“明文内容A”,发送给Client。
  7. Client使用会话密钥解密响应的密文,得到“明文内容A”。
  8. Client再次发起HTTPS的请求,使用会话密钥加密请求的“明文内容B”,然后Server使用会话密钥解密密文,得到“明文内容B”。

参考文章

  • 详解https是如何确保安全的?
  • 深入理解HTTPS工作原理
  • HTTPS工作原理
  • HTTPS工作流程
  • 图解HTTP

你可能感兴趣的:(HTTPS的加密原理你知道吗?什么是中间人攻击?什么是对称加密什么是非对称加密?)