
IPSec如果需要正常工作,第一步就是使用IKE去进行两个传输方之间,去进行一个密钥的交换和协商的过程。IKE又分到两步。
互联网密钥交换 (IKE) 的历史
早期竞争者:
- Photuris:经认证的,包含 Cookie 和身份隐藏的密钥交换协议
- SKIP:经认证的,用来建立长期密钥的密钥交换协议 | ISAKMP:
- 互联网安全关联和密钥管理协议
- 一个只规定有效负载格式和密钥交换的协议(即空协议)
- 被 IPsec 工作组采用
| Oakley:修改后的 Photuris;可与 ISAKMP 结合使用
| IKE:一种特殊的 Oakley-ISAKMP 组合
首先是简单的互联网密钥交换,IKE的一些历史,早期我们有两种竞争者协议,都没有被采用。一种是基于包含cookie和身份隐藏的密钥交换协议,另外一种是用来进行长期密钥交换的密钥交换协议。SKIP其实被抛弃的更早,因为长期密钥交换不稳定,所以我们需要经常去更换密钥的具体内容。
这其实是第三者ISAKMP这个协议是一个交互协议,它其实并没有进行真正的密钥交换。它是一种安全关联和密钥管理协议,就是一管理方法。它只规定了有效载荷的格式和密钥交换的协议。--就是它本身并没有规定说你使用ISAKMP这个协议去进行交流,必须交流什么内容,它只是规定了两方如果要进行互相交流要根据什么样的格式去进行互相交流。如果将密钥放在这个交流的过程中,它必须放在交互信息的哪一个位置。就是数据包的哪个位置必须用来放密钥协议,这种空载协议被IPSec工作组采用了。
工作组采用了一个混合的方法,它想要使用含有Cookie的和身份隐藏的功能,所以它使用了oakley这种改进后的Photuris协议,将这种含有Cookie跟身份验证的密钥交换协议。再与ISAKMP相互结合,等于这种方法就规定了,你这个有效载荷的内容,是要提供身份隐藏的,同时也必须包含Cookie的交换方法。它这个【1】等于是将Photuris格式放到了ISAKMP这个交换过程当中去,也就产生了IKE。这种由两种协议,可以理解成ISAKMP包住了Oakley,是一个包含的关系。它是ISAKMP这个运载协议或者说运载协议去运载Oakley这个协议的具体内容。
IKE 的工作原理
|
具体的工作原理,它使用应用程序协议能够建立和管理安全策略。不光是共享了密钥的所有内容,其实共享的内容就是SA.
建立安全会话
--将这些安全会话标识伟安全管理,也就是SA这个内容
两个阶段:
1. 设置ISAKMP,就是首先它要让两方进行交互建立一个沟通会话,沟通会话的机制是ISAKMP,具体是怎么建立这个会话?它用了Diffe-Hellman这个密钥交换的方法去交换一个主密钥。在交换了这个主密钥之后,就可以再使用Oakley协议。
2. 交换这个IPSEC SA的具体内容
IPSec 和 IKE 运作方式
具体的运作方法就是:
有两方 都在运行IPSec的两方,不管你使用哪种模式,AH模式还是ESP模式,都会运行一个IKE的库在它的本地。那个IKE的库一定会有Security Policy Database也会有Secunity Association Database也就是安全策略数据库跟安全关联数据库。
IKE通信通道就是之前提到的那两个Oakley加上ISAKMP这个通信通道。这个通信通道又包了Oakley通信协议的方式去进行一个互相交互的过程。从发送方到接收方的出站包数据,它一开始是没有IPSec的,因为一开始它找不到IPSec的具体的SA,一开始IPSec想要向接收方发送一个包,它先会去检查SPD,然后SPD告诉它这样的传输是需要使用AH的。
使用AH模式去传输这个包,在获得了这样的policy之后,它就会去检查它内部的SA。在没有找到对应的的SA的情况下它就会发起一个negotiation也就是一个协商。由IKE隧道来进行这个协商,发送方的IKE开始与接收方进行协商,通过了这两步ISAKMP跟Oakley这两步协议协商之后它们会获得了产生了一个新的SA。
这个SA的内容会被存储到双方的SAD中,这样大家会记得我们讨论的结果是什么,我们要使用什么密钥,使用什么样的加密方式,这个信息当然要存储下来。在完成了这样的存储方式之后,发送方找到了这个SA,它就可以将原本的这个数据包按照这个模式加密。后发送到接受方去,所以这个第四步应该是由发送方来完成的.
第五步,接收到了这个数据包之后,它会阅读自己的SAD去寻找对应的SA,使用SA的内容将这个包进行解密或者是验证。在检查它的SP去决定这个包需要具体发给哪个应用程序,这样大概的过程。
总结:前提是SPD的建立,在有SPD的情况下,去首先查看SA,如果无SA,双方会由IKE隧道来进行协商,由ISAKMP和Oakley两步协商之后产生一个新的SA,SA会存到SAD中,然后就进行通信
安全关联 (SA)
安全关联,它是两个对等方之间的关于IPSec保护的内容和方式的协议,应该用什么类型的保护也就是AH还是ESP或者是你要进行哈希
由三部分确定--安全参数索引(SPI),
( 我们知道它是用来定位SAD里面的SA的)
--IP目标地址
最重要的,你查SPD的时候,你如何找到对应的SPD,往往是经过IP地址来决定的。你给谁发送消息决定了你要使用什么样的policy,什么样的策略去对这个包进行处理。
-安全协议
就是你要用AH模式还是ESP模式,由这三部分确定
安全关联 (SA)(续)
|
安全关联存储在SAD中,
它是非对称的,什么意思呢,就是A向B传输数据,它会讨论一次使用SA1,当B向A返回一个数据的时候,或者发送一个新数据的时候,它会重新协商或者生成另外一个SA,这两个SA之间有可能不一样,因是IKE过程是由A向B发起的,而这个过程是由B向A发起的,它们的IKE的过程会完全不同,因为IKE本身的设定是由A和B自己决定的,优先级也会不一样,比如说IKE,A本身有可能它是一个比较轻量化的设备,它会跟B说想要使用一个比较简单的加密方法,不用那么强的加密方法,B作为一个更强力的计算设备,是能够接受这个比较简单的加密方法的。当B向A发起这个请求的时候,B就会更注重安全,它有更强大的计算性能,它就会从最高级的安全算法去向最低级的算法,一次次试。
一开始讨论的时候B向A提供的安全算法可能A处理不了,它根本就没有在它的SPD里面,没有这样的安全策略。
在Alice跟B之间使用AH或者ESP建立一个安全链接,需要多少个SA?因为有来有回,一个安全连接当然是有互相发送信息的,所以答案就应该是2
就是SA1跟SA2这两个SA
如何使用 SPD 和 SAD
如何使用SPD根SAD,SPD首先当一个包需要发送的时候,SPD去检查它首先会检查这个数据包,它之前应该使用什么,它之前应该使用什么安全策略,AH模式然后用HMAC,应该使用这样的模式去进行加密。然后它就会发给SAD,SAD会基于SPI去寻找。①比如说这是A,这是B,第一次由A发给B的时候,这个里面就是空的还没有SA,那它得到的结果是它就会由这台电脑上的IKE去和这台电脑上的IKE进行协商,协商结果使SA1.这个包就会使用SA1,会生成一个对应的SPI,它会有个ID就是对应的SPI,这个SPI就会存到这个SPD中去,用来对应这个具体的SA1。下一次有包来它查看到这个SPD对应的SPI是这个,它就自然而然地找到这个对应的SA。在找到这个SA之后,它就会使用SA去将这个包进行加密发送给B。
SPD 和 SAD 示例
SPD里面的具体内容是SPD假设这个传输模式就是由A到A直接进行传输的,那它们都是从A到A进行传输的,SPD会说对这种数据传输就是从A到B的数据传输,使用任何协议,任何接口要求使用AH[HMAC-MD5]这个算法。如果第一次传输还没有negotiate(协商)过,那A和B之间会使用IKE去进行一个协商,来生成这个SA,生成的SA从A到B这种传输,我们需要使用AH,对应的SA存储在这个表的12行,SA的具体内容是我们的HMAC-MD5这个方法。HMAC-MD5这个方法使用的密钥。它们都存在这个A的SAD里面。相似的如果我们是c跟D之间的一个隧道模式,它虽然是由C到D的隧道模式,但是它会修改这个A跟B它的IP地址。去达到这个隧道模式,隧穿的效果,所以它从A到达C,C转发了这个包,它是从A的sub地址转发到B的sub地址,也就是C能够知道的这个b的SUb的地址。它使用的协议和端口也是任意的,告诉我们如果C收到一个从A到B的包,不管它使用什么协议,使用了什么端口,我们都需要使用ESP这个传输模式,使用3DES这个加密方法,同时我们还要有一个隧道目标,就是我们的下一跳是谁。
隧道目标就是告诉我们。如果c想要将一个从A到B的包转发出去,需要将这个包发送到D,然后这个C,它在SA里面又存储了什么内容呢?A的sub地址和B的sub地址它的对应的协议是ESP的,它的SA具体记录就是,我们要使用3des这个协议去进行加密。加密的密钥是什么当A向B发送一个包时,C会首先介绍到这个包,它会先查SPD,SPD告诉它我们需要ESP[3DES]去加密这个包。将这个加密好的包再发送给D,它就会去检查这个对应的SPI 14,找到这条具体的SA。它有了这个加密的方法和加密密钥,它就会使用这个密钥去将这个包进行加密。加密完之后将会这个包发送给D.
安全策略是通用的,而具体的安全关联是更具体的,可以想象一下这个SPD里面的协议不一定是任意的,可能TCP有一个专门的协议,UDP有另外一个协议,甚至于端口80端口有一个协议,443端口有一个协议,这些通用的协议,到了具体的SAD中,它就会有具体的安全关联.SPD是人定的,人在搭建IPSEC的时候,规定了SPD里面的所有内容,从什么协议什么端口发送信息,需要使用IPSEC的什么模式,进行什么样的转发,这些是人能定的。SAD里面的内容是谁定的,IKE定的,IKE去读了SPD里面的具体策略。基于这个策略去获得了一些密钥和具体内容。决定将这个结果SA存在SAD里面。这个过程是没有任何人参与的。完全是机器自己决定的。这就是SPD跟SAD最大的区别。
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/11391.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~