从标准到案例:密码模块的非入侵式攻击检测(一)

在网络空间安全研究领域中,基于密码学原理的安全解决方案能够为信息系统提供各种必要的安全保障。然而,很多实际案例表明在信息系统中完善地实施密码技术并不是一件轻而易举的事。为了确保能够安全有效地实现密码算法功能,对密码模块制定技术标准和对实际产品进行检测是十分必要的。因此,我国先后发布《GM/T 0008-2012 安全芯片密码检测准则》、《GB/T 37092-2018 信息安全技术 密码模块安全要求》等标准,为密码模块的发展筑牢安全的基础。

本公众号将用三篇文章,由浅入深地介绍密码模块非入侵式攻击缓解技术。首先根据GM/T 0008及GB/T 37092的相关定义给出密码模块、密码模块安全等级及其典型应用场景的介绍;然后根据《ISO/IEC 17825-2016 信息技术 安全技术 缓解非侵入性攻击类对加密模块的测试方法》和《GMT 0083-2020 密码模块非入侵式攻击缓解技术指南》给出非入侵式攻击检测的具体方法及其测试指标;最后给出某些型号智能卡在MathMagic Detector上的实际测评案例。

密码模块及其安全等级

密码模块

商用密码产品按照形态可以划分为软件、芯片、模块、板卡、整机和系统六类。通俗地讲,模块是指将单一芯片或多芯片组装在同一块电路板上,具备专用密码功能的产品,如加解密模块、安全控制模块。根据《GB/T 37092-2018 信息安全技术 密码模块安全要求》,密码模块应当是硬件、软件、固件或者其中组合的集合,该集合至少使用一个核准的密码算法、安全功能或过程实现一项密码服务,并且包含在明确的密码边界(承担密码相关功能的软件、硬件、固件的组合,包括实现算法、实现密码功能、实现密码安全协议、实现密钥管理的相关组成)内。

图1 密码产品及密码模块示例

因此,密码模块的构成可以表示为如图2所示内容。

图2 密码模块构成

总之,除了芯片外的不好定义的安全产品都可以被称之为模块。比如,对于使用了TEE和SE的产品,对于驱动、SE芯片及其运行库可以定义为一个硬件模块,其中的TEE OS及其相关软件可以定义为一个固件模块,运行在可信操作环境上的可信应用TA也可以作为一个固件模块。

那么,哪些产品可以进行认证呢?一般来说,除了密码芯片和密码系统之外的所有密码产品类型,包括密码卡类、密码机类、智能密码钥匙类、智能卡类,以及软件或固件形态的密码产品(例如独立运行的应用程序、软件库)等都可以进行安全认证。

高安全等级密码模块设计架构

高安全等级密码模块的硬件架构,以高速串行扩展总线接口密码模块为例,由主控单元、PCI-E总线接口单元、密码运算单元、存储单元、环境失效检测单元、功能单元组成,如图3所示[1]

图3 高安全等级密码模块硬件架构

设计密码模块处于主机应用层之下,受应用层各种安全应用程序的调用。高安全等级密码模块的软件架构如图4所示,由安全服务接口、设备驱动程序、嵌入式软件三部分组成。其中,安全服务接口提供密码模块的功能接口,由应用程序直接调用;设备驱动程序为密码模块的宿主设备提供驱动能力;嵌入式软件,运行于密码模块的主控单元,响应和执行应用层的调用指令。

图4 高安全等级密码模块软件架构

高安全等级密码模块密钥体系

密钥是密码模块的核心资源,完善的密钥管理体系是密码模块的核心功能。在高安全等级密码模块中,密钥管理采用了技术合理、安全性高的三层密钥结构体制,如图5所示。在分层密钥保护体系中:保护密钥位于最上层,主要用于加密保护其下层的用户密钥对和密钥加密密钥;用户密钥对和密钥加密密钥位于中间层,用户密钥对除用于非对称密码运算外,还作为保护密钥保护其下层的对称会话密钥;密钥加密密钥主要用作保护密钥,保护其下层的对称会话密钥;会话密钥处于层次化密钥结构中的最底层,是仅在一次会话中使用的对称密钥。不论何种密钥,除公钥外的所有密钥都不能以明文形式存在于密码卡外部[1]。通过上述层层保护的结构,满足了密钥管理中的“分层结构,逐层保护”的安全原则。

图5 高安全等级密码模块密钥体系

GB/T 37092中的密码模块安全等级

  • 安全一级
  • 安全一级提供了最低等级的安全要求,对非入侵式攻击测试没有要求。
  • 安全二级
  • 安全二级在安全一级的基础上增加了拆卸证据的要求,例如使用拆卸存迹的涂层或封条。或者在封盖或门上加防撬锁等手段以提供拆卸证据;要求基于角色的鉴别;要求软件密码模块可以运行在可修改的环境中;对非入侵式攻击测试没有强制要求。
  • 安全三级
  • 安全三级要求更强的物理安全机制以进一步防止对密码模块内敏感安全参数的非授权访问;要求基于身份的鉴别机制;要求手动建立的明文关键安全参数是经过加密的、使用可信信道或使用知识拆分来输入或输出;要求有效防止电压、温度超出模块正常运行范围对密码模块安全性的破坏;要求包含生命保障周期;要求提供非入侵式攻击缓解技术的有效证据和测试方法。对于软件密码模块,能够达到的最大整体安全等级限定为安全二级。
  • 安全四级
  • 安全四级是本标准中的最高安全等级。该等级包括较低等级中所有的安全特性,以及一些扩展特性。安全四级的物理安全机制应当在密码模块周围提供完整的封套保护;要求对操作员进行多因素鉴别;要求有效防止电压、温度超出模块正常运行范围对密码模块安全性的破坏;要求按照国家部门规定的、安全四级的非入侵式攻击缓解测试指标,测试密码模块中针对非入侵式攻击的缓解办法。
  • 由以上内容可知,密码产品要通过高等级的安全认证,非入侵式攻击缓解测试是必要的。

密码模块产品形态及安全等级设定

典型应用场景中,密码模块产品形态及安全等级的选用需要符合一定规则,国家密码管理局提供的参考图表如下所示。

总结

本文主要介绍了密码模块及其安全等级。首先,我们学习了可以由硬件模块、软件模块、固件模块、混合软件模块及混合固件模块构成的密码模块的相关定义;然后,了解了高安全等级密码模块的硬件设计架构和软件设计架构,及密码模块的核心功能——完善的密钥管理体系;之后,阅读了GB/T 37092中定义的密码模块的四个安全等级,从而得知,安全一级和安全二级对非入侵式攻击测试没有要求,安全三级和安全四级均对非入侵式攻击测试有着不同的具体要求;最后,根据国家密码管理局提供的参考图表,我们掌握了密码模块产品形态及安全等级选用规则。

今天我们的收获是:非入侵式攻击测试对于密码产品通过高等级安全认证是必要的。那么什么是非入侵式攻击测试,以及具体的测试方法是怎样的,本公众号10月11日的文章将展开更加详细的介绍。