本节首先提出了一个通用的密码技术框架,从基础架构、产品架构和服务架构三个层面来实现密码应用安全保障。基础架构有各种基础算法和协议的实现,产品架构是经认证合规的商用密码产品,最上层就是通过密码产品的接口实现的各个密码应用系统。
密码应用的技术框架,严格意义上是通用安全技术框架的一部分。密码技术是实现网络安全的基石,它是真正保证数据的加密、认证、完整的基础能力。分析清楚密码应用框架能从整体上把握密码应用的设计和实施,防止密码技术的误用和漏用。
实现密码的业务保护功能,需要密码应用技术的支撑。密码应用技术框架分为三层,包括基础密码架构层、密码产品架构层和密码服务架构层。密码应用技术架构如图1-1所示。
●图1-1 密码应用技术架构
基础密码架构层提供基础性的密码算法资源能力,底层实现了杂凑算法、对称算法、非对称算法、密钥交换和安全协议等基础密码算法。该层的密码算法、密钥交换和安全协议主要提供给上层的密码产品层,由产品层对算法、协议进行封装。
密码产品架构层使用下一层的算法,并对算法进行封装,调用基础密码算法的资源,该层主要由加密机(金融加密机、签名验签加密机、服务器加密机等)、安全模块、SSL VPN设备、IPSec VPN设备、PKI数字证书服务、安全平台(GMSSL、BC)组成。
最上层密码服务架构层就是通过调用加密机、安全模块、服务和库提供的应用接口API,对业务的加密、认证、真实性、完整性、不可否认性等进行实现,为应用系统的关键业务数据提供机密保护,比如财务系统的资金额,采用密码技术保障OA系统中个人信息数据、鉴权数据的防泄露,邮件系统提供主体身份认证能力和数据完整性保障能力,在云平台关键的业务操作中提供不可否认性(也就是抗抵赖的服务能力)。
该技术框架中并没有提及密钥管理,并不是密钥管理不重要,密钥管理的技术可以作为一个独立的组件来实现,提供从密钥生成到密钥销毁的全生命周期管理,而在现实中,绝大部分的密钥管理都通过加密机等密码产品来实现。在编者建设过的某大型央企的业务系统中,密钥管理系统就是作为独立于业务的离线系统存在,用来提供密钥的生成、罐装和分发等。
密码应用技术框架给密码技术的开发、密码产品的研制、密码服务的实现和密码应用的管理等都提供了清晰的方向,在实现密码应用的技术的选择和产品的研发上起到了重要的指引作用。
基础密码架构类似于盖大楼的砖头,为密码建设提供了最基本的应用原材料。本书会专门用几个不同的章节讲解主流的、国家推荐的、安全可靠的密码基础资源,如杂凑算法SM3、SHA等,对称算法SM4、AES等,还实践了SM2、RSA等非对称算法,这些均是基础密码架构层提供的能力,是密码技术应用框架的基石。
简单来形容,算法就是一种特殊的类似数学函数的变化或变换规则,为了安全设计的需要,规则会加入非线性转换部分。把明文变成密文的是加密算法,把密文变成明文的是解密算法。算法是密码学的基础构建之一,好的密码算法是安全的前提。
根据前文介绍的密码分类,读者已经知道现代密码学把密码算法分成杂凑算法、对称算法和非对称算法三大类,而序列密码算法是对称密码算法的特殊形式。我国商用密码算法中推荐使用算法是杂凑算法SM3,对称算法SM1、SM4、SM7,非对称算法SM2与SM9。在随后的章节中将对大部分主流的商用密码算法进行详细讲解和实践。
密码协议是指两个或者两个以上参与者使用密码算法,为达到加密保护或安全认证目的而约定的交互规则 。这里的规则通常情况下是有限几步,方便参与方达成目标。
密码协议是将密码算法等应用于具体业务应用的重要密码技术之一,比如身份鉴别、密钥协商等,具有十分丰富的内容。
典型的密码协议,如我国商用密码标准定义的国产IPSec和SSL协议,可以用在身份鉴别、认证接入等安全环节。两个协议名称是GM/T 0022—2014《IPSec VPN技术规范》和GM/T 0024—2014《SSL VPN技术规范》,这两个协议在通信实体认证和通信保密等方面均有详细的要求,是实现安全合规的信息化系统的必备。
在随后的章节中会专门讲解商用密码要求的两个VPN规范,使得读者能在信息化建设中正确有效的使用,采购经过产品认证的密码产品,达到安全防护的目的。
密钥是密码算法中的关键,也是安全的核心。1883年,荷兰语言学家奥古斯特在其所著《密码学》一书中做了权威性的陈述:“一个密码系统的安全性不在于对加密算法进行保密,而 仅在于对密钥的保密 。”
密钥的全生命周期管理通常也是密评检查的一个必查项。主要从密钥生成、密钥存储、密钥分发、导入导出、密钥使用、备份恢复、密钥归档和密钥销毁八个方面进行密钥管理。
密钥管理既有技术上的要求,还要有管理上的要求,所以密钥技术框架中的三层均需要考虑密钥管理。在GB/T 39786—2021《信息安全技术 信息系统密码应用基本要求》中每个层面都设有专门的密钥要求,具体内容可参考附录B,密钥管理是至关重要的,要保证密钥(除公钥外)不被非法使用、泄露、删除和篡改。
在本书后面的密码应用方案设计章节会对密钥管理的设计和合规要求进行具体阐述,读者此处先初步了解密钥的重要性和密钥管理的八大方面内容即可。
目前我国在密码产品层的产品已经非常丰富,国家对此也出台了很多个产品标准和规范,极大方便了信息化建设者构建安全的密码技术应用。
在实际构建信息系统时,大部分的密码使用都是在这一层,这样的好处是,开发人员不用关心下一层的算法细节,只熟悉接口调用即可。另一个好处是进行密码算法更换和升级时,只要接口是标准的,对应的变动就较小。
硬件密码产品是密码产品中最多的大类,硬件的优点是明确了密码产品的边线,建立了物理边界。硬件的密码产品通常有更强的物理安全机制,防止非法拆解,能有效保护内部敏感的安全参数和密钥的非授权的访问。
硬件密码产品主要有服务器密码机(云服务器密码机)、金融数据密码机、签名/验签服务器、时间戳服务器、IPSec VPN网关、SSL VPN网关、安全认证网关(IPSec/SSL)。还有一些终端类的密码产品也表现为硬件形态,比如密码卡(PCI-E、MINI PCI-E、TF卡)、智能密码钥匙(USBKey)、电子标签(智能IC卡)、读卡器、密码芯片等。随着信息安全建设的深入,这些硬件的密码产品大家已经不陌生了,越来越多的信息应用系统都在使用它们,例如网上银行应用中采用USBKey来提高安全性。
下面简单讲解几个典型的密码产品及其作用。
1)智能密码钥匙(USBKey):主要提供签名验签、杂凑等密码运算服务,实现信息的完整性、真实性和不可否认性保护,同时提供一定的存储空间,用于存放数字证书或电子印章等用户数据。根据用途的不同,USBKey又细分为身份鉴别USBKey和电子印章USBKey。身份鉴别USBKey中存放标识用户身份的数字证书,主要用于对用户身份真实性的鉴别。电子印章USBKey中存放遵循GM/T 0031—2014《安全电子签章密码技术规范》的电子印章数据,用于对电子公文进行签章,实现电子公文真实性和不可否认性的保护。
2)服务器密码机:主要为应用系统提供数据加/解密、签名验签、杂凑等密码运算服务,实现信息的机密性、完整性、真实性和不可否认性的保护,同时提供安全、完善的密钥管理功能,服务器密码机经常被用在后端服务器业务中。
3)SSL VPN安全网关:主要用于在应用层网络上建立安全的信息传输通道,通过对数据包的加密和数据包目标地址的转换实现远程访问,进行加密通信。
4)IPSec VPN:提供通信前双方身份鉴别、通信数据传输机密性、完整性保护等功能,对设备在通信前进行双向身份鉴别,保证通信通道的机密性、完整性。
5)安全认证网关:采用数字证书为业务处理系统提供用户管理、身份鉴别、单点登录、传输加密、访问控制和安全审计等服务。
6)签名验签服务器:提供基于PKI体系和数字证书的数字签名、验证签名等运算功能,保证用户身份的真实性、完整性和关键操作的不可否认性。
软件密码产品并没有物理上的边界,它的形态可能是一个软件或者软件包,由应用程序调用后运行。软件密码产品在安全性上比硬件密码产品要有明显的软肋,容易被非法窥探、窃取和替换。
在GB/T 37092—2018《信息安全技术 密码模块安全要求》中有明确规定,软件密码模块不能达到安全三级的要求,它能够达到的最大整体安全等级限定为 安全二级 。虽然安全级别不够,但移动终端中很适合采用软件安全模块。
综上所述,编者建议在重要的信息应用系统后端服务器建设中尽量采用硬件密码产品/模块来完成密码的应用。读者朋友可能会有疑问,把软件都封装在一个硬件盒子里面不可以么?这在一定程度上是可以提高安全性的,但在终端复杂化、万物互联的今天,全使用硬件密码模块不现实,例如智能手机就不太方便使用一个硬件,而软件模块是非常现实和方便的。
软件密码产品主要有电子签章软件、PKI软件、密钥管理软件和智能移动终端软件安全模块等类的产品,具体介绍如下。
1)电子签章系统:为各级政务部门提供电子公章的签章、验章服务,有效保障电子文件的真实性、完整性和签章行为的不可否认性,是实现电子公文流转,部门协同办公的重要信任支撑。
2)密钥管理系统:提供安全、完善的密钥管理功能。确保密钥的生成、存储、分发、导入、导出、使用、备份、恢复、归档、销毁等全生命周期的安全。对于较少涉及密钥生成分发的系统,密钥管理通常可以考虑在加密机中进行。
3)智能移动端密码模块:主要提供签名验签、加密解密、杂凑等密码运算服务,实现信息的完整性、真实性和不可否认性保护,同时提供一定的存储空间,用于存放数字证书。
很显然,混合密码产品既有硬件也有软件形态,都是基于特别的应用需求而诞生的,为了方便部署和应用,软件部分可以部署在前端设备中,后端通常是硬件形态。一个典型的混合密码产品是身份认证网关,它由后端的一个硬件网关服务器和前端的认证组件构成,通过配合完成密码的使用,认证组件安装在客户端。
随着信息系统的平台化和云化,密码产品也会向平台化方向发展,比如PKI/CA平台,现在就已发展成一个证书相关的平台,它有自己的密管系统(KMS)、证书管理系统(CA)和证书申请和注册系统(RA),后端用加密机产生和保存密钥,前端用智能钥匙USBKey来保存证书,这都是混合密码产品的发展的结果,未来会有越来越多的混合密码产品,来综合完成对应用的保护。
密码服务架构层就是通过调用密码产品、服务和库提供的应用接口,实现OA系统、邮件系统、云平台和财务系统等业务信息系统的数据加密、安全认证、数据完整性和操作的不可否认性等,为应用系统的安全保驾护航。
该层技术实现很少有固定的模式,因为用户的业务和保护的需求是不一样的,所以使用的密码技术手段的场景和方式也会有较大的区别。该部分的具体实现还需要单独分析各个业务的安全需求和数据保护要求。在本书后面的第8章中会谈到密码应用的方案设计方法与具体的设计指导,从物理和环境、网络与通信、设备与计算、应用与数据、密钥管理和安全管理等层面分别阐述业务的安全需求要点及其对应的应用设计实现方法。
另外,此处的密码服务还包括经过商用密码认证的电子认证服务,电子认证服务也是目前唯一有认证证书的密码服务。具体关于电子认证许可的内容,《电子认证服务密码管理办法》中要求有证书编号、服务提供者名称、证书有效期、发证日期和发证机构等内容。电子认证服务和CA系统不同,很多企业可以自建内部CA系统,但它不能对外提供服务。