91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

STM32單片機 ? 來源:STM32 ? 作者:STM32 ? 2021-05-28 15:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

調(diào)試端口訪問:

出廠的芯片缺省關閉CM0+一側(cè)的調(diào)試端口訪問,即使在RDP0的狀態(tài)下也只能調(diào)試CM4內(nèi)核。

Option Byte

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

片上Flash:

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

片上SRAM

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

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

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

CKS (Customer Key Storage)

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

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

存儲在片上安全Flash的密鑰無法通過調(diào)試端口獲?。词乖赗DP0條件下)

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

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

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

用戶密鑰存儲

用戶密鑰存儲在“安全”Flash區(qū)域,用戶代碼和調(diào)試端口不可訪問

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

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

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

把密鑰寫到“安全”Flash區(qū)域,需要安全的操作環(huán)境

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

用戶密鑰的寫入 (Key Provisioning)

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

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

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

基于AES-128 GCM

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

該操作在手冊中用“write”或“l(fā)oad”表示

用戶密鑰的寫入通過應用代碼實現(xiàn)

參考例程:

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

調(diào)用FUS服務:SHCI_C2_FUS_StoreUsrKey

輸入:CKS_param結(jié)構體

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

SHCI_C2_FUS_StoreUsrKey (&CKS_param, &key_simple_128_idx );

用戶密鑰的寫入使用STM32CubeProgrammer GUI實現(xiàn)

STM32CubeProgrammer 從2.4版本開始支持

芯片切換到系統(tǒng) 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上的用戶代碼可以讀取其狀態(tài)

安全狀態(tài)和AES1時鐘是否使能沒有關系

使用步驟

Step1:AES1模塊初始化

初始化結(jié)構體的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;但是不影響已經(jīng)在AES1密鑰寄存器中的key

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

注意事項:關于后續(xù)更新

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

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

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

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

小結(jié)

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

CKS存儲的密鑰數(shù)據(jù)無法通過調(diào)試端口獲取,已經(jīng)存儲的密鑰數(shù)據(jù),即使在RDP為0的情況下也不能通過調(diào)試端口訪問。

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

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

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

