文 / 中信建投证券股份有限公司信息技术部总监 陶剑峰
中信建投证券股份有限公司信息技术部 杜国伟 陈红平
《中华人民共和国密码法》颁布实施以来,有力促进了密码技术进步、产业发展和规范应用。在证券期货业,以网上交易、网上开户等业务为代表的互联网证券业务迅猛发展,方便了广大投资者通过互联网办理各类业务,促进了资本市场创新发展。为进一步增强证券期货信息系统的密码安全,金融行业自2016年以来进行全面推行SM(商密)系列密码算法应用。
交易数据密码安全研究
证券公司积极响应商用密码应用需求,对网上交易系统进行密码加固,网上交易系统其逻辑上的总体技术架构由网上交易客户端、SSL(Security Socket Layer,加密套接字协议层)接入网关、网上交易服务端构成。作为用户通过互联网完成股票买卖的入口,一方面要为用户提供友好的交易界面,另一方面要为用户提供快速安全稳定的交易接入环境。作为证券交易十分重要的一环,网上交易系统一端衔接互联网,一端衔接位于企业内网的网上交易后台系统。在数据安全和防护方面,一向是证券行业信息系统重点防范对象之一,也是这次接入安全加固密码应用的重点和切入点(见图1)。
图1 网上交易系统逻辑
1.数字加密算法实现。接入安全加固密码主要使用SSL-VPN(安全协议)加密客户端,SSL-VPN加密服务端负责通道安全性并实现通信实体身份鉴别,保证用户在互联网复杂的环境中委托交易的安全性。实现网上交易客户端和委托主站之间底层通信传输加密算法替换,主要是将DES(数据加密标准)、AES(高级加密标准)替换成SM4,RSA(加密算法)替换成SM2,MD5(信息摘要加密算法)算法替换成SM3。协同签名子系统提供密钥分量密码算法操作,协同生成签名数据和对数据进行解密等;密钥管理子系统实现了密钥的生命周期管理功能,并提供完善的权限管理功能;数字证书子系统提供证书服务功能,包括证书申请、证书下载、证书吊销等。
2.随机数生成。网上交易系统客户端随机数发生器构造过程分为三种途径,主要包括:一是通过SSL接入网关密码卡中噪声源芯片生成256比特随机数R1下发至客户端。二是客户端则采集终端的物理随机序列,利用噪声数据包括设备两次中断间的间隔,输入设备的操作时间间隔,连续磁盘操作的时间间隔,还可以使用重力感应器、地磁感应器、加速度感应器。保证至少选择2个采集源作为随机源。具体采集过程为:每次采集32比特序列,并进行物理随机源失效检测(物理随机源的失效检测方法为包含全“0”全“1”检测。全“0”全“1”检测的样本长度是32比特,检测中出现全“0”全“1”样本,则判定该物理随机源失效),当累计采集的随机序列达到4096比特时,将随机序列数据通过SM3运算计算得到256比特随机数R2。三是应用程序会同时向操作系统内核发送内核态伪随机数请求,操作系统内核通过内核态伪随机数生成器生成256比特内核态伪随机数R3。
随机数发生器将网关密码卡随机数R1,物理随机源随机数R2与内核态伪随机数R3进行异或运算,获得最终的256比特随机数。
3.协同签名技术。网上交易系统协同签名技术遵循《信息安全技术密码模块安全要求》《SM2密码算法使用规范》。协同签名技术主要实现基于SM2签名算法的密钥分割存储、协同签名方法。具体地,客户端与服务端双方分别存储部分密钥私钥,两方联合才能对消息进行签名操作,通信双方均无法获取到对方私钥的任何信息,因此攻击者在入侵其中任何一方的情况下,都不能伪造签名,从而提高了用户私钥的安全性。实施流程如下。
密钥分割生成阶段,客户端由随机数发生器生成256比特随机数,客户端设备信息,通过密码算法生成用户签名密钥分量,该密钥生成后由用户输入的PIN(个人身份识别码)码以及运行环境参数SM3杂凑产生的数据作为密钥,使用SM4对称密码算法对密钥分量进行加密存储,同时客户端计算公钥因子,将公钥因子发送给服务端,由服务端计算用户的公钥。
协同签名阶段,客户端计算签名中间结果,将签名中间结果发送至服务端,服务端运算得到服务端中间签名结果,客户端收到答复后,利用服务端签名中间结果进行合成签名运算,生成真正的数字签名,签名运算完成。
4.密钥管理系统。网上交易系统密钥管理系统遵循国家密码管理局发布的行业标准算法,支持SM4对称密码算法、SM2非对称密码算法、SM3杂凑算法,实现了密钥的生成、导入、存储、备份、恢复、注销等生命周期管理功能,并提供完善的权限管理和安全审计。
密钥管理系统中密钥管理服务模块负责用户密钥的生成,密钥生成过程调用硬件密码模块完成,密钥产生算法采用国家密码管理局批准的算法。生成后的密钥通过加密设备内存放的主密钥加密保护,并编码后存放到数据库中。密钥生成后由密码卡中的内部密钥加密后存储,支持SM系列的密钥生成与管理。密钥管理系统的密钥生成及密码运算由硬件提供。保证了敏感信息的安全及密码运算的高效性。
5.数字证书系统。数字证书为数字领域中证实用户身份的一种数字凭证。用于对用户信息进行签名,以保证信息的不可否认性以及对用户传送的信息进行加密,实现信息的真实性和完整性。数字证书系统提供证书的申请、审核、核发、发布、更新、吊销等证书生命周期管理功能。
6.SSL VPN加密客户端。客户端基于《SSL VPN技术规范》所规定的客户端协议功能,提供了客户端和SSL接入网关建立安全连接的功能,以功能模块的方式集成在客户端中。当客户在使用客户端发起连接时,通过和SSL接入网关进行SSL握手协议数据交互,对服务端身份以数字证书方式进行鉴别,协商连接会话密钥,握手结束后,对客户端请求数据进行加密传输,对应答数据进行解密,供业务应用模块使用。各组件功能如下。
客户端协同签名模块中,客户端协同签名模块通过和SSL接入网关协同签名模块协同产生SM2密钥分量,提供签名和解密相关的私钥操作。协同密码模块自身提供安全加固,结合防逆向技术混淆,防止密码模块被调试和破解。提供以下功能:协同签名初始化,产生协同签名相关参数;制作数字签名,根据输入数据,使用协同签名方案对数据进行签名,返回符合GM/T0009格式的数字签名。
客户端密钥管理模块中,密钥管理模块实现了对协同签名过程中产生密钥分量以及用户关键数据进行安全存储、使用、销毁的功能。
7.SSL VPN加密服务端。服务端基于《SSLVPN技术规范》所规定的服务端协议功能,提供了SSL接入能力,通过和客户端进行SSL协议交互,建立安全连接。通过握手协议,以数字证书形式发送身份信息供客户端进行验证,支持更安全的连接方式,通过向客户端发送证书请求,获取客户端的数字证书,并对其进行验证,以验证连接客户端的身份,保障了网络数据传输的真实性。协商产生连接会话密钥,SSL握手结束后,通过应用数据进行加密传输,保障了网络数据传输的完整性和机密性。
SSL接入网关协同签名模块,SSL接入网关协同签名模块提供了服务端协同签名功能,通过和客户端协同签名模块协同完成SM2密钥分量生成、签名和解密操作;SSL接入网关硬件交互模块,SSL接入网关硬件交互模块提供了硬件设备访问功能,通过使用硬件密码设备保障密钥安全性,提高密码算法运算性能;SSL接入网关KMS(秘钥管理系统)交互模块,SSL接入网关KMS交互模块提供了和KMS访问的功能,通过和密钥管理系统连接,提供对SSL接入网关密钥、协同签名服务端产生的密钥分量生命周期管理。
商密码应用系统通过标准API(应用程序接口)函数调用密码卡来使用密码服务,API接口对上层应用透明,能够快速使用密码卡提供的安全功能。功能包括密钥生成与管理、数据加密与解密、数字信封、数字签名、物理随机数产生、密钥备份恢复等。
8.SSL协议工作方式。在SSL数据加密通信过程中,包括身份鉴别、密钥协商、通信数据加密等密码协议。通信双方使用数字证书方式来鉴别对方身份,保障通信过程中实体身份的真实性。会话建立过程中,计算双方会话密钥,对数据进行加密传输。以下简要介绍SSL协议的工作方式。
SSL连接建立过程中,客户端发送Client Hello消息,内容包括:支持的协议版本、客户端随机数、支持的加密算法套件(如ECC-SM4-SM3)和支持的压缩算法。
如不支持客户端请求版本,密码套件或其他参数,网关关闭加密通信。网关发送Server Hello消息,内容包括:确认使用的加密通信协议版本、网关随机数、选择的加密套件、网关证书。网关向客户端发送证书的同时,可以向客户端发送Server Key Exchange消息,按照协议定义,密码套件流程确定附加参数。网关还可以根据使用场景对客户端进行验证,以保证数据传送给了安全的合法的客户端,发出Certificate Request消息,要求客户端发送证书对客户端的合法性进行验证。
客户端根据收到的应答,对网关证书进行验证,如果不符合,关闭加密通道。根据服务器请求发送自身数字证书。客户端使用非对称加密算法产生预主密钥,使用网关证书中的公钥数据进行加密,发送Client Key Exchange消息。客户端发送证书校验消息时,使用签名密钥对自客户端Hello消息开始直到本消息为止(不包括本消息)的所有与握手有关的消息(加密证书要包在签名计算中)进行签名操作。方案采用协同签名技术通过和网关进行交互,最终在客户端合并生成签名数据。通过客户端,网关生成的随机数和预主密钥,生成当前会话主密钥,客户端更新主密钥。发送Change Cipher Spec,用于告知网关,客户端已经切换到之前协商好的加密套件的状态,准备使用之前协商好的加密套件加密数据并传输了,并使用更新后的主密钥加密Finished消息。
网关可以对客户端证书进行校验,如果不符合,关闭加密通道。通过接收到的客户端预主密钥和双方随机数产生当前会话主密钥,发送Change Cipher Spec,用于告知客户端,SSL连接已经就绪,并使用更新后的主密钥加密Finished消息。
应用数据传输,使用生成的主密钥对数据进行加密传输,并附加加密数据的MAC(物理地址)值,对方可以使用MAC值,对当前传输加密数据进行验证,保证数据传输的安全性。
基于协同签名的SSL连接过程中,客户端与SSL接入网关建立单向SSL通道,获取SSL接入网关硬件密码设备产生的随机数数据。通过网关硬件密码设备中噪声源芯片生成的比特随机数下发至客户端,客户端采集终端的物理随机序列作为随机源,生成客户端随机数,用于客户端密码模块生成客户端密钥分量(见图2)。
图2 生成随机数据
客户端通过单向SSL通道发送身份验证请求,验证通过后和SSL接入网关协同生成SM2私钥分量和公钥信息(见图3)。
图3 身份验证请求
客户端与SSL接入网关建立双向SSL通道,在连接建立的过程中,客户端与网关双方互相验证身份,包括客户端签名操作(客户端发送证书校验消息时,使用客户端密钥分量通过和SSL接入网关进行交互协作产生签名数据),通过后完成SSL通道建立(见图4)。
图4 客户端与SSL通道
数据密码安全测试与验证
针对服务端应用,利用64位系统机构带来的高带宽和更大操作数的指令集支持,在密码运算中能有更好的执行效率。针对部署方案,进行硬件环境挑选,硬件设备CPU架构上采用ARM架构,操作系统上采用银河麒麟高级服务器操作系统V10。
1.算法性能测试。数据密码安全测试主要是环境适配测试和密码算法性能测试。通过大量的密码运算过程,统计密码算法的执行效率和性能,数据长度为131072bytes。性能测试包括分组密码算法(SM4)、非对称密码算法(SM2)、密码杂凑算法(SM3),见表1-3。
表1 分组密码算法性能测试
表2 非对称密码算法性能测试
表3 密码杂凑算法性能测试
商密算法与之前国际算法相比,性能有所下降,但新型算法整体测试中性能稳定。不同的设备和架构平台在各项性能指标数据上存在一些差异,海光芯片的性能整体上强于其他芯片,算法升级改造选择该芯片进行适配性测试。
2.SSL接入网关性能测试。对高并发的系统应用场景做模拟,能够反映应用系统的高并发支撑能力。通过对测试结果的对比,可以对系统应用做出对应的网络能力评估。
测试环境使用交易端口,创建交易连接,进行交易业务,模拟用户在线,请求间隔设置为15秒,衡量网关在线并发处理能力。建立SSL连接中的密码功能使用密码设备处理,使用三未信安硬件密码卡(SJK1727),5台压力工具压测一个SSL接入网关,测试数据见表4。在高并发的情况下,CPU使用率充足,内存使用较小,业务响应时间较低,满足客户交易日使用量。
表4 网关性能测试
3.协同签名性能测试。密码应用方案中,采用了协同签名技术。对比常规密码算法复杂性更高,在应用环节中也是重要的处理节点,对算法的执行效率和运算性能要求更高,针对这种场景,设计了协同签名性能测试,对接入网关协同签名算法处理性能进行评估和验证。
协同密码功能依赖密码设备处理,使用三未信安硬件密码卡(SJK1727),5台压力工具压测一个SSL接入网关,测试数据见表5。
表5 协同签名性能测试
网络负载能力通过使用压力测试工具,模拟大量用户同时接入的场景,对证券行业网上交易系统业务进行模拟。结合实际测试应用响应和过程,密码安全改造对业务系统的影响在各项指标包括业务流程、业务时延、系统容量、网络负载等方面可以满足系统应用的需求。
总结与展望
证券期货行业使用的各类商用密码应用,如数据加密解密、数字签名验签等普遍采用的是国外的商用密码技术,各类支撑此类应用的安全设施、安全产品均构建于国外的基础算法和密码技术之上,这对于整个行业的安全稳定发展构成巨大挑战。金融数据安全是国家信息安全的重要组成部分,网上交易系统接入数据密码安全加固应用,采用了国家密码管理局制定的一系列密码算法标准,保证了密码的安全可靠和科学规范。
(此文刊发于《金融电子化》2024年5月上半月刊)
声明:本文来自金融电子化,版权归作者所有。文章内容仅代表作者独立观点,不代表士冗科技立场,转载目的在于传递更多信息。如有侵权,请联系 service@expshell.com。