当不同的远程网络通过Internet连接时,网络之间直接通过私有地址进行互访只是需求之一,除此之外,还有个非常重要的需求,那就是数据安全。因为作为公共环境的Internet,相当于是没有任何秩序和管理的“公海区域”,如果是重要的数据直接往Internet传送,那么被截获甚至是篡改的概率就相当之大了。基于上述原因,为了保证数据的安全,以及数据来源的合法性,目前网络中在传输数据的时候几乎都会对数据进行加密和验证。数据加密的作用是保证数据的机密性,即使被他人非法获取,也无法读取数据的内容;数据的验证,则是保证数据的完整性,也就是说数据在传输过程中没有被人篡改。这些技术是怎么实现的呢?本文就来为大家聊聊这个话题。

本文核心知识点:

1、对称加密算法和非对称加密算法;
2、如何进行数据的校验;
3、从理论上认识IPsec;
4、Cisco L2L VPDN经典实验。

一、加密技术

1.1、数据被截获了

想当年,我们的女主角紫竹还刚上大一。她这边结束了高考,倒是可以得到一点“解放”,但是她的大堂妹紫云却在这一年上了高三,准备高考了;而小堂妹紫苑呢,又是在当年要准备中考,可以说俩妹妹都要参加重要的升学考试,一时间,紫竹的二叔家里面是人人精神紧绷……

小堂妹紫苑是个乖乖女,文文静静的,而且学习还算刻苦认真,所以二叔和二婶倒是不太担心她。但是紫云有点让父母不省心,看起来她的学习成绩也还不错,但是坏就怀在她居然在这个时候情窦初开,和学校一个不同班且有学渣属性的男生关系搞得不错。

本来嘛,林二叔和二婶也不知道这个事情,可就是有一天紫云上学之前把手机放在早餐桌子上,然后那个男生给紫云发了短信,让林二婶给看见了……

好嘛!林二婶立刻急得团团转,紫云在高三这个关键时刻居然掉了链子,而且还和全班考试倒数的王安然谈起了“疑似恋爱”……这里面的结果就不用多说了,紫云肯定和老妈大吵了一架,同时也不得不接受起老妈的“每日审查”!

以上这个小故事,就是模拟了数据在网络中传输被人截获的情形。在这个故事中,我们可以理出如下模型:

数据是由王安然发出,预期目标是发送给紫云。但是却被紫云的母亲林二婶给发现了,并且还读懂了这个信息,于是紫云母女之间避免不了要爆发一次青春期与更年期之间的“战争”。不过换句话来说,林二婶这种“截获”,说不定也能给紫云提一个醒,也不一定是坏事。

1.2、何为“对称加密”

接上回开始说,自从林二婶发现了紫云的手机短信以后,于是林二婶开始对紫云实施了“行为约束”。每天晚上都要让紫云把短信拿给她看。这下子,王安然的消息肯定是不敢再发过来了。但是无奈这俩人也实在是心痒痒啊,那么如何打消林二婶的疑虑呢?

于是,俩人就悄悄约定了一堆“暗号!”

比如,家长爱听的话,无非就是:一起上晚自习啊,一起去找老师开小灶之类的嘛。于是,紫云和王安然就约定好了如下暗号。

比如,所学习的6个科目就代表成都市的六个区:“语文”代表“锦江区”,“数学”代表“青羊区”……;
再有,吃饭就是补课,看电影就是读书会,考试就是演唱会;

于是,王安然和紫云的短信聊天,就变成了这样:

既然是人家主动喊去补习功课,语言又说得那么恳切,那不让紫云去也不太好。毕竟嘛,自己做母亲的也不能做人做得太过分,直接去警告人家王安然显得我家的人太不进人情。好嘛,紫云和王安然就用这些千奇百怪的“暗号”,从高三一开始到高考结束,“成功”地一起吃了7次火锅,看了6场电影,3场演唱会……

不过这事情嘛,在高考的时候还是“漏了陷”,紫云的成绩还是受到了影响。她本来是想和紫竹上一个大学的,但是无奈还是差了那么几分,最后去了重庆。而王安然嘛,勉强上了个本地的二本,和紫云的关系也就那么断了。直到一年以后,紫云才给林二婶说了当年她和王安然的“暗号”。林二婶当即觉得又好笑又郁闷,这么“拙劣”的“骗术” ,她当时怎么就没识别出来呢?

