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
    +关注

    关注

    2314

    文章

    11215

    浏览量

    375546
  • 比特币
    +关注

    关注

    58

    文章

    7008

    浏览量

    145895

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何在 STM32Cube CMake 工程中添加源文件

    STM32Cube for Visual Studio Code V3 版本(例如,如下图所示的 Pre-release V3.4.11)打开,编辑,编译以及调试。但是除了 STM32CubeMX 生成的文件,还有自己开发的源
    发表于 04-15 16:07 0次下载

    奋斗 STM32 开发板入门手册

    电子发烧友网站提供《奋斗 STM32 开发板入门手册.pdf》资料免费下载
    发表于 01-13 10:44 13次下载

    LAT1171+STM32F745 USART1 Bootloader 失败原因分析与解决

    使用 STM32F745 进行产品开发的时候,出现了使用 STM32CubeProgramer 无法通过 USART1 Bootloader 进行程序升级的问题。为了解决客户的问题,我
    发表于 01-11 17:33 0次下载

    2025意法半导体STM32全球线上峰会亮点回顾

    检索效率,展现ST赋能全球开发者的实力。峰会同时披露,继5月宣布双供应链战略后,ST与华虹宏力合作的40nm STM32产品即将于本季度开始量产交付,坚持全球统质量标准,实现100%兼容,首批中国制造的
    的头像 发表于 12-03 09:52 836次阅读

    意法半导体STM32 MCU AI模型再扩容

    近日,意法半导体(ST)发布了新的人工智能模型,并增强了开发项目对STM32 AI模型的支持,以加快嵌入式人工智能应用的原型开发和产品开发
    的头像 发表于 11-24 10:00 1641次阅读

    STSW-STM32080文档说明

    电子发烧友网站提供《STSW-STM32080文档说明.pdf》资料免费下载
    发表于 11-20 17:18 2次下载

    STM32C0116-DK探索套件开发指南与技术解析

    基于STM32C011F6微控制器的UFQFPN20至DIL20模块,使用户能够开发和共享应用。该器件还包含个板载ST-LINK/V2-1,以调试和编程设定嵌入式STM32微控制器。
    的头像 发表于 10-27 14:57 969次阅读
    <b class='flag-5'>STM32</b>C0116-DK探索套件<b class='flag-5'>开发</b>指南与<b class='flag-5'>技术</b>解析

    加密算法的应用

    一些缺点。由于加密和解密使用同个密钥,因此密钥的保密性必须得到保证。如果密钥泄露,那么攻击者就可以轻易地解密密文数据。此外,在对称加密算法中,密钥的分发也是
    发表于 10-24 08:03

    STM32 Nucleo-64开发技术解析与应用指南

    ARDUINO^®^ Uno V3连接和ST morpho接头,可轻松扩展STM32 Nucleo开放式开发平台的功能。该板设有板载ST-LINK调试器/编程器,具有USB重新枚举功能。STM32 nucleo-64
    的头像 发表于 10-22 14:26 1381次阅读
    <b class='flag-5'>STM32</b> Nucleo-64<b class='flag-5'>开发</b>板<b class='flag-5'>技术</b>解析与应用指南

    STM32 Nucleo-144开发技术解析与应用指南

    STMicroelectronics NUCLEO-H7S3L8 STM32 Nucleo-144开发板采用STM32H7S3L8 MCU,提供了个经济实惠的多功能平台,用于原型设计
    的头像 发表于 10-17 14:40 1683次阅读
    <b class='flag-5'>STM32</b> Nucleo-144<b class='flag-5'>开发</b>板<b class='flag-5'>技术</b>解析与应用指南

    STM32 Nucleo-64开发技术解析与应用指南

    STMicroelectronics -C051C8 STM32 Nucleo-64开发板通过由STM32微控制器为概念测试和原型创建提供了种经济实惠且灵活的途径。该
    的头像 发表于 10-16 10:50 1153次阅读
    ‌<b class='flag-5'>STM32</b> Nucleo-64<b class='flag-5'>开发</b>板<b class='flag-5'>技术</b>解析与应用指南

    STM32 Nucleo-64开发技术解析:以NUCLEO-C092RC为例

    用于STM32C092RC的STMicroelectronics NUCLEO-C092RC Nucleo-64开发板通过STM32微控制器提供性能,提供了个经济划算、灵活的概念尝试
    的头像 发表于 10-16 10:26 974次阅读
    <b class='flag-5'>STM32</b> Nucleo-64<b class='flag-5'>开发</b>板<b class='flag-5'>技术</b>解析:以NUCLEO-C092RC为例

    STM32 Nucleo IO-Link开发套件技术解析

    和X-NUCLEO-DO40A1扩展板组成。该Nucleo套件可用于评估目的和用作开发环境。P-NUCLEO-IOD5A1套件用于开发IO-Link和SIO应用,用于评估具有STM32
    的头像 发表于 10-16 10:01 1246次阅读
    <b class='flag-5'>STM32</b> Nucleo IO-Link<b class='flag-5'>开发</b>套件<b class='flag-5'>技术</b>解析

    STM32的時候是直接用MDK方便还是在vscode用keil插件方便一些

    STM32的時候是直接用MDK方便還是在vscode用keil插件方便一些
    发表于 08-12 08:02

    STM32F4标准外设资料

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