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

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

STM32WB雙核架構(gòu)和雙核間的隔離機(jī)制

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

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

Option Byte

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

片上Flash:

Flash的一部分只能由CM0+訪問(wèn),CM4無(wú)法對(duì)該部分Flash進(jìn)行讀、寫(xiě)、擦。

片上SRAM

SRAM的一部分只能由CM0+訪問(wèn),CM4無(wú)法對(duì)該部分SRAM進(jìn)行讀、寫(xiě)。

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

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

CKS (Customer Key Storage)

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

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

存儲(chǔ)在片上安全Flash的密鑰無(wú)法通過(guò)調(diào)試端口獲取(即使在RDP0條件下)

運(yùn)行在CM4內(nèi)核的應(yīng)用程序代碼也無(wú)法獲得片上安全Flash中存儲(chǔ)的密鑰,避免軟件漏洞帶來(lái)的風(fēng)險(xiǎn)

應(yīng)用程序代碼依舊能夠通過(guò)CKS和AES1硬件模塊使用存儲(chǔ)的密鑰進(jìn)行加解密操作

CKS能夠存儲(chǔ)多組密鑰,應(yīng)用程序代碼可以通過(guò)密鑰索引來(lái)指定AES運(yùn)算所使用的密鑰

用戶密鑰存儲(chǔ)

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

CKS最多可以存儲(chǔ)100個(gè)用戶應(yīng)用密鑰(用于AES運(yùn)算)

允許存儲(chǔ)128位或者256位的AES密鑰

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

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

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

用戶密鑰的寫(xiě)入 (Key Provisioning)

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

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

寫(xiě)入應(yīng)用密鑰的密文//encrypted key,無(wú)需安全的操作環(huán)境

基于AES-128 GCM

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

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

用戶密鑰的寫(xiě)入通過(guò)應(yīng)用代碼實(shí)現(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服務(wù):SHCI_C2_FUS_StoreUsrKey

輸入:CKS_param結(jié)構(gòu)體

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

SHCI_C2_FUS_StoreUsrKey (&CKS_param, &key_simple_128_idx );

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

STM32CubeProgrammer 從2.4版本開(kāi)始支持

芯片切換到系統(tǒng) Bootloader 啟動(dòng)運(yùn)行DFU,

STM32CubeProgrammer 以USB方式連接芯片

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

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

應(yīng)用密鑰的裝載和使用

Load:AES1的密鑰裝載

SHCI_C2_FUS_LoadUsrKey (key_simple_128_idx)

該操作會(huì)把AES1密鑰寄存器配置成Secure

SAES1@SYSCFG_SIPCR

只能由運(yùn)行在CM0+上的FUS來(lái)配置

運(yùn)行在CM4上的用戶代碼可以讀取其狀態(tài)

安全狀態(tài)和AES1時(shí)鐘是否使能沒(méi)有關(guān)系

使用步驟

Step1:AES1模塊初始化

初始化結(jié)構(gòu)體的pKey,設(shè)置為空指針即可

使能AES1時(shí)鐘

Step2:密鑰裝載

要在AES1模塊disable1的時(shí)候 (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)

應(yīng)用密鑰的使用

Lock:

SHCI_C2_FUS_LockUsrKey (key_simple_128_idx)

對(duì)某個(gè)key lock之后,將無(wú)法再對(duì)該key進(jìn)行Load操作,再次Load該Key時(shí)FUS API返回錯(cuò)誤代碼0xFF;但是不影響已經(jīng)在AES1密鑰寄存器中的key

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

注意事項(xiàng):關(guān)于后續(xù)更新

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

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

早期出廠芯片預(yù)裝的FUS版本較老,在FUS升級(jí)的時(shí)候,通過(guò)CSK存儲(chǔ)在芯片里的用戶key會(huì)被擦除

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

小結(jié)

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

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

密鑰使用過(guò)程中應(yīng)用程序代碼雖然可以使用密鑰進(jìn)行加解密操作,但是始終無(wú)法直接獲取密鑰數(shù)據(jù)本身,降低了軟件漏洞可能帶來(lái)的風(fēng)險(xiǎn)。

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

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

責(zé)任編輯:haq

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

    關(guān)注

    13

    文章

    4793

    瀏覽量

    90072

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    極海APM32F427系列MCU榮獲IEC 60730/60335功能安全認(rèn)證

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

    AN5289 使用 STM32WB 系列微控制器構(gòu)建射頻應(yīng)用筆記

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

    LAT1215+如何讓 STM32WB 在沒(méi)有 LSE 時(shí)運(yùn)行 BLE 應(yīng)用程序

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

    STM32WB 系列微控制器 OTA 和無(wú)線固件更新應(yīng)用筆記

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

    請(qǐng)問(wèn)CW32L是如何提供3級(jí)程序安全防護(hù)?

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

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

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

    芯源半導(dǎo)體安全芯片技術(shù)原理

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

    CW32L010的安全運(yùn)行庫(kù)保護(hù)是什么功能?

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

    STM32WB連接擴(kuò)展板技術(shù)解析:從硬件架構(gòu)到開(kāi)發(fā)實(shí)踐

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

    STM32WB09xE藍(lán)牙低功耗MCU技術(shù)解析

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

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

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

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

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

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

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

    MAX36051 DeepCover安全管理器,具有128字節(jié)無(wú)痕跡存儲(chǔ)器技術(shù)手冊(cè)

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

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

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