这个故事呢,就说了一个“对称加密”的模型。其实就是把想要表达的意思,换一种方式来表达,以达到“迷惑”截获者的作用。就像紫云和王安然,把一起约着去吃喝玩乐,用一起去“努力学习”来表达,让林二婶还就信以为真了。

在这里呢,我们也就说一个知识点。所谓“加密”,就是把明文的数据转换成密文,而解密,则是加密的逆运算。在计算机系统中,加密和解密都有自己特定的算法和密码(或者说密钥)。在刚才那个故事中,算法就是“替换”,密钥就是“科目换地名,学习换玩乐”。

我们也可以再来看一个例子,那就是吴雄飞给紫竹发送了一条短信“noλ ə∧ol I”,看起来是一堆乱码对吧,但只要把手机倒过来,就看见是“I love you”。这里的算法就是“字符颠倒”,密钥就是:“倒转”。

1.3、何为“非对称加密”

有个周末,紫竹想去春熙路逛逛,买几件衣服,但是那天吴雄飞要写标书,她就只能自己去。正当她在吸着饮料,兴致勃勃地逛街的时候,突然面前闯来一个冒冒失失的男的,在走得快的同时把钱包掉在了紫竹的脚下。

“喂,前面那位帅哥,你的钱包掉了!”紫竹捡起钱包,追上那个男的,把钱包递给了他。
如果说,那个男的是单身的帅哥,紫竹也单身,这件事情可以带出一段美丽的爱情故事;可惜,那个男生并不帅,紫竹也并不是单身。但问题是,紫竹是那种让人看了一眼就难忘的妹子……

那个男的,接过钱包以后,看着紫竹的脸蛋,眼睛都直了。他说道:“小美女,谢谢你啊!为了对你表示感谢,我要请你去前面的冷饮店坐坐,喝一杯奶茶你看如何?”

“不了!谢谢!”紫竹带着礼貌的微笑拒绝了他,然后转身就往前走。
“等一下!”那个男的一下子闪在紫竹面前,拦住了她:“你都没和我说几句话就拒绝我?要不,你给我一个你的联系方式我再放你走!”

把手机号直接给这个陌生人肯定不行,所以,紫竹给了这个男的一张纸条,上面写着一行数字:242667270058402773198。紫竹说:“这串数字就是用我的手机号码乘其他数字乘出来的,只要你算得出来我的手机号,晚上我请你去人民公园对面吃蹄花!”说完,丢下那个人自己就走了。

手机号码是一个11位数,你可以用242667270058402773198逐一去尝试,从10000000000除以到19999999999。你先别说逐一尝试这种事情是不是能完成,就是完成了,也能得到很多个11位数的结果,你总不可能一个一个地打骚扰电话去确认谁是紫竹吧。

这其实就是一个“非对称加密”的模型。这个模型的算法其实就是简单的“算术乘除”,但是加密的过程是把两个数字相乘,得到乘积。

我们换一个小一点的数字来说吧,比如25169×29663=746588047,两个数字是25169和29663,乘积是746588047,这是个加密过程。但是如果直接把746588047数字给你,让你解出它是由哪两个数字相乘得出来的,这就费劲了。

设有A×B=Z,A和B就是这个算法中的两个不同的密钥,两个密钥成对生成;用A加密的要用B解密,B加密的要用A解密,这就是非对称加密。

1.4、两种加密算法的特点

对称加密算法,加密和解密用的都是同一密钥,所以如果非法用户截获了这个密钥,那么它也可以解密这些内容。如果要对网络中传送的数据使用对称加密算法的话,这个密钥也必须共享给对方,在这个过程中却正好是容易被非法用户连内容带密钥一同截获的时候。

如果是非对称加密算法呢?加密和解密用的就不是相同的密钥了。此时,共享的密钥只是大家都知道的“公钥”,而“私钥”则始终不会在网络中传送,等于是没有被截获的可能。并且,公钥和私钥都是成对生成,用B的公钥加密的数据,只能用B的私钥解密。

可能看到这里,有人就会觉得,既然非对称加密中,私钥始终不会在网络中传输,并且每个用户的私钥都不一样,是不是非对称加密算法就可以完全取代对称加密算法了呢?实际上也不是这样。首先,对称加密算法中的3DES、AES算法已经被数学证明过是安全的;而非对称加密算法的思路无非就是:量巨大就算安全(就比如1.3小节里面那个故事里面说的那样,你逐一尝试吧)。而且,对称加密也有它的优势,非对称加密也有它的劣势。

