网络通讯中的4种 安全问题
网络层- ARP欺骗
ARP欺骗的防护原理
DoS,DDoS 攻击
应用层 DNS 劫持
HTTP 协议的安全问题
单向散列函数,不可逆 MD4,MD5,SHA全家桶
可逆,对称加密 DES,3DES,AES
DES,已经被破解,不建议使用
3DES
AES 目前都使用的一种
密钥配送问题
实际开发中,用的比较多的是 非对称加密 方法
可逆,非对称加密 RSA
非对称加密解密 大致流程如下:
A 和 B,C,D 三个通讯。
B,C,D可以给A发信息
那么 A 会 生成 一对密钥,一对密钥的意思就是一个公钥,一个私钥
A 会把 公钥 公布,或者发送给 B,C,D
那么 B,C,D拿到公钥后,将自己的的信息使用 公钥 加密,发送出去。
这时候即使 E 这个黑客 拦截了 B,C,D 发送给A的 信息,由于E 没有私钥(即使E有公钥),也无法解密。
A 想给 C 发信息
C会生成 一对密钥,
C将 公钥 公布,或者发送给A
那么 A 拿到公钥后,将自己的的信息使用 公钥 加密,发送出去。
只能C 解密,完成通讯
也就是说:在我们目前学习的认知里面,一般都是 公钥加密,私钥解密就可以了
但是实际上,使用私钥加密,公钥解密 的场景也有,比如在数字签名的时候也能用到
混合密码系统
实际开发中的如何使用的?是非对称加密 和 对称加密 结合起来一起完成的。
实际上完全使用 非对称加密 就可以完成,那么为啥还需要对称加密呢?
因为 非对称加密的 效率低,因此要结合 对称加密一起来完成
数字签名
我们来看一个问题
如下是 数字签名的 过程
我们会将要发送的消息 通过发送者的私钥 加密,变成签名,然后将消息和签名一起发过去。接受者 收到后,通过 发送者的公钥 解密,就知道发送者发送的消息是啥了。
实际上我们在发送者的步骤的时候,除了发送被发送者的私钥加密后的信息外,还应该明文的发送消息本身。
因为数字签名本身的应用场景:就是发送一些 让大家都可以看的消息,但是又要让大家知道这个消息确实是我发送的,不是别人发送的。
从上面看到:我们会发两个内容,一个是明文的消息本身,一个是消息加密后的 签名。为什么要发两个呢?只是发一个 消息加密后的 签名,行不行呢?
由于发送方使用的私钥加密的,那么理论上 中间窃取者 也能收到该消息并成功解密,收到后,可以改动消息内容,但是由于 中间窃取者 没有 发送者的私钥,没有办法使用发送者的私钥 加密,但是 中间窃取者 可以随便用个密钥加密(注意,这里是随便一个密钥) ,然后发送给接受者。接受者在收到加密后的消息后,使用 发送方的公钥解密,发现解出来是乱码,但是接受者这个乱码是不是就是发送方想发送的真正的内容呢?因此还要发送 明文的消息本身。
这里还有一个问题,就是我们是把 整个消息都加密了,但是这个消息有可能很大,直接加密浪费的资源太大了。
数字签名改进
证书
到这里,前面的加密 和 数字签名 实际上还有一个问题没有解决,就是公钥的传播问题,我们回头去看一下,不管是 加密 还是 数字签名,实际上都存在着,对方要先知道 另外一方的公钥 问题,但是这个公钥 是可以被篡改的,如下图 :为了解决此问题,因此有了 证书 。