两种不同概念的加密算法:

1、  加密和解密使用相同的一把Key叫做对称加密算法,如DES/3DES/AES(AES 256bit是美国国家安全部门禁止出口的技术),由于是线速的,所以速度快,生成密文紧凑,通常用于真正的数据流和大的文件进行加密,但是对key的管理有问题(也就是此key如何让对端安全的获知)

2、  加密和解密使用不同的一对key(一个叫公钥,一个叫私钥,公钥与私钥是有关系的)叫做非对称加密算法,如RSA,它比对称加密要慢100到1000倍,且生成密文臃肿,通常只针对数字证书和密钥的管理,但对key的管理很方便

可把以上两种方式结合应用,如著名的PGP软件,过程如下:先对称加密算法对文件加密形成密文,然后用非对称加密算法中对端的公钥(可通过公开途径获知)对对称加密算法中的key进行加密,再传输到对端;传输过程中文件是密文,key也是加了密的,所以安全;在到对端后,对端先用自己的私钥解密出key,再用此key对密文进行觖密得到明文。

 

CA:保证公钥的合法性

DH:密钥交换

 

IPsec对数据加密使用的是对称加密算法(但是此key非彼key,而是DH密钥交换算法生成的,叫shared secret key),对key的传输/交换也不是使用上述的非对称加密算法,而是使用DH算法让两个通信结点分别获知一个相同的密钥

 

IPsec使用的是DH密钥交换算法进行密钥的生成(<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1/2/5是使用离散对数的原理,7是使用椭圆曲线的原理,都是不可逆的),DH有group1(768bit)/group2(1024bit)/group5(1536bit)/group7(不定长bit),这代表key的长度和强度

ECIES国密算法吗 国密算法有几种 ipsec 国密算法_加密算法

DH算法进行密钥的生成的详细过程:两端先产生两个质数p/q,互相交换后,从中选出一个小的质数p,对其进行DH算法,由1/2/5/7中的一种产生g;同时两端都产生一个各自的私钥;结合g进行运算两端都产生一个各自的公钥;两端在公网上交换公钥;进行运算得到相同的shared secret number;再运行算法得到相同的shared secret key,用最后得到的shared secret key再结合其它加密算法进行数据的加、解密

ECIES国密算法吗 国密算法有几种 ipsec 国密算法_数据_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)

ECIES国密算法吗 国密算法有几种 ipsec 国密算法_ECIES国密算法吗 国密算法有几种_03

是先做HASH后加密,还是先加密后做HASH??

 

数据的起源认证和不可否认性:用数字签名来保证数字证书是我方发起的

数据的起源认证和不可否认性实现过程:本方先将数据做HASH得到一个MAC值,再用我方私钥对此MAC值做加密,把它和数据都发给对方,对方收到后先用我方的公钥(公开发布的)解密MAC值,然后将数据做HASH,得到的MAC值与解密的MAC值进行比较,以确保该数字证书的确是我方起源的。

 

转载于:https://blog.51cto.com/ltyluck/204262