嵌入式设备中支持国密算法的方法

本文介绍了在嵌入式设备中支持国密算法的三种方法:移植Miracl库、移植Openssl库和使用加密芯片。Miracl和Openssl是软件实现,而加密芯片则适用于硬件加密需求,如对SM1算法的支持。每种方法都有其适用场景和优缺点,后续文章将详细阐述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如今国密系列算法的应用已不仅仅局限于金融和电信等领域,诸如车载设备,消费类电子设备等越来越多的产品开始要求有国密算法的支持。但是国密算法的开源资料和应用案例少之又少,如何快速高效的在自己的设备中加入国密算法已经成为众多开发者必须要面对的难题。现在为大家准备了一个系列文章,介绍嵌入式设备中移植国密算法的方法。

简单来说,分为三种方法:

1、移植Miracl库

2、移植Openssl库

3、使用加密芯片

下面进行简介:

1、移植Miracl库

    MIRACL(Multiprecision Integer and Rational Arithmetic C/c++ Library)是一套数运算函数库,用来设计与大数运算相关的密码学之应用,包含了RSA 公开密码学、AES、DSAECC同时支持Diffie-Hellman密钥交换和数字签名功能。我们可以将这个库移植到我们的工程中,并在此基础上实

GmSSL (http://gmssl.org) 是支持国密算法和标准的OpenSSL分支,增加了对国密SM2/SM3/SM4算法和ECIES、CPK、ZUC算法支持,实现了这些算法与EVP API和命令行工具的集成。GmSSL由北京大学信息安全实验室(http://infosec.pku.edu.cn)开发和维护。 GmSSL的libcrypto密码库增加的密码算法包括: SM2国密椭圆曲线公钥密码标准,其中包含数字签名、公钥加密钥交换三个具体方案,以及一个256比特素域上的推荐椭圆曲线参数。GmSSL内置了SM2的推荐曲线参数,实现了SM2的签名算法和公钥加密算法。 SM3是国密密码杂凑算法标准,输出的杂凑值长度为256比特。 SM4是国密分组密码标准,又名SMS4,其分组长度和钥长度均为128比特。GmSSL实现了SMS4密码及SMS4的ECB、CBC、CFB、OFB等工作模式。 X9.63 KDF是钥派生函数际标准之一,ECIES和SM2公钥加密方案依赖该算法,GmSSL实现了X9.63 KDF,并用于支持ECIES和SM2公钥加密。 ECIES (Elliptic Curve Integrated Encryption Scheme)是椭圆曲线公钥加密际标准,可用于加密数据。 CPK是由南相浩和陈钟设计的基于身份的密码。GmSSL实现了CPK的系统建立和钥生成算法,生成的钥可以用于DSA、ECDH、ECDSA、ECIES、SM2等公钥密码算法。 ZUC(祖冲之算法)是由我设计的序列密码,以32位字为单位输出钥流,其钥长度和IV长度均为128比特。GmSSL的ZUC算法处于开发中。 GmSSL提供命令行工具gmssl,可用于生成SM2签名、SM3摘要、HMAC-SM3消息认证码,支持SM4和ZUC数据加解。 $ echo -n abc | gmssl dgst -sm3 66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0     显示SM2推荐椭圆曲线域参数 $ gmssl ecparam -text -noout -name sm2p256v1 -param_enc explicit     在代码目录./certs/sm2/目录中给出了SM2证书的例子,可以用gmssl工具进行解析 $ gmssl x509 -text -noout -in certs/sm2/sm2-x509.pem $ gmssl pkcs7 -print_certs -in certs/sm2/sm2-pkcs7.pem     GmSSL新增的EVP对象包括EVP_sm3()、EVP_sm4_ecb()、EVP_sm4_cbc()、EVP_sm4_ofb()、EVP_sm4_cfb()和EVP_zuc()。 标签:GmSSL
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值