在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

聊聊一些常用的Bootloader安全機(jī)制的設(shè)計(jì)

lilihe92 ? 來(lái)源:最后一個(gè)bug ? 2023-06-11 09:51 ? 次閱讀

不管是玩單片機(jī)還是嵌入式linux,基本上都會(huì)接觸到bootloader,所以bootloader程序也是一個(gè)關(guān)鍵的組件,進(jìn)行硬件初始化,應(yīng)用程序的合法性、完成性檢測(cè)、升級(jí)功能等等都與其息息相關(guān)。

像一些在ram運(yùn)行的應(yīng)用程序,或者是一些運(yùn)行內(nèi)存比較小的MCU等等,它需要保證從外部存儲(chǔ)器中讀取的應(yīng)用程序是可信的,不能拿過(guò)來(lái)就執(zhí)行,那往往是不安全的,特別是為了防止惡意程序的注入和攻擊,在Bootloader程序中實(shí)現(xiàn)一定的安全機(jī)制就非常有必要了~

那么今天就大致聊聊,一些常用的Bootloader安全機(jī)制的設(shè)計(jì):

1

進(jìn)行image校驗(yàn)

image校驗(yàn)我們也常叫鏡像校驗(yàn),Bootloader程序可以對(duì)從外部存儲(chǔ)器中讀取的應(yīng)用程序鏡像進(jìn)行校驗(yàn),以確保其完整性和正確性,常見(jiàn)的鏡像校驗(yàn)方式包括CRC、哈希值等。

當(dāng)然你如果想簡(jiǎn)單一點(diǎn)使用求和檢驗(yàn)也是可行的,將應(yīng)用程序鏡像中每個(gè)字節(jié)的值相加,得到一個(gè)校驗(yàn)和。

Bootloader程序?qū)⒂?jì)算得到的校驗(yàn)和與預(yù)先存儲(chǔ)在應(yīng)用程序鏡像中的校驗(yàn)和進(jìn)行比較,如果兩者相等,說(shuō)明應(yīng)用程序鏡像沒(méi)有被篡改,校驗(yàn)和的優(yōu)點(diǎn)是計(jì)算簡(jiǎn)單,缺點(diǎn)當(dāng)然就是校驗(yàn)?zāi)芰τ邢蓿资芄簟?br />
而相比求和校驗(yàn),CRC等是一種更加可靠和安全的校驗(yàn)方式,它可以檢測(cè)出更多的錯(cuò)誤,并且不易受攻擊。

STM32中,CRC校驗(yàn)可以使用硬件或軟件實(shí)現(xiàn)

硬件CRC校驗(yàn)可以使用STM32的CRC模塊,直接對(duì)應(yīng)用程序鏡像進(jìn)行校驗(yàn),速度快、精度高。軟件CRC校驗(yàn)則需要Bootloader程序自行實(shí)現(xiàn)CRC算法,速度較慢,但也可以得到較好的校驗(yàn)效果。

如果校驗(yàn)通過(guò),則可以加載應(yīng)用程序鏡像;如果校驗(yàn)失敗,則應(yīng)該拒絕加載應(yīng)用程序鏡像,并給出相應(yīng)的提示。

鏡像校驗(yàn)是可以保證從外部存儲(chǔ)器中讀取的應(yīng)用程序是可信的,避免惡意程序的注入和攻擊。如果鏡像校驗(yàn)失敗,Bootloader程序可以拒絕加載應(yīng)用程序鏡像,避免惡意程序的注入。

2

簽名認(rèn)證

簽名認(rèn)證并不是一個(gè)加密和解密的過(guò)程,它是一種數(shù)字簽名技術(shù)。 數(shù)字簽名是一種用于確保電子文檔的完整性和認(rèn)證性的技術(shù),它使用密鑰對(duì)(公鑰和私鑰)來(lái)生成和驗(yàn)證簽名。

數(shù)字簽名的過(guò)程如下:

1、生成簽名:文檔的發(fā)送者使用私鑰對(duì)文檔進(jìn)行哈希運(yùn)算,然后使用私鑰對(duì)哈希值進(jìn)行加密,生成簽名。

