一、VPN(virtual private Network,虚拟专用网)的基本概念
- VPN连接模式分为两种,分别是传输模式和隧道模式
- 传输模式:在整个VPN传输中,ip包头并没有被封装进去
- 隧道模式:VPN将整个三层数据报文封装在VPN数据内,再为封装后的数据报文添加新的ip头
- VPN的类型
- 站点到站点VPN:数据包封装的ip地址一般都是公司内网地址(一般为私有地址),而VPN网关对数据宝进行再次封装过程,客户端是全然不知的
- 远程访问VPN:但设备用户与VPN之间的连接通信,远程访问VPN对于安全性要求较高,更用于隧道模式
- 要想实现隧道模式的通信,就需要给客户端分配两个ip:
- 一个是它自己的nic地址,另一个是内网地址
- 加密算法
- 对称加密算法:使用同一种密钥对信息提供安全的保护,对称加密就是指,加密和解密使用同一个密钥的加密方式。
- 过程:发送方使用密钥将明文数据加密成密文,然后发送出去,接收方收到密文后,使用同一个密钥将密文解密成明文读取。
- 优点:加密计算量小、速度块,适合对大量数据进行加密的场景。(记住这个特点,实际使用是会用到的)
- 不足
-
密钥传输问题:如上所说,由于对称加密的加密和解密使用的是同一个密钥,所以对称加密的安全性就不仅仅取决于加密算法本身的强度,更取决于密钥是否被安全的保管,因此加密者如何把密钥安全的传递到解密者手里,就成了对称加密面临的关键问题。(比
如,我们客户端肯定不能直接存储对称加密的密钥,因为被反编译之后,密钥就泄露了,数据安全性就得不到保障,所以实际中我们一般都是客户端向服务端请求对称加密的密钥,而且密钥还得用非对称加密加密后再传输。)
- 密钥管理问题:再者随着密钥数量的增多,密钥的管理问题会逐渐显现出来。比如我们在加密用户的信息时,不可能所有用户都用同一个密钥加密解密吧,这样的话,一旦密钥泄漏,就相当于泄露了所有用户的信息,因此需要为每一个用户单独的生成一个密钥并且管理,这样密钥管理的代价也会非常大。
- 常见算法
- des:IBM研发的产品,密钥长度64位,其中8位,所以有效长度56位,该方法虽未被破解,但是暴力破解时间相对较短
- 3des:NIST(National instiute if Standards and Technology,美国国家标准及结束协会),在1999年研发了3des算法,理论上是des的加强版,使用了三个阶段的des,及同时使用了三个不同的56位密钥,所以相当于产生了168位的有效密钥长度
- aes:3des虽然是最安全的,但是随着时代的发展,总会被破解,NIST在2002年研发了aes算法,欲取代3des算法
- 非对称加密
- 算法原理
- A要向B发送信息,A和B都要产生一对用于加密
- A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。
-
A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。
-
A将这个消息发给B(已经用B的公钥加密消息)。
-
B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。
-
算法优缺点
- 优点:安全性高,到目前为止,没有任何一种方式可以在合理的时间范围内攻破该算法
- 缺点:效率低
- 非对称算法
- DH
非对称算法的基石
仅能用于密钥分配,不能用于加解密数据,一般加密数据用AES
密钥长度:512~1024中的64的整数倍
双方各有自己的密钥对 - RSA
最经典的非对称加密算法
也可认为是使用最多的非对称加密算法
能用于密钥分配,也能用于加解密数据(“私钥加密,公钥解密”和“公钥加密,私钥解密”)
密钥长度:512~65536(64的整数倍)
只有发送方有一个密钥对,或者更安全的做法是:双发均生成自己的密钥对,但是后边使用密钥对进行加解密时与DH的区别查看前一章
可用于数字签名 - ElGamal
数字签名DSA的基础
具体实现方式只有BC有,与RSA的实现方式类似
只有“公钥加密,私钥加密”方式(公钥加密实际上安全性不高)
密文会成倍扩张
- DH
- 算法原理
- 密钥交换
- 在讨论算法时,我们忽略可一个问题:密钥的交换。许多工程师使用对称密钥加密时,都会担心密钥如何实现共享
- 密钥交换分为带外共享和带内共享
- 带外共享:即通信双方通过一个磁盘、纸、QQ、微信、打电话的共享。这种方法的缺点就是好费时间长
- 带内共享:通过ssh、telent等连接方式通过网络传输密钥。这种方法可以提高效率,但是前提是保证传输通道安全,而传输密钥根就是为了建立安全通道,所以这就成了恶性循环
- 其实,解决这个方法很简单,可以通过非对称加密算法加密对称加密算法的密钥,再用对称加密算法加密实际要传输数据。
- 对称加密算法:使用同一种密钥对信息提供安全的保护,对称加密就是指,加密和解密使用同一个密钥的加密方式。
- 数据报文验证:
- HMAC功能实现
- 在VPN领域,对数据进行来源和完整性校验通常借助散列算法实现
- HMAC(Hash-based MEssage Authentication Codes,散列消息验证码)功能专门用来处理数据及数据包相关验证问题
- HMAC:算法原理等信息可以去看百度百科:https://baike.baidu.com/item/hmac/7307543?fr=aladdin
- MD5 和 SHA
- MD5(Message-digest Algorithm 5,信息-摘要算法)
- SHA(Secure Hash Algorithm,安全散列算法)
- HMAC功能实现
- IPsec连接三个步骤
- 流量触发IPsec
- 建立管理连接
- OSAKMP/IKE 阶段一:要完成三个任务:①协商采用何种方式连接 ②通过DH算法共享密钥信息 ③对等体之间进行身份验证
上述的三个任务是通过6个数据包完成的:
前两个数据包用于协商对等体间的管理连接使用何种安全策略;
中间两个数据包通过DH算法产生并交换加密算法和HMAC功能所需的密钥;
最后两个数据包使用预共享密钥等方式执行对等体间的身份验证- 交换ISAKMP/IKE 传输集,它主要包括以下几个方面
- 加密算法:des、3des、aes
- HMAC功能:MD5 或 SHA-1
- 设备验证的类型:预共享密钥
- DH密钥组
- 管理连接的生存周期
- 通过DH算法实现密钥交换
- 第一步只是协商管理连接的安全策略,而共享密钥需要通过DH算法实现
- DH算法前边已经说过
- 实现设备间身份验证
- 设备验证时最常用的就是预共享密钥,即在对等体之间通过带外共享的方式共享密钥,并存储在本地设备。
- 设备验证通过加密算法或HMAC实现两种方式实现
- 交换ISAKMP/IKE 传输集,它主要包括以下几个方面
- ISAKMP/IKE:相关命令
- 配置安全策略
1 R1(config)#crypro isakmp policy priority 2 3 crypto isakmp policy用于建立ISAKMP/IKE的管理连接策略,每个策略对应一个序列号(priority) 4 5 R1(config-isakmp)#encryption { des | 3des | aes} 6 7 encryprion命令用于指定管理连接的租后两个报文(用于身份验证)采用何种加密算法 8 9 R1(config-isakmp)#hash { sha | md5 } 10 11 hash 指定了验证过程中采用的散列算法 12 13 R1(config-isakmp)#authentication { pre-share | rsa-encr | rsa-sig } 14 15 authentication 命令指定了设备身份验证的方式 16 17 R1(config-isakmp)#group { 1 | 2 | 5 | 14 | 15 | 16 |} 18 19 group 命令用于指定DH加密组,模式使用DH1,组号越大,算法越安全,占用资源也越多 20 21 R1(config-isakmp)#lifertime seconds 22 lifetime 指定管理连接的生命周期,默认值为86400s(24小时) 23 24 25 查看上述配置可以使用 show crypto isakmp policy 查看
- 配置预共享密钥预共享密钥
1 一、 2 R1(config)#crypto isakmp key {0 | 1 } keystring address peer-address { subnet_mask } 3 4 0表示密钥为明文,6表示密钥被加密 5 keystring:表示密钥的具体内容 6 peer-address 表示对端的与之共享密钥的对等体设备地址 7 subent_mask 在这里为可选命令,如果没有指定,默认使用255.255.255.255作为掩码 8 9 可以使用:show crypto isakmp key 查看 10 11 12 二、为了增强安全性,在iOS12.3(2)t版本中,增加了衣蛾选项用来加密密钥,但是要求对端的iOS支持aes加密,命令如下 13 New key: # 输入用于加密的预共享密钥 14 Confirm key: # 确认密钥 15 R1(config)#password encryption aes 16 17 通过 show run 查看到的是密文 18 19 20 通过 no key config-key password-encrypt并不会使配置文件中的密码解密,会导致不可用,所以,使用该命令必须重新为设备指定密钥
- 配置安全策略
- OSAKMP/IKE 阶段一:要完成三个任务:①协商采用何种方式连接 ②通过DH算法共享密钥信息 ③对等体之间进行身份验证