太阳城集团

  • / 98
  • 下载费用:30 金币  

支持高性能安全协议的装置.pdf

摘要
申请专利号:

太阳城集团CN200910161368.5

申请日:

2009.08.10

公开号:

CN101997834B

公开日:

2015.01.07

当前法律状态:

授权

有效性:

有权

法律详情: 专利权的转移号牌文件类型代码:1602号牌文件序号:101737087327IPC(主分类):H04L 29/06专利号:ZL2009101613685登记生效日:20160720变更事项:专利权人变更前权利人:北京天宏绎网络技术有限公司变更后权利人:北京多思技术服务有限公司变更后权利人:100195 北京市海淀区北坞村路甲25号北京静芯园G座109室变更事项:地址变更前权利人:100195 北京市海淀区北坞村路甲25号静芯园G座楼106室|||专利权的转移IPC(主分类):H04L 29/06登记生效日:20160713变更事项:专利权人变更前权利人:北京多思安全芯片科技有限公司变更后权利人:北京天宏绎网络技术有限公司变更事项:地址变更前权利人:100195 北京市海淀区北坞村路甲25号静芯园G座楼108室变更后权利人:100195 北京市海淀区北坞村路甲25号静芯园G座楼106室|||文件的太阳城集团送达IPC(主分类):H04L 29/06收件人:周燕文件名称:手续合格通知书|||专利权的转移号牌文件类型代码:1602号牌文件序号:101729992946IPC(主分类):H04L 29/06专利号:ZL2009101613685登记生效日:20160308变更事项:专利权人变更前权利人:北京南思达科技发展有限公司变更后权利人:北京多思安全芯片科技有限公司变更事项:地址变更前权利人:100091 北京市海淀区红山口甲3号工程维修大队新建综合楼189号一层变更后权利人:100019 北京市海淀区北坞村路甲25号静芯园G座楼108室|||专利权的转移IPC(主分类):H04L 29/06变更事项:专利权人变更前权利人:北京多思科技发展有限公司变更后权利人:北京南思达科技发展有限公司变更事项:地址变更前权利人:100080 北京市海淀区中关村南大街甲56号方圆大厦B801变更后权利人:100091 北京市海淀区红山口甲3号工程维修大队新建综合楼189号一层登记生效日:20141224|||授权|||实质审查的生效号牌文件类型代码:1604号牌文件序号:101071488444IPC(主分类):H04L 29/06专利申请号:2009101613685申请日:20090810|||公开
IPC分类号: H04L29/06 主分类号: H04L29/06
申请人: 北京多思科技发展有限公司
发明人: 刘大力; 曹春春
地址: 100080 北京市海淀区中关村南大街甲56号方圆大厦B801
优先权:
专利代理机构: 中国国际贸易促进委员会专利商标事务所 11038 代理人: 刘倜
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN200910161368.5

授权太阳城集团号:

太阳城集团|||||||||||||||101997834B||||||

法律状态太阳城集团日:

太阳城集团2016.08.10|||2016.08.03|||2016.04.06|||2016.03.30|||2015.01.21|||2015.01.07|||2011.05.18|||2011.03.30

法律状态类型:

专利申请权、专利权的转移|||专利申请权、专利权的转移|||文件的太阳城集团送达|||专利申请权、专利权的转移|||专利申请权、专利权的转移|||授权|||实质审查的生效|||公开

摘要

本发明公开一种安全处理器,特征在于,该安全处理器支持多种安全协议,该安全处理器包括:接口模块,用于从安全处理器外部获取包处理控制太阳城集团和待处理的包;以及包处理模块,用于根据包处理控制太阳城集团依照安全协议对包进行处理。

权利要求书

1: 一种安全处理器, 特征在于, 该安全处理器至少部分是可重组的, 该安全处理器支持 多种安全协议, 该安全处理器包括 : 接口模块, 用于从安全处理器外部获取包处理控制太阳城集团和待处理的包 ; 以及 包处理模块, 用于根据包处理控制太阳城集团依照安全协议对包进行处理。
2: 如权利要求 1 所述的安全处理器, 特征在于, 所述安全处理器还包括 : 公钥模块, 其与接口模块相连, 用于提供大数算术运算和模幂乘运算。
3: 如权利要求 1 所述的安全处理器, 特征在于, 该安全处理器支持 IPsec 协议和 MPPE 协议, 其中 所述包处理控制太阳城集团包括第一包处理输入指令和安全关联 ; 所述包处理模块对包处理输入指令译码, 根据译码结果从接口获取 SA 和待处理的包, 并根据 SA 中的设置对包进行 IPsec 协议和 / 或 MPPE 协议处理。
4: 一种安全处理器, 特征在于, 该安全处理器至少部分是可重组的, 该安全处理器支持 IPsec 协议和 MPPE 协议, 该安全处理器包括 : 接口模块, 包括用于与主机通信的第一接口、 用于与外部存储器或内存通信的第二接 口、 以及用于与网络设备通信的第三接口 ; 数据通路, 与第一接口和第二接口连接, 所述数据通路包括多个数据通道 ; 包处理模块, 其经由数据通路获取第一包处理输入指令和安全关联, 并与第三接口通 信以获取待处理的包, 所述包处理模块根据安全关联对包进行 IPsec 协议和 / 或 MPPE 协议 处理 ; 公钥模块, 用于提供大数算术运算和模幂乘运算, 所述公钥模块通过数据通路与所述 第一接口和第二接口通信 ; 以及 系统配置模块, 用于提供对安全处理器的操作控制。
5: 如权利要求 3 或 4 所述的安全处理器, 特征在于 : 所述要处理的包还包括预先附加到包内的第二包处理输入指令。
6: 如权利要求 1-4 中任一所述的安全处理器, 特征在于, 所述包处理模块包括 : 指令模块, 用于读取包处理输入指令, 将指令分配给包引擎模块, 并产生包处理输出指 令; 以及 一个或多个包引擎模块, 用于对所分配的包处理输入指令进行译码, 并根据译码解释 读取数据和 SA, 进行包头和包尾的处理, 并根据 SA 的指示完成算法处理, 输出处理后的包。
7: 如权利要求 6 所述的安全处理器, 特征在于, 所述指令模块还包括仲裁模块, 用于对包处理输入指令进行仲裁, 将指令分配给包引 擎模块, 并产生包处理输出指令, 其中所述指令模块能够通过轮询或中断的方式获取包处 理输入指令。
8: 如权利要求 6 所述的安全处理器, 特征在于, 所述包引擎模块还包括 : 指令和 SA 译码模块, 用于对所分配的包处理输入指令进行译码, 并根据译码解释读取 数据和 SA ; 以及 处理模块, 根据 SA 的指示进行算法处理, 以及进行协议处理。
9: 如权利要求 8 所述的安全处理器, 特征在于, 所述包引擎模块的处理模块还包括包数据输入输出缓冲器。 2
10: 如权利要求 6 所述的安全处理器, 特征在于, 所述包引擎模块还包括用于随机数计算的随机数模块。
11: 如权利要求 2 和 4 中任一所述的安全处理器, 特征在于, 所述公钥模块包括 : 公钥算法内核, 用于执行大数运算 ; 模幂运算器, 用于执行模幂乘运算 ; 以及 公钥算法模块控制器, 用于接收指令, 控制公钥模块的操作。
12: 如权利要求 11 所述的安全处理器, 特征在于, 所述公钥模块还包括存储器, 用于存储公钥计算的数据, 也适于存储安全关联 SA。
13: 如权利要求 11 所述的安全处理器, 特征在于, 所述模幂运算器支持基本模幂乘运算操作或使用中国剩余定理的 RSA-CRT 操作。
14: 如权利要求 11 所述的安全处理器, 特征在于, 所述模幂运算器由多套独立资源组成, 各资源实现的规格可以重组, 以实现更大规格 的数据操作。
15: 如权利要求 5 所述的安全处理器, 特征在于, 所述系统配置模块包括下列中的一个 或多个 : 中断模块, 用于管理用于安全处理器操作所需的中断 ; PLL 模块和时钟分频模块, 用于提供供安全处理器各模块使用的时钟 ; 随机数模块, 用于提供随机数 ; 和 复位模块, 用于控制各模块的复位和激活。
16: 如权利要求 5 所述的安全处理器, 特征在于, 所述数据通路是 DMA 数据通路。
17: 如权利要求 16 所述的安全处理器, 特征在于, 所述 DMA 数据通路支持主模式传输和目标模式传输, 其中, 在所述主模式下, DMA 数据通路连接第一接口和包处理模块, 在目标模式下, DAM 数据 通路将第一接口与系统配置模块和 / 或安全处理器内的存储器。
18: 如权利要求 1-4 中任一所述的安全处理器, 特征在于, 所述安全处理器基于宏指令体系结构。
19: 一种安全处理器, 特征在于, 该安全处理器至少部分是可重组的, 该安全处理器支 持多种安全协议, 该安全处理器包括 : 接口模块, 包括用于与主机通信的第一接口、 用于与外部存储器或内存通信的第二接 口、 以及用于与网络设备通信的第三接口 ; 数据通路, 与第一接口和第二接口连接, 所述数据通路包括多个数据通道 ; 包处理模块, 其是可重组的, 与第三接口通信以获取待处理的包, 所述包处理模块能够 根据安全协议进行操作 ; 协议译码器, 通过控制所述包处理模块来实现协议 ; 以及 系统配置模块, 用于提供对安全处理器的操作控制, 所述系统配置模块能够执行系统 初始化、 注入以及错误逻辑控制。
20: 如权利要求 19 所述的安全处理器, 特征在于, 所述协议译码器对协议指令进行译码, 并依据协议指令的译码结果, 接收指令携带的 3 数据, 调用指令功能所要求的协议程序。
21: 如权利要求 19 所述的安全处理器, 特征在于, 所述包处理模块包括 : 指令模块, 用于读取输入指令, 将指令分配给包引擎模块, 并产生输出指令 ; 以及 一个或多个包引擎模块, 来实现输入指令功能以及对包的处理, 并输出处理后的包。
22: 如权利要求 21 所述的安全处理器, 特征在于, 所述指令模块还包括仲裁模块, 用于对输入指令进行仲裁, 将指令分配给包引擎模块, 并产生输出指令, 其中所述指令模块能够通过轮询或中断的方式获取输入指令。
23: 如权利要求 21 所述的安全处理器, 特征在于, 所述包引擎模块还包括 : 指令译码模块、 配置 IP、 可重组 IP、 大数运算和模幂运算模块、 随机数模块, 其中所述配置 IP 和可重组 IP 用于实现多种密码算法, 大数运算和模幂运算模块用于 提供大数运算, 以及基本模幂乘运算操作和 / 或使用中国剩余定理的 RSA-CRT 操作, 而随机 数模块用于提供随机数, 所述指令译码模块对指令进行译码并通过译码结果来控制配置 IP、 可重组 IP、 大数运 算和模幂运算模块、 随机数模块, 来实现指令功能以及对包的处理。
24: 如权利要求 21 所述的安全处理器, 特征在于, 所述安全处理器还包括公钥模块, 该 公钥模块包括 : 公钥算法内核, 用于执行大数运算 ; 模幂运算器, 用于执行模幂乘运算和 / 或使用中国剩余定理的 RSA-CRT 操作 ; 所述包引擎模块还包括 : 指令译码模块、 配置 IP、 可重组 IP、 随机数模块, 其中所述配置 IP 和可重组 IP 用于实现多种密码算法, 随机数模块用于提供随机数, 所述指令译码模块对指令进行译码并通过译码结果来控制配置 IP、 可重组 IP、 随机数 模块, 并协同公钥算法模块来实现指令功能以及对包的处理。
25: 如权利要求 21 所述的安全处理器, 特征在于, 所述安全处理器还包括用于提供随机数的随机数模块以及公钥模块, 该公钥模块包 括: 公钥算法内核, 用于执行大数运算 ; 模幂运算器, 用于执行模幂乘运算和 / 或使用中国 剩余定理的 RSA-CRT 操作 ; 所述包引擎模块还包括 : 指令译码模块、 配置 IP、 可重组 IP, 其中所述配置 IP 和可重组 IP 用于实现多种密码算法, 所述指令译码模块对指令进行译码并通过译码结果来控制配置 IP、 可重组 IP, 并协同 随机数和 / 或模块公钥算法模块来实现指令功能以及对包的处理。
26: 如权利要求 23-25 中任一所述的安全处理器, 特征在于, 大数运算和模幂运算模块或所述模幂运算器包括多套独立资源组成, 各资源实现的规 格能够重组, 以实现更大规格的数据操作。
27: 如权利要求 19 中任一所述的安全处理器, 特征在于, 所述系统配置模块还包括存 储模块, 用于存储处理器操作所需的太阳城集团和数据, 所述存储模块包括太阳城集团区和数据区, 所述太阳城集团区用于存储安全太阳城集团, 而所述数据区用 于存储公钥参数、 设备密钥、 授权设备鉴权证书、 鉴权密钥、 算法程序、 协议程序、 授权用户 公钥证书。 4
28: 如权利要求 19 或 20 所述的安全处理器, 特征在于, 所述数据通路是 DMA 数据通路。
29: 如权利要求 30 所述的安全处理器, 特征在于, 所述 DMA 数据通路支持主模式传输和目标模式传输, 其中, 在所述主模式下, DMA 数据通路连接第一接口和包处理模块, 在目标模式下, DAM 数据 通路将第一接口与系统配置模块和 / 或安全处理器内的存储器。
30: 如权利要求 19 所述的处理器, 其特征在于, 所述协议译码器适于执行下列中的一 项或多项 : 指令状态测试, 包括输入输出状态测试 ; 指令注入测试 ; 指令译码, 包括指令调 度、 错误处理、 指令 I/O 操作 ; 以及通信状态测试, 包括密级、 授权体制测试。

说明书