2、驗(yàn)證簽名:文檔的接收者使用公鑰對(duì)簽名進(jìn)行解密,得到哈希值,然后對(duì)文檔進(jìn)行哈希運(yùn)算,得到另一個(gè)哈希值。接收者比較這兩個(gè)哈希值,如果相等,則說(shuō)明文檔沒(méi)有被篡改,并且簽名是可信的。

需要注意的是,數(shù)字簽名技術(shù)依賴于密鑰對(duì)的安全性,私鑰需要妥善保管,防止泄露和丟失,公鑰需要預(yù)置在Bootloader程序中,確保其可信和安全。

簽名認(rèn)證需要使用一組密鑰對(duì),包括私鑰和公鑰

開(kāi)發(fā)者使用私鑰對(duì)應(yīng)用程序進(jìn)行簽名,Bootloader程序使用公鑰進(jìn)行認(rèn)證。如果簽名認(rèn)證失敗,Bootloader程序可以拒絕加載應(yīng)用程序鏡像。

3

內(nèi)存保護(hù)

在STM32的Bootloader中,內(nèi)存保護(hù)是一種重要的安全機(jī)制,可以保護(hù)Bootloader程序和其他重要的代碼和數(shù)據(jù)不被應(yīng)用程序覆蓋、修改或篡改。

內(nèi)存保護(hù)通常使用硬件或軟件實(shí)現(xiàn)。在STM32中,硬件內(nèi)存保護(hù)可以使用CPU的內(nèi)存保護(hù)單元(MPU)實(shí)現(xiàn),軟件內(nèi)存保護(hù)可以使用內(nèi)存管理單元(MMU)或軟件實(shí)現(xiàn)的保護(hù)機(jī)制,具體使用哪種需要看資源情況。

硬件內(nèi)存保護(hù)

可以將MCU的內(nèi)存空間劃分為若干個(gè)區(qū)域,并為每個(gè)區(qū)域配置不同的訪問(wèn)權(quán)限。Bootloader程序可以將應(yīng)用程序加載到特定的區(qū)域中,防止應(yīng)用程序覆蓋或修改Bootloader程序和其他重要的代碼和數(shù)據(jù)。硬件內(nèi)存保護(hù)的優(yōu)點(diǎn)是速度快、可靠性高,缺點(diǎn)是配置復(fù)雜,需要占用一定的硬件資源。

軟件內(nèi)存保護(hù)

可以使用MMU或軟件實(shí)現(xiàn)的保護(hù)機(jī)制,但一般有MMU單元的都屬于微處理器了,而微控制器。MMU是一種硬件單元,用于將虛擬地址映射到物理地址,并可以配置不同的訪問(wèn)權(quán)限。

軟件實(shí)現(xiàn)的保護(hù)機(jī)制可以在Bootloader程序中實(shí)現(xiàn)一些保護(hù)代碼,用于檢測(cè)和防止應(yīng)用程序的篡改和攻擊。軟件內(nèi)存保護(hù)的優(yōu)點(diǎn)是靈活性高,缺點(diǎn)是速度較慢,可靠性較低。

內(nèi)存保護(hù)可以保護(hù)Bootloader程序和其他重要的代碼和數(shù)據(jù)不被應(yīng)用程序覆蓋、修改或篡改。在實(shí)現(xiàn)內(nèi)存保護(hù)時(shí),需要注意區(qū)域劃分、加載位置、訪問(wèn)權(quán)限、保護(hù)代碼等方面的問(wèn)題。

4

使用只讀存儲(chǔ)器

只讀存儲(chǔ)器(ROM)通常是一種非易失性存儲(chǔ)器,具有讀取快、安全可靠、不易受攻擊等優(yōu)點(diǎn)。

將Bootloader程序放在只讀存儲(chǔ)器中,可以保證Bootloader程序的完整性和安全性,防止惡意程序的注入和攻擊。只讀存儲(chǔ)器也可以是MCU的Flash、ROM等。

5

最后

