TWI691842B - 記憶體安全裝置及其方法 - Google Patents

記憶體安全裝置及其方法 Download PDF

Info

Publication number
TWI691842B
TWI691842B TW107121601A TW107121601A TWI691842B TW I691842 B TWI691842 B TW I691842B TW 107121601 A TW107121601 A TW 107121601A TW 107121601 A TW107121601 A TW 107121601A TW I691842 B TWI691842 B TW I691842B
Authority
TW
Taiwan
Prior art keywords
data value
read
memory
item
predefined
Prior art date
Application number
TW107121601A
Other languages
English (en)
Other versions
TW201926047A (zh
Inventor
赫詩曼 日弗
摩瑞 丹
Original Assignee
新唐科技股份有限公司
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 新唐科技股份有限公司 filed Critical 新唐科技股份有限公司
Publication of TW201926047A publication Critical patent/TW201926047A/zh
Application granted granted Critical
Publication of TWI691842B publication Critical patent/TWI691842B/zh

Links

Images

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
    • 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/1433Protection 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 module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/1201Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details comprising I/O circuitry
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/24Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0401Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals in embedded memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)

Abstract

一種記憶體安全裝置,包含記憶體、介面和讀取限制邏輯。讀取限制邏輯被配置為經由介面接收請求,以從記憶體的特定位址讀取數據值,於所述特定位址取得數據值時,當發現所述特定位址落入預定義受限位址範圍時,檢查所取得的數據值是否屬於預定義的允許數據值群組,當所取得的數據值屬於該組允許數據值群組時,用所取得的數據值來回應請求,否則,當所取得的數據值不屬於該組允許數據值群組時,以用虛設數據值來回應該請求。

Description

