APP下载

高安全等级密码模块安全技术设计*

2022-03-16健,秦

通信技术 2022年2期
关键词:掩码密钥密码

周 健,秦 放

(成都三零嘉微电子有限公司,四川 成都 610041)

0 引言

密码模块作为基础密码设备,在金融、电力、大数据等行业中为各类安全应用提供身份认证、算法加速、敏感安全参数管理和保护等服务。目前市面上的商用密码模块按照国家密码管理局提出的相关标准[1]进行研发,大多满足安全一级或安全二级的规范要求,仅提供基本的安全功能。

由于标准对高安全等级密码模块规定了更多的新功能和新机制,技术要求较高,因此国内在该研究领域仍处于起步阶段,且安全技术设计的相关论述较少。然而随着对数据安全有极高要求的行业的发展,业内对高安全等级的密码模块的需求与日俱增,面临巨大的市场空缺。因此,研究如何通过各种设计和技术路径来满足高安全等级的要求就显得迫在眉睫。

本文首先简要介绍高安全等级密码模块的设计架构,其次分别从高安全等级特有的物理安全[2]、实体鉴别、环境失效性检测(Environmental Failure Testing,EFT)、非入侵式攻击缓解技术[3]这4 个方面详细说明高安全等级密码模块的设计和工作原理。

本文的研究不仅可以填补高安全等级密码模块安全技术设计方面的空白,也可以指导研发具有实用价值的商用密码模块,满足相关行业的技术需求和市场需求。

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

1.1 硬件架构设计

高安全等级密码模块,以高速串行扩展总线(Peripheral Component Interconnect Express,PCI-E)接口密码模块为例,由主控单元、PCI-E总线接口单元、密码运算单元、存储单元、环境失效性检测(Enviromental Failure Test,EFT)单元、功能单元组成,如图1 所示。

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

高等级密码模块中:

(1)主控单元由带嵌入式操作系统的中央处理器(Central Processing Unit,CPU)实现,实现对密钥的管理和对应用层下发命令的解析和响应;

(2)PCI-E 总线接口单元由大规模现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)实现,是数据进出密码模块的主要传输通道;

(3)密码运算单元基于效率和性能的考虑,由两颗专用密码算法芯片组成,分别实现SM1 算法和SM2 算法,另由逻辑器件实现哈希算法SM3 和对称分组密码算法SM4;

(4)存储单元由双倍速率内存(Double Data Rate synchronous Dynamic Random-access Memory,DDR SDRAM)和闪存(FLASH)组成,分别存储密码模块运算过程中的数据和板载芯片的可执行程序;

EFT 单元负责实现EFT 功能,由电压和温度两部分组成,分别实现对电压和温度的感知和响应;

功能单元中,由开盖销毁装置、按键销毁按钮实现紧急状况下的关键安全参数置零功能,状态LED 灯指示密码模块的实时状态,USBKey 接口供身份鉴别的UKey 使用,另有多片物理噪声源用于产生质量合格[4]的随机数。

1.2 软件架构设计

密码模块处于主机应用层之下,受应用层各种安全应用程序的调用。其软件架构由安全服务接口、设备驱动程序、嵌入式软件3 部分组成,如图2所示。

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

该软件架构中:安全服务接口[5]提供密码模块的功能接口,由应用程序直接调用;设备驱动程序为密码模块的宿主设备提供驱动能力;嵌入式软件,运行于密码模块的主控单元,响应和执行应用层的调用指令。

1.3 密钥体系

密钥是密码模块的核心资源,完善的密钥管理体系是密码模块的核心功能。在高安全等级密码模块中,密钥管理采用了技术合理、安全性高的3 层密钥结构体制,如图3 所示。

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

在分层密钥保护体系中:保护密钥位于最上层,主要用于加密保护其下层的用户密钥对和密钥加密密钥;用户密钥对和密钥加密密钥位于中间层,用户密钥对除用于非对称密码运算外,还作为保护密钥保护其下层的对称会话密钥;密钥加密密钥主要用作保护密钥,保护其下层的对称会话密钥,且会话密钥处于层次化密钥结构中的最底层,是仅在一次会话中使用的对称密钥。

不论何种密钥,除公钥外的所有密钥都不能以明文形式存在于密码卡外部。通过上述层层保护的原则,满足了密钥管理中的“分层结构,逐层保护”的安全原则。