支持高性能安全协议的装置

    【技术领域】
     本发明涉及安全处理器, 具体的, 涉及支持高性能安全协议的安全处理器。背景技术 随着太阳城集团技术的飞速发展, 在处理器领域中, 可重组设计得到了原来越多的关注。
     典型的, 可重组逻辑由三部分组成 : 重组元素、 可控节点、 以及它们之间的连接网 络。重组元素用于实现各种算法的基本操作成分, 是可重组逻辑用于构建各种算法的基本 元素。重组元素之间的连接网络用于为各种算法建立所需的数据传输通路。显然, 重组元 素及其连接网络必须在可控节点的控制下才能实现不同的算法。
     可重组逻辑的电路结构和功能的改变是通过对可控节点赋以不同的编码值来实 现的。算法的每一个操作步骤都是通过对多个可控节点赋予一定的控制编码来完成的。所 述控制编码也称为配置文件。
     传统的数据加密方法有两种, 一种是软件加密方法, 即用软件实现加密 / 解密算 法, 在通用计算机上完成数据加密 / 解密操作 ; 另外一种是硬件加密方法, 即完全用硬件实 现某种加密 / 解密算法, 制造出针对某种加密 / 解密算法的 ASIC 芯片, 数据的加密 / 解密 在专用的加密芯片上实现。 软件加密方法较为灵活, 但速度较慢 ; 而专用加密芯片的加 / 解 密速度很快, 但是由于其针对特定算法, 灵活性差。
     另外, 从安全的角度来讲, 上述两种加密方法都有极大的安全隐患。 对软件加密方 法而言, 攻击者可以用各种跟踪工具秘密修改算法而使任何人都不知道。对专用密码芯片 来讲, 一旦芯片生产出来以后, 其实现的密码算法是不可改变的, 然而任何算法都有可能被 攻破, 因此长期使用一种专用密码芯片难以保证太阳城集团的安全。而且针对某种特定算法的专 用密码芯片不能适应其它的密码算法。此外, 专用密码芯片所实现的算法在设计阶段和生 产阶段是已知的, 存在算法泄密的隐患。
     因此, 要使密码芯片能够灵活、 快速地实现多种不同的密码算法, 则密码芯片的体 系结构必须具有一定程度的灵活性。因此, 需要一种能够提供可重组的密码逻辑的安全处 理器, 以高效灵活地实现多种期望的算法, 从而提高系统密码体系的安全性。
     另一方面, 随着太阳城集团技术的高速发展, 危害太阳城集团安全的事件也不断发生。VPN 是一 种确保远程网络之间能够安全通信的技术, 通常用以实现相关组织或个人跨开放、 分布式 公用网络 ( 如因特网 ) 的安全通信。VPN 实质上利用共享的因特网设施, 实现 “专用” 广域 网络, 最终以极低的费用为远程用户提供能和专用网络媲美的保密通信服务。
     传统形式的 VPN 采用 ESP 协议并工作在隧道模式, 这种形式的 VPN 被广泛地使用 在企业中, 用于安全连接位于异地的企业计算机资源。
     图 1 示出了典型的 VPN 应用情况。通信双方通过各自的网关经 VPN 隧道连接, 而 通信太阳城集团经 VPN 芯片加密 / 脱密。
     Host1 将包发给 Gateway1。Host1 到 Gateway1 之间的通讯可以是没有安全保护 的。Gateway1( 路由或防火墙 ) 收到 Host1 发来的包, VPN 进程为收到的包加入新的包头,
     其中源地址 : Gateway1 ; 目的地址 : Gateway2, 加密发出。 两地之间通过 Gateway1-Gateway2 的虚拟的专有通道 (Tunnel) 进行通讯。Gateway2 收到 Gateway1 发来的包, 认证, 解密, 去 掉最外层的包头, 转发给 Host2。
     从企业用户的角度看, 数据报从 Gateway1 到 Gateway2 只经历了一跳, 这是因为原 数据报的包头被封装在新的包头之内, TTL 由 Gateway1 到 Gateway2 只减了 1, 就好像没有 穿越 Internet, 而是一直在私有网络里传输一样。
     从黑客角度来看, 因为加密的缘故, 黑客无法知道通讯两端的内容, 甚至通讯所使 用的上层协议, 如 TCP 还是 UDP, 都无法知道。 并且真实地址被封装并加密, 黑客也无法知道 实际是哪两台机器在通信。 另外, 因为无法通过完整性认证的包将被网关丢弃, 篡改包的内 容也是没有任何意义的。
     由于最初设计 TCP/IP 协议簇时, 人们并没有重点考虑它的安全性, 使得以 Ipv4 为 代表的 TCP/IP 协议簇存在以下的安全问题 : IP 协议没有为通信提供良好的数据源认证机 制, 仅采用基于 IP 地址的身份认证机制 ; IP 协议没有为数据提供强的完整性保护机制 ; IP 协议没有为数据提供任何形式的机密性保护 ; 协议本身的设计存在一些细节上的缺陷和实 现上的安全漏洞, 使各种安全攻击有机可乘。 IPSec 正是为了弥补 TCP/IP 协议簇的安全缺陷, 为 IP 层以及上层协议提供保护而 设计的。它是由 IETF IPSec 工作组于 1998 年制定的一组基于密码学的安全的开放网络安 全协议, 总称 IP 安全体系结构, 简称 IPSec。
     IPSec 的设计目标是 : 为 IPv4 和 Ipv6 提供可互操作的, 高质量的, 基于密码学的 安全性。它工作在 IP 层, 提供访问控制, 无连接的完整性, 数据源认证, 机密性, 以及有限的 数据流机密性, 以及防重放攻击等安全服务。在 IP 层上提供安全服务, 具有较好的安全一 致性和共享性及应用范围。这是因为, IP 层可为上层协议无缝地提供安全保障, 各种应用 程序可以享用 IP 层提供的安全服务和密钥管理, 而不必设计自己的安全机制, 因此减少密 钥协商的开销, 也降低了产生安全漏洞的可能性。
     IPsec 中有两个独立的用于安全传输数据的协议 : “Authentication Header” (授 权头, AH) 和 “Encapsulating SecurityPayload” ( 封装安全有效载荷, ESP)。AH 为数据流 提供数据完整性认证的服务。ESP 为所传输数据提供加密和数据完整性认证的服务。
     IPSec 协议通过 AH 和 ESP 协议对传输的数据提供完整性认证和加密的安全服务。 在密钥的获取方面, IPSec 提供了 IKE 协议, 使通讯的双方能够通过安全的自动协商获得相 同的密钥。安全协议部分定义了对通信的各种保护方式, 密钥协商部分定义了如何为安全 协议协商保护参数, 以及如何认证通信实体的身份。
     IPSec 密钥管理主要是由 IKE 协议完成。IKE 用于动态安全关联 SA 及提供所需要 的经过认证的密钥材料。
     IPSec 可以在主机, 安全网关 ( 指实现 IPSec 协议的中间系统, 如实现 IPSec 的路 由器或防火墙就是一个安全网关 ) 或在两者中同时实施和部署。用户可以根据对安全服务 的需要决定到底在什么地方实施。
     IPsec 协议有两种工作模式。传输模式 (Transport Mode) 将原 IP 包中的数据部 分进行封装, 从而提供了端对端的安全连接。隧道模式 (Tunnel Mode) 封装整个 IP 包, 从 而建立网关到网关间的安全的虚拟的一跳 (hop)。常常利用隧道建立跨越 Internet 区域
     的连接两个网关的隧道, 从而组成传统方式的 VPN(Virtual Private Network, 虚拟专用网 络 )。
     在 IPSec 传送加密数据之前, IPSec 通讯的双方需要配置相匹配的用于安全通讯 的参数, 如加密算法及密钥等。这可以通过手工配置, 或使用 IKE 协议进行协商获得。IKE 协议是用于 IPSec 通讯的双方相互认证及协商安全通讯参数的一系列消息的交换。协商的 内容包括 : 通信将使用的加密算法和认证算法, 密钥长度和密钥的有效期等, 并且最终双方 通过 Deffie-Hellman 算法得到共知密钥等。
     IPSec 协议支持的数据加密算法包括 DES, 3DES 和 AES 等, 支持的完整性认证算法 包括 : MD5, SHA-1, H-MAC 等。
     用 IPSec 保护一个 IP 数据流之前, 需先建立一个安全关联 SA。所谓安全关联 SA 是指通信对等方之间为了给需要受保护的数据流提供安全服务时而对某些要素的一种协 定。如 IPSec 协议, 协议的操作模式, 密码算法, 密钥, 密钥的生存周期等。
     一个安全关联由三个参数唯一指定 :
     安全参数索引 SPI : 一个与 SA 相关的位串, 仅在本地有意义。SPI 由 AH 和 ESP 携 带, 使得接收系统能选择合适的 SA 处理接收包。 IP 目的地址 : 目前, 只允许使用单一地址, 表示 SA 的目的地址, 可以是用户末端系 统, 防火墙或路由器。
     安全协议标识 : 标识该关联是一个 AH 安全关联还是 ESP 安全关联。
     安全关联 SA 的组合是指一个 SA 不能同时对 IP 数据报提供 AH 和 ESP 服务, 如果 需要提供多种安全保护, 就需要使用多个 SA。当把一系列 SA 应用于 IP 数据报时, 称这些 SA 为 SA 集束。SA 集束中各个 SA 应用于始自或者到达特定主机的数据。多个 SA 可以用传 输邻接和嵌套隧道两种方式联合起来组成集束。
     SA 可以手工或动态创建, 当用户数量不多, 而且密钥的更新频率不高时, 可以选择 使用手工建立的方式。但当用户较多, 网络规模较大时, 就应该选择自动方式。IKE 就是 IPSec 规定的一种用于动态管理和维护 SA 的协议, 它使用了两个交换阶段, 定义了四种交 换模式, 允许使用四种认证方法。
     IKE 的基础是 ISAKMP、 Oakley 和 SKEME 等三个协议, 它沿用了 ISAKMP 的基础, Oakley 的模式以及 SKEME 的共享和密钥更新技术。由于 IKE 以 ISAKMP 为框架, 所以它使 用了两个交换阶段, 阶段一用于建立 IKE SA, 阶段二利用已建立的 IKE SA 为 IPSec 协商具 体的一个或多个安全关联, 即建立 IPSec SA。同时, IKE 定义了交换模式, 即主模式, 野蛮模 式, 快速模式和新群模式。
     IKE 允许四种认证方法, 分别是基于数字签名的认证, 基于公钥加密的认证, 基于 修订的公钥加密的认证和基于预共享密钥的认证。
     IPsec VPN
     IPSec VPN 是基于 IPSec 协议建立的虚拟专用网络。实现 IPsec 的方案无外乎是 硬件和软件两种, 目前大部分是纯软件方式实现, 少数以硬件方式实现的也只是指产品的 形式, 往往用专门的芯片来做加解密, 在主控的 CPU 上用软件实现 IPsec 协议。这样的方式 在低速系统上可行, 但在 Gbit 线速路由器系统中不能满足性能要求。
     由于 IPSec 协议簇主要是为解决 TCP/IP 协议簇的安全性问题而设计的, 并非专门
     为 VPN 设计, 所以将 IPSec 作为安全隧道协议支持 VPN 时, 就会有一些固有的缺陷 :
     (1) 不支持基于用户的鉴别。 虽然 IPSec 的安全机制是最完善的, 但在安全认证方 面 IPSec 仅提供数据源认证, 不支持基于用户的鉴别, 这对于利用动态地址构建隧道的情 况是无法满足安全要求的。
     (2) 不支持动态地址和多种 VPN 应用模式。 。
     (3) 不支持多协议。IPSec 不支持对非 IP 协议的封装, 所以, 就其对 VPN 的支持而 言, 不符合虚拟网络自治和协议独立的基本要求。
     (4) 太阳城集团 IKE 的问题。IPSec 除了提供键入密钥的手工管理方式外, 主要推荐采用 IKE 进行安全关联和密钥的协商, 其优点是定义好安全策略后, 可以自动协商安全关联和密 钥, 无需用户维护。 但是, 由于安全关联和密钥品质对于传输安全的重要性, IKE 在应用方面 过于灵活, 又十分复杂, 加之 IKE 在安全性方面存在一定的局限性, 它的自动协商, 反而导 致了安全管理人员对整个过程的不可控。我国商用密码的实际应用情况是, 由密码管理中 心进行密码的算法配置, 密钥管理中心进行高品质密钥编制, 检验, 存储, 备份, 分配, 存档, 销毁, 恢复, 审计等, 所以需要由安全管理中心替代 IKE 的工作。
     (5) 太阳城集团服务质量保证问题。IPSec 的 Qos 保证主要依赖于 IP 网络的 Qos 解决方 案, 但在 IP 网络的 Qos 保证问题一直没有得到很好地解决, 尤其是实际运行的 IP 网络几乎 仍是尽力而为的 Qos 保证策略。
     针对上述问题, 本申请的发明人提出了一种支持高性能协议的安全处理器。
     本发明采用软、 硬结合的方法, 既考虑系统性能本身的优化, 将相对技术稳定的部 分以及系统性能的瓶颈用硬件实现, 以提高系统的速度和可靠性, 同时又顾及技术的发展, 将需要不断更新的、 应用策略、 包处理、 IKE 处理等部分用宏指令体系的硬件方式实现。 发明内容 传统的 IPSEC VPN 系统大部分是用软件来实现认证和加解密计算的, 少数以硬件 方式实现的也只是指产品的形式, 往往用专门的芯片来做加解密, 在主控的 CPU 上用软件 实现 IPsec 协议。这样的方式在低速系统上可行, 但在高速系统 ( 如, Gbit 线速路由器系 统 ) 中不能满足性能要求。
     本发明的 IPSEC VPN 系统是驱动芯片来实现认证和加解密计算的, 在稳定性、 安全 性和工作效率上有很大提升。
     附图说明
     下面结合附图介绍示例性的实施例介绍本发明的各种方案、 特点、 优点及应用, 其 中:
     图 1 概念性地示出了 VPN 的典型应用 ;
     图 2 示出了本发明一个实施方案的 VPN 芯片的大体框图 ;
     图 3 示出了本发明一个更具体的实施例的 VPN 芯片的体系结构 ;
     图 4 示出了本发明一个实施方案的 VPN 芯片的产品应用体系结构 ;
     图 5 示出了根据本发明的 VPN 芯片的包处理模块的示意性框图 ;
     图 6 示出了根据本发明的 VPN 芯片的公钥模块的示意框图 ;图 7 示出了根据本发明一个实施方案的接口宏指令控制器结构 ; 图 8 示出了本发明一个实施例的数据传输路径的示意性示出 ; 图 9 示出了根据本发明一个实施例的 DMA 控制与状态寄存器 ; 图 10 示出了 PCI DMA 控制与状态寄存器 ; 图 11 示出了 EMI DMA 控制器寄存器 ; 图 12 中示出了根据本发明一个实施方式的 DMA 数据通路的示例性配置 ; 图 13 示出了根据本发明一个实施方式的 SPI 接口控制 ; 图 14 示出了根据本发明的 SPI3 配置寄存器 ; 图 15 示出了本发明 VPN 芯片中的一种包处理体系结构 ; 图 16 示出了根据本发明的包处理输入宏指令的输入 ; 图 17 示出了本发明的包处理体系结构的示意框图 ; 图 18 示出了本发明中安全关联 (SA) 的记录格式关联 ; 图 19 示出了本发明包处理模块的配置寄存器模块 ; 图 20 示出了根据本发明的基本加密包格式 ; 图 21 示出了根据本发明的基本解密包格式 ;图 22 示出了基本 HASH 包格式 ;
     图 23 示出了基本 HASH- 加密包格式 ;
     图 24 示出了根据本发明一个实施例的基本 HASH- 解密包格式 ;
     图 25 示出了根据本发明一个实施例的 ESP 输出隧道模式包格式 ;
     图 26 示出了根据本发明一个实施例的 ESP 输入隧道模式包格式 ;
     图 27 示出了根据本发明一个实施例的 ESP 输出传输模式包格式 ;
     图 28 示出了根据本发明一个实施例的 ESP 输入传输模式包格式 ;
     图 29 用于说明根据本发明实施例的 AH 包头定位及可变位处理 (IPV6) ;
     图 30 用于说明根据本发明实施例的 AH 包头定位及可变位处理 (IPV4) ;
     图 31 示出了根据本发明实施例的 AH 输出包格式 ;
     图 32 示出了根据本发明实施例的 AH 输入包格式 ;
     图 33 示出了根据本发明实施例的 ESP 和 AH 输出隧道模式包格式 ;
     图 34 示出了根据本发明实施例的 ESP 和 AH 输入隧道模式包格式 ;
     图 35 示出了根据本发明实施例的 SPI-3 常规输出包格式 ;
     图 36 示出了根据本发明实施例的 SPI-3 带复制有效载荷的 AH 输出包格式 ;
     图 37 示出了根据本发明实施例的 MPPE 输出 ;
     图 39 进一步示出了根据本发明一个实施例的复位宏指令语用图 38 示出了根据本 发明实施例的 MPPE 输入 ;
     图 40 示出了根据本发明实施例的算法 IP 的模块示意框图 ;
     图 41 示意性地示出了分组算法模块激活宏指令语用 ;
     图 42 示出了根据本发明另一方面的算法模块激活宏指令语用 ;
     图 43 示出了根据本发明实施例的公钥算法模块结构 ;
     图 44 示出了根据本发明实施例的大数值运算模块 ( 公钥算法内核 ) 结构 ;
     图 45 示出了根据本发明一个实施例的模幂运算器 ;图 46 示出了根据本发明一个实施例的随机数模块结构 ; 图 47 示出了根据本发明实施例的随机数模块指令配置 ; 图 48 示出了本发明的 RNG 宏指令语用 ; 图 49 示出了根据本发明实施例的 PLL 控制以及 PLL 控制寄存器宏指令语用 ; 图 50 示出了根据本发明实施例的中断宏指令寄存器的配置 ; 图 51 示出了根据本发明实施例的中断控制器 ; 图 52 示出了本发明 VPN 芯片的总体工作流程 ; 图 53 示出了 PCI 配置空间配置子流程 ; 图 54 示出了本发明 VPN 芯片的芯片初始化子流程 ; 图 55 示出了本发明 VPN 芯片的芯片启动子流程 ; 图 56 示出了本发明 VPN 芯片的宏指令处理过程 ; 图 57 示出了本发明 VPN 芯片的宏指令启动和输入子流程 ; 图 58 示出了本发明 VPN 芯片的 FIFO 中宏指令仲裁分配过程 ; 图 59 示出了本发明 VPN 芯片的包引擎编码 ( 加密 ) 工作流程 ; 图 60 示出了本发明 VPN 芯片中包引擎译码子流程 ; 图 61 示出了本发明 VPN 芯片中包引擎数据处理子流程 ; 图 62 示出了本发明 VPN 芯片中输出宏指令处理子流程 ; 图 63 示出了本发明 VPN 芯片中 SPI-3 包处理流程 ; 以及 图 64 示出了本发明 VPN 芯片根据另一实施例的实现方案。具体实施方式
     下面参考附图说明本发明的优选实施例。
     图 2 示出了本发明一个实施方案的 VPN 芯片的大体框图。本发明的 VPN 芯片包括 包处理模块 ( 也可称为内核运算模块 ) 以及接口模块。包处理模块可以从接口模块接收控 制太阳城集团 ( 控制指令 ), 获取要处理的数据包 ( 例如, IP 包 ), 根据对控制指令的解码从接口 获取处理所依据的 SA, 并根据 SA 的指示, 对包进行 IPsec 协议 ( 例如 AH 和 / 或 ESP, 也包 括 MPPE) 处理以及相关的加密解密处理。包处理模块可以包括一个或多个用于对包进行处 理的包处理引擎模块 ( 以下可简称为包引擎模块 )。
     接口模块可以包括多种接口, 例如与主机的接口, 与外部存储器的接口和或与内 存的接口、 与网络设备 ( 例如路由器 ) 的接口。还可以包括与主板的接口。
     本发明的 VPN 芯片还可以进一步包括公钥模块, 其通过接口获取数据以及控制信 息, 进行大数 ( 大规格数 ) 算术运算和模幂乘运算。公钥模块可以与硬件指令一起为主机 应用程序提供完整的公钥服务 ( 如 IKE)。
     本发明的 VPN 芯片还可以进一步包括系统配置模块, 用于提供对安全处理器的操 作控制。对于某些实施方式, 系统配置模块可能是必须的, 但是对于其他的实施例, 其仅是 优选存在的。
     在一些实施例中, 系统配置模块可以包括锁相环 (PLL) 模块、 时钟分频模块、 随机 数模块、 复位模块、 中断模块等。系统配置模块可以通过 PCI 接口与主机连接, 并可以与处 理器内部的其他模块相连, 以向安全处理器各模块相应提供操作控制 ( 包括中断、 时钟、 数据等 )。但是, 系统配置模块的结构并不限于此。例如, 随机数模块也可以设置在包处理模 块中, 也可以设置为独立的模块。系统配置模块也可以不包含复位模块。甚至本发明的处 理器可以不包括 PLL 模块和 / 或时钟分频模块, 例如可以利用外部输入的时钟。
     图 3 示出了本发明一个更具体的实施例的 VPN 芯片的体系结构。 如图所示, VPN 芯 片包括包处理模块、 数据通路、 公钥模块、 系统配置模块, 还包括 PCI 接口、 EMI 接口和 SPI-3 接口。其中 VPN 芯片通过 PCI/PCI-X 接口与主机连接, 通过 EMI 接口连接外部存储设备, 而 通过 SPI-3 接口连接网络设备 ( 例如路由器 )。所述包处理模块包括宏指令模块和多个包 引擎模块。这里, 示出了根据 DMA 标准的数据通路, 用于包处理模块和公钥模块以及与相关 接口的连接, 这仅是示例性的, 本领域技术人员将理解, 也可以采用其他的适当数据通路。
     本发明所采用的 PCI 接口可以是 PCI、 PCI-X 或 PCI-E 接口或兼容接口, 其遵循主 机的 PCI、 PCI-X、 或 PCI-E 规范, 并可以在主模式和目标模式下工作。在主模式下, PCI 接口 连接 DMA 数据通路 ; 而在目标模式下, 其连接系统配置模块和 / 或存储器。
     本发明所采用的 EMI 接口可以连接 DMA 数据通路和外部存储器 ( 诸如, SRAM、 SSRAM、 SDRAM 等 )。而本发明的内存接口 ( 例如, DDR 系列的接口 ) 可以连接 DMA 数据通路 和内存 ( 例如主机的内存 )。 本发明所采用的 SPI 接口模块遵循 SPI 系列规范, 其可以连接包处理模块和路由 器。在本发明的 VPN 芯片的一些实施方案中, 可以采用例如 SPI-3 或 SPI-4 标准的接口。
     本发明的 VPN 芯片所采用的数据通路可以是 DMA 数据通路。 DMA 是高性能、 多通道 的直接存储器存取, 主要执行外部接口与内部模块数据的高速双向传输操作。 DMA 数据通路 仅是示例, 也可以采用其他的高速数据通路。
     在一个具体实现方案中, 本发明的 DMA 控制器有 19 个数据传输通道, 由 DMA 仲裁 控制通道的使用顺序。本领域技术人员将理解, 可以根据需要使用更多或更少的数据传输 通道。
     其中, DMA0 通道用于主机发起 (PCI) 的 DMA 主设备方式传输, 但其不受 DMA 控制, 由主机直接控制。另外 18 个 DMAn 通道被用于支持内部包处理的 DMA 传输, 其传输方式由 DMA 控制。DMA 控制器与 I/O 接口一起用于芯片数据的输入输出。包处理模块可以通过 DMA 数据通路接收来自 PCI-X 或 EMI 或内存的指令或数据。太阳城集团数据通路的具体说明将在下文 中进行。
     图 4 示出了本发明一个实施方案的 VPN 芯片的产品应用体系结构。本发明的 VPN 安全芯片可以通过外部存储器接口 (EMI) 或内存接口 ( 例如, DDR) 与安全关联库 (SA) 交 互, 通过串行外设接口 (SPI-3) 与路由器 ( 或其他包输入 / 输出设备 ) 通信, 通过外设部件 互连 (PCI) 接口与主机通信。而主机可以关联有安全策略库。主机和路由器可以连通到网 络。
     图 5 示出了根据本发明的 VPN 芯片的包处理模块的示意性框图。本发明的包处理 模块包括宏指令模块、 仲裁模块、 配置寄存器、 以及若干包引擎模块。 所述包引擎模块包括 : 宏指令和 SA 译码模块、 INFIFO、 协议模块 ( 包括 AH 协议、 ESP 协议、 MPPE 协议等 )、 OUTFIFO、 以及算法模块 ( 包括加密算法 : AES/DES/3DES、 ARC4、 国家加密算法 ; 摘要算法 : MD5/SHA1、 国家摘要算法等 )。
     在本发明的一个实施例中, 包处理引擎是可重组的。例如多个算法可以包括相同
     的基本重组元素。然而, 可重组设计不限于密码算法模块, 不仅是包处理引擎是可重组的, 系统配置也可以是可重组的, 例如, 中断优先级可重组、 存储器同异步方式可重组、 总线规 范以及大小尾端数据结构表现方式可重组、 数据通路可重组等等。用于可重组逻辑的配置 文件可以存储在芯片的存储器中, 也可以通过其他方式提供, 例如通过指令提供。因此, 可 以说本发明的 VPN 芯片至少是部分可重组的。
     包处理模块包括 8 个包引擎模块, 从而可以同时并行处理 8 个包。但这仅是示意 性的, 可以包括更多或更少个包处理引擎。同样的, 所述算法也仅是示例性的, 本领域技术 人员将理解, 可以包括任何期望的算法。所述包处理模块可以与 DMA 通路和 SPI-3 接口连 接。同样的, 在本发明中 DMA 通路包括通道 1-18 和通道 0, 这仅是示例性的, 可以根据需要 设置更多或更少的通道, 也可以选择任一个特定的通道来执行通道 0 的功能和作用。
     图 6 示出了根据本发明的 VPN 芯片的公钥模块的示意框图。公钥模块可以包括模 幂乘模块和大数模块 ( 将在下文中具体说明 )。 在目标模式下, 公钥模块可以与 PCI 接口连 接。公钥模块还可以连接 DMA 数据通道 0 和 RAM。
     下面更详细说明本发明 VPN 芯片的接口以及接口宏指令控制器结构。
     根据本发明的一个实施方案, 本发明 VPN 安全芯片的接口模块可以包括 : PCI 接口 ( 支持 33 和 66MHz)/PCI-X 接口 ( 支持 100 和 133MHz)/PCI-E ; EMI 接口, 其可以支持支持 SDRAM、 异步 SRAM 和双端口 SSRAM 设备连接扩展存储器接口, 也支持 SDRAM、 异步 SRAM 和双 端口 SSRAM 的任何组合 ; 以及 SPI 接口 ( 如, SPI3, SPI4)。
     本发明 VPN 安全芯片 PCI 接口、 PCI-X 接口支持 32 位和 64 位总线 ; EMI 数据总线 宽度在 32 位至 64 位之间选择, 且支持字节写 ; 通过 EMI 接口最大内存容量为 256M 字节 ; SPI-3 接口可以只支持 32 位数据规格。
     本领域技术人员将理解, 对所采用的接口、 接口采用的频率、 数据规格、 位宽、 存储 容量等没有具体的限制, 可以根据需要选择。如前所述的, 本发明也可以采用 PCI-E 接口或 者 SPI-4 接口等等。
     本发明中的 PCI/PCI-X/PCI-E、 SPI3/4、 EMI 等接口均是依据相应标准设计, 包括 交易模式、 配置寄存器语义、 交易规则、 数据映射以及控制等。
     图 7 示出了根据本发明一个实施方案的接口宏指令控制器结构。在本发明的一个 实施例中, 所有宏指令配置寄存器和队列均在 PCI 配置寄存器空间和内存空间统一编址。 宏指令根据静态宏指令寄存器的设置, 决定来自 PCI、 SPI3 或 EMI ; 安全策略 SA 根据动态宏 指令寄存器的设置, 决定来自 PCI 或 EMI 或公钥算法 (PKA) 模块的 RAM ; 宏指令队列的选择 也是根据静态宏指令寄存器的设置, 来自 PCI 时队列有例如 32 组表项, 来自 SPI3 时队列有 例如 5 组表项。
     所有芯片的内部数据资源的配置均由 PCI 寄存器空间和内存空间统一配置。即 : 芯片的内部数据资源是 PCI 总线的映射。接口的控制通过宏指令配置太阳城集团进行, 而宏指令 配置太阳城集团均由主机建立、 更新。
     宏指令对接口模块的配置和控制包括 : PCI 接口模块配置, 其进行宏指令配置文 件的访问 ( 装载和读取宏指令太阳城集团 ), 进行数据输入输出管理 ; SPI3 接口模块配置 : 进行包 处理宏指令和包数据的输入输出管理与控制 ; EMI 接口模块配置 : 进行包处理宏指令和安 全策略 SA 的输入输出管理与控制 ; 三个外部接口与内部总线进行数据或指令传输, 交换。在本发明的一个实施方案中, SPI3 接口独立与包处理模块建立数据和指令关系 ; PCI 接口与 SPI3 接口可以分别处理包处理宏指令和数据包处理关系 ; EMI 接口与 PCI 接口 可以分别处理包处理宏指令和 SA 关系或包处理宏指令和数据包处理与 SA 关系 ; 如果 PCI 直接与 EMI 发生操作关系, 仅能通过芯片内部的缓存实现, 此时, 数据传输长度依据 EMI 指 令配置的长度 ( 或与 PCI 呼叫传输的长度之比, 取较小值 )。
     本发明的处理器可以支持如下 PCI 规范能力 : 废弃操作、 自动回复、 目标设备和主 设备模式传输、 奇偶校验、 存储器读、 存储器写、 配置空间读和配置空间写能力。
     在一个实施方案中, 本发明的 VPN 芯片提供 1 个 64 位最高 100MHz 的 PCI-X( 兼容 PCI) 的总线接口。在本发明的一个实施方式中, 在 PCI-X 总线上可以连接有其他主设备有 NP 处理器或其他处理器, 而本发明的 VPN 芯片仅作为在 PCI-X 总线上 1 个 128K 字节的单 块连续存储空间的目标设备。在该目标设备中的编址, 又被分配给芯片内部模块。本发明 的 VPN 芯片的 PCI-X 目标设备存储地址可以通过 17 个位的地址存取。PCI-X 地址的其余位 被芯片解码, 以确定 PCI-X 总线设备的寻址 ( 呼叫 ) 是否与芯片 PCI-X 存储器基址寄存器 的值匹配, 从而确定 VPN 芯片是否为此次 PCI-X 的目标设备。需要注意的是, 在该实施方案 中, PCI-X 地址的其余位可以并不写入 VPN 芯片的寄存器。
     在本发明中, 对于指令配置寄存器访问, 可以直接存储到寄存器。对于数据传输, 通常情况, 目标模式传递配置寄存器数据, 主模式是由芯片发起, 因此芯片已知源和目的。 对于输入, 主机有配置数据和数据传输, 两者在芯片响应时, 要仲裁, 加入输入数据缓冲区 是需的 ( 只加入一组缓冲 )。 对于输出, 芯片内部所有数据都有缓冲, 因此, 在本发明的一个 实施例中, PCI 数据缓冲区仅仅设计一组输入缓冲。
     在一个实施例中, 在主模式下, PCI 接口连接至 DMA 数据通路 ; 而在目标模式下, 其 连接至系统配置模块和 / 或存储器。
     下面说明在本发明的实施例中所使用的数据通路。在本发明的一个实现方案中, 提供了数据总线控制器 ( 例如, 64 位 ), 该控制器可有效用于在主机数据接口 PCI、 包处理模 块、 内部内存和 / 或外部存储器 EMI 之间的数据传输。在本发明的一个实现方案中, 该数据 总线控制器被实现为 DMA 控制器。
     该 DMA 控制器主要是负责外部接口与芯片内部之间的数据 ( 包括指令 ) 传输 ; 作 为数据传输通道, 能够接收要传输数据的太阳城集团, 如 ID、 地址、 长度、 模式等 ; 控制 DMA 的 19 个 通道的使用顺序 ; 根据体系要求对所传输的数据进行大小尾端转换控制。
     在本发明的该实现方案中, DMA 是根据 VPN 体系中外部接口与内部模块间数据传 输的需要而设计的数据通路。而外部接口与芯片内部数据的数据表现形式, 存储形式以及 传输形式可能不同, 需要有大小尾端转换控制。
     由于存在多个通道, 需进行 DMA 仲裁控制。 19 个通道可以同时发申请, 仲裁轮询控 制 19 个通道的使用, 在接收到申请后, 仲裁要轮询控制发出允许信号。与外部接口有数据 传输关系的每个内部模块都有自己的通路, 可同时发申请, 由仲裁控制通路的占用顺序。 另 一方面, 数据大小尾端转换控制需要在 PCI、 EMI 对内部及内部对 PCI、 EMI 的传输接口处完 成。
     在本发明中, DMA 数据传输控制类包括 : 主机发起 - 主机主控的指令配置操作控 制; 主机发起 - 芯片主控的指令配置操作控制 ; 芯片发起 - 芯片主控的指令配置操作控制。所述输出传输控制涉及 PCI 总线、 EMI 总线、 包处理总线和内部总线。
     图 8 示出了本发明一个实施例的数据传输路径的示意性示出。图中示出了三个外 部接口 : PCI, SPI3, EMI ; 4 条总线 : 包数据总线 1, EMI 总线 2, PCI 总线 3, 内部总线 4。主机 通过 PCI 有主模式传输 ( 包处理总线, EMI 总线, 内部总线 ) 和目标模式传输 (EMI 总线和 内部总线 ), 且优先响应目标模式。芯片通过 PCI 有主控方式的 DMA 传输 ( 包括主机发起或 芯片发起 ) 以及芯片目标模式的非 DMA 方式传输 (PCI 到 EMI, PCI 到内部 )。
     直接存储器存取 (DMA) 控制器是使用状态机逻辑实现控制的内部总线通路开关 的自动选择。当一个宏指令译码执行时, 控制信号驱动 DMA 的数据同时操作。
     DMA 控制器以 PCI 总线为主控 ( 发起, 主控 ), 可以控制选择内部宏指令寄存器、 包 处理模块 ( 输入输出数据缓存 )、 公钥存储器的数据通路, 完成数据交换。 DMA 控制器以 PCI 总线为发起 ( 芯片主控 ), 可以控制选择宏指令队列输入输出, 分段合包宏指令输入, SA 信 息输入, 密文数据输出等数据交换。
     芯片中的 DMA 控制器有 19 个控制通道, 允许任意时刻有 19 个 DMA 交易能够等待 执行。当主模式和目标模式同时申请使用 DMA 控制器时, 目标模式传输优先处理。由于 PCI 和 EMI 传输是独立的, 且两个申请的源目地址均不同时, 能够同时进行两个 DMA 传输。主机 只能直接控制 DMA 通道 0。其它的通道由芯片的内部状态机根据指令控制自动发起控制并 完成数据交换。
     下表具体示出了一种数据传输路径分配。 数据通道 0 1 主要用于 : 主要用于主机发起芯片控制模式的数据传输。 由芯片发起的 DMA 主模式传输。输入宏指令队 列和输出宏指令队列管理器 “包处理宏指令” 由芯片发起的 DMA 主模式传输。输入分段和输 出合包 “包处理的分段合包宏指令” 包处理模块实施的数据选择。第 1 个包模块通路 : SA1“第 1 个包引擎的 SA 与状态太阳城集团” 包处理模块实施的数据选择。第 1 个包模块通路 : 第 1 个包引擎的输入数据和输出数据 包处理模块实施的数据选择。第 2 个包模块通路 : SA2“第 2 个包引擎的 SA 与状态太阳城集团”234515101997834 A CN 101997839说6明书11/59 页包处理模块实施的数据选择。第 2 个包模块通路 : 第 2 个包引擎的输入数据和输出数据 ......... 包处理模块实施的数据选择。第 8 个模块通路 : SA8“第 8 个包引擎的 SA 与状态太阳城集团” 包处理模块实施的数据选择。第 8 个模块通路 : 第 8 个包引擎的输入数据和输出数据7 ~ 16 1718这种分配仅是示例性的, 本领域技术人员将理解, 可以根据需要任意进行设置。
     根据本发明, 数据传输的发起方可以是主机或芯片 ; 数据传输的设备可以是主设 备或目标设备 ; 数据传输的方式可以是 DMA 方式或非 DMA( 如, 源目寻址 ) 方式 ; 数据传输的 对象可以是 PCI、 EMI、 内部 ( 寄存器、 存储器、 队列 )。
     下面具体说明数据传输 :
     在 DMA 方式下, 通过仲裁器控制完成数据传输, 仅当主机发起, 并作为主设备 ;
     实施源目寻址时, DMA 轮询操作控制暂停, 主机操作优先。
     主机发起, 主设备, 源目寻址 : 优先 DMA, 由 PCI 接口呼叫, 芯片即时响应 ;
     主机发起, 目标设备, DMA0 : 由主机配置宏指令和启动控制, 芯片依据配置的宏指 令太阳城集团 ( 源目地址, 长度 ) 完成操作 ;
     芯片发起, 主设备, DMAn : 由芯片呼叫 PCI, 主机响应后, 完成宏指令配置操作。
     其应用组合包括 :
     主机发起, 主设备, 源目寻址 ( 非 DMA) ; 芯片为目标设备, 完成指令寄存器配置或 公共 RAM 数据传输或 PCI-EMI 数据交换或主机读取状态寄存器 ;
     主机发起, 目标设备, DMA0 ; 芯片为主设备, 完成主机配置的 DMA 指令的寻址数据 操作 ;
     芯片发起, 主设备, DMAn ; 主机为目标设备, 完成主机配置的宏指令操作 ;
     主机发起, 主设备, 源目寻址 ( 非 DMA) ; 芯片为目标设备, 完成指令寄存器配置或 公共 RAM 数据传输或 PCI-EMI 数据交换或主机读取状态寄存器 ;
     主机发起, 目标设备, DMA0 ; 芯片为主设备, 完成主机配置的 DMA 指令的寻址数据 操作 ;
     芯片发起, 主设备, DMAn ; 主机为目标设备, 完成主机配置的宏指令操作。
     下面说明根据本发明一个实现方案的 DMA 数据交换。
     在本发明的该实现方案中存在三个数据传输模式 : 主机发起, 由芯片作为主设备 完成 PCI 与内部和 EMI 与内部的数据传输 ; 使用专用通道 0 ; 主机发起, 并由主机作为主设 备完成 PCI 与 EMI、 PCI 与内部和 EMI 与内部的数据传输, 不占用通道 ; 芯片发起, 由芯片作 为主设备完成 PCI 与内部和 EMI 与内部的数据传输, 使用数据通道 1-18。其中大小尾端数 据规格的控制是数据传输关键。
     在该实现方案中, 存在三个设备 : 主机 PCI、 外部存储器 EMI 和芯片。每个设备的
     数据表现形式, 存储形式以及传输形式不同。因此建立数据传输的大小尾端控制也需由三 种传输模式的 6 段宏指令配置。
     在本发明的一个简化的实现方案中, 不支持 SPI3 接口的数据与 PCI 或 EMI 的传 输, 仅支持 SPI3 与芯片的数据传输, 其中在芯片内部数据均为小尾端, SPI3 规范均为大尾 端, 因此 SPI3 与芯片的数据传输被固定转换, 不需要配置大小尾端指令。
     图 9 示出了根据本发明一个实施例的 DMA 控制与状态寄存器。 DMA0 通道的宏指令 配置太阳城集团为 : 主机发起, 芯片作为主模式的操作。所述寄存器包括 : DMA 主大小尾端控制 寄存器 (P_DMA_APP_MST_ENDIAN), 用于静态配置太阳城集团, 确定大小尾端控制 ; DMA 目的地址寄 存器 (P_DMA_APP_DST_ADDR), 用于数据传输目的地址 ; DMA 源地址寄存器 (P_DMA_APP_SRC_ ADDR), 用于数据传输源地址 ; DRM 状态寄存器 (P_DMA_APP_STATUS), 用于操作状态、 芯片填 写、 主机访问 ; 以及 DMA 指令寄存器 (P_DMA_APP_COMMAND), 用于主机发起的控制太阳城集团。
     图 10 示出了 PCI DMA 控制与状态寄存器。DMAn 通道的宏指令配置太阳城集团为 : 芯片 发起, 作为主模式的操作。所述寄存器包括 : PCIDMA 状态与配置 (P_PA_DMA_STAT_CFG), 用于主机设定的数据传输规格要求以及操作状态的反馈 ; PCI DMA 目标读取长度 (P_PA_ TARGET_READ_COUNT), 用于对主机而言的最大目标传输长度约束 ; PCI DMA 目标页 (P_PA_ TARGET_PAGE), 用于指定 EMI 外部存储器的页地址 ; PCI DMA 目标模式散列加密大小尾端 (P_PA_DMA_STAT_CFG), 用于数据传输中的大小尾端数据交换太阳城集团。
     图 11 示出了 EMI DMA 控制器寄存器。 DMAn 通道的宏指令配置太阳城集团 : 主机或芯片发 起, 芯片作为主模式的操作。所述寄存器包括 EMI DMA 状态与配置 (P_ED_DMA_STAT_CFG), 其用于配置存储器类型、 状态、 映射。
     用户 DMA 传输为主机发起、 芯片作为主设备实施的数据传输。主机发起是指通过 DMA 指令寄存器 “启动请求” 的操作。源地址和目的地址要依据 DMA 指令寄存器总线标识的 指示确定对象。指令寄存器是操作控制的主体, 状态寄存器是主机访问操作前后的太阳城集团。
     PCI DMA 状态与配置 (P PA DMA STAT CFG) 寄存器主要完成 PCI 传输长度的最大 配置值设定。它是检验值。PCI DMA 目标页 (P PA TARGET PAGE) 对应的存储器类型和寻址 转换。PCI DMA 目标读取长度 (P PA TARGET READ COUNT) 寄存器主要实现 PCI 对 EMI 的访 问, 用于配置传输长度的配置值设定。 EMI DMA 状态与配置 (P_ED_DMA_STAT_CFG) 寄存器主 要完成 EMI 传输长度的最大配置值设定。它即是检验值又是运行值。PCI DMA 目标 & 独立 散列 / 加密大小尾端 (P PA TGT HASHENC ENDIAN) 寄存器主要配置数据传输中的大小尾端 设置。
     在本发明的一个实现方案中, DMA0 通道, 由主机发起, 芯片作为目标设备完成指令 配置或数据传输 ; DMA 指令寄存器的使能控制发出 DMA0 通道的申请。DMA1 ~ 18 通道均由 芯片发起, 由芯片作为主设备完成数据传输。主机只能直接控制 DMA 通道 0。其它的通道由 芯片根据指令配置控制, 自动发起控制并完成数据交换。
     图 12 中示出了根据本发明一个实施方式的 DMA 数据通路的示例性配置。
     下面说明根据本发明实施例的 SPI3 接口。SPI-3 接口是一种流接口, 由两个单独 的单向 32 位宽总线组成。SPI-3 接口允许连接到 SPI-3 链接层设备的主机。SPI-3 接口命 名是站在主机 ( 链接层设备 ) 角度命名的, TX 对于 SPI-3 设备是指输入总线, 而 RX 是指输 出总线。如图 13 所示, 本发明的 SPI 接口连接链路层设备和内部总线, 其包括 SPI3 接口逻辑和 SPI3 接口控制模块。SPI3 接口控制模块进一步包括 TX/RX 控制状态机、 TX/RX FIFO 管理、 输出端口 / 数据选通、 端口地址译码、 FIFO 空间有效边界设置、 输入端口 / 数据选通
     发送端口 TX 操作分为几种类型 : 单 PHY 模式 ; 多 PHY 字节层模式 ; 多 PHY 包层静 态模式 ; 多 PHY 包层动态模式。所选定的 SPI-3 模式对包处理吞吐量会产生影响。一般来 说, 如果较少出现大于 2K 字节的包, 那么 “单 PHY” 模式是最有效的, 因为该模式不需要在数 所总线上指示 PHY 端口地址。如果大于 2K 字节包出现比较多, 则 “多 PHY 字节层” 模式是 最佳选择, 因为 “单 PHY” 模式会屏蔽掉其他 7 套可用的资源, 直到大包完全处理完毕。如果 不知道大包出现的频率, 推荐使用 “多 PHY” 模式。
     在 “多 PHY 包层” 静态模式中, 可通过使用由 8 个端口组成的一个固定组进行静态 运行, 因而将 8 个内置 FIFO 和 8 个包引擎进行匹配, 即只能支持 256 个端口中的 8 个固定 地址。在 “多 PHY 包层” 动态模式, 芯片可通过动态分配最多可达 256 端口的一组端口, 进 行运行。 “多 PHY 包层” 静态模式传输效率最接近 “字节层” 模式, 大约是每 256 字节多开销 20 字节。多 PHY 包层动态模式的效率取决于链路层设备对每个端口的调度能力。
     下表示出了 TX 特征的各操作模式的特点。
     18
     101997834 A CN 101997839模式 ·SPI-3 总线的最高效率使用带宽 ·可预测太阳城集团包流 ( 一次一个包, 按 顺序 )。 ·优点缺点 ·只有 1 个 FIFO 有效。当处理大包时, 将阻止对 其他 7 个包引擎的数据流。 ·无法区分在 SPI-3 总线上 IP 包的使用端口。单 PHY多 PHY, 字节层说·能够保持 8 个独立的包流处于运行 状态, 保持 8 个包引擎始终处于工作 状态。 同多 PHY 字节层模式·包流不规则, 无法预测。 ·仅局限于 8 个端口——不可以使用 8 个以上的端 口明接收端口 RX 接口可以在两种不同的模式下运行 : 单 PHY 模式和多 PHY 模式。两者 区别仅在于输出时数据总线上每次传输数据是否需要先报告端口地址。单 PHY 模式传输每 次都须在数据前均需要报告端口地址 ; 多 PHY 模式入此次数据传输与上次数据传输端口相 同时, 不需报告端口地址, 只有与上次数据传输的端口不同时才报告端口地址。
     RX 端口和 TX 端口的区别是在 TX 端口上芯片需要通过管脚信号向链路层报告链路 与 “字节层” 相同, 除了 : ·吞吐量还取决于连接设备登记发送端口的能力 如何。 ·小包可能妨碍性能。 与 “静态” 相同 ·256(255) 个 SPI-3 端口的充分使用。 允许将端口号用做 ID 标签。19书多 PHY, 包层, 静态多 PHY, 包层, 动态14/59 页101997834 A CN 101997839说明书15/59 页层申请的端口是否可以接收数据。TX 端口在不同操作模式下, 报告状态的方式及用来报告 状态的管脚信号不同。
     注意 : 以下所述 FIFO 的可用状态由指令寄存器中用户设定的高限阈值和低限阈 值来确定。当 FIFO 的可用空间高于高限阈值, 表明该 FIFO 可用 ; 当数据接收至 FIFO 的可 用空间低于低限阈值时, 声明该 FIFO 不可用。
     当包的目标地址被一个 SPI-3 端口的宏指令被接收时, 包处理模块管理器建立输 出流数据线程。
     此宏指令可以来自 PCI 主机也可以来自 SPI-3 输入流。为请求一个新线程, 包处 理模块管理器向 SPI-3 接口内核发出请求信号, 同时发出被请求的端口号及给该端口分配 的包处理模块编号。在 SPI-3 接口输出 FIFO 有空间时, 此请求被响应。
     包处理模块将通过一个专门的状态信号向 SPI-3 接口发送数据准备好的信号。该 信号当包处理模块输出缓冲区存储量超过预设的最小连发规模时, 或是包处理模块完成了 包的处理时即有效。 随后, 当输出缓冲区存储量低于其预设的最低限制时, 数据准备好信号 无效。
     当 SPI-3 接口检测到相关包处理模块发送数据准备好信号的端口时, 开始向链路 层设备进行新的数据传输。数据传输开始是选择数据所属的端口, 随后是传输数据本身, 直到包处理模块发出包结束信号为止, 或是直到预定的字节数已经发送到了链路设备时为 止。
     而在后一种情况下, 只有当包处理模块中其至少有预设的字节数需要发送, 才会 置数据准备好信号有效。 SPI-3 接口不会读取超过此数量的数据字节。 因此, 在每一次传输 之后, RX FIFO 中不会保留下未发的数据。这样, SPI-3 接口只需要提供一个 RX FIFO 就够 了, 没有因为 RX FIFO 满了而导致的等待太阳城集团。
     SPI3_TX/RX 配 置 初 始 化 指 令 位 指 定 是 否 对 于 每 个 单 独 包 都 启 用 新 传输 ( 用 RSX) :
     当位为 ‘0’ 时, 如果本包还象前一个包一样传输到同一个端口则不开始新传输, 提 高链接的包效率, 节省一个端口交换周期。
     当为 ‘1’ 时, 每个新包的传输不论端口是否改变都将启动一个新的传输。
     注意 : 该位不影响切换端口。
     这表明包状态和长度的输出宏指令被包处理模块附在输出数据流的后面。 该宏指 令被 SPI-3 接口当作普通数据处理。
     当 SPI-3 接口接收到 RENB 信号无效时, 需中断数据流。所有的输出都被保持, 直 到 RENB 再次有效。
     所有的信号都在 RFCLK 上升沿更新和采集。RDAT 总线、 RPRTY、 RMOD、 RSOP、 REOP 及 RERR 信号在 RVAL 为高且前一周期 RENB 为低的时钟周期内有效。数据传输中, RVAL 一 直声明有效, 直到输出 FIFO 空或者是包结束。在 RVAL 为低且上一周期 RENB 为低的时钟周 期内 RSX 信号有效。
     如果在此数据包传输时出现错误, 在 REOP 有效时, 同时声明 RERR。由于其他端口 的 FIFO 有足够的数据来启动数据传输, 则再一次声明 RSX, 指明新的端口地址。
     图 14 示出了根据本发明的 SPI3 配置寄存器。本发明的 SPI3 配置寄存器包括 :TX 配置寄存器 P_SPI3_TXCONFIG, 其用于输入配置, 包括输入队列的指针约束、 总 线使能、 固定线程配置或轮寻线程配置等 ;
     TX/RX 配置 RX 寄存器 P_SPI3_TXRXCONFIG, 其用于传输配置, 包括输入输出的数据 规模、 奇偶效验、 数据包序列等控制配置 ;
     线程 0- 线程 7 状态与配置寄存器 P_SPI3_THROSTATUS, 其主要反映包处理的操作 状态, 如: FIFO 益出, 包处理未结束等。同时, 对于操作状态可由主机设定是否中断。
     如图 14 所示, 线程配置寄存器可以有多组。
     下面说明本发明 VPN 芯片中所采用的 EMI 接口。
     有两种通过 EMI 接口访问外部存储器的方法 : 使用目标 PCI 传输访问 ; 和通过建 立 DMA 控制器访问。 PCI 目标方式传输对于小数据量传输有效, 而 DMA 传输对于大量数据传 输有效。
     对于芯片中的数据总线宽度并没有特别的限制, 例如芯片中的数据总线宽度可在 32 到 64 位 ( 字节可写 ) 之间选择。当设置为 32 位外部数据总线宽度时, 230 字节或 1G 字 节的数据总量被分为 228 个 4- 字节 ( 对于 1 个 4 字节输出可选择字节 )。当设置为 64 位 外部数据总线宽度时, 不使用外部地址最低位 ( 位 2), 使用 4 个额外字节选择输出管脚选择 64 位输出总线上的高 32 位的字节。
     本发明的 VPN 芯片可以支持外部存储器的类型包括 : SRAM, SSRAM, SDRAM。上述各 种存储器可以每次只用一种, 也可以同时采用多种存储器的组合。
     在本发明的 VPN 芯片的一个实施方案中, 主机使用 PCI-X 接口作为芯片的宏指令 控制端口, 并且使用包处理输入宏指令用于包处理控制太阳城集团的传输。通过 SPI-3 接口接收 的包也可以有一个预先附加到包数据里的输入流——包处理输入宏指令。 包处理模块执行 主模式 DMA 读取操作, 从 PCI-X 或 EMI 存储器的输入宏指令队列中提取包处理输入宏指令。 包处理输入宏指令有效地将包处理太阳城集团传输到芯片的包处理模块, 使得包处理模块能够自 主地对包处理指令进行排队和处理, 减少包处理模块的等待数据的可能, 并最大程度地提 高吞吐量。
     本发明的包处理模块可同时支持来自 PCI-X 或 SPI-3 这两个接口的包处理输入输 出宏指令。位于主机存储器的输入宏指令队列缓冲区主要用于从 PCI 连接的主机与本发明 的 VPN 芯片之间传输多个 ( 例如 6 个 )32 位长度的包处理输入宏指令。位于芯片内的宏指 令取指控制器模块完成 DMA 的主模式读取, 以从输入宏指令队列缓冲区中提取包处理输入 宏指令, 保存在芯片内缓存区中 ( 例如, 可以具有 32 个表项 )。控制权位可以转换, 这样主 机和本发明的 VPN 芯片之间的包命令传输和执行可以异步。宏指令根据包处理仲裁模块的 分配输入到包引擎译码控制器, 依据包处理宏指令的译码解释, DMA 完成数据输入输出, SA 输入或输出, 进入包处理模块完成包数据处理。在包引擎完成数据处理后, 更新宏指令, 由 DMA 输出到外部缓存。
     下面说明本发明 VPN 芯片中包处理体系结构。 图 15 示出了本发明 VPN 芯片中的一 种包处理体系结构。如图所示, 本发明的包处理宏指令输入包括 : SPI3 输入 ( 单宏指令 ) ; 根据来自主机的到输入宏指令控制器的读宏指令中断从 DMA 读取或从输入宏指令队列基 址输入宏指令。从输入宏指令控制器的输出连接到 32 表项的片内包处理宏指令队列。此 处 32 表项是宏指令输入 FIFO。之后, 进行命令仲裁。命令仲裁可用轮询的方式完成。本发明的包处理宏指令输出包括 : 通过来自包处理模块的宏指令处理完成中断而输出 ; 通过将 输出宏指令队列基址输入到输出宏指令控制器进行 DMA 写操作而输出 ; 以及由命令仲裁输 出宏指令 (SPI3 输出 )。
     当包处理输入宏指令和输出宏指令被启动时 ( 即, 包处理模块 DMA 配置寄存器 (P_ HD_DMA_CONFIG) 的特定位被置位 ), 需确定包处理模块如何获知外部输入宏指令队列缓冲 区上有新的宏指令。有两种方式 : 轮询或中断。
     在选择轮询配置下 : 包处理模块一直检测包处理输入宏指令, 直到其检测到有效 的宏指令 ( 所有权 ( 将在下面说明 ) 定义为包处理模块 )。在包处理输入宏指令轮询寄存 器中可以设置查询的频率, 即总线带宽的开销。对查询频率和查询重试是分别控制。读取 的宏指令无效时 ( 第一条无效或第二条的低 64 位 ) 会产生查询重试。
     在中断配置下 : 主机在输入宏指令队列缓冲区上积攒一个或多个包处理输入宏指 令, 然后向包处理模块发起一个中断以告知其提取宏指令并开始处理。这种模式能降低系 统总线的开销, 并且由于主机确定宏指令被处理的太阳城集团, 因此主机可以控制系统数据流量。
     输入宏指令队列缓冲区主要用于从 PCI 连接的主机与芯片之间传输 6 个 32 位 (192) 长度的包处理输入宏指令。芯片内的宏指令取指控制器模块完成 DMA0 的主模式读 取, 以从输入宏指令队列缓冲区中提取包处理输入宏指令。 下面说明宏指令所有权位处理。 主机与芯片间异步处理的一个要素就是双方之间 包处理输入宏指令和包处理输出宏指令的传递。为了使宏指令交换同步, 在本发明的一个 实施方案中, 使用两对控制权位。一对是第一个 32 位中的宏指令, 另一对则是最后 1 个 32 位中的宏指令。 宏指令的读取方应校验两对所有权是否匹配, 实现一方写操作, 而另一方读 取宏指令的正常状态。也就是说, 需采取存储器访问限制的控制设置, 以防止出现操作冲 突。控制权位通过配置 ( 主机和芯片赋值 ) 可以转换, 这样主机和芯片之间的包命令传输 和执行可以异步。
     每对控制权位可以提供 3 种状态 :
     ‘00’ =空闲或无效宏指令
     ‘01’ =所有权转到 VPN 芯片
     ‘10’ = VPN 芯片完成, 所有权传回至主机
     ‘11’ =保留
     在初始化时, 主机将把整个输入宏指令队列存储区复位至零。
     图 16 示出了根据本发明的包处理输入宏指令的输入。 来自 EMI 和 PCI 的输入经多 路复用器输入到包处理输入宏指令控制 / 状态字寄存器 (P_HD_CONTROL_STATUS)、 包处理 模块源地址寄存器 (P_HD_INPUT)、 包处理模块目的地址寄存器 (P_HD_OUTPUT_ADDRESS)、 包处理模块 SA 地址寄存器 (P_HD_SA_ADDRESS)、 用户 ID 寄存器 (P_HD_ID)、 包处理模块长 度寄存器寄存器 (P_HD_LENGTH) ; 而经 SPI3 的输入被输入到包处理输入宏指令控制 / 状态 字、 包处理模块目的地址、 包处理模块 SA 地址以及包处理模块长度寄存器。
     VPN 芯片有两种使用的包处理宏指令格式 :
     通过 PCI-X 或 EMI 接口传输, 并且是唯一被输入宏指令队列支持的格式, 其中输入 宏指令队列格式包括 : 包数据源指示、 包目的指示和 SA 记录指示, 控制和状态太阳城集团。
     通过 SPI-3 接口传输的输入流包处理输入宏指令格式与输入宏指令队列格式相
     似, 只是没有包源域和用户 ID。因为 SPI-3 输入流包处理输入宏指令总是附在包数据之前 同时传入, 数据源一定被确定为来自 SPI-3 接口。这种输入流包处理输入宏指令格式仅用 于 SPI-3 接口。
     包处理宏指令控制包处理模块的实时操作, 包处理宏指令被写入到输入宏指令队 列 (FIFO), 指令寄存器设置其驱动包处理模块的状态机。包处理输入宏指令格式也用于包 处理输出宏指令。本发明中的包处理输入宏指令可以指示控制 / 状态、 源地址、 目的地址、 SA 地址、 用户 ID、 旁路偏移长度、 包长等等。
     包处理输入宏指令控制 / 状态字与 SA 结构内的被指定的数据一起, 提供基本的指 令译码太阳城集团给包处理模块。此命令提供给包处理模块用于处理包的各种指示。一旦所要求 的操作被完成, 不论是成功或不成功, 此控制 / 状态字都会在包处理输出宏指令中提供结 果状态。主机可以检查这些状态以决定下一步操作。
     包处理输入宏指令控制 / 状态字寄存器可以包括 :
     所有权位 : ′ 10′, 表示芯片主控, 芯片通过轮询机制查看主机是否有宏指令需 要处理, 如果有就处理, 没有宏指令需要处理就等待一段太阳城集团发起并查询是否被主机主控 ; 所有权位 : ′ 01′, 表示主机主控, 主机通过轮询机制查看芯片的处理空间能否输入宏指 令, 如果能输入就, 不能输入宏指令就等待一段太阳城集团发起并查询是否被芯片主控。
     散列操作最后包位 : ′ 1′表示该数据是 HASH 操作最后一段是进行 HASH 填充的 使能。
     相关包或顺序包 : 如果宏指令来源是 PCI 则是相关包, 宏指令来自 SPI_3 则是顺序 包。相关包位的设定在需在所有的、 除最后宏指令之外的宏指令中进行设置。相关包的包 位设置为′ 0′表示是独立宏指令 ; ′ 1′表示是多个相关宏指令。
     填充控制 / 状态 : 在包处理输出宏指令中, 填充状态域由本发明的 VPN 芯片写入, 表示被插入 ( 输出 ) 和检测 ( 输入 ) 到多少填充字节。输入包的填充检测功能只在 IPSec 或 PKCS#7 填充模式下使能。此填充字节数包括附加的如在 IPSec ESP 填充中的 ‘填充长 度’ 和 ‘下个包头域’ 。
     包处理输入宏指令控制 / 状态字寄存器可以包括若干错误 / 状态指示位。
     本发明中的包处理模块源地址寄存器指示用于包处理模块的开始地址。 此模块在 输出到 PCI 或 EMI 时没有特殊要求, 当输出为 SPI_3 时位 [7:0] 设为 SPI_3 的输出端口。
     本发明中的包处理模块目的地址寄存器指定写入结果操作的目的地址 ( 开始地 址 )。包处理模块 SA 地址寄存器用于指定 SA 记录开始地址。用户 ID 寄存器用于指定包的 用户 ID。包处理模块长度寄存器长度域表示用于操作所有通过 VPN 处理器的包数据总长 ( 以字节为单位 ), 在完成一个操作后, 长度域将指定返回数据的结果长度。
     下面说明本发明中的宏指令更新。 包处理输出宏指令将会更新大多数包处理输入 宏指令域 ( 条目 )。下表显示了被更新的各域操作 :
     在从输入宏指令队列读取一组有效包处理输入宏指令后, 即按上表写回每个输入 宏指令队列条目。注意多个输入宏指令队列条目可以在一次传输连发操作中被更新。
     最后, ‘控制’ 域的所有权位被更新, 以显示 VPN 芯片已成功地读取这些条目, 使得 主机可以重新填入输入宏指令。这种设置还确保了 VPN 芯片不会从结束处返回开始重新处 理已经被处理过的宏指令。在输入宏指令队列处理后 ( 或出现错误 ), 输出宏指令将等待 DMA 输出至输出宏指 令队列。如果输入宏指令队列和输出宏指令队列顶部相互重叠, 本发明的 VPN 芯片将会探 测到这种状态, 并自动禁止输入宏指令队列条目的单独更新 ( 因为包处理输出宏指令将改 写所有权位, 因此不需要单独更新输入宏指令队列条目 )。
     需注意, 由于在本发明的 VPN 芯片中存在多个包处理引擎模块, 包处理输出宏指 令很可能以一种不同于读取包处理输入宏指令的顺序写出。对于重叠的输入宏指令队列 和输出宏指令队列, 这意味着包处理输入宏指令并不一定被相同包的包处理输出宏指令改 写。
     下面说明本发明的包处理输出宏指令。包处理模块完成一个包处理时, 在输出宏 指令队列内写入一个包处理输出宏指令。 输出宏指令队列可以认为是输入宏指令队列的一 个映射。用户指定输出宏指令队列位于哪个总线和哪个基址。这种灵活性可以使结果由芯 片控制有效地被存入到主机 ( 也就是说使用目标 DMA 写入方式 ) 而无需要求主机完成主模 式读取操作。
     通常, 如果主机不在内部输入宏指令队列缓冲区中写入包处理输入宏指令, 那么 输入宏指令队列和输出宏指令队列应在相互的顶部被覆盖, 指令相同。这样可以减少宏指 令的存储空间, 并降低存储总线开销。如果输入宏指令队列和输出宏指令队列各自在独立 的外部存储位置上, 那么还需要另外更新输入宏指令队列所有权位, 以防止包处理模块重 复处理旧的宏指令。
     通过 SPI-3 接口输出的数据包, 在包数据后附上了包处理输出宏指令。另外, P_ HD_DMA_CONFIG 寄存器可以设有专门的位来控制是否 “SPI-3 的包处理输入宏指令” 的处理 结果也写入到输出宏指令队列。这会通知主机 “PCI/EMI 到 SPI-3” 处理已经完成, 被分配 的包存储空间可以被重新分配。
     下面具体说明本发明的包处理体系结构。芯片中的包处理模块可以包括若干个 ( 例如 8 个 ) 相同的高性能的包处理引擎模块。 宏指令输入保存在芯片内缓存区中, 由指令 译码仲裁器控制宏指令输入队列和输出队列。依据包处理宏指令的译码解释, DMA 完成数 据输入输出, SA 输入或输出, 进入包处理引擎模块完成包数据处理。
     图 17 示出了本发明的包处理体系结构的示意框图。图中上半部分为所有包处理 引擎模块共享逻辑的控制。图中下半部分显示的是这些包处理引擎模块中的一个结构, 该 结构的处理是依据宏指令的控制, 将数据缓存, 并分配下一个包数据 ; 之后进行包头处理, 依据 SA 指示完成算法处理, 包尾处理和转存与输出数据缓冲区中, 由 DMA 状态机完成整个 包处理的操作。 当主机的宏指令输入到队列中后, 控制权转移到芯片, 译码器识别数据源和 目的后, 控制 DMA 操作, 并将 SA 策略的指针地址的数据传递交由 DMA 完成, 通过包处理状态 机控制完成包数据处理操作。
     包处理模块可同时支持来自 PCI-X 或 SPI-3 这两个接口的包处理输入输出宏指 令。 通过总线控制器转换 DMA 处理, 8 个以上的并行和独立的包处理引擎模块可分别或同时 接受 PCI-X 或 SPI-3 的数据。每个模块都可以使用对称加密和散列算法的部件模块。在处 理包时, 每个包处理引擎模块都能同时运行 : 芯片自动通过实施 DMA 状态机控制太阳城集团传输 和通过主总线转换、 加载到或是从主机 / 设备 / 内存上获取数据。DMA 处理包括数据流控 制, 以保证处理资源与数据流的匹配。调用 AH 处理模块及 ESP 处理模块实现 IPsec 的拆包处理。在命令仲裁后, 进行 SA 处理和命令处理。
     下面首先说明包处理引擎模块的处理模块, 如图 17 下部所示。处理模块可以包括 密码单元和散列单元, 用于执行相关的密码算法。密码单元可以进行 DES、 3DES、 AES、 ARC4 加密和解密, 同时散列单元可以进行 SHA-1 和 MD5 散列和 HMAC 算法。这些算法仅是作为示 例, 如前所述的, 处理模块所能实现算法不限于此。 围绕密码单元和散列单元的是协议包头 / 包尾处理模块, 它们负责在数据包内插入必要的域。例如 : 在一输出包内可以插入 : ESP 包头 (SPI& 序列号 )、 ESP 包尾 ( 填充, 下个包头 &ICV)、 AH 包头 ( 下个包头, SPI, 序列号 &ICV)、 对 AH 操作更新 IP 包头域 ( 下个包头、 长度、 检验和 )、 AH 操作的可变位处理、 IV 插 入。 对于一个输入包, 处理器处理如下几项操作 : 确认序列号 (IPSec ESP & AH)、 确认 ICV、 确认填充值、 剥去包头和包尾、 剥去 IV、 剥去填充。
     每个包处理模块提供输入和输出 FIFO 缓冲区 ( 例如, 2K 字节大小 )。该 FIFO 的 数据传输是完全自动进行的。算法模块数据总是使用包处理模块的 DMA 控制器传输输入 / 输出缓冲区数据。
     本发明的处理模块支持 DES, 3DES, AES(Rijndael) 和 ARC4 等算法, 并且支持 DES 及 AES 的两种操作模式 : ECB 和 CBC。加密 / 解密操作可以是高度并行的和流水线的。在协 议模式下, 使用 Ipsec 协议标准的 3DES-CBC 模式。
     算法模块可以对输入数据自动填充 (pad) 字节。 例如, 当输入数据不是 8 字节 (64 位 DES 模块 ) 或 16 字节 (128 位 AES 模块 ) 倍数时, 算法模块将自动加上填充字节。对于 如何进行填充, 有多种选择, 可以由 SA 表项指令 0 域填充控制位规定。
     下面说明包处理模块的宏指令取指控制模块。 芯片内的宏指令取指控制模块完成 DMA 的主模式读取, 以从输入宏指令队列缓冲区中提取包处理输入宏指令。控制权位可以 转换, 这样主机和芯片之间的包命令传输和执行可以异步。位于主机存储器的输入宏指令 队列缓冲区主要用于从 PCI 连接的主机与芯片之间传输包处理输入宏指令。在一个实施例 中, 从 PCI 连接的主机与芯片之间传输 6 个 32 位长度的包处理输入宏指令。
     将包处理命令输入到包处理模块可以通过 PCI-X 或 EMI 接口实现。包处理输入宏 指令在被传输到内部指令队列前, 被送到片内的输入宏指令队列缓冲区 ( 例如, 包括 32 个 表项 ) 缓存。或者, 4 个 32 位长的包处理输入宏指令也可以来自 SPI-3 接口。在这种情况 下, 这些宏指令加在数据包前给出, 因此不必通过宏指令取指控制模块处理。 这些包处理输 入宏指令在被传输到内部指令队列前, 填装到一个片内的 5 个表项的包处理输入宏指令缓 冲区缓存。来自 SPI-3 接口的宏指令节约了 2 个指令 : 一个是数据包的源指示, 一个是用户 ID( 这是主机对数椐包来源的标识 )。通过 SPI-3 接口时, 数据源一定是该接口。
     下面说明包处理模块的处理控制器 ( 加密 DMA 控制器 )。处理控制器用于控制包 引擎模块的操作, 其可以实现以下功能 :
     1. 接收来自内部缓冲区缓存的包处理输入宏指令作为输入。
     2. 当收到一个有效的宏指令, 处理控制器开始 DMA 传输, 读取安全关联 (SA) 记录。 SA 记录通过 1 个连发访问读到内部总线, 其中一些数据被送到处理模块内的安全关联寄存 器, 其它的如指令域数据送到处理控制器内的安全关联寄存器。
     3. 处理控制器解码 SA 内的指令并决定是否在提取输入包数据前还要执行其他的 DMA 传输, 比如复制旁路数据并加载 IV 或对 SA 指定的状态记录做内部摘要。4. 处理控制器检测处理模块的状态输出并产生控制输入。 对处理模块产生的 1 周 期状态机控制信号包括 : 1) 加密操作开始, 2) 安全关联 SA 数据输入结束, 3) 包数据输入开 始, 4) 包数据输出开始, 5) 包数据输入结束, 6) 包数据输出结束。
     处理模块控制总线在安全关联 SA 结束信号有效之前需稳定, 该信号用于锁存操 作类型和数据长度。
     锁存到处理模块内的控制数据决定对数据进行何种操作。除了加密算法, 此选项 还包括是否插入 / 拆除 IPSec 包头 ; 是否 AH 操作应报告有效载荷或 IP 包头 ; 是否应启动可 变位处理等。
     处理控制器监视处理模块内的可用的输入空间。一旦安全关联 SA 传输完成, 可用 空间超过预设的输入阈值, 处理控制器开始进行 DMA 传输以复制尽可能多的输入包到处理 模块。如上所述, 包数据输入优先, 以确保处理模块一直有数据处理。
     如果没有足够的输入包数据空间或者如果输入传输完成了, 处理控制器会测试输 出数据长度是否超过了预设的输出阈值。如果超过了, 会发起 DMA 传输输出包数据。这个 步骤会一直持续到收到处理模块的操作完成状态信号, 且所有输出包数据都已经写入到目 的地址。
     需注意 : 如果 SA 指定合包输入或分段输出, 处理控制器将向分散合包处理模块发 送信号 ( 而不是向 DMA 控制器发信号 ), 获得下一分段的宏指令并传输指定的字节数到处理 模块。
     在包输出完成后, 处理控制器还要处理特殊的传输, 如: 更新已经写入到输出数据 的认证数据 (ICV)。按照 IPSec 协议, 在更新输入 ESP 和 AH 包的 SA 序列号和抗重放窗口位 图之前, 处理控制器先检测认证是否失败。
     在包处理结束时, 处理控制器会建立一个 DMA 传输完成写出结果包处理输入宏指 令。在此时, 处理控制器是空闲的并准备接收下一个宏指令输入。
     图 18 示出了本发明中安全关联 (SA) 的记录格式关联 : 安全关联 (SA) 指令字 0(P_ HE_COMMAND0_OFFSET) 和安全关联 (SA) 指令字 1(P_HE_COMMAND1_OFFSET)。
     SA 管理可以通过定制的主机软件完成。 芯片 SA 管理完全依据主机的指令控制, 这 样 SA 可以在芯片内部公钥存储器或 PCI-X 总线或存储器中存储, 通过指令索引实现 SA 加 载。芯片可通过 PCI-X 或 EMI 总线读取访问主机或外部存储器的 SA 记录。每个 SA 记录的 大小为 128 字节, 对可以支持 SA 数量芯片没有限制。
     当公钥操作不在芯片上进行时, 芯片允许使用公钥算法模块中的 RAM 用于片上 SA 保存。在一个实施例中, 该 RAM 可以最多保存每个 128 字节的 64 个 SA 记录。
     在一个实施例中, 使用以下步骤在片上公钥 RAM 上存储 SA 记录 :
     1. 将 SA 写入到公钥 RAM 区, 该区不用于公钥 IKE 输入或输出参数。
     2. 在包处理输入宏指令上指定公钥 RAM 地址为 SA 地址。宏指令上的 SA 总线 ID 设为内部总线 ‘10’ 上。
     3. 将包处理输入宏指令放置在输入宏指令队列上, 并进行正常处理。
     SA 指令字 0 可以指示 : 操作码、 是入还是出、 操作组、 填充方式、 加解密算法选择、 散列算法选择、 包头处理、 源总线 ID、 目的总线 ID、 IV 来源、 是否保存 IV、 保存 HASH 状态、 是 否输入合包、 是否输出分段等等。而 SA 指令字 1 可以指示是否复制包头到输出、 是否复制有效载荷到输出、 是否复 制填充到输出、 IPV4/V6、 IP 包头可变位处理、 ECB/CBC 选择、 扩展头可变位处理、 解密密钥、 散列 / 加密偏移、 密钥长度、 ARC4 状态、 保存 ARC4 状态等。
     对于 SA 指令字, 还可以有些位被保留, 以供将来或其他使用。
     安全关联 (SA) 记录与包处理输入宏指令一起提供包处理模块所有执行操作的所 有必要太阳城集团。 SA 记录包含用于有效生命周期内的静态设置和包处理模块动态更新的所有信 息。所有需由主机确定和修正的控制太阳城集团都包含在包处理输入宏指令中。对于 SA 记录中 的内容, 芯片仅处理协议的基本操作太阳城集团, 保留的位域供主机设置使用。SA 中可以记录 : 指 令字 0 和指令字 1, 用于 DES、 3DES 和 AES 的密钥、 内部摘要、 SPI、 序列号、 抗重放窗口位图 ; 校验和、 保存的 IV、 保存的摘要字节数、 保存的内部摘要等。
     根据本发明一个方面, 为了保证加密 / 解密的最佳性能, 本发明的 VPN 芯片支持硬 件填充功能。这些功能包括 : 在加密前生成并添加填充字节至数据包明文的末端 ; 在将包 解密后校验正确的填充字节 ; 在将包解密后删除填充字节。
     在一个实施例中, 本发明的 VPN 芯片硬件可以支持四种填充模式 : IPsec 填充模 式、 PKCS#7 填充模式、 常数填充模式以及零填充模式, 如下所示 : IPsec 填充模式 : 添加 0 至 255 填充字节, 继之以填充计数 ‘n’ (0 至 255), 然后是 “下一包头” 字节。填充字节数值是 1 至 n。 “下一包头” 字节限定在填充控制寄存器中。总 共可添加 2 至 257 字节。
     PKCS#7 填充模式 : 添加 1 至 128 字节 : 填充字节数值=填充计数的十六进制值, 如 果需要 3 个填充字节, 那其应是 : ‘03, 03, 03’ 。
     常数填充模式 : 将用户指定字符的 0 至 255 字节添加至明文数据, 以确保总字节数 是 64 位的倍数。包处理输入宏指令的第一个 32 位 (P_HD_CONTROL_STATUS 寄存器 ) 给出 了填充常数 ( 从 0x00 至 0xff 的任何值 )。
     零填充模式 : 将 0x00 的 0 至 255 字节添加至明文数据, 以确保总字节数为 64 位的 倍数。
     需注意, 就 ESP、 零加密算法而言, 本发明的 VPN 芯片仍将按标准添加填充为 64 位 或 128 位的倍数 (AES 算法要求 )。
     如果主机系统希望实现一种硬件不支持的填充类型, 那么应选择模式 3( 零填 充 )。 主机只要对需加密数据的末端主动插入填充字符而确保输入包处于 64 位或 128 位的 倍数即可, 在这种情况下, 硬件不会增加任何填充字节。
     在某些填充模式中, 本发明 VPN 芯片可以进行填充校验。 例如, 在 IPSec 和 PKCS#7 填充模式中, 本发明的 VPN 芯片能够验证与期望值不同的解密填充 ( 在 ESP 中, 下一包头字 节值未经验证 )。 对于 IPSec 填充来说, 本发明的 VPN 芯片检查填充计数域的值是否符合填 充字节数, 且填充字节是以 0x01 开始的增量计数。对 PKCS#7 填充来说, 假定包的最后字节 数值为 ‘N’ , 那么在包的末端至少有 ‘N’ 个相同字节的复制字节, 本发明的 VPN 芯片对此进 行校验。
     当包处理结束时, 包处理输出宏指令 (P_HD_CONTROL_STATUS 寄存器 ) 的第一个 32 位中的状态字节将显示填充校验状态。 如果选择了填充模式 2 或 3, 则不会出现填充错误报 告。
     可选的, 本发明的 VPN 芯片可去除使用 IPSec 或 PKCS#7 填充的输入包操作中的解 密填充字节, 节省 I/O 总线的数据传输太阳城集团。这是由每个包的 SA 记录分别决定。
     根据本发明一个方面, 芯片可灵活处理 DES/3DES/AES 初始向量 (IV)。 就输出包数 据而言, IV 可以以以下三种模式中的任一种来读取 : 能自动插入 ( 随机值 ) ; 可从数据输入 缓冲器的开始处读取 ; 可从 SA 的状态记录中读取 ( 输入宏指令队列和输出宏指令队列已激 活 )。第一种模式是最有效的, 因为这种模式不需要任何额外的 I/O, 而且主机处理器不需 要提供 IV。当使用模式 3 时, 应该使状态记录中的 IV 随发送的各包进行变化。可在处理包 结束时 ( 通过本发明的 VPN 芯片将 IV 写回至状态记录 ) 做到这一点。
     对于输入包数据而言, IV 可以以下两个模式中的任一模式读取 : 可从数据输入缓 冲器的开始处读取 ; 可从 SA 的状态记录中读取 ( 输入宏指令队列和输出宏指令队列已激 活 )。在大多数协议中, 如 IPSec 协议, IV 明确被传递至包的前部, 因此应采用模式 1。
     图 19 示出了本发明包处理模块的配置寄存器模块。如图所示, 本发明包处理模 块的配置寄存器模块包括多个全局寄存器, 包括 : 包处理模块 DMA 配置寄存器 (P_HD_DMA_ CONFIG) ; 总线 ID 配置寄存器 (P_HD_BUS_ID_CONFIG) ; 输入宏指令队列的源基址寄存器 (P_HD_PDR_SRC_BASE_ADDR) ; 输入宏指令队列的大小及偏移寄存器 (P_HD_PDR_SRC_SIZE_ OFFSET) ; 输出宏指令队列目的基址寄存器 (P_HD_PDR_DST_BASE) ; 输出宏指令队列的大小 和偏移寄存器 (P_HD_PDR_DST_SIZE_OFFSET) ; 输入宏指令队列的轮询寄存器 (P_HD_PDR_ RING_POLL) ; 输入宏指令队列外部状态寄存器 (P_HD_PDR_SRC_SIZE_OFFSET) ; 包处理模块 I/O 阈值寄存器 (P_HD_MIN_INPUT_OUTPUT_SIZE)。
     具体说明如下。
     下面说明处理模块 DMA 配置寄存器是驱动芯片在线最后写入的一个寄存器, 用于 选择控制包处理路径的静态设置。 这些设置在初始化时被典型设置, 并不再改变。 该寄存器 指示是否复位所有的处理模块, 是否复位输入宏指令队列计数器 / 指示器, 是否复位分段 / 合包缓存, 是否使能监控复位, 输入宏指令源队列总线 ID、 输入宏指令目的队列总线 ID、 输 入宏指令和输出宏指令启动、 集中分段缓存队列总线 ID、 是否应用大小尾端交换到输入宏 指令 ( 仅 PCI/PCIX)、 是否应用大小尾端交换到 SA、 是否应用大小尾端交换到包数据、 是否 应用大小尾端交换到分段 / 合包宏指令、 MPPE 最大密钥更新次数、 是否为串行模式、 是否启 动写入 SPI3 包处理输出宏指令。
     注意 : 如果输入宏指令和输出宏指令启动位被设为 ‘1’ ( 输入宏指令队列和输出 宏指令队列使能 ), 芯片将立即开始输入宏指令队列的状态机管理。
     具体说明如下 :
     对于复位所有的包处理模块位, 需注意 : 在初始化后, 复位控制寄存器 (P_KM_ RESET_CONTROL) 应被用于执行本发明的 VPN 芯片每个模块的异步复位, 包括包处理模块
     对于复位输入宏指令队列计数器 / 指示器位, 需注意 : 如果输入宏指令队列没有 使能, ( 此寄存器位 8 设为 ‘0’ ), 那么此位会以复位状态留下。另外此复位需与宏指令状 态机的 ‘所有权人’ 相协调, 确保指示器在复位后的同步。
     对于复位分段 / 合包缓存位, 需注意 : 此复位需与分段缓冲区的 ‘所有权人’ 相协 调, 确保指示器在复位后的同步。
     对于使能监控复位位, 需注意 : 此致命错误的原因会是在 AES 操作中的无效填充或是用于 AH 操作的无效 IP 包头
     对于输入宏指令和输出宏指令启动位, 需注意 : 如果包处理输入宏指令和 / 或包 处理输出宏指令将被执行, 那么此位应被启动 ( 设为 “1” )。复位值= ‘0’ 。由于 SPI-3 宏 指令包括在输入数据流的开始中, 因此 SPI-3 不使用包处理输入宏指令管理器。
     对于应用大小尾端交换到输入宏指令位, 需注意 : 如果启动设为 ‘1’ , 大小尾端交 换将由 P_PA_TGT_HASHENC_ENDIAN 寄存器最低位指定。另外, 如果在 P_PA_TGT_HASHENC_ ENDIAN 寄存器内没有大小尾端交换指定, 那此位设置无效。如果设置为 ‘0’ , 那么包处理输 入宏指令将被提取时不带任何大小尾端交换
     对于 MPPE 最大密钥更新次数位, 需注意 : MPPE( 微软点对点加密 ) 是一种用于 PPTP 生成加密连接的加密协议。当把 MPPE 与分段 / 合包合成时, 需在包数据前附一个 32 位数, 并且将旁路偏移量设置为 4 用于去除所附的 32 位数。
     下面说明总线 ID 配置寄存器。此寄存器的目的是建立芯片的运行环境, 此环境是 用于选择和使用可用的总线 : 如 PCI, EMI, 内部总线以及 SPI-3。为宏指令译码控制和数据 输入输出传输控制产生控制源。 注意 : 在复位以后的缺省状态下芯片处于等待, 不允许任何 输入 / 输出传输, 仅当运行环境建立后, 才开始执行控制。
     此寄存器可以指示是否启动高可靠模式、 HAE 脚状态、 输入宏指令队列总线 ID、 SPI3 总线 ID 配置、 是否启动红色 / 黑色传输包处理输入宏指令、 包处理输入宏指令固定总 线处理、 SPI3 红色 / 黑色传输启动、 固定 SPI3 总线处理、 高可靠模式测试控制。
     在该寄存器中定义了包如何流过本发明的 VPN 芯片芯片, SA 源自何处, 以及是否 执行分段 / 合包处理, 是否总线 ID 固定或者通过使用 SA 记录里的总线 ID 域确定, 来自输 入宏指令队列的包源、 目的和 SA 总线 ID 是否固定, SPI-3 输入包的目的和 SA 总线 ID 是否 固定。
     通过对输入宏指令队列源和 SPI-3 接口输入包的总线 ID 固定分配, 可以使得分配 一个接口只用于明文数据、 密文数据或两个都用。 也可能定义一个固定源总线 ID、 固定目的 总线 ID 和固定 SA 总线 ID。对于 SPI-3 接口也是同样, 不过, 此时源 ID 不被定义, 因为当使 用 SPI-3 用于包处理输入宏指令时, 源总线 ID 总是 SPI-3 接口。
     固定分配包处理输入宏指令源和 SPI-3 接口的使用适用于要求明文 / 密文数据物 理分离的应用。例如 : 来自包处理输入宏指令队列的输入包, 对应的位能被设置为明文输 入; 对来自 SPI-3 的输入包, 对应的位能被设置用于密文输入。这将指定 PCI-X 接口为明文 包处理输入宏指令, 指定 SPI-3 接口为密文包处理输入宏指令。对于来源于包处理输入宏 指令队列的输入包, 源总线 ID( 位 [9:8]) 将被设置到 PCI, 目的总线 ID 将被设置到 SPI-3。 对于来源于 SPI-3 的输入包, 目的总线 ID 将被设置到 PCI-X, 源缺省值为 SPI-3。SA 总线 ID 位可任意设置, 但出于性能和安全的考虑推荐设置为 EMI, SA 访问在芯片的外部存储器。
     下面说明本发明的输入宏指令队列的源基址寄存器。该寄存器值仅在 P_HD_DMA_ CONFIG 寄存器的位 ( 输入宏指令和输出宏指令启动位 ) 被设置为 ‘1’ , 启动包处理输入宏 指令和包处理输出宏指令管理器时产生作用。适用于来自 PCI-X 和 EMI 的宏指令。输入宏 指令队列的源基址寄存器允许主机指定 PCI-X 存储空间的输入宏指令队列的源基址设置。
     下面说明本发明的输入宏指令队列的大小及偏移寄存器。该寄存器值仅在 P_HD_ DMA_CONFIG 寄存器的位 ( 输入宏指令和输出宏指令启动位 ) 被设置为 ‘1’ , 启动包处理输入宏指令和包处理输出宏指令管理器时产生作用。适用于 PCI-X 和 EMI。输入宏指令队列 的大小及偏移寄存器可以指示输入宏指令队列大小 ( 表项数 )、 输入宏指令队列偏移。
     下面说明本发明的输入宏指令队列目的基址寄存器。该寄存器值仅在 P_HD_DMA_ CONFIG 寄存器的位 ( 输入宏指令和输出宏指令启动位 ) 被设置为 ‘1’ , 启动包处理输入宏 指令和包处理输出宏指令管理器时产生作用。适用于 PCI-X 和 EMI。输入宏指令队列目的 基址寄存器指令指示输出宏指令队列基址。
     下面说明本发明的输出宏指令队列的大小和偏移寄存器。该寄存器值仅在 P_HD_ DMA_CONFIG 寄存器的位 ( 输入宏指令和输出宏指令启动位 ) 被设置为 ‘1’ , 启动包处理输 入宏指令和包处理输出宏指令管理器时产生作用。适用于 PCI-X 和 EMI。输出宏指令队列 的大小和偏移寄存器指令用于指示输出宏指令队列大小和输出宏指令队列偏移。
     下面将说明本发明的输入宏指令队列的预约登记寄存器。该寄存器值仅在 P_HD_ DMA_CONFIG 寄存器的位 ( 输入宏指令和输出宏指令启动位 ) 被设置为 ‘1’ , 启动包处理输 入宏指令和包处理输出宏指令管理器时产生作用。适用于 PCI-X 和 EMI。该寄存器指令指 示队列预约查询因子 ( 设置值用于分频并得到查询太阳城集团频率 )、 队列重试因子 ( 设置值用于 分频并得到重试太阳城集团频率 )、 是否连续取指。
     根据本发明的一个实施方案, 包处理模块的输入宏指令队列轮询寄存器允许设置 两个用于宏指令取指控制器的轮询参数 : 第一个参数是 VPN 芯片从外部输入宏指令队列读 取宏指令进入到内部输入宏指令队列缓存的基本查询频率 ; 以及第二个参数是重试太阳城集团间 隔, 指定 VPN 芯片读取无效宏指令条目 ( 所有权位不是分配给本发明的 VPN 芯片芯片 ) 后, 再次重试之间需要等待的太阳城集团。此重试太阳城集团间隔应设置为比轮询等待太阳城集团间隔短的周期, 否则下一个查询将先于重试。这两个参数都主要用于限制宏指令查询过程所消耗的带宽。
     需注意 : 读取宏指令中断可能先于查询等待太阳城集团进行, 这会导致间隔太阳城集团没到就 执行宏指令读取。这种情况下, 查询等待太阳城集团会重新复位到开始点。另外, 需注意 : 如果宏 指令被直接写入到芯片内部输入宏指令队列缓存, 那么此寄存器被忽略。此模式被配置为 输入宏指令和输出宏指令启动位。
     下面说明本发明的输入宏指令队列外部状态寄存器。输入宏指令队列外部状态 寄存器指令用于指示包处理输入宏指令 - 输入宏指令队列读取计数器、 包处理输入宏指 令 - 输出宏指令队列写入计数器。
     下面说明本发明的包处理模块 I/O 临界值寄存器。包处理模块输入 / 输出缓冲区 阈值寄存器, 用于指定包处理模块应开始向包处理缓冲区 RAM 传输包数据或输出包数据的 “最大限度” 和 “最小限度 “的长度设置, 用于控制来自包处理模块的包数据输入和输出的 DMA 连发数据存取大小。该寄存器指示包处理模块输入临界值、 Pkt 输入完成、 包处理模块 输出临界值等。
     需注意 : P_DMA_APP_ 指令寄存器传输长度设置将可以限制通过 PCI-X 接口传输的 数据长度。复位值 0x008 是非常短的包数据连发存取, 但它仍是有用的, 因为很难提供一种 可满足所有尺寸包的设置。输入和输出阈值表示高于该值输入缓冲区将停止要求输入数 据, 同时输出缓冲区开始要求输出数据的的长度 (32 位为单位 )。对于输入缓冲区, 最好设 置阈值高一些, 以平衡用户希望在包处理模块源接口上的最大连发存取尺寸要求。长连发 存取将长太阳城集团占用总线, 但传输效率会更高。 对于输出缓冲区, 理想的阈值设置是对于满足小于 2K 字节的输出缓冲大小的包, 可以通过一次连发操作完成输出。期望在包处理模块处 理数据的最后部分时就开始从缓冲区中传输数据包 ( 即边处理边输出 ), 这样将使得处理 和写出的完成是差不多在同时完成的。这需依据将要传输的包的长度而定。
     下面具体说明根据本发明示例性实施例对包的处理。
     图 20 示出了根据本发明的基本加密包格式。根据本发明的一个实施方式, 主机需 按照以下方式准备输入数据 :
     如果设置了安全关联 (SA) 指令字 P_HE_COMMAND0_OFFSET“从输入装载 IV” , 则: a) 主机需将 IV 放在在旁路偏置的后面, 有效载荷的前面 ; b) 对于基本加密运算, 本发明的 VPN 芯片自动对 IV 偏置使用标准设置值。即, 如果使用 DES/3DES, 芯片自动以 64 位 IV 定 位有效载荷位置 ; 如为使用 AES, 则依据 128 位 IV。
     本发明的 VPN 芯片在包处理上执行以下操作 :
     1. 从源复制 “旁路偏置” 数据到目的地址。
     2. 如果设置了 “从输入装载 IV” , 则从输入流中获取 IV, 并用于加密。否则, 使用 来自于根据 P_HE_COMMAND0_OFFSET[25:24] 定义的其他源获取 IV。
     3. 根据安全关联 (SA) 指令字 P_HE_COMMAND0_OFFSET[7:6] 附加填充。
     4. 使用指定的算法对包进行加密, 并将结果写出到目的地址。
     5. 在包处理输出宏指令队列中更新数据包长度、 “状态” 和 “VPN 芯片完成” 。在包 处理输入宏指令 ( 如果和输出宏指令队列分开的话 ) 中更新 “VPN 芯片完成” 。
     需注意, 即使对 “零加密算法” 运算, 仍然需要填充到 64 位的倍数 ( 对于 ARC4, 不需要添加填充 )。还需注意, IV 应传输给收方, 如果设置了安全关联 (SA) 指令字 P_HE_ COMMAND0_OFFSET[28], 则可从 “状态” 记录中获取 IV。另外, 还需注意, 对于基本加密操作, 使能 “复制包头到输出” 不会将 IV 从源地址复制到目的地址。
     图 21 示出了根据本发明的基本解密包格式。根据本发明的一个实施例, 对应的, 主机需按照以下方式准备行输入数据 :
     如果设置了安全关联 (SA) 指令字 P_HE_COMMAND0_OFFSET“从输入装载 IV” , 则:
     a) 主机需将 IV 放在旁路偏置之后, 有效载荷的前面。
     b) 对于基本解密运算, VPN 芯片自动对 IV 偏置使用标准设置值。即, 如果使用 DES/3DES, 芯片自动以 64 位 IV 定位有效载荷位置 ; 如为使用 AES, 则依据 128 位 IV。
     根据本发明的一个实施例, 本发明的 VPN 芯片在包上执行以下操作 :
     1. 从源复制 “旁路偏置” 数据到目的地址。
     2. 如果设置了 “从输入装载 IV” , 则从输入流中获取 IV, 并用于解密。否则, 使用 来自于根据安全关联 (SA) 指令字 P_HE_COMMAND0_OFFSET[25:24] 定义的其他源。
     3. 使用指定的算法对包进行解密, 并将结果写出到目的地址。
     4. 如果没有设置 “复制输入填充到输出” , 且如果填充类型不是 “零” 或常数填充, 则检查并丢弃来自加密有效载荷的填充。
     5. 在输出宏指令中更新数据包长度、 “状态” 和 “VPN 芯片完成” 。在包处理输入宏 指令 ( 如果和输出宏指令队列分开的话 ) 中更新 “VPN 芯片完成” 。
     需注意 : 对零加密算法数据需要做填充, 对 ARC4 密文不需要 ; 设置 “复制包头到输 出” 不会将 IV 从源复制到目的地址。图 22 示出了基本 HASH 包格式。
     根据本发明的一个实施方案, 主机需通过 SA 记录中的安全关联 (SA) 指令字 P_ HECommand0_OFFSET 使能 “保存 HASH 状态” 控制, 则 VPN 芯片将在运算结束后将 hash 摘要 填入 SA 状态纪录中。输出的有效载荷中不包括 HASH 摘要。
     本发明的 VPN 芯片在包上执行以下运算 :
     1. 从源复制” 旁路偏置” 数据到目的地址。
     2. 使用指定的算法对有效载荷进行 HASH 或 HMAC 运算。
     3. 若设定了 “保存 HASH 状态” , 将字节数和 HASH 摘要写到该 SA 的状态记录。
     4. 如果设定了 “复制有效载荷到输出” , 则将有效载荷写到目的地址。
     5. 在输出宏指令中更新数据长度、 “状态” 和 “VPN 芯片完成” 。在包处理输入宏指 令 ( 如果和输出宏指令队列分开的话 ) 中更新 “VPN 芯片完成。
     需注意, 本发明的 VPN 芯片可按照标准要求自动执行 MD5 或 SHA-1 填充。
     图 23 示出了基本 HASH- 加密包格式。 根据本发明的一个实施方案, 主机需通过 SA 记录中的安全关联 (SA) 指令字 P_HECommand0_OFFSET 使能 “保存 HASH 状态” 控制, 则 VPN 芯片将在运算结束后将 hash 摘要填入 SA 状态纪录中。输出的有效载荷中不包括 HASH 摘 要。 主机需按以下方式进行输入数据的准备 : 如果设定了 “从输入装载 IV” : 主机需将 IV( 如果使用的话 ) 放在有效载荷的前面 : 如 DES/3DES, 则 64 位 : 或者, 如 AES, 则 128 位。
     主机需将安全关联 (SA) 指令字 P_HECommand1_OFFSET 中的 “HASH/ 加密偏置” 设 置为对应 IV 的长度 ( 如果使用的话 ) : 如 DES/3DES, 则 2 个 32 位 : 或者, 如 AES, 则 4 个 32 位 ( 注意, HASH/ 加密偏置中需要进行 HASH 而不加密的部分还可以包含更多的数据, 而不 仅是 IV)。
     需注意, 本发明的 VPN 可按照标准要求自动执行 MD5 或 SHA-1 填充。即使对 “零加 密算法” 运算, 仍然需要填充到 64 位的倍数。
     图 24 示出了根据本发明一个实施例的基本 HASH- 解密包格式。
     对于 Hash 解密, 根据本发明一个实施方式的 VPN 芯片在包上执行以下运算 :
     1. 从源复制” 旁路偏置” 数据到目的地址。
     2. 如果设置了 “从输入装载 IV” , 则从输入数据装载 IV。
     3. 解密并重新认证数据包 ( 如 DES/3DES, 则 HASH/ 加密偏置可为 64 位 ; 如 AES, 则 128 位 ; 或者如果附加其他数据, 可为更长。)
     4. 如没有设定 “复制包头到输出” , 丢弃整个 HASH/ 加密偏置, 包括 IV。 注意 : 如果 该偏置超过 IV 的长度 ( 除 IV 外还包括其他数据 ), 则 IV 被认为是偏置数据中最靠近有效 载荷的数据 : 如 DES/3DES, 则 64 位 ; 或者, 如 AES, 则 128 位。
     5. 如果没有设定 “复制输入填充到输出” , 则丢弃填充值 ( 仅对 IPSec/PKCS 填充 模式丢弃, 对零或常数填充则不丢弃 )。
     6. 如果设定了 “保存 HASH 状态” , 则将 HASH 摘要写到该 SA 的状态记录。
     7. 写有效载荷到目的地址。 注意 : 在一次包含加密或解密的运算中, 本发明的 VPN 芯片均将复制有效载荷到输出, 不管 “复制有效载荷到输出” 的设置如何。
     8. 在输出宏指令中更新数据长度、 “状态” 和 “VPN 芯片完成” 。在包处理输入宏指
     令 ( 如果和输出宏指令队列分开的话 ) 中更新 “VPN 芯片完成。注意 : VPN 芯片即始对零加 密数据也查验填充值。
     图 25 示出了根据本发明一个实施例的 ESP 输出隧道模式包格式。根据本发明一 个实施方式, 在内部包头前还可附上 ESP 头和 IV( 可选 ), 在图中没有显示出来。在隧道模 式中, 理论上 ESP 是在添加外部 IP 包头前进行的。但主机可以选择预构造外部 IP 包头, 并 使用旁路功能而使得在 VPN 芯片不被处理。
     主机须按以下方式准备输入数据 :
     1. 如果没有使能 “包头处理” (HEADER_PROCESSING) :
     a) 主机需包含 ESP 包头 (SPI、 序列号 ), 在旁路数据 ( 如果有的话 ) 之后, 在任何 其他数据之前。
     b) 如果设定了 “从输入装载 IV” : 主机需将 IV 放在有效数据的前面。
     主机可能会选择在 VPN 芯片进行处理之前或之后加外部隧道 IP 包头。如果隧道 包头在加密处理之后加, 那么旁路偏置应该被设置为 0。VPN 芯片不会处理包含在旁路偏置 中的外部 IP 包头。如果在外部 IP 包头中在 ESP 头之前存在 IPv4 选项或 IPv6 扩展包头, 那么也应该被包括进旁路偏置数据中。即使对一个 “零加密算法” 运算, 仍将添加填充 (ESP 有要求, 目的是为了为 “下一包头” 域留出空间 )。对于 “零加密算法” , 填充至 64 位的倍数。 图 26 示出了根据本发明一个实施例的 ESP 输入隧道模式包格式。在一个实施例 中, 本发明的 VPN 芯片在包上执行以下操作 :
     1. 从源复制” 旁路偏置” 数据 ( 如果出现的话 ) 到目的地址。
     2. 如果使能 “包头处理” (HEADER_PROCESSING), 解析 ESP 包头, 并对照 SA 中的预 期 SPI、 预期序列号和抗重放窗口位图对 SPI 和序列号进行验证 ( 如果出现旁路偏置, 后面 紧跟着的就是 ESP 包头 )。
     3. 从输入数据装载 IV。IV 紧随 ESP 包头之后。
     4. 解密并认证数据包。
     5. 如果没有设定 “复制包头到输出” , 则丢弃 ESP 头和 IV。
     6. 验证 “密文填充” 并提取下一包头。
     7. 如果没有设定 “复制输入填充到输出” , 则丢弃 “填充” ( 对于 ESP 运算, 填充部 分包含了 ESP 包尾 ( 填充 + 填充长度 + 下一包头 ))。
     8. 如果认证算法不是零算法, 则对照包含在数据包中的 ICV 和计算的 ICV 进行验 证。
     9. 如果认证算法不是零算法, 则丢弃包中所包含的 ICV。
     10. 如果使能 “包头处理” (HEADER_PROCESSING), ICV 验证正确, 且 SPI 和序列号 有效, 则在 SA 记录中更新 “序列号” 和 “抗重放窗口位图” 域。
     11. 在输出宏指令中更新数据包长度、 “下一包头” 、 检测的填充长度、 “状态” 和 “VPN 芯片完成” 。在包处理输入宏指令 ( 如果和输出宏指令队列分开的话 ) 中更新 “VPN 芯 片完成” 。
     在本发明的一些实施例中, 主机将剥离外部隧道 IP 包头, 然后再将其送给 VPN 芯 片进行解密。但是, 也可以通过使用旁路偏置数据, 使其直接通过 VPN 芯片。
     在本发明的一些实施例中, 不管 “复制包头到输出” 、 “复制有效载荷到输出” 或 “复
     制填充” 域是如何被设置的, 均不会将 ICV 返回给主机。
     图 27 示出了根据本发明一个实施例的 ESP 输出传输模式包格式。本发明的 VPN 芯片在 ESP 传输模式中的运算与隧道模式完全相同。主机可以选择使用旁路功能来传输内 部 IP 包头, 但在此情况下, 本发明的 VPN 芯片将不更新 IP 包头来反应变更的数据包长度、 下一包头或校验和。主机需完成这些操作。
     主机可选择将内部 IP 包头传输给本发明的 VPN 芯片或不传输。上述例子描述的 是将内部包头传输给 VPN 芯片并通过芯片进行简单复制的范例。如果内部包头被安排在算 法处理之后加, 则旁路偏置应被设置为 0。
     如果有附在 ESP 包头之前的 IPv4 选项或 IPv6 扩展包头, 则应将它们包含在旁路 偏置数据之内。
     图 28 示出了根据本发明一个实施例的 ESP 输入传输模式包格式。当设置了 “复制 包头到输出” 时, 在输出中可包含 ESP 包头和 IV。此外, 当设置了 “复制填充” 时, 在该输出 中可包含 ESP 包尾 ( 填充 + 填充长度 + 下一包头 )。VPN 芯片在 ESP 传输模式中的运算与 隧道模式完全相同。 主机可以选择使用旁路功能来传输内部 IP 包头, 但在此情况下, VPN 芯 片将不更新 IP 包头来反应变更的数据包长度、 下一包头或校验和。主机须执行这些操作。
     一般情况下, 主机将剥离外部隧道 IP 包头, 然后再将其送给 VPN 芯片进行解密。 但 是, 也可以通过使用旁路偏置数据, 使其直接通过 VPN 芯片。
     图 29 用于说明根据本发明实施例的 AH 包头定位及可变位处理 (IPV6)。图 30 用 于说明根据本发明实施例的 AH 包头定位及可变位处理 (IPV4)。
     图 31 示出了根据本发明实施例的 AH 输出包格式。在输入中, 在 IP 内部包头之前 和之后都可出现选项和扩展包头, 在图中未示出。当没有设定包头处理时, AH 头包括在输 入中。无论隧道模式和传输模式都一样。
     主机需按照以下要求准备输入数据 :
     如果没有使能 “包头处理” (HEADER_PROCESSING) :
     主机需紧随 IP 外部包头之后包含 AH 包头 ( 下一包头、 包头长度、 SPI、 序列号、 加 上留给 ICV 的若干字节的 “空档” )。在 IPv6 情况下, 在 AH 包头之后可放置与 IP 外部包 头相关的目的扩展包头。IP 外部包头需正确设置自己的 “下一包头” 、 “长度” 和 “校验和 (IPv4)” 域, 以反应 AH 包头的状况。由于 HMAC 操作包含包头, 这些域在经过 VPN 芯片的操 作之后不会更新。
     VPN 芯片在包上执行以下运算 :
     1. 从源复制旁路偏置数据 ( 如果有的话 ) 到目的地址。
     2. 如使能 “包头处理” : 插入 AH 包头到包中, 包括下一包头、 包头长度, 加上来自 SA 的 SPI 和序列号。注意, “下一包头” 域是来自主机提供的包处理输入宏指令。在外部 IP 包 头中更新下一包头、 长度和校验和 (IPv4)。在 SA 记录中更新 “序列号” 。
     3. 在 AH 包头中在 ICV 位置填零。
     4. 根据 IPsec 标准, 对数据包进行 HMAC 运算。 如果设置了 “可变位处理” (MUTABLE_ BIT_HANDLING), 则此操作将所有可变位置零处理。
     5. 将截取的 96 位 ICV 写入到 AH 包头中。
     6. 如果没有设定 “复制包头到输出” , 则丢弃 IP 外部包头。7. 如果没有设定 “复制有效载荷到输出” , 则丢弃 IP 内部包头和有效载荷。
     8. 在输出宏指令中更新新的长度、 “状态” 和 “VPN 芯片完成” 。在包处理输入宏指 令 ( 如果和输出宏指令队列分开的话 ) 中更新 “VPN 芯片完成。
     由于外部 IP 包头和内部 IP 包头都需要进行认证, 因此通常情况下旁路偏置将被 设置为 0。当其他系统控制数据附在到包上时, 可以使用旁路偏置功能。如果 “复制包头 到输出” 和 “复制有效载荷到输出” 都没有被设置, 那么仅仅返回 ICV, 且结果长度= 12(96 位 )。当 “复制包头到输出” 或 “复制有效载荷到输出” 使能时, 均返回 AH 头 +ICV。
     图 32 示出了根据本发明实施例的 AH 输入包格式。在输入中, 在 IP 内部包头之前 和之后都可出现选项和扩展包头, 在图中没有示出。
     VPN 芯片在包上执行以下操作 :
     A. 从源复制任何” 旁路偏置” 数据 ( 如果有的话 ) 到目的地址。
     B. 查找 AH 包头的位置 (IPv4 : VPN 芯片通过读取外部包头长度来计算与 AH 包头 之间的偏移。IPv6 : VPN 芯片通过外部 IP 包头和扩展包头来定位 AH 包头 )。
     C. 如果使能 “包头处理” (HEADER_PROCESSING), 则解析 AH 包头, 并对照 SA 中的 SPI、 预列号和抗重放窗口位图对 SPI 和序列号进行验证。
     D. 将来自数据包的 ICV 保存到一个临时缓存, 将包中的 ICV 置零。对包进行 HMAC 运算, 并对照保存在临时缓冲中的 ICV 验证结果。
     E. 如果没有使能 “复制包头到输出” , 则从数据包中剥离 IP 外部包头 ( 还要剥离 可能出现的 AH 包头和扩展包头 )。
     F. 如果没有使能 “复制有效载荷到输出” , 则剥离 IP 内部包头和数据包的有效载 荷部分 [ 注意 : 如果既没有设定 “复制包头到输出” 也没有设定 “复制有效载荷到输出” , 则 结果长度可能为零 ]。
     G. 如果 SPI、 序列号和 ICV 都验证正确, 则更新 SA 记录中的 “序列号” 和 “抗重放 窗口位图” 域。
     H. 在输出宏指令中更新结果长度、 “下一包头” 、 “状态” 和 “VPN 芯片完成” 。在包 处理输入宏指令 ( 如果和输出宏指令队列分开的话 ) 中更新 “VPN 芯片完成。
     由于外部 IP 包头和内部 IP 包头都需要进行认证, 通常情况下旁路偏置将被设置 为 0。当其他系统控制数据附在到包上时, 可以使用旁路偏置功能。对于 AH 输入来说, VPN 芯片不会更新外部 IP 包头中的任何域 ( 例如下一包头、 长度以及校验和域 )。 主机需在 VPN 芯片完成后对这些域进行更新。注意, 当设定了 “复制包头到输出” 后, 将返回 AH 头 +ICV。 当选择了零加密算法后, VPN 芯片不验证填充。
     图 33 示出了根据本发明实施例的 ESP 和 AH 输出隧道模式包格式。捆绑运算通过 使用多个指向同一个数据包的连续包处理输入宏指令来实现。 “相关包” 位需在所有的、 除 最后宏指令之外的宏指令中进行设置。
     运算 1 : 第一个宏指令指定执行 ESP 隧道模式 :
     1. 第一个宏指令指定一个旁路偏置, 等同于外部隧道包头和所有选项 / 扩展的大 小。
     2. 如果没有使能 “包头处理” , 则主机需要在需要旁路的数据中包含进 AH 包头。 AH 包头的 “下一包头” 域需被设置为 ESP。运算 2 : 第一个宏指令指定执行 AH 隧道模式 : 1. 由于 AH 需认证整个数据包, 第二个宏指令的旁路偏置指定为 0。 2. 在该运算阶段, VPN 芯片需更新 IP 外部包头的数据长度、 下一包头和校验和等数据。 外部隧道 IP 包头需被包含在数据包内提交给 VPN 芯片, 因为在 AH 认证中需包括 外部隧道 IP 包头。
     图 34 示出了根据本发明实施例的 ESP 和 AH 输入隧道模式包格式。捆绑运算通过 使用多个指向同一个数据包的连续包处理输入宏指令来实现。 “相关包” 位需在所有的、 除 最后宏指令之外的宏指令中进行设置。
     运算 1 : 第一个宏指令指定, 执行输入 AH 隧道模式 :
     a) 第一个宏指令指定旁路偏置为 0, 因为 AH 需认证整个数据包。
     b) 如果没有使能 “复制包头到输出” , 则丢弃 IP 外部包头和 AH 包头。
     运算 2 : 第二个宏指令指定执行输入 ESP 隧道模式 :
     a) 如果设定了 “复制包头到输出” , 第 2 个宏指令需指定一个旁路偏置, 等同于外 部隧道包头的大小, 包括所有选项 / 扩展, 以及 AH 包头。
     外部隧道 IP 包头需被包含在数据包内提交给 VPN 芯片, 因为在 AH 认证中需包括 外部隧道 IP 包头。当选择了零加密算法后, VPN 芯片将不验证填充。
     图 35 示出了根据本发明实施例的 SPI-3 常规输出包格式。主机需按照以下方式 进行输入数据的准备 :
     ·每一个输入到 SPI-3TX 接口上的数据包需在其前有一个包处理输入宏指令。
     ·包数据的字节长度需完全等同于宏指令中所规定长度。
     ·SPI-3 包的总长度需完全等同于包数据长度加包处理输入宏指令的字节数。
     包数据格式可以包括一个旁路数据域、 一个 IV 和依协议而定的包头。每一个输出 到 SPI-3RX 接口上的数据包都有一个包处理输出宏指令尾随其后 ( 例如 16 字节 )。目的 地址域为 SPI-3 端口号, 数据包通过此端口进行传输。包数据的字节长度等同于宏指令中 所规定的长度。包数据可能有一个零长度, 在这种情况下, SPI-3 包只有一个宏指令。包处 理输出宏指令在 SPI-3 传输的数据包中可以以 64 位计数定位。在此情况下, 若包数据不是 64 位的倍数, 则在包数据和宏指令之间需要插入 1-7 个字节的填充。这些填充字节的值不 做规定。包数据格式包数据格式可以包括一个旁路数据域、 一个 IV 和依协议而定的包头。 该格式不适用于带 “复制有效载荷” 的 AH 输出包。
     图 36 示出了根据本发明实施例的 SPI-3 带复制有效载荷的 AH 输出包格式。在 AH 输出包情况下, 只有在整个包被 HASH 之后才能够知道 ICV。因此, 在此情况下, SPI-3RX 将 在有效载荷之前输出一个无效 ICV, 并在有效载荷之后及输出宏指令之前输出正确的 ICV。
     根据本发明一个方面, 包数据是一个 AH 包, AH 包的 ICV( 例如 12 字节 ) 初始化为 “零” 。它包括一个 IP 包头, 随后为扩展包头 ( 可选 ), 再随后为一个带无效 ICV 零的 AH 包 头, 再随后为其他包头 ( 可选 ), 最后为一个 AH 有效载荷数据。 包数据的总字节长度在宏指 令的长度域中规定。正确的 ICV 值在 SPI-3RX 传输的数据包中以 64 位计数定位。因此, 若 在此之前的包数据不是 64 位的倍数, 则在包数据和 ICV 之间需要插入 1-7 个字节的填充。 这些填充字节的值不做规定。包处理输出宏指令可以同样也以 64 位计数定位, 因此始终与
     ICV 保持 4 字节填充的间隔。这些填充字节的值不做规定。接受 AH 包的主机需对整个包进 行缓冲处理, 并在正确位置插入正确的 ICV, 然后才能将该包转发出去。
     图 37 示出了根据本发明实施例的 MPPE 输出。在图中, 如果没有使能 “包头处理” , 则需在输入数据包中放置 MPPE 包头。
     主机需按照以下方式准备输入数据 :
     如果没有使能 “包头处理” , 主机需在输入数据包中包括 MPPE 包头。该包头长度为 4 个字节, 开始字节为 0x00 和 0xfd( 压缩数据包的 PPP 协议包头 )。第 3 个和第 4 个字节 包含 12 位一致性计数 ( 第 3 个字节是高字节 ) 和 4 位标识 ( 分别标识 A ~ D)。D 标识位 需被设定, A 标识位是重开始位, 在以下情况下需设定 :
     a) 不带状态的 MPPE。
     b) 在带状态 MPPE 的情况下, 第 1 个数据包或者在复位请求后需设置。在此情况 下, 数据包处理输入宏指令中控制状态域的位 [3] 需被设置。
     c) 对于带状态 MPPE, 如果一致性计数的最低字节是 0Xff。
     VPN 芯片在包上执行以下操作 :
     A. 从源复制 “旁路偏置” 数据 ( 如果出现的话 ) 到目的地址。
     B. 如果使能 “包头处理” : SA 中的一致性计数加 1。在数据包中插入 4 字节长 MPPE 包头, 包括 : PPP 协议包头 0x00、 0xFD、 12 位一致性计数 ( 储存在 SA 中 ) 以及 A 到 D 的 4 位 标志位。
     C. 根据 MPPE 模式和包处理输入宏指令的控制状态域中位 [3], 更新 RC4 密钥和状 态, 如下 :
     a) 对于不带状态的 MPPE, 执行密钥更新算法, 并从新的会话密钥初始化 RC4 状态。
     b) 对于带状态的 MPPE, 如果一致性计数的低字节为 0xFF, 执行密钥更新算法并从 新的会话密钥初始化 RC4 状态。
     c) 对于带状态的 MPPE, 如果设定了包处理输入宏指令的控制状态域中的位 [3], 则从新的会话密钥重新初始化 RC4 状态。
     d) 对于其他情况下的带状态 MPPE, 不改变 RC4 状态。
     D. 使用在前面操作中获得的 RC4 状态, 用 RC4 算法加密有效载荷数据。
     E. 在输出宏指令中更新结果长度、 “状态” 和 “VPN 芯片完成” 。在包处理输入宏指 令 ( 如果和输出宏指令队列分开的话 ) 中更新 “VPN 芯片完成。
     图 38 示出了根据本发明实施例的 MPPE 输入。在图中, 如果使能了 “复制包头到输 出” , 则在输出包中会出现 MPPE 包头。
     主机需按照以下方式准备输入数据 :
     主机需对 MPPE 已加密数据包提供 4 字节的 MPPE 包头, 包括 PPP 协议域 0x00、 0xFD 和一致性计数和 4 位标志位 ( 来自于输入的数据流 )
     VPN 芯片在包上执行以下操作 :
     A. 从源复制” 旁路偏置” 数据 ( 如果出现的话 ) 到目的地址。
     B. 检查 MPPE 包头中的一致性计数, 应该为 SA 中的一致性计数再加上 1。 复制 MPPE 包头到 SA 中的相关域。如果一致性计数不匹配预期值, 则执行以下操作 :
     a) 对于不带状态模式, 如果实际值和预期值之间的差额小于一定的限度, 则接受数据包的丢失, 并执行密钥更新算法, 执行的次数根据该差额而定。
     b) 对于不带状态模式, 如果该差额大于所规定的限额, 则中止数据包处理。
     c) 对于带状态模式, 如果设定了包头中的重开始位, 任何一致性计数都可以接受, 即使 SA 中 MPPE 包头域中的 “D” 位为 0。芯片将执行密钥更新算法, 执行的次数根据所遗漏 的 “标志” 包 ( 一致性计数的低字节为 0xff) 的数量而定。
     d) 对于带状态模式, 如果 SA 中 MPPE 包头域中的 “D” 位为 0, 则该数据包视为错误。 不再对该数据包进行进一步处理。
     e) 对于带状态模式, 如果一致性计数不匹配预期值, 且没有设定重开始位, 则视为 错误。芯片将清除 SA 中所存储 MPPE 包头域中的 “D” 位, 以表明遇到一个一致性计数错误。 主机需向发送方发出一个同步请求。
     C. 根据 MPPE 模式和所接收的 MPPE 包头内容的不同, 按照以下方式初始化 RC4 状 态。
     a) 对于不带状态 MPPE, 执行密钥更新算法, 并从新的会话密钥中初始化 RC4 状态。
     b) 对于带状态 MPPE, 如果一致性计数的低字节为 0xFF, 执行密钥更新算法, 并从 新的会话密钥中初始化 RC4 状态。 c) 对于带状态 MPPE, 如果在 MPPE 包头中设定了重开始位, 从当前的会话密钥重新 初始化 RC4 状态
     d) 对于在所有其他带状态 MPPE 的情况, 不更改 RC4 状态。
     D. 用前面操作中所获得的 RC4 状态, 解密 RC4 的有效载荷数据。
     E. 如果没有设定 “复制包头到输出” , 丢弃 MPPE 包头。
     F. 在输出宏指令中更新结果长度、 “状态” 和 “VPN 芯片完成” 。在包处理输入宏指 令 ( 如果和输出宏指令队列分开的话 ) 中更新 “VPN 芯片完成。
     通常情况下旁路偏置被设置为 0。如果使用发段 / 集中处理, 需增加 4 个字节的 无效旁路数据, 并关闭包头处理。 当其他系统控制数据附在到包上时, 可以使用旁路偏置功 能。 “包头处理” 位无效。芯片均检测 MPPE 包头。
     根据本发明另一方面, SA 记录可以包括前述的指令字 0、 指令字 1、 会话密钥、 初始 密钥、 保存 ARC4i&j 指针、 statesalt 字节、 MPPE 一致数计数 + 包头以及 ARC 状态记录等等。
     以上结合具体实施例说明了本发明的包处理模块。本领域技术人员将理解, 上面 所列出的数值, 例如位宽、 字节数等等仅是为了说明的方便, 本领域技术人员可以根据其需 要而任意设置适当的数值。
     下面说明根据本发明的 VPN 芯片中对分组、 散列和公钥算法模块的配置和译码控 制器设计。对分组、 散列和公钥算法模块的宏指令配置和译码设计, 主要包括 : 初始化、 复 位、 激活、 功能使能控制、 数据操作控制。
     复位宏指令是一个典型的针对 IP 设计的配置文件。控制太阳城集团全部来自宏指令信 息。由该宏指令指示芯片的一个或多个模块的复位态。系统复位后, 所有模块保持在工作 状态 ( 初始态 )。
     在应用系统环境确立之后, 主机依据实际需求已经完全掌握芯片的处理功能, 可 以有选择地停止不需要的模块操作 ( 可以节省功耗 )。例如 : 做 D-H 时, 分组算法不执行 ; PCI 控制操作时, SPI3 不执行 ; 模幂运算时, 包处理不执行 ; 分组算法在处理时也仅仅是用
     一种算法。因此, 本发明的复位宏指令 ( 其可以是静态宏指令 ) 仅控制每个模块的复位操 作, 可以将各模块保持在复位状态, 并通过指令灵活配置模块状态。一般情况下, 主机仅在 初始化时配置一次。图 39 进一步示出了根据本发明一个实施例的复位宏指令语用。如图 所示, 在该实施例中, 复位宏指令可以控制图中所示的多个模块的复位。
     下面说明本发明的算法模块激活宏指令。图 40 示出了根据本发明实施例的算法 IP 的模块示意框图。 首先说明分组算法密文控制指令。 该分组算法密文控制指令可以控制 分组算法模块 ( 例如 RJNDAEL 算法 AES、 3DES、 AR4 等 ) 的激活。该算法模块的运行操作使 能与激活共同作用。这是一种选择控制。
     图 41 示意性地示出了分组算法模块激活宏指令语用。复位宏指令配置与控制的 语用 ( 逻辑设计 ) 和算法模块激活的宏指令在逻辑意义上是完全相同。根据本发明一个方 面, 与操作使能共同驱动算法模块运行。
     图 42 示出了根据本发明另一方面的算法模块激活宏指令语用。如图 42 所示, 来 自算法模块激活宏指令的一位控制, 用于激活散列算法 MD 5 和 SHA1。在同一时刻, 只有一 个模块运行。
     所述复位指令和算法模块激活指令可以由系统配置模块的复位模块发布。
     下面说明本发明的公钥算法模块。本发明的公钥算法模块可以实现 : 大规格数据 加减运算、 大规格数据乘除运算、 大规格数据模运算、 数据左右移位操作、 大规格数据比较 运算、 大规格数据模幂乘运算。 公钥算法模块起到公钥算法内核和模幂运算器的控制作用。 公钥算法内核执行常规大数运算, 模幂运算器则提供高速模幂乘运算。
     图 43 示出了根据本发明实施例的公钥算法模块结构。如图所示, 本发明的公钥算 法模块可以从 PCI-X/PCI 接收 / 发送控制数据, 从 EMI 接收 / 发送数据。公钥算法模块包 括公钥算法内核、 公钥算法模块控制器、 模幂运算器等。公钥算法模块可通过 PCI 总线输入 指令和数据。例如, 可以通过三个独立的指令寄存器组 ( 大数值运算寄存器, 定长模幂运算 寄存器, 变长模幂运算寄存器 ), 从 PCI 总线输入。变长模幂运算和定长模幂运算指令用于 执行模幂乘运算, 如 Diffie-Hellman 和 RSA( 中国剩余定理 [CRT]) 计算。大数值运算指令 用于执行一般大数运算 ( 加、 乘等 )。上述的指令寄存器组仅是示例, 也可以包括更多或更 少的指令寄存器组, 其也可以不是独立的甚至是相同的。
     公钥算法模块处理各指令占用资源具有优先权 ( 他们是实施控制的宏指令, 只要 有操作启动, 就开始计算, 并占用存储资源 ( 例如, 8K 和 1K 字节 ))。注意, 这三个寄存器组 可以是独立的, 主机可同时发出执行指令。 用于公钥计算的数据储存在公钥模块 RAM 中 ( 例 如, 以 8K 字节形式 ), 可通过 PCI 总线读取。除了输入数据和结果数据外, RAM 内还有计算 过程中公钥算法模块生成的中间参数。根据本发明一个方面, 主机负责配置公钥算法模块 进行有效运算, 提供正确的操作数据并给结果数据分配空间。
     公钥算法内核 RAM 是一个双端口的体系结构, 其中一个端口与主机接口相连 ( 经 PCI 或 EMI)。主机可在任何太阳城集团读 / 写这个 RAM。本发明的 VPN 芯片设计允许公钥模块 RAM 用于芯片内 SA 记录储存。而模幂运算器也可以包括模幂运算器 RAM, 其是模幂运算器的专 用资源, 可通过 PCI 总线读取, 主要用于测试。
     图 44 示出了根据本发明实施例的大数值运算模块 ( 公钥算法内核 ) 结构。大数 值运算是指对大数的基本运算。在本发明的一个实施例中, VPN 芯片的公钥算法内核可以包括乘法器、 累加器、 除法器、 移位器, 以及内核调度模块, 如图 44 所示。芯片可以自行控制 数据在公共存储器中的操作。
     下表示出了本发明的大数值运算模块可以执行的运算。
     函数 乘数学运算 AxBA_addr 被乘数B_add 乘数C_addr 结果D_addr 无加A+B加数加数结果无减A-B加数加数结果无右移 左移 除 模 比较A >>移位值 A <<移位值 A/B AmodB A=B A<B A>B A- > C输入 输入 被除数 被除数 输入 A无 无 除数 模数 输入 B结果 结果 余数 余数 无无 无 商 无 无转移
     输入无结果无另外, 软件可使用以下公钥处理模块中断位 : 通道 0 上完成的模幂运算器操作, 通 道 0 上完成的模幂运算器操作, 队列操作直到公钥算法内核完成。
     大数值运算模块的输入数据应符合相应的要求, 避免主机设定非法数据规格操 作。所述非法操作包括数学上未定义的操作 ( 如零除 ) 和超出公钥算法内核数据规格的操 作。 根据本发明的一个实施方式, 主处理器需按照设计给出的控制与操作数据, 公钥算法模 块不检查非法操作。
     本领域技术人员将理解, 可以采用例如 16 位、 32 为、 64 位、 128 位等等的位宽, 可以 采用其他的更高和更低的位宽。相应的, 对数据长度等的要求也会相应改变。也可以采用 更多或更少的限制, 只要能够实现本发明中的功能即可。
     下面说明根据本发明实施例的模幂 ( 乘 ) 运算模块。根据本发明, 模幂运算器支 持模幂计算, 在本发明的一个实施例中, 其执行的操作包括基本模幂乘运算操作和 / 或使 用中国剩余定理的 RSA-CRT 操作。
     图 45 示出了根据本发明一个实施例的模幂运算器, 其包括四套独立资源, 每套资 源实现一定位数 ( 例如, 512 位 ) 模幂乘运算。各资源实现的规格可以重组, 以实现更大规格的数据操作。可经变长模幂运算指令和定长模幂运算指令 ( 寄存器组 ) 启动运算。
     在本发明的一个实施方式中, 变长模幂运算寄存器控制模幂运算器第 0 套资源的 入口, 定长模幂运算寄存器控制模幂运算器第 2 套资源的入口。模幂运算器第 0 套资源可 与其他三套资源组合, 以支持例如 1024 位、 1536 和 2048 位运算。模幂运算器第 2 套资源只 能模幂运算器第 3 套资源组合, 因此最大运算量是 1024 位。然而, 这仅是示例性的, 也可以 进行其他的入口设置和组合。
     在本发明的一个实现方案中, 芯片可以不支持主机对模幂运算器第 1 套资源和模 幂运算器第 3 套资源的支持控制。所示的资源数量及位宽仅是示例性的, 可以根据需要使 用更多或更少的资源, 采用更大或更小的位宽。
     下表示出模幂运算模块资源分配。
     模幂运算器操 作 变长模幂运算 变长模幂运算 变长模幂运算 变长模幂运算 变长模幂运算 变长模幂运算操作 ( 规格 )第 0 套资源第 1 套资源第 2 套资源第 3 套资源512 位 DH 1024 位 DH 1536 位 DH* 2048 位 DH* 1024 位 RSA(CRT) 2048 位 RSA(CRT)*X X X X X X X X X X X X* X* X* X* X*定长模幂运算 定长模幂运算 定长模幂运算
     512 位 DH 1024 位 DH 1024 位 RSA(CRT)X X X X X其中, 根据本发明的一个实施方案, 变长模幂运算和定长模幂运算控制可以是独 立的, 因此可同时进行多个模幂计算。此外, 还可同时进行 RSA-CRT 部分幂运算操作以提高 并行度, 减少计算太阳城集团。因此, 在要求两个 1024 位 RSA-CRT 并行计算的情况下 ( 一个变长 模幂运算操作, 一个定长模幂运算操作 ), VPN 芯片实际上将同时进行 4 个模幂乘运算。由 于变长模幂运算和定长模幂运算资源共用, 因此对可同时进行的运算有一定的限制。 例如, 变长模幂运算上的 2048 位模幂乘运算需禁止其他任何并行计算, 所有计算资源均被变长 模幂运算操作占用。图表阐述了各资源可执行的操作以及可同时进行的操作。
     41下表示出了根据本发明一个实施方案的模幂运算模块规格设计。101997834 A CN 101997839说明书37/59 页需要说明的是, 如果模数大于 512 位, 且模数的位 [1]( 第 2 个最低位 ) = ‘0’ , 那 么指明的模数长度需至少比实际模数长度大两位。例如 : 如果指明的模数长度是 1024 位, 那么实际的模数长度不能大于 1022 位。如果实际模数长度是 1023 或 1024 位, 那么需使用 模幂运算器三套资源 (1536 位 )。因此, 如果模数的位 [1] 为 ‘1’ , 适用上面的资源分配表。 如果位 [1] 为 ‘0’ , 适用上面的规格设计表。
     在基本模幂乘运算中, 需有底数、 模数和指数等数据。在 RSA-CRT 计算中, 需要给 出模数 P 和 Q( 长度为一半 )、 指数 D1 和 D2( 长度为一半 ), 输入数据 M 和数据 Q。模幂运算 器的分段结构要求输入值长度 ( 指数除外 ) 是 512 位的倍数。 主机需将数据用零填充至 512 位的倍数, 并且给出数据的实际有效位数。下表中数据表明了基本模幂乘运算和 RSA-CRT 模幂乘运算的输入数据要求。
     操作 512 位基本模幂乘运算 1024 位基本模幂乘运算指数 * 无 无模数 512 位 1024 位基数 512 位 1024 位1536 位基本模幂乘运算 2048 位基本模幂乘运算
     无 无1536 位 2048 位1536 位 2048 位42101997834 A CN 101997839说D1* 无 无 D2* 无 无明P书Q 512 位 1024 位 A 512 位 1024 位 输入38/59 页操作 1024 位 RSA-CRT 2048 位 RSA-CRT
     512 位 1024 位1024 位 2048 位
     模数 [0] = 1 模数值必须是奇数尽管在本发明的一些实现方案中, 将所有的模幂乘运算分为 512, 1024, 1536 或 2048 位计算, 实际上本发明可以支持 32 位倍数的基本模幂乘运算和 64 位倍数的 RSA-CRT 计算。输入中进行零填充的目的在于存储分配和初始化。操作数据应该遵循表中的要求。
     根据本发明, 主机负责将一块连续存储区分配给模幂运算模块结果数据。主机需 保证分配的空间足以容纳结果数据。此外, 模幂运算器还将分配给结果的空间用做中间参 数存储区, 所需大小取决于数据长度, 特别是模数长度。分配的空间与模数数据的规格相 关, 而不是与实际有效位长度相关。在计算结束时, 实际有效位将位于分配空间的低端。与 公钥算法内核操作不同的是, 本发明的 VPN 芯片在模幂乘运算中不提供结果最高有效非零 字的位置。
     在本发明的一种实施例中, 提供的变长模幂运算可以支持模数长度为 512, 1024, 1536, 2048 位的基本模幂乘运算, 并可以支持模长度为 1024 和 2048 位的 RSA-CRT 模幂乘运 算。根据本发明一个实施例, 模数长度可以用零填充至 512 位倍数后的长度。
     在本发明的一种实施例中, 提供的定长模幂运算可以支持模数长度为 512 和 1024 位的基本模幂乘运算, 以及模数长度为 1024 位的 RSA-CRT 模幂乘运算。
     下面说明本发明中的随机数模块。本发明 VPN 芯片中的随机数模块 ( 随机数发生 器 )(RNG) 为不同应用提供了真随机数的高质量来源。在本发明的实施例中, 采用真正的熵 源——物理白噪声, 并利用 FIP 140-1 标准的数学太阳城集团处理机制, 从而确保随机输入能够满 足密码随机性的要求。并且, 在本发明 VPN 芯片的一个实现方案中, 对随机数模块的技术要
     求: 满足 5 种局部效验测试, 支持 BBS 和 LSFR 算法, 加入物理噪声源, 输出反馈, 访问许可机 制。
     图 46 示出了根据本发明一个实施例的随机数模块结构。如图所示, 在随机数发生 器模块上电复位后, 即利用已经设计确定的初始种子参数 S0 进行计算。同时物理噪声源不 断进行噪声值采集, 当达到噪声值设计规格时, 取物理噪声值规格的低位 ( 值应大于 S0/2, 小于 S0) 装入计数器。计数器根据装入的值进行计数运算。当计数器衰减至结束时, 表明 需控制更新 BBS 初值进行新一轮循环运算, 同时再装入当前物理噪声值重新计数。当随机 数发生器种子参数更换时, 取当前物理噪声序列值寄存器和随机数序列值寄存器, 进行随 机策略计算, 获得新的种子参数 Si。每次 BBS 算法模块输出的随机值要与物理噪声序列值 进行随机策略计算 ( 异或 ), 得到随机数发生器随机值输出序列。使用计数器 (CNT_CTRL) 控制逻辑操作和功能实现。( 注意是不是要描述图 )
     在本发明的一个实现方案中, 每隔一定太阳城集团对 BBS 发生器的初值进行更新, 访问 随机数发生器随机值序列需要许可控制。另外, 可以使用 LFSR 算法代替 BBS 算法。
     在本发明的一个实现方案中, 随机数模块将真随机数以 32 位提供给应用, 并且在 每次被访问后, 自动重新生成新的随机数。
     图 47 示出了根据本发明实施例的随机数模块指令配置。如图 47 所示, 随机数模 块指令配置包括 :
     随机数输出寄存器 RNG 输出寄存器 P_RN_OUTPUT, 其用于提供对 32 位随机数的读 访问。其输入来自 BBS/LFSR 算法模块, 输出至 PCI 总线或与物理噪声源进行异或操作, 产 生新的随机数种子值。当寄存器发出随机数已经准备好被读取信号时, RNG 输出寄存器将 自动启动 RNG 寄存器产生新的随机数。其复位初始值为 0。
     RNG 状态寄存器 P_RN_STATUS, 其用于随机数访问许可 ( 准备 / 占线 ), 本寄存器 采用报警计数器对 BBS 运算次数进行计数, 在进行了 32 次后, 表明输出寄存器队列已装满, 将读允许标识置为读允许状态。此后等待用户取走随机数, 用户取走随机数后发数据更新 标识, 则读写控制逻辑将读允许标识置为无效, 重新对模乘运算次数进行统计, 待队列装满 发读允许标识。RNG 状态寄存器 ( 位 (0) 为 ‘0’ 时 ) 向主机发出可以读取随机数的信号, 并向中断寄存器发出中断, 直到随机数被读取, 同时通知 RNG 输出寄存器可以开始准备下 一个随机数 ; RNG 状态寄存器 ( 位 (0) 为 ‘1’ 时 ) 将禁止外部读取, 表示正在产生新的随机 数; 其为 32 位, 复位初始值为 0x00000001。
     RNG 控制寄存器 P_RN_CONTROL, 主要用于控制 RNG 寄存器内部的各项工作, 检验 RNG 操作 ;
     RNG 配置寄存器 P_RN_CONFIG, 其用于配置 RNG 进行使用, 可以指示环形振荡器的 环形延时以及报警复位计数等。本寄存器 ( 位 [2:0], 初值为 4) 选择 LFSR#1 中移位寄存器 的延时 ; 本寄存器 ( 位 [5:3], 初值为 3) 选择 LFSR#2 中移位寄存器的延时 ; 本寄存器 ( 位 [11:6], 初值为 32) 为报警复位计数器置初值, 即控制了 BBS/LFSR 运算次数 ; BBS/LFSR 运 算一次, 计数器值减一, 当计数器值为零时, 说明输出寄存器队列已满, 发出 OV 信号, 通知 读取控制逻辑, 随机数已经产生, 可以发出读允许信号通知主机。
     图 48 示出了本发明的 RNG 宏指令语用。系统复位后, 模块开始工作。首先利用内 部初始参数 S0 进入 BBS 或 LFSR 计算, 计算时由 RNG 配置寄存器控制 ; 运算完成后, 将结果发送到输出寄存器并由 RNG 配置寄存器的读写控制模块 ( 读写控制模块对 BBS 模块模乘循 环次数进行计数, 每次模乘结束计数器加一。在计满 32 组以后, 产生读允许标志, 通知用户 可读取随机数。此后若无数据更新请求, 读允许标志一直有效。每次用户读走一组发数据 更新请求标志, 则读写控制模块重新产生读允许信号。) 发出 OV 信号通知主机可以读取随 机数, 同时将结果与物理噪声源进行异或操作, 产生新的随机数种子值 SI ; 物理噪声不断 输入队列寄存器 ( 每个时钟周期产生一位 ) 得到最近的物理噪声, 取物理噪声源进入衰减 计数器进行减一计数, 减一计数结束产生更换初值使能, 以此选择对随机数种子值的更新。
     RNG 算法分为 BBS 和 LSFR 两种。 BBS( 模乘 ) : 两数相乘, 将结果除以一个固定的整 数求余数。LSFR( 线性反馈移位寄存器 ) : 将输入的数据首先与输入的静态编码做与操作, 然后将产生的数据做缩位异或操作, 最后将产生的一位数据放入逻右移一位的输入数据的 最高位。
     随机数模块指令配置还包括 :
     RNGA 寄存器 P_RN_A_REG, 用于测试和诊断提供对熵 A 寄存器的读访问 ;
     RNGB 寄存器 P_RN_B_REG, 用于测试和诊断提供对熵 A 寄存器的读访问 ;
     RNG X 寄存器 [31:0]P_RN_X_0, 用于提供对 X 寄存器 (BBS/LFSR 运算结果的最低 32 位 ) 的读访问 ;
     RNG X 寄存器 [31:0]P_RN_X_1, 用于提供对 X 寄存器 (BBS/LFSR 运算结果的中间 32 位 ) 的读访问 ;
     RNG X 寄存器 [31:0]P_RN_X_2, 用于提供对 X 寄存器 (BBS/LFSR 运算结果的最高 17 位 ) 的读访问 ;
     RNG LFSR1 寄存器 [31:0]P_RN_LFSR1_0, 用于提供对 LFSR#1 的读访问, 提供用于 检测的 0 和 1 的个数的读访问 ;
     RNG LFSR1 寄存器 [47:32]P_RN_LFSR1_1, 用于提供对 LFSR#1 的指定的最高有效 位的读访问, 提供用于检测的 0 和 1 的个数的读访问 ;
     RNG LFSR2 寄 存 器 [31:0]P_RN_LFSR2_0 和 RNG LFSR2 寄 存 器 [47:32]P_RN_ LFSR2_1 与上面的类似, 针对 LFSR#2 的读访问 ;
     RNG 计数器 P_RN_ 寄存器 [31:0]COUNTER, 用于提供对物理噪声源产生的随机数位 数的读访问 ; 以及
     RNG 报警计数器寄存器 P_RN_ALARM_COUNT, 用于提供主机不满意 ( 随机性不好 ) 的随机数的数量的读访问。
     上述寄存器是为了随机数性能测试使用, 主要提供局部效验, 为测试和诊断提供 对寄存器的读访问。
     下面说明根据本发明实施例的时钟和中断设计。如先前所述的, 在本发明的一个 实施例中, 本发明 VPN 芯片的系统配置模块包括 PLL 模块、 时钟分频模块和中断模块。
     图 49 示出了根据本发明实施例的 PLL 控制以及 PLL 控制寄存器宏指令语用。如 图所示, PLL 宏指令控制寄存器输出两组信号, 分别连接 PLL 系统和 PLL 模模块。其中软复 位根据 PLL 模块的技术要求, 延时并建立计数器控制 PLL 系统和 PLL 模运算的复位。模幂 信号宽度寄存器也控制一个延时计数器, 使模幂运算结果保持到系统时钟可以采集大信号 宽度。PLL 系统和 PLL 模运算分别通过下面公式产生主时钟和模运算时钟 : 公式 : FOUT = FIN * {4(M+2)/[(P+2) * S]}(FIN 为 PLL 系统和 PLL 模运算的时 其中, P、 M、 S 是 PLL 控制寄存器产生的三种控制信号, 分别控制 PLL 系统和 PLL 模钟)
     运算。 PLL 控制寄存器指令包括两组 PLL 配置太阳城集团 ( 系统和模幂运算 )。此寄存器的 32 位指令控制两个 PLL 产生以下两个时钟 : 系统时钟, 用于 VPN 内部大部份电路, 输出到 EMI 时钟管脚 ; 以及模幂运算器时钟 : 用于高速模幂运算器。输入的 32 位数据通过 PLL 控制寄 存器分成两组 PLL 配置太阳城集团 : 系统 (PC、 SC、 MC) 和模幂运算 (PE、 SE、 ME), 控制 PLL 系统和 PLL 模运算产生系统时钟和模运算时钟 ;
     对该寄存器的语义具体说明如下。
     软件系统复位 : 在改变系统时钟 PLL 设置后, 需将该位设为 1 保持 150 微秒以上, 以使系统时钟 PLL 再次锁存稳定。复位值= ‘0’
     停止模幂运算器时钟 : 降低模幂运算器时钟 PLL 功率, 停止模幂运算器时钟。
     软件系统复位 : 在改变系统时钟 PLL 设置后, 需将该位设为 1 保持 150 微秒以上, 以使 PLL 系统和 PLL 模运算再次复位。复位值= ‘0’
     下面说明本发明中模幂运算器信号宽度寄存器指令。 该指令的低四位输入一个减 一计数器, 运算完毕输出并保持结束信号 OV, 让系统时钟在有效周期内可以检测到, 并取走 模幂运算结果, 最后释放 OV。
     在本发明的一个实施方案中, 至少将模幂运算器信号放大为系统时钟的 2 倍, 从 而保证模幂运算器信号在系统时钟域内被检测到。
     下面说明根据本发明实施例的中断设计。在本发明的一个实现方案中, 利用静态 宏指令作为针对 IP 的控制条件配置, 例如, 中断控制配置。
     根据本发明, 外部设备 ( 主机 ) 与芯片发生逻辑控制时, 信号特征可作为中断源可 选项, 中断恢复的控制权和状态是可选项。 另外, 还支持保存中断源, 屏蔽中断源, 清除中断 源等常规设计。
     在一个实施例中, 在本发明的 VPN 芯片上有如下的中断管脚 : 中断输入 (INTI) 和 中断输出 (INTA_n)。中断输入是读取宏指令信号, 可启动包处理模块状态机。该中断可经 连接至 INTI 管脚的外部信号启动。INTI 管脚可以是负沿触发的。主机中断控制器允许对 INTA_n 中断输出信号 ( 可能连接至主机系统的中断输入 ) 在 1 和 14 源之间进行设置。P_ IC_HOST_MASK_CONTROL 寄存器提供中断源的屏蔽选择。
     中断分为硬件中断和内部中断。硬件中断是主机产生的强制性中断, 由强制 PCI 主机中断寄存器控制, 优先级高于内部中断。内部中断是由芯片内部各个模块发出中断请 求 ( 中断源 ) 产生的中断, 各个中断源间无优先级的高低。
     图 50 示出了根据本发明实施例的中断宏指令寄存器的配置。该寄存器配置包括 :
     驱动 PCI 主机中断寄存器 P_IC_GEN_HOST_INTERRUPT : 强制主机中断 ( 优先级最 高);
     驱动宏指令读取寄存器 P_IC-FORCE_DESC_READ : 主机发起宏指令队列太阳城集团的指 令;
     主机宏指令完成计数寄存器 P_IC-DESC_DONE_COUNT : 指示包处理宏指令执行数量; 主机未屏蔽状态寄存器 P_IC-HOST_UNMASKED_STATUS : 中断源的非屏蔽中断状 态, 供主机读取 ;
     主机清除中断寄存器 P_IC-HOST_CLEAR_INTERRUPT : 主机复位中断, 可将未屏蔽 状态寄存器和屏蔽控制寄存器复位 ;
     主机屏蔽控制寄存器 P_IC-HOST_MASK_CONTROL : 控制对中断源的屏蔽 ;
     主机中断配置寄存器 P_IC-HOST_INT_CONFIG : 中断信号配置 ;
     主机屏蔽状态寄存器 P_IC-HOST_MASKED_STATUS : 屏蔽后的中断源, 供主机读取。
     主机未屏蔽状态寄存器 P_IC-HOST_UNMASKED_STATUS 和主机屏蔽状态寄存器 P_ IC-HOST_MASKED_STATUS 这对寄存器可使主机读取任何中断源在应用屏蔽之前或之后的状 态。所有的内部中断源是脉冲或沿触发产生, 被锁存在未屏蔽或屏蔽状态寄存器中。使用 P_IC_HOST_CLEAR_INTERRUPT 寄存器清除中断可将屏蔽与无屏蔽寄存器锁存的状态复位。
     在本发明的一个实施例中, 对中断的主体结构 ( 主机未屏蔽状态寄存器、 主机清 除中断寄存器、 主机屏蔽控制寄存器和主机屏蔽状态寄存器的来源、 处理和输出 ) 用按位 设计来加以实现, 即通过对一个中断源的实现和对此模块的调用, 来实现整个中断的主体 结构。
     下表列出了根据本发明一个实施例的中断源。
     名称 驱动主机中断 锁存器位 0 说明 写入 ( 无效数据 ) 至 P_IC_GEN_HOST_INTERRUPT 寄存器将强制 PCI 主机 进行 木中断 INTI 管脚的负沿脉冲上锁存的 IRQ 值 INTI 负沿锁存值 1用户 DMA 完成2用户 DMA 传输完成时产生用户 DMA 错误3在用户 DMA 传输中如果出现错误状态即会产生新随机数准备好4表示新的随机数准备好, 可被读取公钥处理模块 - 模幂运算器操作完成, 变长 模幂5在公钥处理模块变长模幂运算操作已经结束运算操作 公钥处理模块 - 模幂运算器 长模幂6 操作完成, 定公钥处理模块定长模幂运算操作已经结束。运算操作 公钥处理模块 - 大数值运算操作完成 保留7公钥处理模块大数值运算已经结束。8 至 14对应位必须以 ‘0’ 写入。47101997834 A CN 101997839输出宏指令完成 15说明书43/59 页1 个包处理输出宏指令已写入至输出宏指令队列。输出宏指令计数完成16选择的包处理输出宏指令数量已被写入到输出宏指令队列。包处理模块 DMA 错误17在包处理模块 DMA 传输中出现错误。SPI-3 宏指令完成 SPI-3 错误18 19数据包及附后的包处理输出宏指令已写入至 SPI-3(RX) 接口。 在 SPI-3 输入 (TX) 操作中出现错误。输入宏指令队列空20输入宏指令队列目前空。保留21 至 31对应位必须以 ‘0’ 写入。
     图 51 示出了根据本发明实施例的中断控制器。中断源的状态除了查询中断状态 寄存器外, 还可以查询模块宏指令配置状态寄存器。例如 : SPI-3 错误, 在 SPI3 线程状态配 置寄存器中, 已经将错误中断屏蔽或不屏蔽, 合成后输出到中断模块, 因此在一个中断发生 后, 主机除了查询中断状态寄存器外, 还应该查询 SPI3 线程状态寄存器。下面说明根据本发明一个实施例的中断流程。在中断源产生后, 进入主机未屏蔽 中断状态寄存器, 同时主机清除中断寄存器产生清除中断信号进入琐存器 ; 如果不屏蔽中 断, 中断源状态可直接输出, 供主机读取 ; 如果屏蔽中断, 从主机未屏蔽中断状态寄存器出 来的中断源和主机屏蔽控制寄存器产生的控制信号经过与门进入主机屏蔽中断状态寄存 器 ( 可供主机读取 ), 最后将屏蔽后的中断源信号经过或门然后输出。
     下面说明本发明中强制 PCI 主机中断寄存器指令。本寄存器产生一个强制主机中 断的中断源, 优先级高于其它的中断源, 输入到主机未屏蔽中断状态寄存器。 本寄存器只能 执行写操作, 但任何写操作将导致主机中断。
     下面说明本发明中强制宏指令读取寄存器及其指令。本寄存器仅适用于 P_HD_ PDR_SRC_SIZE_OFFSET 寄存器位 [15:0] 为非 0 情况时。 PCI 主机可将任何值写入 P IC FORCE DESC READ 寄存器以启动宏指令读取。 本寄存器产生的信号和中断输入信号 INTI 执行或操 作, 将产生的信号输入宏指令读取计数器 ( 例如, 系统提供一个 16 位计数器记录读取宏指 令事件中断的次数 ), 最后将此计数器的值输出到包处理模块, 通知包处理可以读取下一个 宏指令。本寄存器只能执行写操作, 但任何写操作将导致主机中断。
     下面说明本发明中主机宏指令完成计数寄存器及其指令。 主机将宏指令队列中等 待处理的宏指令个数输入到本寄存器, 本寄存器将宏指令个数输入到事件计数器, 包处理 模块完成一次宏指令处理, 就给事件计数器发出一个信号, 计数器减一, 当计数器中值为零 时, 计数器输出信号发起中断 ; 如: P_IC_DESC_DONE_COUNT 寄存器设定为 0x0004。如果三 个包很快处理完, 那么在输出宏指令队列上会首先填充三个包处理输出宏指令。 然而, 计数 器仍在等待第四个包被处理, 不会形成中断。一直要等到第 4 个包也处理完后, 才会产生中 断。在此之前, 主机不会取走已处理完的 3 个包。主机可以通过查询结果而不是仅依靠等
     待中断的方式来获得包处理的结果。
     下面说明本发明中主机未屏蔽状态寄存器及其指令。使用本寄存器, 主机将查看 即将开始的中断的所有可能来源。所有这些来源无论是否进行了屏蔽, 都将锁定在本寄存 器内并需使用 P_IC_HOST_CLEAR_INTERRUPT 寄存器清零, 以获取随后事件。 ‘1’ 表示出现了 关联中断。 复位缺省值为 0x00000000。 使用本寄存器, 无论中断源是否进行了屏蔽, 都将锁 定在本寄存器内供主机查看即将开始的中断的所有可能来源, 由于所有的中断位都被本寄 存器锁定, 需使用 P_IC_HOST_CLEAR_INTERRUPT 寄存器清零以获取随后事件。
     下面说明本发明中主机屏蔽状态寄存器及其指令。 该寄存器使得主机可查看中断 的选择性来源, 这些中断均指向可与 PCI 中断相连的 INTA_n 引脚。由于具备了未屏蔽状态 寄存器, 所有的中断位都被锁定, 需使用 P_IC_HOST_CLEAR_INTERRUPT 寄存器清零以获取 随后事件。 ‘1’ 表示出现了关联中断。本只读寄存器在屏蔽中断后为主机提供可视性的中 断状态, 这些中断执行或操作, 从 INTA_n 引脚输出, 与 PCI 中断相连。
     下面说明本发明中主机清除中断寄存器及其指令。该寄存器与 P_IC_HOST_ MASKED_STATUS 寄存器 ( 写与读 ) 在同一地址上, 这便于读取写入相同位后探测即将开始的 中断, 以将锁定的中断状态清零。本寄存器使用与 P_IC_HOST_MASKED_STATUS 寄存器相同 的位图。 中断源进入未屏蔽中断状态寄存器后, 如需中断, 需使用本寄存器清零才能获取随 后中断事件, 中断处理完成后, 可以使用本寄存器将中断状态寄存器中锁定的中断状态清 零。
     下面说明本发明中主机屏蔽控制寄存器及其指令。本寄存器使用与 P_IC_HOST_ MASKED_STATUS 寄存器相同的位图。所有保留位的位置的对应掩码需写为 ‘0’ 。本读 / 写 寄存器用于配置主机中断控制器的中断屏蔽。 本寄存器产生的主机屏蔽控制信号和未屏蔽 中断执行与操作, 可实现激活中断源和禁止中断源。
     下面说明本发明中主机中断配置寄存器及其指令。 本寄存器可将屏蔽中断状态寄 存器和未屏蔽中断状态寄存器清零, 也可指示主机中断输出类型, 将中断输出信号 INTA_n 转换为电平信号或脉冲信号输出。
     配置脉冲类型的主机中断输出将导致外部中断信号被激活后在两个系统时钟周 期内进行低脉冲。 当设定为电平类型时, 中断信号将被设定为低, 直到被主机清零为止。 (即 其将遵循 P_IC_HOST_MASKED_STATUS 寄存器中的相关设置 )。
     那么 P_IC_HOST_MASKED_STATUS 寄存器中显示出的所有中断将在 INTA_n 引脚上 出现中断输出脉冲时从 P_IC_HOST_UNMASKED_STATUS 寄存器中自动清除。基本上, 这迫使 所有的脉冲中断自动清零, 使它们可立即重新激活以产生另一次中断。如果设定为 ‘0’ , 那 么主机需在这些相同来源产生另一次中断前锁定中断来源。 中断配置指令的低两位产生两 个一位信号, 位 [0] 选择主机中断控制器的输出引脚 INTA_n 的类型 - 脉冲或电平 ; 位 [1] 控制主机清除中断寄存器的输出, 以此来选择是将主机屏蔽中断状态寄存器清零, 还是将 主机未屏蔽中断状态寄存器清零。
     以上参照附图详细说明了根据本发明实施例的包处理模块、 系统配置模块、 各接 口、 数据通路、 公钥算法模块等结构、 操作、 指令配置等。
     下面结合附图来说明本发明 VPN 芯片的工作流程。
     图 52 示出了本发明 VPN 芯片的总体工作流程。如图 52 所示, 首先进行 PCI 上电初始化, 这是 PCI 配置空间配置过程。然后进行芯片静态配置和初始化过程。之后, 启动芯 片, 建立主机宏指令队列。随后是取指令和宏指令处理过程。该过程可以发送包到包处理 模块, 进行包引擎处理。输出处理的结果和输出宏指令。之后, 可以返回到取指令和宏指令 处理过程或结束。初始化过程可以直接发送 SPI-3 包到包引擎处理过程。下面将详细说明 各子流程。
     图 53 示出了 PCI 配置空间配置子流程。首先, 主机读取内存空间长度, 然后主机 写分配基址。在此之后, 主机读写其他 PCI 配置空间。之后, 流程进入到静态配置和初始化 子流程。
     图 54 示出了本发明 VPN 芯片的芯片初始化子流程。芯片初始化过程首先进行复 位, 密文控制, 设备太阳城集团初始化等, 然后将 EMI、 SPI-3 接口初始化, 之后将 DMA 初始化, 随后 将中断和随机数模块初始化, 接着将包处理全局变量和公钥初始化。目标模式写配置空间 详见配置寄存器列表。初始化完成后, 流程进入芯片启动子流程。
     图 55 示出了本发明 VPN 芯片的芯片启动子流程。 主机建立 SA 库, 并建立指令队列 或写入指令, 之后, 设置取指令方式。在芯片启动之后, 流程进入到宏指令处理子流程。对 于主机所执行的上述过程, 安全处理器并不关注。
     图 56 示出了本发明 VPN 芯片的宏指令处理过程。在芯片启动完成后, 处理器取宏 指令 ( 轮询或中断 ), 此时申请 DMA 通道 ( 例如, DMA1)。接着, 效验宏指令。如果宏指令无 效, 则抛弃无效指令, 流程返回取宏指令步骤。若指令有效, 则 (1) 可以回填宏指令, 或 (2) 进行仲裁、 分配包引擎, 此时比对 SA 地址。然后, 包被分配给不同的包引擎处理。
     图 57 示出了本发明 VPN 芯片的宏指令启动和输入子流程。如图 17 所示, 在中断 强制宏指令读取或轮询太阳城集团到, 或者重试太阳城集团到时, 宏指令启动, 申请 DMA 通道 (DMA1)。在 申请 DMA 通道之后, 判断第一条宏指令是否有效。如果有效, 则将有效指令存入 FIFO, 需要 时, 由仲裁模块对 FIFO 的存入进行仲裁。之后调用下一条指令, 如果是该下一条指令是无 效指令, 则回填指令, 流程回到申请 DMA 通道步骤。如果第一条宏指令无效, 则回到宏指令 启动步骤 ( 例如, 在等待重试太阳城集团到时 )。在申请 DMA 通道后, 可以更新宏指令所有权位。
     图 58 示出了本发明 VPN 芯片的 FIFO 中宏指令仲裁分配过程。如图 58 所示, 在宏 指令输入后, 执行宏指令分配。分配可以是顺序分配或者是非顺序分配。在顺序分配的情 况下, 首先判断包引擎的空闲状态, 对空闲的包引擎顺序分配, 交由包引擎进行处理。而在 非顺序分配的情况下, 首先与忙包引擎比较 SA 地址是否相同, 若是, 则等待该包引擎空闲 后再分配, 之后交由包引擎处理 ; 若否, 则对空闲包引擎顺序分派, 交由包引擎处理。
     图 59 示出了本发明 VPN 芯片的包引擎编码 ( 加密 ) 工作流程。在宏指令处理后, 指令被交由包引擎处理。包引擎首先对宏指令进行译码。之后, 根据指令取 SA 并对 SA 进 行译码, 在此过程中申请 DMA- 包 SA 通道。然后, 取数据 ( 申请 DMA- 包数据通道 ), 执行处 理过程, 包括加解密、 HASH、 MPPE 协议操作、 IPsec 协议 ( 例如 AH、 ESP) 操作等。在处理之 后, 输出数据 ( 申请 DMA- 包数据通道 )。如果需要, 可以返回到取数据步骤, 以取得后续期 望的数据。否则, 结束, 给出结束信号, 并写输出宏指令队列, 最后输出宏指令。
     图 60 示出了本发明 VPN 芯片中包引擎译码子流程。如图 60 所示, 在收到宏指令 后, 进行宏指令译码。之后, 申请 DMA 通道 ( 例如, 可以规定 DMA3 通道或除主模式通道外的 任何通道 ), 读取 SA, 并进行 SA 译码。之后, 申请 DMA4 通道以读取包数据。此时, 如果数据量小于输入 FIFO 的域值, 则返回继续申请 DMA4 通道以读取包数据。否则, 包引擎对数据进 行处理。
     图 61 示出了本发明 VPN 芯片中包引擎数据处理子流程。如图 61 所示, 包引擎处 理数据分为输出包数据处理和输入包数据处理。 这两种处理又可分别包括协议操作和基本 操作。协议操作可以包括 ESP 输出 / 输入包处理、 AH 输出 / 输入包处理、 MPPE 处理。输出 包数据处理的基本操作可以包括加密处理、 散列处理以及加密 - 散列处理, 而输入包数据 处理的基本操作可以包括解密以及解密 - 散列处理。在上述的协议操作和 / 或基本操作之 后, 可以输出数据和 / 或更新 SA 域。
     图 62 示出了本发明 VPN 芯片中输出宏指令处理子流程。在包引擎的处理完成之 后, 对包引擎的处理完成进行登记, 并生成输出宏指令。
     图 63 示出了本发明 VPN 芯片中 SPI-3 包处理流程。如图 63 所示, 在芯片初始化 之后, 接收 SPI-3 传输请求, 并相应分派包引擎。之后, 将宏指令写入包引擎, 在此之后, 将 SPI3 数据写入包引擎, 进而执行处理过程。处理完成后, 输出数据。在需要时, 可以返回到 SPI3 数据写入步骤, 以继续写入数据。否则, 在输出数据后, 结束, 并写输出宏指令队列, 生 成输出宏指令。
     以上参考附图大致描述了本发明 VPN 芯片的操作流程。
     本 发 明 的 VPN 安 全 芯 片 可 以 实 现 以 下 算 法 : DES、 3DES、 AES、 ARC4、 MD5、 SHA1、 H-MAC、 中国 HASH 和中国加密算法。 除此以外, 还可以包括 PES、 FEAL、 Geffe、 IDEA、 Gifford、 Geffe、 中国 AES 等算法, 以及所希望的任何算法。
     本发明的 VPN 安全芯片的大数模块可以包括以下基本运算功能 : 加、 减、 乘、 除、 模、 左移、 右移、 比较、 转移、 增量、 减量、 进位加、 借位减、 模加逆、 模加、 模乘。
     本发明的 VPN 安全芯片的模幂乘模块可以支持 512 位、 1024 位、 2048 位的模数、 底 数和指数 ; 其中 1024 位和 2048 位规格支持完整的中国剩余定理操作。
     本发明 VPN 安全芯片大数模块可以支持多种数据规格, 如: 32 位、 64 位、 128 位、 256 位、 512 位、 1024 位、 2048 位。本发明 VPN 安全芯片模幂乘模块可以支持多种位宽 ( 如, 512 位、 1024 位、 2048 位 ) 的模数、 底数和指数, 其中 1024 位和 2048 位规格支持完整的中国 剩余定理操作。当然, 使用其他位宽的数据规格也在本发明的范围内。
     在本发明的一个实施例中, 本发明的 VPN 芯片还可以包括可信模块 (TPCM/TPCM) 模块, 其可以与主板连接 ( 例如通过 LPC 接口 ), 从而在可信计算中可以作为信任根。
     另外, 本发明的 VPN 芯片并不限于上面所具体描述的实施例。例如, 尽管在上述的 实施例中采用的宏指令体系, 然而, 本领域技术人员将理解, 根据本发明的教导, 采用其他 指令体系来实现本发明也是显而易见的。另外, 包处理模块是可重组的, 可以支持多种算 法, 包括国家密码算法以及国际公开算法等等。根据不同的配置文件 ( 可以是静态的 ( 例 如存储在存储器中 ) 或动态的 ( 例如指令 )), 包处理模块可以实现除 IPsec 协议和 MPPE 协 议以外其他的安全协议如 DSL 协议、 SSL/TSL 协议以及用户自定义的安全协议的处理等等。
     另外, 基于本发明的安全处理器, 实现多种安全协议的嵌套也是显而易见的。例 如, 只需在执行了一种安全协议的处理之后再进行另一安全协议的处理即可。这仅是示例 性的, 基于本发明实现协议嵌套的方式并不限于此, 可以是多种多样的。
     下面说明根据本发明另一实施例的实现方案。在该实现方案中, 本发明的处理器还支持 DSL 安全协议。
     DSL 安全协议
     DSL 安全协议 11.20a 各版本由证书、 授权太阳城集团 ( 授权中心、 管理中心、 网管中心 )、 协议太阳城集团、 安全设备 ( 用户卡 )、 加密数据太阳城集团组成。
     DSL 安全协议包括了建立通信链路、 用户申请登记授权、 授权中心用户密钥证书 太阳城集团授权、 管理中心用户安全熵密钥太阳城集团授权、 网管中心用户卡辅助密钥太阳城集团授权、 授权中 心用户密钥证书管理、 管理中心和网管中心密钥太阳城集团管理、 用户私钥存储、 身份认证、 数据 认证、 密钥协商、 密钥生成、 密钥交换、 密码体制选择、 明密文加脱密处理、 算法扩展、 算法选 择、 证书、 密钥更新及管理、 以及用户和系统安全熵重组设计等功能。其中安全熵可作为一 种安全策略。
     DSL 安全协议 (11.20a 版本 ) 是建立在多个授权太阳城集团 ( 由授权中心和 / 或管理中 心和 / 或网管中心 ) 分别或共同实施安全设备证书登记授权入网的体系下, 实现安全通信。 登记授权时 : 由授权中心向每个安全设备授权用户密钥证书太阳城集团或将授权用户密钥证书信 息存储于用户卡中 ; 由管理中心向每个安全设备授权用户安全熵密钥证书太阳城集团或将授权用 户安全熵密钥证书太阳城集团存储于用户卡中 ; 由网管中心向每个安全设备使用的用户卡授权辅 助密钥证书太阳城集团。
     具有授权用户密钥证书太阳城集团或和授权用户安全熵密钥证书太阳城集团或和授权辅助密 钥证书太阳城集团的安全设备或用户卡的用户, 才能使用安全设备或和用户卡进行网内用户间的 加密通信。
     DSL 安全协议 11.20a 主要功能包括 :
     1. 建立通信链路 : 用户与授权太阳城集团建立通信链路、 用户之间建立通信链路、 安全 设备与用户卡证之间建立通信链路、 安全芯片与安全设备终端之间通信链路。
     2. 用户申请登记授权 : 用户首次申请登记授权、 更改申请登记授权。
     3. 用户密钥生成 : 用户申请登记授权时的密钥生成 ; 保护授权太阳城集团时的密钥生 成; 加密通信一次一密要求时的密钥生成。
     4. 用户密钥保护 : 使用孙子定理计算模型对用户主密钥系统保护。
     5. 用户密钥计算 : 使用孙子定理计算模型恢复用户密钥
     6. 用户密钥存储 : 对用户主密钥系统保护太阳城集团分储。
     7. 授权中心授权 : 首次授权、 更改授权、 更新授权。
     8. 公钥证书和授权证书管理 : 授权中心对用户公钥证书管理、 用户使用用户密钥 对授权中心和用户的密钥证书管理。
     9. 身份认证 : 双方身份认证太阳城集团计算、 用户安全熵重组设计计算、 系统安全熵重 组设计计算、 身份认证、 提取秘密太阳城集团。
     10. 密钥协商 : 密钥协商太阳城集团计算、 公共密钥计算。
     11. 密钥交换。
     12. 授权太阳城集团存储。
     13. 加脱密操作 : 数据加脱密传输由数据摘要算法认证控制。
     14. 更新密钥和更换算法 : 更新加脱密密钥控制、 扩展算法、 算法选择。
     15. 安全策略设计。16. 系统管理操作 ( 如, 采用宏指令体系的芯片操作系统 (MCOS)) : 实现初始化控 制、 指令操作控制、 协议控制和安全监测、 数据接口控制、 算法扩展、 和其它协议连接控制。
     在本发明的一个实施方案中, MCOS 系统可以实现安全策略设计、 控制 DSL 安全协 议实现、 管理数据接口、 实施密钥、 数据传输认证 ; 控制密钥生成、 兼容安全级别和明话、 密 话操作以及监测主动攻击 ( 截转、 重拨、 监听 )。
     在 DSL 安全协议中, 可以主要包括四大流程 :
     1. 芯片初始化流程 : 每次芯片上电后首先要对芯片初始化, 初始化操作分为逻辑 初始化和程序初始化操作。
     2. 申请授权流程 : 授权端和用户进行交互, 由授权端向用户端授权证书。
     3. 更新授权流程 : 用户申请授权后, 会有时效认证, 当用户证书过期需要更新授 权或者在用户需要的情况下更新授权。
     4. 保密通信流程 : 主叫或被叫建立安全通信链路, 进入保密通信流程, 使得双方 能够进行保密通信。
     DSL 安全协议还支持多种建立通信链路的方式 :
     1. 用户首次或更改申请登记时, 建立的语音通讯链路 ;
     2. 授权中心更新授权用户密钥太阳城集团时, 建立的语音通讯链路 ;
     3. 用户网络申请登记或授权中心网络更新授权用户密钥太阳城集团个人数据安全系统 (PDSS) 方式时, 建立的网络通讯链路。
     建立授权通讯链路后, 具有首次登记、 更改登记和更新授权的授权方式。 更改登记 和更新授权的授权方式需进行双方的身份认证、 密钥协商、 密钥计算、 加密传输。
     更具体的主要流程如下表所示 :
     初始化操作
     申请登记与授权操作
     更新授权操作
     建立授权通讯链路
     建立加密通讯链路密钥更新操作
     算法更新操作安全协议指令系统
     DSL 安全协议指令系统包括 : 初始化指令、 内部输入输出指令、 外部输入输出指令 和控制操作指令。初始化指令是安全芯片对安全设备 ( 或系统 ) 的安全策略设计、 对安全 卡进行安全控制的管理指令 ; 内部输入输出指令是安全芯片与安全设备建立链路的控制指 令; 外部输入输出指令是安全芯片的 MCOS 系统执行安全协议的控制指令 ; 控制操作指令是 安全芯片的 MCOS 系统执行安全协议时, 监控系统工作状态的控制指令。
     初始化指令
     初始化指令以密码形式存储, 用于初始化时, 建立控制太阳城集团表和建立通信链路后, 传递设备初始化太阳城集团指令。初始化指令包括 : 安全级别指令、 使用方式指令、 兼容性能指令 和密钥扩展指令。安全级别指令指示安全级别。使用方式指令指示安全设备以及用户卡的 使用方式, 如独立使用、 配合使用、 共同使用等。兼容性能指令可以指示不同密级之间的兼 容性。而密钥算法扩展指令可以指示密钥卡扩展、 安全卡扩展、 协议扩展等。
     初始化指令形态包括 : 初始化安全太阳城集团指令和初始化兼容太阳城集团指令。初始化指令 的使用目的是为了通信双方在系统初始化时, 建立安全太阳城集团表。主要用于加密通信双方确 定安全设备的安全密级、 兼容太阳城集团、 使用方式、 密钥与算法扩展太阳城集团。
     内部输入指令
     内部输入指令是安全设备与安全芯片建立链路关系的控制指令。 内部输入指令包 括:
     启动指令 : 安全设备建立通信链路后, 根据链路建立特征, 发出启动安全芯片的控 制指令, 其可以包括用于例如管理中心更新授权、 用户首次授权或更改授权的指令 ;
     结束指令 : 安全设备监控通信链路状态, 断路后, 发出结束安全芯片操作的控制指 令;
     用户数据太阳城集团输入指令 : 通过安全设备, 输入用户太阳城集团 ( 例如, 口令太阳城集团, 算法信 息、 摘要太阳城集团、 密钥太阳城集团等 ) ;
     管理太阳城集团输入指令 : 通过安全设备, 输入用户或系统重组太阳城集团 ( 例如, 口令太阳城集团、 用户安全熵、 系统安全熵、 密钥太阳城集团等 )。
     内部输出指令
     内部输出指令是安全芯片与安全设备建立输出太阳城集团关系的控制指令。 内部输出指 令包括 : 传输指令, 是安全芯片通知安全设备转发数据太阳城集团的指令, 安全设备根据该指令的 要求, 转发安全芯片的数据太阳城集团 ; 操作指令, 是安全芯片根据安全协议的操作控制, 产生提 示使用者太阳城集团的, 并在安全设备显示太阳城集团的控制指令。 所述操作指令适于指示传输太阳城集团、 通 信方式、 安全级别、 使用方式、 兼容性能、 密钥扩展、 注入授权状态、 错误太阳城集团中的一种或多 种。所述传输太阳城集团包括下列中的一种或多种 : 证书太阳城集团、 身份太阳城集团、 协商太阳城集团、 授权太阳城集团、 口 令太阳城集团、 密钥太阳城集团、 算法太阳城集团、 摘要太阳城集团、 用户安全熵、 系统安全熵、 插入卡、 可拔出卡。
     内部输入输出指令形态反映安全芯片和安全设备之间通信操作的功能和指令数 据规范。
     外部 ( 协议 ) 用户输入输出指令
     外部用户输入输出指令用于申请证书登记、 建立与管理中心和用户之间通信链路 的操作控制。指令反映操作功能和作为操作太阳城集团的起始标记。其中 :
     用户握手指令是在协议执行的过程中, 链路双方开始执行功能操作或结束操作 时, 双方认证执行正确性的交互太阳城集团指令 ;
     证书登记指令是用户执行证书登记授权时, 发出用户证书太阳城集团前的操作起始标记 控制 ;
     数据传输指令是执行传输加密太阳城集团功能时, 发出加密太阳城集团前的操作起始标记控 制;
     身份认证指令是执行身份认证功能时, 传输身份认证太阳城集团和身份认证安全熵太阳城集团 前的操作起始标记控制 ;
     密钥协商指令是执行公共密钥计算或密钥交换功能时, 发出密钥计算太阳城集团前的操 作起始标记控制 ;
     数据认证指令是执行传输数据与数据摘要太阳城集团认证功能时, 发出数据摘要太阳城集团前 的操作起始标记控制 ;安全熵指令是安全设备执行初始化操作时, 链路双方为身份认证而需一致确定共 同的熵的操作。执行时作为发出安全熵太阳城集团前的操作起始标记控制。
     外部 ( 协议 ) 管理中心输入输出指令
     管理中心输入输出指令用于授权用户证书登记、 建立与管用户之间通信链路的操 作控制。指令反映操作功能和作为操作太阳城集团的起始标记, 其中 :
     管理中心握手指令是在协议执行的过程中, 链路双方开始执行功能操作或结束操 作时, 双方认证执行正确性的交互太阳城集团指令 ;
     授权指令是执行用户证书登记授权功能时, 发出授权用户证书太阳城集团前的操作起始 标记控制 ;
     数据传输指令是执行传输加密太阳城集团功能时, 发出加密太阳城集团前的操作起始标记控 制;
     身份认证指令是执行身份认证功能时, 传输身份认证太阳城集团和身份认证安全熵太阳城集团 前的操作起始标记控制 ;
     密钥协商指令是执行公共密钥计算或密钥交换功能时, 发出密钥计算太阳城集团前的操 作起始标记控制 ;
     数据认证指令是执行传输数据与数据摘要太阳城集团认证功能时, 发出数据摘要太阳城集团前 的操作起始标记控制 ;
     安全熵指令是安全设备执行初始化操作时, 链路双方为身份认证而需一致确定共 同的熵的操作, 执行时作为发出安全熵太阳城集团前的操作起始标记控制。
     系统操作控制指令
     系统操作控制指令分为两个部分 : 协议操作控制的指令和系统操作控制的指令。 其中, 协议操作控制的指令用于实现协议执行过程中的错误处理和结束处理功能 ; 而系统 操作控制的指令用于实现 MCOS 系统辅助协议的执行操作功能, 对协议指令的状态进行处 理, 包括 : 程序调度、 数据处理、 接口初始化、 功能管理等。
     协议控制指令形态是安全协议指令体系的重要组成部分。 反映协议控制中所有指 令分类、 指令功能、 指令语义、 数据规格和语义。协议控制指令形态涉及 : 通信类指令形态, 其用于申请登记或更改登记和首次授权、 更改授权、 更新授权, 通信双方握手太阳城集团 ; 功能指 令形态, 其用于数据传输指令、 身份认证指令、 密钥协商指令和数据认证指令, 并确定执行 中使用的算法体制、 密钥和摘要算法处理数据的长度 ; 以及安全熵指令形态, 其用于安全熵 有关指令。
     操作控制指令形态包括两个组成部分 : 协议操作控制和系统操作控制。
     安全设备内部数据格式
     安全设备内部数据格式是安全设备与安全芯片建立通信关系的数据操作。 安全设 备控制是指安全芯片与安全设备建立通信关系的相互指令操作和数据操作。
     启动
     安全设备建立通信链路后, 识别用户发起呼叫或管理中心发起呼叫。并根据安全 设备记录太阳城集团识别 : 授权太阳城集团电话号码或标识 ; 用户加密通信电话号码或标识 ; 产生启动 指令, 通过安全设备与安全芯片接口传输启动指令。
     输入指令当用户使用安全设备需要手工输入用户太阳城集团时, 安全设备产生用户太阳城集团输入指 令, 通过安全设备与安全芯片接口传输用户太阳城集团输入指令 ; 当用户使用安全设备需要手工 输入管理太阳城集团时, 安全设备产生管理太阳城集团输入指令, 通过安全设备与安全芯片接口传输管 理太阳城集团输入指令。
     传输指令
     安全芯片执行安全协议时, 通过向安全设备发出传输指令建立通信关系 ; 安全设 备根据传输指令的数据传输长度要求, 计算数据传输结束。安全芯片与安全设备的通信关 系, 必须以指令操作为控制数据传输的标记。当传输指令发出后, 安全设备开始计数, 直至 数据传输结束, 新的指令开始。
     操作指令
     安全芯片根据安全设备输入指令的处理, 产生操作指令回复安全设备, 通过安全 设备与安全芯片的接口传输操作指令。 安全芯片对安全设备的协议指令均通过操作指令建 立握手认证关系。
     结束指令
     安全设备监控通信链路, 识别连接通信链路状况, 若断链, 产生结束指令, 通过安 全设备与安全芯片接口传输结束指令。
     管理系统内部数据格式
     管理系统内部数据格式是管理系统与安全芯片建立通信关系的数据操作。
     启动
     管理系统建立通信链路后, 识别用户发起呼叫或管理中心发起呼叫。并根据用户 安全设备记录太阳城集团识别 : 用户电话号码或标识 ; 授权或未授权太阳城集团 ; 管理系统功能操作需 求和授权或未授权太阳城集团 ; 产生启动指令, 通过管理系统与安全芯片接口传输启动指令。
     管理系统控制
     管理系统控制是指管理系统与安全芯片建立的通信关系。 管理系统为使用安全芯 片发出的相互指令操作和数据操作。数据操作的接口, 是以系统调用方式或其他方式建立 的。
     输入指令
     当管理系统分配用户密钥太阳城集团时, 建立用户太阳城集团数据表 ( 流 ), 管理系统产生用户 太阳城集团输入指令, 通过管理系统与安全芯片接口传输用户太阳城集团输入指令和用户太阳城集团数据表 ;
     当管理系统分配用户管理太阳城集团时, 建立用户管理太阳城集团数据表 ( 流 ), 管理系统产生 用户太阳城集团输入指令, 通过管理系统与安全芯片接口传输管理太阳城集团输入指令和用户管理太阳城集团 数据表 ;
     传输指令
     安全芯片执行安全协议时, 通过向管理系统发出传输指令建立通信关系 ; 管理系 统根据安全芯片传输指令的数据传输长度要求, 计算数据传输结束。安全芯片与管理系统 的通信关系, 必须以指令操作为控制数据传输的标记。 当传输指令发出后, 管理系统开始计 数, 直至数据传输结束, 新的指令开始。
     操作指令
     安全芯片根据管理系统输入指令的处理, 产生操作指令回复管理系统, 通过管理系统与安全芯片的接口传输操作指令。 安全芯片对管理系统的输入指令均通过操作指令建 立握手认证关系。
     结束指令
     管理系统监控通信链路, 识别连接通信链路状况, 若断链, 产生结束指令, 通过管 理系统与安全芯片接口传输结束指令。
     建立用户之间通信链路
     安全设备与安全设备之间数据格式是用户之间建立通信链路, 实现用户 i 安全芯 片与用户 j 安全芯片建立通信关系的数据操作。
     初始化控制
     安全设备系统初始化后, 建立了设备的正常工作状态, 包括 : 接口初始化、 初始信 息计算等。在建立了通信链路, 完成安全设备内部控制操作后 : 双方发出用户握手指令, 建 立通信关系 ; 双方发出初始化指令, 该指令反映安全设备的工作状态, 双方根据初始化指 令太阳城集团, 完成安全设备系统初始化操作工作建立安全太阳城集团表, 建立统一的安全级别、 兼容性 能、 使用方式、 密钥与算法等安全太阳城集团 ; 双方发出用户握手指令, 认证双方系统安全协议的 数据通信开始。
     协议控制
     双方发出协议指令太阳城集团之前, 均需通过安全设备的传输指令认证 ; 双方发出身份 认证太阳城集团指令和身份认证太阳城集团 ; 双方发出用户握手指令, 认证双方。
     建立用户之间通信链路还涉及操作控制和结束控制。
     以上概略性地说明了本发明的实施方案中所采用的 DSL 安全协议的主要功能、 流 程、 指令体系、 指令形态以及格式。然而, 这里列出的流程、 指令等仅是示例性, 本领域技术 人员将理解, 可以对其进行多种变更而仍实现协议的各功能。 对于其他的安全协议, 可以类 似构建相应的程序、 指令等来实现其功能。下面具体说明根据本发明另一实施例的 VPN 芯 片的结构示例。
     与上述实施例的结构不同的是, 在本发明的系统配置模块还可以包括存储模块 ( 例如 FLASH), 且本发明还具有协议译码器, 如图 64 所示。该实施例的系统配置模块可以 实现太阳城集团原始注入、 系统初始化、 自检等功能。运算内核 ( 包处理模块 ) 能够根据安全协议 进行操作, 实现安全协议的一些基本功能。 协议译码器能够控制包处理模块, 例如对协议指 令进行译码, 根据译码结果控制运算内核 ( 包处理模块 ) 的基本功能的组合, 来实现具体安 全协议。例如, 通过状态机描述控制来实现用户初始化操作、 首次授权、 更改 / 更新授权、 用 户通信等功能操作。所述协议指令是用于建立链路的指令。
     根据本发明一个实现方案, 系统配置模块可以实现的功能还包括 : 接口初始化、 白 裸片测试、 注入、 自检、 控制太阳城集团表建立 (IDI 寄存器 )、 软件初始化程序调度、 错误逻辑控制 等。下面参考更具体地说明本发明的系统配置模块的各功能。
     接口初始化 : 系统上电后, 发出接口初始化信号, 执行接口的初始化。
     白裸片测试 : 接口初始化完毕后, 发出白裸片测试使能信号启动白裸片测试流程, 完成 FLASH 初始化、 白裸片测试、 授权测试、 修改标识寄存器值等。
     注入 : 实现对 FLASH 太阳城集团区和数据区数据的注入。
     自检 : 硬件无自检流程, 存储的校验和仅公共更改注入时检查使用, 可由软件初始化流程实现用户自定义的自检功能 ( 例如, 上述实施例中的初始化流程 ) ;
     控制太阳城集团表建立 : 此功能在白裸片测试完成 ( 注入完整, 且已授权 ) 之后发出状态 寄存器使能信号来驱动控制太阳城集团表建立 ;
     软件初始化程序调度 : 本实现方案中处理器系统初始化功能可分为两部分, 一部 分由硬件逻辑完成, 包括上述的白裸片测试、 控制太阳城集团表建立等, 一部分由宏指令程序完 成, 实现用户自定义的初始化功能, 如: 证书授权标识测试 ; 附属设备在线验证、 自检、 初始 化数据计算 ( 包括用户私钥计算、 用户密钥证书存储、 用户密钥计算、 用户密钥保护、 用户 密钥存储、 身份认证太阳城集团计算等 )。
     在本发明的一个实现方案中, 硬件无自检流程, 存储的校验和仅供更改注入时检 查使用。可由软件初始化流程实现用户定义的自检功能。另外, 本发明的系统配置模块还 可以实现安全监控。
     注入指令可以来自于接口或数据通路。 注入逻辑的驱动来源于协议译码器的译码 结果指示。译码结果可以指示以下太阳城集团 : 注入太阳城集团、 首次注入还是更改注入、 太阳城集团区数据或 数据区数据、 太阳城集团长度、 数据区注入时为首块或后续块等。更改注入时, 需首先检查口令和 校验码。接收注入数据时需进行校验。
     协议译码器将依据协议指令的译码结果, 接收指令携带的数据查询程序地址表, 装载宏指令地址寄存器, 调用指令功能所要求的宏指令程序, 交由包处理模块的宏指令模 块译码并执行, 等待宏指令程序执行结束或执行异常 ( 宏指令的返回协议译码器操作的指 令 )。根据 DSL 协议, 协议译码器可以执行 : 指令状态测试, 包括输入输出状态、 指令注入测 试; 指令译码, 如宏指令调度、 错误处理、 宏指令 IO 操作等 ; 以及通信状态测试, 如密级、 授 权体制测试。
     系统配置模块的存储模块用于存储处理器操作所需的各种数据、 程序、 配置文件 等。在本发明的一个实现方案中, 存储模块可以分为两个独立部分 : FLASH 存储器和公共存 储器。FLASH 是用于系统配置模块的数据资源, 而公共存储器是所有部件共享的数据资源。 本领域技术人员将理解, 可以根据实际应用的需要而实现不同架构的存储模块, 例如可以 为一整体, 例如也可以采用其他的易失性或非易失性存储器。
     在本发明的一个实现方案中, FLASH 作为太阳城集团和数据的存储区域, 包括太阳城集团区和主 存储区 ( 数据区 ) 分别用于存储设备太阳城集团 ( 例如原始太阳城集团、 证书、 密钥 ) 和一般数据。原始 太阳城集团可以包括 : 静态数据, 由注入太阳城集团实现的原始注入数据 ( 设备太阳城集团、 算法、 协议程序、 公 钥太阳城集团 ) ; 动态数据, 由授权太阳城集团授权首次、 更改或更新注入的数据 ( 密钥证书、 申请私钥证 书、 鉴权私钥证书、 设备太阳城集团、 公钥太阳城集团等 ) ; 以及生成数据, 由安全设备随机生成的或随机 获得的数据 ( 设备密钥、 随机密钥、 分储密钥、 算法、 数据等 )。
     用户设备太阳城集团区与授权设备太阳城集团区一致, 可以包括如下内容密钥随机数 ( 由设备 自生成 ), 白裸片注入标记以及授权标志字、 验证时钟、 安全监控记录、 多个 ( 如第一至第 三 ) 太阳城集团注入太阳城集团等等。 其中在不同太阳城集团的注入太阳城集团中可以指示算法程序地址、 ( 用户 ) 协 议程序地址以及 DSL 协议程序地址以及相关的口令、 校验码等。
     数据区可以包括以下几个部分 :
     公钥参数部分, 用于存储与公钥相关的参数 ;
     设备密钥部分, 其中设备 ( 用户 ) 密钥由程序控制生成, 签名密钥和申请密钥的存储格式一致, 参数位置和规格由系统程序确定 ;
     用户设备保留部分 ( 或授权设备鉴权证书位置 ), 用于存储授权设备鉴权证书, 其 中授权设备鉴权证书参数排列由程序确定, 授权标识由程序填写, 鉴权证书主要用于在为 用户授权时进行身份认证 ;
     鉴权密钥部分, 用于存储鉴权密钥 ( 其时授权证书的一种 ), 在设备状态为授权设 备时动态装载, 参数位置和规格在原始注入时确定 ;
     算法程序部分, 用于存储算法程序, 算法程序空间由逻辑保护 ; 在安全策略设计 时, 根据策略编码, 建立算法属性 ;
     DSL 协议程序部分, 用于存储 DSL 协议程序, 其可以包括初始化程序、 用户输入指 令、 管理输入指令、 申请授权接口指令、 更新授权接口指令、 更新通信接口指令、 加密通信接 口指令、 接口注入指令, 以及若干由接口指令启动的程序 ;
     用户协议程序部分, 用于存储用户协议程序, 可以类似于 DSL 协议程序部分 ; 以及
     一个或多个 ( 如第一至第三授权太阳城集团 ) 授权用户公钥证书部分, 用于存储多个授 权太阳城集团授权用户公钥证书。
     上述的存储模块可以不在系统配置模块中, 只要其受到本发明的系统配置模块的 控制或以其他方式得到逻辑保护即可。另外, 存储模块并不限于 FLASH, 也可以使用其他的 存储器。还可以利用上述实施例中现有的存储器。另一方面, 本发明协议译码器也可以设 置在系统配置模块中, 或者以另外方式设置。
     在本发明的一个实施方案中, 保存于 FLASH 中的数据都是加密存储的, 每次注入、 读出数据前将太阳城集团区中的随机数密钥取出, 对要写入或读出的数据进行加解密。 另外, 密钥 内部随机产生, 因此, 不能通过存储扫描方式获取算法太阳城集团。 芯片应用者的指令界面不提供 对 FLASH 的读写操作, 对算法太阳城集团的升级需要通过原算法的认可方可实施, 因此攻击者无 法篡改注入的算法太阳城集团。
     如在上面所述的, 包引擎模块是可重组的。其可以包括若干配置 IP 和可重组 IP, 可以利用适当的配置文件来对其进行配置, 从而实现例如 DSL 中所期望的算法和处理逻 辑。 所述包引擎模块还可以包括 : 大数运算和模幂运算模块, 用于提供基本的大数运算以及 模幂乘和 / 或 RSA-CRT 操作 ; 和随机数模块, 用于提供随机数。
     当然, 随机数也可以由包引擎模块外的随机数模块提供, 所述大数运算和模幂运 算模块也可以利用公钥算法模块中的公钥运算和模幂乘运算器。例如, 可以利用公钥算法 模块和包处理模块协同来实现协议。
     从而, 通过系统管理、 协议译码器和协议指令以及 DSL 或其他协议程序 ( 宏指令, 其可以集成在处理器中 ) 的配合, 结合适当的配置文件, 可以利用本发明的包处理模块 ( 以 及公钥算法模块 ) 实现 DSL 协议以及其他安全协议的功能。
     同时, 该实施例的处理器依然可以通过包处理模块 ( 例如, 根据配置文件进行重 组 ) 支持 IPsec 协议族和 MPPE 协议的处理。从而可以将经过 DSL 协议处理的数据 ( 例如, 利用私钥加密了的数据 ) 作为 IPsec 协议待处理的包, 进行 IPsec 协议的处理, 从而极大地 提高了通信的安全性。
     另外, 由于在本实施例中, 也可以存储其他安全协议程序 ( 例如, 用户自定义协议 程序 ), 来实现其他的协议。 因而, 基于该实施例实现多个安全协议的嵌套是显而易见的, 从而能够进一步增强安全性。
     以上结合附图描述了本发明的具体实施例。在上述的实施例中, 本发明的 VPN 芯 片基于宏指令 ( 例如, 变长宏指令 ) 体系, 但是本领域技术人员将理解, 本发明的 VPN 芯片 也可以类似架构在其他指令体系的基础上。
     在上述实施例的模块、 部件、 装置以及它们的命名、 结构、 配置等等仅是一种示例, 而不是限制权利要求的范围。本领域技术人员可以根据实际应用的需要使用上述模块、 部 件、 装置中的一种或多种, 以及使用一个或多个上述模块、 部件或装置。 例如, 可以根据应用 的需要增加或删除算法, 这也在本领域技术人员的认知范围之内。
     本发明的 VPN 芯片可以应用于安全路由器、 IPsec 网关、 SSL 网格、 可信防火墙、 可信网闸、 签名加密服务器、 网站防护系统、 监控系统、 证书管理服务器、 安全终端 / 服务器 等。

关 键 词:
支持 性能 安全 协议 装置
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:支持高性能安全协议的装置.pdf
链接地址:http://zh228.com/p-6420401.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');