記憶體安全裝置及其方法
本發明大致上係涉及安全資料儲存裝置,更明確來說係涉及使用記憶體讀取限制實現記憶體安全存取的方法和系統。
在本領域中已知多種用於安全存取儲存在記憶體中的敏感資訊的技術。例如,美國公開第2007/0237325號專利申請案描述了具有加密能力的裝置,其含連接到微控制區塊的安全系統。安全系統包含一個非揮發性記憶體和一個有限狀態機。有限狀態機係管理裝置以維持儲存在非揮發性記憶體內的密鑰中的內容安全,並防止藉由微控制區塊內的計算機處理單元及/或裝置的終端使用者存取密鑰。
在本文所描述的本發明實施例提供了一種記憶體安全裝置,該記憶體安全裝置包含記憶體、介面和讀取限制邏輯。讀取限制邏輯被配置為經由介面接收請求,以從記憶體的特定位址讀取數據值,且由特定位址取得數據值時,當發現特定位址落入預定義受限制的位址範圍內,則檢查所取得的數據值是否屬於預定義的一組允許數據值群組,當所取得的數據值屬於允許數據值群組時,用所取得的數據值來回應請求;以及,否則,當所取得的數據值不屬於該組允許數據值群組時,用虛設數據值來回應該請求。
在一些實施例中,該記憶體安全裝置進一步包含控制器,其被配置以運行第一軟體程序,而允許第一軟體程序從預定義為受限位址範圍中讀取任何數據值,以及僅於讀取的數據值屬於允許數據值群組時,允許在第一軟體程序之後在處理器中運行的第二軟體程序讀取預定義受限位址範圍中之數據值。
在一些實施例中,該記憶體安全裝置進一步包含控制器,其被配置以執行啟動程序,在啟動程序正在進行時禁止外部對記憶體進行存取,並且在啟動程序之後啟動讀取限制邏輯。
在一個實施例中,讀取限制邏輯被配置以從(i)裝置中的內置自我測試(BIST)模組及(ii)外部測試器中的一個接收請求。在例示性實施例中,允許數據值群組包含用於測試記憶體的測試值。在所揭露的實施例中,讀取限制邏輯被配置為回應於檢測到(i)特定位址落入預定義受限位址範圍中,並且(ii)所取得的數據值不屬於允許數據值群組,而發起回應動作。
在一個實施例中,在一替代安全機制失效時,讀取限制邏輯被配置為只有在所讀取的數據值屬於允許數據值群組的情況下,才允許從預定義受限位址範圍內讀出數據值群組。在另一個實施例中,讀取限制邏輯被配置為以不同之該虛設數據值回應來自相同之特定位址的複數個讀取動作。在又一個實施例中,該裝置包含附加讀限制邏輯,其被配置為限制對附加預定義受限位址範圍的存取,其中讀限制邏輯及附加的讀限制邏輯係由不同的軟體層控制。
根據本發明的實施例,另外提供了一種方法,該方法在包含記憶體的裝置中,接收從記憶體的特定位址讀取數據值的請求。當從特定位址取得數據值時,一旦發現特定位址落入預定義受限位址範圍中,則檢查所取得的數據值是否屬於預定義的允許數據值群組。當取得的數據值屬於允許數據值群組時,用所取得的數據值對請求進行回應。否則,當取得到的數據值不屬於允許數據值群組時,用虛設數據值來回應請求。
概述
本文描述的本發明的實施例提供改良用於保護儲存在記憶體中的秘密資訊的方法和系統。具體而言,所公開的技術能夠測試儲存秘密資訊的記憶體,而不損害測試品質或數據安全性。
在一些實施例中,安全電子裝置包含記憶體,其中指定某個位址範圍(受限位址範圍)用於儲存諸如密鑰的秘密資訊。該裝置包含測試介面,測試儀經由測試介面發出用於測試記憶體的寫入和讀取請求。藉由測試介面接收到的一些讀取請求可指定落入受限位址範圍內的位址。除非妥善處理,否則回應這些請求可能會導致秘密資訊的洩露。
為了減輕這種安全危害,在一些實施例中,該裝置包含讀取限制邏輯,該讀取限制邏輯監視經由測試介面到達的讀取請求,並且選擇性地加以回應。一旦接收到其位址落入受限位址範圍內的讀取請求,讀取限制邏輯擷取所請求的數據值並檢查數據值是否屬於預定義允許數據值群組。
允許數據值通常包含用於測試和開發的一小組數據值(每個數據單位)。例如,對於8位數據單元(位元組),可考慮0x00,0xAA和0xFF等十六進制值。其係假設僅有合法的測試程序會使用這些數據值。如果所取得的數據值是允許值之一,則讀取限制邏輯以此數據值回應請求。如果不是,讀限制邏輯以一些虛設值來回應請求。
使用這種技術時,如果一系列讀取請求嘗試取得秘密資訊,則大多數取得到的數據值可能不屬於允許數據值群組。因此,讀取限制邏輯將阻擋這些讀取請求並返回虛設值。於此同時,作為真正測試過程一部分的合法讀取請求不會被阻止,因為它們請求的數據值屬於允許數據值群組。一般情況下,無論取得到的數據值如何,指定受限位址範圍以外的位址的讀取請求都不會被阻止。
本文描述了利用上述讀取限制技術的安全電子裝置的例示性配置。一些揭露的配置使用安全啟動程序來初始化讀取限制邏輯。
系統描述
第1圖是根據本發明的實施例示意性繪示安全電子裝置20的方塊圖。裝置20包含記憶體24,例如包含一個或多個快閃記憶體裝置的非揮發性記憶體(NVM)。裝置20進一步包含控制器36,其管理裝置的整體操作,包含在記憶體24中的數據之儲存。啟動軟體40,簡稱為「啟動器(booter)」,其執行啟動控制器36的啟動(boot)過程,例如,在開機或重置時。一般會將至少第一部分的啟動程式碼儲存在裝置20內部的ROM或其他形式的不可變(immutable)記憶體中。
裝置20可包含具有內部NVM和控制器的任何合適類型的電子裝置。一個典型的例子是安全裝置。安全裝置的幾個非限制性實例包含信任平台模組(TPM)、例如用於印表機卡匣防偽的認證積體電路(IC)、智慧卡、移動裝置訂戶身份模組(SIM)、銷售點控制器等。
在本實例中,裝置20包含兩個介面,包含主機介面28和測試介面32。控制器36使用主機介面28而與主機(未圖示)溝通,使用主機介面28來與裝置20溝通。例如,裝置20可為信任平台模組(TPM),並且主機可按照信任計算組(TCG)所定義的與其溝通。在另一個實例中,裝置20可為儲存裝置,其支持在允許其存取記憶體24的至少一部分之前與主機進行認證。如果允許,主機可使用主機介面來發送數據以儲存在記憶體24中,並提取先前已儲存在記憶體24中的數據,但是它永遠不會具有對受限位址範圍48的非限制讀取。裝置20可使用受限區域,例如用於儲存用於驗證和自我保護的密鑰。
測試介面32用於測試裝置20,而裝置20可包含記憶體24以及其他可能用於裝置的元件。測試介面32在圖中係繪示為外部介面,例如用於連接到外部測試器或如JTAG或UART連接埠的除錯介面。然而,附加地或替代地,測試介面32可連接到裝置20內的內部自我測試(BIST)模組。多工器(MUX)44經由讀取限制邏輯56將介面28和32連接到記憶體24。
在一些實施例中,記憶體24的位址空間內的某些位址範圍48係被預定義為受限位址。該位址範圍用於儲存如密鑰的秘密資訊。儲存在受限位址範圍48中的資訊可受各種元件,例如藉由硬體模組52(例如,加密引擎)或藉由控制器36中的啟動器40存取。
為了妥善測試記憶體24,一般希望允許經由測試介面32存取記憶體。具體而言,希望允許存取受限位址範圍48。除非正確管理,否則此類外部存取存在嚴重的安全危害。在本發明的一些實施例中,裝置20包含讀取限制邏輯56,其保護裝置免受對受限位址範圍48的未授權存取。讀取限制邏輯56的操作在下文中詳述。
第1圖所示的裝置20的配置是純粹為了概念清晰而示出的實例配置。在替代實施例中,可使用任何其他合適的配置。例如,記憶體24可包含任何其他合適類型的揮發性和/或非揮發性記憶體。作為另一個例子,主機介面28和測試介面32的功能可被組合在單一介面中。
作為又一個實例,裝置20可包含存取在受限位址範圍48中的資訊的任何其他合適的類型之硬體模組52。在一些實施例中,裝置20甚至可完全不包含直接連接的硬體模組52。在一些實施例中,記憶體24和硬體模組52之間沒有直接連接,啟動器40可在啟動時間內將受限位址範圍48中的相關數據複製到硬體模組,例如複製到唯寫暫存器中。
在第1圖的示例配置中,硬體模組52直接連接到記憶體24(即,不經由讀取限制邏輯56)。然而,此配置不是強制性的,且硬體模組可經由讀取限制邏輯替代地被連接到記憶體。如果加密引擎如第1圖所示係為直接連接,則應該強制執行某些限制: § 不受限制的數據不應暴露於控制器36的軟體、韌體或經由加密引擎的任何測試或除錯功能。 § 加密引擎可使用不受限制的數據,但應該保證不受限制的數據無法從加密引擎的輸出中推導。 § 一般而言,啟動器40和裝置20應確保在進入暴露模組內部的測試模式(例如,掃描或可觀察性測試)之前,加密引擎中不存在不受限制的數據。例如,可藉由在啟用測試模式之前刪除數據,或者藉由在數據進入密碼模組之前禁用測試模式來滿足此條件。
典型地,裝置20的各個元件(例如,記憶體24,讀取限制邏輯56,硬體模組52,MUX 44和/或控制器36)被製造成幾乎不可能將它們彼此分開並且獲得對它們之間的介面之存取。在一個實施例中,裝置20的各種元件可製造在相同的積體電路(IC)封裝中或者在相同的矽晶粒上。為了清楚起見,從圖中省略了對於理解所揭露的技術不必要的元件。
在各種實施例中,第1圖中所示裝置20的不同元件可使用任何合適的硬體來建置,諸如在特殊應用積體電路(ASIC)或場可程式化閘陣列(FPGA)中。或者,裝置20的一些功能,如控制器36之功能,可用軟體或者使用軟體和硬體元件的組合來建置。
在一些實施例中,控制器36包含通用處理器,其可在軟體中編寫以執行本文所述的功能。軟體可經由網路或從主機以電子形式下載到處理器,例如,或其可替代的或附加的被提供和/或儲存在如磁性、光學、以及電子記憶體的非暫時性的有形介質上。
使用讀限制的記憶體安全裝置。
在一些實施例中,讀取限制邏輯56能夠對記憶體24進行全面測試,包含受限位址範圍48,而不損害當前或未來儲存在其中的任何秘密資訊的安全性。
在一個實施例中,記憶體24藉由將某些數據值寫入記憶體,從記憶體讀取數據值,以及驗證讀取的數據值與寫入的值匹配來進行測試。典型地,雖然非必須,選擇用於測試的數據值以切換所有記憶體位元。例如,諸如0x00、0Xff、0x55及0xAA的8位元數據值可作為用於測試的合適的數據值。
換言之,用於測試的數據值通常取自預定義的一組數據值。該組數據值通常很小,意思是其由,相較於所有可能數據值的集合,更少的數據值組成。在上面的例子中,其指的是8位元數據值,在256個可能的數據值0x00-0xFF中,只有四個數據值(0x00、0xFF、0x55和0xAA)用於測試。注意到也可使用除8位元數據單元之外的數據單元(例如,16位或32位數據單元)。
在一些實施例中,裝置20實際上使用如下:用於測試的數據值取自預定義的一組數據值(並且通常是一小組數據值)中,以保護儲存在記憶體24中的秘密資訊。
在一個實施例中,讀取限制邏輯56預先配置有用於測試的一組數據值。該組也被稱為「受限數據範圍」或「允許數據值群組」 - 所有在本文中的這些術語可互換使用。
如在第1圖可見,讀取限制邏輯56係(例如藉由控制器36)預先配置有(i)受限位址範圍48的定義和(ii)受限數據範圍的定義,即允許數據值群組。
當經由測試介面32接收到請求,以從受限位址範圍48中的特定位址讀取數據值時,讀取限制邏輯56擷取所討論的數據值並檢查所取得的數據值是否為用於測試之允許值的其中之一。如果是,則讀取限制邏輯56藉由在如所請求的測試介面32上輸出數據值來回應該請求。如果不是,則讀取限制邏輯56藉由輸出一些虛設數據值來回應該請求。
以這種方式,只要在測試過程中寫入及讀回的數據值全部取自該組允許值中,一般測試可覆蓋記憶體24包含受限位址範圍48的整個位址空間。即使記憶體包含秘密資訊,也可執行這種測試。如果經由測試介面32接收到的讀取請求試圖讀取任何秘密資訊,大部分所取得的數據值將不屬於該組允許值,並且將觸發讀取限制邏輯56以虛設數據值進行回應。因此,有效地減輕了在測試界面上以任何可用形式輸出秘密資訊的風險。在一個可能的實施例中,秘密資訊本身以不包含用於測試的「允許值」的方式被格式化。
所揭露的技術亦使裝置20的安全功能能夠完整測試,例如加密引擎或存取記憶體24中秘密資訊的其他硬體模組之安全功能。在例示性實施例中,控制器36或外部測試器可儲存一個或多個在受限位址範圍48中的「測試密鑰」。測試密鑰的功能類似於普通密鑰,但由屬於受限數據範圍的數據值組成。這些密鑰可以經由測試介面32自由讀取。
注意,在一個實施例中,讀取限制邏輯56可預配置為僅具有一些用於測試的數據值。例如,如果用於測試的數據值是0x00、0xFF、0x55以及0xAA,則僅用這些數據值中的三個(例如0x00、0xFF和0xAA)來預配置邏輯,並將虛設數據值設置為是第四個數據值(例如,0x55)就足夠了。
第2圖是根據本發明的一個實施例示意性地示出使用讀取限制用於記憶體安全存取的方法的流程圖。流程圖的第一部分(步驟60和64)描述了控制器36以及整個裝置20的啟動過程。第二部分(步驟68-84)描述了裝置20運作的正常模式。
注意,在正常模式下,支持測試和正常的讀及寫的操作,而無需切換到專用的測試模式。或者,如果藉由其他手段實施測試禁用保護(例如,藉由在生產中永久禁用測試功能),則所揭露的技術可作為「第二道防線」應用,以防裝置被非法地騙入測試啟用模式或者惡意軟體滲透到裝置中的情況。
方法開始時(例如在電力開啟或重置時),在啟動步驟60中以啟動器40藉由執行某些啟動程序程式碼啟動控制器36。作為啟動程序的一部分,啟動器40可在記憶體24的受限位址範圍48中存取秘密資訊,例如對至少一部分啟動程序程式碼簽署的簽章進行驗證,和/或將密鑰加載到密碼加速器中。只要啟動程序正在進行,啟動器40通常阻擋經由主機介面28和測試介面32對記憶體24的存取。
一旦啟動程序完成,啟動器40在限制啟動步驟64啟動讀取限制邏輯56。在第1圖的實例中,啟動器40使用表示為「限制讀取」和「限制鎖定」的兩個訊號來控制讀取限制邏輯56。「限制讀取」訊號係啟動讀取限制邏輯56,而「限制鎖定」訊號係鎖定「限制讀取」訊號,因此不可逆地啟動限制直到下一次啟動。在啟動讀取限制邏輯56之後,啟動器40能夠經由主機介面28和測試介面32存取記憶體24。
在替代實施例中,「限制讀取」和「限制鎖定」訊號的功能可使用執行啟動和鎖定的單一訊號來實施。通常,受限位址範圍和受限數據範圍的數值可藉由啟動器40配置和控制。當啟動程序即將完成或者當測試模式即將被啟用時,啟動器40通常為隨後的變化鎖定這些數值。
在此階段,在允許處理實際測試之前,控制器36通常檢查是否啟用測試模式。若否,阻擋測試模式存取直到下一個電源週期(例如,電力開啟或重置)。若啟用測試模式,則可進行該方法。上述限制(檢查測試模式的啟用)也可由裝置20中的韌體執行。在這種情況下,限制讀取特定值的數據,於裝置被非法開啟測試模式的情境下,可作為「第二道防線」。
在稍後的某個時間點,在正常操作期間,裝置20在讀取請求步驟68中接收到讀取請求(例如在測試介面32上)。讀取請求指定記憶體24中將被讀取之數據值的位址。讀取限制邏輯56從記憶體24中的指定位址擷取數據值。
在位址檢查步驟72,讀取限制邏輯56檢查特定位址是否屬於受限位址範圍48。如果特定位址不屬於受限位址範圍48,則讀取限制邏輯56在數據輸出步驟76中,例如透過測試介面32,如所請求的輸出所取得的數據值。然後該方法返回到上面的步驟68。
如果特定位址屬於受限位址範圍48,則在數據檢查步驟80,讀取限制邏輯56檢查所取得的數據值是否是允許數據值群組之一(受限制的數據範圍)。如果是,則讀取限制邏輯56在數據輸出步驟76如請求的輸出所取得的數據值。該方法返回到步驟68。
然而,如果邏輯56發現(在步驟80)所取得的數據值不是允許數據值群組之一,則讀取限制邏輯56不輸出所取得的數據值。取而代之地,讀取限制邏輯56於輸出步驟84處輸出虛設數據值(例如在測試介面32上),並且該方法返回到上面的步驟68。在稍後的電力開啟或重置事件的情況下,該方法在步驟60重新開始。
第2圖的方法流程是為了概念清晰起見而選擇的實例流程。在替代實施例中,可使用任何其他合適的流程來實現所揭露的讀取限制技術。
在一些實施例中,在步驟84,讀取限制邏輯56可從一組複數個虛設值中選擇一個虛設數據值,例如以隨機的方式選擇。在其他實施例中,讀取限制邏輯56可就一個給定位址輸出虛設數據值,而該虛設數值係隨逐次讀取動作而改變。在例示性實施例中,讀取限制邏輯56選擇虛設數據值作為與秘密模糊鑰匙(例如,使用輕量級加密算法)混合的位址的確定性函數。
在一些實施例中,在步驟80,當檢測到未經授權的經由測試介面32讀取在受限位址範圍48中的秘密資訊的意圖時,讀取限制邏輯56可發起適當的回應動作。例如,讀取限制邏輯56可將任何非有效的讀取值視為攻擊意圖。回應動作的實例可包含發出警報,關閉裝置20中的一些或全部,阻止對記憶體24或其部分的存取,和/或從記憶體24中刪除一些或全部秘密資訊。
在上述實施例中,使用「限制讀取(restrict read)」和「限制鎖定(restrict lock)」機制,控制器36允許啟動器40在啟動程序期間存取受限位址範圍48。對於稍後運行的軟體程序,「限制讀取」和「限制鎖定」機制將限制為僅允許存取受限位址範圍48內預定義的允許測試值群組。
因此,在本上下文中,術語「受限存取(restricted access)」是指僅當這些數據值屬於所允許數據值群組的預定義子集時,才回傳儲存在特定位址中的實際數據值的讀存取。相應地,「無限制存取(unrestricted access)」是指不論數據值為何,皆回傳儲存在特定位址中的實際數據值。
更一般地說,在一些實施例中,控制器36運行第一軟體程序,允許第一軟體程序存取預定義受限位址範圍,但僅允許在第一軟體程序之後在處理器中運行的第二軟體程序,對預定義的受限位址範圍內的受限存取。
在一些實施例中,記憶體24包含複數個受限位址範圍48,每個受限位址範圍48與各別的讀取限制邏輯56相關聯。例如在此配置中,每個讀取限制邏輯56可藉由不同的軟體層控制。在例示性實施例中,在分層啟動程序中依序地調用不同的軟體層(每個軟體層控制與不同受限位址範圍48相關聯的不同讀取限制邏輯56)。這些軟體層的一實例係於England等人在2016年4月的微軟研究技術報告MSR-TR-2016-18的「RIoT - 信任物聯網基金會」中描述。引用的文獻描述了具有表示為L0、L1、L2和OS的軟體層的分層啟動程序。
可理解的是,上述實施例是作為實例引用的,並且本發明不限於上面已經特別示出和描述的內容。而是,本發明的範圍包含上文描述的各種特徵的組合和子組合,以及其對該領域具有通常知識者在閱讀前述描述時將會想到的並且未在現有技術中揭露的變化及修飾。在本專利申請案中,藉由引用併入的文件應被認為是說明書內容整體的一部分,除非在這些併入的文件中的名詞與說明書內容明確揭示或隱含的定義相衝突,則應該僅考慮本說明書中的定義。
20‧‧‧裝置24‧‧‧記憶體28‧‧‧主機介面32‧‧‧測試介面36‧‧‧控制器40‧‧‧啟動軟體(啟動器)44‧‧‧多工器(MUX)48‧‧‧受限位址範圍52‧‧‧硬體模組56‧‧‧讀取限制邏輯60、64、68、72、76、80、84‧‧‧步驟
本發明將從下列與圖式及其實施例一同的詳細描述中被更充分的理解,其中:
第1圖是根據本發明實施例示意性地繪示安全電子裝置的方塊圖;以及
第2圖是根據本發明的一個實施例示意性地繪示出使用讀取限制於記憶體安全裝置的方法的流程圖。

