https 原理

284 阅读3分钟

粗略概述下加密:

背景: 简单的举个例子:A 与 B 通信(英文),内容可能会被截取,从而造成信息泄露。那么是不是可以加密下?A B共同维护一个密码本(设为26英文字母), 加密:字母均向后移动 3 位, 解密:字母向前移动 3 位,这就是简单的“对称加密”了(现实中没这么easy)

=> 密码本泄露了怎么办,密码在传输过程中泄露了怎么办?

这就引来一个问题,那么非对称加密来啦

对称加密

一份秘钥,加密者通过该秘钥加密,解密者通过该秘钥解密。

A 与 B 通信,需要A,B均知道秘钥。

优势: 传输速度快

劣势: 若A 已知密码,要传给B的过程中,被劫持了怎么办?

非对称加密

  1. 分为公钥、私钥。公钥是公开的,私钥仅一方知道
  2. 秘钥的长度 > 加密内容长度,所以一般用于加密摘要(即:原文 => hash 算法 => 指定长度的摘要 => 加密)

两种形式:

私钥加密,公钥解密: 应用场景,https中的,数字签名

公钥加密,私钥解密:应用场景,https中

https原理

上一张个人理解图:

问题1:如何做到防篡改呢?

签名 => CA公钥解密 => 摘要1

原文 => hash算法 => 摘要2

判断:摘要1 === 摘要2

问题2: 证书里有什么?

  • 原文:公钥、 hash算法、expired_time、域名...
  • 签名: 原文 => hash算法 => 指定长度的摘要 => CA私钥加密 => 签名

问题3:CA直接认证所有的服务吗?

当然不了,想象一下,如果所有的服务都需CA认证,~~~ CA使用链式认证的; 证书认证机构, CA, 根证书认证的证书较少, => 链式认证

问题4 如何验证证书? 客户端有两个摘要,通过比对是否相同来做验证,下面分别介绍两个摘要~

  • 摘要1: 服务端: 原文 => hash算法 => 摘要1 => CA私钥加密 => 签名

    客户端: 签名 => CA公钥解密 => 摘要1

  • 摘要2: 原文 => hash算法 => 摘要2

误区

问题1 “公钥加密,私钥解密”,这句话是没错,但只说对了一半。公钥和私钥的区分不是以谁加密、谁解密来区分的,是以谁公开、谁不公开为区分的。另外,公钥和私钥,都可以用来加密和解密,也就是说,同一对钥匙,公钥加密只能私钥解密,私钥加密只能公钥解密。那为什么我们平常不说 “私钥加密” 呢?因为公钥是公开的呀!人手一份公钥,私钥加密不跟没加密一个样吗?因此,在实践中,基本不用私钥进行加密,私钥的用途一般是签名。

问题2

相关文章:

【密码学】Hash Function(哈希函数)

前端加密常见场景

https原理