TWI402682B - 對嵌入式控制器的記憶體保護 - Google Patents

對嵌入式控制器的記憶體保護 Download PDF

Info

Publication number
TWI402682B
TWI402682B TW097133504A TW97133504A TWI402682B TW I402682 B TWI402682 B TW I402682B TW 097133504 A TW097133504 A TW 097133504A TW 97133504 A TW97133504 A TW 97133504A TW I402682 B TWI402682 B TW I402682B
Authority
TW
Taiwan
Prior art keywords
memory
access
embedded controller
address
logic
Prior art date
Application number
TW097133504A
Other languages
English (en)
Other versions
TW200919196A (en
Inventor
Alan D Berenbaum
Raphael Weiss
Original Assignee
Standard Microsyst Smc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Standard Microsyst Smc filed Critical Standard Microsyst Smc
Publication of TW200919196A publication Critical patent/TW200919196A/zh
Application granted granted Critical
Publication of TWI402682B publication Critical patent/TWI402682B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range

Description

對嵌入式控制器的記憶體保護
本發明一般涉及計算設備的領域,尤其是涉及保護記憶體,例如在被包括在電腦系統中的系統單晶片中的資料及/或程式指令。
很多硬體系統包括中央處理單元(CPU),即,主處理器或主機處理器,以及用於執行系統的輔助功能例如初始化、輸入/輸出(I/O)、管理和重設功能的一個或更多嵌入式控制器。例如,嵌入式控制器可為系統單晶片(SoC)的一部分,系統單晶片也可包括耦合到嵌入式控制器的各種附加的元件,例如記憶體等。這樣的系統可能例如在系統CPU的啟動之前的系統初始化期間易受惡意用戶或外部代理(agent)的未授權的存取或篡改。
在阻止這樣的未授權的存取的一些方法中,"秘密(secret)"被儲存在例如SoC記憶體中的安全位置中,並由控制器執行的軟體來使用,根據該秘密的授權或使用該秘密本身來啟用功能,例如以驗證SoC所處於的系統是經授權的且沒有通過篡改而被更改,或啟用或禁止系統的某個方面例如元件或功能,及其他應用。在大多數費用敏感的設計中,秘密僅僅被保存在SoC記憶體中,並且假定攻擊者沒有足夠的動機或不夠聰明來以未授權的方式讀取該秘密。具有較低費用敏感性的方法經常使用強大的加密技術,包括硬體TPM(可信任平臺模組)的使用。
然而,通過簡單的隱匿來保密可能不足以抵禦足夠專門的攻擊,同時基於硬體的解決方案,例如TPM的使用可能太昂貴。而且,加密的強大的演算法可能需要比廉價的嵌入式控制器可提供的計算能力更多的計算能力。因此,期望用於為嵌入式控制器保護資料的改進的系統和方法。
在比較了現有技術與這裏描述的本發明的實施方式之後,與這樣的現有技術有關的其他相應的問題對本領域中具有通常知識者將變得明顯。
介紹了用於為系統中的嵌入式控制器保護資料的系統和方法的各種實施方式。系統,例如電腦系統可包括主處理器或主機處理器,以及例如包括在系統單晶片(SoC)中的嵌入式處理器和記憶體,其中根據一個實施方式,資料可由嵌入式控制器使用來,例如在系統的主處理器或主機處理器的啟動之前執行安全操作,例如系統驗證、登錄、功能或元件啟動。
首先,回應於開機重設(POR),可啟用對記憶體的存取。該啟用可通過各種方法中的任何一個來完成。如上所述,在一個實施方式中,系統可包括嵌入式控制器,例如嵌入式微控制器,其中控制對記憶體的存取包括通過嵌入式控制器(或系統的其他元件)來控制對記憶體的存取。
對記憶體的存取可通過保護邏輯和遮罩邏輯(masking logic)來控制或保護,邏輯的例子在下面被描述。在一個實施方式中,通過嵌入式控制器允許對記憶體的存取可包 括向耦合到記憶體的遮罩邏輯提供第一控制值,例如該遮罩邏輯插在嵌入式控制器和記憶體之間。遮罩邏輯可操作來使用第一控制值和從記憶體讀取的資料執行邏輯操作,其中邏輯操作維持從記憶體讀取的資料不變。換句話說,第一控制值可為不遮蔽從記憶體讀取的資料的"傳遞"值。
如上指出的,在一些實施方式中,嵌入式控制器和記憶體可包括在系統單晶片(SoC)中。例如,嵌入式控制器可為電腦系統的週邊設備控制器,例如鍵盤控制器。在各種實施方式中,記憶體可以是或包括一個或更多下列項:隨機存取記憶體(RAM)、非揮發性記憶體例如唯讀記憶體(ROM)、或暫存器,及其他類型的記憶體。因此,POR可啟用對記憶體,例如對儲存在記憶體中的秘密資料的存取,但是應注意,在其他實施方式中,可使用任何裝置或元件來執行這裏所描述的功能。
第一資料例如秘密資料可接著回應於上面的啟用而從記憶體中被讀取,其中第一資料可用於例如在主處理器的啟動之前對系統執行安全操作。第一資料例如秘密資料可為可由嵌入式控制器使用來對系統執行安全操作的任何類型的資料。例如,在一些實施方式中,這樣的系統的廠商可能希望驗證電腦系統的其他元件作為SoC的引導順序的一部分是被廠商授權的。可使用例如密碼或密鑰交換的方法,這需要將某個秘密的密鑰或密碼儲存在SoC上,即,第一資料可包括密鑰或密碼。因此,例如,在一些實施方式中,(秘密)資料可包括為了驗證系統元件而用在密碼或 密鑰交換中的密鑰或密碼,或用於系統的限制登錄的密碼,例如其中用戶可能需要提供匹配的密碼來開始主處理器的啟動,因此嵌入式控制器可針對密碼提示用戶,並且當用戶提供正確的密碼時開始主系統引導過程。當然,在其他實施方式中,第一資料可用在和用於所期望的任何安全操作,即,第一資料可為期望保護的任何類型的資料。
可禁止對記憶體的存取,其中在禁止之後記憶體是不可存取的。例如,在一個實施方式中,禁止存取可包括向遮罩邏輯提供第二控制值,其中遮罩邏輯可操作來使用第二控制值和從記憶體讀取的資料執行邏輯操作,且其中邏輯操作遮蔽從記憶體讀取的資料。如上所討論的,在一些實施方式中,系統包括嵌入式控制器,其中遮罩邏輯插在嵌入式控制器和記憶體之間。因此,在一些實施方式中,啟用對記憶體的存取包括通過嵌入式控制器來啟用對記憶體的存取,從記憶體中讀取第一資料包括嵌入式控制器從記憶體讀取第一資料,以及禁止對記憶體的存取包括通過嵌入式控制器來禁止對記憶體的存取。
在一個實施方式中,嵌入式控制器使用第一資料來對系統執行一個或更多安全操作可包括對系統執行初始化代碼,以及禁止對記憶體的存取可在對系統執行初始化代碼之後來執行。
注意,對記憶體的存取可在另一POR之前保持禁止,POR可再次使對記憶體的存取被啟用,如上所述。還應注意,以上面描述的方式限制對秘密資料的存取可通過,例 如阻止任何內部或外部媒介存取秘密資料,來防止未授權的存取,例如篡改或繞過系統初始化過程,其中秘密資料對系統的成功初始化可能是需要的。
因此,在一些實施方式中,在這裏可稱為讀-保護位元的控制值(即使它包括資料的多位元)一旦被設定(set),就可阻止對第一資料例如秘密的任何存取,第一資料可儲存在晶片上記憶體的一部分中或暫存器中。控制值(例如位元)可由POR電路清零,並可在任何時候由軟體進行設定。然而一旦被設定,除了晶片的完整的電源週期,即,另一POR之外,就較佳地沒有其他機制來使它再次清零。在嵌入式控制器初始化代碼有任何機會被(例如,由主機)修改之前,作為在嵌入式控制器上運行的第一代碼的嵌入式控制器初始化代碼可使用秘密並接著通過設定讀-保護位元來鎖定它。
然而應注意,上面方法的實施方式可用於實現更複雜的安全過程。例如,在一些系統中,第一資料例如秘密可保存在與系統的初始化代碼相同的記憶體的區域中,例如在晶片被製造之後秘密被編程到非揮發性記憶體中的系統中,且晶片製造商不知道有多少記憶體將包含秘密。此外,廠商可能希望保護初始化代碼本身不被攻擊者存取,因為反轉地設計代碼可能給攻擊者關於如何獲得秘密的暗示。在這樣的系統中,可能需要修改上面的方法和機制。
例如,需要處理的主要問題是,寫讀-保護位元的代碼可在讀-保護區域內,所以嵌入式控制器可能不能執行在 設定元讀-保護的指令之後的指令,因為上面的保護方案已經生效了。因此可使用讀-保護-啟用位元(或等效形式),其中讀-保護-啟用位元(或等效形式)可由軟體寫入。注意,在本實施方式中,讀-保護位元較佳地不可直接由軟體寫入,而相反可被設定,只要讀-保護-啟用位元被設定且嵌入式控制器執行被保護區域外的任何代碼。如上文,一旦被設定,則讀-保護位元就不能被清零,除非經由另一POR。
因此,下面描述的是上面用於保護初始化代碼的方法的實施方式,即,這些實施方式特別旨在保護系統中記憶體的指定區域,並利用額外的控制位元,例如讀-保護-啟用值(例如位元或有相等值的項目)來控制讀-保護位元的設定。換句話說,在下面的實施方式中,記憶體的內容,例如由儲存範圍指定的系統的初始化代碼可被保護。然而應注意,所描述的實施方式僅為示例性的,以及所描述的方法不限於使用任何特定的技術或元件,也不限於任何特定的記憶體或記憶體內容。
如上所討論的,在一些實施方式中,系統可包括嵌入式控制器。而且,在一些實施方式中,第一資料可包括系統的初始化代碼,其中初始化代碼具有位址範圍。啟用對記憶體的存取可包括啟用對記憶體內的位址範圍的存取,以及禁止對記憶體的存取可包括禁止對記憶體的位址範圍的存取。因此,在一些實施方式中,初始化代碼可為上面描述的秘密資料(其也可包括一個或更多密鑰及/或密碼)。
在一個實施方式中,上面的方法可進一步包括確定由嵌入式控制器產生的位址是否在初始化位址範圍之外,以及回應於確定由嵌入式控制器產生的位址在初始化位址範圍之外而啟用記憶體的保護。注意,啟用保護在禁止存取之前執行,其中記憶體在啟用保護之後和禁止存取之前是可存取的,且其中禁止存取對所產生的在初始化位址範圍內位址執行,其中所述禁止在所述啟用保護之後執行。
換句話說,啟用保護實際上不建立記憶體的保護,而是更確切地配置系統,以便在特定的條件下建立記憶體的保護(見上面被鎖的門類比)。因此所述禁止在產生了處於初始化位址範圍之外的至少一個位址之後阻止嵌入式控制器存取初始化位址範圍。換句話說,實際上觸發對位址範圍中記憶體存取的禁止的條件是當嵌入式處理器在離開位址範圍之後再次進入位址範圍時。注意,雖然對在位址範圍內的記憶體的存取被禁止,但是對於所產生的在初始化位址範圍之外的位址啟用對記憶體的存取。
在一個實施方式中,讀保護啟用值可在啟用記憶體的保護之前在記憶體元件中被設定,其中設定讀保護啟用值准許啟用記憶體的保護。換句話說,可設定準許對地址範圍的隨後保護的啟用(但還不是現行的保護)的值,例如位元。注意,該讀保護啟用值可由嵌入式控制器設定,而嵌入式控制器仍然操作在位址範圍內。因此該值可用於建立或啟用上面的保護啟用,這本身將系統置於用於觸發記憶體的現行保護的條件中。
以稍微不同的方式描述,在一個實施方式中,向遮罩邏輯提供第二控制值(見上面的禁止)可包括設定第三控制值,例如上面提到的讀-保護-啟用位元,以啟用提供第二控制值,接著,在設定第三控制值之後,確定嵌入式控制器嘗試存取在位址範圍之外的記憶體,並產生嵌入式控制器嘗試存取在位址範圍之外的記憶體的指示。接著可回應於第三控制值和該指示來禁止對記憶體的位址範圍的存取。
用另一方式敍述,第二控制值和指示可用於控制記憶體內指定的位址範圍是否和何時被保護。更具體地,當POR時,可通過嵌入式控制器啟用存取,例如以便在系統的主處理器或CPU的啟動之前,嵌入式控制器可執行初始化代碼來檢查或檢驗系統安全。嵌入式控制器可接著執行在指定位址範圍中的(初始化代碼)程式指令,例如可執行一些或所有初始化代碼。嵌入式控制器可接著設定第二控制值,例如讀-保護-啟用位元(或功能上等效的形式),以啟用第二控制值的使用,例如以啟用讀-保護位元(或功能上等效的形式)的設定,但是應注意,這麼做本質上不保護記憶體,即,設定第三控制值/讀-保護-啟用位元不禁止對記憶體的存取,而是更確切地使系統準備或啟用這樣的禁止。然後,當嵌入式控制器執行指定範圍之外的指令時,此事件與第三控制值/讀-保護-啟用位元結合可使第二控制值,例如讀-保護位元被設定,禁止了對記憶體內指定位址範圍的存取。注意,較佳地,對指定位址範圍之外的記 憶體位址的存取沒有被禁止。例如,在較佳實施方式中,如果被執行的指令在位址範圍之外,則可不向遮罩邏輯提供第二控制值。下面是所描述的實現上面的記憶體保護方案的一個實施方式的示例性詳細的系統的實施方式。
一旦啟用對記憶體的存取,就可執行從指定位址範圍內的記憶體的讀取,例如,在指定位址範圍內的初始化代碼程式指令可,例如由嵌入式控制器讀取和執行。
比較器可操作來確定程式指令何時在指定位元元元址範圍之外,並在其中產生指示。更具體地,比較器可操作來接收嵌入式控制器程式指令位元元元元址和初始化代碼的指定位址範圍,並產生關於位址在指定範圍內或外的指示。設定此第三控制值可允許系統隨後,例如當比較器確定位址在範圍之外時,保護記憶體。
因此,當POR例如啟動或重設時,可啟用對記憶體的存取,例如准許嵌入式控制器執行來自指定位址範圍的初始化代碼指令,例如以執行各種安全操作中的任何一個。接著,回應於讀-保護-啟用位元被設定和遇到具有在指定範圍之外的位元元址的程式指令,可禁止對指定範圍內的記憶體的存取,雖然仍然可獲得對具有在該範圍之外的位元元元址的指令的存取。對指定範圍的存取僅可由另一POR啟用。
在本機制的一個使用中,嵌入式控制器當在初始化塊內執行時可設定讀-保護-啟用位元。仍然在初始化塊範圍內的下一指令可為到初始化塊範圍之外的位置的轉移。一旦 執行該轉移,就可鎖住或保護初始化塊。注意,在沒有設定讀-保護-啟用位元的情況下,嵌入式控制器將不能在執行初始化塊內的指令時設定初始化塊保護,但在執行初始化塊之外的指令時必須這麼做,這可為入侵者打開掌握嵌入式控制器的控制並危害記憶體的被保護內容的機會的視窗。
除錯中斷
如可認識到的,為了維持系統安全,應不允許外部除錯功能來存取內部秘密,例如由上所述的第一資料,因為攻擊者可能使用除錯機制來竊取它。因此,在一個實施方式中,為了阻止除錯攻擊,所有的除錯存取(例如,聯合測試行動組(JTAG)埠、串列除錯埠或來自主機的匯流排存取)可在POR之後初始化成不活動的狀態。接著可僅在秘密被保護之後,例如通過設定讀-保護位元(例如,通過將控制值設定為遮蔽值)來啟用除錯存取。注意,可由嵌入式控制器通過編程寫入配置暫存器而明確地啟用存取,或讀-保護位元本身可用於啟用除錯存取。在後面的情況中,當禁止讀-保護(讀-保護的初始狀態)時中斷所有的除錯存取,以及當啟用讀-保護時啟用除錯存取(例如,通過這裏描述的一個過程)。因此,本方法可進一步包括回應於POR而禁止除錯存取,並回應於通過嵌入式控制器禁止對記憶體的該存取而啟用除錯存取。
因此,這裏描述的本發明的各種實施方式可有助於系統內的嵌入式微控制器的資料及/或程式指令的保護。
通過引用的合併
下面的參考資料在此通過引用被全部併入,如在這裏充分和完整闡述的:2007年8月31日申請的名為"Configurable Signature for Authenticating Data or Program Code",序列號為11/848,854的美國專利申請。
介紹了用於保護系統,例如電腦系統內的資料或程式指令的系統和方法的各種實施方式,其中系統包括主處理器或中央處理器,即,主機處理器以及具有記憶體的微控制器,其中微控制器在主處理器的啟動之前執行一個或更多安全操作。
注意,所使用的任何標題僅為了組織的目的而不是意指用於限制或解釋說明書或申請專利範圍。此外,應注意,在整個申請中所使用的"可以"的用詞含有許可的意義(即,有可能,能夠)而不是強制的意義(即,必須)。術語"包括"及其衍生詞意指"包括但不限於"。術語"耦合的"意指"直接或間接連接的"。
而且,如這裏使用的,"指令集"可指一個或更多指令。更具體地,在一些實施方式中,"指令"可指程式碼、軟體及/或以代碼形式實現的功能,該代碼可由控制器、微處理器及/或適合於執行這些指令的自定義邏輯電路來執行。在一些實施方式中,這些指令可包括設備驅動器、控制軟體及/或機器代碼。
如這裏使用的"控制器"指任何類型的處理器,例如中央處理單元(CPU)、微處理器、微控制器,或嵌入式控制器或微控制器等。
概述
這裏描述的本發明的各種實施方式可提供用於維持或驗證系統安全的資料及/或程式指令的保護。
圖1-示例性電腦系統 圖1是示例性電腦系統82的高層結構圖,該系統被配置成實現本發明的一個實施方式,特別地通過在系統初始化期間,例如在系統CPU的啟動之前,限制對資料的存取來保護資料(和/或程式指令),例如"秘密"資料或僅僅是"秘密"。圖1的系統包括電腦系統,例如個人電腦(PC),雖然在其他實施方式中,這裏描述的技術和系統可如期望的以任何其他系統實現。
如圖1所示,電腦系統82包括根據本發明的實施方式被保護的記憶體104。在較佳實施方式中,電腦系統82包括主處理器或中央處理器,即,主機處理器,以及一個或更多微控制器,例如每個微控制器都在各自的系統單晶片(SoC)中,例如用於管理或控制鍵盤和主處理器之間的通信的鍵盤控制器。記憶體較佳地包括在具有嵌入式控制器的SoC上,且在各種實施方式中可如期望地為非揮發性記憶體例如ROM(唯讀記憶體),或揮發性記憶體例如RAM或暫存器。下面參考圖2、4和5提供了關於系統的示例性實施方式的進一步的細節。
在較佳實施方式中,秘密可被儲存在SoC(片上系統)的記憶體中,以使在SoC中嵌入式控制器上運行的軟體可存取並使用秘密,例如,根據該秘密的授權或使用該秘密本身來啟動功能,驗證SoC所在的系統是經授權的且沒有通過篡改被更改,或啟用或禁止系統的某個方面,及其它用途。對儲存秘密的要求可包括:1)秘密必須不被洩漏給在嵌入式控制器之外的任何實體;2)如果在嵌入式控制器之外的任何實體可能讀取或修改SoC中的記憶體是可能的,對秘密的存取應被限制,使得甚至嵌入式控制器也不能讀取它;以及3)不能使用專用(且因此是昂貴的)硬體技術,例如OTP(一次可編程的)記憶體或熔絲,只有標準邏輯和記憶體技術是可利用的。因此,電腦系統82可包括可操作來管理和保護對SoC內記憶體的存取的系統。
在一個實施方式中,系統可包括第一記憶體和第二記憶體,第一記憶體儲存資料,例如秘密資料,例如用於檢查或檢驗系統的安全性的密鑰或密碼,第二記憶體可操作來儲存阻止對第一記憶體的存取的第一值,其中第二記憶體包括輸入,該輸入可操作來接收指示在系統內產生的開機重設(POR)的信號。系統還可包括耦合到第一記憶體和第二記憶體的第一邏輯,其中第一邏輯可操作來根據儲存在第二記憶體中的值而控制對第一記憶體內的資料的存取。回應於所產生的開機重設,第二記憶體可操作來儲存第二值,其中第一邏輯回應於儲存在第二記憶體中的第二值而啟用對第一記憶體的存取。如上所述,在一些實施方式 中,系統包括耦合到第一記憶體的嵌入式控制器,其中控制對資料的存取包括通過嵌入式控制器來控制對資料的存取。
在一個實施方式中,第一邏輯可操作來確定由嵌入式控制器產生的位址是否在初始化位址範圍內。第一邏輯可操作來對於由嵌入式控制器產生的處於初始化位址範圍內的位址啟用對第一記憶體的存取,其中,在嵌入式控制器產生處於初始化位址範圍之外的至少一個位址之後,第一邏輯可操作來對於由嵌入式控制器產生的處於初始化位址範圍內的隨後的位址禁止對第一記憶體的存取。例如,在一個實施方式中,第一邏輯可包括比較器,其中比較器具有可操作來接收由嵌入式控制器產生的位址的第一輸入,以及其中比較器可操作來將由嵌入式控制器產生的位址與初始化位址範圍相比較。
以稍微不同的方式陳述,在一個實施方式中,系統可包括嵌入式控制器;耦合到嵌入式控制器的第一記憶體,第一記憶體為該嵌入式控制器儲存初始化代碼及/或數據;以及第二記憶體,第二記憶體可操作來儲存啟用對第一記憶體的存取的阻止的第一值,其中第二記憶體包括輸入,該輸入可操作來接收指示在系統內產生的開機重設的信號。系統還可包括耦合到第一記憶體和第二記憶體的第一邏輯,其中第一邏輯可操作來根據儲存在第二記憶體中的值而控制對第一記憶體內的資料的存取。回應於所產生的開機重設,第二記憶體可操作來儲存第二值,其中第一邏 輯響應於儲存在第二記憶體中的第二值而啟用對第一記憶體的存取。第一邏輯可操作來確定由嵌入式控制器產生的位址是否處於初始化位址範圍內,並且對於由嵌入式控制器產生的處於初始化位址範圍內的位址啟用對第一記憶體的存取。在開機重設之後和在嵌入式控制器產生處於初始化位址範圍之外的至少一個位址之後,第一邏輯可操作來對由嵌入式控制器產生的處於初始化位址範圍內的隨後的位址禁止對第一記憶體的存取。在一個實施方式中,第一邏輯可操作來對於所產生的處於初始化位址範圍之外的位址啟用對記憶體的存取。
換句話說,當POR時,系統可操作來例如通過嵌入式控制啟用對記憶體的存取,准許嵌入式控制器執行來自記憶體的初始化代碼,其中初始化代碼處於指定的位址範圍內。系統可接著配置成當嵌入式處理器呈現(present)在位址範圍之外的位址時禁止對記憶體的存取。當嵌入式控制器呈現在地址範圍之外的地址時,例如,當嵌入式控制器離開該地址範圍時,就中斷對該位址範圍內的記憶體的內容的存取,雖然仍然允許對該範圍之外的記憶體的存取。
作為類比,考慮在具有包含檔(秘密資料)的房間(記憶體)的房屋內接通電流的用戶,其中當電流被接通時,通向房間的門自動打開(POR啟用對記憶體的存取)。用戶進入房間並閱讀文件(嵌入式控制器存取記憶體和執行初始化代碼),並按下門上的鎖定按鈕(配置系統以當嵌入式處理器呈現在位址範圍之外的位址時禁止對記憶體的存 取),這樣還沒有將用戶鎖在外面,因為用戶仍然在房間內(嵌入式處理器仍然存取在位址範圍內的記憶體)。接著,用戶離開房間並關閉門,從而鎖上門並阻止用戶再次進入房間(嵌入式處理器呈現在位址範圍之外的位址,且對位址範圍內的記憶體的內容的存取被中斷,雖然仍然允許對該範圍之外的記憶體的存取)。用戶在關機並再次開機之前不能再次進入房間(當另一POR時啟用對位址範圍內的記憶體的存取)。
因此,對指定位址範圍的存取可被限制為從立即在POR之後到當嵌入式處理器呈現在指定位址範圍之外的位址時的時期,從而出現未經授權的存取,例如篡改或繞過(circumvention)系統的初始化過程。
現在描述這樣的系統的具體的實施方式。
圖2-示例性系統的高層結構圖 圖2是根據一個實施方式的示例性系統的高層結構圖。更具體地,圖2示出實現本發明的實施方式的示例性系統的主要元件。
如圖2所示,系統可包括耦合到記憶體204的嵌入式控制器202,並可通過I/O設備207與外部系統或元件通信,I/O設備207可通過一個或更多匯流排例如所示的處理器資料匯流排和處理器位址來耦合到嵌入式控制器202。在較佳實施方式中,遮罩邏輯(mask logic)203可插在嵌入式控制器202和記憶體204之間,例如,嵌入式控制器和處理器資料匯流排之間。此外,在一些實施方式中,保護邏輯201 也可插在嵌入式控制器202和記憶體204之間,例如,嵌入式控制器和處理器位址匯流排之間。遮罩邏輯可操作來根據提供給遮罩邏輯203的控制值遮罩或傳遞(pass through)從記憶體204讀取的資料,如將在下面更詳細描述的。保護邏輯201可操作來如期望的根據系統的具體狀況,例如根據開機重設(POR)、記憶體存取等來確定控制值,如將在下面更詳細解釋的。
如圖2所示,在較佳實施方式中,系統可以為或包括系統單晶片(SoC)200,所以記憶體、遮罩邏輯,和保護邏輯201對嵌入式控制器202來說可以是本地的。
圖3-用於保護系統中的資料的方法 圖3是用於保護系統,例如電腦中的資料的方法的高層流程圖,該系統可包括主處理器或主機處理器,以及例如包括在SoC中的嵌入式處理器和記憶體,其中根據一個實施方式,在系統的主處理器或主機處理器的啟動之前,資料可由嵌入式控制器使用來執行安全性操作,例如系統驗證、登錄等。在各種實施方式中,所示的一些方法元件可按與所示出的不同的順序被同時執行,或可被省略。也可如期望的執行額外的方法元件。如所示,該方法可如下操作。
在302中,回應於開機重設(POR),可啟用對記憶體的存取。該啟用可經由各種方法中的任何一個來實現。如上所述和如圖2所示,在一個實施方式中,系統可包括嵌入式控制器例如嵌入式微控制器,其中控制對記憶體的存取包 括通過嵌入式控制器(或系統的其他元件)來控制對記憶體的存取。
同樣如圖2所示,在一些實施方式中,對記憶體104的存取可由保護邏輯201和遮罩203控制或保護,下面描述其例子。
在一個實施方式中,通過嵌入式控制器啟用對記憶體的存取可包括向耦合到記憶體的遮罩邏輯提供第一控制值,該遮罩邏輯例如插在嵌入式控制器和記憶體之間。遮罩邏輯可操作來使用第一控制值和從記憶體讀取的資料執行邏輯操作,其中邏輯操作維持從記憶體讀取的資料不變。換句話說,第一控制值可為不遮蔽從記憶體讀取的資料的"傳遞"值。例如,在一些實施方式中,向遮罩邏輯提供第一控制值可包括接收POR並在回應中輸出初始控制值的正反器(flip-flop)、反轉初始控制值以產生第一控制值的反相器,以及該反相器向遮罩邏輯提供第一控制值。遮罩邏輯可以為或包括"及"閘,其中第一控制值是"及"閘的傳遞值,且其中遮罩邏輯可操作來使第一控制值和從記憶體讀取的資料進行邏輯乘,維持從記憶體讀取的資料不變。
圖4是用於控制對記憶體104的存取的示例性介面的結構圖,但是應注意,在其他實施方式中,不同的裝置或元件可用於實現這裏描述的功能。
如圖4所示,在本實施方式中,"及"閘403(例如遮罩邏輯)可插在記憶體104和嵌入式控制器之間,更具體地,在嵌入式控制器和嵌入式控制器的讀匯流排(其被標註為例 如圖2的處理器資料匯流排)之間,由此嵌入式控制器執行從記憶體中的讀取。"及"閘403可操作來接收兩個輸入:來自記憶體104的資料和控制值,例如來自可用於遮蔽來自記憶體104的資料的介面的布林控制值,例如一位元。如所示,記憶體104儲存資料,例如秘密405,嵌入式控制器可能需要例如在主處理器的啟動之前執行用於系統的安全性操作。如圖4所示,及閘可操作來在每次操作中遮蔽(傳遞)資料的n位元,即,及閘可包括多個及閘。更具體地,在每次讀週期中通過n個及閘可遮蔽來自記憶體的資料的n位元。因此,及閘403可包括多個及閘。
如可看到的,在本實施方式中,介面可通過正反器402和反相器407產生控制值,在這種情況下正反器402是設定/重設(SR)正反器,其可稱為讀-保護正反器,其中正反器可操作來接收開機重設(POR)例如信號或位元,以使正反器重設,以及接收寫入-1(或等效形式)值,例如信號或位元,以使正反器設定。根據哪個信號最近被設定為有效(assert),正反器可按下面的方式輸出布林值,例如位元。因此,當開機重設(POR)時,正反器可被重設,從而在正反器的輸出Q呈現"0";以及當接收寫入-1值,例如"1"(例如,或其他非零值)時,正反器可在輸出Q呈現"1"。
注意,在所示實施方式中,來自Q的輸出位元在被(作為控制值)提供給及閘403之前被反轉。因此,POR導致在及閘403的"0"的控制值,以及在正反器的寫入-1設定有效導致在及閘403的"1"的控制值。及閘403可接著根據控制值 傳遞或遮蔽從記憶體讀取的資料。例如,回應於POR,呈現給及閘403的控制值是"1","1"在與從記憶體104讀取的位元例如秘密405進行邏輯乘時維持被讀取的位元不變,因而啟用對記憶體104的存取。相反,回應於寫入-1,呈現給及閘403的控制值是"0","0"在與從記憶體104讀取的位元,例如秘密405進行邏輯乘時導致全零,因而禁止對記憶體104的存取。換句話說,從記憶體104讀取的任何資料轉變為零,因而使通過嵌入式控制器進行的讀取操作變得不成功。當然,等效的功能可通過邏輯元件和操作的不同組合來獲得,上面僅僅是這樣的介面的一個示例性的實施方式。
如上所指出的,在一些實施方式中,嵌入式控制器和記憶體可包括在系統單晶片(SoC)中。例如,嵌入式控制器可為電腦系統的週邊設備控制器,例如鍵盤控制器。在各種實施方式中,記憶體可以為或包括一個或更多下列項:隨機存取記憶體(RAM)、非揮發性記憶體例如唯讀記憶體(ROM),或暫存器,及其它類型的記憶體。
因此,在正反器402處的POR可啟用對記憶體104,例如對儲存在記憶體104中的秘密資料405的存取。
在304中,回應於302的啟用,第一資料例如秘密資料405可從記憶體中讀取,其中第一資料可用來例如在主處理器的啟動之前執行用於系統的安全性操作。如上所述,第一資料,例如秘密資料405可為可由嵌入式控制器使用來執行用於系統的安全性操作的任何類型的資料。例如, 在一些實施方式中,這樣的系統的廠商可能希望,作為SoC的引導順序的一部分,驗證電腦系統的其他元件是被其授權的。可使用例如密碼或密鑰交換的方法,這需要將某個秘密的密鑰或密碼儲存在SoC上,即,第一資料可包括密鑰或密碼。因此,例如,在一些實施方式中,(秘密)資料405可包括為了驗證系統元件而用在密碼或密鑰交換中的密鑰或密碼,或用於限制對系統的登錄的密碼,例如其中用戶可能被要求提供匹配的密碼來開始主處理器的啟動,並且因此嵌入式控制器可針對密碼提示用戶,並且當用戶提供正確的密碼時開始主系統引導過程。當然,在其他實施方式中,第一資料可用在和用於所期望的任何安全操作,即,第一資料可為期望保護的任何類型的資料。
在306中,可禁止對記憶體的存取,其中在禁止之後記憶體是不可存取的。例如,在一個實施方式中,禁止存取可包括向遮罩邏輯提供第二控制值,其中遮罩邏輯可操作來使用第二控制值和從記憶體讀取的資料執行邏輯操作,且其中邏輯操作遮蔽從記憶體讀取的資料。如上所討論的,在一些實施方式中,系統包括嵌入式控制器,其中遮罩邏輯插在嵌入式控制器和記憶體之間。因此,在一些實施方式中,啟用對記憶體的存取包括通過嵌入式控制器來啟用對記憶體的存取,從記憶體讀取第一資料包括嵌入式控制器從記憶體中讀取第一資料,以及禁止對記憶體的存取包括通過嵌入式控制器來禁止對記憶體的存取。
如上所述,遮罩邏輯可以為或包括例如插在嵌入式控制 器和記憶體之間的及閘。在一個實施方式中,為了禁止對記憶體的存取,第二控制值可為用於該及閘的遮蔽值,其中該遮罩邏輯可操作來使第二控制值和從記憶體讀取的資料進行邏輯乘,以遮蔽從記憶體讀取的資料。在一個實施方式中,向遮罩邏輯提供第一控制值可包括正反器(例如,302中的正反器)接收設定值(set value)並在回應中輸出初始控制值,反相器反轉該初始控制值以產生第二控制值,以及該反相器向遮罩邏輯提供該第二控制值。
再次回到圖4的實例系統,一旦秘密資料405(即,第一資料)被從記憶體104中讀取,則寫入-1(或等效形式)位元(例如"1")就可被寫到正反器402,從而將正反器的狀態設定為"1",其可接著在Q被輸出,被反相器407反轉(為"0"),並。被提供給及閘403,其後,如上所述,從記憶體104讀取的任何資料可轉變為零,因而禁止存取例如來自記憶體104的讀取資料。
在一個實施方式中,嵌入式控制器使用第一資料來執行用於系統的一個或更多安全性操作可包括對系統執行初始化代碼,且禁止對記憶體的存取可包括嵌入式控制器在對系統執行初始化代碼之後將設定值寫到正反器中。
注意,對記憶體104的存取可在另一POR之前保持被禁止,這可再次使對記憶體的存取被啟用,如上所述。還應注意,以上面描述的方式限制對秘密資料405的存取可例如通過阻止任何內部或外部代理存取秘密資料來防止未授權的存取,例如篡改或繞過系統初始化過程,其中秘密資 料對系統的成功初始化可以是必需的。
因此,在圖4的系統中,正反器(結合反相器407)可提供讀-保護位元(或等效形式),一旦該讀-保護位元被啟用其就遮蔽秘密資料。換句話說,正反器可在POR時被重設為0狀態,這允許秘密在EC資料匯流排上是可讀的。將1寫到讀-保護正反器就使正反器設定為1狀態。因為正反器的重設輸入僅僅連接到POR電路,所以只要施加了電源它將不返回到0狀態。在1狀態,正反器可遮蔽秘密的所有位元,所以它總是讀為0。因為沒有其他方法來讀取秘密,因此一旦讀-保護位元被設定,就可隱藏秘密。
因此,在一些實施方式中,在這裏可稱為讀-保護位元的控制值(即使它包括資料的多個位元)一旦被設定,就可阻止對第一資料,例如秘密的任何存取,第一資料可儲存在晶片上記憶體的一部分中或暫存器中。控制值(例如位元)可由POR電路清零,並可在任何時候由軟體進行設定。然而,除了晶片的完整的電源週期(power cycle),即,另一POR之外,一旦被設定,就較佳地沒有其他機制來使它再次清零。在嵌入式控制器初始化代碼有任何機會被(例如,由主機)修改之前,作為在嵌入式控制器上運行的第一代碼的嵌入式控制器初始化代碼可使用秘密並接著通過設定讀保護位元來鎖定它。
保護初始化代碼
然而應注意,上面方法的實施方式可用於實現更複雜的安全性過程。例如,在一些系統中,第一資料例如秘密可 保存在記憶體的相同區域,作為系統的初始化代碼,其中的系統例如在晶片被製造之後秘密被編程到非揮發性記憶體中的系統中,且晶片製造商不知道有多少記憶體將包含秘密。此外,廠商可能希望初始化代碼本身被保護不被攻擊者存取,因為反轉地(reverse)設計代碼可能給攻擊者關於如何獲得秘密的暗示。在這樣的系統中,可能需要修改上面的方法和機制。
例如,需要處理的主要問題是,待寫入讀-保護位元的代碼可在讀保護區域內,所以嵌入式控制器可能不能執行在設定讀保護的指令之後的指令,因為上面的保護方案已經生效了。因此可使用讀-保護-啟用位元(或等效形式),其中讀-保護-啟用位元(或等效形式)可以是軟體可寫的。注意,在本實施方式中,讀-保護位元較佳地不是直接由軟體可寫的,而相反可被設定,只要讀-保護-啟用位元被設定且嵌入式控制器執行被保護區域外的任何代碼。如同圖3的方法一樣,一旦被設定,讀-保護位元就不能被清零,除非通過另一POR。
因此,下面所描述的是用於保護初始化代碼的上面方法的實施方式,即,這些實施方式特別旨在保護系統中記憶體的指定區域,並利用額外的控制位元,例如讀-保護-啟用值(例如位元或有相等值的項)來控制讀-保護位元的設定。換句話說,在下面的實施方式中,記憶體的內容,例如由儲存範圍指定的系統的初始化代碼可被保護。然而應注意,所描述的實施方式意為僅是示例性的,以及所描述 的方法不限於使用任何特定的技術或元件,也不限於任何特定的記憶體或記憶體內容。
如上所討論的,在一些實施方式中,系統可包括嵌入式控制器。而且,在一些實施方式中,第一資料可包括系統的初始化代碼,其中初始化代碼具有位址範圍。啟用對記憶體的存取可包括啟用對記憶體內的位址範圍的存取,以及禁止對記憶體的存取可包括禁止對記憶體的位址範圍的存取。因此,在一些實施方式中,初始化代碼可為上面描述的秘密資料(其也可包括一個或更多密鑰及/或密碼)。
在一個實施方式中,圖3的方法可進一步包括確定由嵌入式控制器產生的位址是否在初始化位址範圍之外,以及回應於確定了由嵌入式控制器產生的位址在初始化位址範圍之外而啟用記憶體的保護。注意,啟用保護在禁止存取之前執行,其中記憶體在啟用保護之後和禁止存取之前是可存取的,且其中禁止存取對所產生的在初始化位址範圍內的位址執行,其中所述禁止在所述啟用保護之後執行。
換句話說,啟用保護實際上不建立記憶體的保護,而是更確切地配置系統,以便在特定的條件下建立記憶體的保護(見上面被鎖的門的類比)。因此在產生了處於初始化位址範圍之外的至少一個位址之後,所述禁止阻止嵌入式控制器存取初始化位址範圍。換句話說,實際上觸發對在位址範圍內的記憶體的存取的禁止的條件是當嵌入式處理器在離開位址範圍之後再次進入位址範圍時。注意,雖然對在位址範圍中的記憶體的存取被禁止,但是對於所產生的 在初始化位址範圍之外產生的位址允許對記憶體的存取。
在一個實施方式中,讀保護啟用值可在記憶體的啟用保護之前在記憶體元件中被設定,其中設定讀保護啟用值准許記憶體的啟用保護。換句話說,可設定準許對地址範圍隨後的保護啟用(但還不是現時的保護)的值,例如位元。注意,該讀保護啟用值可由嵌入式控制器設定,同時嵌入式控制器仍然在位址範圍內操作。因此該值可用於設立或啟用上面的保護啟用,這本身將系統置於用於觸發記憶體的現時保護的條件中。
以稍微不同的方式描述,在一個實施方式中,向遮罩邏輯提供第二控制值(見上面的306)可包括設定第三控制值,例如上面提到的讀-保護-啟用位元,以啟用提供第二控制值,接著,在設定第三控制值之後,確定嵌入式控制器試圖存取在位址範圍之外的記憶體,並產生嵌入式控制器試圖存取在位址範圍之外的記憶體的指示。接著可回應於第三控制值和該指示來禁止對記憶體的位址範圍的存取。
例如,下麵示出了足以設定讀-保護位元的示例性的兩個指令代碼序列:Protect Region:STORE Read-Protect-Enable,1;set the enable bit JUMP Unprotected_Region;proceed
注意,到被保護區域之外的代碼的轉移(JUMP)將設定讀-保護位元,並且代碼,即秘密資料將被保護。
用另一方式敍述,第二控制值和指示可用於控制記憶體 內指定的位址範圍是否和何時被保護。更具體地,當POR時(見上面的302),可啟動通過嵌入式控制器的存取,例如以便在系統的主處理器或CPU的啟動之前,嵌入式控制器可執行初始化代碼來檢查或檢驗系統安全性。嵌入式控制器可接著執行在指定位址範圍中的(初始化代碼)程式指令,例如可執行一些或所有初始化代碼。嵌入式控制器可接著設定第二控制值,例如讀-保護-啟用位元(或功能上等效的形式),以啟用第二控制值的使用,例如啟用設定讀-保護位元(或功能上等效的形式),但是應注意,這麼做本質上不保護記憶體,即,設定第三控制值/讀-保護-啟用位元不禁止對記憶體的存取,而是更確切地使系統準備或啟用這樣的禁止。然後,當嵌入式控制器執行指定範圍之外的指令時,此事件與第三控制值/讀-保護-啟用位元結合可使第二控制值,例如讀-保護位元被設定,禁止了對記憶體內指定位址範圍的存取。注意,較佳地,對指定位址範圍之外的記憶體位址的存取沒有被禁止。例如,在較佳實施方式中,如果被執行的指令在位址範圍之外,則可不向遮罩邏輯提供第二控制值。下面所描述的是實現上面的記憶體保護方案的一個實施方式的示例性詳細的系統的實施方式。
實現該記憶體保護方案的系統的一個實施方式在圖5中示出,其中圖5的系統包括與圖4的電路比較的額外的電路。如可看到的,在本實施方式中,正反器402通過"反及"閘435耦合到及閘403(與圖4的反相器407對比)。正反器 402還可耦合到及閘503,及閘503本身可耦合到正反器502和比較器440,這兩個在下面被更詳細的描述。反及閘435也可耦合到反相器507,反相器507可進一步耦合到比較器440。如圖5進一步示出的,反及閘435可操作來向遮罩邏輯,在這種情況下為及閘403提供值,例如第一和第二值,以控制對記憶體104的存取,其中在圖5中,這些值由標記"nCLR",即,"清零、低態有效"表示,意味著當信號"nCLR"為0時,一些其他信號被迫為0(資料被遮蔽,如下所述)。當"nCLR"為1時,則其他信號被沒有更改地傳遞(資料沒有被遮蔽)。下面描述圖5的系統的操作。
在一個實施方式中,向遮罩邏輯提供第一控制值包括正反器,例如圖5的正反器402接收POR並在回應中輸出初始控制值。反及閘,例如反及閘435可根據該初始控制值產生第一控制值,並向遮罩邏輯,例如及閘403提供該第一控制值。注意,如果提供給反及閘的初始控制值為0,則反及閘總是向遮罩邏輯提供第一控制值,而不管哪些其他值被與初始控制值同時輸入到反及閘。
一旦啟用對記憶體的存取,就可執行從指定位址範圍內記憶體的讀取(見上面的304),例如,在指定位址範圍內的初始化代碼程式指令可例如由嵌入式控制器讀取和執行。
如圖5所示,比較器440可操作來確定程式指令何時在指定位元元元址範圍之外,並產生其指示。更具體地,比較器可操作來接收在這裏被標記為"EC位址"的嵌入式控制器程式指令位元元元址和被標記為"初始化位址範圍"的初始 化代碼的指定位址範圍,並產生關於EC位址在指定範圍內或外的指示,例如"1",指示EC地址在範圍外,或"0",指示EC地址在指定範圍內。同樣如所示,此指示器可被提供給及閘503用於控制正反器402的設定,並提供給反及閘435(在反轉指示器值之後,即,將"1"反轉為"0",或將"0"反轉為"1")以控制下面描述的遮蔽。
關於禁止對記憶體的存取,在一個實施方式中,向遮罩邏輯提供第二控制值(見306)可包括正反器,例如正反器402接收設定值並在回應中輸出初始控制值;反及閘,例如反及閘435根據初始控制值和指示產生第二控制值;以及反及閘向遮罩邏輯提供第二控制值。
在一些實施方式中,正反器接收設定值可包括將另一正反器,例如正反器502設定為第三控制值,例如設定讀-保護-啟用位元(或等效形式);及閘,例如及閘503從另一正反器(例如正反器502)接收第三控制值;及閘接收該指示,且根據第三控制值和指示產生設定值;以及正反器從及閘接收設定值。如上所述,設定該第三控制值可允許系統,例如當比較器440確定了EC位址在範圍外時,隨後保護記憶體。
因此,例如,一旦第三控制值,例如讀-保護-啟用位元(或等效形式)被設定,則當比較器440指示EC位址在指定位址範圍之外時,反及閘根據初始控制值和指示產生第二控制值可包括:反相器,例如反相器507反轉該指示,並向反及閘提供反轉的指示;以及反及閘使初始控制值和反 轉的指示進行反及邏輯運算以產生第二控制值,第二控制值可接著被提供給遮罩邏輯,例如及閘403以遮蔽從記憶體104讀取的資料。
因此,總結上文,當POR,例如啟動或重設時,可啟用對記憶體的存取,例如准許嵌入式控制器執行來自指定位址範圍的初始化代碼指令,以例如執行各種安全操作中的任何一個。接著,回應於讀-保護啟用位元被設定和遇到具有在指定範圍之外的位元元址的程式指令,可禁止對指定範圍內記憶體的存取,雖然仍然可獲得對具有在該範圍之外的位元元元址的指令的存取。可僅通過另一POR來啟用對指定範圍的存取。
以另一方式陳述,在圖5的系統中,在一個實施方式中,讀-保護位元僅當讀-保護啟用位元被設定且嵌入式控制器發佈在記憶體的初始化塊之外的位址時被設定。一旦讀-保護位元被設定,則它就可保持設定,直到下一電源週期為止。當讀-保護位元被設定時,讀-保護位元可中斷在初始化塊內的位址處記憶體104(嵌入式控制器記憶體)的任何讀取。在本實施方式中,通過n個及閘來遮蔽來自記憶體104的資料的n位元。當讀-保護位元被設定且EC地址位於初始化塊地址範圍內時,反及閘的輸出,如nCLR將為0。因此每當EC位址在初始化塊位址範圍內時,信號nCLR可遮蔽從記憶體讀取的所有資料位元。
在本機制的一個使用中,嵌入式控制器當在初始化塊內執行時可設定讀-保護-啟用位元。仍然在初始化塊範圍內 的下一指令可為到初始化塊範圍之外的位置的轉移。一旦執行該轉移,就可鎖住或保護該初始化塊,如上所述。注意,在沒有設定讀-保護-啟用位元的情況下,嵌入式控制器將不能在執行初始化塊內的指令時設定初始化塊保護,但在執行初始化塊之外的指令時必須這麼做,這可為入侵者打開掌握對嵌入式控制器的控制並危害記憶體的被保護內容的機會的視窗。
除錯中斷
如可認識到的,為了維持系統安全,應不允許外部除錯功能來存取內部秘密,例如由上所述的第一資料,因為攻擊者可能使用除錯機制來竊取它。因此,在一個實施方式中,為了阻止除錯攻擊,所有的除錯存取(例如,聯合測試行動組(JTAG)埠、串列除錯埠或來自主機的匯流排存取)可在POR之後初始化成不活動的狀態。接著可僅在秘密被保護之後,例如通過設定讀-保護位元(例如,通過將控制值設定為遮蔽值)來啟用除錯存取。注意,可由嵌入式控制器通過編程的寫入配置暫存器來明確地啟用存取,或讀-保護位元本身可用於啟用除錯存取。在後面的情況中,當禁止讀保護(讀-保護的初始狀態)時,中斷所有的除錯存取,以及當啟用讀-保護時啟用除錯存取(例如,通過這裏描述的過程之一)。因此,本方法可進一步包括回應於POR而禁止除錯存取,並回應於通過嵌入式控制器禁止對記憶體的所述存取而啟用除錯存取。
注意,上面的解決方案的實施方式可避免使用複雜的加 密機制,這可減少對專用硬體的需要,並相當大地降低對嵌入式控制器的計算能力的要求。例如,如上所討論的,所需要的專用硬體可限制為少量簡單的閘、正反器和反相器。
因此,使用上面描述的方法的實施方式,可控制或管理對資料及/或程式指令的存取,以阻止對秘密資料,例如密鑰、密碼或甚至初始化代碼的未經授權的存取、使用或繞過、或篡改用在系統的初始化過程之中的秘密資料,例如密鑰、密碼或甚至初始化代碼,例如以在系統中主處理器的啟動之前維持或驗證系統的安全。
82‧‧‧電腦系統
104、204‧‧‧記憶體
200‧‧‧系統單晶片
201‧‧‧保護邏輯
202‧‧‧嵌入式控制器
203‧‧‧遮罩
207‧‧‧I/O設備
302、304、306‧‧‧步驟
402、502‧‧‧正反器
403、503‧‧‧及閘
405‧‧‧秘密
407、507‧‧‧反相器
435‧‧‧反及閘
440‧‧‧比較器
當與圖式一起閱讀時,參考下面的詳細描述,本發明的前述以及其他目的、特點和優點將被更全面地理解,其中:圖1示出配置為實現本發明的一個實施方式的示例性電腦系統;圖2是根據本發明的一個實施方式的示例性高層系統結構圖;圖3是根據一個實施方式用於為系統中的微控制器保護資料的方法的流程圖;圖4是根據一個實施方式用於保護資料的系統的示例性結構圖;圖5是根據一個實施方式用於保護記憶體的系統的示例性結構圖。
儘管本發明易於進行各種更改和替代形式,但是通過圖式中的實例示出了其具體實施方式,並且這裏將詳細描述這些具體實施方式。然而,應該理解,對此的這些圖式和詳細描述並不旨在將本發明限制為所公開的特定形式,而是相反,本發明旨在包含落入由隨附的申請專利範圍界定的本發明精神和範圍內的所有更改、等效形式和替代形式。
302、304、306‧‧‧步驟