Claims (18)

  1. 一種記憶體安全裝置,包含: 一記憶體; 一介面;及 一讀取限制邏輯,其被配置為: 經由該介面接收一請求,以從該記憶體的一特定位址讀取一數據值; 由該特定位址取得該數據值; 當發現該特定位址落入一預定義受限位址範圍內,檢查所取得的該數據值是否屬於預定義的一允許數據值群組; 當所取得的該數據值屬於該允許數據值群組時,用所取得的該數據值來回應該請求;以及 當取得到的該數據值不屬於該允許數據值群組時,用一虛設數據值來回應該請求。
  2. 如申請專利範圍第1項所述之記憶體安全裝置,更包含一控制器,其被配置以: 運行一第一軟體程序; 允許該第一軟體程序從該預定義為受限位址範圍中讀取任何該數據值;以及 僅於讀取的該數據值屬於該允許數據值群組時,允許在該第一軟體程序之後在處理器中運行的一第二軟體程序讀取該預定義受限位址範圍中之該數據值。
  3. 如申請專利範圍第1項所述之記憶體安全裝置,更包含一控制器,該控制器被配置以執行一啟動程序(bootstrapping process),在該啟動程序正在進行時禁止外部對該記憶體進行存取,並且在該啟動程序之後啟動該讀取限制邏輯。
  4. 如申請專利範圍第1項所述之記憶體安全裝置,其中該讀取限制邏輯被配置以從(i)該裝置中的內置自我測試(BIST)模組及(ii)一外部測試器中的一個接收該請求。
  5. 如申請專利範圍第1項所述之記憶體安全裝置,其中該允許數據值群組包含用於測試該記憶體的測試值。
  6. 如申請專利範圍第1項所述之記憶體安全裝置,其中該讀取限制邏輯被配置為回應於檢測到(i)該特定位址落入該預定義受限位址範圍中,並且(ii)所取得的該數據值不屬於該允許數據值群組,而發起一回應動作。
  7. 如申請專利範圍第1項所述之記憶體安全裝置,其中,在一替代安全機制失效時,該讀取限制邏輯被配置為只有在所讀取的該數據值屬於該允許數據值群組的情況下,才允許從該預定義受限位址範圍內讀出該數據值。
  8. 如申請專利範圍第1項所述之記憶體安全裝置,其中該讀取限制邏輯被配置為以不同之該虛設數據值回應來自相同之該特定位址的複數個讀取動作。
  9. 如申請專利範圍第1項所述之記憶體安全裝置,更包含一附加讀取限制邏輯,該附加讀取限制邏輯被配置為限制對一附加預定義受限位址範圍的存取,其中該讀取限制邏輯及該附加讀取限制邏輯係由不同的軟體層控制。
  10. 一種記憶體安全方法,包含: 在包含一記憶體的一裝置中,接收從該記憶體的一特定位址讀取一數據值的一請求; 從該特定位址取得該數據值; 一旦發現該特定位址落入一預定義受限位址範圍中,檢查所取得的該數據值是否屬於預定義的一允許數據值群組; 當所取得的該數據值屬於該允許數據值群組時,用所取得的該數據值對該請求進行回應;以及 當取得到的該數據值不屬於該允許數據值群組時,用一虛設數據值來回應該請求。
  11. 如申請專利範圍第10項所述之記憶體安全方法,更包含: 運行一第一軟體程序; 允許該第一軟體程序從該預定義受限位址範圍中讀取任何該數據值;以及 僅於讀取的該數據值屬於該允許數據值群組時,允許在該第一軟體程序之後運行的一第二軟體程序讀取該預定義受限位址範圍中之該數據值。
  12. 如申請專利範圍第10項所述之記憶體安全方法,更包含: 執行一啟動程序,在該啟動程序正在進行時禁止外部對該記憶體進行存取,以及在該啟動程序之後啟動對所取得的該數據值的該特定位址的檢查。
  13. 如申請專利範圍第10項所述之記憶體安全方法,其中接收該請求包含接受來自(i)裝置中的內建自我測試(BIST)模組及(ii)外部測試器中的一者的該請求。
  14. 如申請專利範圍第10項所述之記憶體安全方法,其中該允許數據值群組包含用於測試該記憶體的測試值。
  15. 如申請專利範圍第10項所述之記憶體安全方法,更包含回應於檢測到(i)該特定位址落入該預定義受限位址範圍中並且(ii)所取得的該數據值不屬於該允許數據值群組,而發起一回應動作。
  16. 如申請專利範圍第10項所述之記憶體安全方法,更包含: 在一替代安全機制失效時,僅在所讀取的該數據值屬於該允許數據值群組的情況下,才允許從該預定義受限位址範圍內讀出該數據值。
  17. 如申請專利範圍第10項所述之記憶體安全方法,其中對該請求的回應包含: 以不同之該虛設數據值回應來自相同之該特定位址的複數個讀取動作。
  18. 如申請專利範圍第10項所述之記憶體安全方法,更包含在不同軟體層的控制下,限制對該預定義受限位址範圍的存取,以及限制對一附加預定義受限位址範圍的存取。
