在之前的章节中,我们介绍了IPv6孤岛之间通过IPv4网络进行信息交流的方法之一——隧道技术,在这一章将更详细的说明如何建立安全的隧道和虚拟专用网络。
隧道(Tunneling)技术是一种在两个网络节点之间建立逻辑连接,传输数据的方法。
在发送端的出口路由器上,原始数据包会被封装在一个新的外包头(Outer Header)内,然后根据外包头中的信息将隧道数据包路由到目的地,最后在接收端路由器处解封装外包头。我们把原始数据包(Original Packet)的包头称为内包头(Inner Header),添加了外包头后的整个数据包称为隧道数据包(Tunneled Packet)。
根据前面的描述,我们可以知道发送端的终端设备只有原始数据包,而不存在外包头,故也不知道其使用了隧道技术,只有路由器知道使用了隧道通讯。
隧道技术可以通过各种协议来实现,例如不安全的点对点隧道协议(如GRE、L2TP)和安全隧道协议(如IPsec)。在这一章中,主要介绍安全隧道协议IPsec。
IPsec(Internet Protocol Security)是一组用于保护IP通信的协议套件。它提供了对数据进行加密、身份验证和完整性验证的功能,以确保在IP网络上传输的数据的安全性。以下是IPsec协议的主要特点和功能:
IPsec有两个主要的子协议:AH(Authentication Header,身份验证头)和ESP(Encapsulating Security Payload,封装安全载荷)。
AH通过使用哈希函数验证数据包的完整性来保护IP数据包免受干扰,它可以有效防止数据被修改。
而ESP通过使用对称加密算法加密整个数据包来保护数据的机密性,它可以有效防止数据被读。
IPsec支持两种主要的操作模式:传输模式(Transport Mode)和隧道模式(Tunnel Mode)。传输模式适用于两个端系统之间的安全通信,而隧道模式通常用于网关到网关之间或者主机到网关之间的安全通信,在这一章中只会涉及到其隧道模式的内容。
当使用AH协议时,通常会使用MD5(Message Digest Algorithm 5)或SHA(Secure Hash Algorithm)这样的哈希函数来实现消息认证码(MAC)功能。
在传输模式下,AH报头添加在IP报头之后。在隧道模式中,AH报头添加在外包头和内包头之间。
当使用ESP协议时,通常会使用加密算法来对数据进行加密,以保护数据的机密性。下面是常见的加密算法:
ESP的报头包含有几个部分,和AH类似的,在传输模式下,AH报头添加在IP报头之后,而尾部和验证添加在最后。在隧道模式中,AH报头添加在外包头和内包头之间,尾部和验证添加在最后。
在实际情况中,可能还有AH和ESP混用的情况,一般来说,AH报头会在ESP前面。
私有网络(Private Network)是指一种基于计算机和通信设备的局域网(LAN)或广域网(WAN),其访问权限受到限制,通常仅允许特定用户或组织内部的设备进行通信和数据交换。
我们在之前的学习中知道,建立这样的网络连接需要物理/虚拟的链路。铺设物理链路的成本非常的高,更多情况下我们会选择运营商已经有的链路建立虚拟链路连接。我们将使用公共网络建立虚拟链路而形成的网络技术称为虚拟专用网络(Virtual private network, VPN)
虚拟专用网络(Virtual Private Network,VPN)是一种通过公共网络(通常是互联网)建立私密、安全连接的技术。它通过加密和隧道协议等技术手段,为用户在公共网络上创建一条加密通道,使得用户能够安全地访问私人网络资源,就像身处于私人网络内部一样。
虚拟专用网络的特点包括:
虚拟专用网络主要有两种类型:站点对站点(Site-to-Site)VPN和远程访问(Remote-Access)VPN.
在Site-to-Site VPN中,网络中的主机不知道使用了VPN技术,因为它是建立在两个组织网络的路由器上的。而在Remote-Access VPN中,主机知道自己使用了VPN连接到私有网络中。
因此,Site-to-Site VPN中主机只存在inner header,outer header是在出口路由器上添加的。而Remote-Access VPN是在主机上连接VPN技术,在建立隧道连接时只存在outer header (主机的公网地址 -> 组织路由器地址),当隧道建立后,组织路由器会分配一个内部地址给主机,此时才存在inner header。相当于将该主机接到组织内部之中,并给其分配了一个内网地址后才能传输数据。
既然用到了隧道技术,我们主要学习使用了IPsec保护的VPN。IPsec VPN是一种利用IPsec协议来实现安全的虚拟私有网络连接的技术。它提供了对IP数据包进行加密、身份验证和数据完整性验证的能力,用于保护网络通信的安全性。
在隧道建立时,双方将建立一个安全关联(Security Associations,SA),用于描述两个通信节点之间的安全参数,包括加密算法、认证算法、密钥等。
IPsec VPN操作大致可以分成5个部分:
为了防止攻击者的攻击,在上面的过程中使用了两层加密。IKE Phase 1用于加密Phase 2的隧道信息。
在第一阶段中,常使用之前提过的加密算法(DES、3DES或AES),并使用哈希函数(MD5或SHA)用于保证数据完整性。在秘钥交换中,常使用Diffie Hellman组用于保证秘钥的安全。
Diffie-Hellman密钥交换是一种公开密钥密码学中的协议,用于安全地在两个通信方之间交换密钥,而不需要事先共享密钥。Diffie-Hellman交换的核心思想是使通信方能够协商共享的密钥,而不将密钥直接传输。它基于一个数学问题:离散对数问题。
下面是Diffie-Hellman密钥交换的基本步骤:
p
和g
。p
和g
的值公开传输给对方。x1
和x2
。这些私密参数只有通信方自己知道,并且不会被传输到对方。p
和g
计算出一个本地的公钥y1
和y2
。如图展示这个过程中的计算:
但这个加密方式可以通过中间人攻击(Man-in-the-middle attack)破解,故需要二阶段的加密。二阶段的加密比这个外层加密复杂得多。它可能使用基于TCP的连接,同时加入AH或ESP报头,并使用加密、完整性验证等方法提高数据的安全性。