安全存儲密鑰
安全存儲密鑰(Secure Storage Key, SSK)在每臺設備中的值都不同。
OP-TEE啟動時會使用 芯片ID和HUK經HMAC算法計算來獲得該值 ,并將SSK的值保存在結構體變量tee_fs_ssk的密鑰成員中,以備生成其他密鑰使用。
工廠生 產時會將HUK寫入到OTP/efuse中 ,且正常世界狀態無法讀取到HUK的值,而芯片ID在芯片出廠后就會被寫入到芯片中。
OP-TEE啟動過程中會執行tee_fs_init_key_manager函數,該函數使用SSK =HMAC(HUK, message)的方式來生成SSK。該函數的內容如下:
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的產生:
* SSK = HMAC(HUK, message)
* message := concatenate(chip_id, static string)
* */
/* 獲取HUK的值(該接口的實現與平臺有關,不同的芯片具有不同讀取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
是一個靜態的字符串,該值被寫死在代碼中 */
memcpy(message, chip_id, sizeof(chip_id));
memcpy(message + sizeof(chip_id), string_for_ssk_gen,
sizeof(string_for_ssk_gen));
/* 使用huk的值對message的內容做HMAC運算,將獲取到的數據作為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已經生產 */
if (res == TEE_SUCCESS)
tee_fs_ssk.is_init = 1;
return res;
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
芯片
+關注
關注
453文章
50397瀏覽量
421796 -
密鑰
+關注
關注
1文章
137瀏覽量
19739 -
TEE
+關注
關注
0文章
29瀏覽量
10243
發布評論請先 登錄
相關推薦
CysecureTools如何直接訪問外部存儲設備內的密鑰呢?
顯然不符合安全標準。
那么,如標題所示,CysecureTools應該如何直接訪問外部存儲設備內的密鑰呢?\"
發表于 01-31 08:08
請問如何才能安全地存儲加密密鑰?
大家好!我用的是PIC32MZ2048EFM144。我需要安全地存儲加密密鑰。我知道這個PIC有一個密碼引擎,但是顯然,它不像PIC24密碼引擎,它不存儲
發表于 06-13 08:24
ACR1256U-R9讀寫器如何實現密鑰存儲區安全訪問控制
`ACR1256U-R9讀寫器如何實現密鑰存儲區安全訪問控制ACR1256U-R9讀寫器支持USB通訊方式,易于與電腦連接,支持ISO 14443類型A和類型B,MF和Felica,是公交交通,門禁
發表于 08-03 11:33
【HarmonyOS】安全指南
密鑰結合業務上下文衍生出多種密鑰,給應用提供密鑰管理和數據加解密相關的服務;設備核心密鑰生命周期不離開可信環境。可信環境同樣可提供身份認證、系統狀態監控、數據
發表于 09-16 17:34
為什么STSAFE上沒有存儲密鑰1和2的示例項目?那是安全問題嗎?
密鑰存儲在安全區域中。這意味著 :如果我激活 RDP lvl 2,這些密鑰是不可變的并且 永遠無法更新如果我激活 RDP lvl 1,我可以批量擦除閃存并使用新
發表于 12-19 07:38
為了使用SBSFU或自定義安全引導加載程序,將BHK密鑰和RHUK密鑰存儲在stm32u585中的什么位置?
BHK 和 RHUK 密鑰的正確位置在哪里?如果我的 SBSFU 讀數是正確的,則 KEY 僅存儲在內部安全閃存 (0x0C000000) 中,RDP 用于限制從 DEBUG 端口 (SWD/JTAG) 訪問閃存。3)如果是,
發表于 02-02 06:46
MCUBoot寫入閃存之前將AES密鑰存儲在哪里?
程序會通過藍牙將.sb2文件下載到sdcard,然后booloader會讀取0xB000地址的AES密鑰,解密sdcard中的文件,最終將程序寫入flash 0xA000。我想知道在寫入閃存之前將 AES 密鑰存儲在哪里,我應該
發表于 03-23 08:47
安全組播密鑰管理方案研究
隨著組播應用的不斷發展,其安全性尤其是組播密鑰管理成為熱點問題。本文對基于邏輯密鑰樹的集中控制方案進行了分析和改進。改進方案在不增加組播成員密鑰的存
發表于 08-18 09:02
?8次下載
實現密鑰的物理安全
實現密鑰的物理安全保密通信的實質是保護密鑰,較長的在一起程度上能夠防止通過強硬的計算技術破解代碼,但這種保護措施無法滿足同樣重要的物理安全性的
發表于 04-10 09:50
?9次下載
網絡安全密鑰是什么_網絡安全密鑰怎么修改
本文開始闡述了網絡安全密鑰的定義,其次闡述了如何設置無線網絡的安全密鑰以及無線網絡的加密方法,最后闡述了網絡安全
發表于 03-14 10:29
?14.2w次閱讀
如何更新存儲庫簽名密鑰
為了最好地確保 RPM 和 Debian 軟件包存儲庫的安全性和可靠性, NVIDIA 從 2022 年 4 月 27 日開始更新并輪換apt、dnf/yum和zypper軟件包管理器使用的簽名密鑰。
LKT(LCS)安全芯片RSA密鑰存儲格式說明
RSA算法目前常用密鑰長度有RSA512、RSA1024、RSA2048,存儲的參數長度也會存在變化,LKT系列安全芯片存儲相應參數時還需要在參數內容之前加入參數標識符、參數內容長度,
評論