一、非对称密钥
目的:加密、验证
原理:两个大素数相乘得到一个更大的数(这步很简单),而反过来,从这个更大的数去反向推导原来的乘数,基本上一辈子的时间去计算都很难得到这个答案。这两个素数一个是公钥,一个就是私钥。
加密:peer之间共享公钥,A用B的公钥加密数据,发送给B,B用自己私钥解密。反之也如此。
相互的私钥永远不会公开,即使被攻击者窃听到公钥,也不会有危险。
验证过程:即通常的说法---数字签名,过程如下:
1、A用私钥+身份信息
2、实施加密算法
3、发送加密的身份信息(通常这个加密的身份信息称为数字签名)和明文身份信息给对方B
4、B使用A的公钥解密数据——得到解密后代身份信息
5、将解密后的身份信息和明文信息对比,如匹配则验证A,如不匹配则验证失败
疑问:为什么有了公钥和私钥来保证安全,还要数字证书来干什么呢?
答案:验证这里有个问题,如果中间人自己产生密钥对,伪装成A,那么B并不知道,同样会成功验证,攻击发生并成功。
解决方法:
1、带外预先共享相互公钥;
2、数字证书的引入就是为了解决这个麻烦。
数字证书本质依然是公钥和私钥,通过加入A和B都信任的证书机构CA——来解决A和B的信任问题——欺骗不会发生。
二、非对称密钥比对称密钥的比较和用途
非对称密钥比对称密钥慢1500倍,因此常用对称密钥加密数据,而非对称密钥用来加密身份信息用于验证或者用来分发预共享密钥(典型的是DH算法,用于一个非安全通道上分发对称或非对称密钥)
三、HMAC:散列消息验证码
目的:
1、源验证
2、检测数据完整性,是否中途被破坏
原理:
1、可变输入产生不变输出。
MD5是128位16字节输出,SHA-1是160位输出20字节,叫数字签名或手印。
2、相同输入产生相同输出
3、不可逆计算:不可能按照输出去推导输入的密钥
4、雪蹦效应:细小的输入变化导致输出的巨大不同
疑问:为什么有了加密还要用HMAC?
答案:两个好处:1、起源是合法的,我正和想要的人在谈话。2、第一步发现非法者,而不是等解密数据完成才发现对象不是我想要的,节约了系统资源。
四、DH组
预共享密钥发分发一直是个两难选择:如果带外操作,工作量增加;如果带内分发,则需要安全通道,但是这个密钥正是用来建立安全通道的,尚未分发出去,到底是先鸡呢,先蛋?陷入这个困扰中。
此时引入DH组,解决了这一困扰,在不安全的通道上分发对称密钥,将它以加密形式发送。
数学原理:
即使不同的输入值输入到DH算法中,在两端都会产生相同的输出结果:如果两对值有关系,那么在相互交换了其中的一个值之后,这些值之间还是有一定的关系。
DH组的本质是使用非对称密钥来加密对称密钥。
DH算法过程:
1、相互产生密钥对
2、交换公钥
3、用对方的公钥和自己的私钥运行DH算法——得到另外一个密钥X(这里的奇妙之处是这个值两端都是一样的)
4、A产生对称加密密钥,用密钥X加密这个对称的加密密钥——发送到B
5、B用密钥X解密——得到对称的加密密钥
6、B用这个对称的加密密钥来解密A的数据
五、典型案例分析
基本配置如下:(源-A 目的-B)
L2L ×××管理连接建立策略10:
authen pre
group 2
enc des
hash sha
crypto isakmp key cisco123 address 172.26.26.2
access-list 101 per ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
cry ipsec trans cisco esp-des esp-sha-hmac
cry map mymap 10 ipsec-isakmp
set peer 172.26.26.2
set trans cisco
match add 101
ip route 0.0.0.0 0.0.0.0 172.26.26.2
int s1/1
ip add 172.26.26.1 255.255.255.0
crypto map mymap
记得:管理连接的建立,是没有数据发送的,数据发送交给第二阶段;阶段一执行的是安全策略协商、DH组交换加密密钥和HASH密钥、设备身份验证
管理连接执行过程:
A:先加密 再执行HASH
1、感兴趣的数据流触发×××过程——用“cisco123”这个字串以及其他信息做材料——产生56位DES对称加密密钥——注意:这个时候B并不知道这个加密密钥
2、执行DH group 2分发对称的加密密钥
疑问:这里分发的是什么呢,预共享密钥“cisco123”不是已经预先配置好在A和B了吗?
答案:该密钥是基于“cisco123”产生,被DES使用的56位加密密钥,通过DH发送到B,B运行DH算法,得到这个DES 56位的A用来加密身份信息的加密密钥,“cisco123”这个字串只是用来产生加密密钥的原材料。
3、DES算法提取固定长度的数据块(身份信息如,IP地址,主机名,序列号或者这些信息的组合),转换成同样大小的加密数据块——B通过DH得到的对称加密密钥执行反过程来解密数据。
DES的弱点:用2的55次方的强力密码攻击可以得到加密密钥,1999年在22小时攻破,现在的处理能力甚至可以在一个小时内攻破。
这里错误吗:阶段一不执行DES算法,这个是阶段二的事情?或是DES加密的是身份信息?
4、 经过DES处理的加密数据身份信息+密钥“cisco123”(HASH密钥),执行HMAC sha-1功能——得到160位20个字节的数字签名或称为手印
5、DES处理的密文身份信息+手印——发送给B
疑问:加密密钥是56位的DES,HASH密钥是什么样的呢,是不是就是“cisco123”这个字串?
答:是的,cisco123的用途就是用来做设备验证的,通过带外方式共享在对端,在SHA-1的执行中,加解密都是用的这个密钥
B:先HASH 再解密数据,以节约CPU资源
1、取出A的DES处理的密文身份信息+HASH密钥cisco123——先执行HASH sha-1功能——得到160位的20个字节的手印
2、比较收到的A的手印(注意:这里和私钥的数字签名不同,私钥签名比较的是明文身份信息,HMAC比较的是手印,计算的方式也不同)
——如匹配,则:实现HMAC的两个功能:(1)、验证成功;(2)、检测数据没有被毁坏(可能是攻击引起毁坏,或者是网络原因,如NAT、网络崩溃等)
——如不匹配,则验证失败——直接丢失此数据包,不再执行解密数据——从而节约CPU资源。(这是HMAC的另外一个优点,否则黑客可以发送欺骗的数据包,让你无休止地执行解密,耗尽CPU资源,达到DOS攻击的目标。事实上HMAC只需要很少的CPU资源就可以完成任务)
这里要注意:B对收到的明文身份信息和手印是分开来处理的
3、如验证成功,则:——取出加密数据+加密密钥——执行解密的DES反过程——最终得到A的原始身份信息
进入第二阶段
疑问:那么在RSA伪随机数和RSA-SIG方式中,有什么不同呢?pre-phsae使用的是对称的加密密钥来执行加密和解密数据的过程,RSA-EN,RSA-SIG的加解密是怎么进行的,两端的密钥是一样的吗?
答案:
常用的就是RSA-EN,伪随机数——使用公钥加密标准
这里有些不同:
A和B交换公钥
A产生随机数,用这个随机数代替cisco123去执行HASH功能签名经DES加密的身份信息,将密文和明文身份信息发送给B
A同时使用B的公钥加密随机数——发送给B
B用自己的私钥解密得到A的随机数(此时随机数两方都是一样的了)——再用这个随机数运行HMAC功能解密A的HASH签名——完成验证——用DH得到的对称加密密钥解密DES处理的A的身份信息
原理:随机数代替了预共享对称密钥方式中的简单密钥,先通过公钥加密标准来交换随机数,用随机数作为HMAC的密钥
执行RSA-SIG则使用CA的数字证书,来防止中间人伪装成对等体,其他过程和RSA的随机数是一样。
因此设备验证的两种方式的区别是:
HMAC密钥操作的不同——固定的预共享对称密钥作为HMAC密钥和伪随机数作为HMAC密钥的不同
用来解密HMAC签名的伪随机数同样是对称的——只是经过不对称密钥来处理后再经DH分发到对端
无论是加密密钥还是HMAC密钥,都是通过DH分发给对等体的。
针对不同加密方式产生的不同位数的加密密钥是随机产生的,经过DH分发是对称的。
本质上是几种算法的数学基础不同:
RSA算法是可以用不对称密钥执行的
HMAC算法和其他加密算法DES、3DES、AES都是必须要使用对称密钥才可以解密的