IPSec VPN详解
作者:Danbo 时间:2015-10-19
加密学原理
加密学必须具备以下三个特点:
1.可用性(来源性);
2.保密性;
3.完整性(不被篡改);
加密方式按大类分为:对称和非对称加密
对称算法(symmetric algorithm):就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加密/解密密钥是相同的。最大的问题就是密钥的管理问题(分发、存储、吊销等),容易搜到中间拦截窃听,不支持数字签名和不可否认性。但是速度非常快(提供线速加密),对称加密得到的密文是紧凑的(就是说加密后的文件大小不会变化过大)。
非对称算法: 对称密钥也叫公开密钥加密,它是用两个数学相关的密钥对信息进行编码。在此系统中,其中一个密钥叫公开密钥,可随意发给期望同密钥持有者进行安全通信的人。公开密钥用于对信息加密。第二个密钥是私有密钥,属于密钥持有者,此人要仔细保存私有密钥。密钥持有者用私有密钥对收到的信息进行解密。即:公钥加密私钥解,私钥加密公钥解。虽然安全,但是速度慢,加密后的文件大小增加过多,不利于传输。常见的非对称密钥包括:DH、RSA、ECC。
互联网中加密传输文件的时候没有单纯使用对称或者单纯使用非对称算法的,一般是结合使用,一个较好的解决方案是:系统随机产生一个对称加密的密钥,然后对要传输的明文进行加密,然后再利用接受者的公钥对随机产生的加密密钥进行加密,然后将加密后的明文和加密后的密文放在一起传输给接受者,接受者收到后利用私钥解密解密的密钥,然后利用解密出来的密钥对密文进行解密。(Https基本按照以上方法来做的,IPSec的基本思想是这样,不过有所不同)。
但是上述解决方案有一个问题没有解决:来源性,我们如何保证手里的公钥就是我们指定接受者的公钥呢?这里就用到了数字证书,数字证书是互联网通讯中标识通讯各方身份信息的一串数字,提供了一种在Internet上验证通讯实体身份的方式。它是由权威机构--CA机构(数字授权中心,Certificate Authority)发行的。我们在看数字证书的是由应该尤其注意看一下几个条目:有效日期、吊销列表等。数字签名的过程:对要传输的明文做哈希得到摘要,然后利用自己的私钥对这个哈希进行加密。这个过程就叫做数字签名。
单向散列:可把变长输入串(也叫预映射Pre-image)转化为固定长度输出串(也叫散列值Hash Value)。简单的散列函数就是对预映射的处理,并返回由所有输入字节异或组成的字节。常见的散列方式有:MD5和SHA-1,他们的最大区别在于得到的散列值的长度不同,MD5为128bit、SHA-1为160bit。散列具有雪崩的效应,和冲突避免,不可逆。
至此IPSec传输中用到的加密问题都得到了解决,其大致过程总结如下:
发送者对明文进行发送者对明文进行HASH得到摘要,然后用发送者的私钥对摘要进行加密,再用接收者的公钥加密明文,最后连同第三方机构(CA)颁发的证书一同发送给接收者。接收者收到数据后去查第三方机构看证书是否有效,有效的话用证书中的公钥对摘要进行解密,然后再用自己的私钥解密得到明文,再对明文进行hash得到摘要,比对摘要是否相同,相同则传输完毕。