产品展示

CPU内部密码协处理器解决方案
2021-02-23 10:25:30

摘要:“海光2号”CPU芯片内部集成了密码协处理器硬件模块,实现了中国商用密码SM2、SM3和SM4算法,可以完成数字签名、杂凑函数、加解密、密钥协商,实现安全防护性、完整性、真实性、不可否认的密码功能。海光密码协处理器能应用于电子银行、电子签章、电子发票、身份鉴别、密钥管理、数字证书认证等系统,将在安全通信、安全存储、身份认证、隐私保护等场景发挥作用。

关键词:国密应用、数据安全、电子银行、电子政务、电子商务

1. 概述

1.1背景

当今世界,由海量数据、异构网络、复杂应用共同组成的“网络空间”,已经成为与陆地、海洋、天空、太空同等重要的人类“第五空间”。当前国内外网络空间安全形势严峻,安全事件层出不穷。随着网络攻击技术不断发展,网络攻击已从网络应用层深入网络底层固件。我国金融、电信、航空、电力等领域关键信息基础设施大量使用不可控的产品和技术,存在巨大的安全隐患。采用国产CPU,使用中国商用密码技术,是彻底解决重要信息系统安全隐患的根本手段。

1.2目标

“海光2号”CPU是成都海光集成电路设计有限公司(以下简称“海光公司”)研制的第二代x86处理器,达到了国际主流CPU的技术水平。为了提高安全性,“海光2号”CPU芯片内部集成了一个密码协处理器模块,实现了中国商用密码SM2、SM3和SM4,分别用于数字签名、加解密等密码运算,实现安全防护性、完整性、真实性、不可否认等密码功能。

2. 需求分析

密码是保障网络与信息安全的核心技术和基础支撑。关系国家安全、国计民生、社会公共利益的关键信息基础设施,必须使用商用密码进行保护,而且使用的商用密码必须是合规、正确、有效的。虽然我国商用密码的发展已取得很大成绩,但总体上还处于初级发展阶段,商用密码发展面临的主要问题包括商用密码在国家关键信息基础设施和重要领域的应用不全面、不彻底,产业供给体系质量尚不能全面满足应用需求。

3. 方案架构

3.1 技术架构

“海光2号”CPU内部的密码协处理器(CCP),是一个独立的模块,如

11所示。每8个处理器核心配备2个密码协处理器,其中一个是PSP-CCP,另一个是NTB-CCP。PSP-CCP用于平台安全,提供CPU内密钥派生、安全启动、可信计算等, 基于PSP-CCP可以实现安全启动,增强系统的安全性。NTB-CCP可以为用户提供密码运算服务。

https://scmmhyxh.saas.xiebanyun.com/uploads/20220308/cc9eed138a45f2ad2538255bfe2cc06a.png

海光CPU和CCP架构图

3.2 部署说明

OpenSSL为例,原来底层的密码算法接口有default Provider, FIPS Provider, Engine Providers等。其中,Engine Providers是openssl预留的加载第三方密码库,Engine机制目的是为了使OpenSSL能够透明地使用第三方提供的软件密码库或者硬件密码设备。OpenSSL的Engine机制使得OpenSSL不仅仅是一个密码库,而是提供了一个通用的密码接口,能够与绝大部分密码库或者密码设备协同工作。如果要使用Engine,只需要写少量的代码,首先要加载该Engine,然后选择要使用的密码算法。使用海光密码协处理器时,设置ENGINE_set_id为hygonccp。

3.3主要功能

“海光2号”CPU的密码协处理器中,分别实现了公钥密码SM2、杂凑函数SM3、对称密码SM4和随机数生成器。公钥密码主要用于数字签名和密钥协商,对称密码用于加解密,而杂凑函数可产生消息摘要,主要用于数字签名与验证、消息认证码的生成与验证以及伪随机数的生成等场景。

3.4 技术指标

