最近利用自己曾经写过的一篇文章『https://www.wztlink1013.com/blog/bw80k6/』(利用一次抓包来复习学习过的计网知识)

在分析 HTTPS 和 HTTP 这两个协议之间的区别的时候,我感觉 HTTPS 的 SSL(Secure Sockets Layer 安全套接字协议)证书很类似之前老师讲过的 RSA 算法,做此篇文章复习下 RSA 算法和加深 HTTPS 的理解。

在密码学当中,由对称密钥和非对称密钥之分。

对称密钥

image.png
用一个简单的凯撒密码例子来讲解一下对称密钥:
image.png
上图是凯撒密码的定义,先说一下怎么用:

假如张三和李四两个人之间需要传输一段密码 apple,他们之间共同约定使用密钥-3(再上图表示就为 e 字母编程 b 字母了,以此类推),而这个算法是基于mod 运算(在这里看成是一种加密/解密机制)的。

张三利用 mod 运算加密机制(mod 运算)将 apple 转换位 xmmfb
李四利用 mod 运算解密机制(mod 运算)将 xmmfb 转换位 apple

a 为什么到 x:(0-3)mod26 可以看成(23-26)mod26=23,所以 a 往后退三位还是 x

上述例子的加密机制和解密机制算法一样(mod 运算),实际上也可以不一样,不做详述。但是可以说名对称加密的密钥都一样,该例子中表现为-3

RSA 公钥密码算法

RSA 公钥密码算法是非对称加密。

先说一下和上面的对称密钥的不同,很简单,不同之处就是对称密钥只有一个密钥,而非对称密钥有两个(我觉得严谨来说可以有多个,但在这里先局限地说有两个),而且一个叫公钥,一个叫密钥。

还是上面的张三李四例子,就相当于张三这次用公钥来加密 apple 这个单词,加密成一段密文,这段密文只能由密钥来解密,即便是你有了公钥,也不能将其解密。

然后来抛出几个问题来分析之:

【Q1】公钥和密钥怎么来规定呢?我要是一个网络攻击者,我利用公钥来推理出密钥,那我岂不是直接解密了?!

image.png
具体的相关 mod 运算在此不做详述

【Q2】算法可靠与否

为了保证严谨,同时也证明了这种算法的

  • 可行性,所计算出来的算法复杂度最高是 4 次方,对计算机而言,可计算
  • 不可攻破,在学界,大数因子分解不可行,或者说,如今的科技还不能轻易的破解

image.png
image.png