加密学原理(网络安全)

安全定义

l  私密性:也就是通常说的加密

l  完整性:确保数据没有被篡改

l  源认证:确保是正确合法的数据发送方而不是其他伪装源

l  不可否认性

加密(私密性)

l  密码学算法分为两大类:对称密钥算法和非对称密钥算法

l  对称密钥算法包括:DES,3DES,AES

l  非对称密钥算法包括:RAS(数字证书),DH(IPSec),ECC

对称密钥算法

l  加解密双方使用相同的密钥

l  优点:速度快;紧凑(对数据的改变不大)

l  缺点:密钥明文传输;密钥难以管理和存储;不支持数字签名

非对称密钥算法

l  使用密钥对(keypair公钥和私钥)进行加解密,

l  每一个用户进入一个加密系统,都需要产生一对密钥

l  公钥可公开发放,私钥严格保存,无法由公钥推导出私钥

l  公钥加密的数据需要私钥才能解密,公钥无法解密(加密过程)

l  私钥加密的数据需要公钥才能解密(签名过程)

l  特点:用一个密钥加密的东西只能用另一个密钥来解密

l  非对称密钥算法仅仅用于:

1.       密钥交换(实际应用中用来对对称密钥算法中的密钥进行加密)

2.       数字签名(实际应用中使用私钥对哈希值加密)

l  优点:传输中不必发送密钥,不存在密钥泄露问题;不需要实现建立交互关系以交换密钥;支持数字签名

l  缺点:非常非常慢;密文变长

实际上这两种加密技术的优缺点互补

实际应用中的需求是有这两种加密技术共同作用实现,一个理想的解决方案应有如下特点:

l  解决方案必须是安全的(两种算法共有)

l  加解密的速度要快(对称算法)

l  密文应该是紧凑的(对数据的修改要小)(对称算法)

l  能够适应大量的参与者(非对称算法)

l  能够抵抗窃听***(非对称算法)

l  不必事先建立交互即可进行(非对称算法)

l  支持数字签名和不可否认性(非对称算法)

典型的加密模型

AB之间要进行加密通信

1.       A随机产生一个密钥(对称算法密钥)

2.       A使用这个密钥对数据进行加密

3.       A使用B的公钥对这个密钥进行加密(也就是将对称算法密钥打包)

4.       A将使用对称算法加密的数据和使用非对称算法的加密的对称算法密钥包封装

5.       传输

6.       B接受数据后解封,得到密钥包和加密数据

7.       B使用自己的私钥将密钥包解密得到数据加密密钥

8.       B使用密钥将数据解密得到原始数据

上述过程比较好的解决了使用对称算法加密在传输过程中的密钥泄露问题,同时也避免了直接使用非对称算法加解密数据的速度和数据冗量问题,是现阶段典型的加密模型

散列算法(完整性)

l  散列算法也叫Hash算法,解决数据传输过程中的变形和被恶意篡改问题

l  散列算法通俗来讲就是将一个任意的数据“压缩”成一个最初数据的指纹(fingerprint)或者说摘要

l  散列函数的输出是散列值,也叫哈希值

l  常用算法MD5SHA

l  特点:

1.       长度固定,哈希值是一个固定的长度的值(MD5=128SHA=160)

2.       雪崩效应,对数据的任何微小修改都会导致哈希值的完全改变

3.       单向性,无法由哈希值逆向推导出原始数据(不可逆)

4.       冲突避免,基本不可能出现不同的数据得到相同的哈希值(实际上是可能的)

l  散列算法的重要应用就是数字签名,它实现了数据完整性校验和身份验证功能,其具体实现过程如下

1.       数据经散列算法的出摘要

2.       摘要使用私钥加密并将加密后的摘要随数据发送

3.       接受者将收到的数据进行散列计算得出摘要

4.       接受者使用公钥将随数据发送来的加密摘要解密

5.       将两个摘要值对比,若相同,则表示数据完整并且来源合法

数字证书

数字证书解决的是“公钥持有者的验证”问题

秉持公钥加密,私钥解密原则

 

CHAP过程

1、客户发送用户名给服务器

2、服务器回送一个随机值给客户

3、客户使用密码+随机值使用散列算法得到散列值

4、客户将散列值发送给服务器

5、服务器使用客户密码(服务器存储)+随即值(由服务器发送给客户)哈希后得出散列值

6、服务器使用自己得出的散列值与客户发送来的散列值对比

 

整个过程没有交换密码,避免了中间人***

 

 

签名和签名验证

1、发送方(服务器)将数据哈希

2、发送方(服务器)将哈希值使用自己的私钥加密生成数字签名

3、发送方将数字签名附加在数据后(带数字签名的文件)

4、接收方将收到的带数字签名的文件剥离成文件和数字签名

5、接收方使用发送方的公钥解密数字签名得到数据的哈希值

6、接收方对接收到的数据将进行哈希得到哈希值

7、接收方将自己计算的哈希值与解密后的哈希值比较得到验证

 

过程保证了源认证(公私钥加解密)和数据完整性(哈希)