日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Crypto算法庫使用技巧之基于STM32 AES GCM應(yīng)用提示

STM32單片機(jī) ? 來源:STM32單片機(jī) ? 作者:STM32單片機(jī) ? 2021-09-24 14:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

引言

X-CUBE-CRYPTOLIB 是基于 STM32 的 Crypto 算法庫,支持對稱密鑰、非對稱密鑰、哈希等多種算法。正確地使用 Cyrptolib 算法庫,可以在應(yīng)用程序中實(shí)現(xiàn)數(shù)據(jù)加密、設(shè)備身份認(rèn)證、加密通信等多種應(yīng)用層所需的安全功能。相反,若不能正確地使用算法庫往往會帶來加解密數(shù)據(jù)錯誤等系列問題。

關(guān)于 STM32 Crypto 算法庫應(yīng)用中的常見的問題之一就是應(yīng)用程序沒有使能 MCU 的CRC 模塊,盡管輸出的數(shù)據(jù)和期望值不同,但加解密函數(shù)的調(diào)用并未返回異常。本文在此描述另外一種沒有正確使用算法庫的情況。

問題描述

客戶應(yīng)用項目中需要在固件更新過程中對固件進(jìn)行加密并驗證,根據(jù)推薦采用了 AES- GCM 算法完成該任務(wù)。下載的固件通過 AES-GCM 進(jìn)行加密,并帶 TAG 可以用于驗證固件來源的合法性。在項目的代碼中使用 X-Cube-Cryptolib 進(jìn)行 AES-GCM 運(yùn)算。上位機(jī)使用 cryptopp820 加密庫對固件目標(biāo) bin 文件進(jìn)行加密,然后在 MCU 上通過X-Cube- Cryptolib 加密庫進(jìn)行 AES-GCM128 解密,解密數(shù)據(jù)沒有問題,但是 TAG 數(shù)據(jù)總是無法校驗通過。

問題分析與定位

正常情況下,當(dāng)調(diào)用 AES_GCM_Decrypt_Finish(P_pAESGCMctx, NULL, P_pOutputSize);執(zhí)行后,AESctx.mFlags 結(jié)果會提示是否通過校驗。如果校驗成功,該值應(yīng)該等于 0x22,而運(yùn)行結(jié)果中看到的卻是 0x12。

確認(rèn)庫函數(shù)使用方法

將調(diào)用 AES-GCM 功能的代碼放在 X-Cube-Cryptolib 中一個簡單的測試程序的環(huán)境進(jìn)行測試,查看是否有該問題,結(jié)果發(fā)現(xiàn)測試程序中 AES-GCM 校驗是可以成功的,但是集成到客戶應(yīng)用中時就無法成功。那我們接下來重點(diǎn)研究應(yīng)用程序環(huán)境。

應(yīng)用程序環(huán)境

應(yīng)用程序使用了 FreeRTOS,基于 IAR 編譯環(huán)境。

查看庫文件的使用

確認(rèn)使用了正確的庫文件。

確認(rèn)是否存在多線程訪問

AES-GCM 的函數(shù)會在幾個線程中調(diào)用,而且確認(rèn)不會出現(xiàn)同時調(diào)用的情況,不存在 raise condition 的問題。

查看內(nèi)存使用情況

最初懷疑是否因為任務(wù)棧溢出造成,于是查看內(nèi)存使用情況。IAR stack size: 0x4800

IAR heap size: 0x4000

FreeRTOS heap size: 85KB

執(zhí)行AES 運(yùn)算的線程 stack size: 2560B

通過 FreeRTOS 的 uxTaskGetStackHighWaterMark() 函數(shù)查看該線程還有 500 字節(jié)左右剩余空間。

AESGCMctx_stt 結(jié)構(gòu)的大小有 2360 字節(jié),AES-GCM 加解密函數(shù)需要的 stack 大小大概在 450 字節(jié)左右,但是應(yīng)用代碼中將該變量定義為全局變量,以便可以在幾個不同的線程中使用,這樣可以確認(rèn)線程棧大小沒有問題,不存在 stack overflow 的問題。

查看生成代碼的.map 文件

通過比較,所有 cryptolib 中的 symbol 在 map 中的大小都正常,唯一有問題的是 AESGCMctx_stt 結(jié)構(gòu)變量的大小。應(yīng)用代碼.map:AESctx 0x2002f1f4 0x8f8 Data Gb AES_GCM_Decrypt.o [1]

正常測試代碼 .map:AESctx 0x20002e64 0x938 Data Gb AES_GCM.o [1]

驗證不過的問題應(yīng)該和這個結(jié)構(gòu)的數(shù)據(jù)有直接關(guān)系,接下來研究是什么造成了這個不同。

查看項目使用的 crypto 庫頭文件