2 物理安全性设计

高安全等级密码模块在研制时采用的物理安全设计要点如下文所述。

(1)选用经过国密局认证的对称和椭圆曲线算法(Elliptic Curve Cryptography,ECC)专算芯片。该类芯片的抗攻击能力高,能够确保芯片内部包括密钥数据、算法代码等敏感信息的安全。

(2)高安全等级密码模块将所有重要的元器件均放置在电路板的正面,并采用硬质金属材料的外壳对电路板正反两面进行全包裹,防止外部的窥探,并防止外部通过探针进行测量。金属外壳可采用铝合金6063,如图4 所示,在国家标准GB/T 3190-2020《变形铝及铝合金化学成分》中规定其成分范围,是AL-Mg-Si 系中等强度的可热处理强化合金,Mg 和Si 是主要合金元素,其硬度为95 HB,在抵御外部的撬、钻、击打等常规拆破行为中表现较好。

图4 硬质金属外壳

同时,该外壳内部的四周设计有一圈金属丝网,如图5 所示。在外壳压合时,可以紧紧贴合电路板,消除外壳与电路板之间的微小缝隙,在一定程度上有防止电磁干扰和抵御非入侵攻击中电磁分析攻击的作用。

图5 外壳内层金属丝网

(3)高安全等级密码模块在进行印制电路板(Printed Circuit Board,PCB)排版时,将重要的总线信号和专用算法芯片的数据信号设计在了印制版的里层,可有效防止外部将PCB 表面涂层刮开直接使用探针探测电信号的行为。

(4)如图6 所示,高安全等级密码模块固定外壳的螺母采用私有的非标设计,只有使用厂家特制的工具才能开启,且在螺丝上方使用金属薄片进行遮盖,并在金属薄片表面粘贴有拆卸存迹的全息封条,可以清楚地指示密码模块外壳是否曾被拆卸开启过。

图6 高安全等级密码模块的私有非标螺母

(5)高安全等级密码模块设计有拆卸响应电路,主要由机械检测电路和触发通知电路两部组成。机械检测电路采用多单元并联模式工作。为保证检测拆卸动作的可靠性和准确性,防止撬起某个部位逃避检测的行为,在密码模块的3 个角上设置了机械检测电路,任意一点的检测电路检测到拆卸行为后均可以触发通知电路工作。这3 个点位分别检测不同位置的金属外壳上盖与模块印制版之间的垂直间距,可以快速地判断上盖的拆卸情况,并通过触发通知电路向CPU 发出报警信号,使其知晓应该对未受保护的关键安全参数进行置零。拆卸响应电路的设计原理如图7 所示。

图7 拆卸响应电路设计原理

3 实体鉴别安全性设计

高安全等级密码模块在使用UKey 进行身份认证时,首先需要对UKey 进行实体鉴别,以确认插入的Ukey 是与该密码模块一一对应的实体,防止外部使用相同型号的UKey 进行混淆和攻击。在本密码模块的安全技术设计方案中,采用数字签名技术规范要求中的两次传递单向鉴别机制[6]。具体鉴别过程如图8 所示。

图8 基于数字签名技术的两次传递单相鉴别流程

(1)创建操作员时模块调用身份认证UKey的智能密码钥匙密码应用接口规范(smart token cryptography application interface specification,SKF)[7]接口产生非对称密钥对,私钥保存于UKey中,公钥导出到模块内保存。

(2)需要进行实体鉴别时,将操作员身份认证UKey 定为声称方A,密码模块定为验证方B。

(3)B 使用随机数生成器产生32 字节随机数Rb,并调用A 的接口将Rb送入A 以备后续签名使用,密钥指定为第一步操作生成的私钥。

(4)A 收到Rb后,产生32 字 节的随机数Ra,将Ra与Rb进行拼接,并进行一次hash 运算,将hash 运算的结果进行签名,密钥为第一步操作生成的私钥。签名完毕后,A 连同Rb|Ra|sign(Rb|Ra)一同送出给B。

(5)B 获取A 送出的签名数据后,对随机数Rb|Ra进行hash 运算,将得到的hash 值使用第一步操作中获得的公钥对签名数据进行验签操作,若验签通过,再比较数据中包含的随机数Rb是否等于之前产生的Rb。