Claims (18)

  1. 一種用於保護一系統內的資料的方法,該方法包括以下步驟:回應於一開機重設,啟用對一記憶體的存取;回應於該啟用而從該記憶體讀取一第一資料,其中該第一資料可用於在該系統中的一主處理器的啟動之前對該系統執行安全操作;在該第一資料用於對該系統執行一個或更多安全操作之後,禁止對該記憶體的存取,其中在該禁止之後,該記憶體至少在一隨後的開機重設之前是不可存取的,其中該系統包括一嵌入式控制器,其中啟用對該記憶體的存取的該步驟包括通過該嵌入式控制器來啟用對該記憶體的存取,其中從記憶體讀取該第一資料的該步驟包括該嵌入式控制器從該記憶體讀取該第一資料,以及其中禁止對該記憶體的存取的該步驟包括通過該嵌入式控制器來禁止對該記憶體的存取,及其中通過該嵌入式控制器來禁止對該記憶體的存取的該步驟包括:設定一讀-保護啟用(read-protect-enable)位元並判定該嵌入式控制器所提供之一位址是否位於一指定範圍之外,若判定結果為是則禁止對該指定範圍內記憶體之存取。
  2. 如申請專利範圍第1項所述的方法,其中該第一資料包括一個或更多下列項: 一密碼;或一密鑰。
  3. 如申請專利範圍第1項所述的方法,進一步包括:使用該第一資料來對該系統執行一個或更多安全操作包括對該系統執行初始化代碼;以及其中禁止對該記憶體的存取的該步驟包括在對該系統執行該初始化代碼之後將一設定值寫到一記憶體元件,以禁止對該記憶體的存取。
  4. 如申請專利範圍第1項所述的方法,其中啟用對該記憶體的存取的該步驟包括:向耦合到該記憶體的一遮罩邏輯提供一第一控制值,其中該遮罩邏輯可操作來使用該第一控制值和從該記憶體讀取的資料執行一邏輯操作,以及其中該邏輯操作維持從該記憶體讀取的該資料不變。
  5. 如申請專利範圍第4項所述的方法,禁止對該記憶體的存取的該步驟包括:向該遮罩邏輯提供一第二控制值,其中該遮罩邏輯可操作來使用該第二控制值和從該記憶體讀取的資料執行一邏輯操作,以及其中該邏輯操作遮蔽從該記憶體讀取的該資料。
  6. 如申請專利範圍第5項所述的方法,其中該第一資料包括用於該系統的初始化代碼,其中該初始化代碼具有一位址範圍,其中啟用對該記憶體的存取的該步驟包括啟用對該記憶體內的該位址範圍的存取,其中禁止對該記 憶體的存取的該步驟包括禁止對該記憶體的該位址範圍的存取,以及其中向該遮罩邏輯提供該第二控制值的該步驟包括:設定一第三控制值以啟用提供該第二控制值的該步驟;以及在設定該第三控制值的該步驟之後,確定該嵌入式控制器嘗試存取該位址範圍之外的該記憶體,並產生該嵌入式控制器嘗試存取該位址範圍之外的該記憶體的一指示;以及回應於該第三控制值和該指示而禁止對該記憶體的該位址範圍的存取。
  7. 如申請專利範圍第1項所述的方法,進一步包括:確定由該嵌入式控制器產生的一位址是否處於一初始化位址範圍之外;回應於確定由該嵌入式控制器產生的該位址處於該初始化位址範圍之外而啟用該記憶體的保護,其中該啟用保護在該禁止存取之前執行,其中該記憶體在該啟用保護之後和在該禁止存取之前是可存取的;其中該禁止存取對所產生的在該初始化位址範圍內的位址執行,其中該禁止在該啟用保護之後執行。
  8. 如申請專利範圍第7項所述的方法,其中該禁止阻止該嵌入式控制器在已經產生處於該初始化位址範圍之外的至少一個位址之後存取該初始化位址範圍。
  9. 如申請專利範圍第7項所述的方法,其中對在該初始化位址範圍外所產生的位址啟用對該記憶體的存取。
  10. 如申請專利範圍第7項所述的方法,進一步包括:在該啟用該記憶體的保護之前,設定一記憶體元件中的一讀保護啟用值,其中該設定該讀保護啟用值准許該啟用該記憶體的保護。
  11. 如申請專利範圍第6項所述的方法,進一步包括:回應於一開機重設(POR)而禁止除錯存取;以及回應於通過該嵌入式控制器來禁止對該記憶體的存取的該步驟而啟用除錯存取。
  12. 如申請專利範圍第6項所述的方法,其中該嵌入式控制器是用於一電腦系統的一週邊設備控制器。
  13. 如申請專利範圍第6項所述的方法,其中該嵌入式控制器和該記憶體被包括在一系統單晶片(SoC)中。
  14. 一種系統,包括:一第一記憶體,其儲存資料;一第二記憶體,其中該第二記憶體可操作來儲存阻止對該第一記憶體的存取的一第一值,其中該第二記憶體包括一輸入,該輸入可操作來接收指示在該系統內產生的一開機重設的一信號;一第一邏輯,其耦合到該第一記憶體和該第二記憶體,其中該第一邏輯可操作來根據儲存在該第二記憶體中的值而控制對該第一記憶體內的該資料的存取; 其中回應於所產生的一開機重設,該第二記憶體可操作來儲存一第二值,其中該第一邏輯響應於儲存在該第二記憶體內的該第二值而啟用對該第一記憶體的存取,一耦合到該第一記憶體的嵌入式控制器;其中該第一邏輯可操作來確定由該嵌入式控制器產生的一位址是否在一初始化位址範圍內;其中該第一邏輯可操作來對由該嵌入式控制器產生的在該初始化位址範圍內的位址啟用對該第一記憶體的存取;其中,在該嵌入式控制器產生處於該初始化位址範圍之外的至少一個位址之後,該第一邏輯可操作來對由該嵌入式控制器產生的在該初始化位址範圍內的隨後的位址禁止對該第一記憶體的存取。
  15. 如申請專利範圍第14項所述的系統,進一步包括:一嵌入式控制器,其耦合到該第一記憶體,其中控制對該資料的存取包括通過該嵌入式控制器來控制對該資料的存取。
  16. 如申請專利範圍第14項所述的系統,其中該第一邏輯包括:一比較器,其中該比較器具有可操作來接收由該嵌入式控制器產生的位址的一第一輸入,其中該比較器可操作來比較由該嵌入式控制器產生的該位址與該初始化位址範圍。
  17. 一種系統,包括: 一嵌入式控制器;一第一記憶體,其耦合到該嵌入式控制器,該第一記憶體儲存初始化代碼及/或用於該嵌入式控制器的資料;一第二記憶體,其中該第二記憶體可操作來儲存一第一值,該第一值啟用對該第一記憶體存取的阻止,其中該第二記憶體包括一輸入,該輸入可操作來接收指示在該系統內產生的一開機重設的一信號;一第一邏輯,其耦合到該第一記憶體和該第二記憶體,其中該第一邏輯可操作來根據儲存在該第二記憶體中的該值而控制對該第一記憶體內的該資料的存取;其中回應於所產生的一開機重設,該第二記憶體可操作來儲存一第二值,其中該第一邏輯回應於儲存在該第二記憶體內的該第二值而啟用對該第一記憶體的存取;其中該第一邏輯可操作來確定由該嵌入式控制器產生的一位址是否處於一初始化位址範圍內;其中該第一邏輯可操作來對由該嵌入式控制器產生的在該初始化位址範圍內的位址啟用對該第一記憶體的存取;其中,在該開機重設之後和在該嵌入式控制器產生處於該初始化位址範圍之外的至少一個位址之後,該第一邏輯可操作來對由該嵌入式控制器產生的處於該初始化位址範圍內的隨後的位址禁止對該第一記憶體的存取。
  18. 如申請專利範圍第17項所述的系統,其中該第一邏輯可操作來對在該初始化位址範圍之外所產生的位址啟用對該記憶體的存取。