TW107121601A 2017-12-07 2018-06-22 記憶體安全裝置及其方法 TWI691842B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/834,087 2017-12-07
US15/834,087 US10318438B1 (en) 2017-12-07 2017-12-07 Secure memory access using memory read restriction

Publications (2)

Publication Number Publication Date
TW201926047A TW201926047A (zh) 2019-07-01
TWI691842B true TWI691842B (zh) 2020-04-21

Family

ID=66696911

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107121601A TWI691842B (zh) 2017-12-07 2018-06-22 記憶體安全裝置及其方法

Country Status (4)

Country Link
US (1) US10318438B1 (zh)
JP (1) JP6771523B2 (zh)
CN (1) CN109901793B (zh)
TW (1) TWI691842B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11210238B2 (en) * 2018-10-30 2021-12-28 Cypress Semiconductor Corporation Securing data logs in memory devices
US10979054B1 (en) * 2020-01-14 2021-04-13 Nuvotonn Technology Corporation Coupling of combinational logic circuits for protection against side-channel attacks
FR3118219B1 (fr) * 2020-12-17 2024-03-15 Stmicroelectronics Grand Ouest Sas Procédé de protection d’un système, par exemple un microcontrôleur, et sytème correspondant
US20230063057A1 (en) * 2021-08-27 2023-03-02 Micron Technology, Inc. Memory access managment

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010021120A1 (en) * 2000-03-08 2001-09-13 Yukihito Oowaki Ferroelectric memory
US20080133796A1 (en) * 2004-03-11 2008-06-05 Gallagher James R Method, system, and computer program product for dynamically selecting software buffers for aggregation according to current system characteristics
US20140281319A1 (en) * 2013-03-15 2014-09-18 Nvidia Corporation System and method for protecting data
US20150301956A1 (en) * 2014-04-22 2015-10-22 Lsi Corporation Data storage system with caching using application field to carry data block protection information
US9483422B2 (en) * 2011-07-18 2016-11-01 Hewlett Packard Enterprise Development Lp Access to memory region including confidential information
TW201737098A (zh) * 2016-03-28 2017-10-16 英特爾公司 用以使用針對雙直列記憶體模組的晶片選擇信號之技術

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5434562A (en) 1991-09-06 1995-07-18 Reardon; David C. Method for limiting computer access to peripheral devices
WO1995033239A1 (en) 1994-05-26 1995-12-07 The Commonwealth Of Australia Secure computer architecture
KR0174978B1 (ko) 1995-12-30 1999-04-01 김광호 하드웨어로 구현된 디지탈 컴퓨터 시스템 보안 장치
US20010011318A1 (en) * 1997-02-27 2001-08-02 Vishram P. Dalvi Status indicators for flash memory
US6643783B2 (en) * 1999-10-27 2003-11-04 Terence T. Flyntz Multi-level secure computer with token-based access control
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US7131000B2 (en) * 2001-01-18 2006-10-31 Bradee Robert L Computer security system
US7003676B1 (en) 2001-05-10 2006-02-21 Advanced Micro Devices, Inc. Locking mechanism override and disable for personal computer ROM access protection
EP1329787B1 (en) * 2002-01-16 2019-08-28 Texas Instruments Incorporated Secure mode indicator for smart phone or PDA
CA2496849A1 (en) 2004-02-12 2005-08-12 Divinity Data Security Inc. Method and apparatus for preventing un-authorized computer data access
US7325176B2 (en) * 2004-02-25 2008-01-29 Dell Products L.P. System and method for accelerated information handling system memory testing
US20070266444A1 (en) * 2004-12-03 2007-11-15 Moshe Segal Method and System for Securing Data Stored in a Storage Device
US7712131B1 (en) * 2005-02-09 2010-05-04 David Lethe Method and apparatus for storage and use of diagnostic software using removeable secure solid-state memory
DE102005011893B3 (de) * 2005-03-15 2006-09-21 Infineon Technologies Ag Halbleiterspeicherbauelement und Verfahren zum Prüfen von Halbleiterspeicherbauelementen mit eingeschränktem Speicherbereich (Partial-Good-Memorys)
US20070005918A1 (en) * 2005-06-29 2007-01-04 Rothman Michael A Methods and apparatus to provide interface access control
US8322608B2 (en) * 2005-08-15 2012-12-04 Assa Abloy Ab Using promiscuous and non-promiscuous data to verify card and reader identity
WO2007023457A2 (en) * 2005-08-22 2007-03-01 Nxp B.V. Embedded memory protection
US20070237325A1 (en) 2006-02-01 2007-10-11 Gershowitz Michael N Method and apparatus to improve security of cryptographic systems
US7395394B2 (en) * 2006-02-03 2008-07-01 Hewlett-Packard Development Company, L.P. Computer operating system with selective restriction of memory write operations
JP2008009696A (ja) * 2006-06-29 2008-01-17 Fuji Xerox Co Ltd 画像処理装置及びプログラム
US7580302B2 (en) * 2006-10-23 2009-08-25 Macronix International Co., Ltd. Parallel threshold voltage margin search for MLC memory application
JP4921953B2 (ja) * 2006-12-25 2012-04-25 株式会社東芝 半導体集積回路装置及び半導体記憶装置のテスト方法
US7895426B2 (en) * 2007-08-24 2011-02-22 International Business Machines Corporation Secure power-on reset engine
US8095851B2 (en) * 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
US20090113155A1 (en) * 2007-10-31 2009-04-30 Echostar Technologies Corporation Hardware anti-piracy via nonvolatile memory devices
US8688940B2 (en) * 2008-12-18 2014-04-01 Sandisk Technologies Inc. Method for using a CAPTCHA challenge to protect a removable mobile flash memory storage device
US9092597B2 (en) * 2009-12-09 2015-07-28 Sandisk Technologies Inc. Storage device and method for using a virtual file in a public memory area to access a plurality of protected files in a private memory area
US8301694B2 (en) * 2010-05-20 2012-10-30 Sandisk Il Ltd. Host device and method for accessing a virtual file in a storage device by bypassing a cache in the host device
FR2976096B1 (fr) * 2011-06-06 2013-06-21 Qualtera Système d'analyse de données de test de semi-conducteurs
US9612977B2 (en) * 2011-07-15 2017-04-04 Standard Microsystems Corporation Method and system for controlling access to embedded nonvolatile memories
JP5464226B2 (ja) * 2012-03-30 2014-04-09 富士通株式会社 情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラム
US8943251B2 (en) * 2012-05-14 2015-01-27 Infineon Technologies Austria Ag System and method for processing device with differentiated execution mode
GB2513727B (en) * 2012-06-27 2015-06-24 Nordic Semiconductor Asa Memory protection
US8925098B2 (en) * 2012-11-15 2014-12-30 Elwha Llc Data security and access tracking in memory
US8773905B1 (en) * 2013-03-06 2014-07-08 Apple Inc. Identifying and mitigating restricted sampling voltage ranges in analog memory cells
JP2014209312A (ja) * 2013-03-25 2014-11-06 株式会社東芝 集積回路
US9343162B2 (en) * 2013-10-11 2016-05-17 Winbond Electronics Corporation Protection against side-channel attacks on non-volatile memory
US9959421B2 (en) * 2014-06-23 2018-05-01 Oracle International Corporation System and method for monitoring and diagnostics in a multitenant application server environment
JP2016031656A (ja) * 2014-07-29 2016-03-07 株式会社リコー 情報処理装置、自己検査方法及び自己検査プログラム
US9710651B2 (en) * 2015-04-10 2017-07-18 Vixs Systems Inc. Secure processor for SoC initialization
US9619647B2 (en) 2015-05-07 2017-04-11 Nxp Usa, Inc. Integrated circuit access
US9965402B2 (en) * 2015-09-28 2018-05-08 Oracle International Business Machines Corporation Memory initialization detection system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010021120A1 (en) * 2000-03-08 2001-09-13 Yukihito Oowaki Ferroelectric memory
US20080133796A1 (en) * 2004-03-11 2008-06-05 Gallagher James R Method, system, and computer program product for dynamically selecting software buffers for aggregation according to current system characteristics
US9483422B2 (en) * 2011-07-18 2016-11-01 Hewlett Packard Enterprise Development Lp Access to memory region including confidential information
US20140281319A1 (en) * 2013-03-15 2014-09-18 Nvidia Corporation System and method for protecting data
US20150301956A1 (en) * 2014-04-22 2015-10-22 Lsi Corporation Data storage system with caching using application field to carry data block protection information
TW201737098A (zh) * 2016-03-28 2017-10-16 英特爾公司 用以使用針對雙直列記憶體模組的晶片選擇信號之技術

