Board logo

标题: 基于uClinux的嵌入式无线IPSec VPN网关 02 [打印本页]

作者: samwalton    时间: 2013-12-28 21:37     标题: 基于uClinux的嵌入式无线IPSec VPN网关 02

随着网络和无线通信技术的发展以及无线数据传输能力的提高,无线数据传输的应用领域不断扩展。如图1所示,用户的移动设备可以通过CDMA/GPRS公众无线网络直接访问Internet,进而访问自己的内部网络,省去了自己组网的费用。由于用户都希望保障其数据的安全,所以采用VPN技术成为其必然选择。

  1 IPSec简介

   IPSec的目标是为IP提供互操作高质量的基于密码,学的一整套安全服务,包括访问控制、无连接完整性、数据源验证、抗重放攻击、保密性和有限的流量保密。这些服务都在IP层提供,可以为IP和上层协议提供保护。
  IPSec的体系结构在RFC2401中定义。它通过两个传输安全协议——头部认证(AH)和封装安全负载(ESP)以及密钥管理的过程和相关协议来实现其目标。AH提供无连接完整性、数据源验证和可选的抗重发攻击服务;ESP可以提供保密性、有限的流量保密、无连接一致性、数据源验证和抗重发攻击。AH和ESP都是基于密钥分配和流量管理的访问控制的基础。AH和ESP都有两种模式:传输模式和隧道模式。传输模式用于保护主机问通信;而隧道模式将IP封装到IP隧道里,主要用于保护网关间通信。
  IPSec中用户通过向IPSec提供自己的安全策略(SP)来控制IPSec的使用,包括对哪些传输数据进行保护,需要使用哪些安全服务,使用何种加密算法。IPSec中安全关联(SA)是一个基本概念,它是一个简单“连接”,使用AH或者ESP为其负载提供安全服务。如果AH和ESP被同时用于提供安全服务,则需要两个和更多个SA。同时由于SA是单向的,因此如果是双向保密通信,则每个方向至少需要一个SA。IPSec中有两个与安全相关的数据库:安全策略数据库(SPD)和安全关联数据库(SAD)。前者定义了如何处理所有流入和流出IP数据处理的策略,后者包含所有(有效)SA有关的参数。
 AH/ESP中所使用的密钥的分配和SA管理都依赖于一组独立机制,包括人工和自动两种方式。IPSec定义了IKE协议用于自动方式下的密钥分配和SA管理。IKE中密钥分配和SA管理的过程分成两个阶段:第一阶段是密钥协商双方建立一个相互信任的、保密的安全通道,用于保护第二阶段密钥协商过程;第二阶段完成实际用于IPSec SA的协商。
  IPSec数据处理模型如图2所示。对流入/流出的数据首先确定其安全策略,如果需要安全服务,则要找到其相应的安全关联,根据安全关联提供的参数进行AH/ESP处理后完成流入/流出。

  2 系统功能

  本系统的主要功能是支持CDMA和GPRS两种方式接入Internet,既可作为VPN服务器,又可作为VPN客户端。IPSec的密钥交换支持共享密钥方式和基于X.509的公开密钥方式。


  3 系统的硬件实现

  系统硬件构成如图3所示。无线接口采用的是Wavecom CDMA/GPRS模块,基板采用的是FrccscaleColdfire5272。

4 系统的软件实现

   Linux的2.6内核中加入了对IPSec的支持。本系统采用的是基于linux 2.6内核的IPSec-tools,整个系统中IPSec的相关软件结构如图4所示。Linux 2.6内核在其网络协议栈中提供对AH和ESP支持,同时包括SPD的实现和SAD的实现。IPSec-tools包括setkey和racoon两个应用程序。Setkey实现IPSec中SPD管理和SAD的人工管理,它需要使用IAnux内核支持IPSec用户管理接口。Racoon是IPSec-tools中IKE的实现,它需要内核支I持PF_KEYv2的接口;同时为了支持基于X.509证书的公开密钥身份验证方式,racoon需要使用openssl提供的libcryto加密库。AH/ESP所使用的加密算法需要内核加密算法库支持。
  4.1 Linux内核

   在WWW.kernel.org下载并安装Linux2.6.12内核,在www.uclinux.org下载其uClinux补丁。打上补丁后,通过make menuconfig进入Linux的内核配置界面,选定如下所有配置:



  4.2 Openssl(1ibcrypto.a)

  安装openssl 0.9.7e源代码后,进入安装目录,修改其Configure文件使用m68k-elf-gcc作为编译器。运行Configure linux-m68k完成配置后,编译生成libcrypto.a。
  4.3 IPSec-tools

  依照uClinux中如何加入新的用户程序的文档,在uClinux的/user目录中加入IPSec-tools 0.5.2软件包。进入IPSec-tools的安装目录,并在该目录下加入一个如下Makefile(在这个Makefile中需要指定内核头文件和openssl源代码的安装目录):
all:build $(MAKE)-C build

编译生成setkey和racoon两个应用程序。

  5 IPSec-tools的使用

  本系统的IPSec同时支持传输模式和隧道模式。作为VPN网关时只使用隧道模式。图5足两个IPSec网关间通信模型。192.168.1.100和192.168.2.100分别是两个网关外部接口的IP地址

  




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0