0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

针对STM32客户的反馈,对使用STM32加密库开发比特币应用作一些补充的技术说明

STM32单片机 ? 来源:STM32单片机 ? 作者:STM32单片机 ? 2020-09-17 17:35 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言

比特币是一个基于区块链和密码技术的应用。本文针对STM32客户的反馈,对那些使用STM32加密库开发比特币应用作了一些补充的技术说明。

STM32 加密库

STM32 加密库提供对称加解密,非对称加解密,以及HASH算法,并通过了CAVP FIPS认证,可使用在各类安全相关的应用。

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

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

STM32加密库可以通过访问www.st.com ,在主页中的搜索框里输入cryptolib得到页面链接。加密库下载需要批准,请在线填写申请后等待邮件通知,一般很快就可以得到回复。

STM32 TRNG 真随机数

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

比特币中的加解密算法

比特币加解密相关的算法主要是两类,椭圆曲线ECC以及HASH算法。比特币使用椭圆曲线签名和验签算法来核实比特币交易的可靠性,以及辨别区块链中比特币的归属地址。HASH算法除了用在椭圆曲线签名、验证,比特币地址校验,还利用该算法的单向性,创造出比特币的挖矿机制。HASH没有什么特别,将不在本文补充说明。

比特币中的椭圆曲线

比特币的椭圆曲线是个小众曲线,不是常见的NIST P192、P256和P384,而是SECP256。根据它的规范和STM32加密库的代码库的参数格式,比特币的椭圆曲线参数可以表示如下:

用户可以直接将此参数拷贝STM32 加密库的例程,例如

STM32CubeExpansion_Crypto_V3.1.0Fw_CryptoSTM32L4ProjectsSTM32L476RGNucleoECCKeyGen_Sign_VerifSrcmain.c。该例程演示的功能包括:生成ECC 公私钥匙密钥对,使用私钥对指定消息签名,再使用对应公钥对签名做验签。

为了对这个曲线做如上运行,需要在例程代码的循环处增加一个案例,条件3,如:

别忘了将for 循环的条件修改成

从私钥生成公钥

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

这里做一个补充说明,实现该功能关键函数就是“点乘API:ECCscalarMul”。可以在例程已有代码的基础上,通过“点乘API”来对“密钥对生成API”的运算结果做一次验证。

其中G 是临时变量,需要先定义后使用。

若在求得公钥后不再需要,需要及时释放资源。

而本来就分配的点资源,例程会在在程序结束时释放。

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

总结

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

原文标题:基于STM32加密库开发比特币应用的补充说明

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2295

    文章

    11035

    浏览量

    366003
  • 比特币
    +关注

    关注

    57

    文章

    7007

    浏览量

    143628

原文标题:基于STM32加密库开发比特币应用的补充说明

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32F4标准外设资料

    stm32f4xx.h,标准外设
    发表于 06-08 09:49 ?2次下载

    基于STM32 HAL与标准的esp8266接入机智云方案(二)

    在《基于STM32HAL与标准的esp8266接入机智云方案()》中,我们详细介绍了硬件连接和机智云客户端的创建。本篇将重点讲解如何下
    的头像 发表于 05-28 18:02 ?588次阅读
    基于<b class='flag-5'>STM32</b> HAL<b class='flag-5'>库</b>与标准<b class='flag-5'>库</b>的esp8266接入机智云方案(二)

    如何添加一些网络上的到mpy固件的说明或手册教程?

    下有没有关于如何添加一些网络上的到mpy固件的说明或手册教程? 问题2: 关于mpy的image在哪里能了解学习内部代码,只了解一些py
    发表于 04-29 08:16

    STM32开发入门进阶必备!《STM32嵌入式系统开发—基于STM32CubeMX和HAL》新书发布!

    上市。高校教学推荐,STM32入门必读!图书介绍《STM32嵌入式系统开发——基于STM32CubeMX和HAL》是
    的头像 发表于 04-03 14:54 ?807次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>开发</b>入门进阶必备!《<b class='flag-5'>STM32</b>嵌入式系统<b class='flag-5'>开发</b>—基于<b class='flag-5'>STM32</b>CubeMX和HAL<b class='flag-5'>库</b>》新书发布!

    STM32微控制器中实现数据加密的方法

    STM32微控制器中实现数据加密,可以通过多种方法和技术来确保数据的安全性。以下是一些常见的方法和步骤: · 使用内置加密
    发表于 03-07 07:30

    STM32开发板教程之STM32开发指南免费下载

      本开发指南将由浅入深,带领大家进入 STM32 的世界。本指南总共分为三篇:1,硬件篇,主要介绍本指南的实验平台;2,软件篇,主要介绍 STM32 开发软件的使用以及
    发表于 02-28 09:08 ?179次下载

    STM32F1开发指南

    这本书详细讲述了STM32HAL开发的配置流程,非常详细
    发表于 01-21 15:33 ?3次下载

    STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计

    SEMC88ST与STM32配的的各种加密功能说明,具体可参见SMEC88ST SDK开发包。 注: ①STM32与SMEC88ST间的I2
    发表于 12-27 13:03

    数据加密办法

    企业对于数据的重视程度不言而喻,也衍生出了数据=资产的概念。但是数据泄漏的事件频繁发生,为了保护数据资产,企业有必要对数据一些针对性的措施,让企业更安全。 ? 数据
    的头像 发表于 12-24 09:47 ?716次阅读

    比特突破99000美元

    比特价格日内上涨3.4%;度触及99000美元的高点。 利好消息是美国候任总统特朗普提名支持加密货币的保守派律师阿特金斯(Paul Atkins)出任美国证券交易委员会(SEC)主
    的头像 发表于 12-05 11:01 ?2338次阅读

    HALSTM32开发中的重要性

    HAL(Hardware Abstraction Layer Library,硬件抽象层)在STM32开发中扮演着至关重要的角色。以下是HAL
    的头像 发表于 12-02 13:35 ?1404次阅读

    云原生和数据哪个好一些

    云原生和数据哪个好一些?云原生和数据各有其独特的优势,适用于不同的场景。云原生强调高效资源利用、快速开发部署和高可伸缩性,适合需要高度灵活性和快速迭代的应用。而数据
    的头像 发表于 11-29 10:07 ?543次阅读

    stm32低功耗设计技巧

    STM32低功耗设计是个综合性的工作,需要在硬件设计和软件设计两个层面进行综合考虑和优化。以下是一些关键的STM32低功耗设计技巧:
    的头像 发表于 11-19 15:52 ?1684次阅读

    单片机STM32可以用Python写吗?可以的开发板有哪些?

    近年来,随着嵌入式技术的发展,Python语言逐渐被引入到单片机开发中,尤其是一些高性能的单片机上。这趋势给开发者带来了极大的便利,尤其是
    的头像 发表于 09-05 08:00 ?7813次阅读
    单片机<b class='flag-5'>STM32</b>可以用Python写吗?可以的<b class='flag-5'>开发</b>板有哪些?

    课程上线 | STM32单片机入门教程(1)基于HAL的多核心开发(F1/F4/G0/U5)

    ?好消息!华清远见STM32入门视频课程《基于HALSTM32多核心开发》正式上线,已更新90讲,持续更新中,8月份将全部上线。课程优势真人出镜,手把手教学
    的头像 发表于 08-08 16:42 ?819次阅读
    课程上线 | <b class='flag-5'>STM32</b>单片机入门教程(1)基于HAL<b class='flag-5'>库</b>的多核心<b class='flag-5'>开发</b>(F1/F4/G0/U5)