安全存儲密鑰
安全存儲密鑰(Secure Storage Key, SSK)在每臺設備中的值都不同。
OP-TEE啟動時會使用 芯片ID和HUK經(jīng)HMAC算法計算來獲得該值 ,并將SSK的值保存在結構體變量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ù)的內容如下:
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的值(該接口的實現(xià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的內容做HMAC運算,將獲取到的數(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));
/* 標記ssk已經(jīng)生產(chǎn) */
if (res == TEE_SUCCESS)
tee_fs_ssk.is_init = 1;
return res;
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
芯片
+關注
關注
463文章
54024瀏覽量
466355 -
密鑰
+關注
關注
1文章
148瀏覽量
20929 -
TEE
+關注
關注
0文章
30瀏覽量
10682
發(fā)布評論請先 登錄
相關推薦
熱點推薦
CysecureTools如何直接訪問外部存儲設備內的密鑰呢?
顯然不符合安全標準。
那么,如標題所示,CysecureTools應該如何直接訪問外部存儲設備內的密鑰呢?\"
發(fā)表于 01-31 08:08
請問如何才能安全地存儲加密密鑰?
大家好!我用的是PIC32MZ2048EFM144。我需要安全地存儲加密密鑰。我知道這個PIC有一個密碼引擎,但是顯然,它不像PIC24密碼引擎,它不存儲
發(fā)表于 06-13 08:24
【HarmonyOS】安全指南
密鑰結合業(yè)務上下文衍生出多種密鑰,給應用提供密鑰管理和數(shù)據(jù)加解密相關的服務;設備核心密鑰生命周期不離開可信環(huán)境??尚怒h(huán)境同樣可提供身份認證、系統(tǒng)狀態(tài)監(jiān)控、數(shù)據(jù)
發(fā)表于 09-16 17:34
為什么STSAFE上沒有存儲密鑰1和2的示例項目?那是安全問題嗎?
密鑰存儲在安全區(qū)域中。這意味著 :如果我激活 RDP lvl 2,這些密鑰是不可變的并且 永遠無法更新如果我激活 RDP lvl 1,我可以批量擦除閃存并使用新
發(fā)表于 12-19 07:38
為了使用SBSFU或自定義安全引導加載程序,將BHK密鑰和RHUK密鑰存儲在stm32u585中的什么位置?
BHK 和 RHUK 密鑰的正確位置在哪里?如果我的 SBSFU 讀數(shù)是正確的,則 KEY 僅存儲在內部安全閃存 (0x0C000000) 中,RDP 用于限制從 DEBUG 端口 (SWD/JTAG) 訪問閃存。3)如果是,
發(fā)表于 02-02 06:46
MCUBoot寫入閃存之前將AES密鑰存儲在哪里?
程序會通過藍牙將.sb2文件下載到sdcard,然后booloader會讀取0xB000地址的AES密鑰,解密sdcard中的文件,最終將程序寫入flash 0xA000。我想知道在寫入閃存之前將 AES 密鑰存儲在哪里,我應該
發(fā)表于 03-23 08:47
安全組播密鑰管理方案研究
隨著組播應用的不斷發(fā)展,其安全性尤其是組播密鑰管理成為熱點問題。本文對基于邏輯密鑰樹的集中控制方案進行了分析和改進。改進方案在不增加組播成員密鑰的存
發(fā)表于 08-18 09:02
?8次下載
實現(xiàn)密鑰的物理安全
實現(xiàn)密鑰的物理安全保密通信的實質是保護密鑰,較長的在一起程度上能夠防止通過強硬的計算技術破解代碼,但這種保護措施無法滿足同樣重要的物理安全性的
發(fā)表于 04-10 09:50
?9次下載
網(wǎng)絡安全密鑰是什么_網(wǎng)絡安全密鑰怎么修改
本文開始闡述了網(wǎng)絡安全密鑰的定義,其次闡述了如何設置無線網(wǎng)絡的安全密鑰以及無線網(wǎng)絡的加密方法,最后闡述了網(wǎng)絡安全
發(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系列安全芯片存儲相應參數(shù)時還需要在參數(shù)內容之前加入?yún)?shù)標識符、參數(shù)內容長度,
存儲密鑰與文件加密密鑰介紹
數(shù)據(jù)。 文件加密密鑰 文件加密密鑰(File Encryption Key, FEK)是安全存儲功能用于對數(shù)據(jù)進行加密時使用的AES密鑰,該
國芯速遞 | 基于納祥科技高性能NX-FT422芯片的USB KEY硬件系統(tǒng)設計
NAXIANGTECHNOLOGY納祥科技NX-FT422USBKey芯片USBKey芯片USBKey是通過USB接口連接的硬件設備,內置安全芯片,用于數(shù)字認證、數(shù)據(jù)加密及電子簽名,能夠安全存儲
安全存儲密鑰是什么
評論