TWI467484B - 自我驗證選用唯讀記憶體之基本輸出入系統及其驗證方法 - Google Patents
自我驗證選用唯讀記憶體之基本輸出入系統及其驗證方法 Download PDFInfo
- Publication number
- TWI467484B TWI467484B TW97149140A TW97149140A TWI467484B TW I467484 B TWI467484 B TW I467484B TW 97149140 A TW97149140 A TW 97149140A TW 97149140 A TW97149140 A TW 97149140A TW I467484 B TWI467484 B TW I467484B
- Authority
- TW
- Taiwan
- Prior art keywords
- read
- basic input
- memory
- firmware
- output system
- Prior art date
Links
Description
本發明係關於一種自我驗證選用唯讀記憶體之基本輸出入系統及其驗證方法,尤其涉及一種檢查選用唯讀記憶體之資料完整性的基本輸出入系統及其驗證方法。
一直以來,基本輸出入系統負責在電腦系統開機過程中,進行開機自我測試(POST)、初始化基本硬體設備及載入作業系統等準備工作,然而隨著基本輸出入系統製造商與各項硬體設備晶片製造商的分工越來越精細,主機板上的基本輸出入系統製造商經常接收由不同的硬體設備製造商所提供的特定硬體設備的韌體,也就是開機時映射(Mapping)在主記憶體中的選用唯讀記憶體(Option ROM,OPROM)的資料,一併嵌入在基本輸出入系統內,使得基本輸出入系統在電腦系統進入作業系統之前,能進行更多的前置偵測、設定工作,對於整個電腦系統的研發提供了實質的幫助。
但由於各製造商開發時程快慢不一,基本輸出入系統製造商經常遇到接收太多不同設備、不同版本的硬體設備韌體資料,版本控管不易,可能發生記錄上係以第一版本韌體與基本輸出入系統整合,但實際上卻是第二版本韌體與基本輸出入系統整合,產生不一致,造成開機時無法順利載入或讀取正確的韌體對硬體設備進行設置。
此外,由於製造商經常將所開發的韌體更新檔案放置在公開的網頁上供使用者下載,亦經常發生有使用者下載並修改檔案內容後,再度放置在公開網頁上,讓其他使用者下載到被篡改過後的錯誤檔案,以錯誤檔案安裝到電腦系統後,不但未能提升硬體設備的運作效能,反而造成無法開機、甚至硬體損毀的情形。
為了避免產生上述版本不一致、或韌體檔案被更改,而造成無法順利開機、降低系統穩定性的問題,應設計一種可認證選用唯讀記憶體正確性的手段,確保電腦系統開機時得與正確的硬體設備韌體運作。
本發明之目的,係為了提供一種自我驗證選用唯讀記憶體之基本輸出入系統及其驗證方法,解決選用唯讀記憶體之資料與基本輸出入系統整合時控管不易的問題,使選用唯讀記憶體之資料在開機時即可經過驗證,以確認其完整性。
為了達成上述目的,根據本發明的一種方案,提供一種自我驗證選用唯讀記憶體之基本輸出入系統,該基本輸出入系統載入到一主記憶體以執行開機,其中包括:一裝置韌體區塊、一驗證碼區塊及一開機管理區塊,裝置韌體區塊記錄一應用裝置韌體,應用裝置韌體在開機時會映射到主記憶體的選用唯讀記憶區塊中,驗證碼區塊則記錄一驗證碼,開機管理區塊在開機時以一演算法對映射到選用唯讀記憶區塊的應用裝置韌體進行計算,產生一校驗值,並且讀取該驗證碼與校驗值進行比對,於校驗值與驗證碼相同時,繼續執行開機。其中的驗證碼係以相同的演算法對一初始裝置韌體進行計算所產生。
此外,為了達成上述目的,根據本發明的一種方案,再提供一種基本輸出入系統自我驗證選用唯讀記憶體方法,該基本輸出入系統載入到一主記憶體以執行開機,包括下列步驟:首先讀取記錄在該基本輸出入系統的一驗證碼;再根據一演算法計算映射到該主記憶體之一選用唯讀記憶區塊的一應用裝置韌體,以產生一校驗值;比對驗證碼和校驗值,判斷該驗證碼與該校驗值是否相同,若兩者相同即繼續執行開機程序。其中的驗證碼係對於一初始裝置韌體,以相同的演算法計算所產生。
本發明的功效,係可提供一種簡易而有效的方式,控管基本輸出入系統中所整合的各種裝置韌體版本,並且防止韌體中的參數遭篡改後造成硬體設備損壞的風險,對於維護整合性基本輸出入系統的穩定性具有實質而重要的助益。
本發明係提供一種自我驗證選用唯讀記憶體之基本輸出入系統及其驗證方法,在基本輸出入系統執行開機作業時驗證選用唯讀記憶體的資料完整性,以達到控管韌體資料,防止系統無法開機或硬體損毀的效果。為了提供更詳盡的說明與解釋,以下將配合示意圖及流程圖進行解說,以便更為明確而清楚地揭露本發明所使用的技術及手段。
第一圖係為本發明所提供的一種自我驗證選用唯讀記憶體之基本輸出入系統實施例之儲存結構示意圖,本實施例以電腦系統啟動時的驗證為例,其中,基本輸出入系統10中包括一開機管理區塊102、一驗證碼區塊104及一裝置韌體區塊106;主記憶體20中包括一選用唯讀記憶區塊202。
開機管理區塊102用於執行開機到載入作業系統之間的各項前置作業;驗證碼區塊104中記錄一驗證碼;裝置韌體區塊106中記錄一應用裝置韌體。當電腦系統電源啟動後,基本輸出入系統10會解壓縮到主記憶體20上執行開機作業,而其中的應用裝置韌體係映射到主記憶體20中專為存放各種裝置之韌體的選用唯讀記憶區塊202當中。
為了在應用裝置韌體開始執行與對應裝置的溝通作業之前,先行驗證應用裝置韌體資料的正確和完整性,以避免在基本輸出入系統10製造商研發、整合的過程中,嵌入錯誤的應用裝置韌體版本,或使用者下載被修改後的應用裝置韌體檔案進行更新,而使電腦系統無法順利運作、或使硬體損壞,因此,開機管理區塊102會在開機自我測試程序完成前,執行對映射到選用唯讀記憶區塊202中的應用裝置韌體的驗證。
開機管理區塊102中的開機程式會讀取驗證碼區塊104中所記錄的一驗證碼,此驗證碼係可由製造商在製作基本輸出入系統10時,即一併嵌入在一個屬於唯讀區塊的驗證碼區塊104,用來驗證應用裝置韌體資料的正確性和完整性。
開機管理區塊102的開機程式前往主記憶體20的選用唯讀記憶區塊202,根據應用裝置韌體的資料長度,從應用裝置韌體在選用唯讀記憶區塊202中的起始位址開始讀取該應用裝置韌體的資料,並且以一校驗和演算法(Checksum Algorithm)計算應用裝置韌體資料,產生一校驗值。以影像控制裝置的韌體(Video BIOS)資料例如:顯示卡的韌體(VGA Option ROM)為例,由於其發展時間較早,各製造商開發的標準較為統一,因此大部分顯示卡韌體在選用唯讀記憶區塊202的位置都從記憶區段C000:0000開始(同時也是主記憶體20保留給選用唯讀記憶區塊202的起始位置),韌體資料長度為65536位元組(bytes)。開機管理區塊102的開機程式即從C000:0000處開始讀取65536位元組長度的顯示卡韌體資料,根據一種校驗和演算方法,計算出此韌體資料的校驗值。
驗證碼區塊104所記錄的驗證碼,係以同一種校驗和演算法,對製造商所欲整合在基本輸出入系統10的初始裝置韌體進行計算所得,係可由初始裝置韌體的製造商提供給基本輸出入系統10製造商、或由基本輸出入系統10製造商在整合初始裝置韌體之前運用校驗軟體計算,並且將所得知的驗證碼,例如:5F64,記錄到一個唯讀的驗證碼區塊104當中,作為比對的基準、並且避免被修改。
將計算所產生的校驗值與讀取的驗證碼互相比對,判斷校驗值是否與驗證碼相同,若兩者相同,即代表載入到選用唯讀記憶區塊202的應用裝置韌體,與原本應與基本輸出入系統102整合的初始裝置韌體版本相同、內容也相同。開機程式確認之後,即可繼續進行開機的程序,例如繼續完成其他的開機自我測試,而不需再擔心接下來的程序中,交由應用裝置韌體對該裝置進行初始化時,會產生版本或內容不符而無法開機的問題。
但若校驗值與驗證碼比對之後,判斷兩者並不相同,就基本輸出入系統10製造商在測試線的角度而言,代表其所欲整合的初始裝置韌體版本與實際上嵌入基本輸出入系統10的應用裝置韌體版本不一致;就使用者的角度而言,代表其下載安裝的更新檔案內容可能是經過駭客篡改的版本,造成無法通過驗證。此時若繼續允許電腦系統開機,極有可能產生錯誤,例如應用裝置韌體無法正常與裝置連線運作,或甚至造成硬體裝置的損壞,因此開機管理區塊102之開機程式即發出一警示通知,通知製造商或使用者處理裝置韌體不一致的問題,或是發出警示通知後直接停止開機,將產生錯誤和損壞的風險降到最低。
上述的初始裝置韌體、及映射到選用唯讀記憶區塊202中的應用裝置韌體,除了影像控制裝置的韌體之外,也可能係為網路裝置韌體(LAN Option ROM)、週邊控制介面裝置韌體(PCI Option ROM)等。基本輸出入系統10中所欲整合的裝置韌體也可能同時包括兩種以上,則在驗證碼區塊104中分別記錄不同初始裝置韌體的驗證碼、裝置韌體區塊106中分別記錄不同的應用裝置韌體,待載入選用唯讀記憶區塊202後,開機管理區塊102的開機程式再分別根據計算出驗證碼的相同演算法計算出校驗值,分別進行比對和判斷,以確保各種整合在基本輸出入系統10的應用裝置韌體資料皆可正常提供服務。
第二圖係為本發明所提供一種基本輸出入系統自我驗證選用唯讀記憶體方法實施例之簡略流程圖,本實施例之基本輸出入系統10會在電腦系統開機時解壓縮載入到一主記憶體20執行開機程序。首先,當電腦系統開啟電源後,基本輸出入系統10開始執行開機程序(S301),而基本輸出入系統10中的開機管理區塊102的開機程式會讀取驗證碼區塊104中的驗證碼(S303);接著前往主記憶體20中的選用唯讀記憶區塊202讀取應用裝置韌體的資料,並以一演算法計算該應用裝置韌體資料,產生一校驗值(S305);最後,當比對出該校驗值與該驗證碼相同時,開機管理區塊102的程式即判定應用裝置韌體的版本及內容無誤,而繼續執行開機程序(S307)。本實施例中所述的驗證碼,係與計算校驗值採用相同的演算法,對所欲整合在基本輸出入系統10中的初始裝置韌體計算而得,並於基本輸出入系統10整合各項裝置韌體時,一併記錄在一唯讀的驗證碼區塊104,以避免該驗證碼被修改。
雖然第二圖僅係對一種應用裝置韌體的驗證為例,但如同第一圖所示實施例的說明中所述,初始裝置韌體和可映射到選用唯讀記憶區塊202的應用裝置韌體不只一種,更可包括網路裝置或週邊控制介面裝置等韌體,若有兩種以上的裝置韌體需經過驗證,則可重複執行步驟S303到S305,依序將整合在基本輸出入系統10中的應用裝置韌體一一驗證比對,直到從裝置韌體區塊106載入選用唯讀記憶區塊202中的所有應用裝置韌體都經過驗證無誤後,再繼續執行開機程序(S307)。
為了更具體說明上述的驗證流程,接下來請參閱第三圖所示之實施例說明,第三圖係為本發明所提供一種基本輸出入系統自我驗證選用唯讀記憶體方法實施例之詳細流程圖,本實施例係以基本輸出入系統10中整合的影像控制裝置韌體為例說明:首先,啟動電源以驅動基本輸出入系統10(S401),基本輸出入系統10自行解壓縮並載入主記憶體20以便執行開機程序(S403);接著,基本輸出入系統10開始執行開機自我測試(S405),並在自我測試程序中,先讀取驗證碼區塊104所記錄的影像控制裝置韌體的驗證碼(S407);再前往主記憶體20中的選用唯讀記憶區塊202,開始從影像控制裝置韌體的起始位置讀取韌體內容,並以一校驗和演算法計算全部共65536位元組的韌體資料,產生一校驗值(S409)。
開機程式接著即以計算出來的校驗值比對驗證碼,判斷兩者是否相同(S411):若兩者相異,表示整合在基本輸出入系統10中的影像控制裝置韌體資料與預設應整合的韌體資料版本不符、或韌體內的參數經修改,此時即發出一警示通知給製造商或使用者,提示實際使用的裝置韌體與應使用的裝置韌體不同,或立即停止接下來的開機程序,以保護影像控制裝置及電腦系統(S413);反之,若兩者經比較後相同,代表影像控制裝置韌體的正確性和完整性得到驗證,開機程式即可繼續執行後續的開機程序(S415),例如將主控權轉移到選用唯讀記憶區塊202中的影像控制裝置韌體,讓使用者可以開始在顯示螢幕上看到基本輸出入系統10進行硬體測試的影像畫面。
經由上述實施例之說明,本發明已提供一種簡單而有效地控制被載入選用唯讀記憶區塊的應用裝置韌體版本及資料的手段,可幫助整合基本輸出入系統與裝置韌體的製造商減少整合版本不一致的錯誤,同時也可防止駭客下載初始裝置韌體、篡改初始裝置韌體的參數內容後,讓使用者端不慎採用被修改過的韌體檔案而破壞基本輸出入系統的運作、或產生硬體損壞的風險。
前述所列舉之項目僅為說本發明例示之實施手段,並非用以限縮本發明所適用之範疇,如有其他符合本發明之精神與未實質改變本發明之技術手段者,皆屬本發明所涵蓋保護之範圍。
10...基本輸出入系統
102...開機管理區塊
104...驗證碼區塊
106...裝置韌體區塊
20...主記憶體
202...選用唯讀記憶區塊
S301~S307...流程步驟
S401~S415...流程步驟
第一圖:本發明所提供一種自我驗證選用唯讀記憶體之基本輸出入系統實施例之儲存結構示意圖;
第二圖:本發明所提供一種基本輸出入系統自我驗證選用唯讀記憶體方法實施例之簡略流程圖;及
第三圖:本發明所提供一種基本輸出入系統自我驗證選用唯讀記憶體方法實施例之詳細流程圖。
10...基本輸出入系統
102...開機管理區塊
104...驗證碼區塊
106...裝置韌體區塊
20...主記憶體
202...選用唯讀記憶區塊
Claims (15)
- 一種自我驗證選用唯讀記憶體之基本輸出入系統,該基本輸出入系統載入到一主記憶體以執行開機,包括:一裝置韌體區塊,記錄一應用裝置韌體,該應用裝置韌體於開機時載入到該主記憶體中之一選用唯讀記憶區塊;一驗證碼區塊,記錄一驗證碼;及一開機管理區塊,利用一開機程式以一演算法對映射到該選用唯讀記憶區塊之該應用裝置韌體進行計算,以產生一校驗值,並讀取該驗證碼比對該校驗值,於該校驗值與該驗證碼相同時,繼續執行開機程序。
- 如申請專利範圍第1項所述之自我驗證選用唯讀記憶體之基本輸出入系統,其中,該驗證碼係以相同之該演算法計算一初始裝置韌體而產生。
- 如申請專利範圍第2項所述之自我驗證選用唯讀記憶體之基本輸出入系統,其中,該開機管理區塊於該校驗值與該驗證碼不相同時,發出一警示通知,用以提示該應用裝置韌體異於該初始裝置韌體。
- 如申請專利範圍第3項所述之自我驗證選用唯讀記憶體之基本輸出入系統,其中,該開機管理區塊於該校驗值與該驗證碼不相同時,停止執行開機。
- 如申請專利範圍第1項所述之自我驗證選用唯讀記憶體之基本輸出入系統,其中,該驗證碼區塊係為唯讀區塊。
- 如申請專利範圍第1項所述之自我驗證選用唯讀記憶體之基本輸出入系統,其中,該演算法係為計算校驗和演算法。
- 如申請專利範圍第2項所述之自我驗證選用唯讀記憶體之基本輸出入系統,其中,該應用裝置韌體及該初始裝置韌體皆係為影像控制裝置韌體、網路裝置韌體、或週邊控制介面裝置韌體。
- 一種基本輸出入系統自我驗證選用唯讀記憶體方法,該基本輸出入系統載入到一主記憶體以執行開機,包括:該基本輸出入系統開始執行開機程序;讀取記錄在該基本輸出入系統的一驗證碼;根據一演算法,計算映射到該主記憶體中之一選用唯讀記憶區塊的一應用裝置韌體,產生一校驗值;及判斷該驗證碼與該校驗值是否相同,若相同即繼續執行開機程序。
- 如申請專利範圍第8項所述之基本輸出入系統自我驗證選用唯讀記憶體方法,其中,該驗證碼係以相同之該演算法計算一初始裝置韌體而產生。
- 如申請專利範圍第8項所述之基本輸出入系統自我驗證選用唯讀記憶體方法,其中,該演算法係為計算校驗和演算法。
- 如申請專利範圍第10項所述之基本輸出入系統自我驗證選用唯讀記憶體方法,其中,根據該演算法計算映射到該主記憶體之該應用裝置韌體的步驟中,包括下列步驟:根據該應用裝置韌體的資料長度,自該應用裝置韌體在該選用唯讀記憶區塊中的起始位址讀取該應用裝置韌體;及計算所讀取之該應用裝置韌體的校驗和,以產生該校驗值。
- 如申請專利範圍第8項所述之基本輸出入系統自我驗證選用唯讀記憶體方法,其中,該基本輸出入系統開始執行開機程序之步驟中,包括下述步驟:該基本輸出入系統開始執行開機自我檢測程序。
- 如申請專利範圍第9項所述之基本輸出入系統自我驗證選用唯讀記憶體方法,其中,判斷該驗證碼與該校驗值是否相同之步驟中,包括下述步驟:若該驗證碼與該校驗值不相同,則發出一警示通知,用以提示該應用裝置韌體異於該初始裝置韌體。
- 如申請專利範圍第13項所述之基本輸出入系統自我驗證選用唯讀記憶體方法,其中,判斷該驗證碼與該校驗值不相同之步驟後,更包括下述步驟:停止執行開機程序。
- 如申請專利範圍第9項所述之基本輸出入系統自我驗證選用唯讀記憶體方法,其中,該應用裝置韌體及該初始裝置韌體皆係為影像控制裝置韌體、網路裝置韌體、或週邊控制介面裝置韌體。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW97149140A TWI467484B (zh) | 2008-12-17 | 2008-12-17 | 自我驗證選用唯讀記憶體之基本輸出入系統及其驗證方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW97149140A TWI467484B (zh) | 2008-12-17 | 2008-12-17 | 自我驗證選用唯讀記憶體之基本輸出入系統及其驗證方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201025132A TW201025132A (en) | 2010-07-01 |
TWI467484B true TWI467484B (zh) | 2015-01-01 |
Family
ID=44852463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW97149140A TWI467484B (zh) | 2008-12-17 | 2008-12-17 | 自我驗證選用唯讀記憶體之基本輸出入系統及其驗證方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI467484B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514399A (zh) * | 2012-06-19 | 2014-01-15 | 鸿富锦精密工业(深圳)有限公司 | 固件验证方法及系统 |
CN112579368A (zh) * | 2019-09-29 | 2021-03-30 | 佛山市顺德区顺达电脑厂有限公司 | 电源管理芯片检测系统及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6711675B1 (en) * | 2000-02-11 | 2004-03-23 | Intel Corporation | Protected boot flow |
US7007159B2 (en) * | 2002-05-10 | 2006-02-28 | Intel Corporation | System and method for loading and integrating a firmware extension onto executable base system firmware during initialization |
-
2008
- 2008-12-17 TW TW97149140A patent/TWI467484B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6711675B1 (en) * | 2000-02-11 | 2004-03-23 | Intel Corporation | Protected boot flow |
US7007159B2 (en) * | 2002-05-10 | 2006-02-28 | Intel Corporation | System and method for loading and integrating a firmware extension onto executable base system firmware during initialization |
Also Published As
Publication number | Publication date |
---|---|
TW201025132A (en) | 2010-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6054908B2 (ja) | 変数セットを修復する方法、コンピュータ・プログラムおよびコンピュータ | |
US9858066B2 (en) | Updating firmware of a hardware component | |
JP5889933B2 (ja) | コンピュータの動作不良を防止する方法、コンピュータ・プログラムおよびコンピュータ | |
US7921286B2 (en) | Computer initialization for secure kernel | |
CN101807152B (zh) | 自我验证选择只读存储器的基本输出入系统及其验证方法 | |
JP5582909B2 (ja) | プラットフォーム完全性検証システム | |
TWI571800B (zh) | 電腦開機之方法與電腦系統 | |
JP4433401B2 (ja) | 情報処理システム、プログラム、及び情報処理方法 | |
US7412596B2 (en) | Method for preventing system wake up from a sleep state if a boot log returned during the system wake up cannot be authenticated | |
WO2020062887A1 (zh) | 基于闪存微控制器的固件升级方法和系统及闪存微控制器 | |
US9519786B1 (en) | Firmware integrity ensurance and update | |
TWI706274B (zh) | 容許透過復原代理器進行作業系統修復的運算裝置與非暫態電腦可讀儲存媒體 | |
KR100872175B1 (ko) | Tpm을 이용한 모바일 플랫폼의 보안 부팅 장치 및 방법 | |
US8281119B1 (en) | Separate normal firmware and developer firmware | |
TW202030602A (zh) | 基本輸入/輸出系統的恢復及更新的方法及系統 | |
TW201314574A (zh) | 用於電腦系統之基本輸入輸出系統程式更新方法及更新裝置 | |
TW200809489A (en) | BIOS damage detection and repair method and the motherboard | |
TWI467484B (zh) | 自我驗證選用唯讀記憶體之基本輸出入系統及其驗證方法 | |
JP5465738B2 (ja) | システム・ファームウェアの更新方法およびコンピュータ | |
US7428635B2 (en) | Method of writing non-volatile memory that avoids corrupting the vital initialization code | |
TW202318196A (zh) | 韌體映像檢查系統、韌體映像檢查方法及電腦系統 | |
CN114510751A (zh) | 一种基于处理器安全核的硬件防替换装置和方法 | |
TW594571B (en) | Upgrade control method of intelligent firmware | |
TWI607379B (zh) | Remote maintenance terminal device method, terminal device to be repaired, recording medium and program product | |
CN117785308A (zh) | 国产服务器启动方法、服务器、计算机设备及存储介质 |