HTTPS 基础知识(密钥、对称加密、非对称加密、数字签名、数字证书)

本篇文章首先介绍什么是对称加密、非对称加密、数字签名、HASH 等相关概念。

前言

为什么有加密学、加密算法这个东西的出现那 ...
原因很简单隐私 、秘密不想让其他人知道,涉及到个人隐私、国家利益、战争的原因所以把重要信息加密,让其他拦截到的人看不懂。先举个例子说明一下什么是密钥、加密算法这些关键词后面会用到。

古典算法 恺撒密码

恺撒密码的原理是,对于明文的各个字母,根据它在 26 个英文字母表中的位置,按某个固定间隔 n 变换字母,即得到对应的密文。这个固定间隔的数字 n 就是加密密钥,同时也是解密密钥。例 CRYPTOGRAPHY 是明文,使用密钥 n = 3,加密过程如图所示:

明文: C R Y P T O G R A P H Y
| | |
| |................. | 密钥:n = 3
| | |
密文: F U B S W R J U D S K B

明文的第一个字母 C 在字母表中的位置设为 1,以 n = 3 为间隔,往后第 3 个字母是 F,把 C 置换为 F;依此类推,直到把明文中的字母置换完毕,即得到密文。通信的对方得到密文之后,用同样的密文 n = 3 ,对密文的每个字母,按往前间隔 3 得到的字母进行置换的原则,即可解密得到明文。

通过凯撒密码我们应该明白这个简单的加密解密过程了。
秘钥:n = 3
加密、解密算法:加减 n 的过程

对称加密

定义

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

加密过程

我们可以通过上面的 凯撒密码 这个简单模型理解对称加密。

HTTPS 基础知识(密钥、对称加密、非对称加密、数字签名、数字证书)_第1张图片
加密过程

常用算法

常见的对称加密算法有 DES、3DES、AES、Blowfish、IDEA、RC5、RC6

对称加密的优缺点

  • 优点:称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。
  • 缺点:对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。

非对称加密

定义

非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。

加密过程

下面通过举例 画图来帮助大家理解这个过程。


HTTPS 基础知识(密钥、对称加密、非对称加密、数字签名、数字证书)_第2张图片
非对称加密
  • 通信双方用户 A 、B 都会生成一对 公钥-私钥 并且把自己的公钥交给对方。
  • A 用户给 B 用户发信息并且用 B 公钥进行加密。
  • B 用户收到消息后用自己本地的 B 私钥 进行解密。

由于 公钥 加密的数据只有 与其配对的私钥 才能解开,所以只要用户 A、B 牢牢的把自己私钥保存好就可以啦。这就解决了 对称加密 在网络安全不可靠情况下的密钥传递及加密通信。

非对称加密存在风险

右上图我们可以发现非对称加密的公钥是公开的,当坏人用 公钥 B 模拟一下消息给 B 用户发信息 "借我 1 万元" B 用户用自己的 私钥B 解密(成功解密),没毛病给你 1 万。。。。
这里有个问题就是 B 用户要确定给我发消息的一定是 A 用户,那怎么确定那???下面我们来说一下数字签名。

数字签名

定义

数字签名是非对称密钥加密技术与数字摘要技术的应用(私钥和公钥互相可解)。
数字签名就是将公钥密码反过来使用。签名者将消息用私钥加密(这是一种反用,因为通常公钥密码中私钥用于解密),然后公布公钥 。验证者使用公钥将加密讯息解密并比对消息。

作用

  1. 确认消息在传输过程中没有丢位,没被篡改(完整性)
  2. 确认消息的发送者是发布公钥的 Alice(认证)
  3. 确认Alice的确发布过该消息(不可否认性)

操作过程

通过用 私钥 A 对消息进行签名 ,然后通过 公钥 A 验证 后的得到的消息对比解密后的消息一直则确定了这个消息确实是 A 用户发来的。

HTTPS 基础知识(密钥、对称加密、非对称加密、数字签名、数字证书)_第3张图片
签名过程

摘要算法(HASH)

通过上图中的签名可以验证 发消息者的准确性,但是存在一个问题就是我们的传输数据量变大了,这显然是不合理的。下面我们将用到 摘要算法(HASH)他可以大大减小我们签名数据的大小。

原理

摘要算法是一个神奇的算法,散列就是通过把一个叫做散列算法的单向数学函数应用于数据,将任意长度的一块数据转换为一个定长的、不可逆转的数字,其长度通常在128~256位之间。所产生的散列值的长度应足够长,因此使找到两块具有相同散列值的数据的机会很少。(可以理解为源文件的指纹

摘要算法具有以下特性

只要源文本不同,计算得到的结果,必然不同(或者说机会很少)。
无法从结果反推出源数据(那是当然的,不然就能量不守恒了)。

常见的摘要算法:

MD5、 SHA-1、MAC、CRC

通过使用 HASH 我们可以很大程度上的减少签名数据的大小并且可以保证数据的唯一性。

数字证书

现实生活中的证书

在现实生活中,证书顾名思义,就是权限机构颁发的证明。比如英语 6 级证书,就是教育部门颁发给通过了6级考核的个人的证明,证明这个人的英语能力。我们来看一下这个证书的组成:

  • 被证明人:老王
  • 内容:通过了英语六级
  • 盖章:教育部门的公章或钢印

当老王用这张证书找工作时,用人单位会通过查看证书的各项内容(尤其是公章),来验证证书的合法性和老王的能力。在现实生活中经常有假的 6 级证书,这些假证书最重要的就是有一个假公章。现实生活中使用法律法规来约束私刻假公章的行为,但是用人单位可能不能十分准确的判断公章是真是假。而数字签字可以来解决该类问题。

数字证书

数字证书就是通过数字签名实现的数字化的证书,在现实生活中公章可以被伪造,但是在计算数字世界中,数字签名是没办法被伪造的,比如上述证书中,在一个证书文件中写明了证书内容,颁发证书时,教育部门用他们的私钥对文件的摘要信息进行签名,将签名和证书文件一起发布,这样就能确保该证书无法被伪造。验证证书是否合法时,首先用教育部门的公钥(公钥是公开的谁都可以获取到)对签名进行解密得到一个摘要信息,使用教育部门同样的摘要算法得到证书的另一个摘要信息,对比两个摘要信息是否一致就能确定该证书是否合法。在一般的证书组成中部分中,还加入了一些其他信息,比如证书的有效期。

数字证书也有很多的签发机构,不同的签发机构签发的证书,用途也是不一样的,例如在 Web 访问中为了防止 Web 内容在网络中安全传输,需要用到的 SSL 证书则需要向几家公认的机构签发。这些签发第三方机构统称为 CA(Certificate Authority)。

根证书

那么我们如何保证第三方证书的安全行那,那就是需要我们的根证书对他们进行签发,这是所有的根源了根证书不需要被任何机构签发了。根证书大部分都是跟着系统一起打包进去的。例如 Android 系统中,则存放在 /system/etc/security/ 目录下,想要了解看看这篇文章Android 根证书管理与证书验证。 在访问网络的时候我们可以查看这个服务器网站的相关签发证书机构,如图。

HTTPS 基础知识(密钥、对称加密、非对称加密、数字签名、数字证书)_第4张图片
证书

关于数字证书、数字签名不明的可以看看这片非常通俗易懂文章 数字签名、证书是什么?

参考文章:
数字证书的基础知识
数字签名是什么?

你可能感兴趣的:(HTTPS 基础知识(密钥、对称加密、非对称加密、数字签名、数字证书))