两种不同概念的加密算法:
1、  加密和解密使用相同的一把Key叫做对称加密算法,如DES/3DES/AESAES 256bit是美国国家安全部门禁止出口的技术),由于是线速的,所以速度快,生成密文紧凑,通常用于真正的数据流和大的文件进行加密,但是对key的管理有问题(也就是此key如何让对端安全的获知)
2、  加密和解密使用不同的一对key(一个叫公钥,一个叫私钥,公钥与私钥是有关系的)叫做非对称加密算法,如RSA,它比对称加密要慢1001000倍,且生成密文臃肿,通常只针对数字证书和密钥的管理,但对key的管理很方便
可把以上两种方式结合应用,如著名的PGP软件,过程如下:先对称加密算法对文件加密形成密文,然后用非对称加密算法中对端的公钥(可通过公开途径获知)对对称加密算法中的key进行加密,再传输到对端;传输过程中文件是密文,key也是加了密的,所以安全;在到对端后,对端先用自己的私钥解密出key,再用此key对密文进行觖密得到明文。
 
CA:保证公钥的合法性
DH:密钥交换
 
IPsec对数据加密使用的是对称加密算法(但是此key非彼key,而是DH密钥交换算法生成的,叫shared secret key),对key的传输/交换也不是使用上述的非对称加密算法,而是使用DH算法让两个通信结点分别获知一个相同的密钥
 
IPsec使用的是DH密钥交换算法进行密钥的生成(1/2/5是使用离散对数的原理,7是使用椭圆曲线的原理,都是不可逆的),DHgroup1768bit/group21024bit/group51536bit/group7(不定长bit),这代表key的长度和强度
ipsec vpn概念(二)_vpn
DH算法进行密钥的生成的详细过程:两端先产生两个质数p/q,互相交换后,从中选出一个小的质数p,对其进行DH算法,由1/2/5/7中的一种产生g;同时两端都产生一个各自的私钥;结合g进行运算两端都产生一个各自的公钥;两端在公网上交换公钥;进行运算得到相同的shared secret number;再运行算法得到相同的shared secret key,用最后得到的shared secret key再结合其它加密算法进行数据的加、解密
ipsec vpn概念(二)_休闲_02
例如:
 p=7
q=11
g=17
Xa=3
Xb=5
 
Ya=17^3mod7=4913mod7=6
Yb=17^5mod7=1419857mod7=5
 
A:Zz=5^3mod7=6
B:zz=6^5mod7=6
 
A:Yb^Xa mod p=((g^Xb mod p)^Xa)mod p =g^(Xa*Xb) mod p
B:Ya^Xb mod p=((g^Xa mod p)^Xb)mod p=g^(Xa*Xb) mod p
 
数据完整性的实现:利用HASH算法进行完整性验证
HASH有两种:MD5/SHA-1
HASH算法:把任意长度的一个输入进行计算得到一个固定长度的值,相同的输入得到的值肯定相同,它有一个雪崩效应,只要数据被小小的改动,那么得到的MAC值将会有巨大变化。Hash是单向性的,基本上是不可能反向推算的
 
完整性验证过程:把文件进行HASH计算得到一个固定长度的MAC值,将些MAC值与文件一起发给对端,对端收到后也对文件进行HASH计算得到另一个MAC值,如果这两个MAC值相同则说明收到的文件是完整的,如果这两个值不相同则说明收到的文件不完整
 
在实际的应用中我们使用的叫密钥化的hash/HMAC(文件和共享密钥一起做HASH
MD5(128bit)/SHA-1(160bit)
ipsec vpn概念(二)_休闲_03
是先做HASH后加密,还是先加密后做HASH??
 
数据的起源认证和不可否认性:用数字签名来保证数字证书是我方发起的
数据的起源认证和不可否认性实现过程:本方先将数据做HASH得到一个MAC值,再用我方私钥对此MAC值做加密,把它和数据都发给对方,对方收到后先用我方的公钥(公开发布的)解密MAC值,然后将数据做HASH,得到的MAC值与解密的MAC值进行比较,以确保该数字证书的确是我方起源的。