經(jīng)檢查,INCLUDE_AES192 和 INCLUDE_AES256 兩個宏定義在 config.h 的定義中被注釋掉,這將導(dǎo)致 aes_gcm.h 中 AESGCMctx_stt 數(shù)據(jù)結(jié)構(gòu)的成員變量 uint32_t amExpKey[CRL_AES_MAX_EXPKEY_SIZE];的大小發(fā)生變化,因為CRL_AES_MAX_EXPKEY_SIZE 的定義根據(jù)INCLUDE_AES128/192/256 是否定義會有所不同。

//#define INCLUDE_DES ((uint16_t)0x0001) /*!《 DES functions are included in the library. *///#define INCLUDE_TDES ((uint16_t)0x0002) /*!《 TripleDES (TDES) functions are included in the library. */#define INCLUDE_AES128 ((uint16_t)0x0004) /*!《 AES functions with key size of 128 bit are included in the library. *///#define INCLUDE_AES192 ((uint16_t)0x0008) /*!《 AES functions with key size of 192 bit are included in the library. *///#define INCLUDE_AES256 ((uint16_t)0x0010) /*!《 AES functions with key size of 256 bit are included in the library. *///#define INCLUDE_ARC4 ((uint16_t)0x0020) /*!《 ARC4 functions are included in the library. *///#define INCLUDE_CHACHA ((uint16_t)0x0040) /*!《 ChaCha functions are included in the library. *///#define INCLUDE_CHACHA20POLY1305 ((uint16_t)0x0080) /*!《 oly1305- AES functions are included in the library */

問題解決

將 config.h 里面被注釋掉的兩行定義打開,重新編譯,此時 TAG 驗證能夠正常通過。#define INCLUDE_AES128 ((uint16_t)0x0004) /*!《 AES functions with key size of 128 bit are included in the library. */#define INCLUDE_AES192 ((uint16_t)0x0008) /*!《 AES functions with key size of 192 bit are included in the library. */#define INCLUDE_AES256 ((uint16_t)0x0010) /*!《 AES functions with key size of 256 bit are included in the library. */

小結(jié)

簡言之,如果使用 X-Cube-Cryptolib 庫的話,作為用戶就不要改動 config.h 的內(nèi)容, 不可想當(dāng)然地自行調(diào)整配置。其實(shí),庫是預(yù)先編譯好了的,所有的功能都已經(jīng)包含,只是鏈接的時候根據(jù)用戶使用到的函數(shù)去鏈接最終的目標(biāo)文件。

這個客戶就是按照以為關(guān)閉某些配置可以節(jié)省代碼空間的想法,貿(mào)然注釋掉了他以為自己不需要的功能,造成數(shù)據(jù)結(jié)構(gòu)大小發(fā)生變化等,影響加密庫的正常使用。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    147

    文章

    19160

    瀏覽量

    404830
  • STM32
    +關(guān)注

    關(guān)注

    2313

    文章

    11195

    瀏覽量

    374755
  • IAR
    IAR
    +關(guān)注

    關(guān)注

    5

    文章

    415

    瀏覽量

    38688
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4422

    瀏覽量

    67873