对称加密的最大优点在于计算效率高,而且数据被加密后,占用空间的大小只会发生细微变化(也就是紧凑性好)。所以,对称加密算法适合较大数据的加密。而非对称加密算法呢,计算复杂且效率低,而且,1KB的数据被加密后可能达到10M甚至100M,紧凑性太差,所以非对称加密算法只适合数据极小的时候。

常用的对称加密算法有:3DES、AES;非对称加密算法有:RSA、DSA等。这些加密算法是基于什么工作原理,我觉得还是留给感兴趣的读者去自行收集资料吧。

二、数据完整性校验

数据经过加密,只能保证数据的机密性,仍然无法防止数据被人篡改。换句话说,数据完整性的保证,需要用另外一种方式进行保证。下面就说一下数据完整性校验算法。

2.1、数据完整性校验方式

有个梅老板,做着给海外供煤炭的生意,这次他准备把5000t煤渣运往海外。但是煤炭装箱以后,他又怕船长偷。这个船长拍着胸脯对梅老板说:“老板,我要是偷煤,你就罚我喂鲨鱼。你放心,到了目的地以后,我负责出钱请人帮你过磅!”

因为这趟煤要运到新西兰,没有几个月可运不到。而且,秦皇岛和新西兰奥克兰的地心引力不一样,直接过称的误差很大,所以光靠过磅没办法有效防止船员偷煤。所以,船长才敢下如此毒誓。不过呢,梅老板好像一副胸有成竹的样子:“没事船长,我敢保证这批煤你偷不走!”

煤箱子进了船舱,梅老板亲自指挥员工把帆布幔子盖上并锁上了。这一趟船走了两个月才到终点。于是,梅老板亲自去验货。刚一打开帆布幔子,梅老板就嬉笑着说:“船长先生,乖乖把偷走的煤交出来吧!”

船长一看,几大集装箱的煤上面长满了青苗,但是几乎每个箱子里面都有几块地方缺了苗。梅老板笑道:“我早就在这些煤的面上撒了种子,如果哪些地方没有青苗,就说明哪些地方的煤被偷了。”

船长此时哑口无言,只能是减免了这趟船的运费当做赔偿。

这个故事,其实就可以简单说明了在计算机系统里面对数据做完整性校验的一个思路。那就是对数据执行一个Hash算法,得到一个摘要值(等于是在煤渣表面撒一层种子,等待种子发芽长苗,预期就是煤渣表面长满青苗)。

待数据发送到接收者手里以后,接收者用同样的Hash算法,得到一个数字签名,然后用这个数字签名和摘要值进行比对。如果,数字签名和摘要值出现偏差,则说明数据在传输过程中已经被人篡改了。就像这个故事里面,煤渣遇到目的地,结果发现有些箱子里面的煤渣表面没有青苗,说明这个地方的煤渣被人偷走了。

这个过程如下图所示:

2.2、Hash算法的特点

Hash算法具有以下特点:

(1)固定长度,比如用MD5值计算的Hash值总是128字节,SHA-1计算的Hash值总是160字节。

(2)单向计算,只能通过原始数据得到数字签名,无法逆运算。这过程类似余数算法,就是一个简单的不可逆算法,10除以3余数为1,但除以3余数为1的未必只有10,可以有无数种可能性,所以即使你知道除数3和余数1,也无法反推到答案10。

(3)雪崩效应,只要你在10G数据里面哪怕篡改1b,计算出来的Hash值也有天差地别。

常用的Hash算法是:MD5和SHA。

SHA比MD5更加安全,但中国某大学著名教授已经证明了这两种算法都存在一定的虚假性,目前研发的SHA-2具有更长的签名长度,已经投入使用了,但是老版本的操作系统或引用程序不支持。

三、IPsec(IP Security)理论

在实施VPDN时,除了实现隧道功能以外,还要实现数据安全,两者缺一不可;在数据安全方面,其实就是要让数据加密传输,至于如何对数据进行加密传输,有一个使用最广泛,且最经典的技术方案,这就是IPsec(IP Security),IPsec最突出,也是最主要的功能就是保证VPDN数据的安全传输。

