在十几年前,我们的传输协议是http协议,为何到了如今改成了https协议呢?为了安全的考虑。
在http协议中,我们的内容是透明的,不被保护的,在黑客等恶意分子的面前,信息极其任意被破译
让我们看看客户端如果使用http发送账户信息
使用http协议的port
在url时就会暴露我们的账户密码数据
我们客户端改用post提交信息
不会在url暴露我们的账户信息,但是真的安全吗,使用《fiddler》抓包工具
在fiddler中,我们捕获了,这台从这台机器发送给目标服务器的一条报文,截获了账户数据。
fiddler的工作原理是:在client和server之间,加了个中间层。
让我们看看post方式发送的账户信息被截获的情况。
在被捕捉后,在fiddler中,我们可以查看到账户的信息情况,这种传递数据的发送依旧是不安全的。
使用我们的https协议就会对数据进行数据加密,保护了我们的数据流动的安全性。
如何加密呢?密钥的出现。
在加密算法中,传入正确的密钥参数对明文数据进行加密处理,返回密文。
在解密算法中,传入正确的密钥参数对密文数据进行解密处理,返回明文。
这里的Secret_key1与Secret_key2,可能相同也可能不同,不同场景不同使用。
密钥的意义:控制密码处理过程的关键因素,密码技术中需要保密的只有密钥。 为了安全,可以定期更换密钥,而无须改变密码的处理过程,也就是不用更换密码算法,这样既安全又节省成本。 实际上,密钥是一系列不可预测的随机数,用于控制加密操作
双方都使用同一把密钥对数据加密解密操作,加密效率较高。
同用X密钥加密解密,效率高,不用区分密钥,程序编写容易。
服务端与客户端用同样的密钥加密解密数据。
加密解密算法的
但是正所谓不怕贼偷,就怕贼惦记,黑客一直在server前蹲守client做三次握手动作。
这个时候client一旦对server发起请求,就会被发现黑客截获,发现你开始第一次交流开始了。
如果我们是以对称密钥加密数据下,在server发回数据时会携带X密钥数据,这个时候就会被黑客得知X密钥信息。
客户端和服务器都有一对公钥密钥。
这个方法效率要优于双端非对称密钥。
别忘了,黑客不仅仅可以看数据,还可以改数据!!!!!
在第一种攻击中,第三和第四看似安全,但在第二种攻击中加密就消失了。
拿第四个防护用第二种攻击方式攻击。
哪我们怎么办呢??那我们的信息岂不是随随便便被人看见,还有安全可言吗?
在防范之前先介绍两个东西,数据摘要于数字签名
一篇文章经过一个hash算法形成一段固定的数字,这就是数据摘要.
不论文章字数长度,100w字和1个标点符号生产的数据摘要是一样长的。
一个文章只要有一点点哪怕一个符号的改变,经过同一个哈希函数生成的数据摘要都相差甚远。
数据签名是对数据摘要做非对称加密算法生成的一串密文,这种签名必须是政府机构发行的签名,解密也必须只能用政府机构的公钥解密。
铺垫结束
客户端与服务器建立链接的时候,服务器发送的并不是只有公钥这么简单的东西,而是发送了一份由CA机构承认的证书。
什么意思呢?就是类似于我们开店需要政府发行的经营资格证,公司在创立早期时候,会向国际CA组织申请CA证书,需要我们提交各种各样的信息。
什么是证书呢?
让我们模拟中间人第二种攻击模式,攻击证书吧。
不仅篡改服务器公钥也篡改数字签名
没有人会用黑客的公钥来解密数字签名,所以伪造的数字签名+CA公钥生成的数据摘要无法和hash算法的算出的数据摘要配对。保证了证书的合法性。
大千世界无奇不有,有攻有防,没有绝对的安全再计算机领域,我们做个假设,如果有个黑客特别牛皮,可以逆推出,伪数据摘要+CA公钥=>得出了应该的数字签名,那可就完蛋了,证书也不管用了,时刻小心提防才是正确的。