[转]https到底安全在哪里?

  • 内容
  • 评论
  • 相关

原地址 https://blog.csdn.net/shanghx_123/article/details/86505726

对称加密算法
都说http是不安全的,http是明文传输,也就是说http在两个主机之间传输的信息都是没有经过加密的,那给他加个密不就好了。于是就有了对称加密算法。
对称加密算法指的是加密和解密用的是同一个密钥。

每次进行数据传输前,都是先对要传输的数据进行加密,然后对方再进行解密。虽然加密和解密算法是公开的,但那个密钥是保密的, 当收到密文时,只有通过密钥才可以解密。但是这个密钥怎么才能安全的传输给对方呢?所以就有了非对称加密算法。

非对称加密算法(RSA)
RSA有一个特点就是主机A和B都有一个自己的公钥和私钥,公钥全世界都可以知道,而私钥只有自己知道。并且用私钥加密的数据,只有对应的公钥才可以解开;用公钥加密的数据只有对应得私钥才可以解密。

这样以后,主机A给主机B发消息,就先用主机B的公钥进行加密,(主机B的公钥全球人都知道)然后 B收到消息后,再用自己的私钥进行解密。(只有B能解密,因为消息是通过B的公钥加密,并且B的私钥只有B知道)。这样主机A、B之间就可以翻新安全的传输消息了。

但问题就是,RSA这样的效率非常慢,相比之前的对称密钥慢多了,感觉没有必要了。于是,那要不将两个加密算法结合起来,看看怎么样??

非对称加密+对称加密
具体怎么做呢??
1.主机A先生成一个对称加密算法的密钥,然后用RSA的方式发送给B;
2.然后主机B和A之间以后的通信就通过这个密钥用对称加密算法来通信。

可是这样,似乎又有问题,假如A用RSA的方式给B发送对称加密算法的密钥时,因为A要知道B的公钥,所以B要先给A发送B自己的公钥,这时候如果由中间人C截取了B的公钥,然后冒充B把自己的公钥(C的公钥)发给了A,然后A发给B的消息就用中间人C的公钥加了密,那此时只有中间人C才可以解密,并且中间人C还可以把收到的消息再次用B的公钥加密再发给B,B此时收到的消息就是中间人C发给他的,并且消息还可以是经过中间人C修改过的。

但此时A和B都不知道他们发送的消息是经过中间人的。

所以现在的问题就是要知道我主机A拿到的公钥是不是主机B的公钥,如果是,那就没问题,如果不是,那肯定就是被中间人截取并且修改成中间人的了。
此时我们必须找一个个方法来核实这个公钥到底是谁的?????

此时就有了数字证书这个东西。

数字证书
首先,主机A把他的公钥和个人信息用Hash算法生成一个消息摘要,这个Hash算法有个好的特点就是只要输入的数据有一点点变化,那么生成的消息摘要就会发生巨变。 这样就可以防止别人修改原始的内容。然后再将这个消息摘摘要通过认证中心(CA)的私钥进行加密,形成数字签名。

接着再把数字签名和原始信息(主机B得公钥和信息)合并 ,形成一个新的东西,叫做数字证书。

当主机B把这个数字证书发给主机A时,主机同相同的Hash算法对原始信息生成消息摘要,再用CA的公钥对数字签名进行解密,得到CA创建消息摘要,然后进行对比,看有没有改变。如果一样,说明公钥没人改,也就是说此时的公钥就是主机B的公钥,拿到主机B的公钥之后,再通过之前讲的非对称加密算法把对称加密算法的密钥传输过去,接着以后的数据的传输就用对称加密算法完成就ok了。

不过这样做的前提是得信任CA,这些CA本身也有证书来证明自己的身份,并且CA的信用是像树一样分级的,高层的CA给底层的CA做信用背书,而操作系统/浏览器中会内置一些顶层的CA的证书,相当于你自动信任了他们。 这些顶层的CA证书一定得安全地放入操作系统/浏览器当中,否则世界大乱。你可以打开浏览器, 从设置中可以找到“受信任的根证书”

HTTPS
那对于主机A和主机B完整得通信就是下图这样。

HTTP和HTTPS的区别
到现在为止,我们就比较清楚HTTPS和HTTP的区别;借用比较规范的回答就是下面几点。
HTTPS和HTTP的区别主要如下:
1、https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

HTTPS提高了安全性,但其他方面就不如HTTP了
1、因为HTTPS要保证安全,所以HTTPS协议握手阶段比较费时,会消耗更多的CPU
2、HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗。
3、SSL证书需要钱,功能越强大的证书费用越高。
4、SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
5、HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。

总得来说,
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

评论

0条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注