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

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

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

Encrypted Boot image泄漏討論

LI1323882 ? 來(lái)源:MCU頻道 ? 作者:MCU頻道 ? 2022-10-26 10:08 ? 次閱讀

寫(xiě)在前面

在《安全啟動(dòng)模式下的數(shù)據(jù)保存問(wèn)題》中,小編介紹了在HAB boot和XIP encrypted boot下,讀寫(xiě)外部Nor Flash數(shù)據(jù)的特點(diǎn)以及image的數(shù)據(jù)特征狀態(tài),比如使能XIP encrypted boot后,Nor Flash內(nèi)的bootable image是密文狀態(tài),那是否意味著只要在使能XIP encrypted boot后,被加密的bootable image就可以隨意下發(fā)給OEM進(jìn)行量產(chǎn)燒錄,同時(shí)在量產(chǎn)后,客戶(hù)可隨意訪問(wèn)加密的bootable image而無(wú)需擔(dān)心application image泄漏呢?

是否泄漏呢?

為了測(cè)試是否有泄漏的風(fēng)險(xiǎn),在MIMXRT1060-EVK上進(jìn)行如下步驟測(cè)試:

MCUXpresso Secure Provisioning工具選擇XIP encrypted模式,生成并燒錄Blink LED的bootable image;

86da1b70-544d-11ed-a3b6-dac502259ad0.png圖1

通過(guò)NXP-MCUBootUtility查看燒錄后的image,對(duì)比右邊框中的明文image會(huì)發(fā)現(xiàn)密文image顯得很是雜亂,即使被查看也應(yīng)該不會(huì)泄漏明文image;

870f0a4c-544d-11ed-a3b6-dac502259ad0.png圖2

接著換另一種方式查看密文image,即通過(guò)pyocd命令讀取,具體如下所示,打開(kāi)9_21_readback.bin與右邊框中的明文image比較,發(fā)現(xiàn)居然一致,換句話(huà)說(shuō),明文image被泄漏了;

87b10630-544d-11ed-a3b6-dac502259ad0.png圖3 87bf88f4-544d-11ed-a3b6-dac502259ad0.png圖4

通過(guò)上述測(cè)試結(jié)果表明,使用后一種方式讀取查看密文image居然能得到明文image,直接讓XIP encrypted boot破防了,這是怎么回事呢?

原因解釋

小編在《安全啟動(dòng)模式下的數(shù)據(jù)保存問(wèn)題》中提到,存儲(chǔ)在Serial Nor flash中的加密代碼和數(shù)據(jù)在送到CPU執(zhí)行之前,需要經(jīng)過(guò)BEE或者OTFAD解密,這是 Encypted XIP boot模式實(shí)現(xiàn)的基礎(chǔ),Jlink在連接目標(biāo)MCU時(shí),會(huì)把對(duì)應(yīng)的flash驅(qū)動(dòng)算法加載在內(nèi)部RAM中運(yùn)行,如果此時(shí)MCU已經(jīng)正常啟動(dòng)運(yùn)行application image的話(huà),則表示BEE或者OTFAD模塊也已完成好配置了,那么flash驅(qū)動(dòng)在讀Nor Flash內(nèi)的密文時(shí),數(shù)據(jù)會(huì)被自動(dòng)解密。

88717cb2-544d-11ed-a3b6-dac502259ad0.png圖 5

應(yīng)對(duì)策略

既然我們已經(jīng)了解泄漏的原因,就要阻斷外部工具加載flashloader或者flash驅(qū)動(dòng)算法到內(nèi)部RAM運(yùn)行,所以除了禁止Debug port外,我們還需要禁止Serial Download方式,預(yù)防不懷好意者利用Serial Downloader方式,使得ROM code加載專(zhuān)門(mén)的flashloader到RAM中運(yùn)行,通過(guò)配置BEE或OTFAD模塊來(lái)讀取image明文(如下代碼所示)。

status=SLN_AUTH_check_context(SLN_CRYPTO_CTX_1);

