最近利用自己曾经写过的一篇文章『https://www.wztlink1013.com/blog/bw80k6/』(利用一次抓包来复习学习过的计网知识)
前言:在分析HTTPS和HTTP这两个协议之间的区别的时候,我感觉HTTPS的SSL(Secure Sockets Layer 安全套接字协议)证书很类似之前老师讲过的RSA算法,做此篇文章复习下RSA算法和加深HTTPS的理解。
对称密钥
用一个简单的凯撒密码例子来讲解一下对称密钥:
上图是凯撒密码的定义,先说一下怎么用:
假如张三和李四两个人之间需要传输一段密码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】公钥和密钥怎么来规定呢?我要是一个网络攻击者,我利用公钥来推理出密钥,那我岂不是直接解密了?!
具体的相关mod运算在此不做详述
【Q2】算法可靠与否
为了保证严谨,同时也证明了这种算法的
- 可行性,所计算出来的算法复杂度最高是4次方,对计算机而言,可计算
- 不可攻破,在学界,大数因子分解不可行,或者说,如今的科技还不能轻易的破解