IPsec定义了使用什么样的方法来管理相互之间的认证,以及使用什么样的方法来保护数据,IPsec只是定义了一些方法,而IPsec本身并不是一个协议,就像OSI(Open System Interconnect)参考模型一样,OSI并不是一个协议,OSI只是一个框架,一个模型,OSI里面包含着多个协议,如TCP,UDP,IP,ICMP等等;IPsec中同样也包含着为之服务的各种协议去实现IPsec要完成的各个功能,只有这样,IPsec才能起到作用。

3.1、IKE、ESP、AH协议

A、IKE(Internet Key Exchange)互联网密钥交换协议

前面说过,对称加密算法效率高,而非对称加密算法效率低。所以用对称加密算法来直接加密数据,非对称加密算法用来加密对称密钥。虽然说,A用公钥加密了对称密钥,并且只有B的私钥能够解密。但是因为A、B之间没有认证机制,C仍然可以冒充B的身份对数据进行截获。

所以,在密钥的交换过程中,必须在双方有认证机制,以防止被冒充;并且更多的问题是,即使双方发出的数据附带Hash值,同样也不能保证数据不被篡改,单纯靠比对数据的Hash值是否相同,根本无法确定数据是否被篡改过,因为***者既然改动过数据,人家当然也知道把Hash值再改一下,最后接收者将收到的数据计算出Hash值后,发现Hash值与数据附带的值是相同的,也就无法知道数据是否被篡改过。

由于普通的密钥交换方式存在着许多问题与弱点,所以IKE(Internet Key Exchange)将努力构架一个完善的方案体系,以保证***之间的密钥与数据的安全。

首先一步就是认证,IKE会在***对等体之间采用认证机制(Authentication),认证可以有效确保会话是来自于真正的对等体而不是***者,认证方式有三种:

然后就是密钥算法(Diffie-Hellman,简称DH算法)。

在密钥方面,IKE使用了称为Diffie-Hellman的算法在***对等体之间建立安全的密钥用来加密数据, Diffie-Hellman使用了极为复杂的数学算法,最后将在***对等体之间计算出只有它们自己才知道的密钥,即使他们的会话被第三者监控,也无法推算出密钥。

Diffie-Hellman算法目前有3种密钥长度可选,所以在配置时,需要定义Diffie-Hellman的密钥长度,分别有如下选择:

Group 1
密钥长度为768 bit,也是默认的密钥长度;

Group 2
密钥长度为1024 bit;

Group 5
密钥长度为1536 bit。

一般都会选择Group2。

B、ESP和AH

ESP( Encapsulating Security Protocol ,封装安全协议)和AH( Authentication Header 认证头)都是直接对数据进行操作,从而达到保护数据安全的。一般来说,ESP比AH应用得更加广泛。ESP的协议号是50,AH是51。

下面简单看一下ESP的封装格式:

从图中还可以看出,原始数据包经过ESP封装之后,只是数据被加密了,而原始的IP包头是没有改变的,虽然是这样,但也会使用其它方式,如HMAC来保证数据的安全性,其中包括:

保护数据完整性(Data integrity)
防止中间人***(Man-in-the-Middle)
防止数据被重放(Anti-Replay)
同样也提供数据认证(Data authentication)

再看一下AH的封装包头:

从图中可以发现,原始数据包经过AH封装之后,并没有被加密,这是因为AH封装并不使用常规的方法去加密数据部分,而是采用隐藏数据的方法,也就是相当于加一个防改写的封条给数据,很显然,这简直就是掩耳盗铃,如果数据机密要求高,千万不要单独使用AH封装。

而且,AH头会针对IP包头进行认证,所以当IP包头的地址被NAT转换后,会被认为是“数据被篡改”,所以AH和NAT是冲突的。

3.2、两个SA的意义与IKE协商的两个阶段

SA(Security Association)安全会话

IPsec的所有会话都是在通道中传输的,包括协商密钥,传递用户数据;这样的通道称为SA(Security Association),SA并不是隧道,而是一组规则,在这组规则中包含了保证数据和密钥安全时必不可少的认证、加密等安全策略。

对于密钥安全和数据安全是分开对待的,所以SA有两个:
ISAKMP SA(或IKE SA)保护密钥;IPSec SA保护数据

ISAKMP SA要保护的对象是与密钥有关的,IKE并不直接关心用户数据,并且IKE SA是为安全协商IPsec SA服务的。ISAKMP SA的lifetime默认为86,400 秒(一天),默认没有流量限制。