原文標(biāo)題:工程師筆記 | Crypto算法庫使用技巧 —— 基于STM32 AES GCM應(yīng)用提示

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    STM32L162xD系列:超低功耗32位MCU的卓越

    STM32L162xD系列:超低功耗32位MCU的卓越選 在當(dāng)今電子設(shè)備追求低功耗、高性能的時代,STM32L162VD、STM32L162ZD、
    的頭像 發(fā)表于 04-17 14:50 ?156次閱讀

    Atmel Crypto產(chǎn)品組合:全方位系統(tǒng)安全解決方案

    Atmel Crypto產(chǎn)品組合:全方位系統(tǒng)安全解決方案 在當(dāng)今數(shù)字化時代,系統(tǒng)安全至關(guān)重要。Atmel的Crypto產(chǎn)品組合為各類應(yīng)用提供了全面的系統(tǒng)安全解決方案,涵蓋客戶端和主機(jī)端硬件安全I(xiàn)C
    的頭像 發(fā)表于 04-06 11:15 ?748次閱讀

    Atmel Crypto產(chǎn)品組合:全方位保障系統(tǒng)安全

    Atmel Crypto產(chǎn)品組合:全方位保障系統(tǒng)安全 引言 在當(dāng)今數(shù)字化時代,系統(tǒng)安全問題愈發(fā)重要。無論是企業(yè)的機(jī)密數(shù)據(jù)、知識產(chǎn)權(quán),還是個人的隱私信息,都面臨著各種潛在的威脅。Atmel
    的頭像 發(fā)表于 03-25 14:00 ?165次閱讀

    芯片AES硬件運(yùn)算單元好用嗎?

    我看好多芯片都支持AES硬件運(yùn)算單元,感覺用起來的卻沒有幾個,不知道芯源這方面是不是和其他芯片的AES硬件一樣呢?我也想知道,這種硬件單元一般用在哪個場合比較多呢
    發(fā)表于 12-03 06:27

    AES加解密算法邏輯實(shí)現(xiàn)及其在蜂鳥E203SoC上的應(yīng)用介紹

    這次分享我們會簡要介紹AES加解密算法的邏輯實(shí)現(xiàn),以及如何將AES算法做成硬件協(xié)處理器集成在蜂鳥E203 SoC上。 AES
    發(fā)表于 10-29 07:29

    針對AES算法的安全防護(hù)設(shè)計

    無法獲取密鑰與功耗曲線之間的相關(guān)性。為確保加密算法在執(zhí)行過程中始終安全,全掩碼技術(shù)是最常用的一種方法。 根據(jù)AES加解密算法的特點(diǎn),結(jié)合我們提出的運(yùn)算結(jié)構(gòu),設(shè)計的全掩碼AES加解密電路
    發(fā)表于 10-28 07:38

    AES和SM4算法的可重構(gòu)分析

    一、AES和SM4算法特點(diǎn)分析 基于前面幾篇分享,我們對AES和SM4的算法流程有了較為清晰的認(rèn)識,接下來對AES和SM4
    發(fā)表于 10-23 07:26

    AES加密流程

    AES(Advanced Encryption Standard)是一種對稱密鑰加密算法,它是當(dāng)前最常用的加密標(biāo)準(zhǔn)之一。AES是一種可靠、高效和安全的加密技術(shù),被廣泛應(yīng)用于網(wǎng)絡(luò)安全、移動設(shè)備和云計算
    發(fā)表于 10-23 06:13

    M487如何使用AES和SPROM保護(hù)ISP?

    M487使用 AES 和 SPROM 保護(hù) ISP
    發(fā)表于 08-19 06:07

    Crypto核心庫:顛覆傳統(tǒng)的數(shù)據(jù)安全輕量級加密方案

    傳統(tǒng)加密方案常陷入“安全與性能”的二元悖論。Crypto核心庫打破這一僵局,通過輕量級架構(gòu)與算法優(yōu)化,實(shí)現(xiàn)加密解密的雙向突破:在保障銀行級安全的同時,將資源消耗壓縮至極致,讓數(shù)據(jù)安全“輕”裝上
    的頭像 發(fā)表于 08-04 14:44 ?901次閱讀
    <b class='flag-5'>Crypto</b>核心庫:顛覆傳統(tǒng)的數(shù)據(jù)安全輕量級加密方案

    輕量級加密解密:Crypto核心庫守護(hù)數(shù)據(jù)安全的終極答案

    在數(shù)據(jù)安全領(lǐng)域,“重量級”不等于“強(qiáng)效”。Crypto核心庫摒棄臃腫設(shè)計,聚焦輕量化創(chuàng)新,通過精簡算法與高效邏輯,實(shí)現(xiàn)加密解密的雙重突破——既讓數(shù)據(jù)安全無懈可擊,又讓系統(tǒng)運(yùn)行輕如鴻毛。 加解密算法
    的頭像 發(fā)表于 08-04 14:41 ?1009次閱讀
    輕量級加密解密:<b class='flag-5'>Crypto</b>核心庫守護(hù)數(shù)據(jù)安全的終極答案

    STM32F103c8上做DLQR最優(yōu)控制算法的C編程資料

    這是我近期做的一個項目--基于STM32F103c8的DLQR控制算法的C編程,涉及DLQR最優(yōu)控制算法、嵌入式STM32F103編程、CMSIS-DSP庫使用。? ??附有完整的程序
    發(fā)表于 07-23 15:30 ?0次下載

    STM32_Cryptographic st加密庫V3.0.0移植以后啥也沒改,AES256ECB模式加解密都不對,為什么?

    調(diào)用 status = STM32_AES_ECB_Encrypt( (uint8_t *) Plaintext, 64, Key, OutputMessage,&
    發(fā)表于 07-11 06:11

    harmony-utilsAESAES加解密

    harmony-utilsAES,AES加解密 harmony-utils 簡介與說明 [harmony-utils] 一款功能豐富且極易上手的HarmonyOS工具庫,借助眾多實(shí)用工具類,致力于
    的頭像 發(fā)表于 06-30 17:30 ?771次閱讀

    shimetapi:開源RGB+EVS視覺融合相機(jī)事件相機(jī)工具鏈與算法庫

    的接口控制和算法處理。 一、shimetapi_Hybrid_vision_algo (算法層 SDK) 定位: 這是 SDK 的核心算法處理層,位于架構(gòu)的中間層(黃色部分)。 核心功能: 專注于處理來自
    的頭像 發(fā)表于 06-26 13:52 ?868次閱讀
    白水县| 万山特区| 呼玛县| 泾川县| 昌黎县| 晴隆县| 江津市| 宁蒗| 华容县| 华蓥市| 通州市| 旺苍县| 都昌县| 宣威市| 巨鹿县| 惠安县| 建始县| 夹江县| 两当县| 周宁县| 浠水县| 色达县| 萨嘎县| 昌乐县| 南通市| 扎兰屯市| 柳林县| 津南区| 沙雅县| 余庆县| 紫金县| 巴马| 江津市| 湖北省| 泗阳县| 白银市| 拉萨市| 凤台县| 年辖:市辖区| 柳林县| 宣恩县|