(6)若上一步操作中的两个操作均通过,则表明实体鉴别成功。

4 EFT 安全性设计

高安全等级密码模块具有EFT 功能,包括检测温度和检测电压两部分。具体检测4 种异常环境状况:低温、高温、大负电压、大正电压。下面分别介绍温度和电压异常状况下,EFT 的设计原理和生效机制。

4.1 异常温度检测

密码模块在关键器件如可编程逻辑器件、专用算法芯片等附近布置多片温度传感器,对密码模块内部的环境温度进行多点监测。设置好密码模块的工作温度区间,当环境温度不在该范围内,则认为环境失效,密码模块主动断电。具体的工作原理是模块上电后,处理器周期性地主动读取各片温度传感器的温度寄存器,以获取它们附近环境的实际温度。若任意一片温度传感器的温度不在工作范围内,则处理器做一次记录。当连续多次记录到该现象时,表明环境温度持续处于正常工作范围之外,工作环境确实失效,此时处理器告知开关电路切断密码模块的电源,以达到置零模块内未受保护的关键安全参数的目的。一旦开关电路切断密码模块的电源,电源指示灯也会熄灭。温度失效性检测技术的设计原理如图9 所示。

图9 温度失效性检测原理

4.2 异常电压检测

PCI-E 接口的输入电源分两路:一路通过一个模数转换器(Analog-Digital conversion,A/D)接入CPU;一路则接入开关电路,并通过开关电路对密码模块进行供电。设置好密码模块电压的正常工作范围后,CPU 周期性地对输入的电压进行检测,若连续多次检测到电压处于正常范围之外,则表明工作环境确实失效。此时,CPU 记录好环境失效的日志后告知开关电路断开电源供应,使得后端的电路掉电,以置零密码模块内未受保护的关键安全参数。可通过观察模块的侧面板上电源指示灯来确认模块的上、下电情况:当模块正常工作时,电源灯长亮;一旦电源管理模块切断密码模块的电源,电源指示灯会熄灭。电压失效性检测技术的设计原理如图10所示。

图10 电压失效性检测原理

5 非入侵式攻击缓解技术

5.1 计时攻击缓解技术

在算法层面,由于对称密码算法SM4[8]没有基于密钥的分支运算,因此对称算法对计时攻击天然免疫,故无须针对上述算法做专门的计时攻击防护设计。

针对SM2 公钥密码算法[9],点乘计算采用安全点乘算法,能有效防御计时攻击和简单能量攻击。安全点乘算法如下所示:

该方法一次扫描1 位密钥位,每次进行1 次点加运算和1 次倍点运算,可以实现任意相同长度的密钥位运算都没有时间区别[10]。

5.2 能量分析攻击缓解技术

针对SM4 算法,采用掩码技术,通过随机化密码模块所处理的中间值,使密码模块的能量消耗不依赖于此中间值,消除密码设备能量消耗的数据相关性。采用如下文所述的思路进行操作。

引入随机掩码,实现全寄存器掩码以及掩码S盒。例如一共生成16 个各不相同的掩码S 盒,第一轮使用编号为1~4 的掩码S 盒,第二轮使用编号为5~8 的掩码S 盒,第三轮使用编号为9~12 的掩码S 盒,第四轮使用编号为13~16 的掩码S 盒,第五轮又重复使用编号为1~4 的掩码S 盒,以此类推。这样使SM4 算法在加解密的每一个运算步骤均有掩码参与,达到每一个运算步骤结果均与原算法无关的目的。

假设单个S 盒的输入为A∈,输出为B∈,则有B=sbox(A)。假设掩码为M∈,则查表变换输入为A′=A⊕M∈,输出B′=sbox(A′)∈。为了得到真实的输出B,则需要生成一个对应的S盒sbox_m,使得sbox(A⊕M)⊕sbox_m(A⊕M)=sbox(A)。因此有sbox_m(A⊕M)=sbox(A⊕M) ⊕sbox(A),生 成算法:

标准SM2 数字签名算法流程如图11 所示,在签名过程中,设待签名的消息为M;它的数字签名为(r,s);签名者A 的公私钥分别为PA、dA,HA是长度为v比特的密码杂凑算法;G为椭圆曲线的一个基点,其阶为素数。

图11 标准SM2 签名算法流程