用户的数据流量真正是在IPsec SA上传递的,而不是在IKE SA;IPsec SA直接为用户数据流服务,IPsec SA中的所有安全策略都是为了用户数据流的安全。每个IPsec对等体都有一对IPsec SA,一个是去往远程目的地的,而另一个是从远程回来的,也就是一进一出,都存放在本地SA Database中。 IPsec SA的lifetime默认为3600seconds(一个小时);默认流量限制为4.608 Gbyte。

四、Cisco经典IPsec L2L VPDN实现

L2L:LAN-To-LAN

一般来说,实验环境做Cisco IPsec L2L VPDN环境都比较简单,选用GNS3或者IOU、EVE-NG模拟器均可,但是要稳定一些,还是老版本的GNS3好一些。

实验拓扑没有必要弄那么复杂,5个设备即可。

4.1、基础配置(接口和静态路由)

这个步骤没有多说的,BoneNet设备在Fa0/0接口配置22.1.1.1/255.255.255.252,在Fa1/0接口配置22.1.1.5/255.255.255.252就算结束了。

4.2、IPsec VPDN两个阶段的配置

既然是实验环境,也就没必要搞那么复杂。所以让LAN1和LAN2的RTP-DR在配置IPsec VPDN的时候,做如下要求。

第一阶段:
(1)加密算法使用AES;
(2)认证方式使用预共享密钥;
(3)DH算法使用Group2;
(4)HASH算法用SHA-1;
(5)LifeTime使用默认值

于是,体现在Cisco的配置命令,就是这样:

第二阶段:

定义对等体间需要保护何种流量(配置ACL)
定义用来保护数据的安全协议(传输集)
定义传输模式(传输集里面配置,默认是Tunnel Mode)
定义数据连接的生存周期以及密钥刷新的方式(默认值即可)

这个配置相对来说要复杂一些

LAN1的RTP-DR配置完成以后,就可以在配置脚本的基础上修改为LAN2-RTP-DR的配置脚本,需要修改的地方就是ACL,指定IP地址的位置:

配置完成以后,可以在LAN1-RTP-DR和LAN2-RTP-DR上用Loopback地址互ping,再在LAN1-MAN-DR和LAN2-MAN-DR上用Loopback地址互ping,如果能ping通则说明配置完成:

4.3、IPsec VPDN的状态查看

查看IKE阶段一(管理连接)的状态,使用show crypto isakmp sa命令;管理连接有5个状态,如下表所示:

查看IKE阶段二(数据连接)的状态,命令show crypto ipsec sa,这个命令查看到的内容会很多,但是主要也是看几个关键位置:



五、本章总结

本文为大家讲述的是三大块知识点:
(1)加密算法:对称加密和非对称加密的区别和各自适用的范围;
(2)数据验证算法:HASH算法的基本验证过程;
(3)IPsec的理论介绍,包括为IPsec服务的协议IKE、ESP、AH。

然后安排了一个经典的Cisco IPsec LAN-to-LAN VPDN来作为练习和理解。
IPsec这部分内容对于初学者来说会比较难一些,在这里我的建议是:对于各种算法,只需要记住它叫什么名字,比如DES、3DES、AES;非对称加密算法DSA、RSA;HASH算法记住SHA、MD5,至于它们的算法原理,有兴趣就去找资料,没兴趣就算逑JX了吧O(∩_∩)O哈哈。

对于IPsec,实际上就记住为它服务的三个协议:IKE(保护密钥),ESP(保护数据),AH(标记数据,用得少)。ESP并不是任何算法,所以才有在配置传输集的时候,出现ESP-AES、ESP-SHA-HMAC这样的关键字。

本章作业:

1、自行使用GNS3或IOU,按照第四节的实验搭建Cisco IPsec LAN-to-LAN VPDN的环境,熟悉配置;

2、根据下方手册,查询在华为AR设备上如何实现IPsec VPDN。
链接:https://pan.baidu.com/s/1bgYP6Zj4_wAxZGxSxBGvkg 提取码:wmlv

3、何书明在做章IPsec VPDN实验的时候,在LAN1和LAN2上不管是MAN-DR还是RTP-DR上互ping Loopback地址,都ping不通。后来他使用了debug crypto isakmp,发现如下信息(见下图),请问是什么原因造成的?并说明解决办法。