TW097133504A 2007-08-31 2008-09-01 對嵌入式控制器的記憶體保護 TWI402682B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/848,808 US7917716B2 (en) 2007-08-31 2007-08-31 Memory protection for embedded controllers

Publications (2)

Publication Number Publication Date
TW200919196A TW200919196A (en) 2009-05-01
TWI402682B true TWI402682B (zh) 2013-07-21

Family

ID=40409318

Family Applications (1)

Application Number Title Priority Date Filing Date
TW097133504A TWI402682B (zh) 2007-08-31 2008-09-01 對嵌入式控制器的記憶體保護

Country Status (2)

Country Link
US (1) US7917716B2 (zh)
TW (1) TWI402682B (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008040377A1 (en) * 2006-10-06 2008-04-10 Agere Systems Inc. Protecting secret information in a programmed electronic device
US8250354B2 (en) * 2007-11-29 2012-08-21 GlobalFoundries, Inc. Method and apparatus for making a processor sideband interface adhere to secure mode restrictions
US8726364B2 (en) * 2008-06-30 2014-05-13 Intel Corporation Authentication and access protection of computer boot modules in run-time environments
DE102008048066B4 (de) 2008-09-19 2018-02-01 Texas Instruments Deutschland Gmbh Zugriffssteuerschaltung zur Verwendung mit einer Überwachungs-Logikschaltungsanordnung in einem Verfahren zum Schutz von Software für eingebettete Anwendungen vor unerlaubtem Zugriff
US9310089B2 (en) * 2009-05-21 2016-04-12 Lennox Industries Inc. Variable speed motor control method and apparatus
US20100303239A1 (en) * 2009-05-27 2010-12-02 Fujitsu Limited Method and apparatus for protecting root key in control system
US8707053B2 (en) * 2011-02-09 2014-04-22 Apple Inc. Performing boolean logic operations using arithmetic operations by code obfuscation
US8949638B2 (en) 2012-04-25 2015-02-03 Hewlwtt-Packard Development Company, L.P. Embedded controller with an internal timer
GB2513727B (en) 2012-06-27 2015-06-24 Nordic Semiconductor Asa Memory protection
US8938796B2 (en) 2012-09-20 2015-01-20 Paul Case, SR. Case secure computer architecture
TWI564747B (zh) * 2012-10-19 2017-01-01 威盛電子股份有限公司 電子裝置與安全開機方法
US9230081B2 (en) 2013-03-05 2016-01-05 Intel Corporation User authorization and presence detection in isolation from interference from and control by host central processing unit and operating system
US9705869B2 (en) 2013-06-27 2017-07-11 Intel Corporation Continuous multi-factor authentication
US8955144B2 (en) * 2013-06-28 2015-02-10 Intel Corporation Protecting information processing system secrets from debug attacks
US9696772B2 (en) 2014-02-21 2017-07-04 Arm Limited Controlling access to a memory
US10152331B2 (en) * 2014-05-16 2018-12-11 Wind River Systems, Inc. Method and system for enforcing kernel mode access protection
US10073964B2 (en) 2015-09-25 2018-09-11 Intel Corporation Secure authentication protocol systems and methods
US11170109B2 (en) * 2019-04-16 2021-11-09 Nxp Usa, Inc. Boot ROM gating circuit
US11550733B2 (en) * 2020-07-01 2023-01-10 Arm Limited Method, system and circuit for managing a secure memory partition
US20230350582A1 (en) * 2022-04-27 2023-11-02 Micron Technology, Inc. Data masking for memory

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5535409A (en) * 1991-04-16 1996-07-09 Hewlett-Packard Company Apparatus for and method of preventing changes of computer configuration data by unauthorized users
TW284868B (zh) * 1994-05-25 1996-09-01 Intel Corp
US20070022243A1 (en) * 2005-07-22 2007-01-25 John Rudelic Method and apparatus capable of disabling authenticated operations and guaranteed secure boot in a wireless platform
TW200708953A (en) * 2005-07-08 2007-03-01 Hewlett Packard Development Co Policy based cryptographic application programming interface in secure memory

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0954725A (ja) * 1995-08-11 1997-02-25 Nec Eng Ltd 記憶装置
US6151678A (en) * 1997-09-09 2000-11-21 Intel Corporation Anti-theft mechanism for mobile computers
ATE504446T1 (de) * 2002-12-02 2011-04-15 Silverbrook Res Pty Ltd Totdüsenausgleich
US7940932B2 (en) * 2004-04-08 2011-05-10 Texas Instruments Incorporated Methods, apparatus, and systems for securing SIM (subscriber identity module) personalization and other data on a first processor and secure communication of the SIM data to a second processor
US7613891B2 (en) * 2006-05-04 2009-11-03 Intel Corporation Methods and apparatus for providing a read access control system associated with a flash device
US7698523B2 (en) * 2006-09-29 2010-04-13 Broadcom Corporation Hardware memory locks
US8763110B2 (en) * 2006-11-14 2014-06-24 Sandisk Technologies Inc. Apparatuses for binding content to a separate memory device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5535409A (en) * 1991-04-16 1996-07-09 Hewlett-Packard Company Apparatus for and method of preventing changes of computer configuration data by unauthorized users
TW284868B (zh) * 1994-05-25 1996-09-01 Intel Corp
TW200708953A (en) * 2005-07-08 2007-03-01 Hewlett Packard Development Co Policy based cryptographic application programming interface in secure memory
US20070022243A1 (en) * 2005-07-22 2007-01-25 John Rudelic Method and apparatus capable of disabling authenticated operations and guaranteed secure boot in a wireless platform

Also Published As

Publication number Publication date
TW200919196A (en) 2009-05-01
US7917716B2 (en) 2011-03-29
US20090063799A1 (en) 2009-03-05

Similar Documents

Publication Publication Date Title
TWI402682B (zh) 對嵌入式控制器的記憶體保護
US9230112B1 (en) Secured booting of a field programmable system-on-chip including authentication of a first stage boot loader to mitigate against differential power analysis
US7318150B2 (en) System and method to support platform firmware as a trusted process
TWI438686B (zh) 用於使用狀態確認來保護作業系統啟動過程的系統及方法
US7149854B2 (en) External locking mechanism for personal computer memory locations
US7139915B2 (en) Method and apparatus for authenticating an open system application to a portable IC device
US10691807B2 (en) Secure system boot monitor
US20040015694A1 (en) Method and apparatus for authenticating an open system application to a portable IC device
US20070237325A1 (en) Method and apparatus to improve security of cryptographic systems
US20030196100A1 (en) Protection against memory attacks following reset
WO1998047060A9 (en) Systems and methods for protecting access to encrypted information
JP2013537343A (ja) プラットフォーム・ファームウェア・アーマリング技術
US11354417B2 (en) Enhanced secure boot
US20030028781A1 (en) Mechanism for closing back door access mechanisms in personal computer systems
WO2009099648A2 (en) Method and apparatus for hardware reset protection
US20030056070A1 (en) Secure write blocking circuit and method for preventing unauthorized write access to nonvolatile memory
JP6518798B2 (ja) 安全な集積回路状態を管理する装置およびその方法
US20220027520A1 (en) Methods And Apparatus For In-Memory Device Access Control
EP3757838B1 (en) Warm boot attack mitigations for non-volatile memory modules
KR20190085387A (ko) 반도체 장치 및 반도체 장치의 동작 방법
US20090158011A1 (en) Data processing system
WO2020187206A1 (zh) 一种基于固态盘主控的可信计算系统实现方案
US10592663B2 (en) Technologies for USB controller state integrity protection
WO2018040678A1 (zh) 一种存储器数据保护方法、集成电路芯片及存储介质
US20220317184A1 (en) Secured debug