責任編輯:haq

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

    關注

    13

    文章

    4788

    瀏覽量

    90057

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    極海APM32F427系列MCU榮獲IEC 60730/60335功能安全認證

    近日,極海APM32F427系列工業(yè)級高性能拓展型MCU,成功通過IEC 60730/60335功能安全認證。這標志著該系列產(chǎn)品在功能安全
    的頭像 發(fā)表于 02-09 09:15 ?747次閱讀
    極海APM32F427系列<b class='flag-5'>MCU</b>榮獲IEC 60730/60335<b class='flag-5'>功能</b><b class='flag-5'>安全</b>認證

    AN5289 使用 STM32WB 系列微控制器構建射頻應用筆記

    本文檔一步一步地指導設計人員基于 STM32WB 系列微控制器構建特定 Bluetooth低功耗或802.15.4 應用。它匯集了最重要的信息,并且列出了需要處理的方面。為了充分利用本文檔中的信息
    發(fā)表于 01-09 14:13 ?0次下載

    LAT1215+如何讓 STM32WB 在沒有 LSE 時運行 BLE 應用程序

    首先 LSE 可作為 STM32WB RF Wakeup 和 RTC 的時鐘源。STM32WB RF Wakeup 和 RTC 的時鐘源可配置為 LSE,LSE 時鐘相對比較穩(wěn)定且準確,不需要校準
    發(fā)表于 01-09 10:55 ?0次下載

    STM32WB 系列微控制器 OTA 和無線固件更新應用筆記

    本文檔介紹了通過低功耗藍牙連接在 STM32WB 設備上進行 OTA 固件更新的過程。它講解如何使用 STM32Cube 固件包中提供的 OTA 應用程序,實現(xiàn)用戶應用程序、無線固件和固件升級服務的更新。
    發(fā)表于 01-08 14:50 ?0次下載

    請問CW32L是如何提供3級程序安全防護?

    芯源的安全低功耗CW32L MCU是如何提供3級程序安全防護的,采用了哪些手段?
    發(fā)表于 12-24 08:12

    硬件加密引擎在保障數(shù)據(jù)安全方面有哪些優(yōu)勢呢?

    ” 機制:密鑰生成、存儲、使用均在加密引擎內(nèi)部完成,支持真隨機數(shù)發(fā)生器(TRNG)硬件生成密鑰,避免軟件生成的偽隨機數(shù)存在的可預測性風險。密鑰存儲
    發(fā)表于 11-17 06:47

    芯源半導體安全芯片技術原理

    支持密鑰安全生成、存儲和銷毀,確保密鑰的生命周期安全。? 安全啟動機制:芯源半導體
    發(fā)表于 11-13 07:29

    CW32L010的安全運行庫保護是什么功能?

    它是針對用戶指定的MCU內(nèi)部FLASH數(shù)據(jù),提供的一種讀保護功能;該功能生效后,就可以禁止對安全運行庫進行任何形式的讀取操作(比如CPU、
    發(fā)表于 11-12 06:19

    STM32WB連接擴展板技術解析:從硬件架構到開發(fā)實踐

    STMicroelectronics B-WB1M-WPAN1連接擴展板設有板載STM32WB1MMCH6。STMicro B-WB1M-WPAN1連接擴展板提供母頭-母頭STMOD+
    的頭像 發(fā)表于 10-23 09:40 ?624次閱讀
    <b class='flag-5'>STM32WB</b>連接擴展板技術解析:從硬件架構到開發(fā)實踐

    STM32WB09xE藍牙低功耗MCU技術解析

    STMicroelectronics STM32WB09 BLUETOOTH? 低功耗5.4 32位MCU嵌入最先進的2.4GHz射頻無線電外設,優(yōu)化用于實現(xiàn)超低功耗和出色的無線電性能,可實現(xiàn)
    的頭像 發(fā)表于 10-20 09:29 ?660次閱讀
    <b class='flag-5'>STM32WB</b>09xE藍牙低功耗<b class='flag-5'>MCU</b>技術解析

    如何在 MCU/MUP 安全存儲機密數(shù)據(jù)?

    如何在 MCU/MUP 安全存儲機密數(shù)據(jù)
    發(fā)表于 09-08 06:44

    根據(jù)Datasheet里cyT2B5L有1024位otp,全部都能用來存儲密鑰嗎?

    1)項目上有要求把密鑰存在安全模塊存儲區(qū)域的要求 2)根據(jù)Datasheet里cyT2B5L有1024位otp,全部都能用來存儲密鑰嗎?還是
    發(fā)表于 07-14 07:17

    凌科芯安國產(chǎn)安全MCU簡介

    安全MCU是指在傳統(tǒng)MCU基礎,集成了硬件級安全功能模塊的芯片,專門用于應對數(shù)據(jù)泄露、惡意攻擊、固件篡改等
    的頭像 發(fā)表于 06-04 15:28 ?941次閱讀

    MAX36051 DeepCover安全管理器,具有128字節(jié)無痕跡存儲器技術手冊

    DeepCover 嵌入式安全方案采用多重先進的物理安全機制保護敏感數(shù)據(jù),提供最高等級的密鑰存儲安全
    的頭像 發(fā)表于 05-13 11:15 ?784次閱讀
    MAX36051 DeepCover<b class='flag-5'>安全</b>管理器,具有128字節(jié)無痕跡<b class='flag-5'>存儲</b>器技術手冊

    凌科芯安推出新一代安全MCU芯片LKT6850

    安全MCU是在傳統(tǒng)MCU基礎增加了多種安全特性的芯片。硬件它集成了專門的
    的頭像 發(fā)表于 03-31 15:58 ?958次閱讀