什么是VPN?
VPN --- 虚拟专用网 --- 是指依靠ISP或者其他NSP或者企业自身,构建的专用的安全的数据通
信网络,只不过,这个专线网络是逻辑上的,而不是物理上的,所以叫做虚拟专用网
VPN诞生的原因是什么?
1,物理专线成本高,在位置不固定的情况下,难以实现
2,直接将服务器开放到公网,不安全
VPN的分类
1.根据建设的单位不同分类
①企业自建的VPN --- 成本相对较低,更方便控制
②运营商搭建的VPN --- 比较省心
2.根据组网方式不同来分类
① client to LAN VPN (access VPN)
② LAN to LAN
3.根据VPN技术所实现的层次进行划分
这里的SSL和IPSEC我们会在后面的文章中会介绍到!
VPN常用的技术
1.VPN的核心技术 --- 隧道技术
隧道技术的核心 --- 封装技术
VPN技术所工作的层次取决于封装技术所保护数据的层次(当然,这种保护,在没有加
密的情况下,并不代表安全)。
2.身份认证技术
身份认证技术是VPN技术的前提条件,否则,隧道都不知道跟谁建的!
GRE VPN--- 不存在身份认证技术
L2TP VPN --- 可以利用PPP中的身份认证
IPSEC和SSL VPN都具有身份认证的能力,SSLVPN还支持多种身份认证
3.加解密技术
加解密的最重要的特点是可逆,将明文通过某些算法转换成密文,用来防止网络中的被
动威胁,之后可以将密文再通过某些算法还原明文
可逆性!!!
GRE VPN和L2TP VPN都不存在加解密的功能
IPSEC VPN和SSL VPN都可以提供加解密的功能
4.数据认证技术
确保数据的完整性
GRE VPN --- 可以提供“校验和”的功能,但是,这是一个可选项,需要两边同时开启才
能生效。
L2TP VPN --- 本身也不提供数据认证功能
IPSEC VPN和SSL VPN都支持数据认证功能
5.密钥管理技术
对称加密:加密解密都是一把密钥
流加密算法 --- 需要使用一串和明文流相同长度的密钥流进行加密,得到密文流
典型代表 --- RC4
分组加密算法(块加密算法)
常用的分组加密算法:
目前AES是安全程度最高的加密算法,适合在一些对安全要求比较高的场景,比如VPN场景,
但是,在进行大量数据加密时,可以使用DES,效率更高。
最主要的问题:不安全!!!密钥在传输过程中容易被中间人获取。
非对称加密算法:会存在两把密钥,一把加密,一把解密。任意一把都可以实现加解密。
常见算法的有:
虽然非对称加密比对称加密更安全一些,但是,钥匙太多了,更消耗资源。
所以,我们不妨使用非对称加密传递对称加密的密钥。保证对称加密密钥安全传输下,后面在使用对称加密的密钥加密数据。
看起来这样的传输方式很完美!!!
但是呢,有没有发现一个问题,万一中间有个人使坏,它也有两把密钥,他将双方的公钥截取以后,又将自己的公钥给了双方。这样就会出现一个问题。双方都是用这个中间人的钥匙进行加密的,中间人还可以用自己的私钥解密后,查看或者修改内容,然后用双方的公钥进行加密,对方还不知道。
简单来说,就是没有验证身份的合法性。不知道公钥是不是正确的公钥
那怎么做呢?
我们可以寻找一个可以信任的机构(CA),从他哪里获取公钥,就不会存在这个问题了。
具体过程:
首先CA有一对钥匙,公钥公开,任何人都可以得到。私钥留在手里
然后CA将这些公钥当作数据,用自己的私钥加密,我们只需要用公钥去解开获取想要的公钥即可
相当于一个保管公钥的地方,想要什么自己去下载。
这样以来,就解决了身份认证的问题了!
但是还有一个小问题!!!
数据校验以及数据源来源(我觉得差不多就是不可否认性这个意思)的问题。
举个栗子:假如,有两个人B,C 同时都跟A发消息,这两人都是用的A的公钥,A怎么区分他们谁是谁呢,以及数据有没有丢失和篡改。
总不能B说我是B ,C说我是C吧,这样的话,B还不是可以说我是C。
B,C两人怎么证明他们呢,这个时候就可以用数字签名了!
HASH算法 --- 摘要值 --- 单纯的使用摘要值进行认证依然无法保证数据的完整性,所以需要
结合加密算法来一同保证,所以,我们会使用私钥对摘要值进行加密 --- 数字签名
1,相同输入,相同输出
2,雪崩效应
3,等长输出
4,不可逆性
A可以根据数据签名来确定谁是谁,通过对方的公钥,如果能解开看见其中的信息摘要,那就说明是对的,解不开,说明是假冒的。
当然,也可以通过Hash算法对数据进行摘要计算,如果和解开后的一样,则说明数据是一样的。
注意:数字签名是和信息一起传输的!!!