(5)系统集成设计
系统集成设计的关键技术,主要是IP核的无缝连接系统设计和相关的可测试技术,包括紧密耦合、传输特性 、时钟综合和测试接口等。
(6)低功耗管理设计
低功耗设计是对有相关要求的器件进行的一种设计技术,设计中主要通过一些系统状态、桥接控制等来实现。
3 基于SoC的IPSec实现技术
3.1 基本结构
以SoC实现IPSec的多协议模块包括:①IPSec协议输入、输出引擎,是通过协议解析,决定数据流程的处理;②安全关联、密钥交换、密码算法等,其中,安全关联模块为其直接提供所需参数,密钥交换模块用于IKE自动管理的SAD,算法模块是实现IP数据加解密和认证的基本模块;③接口模块,是 IPSec与IPV4/IPv6协议的接口界面。SoC中的CPU核,实施系统管理、策略管理和密钥管理等功能。
基于SoC的IPSec协议结构如图3所示。

IPSec的主体部分是多协议处理的硬件模块。在SoC设计过程中,应通过优化设计,以满足IPSec的功能和性能要求;采用片上操作系统,以满足设计的灵活性、可继承性和可复用性等IP特性;结合CPU的结构、性能和指令系统,进行软硬件系统设计,以达到各个模块之间的通信 >、传输和控制等一体化设计。
基于SoC的IPSec芯片结构如图4所示。

图4中IPSec协议的IKE密钥交换、策略管理、SAD手工注入由实时操作系统来处理,而IPSec输入输出引擎的协议解析、安全策略库(SAD、 SPD)、密钥快速查找(CAM)、加解密算法、GMAC通信接口等由硬件模块构造。通信接口实现以太网链路帧的接收、发送、校验等功能。芯片中还应设计看门狗,用于防止系统死机;另外,要设计跟踪模块,用于系统软硬件调试。
综上所述,在实现IPSec协议的SoC芯片中,主要协议栈处理都由硬件模块实现,CPu负责管理调度和密钥配置。
3.2 功能实现
(1)lPSec协议的输出与输入引擎处理
对于输出数据包,IPSec协议输出引擎先调用策略管理模块,查询SPD,确定数据包应使用的安全策略。根据策略管理模块的指示,协议引擎对该数据包作出如下3种可能的处理:
①如存在有效的SA,则取出相应的参数,将数据包封装(包括加密、验证,添加IPSec头和IP头等),然后发送。
②如尚未建立SA,策略管理模块启动或触发IKE协商。协商成功后,按①中的步骤处理;不成功则应将数据包丢弃,并记录出错信息。
③如存在SA但无效,策略管理模块将此信息向IKE通告,请求协商新的SA,协商成功后按①中的步骤处理,不成功则应将数据包丢弃。
对于输入数据包,IPSec协议引擎先调用策略管理模块,查询SAD。如得到有效的SA,则对数据包进行解封(还原),再查询SPD,验证为该数据包提供的安全保护是否与策略配置的相符。如相符,则将还原后的数据包交给TCP层或转发。如不相符,或要求应用IPSec但未建立SA,或SA无效,则将数据包丢弃,并记录出错信息。
(2)SPDB和SADB实现技术
IPSec协议处理数据报文的过程中需要通过不断地查询SADB和SPDB来验证数据的合法性和取出密钥进行数据报的加解密处理,因此,对IPSec处理性能而言,如何选择保存SADB和SPDB的数据结构至关重要。另外由于SA和SP的数量都是动态地变化的,必须选择合适的存储结构。如用软件方法设计一个合理的数据结构进行存储,在系统的SADB和SPDB规模比较小时SA和SP的查询速度还可以接受,但随着SADB和sPDB规模的扩大,系统的查询能力必然下降。因为在查询中最好的情况是一次命中,而大多数情况下都不会是一次命中,查询的效率必然下降,从而影响IPSec协议的处理。要从根本上解决查询效率的问题必须分析SADB和SPDB的设计要求,才能找到解决方法。
SPDB和SADB的设计基于每一个SA对应一条SPD。SA和SPD在各数据库中具有相同的地址。利用指针互指,只要在其中一个数据库查找到匹配的字段,就能同时得到两个数据库的地址指针。因此,SPDB和SADB的设计应该满足下列要求:
①对于该数据结构能够有效地进行查询,得到确切的或者基于选择符的匹配结果,包括源地址、目的地址、协议和SPI。
②能够为选择符保存通配、范围或确切的值。
③隐藏指向SADB和SPDB的指针,保证两个结构间的同步。
④对SA/SP条目进行排序保存,以便匹配查找一直能快速完成。