在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32WB的CKS功能提供在MCU上的密鑰安全存儲和安全使用方法

STM32單片機 ? 來源:STM32 ? 作者:STM32 ? 2021-05-28 15:49 ? 次閱讀

我們都知道STM32WB是雙核多協議無線微控制器,即主頻為64 MHz的 ArmCortex‐M4內核(應用處理器)和主頻為32 MHz的ArmCortex‐M0+內核(網絡處理器),支持Bluetooth 5和IEEE 802.15.4無線標準。雙核的好處是可以優化對資源的安全使用,保證和RF協議棧相關處理的實時性,并可同時提供電源管理的靈活性。

STM32WB的信息安全是以雙核隔離為基礎的。

STM32WB雙核架構和雙核間的隔離機制

調試端口訪問:

出廠的芯片缺省關閉CM0+一側的調試端口訪問,即使在RDP0的狀態下也只能調試CM4內核。

Option Byte

OptionByte中包含雙核隔離相關的安全設置,例如CM0+才能訪問的Flash區間等等。這些OptionByte受到保護,無法隨意被修改。缺省出廠芯片已經使能CM0+的保護,相關的一些OptionByte設置無法通過調試端口或CM4進行修改。

片上Flash:

Flash的一部分只能由CM0+訪問,CM4無法對該部分Flash進行讀、寫、擦。

片上SRAM

SRAM的一部分只能由CM0+訪問,CM4無法對該部分SRAM進行讀、寫。

CRYPTO硬件資源:如AES,TRNG,PKA

系統上電復位時,缺省CRYPTO相關的硬件CM4可以使用。CM0+內核可以通過修改SystemConfig相應的寄存器使得這些硬件資源只能由CM0+內核進行控制,也稱為把這些硬件資源配置成Secure訪問模式。其中當AES1被配置為Secure時,CM4內核無法訪問密鑰寄存器,但是依舊可以訪問AES1的其他寄存器使用AES1硬件單元進行加解密操作。

CKS (Customer Key Storage)

AES算法是應用程序中經常用到的一種保障數據機密性和完整性的方法,例如用于隱私數據的加密存儲、加密通信等。其中,密鑰作為最敏感的信息也需要受到保護。

STM32WB的CKS功能提供在MCU上的密鑰安全存儲和安全使用方法 :

存儲在片上安全Flash的密鑰無法通過調試端口獲取(即使在RDP0條件下)

運行在CM4內核的應用程序代碼也無法獲得片上安全Flash中存儲的密鑰,避免軟件漏洞帶來的風險

應用程序代碼依舊能夠通過CKS和AES1硬件模塊使用存儲的密鑰進行加解密操作

CKS能夠存儲多組密鑰,應用程序代碼可以通過密鑰索引來指定AES運算所使用的密鑰

用戶密鑰存儲

用戶密鑰存儲在“安全”Flash區域,用戶代碼和調試端口不可訪問

CKS最多可以存儲100個用戶應用密鑰(用于AES運算)

允許存儲128位或者256位的AES密鑰

對密鑰的操作只能通過用戶代碼調用FUS接口完成

把密鑰寫到“安全”Flash區域,需要安全的操作環境

44bb6d76-be57-11eb-9e57-12bb97331649.png

用戶密鑰的寫入 (Key Provisioning)

可以通過用戶代碼完成,也可以通過CubeProgrammer的GUI或者命令行完成

寫入應用密鑰的明文//simple key,需要安全的操作環境

寫入應用密鑰的密文//encrypted key,無需安全的操作環境

基于AES-128 GCM

寫入用于解密encrypted key的密鑰的明文//master key,需要安全的操作環境

該操作在手冊中用“write”或“load”表示

用戶密鑰的寫入通過應用代碼實現

參考例程:

STM32Cube_FW_WB_VxxxProjectsP-NUCLEO-WB55.NucleoApplicationsCKS

給CKS_param賦值

