第一期专题:IPSEC ×××,将分为 四周完成,每周一篇,分别为安全基础篇,重要概念解析篇,配置详解篇,深入理解篇。

 

【阅读说明】

为了方便大家阅读,特作如下说明:

1. 专业术语或者一些概念用红色标 识。

2. 重要或者强调的语句用蓝色标 识。

3. 总结的部分用绿色标 识。

 

【主要内容】

主要介绍 IPSEC 里有可能用到的四个概念:
1. MAC 消息认证码
2. 数字签名
3. 数字证书
4. DH 算法

 

MAC消息认证码】

消息认证码( MAC 就是带密钥的 hash 函数,用来做验 证用。
MAC 消息认证码是将共享密钥和数据一起做 hash ,如图 2-1 所示。

 

 

2-1
验证过程:
1. A B 通信之前已经协 商好一个共享密钥,只有 A B 知道。
2. A 将发出的消息和 密钥一起做 hash 运算,得到 mac 值,附在消息后面。
3. B 收到消息和 mac 值,将消息和他 共享密钥做同样的 hash 运算。

4. 对比两个 hash 值,因为只有消息和密钥都一样, hash 值才可能一样,所以如果 hash 值一样,则说明消息是正确的,而且说明消息是由 A (拥有共享密钥的人)发送的。达到认证和完整性 的目的。 

注意: IPSEC ××× 里用的就是 HMAC

 

完整性和数据源认证的区别
本质区别:完整性检验只对消息做 hash 值,而数据源认证对数据和密钥做 hash
第一,数据源认证必须要求通信,而数据完整性认证不一定需要通信,例如存储数据的完整性认 证。
第二,数据源认证必然要求识别数据源,而数据完整性校验不一定需要,例如无源数据识别中的数据完整性校验。

 

消息认证码总结:
1. MAC 主要功能是用来做消息认证的。

2. 利用 hash 算法来实现的。

3. Hash 算法可以用来做完整性检验,也可以用来做消息认证,取决于所 hash 的内容有没有包含密钥。

【数字签名】

数字签名 ,目的是认证,防止欺骗或抵赖。
数字签名涉及的技术:公钥密码体制和完整性检验。

 

回顾公钥密码体制的最重要特性:
密钥是成对的,而且公钥加密只有私钥能解,同样私钥加密只有公钥能解。
数字签名方案有两个部分:签名算法和 验证算法
2-2 和图 2-3 表示签名算法和验证算法。
签名算法

 

2-2
图示说明:数据用 hash 函数哈希得到定长的输出,然后用私钥签 名 hash 值。
数字签名的核心在于用私钥加密。
这里 hash 函数的作用有两个:
1 )得到的定长输出,位数短,私钥签名的 时候速度快。
2 )保证数据的完整性。

 

验证算法

 

2-3
数字签名总结:
1. 数字签名的技术支持:完整性算法和公钥密码体制。

2. 数字签名的标准: DSS

3. 数字签名是一种身份认证方式。

 

【数字证书】

数字证书 ,数字证书将身份标识与公钥绑定在一起,并由可信任的第三方权威机构用其私钥签名。
数字证书可以防止“中间人***”。
中间人***的过程如图 2-4 所示。
 

 

2-4
图示解说:
1. 带有引号的公钥,(即“公钥”)指的是 hacker 的公钥,并不是 真正的公钥,但是 Alice 认为是 BOb 的公钥。
2. 通过数字顺序说明中间人***的过程。

 

从中间人***过程可以看出,不安全的因素在于不能识别公钥的来源。数字证书就是为解决这个问 题而来的。

 

数字证书的解决办法:
1. 身份标识与公钥绑定在一起,形成证书,这样公钥就和身份相对应。

2. 由可信任的第三方权威机构用其私钥签名来确保证书的有效性和安全性。

 

注意: 数字证书安全的前提是第三方是可信任 的,如果第三方被伪造,数字证书就没有安全性可言。

 

数字证书总结:
1. 验证过程: A 从第三方下载证书,内有 B 的公钥和 B 的身份标识,由第三方证明公钥是由 B 所持有。

2. 数字证书用来防止中间人***。

 

DH算法】

DH 算法,全称: Diffie Hellman 算法,是一种非 对称密钥算法。
目的: 在一个非安全的通道上安全地建立一个共享密钥,用来建立安全的信道。
数学基础:基于求离散对数难

 

 

详细过程:
【以下部分较难,需要有一定的数学基础,可选阅读】

1 、有两个全局公开的参数,一个素数 q 和一个整数 a a q 的一个原根。
2 、假设用户 A B 希望交换一个密 钥,用户 A 选择一个作为私有密钥的随机数 XA<q ,并计算公开密 钥 YA= a X A mod q A XA 的值保密存放而使 YA 能被 B 公开获得。类似地,用户 B 选择一个私有的随机数 XB<q ,并计算公开密钥 YB= a X B mod q B XB 的值保密存放而使 YB 能被 A 公开获得。
3 、用户 A 产生共享秘密密 钥的计算方式是 K = (YB)X A mod q 。同样,用户 B 产生共享秘密密 钥的计算是 K = (YA)X B mod q 。这两个计算产 生相同的结果:
              K = (YB)X A mod q
                = ( a X B mod q)X A mod q
                = ( a X B )X A mod q                   (根据取模运算规则得到)
                = aX BX A mod q

                = ( a X A )X B mod q

                = ( a X A mod q)X B mod q

                = (YA)X B mod q
因此相当于双方已经交换了一个相同的秘密密钥。
4 、因为 XA XB 是保密的,一个敌对方可以利用的参数只有 q a YA YB 。因而敌对方被迫取离散对数来确定密钥。例如,要获取用户 B 的秘密密钥,敌 对方必须先计算
               XB = ind a ,q (YB)
然后再使用用户 B 采用的同样方法计算其秘密密钥 K
Diffie-Hellman 密钥交换算法的安全性依赖于这样一个事 实:虽然计算以一个素数为模的指数相对容易,但计算离散对数却很困难。对于大的素数,计算出离散对数几乎是不可能的。