时间:2024-08-10 来源:网络搜集 关于我们 0
摘要
随着物联网、云计算、大数据等新技术的不断发展,以及大规模数据中心、超高速通信、软件定义存储等一系列应用场景的落地,越来越多的新兴领域对密码技术,特别是高速、超高速密码技术的需求越来越迫切。以系统化思维视角对高速密码技术体系进行了拆解和分析,通过划分密码芯片级、密码板卡级、密码整机级、密码平台级等不同层次,阐述了各个层次中密码实体在落地和实践高速密码工程化方面的技术思路,最后从系统思维角度对后续高速密码技术发展进行了总结和思考。
内容目录:
1 高速密码体系的系统化思维认知
2 高速密码体系的工程化实践要点
2.1 密码产品高性能优化原则和方向
2.2 芯片级密码产品高性能设计要点
2.3 板卡级密码产品高性能设计要点
2.4 整机级密码产品高性能设计要点
2.5 平台级密码产品高性能设计要点
3 高速密码技术体系发展思考
4 结 语
近年来,《密码法》《网络安全法》《数据安全法》等法律法规以及与密码应用安全性评估相关的一系列技术标准的相继颁布和实施,标志着我国密码发展进入了有法可依、有据可循的新阶段,这些都对各行各业的信息系统合规、正确、有效开展密码应用提供了具体指导。
在此背景下,伴随物联网、5G、云计算、大数据等新兴技术的不断发展,智慧城市、智慧行业、大规模数据中心、超高速线路通信等场景也正在不断落地推广。在密码外在的使用需求中,计算速度越来越快并且伴随复杂度的大幅提升,通信速度越来越快并且伴随协议交互越来越多,存储速度越来越快并伴随数据量越来越大和可靠性要求越来越高。这些应用技术特点对密码技术特别是高速、超高速密码技术的发展提出了迫切需求。这些需求对于密码产品而言,主要是实现高速、高性能密码运算和服务,尽可能地去匹配业务的高速处理能力,避免因为安全而形成过多的性能瓶颈。
1 高速密码体系的系统化思维认知
系统化思维是解决复杂性问题、拆解思维难题的有效方法论,在过去几十年的不断发展中,帮助各行各业解决了众多难题。杰拉尔德·温伯格在他的经典著作《系统化思维导论》 中所述的“一个系统就是对世界的一个看法”,为人们研究建立各类“系统”提供了新视角。
对于任何系统而言,它都具有功能、要素和连接 3 个基本属性。其中,功能是指系统对外提供的能力;要素是指系统内的各个组成部分 / 实体;连接是指要素间的关系,它也是促使要素功能最大化必不可少的促进因素。
从系统的角度来看,任何对外提供密码服务的实体,无论简单还是复杂,都是完整的“系统”,体现的是对业务应用大“系统”的认知。高速密码技术体系所依赖的实体是高速密码(服务)系统,从系统化思维视角阐释如表 1 所示。所示。
表 1 高速密码体系的系统化思维阐释
续表
2 高速密码体系的工程化实践要点
2.1 密码产品高性能优化原则和方向
根据表 1 的阐述,高速密码系统旨在为上层各类应用提供性能尽可能完善的各类密码服务,这些密码服务的提供往往是不同层面密码产品协力达成的效果。典型密码系统层次体系如图 1 所示,其中,橙色要素标识了以实现密码运算为主的实体(部件),绿色要素标识了以实现密码通信为主的实体(部件)。
图 1 典型密码系统层次体系
整体而言,密码系统通常包括密码芯片级、密码板卡级、密码整机级和密码平台级 4 种类型,高速密码系统所侧重实现的核心能力为密码运算和密码通信。所以,对于高速密码能力的优化,应聚焦在提高密码运算和密码通信能力两个方面,针对这两个方面进行拆解,进而将指标分解到不同层次的各个实体中。
在设计时,各层次实体主要遵循两个原则:密码算力最大化原则和通信与密码算力匹配原则。密码算力最大化原则是指评估密码资源需求,设计或集成具有更高密码运算能力的逻辑电路或者实体部件,旨在实现尽可能高的基础密码计算能力。通信与密码算力匹配原则是指,精心选择和设计通信信道规格,优化内在通信协议机制,实现密码算力的高比例输出,从而对外提供真正高性能的密码服务。
2.2 芯片级密码产品高性能设计要点
芯片级密码产品通常包括专用密码芯片和通用密码芯片两类。专用密码芯片根据不同密码算法定制的具有特殊规格的集成电路,通过优化特定密码算法的数据路径和流水线,实现高性能和小面积的平衡。在设计和优化上层密码产品性能时,专用密码芯片选型后其基本性能就已经确定,难以通过调用方式的优化来实现性能提升。基于通用密码芯片实现密码算法时,通常包括基于嵌入式中央处理器(Center Process Unit,CPU)软件实现和采用现场可编程逻辑阵列(Field Programmable Gate Array,FPGA)芯片硬件实现两种方式。CPU 软件实现方式通常用于低成本和快速交付解决方案中,难以实现高性能密码服务,要想提升密码服务性能,必须采用 FPGA 芯片实现高速密码服务。
按照密码算力最大化原则,根据 FPGA 芯片物理资源评估算力,在工作频率固定的情况下,尽力增加密码算法 IP 核,如根据我们的产品开发经验,赛灵思 XC7VX690T(或复旦微电子等厂商的对应型号国产替代品)可实现 64 个 SM3/SM4 算法核,这些算法核通过多路并行和流水线处理,能够极大地提升密码运算能力。此外,在分组类算法工作模式中,如计数器(CounTeR,CTR)模式、带密文挪用的异或加密结构可调分组密码工作(Xor-encryption-xor Tweakable block cipher with ciphertext Stealing,XTS)模式等,尽可能地将可并行的运算过程,实现在 FPGA 逻辑中,而非从灵活性考虑实现在上位机软件中,将芯片最大化的算力用于密码运算。
按照密码通信和密码算力匹配原则,FPGA密码运算能力只有输出给外部对象才有意义,这就对密码通信能力提出了要求,需要根据需求配置好高速串行计算机扩展总线(PeripheralComponent Interconnect express,PCIe)知识产权(Intelligence Property,IP)核,按需提供 PCIe 2.0/3.0 X1/X4/X8 甚至 X16 规格的通道。
2.3 板卡级密码产品高性能设计要点
密码板卡(也称密码卡、密码模块、密码模组等)是实现安全、高性能密码服务的通用载体,能够满足各类密码整机类产品需求。密码板卡的密码运算和密码通信能力通常基于密码芯片和通信芯片设计实现。
在提升密码算力方面,最有效的方式是增加密码芯片数量,因此在板卡电路设计和驱动程序设计上可以考虑采用多芯片并行运算机制。如业界某款面向客户 SM2 高性能需求使用的高速密码板卡,在设计上最高可支持 4 路 SM2 专用芯片并行处理,上位机实测 SM2 签名性能高达 45 万 TPS,板卡布局如图 2 所示,其中用方框标识了 4 颗专用密码芯片。
图 2 多芯片并行运算提升密码算力布局
在提升密码通信能力保证密码算力高比例输出方面,通过 USB、PCIe 是最常见的方式,在高速密码板卡(模组)产品中,性能最高的PCIe 接口几乎成为标配,应根据密码运算能力选择与之匹配的 PCIe 接口规格,如 PCIe X4 调整为 X8,Gen2.0 调整为 Gen3.0 都能实现通信能力翻倍提升。在物理通信信道方面,还可以通过增加信道数来提升性能,如业界某双通道加密板卡(如图 3 所示),按照客户需求定制专用连接器接口,实现了独立双 PCIe 通道密码运算及通信输出,上位机实测对称加解密速度达到了 50 Gbit/s。
在密码服务能力输出方面,还应重视驱动程 序 的 设 计 优 化, 基 于 Scatter-Gather(SG)提高直接存储器访问(Direct Memory Access,DMA)传输效率、异步缓存、减少内存拷贝等技术,可有效提升密码运算能力输出效率。
图 3 双通道设计提升密码能力
通过提升密码板卡的密码运算能力,提升密码通信效率,位于上位机的密码运算服务接口库便可将底层以硬件实现为基础的高速密码服务对外输出和呈现。
2.4 整机级密码产品高性能设计要点
整机类密码产品、密码设备通常基于密码硬件板卡来实现基础密码运算,并通过软件类密码业务服务实现密码功能。
按照密码算力最大化原则,最直接有效的方式是增加主板上置入密码板卡的数量,实现多卡并行计算。在安全性要求不高的应用场景中(如等保一级和二级的信息系统中),还可以基于 CPU 进行软件密码运算,通过指令集级软件优化可大幅提升性能,如基于 Intel IPP 库进行密码运算可显著提升运算性能。
在提升密码通信性能方面,特别是对于大吞吐量加解密需求,可从物理接口、网络驱动调优、密码业务高并发、网络业务协议优化等方面进行充分设计和优化,典型优化机制和性能提升要点如表 2 所示。
表 2 密码整机产品密码通信性能提升要点
在密码运算服务接口方面,行业标准的安全设备功能(Security Device Function,SDF)接口 定义清晰,但部分接口效率并不高,可基于标准接口进行扩展,通过捎带传输、批量运算等方式提高接口输出性能。对于 Java 类密码服务接口,可通过 Java 原生接口(Java Native Interface,JNI)机制实现比 Java 原生访问(JavaNative Access,JNA)机制更高效率的接口转换。
2.5 平台级密码产品高性能设计要点
对于业务应用系统而言,往往会由于高性能、高可用、统一管理调度等需求,需要部署密码平台级产品来实现密码服务大规模利用。对于对外提供密码服务的平台级密码产品,通常是以密码设备为依托,将密码整机设备的服务能力进行有效组合和汇聚,并对外以统一的密码运算服务接口形式输出。
提升平台级密码服务性能,优先在水平方向扩展密码机集群内的设备数量。需要指出的是,这个数量往往上限很容易达到,根据现有工程经验,集群内超过 3~5 台设备后,新增设备对系统整体性能提升已经非常不明显,性价比显著降低。
对于在集群中部署统一密码服务平台(软件)的方式,这个统一服务节点也可能成为系统整体的瓶颈。改进方式主要包括两类:一是针对大吞吐量加密业务采用并联架构避免流量拥塞至服务节点,对于高频小包业务可采用门卫 / 串联架构提高易用性并屏蔽设备层;二是通过 Nginx 或者独立的负载均衡设备扩充统一服务平台节点容量,这种方式的扩展效率较低。
3 高速密码技术体系发展思考
伴随着越来越多的业务对密码服务高性能的需求越来越迫切,高速密码系统的技术体系在根据系统化思维拆解出的密码通信和密码运算两个维度不断取得进展。然而,需要客观地认识到,现有的密码服务性能输出在很多场景中依然难以满足业务的发展需求,其原因如下文所述。
第一,从宏观角度整体分析,密码服务技术在与业务应用系统融合过程中往往处于被动和附属地位,通常是新的计算技术、通信技术、存储技术出现和发展带动业务处理能力提升,再之后才是对密码服务提出新的需求,这就导致很多新业务场景下密码技术特别是高速密码技术起步较晚。
第二,从高速密码技术方面具体分析。
(1)密码系统性能横向提升的限制和约束。从系统化思维方法论来看,密码体系内部各个要素实体以水平方向扩展的方法提升性能,始终绕不开物理限制和衰减率两个指标,比如,一块密码卡上堆叠密码芯片的数量受限于物理IO 端口数量和并行调度能力,一台密码机上置入多块密码卡的数量受限于主板插槽数量和并行调度能力。一个密码机集群的密码服务能力并不会随着集群内密码机数量增加而呈线性增长,根据工程经验,当扩展集群规模时,往往从第 3 台开始系统整体性能增速就会出现明显衰减,而引入第 4 台设备增加的性能相对于成本来说已经不具有性价比。
(2)密码系统性能纵向提升的限制和性能。从系统化思维方法论来看,提升密码体系内部的纵向“连接”能力很困难,通道性能一定是越来越慢的。在硬件板卡上密码芯片可实现几十 Gbit/s 加解密性能,但经过密码卡(PCIe)、密码机(网口)、集群(网口)等输出后性能会衰减几倍。
(3)围绕需求开展高性价比设计。所有工程化产品都绕不开性价比,密码产品也不例外,所以在发展高速密码体系过程中要紧紧围绕需求开展针对性设计,根据业务场景的密码服务需求合理分解能力需求,而不应该面面俱到去设计大而全的密码服务能力。例如,对于高速通信业务加解密,是分组数据的大吞吐量对称加密需求,而不是基于公钥密码的高速认证需求;对于金融类高频在线交易类业务,单笔业务数据量小,对小包数据的非对称运算是强需求。只有细化具体的密码需求之后,才能开展针对性设计和工程调优,调优过程往往并没有高深的理论支撑,更多依赖于工程经验,由点到面逐步实现性能提升。
4 结 语
伴随着信息技术日新月异的变化,新场景、新业务及新的计算、通信和存储技术更是不断发展,这些都对密码技术特别是高速密码技术提出了非常迫切的需求,同时也给密码行业带来了新机遇。本文结合研制高速密码产品的工程实践,对高速密码技术体系进行了梳理,特别是从系统化思维视角对密码服务体系进行了拆解,阐述了各个层次密码实体提升密码通信和密码运算能力的一些技术和思路,最后对高速密码技术体系的发展提出了思考与建议。
引用格式:张国庆 , 艾强娃 . 高速密码工程化的若干实践与思考 [J]. 信息安全与通信保密 ,2022(8):12-18.
作者简介 >>>
张国庆,男,博士,高级工程师,主要研究方向为密码工程;
艾强娃,通讯作者,男,学士,高级工程师,主要研究方向为铁路建设管理、铁路信息化及网络信息安全。
选自《信息安全与通信保密》2022年第8期(为便于排版,已省去参考文献)