前言
比特幣是一個基于區塊鏈和密碼技術的應用。本文針對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”??梢栽诶桃延写a的基礎上,通過“點乘API”來對“密鑰對生成API”的運算結果做一次驗證。

其中G 是臨時變量,需要先定義后使用。

若在求得公鑰后不再需要,需要及時釋放資源。

而本來就分配的點資源,例程會在在程序結束時釋放。
另外,如果從外部已經拿到私鑰(大數),是用uint8_t 類型數組表示;而為了應用在我們的加密庫中,可以通過以下API 做表示形式的轉換:

總結
本文針對使用STM32 開發比特幣的客戶,對STM32 加密庫的橢圓曲線參數和點乘函數做了補充說明,方便STM32 客戶進行開發比特幣應用。
原文標題:基于STM32加密庫開發比特幣應用的補充說明
文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。
-
STM32
+關注
關注
2312文章
11182瀏覽量
374273 -
比特幣
+關注
關注
58文章
7008瀏覽量
145786
原文標題:基于STM32加密庫開發比特幣應用的補充說明
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
LAT1171+STM32F745 USART1 Bootloader 失敗原因分析與解決
2025意法半導體STM32全球線上峰會亮點回顧
意法半導體STM32 MCU AI模型庫再擴容
STM32C0116-DK探索套件開發指南與技術解析
STM32 Nucleo-64開發板技術解析與應用指南
STM32 Nucleo-144開發板技術解析與應用指南
?STM32 Nucleo-64開發板技術解析與應用指南
STM32 Nucleo-64開發板技術解析:以NUCLEO-C092RC為例
STM32 Nucleo IO-Link開發套件技術解析
基于STM32 HAL庫與標準庫的esp8266接入機智云方案(二)
針對STM32客戶的反饋,對使用STM32加密庫開發比特幣應用作一些補充的技術說明
評論