前言
客户端与服务端进行数据交互时,会有哪些安全问题产生?这些问题应如何解决?本文将以图文的形式讲解上述问题,欢迎各位感兴趣的开发者阅读本文。
传输数据时的四个问题
在互联网中传输数据时,可能会遭到中间人的攻击,从而拦截数据、伪造数据,接下来就跟大家分享下传输过程中可能发生的四个问题。
窃听
如下图所示,A向B发送的消息可能会在传输途中被X偷看,这就是窃听。
假冒
如下图所示,A向B发送了消息,A以为B已经接收了消息,然后B有可能是X冒充的;反过来,B以为从A那里收到了消息,然后A也有可能是X冒充的。这种问题就叫作“假冒”
篡改
A向B发送消息,B收到了A发送的消息,此时B收到的消息可能不是A的原话,如下图所示,在消息的传输途中,内容已经被X更改了。这种行为就叫做“篡改”。除了被第三者篡改外,通信故障导致的数据损坏也可能会使消息内容发生变化。
事后否认
如图所示,B收到了A发送的消息,但A作为消息的发送者可能对B抱有恶意,并在事后声称“这不是我发送的消息”。这种情况会导致互联网上的商业交易或合同无法成立。这种行为便是“事后否认”。
用安全技术解决传输中的问题
加密技术
我们会使用传输内容进行加密的手段,来解决第三者「窃听」的问题。如下图所示,我们对传输中的数据进行加密,设置可以访问数据的Key,这个Key只有A和B知道,第三者拿到加密后的数据没有Key是无法查看的。
消息认证码与数字签名
通常情况下,我们会使用消息认证码或者数字签名解决「假冒」、「篡改」、「事后否认」问题。
如下图所示,我们设置一个消息认证码,这个消息码会根据发送数据的内容以及内容长度生成一个随机码和解开这个随机码的key,要查看消息时会通过key来验证,如果消息在传输途中被篡改了那么随机码就会变,使用key就无法解密,那么就很好的防止了上述问题。
数字签名的原理与消息认证码的原理大致相同,也能够解决上述问题。
写在最后
- 文中使用的图片源自《我的第一本算法书》,如若侵权,请评论区留言,作者立即删除相关图片。
- 文中如有错误,欢迎在评论区指正
- 本文首发于掘金,未经许可禁止转载