configPRINTF(("Contextcheckstatus%d
",status));
//DEBUG_LOG_DELAY_MS(1000);//Optionaldelay,enablefordebuggingtoensurelogisprintedbeforeacrash

if(SLN_AUTH_NO_CONTEXT==status)
{
configPRINTF(("Ensuringcontext...
"));
//DEBUG_LOG_DELAY_MS(1000);//Optionaldelay,enablefordebuggingtoensurelogisprintedbeforeacrash

//Loadcryptocontextsandmakesuretheyarevalid(ourowncontextshouldbegoodtogettothispoint!)
status=bl_nor_encrypt_ensure_context();

if(kStatus_Fail==status)
{
configPRINTF(("Failedtoloadcryptocontext...
"));
//DEBUG_LOG_DELAY_MS(1000);//Optionaldelay,enablefordebuggingtoensurelogisprintedbeforeacrash

//DoublecheckifencryptedXIPisenabled
if(!bl_nor_encrypt_is_enabled())
{
configPRINTF(("NotrunninginencryptedXIPmode,ignoreerror.
"));
//DEBUG_LOG_DELAY_MS(1000);//Optionaldelay,enablefordebuggingtoensurelogisprintedbeforea
//crash

//NoencryptedXIPenabled,wecanignorethebadstatus
status=kStatus_Success;
}
}
elseif(kStatus_ReadOnly==
status)//UsingthisstatusfromstandardstatustoindicatethatweneedtosplitPRDB
{
volatileuint32_tdelay=1000000;
//Setupcontextasneededforthisapplication
status=bl_nor_encrypt_split_prdb();

configPRINTF(("RestartingBOOTLOADER...
"));

while(delay--)
;

//Restart
DbgConsole_Deinit();
NVIC_DisableIRQ(LPUART6_IRQn);
NVIC_SystemReset();
}
}
elseif(SLN_AUTH_OK==status)
{
configPRINTF(("Ensuringcontext...
"));
//DEBUG_LOG_DELAY_MS(1000);//Optionaldelay,enablefordebuggingtoensurelogisprintedbeforeacrash

//WewillchecktoseeifweneedtoupdatethebackuptothereducedscopePRDB0forbootloaderspace
status=bl_nor_encrypt_ensure_context();

if(kStatus_Fail==status)
{
configPRINTF(("Failedtoloadcryptocontext...
"));
//DEBUG_LOG_DELAY_MS(1000);//Optionaldelay,enablefordebuggingtoensurelogisprintedbeforeacrash

//DoublecheckifencryptedXIPisenabled
if(!bl_nor_encrypt_is_enabled())
{
configPRINTF(("NotrunninginencryptedXIPmode,ignoreerror.
"));

//NoencryptedXIPenabled,wecanignorethebadstatus
status=kStatus_Success;
}
}
elseif(kStatus_Success==status)//WehavegoodPRDBssowecanupdatethebackup
{
boolisMatch=false;
boolisOriginal=false;

configPRINTF(("Checkingbackupcontext...
"));
//DEBUG_LOG_DELAY_MS(1000);//Optionaldelay,enablefordebuggingtoensurelogisprintedbeforeacrash

//CheckifwehaveidenticalKIBsandinitialCTR
status=bl_nor_crypto_ctx_compare_backup(&isMatch,&isOriginal,SLN_CRYPTO_CTX_0);

if(kStatus_Success==status)
{
if(isMatch&&isOriginal)
{
configPRINTF(("Updatingbackupcontextwithvalidaddressspace...
"));
//DEBUG_LOG_DELAY_MS(1000);//Optionaldelay,enablefordebuggingtoensurelogisprintedbefore
//acrash

//UpdatebackupPRDB0
status=SLN_AUTH_backup_context(SLN_CRYPTO_CTX_0);
}
}
}
}

但相較于直接永久禁止Debug port的簡(jiǎn)單粗暴, 小編更加推薦Secure Debug安全調(diào)試,因?yàn)?a target="_blank">產(chǎn)品的售后,維護(hù)往往不是一帆風(fēng)順的,產(chǎn)品在客戶(hù)現(xiàn)場(chǎng)有時(shí)也是狀況頻出,所以Secure Debug[1]就像給Debug port加了一把堅(jiān)固的鎖,只有能打開(kāi)這把鎖的人才能使用調(diào)試功能。

審核編輯:湯梓紅
聲明:本文內(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)投訴
  • Boot
    +關(guān)注

    關(guān)注

    0

    文章

    149

    瀏覽量

    35840
  • 泄漏
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    8473
  • mcuxpresso
    +關(guān)注

    關(guān)注

    1

    文章

    40

    瀏覽量

    4181

原文標(biāo)題:Encrypted Boot image泄漏討論

文章出處:【微信號(hào):MCU頻道,微信公眾號(hào):MCU頻道】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CMOS Image sensor的基礎(chǔ)知識(shí)

    攝像機(jī)用來(lái)成像的感光元件叫做Image Sensor或Imager。目前廣泛使用的2種Image Sensor是CCD和CMOS Image Sensor(CIS)。
    的頭像 發(fā)表于 01-15 11:07 ?5185次閱讀
    CMOS <b class='flag-5'>Image</b> sensor的基礎(chǔ)知識(shí)

    計(jì)算機(jī)信息泄漏

    。這說(shuō)明我國(guó)對(duì)信息安全越來(lái)越重視,通常人們討論的重點(diǎn)是網(wǎng)絡(luò)攻擊、安全漏洞和計(jì)算機(jī)病毒與此同時(shí)還要重視網(wǎng)絡(luò)終端設(shè)備在運(yùn)行過(guò)程中由于電磁輻射所造成的信息泄漏的問(wèn)題。目前利用計(jì)算機(jī)的電磁泄漏竊取信息是國(guó)內(nèi)外情報(bào)機(jī)關(guān)獲取信息的重要途徑。
    發(fā)表于 08-06 06:56

    執(zhí)行tools/mkimg.sh腳本后,image目錄下沒(méi)有ML0和u-boot.img文件是為什么?

    執(zhí)行 tools/mkimg.sh 腳本后,image目錄下沒(méi)有ML0和 u-boot.img 文件
    發(fā)表于 01-06 07:21

    OKMX6Q-C u-boot可以支持fastboot command直接單獨(dú)更新image

    OKMX6Q-C u-boot 可以支持fastboot command 直接單獨(dú)更新 image 嗎 (u-boot.bin )? 另外在u-boot 有沒(méi)有支持SATA comma
    發(fā)表于 01-11 06:36

    Android image燒錄失敗怎么解決?

    的ubootp.bin , boot.img , system.img 都成功userdata.img 也是FailLinux的image都可以順利寫(xiě)入,謝謝
    發(fā)表于 11-24 06:39

    pre_encrypted_ota示例在esp_encrypted_img_decrypt_end() 中失敗的原因?

    有沒(méi)有人得到examples/system/ota/pre_encrypted_ota/與ESP-IDF v5.0和esp_encrypted_img v2.0.2成功運(yùn)行?對(duì)我來(lái)說(shuō),它在
    發(fā)表于 03-02 09:03

    Application boot code image中Code_length的含義是什么?

    Application boot code image的地址是0x3200h。 所以,我們可以得到信息: RAM 起始指針:0x3408FE40hRAM入口指針:0x340A0000h代碼
    發(fā)表于 03-27 07:08

    Digital Image Processing (Hong

    Digital Image Processing:•What is an Image?Picture, photographVisual dataUsually two or three
    發(fā)表于 06-18 07:39 ?17次下載

    埋地管道泄漏監(jiān)測(cè)檢測(cè)技術(shù)

    埋地管道泄漏監(jiān)測(cè)檢測(cè)技術(shù) 綜述了埋地管道泄漏監(jiān)測(cè)與泄漏檢測(cè)的各種無(wú)損檢測(cè)技術(shù),并討論了各種方法的原理、適用范圍、優(yōu)點(diǎn)和缺點(diǎn)等。介紹的埋地管道
    發(fā)表于 03-31 10:11 ?22次下載

    Image Compression - Spelling O

    Image Compression - Spelling Out the Options
    發(fā)表于 10-02 09:16 ?25次下載
    <b class='flag-5'>Image</b> Compression - Spelling O

    U-Boot源代碼分析之Linux的引導(dǎo)

    映象文件必須滿(mǎn)足U-Boot的格式要求,才能被識(shí)別和引導(dǎo)。U-Boot中映象文件必須以一個(gè)固定格式的頭部開(kāi)始。這個(gè)頭部由structimage_header_t描述,image_header_t的定義在文件include/
    發(fā)表于 04-03 22:39 ?51次下載

    詳解U-Boot引導(dǎo)內(nèi)核分析

    bootm命令是用來(lái)引導(dǎo)經(jīng)過(guò)U-Boot的工具mkimage打包后的kernel image的。U-Boot源代碼的tools/目錄下有mkimage工具,這個(gè)工具可以用來(lái)制作不壓縮或者壓縮的多種可啟動(dòng)映象文件。
    的頭像 發(fā)表于 04-13 15:22 ?5264次閱讀
    詳解U-<b class='flag-5'>Boot</b>引導(dǎo)內(nèi)核分析

    詳細(xì)介紹u-boot FIT image

    Linux kernel在ARM架構(gòu)中引入device tree(全稱(chēng)是flattened device tree,后續(xù)將會(huì)以FDT代稱(chēng))的時(shí)候[1],其實(shí)懷揣了一個(gè)Unify Kernel的夢(mèng)想----同一個(gè)Image,可以支持多個(gè)不同的平臺(tái)。
    發(fā)表于 05-15 08:43 ?4052次閱讀
    詳細(xì)介紹u-<b class='flag-5'>boot</b> FIT <b class='flag-5'>image</b>

    Halcon教程:Image、Regiong、XLD基礎(chǔ)

    一 讀取的3種方式: read_image( image,'filename') ? ? ? //image 是輸出對(duì)象,后面是輸入文件的路徑和名稱(chēng) 讀取多圖:? 1,申明一個(gè)數(shù)組,分別保存路徑
    的頭像 發(fā)表于 01-07 11:52 ?5175次閱讀
    Halcon教程:<b class='flag-5'>Image</b>、Regiong、XLD基礎(chǔ)

    FIT Image起源及制作方法

    secure boot 和FIT Image是前段時(shí)間接觸到的,其實(shí)早就該總結(jié)下了,奈何懶癌犯了,拖了好久才寫(xiě)出來(lái)。
    的頭像 發(fā)表于 09-05 14:23 ?2115次閱讀