第一期专题: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=aXA mod q。A对XA的值保密存放而使YA能被B公开获得。类似地,用户B选择一个私有的随机数XB<q,并计算公开密钥YB=aXB mod q。B对XB的值保密存放而使YB能被A公开获得。
3、用户A产生共享秘密密
钥的计算方式是K = (YB)XA
mod q。同样,用户B产生共享秘密密
钥的计算是K = (YA)XB
mod q。这两个计算产
生相同的结果:
K = (YB)XA
mod q
= (aXB mod q)XA
mod q
= (aXB)XA
mod q (根据取模运算规则得到)
= aXBXA mod q
= (aXA)XB
mod q
= (aXA mod q)XB
mod q
= (YA)XB
mod q
因此相当于双方已经交换了一个相同的秘密密钥。
4、因为XA和XB是保密的,一个敌对方可以利用的参数只有q、a、YA和YB。因而敌对方被迫取离散对数来确定密钥。例如,要获取用户B的秘密密钥,敌
对方必须先计算
XB = inda ,q(YB)
然后再使用用户B采用的同样方法计算其秘密密钥K。
Diffie-Hellman密钥交换算法的安全性依赖于这样一个事
实:虽然计算以一个素数为模的指数相对容易,但计算离散对数却很困难。对于大的素数,计算出离散对数几乎是不可能的。
转载于:https://blog.51cto.com/yuxin/317142