浅谈国密算法在华虹SHC1408SUSBKey产品中的使用
The SM1/SM2/SM3/SM4/SM7/SSF33 algorithm used inSHC1408S USB KEY Chip
作者:倪以金
公司:上海华虹集成电路有限责任公司
E-Mail: niyijin@shhic.com
摘要:随着计算机技术以及互联网的发展,信息安全在我们的日常生活中越来越重要。本文介绍了国密常用算法在能保护信息安全的USB Key产品中的使用。
关键词:对称算法、非对称算法、摘要算法、
1前言
21世纪是信息大爆炸的时代,使用网上银行的用户越来越多,且每年保持稳定的发展势头。网上银行在给用户带来诸多便捷服务同时也给带来了安全风险,很多银行意识到这一点,就采用硬件USBKey产品来保证用户在使用网上银行时的信息安全。
保护信息安全的USBKey产品在这个时代已被广泛的应用,USBKey产品的加密与安全控制已经成为应用的关键,通常情况下USBKey产品解决方案一般采用公开的加密算法以及相应的安全控制技术,这可能就有一定的安全缺陷,考虑到信息安全,国家推出了一些列国密算法,下文主要介绍国密常用算法在能保护信息安全的USB Key产品中的使用。
2常用的国密算法介绍
目前用在USBKey产品中的国密算法主要包含三类算法:对称算法、非对称算法、摘要算法。
1对称算法
对称算法指的是数据加解密都使用相同的密钥,对应的国密算法请参见表1。
算法名称 | 密钥长度 | 密钥组成 | 数据加解密长度 | 备注 |
SM1 | 16字节 | SK 、EK、AK | 16字节数据加解密 | SK一般是固定在硬件IP中 |
SSF33 | 16字节 | 密钥参数与密钥 | 16字节数据加解密 | Key参数一般固定在硬件IP中 |
SM4 | 16字节 | FK,CK,Key | 16字节数据加解密 | FK,CK参数一般也是根据国密要求设置 |
SM7 | 16字节 | 密钥 | 8字节数据加解密 | |
表1、常用国密算法
一般情况下对称算法主要用于安全报文中,用于对数据报文的加密,解密,以及计算Mac的完整性保护,还有密钥对分散生成。使用到的算法流程如下:
(1)Mac算法流程
(2)密钥分散
密钥分散算法指的是通过分散因子产生子密钥,分散因子为 8 字节,用指定的分散因子加上分散因子求反值作为输入数据,执行BCEA(e)计算,产生的16 字节结果作为子密钥。
(3) 数据加密
(4)数据解密
2 非对称算法
非对称算法又称之为公钥密码算法,在公钥密码算法系统中,加密和解密使用的是不同的密钥,这两个密钥之间存在着相互依存关系:即用其中任一个密钥加密的信息只能用另一个密钥进行解密。这使得通信双方无需事先交换密钥就可进行保密通信。其中加密密钥和算法是对外公开的,人人都可以通过这个密钥加密文件然后发给收信者,这个加密密钥又称为公钥;而收信者收到加密文件后,它可以使用他的解密密钥解密,这个密钥是由他自己私人掌管的,并不需要分发,因此又成称为私钥,这就解决了密钥分发的问题。主要的公钥算法有:RSA、DSA、DH,ECDH和ECC。国密算法中公钥算法主要指的是SM2算法。
SM2算法属于椭圆曲线非对称加密算法,是针对国际标准ECC算法的替换,目前掌握的信息是其包含着超过一种的椭圆曲线参数定义(GB192,GB256),该算法典型的应用场景就是PKI证书体系。在证书体系中,证书签名时,配套使用的杂凑算法也有不同选择,一般是通过证书中的OID方式标识证书采用椭圆曲线算法及其杂凑算法的组合。证书体的格式一般采用标准的X509格式。因此SM2算法主要用于数据签名与验签,数据加密与解密,以及密钥交换算法。
3 摘要算法
摘要算法是一种能产生特殊输出格式的算法,这种算法的特点是:无论用户输入什么长度的原始数据,经过计算后输出的密文都是固定长度的,这种算法的原理是根据一定的运算规则对原数据进行某种形式的提取,这种提取就是摘要,被摘要的数据内容与原数据有密切联系,只要原数据稍有改变,输出的“摘要”便完全不同,因此,基于这种原理的算法便能对数据完整性提供较为健全的保障。但是,由于输出的密文是提取原数据经过处理的定长值,所以它已经不能还原为原数据,即消息摘要算法是不可逆的,理论上无法通过反向运算取得原数据内容,因此它通常只能被用来做数据完整性验证。如今常用的“消息摘要”算法经历了多年验证发展而保留下来的算法已经不多,这其中包括MD2、MD4、MD5、SHA、SHA-1/256/383/512等。国密算法中的摘要算法指的是SM3算法。SM3算法主要用于配合SM2算法来实现数据签名与验签。
3上海华虹SHC1408S USBKey产品介绍
SHC1408S 芯片是上海华虹集成电路有限责任公司出品的新一代基于8位CPU的安全芯片,具有高安全性、低功耗、可扩展性强的特点,可用于USB Key、接触式智能卡、IC卡安全交易终端等各类产品。芯片集成8位微处理器、512字节IRAM、7.5K字节XRAM、256K字节的Flash,提供总线加密功能、高安全机制的防攻击功能、符合USB2.0(Full-Speed)规范的USB接口、符合ISO/IEC7816规范的7816串行I/O主从接口(支持T =0/T = 1)、串行UART、SPI主从接口,支持同时外接LCD和串行FLASH,提供2048位RSA/ECC/SM2硬件加解密协处理器、杂凑算法协处理器、SSF33硬件算法、SM1硬件算法、SM3硬件算法、SM7硬件算法、硬件CRC。上海华虹SHC1408S芯片提供的表2所列国密算法API。
算法名称 | 函数接口 | 函数说明 |
SM1 | UINT8 HalSm1LoadSAKey (UINT8 XDATA *keys, UINT8 XDATA *keya,UINT8 option) | 装载SM1 密钥 |
UINT8 HalSm1Encrypt (UINT8 XDATA *pPlainAddr, UINT8 XDATA *pCipherAddr) | SM1加密 |
UINT8 HalSm1Decrypt (UINT8 XDATA *pCipherAddr, UINT8 XDATA *pPlainAddr) | SM1解密 |
SSF33 | UINT8 HalSsf33LoadKey ( UINT8 XDATA *keya) | SSf33装载Key |
UINT8 HalSsf33Encrypt(UINT8 XDATA *pPlainAddr, UINT8 XDATA *pCipherAddr) | SSF33数据加密 |
UINT8 HalSsf33Decrypt(UINT8 XDATA *pCipherAddr, UINT8 XDATA *pPlainAddr) | SSF33数据解密 |
SM7 | UINT8 HalSM7LoadKey ( UINT8 XDATA *key) | SM7装载Key |
UINT8 HalSM7Encrypt(UINT8 XDATA* pPlainAddr, UINT8 XDATA *pCipherAddr) | SM7数据加密 |
UINT8 HalSM7Decrypt(UINT8 XDATA *pCipherAddr, UINT8 XDATA *pPlainAddr) | SM7数据解密 |
SM4 | UINT8 HalSM4LoadKey ( UINT8 XDATA *key) | SM4装载Key |
UINT8 HalSM4Encrypt(UINT8 XDATA *pPlainAddr, UINT8 XDATA *pCipherAddr) | SM4数据加密 |
UINT8 HalSM4Decrypt(UINT8 XDATA *pCipherAddr, UINT8 XDATA *pPlainAddr) | SM4数据解密 |
SM2 | UINT32 gmEncrypt(UINT8 *message,UINT32 len, ECC_POINT *public, UINT8 *result) | SM2加密 |
UINT32 gmDecrypt(UINT8 *c,UINT32 len,UINT32 *private,UINT8 *result) | SM2解密 |
UINT8 gmSigGen(UINT32 *m, UINT32 len, UINT32 *private,ECC_SIG *sig) | SM2签名数据生成 |
UINT8 gmSigVer(UINT32 *m, UINT32 len, ECC_POINT *public,ECC_SIG *sig) | SM2签名数据验证 |
UINT8 ECC_GenerateKey(KEY_PAIR *ECC_key) | SM2密钥对生成 |
SM3 | UINT8 HalSm3_process( UINT8 XDATA* src, UINT8 XDATA result,UINT8 flag ) | SM3计算 |
表2、 上海华虹SHC1408S芯片提供的国密算法API
目前上海华虹SCH1408S芯片上实现的SM2算法的性能指标可以满足金标委的要求,具体性能数据参见表3。
算法性能项 | 算法抗 /SPA | 算法不抗 /SPA |
SM2密钥对生成时间 | 125毫秒 | 94毫秒 |
SM2加密时间 | 266毫秒 | 266毫秒 |
SM2解密时间 | 193毫秒 | 156毫秒 |
SM2签名时间 | 125毫秒 | 94毫秒 |
SM2验签时间 | 203毫秒 | 203毫秒 |
表3、 SM2算法性能指标
参考书目
[1]上海华虹SHC1408S芯片产品Spec
[2] 国家商用密码管理办公室网站 http://oscca.gov.cn