以海光7000系列单路CPU为例,有四个PSP-CCP和四个NTB-CCP,共8个CCP处于工作状态,CPU频率设置为2.0GHz。实测性能数据如下表,如果使用双路CPU,性能翻倍。

算法

功能/模式

单CCP性能

CCP总性能

SM2

SIGN

1.98万次/s

20.15万次/s

VERIFY

1.16万次/s

15.27万次/s

ENCRYPT

0.67万次/s

9.52万次/s

DECRYPT

0.91万次/s

12.92万次/s

SM3

SM3

5.79Gb/s

46.27Gb/s

SM4

ECB/CBC/OFB/CFB

4.75Gb/s

37.8Gb/s

SM4_HS

ECB/CBC

1.41Gb/s

11.27Gb/s

SM4_CTR

CTR

14.7Gb/s

117.72Gb/s

3.5 关键技术

3.5.1 SM2算法模块

在《GM/T 0003-2012 SM2椭圆曲线公钥密码算法》标准中,SM2算法包含数字签名算法、密钥协商协议和公钥加密算法三部分。通常SM2算法实现分为三个层次,底层是有限域运算;然后是椭圆曲线运算,包括点加、倍点和点乘运算,点乘运算调用了点加和倍点运算;最上层是密码算法或密码协议层。海光CPU硬件实现了签名、验签和点乘运算。可以通过软件接口向该硬件模块输入算法参数,在硬件逻辑电路完成运算以后,由软件读取计算结果。

在计算SM2的点乘时,采用了冗余计算。点乘运算的算法采用了窗口法,当窗口为0时,就不进行点加运算。由于计时攻击可以通过计算时间的差异信息来推测密钥的比特信息,为了提高安全性,海光CPU对原算法进行了适当的修改。即使窗口为0,仍然进行点加运算,只是计算得到的结果抛弃不用。无论密钥的比特是0还是非0,每一个循环体内的运算时间是一样的,从而可以防御计时攻击,同时也可以防御简单的功耗攻击。

3.5.2 SM3算法模块

SM3密码杂凑算法分为消息填充、消息扩展和消息压缩三个阶段,其中消息填充部分可借助软件完成;硬件模块实现了消息扩展和消息压缩,具有功耗低、运算速度快、成本低等特点。

主控器实现外部逻辑到内部逻辑的数据传递。运算状态控制器负责消息压缩、扩展、输出结果状态控制。为了保证系统的安全,系统在开机自检的时候,会对SM3算法加速硬件电路进行检查,如果发现硬件异常,系统停止运行并报警。

3.5.3 SM4算法模块

SM4算法模块主要包括密钥扩展、加密和解密三大功能,各功能之间设计相互独立,可用于实现数据的加解密运算,以保证数据和信息的机密性。该模块支持分组密码算法的ECB、CBC、CFB、OFB、CTR五种常用模式。运算状态控制器负责密钥扩展、加解密和结果输出的状态控制。

3.5.4 随机数生成模块

对于密码算法应用系统,随机数的质量至关重要。“海光2号”CPU芯片集成了8个真随机数源,这8个随机源产生的随机数种子异或后输出给扩展算法模块,经扩展算法后输出随机数。产生的随机数能通过《GM/T 0062-2018密码产品随机数检测要求》中的单比特频数、块内频数、游程总数、通用统计、离散傅立叶等15项检测。

真随机数源采用振荡采样法实现,主要由两个振荡器环和采样触发器和控制器组成,产生随机数种子源输出,控制器可以调节CLK_ring振荡器环内的缓冲器个数来调节CLK_ring的频率。

4. 方案特色

Intel、AMD是x86 CPU的主要研发企业,技术实力雄厚,代表目前CPU技术的最高水平,是国际上包括国内服务器CPU市场的主要参与者。虽然Intel、AMD CPU产品的性能比较高,兼容性比较好,但是由于他们的产品在安全性方面存在着明显的技术隐患,不能满足中国信息产业安全可控的要求。

