千兆国产化商用密码卡技术*

2019-06-10 07:01
通信技术 2019年5期
关键词:嵌入式软件驱动程序密钥

秦 放

(四川卫士通信息安全平台技术有限公司,四川 成都 610000)

0 引 言

商用加密卡作为基础密码设备,在金融、电力、社保等行业中为各种类型的上层安全应用提供了底层的算法加速、身份认证、密钥管理和敏感数据保护等服务。目前市面上的千兆商用密码卡在设计上大都采用集成度高的进口器件,在算法实现上也过分依赖进口逻辑器件,所用算法也大都是国际公开算法,如:AES(Advanced Encryption Standard)、DES(Data Encryption Standard)、RSA(Rivest Shamir Adleman)、ECDSA(Elliptic Curve Digital Signature Algorithm)等等,且对于敏感资源和密钥的管理、保护都没有满足国家相关的密码行业标准。本文通过分析加密卡的设计要素,描述该千兆密码卡的设计实现思路及国产化的实现途径,最终呈现出这款产品化的密码卡的接口特性和实测性能。实测结果表明,该千兆密码卡的对称运算性能逼近 1 Gbps,非对称运算签名性能超过50 000 tps。

1 设计思路

1.1 硬件组成

密码卡的硬件部分主要由主控单元、总线接口单元以及密码运算单元组成。

密码卡采用国产正向设计的PH5系列FPGA实现高速PCI-E(Peripheral Component Interconnect Express)总线协议[1],使得密码卡可以通过该总线单元实现与主机的互联。上层软件安全服务接口调用的命令均通过该总线单元发送给密码卡的主控单元。

密码卡的主控单元采用的是国产的X1000E作为主控芯片,接受应用层软件的接口调用,负责密码卡上各部分硬件资源的管理和调度,完成具体的密码业务。

密码卡提供多种算法的密码运算服务,其中:对称密码算法提供SM1、SM4[2];非对称密码算法提供SM2[3];杂凑算法提供SM3[4]。密码卡通过密码算法提供数据加密/解密、签名/验证及杂凑运算等基础密码运算服务。密码卡的密码运算由专用算法引擎(SSX30-D实现SM1;SSX1510实现SM2/3/4)共同构成,如图1所示。

图1 硬件组成框

1.2 嵌入式软件架构

密码卡的嵌入式软件是为应用提供安全服务的关键所在,它的主要功能是向应用提供硬件资源的管理和调度,因此在设计上主要考虑各种安全服务的实现以及设备自身的安全防护,嵌入式软件架构图如图2所示。

密码卡的嵌入式软件运行在X1000E处理器上,嵌入式软件由5个部分组成:硬件驱动程序、接口命令处理、存储资源管理、任务管理和状态 管理。

图2 嵌入式软件架构

(1)硬件驱动程序

从整个软件架构考虑,将直接访问硬件资源的程序抽象出来,形成一层软件模块,即硬件驱动程序。这样,密码卡的其他嵌入式软件模块就不用考虑如何访问硬件,全部交给硬件驱动程序来处理。

硬件驱动程序在内部实现对板卡上各类硬件资源的正确、快速和稳定的访问,提供抽象后的访问硬件的调用接口,将密码卡嵌入式软件与硬件资源在逻辑上隔离开。

(2)接口命令处理

接口命令处理模块从处理器角度来看就是一个中断处理程序,处理主机的请求。主机向密码卡发出请求后,X1000E会收到来自主机的中断信号,然后进入中断处理程序,同时请求的命令数据会进入X1000E可访问的PH5接口芯片例化出的一块双口存储区中。在中断处理程序中,X1000E将命令数据读出进行解析后交由任务管理模块处理,将处理结果回写到PH5接口芯片对应的存储区中,然后触发接口芯片向主机发送中断,这样主机侧的驱动程序就会将处理结果从接口芯片读出。

(3)存储资源管理

整个硬件板卡的存储资源分为两部分:SPI Flash和eMMC。Flash上主要存储X1000E的Boot程序、系统文件和一些管理信息。eMMC则主要用于存储密码卡在正常工作状态下需要存储的一些配置信息、密钥文件及部分对外开放的存储文件。

(4)任务管理

任务管理模块是密码卡嵌入式软件的关键部分,它是密码卡提供安全密码服务的具体执行部件。

任务管理模块的“命令”来源于接口命令处理模块,它的处理结果也送往接口命令处理模块,在程序代码上表现为一个函数向量表。根据接口命令处理模块对主机命令的解析结果,任务管理模块执行具体的命令操作,比如:加解密、杂凑运算、采集随机数、登录认证等等。任务执行结束后,不管成功与否都将结果交予接口命令处理模块。

(5)密码资源管理

密码资源管理模块用于对密码算法及其参数和对应密钥的管理。

针对算法及其参数的管理,主要的工作体现在对算法的配置、算法的安全处理。

针对密钥的管理,表现在密钥的产生、存储、输入输出、密钥的保护及销毁等多个环节的安全性、正确性的保障。

密码卡嵌入式软件的主要流程图如图3所示。

图3 嵌入式软件流程图

1.3 设备驱动程序

设备驱动程序[5]是上层应用与密码卡之间通信的桥梁,它支持多进程、多线程并发处理。设备驱动程序是整个主机软件工作的基础部分,驱动程序的实现是否正确高效,直接关系到密码卡能否在相应的操作系统中运行的稳定性与高效性。

密码卡的设备驱动程序主要由下面几个模块组成:

(1)驱动程序入口处理。

(2)设备对象的创建。

(3)驱动程序的卸载。

