精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

聊聊一些常用的Bootloader安全機制的設計

lilihe92 ? 來源:最后一個bug ? 2023-06-11 09:51 ? 次閱讀

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

像一些在ram運行的應用程序,或者是一些運行內存比較小的MCU等等,它需要保證從外部存儲器中讀取的應用程序是可信的,不能拿過來就執行,那往往是不安全的,特別是為了防止惡意程序的注入和攻擊,在Bootloader程序中實現一定的安全機制就非常有必要了~

那么今天就大致聊聊,一些常用的Bootloader安全機制的設計:

1

進行image校驗

image校驗我們也常叫鏡像校驗,Bootloader程序可以對從外部存儲器中讀取的應用程序鏡像進行校驗,以確保其完整性和正確性,常見的鏡像校驗方式包括CRC、哈希值等。

當然你如果想簡單一點使用求和檢驗也是可行的,將應用程序鏡像中每個字節的值相加,得到一個校驗和。

Bootloader程序將計算得到的校驗和與預先存儲在應用程序鏡像中的校驗和進行比較,如果兩者相等,說明應用程序鏡像沒有被篡改,校驗和的優點是計算簡單,缺點當然就是校驗能力有限,更易受攻擊。

而相比求和校驗,CRC等是一種更加可靠和安全的校驗方式,它可以檢測出更多的錯誤,并且不易受攻擊。

STM32中,CRC校驗可以使用硬件或軟件實現

硬件CRC校驗可以使用STM32的CRC模塊,直接對應用程序鏡像進行校驗,速度快、精度高。軟件CRC校驗則需要Bootloader程序自行實現CRC算法,速度較慢,但也可以得到較好的校驗效果。

如果校驗通過,則可以加載應用程序鏡像;如果校驗失敗,則應該拒絕加載應用程序鏡像,并給出相應的提示。

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

2

簽名認證

簽名認證并不是一個加密和解密的過程,它是一種數字簽名技術。 數字簽名是一種用于確保電子文檔的完整性和認證性的技術,它使用密鑰對(公鑰和私鑰)來生成和驗證簽名。

數字簽名的過程如下:

1、生成簽名:文檔的發送者使用私鑰對文檔進行哈希運算,然后使用私鑰對哈希值進行加密,生成簽名。

2、驗證簽名:文檔的接收者使用公鑰對簽名進行解密,得到哈希值,然后對文檔進行哈希運算,得到另一個哈希值。接收者比較這兩個哈希值,如果相等,則說明文檔沒有被篡改,并且簽名是可信的。

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

簽名認證需要使用一組密鑰對,包括私鑰和公鑰

開發者使用私鑰對應用程序進行簽名,Bootloader程序使用公鑰進行認證。如果簽名認證失敗,Bootloader程序可以拒絕加載應用程序鏡像。

3

內存保護

在STM32的Bootloader中,內存保護是一種重要的安全機制,可以保護Bootloader程序和其他重要的代碼和數據不被應用程序覆蓋、修改或篡改。

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

硬件內存保護

可以將MCU的內存空間劃分為若干個區域,并為每個區域配置不同的訪問權限。Bootloader程序可以將應用程序加載到特定的區域中,防止應用程序覆蓋或修改Bootloader程序和其他重要的代碼和數據。硬件內存保護的優點是速度快、可靠性高,缺點是配置復雜,需要占用一定的硬件資源。

軟件內存保護

可以使用MMU或軟件實現的保護機制,但一般有MMU單元的都屬于微處理器了,而微控制器。MMU是一種硬件單元,用于將虛擬地址映射到物理地址,并可以配置不同的訪問權限。

軟件實現的保護機制可以在Bootloader程序中實現一些保護代碼,用于檢測和防止應用程序的篡改和攻擊。軟件內存保護的優點是靈活性高,缺點是速度較慢,可靠性較低。