其它国产CPU虽然在安全性方面能够满足国内相关的要求,但是由于其体系架构和技术路线等原因,导致产品的绝对性能较低,兼容性不好,应用推广难度较大。

与国内外CPU芯片相比,“海光2号”CPU芯片的竞争优势主要体现在三个方面:高性能、高安全性、高通用性。

1) 高性能

“海光2号” CPU芯片是一款面向高性能计算应用的处理器芯片。海光公司基于最新的x86体系架构和指令集,采用最先进的SoC芯片设计技术,使用最新的集成电路制造工艺,设计和制造了海光系列CPU,并进行了规模化应用推广。 海光CPU芯片内部最多可集成32个高性能处理器核心,8个DDR4 SDRAM通道,大幅提高了海光CPU的实际性能。实测数据表明,“海光2号”CPU芯片的SPECint和SPECfp分数已经达到了intel和AMD最新产品的技术水平,能够满足各种高性能计算的需要。

2) 高安全性

海光CPU芯片借鉴了TPM/TCM安全机制的实现思路,内部实现了多种安全机制,包括安全状态、安全启动和密钥定制等。海光公司建立了高安全性的内部流程,能够保证CPU产品的密钥存储方式高安全性。与此同时,海光公司支持客户对CPU芯片内置密钥进行定制,通过特定接口,允许客户在芯片内烧录海光公司不了解的特定密钥,以最大限度地保护用户信息安全和隐私。

由于海光CPU芯片使用了中国商用密码算法,核心技术安全可控,与intel、AMD产品相比,更加符合中国信息产业安全可控的要求。

3) 高通用性

由于海光CPU芯片采用了x86体系架构和x86指令集,具有良好的通用性。目前市场主流的固件、BIOS、操作系统、中间件、应用软件和各种工具,基本上可以不用移植适配,就可以很好地运行在海光CPU芯片上。

与其它体系架构的CPU相比,海光CPU芯片的通用性更好,能够大幅度降低用户使用的难度,对于未来的产业化具有非常大的优势。

5. 适用领域

海光密码协处理器可以应用于网上银行、电子发票、电子签章、身份鉴别、密钥管理、数字证书认证等系统,实现安全通信、安全存储、身份认证、隐私保护等功能。

由于海光CPU为x86兼容处理器,可以兼容现有的x86 CPU生态系统,因此具有较好的市场前景。秉承开放合作、成长共赢的理念,国内相关产业链单位成立了安全可信信息系统产业联盟——“光合组织”。“光合组织”瞄准新时期各行业领域对信息技术应用创新的迫切需求,围绕先进计算平台,联合产业链上下游企业、高校、科研院所、重点用户单位等相关创新力量,实现协同技术攻关,共同打造安全、好用、开放的产品与解决方案,并开展测试认证、技术培训、方案孵化、应用示范、推广交流等系列活动,促进合作组织成员的共同发展。目前“光合组织”已经包含了电信、广媒、能源、金融、交通等各行业企业。

6. 接口说明

本方案在linux的内核空间中添加了海光密码协处理器的驱动,并通过用户层的libkcapi接口对外提高服务,如 2所示。libkcapi是linux的用户层的通用密码接口,通过该接口可以添加对海光密码协处理器的支持。比如要调用海光密码协处理器中的SM2算法,只需把初始化接口kcapi_akcipher_init的输入参数ciphername赋值为sm2-ccp。

https://scmmhyxh.saas.xiebanyun.com/uploads/20220308/fa357b13a659c7ccefb5f389ce7c3581.jpg 

2 海光密码协处理器软件架构图

本方案兼容原有Linux内核中的密码算法,原来的linux内核支持AES、ECC等密码算法,我们现在增加了支持商用密码算法SM2、SM3、SM4。在Linux内核中,打上支持海光密码协处理器的补丁后,应用程序仍然可以通过libkcapi调用原来的密码算法。

7. 应用案例

1)超融合可信存储一体机           趣链公司

 

 

 

 

成都海光集成电路设计有限公司

联系人:应志伟

 话:13681792760