安全存儲密鑰
安全存儲密鑰(Secure Storage Key, SSK)在每臺設(shè)備中的值都不同。
OP-TEE啟動時會使用 芯片ID和HUK經(jīng)HMAC算法計算來獲得該值 ,并將SSK的值保存在結(jié)構(gòu)體變量tee_fs_ssk的密鑰成員中,以備生成其他密鑰使用。
工廠生 產(chǎn)時會將HUK寫入到OTP/efuse中 ,且正常世界狀態(tài)無法讀取到HUK的值,而芯片ID在芯片出廠后就會被寫入到芯片中。
OP-TEE啟動過程中會執(zhí)行tee_fs_init_key_manager函數(shù),該函數(shù)使用SSK =HMAC(HUK, message)的方式來生成SSK。該函數(shù)的內(nèi)容如下:
static TEE_Result tee_fs_init_key_manager(void)
{
int res = TEE_SUCCESS;
struct tee_hw_unique_key huk;
uint8_t chip_id[TEE_FS_KM_CHIP_ID_LENGTH];
uint8_t message[sizeof(chip_id) + sizeof(string_for_ssk_gen)];
/* SSK的產(chǎn)生:
* SSK = HMAC(HUK, message)
* message := concatenate(chip_id, static string)
* */
/* 獲取HUK的值(該接口的實(shí)現(xiàn)與平臺有關(guān),不同的芯片具有不同讀取HUK值的方式)*/
tee_otp_get_hw_unique_key(&huk);
/* 獲取芯片ID的值(不同的芯片具有不同的讀取芯片ID值的方式)*/
tee_otp_get_die_id(chip_id, sizeof(chip_id));
/* 將chip id + string_for_ssk_gen連接后的值保存到message中,string_for_ssk_gen
是一個靜態(tài)的字符串,該值被寫死在代碼中 */
memcpy(message, chip_id, sizeof(chip_id));
memcpy(message + sizeof(chip_id), string_for_ssk_gen,
sizeof(string_for_ssk_gen));
/* 使用huk的值對message的內(nèi)容做HMAC運(yùn)算,將獲取到的數(shù)據(jù)作為SSK保存到tee_fs_ssk變
量的key成員中 */
res = do_hmac(tee_fs_ssk.key, sizeof(tee_fs_ssk.key),
huk.data, sizeof(huk.data),
message, sizeof(message));
/* 標(biāo)記ssk已經(jīng)生產(chǎn) */
if (res == TEE_SUCCESS)
tee_fs_ssk.is_init = 1;
return res;
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
芯片
+關(guān)注
關(guān)注
463文章
54369瀏覽量
468949 -
密鑰
+關(guān)注
關(guān)注
1文章
153瀏覽量
21032 -
TEE
+關(guān)注
關(guān)注
0文章
30瀏覽量
10703
發(fā)布評論請先 登錄
相關(guān)推薦
熱點(diǎn)推薦
CysecureTools如何直接訪問外部存儲設(shè)備內(nèi)的密鑰呢?
顯然不符合安全標(biāo)準(zhǔn)。
那么,如標(biāo)題所示,CysecureTools應(yīng)該如何直接訪問外部存儲設(shè)備內(nèi)的密鑰呢?\"
發(fā)表于 01-31 08:08
i.MX93 ELE 密鑰存儲持久密鑰生成 NVM 錯誤怎么辦?
嘗試在 i.MX93 上的 ELE 密鑰存儲中生成持久密鑰時。我遇到以下錯誤:
```
獲取設(shè)備信息
SoC ID : 0x9300
SoC 版本 : 0xa100
LMDA val:0x10
創(chuàng)建
發(fā)表于 03-18 07:04
請問如何才能安全地存儲加密密鑰?
大家好!我用的是PIC32MZ2048EFM144。我需要安全地存儲加密密鑰。我知道這個PIC有一個密碼引擎,但是顯然,它不像PIC24密碼引擎,它不存儲
發(fā)表于 06-13 08:24
【HarmonyOS】安全指南
密鑰結(jié)合業(yè)務(wù)上下文衍生出多種密鑰,給應(yīng)用提供密鑰管理和數(shù)據(jù)加解密相關(guān)的服務(wù);設(shè)備核心密鑰生命周期不離開可信環(huán)境??尚怒h(huán)境同樣可提供身份認(rèn)證、系統(tǒng)狀態(tài)監(jiān)控、數(shù)據(jù)
發(fā)表于 09-16 17:34
為什么STSAFE上沒有存儲密鑰1和2的示例項(xiàng)目?那是安全問題嗎?
密鑰存儲在安全區(qū)域中。這意味著 :如果我激活 RDP lvl 2,這些密鑰是不可變的并且 永遠(yuǎn)無法更新如果我激活 RDP lvl 1,我可以批量擦除閃存并使用新
發(fā)表于 12-19 07:38
為了使用SBSFU或自定義安全引導(dǎo)加載程序,將BHK密鑰和RHUK密鑰存儲在stm32u585中的什么位置?
BHK 和 RHUK 密鑰的正確位置在哪里?如果我的 SBSFU 讀數(shù)是正確的,則 KEY 僅存儲在內(nèi)部安全閃存 (0x0C000000) 中,RDP 用于限制從 DEBUG 端口 (SWD/JTAG) 訪問閃存。3)如果是,
發(fā)表于 02-02 06:46
MCUBoot寫入閃存之前將AES密鑰存儲在哪里?
程序會通過藍(lán)牙將.sb2文件下載到sdcard,然后booloader會讀取0xB000地址的AES密鑰,解密sdcard中的文件,最終將程序?qū)懭雈lash 0xA000。我想知道在寫入閃存之前將 AES 密鑰存儲在哪里,我應(yīng)該
發(fā)表于 03-23 08:47
Arm密鑰管理單元規(guī)范
Arm?密鑰管理單元(KMU)是一種集中的密鑰管理架構(gòu),用于存儲對稱密鑰材料(資產(chǎn))。存儲在KMU中的密
發(fā)表于 08-09 06:43
安全組播密鑰管理方案研究
隨著組播應(yīng)用的不斷發(fā)展,其安全性尤其是組播密鑰管理成為熱點(diǎn)問題。本文對基于邏輯密鑰樹的集中控制方案進(jìn)行了分析和改進(jìn)。改進(jìn)方案在不增加組播成員密鑰的存
發(fā)表于 08-18 09:02
?8次下載
網(wǎng)絡(luò)安全密鑰是什么_網(wǎng)絡(luò)安全密鑰怎么修改
本文開始闡述了網(wǎng)絡(luò)安全密鑰的定義,其次闡述了如何設(shè)置無線網(wǎng)絡(luò)的安全密鑰以及無線網(wǎng)絡(luò)的加密方法,最后闡述了網(wǎng)絡(luò)安全
發(fā)表于 03-14 10:29
?14.5w次閱讀
如何更新存儲庫簽名密鑰
為了最好地確保 RPM 和 Debian 軟件包存儲庫的安全性和可靠性, NVIDIA 從 2022 年 4 月 27 日開始更新并輪換apt、dnf/yum和zypper軟件包管理器使用的簽名密鑰。
LKT(LCS)安全芯片RSA密鑰存儲格式說明
RSA算法目前常用密鑰長度有RSA512、RSA1024、RSA2048,存儲的參數(shù)長度也會存在變化,LKT系列安全芯片存儲相應(yīng)參數(shù)時還需要在參數(shù)內(nèi)容之前加入?yún)?shù)標(biāo)識符、參數(shù)內(nèi)容長度,
ATSHA204A國產(chǎn)替代新選擇:LCSHA204加密芯片介紹
ATSHA204A是一款用于固件版權(quán)保護(hù),防抄板仿克隆的加密芯片。包含多達(dá)16個密鑰存儲區(qū)用于安全存儲密鑰。
存儲密鑰與文件加密密鑰介紹
數(shù)據(jù)。 文件加密密鑰 文件加密密鑰(File Encryption Key, FEK)是安全存儲功能用于對數(shù)據(jù)進(jìn)行加密時使用的AES密鑰,該
國芯速遞 | 基于納祥科技高性能NX-FT422芯片的USB KEY硬件系統(tǒng)設(shè)計
NAXIANGTECHNOLOGY納祥科技NX-FT422USBKey芯片USBKey芯片USBKey是通過USB接口連接的硬件設(shè)備,內(nèi)置安全芯片,用于數(shù)字認(rèn)證、數(shù)據(jù)加密及電子簽名,能夠安全存儲
安全存儲密鑰是什么
評論