主页 > imtoken官网版 > 基于STM32加密库开发比特币应用补充说明

基于STM32加密库开发比特币应用补充说明

imtoken官网版 2023-02-27 07:20:26

前言

比特币是一种基于区块链和密码学的应用。 本文根据STM32客户的反馈,为使用STM32加密库开发比特币应用的用户提供一些补充技术说明。

STM32加密库

STM32加密库提供对称加解密、非对称加解密、HASH算法,并通过CAVP FIPS认证,可用于各种安全相关应用。

对称加解密算法支持AES、DES、3DES、RC5、Chacha20、Poly1305。 针对特定算法,如AES,还支持ECB、CBC、CTR、GCM、CCM、XTS、Cipher-wrap等多种加密方式。非对称加解密算法支持RSA、ECC。 哈希算法支持SHA-1、SHA-224、SHA-256、SHA-384、SHA-512、MD5。

STM32加密库分为硬件加速和纯固件实现。 纯固件实现可以在所有STM32系列上运行。

siteiotachina.com 比特币技术_比特币运用了什么技术_量子技术对比特币的影响

STM32加密库可以在首页搜索框输入cryptolib获取页面链接。 下载加密库需要审批。 请在线填写申请表并等待邮件通知。 通常,您很快就会得到答复。

STM32 TRNG真随机数

STM32真随机数(TRNG)根据物理噪声源生成随机数,随机性高,为很多算法,尤其是椭圆曲线算法提供了坚实的基础。 随机数通过了 AIS-31 PTG.2 测试。

比特币中的加密和解密算法

与比特币加解密相关的算法主要有两类,椭圆曲线ECC和HASH算法。 比特币使用椭圆曲线签名和签名验证算法来验证比特币交易的可靠性,并识别比特币在区块链中的归属地址。 HASH算法除了用于椭圆曲线签名和验证、比特币地址验证之外,还利用算法的单向性创造了比特币挖矿机制。 HASH没什么特别的,本文不做补充。

比特币中的椭圆曲线

量子技术对比特币的影响_比特币运用了什么技术_siteiotachina.com 比特币技术

比特币的椭圆曲线是小众曲线,不是常见的NIST P192、P256和P384比特币运用了什么技术,而是SECP256。 根据其规范和STM32加密库代码库的参数格式,比特币的椭圆曲线参数可以表示为:

siteiotachina.com 比特币技术_比特币运用了什么技术_量子技术对比特币的影响

量子技术对比特币的影响_siteiotachina.com 比特币技术_比特币运用了什么技术

量子技术对比特币的影响_比特币运用了什么技术_siteiotachina.com 比特币技术

用户可以直接将此参数复制到STM32加密库的例程中,例如

STM32CubeExpansion_Crypto_V3.1.0\Fw_Crypto\STM32L4\Projects\STM32L476RGNucleo\ECC\KeyGen_Sign_Verif\Src\main.c。 该例程演示的功能包括:生成ECC公私钥对,使用私钥对指定消息进行签名,然后使用对应的公钥对签名进行验证。

量子技术对比特币的影响_siteiotachina.com 比特币技术_比特币运用了什么技术

为了对这条曲线进行上述操作,需要在例程代码的循环处添加一个case,条件3,如:

量子技术对比特币的影响_siteiotachina.com 比特币技术_比特币运用了什么技术

比特币运用了什么技术_量子技术对比特币的影响_siteiotachina.com 比特币技术

不要忘记将 for 循环的条件更改为

比特币运用了什么技术_siteiotachina.com 比特币技术_量子技术对比特币的影响

从私钥生成公钥

量子技术对比特币的影响_比特币运用了什么技术_siteiotachina.com 比特币技术

有客户提到STM32加密库提供了椭圆曲线相关的接口调用,但是在文档或代码中没有描述如何从椭圆曲线私钥生成公钥。

这里补充说明一下,实现这个功能的关键函数是“点乘API:ECCscalarMul”。 基于例程已有代码比特币运用了什么技术,可以通过“点积API”验证一次“密钥对生成API”的计算结果。

量子技术对比特币的影响_siteiotachina.com 比特币技术_比特币运用了什么技术

其中G为临时变量,使用前需要定义。

量子技术对比特币的影响_siteiotachina.com 比特币技术_比特币运用了什么技术

如果获得公钥后不再需要,需要及时释放资源。

siteiotachina.com 比特币技术_量子技术对比特币的影响_比特币运用了什么技术

量子技术对比特币的影响_比特币运用了什么技术_siteiotachina.com 比特币技术

原本分配的点资源会在程序结束时由例程释放。

另外,如果已经从外部获取到私钥(大数),则用uint8_t类型的数组表示; 为了在我们的加密库中应用,可以通过以下 API 转换表示:

量子技术对比特币的影响_比特币运用了什么技术_siteiotachina.com 比特币技术

总结

针对使用STM32开发比特币的客户,本文对STM32加密库的椭圆曲线参数和点积函数做一个补充说明,方便STM32客户开发比特币应用。