值得注意的是,Bootloader程序的安全機(jī)制應(yīng)該根據(jù)實(shí)際的應(yīng)用場(chǎng)景和需求進(jìn)行設(shè)計(jì)和實(shí)現(xiàn)。

安全機(jī)制的增加會(huì)增加系統(tǒng)的復(fù)雜性和開(kāi)發(fā)成本,因此應(yīng)該在安全性和可用性之間進(jìn)行權(quán)衡。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6037

    文章

    44562

    瀏覽量

    635918
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7496

    瀏覽量

    163924
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3593

    瀏覽量

    129527
  • CRC校驗(yàn)
    +關(guān)注

    關(guān)注

    0

    文章

    84

    瀏覽量

    15212
  • MCU控制
    +關(guān)注

    關(guān)注

    0

    文章

    48

    瀏覽量

    6740

原文標(biāo)題:四種Bootloader程序安全機(jī)制設(shè)計(jì)

文章出處:【微信號(hào):最后一個(gè)bug,微信公眾號(hào):最后一個(gè)bug】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    常用一些芯片資料

    以下是一些常用的芯片資料,如lcd1602,ds12c887,開(kāi)發(fā)板proteus原理圖
    發(fā)表于 05-09 17:18

    關(guān)于ARM的一些常用代碼

    關(guān)于ARM的一些常用代碼
    發(fā)表于 04-25 22:19

    bootloader一些疑問(wèn)

    了?這個(gè)跳轉(zhuǎn)是水區(qū)引導(dǎo)的呢? 問(wèn)題有些多,但是都是原理性問(wèn)題,我也是做好了boot后產(chǎn)生的一些疑問(wèn),麻煩Andy和大家了!
    發(fā)表于 06-21 09:33

    聊聊數(shù)字電路芯片設(shè)計(jì)的一些事情

    說(shuō)說(shuō)芯片設(shè)計(jì)這點(diǎn)事 芯片設(shè)計(jì)這個(gè)行當(dāng) ,從大的方面講,主要分模擬和數(shù)字兩大塊, 而每大塊又分前端和后端, 我想大部分同學(xué)對(duì)這個(gè)肯定是非常清楚的, 下面就數(shù)字電路聊聊芯片設(shè)計(jì)的一些事情,就是芯片設(shè)計(jì)有
    發(fā)表于 11-10 06:04

    AVR和STM32的bootloader機(jī)制記錄和講解

    放在AVR和STM32的bootloader機(jī)制,做了一些閱讀、實(shí)驗(yàn)、編寫和移植的工作,最后才有了這篇文章,算是個(gè)階段成果匯報(bào)。這里先簡(jiǎn)單總結(jié)磨嘰
    發(fā)表于 12-09 07:37

    常用一些PID算法有哪些?

    PID的原理是什么?常用一些PID算法有哪些?
    發(fā)表于 01-21 06:48

    聊聊對(duì)單片機(jī)的內(nèi)部存儲(chǔ)器RAM和FLASH的一些認(rèn)識(shí)和理解

    單片機(jī)內(nèi)部個(gè)重要組成部分,存儲(chǔ)器占有很重要的地位,今天就來(lái)聊聊我對(duì)于單片機(jī)的內(nèi)部存儲(chǔ)器RAM和FLASH的一些認(rèn)識(shí)和理解。1、先聊聊存儲(chǔ)器 存儲(chǔ)器是單片機(jī)結(jié)構(gòu)的重要組成部分,存儲(chǔ)器是
    發(fā)表于 01-26 08:09

    PCB布板一些簡(jiǎn)易常用規(guī)則

    PCB布板一些簡(jiǎn)易常用規(guī)則   這幾天還是關(guān)注一些簡(jiǎn)單入門的東西吧,主要介紹一些PCB中一些建議規(guī)則1.我們要注意貼片器件(
    發(fā)表于 11-21 14:34 ?6633次閱讀

    Protel在線教程:SCH的一些高級(jí)設(shè)置和常用技巧

    Protel在線教程:SCH的一些高級(jí)設(shè)置和常用技巧 前面我們走馬觀花的對(duì)SCH做了一些操作,這回我們來(lái)看看SCH中的一些高級(jí)設(shè)置和操作技巧   1.看看如何對(duì)SCH的操作
    發(fā)表于 04-22 09:00 ?1473次閱讀
    Protel在線教程:SCH的<b class='flag-5'>一些</b>高級(jí)設(shè)置和<b class='flag-5'>常用</b>技巧

    關(guān)于PID一些常用知識(shí)

    本文檔詳細(xì)介紹分析了關(guān)于PID的一些常用知識(shí)
    發(fā)表于 08-29 14:22 ?2次下載

    SNMP常用一些OID詳細(xì)例表說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是SNMP常用一些OID詳細(xì)例表說(shuō)明。SNMP常用一些OID,比如CPU、內(nèi)存、硬盤什么的。要先了解這些,再使用SNMP監(jiān)控服務(wù)器。
    發(fā)表于 08-08 17:33 ?2次下載
    SNMP<b class='flag-5'>常用</b>的<b class='flag-5'>一些</b>OID詳細(xì)例表說(shuō)明

    RAM、ROM常用安全機(jī)制

    存儲(chǔ)器數(shù)據(jù)的穩(wěn)定可靠是MCU安全運(yùn)行的基礎(chǔ),但環(huán)境因素和存儲(chǔ)器本身的物理特性都可能造成存儲(chǔ)器數(shù)據(jù)異常,本文將詳細(xì)介紹RAM&ROM常用安全機(jī)制
    的頭像 發(fā)表于 06-13 14:48 ?4378次閱讀
    RAM、ROM<b class='flag-5'>常用</b><b class='flag-5'>安全</b><b class='flag-5'>機(jī)制</b>

    分享一些Linux服務(wù)器的安全小貼士

    今天浩道跟大家分享一些Linux服務(wù)器的安全小貼士,讓你維護(hù)linux服務(wù)器安全上有一些方向!
    發(fā)表于 01-29 11:27 ?319次閱讀

    常用Bootloader安全機(jī)制的設(shè)計(jì)

    image校驗(yàn)我們也常叫鏡像校驗(yàn),Bootloader程序可以對(duì)從外部存儲(chǔ)器中讀取的應(yīng)用程序鏡像進(jìn)行校驗(yàn),以確保其完整性和正確性,常見(jiàn)的鏡像校驗(yàn)方式包括CRC、哈希值等。
    發(fā)表于 08-28 09:17 ?416次閱讀

    gvim中常用一些指令介紹

    在 Vim 編輯器中,有一些常用的指令可以幫助我們更高效地編輯文本。以下是一些在 gvim 中常用的指令
    的頭像 發(fā)表于 10-10 15:47 ?2073次閱讀
    主站蜘蛛池模板: 国产资源站| 九九热国产在线| 国产一级特黄毛片| 国内精品一级毛片免费看| 狠狠色丁香久久婷婷综合丁香| 美女毛片免费| 韩国三级床戏合集| 国产乱理论片在线观看理论| 国产成人精品日本亚洲语言| www.色午夜.com| 亚洲天天看| 手机看片福利日韩国产| 欧美黑粗特黄午夜大片| 国产手机在线看片| 激情丁香六月| 美女三级黄| 午夜69成人做爰视频网站| 色的视频网站| 噜噜噜噜噜久久久久久91| 国产精品欧美一区二区三区不卡| 99成人国产精品视频| 天天操一操| 国产福利观看| ⅹxxxx68日本老师hd| 国产免费亚洲| 色综合天天综合网国产人| 免费看欧美一级特黄a大片| 丁香婷婷六月天| 天天操天天干视频| 1024国产手机视频基地| 免费精品99久久国产综合精品| 性欧美日韩| 明星三级国产免费播放| 99成人在线| 国产亚洲精品久久久久久久软件 | 日日噜噜爽爽狠狠视频| 麻豆国产三级在线观看| 在线最新版www资源网| 久久精品久久久| 性国产精品| 天天躁夜夜躁狠狠躁|