网络篇--http的安全问题

由于 HTTP 天生“明文”的特点,整个传输过程完全透明,任何人都能够在链路中截获、修改或者伪造请求 / 响应报文,因此数据不具有可信性。

为此引入HTTPS(HTTP over SSL/TLS),让 HTTP 运行在了安全的 SSL/TLS 协议上,收发报文不再使用 Socket API,而是调用专门的安全接口。

而必须具备4个特性才能算安全:机密性、完整性、身份认证、不可否认

机密性:通过密钥对明文进行加密,按照密钥的使用方式,加密可以分为两大类:对称加密和非对称加密。

现在一般使用混合加密(也就是把对称加密和非对称加密结合起来):

对称加密不太可靠,但是一旦密钥被泄漏,也就和明文没差别。

非对称加密虽然可靠但是基于大数运算,比如大素数或者椭圆曲线,是复杂的数学难题,所以消耗计算量,运算速度慢,且需要更多的位数。最关键的是每个人都能拿到公钥,因此黑客可能会伪造假信息向网站发送。

因此需要双重保密,通信刚开始使用非对称加密,网站保管私钥,网上分发公钥。我们首先利用随机数生成一个对称密钥,再利用公钥发送,由于黑客没有私钥,所以解密不了我们的信息,加上黑客并不知道我们内部用的什么对称加密算法,就算他伪造假消息,内部算法对不上也没用。加上只是我们只使用非对称加密算法来加密对称加密算法密钥,其长度比较短,也不会消耗太多时间。

完整性:虽然黑客破解不了你的信息,但是他能对信息搞破坏啊,网站又不知道接受到的信息的原始模样,所以照单全收,甚至黑客也能通过一次次的观察网站对破坏后的信息的反应,来搜集足够的线索达到解密的效果。更或者,黑客假装自己就是网站本身,给你一个假的公钥,那一切都完了。

针对第一点,需要对信息的完整性检测——摘要算法。摘要算法是一种不可逆的算法,每一份信息都对应一份唯一的摘要,网站收到信息和对应的摘要后重新检测摘要,要是和发来的对不上那就说明信息被破坏了,直接舍弃这一份信息。不过完整性必须建立在机密性上,因为黑客可能连同摘要给你一起修改了,这样网站还是无法判断信息的可靠性。因此和上一步一样,我们用非对称加密算法来加密摘要和对称加密算法密钥。这样黑客就拿不到我们的摘要了!

针对第二点,黑客伪装网站向你发放假信息,或者是伪装你向网站发放假信息,来把你银行的钱给划走。因为网站也不知道你是你,所以可能会上当。

针对——黑客伪装你向网站发放假信息。对此,又引入了“数字签名”,就好比你拿着政府盖章的凭证去银行贷款,人家看见证了就知道是来自政府。一样,你要访问网站也要自证身份,原理就是你拿着自己的私钥在网上分发公钥,人用公钥能解开就说明这是来自你的信息。

就是在传输信息前加入确认身份环节,你用私钥加密打招呼,网站用公钥解开。然后网站私钥加密打招呼,你再用公钥解开,彼此确认了对方身份。最后开始混合加密通信。

针对——黑客伪装网站向你发放假信息。对此,需要验证你拿到的公钥究竟是不是真实网站的公钥。这时,又引入一个权威机构CA对网站公钥进行盖章确认身份。CA手握自己的私钥,网上分发公钥,你拿着CA的公钥解开密文得到了里面装着网站的公钥,你就要相信这就是真实的,不然没完没了了。

那黑客有没有可能修改里面的内容再给用户呢?这是不行的,私钥和公钥只能一个开一个关,黑客没有CA的私钥就不能再重新上锁发给用户。

CA证书是预装在浏览器和电脑上的,上网的时候只要对网站发过来证书,用户确认没问题就能建立通信了。

当然CA有时候也会被黑客欺骗,给错误的网站颁发证书,那就是它的问题了,所以它们内部会经常检测,及时废除错误的证书。

整体流程:用户A、网站B

a拿着b发过来的证书,用CA的公钥解开了,得到了b的公钥,而且确定了b的真实性。——防止黑客假冒网站。(身份认证)

a拿到b的公钥后,随机生成一个对称密钥,给b重新发过去,确认了接下来用这种方式交流。——防止黑客窃取信息。(机密性)

a向b发送信息,同时为了自证身份以及防止信息被破坏,会将原始信息不可逆的唯一生成一份摘要1,摘要1通过a的私钥保存(数字签名),b收到后使用a的公钥解开了,确认了a的身份(不是黑客),再对信息重新生成一份摘要2,1和2一致,说明信息没有被篡改。——防止黑客冒充用户以及对原始信息进行破坏。(身份认证+机密性+完整性)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值