TWI775346B - 防止回滾攻擊之系統及方法 - Google Patents
防止回滾攻擊之系統及方法 Download PDFInfo
- Publication number
- TWI775346B TWI775346B TW110108608A TW110108608A TWI775346B TW I775346 B TWI775346 B TW I775346B TW 110108608 A TW110108608 A TW 110108608A TW 110108608 A TW110108608 A TW 110108608A TW I775346 B TWI775346 B TW I775346B
- Authority
- TW
- Taiwan
- Prior art keywords
- volatile memory
- version
- otp
- code
- firmware
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 74
- 230000015654 memory Effects 0.000 claims abstract description 206
- 238000011084 recovery Methods 0.000 claims abstract description 60
- 238000012360 testing method Methods 0.000 claims description 20
- 230000000694 effects Effects 0.000 claims description 4
- 230000001568 sexual effect Effects 0.000 claims 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 10
- 229910052710 silicon Inorganic materials 0.000 description 10
- 239000010703 silicon Substances 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000002265 prevention Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 206010000210 abortion Diseases 0.000 description 1
- 239000012190 activator Substances 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/24—Resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
- Supply And Distribution Of Alternating Current (AREA)
Abstract
一個晶片系統,包括 ROM 程式碼,包含一啟動程式,於晶片通電時皆運作;及儲存版本識別碼之可程式化熔絲陣列記憶體,及儲存一個可開機韌體版本之複本之 NVM,其中第一識別碼被儲存,包含現用主要編號與次要編號,被一私有金鑰標記;其中第二識別碼被儲存,包含復原主要編號與次要編號,被該私有金鑰標記;以及硬體,遵守第一指令,由開機 ROM 程式碼提供,關閉該復原 NVM 之寫入功能直到下次系統重置 (啟動程式除外),並遵守第二指令,解除該復原 NVM 之寫入保護,其中與該二版本及該二識別碼關聯之韌體映像,被該私有金鑰標記,且該開機 ROM 程式碼認證韌體映像與該等識別碼。
Description
本揭露係關於半導體裝置,特別關於防止對半導體裝置之攻擊。
IBM 專利文件US20080175381A1描述儲存安全版本資料之熔絲(fuse)。該文件提供可利用於系統之方法與裝置,以動態地更新用於加密安全資料之安全版本參數。該IBM系統包括一裝置,用於加密即將儲存於該裝置外部之記憶體之資料區塊;該裝置包含第一持久儲存部件,用於儲存安全版本參數;第二持久儲存部件,用於儲存主要金鑰資料;加密引擎,被設定用於加密即將儲存於外部記憶體之安全資料區塊;其中,以下至少之一:受加密之安全區塊,或為此產生之完整性檢查值,受安全版本參數之影響;以及用於修改第一持久儲存部件,以在不修改先前已修改之第一持久儲存部件之情形下,更新安全版本參數之機制。
以單個一次性可程式化記憶體(OTP)設定之分組韌體版本描述於:
https://developer.trustedfirmware.org/w/tf_m/design/secure_storage_service/rollback_protection/
上述公開文件描述一進階精簡指令集機器(ARM)平台之安全架構,提供防止回滾(roll-back)之準則,以及使回滾可靠之範例。其中,該公開文件陳述「一個合適的實施可能每個軟體實例採用一個計數,或將一個列表的版本編號聚集於一個資料庫檔案,該資料庫檔案本身之版本採用單一計數。」
以下連結:https://www.mylgphones.com/how-to-identify-qfuse-anti- rollback-version-of-lg-kdz-firmware.html
陳述:「您的手機當前軟體版本為ZVA,Qfuse版本為ARB01。您想由ZVA降級至ZV6,然而ZV6之韌體含有ARB00版本之Qfuse」。該公開文件亦主張:「請勿對防回滾(Qfuse)版本低於您的手機當前Qfuse版本之KDZ或TOT韌體進行刷機。」
該技術系統之其他敘述,見於以下文件:
US20140250290A1/en
WO2014131652A1/en
US20170308705A1/en
https://www.intel.com/content/dam/www/public/us/en/documents/guides/bootloader-security-features-programmers-guide.pdf
一種實施非揮發性、不可重置,用於嵌入式系統之計數器之方法描述於下列線上公開文件:
https://www.maximintegrated.com/en/design/technical-documents/app- notes/5/5042.html.
所有於本說明書內提及之公開文件與專利文件所揭露之內容,與其中直接或間接引用之公開文件與專利文件,除標的否認或放棄外,特此併入參照文件。若併入之內容與明確揭露於此之內容不一致,則其解釋為明確揭露於此之內容描述某些實施例,而併入之內容描述其他實施例。併入內容中之定義可視為待討論之詞彙之一種可能定義。
某些實施例試圖提供一種用於矽裝置韌體防止回滾攻擊之安全系統與方法。
某些實施例試圖提供一種延長矽裝置壽命之系統與方法。
某些實施例試圖為OTP提供一種安全之防回滾方法與系統。
某些實施例試圖提供一種延長壽命之特徵,例如在OTP中,一般包括儲存OTP版本位元之版本編號解碼協定於該OTP,相對於傳統版本編號解碼方案。
某些實施例試圖於寫入保護之非揮發性記憶體(NVM)中提供韌體之額外複本。
某些實施例試圖提供版本控制,使用外部記憶體上版本資料之兩個複本。
根據某些實施例,提供一種安全之防回滾系統,該系統使用資料之多個複本,至少在至少兩個中每一個外部NVM裝置上,以及在OTP 上。
一般而言,有一個OTP與一個外部NVM(例如快閃記憶體)。一個NVM中之一個韌體複本開放讀/寫、故可更新,而第二個NVM(而非該OTP) 中之另一個韌體複本不開放任何讀/寫。「外部」一詞一般包括位於含有OTP裝置之矽裝置外部之NVM裝置。該二「外部快閃記憶體」可能位於同一電路板/電路上,但毋須整合於矽裝置內。
單一裝置可能選擇性地被使用,該裝置之一部份為寫入保護。
某些實施例試圖為記憶體,例如OTP,藉由保證防止回滾而提供加強之安全性,該防止回滾包含儲存密碼之版本號碼之雙份複本於外部非揮發性記憶體內。
某些實施例試圖提供安全之版本控制,即使OTP空間有限。
某些實施例試圖提供安全之階層式版本控制,使用OTP與兩個儲存於快閃記憶體之版本複本。於階層式版本控制中,有多於一個版本種類,包含擁有不同安全等級之主要與次要版本編號。該主要版本可儲存於OTP中,並可被複製於快閃記憶體中,而該次要版本僅在快閃記憶體中。該OTP版本不可被降級,該快閃記憶體版本則可。例如3.3可改變為3.2,但不可改變為2.4。
某些實施例使用兩個外部記憶體裝置中版本欄位之已標記複本,該等版本欄位可能與OTP版本欄位合併。該二外部裝置中之複本版本編號,至少其一不可被主處理器存取,防止軟體於開機時藉由持有在第二個序列周邊介面(SPI)中,僅能由特定應用積體電路(ASIC)之唯讀記憶體程式碼(ROM code) 存取之該版本編號之一複本,攻擊單一序列周邊介面。
下列詞彙可解釋為與任何現有技術文獻中出現之定義一致、與本說明書所載一致、或包括其個別之範圍,如下:
韌體(Firmware, FW)映像(image):密碼鍵(例如RSA或ECC)標記之可開機韌體。
「映像」一詞意圖包含一種韌體程式碼狀態,該狀態與一已知版本編號關聯。在一次升級中,一個與版本編號 n 關聯之已知「映像」可被一個稍後安裝、與稍後版本(例如版本 n + 1)關聯之「映像」取代。一次升級可包含安裝較當前安裝版本稍後之韌體映像之動作。
開機(Boot up):由晶片通電(或重置)之時刻起,至開機ROM程式碼准許韌體執行為止。
韌體版本(FWV):一個識別碼,一般為一個遞增計數,被特別指定給一個特定韌體版本,例如1.0或53.37,一般包含一個「主要編號」與一個「次要編號」,標記法上可用一點(.)區隔兩者。
現用非揮發性記憶體(active NVM):開機韌體映像之主要儲存處,此記憶體於開機後可讀、可寫。
復原非揮發性記憶體(recovery NVM):用於保護韌體防止回滾攻擊之記憶體。此記憶體於開機後不可讀、不可寫。
主要編號(Major number):韌體版本(又稱主要更新),某些實施例試圖提供回滾防護之對象。一般而言,每一NVM皆儲存此編號(「復原主要編號」)。
次要編號(Minor number):次要編號可用於表示安全敏感性較低之韌體更新,提供其較弱之回滾防護即已足夠,例如未記錄於OTP編號(「次要更新」)。每一NVM可能儲存此編號(「復原次要編號」)。
熔絲位元陣列(Fuse Bit Array):一個OTP位元陣列,每一位元對應單一主要編號。
一次性可程式化記憶體編號(OTP number,即OTP編號):被程式化之最高位熔絲陣列位元,對應最高主要編號。
熔絲陣列(Fuse Array):OTP內之一區域,被保留供儲存最新主要編號使用。
韌體升級版本控制(Firmware upgrade versioning):包含指定特定版本名稱或特定版本編號予被升級之韌體之個別特定狀態。使用編號時,該版本編號一般包含一主要編號與一次要編號。主要編號與次要編號一般以遞增順序被指定,使較晚版本擁有比較早版本大之主要編號及/或次要編號。
非揮發性記憶體(Non-Volatile Memory,NVM):一旦被程式化後,即使失去電力亦維持其值之記憶體。
一次性可程式化記憶體(One-Time Programmable memory,OTP):一種NVM,僅允許資料被寫入一次。由於資料僅能被寫入一次,一個OTP裝置無法被惡意軟體更新侵入。
快閃記憶體(Flash memory):一種可抹除之非揮發性儲存裝置或記憶體(又稱 NVM)。一般而言,快閃記憶體用於儲存用於微處理器之程式。由於快閃記憶體可抹除,一個已程式化之應用程式可被移除與取代、或更新。這意味著裝置可被重新程式化而不必被更換,可降低開發成本。快閃記憶體亦支援欄位內軟體更新。
序列周邊介面(Serial Peripheral Interface, SPI):一個介面之非限制性範例,用於連接慢速或序列之周邊設備,簡單、因而低成本,因其擁有晶片選擇線路,而非尋址方案。SPI是一種序列通信協定,可與各種裝置通訊,其中包含序列快閃裝置。SPI介面可快於廉價之嵌入式控制器替代品(例如 133MHz)。部分SPI介面支援2位元及/或4位元資料匯流排,該匯流排可產生高於僅用序列介面達成之傳輸速率。
SPI快閃記憶體(SPI Flash):具成本效益之建立晶片外NVM之方式,包括一個被連接以覆蓋SPI之快閃模組。SPI快閃記憶體十分優越,因其成本低廉、佔用空間小。例如一個32 MB之晶片可能僅需花費數美金。
外部(external):於電路板上可被實體更換。
晶片選擇(Chip select, CS),又稱從屬選擇(Slave select, SS):數位電子裝置中之一控制線路,由連接至單一電腦匯流排之一組積體電路(又稱晶片)中選擇一個子集合(一個或更多)。該序列周邊介面匯流排(又稱SPI匯流排)為使用晶片/從機選擇線路之匯流排一例。
以上所述提供一種電腦化系統,該系統被保護不受回滾攻擊,而該等攻擊可能在該系統之韌體被改變時發生,從而定義該韌體之版本。該系統包含下述之全部或任何子集合:
i. 一個晶片,包含:
a. ROM程式碼,一般包含一個可能整合於矽晶片之啟動程式(bootloader,又稱開機唯讀記憶體程式碼[boot ROM code]),其中該開機ROM程式碼當晶片通電或重置時皆運作;及/或
b. 可程式化熔絲陣列記憶體(例如一次性可程式化[OTP]記憶體),於該記憶體中儲存版本識別碼(例如版本編號);
ii. 第一(又稱現用)及/或第二(又稱復原)非揮發性記憶體(又稱NVM),於該等記憶體中之可開機韌體(又稱開機時載入之韌體)版本之第一及/或第二複本可個別被儲存;
其中,第一識別碼一般儲存於該現用NVM中,該識別碼於儲存時可識別特定版本,該識別碼之第一複本可儲存於該現用NVM中,該第一識別碼一般包含至少一個現用主要編號及/或一個現用次要編號,兩者一般皆被標記一私有金鑰;
其中,第二識別碼儲存於例如該復原NVM中,該識別碼於儲存時可識別特定版本,該識別碼之第二複本一般儲存於該復原NVM中,該第二識別碼一般包含至少一個復原主要編號及/或一個復原次要編號,兩者皆可被標記該私有金鑰;以及
iii. 一個硬體裝置,該裝置一般遵守第一指令,該第一指令可由開機ROM程式碼於開機後(又稱啟動程式完成時)提供,以上鎖(又稱至少關閉寫入、提供防寫保護),直到例如下次系統重置,至少該復原NVM(亦可能有該OTP)包含確保至少該復原NVM(亦可能有該OTP)為不可寫入(又稱不可寫入存取),一般而言啟動程式除外,及/或遵守第二指令,該第二指令由開機ROM程式碼提供,一般發生於下次系統重置時,以解除至少該復原NVM(亦可能有該OTP)之寫入保護,從而提供一個一般而言,例如當較新版本韌體已生效後,可防止較舊版本韌體被啟動之系統。
一般而言,與該二版本及/或該二識別碼關聯之韌體映像,被標記一私有金鑰。
一般而言,該開機ROM程式碼被設定以認證至少一韌體映像及/或認證該第一識別碼與第二識別碼之一或兩者。
以上提及之各實施例,以及其他實施例,將於下節中詳述。
任何出現於本說明書文字或圖式之商標,為其所有者之財產,該等商標於本說明書之出現,僅為說明或圖示本發明之實施例實施方式之範例。
除非另有說明,否則於下文討論中顯而易見地,在整個說明書討論中應注意,使用「處理 (processing)」、「運算 (computing)」、「估算 (estimating)」、「選擇 (selecting)」、「排行 (ranking)」、「分級 (grading)」、「計算 (calculating)」、「決定 (determining)」、「產生 (generating)」、「重估 (reassessing)」、「分類 (classifying)」、「生產 (producing)」、「立體匹配 (stereo-matching)」、「登錄 (registering)」、「檢測 (detecting)」、「關聯 (associating)」、「疊加 (superimposing)」、「取得 (obtaining)」或相似之詞彙,皆指至少一電腦或運算系統或處理器或相似之電子運算裝置之動作及/或處理程序,將於該運算系統之暫存器及/或記憶體內以物理 (例如電子) 量表示之資料,操作及/或轉換為其他該運算系統之記憶體、暫存器或其他此等資訊儲存、傳輸或顯示裝置內相似地以物理量表示之資料。「電腦 (computer)」一詞應被廣泛地解釋為涵蓋任何一種含有資料處理能力之電子裝置,包含但不限於個人電腦、伺服器、嵌入式核心、運算系統、通訊裝置、處理器 (例如數位信號處理器[DSP]、微控制器、現場可程式化邏輯閘陣列 [FPGA]、特定應用積體電路[ASIC]等)及其他電子運算裝置。
於此處分別列出之元件毋須為不同之部件,可能為相同之結構。一個元件或特徵可能存在之陳述,乃意圖包含:
(a) 實施例,該等實施例內該元件或特徵存在;
(b) 實施例,該等實施例內該元件或特徵不存在;以及
(c) 實施例,該等實施例內該元件或特徵可選擇地存在,例如使用者可設定或選擇該元件或特徵是否存在。
包含可抹除程式化唯讀記憶體模擬模式 (EPROM-emulation mode) 之電子式可抹除程式化唯讀記憶體 (EEPROM) 對實施非揮發性、不可重置之計數器十分有用。該記憶體晶片之序號可用於檢測竄改事件;於竄改事件中,記憶體晶片被另一擁有較低計數值之記憶體晶片取代。第 1 圖為一已知演算法之範例 (例如請參閱https://www.maximintegrated.com/en/design/technical-documents/app-notes/5/5042.html),該演算法於一32位元組記憶體分頁內遞增該計數。
一種常見用於損害程式碼之攻擊方法,乃利用已知之程式碼脆弱性與弱點。為防止此種攻擊,程式碼供應者定期維護其程式碼,該等維護一般包含將易受某種攻擊、目前儲存於已知或甫尋得之矽裝置之舊版本程式碼,以不易受該等攻擊之新版本程式碼取代。
然而,若攻擊者成功將已維護、不易受攻擊之新版本程式碼,以易受攻擊之舊版本程式碼取代(又稱「回滾」[rollback]),則該攻擊者將可利用該舊程式碼之已知弱點。為防止此攻擊路徑,一個程式碼版本可能被儲存(例如儲存於一 OTP 記憶體上之矽裝置),以使確保該程式碼版本為最新、而非較舊而易受攻擊之程式碼版本成為可能。該OTP(一次性可程式化) 記憶體無法被抹除,故該OTP內之版本無法被回滾。然而由於用於儲存程式碼版本編號之OTP空間有限,故此法限制了一給定系統可接收之程式碼更新或版本之數量。
某些實施例藉由使用兩個外部記憶體裝置(SPI 快閃記憶體)中版本欄位之已標記複本解決上述問題,該等版本欄位可能與OTP版本欄位合併。因此,本發明之一實施例僅使用兩個外部已標記複本,另一實施例則使用與OTP版本欄位合併之該二外部複本。根據前者之實施例(僅使用兩個快閃記憶體),一般而言,兩個快閃記憶體初始包含版本1 (1,1)。接著該現用快閃記憶體版本編號更新至 2,當現用快閃記憶體更新時,該復原快閃記憶體為寫入保護,(2,1)。於下一次重置時,該現用快閃記憶體內容之有效性與可靠性被測試。若該現用快閃記憶體版本被認定為有效,則該(現在可存取該復原快閃記憶體之)安全程式碼複製該現用快閃記憶體內容至該復原快閃記憶體,包含該版本編號(2,2)。接著於准許較不安全之程式碼執行前,該復原快閃記憶體變為寫入保護。
根據後者之實施例 (使用兩個快閃記憶體與一個OTP),快閃記憶體 1, 2 分別皆包含主要與次要版本,而OTP僅包含主要版本1 (1.2, 1.2, 1)。該現用快閃記憶體版本編號更新至2.0,當現用快閃記憶體更新時,該復原快閃記憶體仍為寫入保護,(2.0, 1.2, 1)。於下一次重置時,該現用快閃記憶體內容之有效性與可靠性被測試。若該現用快閃記憶體版本被認定為有效(依照上述步驟),則該(現在可存取該復原快閃記憶體與該OTP 之) 安全程式碼複製該現用快閃記憶體內容至該復原快閃記憶體,包含該版本編號(2.0, 2.0, 1)。此外,該OTP版本亦更新至該主要版本(2.0, 2.0, 2)。接著於准許較不安全之程式碼執行前,該復原快閃記憶體變為寫入保護,該OTP上鎖。
如第 2 圖所示,某些實施例將儲存於外部記憶體之程式碼版本欄位,與儲存於內部OTP空間之版本資料合併。該版本欄位可能被儲存為兩個複本,其一(快閃記憶體 #0 版本)位於外部記憶體 #0,另一(快閃記憶體 #1 版本)位於外部記憶體 #1。
該外部記憶體可能包含SPI快閃記憶體。韌體更新於運行(runtime)外部記憶體(第 2 圖之快閃記憶體 #0)上被實行。
該版本欄位可能藉由兩個編號或數量被實施,該等編號或數量於快閃記憶體:OTP版本(OTP_VER)與快閃記憶體版本(FLASH_VER)中被程式化。
該OTP被預期為該復原/現用快閃記憶體主要版本之鏡像 (mirror);若否,則可假定有一次回滾攻擊被嘗試。
應注意,一般而言,該二編號總是相同,更新過程中除外,於更新時該現用與復原/OTP版本編號不同。
該復原快閃記憶體一般用於發生回滾攻擊或嘗試更新失敗時,復原運行(現用)快閃記憶體內容。
該現用(或運行)快閃記憶體,一般與該復原快閃記憶體物理結構相同,可能用於多種用途,包含例如儲存韌體或任何欲儲存之資料。該版本編號通常於韌體映像中擁有一固定地點。該復原快閃記憶體可能保存於前次更新時,儲存於現用快閃記憶體之任何內容之備份。若有需要,該復原快閃記憶體可被設定為某些形式,以保存其他種類之常數資料;該快閃記憶體為寫入保護。
在任何一次韌體更新中,一般而言,該OTP版本編號或該快閃記憶體版本(FLASH_VER)之一將會遞增。任何前進之版本編號皆可被使用。一個範例更新程序於此描述。
於第 2 圖中,該OTP版本(OTP VER)一般包含該OTP專用版本欄位中,被程式化為值 1 之最高位元。於該快閃記憶體中,該程式碼(韌體)加上版本編號一般被一同標記,例如為了使二者不可分離。
儲存該程式碼版本編號之該版本欄位,一般由例如該韌體之公開金鑰認證。當該程式碼版本編號之OTP或快閃記憶體版本之一遞增時,該韌體程式碼之新版本一般首先更新於快閃記憶體 #0。
任何合適之方法皆可能被採用,以決定快閃記憶體 #0 內之版本是否可靠地運作。例如,於更新程序中,該新韌體可能於該裝置內被載入,且該裝置運作各種測試(例如通訊、顯示)以確保該裝置於任何系統故障發生時可復原。
一般而言,當快閃記憶體 #0 中之版本可靠地運作時,該韌體更新將繼續,例如以下列方式:
• 若該遞增之版本編號為該OTP版本(OTP_VER),則於該OTP空間內之版本亦同樣遞增,且於快閃記憶體 #1 內之版本亦相應地更新。
• 若該遞增之版本編號為該快閃記憶體版本(FLASH_VER),則僅有快閃記憶體 #1 中之FLASH_VER 被更新,而該OTP之版本不更新。
確保此韌體更新之邏輯運算,可能儲存於任何合適之位置,例如於安全程式碼中 (例如 ROM 程式碼),以及整個開機層級中。一般而言,於使用者處理程序中,該 ROM 程式碼位於最高安全等級,而可靠性測試位於最低安全等級。
當一新產品版本發佈時,例如對一不採用於此描述之機制與方法之標準OTP版本之實施,該OTP韌體版本欄位(例如第 2 圖中之OTP版本) 可能已於該OTP記憶體中使用大量位元,因而將後續OTP版本可更新之數量限制至OTP版本記憶體剩餘之位元數。例如,若僅剩三個OTP位元,則僅能再更新三次。
為了於新產品繞過此問題,該發佈之(第一)版本編號可被寫入於該OTP中之一不同欄位(first_ver_num)。確保此編號被寫入於一「不同」欄位之邏輯運算,可能例如於更新程序中存在於該ROM 程式碼內,或可能於外部被程式化於快閃記憶體裝置中。
例如,一個 8 位元欄位可表現任何由 0 至 255 之版本編號。應注意,以十六進位表示之 8 位元除外,任何不同方法皆可用於表現當前韌體版本。例如OTP中可能有一區域,該區域中每一已燒錄之位元代表一次 16 個正常版本編號之跳躍,而非第一版本編號。
例如,在一個較舊裝置中,其OTP版本記憶體可能表示版本33 (此時,該OTP中33個版本位元已被使用)。然而,在一個新產品中,其FIRST_VER_NUM 欄位可能為33,而其OTP_VER 欄位則尚無位元被使用。
在一次韌體更新中,該等新產品與舊產品可能皆燒錄OTP中之一位元,該等燒錄動作由開機時存在於例如ROM/安全程式碼內之邏輯運算主導。
應注意,一般而言,一個較舊裝置可能已有許多來自較舊韌體版本之已使用OTP位元。較新裝置並未使用該等韌體版本,故並未燒錄該等OTP 位元。由於該新產品中提供、而舊產品未提供之該OTP_VER欄位尚未有位元被使用,該新產品可比該舊產品承受更多次韌體更新,相較於該舊產品,可有效延長該新產品之壽命。
應注意,對於舊裝置而言,若所有OTP版本位元皆已被燒錄,則該快閃記憶體可取而代之地用來表示該OTP版本。該取代可能損害回滾攻擊之防護能力。於該快閃記憶體中,該OTP之版本編號可被擴充。
應注意,於快閃記憶體 #1 與OTP中之任何版本更新,乃由一安全程式碼實行,該程式碼可能存在並運作於一層級 0 (ROM 程式碼後第一層)之韌體中,或可能運作於一分離保護之處理器中,或由任何其他安全之硬體運作。
某些實施例試圖提供一安全之版本控制系統,該系統可防止儲存於非揮發性儲存裝置(例如但不限於磁碟機、SPI 快閃記憶體或任何其他非揮發性記憶體)之嵌入式韌體之回滾攻擊。於此描述之該等系統,藉由防止該系統於較新韌體版本已更新並生效後啟動較舊韌體版本,可有效防止回滾攻擊。此系統可促進韌體之安全更新,例如於舊韌體版本之弱點被發現之處。一般而言,於每一開機流程中,在啟用裝置內之程式碼前,安全程式碼會比較該OTP與快閃記憶體版本編號是否一致。若該比較之結果為不一致,則開機失敗並中止。例如,第 3 圖為一簡化之方塊圖,圖示一回滾防護系統 (rollback prevention system, RPS),包含下列部件之全部或任何子集合:
a. 一個包含啟動程式ROM程式碼之嵌入式晶片,該程式碼於晶片通電時皆運作;
b. 兩個非揮發性記憶體(NVM)裝置,用以保存開機時運作之韌體;
c. 一次性可程式化 (OTP) 或「熔絲」(fuse) 記憶體,該記憶體整合於晶片中,用以儲存版本編號;
d. 一硬體裝置或方法,用以關閉該等NVM之一之讀取與寫入功能。
[實施例包含但不限於下列敘述:]
實施例 1:一種電腦化系統,該系統被保護不受回滾攻擊,而該等攻擊可能在該系統之韌體被改變時發生,從而定義該韌體之版本。該系統包含下述之全部或任何子集合:
i. 一個晶片,包含:
a. ROM程式碼,包含一個整合於矽晶片之啟動程式(bootloader,又稱開機唯讀記憶體程式碼 [boot ROM code]),其中該開機ROM程式碼當晶片通電時皆運作;以及
b. 可程式化熔絲陣列記憶體 (例如一次性可程式化 [OTP] 記憶體),於該記憶體中儲存版本識別碼 (例如版本編號);
ii. 第一(又稱現用)及第二(又稱復原)非揮發性記憶體(又稱NVM),分別儲存可開機韌體(又稱開機時載入之韌體)版本之第一複本與第二複本;
其中,第一識別碼儲存於該現用NVM中,該識別碼於儲存時可識別特定版本,該識別碼之第一複本儲存於該現用NVM中,該第一識別碼包含至少一個現用主要編號與一個現用次要編號,兩者皆被標記一私有金鑰;
其中,第二識別碼儲存於該復原NVM中,該識別碼於儲存時可識別特定版本,該識別碼之第二複本儲存於該復原NVM中,該第二識別碼包含至少一個復原主要編號與一個復原次要編號,兩者皆被標記該私有金鑰;以及
iii. 一個硬體裝置,該裝置遵守第一指令,該第一指令由開機ROM程式碼於開機後(又稱啟動程式完成時)提供,以上鎖(又稱至少關閉寫入、提供防寫保護),直到下次系統重置,至少該復原 NVM (亦可能有該 OTP) 包含確保至少該復原 NVM (亦可能有該 OTP) 為不可寫入 (又稱不可寫入存取),一般而言啟動程式除外,以及遵守第二指令,該第二指令由開機 ROM 程式碼提供,發生於下次系統重置時,以解除至少該復原 NVM (亦可能有該 OTP) 之寫入保護,從而提供一個當較新版本韌體已生效後,可防止較舊版本韌體被啟動之系統。
其中,韌體映像可能與該二版本關聯;且
其中,該二識別碼可能被標記私有金鑰;且
其中,該開機 ROM 程式碼可能被設定以認證至少一韌體映像及/或認證該第一及/或第二識別碼。
該開機ROM程式碼可能認證主要與次要編號,例如於該復原NVM與該現用NVM中。
應注意,該韌體程式碼本身於開機前一般僅存在於該NVM中,而開機後該程式碼一般亦儲存於該裝置之隨機存取記憶體(RAM)中。
根據某些實施例,於開機階段無外部程式碼可執行,且於開機階段結束、任何外部程式碼可運行前,寫入保護回復運作,從而有效防止回滾攻擊。
該韌體映像可能儲存於該快閃記憶體中。
每一韌體版本編號一般與一特定韌體映像關聯,並與該韌體映像一同被標記。
一般而言,該二NVM中之韌體映像為相同。然而,於開機時,該 ROM 程式碼可能被設定為僅在該現用映像中之次要版本編號高於或等於該復原映像中之次要版本編號時,方准許開機,及/或該ROM程式碼可能被設定為僅在該現用映像中之主要版本編號高於或等於該OTP中之版本編號時,方准許開機。
於此使用之「重置」(reset) 一詞,乃包括數個事件,該晶片於該等事件後、或由於該等事件,而重新通電。
一般而言,該私有金鑰之持有者為該系統之製造商,且由於僅有獲准可標記韌體映像之個體可存取該金鑰(因此僅有該獲准之個體可使用該金鑰標記該韌體映像),故該私有金鑰為保密。
一般而言,該公開金鑰儲存於矽裝置內部寫入保護之記憶體中(例如上述之ROM程式碼,或寫入保護之OTP,或寫入保護之嵌入式快閃記憶體)。
一般而言,該公開金鑰必須不可被未經許可之程式碼更改,以防止任何被更改之公開/私有金鑰配對之使用。該ROM程式碼可能驗證一標頭,該標頭包含一個第二金鑰,該第二金鑰可用以認證該韌體本身;由於第二金鑰生效,故此亦為有效。
實施例 2:一種保護系統不受回滾攻擊之方法,該等攻擊可能在該系統之韌體被改變時發生,從而定義該韌體之版本。該方法包括:
i. 提供一系統,包含實施例 1 中元件之全部或任何子集合;
ii. 儲存第一版本可開機韌體(又稱第一韌體映像) 複本,於該現用與復原NVM中;
儲存至少該第一版本之一主要編號之第一複本與第二複本,分別於該等第一NVM 裝置與第二NVM 裝置中;以及
程式化該 OTP 記憶體中之至少一位元,以吻合(又稱匹配)該主要編號;
iii. 進行至少一次韌體次要更新,包含將儲存於該現用NVM之可開機韌體版本,以該可開機韌體之一個新「次要」版本取代,以及將儲存於該現用NVM之識別碼,以一個包含較高次要編號之新識別碼取代;以及
iv. 於至少一次必然導致一次開機之重置中;
a. 命令該啟動程式:
決定至少該現用NVM之內容是否為有效,該現用NVM中之識別碼是否大於該OTP編號;以及
中止開機,若該現用 NVM 中之主要編號低於該OTP編號,以及
b. 僅在該現用NVM中之識別碼 (又稱現用次要識別碼) 大於該復原NVM中之識別碼(又稱復原次要識別碼)時,進行操作b1, b2,分別包括:
操作b1:該可開機韌體之新版本,覆蓋取代當前儲存於該復原NVM中之可開機韌體版本;以及
操作b2:該復原NVM中之識別碼被更新,以吻合該現用NVM中識別碼之值。
一般而言,韌體與版本編號必須一同被標記,使該版本編號與該實質可開機韌體連結。若攻擊者試圖置換韌體內容而不改變版本編號,或反之,則標記認證將失敗。因此該標記賦予該版本編號於安全性上之意義。
於該復原NVM中,該標記被使用,作為自動復原事件中 (例如於此描述之自動復原事件) 一個該現用NVM之相同副本。
一般而言,該等OTP位元被程式化,以匹配亦儲存於該二NVM中之該版本主要編號。
應注意,該復原NVM於開機後為使用者不可存取(寫入鎖定)。僅有該啟動程式可寫入該復原NVM。
應注意,OTP 中之各位元被程式化為二進位之 1,否則即為二進位之 0。於 OTP 中之熔絲陣列中,一陣列 (例如包含位元 0-64) 中之一個位元之序號 (index) 對應一個OTP 編號。例如:若該陣列之程式位元 17 為程式化為 1 之最高位元,則此狀況被解讀為 OTP 編號 17。若位於序號 19 之位元接著被程式化為 1,則該動作將改變OTP編號至19。上述動作於上升之OTP序號尚未耗盡時皆可進行,因此例如若該陣列為64 位元,則最高可儲存之OTP編號為64。
實施例 3:根據實施例 1、或根據任何前述之實施例之系統,其中該 OTP 記憶體包含多個熔絲,該等熔絲之狀態表示版本編號。
實施例 4:根據實施例 1 、或根據任何前述之實施例之系統,其中該 OTP 中之多個位元 (又稱 OTP 位元) 被用於表示一編號;
OTP 編號 = 起始編號 + 計數;
該等多個位元包含一個 n 位元之陣列,從而定義 n 個位元序號,分別與該 n 個位元關聯,該 n 個位元包含一個由值為「0」之位元所構成之 (「第一」) 子集合,以及一個由值被熔為「1」之位元所構成之 (「第二」) 子集合,其中該計數被決定為數個位元序號中之最高序號,該等位元序號與被熔為 1 之 n 個位元所構成之 (「第二」) 子集合關聯。
該已編碼之起始編號一般存在於一受保護之非揮發性內部記憶體中,例如於該(或另一)OTP中、於一嵌入式快閃記憶體中、或ROM程式碼中。
上述特徵亦於此以「位移特徵(offset feature)」稱之,該起始編號亦於此以「位移」(offset) 一詞稱之。
該起始編號(又稱位移)可能被編碼為例如一般之二進位編號。或亦可使用另一方法儲存該起始編號,而非儲存一單純之編號(例如1、45或100),該方法使用較少之OTP熔絲,從而於節省OTP熔絲之同時,亦延長該產品之壽命。例如,於一包含5 個熔絲之欄位內,每一已程式化之熔絲分別對應一次起始編號遞增50之動作,代表起始編號150:
以此法可達之最大起始編號為250:
相較之下,若將 250 以二進位形式表示,將需要 8 個熔絲:
X | X | X |
X | X | X | X | X |
X | X | X | X | X | X |
例如,此處顯示一陣列,該陣列僅有第 3 位元被熔 (該等狀態為可能,儘管通常第 1 至第 3 位元皆被熔)。因此該最新之有效主要編號為3。
於以下陣列中,第 7 位元亦被熔 (儘管通常第 1 至第 7 位元,或至少第 3 至第 7 位元皆被熔)。因此該最新之有效主要編號為7。
相較之下,若另一區域 (例如位元組) 儲存一已編碼之編號 (又稱起始編號) 於該OTP中,則此編號之解讀為位移,例如依以下範例所示:
例如,若值「75」(以二進位或十進位編號,或使用任何其他有效之方法) 被儲存於該OTP中之起始編號欄位中:
則若給定一僅有第 3 位元被熔之陣列,則該最新之有效主要編號為 3 + 75 = 78,而非 3。
相似地,若給定一第 7 位元亦被熔之陣列,則該最新之有效主要編號為 7 + 75 = 82,而非 7。
應注意,此實施例可延長該產品之壽命,相較於未提供起始編號之系統。
X |
X | X |
75 |
X |
X | X |
實施例 5:根據實施例 1 、或根據任何前述之實施例之系統,其中該硬體裝置不關閉該現用 NVM 之讀取及/或寫入,使該現用NVM於開機後為可讀寫。
實施例 6:根據實施例 4 、或根據任何前述之實施例之系統,其中,當該第一韌體映像儲存於該現用與復原NVM時,該OTP編號與儲存於該二NVM中之主要編號相等。
實施例 7:根據實施例 2、或根據任何前述之實施例之方法,其中由該硬體裝置將該復原 NVM 上鎖之行為亦包括關閉該復原 NVM 之讀取,包括確保該復原 NVM 為不可讀。
實施例 8:根據實施例 2、或根據任何前述之實施例之方法,其中將該復原NVM上鎖之行為包括將該復原NVM之連結切斷。
實施例 9:根據實施例 2、或根據任何前述之實施例之方法,其中由該硬體裝置將該OTP上鎖之行為亦包括關閉該OTP之讀取,包括確保該OTP為不可讀。
實施例 10:根據實施例 2、或根據任何前述之實施例之方法,其中該儲存於該現用與復原NVM中之可開機韌體之第一版本,與至少該主要編號,被一同以一公開金鑰標記,從而產生一個簽章(signature)。
應注意,此實施例對已標記之程式碼有用,因對未標記之程式碼而言,相同版本可能與任何程式碼關聯。
一般而言,該公開金鑰與一私有金鑰關聯,該私有金鑰(僅)由一獲許可之韌體發布者持有。
該韌體保有之該(公開)金鑰,可用於認證一較高層級之韌體。
實施例11:根據實施例10、或根據任何前述之實施例之方法,其中該啟動程式對該現用NVM內容之有效性測試,包含對該現用NVM內容與該簽章之密碼認證(cryptographic authentication)。
實施例12:根據實施例11、或根據任何前述之實施例之方法,其中該認證使用一個與該私有金鑰配對之公開金鑰,且其中該公開金鑰(而非該私有金鑰)儲存於該OTP中。
該私有金鑰一般 (僅) 被一獲許可之標記者儲存。
實施例13:根據實施例 2、或根據任何前述之實施例之方法,且其中該啟動程式對該現用NVM內容之有效性測試,包含確保該現用NVM中之主要編號高於或等於該復原NVM中之主要編號。
實施例14:根據實施例 2、或根據任何前述之實施例之方法,且其中該啟動程式對該現用 NVM 內容之有效性測試,包含從至少一個系統層級測試提供一個指示,以確保至少一個預先訂定之準則。
實施例15:根據實施例14、或根據任何前述之實施例之方法,且其中該準則包含決定該新版本可開機韌體可穩定開機。
一次先前之成功開機為一範例,該範例為決定該新版本可開機韌體可穩定開機之準則。
實施例16:根據實施例 2、或根據任何前述之實施例之方法,且其中該啟動程式成功完成開機,若且唯若該現用NVM中之主要編號與該OTP編號相等;且
一個由例如啟動程式進行之測試,查明該現用NVM中之有效內容。
實施例17:根據實施例 2、或根據任何前述之實施例之方法,其中一個信任鏈 (chain of trust) 反復地被實施至少一次,該信任鏈使用已認證之程式碼認證一額外之程式碼層級,該程式碼層級包括額外之主要及/或次要版本編號,該等版本編號可認證另一程式碼層級。
該已認證之程式碼可於認證後由該NVM載入至RAM。
實施例18:根據實施例 1、或根據任何前述之實施例之系統,其中該現用與復原 NVM 包含兩個分離之記憶體裝置。
實施例19:根據實施例 1、或根據任何前述之實施例之系統,其中該現用與復原 NVM 包含位於單一快閃記憶體裝置中之兩個記憶體範圍。
實施例20:根據實施例 4、或根據任何前述之實施例之系統,其中該起始編號為寫入保護。
實施例21:根據實施例 2、或根據任何前述之實施例之方法,更包含命令該啟動程式測試該現用 NVM 內容之有效性,並中止開機、從而導致開機失敗,若該現用 NVM 之內容為無效。
實施例22:根據實施例 21、或根據任何前述之實施例之方法,且其中該啟動程式測試該現用NVM內容之有效性,於該啟動程式決定該現用NVM中之識別碼是否大於該OTP編號,或該(現用)NVM內容為有效之前。
實施例23:根據實施例 2、或根據任何前述之實施例之方法,其中該等操作 b1, b2 由已認證之程式碼進行。
一般而言,該已認證之程式碼存在於該NVM中,或ROM中之ROM程式碼開機區塊中,或一/該OTP 中,或一受保護之嵌入式快閃記憶體中,或RAM中之已認證程式碼中。
實施例24:根據實施例 2、或根據任何前述之實施例之方法,其中該等操作 b1, b2 由該啟動程式進行。
實施例25:根據實施例 2、或根據任何前述之實施例之方法,該方法更包含:
進行至少一次韌體主要更新,包含將儲存於該現用NVM之可開機韌體版本,以一個新可開機韌體「主要」版本取代,以及將儲存於該現用NVM之識別碼,以一個包含較高主要編號之新識別碼取代;以及
v. 於至少一次必然導致一次開機之重置中;
a. 命令該啟動程式:
測試該現用NVM內容之有效性;
中止開機、從而導致開機失敗,若該現用 NVM 之內容為無效,
決定該現用 NVM 中之識別碼是否大於該OTP編號,若至少該現 NVM之內容為有效;以及
中止開機,若該現用NVM中之主要編號小於該OTP編號,以及
b. 僅在該現用NVM中之識別碼大於該 OTP 編號時,進行操作b3, b4, b5,分別包括:
操作 b3:該可開機韌體之新版本,覆蓋取代當前儲存於該復原 NVM 中之可開機韌體版本;
操作 b4:該復原 NVM 中之識別碼被更新,以吻合該現用 NVM 中識別碼之值;以及
操作 b5:該熔絲陣列中一個閒置位元,被程式化為該現用 NVM 中識別碼之值,以確保該OTP編號吻合該現用NVM中之識別碼,且亦吻合該復原NVM中之識別碼。
應注意,於此描述之該等操作之順序,並不意圖具有排他性。例如:操作 b3 首先進行、其後 b4、其後 b5 之順序並非必要。任何其他順序皆可能被使用。
實施例26:根據實施例 25、或根據任何前述之實施例之方法,其中該等操作 b3, b4, b5 由已認證之程式碼進行。
一般而言,該已認證之程式碼存在於該NVM中。
實施例27:根據實施例 25、或根據任何前述之實施例之方法,其中該等操作 b3, b4, b5 由該啟動程式進行。
實施例28:根據實施例 4、或根據任何前述之實施例之系統,並且其中該 OTP 編號被用以作為該現用主要編號與該復原主要編號之一個比較參考值。
實施例29:根據實施例 11、或根據任何前述之實施例之方法,其中該認證使用一公開金鑰,該公開金鑰與該私有金鑰配對,且其中該公開金鑰(而非該私有金鑰)儲存於該ROM 中。
初始設定與更新階段可能如下所述,分別見於第 4 圖與第 5 圖,以獨立或分離、或結合之方式,與於此描述或圖示之任何實施例同時發生。具體而言如下所述。
第 4 圖為一簡化之流程圖,該流程圖圖示一個根據某些實施例,載入一個擁有較高主要編號(「主要更新」) 之新韌體映像之方法。第 4 圖所示之方法一般包括下列操作之全部或任何子集合,該等操作以合適之順序進行,例如以下之順序:
步驟401:該第一韌體映像被相同地儲存於該現用與復原NVM中。
該OTP編號與儲存於該二NVM中之主要編號 (現用版本編號 = 1.2,復原版
本編號 = 1.2,OTP 編號 = 1) 匹配。
步驟402:該新韌體映像(以較高之主要編號,(2.0, 1.2, 1))被載入至該現用NVM中。
步驟403:於一次重置後,該啟動程式認證並測試該現用NVM內容之有效性與可靠性。若該韌體無效,則該啟動程式中止。
步驟404:當該啟動程式發現該現用主要編號大於該OTP編號時,該新韌體映像覆蓋,以取代該復原NVM中之舊韌體映像。(2.0, 2.0, 1)。
步驟405:該熔絲陣列中之另一位元被程式化,此時該OTP編號與該現用主要編號以及該復原主要編號(2.0, 2.0, 2)匹配。
步驟406:該復原NVM與該熔絲陣列上鎖,直至下次系統重置為止。主要更新完成。
第 5 圖為一簡化之流程圖,該流程圖圖示一個根據某些實施例,載入一個擁有較高次要編號(「次要更新」) 之新韌體映像之方法。第 5 圖所示之方法一般包括下列操作之全部或任何子集合,該等操作以合適之順序進行,例如以下之順序:
步驟501:該第一韌體映像被相同地儲存於該現用與復原NVM中。
步驟502:該OTP編號與儲存於該二NVM中之主要編號 (現用版本編號 = 1.2,復原版本編號 = 1.2,OTP 編號 = 1) 匹配。
步驟503:該新韌體映像 (以較高之次要編號,(1.3, 1.2, 1)) 被載入至該現用 NVM 中。
步驟504:於一次重置後,該啟動程式認證並測試該現用NVM內容之有效性與可靠性 。若該韌體無效,則該啟動程式中止。
步驟505:當該啟動程式發現該現用次要編號大於該復原次要編號時,該新韌體映像覆蓋取代該復原NVM中之舊韌體映像。(1.3, 1.3, 1)。此時該OTP編號並不改變。
步驟506:該復原NVM與該熔絲陣列上鎖,直至下次系統重置為止。次要更新完成。
採用OTP編號位移欄位(例如以於此描述之機制)之壽命延長特徵(Lifetime Extension Feature),可能與於此描述或圖示之任何實施例同時發生。該OTP之空間有限。OTP記憶體之不可逆或破壞性特性,意指一新矽裝置可被載入一前進之韌體版本(多個熔絲陣列位元將被「燒錄」)。此情況將導致OTP版本更新之壽命更加受限。為處理此情況,除熔絲陣列外,另一 (「OTP 編號位移」) 欄位可能被實施於該OTP中。此實施可准許該OTP編號自一前進之編號起始,延長該新裝置之壽命。
某些實施例之優點包括:
於該外部記憶體裝置中提供兩個版本陣列,可防止對較舊韌體之回滾攻擊。於此描述之該防回滾解決方案特別優越,因攻擊者無法竄改該韌體映像,例如由於對該韌體映像之任何改變將破壞該RSA簽章之有效性。於該復原NVM中之 (例如對該韌體之) 防護,可防止任何對該現用 NVM 韌體映像之非實體攻擊。即使該攻擊者欲以一較舊之已標記韌體映像完全覆寫該韌體映像,該復原NVM韌體映像、及其較大之版本編號,亦將告知該啟動程式該覆寫嘗試確實為一次回滾攻擊。於攻擊者以較舊之韌體映像(包含一低於原版本之版本編號)實體置換該二
NVM(現用與復原) 之事件中,該OTP編號將告知該啟動程式該置換行為確實為一次回滾攻擊。若僅進行次要更新,如上所述之對該二NVM之實體置換,將無法避免例如威脅。因此該OTP欄位之提供,可防止(至少)另一次攻擊,例如藉由於該二新裝置中,以較舊版本之韌體置換兩個外部記憶體,進行雙重回滾攻擊。
另一優點為該版本資料為未加密,因此該版本(一般以未加密形式儲存)為可更新。
某些實施例提供安全之版本控制,即使OTP空間有限,而該等OTP空間有限之事實,於使用當前技術之系統中,限制了一給定系統可接收之程式碼更新之數量或次數。
於此描述之壽命延長特徵十分優越,如以下範例所示。考慮一個壽命為15年之產品,該產品每年約有4次主要更新,假設該產品有64個熔絲陣列位元。若10年後有一批新產品被生產,以於此描述之方法 (包含壽命延長特徵) 可將該新一批產品之壽命延長10年。若無壽命延長特徵,則由於該等位元中之 2/3 於初始韌體映像設定中將立刻被「浪費」,該新一批產品將僅能存續5年。該等「較舊」之裝置於其15年之年限(或最大主要更新)屆滿後將必須被除役。
上述實施例可能有多種變化。例如,應注意,於上述之實施例中使用版本編號而非版本名稱,該等版本編號包含主要與次要部分,該等主要與次要部分皆被指定為遞增;然而,上述實施例中之該等特性並不意圖具有排他性。並且,根據某些實施例,於此提供二層保護,該保護中主要韌體版本獲得較強之防回滾保護,而次要韌體版本獲得較弱之防回滾保護。於此描述之採用OTP編號位移欄位(例如以於此描述之機制)之壽命延長特徵,不一定被提供。根據其他實施例,於此提供一層保護,該保護中僅對主要韌體版本進行回滾防護,與採用OTP編號位移欄位(例如以於此描述之機制)之壽命延長特徵結合。應注意,於此描述之實施例,其適用性可延伸至任何包含一個OTP與兩個裝置之系統,該二裝置至少其中之一為寫入保護,並保存該裝置之韌體程式碼。
任何一層實施例可防護所有非實體回滾攻擊,該等攻擊包含覆寫該現用NVM,但不防護實體回滾攻擊,該等攻擊同時將該二NVM置換為包含較舊韌體之NVM。後者之防護於提供實體存在之二層實施例中為可能,因該復 NVM為寫入鎖定。
應注意,該寫入保護之NVM可能儲存一個最新版本之完整額外複本,或僅儲存該版本編號。
韌體,若於此用於實施某些實施例,可能保存於非揮發性記憶體 (例如快閃記憶體或 ROM) 中。
或者,於此描述之某些實施例可能部分或僅(亦即不含韌體)於硬體被實施,該等實施中於此描述之變數、參數、有序操作與運算之部分或全部可能位於硬體中。
應注意,「強制」(mandatory)、「必要」(required)、「需要」(need) 與「必須」(must) 等詞彙,乃指實施之選擇,該等選擇乃於一特定實施或應用之脈絡內,為清楚說明起見而於此描述,且該等詞彙並不意圖具有排他性,因於另一實施中,該等相同元件可能被定義為非強制且非必要,或甚至可能一同被除去。
本發明描述於各分離之實施例脈絡中之特徵(包含操作),亦可能於一實施例中合併提供。例如,一個系統實施例意圖包含一個對應之程序實施例,反之亦然。特徵亦可能與該技術領域所習知之特徵,以及 (特別是、但不限於) 描述於 [先前技術] 一節、或於該節內所提及之公開文件中之特徵結合。反之,本發明為簡潔起見而描述於單一實施例脈絡中、或以特定順序呈現之特徵 (包含操作),亦可能被分開、或以任何合適之子組合提供,該等子組合包含該技術領域所習知之特徵 (特別是、但不限於描述於 [先前技術] 一節、或於該節內所提及之公開文件中之特徵),或以不同順序呈現。「例如」(e.g.) 一詞用於表記一個不意圖具有排他性之範例。各方法可能包含部分或全部圖示或描述之操作,以合適之順序進行,例如以圖示或描述於此之順序。
於此描述之每一元件 (例如操作),可能擁有於此描述或圖示之所有特徵;或根據其他實施例,可能擁有於此描述之特徵之任何子集合。
應注意,圖示於多個圖式中之元件,及/或於文字敘述中提及之元件,仍可能合併於單一實施例中,除非於此另有說明。應注意,任何於此為清楚說明起見,而於分離之實施例脈絡中描述之特徵(features)、屬性(properties)、邏輯(logic)、模組(modules)、區塊(blocks)、操作(operations)或功能(functionalities),亦可能合併於單一實施例中提供,除非本說明書或通常知識特別指出某些特徵/屬性/邏輯/模組/區塊/操作/功能為互斥且無法合併。任何於此顯示與描述之系統,可能用於實施顯示與描述於此之任何操作或方法,或可能與該等操作或方法合併。
SPI:序列周邊介面
SPI_CS0#, SPI_CS1#:晶片選擇
OTP:一次性可程式化記憶體
ROM:唯讀記憶體
NVM:非揮發性記憶體
401, 402, 403, 404, 405, 406:步驟
501, 502, 503, 504, 505, 506:步驟
本發明之某些實施例圖示於下列圖式:
第 1 圖為一簡化之流程圖,該流程圖圖示一已知處理程序,該處理程序中記憶體晶片之序號可用於檢測竄改事件;於竄改事件中,記憶體晶片被另一擁有較低計數值之記憶體晶片取代。具體而言,第1圖顯示一個已知演算法,該演算法於一32位元組記憶體分頁內遞增該計數。
第 2 圖與第 3 圖為簡化之方塊圖,該等方塊圖圖示數個系統,該等系統之構造與本發明之實施例一致;各該等實施例中之部件,若有需要,可能與另一部件或與任何於此描述或圖示之實施例或方法結合;可能提供圖示之部件之全部或任何子集合。
第 4 圖至第 5 圖描述根據某些實施例之初始設定與更新程序。
包含於本發明之範圍內之方法與系統,可能以任何合適之順序 (例如圖示之順序) 包含功能方塊圖之部分 (例如任何合適之子集合) 或全部作為範例。該功能方塊圖顯示於該具體圖示之實施。
此處描述與圖示之運算、功能或邏輯部件,可以多種形式被實施,例如作為硬體電路,例如但不限於客製化超大型積體電路(custom VLSI circuits)或閘陣列(gate arrays)或可程式化硬體設備,例如但不限於現場可程式化邏輯閘陣列(FPGA),或作為軟體程式碼,儲存於至少一有形或無形之電腦可讀媒體並可由至少一處理器執行,或其中任何合適之組合。一個特定之功能部件,可能由軟體程式碼之一特定順序,或複數之軟體程式碼順序形成;就該待討論之功能部件而言,該等軟體程式碼順序,以於此描述之方式集體行動,或表現,或行動。例如,該部件可能分布遍及數個程式碼順序,例如但不限於物件 (objects)、程序 (procedures)、函式 (functions)、常式 (routines) 與程式 (programs),並可能源自數個一般而言協同運作之電腦檔案。
任何於此描述之邏輯功能,可酌情作為即時應用程式(real-time application)被實施,且該邏輯功能可採用任何合適之結構選項,例如但不限於ASIC或DSP或其中任何合適之組合。任何於此提及之硬體部件,可能事實上包含一個或更多硬體裝置(例如晶片),該等硬體裝置可能彼此並置或遠離。
ROM:唯讀記憶體
OTP:一次性可程式化記憶體
NVM:非揮發性記憶體
Claims (29)
- 一種防止回滾攻擊之系統,包括:i.晶片,包含:a.開機唯讀記憶體(ROM)程式碼,當該晶片通電時該開機ROM程式碼皆運作;以及b.一次性可程式化(OTP)記憶體,用以儲存一版本識別碼;ii.現用非揮發性記憶體(NVM)以及復原非揮發性記憶體,分別儲存可開機韌體之版本之第一複本與第二複本;其中,第一識別碼儲存於該現用非揮發性記憶體中,且用以識別該可開機韌體之一特定版本,該特定版本之該第一複本儲存於該現用非揮發性記憶體中,該第一識別碼包含至少一個現用主要編號與一個現用次要編號,兩者皆被標記一私有金鑰;其中,第二識別碼儲存於該復原非揮發性記憶體中,且用以識別該可開機韌體之該版本,該版本之該第二複本儲存於該復原非揮發性記憶體中,該第二識別碼包含至少一個復原主要編號與一個復原次要編號,兩者皆被標記該私有金鑰;以及iii.硬體裝置,根據由該開機ROM程式碼於開機後提供的一第一指令,該硬體裝置將至少該復原非揮發性記憶體上鎖直到下次系統重置,其中將該復原非揮發性記憶體上鎖包含確保除了來自該開機ROM程式碼之操作之外該復原非揮發性記憶體為不可寫入,以及根據該下次該系統重置時由該開機ROM程式碼提供的第二指令,該硬體裝置解除該復原非揮發性記憶體之上鎖,從而當較新版本的可開機韌體已生效後,防止較舊版本之可開機韌體被啟動; 其中,與該較新版本以及該較舊版本相關連之多個韌體映像,以及該第一識別碼及該第二識別碼均被標記該私有金鑰;以及其中,該開機ROM程式碼用以認證該多個韌體映像,及認證該第一識別碼及該第二識別碼。
- 如請求項1之系統,其中該OTP記憶體包含多個熔絲,該等熔絲之狀態表示該版本識別碼。
- 如請求項1之系統,其中該OTP記憶體中之多個位元被用於表示一OTP編號;OTP編號=起始編號+計數;該等多個位元包含一個n位元之陣列,從而定義n個位元序號,分別與該n個位元關聯,該n個位元包含一個由值為「0」之位元所構成之第一子集合,以及一個由值被熔為「1」之位元所構成之第二子集合,其中該計數被決定為數個位元序號中之最高序號,該等位元序號與被熔為1之n個位元所構成之該第二子集合關聯。
- 如請求項3之系統,其中當該韌體映像儲存於該現用非揮發性記憶體與該復原非揮發性記憶體時,該OTP編號與儲存於該現用非揮發性記憶體與該復原非揮發性記憶體中之主要編號相等。
- 如請求項3之系統,其中該起始編號受到寫入保護。
- 如請求項3之系統,其中該OTP編號被用以作為該現用主要編號與該復原主要編號之一個比較參考值。
- 如請求項1之系統,其中該硬體裝置不關閉該現用非揮發性記憶體之讀取及/或寫入,使該現用非揮發性記憶體於開機後為可讀寫。
- 如請求項1之系統,其中該現用非揮發性記憶體與該復原非揮發性記憶體包含兩個分離之記憶體裝置。
- 如請求項1之系統,其中該現用非揮發性記憶體與該復原非揮發性記憶體包含位於單一快閃記憶體裝置中之兩個記憶體範圍。
- 一種防止系統受回滾攻擊之方法,包括:I.提供一系統,包括:i.晶片,包含:a.開機唯讀記憶體(ROM)程式碼,當晶片通電時該開機ROM程式碼皆運作;以及b.一次性可程式化(OTP)記憶體,用以儲存一版本識別碼;ii.現用非揮發性記憶體(NVM)以及復原非揮發性記憶體,分別儲存可開機韌體之版本之第一複本與第二複本;其中,第一識別碼儲存於該現用非揮發性記憶體中用以識別該可開機韌體之該版本,該版本的之該第一複本儲存於該現用非揮發性記憶體中,該第一識別碼包含至少一個現用主要編號與一個現用次要編號,兩者皆被標記一私有金鑰;其中,第二識別碼儲存於該復原非揮發性記憶體中且用以識別該版本,該版本之該第二複本儲存於該復原非揮發性記憶體中,該第二識別碼包含至少一個復原主要編號與一個復原次要編號,兩者皆被標記該私有金鑰;以及iii.硬體裝置,根據由該開機ROM程式碼於開機後提供的一第一指令,該硬體裝置將至少該復原非揮發性記憶體上鎖直到下次系統重置,其中將該復原非揮發性記憶體上鎖包含確保除了來自該開機ROM程式碼之操作之外該復原非揮發性記憶體為不可寫入,以及根據該下次該系統重置時由該開機ROM程式碼提供的第二指令,該硬體裝置解除該復原非揮發性記憶體之上鎖,從而當較新版本的可開機韌體 已生效後,防止較舊版本的可開機韌體被啟動;II.儲存第一版本之可開機韌體之複本,於該現用非揮發性記憶體與該復原非揮發性記憶體中;儲存至少該第一版本之一主要編號之第一複本與該主要編號之第二複本,分別於該等第一非揮發性記憶體與第二非揮發性記憶體中;以及程式化該OTP記憶體中之至少一位元,使該至少一位元代表的數值匹配該主要編號;III.進行至少一次該可開機韌體的次要更新,包含將儲存於該現用非揮發性記憶體之可開機韌體版本以該可開機韌體之一個新的次要版本取代,以及將儲存於該現用非揮發性記憶體之第一識別碼以一個包含較高次要編號之新識別碼取代;以及IV.於至少一次必然導致一次開機之重置之後,a.執行開機唯讀記憶體(ROM)程式碼:如果該現用非揮發性記憶體之內容為有效,則決定該現用非揮發性記憶體中之識別碼是否大於該OTP記憶體中的OTP編號;以及若該現用非揮發性記憶體中之主要編號低於該OTP編號,則中止開機;以及b.僅在當該現用非揮發性記憶體中之現用次要識別碼大於該復原非揮發性記憶體中之復原次要識別碼時,進行操作b1與b2:操作b1:以該可開機韌體之新版本覆蓋取代當前儲存於該復原非揮發性記憶體中之可開機韌體版本;以及操作b2:更新該復原非揮發性記憶體中之識別碼,使其匹配該現用非揮發性記憶體中之識別碼。
- 如請求項10之方法,其中由該硬體裝置將該復原非揮發性記 憶體上鎖之行為亦包括關閉該復原非揮發性記憶體之讀取,包括確保該復原非揮發性記憶體為不可讀。
- 如請求項10之方法,其中將該復原非揮發性記憶體上鎖之操作包括將該復原非揮發性記憶體之連結切斷。
- 如請求項10之方法,其中該硬體裝置將該OTP上鎖之操作亦包括關閉對該OTP記憶體之讀取,包括確保該OTP記憶體為不可讀。
- 如請求項10之方法,其中該儲存於該現用非揮發性記憶體與該復原非揮發性記憶體中之可開機韌體之第一版本,與至少該主要編號,被一同以一公開金鑰標記,從而產生一個簽章(signature)。
- 如請求項14之方法,其中執行該開機ROM程式碼以對該現用非揮發性記憶體內容之有效性測試,包含對該現用非揮發性記憶體內容與該簽章之密碼認證(cryptographic authentication)。
- 如請求項15之方法,其中該密碼認證使用一個與該私有金鑰配對之該公開金鑰,且其中該公開金鑰儲存於該OTP記憶體中。
- 如請求項15之方法,其中該認證使用該公開金鑰,該公開金鑰與該私有金鑰配對,且其中該公開金鑰儲存於一唯讀記憶體中。
- 如請求項10之方法,其中執行該開機ROM程式碼以對該現用非揮發性記憶體內容之有效性測試,包含確保該現用非揮發性記憶體中之主要編號高於或等於該復原非揮發性記憶體中之主要編號。
- 如請求項10之方法,其中執行該開機ROM程式碼以對該現用非揮發性記憶體內容之有效性測試,包含從至少一個系統層級測試提供一個指示,以確保至少一個預先訂定之準則。
- 如請求項19之方法,其中該準則包含決定該新版本的可開機韌體可穩定開機。
- 如請求項16之方法,其中該開機ROM程式碼執行以成功完成開機,若且唯若:該現用非揮發性記憶體中之主要編號與該OTP編號相等;且由該開機ROM程式碼執行之測試查明該現用非揮發性記憶體中之有效內容。
- 如請求項10之方法,其中一個信任鏈(chain of trust)反復地被實施至少一次,該信任鏈使用已認證之程式碼認證一額外之程式碼層級,該程式碼層級包括額外之主要版本編號及/或次要版本編號,該等版本編號可認證另一程式碼層級。
- 如請求項10之方法,更包含執行該開機ROM程式碼以測試該現用非揮發性記憶體內容之有效性,若該現用非揮發性記憶體之內容為無效,則中止開機以導致開機失敗。
- 如請求項23之方法,其中在該開機ROM程式碼以決定該現用非揮發性記憶體中之識別碼是否大於該OTP編號,或該現用非揮發性記憶體內容為有效之前,執行該開機ROM程式碼以測試該現用非揮發性記憶體內容之有效性。
- 如請求項10之方法,其中該等操作b1以及b2由已認證之程式碼進行。
- 如請求項10之方法,其中該等操作b1以及b2由該開機ROM程式碼進行。
- 如請求項10之方法,更包含進行至少一次韌體主要更新,包含將儲存於該現用非揮發性記憶體之可開機韌體版本,以一個新可開機韌體的主要版本取代,以及將儲存於該現用非揮發性記憶體之識別碼,以一個包含較高主要編號之新識別碼取代;以及v.於至少一次必然導致一次開機之重置中; a.命令該開機ROM程式碼:測試該現用非揮發性記憶體內容之有效性;若該現用非揮發性記憶體之內容為無效,則中止開機以導致開機失敗;若至少該現用非揮發性記憶體之內容為有效,則決定該現用非揮發性記憶體中之識別碼是否大於該OTP編號;以及若該現用非揮發性記憶體中之主要編號小於該OTP編號,則中止開機;以及b.僅在該現用非揮發性記憶體中之識別碼大於該OTP編號時,進行操作b3、b4以及b5:操作b3:以該可開機韌體之新版本覆蓋取代當前儲存於該復原非揮發性記憶體中之可開機韌體版本;操作b4:更新該復原非揮發性記憶體中之第二識別碼以匹配該現用非揮發性記憶體中識別碼之值;以及操作b5:將該OTP記憶體中的熔絲陣列中一個閒置位元程式化為該現用非揮發性記憶體中識別碼之值,以確保該OTP編號匹配該現用非揮發性記憶體中之識別碼,且亦匹配該復原非揮發性記憶體中之識別碼。
- 如請求項27之方法,其中該等操作b3、b4以及b5由已認證之程式碼進行。
- 如請求項27之方法,其中該等操作b3、b4以及b5由該開機ROM程式碼進行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/874,241 | 2020-05-14 | ||
US16/874,241 US11216597B2 (en) | 2020-05-14 | 2020-05-14 | Security system and method for preventing rollback attacks on silicon device firmware |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202145014A TW202145014A (zh) | 2021-12-01 |
TWI775346B true TWI775346B (zh) | 2022-08-21 |
Family
ID=78510326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110108608A TWI775346B (zh) | 2020-05-14 | 2021-03-11 | 防止回滾攻擊之系統及方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11216597B2 (zh) |
JP (1) | JP7113115B2 (zh) |
CN (1) | CN113672878B (zh) |
TW (1) | TWI775346B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230109011A1 (en) * | 2021-10-04 | 2023-04-06 | Hewlett-Packard Development Company, L.P. | Placing a device in secure mode |
US20230198775A1 (en) * | 2021-12-17 | 2023-06-22 | Micron Technology, Inc. | Memory device with secure boot updates and self-recovery |
TWI793998B (zh) * | 2022-01-27 | 2023-02-21 | 飛捷科技股份有限公司 | 用於控制系統的韌體架構及開機方法 |
KR20230139262A (ko) * | 2022-03-25 | 2023-10-05 | 삼성전자주식회사 | 시스템 부팅을 위한 컨트롤러를 포함하는 전자 장치 및 그의 동작 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140130151A1 (en) * | 2012-11-07 | 2014-05-08 | Qualcomm Incorporated | Methods for providing anti-rollback protection of a firmware version in a device which has no internal non-volatile memory |
WO2017052801A1 (en) * | 2015-09-25 | 2017-03-30 | Qualcomm Incorporated | Secure patch updates for programmable memories |
TW202036342A (zh) * | 2018-10-19 | 2020-10-01 | 英商Arm股份有限公司 | 用於領域安全性配置參數的參數簽名 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7461268B2 (en) | 2004-07-15 | 2008-12-02 | International Business Machines Corporation | E-fuses for storing security version data |
US8239688B2 (en) * | 2007-01-07 | 2012-08-07 | Apple Inc. | Securely recovering a computing device |
WO2009156302A1 (en) * | 2008-06-23 | 2009-12-30 | Nxp B.V. | Electronic device and method of software or firmware updating of an electronic device |
US8205070B2 (en) * | 2009-09-08 | 2012-06-19 | Apple Inc. | Device bootup from a NAND-type non-volatile memory |
GB2499985A (en) * | 2012-02-29 | 2013-09-11 | Nds Ltd | Current state of OTP memory used with new received information to define new OTP state for computation of new digital signature in preventing playback attacks |
US9230112B1 (en) * | 2013-02-23 | 2016-01-05 | Xilinx, Inc. | Secured booting of a field programmable system-on-chip including authentication of a first stage boot loader to mitigate against differential power analysis |
US20140250290A1 (en) | 2013-03-01 | 2014-09-04 | St-Ericsson Sa | Method for Software Anti-Rollback Recovery |
US9165143B1 (en) * | 2013-03-15 | 2015-10-20 | Xilinx, Inc. | Image file generation and loading |
EP2854066B1 (en) * | 2013-08-21 | 2018-02-28 | Nxp B.V. | System and method for firmware integrity verification using multiple keys and OTP memory |
US9621549B2 (en) | 2014-07-25 | 2017-04-11 | Qualcomm Incorporated | Integrated circuit for determining whether data stored in external nonvolative memory is valid |
JP6595822B2 (ja) | 2015-07-07 | 2019-10-23 | キヤノン株式会社 | 情報処理装置及びその制御方法 |
US20170308705A1 (en) | 2016-04-22 | 2017-10-26 | Qualcomm Incorporated | System, device and method for anti-rollback protection of over-the-air updated device images |
US10223531B2 (en) * | 2016-12-30 | 2019-03-05 | Google Llc | Secure device state apparatus and method and lifecycle management |
US10997297B1 (en) * | 2019-12-06 | 2021-05-04 | Western Digital Technologies, Inc. | Validating firmware for data storage devices |
-
2020
- 2020-05-14 US US16/874,241 patent/US11216597B2/en active Active
-
2021
- 2021-03-11 TW TW110108608A patent/TWI775346B/zh active
- 2021-04-28 JP JP2021075912A patent/JP7113115B2/ja active Active
- 2021-05-07 CN CN202110494281.0A patent/CN113672878B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140130151A1 (en) * | 2012-11-07 | 2014-05-08 | Qualcomm Incorporated | Methods for providing anti-rollback protection of a firmware version in a device which has no internal non-volatile memory |
WO2017052801A1 (en) * | 2015-09-25 | 2017-03-30 | Qualcomm Incorporated | Secure patch updates for programmable memories |
TW202036342A (zh) * | 2018-10-19 | 2020-10-01 | 英商Arm股份有限公司 | 用於領域安全性配置參數的參數簽名 |
Also Published As
Publication number | Publication date |
---|---|
CN113672878A (zh) | 2021-11-19 |
JP7113115B2 (ja) | 2022-08-04 |
US11216597B2 (en) | 2022-01-04 |
CN113672878B (zh) | 2023-09-29 |
JP2021179982A (ja) | 2021-11-18 |
US20210357537A1 (en) | 2021-11-18 |
TW202145014A (zh) | 2021-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI775346B (zh) | 防止回滾攻擊之系統及方法 | |
EP2854066B1 (en) | System and method for firmware integrity verification using multiple keys and OTP memory | |
US7461268B2 (en) | E-fuses for storing security version data | |
US8200988B2 (en) | Firmware security key upgrade algorithm | |
JP3734408B2 (ja) | 半導体記憶装置 | |
TW201500960A (zh) | 在配有適用統一可延伸韌體介面(uefi)之韌體之計算裝置中的安全性變數變化檢測技術 | |
JP6518798B2 (ja) | 安全な集積回路状態を管理する装置およびその方法 | |
US10885196B2 (en) | Executing protected code | |
US11941159B2 (en) | Configuration data deletion based on tamper status | |
CN111695164B (zh) | 电子设备及其控制方法 | |
JP6652669B2 (ja) | 情報処理装置及び情報処理装置の制御方法 | |
EP3440585B1 (en) | System and method for establishing a securely updatable core root of trust for measurement | |
JP7097407B2 (ja) | ビットエラー修正の試行錯誤を優先順位付けるためのシステムおよび方法 | |
CN112015582B (zh) | 自修正存储器系统、提供错误修正至存储器内容的方法 | |
JP7330157B2 (ja) | 情報処理装置および更新処理方法 | |
US20230129942A1 (en) | Method for locking a rewritable non-volatile memory and electronic device implementing said method | |
JP6204555B1 (ja) | 不揮発性メモリに格納した変数を保護する方法、システム・ファームウェアおよびコンピュータ | |
CN114968117A (zh) | 存储器保护系统 | |
JP2024007617A (ja) | プロセッサ回路、バージョン管理方法およびバージョン管理プログラム | |
Beilke et al. | A Safe Update Mechanism for Smart Cards |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |