加密算法没啥可说的,不是他很简单,是它太难了,我也不懂,我已经不学了,有想学的同学百度搜索 IPsec中文RFC
这篇文章只是我的记事本,没有看的意义。
我们先来了解下什么是VPN吧
提到VPN就觉得他是个很牛逼的东西,我们用的最多的就是科学上网,通过VPN我们就能访问到访问不到的东西。
其实我想说的是他没有想象的这么牛逼,他的主要用途也不是在这里,他的主要用途是数据保密,防止外泄。只是凑巧能实现翻墙这个功能。
为什么它主要是一个加密的协议的协议,而能让我们访问到我们访问不到的大网络中呢。
那就要想一想 为什么我们不通过VPN就访问不到这些网络了。
因为这些网络并不是不通的,他是通的,全球一张网络,只是国家为了保护我们,在国家网络的出口部署了防火墙做了策略,禁止访问外部网络的报文通过,所以,才不能去网络。
这也解释通了,为什么使用vpn这个加密协议就可以通了。
因为当你把VPN开关打开了,你和你的境外VPN服务端就建立了一条加密隧道,你的所有数据都会被加密发送给VPN服务器,服务器在帮你去访问,给你返回的结果。而国家网关防火墙并不拦截你加密的数据。
我这里就不理解了,为什么不做策略把加密的报文deny掉呢。
希望能看见的大佬能帮忙解惑。
以上的都是我的理解,并不一定对。
好了现在我们就回归正文来了解那么一丢丢的加密基本知识。
加密算法
问一个很傻的问题,为什么需要加密算法呢?
因为IP网络并不安全,TCP/IP 在设计之初基本上是没有考虑安全性的。
数据传输时,要保证数据传输的机密性,完整性,对数据发送方执行身份认证(鉴别性),抗抵赖性。
这么傻的问题为什么还要问呢,因为考试考概念,你得背
还是一个很重要的概念,也是一个要了解的常识
加密算法是公开的,密钥是保密的
加密算法主要分为 对称加密算法和非对称加密算法。
对称加密算法
1,对称加密算法,加密密钥和解密密钥相同
2,对称加密算法主要分为下面两类:
- 流加密算法:RC4
- 分组加密算法:DES,3DES,AES,IDEA
3,对称加密算法特点:
- 加密速度快,加密后数据大小和之前差不多大,非常适合对大量的数据进行加密,具有商业价值。
非对称加密算法:
1,非对称加密算法:加密密钥和解密密钥不同
2,非对称加密算法主要有:
- DH 和 RSA
DH 加密算法应用在 SSH 和 IPSec等。
3,非对称加密算法特点:
- 安全程度更高,不存在密钥分发管理,维护问题。
- 但是速度很慢,且加密后数据很大。
- 一般情况下,非对称加密算法并不会对报文进行直接加密。
4,非对称加密算法流程:
发送方和接收方需要维护和生成两把密钥,一把公钥(可以暴露),一把私钥(不能被其他任何人得知),发送方,接收方本地使用算法生成 公钥,私钥,密钥对,然后互相交换公钥即可。
发送方使用接收方的公钥加密数据,接收方使用自己的私钥解密数据
1,公钥加密必须私钥解密,一般用于数据加密
2,私钥加密必须公钥解密,一般用于身份验证,抗抵赖性。
数字证书
在非对称加密算法运用的过程中,无论信息的传输还是数字签名,都需要公开渠道获取公钥,这个过程并不安全,可能会被攻击者利用,使得用户一开始就获取了错误的公钥。如下图所示:
用户C想要获取A的公钥,而攻击者B将自己的公钥伪造成A的公钥发布。这样用户C就用伪造的公钥盐城了伪造的签名,A和C之间的通信将完全的暴露给B。
为了防止这种事情的发生,就必须存在一个各方均可信任的渠道,发送者将其公钥通过该信任渠道发布,而接收者通过该信任渠道获取其他人的公钥。
在实际生产过程中,这个信任渠道就是 证书认证中心(Certification Authority,CA),公钥则可通过公钥证书进行发布。
数字信封
那么在IPsec VPN中如何来保证数字证书的安全性呢?
这个时候没有CA,就用到了数字信封。
数字信封就是将对称密钥和非对称密钥做了结合,使用非对称算法中的公钥来加密对称密钥,使用对称密钥来加密数据。
就比如说 A 发送消息给 B:
A —> B
首先,A 和 B共同协商出对称密钥,使用对称密钥来加密数据。
A 和 B 在协商出 非对称密钥,互相交换公钥。
A 用 B 的公钥将协商出的 对称密钥 进行加密传输。
B 收到 A 发来的加密过的对称密钥,用B的私钥来解密,获取到对称密钥。
最后 B 用对称密钥来解密数据 获得原始数据。
不过数字签名存在一个问题,就是不能确定A 收到的信息是来自B 发送的。
就比如说 A 发送给 B 的信息被 C拦截了
C用自己的对称密钥来加密伪造的信息。
并用 B 的公钥来对自己的对称密钥进行加密,发送给了 B
B 收到以后 会 认为是 A 发送的。
这时我们就用到了数字签名来确保收到的信息就是指定发送发发送的。
数字签名
使用私钥加密,公钥解密
数字签名就是发送者使用自己的私钥对数字指纹加密后的结果。
数字指纹
数字指纹即采用Hash算法,例如 MD5 ,SHA,等算法对明文数据执行Hash得到的数据摘要。
Hash 并不是加密算法,而是对数据的完整性进行校验。
Hash 的特点:
- 对数据进行压缩。
- 不可逆性:绝对不可能逆向推算出来。
- 冲突避免。
- 固定大小。
数字指纹的特点:
- 保证数据完整性,抗抵赖性。
比如说 A 给 B 发送数据: 要求B 可以验证数据的完整性,抗抵赖性,对发送方执行鉴别。
·
首先 数据使用数字信封的方式对数据执行机密性的保证。
接着 发送方会对数据执行Hash计算得到 128bit Hash值,即数字指纹。
然后 发送方会将数字指纹用自己的私钥加密,私钥是独一无二的,得到数字签名。
·
------ 发送方会将加密的数据以及数字签名 一并发送给接收方 ---------
·
接收方收到加密的数据,以及数字签名,
首先 使用密钥解密出原始数据。
再 使用发送方得公钥解密数字签名得到数字指纹。
如果B本地用A得公钥解密出了A发来的数字签名,那么A事后就不能抵赖了,且也可以判断出发送方是可信任的一方。
接收方解密出原始数据,本地执行Hash计算,来验证数据得完整性。