typedef PACKED_STRUCT{uint8_t KeyType;uint8_t KeySize;uint8_t KeyData[32 + 12];} SHCI_C2_FUS_StoreUsrKey_Cmd_Param_t;SHCI_C2_FUS_StoreUsrKey_Cmd_Param_t CKS_param;CKS_param.KeyType = …;CKS_param.KeySize = …;memcpy(CKS_param.KeyData, pKeySimple_128, 16

調用FUS服務:SHCI_C2_FUS_StoreUsrKey

輸入:CKS_param結構體

輸出:芯片為該密鑰分配的索引

SHCI_C2_FUS_StoreUsrKey (&CKS_param, &key_simple_128_idx );

用戶密鑰的寫入使用STM32CubeProgrammer GUI實現

STM32CubeProgrammer 從2.4版本開始支持

芯片切換到系統 Bootloader 啟動運行DFU,

STM32CubeProgrammer 以USB方式連接芯片

步驟:選擇KEY文件 ——》 指定KEY類型 ——》 寫入KEY

注意:GUI界面沒有返回為該密鑰分配的索引,需要用戶自己記錄

應用密鑰的裝載和使用

Load:AES1的密鑰裝載

SHCI_C2_FUS_LoadUsrKey (key_simple_128_idx)

該操作會把AES1密鑰寄存器配置成Secure

SAES1@SYSCFG_SIPCR

只能由運行在CM0+上的FUS來配置

運行在CM4上的用戶代碼可以讀取其狀態

安全狀態和AES1時鐘是否使能沒有關系

使用步驟

Step1:AES1模塊初始化

初始化結構體的pKey,設置為空指針即可

使能AES1時鐘

Step2:密鑰裝載

要在AES1模塊disable1的時候 (EN=0)

Step3:使用AES1做加解密

hcryp1.Init.DataType = CRYP_DATATYPE_8B;hcryp1.Init.KeySize = CRYP_KEYSIZE_128B;hcryp1.Init.Algorithm = CRYP_AES_CBC;/* Key will be provided by CKS service */hcryp1.Init.pKey = NULL; hcryp1.Init.pInitVect = AESIV;HAL_CRYP_Init (&hcryp1);SHCI_C2_FUS_LoadUsrKey (key_simple_128_idx);HAL_CRYP_Encrypt(&hcryp1, Plaintext, size, EncryptedBuf, timeout)

應用密鑰的使用

Lock:

SHCI_C2_FUS_LockUsrKey (key_simple_128_idx)

對某個key lock之后,將無法再對該key進行Load操作,再次Load該Key時FUS API返回錯誤代碼0xFF;但是不影響已經在AES1密鑰寄存器中的key

對該key load的禁止操作,會一直生效直到下次系統復位

注意事項:關于后續更新

為了避免有效密鑰一直存在于AES1密鑰寄存器中,建議使用完畢后Load一個dummy key或者disable AES1

后續FUS版本(從 STM32CUbeWB1.11開始)會增加API:Unload

早期出廠芯片預裝的FUS版本較老,在FUS升級的時候,通過CSK存儲在芯片里的用戶key會被擦除

從FUS1.1.1.1或者FUS1.2.0開始,再做FUS升級,不會影響到已經存在的用戶key應用密鑰的使用

小結

使用CKS對AES密鑰進行保護,與傳統的直接將AES密鑰存儲在Flash中的做法有明顯的優勢:

CKS存儲的密鑰數據無法通過調試端口獲取,已經存儲的密鑰數據,即使在RDP為0的情況下也不能通過調試端口訪問。

密鑰使用過程中應用程序代碼雖然可以使用密鑰進行加解密操作,但是始終無法直接獲取密鑰數據本身,降低了軟件漏洞可能帶來的風險。

原文標題:信息安全專題 | 安全存儲(2)STM32WB的用戶密鑰存儲 (CKS)

文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 存儲
    +關注

    關注

    13

    文章

    4341

    瀏覽量

    86020

原文標題:信息安全專題 | 安全存儲(2)STM32WB的用戶密鑰存儲 (CKS)

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM32WB55RG開發(5)----監測STM32WB連接狀態

    會討論為什么需要監測連接狀態,然后介紹STM32WB提供的相關工具和技術。隨后,會詳細解釋如何使用這些工具來實時跟蹤和管理連接狀態,以及如何解讀和響應不同的連接狀態事件。通過這些內容,能夠更好地理解和利用STM32WB的無線連接
    的頭像 發表于 12-16 16:22 ?316次閱讀
    <b class='flag-5'>STM32WB</b>55RG開發(5)----監測<b class='flag-5'>STM32WB</b>連接狀態

    ST NPI 專區 | 新架產品【STM32WB09KEV7TR】

    STM32WB09xx32位MCU無線系列:Bluetooth低功耗5.4STM32WB09xx是輕量級、高性價比Bluetooth低功耗5.4應用的理想解決方案產品說明STM32WB
    的頭像 發表于 08-13 08:27 ?353次閱讀
    ST NPI 專區 | 新<b class='flag-5'>上</b>架產品【<b class='flag-5'>STM32WB</b>09KEV7TR】

    WPS完成后,主機應用程序如何從ESP讀取WPA安全密鑰

    WPS 完成后,主機應用程序如何從 ESP 讀取 WPA 安全密鑰? AT WPS 命令似乎將結果存儲在閃存中,以便 ESP 下次將連接到同一 AP。 ESP是否可以選擇不將其存儲
    發表于 07-16 08:28

    安全服務加密存儲代碼怎么查

    日益凸顯。為了保護數據安全,云服務提供商需要提供加密存儲功能。本文將詳細介紹云安全服務加密
    的頭像 發表于 07-02 09:28 ?399次閱讀

    求助,關于TRAVEO? II MCU安全調試的幾個問題求解

    我對TRAVEO? II MCU安全調試有幾個問題。 1.TRAVEO TRAVEO? II 有兩種方式保護DAP,一種是永久禁用,一種是身份驗證訪問,對于身份驗證訪問,它像密碼一樣嗎? 不喜歡
    發表于 05-30 07:34

    STM32WBSTM32L4/L4+的區別和優劣勢是什么?

    STM32WBSTM32L4 / L4+的區別,和優劣勢
    發表于 04-26 08:07

    STM32WB thread啟動錯誤是什么原因導致的?

    STM32Cube_FW_WB_V1.3.0ProjectsP-NUCLEO-WB55.NucleoApplicationsBLE_ThreadBle_Thread_Static 硬件環境:STM32WB nucleo 使用SW2切換協議為thread , 顯示失敗
    發表于 04-16 08:01

    STM32WB能否連接藍牙耳機?如果可以支持什么格式?

    STM32WB能否連接藍牙耳機?如果可以支持什么格式?如果能得到回答將非常感謝!
    發表于 03-27 07:11

    項目開發時能不能同時用兩塊芯片,比如一塊stm32WB一塊stm32F4?

    請問項目開發時能不能同時用兩塊芯片,比如一塊stm32WB,一塊stm32F4?
    發表于 03-20 08:22

    STM32WB配置SMPS模塊具體步驟是什么?

    想要降低STM32WB的功耗,查找手冊發現開啟SMPS模塊可以降低功耗。配置SMPS模塊具體步驟是什么有大佬知道嗎?是開啟SMPS宏定義,然后寫PWR的寄存器就可以了嗎?怎么證明自己的SMPS模塊-配置正確了呢?
    發表于 03-20 08:18

    STM32U5,STM32WBSTM32L4開發板,哪個開發板擁有較多數量的ADC?

    請問,我現在需要開發一個項目,在這個項目中需要使用較多數量的傳感器(至少8個),這些傳感器需要進行信號采集,現在在使用STM32U5,STM32WBSTM32L4芯片的開發板中,哪些開發板擁有較多數量的ADC?
    發表于 03-20 08:01

    STM32WB的Zigbee終端在調用ZbStartupWait加入網絡時,選擇rejoin入網后終端會在15s后自動退網的原因?

    STM32WB系列的Zigbee終端在調用ZbStartupWait加入網絡時,選擇rejoin入網后,終端會在15s后,自動退網,這個是什么原因造成的。
    發表于 03-15 06:25

    CKS32F4xx系列DSP功能介紹

    CKS32F4xx系列使用高性能的32位內核,支持浮點運算單元(FPU),同時還支持DSP指令以及存儲保護(MPU)用來加強應用的安全性。
    的頭像 發表于 03-04 13:43 ?1594次閱讀
    <b class='flag-5'>CKS</b>32F4xx系列DSP<b class='flag-5'>功能</b>介紹

    LKT安全芯片密鑰管理與分散過程簡單描述

    密鑰管理是數據加密技術中的重要一環,密鑰管理的目的是確保密鑰安全性(真實性和有效性)。
    的頭像 發表于 02-23 13:43 ?490次閱讀

    CysecureTools如何直接訪問外部存儲設備內的密鑰呢?

    顯然不符合安全標準。 那么,如標題所示,CysecureTools應該如何直接訪問外部存儲設備內的密鑰呢?\"
    發表于 01-31 08:08
    主站蜘蛛池模板: 成人亚洲网站www在线观看| 欧美色图久久| 男女交性高清视频无遮挡| 四虎免费大片aⅴ入口| 日本级毛片免费观看| 99久久免费午夜国产精品| 国产欧美日韩va| 婷婷毛片| 99久久久免费精品免费| 黄色日本网站| 日本网站黄色| 免费边摸边吃奶边叫床视频gif| 色综合久久九月婷婷色综合| 激情久久婷婷| 伊人三级| 亚洲网在线观看| 色噜噜狠狠狠综合曰曰曰| 四虎影院观看视频在线观看| 欧美性色黄在线视| 成人永久免费视频网站在线观看| 国精视频一区二区视频| www.999精品视频观看免费| 国产婷婷高清在线观看免费| www.男人| 欧美色惰aⅴ| 俺也射| 欧美xxx另类| 啪啪中文字幕| 狼色视频在线观免费观看| 欧美色丁香| 很黄很污的视频网站| 四虎精品影院4hutv四虎| 久久www免费人成_看| 国产一级特黄全黄毛片| 亚洲久久在线| 手机看片精品国产福利盒子| 天天干天天干天天插| a一级黄| 国产精品久久久久久免费播放 | 久久99精品国产麻豆宅宅| 国产精品美女一级在线观看|