Also Published As

Publication number Publication date
US10318438B1 (en) 2019-06-11
US20190179774A1 (en) 2019-06-13
CN109901793B (zh) 2022-06-10
JP6771523B2 (ja) 2020-10-21
JP2019145070A (ja) 2019-08-29
TW201926047A (zh) 2019-07-01
CN109901793A (zh) 2019-06-18

Similar Documents

Publication Publication Date Title
TWI691842B (zh) 記憶體安全裝置及其方法
US11089016B2 (en) Secure system on chip
US10691807B2 (en) Secure system boot monitor
US7917741B2 (en) Enhancing security of a system via access by an embedded controller to a secure storage device
KR101775800B1 (ko) 펌웨어의 도난 방지
US20090288161A1 (en) Method for establishing a trusted running environment in the computer
US9262631B2 (en) Embedded device and control method thereof
US11556651B2 (en) Method for secure booting using route switchover function for boot memory bus and apparatus using the same
US11163912B2 (en) Data attestation in memory
US11816202B2 (en) Run-time code execution validation
JP2019122030A (ja) コード署名の条件付き規定に基づくセキュアクライアント認証
US7624442B2 (en) Memory security device for flexible software environment
WO2022077388A1 (zh) 一种处理器的安全度量装置及方法
CN115357948A (zh) 一种基于tee及加密芯片的硬件防抄板加密方法及其装置
JP7005676B2 (ja) システム起動を監視するための安全装置及び安全方法
US10691586B2 (en) Apparatus and method for software self-test
Kanuparthi et al. A survey of microarchitecture support for embedded processor security
JP5460133B2 (ja) マイクロコントローラ装置
CN110909357B (zh) 一种电子本及其控制方法
CN110569205A (zh) 安全系统单芯片及其操作方法