(4)即插即用处理。

(5)电源管理。

(6)数据传输。

(7)中断处理。

由于大部分模块在Windows内核下都是标准的处理流程,因此下面只描述与密码卡硬件设计密切相关的“数据处理”和“中断处理”两个模块的实现原理。

(1)数据处理

数据传输模块[6]是驱动程序中最重要的部分,我们采用标准的StartIO例程来处理请求数据包, 图4是驱动程序中数据处理逻辑图。

当应用程序调用DeviceIOControl时,I/O管理函数就会创建一个IRP,并把这个IRP派发给对应驱动程序的派发例程。当大量读写请求进入设备,我们把这些请求放入一个队列中以便使硬件串行化处理。每个设备对象都自带一个请求队列对象,接着进入StartIO例程。

图4 数据处理流程

当派发例程调用IoStartPacket()处理一个IRP时,I/O管理器就调用一次StartIO例程,StartIO例程的工作就是处理IRP,这就需要访问密码卡接口单元的内部寄存器,把应用层的数据拷贝到内核缓存中,然后启动主机向密码卡的DMA传输[7]。当密码卡处理完当前的数据并将处理结果传向主机时,主机就会收到相应的中断。

(2)中断处理

密码卡使用异步方式的中断来告知主机CPU其I/O操作的完成,当密码卡处理完当前的数据并将处理结果传向主机时,主机就会收到相应的中断。设备的驱动程序收到这个中断后进行相应的处理,并完成一次数据从设备向主机的传输。

2 关键技术及创新点

密码卡支撑着PCIE总线上大量数据的传输处理,数据处理性能越高,对主机性能的影响就越小。因此提升密码卡的整体性能,从而减少主机上由于增加密码功能而带来的额外负担具有十分重要的意义。在硬件设计上从以下几个方面提升了性能:

(1)高效地实现密码算法

密码卡采用高性能的SSX30-D芯片和SSX1510芯片来分别实现SM1和SM2/3/4算法,以满足高速数据处理的需要。如图5所示。

图5 运算单元逻辑图

图6 总线接口单元逻辑图

在调度单元的控制下,运算单元分别针对每种密码运算业务实现运算引擎的管理和并发调度。密码卡的主控制器X1000E通过SRAM总线来操作密码运算引擎接口逻辑部分的配置寄存器,对密钥、初始向量和工作模式等参数进行预置和管理。运算单元引擎接口的另外一个数据通道直接与PCIE总线相连,直通主机,使主机上的业务数据可以在不通过主控制器而直接进入运算单元,在调度模块的管理下执行算法运算。在各算法业务的流程中,由于减少了数据传输需要主控制器参与和数据搬移的中间环节,从而极大提升了整体的密码运算 性能。

(2)高效实现PCIE总线接口单元

基于PH5芯片自带的PCIE core,DMA控制器[8]以及在逻辑中例化出的主控制器接口通道和运算单元接口通道共同完成了接口单元的设计。如图6所示。

当密码运算的速率越接近总线传输速率时,总线的数据传输开销对整个性能的影响就变得越明显。如果总线数据传输和密码运算串行执行,密码运算芯片就无法满负荷工作,必然会极大地影响密码卡的整体数据吞吐率,因此我们在总线接口单元上采用了DMA和多缓冲流水线调度技术[9],使总线数据传输和密码运算并发执行,从而使密码卡的密码整体运算性能逼近密码运算芯片的输出 性能。

(3)安全机制

为了增强密码卡的安全性和稳定性,针对可能受到的各类攻击、风险,密码卡采取了多种安全防护措施,主要功能如下:

采用国家密码局批准使用的SM1/2/3/4算法,且算法实现采用具有国密型号的芯片;

通过嵌入式软件的设计,实现了完善的上电自检、周期性自检措施;

采用具有国密型号的USBKey作为分离式身份认证介质,防止非法用户操作密码卡;

采用三层密钥结构体制,实现密钥的逐层保护,保证密钥在生成、安装、导入、存储、备份、恢复及销毁整个生命周期的安全;

物理性安全措施的加持,例如:密码卡具有带散热功能的屏蔽防护盖、结构件由防撬螺钉固定、主要器件电源均使用电容对地做平滑处理以降低能量分析攻击风险等;

主要元器件全国产,真正实现了自主可控。

3 性能指标

基于龙芯3A2000平台对密码卡进行了各项算法指标的测试,平台信息如图7所示。

图7 主机配置

各项性能测试指标详情如表1所示。

表1 性能测试(包长2048字节)

4 结 语

国产化商用密码卡主要元器件均采用国产化芯片,可同时支持国家标准算法SM1/2/3/4,在x86平台上能够达到千兆性能,在国产化龙芯3A2000平台上也能达到准千兆的性能。该密码卡满足GM/T 0028[10]、 GM/T 0039[11]标准的安全技术要求中二级模块的各项指标,安全服务接口严格遵循GM/T 0018规范[12],能够实现各安全应用与密码卡的无缝衔接与调用,具有很好的应用价值和市场推广价值。

猜你喜欢
嵌入式软件驱动程序密钥
幻中邂逅之金色密钥
幻中邂逅之金色密钥
密码系统中密钥的状态与保护*
嵌入式软件测试数据传输稳定性检测方式分析
阻止Windows Update更新驱动程序
TPM 2.0密钥迁移协议研究
计算机硬件设备驱动程序分析
全景相机遥控器嵌入式软件V1.0 相关操作分析
基于Eclipse的航天嵌入式软件集成开发环境设计与实现
航天嵌入式软件浮点运算误差分析与控制