目前,已有文献提出了对SM2 签名算法的差分攻击方法和错误攻击方法。差分攻击方法的攻击点一般选在与用户私钥dA直接相关的地方,如模乘r·dA处,已知签名值r,若了解芯片的模乘实现细节便可进行差分能量攻击,逐比特攻破dA。而错误攻击的主要威胁来自弱曲线和基于格的错误攻击,它们的攻击点均在随机数k处,并通过获得k值或k值的局部信息来获取密钥。

针对SM2 算法特性,为抵御相关攻击,采用安全点乘、大数模乘公式变换和掩码技术。抗攻击的优化方案如下文所述。

步骤1:原签名流程的第三步为生成一组256 bits随机数k,应保证每次加密过程中使用的随机数都不相同,更新过程严格随机化,避免随机数间特殊更新情况出现。在此步骤后增加一个备份操作,使k=k′。

步骤2:原签名流程的第四步为(x1,y1)=[k]G,在此步骤后增加一个比较操作,若现在的随机数k=k′,则继续算法,若k!=k′,则退出算法。

步骤3:将原签名流程的第6 步进行变换[11]:

步骤4:另外,为了防止攻击者在k备份之前便修改k值,或者在算法运行过程中跳过某一步直接进行下一步运算,可引入一个计数器,每一步骤后让计数器自加1,并判断该计数器值是否为当前步骤数,若是则继续运算,若不是则退出运算。

在本方案中,使用安全点乘法对条件分支语句进行了无差别处理,攻击者不能通过直接观察能量消耗曲线来获取密钥相关信息,从而达到抗简单能量分析(Simple Power Analysis,SPA)攻击[12]的目的。在算法流程中增加一个k值备份操作,大大增加了对密钥k的攻击难度,从而达到抵抗针对弱曲线和基于格的错误攻击的目的。在含有私钥dA的大数模乘和点乘处执行步骤3 所示的公式变换,变换后的计算步骤里不再含有易受攻击的r·dA,从而有效抵抗差分能量分析(Differential Power Analysis,DPA)的攻击[13]。

5.3 电磁分析攻击缓解技术

对于对称密码算法SM4,高安全等级密码模块电磁分析防护方案的主要目的是增加噪声,降低信噪比,同时采取掩码技术,增加电磁分析所需的电磁迹数目,使攻击者在有限的计算资源下难以开展攻击。此外,其设计方案与抗能量分析攻击缓解技术相同。

对于SM2 算法,高安全等级密码模块对点乘运算每一步所执行的操作相同,即对条件分支语句进行了无差别处理,攻击者不能通过直接观察电磁消耗曲线来获取密钥相关信息,从而达到抗SPA 攻击的目的。在含有私钥dA的大数模乘和点乘处增加一个加法掩码,使各条电磁消耗曲线上此时刻的电磁消耗曲线随机化,掩盖了私钥dA和电磁消耗曲线之间的相关性,使统计分析方法失效,从而有效抵抗DPA 攻击。

此外,为了尽可能地减少工作时向外部泄露的电磁辐射量,密码模块设计了电磁屏蔽性较好的全封闭金属外壳,同时在金属外壳的内边缘设计有金属丝网,进一步加强电磁辐射的屏蔽性。且该金属外壳的结构设计上无任何缝隙,使得外部探针无法进入密码模块的专算芯片或者逻辑器件附近直接进行电磁辐射探测。

6 结语

本文介绍了高安全等级密码模块所必须满足的安全要求,并阐述了针对这些要求所做的安全技术设计。这些有针对性的设计使得高安全等级密码模块自身的安全性得到了保证,并使得高安全等级模块能够满足各类用户的安全需求。相较于安全二级的模块,高安全等级模块可以更好地确保用户在日常使用过程中的数据安全性和通信安全性,一旦出现安全威胁,能够保护系统核心数据的安全,抵御对整个系统的入侵和破坏,因此可以提供更为安全的密码服务。

猜你喜欢

掩码密钥密码
AES高阶掩码方案抗功耗攻击
密码里的爱
幻中邂逅之金色密钥
幻中邂逅之金色密钥
旁路功耗分析中不同平台的差异化研究*
密码系统中密钥的状态与保护*
什么是IPv6的前缀长度
密码抗倭立奇功
TPM 2.0密钥迁移协议研究
密码藏在何处