內存保護可以保護Bootloader程序和其他重要的代碼和數據不被應用程序覆蓋、修改或篡改。在實現內存保護時,需要注意區域劃分、加載位置、訪問權限、保護代碼等方面的問題。

4

使用只讀存儲器

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

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

5

最后

值得注意的是,Bootloader程序的安全機制應該根據實際的應用場景和需求進行設計和實現。

安全機制的增加會增加系統的復雜性和開發成本,因此應該在安全性和可用性之間進行權衡。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6032

    文章

    44516

    瀏覽量

    633044
  • 存儲器
    +關注

    關注

    38

    文章

    7452

    瀏覽量

    163606
  • 嵌入式系統
    +關注

    關注

    41

    文章

    3567

    瀏覽量

    129232
  • CRC校驗
    +關注

    關注

    0

    文章

    84

    瀏覽量

    15188
  • MCU控制
    +關注

    關注

    0

    文章

    48

    瀏覽量

    6729

原文標題:四種Bootloader程序安全機制設計

文章出處:【微信號:最后一個bug,微信公眾號:最后一個bug】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    常用一些芯片資料

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

    關于ARM的一些常用代碼

    關于ARM的一些常用代碼
    發表于 04-25 22:19

    bootloader一些疑問

    了?這個跳轉是水區引導的呢? 問題有些多,但是都是原理性問題,我也是做好了boot后產生的一些疑問,麻煩Andy和大家了!
    發表于 06-21 09:33

    聊聊數字電路芯片設計的一些事情

    說說芯片設計這點事 芯片設計這個行當 ,從大的方面講,主要分模擬和數字兩大塊, 而每大塊又分前端和后端, 我想大部分同學對這個肯定是非常清楚的, 下面就數字電路聊聊芯片設計的一些事情,就是芯片設計有
    發表于 11-10 06:04

    AVR和STM32的bootloader機制記錄和講解

    放在AVR和STM32的bootloader機制,做了一些閱讀、實驗、編寫和移植的工作,最后才有了這篇文章,算是個階段成果匯報。這里先簡單總結磨嘰
    發表于 12-09 07:37

    常用一些PID算法有哪些?

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

    聊聊對單片機的內部存儲器RAM和FLASH的一些認識和理解

    單片機內部個重要組成部分,存儲器占有很重要的地位,今天就來聊聊我對于單片機的內部存儲器RAM和FLASH的一些認識和理解。1、先聊聊存儲器 存儲器是單片機結構的重要組成部分,存儲器是
    發表于 01-26 08:09

    PCB布板一些簡易常用規則

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

    Protel在線教程:SCH的一些高級設置和常用技巧

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

    關于PID一些常用知識

    本文檔詳細介紹分析了關于PID的一些常用知識
    發表于 08-29 14:22 ?2次下載

    SNMP常用一些OID詳細例表說明

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

    RAM、ROM常用安全機制

    存儲器數據的穩定可靠是MCU安全運行的基礎,但環境因素和存儲器本身的物理特性都可能造成存儲器數據異常,本文將詳細介紹RAM&ROM常用安全機制
    的頭像 發表于 06-13 14:48 ?4271次閱讀
    RAM、ROM<b class='flag-5'>常用</b><b class='flag-5'>安全</b><b class='flag-5'>機制</b>

    分享一些Linux服務器的安全小貼士

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

    常用Bootloader安全機制的設計

    image校驗我們也常叫鏡像校驗,Bootloader程序可以對從外部存儲器中讀取的應用程序鏡像進行校驗,以確保其完整性和正確性,常見的鏡像校驗方式包括CRC、哈希值等。
    發表于 08-28 09:17 ?370次閱讀

    gvim中常用一些指令介紹

    在 Vim 編輯器中,有一些常用的指令可以幫助我們更高效地編輯文本。以下是一些在 gvim 中常用的指令
    的頭像 發表于 10-10 15:47 ?1959次閱讀