TW202240439A - 安全加密協同處理器 - Google Patents

安全加密協同處理器 Download PDF

Info

Publication number
TW202240439A
TW202240439A TW111113080A TW111113080A TW202240439A TW 202240439 A TW202240439 A TW 202240439A TW 111113080 A TW111113080 A TW 111113080A TW 111113080 A TW111113080 A TW 111113080A TW 202240439 A TW202240439 A TW 202240439A
Authority
TW
Taiwan
Prior art keywords
processor
cryptographic
encryption
register
bits
Prior art date
Application number
TW111113080A
Other languages
English (en)
Other versions
TWI821971B (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 TW202240439A publication Critical patent/TW202240439A/zh
Application granted granted Critical
Publication of TWI821971B publication Critical patent/TWI821971B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Signal Processing (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Bidet-Like Cleaning Device And Other Flush Toilet Accessories (AREA)
  • Cereal-Derived Products (AREA)
  • Detergent Compositions (AREA)

Abstract

一種具有一積體電路(IC)晶片之裝置可提供保護以防止對一加密協同處理器之攻擊。一攻擊者可藉由例如獲得一私密加密金鑰或指令碼來破壞一加密協同處理器。為對抗此等攻擊,實例性實施方案以經加密形式儲存資訊。該資訊可對應於資料、指令碼或定位於狀態暫存器中之中間值。為安全且快速地「擦除」此經儲存資訊,該加密協同處理器可改變該加密金鑰。在其他實例性實施方案中,提供具有適於不同類型之程序之「隨機性品質」之兩種不同位準之隨機數。一加密協同處理器可包含根據該兩個不同品質位準儲存隨機化之位元以供在加密操作期間進行快速存取的兩個暫存器。為進一步阻撓潛在攻擊,一加密協同處理器可確認經執行以執行加密操作之指令碼之內容或使用。

Description

安全加密協同處理器
電子器件在製造、通信、運輸、醫療保健、商務、社群互動及娛樂中發揮不可或缺的作用。例如,電子器件對提供商務及通信之基於雲端之分佈式運算功能性之伺服器場供電。電子器件亦嵌入於許多不同類型之現代設備(自醫療器件至電器及自車輛至工業工具)中。個人電子器件實現可攜式視訊觀看及對智慧型數位助理之便捷存取。此外,一種多功能電子器件(智慧型電話)實際上已成為觸手可及的必需品。隨著電子器件變得無處不在且對現代生活之許多態樣至關重要,器件安全性已變得極為重要。
許多人熟悉惡意軟體(其有時被統稱為「電腦病毒」)。一些惡意軟體經設計以獲得對由一電子器件儲存之資訊之未經授權存取或以其他方式破壞該電子器件。幾種策略可藉由抵抗特定類型之惡意軟體來幫助保護一使用者之器件及資訊免受安全威脅。此等策略包含採用並定期更新彈性作業系統,參與安全運算實踐及安裝一反惡意軟體程式。不幸的是,此等策略無法使一電子器件不受所有惡意軟體攻擊影響。
此外,除了由基於軟體之惡意軟體實行之攻擊之外,電子器件亦可能受其他類型之攻擊影響。例如,可由對硬體之實體攻擊及由對無線通信之射頻攻擊危及電子器件之安全及可靠操作以及由此等器件儲存之資訊之安全性。換言之,一些形式之攻擊可規避或破壞上文列出之策略以使一不良行為者能夠破壞一電子器件且潛在地獲得對該器件所使用之任何帳戶之存取。
電子器件包含提供實現各種功能性之智能之至少一個積體電路(IC)。此等功能性促進商務,簡化醫療保健存取,提供娛樂,支援社群媒體互動及實現如上文識別之其他服務。一電子器件亦可儲存或以其他方式利用待保護之資訊。為支援此等功能性及促進安全操作,一些電子器件包含呈作為一IC之部分之安全電路系統之形式的基於硬體之保護。不幸的是,安全電路系統之現有方法不足以對抗當今在電子器件上投放的各式各樣的軟體、硬體及無線攻擊。
特定電子器件(如伺服器電腦及智慧型電話)負責向使用者提供服務。使用者依靠此等電子器件來獲得使用一或多個帳戶存取之關鍵服務(如用於金融服務、航空旅行或政府官方文件之關鍵服務)。由於電子器件與帳戶之鏈接,一經破壞之電子器件可允許對鏈接至一帳戶之服務之非所要存取或允許對帳戶自身之未經授權存取。此外,為提供與此等帳戶相關聯之服務,此等電子器件可儲存待保護之帳戶相關資訊(諸如用於加密之財務資料、用戶名、密碼及私密金鑰)。不幸的是,反惡意軟體程式無法阻止針對一電子器件之所有攻擊途徑。例如,一反惡意軟體程式可能無法提供保護以防止使用微型探針來偵測一積體電路(IC)晶片上之電壓位準之一直接實體攻擊。因此,將可識別、阻止、擊退或以其他方式阻撓對一電子器件之攻擊之基於硬體之措施(包含抵抗實體攻擊)併入至該電子器件中係有益的。
因此,一電子器件可包含抵抗來自不良行為者之攻擊之安全電路系統。在一些情況下,安全電路系統偵測不適當或可疑活動並採取保護行動。安全電路系統可以不同方式實施。例如,電腦工程師可將安全電路系統製造為一獨立IC晶片或為另一晶片(諸如一系統單晶片(SoC))之部分。在任何情況下,安全電路系統可為一受保護飛地(protected enclave)、一可信任晶片平台、一基於硬體之信任根(RoT) (例如,矽RoT)或其等之一組合之部分。無關於安全電路系統如何或在何處併入至一電子器件中,電腦工程師可設計安全電路系統來抵抗許多不同類型之攻擊,如下文所描述。
對電子器件之攻擊可採用以下形式:觀察螢幕影像或監測重複行為以推斷資訊之程式;嘗試自記憶體之受保護區域讀取資料之應用程式;電路系統之直接實體探測等。安全電路系統執行多個功能來對抗此等攻擊之一或多者。例如,安全電路系統可在使用期間、在運送或儲存時保護加密金鑰。為此,可採用專用記憶體及私密資料匯流排。安全電路系統亦可產生高品質偽隨機數或在與可作為惡意軟體操作之應用程式分離之一區域中操作一密碼引擎。此外,安全電路系統可經設計以確保使用正確的、未篡改之可啟動基本輸入/輸出系統(BIOS)來啟動硬體。
因此,安全電路系統可負責實施一套多樣化功能以對抗對電子器件之各種各樣攻擊。然而,安全電路系統之現有方法採用在一特定(ad hoc)基礎上設計之硬體架構。安全電路系統之不同電路部分亦可設計成彼此相對隔離。因此,經設計以對抗各種安全威脅之電路部分可能無法如預期進行互操作,從而使硬體較不安全。此外,較差組件間通信為潛在不良行為者創建另一攻擊途徑。此外,此特定方法使安全電路系統之設計及測試階段更艱巨、更冗長且成本更高。此可導致在開發安全架構時忽略或未充分解決一些安全威脅。因此,此等特定架構使得保護電子器件免受多樣及各式各樣的安全威脅變得更加困難。
然而,本文件在一些實例中描述提供一可調適及靈活的框架或平台之方法,該可調適及靈活的框架或平台可產生彈性且可程式化的安全硬體以對抗對電子器件之各種形式之攻擊。在安全電路系統之一些實施方案中,不同類型之電路或提供不同安全相關功能性之電路部分使用仍然產生特定及一致的傳訊之一擴展協定進行通信。通信協定使提供不同安全相關功能之電路能夠根據一經指定設計框架來無縫互動。設計框架及通信協定產生「可兼容(comportable)組件」,使得即使彼此分開設計之電路組件亦適於以穩定、可預測互動一致地部署在一起。如本文中所使用,「可兼容組件」包含經設計以遵守一共同框架,使得組件適於一起使用的彼等組件。在一些情況下,兼容性在一積體電路晶片之兩個或更多個安全相關組件之間提供一定程度之隨插即用能力。
除了一處理器及一互連件之外,安全電路系統亦可包含多個周邊器件。多個周邊器件之各周邊器件可執行有助於安全電路系統之安全或適當運作之某一功能。因此,各周邊器件可提供一核心或支援安全相關功能。該功能(如控制對資料之存取或執行加密操作)支援安全電路系統之一總體目的。此等目的可包含提供特徵以使能夠藉由一電子器件之其他電路系統及/或IC進行安全運算。為可預測性及互操作性,各周邊器件可實現為一可兼容組件。
通常,運算及其他電子器件經受可破壞或竊取資料之攻擊(包含實體攻擊)。一硬體信任根(RoT)方案可對抗許多攻擊(包含一些實體攻擊)。RoT矽可用提供安全特徵之一積體電路來實現。在一些情況下,一矽RoT晶片包含經受一不良行為者之實體攻擊之一加密處理器或協同處理器,該不良行為者可能試圖讀取資訊(諸如一密碼(cipher)金鑰或指令碼),或可能試圖破壞一密碼程序。此等實體攻擊可在加密協同處理器「靜止」時或在加密協同處理器正執行一密碼程序時執行。
然而,一加密協同處理器可經設計或建置以抵抗攻擊。此外,一加密處理區塊或模組可實施為一安全晶片之一可兼容組件(例如,一加密協同處理周邊器件)。因此,一矽RoT晶片或其他安全電路系統可包含作為一安全系統內之一區塊或模組操作之一加密處理器(例如,一協同處理器或加速器)。例如,該處理器可用於提供非對稱密碼,諸如使用Rivest-Shamir-Adleman (RSA)或橢圓曲線數位簽署演算法(ECDSA)之訊息簽署。在一些實施方案中,加密處理器可用具有用於非對稱密碼之「專用」指令及功能單元之一通用處理器來實現。例如,適於加密操作之功能性可包含一寬(例如,256位元)暫存器檔案、一算術邏輯單元(ALU)及一乘法累加(MAC)單元。此等電路可提供在一些形式之非對稱密碼中使用之寬整數之更快處理。可簡化加密處理器之設計以減少攻擊表面,同時仍滿足效能目標。加密處理器亦可或代替性地用於對稱加密操作。
為保護一矽RoT晶片或其他安全電路系統中之一加密協同處理器,可對儲存於該加密協同處理器處之資訊加密。對資訊加密係此處使用之一更通用術語:「保護資訊免受未經授權存取影響」之一項實例。「保護資訊免受未經授權存取影響」之其他實例包含藉由移除一密碼金鑰使經加密資訊不可存取,有效地對加密操作提供根據兩個或更多個隨機化品質位準隨機化之多個位元,及/或促進可執行程式碼之確認。資訊可對應於資料、指令碼、定位於狀態暫存器中之中間值等。本文件描述用以藉由改變加密金鑰來安全且快速地「擦除」此經儲存資訊之技術。一些密碼程序使用一或多個隨機數來執行加密操作。本文件描述用於提供具有適於不同類型之程序之「隨機性品質」(在本文中亦被稱為「隨機性之品質」)之兩個不同位準之隨機數的技術。隨機性品質可為可自隨機數之一分佈導出之一數值隨機性值(例如,一熵值)。對於一序列隨機數(包含位元),隨機性之品質係指示在給定該序列之一些或所有較早隨機數(包含位元)的情況下預測隨機數(包含位元)之連續者的難度。此外,一加密協同處理器可包含根據兩個不同隨機性品質位準儲存隨機化之位元以供在加密操作期間進行快速存取的兩個暫存器。一安全加密協同處理器之額外實例性實施方案與確認經執行以執行加密操作之指令碼之內容或使用有關。可實施此等及其他所描述技術以使一加密協同處理器更安全地抵禦攻擊。
概述
電子器件對現代社會做出重要貢獻,諸如與通信、安全及製造有關之貢獻。各電子器件依靠具有處理能力之一積體電路(IC)來提供某一功能性。憑藉如此多的此等功能性之關鍵性質,一電子器件可包含具有用以提供保護之安全電路系統之一IC。安全電路系統減少資訊被無意曝露或某一功能係以一有害或以另外未經授權方式使用的機會。安全電路系統可以多種形式實現,該等形式之一者涉及信任根(RoT)範式。
關於RoT矽,一基於硬體之機構在防止對資訊之不適當存取,阻止一器件之未經授權使用等方面保持運算安全。矽RoT原理可有助於確保硬體基礎設施及在其上執行之軟體皆保持於其等預期、值得信任的狀態。為此,矽RoT可使用經授權及可確認碼來確認關鍵系統組件安全地啟動。因此,其可確保一伺服器或另一電子器件用正確韌體啟動且韌體尚未被低階惡意軟體感染。矽RoT可提供額外或替代安全益處。例如,其可提供一密碼唯一機器身分;此唯一身分使一操作者能夠確認一電子器件係合法的。此外,其可在一防篡改筒倉(silo)中維護加密金鑰及其他資訊,此防止或至少阻止甚至具有對一器件之實體存取之彼等獲得資訊。錨定於硬體中之RoT服務亦可提供權威的、篡改明顯(tamper-evident)的審計紀錄及其他運行時間安全服務。
晶片設計者可將矽RoT技術併入至專注於提供安全功能之個別IC晶片中。替代性地,RoT矽可與其他電路系統整合,包含在一中央處理單元(CPU)晶片或封裝中,在一圖形處理單元(GPU)晶片或卡中,在一系統單晶片(SoC)中,在一記憶體儲存器件中等。通常,僅舉幾例,安全電路系統可在伺服器主機板、網路卡、用戶端器件(例如,膝上型電腦及智慧型電話)、消費者路由器、物聯網(IoT)器件以及固定及可攜式儲存單元中操作。藉由將RoT錨定於矽中,無關於應用或電子器件,跨硬體、韌體及軟體層級增強運算安全性。矽RoT亦跨直接或經由一網路彼此通信之不同器件增強安全性。儘管本文件中使用一矽或硬體RoT環境來描述一些安全及電路設計原理,但此僅供例示,因為所描述原理通常適用於安全電路系統。
在現今之運算環境中,不良行為者可使用眾多攻擊向量在大量層級攻擊電子器件。例如,可使用經由網際網路傳輸以試圖獲得儲存於一膝上型電腦中但一使用者希望得到保護之資訊的惡意軟體來進行一攻擊。又,一攻擊可涉及在器件之運輸期間或在器件在一未觀察到之位置中操作時將惡意軟體注入至用於啟動一電子器件(如一Wi-Fi®路由器或一IoT器件)之韌體中。作為另一實例,一不良行為者可竊取一電子器件且具有足夠時間來對該器件做直接實體攻擊。此等直接實體攻擊可包含切斷導線,探測電壓,用一雷射注入故障,重複運行程式碼以觀察趨勢及推斷資訊等。
因此,安全電路系統可負責實施一套多樣化功能以對抗對電子器件之各種各樣攻擊。然而,安全電路系統之現有方法採用在一特定基礎上設計之硬體架構。安全電路系統之不同電路部分亦可設計成彼此相對隔離。因此,經設計以對抗各種安全威脅之電路部分可能無法如預期進行互操作,從而使硬體較不安全。此外,較差組件間通信為潛在不良行為者創建另一攻擊途徑。此外,此特定方法使安全電路系統之設計及測試階段更艱巨、更冗長且成本更高。此可導致在開發安全架構時忽略或未充分解決一些安全威脅。因此,此等特定架構使得保護電子器件免受多樣及各式各樣的安全威脅變得更加困難。
然而,本文件描述提供一可調適及靈活的框架或平台之方法,該可調適及靈活的框架或平台可產生彈性且可程式化的安全硬體以對抗對電子器件之各種形式之攻擊。在安全電路系統之一些實施方案中,不同類型之電路或提供不同安全相關功能性之電路部分使用仍然產生特定及一致的傳訊之一擴展協定進行通信。通信協定使提供不同安全相關功能之電路能夠根據一經指定設計框架來無縫互動。
設計框架及通信協定產生「可兼容」組件,使得即使彼此分開設計之電路組件亦適於以穩定、可預測互動一致地部署在一起。例如,通信及其他形式之互動(例如,共用諸如匯流排、介面或記憶體之資源)可至少部分標準化以提供可預測性及互操作性之一量度。如本文中所使用,「可兼容組件」包含經設計以遵守一共同框架,使得組件適於一起使用的彼等組件。在一些情況下,兼容性在一積體電路晶片之兩個或更多個安全相關組件之間提供一定程度之隨插即用能力。
在一些實施方案中,除了一「集中式」處理器及一互連件之外,安全電路系統亦包含多個周邊器件。多個周邊器件之各周邊器件執行有助於安全電路系統之安全或適當運作之某一功能。因此,各周邊器件可提供一核心安全相關功能或一支援安全相關功能。功能(如控制對資料之存取或執行加密操作)支援安全電路系統之一總體目的,該總體目的包含提供特徵以使能夠藉由一電子器件之其他電路系統及/或IC進行安全運算。為可預測性及互操作性,各周邊器件可實現為一可兼容組件。
可實施為一可兼容組件及/或一周邊器件之一電路組件之一實例係一加密處理器(包含一加密協同處理器)、區塊或模組。一加密處理器可耦合至一系統匯流排或互連件且為安全電路系統或一積體電路之另一部分提供密碼功能(諸如數學運算)。一加密處理器可實現為支援一「主」、「中央」或「主機」處理器或結合其操作之一加密協同處理器。例如,一加密協同處理器可用於非對稱密碼(例如,Rivest-Shamir-Adleman (RSA)密碼及/或橢圓曲線數位簽章演算法(ECDSA)密碼)。
在一些實施方案中,可強化一加密協同處理器以偵測或擊退故障注入攻擊。例如,協同處理器可使用一(39,32) Hsiao錯誤校正碼(ECC)用於完整性保護。ECC可在錯誤偵測模式中使用以排除可校正性,諸如提供3位元錯誤偵測而非2位元偵測及1位元校正。又,協同處理器可使用選擇性地使特定位元反轉以使全0字及全1字成為無效碼字之一經反轉單一錯誤校正及雙重錯誤偵測(SEC-DED) Hsiao ECC碼。此使能夠偵測將所有位元設定為0或將所有位元設定為1之攻擊。此外,協同處理器可包含用(例如) 32位元及256位元讀取及/或寫入(或其他位元寬度)運作之資料及/或指令記憶體完整性保護。
在一些情況下,可實施透過一或多個組件轉變來避免重新計算完整性位元(例如,儘可能地)之一記憶體完整性保護方案。例如,一協同處理器可包含自一資料記憶體至一暫存器檔案之一完全完整性保護之路徑。為此,在該資料記憶體與該暫存器檔案之間傳播資料之一傳輸路徑(例如,包含導線及緩衝器)可包含用以輸送資料位元及相關聯保護位元(例如,ECC位元)之足夠容量(例如,一充足位元寬度)。又,可將消耗完整性保護之資料(例如,資料+ ECC位元)之一完整性保護方案併入至協同處理器中。例如,完整性保護方案可自系統匯流排延伸通過資料記憶體並至協同處理器之暫存器檔案中,而無需重新編碼資料。用以分散經注入故障之記憶體加擾及ECC之一組合可應用於加密協同處理器之一記憶體。在其他實例中,可複製解碼及/或控制邏輯。憑藉此複製,一個複本可產生所產生輸出之經反轉版本。可藉由檢查一者之輸出匹配另一者之輸出之反轉來達成故障偵測。此外,可藉由將以上(例如,解碼邏輯複製)與用於自指令記憶體檢查之ECC位元組合來提供自一指令記憶體至功能單元之指令完整性。因此,ECC可保護至解碼單元之一路徑,且複製之解碼單元可保護至功能單元之該路徑。例如,具有一複製之指令解碼器之一處理器可提供抵抗故障注入攻擊。
在其他實施方案中,可使用一或多種技術個別地或以任何組合來強化一加密協同處理器以防止側頻道洩漏。首先,許多、大多數或甚至所有指令可具有一與資料無關之時序(諸如用於各指令之一個週期)。通常,各特定指令可佔用一個、兩個、三個或更多個週期,但無關於目標資料,每次執行特定指令時,用以執行特定指令之週期數係相同的。其次,可以隨機性安全地清除維持於處理區塊內之大多數或甚至所有狀態。第三,可藉由改變至少一個記憶體加擾金鑰來清除資料及指令記憶體(例如,SRAM)內之資訊。金鑰改變可使所有資料或指令碼在一單個週期內不可存取且不會洩漏資料或指令碼。第四,可個別地或分開地選擇待自其(等)清除資訊之(若干)區域。
此等區域可包含指令記憶體、資料記憶體及大多數或甚至所有內部狀態(其等可儲存於暫存器中)。加擾金鑰之此改變實現對儲存於不同記憶體中之資訊的快速及/或目標保護。若跨協同處理器之調用保留指令記憶體,則若用不同資料重複地(例如,兩次或更多次)執行同一密碼演算法,則可改良效能。手動地觸發一資料清除可需要使主機軟體能夠在清除資料之前首先讀出資料。
在額外或替代實施方案中,一加密協同處理器可提供具有不同品質之隨機性之軟體(例如,運行協同處理器及/或在協同處理器上運行之指令碼)。實例性隨機性品質可包含一較低品質隨機性及一相對較高品質隨機性。該相對較低品質隨機性可(例如)用於盲蔽/遮蔽或隨機化一應用程式中之一控制流。該相對較高品質隨機性可(例如)用於滿足密碼使用案例之通用準則認證要求,此係因為一些公開加密演算法具有發佈之標準。根據不同隨機性品質產生之隨機值可儲存於分開的暫存器中及/或預取或以其他方式預定,使得隨機位元在其等待被使用時準備好。由於與一較高隨機化品質相關聯之隨機位元可涉及更多能量或時間來獲得,因此利用兩個不同隨機性品質位準可使一加密協同處理器能夠取決於加密操作來平衡電力效率或執行速度與一適當安全位準。
一加密協同處理器可提供具有不同及/或互補安全特徵之其他實施方案。例如,協同處理器可向一主機處理器提供一檢查總和(checksum),該檢查總和係針對已寫入或正在寫入至指令記憶體之所有指令碼(或指令資料之一經指定部分)來運算。此使主機能夠確認指令碼之內容。此外或替代性地,一協同處理器可向一主機處理器提供一定數量或數目之經執行指令以用於確認指令碼之執行。在某些實施方案中,可執行非對稱操作之一加密協同處理器亦可用於執行對稱操作(例如,藉由實施諸如一對稱區塊密碼之一演算法(如AES-256)或藉由實施諸如一安全雜湊演算法(SHA)之一演算法(如SHA2-512或如HMAC-SHA-512),其係一金鑰雜湊演算法)。
以此等方式,可將安全電路系統併入至一矽RoT晶片及/或一SoC中。此安全電路系統包含多個周邊器件(包含一加密協同處理器)。儘管安全加密處理及/或一安全加密協同處理器之一些態樣係在一安全電路系統環境中及/或在可兼容設計之背景內容中描述,但所揭示之安全加密協同處理器概念適用於其他電路環境及其他設計範式。此外,儘管安全加密處理及/或一安全加密處理器之一些態樣係依據一協同處理器或一協同處理環境來描述,但所揭示之安全加密協同處理器及協同處理概念通常適用於一加密處理器及/或一加密協同處理環境。
本文件描述一安全及/或強化之加密協同處理器。然而,本文件首先參考圖1及圖2描述安全環境實例。接下來參考圖3-1至圖3-3描述周邊器件介面及設計程式碼分析(包含針對「可兼容組件」)之實例。接著,本文件參考圖4至圖8描述用於一安全加密協同處理器之態樣及實施方案。參考圖9描述一實例性電子器件。在本文中描述之環境、態樣、電路系統、技術及實施方案之各者可個別地或以任何組合使用。
因此,下文參考相關聯圖以各種細節程度論述一安全加密協同處理器之實例性實施方案。下面論述首先闡述一實例性操作環境且接著描述實例性硬體、方案及技術。此後參考流程圖或圖式描述實例性方法。最後,描述一實例性運算器件。 一安全加密協同處理器之實例性操作環境
圖1通常以100繪示具有包含安全電路系統106之一積體電路104 (IC 104)之一實例性裝置102。裝置102、積體電路104及/或安全電路系統106可實施如本文中所描述之一安全加密協同處理器118。在此實例中,裝置102係描繪為一智慧型電話。然而,裝置102可實施為任何合適運算或電子器件。
裝置102之實例包含一行動電子器件或行動器件、行動通信器件、數據機、蜂巢式或行動電話、行動站、遊戲器件、導航器件、媒體或娛樂器件(例如,一媒體串流傳輸器或遊戲控制器)、膝上型電腦、桌上型電腦、平板電腦、智慧型電器、基於車輛之電子系統、可穿戴運算器件(例如,衣服、手錶或實境變更眼鏡)、物聯網(IoT)器件、感測器、庫存管理器件、一機器或一件設備(例如,車輛或機器人)之電子部分、記憶體儲存器件(例如,一固態磁碟(SSD))、伺服器電腦或其之部分(例如,一伺服器刀鋒或機架或一資料中心之另一部分)及類似者。裝置102之所繪示實例包含一平板器件102-1、一智慧型電視102-2、一桌上型電腦102-3、一伺服器電腦102-4、一智慧型手錶102-5、一智慧型電話(或文件閱讀器) 102-6及智能眼鏡102-7。
在實例性實施方案中,裝置102包含至少一個積體電路104。積體電路104可安裝於一模組、卡或印刷電路板(PCB) (未展示)上。一PCB之實例包含一可撓性PCB、一剛性PCB、一單層或多層PCB、一表面安裝或貫穿孔PCB、其等之組合等。各積體電路104可實現為一通用處理器、一系統單晶片(SoC)、一安全定向IC (例如,一RoT IC晶片)、一記憶體晶片、一通信IC (例如,一數據機或射頻IC)、一圖形處理器、一人工智能(AI)加速器、其等之組合等。積體電路104可單獨或與其他IC晶片一起封裝。
如所展示,積體電路104包含安全電路系統106。安全電路系統106可包含各種部分,包含多個電路組件108-1…108-C (其中 C表示一正整數)及一互連件110。除了互連件110之外,電路組件108之實例亦包含一處理器及多個周邊器件。此等係在圖2中描繪且在下文描述。儘管在圖1中未明確展示,但積體電路104可包含除安全電路系統106之外之其他部分。雖然多個電路組件108-1…108-C及互連件110可如所展示一起整合於一單個IC上,但該等組件可替代性地跨兩個或更多個IC分佈。安全電路系統106可實現為(例如)一受保護飛地、一可信任晶片平台、一基於硬體之信任根(RoT)晶片(例如,一矽RoT)等。無關於安全電路系統106如何或在何處併入至一電子器件中,安全電路系統106可遇到許多不同類型之攻擊。
在實例性操作中,一旦偵測到一攻擊或一潛在攻擊或一異常發生,某一組件就產生一警告112或一中斷114。例如,一電路組件108可產生一警告112且可將警告112傳輸至一警告處置器(其在下文描述)。此外或替代性地,另一電路組件108可產生一中斷114以供處理器處置。根據用於安全電路系統106之處理器及/或周邊器件之間之互動的一共同框架在兩個或更多個組件108之間傳送警告112、中斷114及其他信號。該共同框架可指定在各周邊器件處之介面及傳訊以促進跨多個周邊器件之互操作性及一致通信協定之使用。因此,雖然兼容性之一些態樣係依據安全電路系統呈現,但可亦採用與其他類型之電路系統之周邊器件兼容性。實例性框架以及實例性通信介面及介面規範係在下文參考圖3-1至圖3-3進行描述。
在一些實施方案中,一電路組件108係實現為一加密協同處理器118 (或加密協同處理區塊118)。加密協同處理器118可作為一周邊器件、作為一可兼容組件、其等之一組合等併入至安全電路系統106中。例如,安全電路系統106可利用加密協同處理器118用於快速及/或高效的加密操作,包含密碼相關之數學運算(諸如使用許多數位之彼等)。因此,加密協同處理器118可執行加密處理116。可使用本文中所描述之方案及技術來保全加密處理116及/或加密協同處理器118之操作及/或電路系統免受多種形式之攻擊(包含實體攻擊)。例如,此等方案及技術包含利用不同隨機性品質及藉由安全地改變與資訊相關聯之一加擾金鑰來抹除資訊。一安全加密協同處理器之此等及其他態樣係在下文參考圖4至圖8進行描述。然而,參考圖2,接下來描述安全電路系統106之實例性架構。
圖2繪示包含多個電路組件(包含可經實施為可兼容之多個實例性周邊器件250)之實例性安全電路系統106。如所展示,安全電路系統106包含耦合至一互連件110之一處理器202。互連件110可使用(例如)一匯流排、一切換組構或使各種電路組件能夠通信之一匯流排網路來實現。除了互連件110及/或處理器202之外,(圖1之)多個電路組件108-1…108-C亦可包含多個記憶體及多個周邊器件。處理器202、多個記憶體及多個其他周邊器件250之各者直接或間接耦合至互連件110。如圖2中所描繪及本文中所描述,一加密協同處理器118可實施為安全電路系統106之一周邊器件250。然而,一加密協同處理器118可在替代環境中實施。
在實例性實施方案中,多個記憶體可包含一唯讀記憶體206 (ROM 206)、一靜態隨機存取記憶體208 (SRAM 208)及一快閃記憶體210。多個周邊器件250可包含一警告處置器204、一先進加密標準(AES)引擎212 (AES引擎212)、一基於雜湊之訊息鑑認碼(HMAC)引擎214 (HMAC引擎214)、一串列周邊介面(SPI)器件230 (SPI器件230)及一快閃記憶體控制器216。多個周邊器件250亦可包含一通用異步接收器/傳輸器(UART)單元218 (UART單元218)、一通用輸入/輸出(GPIO)介面220 (GPIO介面220)、一接腳多工器222 (接腳mux 222)及一墊控制器224。多個周邊器件250可進一步包含一隨機數產生器232 (RNG 232)及一計時器234。此外,周邊器件250可包含如圖2中所展示之記憶體之任一者。儘管記憶體及其他周邊器件250之某些實例係在圖2中所描繪或在本文中所描述,但安全電路系統106之一給定實施方案可包含處理器、控制器、記憶體、模組或周邊器件(包含其等之複製)之更多、更少及/或不同例項。
所繪示之電路組件可基於一或多個時脈信號同步操作。儘管圖2中未展示,但安全電路系統106可包含用以產生時脈信號之至少一個時脈產生器或可包含用以彼此獨立地重設一或多個個別組件、聯合地重設多個組件或重設一整個IC晶片之重設電路系統。替代性地,安全電路系統106可接收來自在安全電路系統106外部之一源之至少一個時脈信號或一重設信號,該源可在或可不在一分開的晶片上。一或多個分開的周邊器件250可在各自個別時脈域中操作。例如,輸入/輸出(I/O)周邊器件可同步至在一各自I/O器件或頻道本端之一時脈。不同時脈域中之周邊器件可相對於彼此異步地操作或通信。
下文描述所繪示組件之實例性實施方案。處理器202可實現為安全電路系統106之一「主」、「中央」或「核心」處理器。僅藉由實例,處理器202可用具有一多階段管線之一32位元、有序精簡指令集運算(RISC)核心來實施。憑藉(例如)一RISC-V功能性,處理器可實施一M (機器)及一U (使用者)模式。啟動一重設接腳(未展示) (例如,透過一低位準有效重設接腳之撤銷確證)引起處理器202退出重設且開始在其重設向量處執行程式碼。重設向量可在ROM 206中開始,該ROM 206在跳躍至模擬嵌入式快閃記憶體(e快閃記憶體)之前驗證該快閃記憶體中之程式碼。換言之,在釋放重設之前,程式碼預期已被具現化至e快閃記憶體中。在一些情況下,按照用以支援各種電路組件當中之互操作性之一兼容性規範,可使貫穿安全電路系統106之重設異步低位準有效。可藉由警告處置器204產生一重設作為一安全對策;藉由一看門狗(watchdog)計時器;等。亦可將重設信號發送至其他電路組件(諸如記憶體之一者或其他周邊器件250之一者)。
一除錯模組226 (DM 226)及一中斷控制器228 (ItC 228) (亦可使其等之任一者可兼容的)耦合至處理器202。除錯模組226提供對處理器202之除錯存取。藉由與IC之特定接腳介接,除錯模組226中之邏輯容許處理器202進入一除錯模式且提供將程式碼注入至器件中(例如,藉由模擬一指令)或至一記憶體中的一能力。中斷控制器228可安置(例如,定位(positioned或located))成接近於處理器202。中斷控制器228可接受來自安全電路系統106內之中斷源之一向量。中斷控制器228亦可在將中斷轉送至處理器202處置之前向中斷指派調平及優先級。
處理器202可提供任何所要位準之效能或包含任何內部電路組件。例如,處理器202可包含至少一個算術邏輯單元(ALU) (例如,包含一「額外」ALU以計算分支目標以移除所採用之條件分支上之一延遲週期)及多個管線階段。憑藉多個管線階段,一管線可執行暫存器回寫以減少來自載入及儲存之一延遲週期且防止一管線暫停,其中在請求之後的週期內對一載入或儲存之一回應係可用的。處理器202可實施一單週期乘法器或在對一儲存之一錯誤回應上產生一不精確異常(exception),此容許處理器在一儲存之後繼續執行而無需等待回應。儘管未描繪,但明確言之處理器202,或通常安全電路系統106可包含用以提供指令之單週期存取時間之一指令快取區。
在所繪示實例中,安全電路系統106包含用於指令及資料之三個記憶體位址空間。ROM 206係在釋放一重設之後處理器202之目標。ROM 206含有硬編碼指令以在檢查下一階段之程式碼之前執行平台檢查之一子集。下一階段之程式碼(例如,儲存於e快閃記憶體中之一啟動載入程式)可為未被硬編碼至器件之矽中之第一段程式碼。因此,此下一階段之程式碼係針對完整性進行簽章檢查以增加安全性。ROM 206可藉由對啟動載入程式之全部內容實施一Rivest-Shamir-Adleman (RSA)檢查演算法來執行此簽章檢查。
快閃記憶體210可實施為用於程式碼儲存之e快閃記憶體。此e快閃記憶體可容置上文提及之啟動載入程式,以及一作業系統及分層於頂部上之應用程式。SPI器件230可用於批量載入e快閃記憶體。除錯模組226亦可用於程式碼載入。SRAM 208可作為可用於藉由處理器202進行之資料儲存(例如,用於堆疊及堆積資訊)之一高速暫存SRAM而操作。SRAM 208亦可儲存程式碼。
安全電路系統106可包含一套「周邊設備」或「周邊器件」。此等周邊器件250可為經由互連件110耦合至處理器202之從屬(subservient)執行單元。此等周邊器件250之各者可遵守確保彼此及與處理器202之兼容性之一介面框架。一兼容性方案可指定處理器202如何與一給定周邊器件通信(例如,使用互連件110),一周邊器件如何與晶片I/O通信(例如,經由一固定或可多工化I/O),一周邊器件如何與處理器202通信(例如,使用中斷),一周邊器件如何將安全事件(例如,使用警告指示)傳送至其他電路組件(如警告處置器204);一周邊器件如何與其他周邊器件通信(例如,經由至少一個暫存器,同步或異步);或其等之組合。所描繪之周邊器件250可包括相對於由警告處置器204提供之警告相關功能性、相對於處理器202、相對於記憶體之一或多者、相對於一晶片I/O等之周邊器件。因此,記憶體亦可包括相對於彼此或其他所描繪電路組件之周邊器件250。
電路或晶片I/O周邊設備包含接腳多工器222及墊控制器224。接腳多工器222在周邊器件250之至少一部分與安全電路系統106之可用的可多工化I/O節點之間提供傳訊路由(例如,其中整合各種組件之晶片之接腳或至一SoC之其他部分之一介面)。墊控制器224管理電路(例如,晶片)之外部I/O之各者之控制或墊屬性(如驅動強度、技術、上拉對下拉等及類似者)。接腳多工器222及墊控制器224自身係互連件110上之周邊器件。因此,各可具有或可以其他方式相關聯於提供軟體可組態性之至少一個暫存器集合。
UART單元218可實施UART特徵(諸如單通道雙工UART功能性)。其輸出及輸入可經組態以經由接腳多工器222連接至任何電路I/O。GPIO介面220經由接腳多工器222創建至外部電路系統之 G位元之雙向通信,其中 G係一正整數(如16、32或64)。關於記憶體I/O,SPI器件230可實施一韌體模式。此處,該韌體模式可啟用為外部驅動程式提供將韌體升級程式碼發送至快閃記憶體210之一庫中以進行現場韌體更新的能力之一特徵。韌體模式可包含使用SPI異動對記憶體進行定址。儘管未描繪,但安全電路系統106可包含一積體電路間(I2C)主機以啟用I2C器件之命令。I2C器件之此命令可包含標準、完整及快速模式。
亦描繪若干「核心安全」周邊設備,包含加密引擎及警告處置器204。AES引擎212可使用一或多種協定及不同金鑰大小(如128b、192b或256b)提供對稱加密及解密。組件可選擇對以(例如) 16位元組數量到達之資料之加密或解密以使用不同區塊加密操作模式進行加密或解密。AES引擎212可支援電子碼簿(ECB)模式、密碼區塊鏈接(CBC)模式、密碼回饋(CFB)模式、輸出回饋(OFB)模式、計數器(CTR)模式及類似者。可使資料傳送成為處理器可用的,例如,可經由暫存器寫入將金鑰及資料材料傳遞至密碼引擎中。替代性地,可包含用於金鑰及資料材料之傳送之私密頻道以減少自潛在地不受信任處理器活動之曝露。
HMAC引擎214可利用(例如)一安全雜湊演算法(SHA) SHA-256作為一雜湊演算法。SHA-256係SHA-2系列之雜湊演算法之一成員,其中摘錄(或雜湊輸出)具有256位元長度而無關於待雜湊之輸入之資料大小。在宣告一雜湊請求開始之後,將資料發送至HMAC周邊器件中。此將內部狀態歸零為初始狀況(例如,一次32位元)。一旦一組件用戶端已發送資料,該用戶端便可指示雜湊請求之完成(用選用部分字最終寫入)。根據一實例性可攜帶性介面方案,HMAC引擎214產生雜湊結果且使其可用於由請求用戶端讀取之暫存器。可使資料傳送成為處理器可用的或可使資料傳送成為私密的以減少對潛在不受信任處理器活動的曝露。
HMAC係分層於一雜湊函數(例如,SHA-256)之頂部上之一訊息鑑認協定,且HMAC混合於一私密金鑰中以用於密碼目的。HMAC係以一規定方式(諸如兩次)在訊息之雜湊(經由SHA-256)周圍附加私密金鑰之一特定應用。為提供此功能性,可在訊息雜湊開始之前將一256位元金鑰程式化至電路組件中。鑑認完成之時序可改變且可比使用原生SHA-256延遲更長。再次,為方便或處理效率,可使雜湊資訊或私密金鑰成為處理器可用的,或可以增加安全性之某一方式使其呈現為私密的。
警告處置器204負責處理警告(包含自其他周邊器件250提供之警告)及對該等警告作出回應。警告可被視為安全敏感之中斷,其等待被及時處置以對一感知之安全威脅作出回應。不同於「標準」中斷,警告不僅由在處理器202上執行之軟體處置。警告可觸發待由軟體作為一「常規」中斷處置之一第一階段請求。然而,若軟體無法作出回應且適當地補救警告觸發之中斷,則警告處置器204觸發一第二階段回應。該第二階段回應可包含制定一安全對策,包含終止一程序,擦除或以其他方式刪除資料,自一電路部分撤出電力或重設一IC晶片或其之部分。此確保即使處理器202繁忙、被楔入或亦受到攻擊,仍解決潛在問題,即感知之安全威脅。
因此,(例如,圖1之)一警告112可被實施為警告處置器204自其他周邊器件接收且指示一潛在安全威脅之一提高之中斷類型信號或警告指示。在操作中,警告處置器204可收集來自安全電路系統106之其他電路組件108之警告並將其等轉換成處理器202可解決之中斷。然而,若處理器202未清除中斷,則警告處置器204提供硬體回應以解決潛在安全威脅。
對於一些器件間通信,警告處置器204接收來自周邊器件源之差分傳訊之同步或異步警告指示。周邊器件250可基於周邊器件250之功能、知識或經感測參數產生警告。對於其他器件間通信,警告處置器204執行警告源之ping測試作為一穩健的心跳(heartbeat)機制。警告處置器204之一ping監測器(未明確展示)請求來自各警告源之週期性警告回應以確保與警告源之通信頻道在運作。
警告處置器204亦可基於通信故障產生本端源起之硬體警告。若與一警告源或一升級處置器之差分傳訊或另一經規定通信協定失敗(例如,若一信號完整性檢查失敗),則產生一第一本端源起警告。若一警告源或一升級處置器未能對一ping請求作出回應,則警告處置器204產生一第二此警告。通常,警告處置器204可接收來自整個系統的傳入警告,對警告進行分類,基於經分類警告發出中斷,且若處理器202未清除一經發出中斷,則將中斷升級至基於硬體之回應。因此,若處理器無法或未處置一安全警告,則警告處置器204可充當(例如)安全回應之一替身(stand-in)。
在一些架構中,一安全警告旨在作為一罕見事件(至少相對於「標準」中斷)。因此,在一設計階段,就事件預期未頻繁發生而言且若事件具有潛在的安全後果,則可將一可能事件指定為一警告事件。此等事件之實例係同位錯誤(其等可指示一攻擊)、對密碼或安全相關組件之未經授權動作、來自實體感測器之指示環境修改(例如,電壓或溫度)之經感測值等。系統透過警告處置器204路由警告,該警告處置器204將警告轉換為中斷以供處理器202潛在地解決。對於一些實施方案,一潛在期望係一安全作業系統具有用於在軟體中處置歸因於一警告而出現之任何此中斷之一協定。若如此,則安全作業系統通常可解決中斷且接著用警告處置器204清除中斷。各周邊器件250可呈現表示待處置之各自潛在威脅之一個別警告清單。周邊器件可使用一特定編碼機制將一警告作為一警告指示傳輸至警告處置器204。
安全電路系統106亦可包含RNG 232。通常,隨機性可藉由提供可阻止攻擊者預測發動一攻擊之一好時機之執行變動來促成安全功能性。例如,一隨機數可提供用於身分及密碼目的之私密材料。可將RNG 232播種至演算法運算中以遮掩敏感資料值。通常,RNG 232在其數字產生愈發變得真正隨機時且就其亦可被強化以抵抗攻擊而言提供較佳效能。RNG 232可被實施為一「真正」RNG (TRNG),此可涉及具有一類比部分以利用非確定性之某一實體事件或程序的一設計。實例性TRNG設計依靠亞穩定性、電子雜訊、時序變動、熱雜訊、量子變動等。TRNG過濾(若干)所得變數且將其等發送至一熵集區中,器件可在一給定時間針對一當前隨機化函數對該熵集區進行取樣。在一些情況下,至熵集區之一介面可包含可用隨機位元之一讀取請求。TRNG介面指示多少個位元可用,且就位元可用而言,請求周邊器件或軟體可自此集區讀取。嘗試讀取不可用之熵位元可觸發一中斷或一警告。
兩個其他周邊器件250包含計時器234及快閃記憶體控制器216 (其等之後者係在以下段落中進行描述)。例如,計時器234可支援由處理器202進行之準確執行。計時器234係由多個位元(例如,64個位元)形成且作為具有在某一百分比內之一經保證頻率之一自由運行計時器操作。另一計時器(未明確展示)可充當一看門狗計時器以在處理器變得無回應之情況下擋止(backstop)處理器202。無回應性可歸因於被楔入之開發程式碼、一安全攻擊等。
快閃記憶體控制器216控制可用於程式碼及資料儲存之快閃記憶體210。此資料之主要讀取路徑可在標準記憶體位址空間中。然而,可忽略至該位址空間之寫入,此係因為未以一標準方式寫入至快閃記憶體。代替性地,為寫入至快閃記憶體210,軟體與快閃記憶體控制器216互動。快閃記憶體功能性可包含三個主要命令:讀取、擦除及程式化。讀取命令可經標準化且可使用晶片記憶體位址空間。擦除命令係在一頁面層級執行,其中頁面大小係可藉由快閃記憶體控制器216參數化。在接收到一擦除請求後,快閃記憶體控制器216抹除目標頁面之內容,此將資料呈現為一「1」狀態(例如,每字0xFFFFFFFF)。之後,軟體可將個別字程式化為任何值。在無另一擦除之情況下,一快閃記憶體位元未返回至一「1」狀態,因此未來內容係用當前內容及經寫入值之一AND來有效地改變。擦除及程式化命令係相對較慢的。一典型擦除時間係以毫秒為單位量測,且程式化時間係在微秒之範圍內。安全性亦係一顧慮,此係因為私密資料可儲存於快閃記憶體210中。因此,可由快閃記憶體控制器216提供一些記憶體保護。
安全電路系統106在圖2中被描繪為具有一特定組之電路組件。然而,一給定安全電路系統106可具有更多、更少或不同電路組件。電路組件亦可不同地互連或以除上文所描述之彼等實例性方式之外之方式來操作。此外,可省略一些電路組件,而在多個例項中實施其他電路組件。例如,警告處置器204可經複製或分佈,或多個AES加密引擎212可存在於某一安全電路系統106中。此外,可自IC晶片(其中安全電路系統106形成數十個核心當中之僅一個核心)之安全電路系統106之周邊器件250當中省略一GPIO介面220。 用於一安全加密協同處理周邊器件之一可兼容範式之實例性方案、技術及硬體
(例如,圖1及圖2之)安全電路系統106可包含可兼容電路組件(包含周邊器件250,諸如一加密協同處理器118)。此章節描述用以使周邊器件可兼容之實例性方法。各周邊器件250可遵守安全電路系統106之兼容性規範。藉由遵守定義至少一個介面方案或通信協定之一兼容性規範,一周邊器件250係用產生周邊器件250與其他周邊器件之間的一致及預期互動之至少一個介面實現。此產生增加之通信可預測性及確定性並減少設計及測試安全電路系統所涉及之時間。
圖3-1以300-1繪示包含用以支援與其他電路組件之兼容性之至少一個介面302之一實例性周邊器件250。更一般而言,圖3-1包含一互連件110、耦合至互連件110之一處理器202及耦合至互連件110之多個周邊器件。因此,多個周邊器件可至少經由互連件110耦合至處理器202。然而,各周邊器件250亦可直接地或以其他方式在不使用互連件110的情況下(諸如經由相當於一介面302之一機構、一暫存器介面310或至少一個器件間通信316,其等係在下文描述)耦合至處理器202。圖3-1明確描繪 P個周邊器件250-1、250-2、…、250-P,其中 P表示一正整數。
在實例性實施方案中,各周邊器件250包含使周邊器件250能夠遵守為互操作周邊器件提供確定性之一通信框架之至少一個介面302。例如,介面302或通信介面302可使周邊器件250能夠實施至少一個通信協定320。介面302包含至少一個互連介面304、至少一個器件間介面306及至少一個其他介面308。此等介面係在下文描述。如所展示,周邊器件250通常亦包含至少一個暫存器介面310及至少一個安全功能模組312。通常,介面302使周邊器件250能夠遵守用於與處理器202及與多個周邊器件250-1…250-P之其他周邊器件互動之一共同框架。
暫存器介面310包含一或多個暫存器或暫存器條目。例如,各暫存器條目可用於至或自周邊器件250之通信(例如,用於進或出周邊器件250之通信)。例如,處理器202或另一周邊器件可設定或清除一暫存器條目或可用一值載入一暫存器條目以與周邊器件250通信。相反地,周邊器件250可改變一暫存器條目之一值以與處理器202或另一周邊器件通信。為實現此通信,周邊器件250可將暫存器介面310之至少部分曝露給處理器202或另一周邊器件。例如,周邊器件250可提供處理器存取以清除一中斷狀態指示。
通常,暫存器區塊可用於與周邊邏輯之其餘部分通信以管理(例如)與軟體之組態及狀態通信。在一些情況下,暫存器介面310可使用控制及狀態暫存器(CSR)來實施。CSR提供一周邊器件250內之一暫存器集合,該暫存器集合之暫存器可至少由本端主機處理器202經由一電路範圍或晶片範圍位址映射來解決。CSR可經標準化以增強軟體統一性及促進電路重用及文檔一致性。暫存器介面310之實例性態樣係在下文參考圖3-3進行描述。
安全功能模組312實施周邊器件250之一安全相關功能。安全相關功能包含核心或主要安全功能及支援或次要安全功能。例如,核心安全功能可包含警告處置、加密操作(包含加密及解密)、隨機數產生、安全資料儲存(包含儲存及存取私密資料) (例如,金鑰管理)等。支援安全功能可包含實現或促進核心功能之執行之彼等安全功能。支援安全功能之實例包含記憶體儲存、記憶體控制、時序、電路及晶片I/O控制、環境感測器、匯流排託管等。
通常介面302,或特定實例性介面之任一者(例如,互連介面304、器件間介面306或另一介面308)可針對暫存器介面310建立至少一個暫存器以啟用一各自介面通信能力或特徵。關於互連介面304,互連介面304實施耦合至互連件110以實現(例如)周邊器件250與遵守一共同框架之處理器202之間的一連接的一通信介面。在周邊器件250及處理器202與同一共同框架兼容的情況下,在兩個方向上之器件-處理器通信可經標準化且可預測的。互連介面304可跨互連件110操作,可使用暫存器介面310之至少一個暫存器,可使用一分開的匯流排或獨立導線,其等之某一組合等。在操作中,周邊器件250可使用互連介面304來參與至少一個互連通信314。此外或替代性地,周邊器件250可使用互連介面304以經由互連件110與另一周邊器件通信。
器件間介面306實施周邊器件250與遵守一共同框架之一或多個其他周邊器件之間的一通信介面。在周邊器件250及各其他周邊器件與同一共同框架兼容的情況下,在兩個方向上之器件-器件通信可經標準化且可預測的。器件間介面306可使用暫存器介面310之至少一個暫存器,可使用專用於周邊器件之一匯流排,可使用在兩個周邊器件之間延伸之一或多條獨立導線,其等之某一組合等。
在操作中,周邊器件250可使用器件間介面306來參與至少一個器件間通信316。藉由繞過互連件110以與另一周邊器件通信,周邊器件250可在一些實施方案中與另一周邊器件「直接」通信。此外,藉由建立及遵守一器件間通信方案,促進兩個或更多個器件之間的通信之一致性及確定性。因此,設計者可專注於達成安全功能模組312之預期安全相關功能,而非花費時間及資源來追蹤及雙重核對眾多特定通信機制。
另一介面308實施周邊器件250與遵守一共同框架之另一電路組件之間的一通信介面。在周邊器件250與另一電路組件與同一共同框架兼容的情況下,在兩個方向上傳訊之周邊器件可經標準化且可預測的。另一介面308之一實例係用於在外部傳送資訊之一晶片I/O介面。另一介面308之另一實例係一中斷介面,條件是中斷未完全經由互連件110傳送。另一介面308之又另一實例係一時脈介面。在一些情況下,安全電路系統106 (未在圖3中分開地指示)包含一主要系統時脈及一或多個次要系統時脈。一時脈介面可利用該主要系統時脈及該等次要系統時脈之至少一選定部分以用於傳送時序及一般功能性。時脈介面可根據安全電路系統106之一時脈方案操作,且周邊器件250之設計程式碼可指定與周邊器件250相關之時脈。在操作中,周邊器件250可使用另一介面308來參與與另一電路組件(如I/O電路系統或一時脈樹)之至少一個其他通信318。
圖3-2繪示用以分析一周邊器件設計以確保滿足可兼容目標之一實例性方法300-2。在實例性實施方案中,方法300-2使用可包含一互連方案334、一器件間方案336或另一方案338 (包含該等方案之各者)之一介面規範332。介面規範332對應於(圖3-1之)介面302。互連方案304對應於互連介面304,器件間方案336對應於器件間介面306,且另一方案338對應於另一介面308。此外或替代性地,此等方案可包含一本端或晶片級I/O方案、一中斷方案、一時脈方案等。
因此,介面規範332可建立介面302之規則、協定、屬性、選項、能力等。類似地,互連方案334、器件間方案336及另一方案338之各者可分別建立互連介面304、器件間介面306及另一介面308之規則、協定、屬性、選項、能力等。在設計時間期間,設計者開發各周邊器件250以遵守介面規範332之各相關方案。例如,器件間方案336可建立用於定義繞過安全電路系統106之互連件110之器件間傳訊之一格式。藉由如此做,可產生增強互操作性且減少設計及開發時間以及測試及除錯工作量之一可兼容周邊器件250。例如,一周邊器件250可使用自由周邊器件之設計程式碼指定之一屬性導出之電路系統將一信號(例如,一器件間信號)傳送至另一周邊器件。
在實例性方法中,一兼容性分析模組340可執行設計程式碼之一分析344以檢查兼容性。一設計者參考介面規範332產生一周邊器件設計程式碼342。因此,周邊器件設計程式碼342藉由遵守介面規範332來滿足兼容性目標。周邊器件設計程式碼342可至少部分使用(例如)一組態檔案來實現。周邊器件設計程式碼342可包含處理器-器件傳訊348之一或多個指示(例如,定義一周邊器件250與一處理器202之間的一互連通信314之態樣)、器件間傳訊350之一或多個指示(例如,定義一周邊器件250與另一周邊器件之間的一器件間通信316之態樣)等。例如,器件間傳訊350之一或多個指示可係關於在兩個或更多個周邊器件之間交換之信號,包含無需使用安全電路系統106之互連件110。此等指示可遵循暫存器之規則及指引、此等信號之信號命名、資料類型、時序等。
周邊器件設計程式碼342中之描述產生安全電路系統106中之電路組件。例如,關於(例如,圖3-1之)一各自周邊器件250之一器件間介面306,基於其之設計程式碼342中所包含之一屬性,器件間介面306可耦合至延伸至另一周邊器件以實現器件間傳訊之至少一條導線。藉由指定設計程式碼342中之器件間傳訊350,增加互操作性及通信確定性。設計程式碼342之介面規範332或組態檔案可指示強制性之周邊特徵(針對在本發明之此實例性例項中之一給定規範或設計)及在一給定兼容性框架中選用之周邊特徵。因此,在一些情形中,合規設計程式碼可包含一強制性部分及一選用部分。通常,設計程式碼342可根據任何IC設計或組態平台來格式化。實例包含Verilog、Python、Hjson等。
在操作中,兼容性分析模組340接受周邊器件設計程式碼342。參考介面規範332,兼容性分析模組340執行一分析344以檢查周邊器件設計程式碼342是否符合經指定共同框架。兼容性分析模組340可比較周邊器件設計程式碼342與互連方案334、器件間方案336或另一方案338之一或多者以檢查程式碼是否滿足各方案之規範。此等方案之任一者可包含與中斷、暫存器使用等有關之規範。基於分析344,兼容性分析模組340產生一兼容性報告346。
兼容性報告346指示周邊器件設計程式碼342是否藉由滿足介面規範332之準則來通過分析344。若否,則兼容性分析模組340可在兼容性報告346中包含一「違規」清單。各違規可包含對引起一故障指示之程式碼部分之一引用或對正被違反之介面規範332之部分之一引用。儘管介面規範332、兼容性分析模組340及周邊器件設計程式碼342可關於一實例性安全電路系統環境來描述,但介面規範332、兼容性分析模組340或周邊器件設計程式碼342可在其他環境中實施。因此,一兼容性報告346可涵蓋一般電路設計之一分析。
圖3-3以300-3繪示包含一暫存器介面310之一實例性周邊器件250及實例性通信信號。在圖3-3中,通常但僅藉由實例,強制性之通信頻道或信號(在本發明之此實例性例項中)係用實線描繪,且選用之通信頻道或信號係用虛線描繪。然而,在其他例項中,不同頻道或信號可為強制性或選用的。此外,在一給定介面規範下,其他圖中之實或虛之線不一定分別指示一要求或缺乏一要求。
在實例性實施方案中,可將各種信號指定為周邊器件250待遵守之兼容性之一框架之部分。從左上角開始,用相對於互連件110用作一器件(例如,用作一跟隨器)之周邊器件250來描繪使用互連件110之一雙向傳訊362-1。在其下方,周邊器件250經展示為接收至少一個時脈信號364及至少一個開發模式信號365。開發模式信號365向周邊器件250表示安全電路系統106或一整個SOC當前在什麼模式中操作的一指示。換言之,可存在多種操作模式。對於兩個實例性模式,多個模式可包含一開發模式及一生產模式。例如,模式指示可判定如何處置軟體錯誤。其他模式可啟用將完整生命週期狀態傳達至周邊器件之一安全特徵。
周邊器件250亦可產生或輸出至少一個中斷信號366或至少一個警告信號368。此外,用相對於互連件110用作一主機(例如,用作一領導者(leader))之周邊器件250來描繪使用互連件110之一雙向傳訊362-2。周邊器件250可進一步參與使用GPIO介面220或其他晶片I/O電路系統之雙向傳訊367。關於暫存器介面310,至少一個傳出信號369-1被標記為一暫存器至硬體(Reg2Hw)信號。另一方面,至少一個傳入信號369-2被標記為一硬體至暫存器(Hw2Reg)信號。通常,在一些實施方案中,特定特徵被視為強制性的,而其他特徵被視為選用的。然而,此等強制性及選用類別可在不同實施方案之間改變。憑藉一可兼容設計,此兩個類別可經每特徵指派,使得各周邊器件250與其他周邊器件適當地互操作。
已大體上描述用於一可兼容範式中之周邊器件(包含用於具有一安全加密協同處理器之一實例性加密協同處理周邊器件)之方案、技術及硬體,此論述現轉向用於安全加密協同處理器之方案、技術及硬體。 用於一安全加密協同處理器之實例性方案、技術及硬體
此章節描述可包含於(例如,圖1及圖2之)安全電路系統106中之加密協同處理器之實例。密碼協同處理區塊或模組可諸如根據上文所描述之兼容性原理附接至互連件110 (例如,一系統匯流排)作為一周邊器件。此外或替代性地,加密協同處理器118可具有對或與一或多個其他組件(諸如(例如,圖2之)一周邊器件250或一處理器202)之「直接」或排他性匯流排存取。
圖4繪示根據特定加密協同處理器實施方案之一實例性示意圖400。如示意圖400中所展示,一實例性加密協同處理器118可包含一指令記憶體402、一資料記憶體404、一控制器406、儲存隨機位元之多個暫存器408及一解碼器410。指令記憶體402可儲存指令碼412,且資料記憶體404可儲存資料414。在實例性暫存器儲存方面,加密協同處理器118可包含一或多組暫存器,諸如通用暫存器(GPR) 416及/或寬資料暫存器(WDR) 418。
關於實例性運算單元,加密協同處理器118可包含一增量器420、一基本ALU 422、一大數(「bignum」) ALU 424及一乘法累加(MAC)單元426。儘管僅特定組件在圖4中被描繪且在本文中被描述為加密協同處理器118之部分,但此僅供例示。可包含更多、更少組件、組件之經複製組件及/或不同組件。例如,加密協同處理器118亦可包含將資料記憶體404耦合至其他組件之一載入及儲存單元(LSU) (或載入-儲存單元)。該LSU可充當用於資料存取(諸如讀取及寫入)之一雙向介面。此外,加密協同處理器118可包含如本文中所描述之一或多個其他暫存器,諸如(圖3-3之)一暫存器介面310之CSR。
在實例性實施方案中,各種所描繪組件可如圖4中所繪示耦合在一起。例如,多個隨機位元暫存器408可耦合至兩組暫存器:GPR 416及WDR 418。控制器406及解碼器410可耦合至指令記憶體402。兩組暫存器可(例如,雙向地)耦合至運算單元。此外,資料記憶體404可諸如經由一LSU (未展示)耦合至暫存器及/或運算單元。在圖4中僅藉由實例描繪組件之間的所繪示連接。可存在更多、更少連接、連接之複製連接及/或不同連接。例如,控制器406可耦合至運算單元及/或隨機位元暫存器408之任一者。
在實例性操作案例中,解碼器410可獲得來自指令記憶體402之指令碼412之一或多個指令。在藉由解碼器410解碼之後,控制器406可基於一當前程式計數器(PC) (未展示)執行指令。解碼器410及控制器406可憑藉條件分支及無條件跳躍指令、硬體迴路及硬體管理之呼叫/返回堆疊來提供控制流支援。控制器406可基於使用一或多個運算單元(諸如基本ALU 422或大數ALU 424)解碼來執行一指令。作為指令碼412之執行之部分,控制器406可將「工作資料」及其他狀態儲存於暫存器中。
暫存器可具有不同寬度。例如,GPR 416之庫可為32位元寬以每暫存器或暫存器條目儲存一32位元字。GPR 416可饋送及/或接收來自增量器420及基本ALU 422之結果。相比而言,大數ALU 424可對較大段的資料(諸如128、256或512位元)進行操作。對較寬資料進行操作以執行寬整數算術可促進執行許多加密操作。WDR 418之暫存器庫可儲存此較寬資料(諸如一256位元資料項)。MAC 426亦可對較寬256位元資料進行操作且將資訊儲存於一累加器(ACC)暫存器(未展示)中。如圖4中所描繪,較寬運算單元(諸如大數ALU 424)亦可接收較窄資料(諸如來自GPR 416或增量器420之32位元資料值的八次出現以獲得一256位元資料項)。又,儘管本文中描述用於暫存器、字、資料路徑、運算單元及類似者之特定位元寬度(例如,32、64、128、256及512),但此等僅藉由實例提供。代替性地,可實施較窄或較寬位元寬度、位元寬度之不同組合等。
在一些實施方案中,加密協同處理器118可藉由有效地及/或快速地執行加密操作來支援一處理器(諸如(圖2之)處理器202)。處理器202最初判定待執行之一加密操作430。加密操作430之實例包含非對稱加密操作(如用於安全敏感之公開金鑰方案之RSA及橢圓曲線密碼)及可係關於較不敏感加密操作之對稱加密操作(例如,對於SHA2-512、HMAC-SHA-512及AES-256)。處理器202傳輸用以執行加密操作430之一請求。該請求可(例如)經由一互連件(例如,圖1及圖2之互連件110)或經由處理器202與加密協同處理器118之間的一專用路徑傳輸。在一些情況下,傳輸可包含將一操作碼及/或資料載入至加密協同處理器118之一或多個暫存器中。
因此,加密協同處理器118自處理器202接收用以執行加密操作430之請求。加密協同處理器118使用指令碼412及一中間值428對資料414執行加密操作430以獲得一結果432。中間值428係由加密協同處理器118 (包含在執行一加密操作430時)保持之狀態之一實例(在本文亦被稱為「狀態資訊」;其係指存在於加密協同處理器中之任何資料,諸如變數資料)。中間值之實例可包含已被複製或移動至一暫存器中之資料414之例項、在執行一加密操作時產生之不表示一最終結果之值、運算單元之輸出、一運算單元「內」之暫存器之內容等。
各中間值428可儲存於(例如)至少一個暫存器中。此等暫存器可包含GPR 416、WDR 418、MAC 426之ACC等。因此,儘管一中間值428係相對於一WDR 418展示,但狀態資訊(包含至少一個中間值428)可儲存於加密協同處理器118之其他位置中。除其他暫存器之外,態資訊之此等其他位置可包含解碼器410、基本ALU 422及類似者。加密協同處理器118保護資料414、中間值428或指令碼412之至少一者免受未經授權存取。
因此,由加密協同處理器118使用本文中所描述之技術之一或多者來保護資訊(例如,資料424、指令碼412或如一中間值428之處理器狀態)。保護可在執行加密操作430之時間期間存在及/或可在該時間段之前或之後發生。保護可至少跨加密協同處理器118之組件(包含加密協同處理器118之任何介面或通信相關暫存器)擴展。在判定加密操作430之結果432之後,加密協同處理器118將結果432提供至處理器202。加密協同處理器118可(例如)使用加密協同處理器118之一暫存器將結果432曝露給處理器202,在互連件110或一私密/專用匯流排上驅動結果432等。
圖5繪示用於在一加密協同處理器中安全地抹除資訊之實例性方案500。如所展示,除了指令記憶體402及資料記憶體404之外,加密協同處理器亦包含至少一個暫存器506。暫存器506儲存狀態508 (諸如至少一個中間值428)。例如,暫存器506可定位於圖4中所描繪之組件之任一者處或作為圖4中所描繪之組件之任一者之一部分。加密協同處理器118亦包含一或多個加擾金鑰,諸如一程式碼加擾金鑰502及一資料加擾金鑰504。加擾金鑰可分開地或一起儲存,諸如儲存於耦合至控制器406或可將加擾金鑰應用於資訊及/或安全地抹除加擾金鑰之其他邏輯或以其他方式由該控制器406或該其他邏輯存取的一或多個暫存器中。
在實例性實施方案中,控制器406使用程式碼加擾金鑰502來對指令碼412加擾或加密。控制器406使用資料加擾金鑰504來對資料414加擾或加密。為保護儲存於至少一個記憶體中之資訊,加密協同處理器改變用於對該資訊加擾之至少一個加擾金鑰。此處,記憶體可包含暫存器506以及指令記憶體402及資料記憶體404。若偵測到可疑活動或若待在於處理器202上執行之兩個互不信任的應用程式之間轉移對加密協同處理器118之存取,則改變對應加擾金鑰係保全一記憶體之經加擾內容之一快速且有效的方法。
關於資料記憶體404,加密協同處理器(例如,控制器406或其他邏輯)可改變(例如,變更或更換)資料加擾金鑰504以使資料414無意義。關於指令記憶體402,加密協同處理器可改變程式碼加擾金鑰502以使指令碼412無意義。此改變可在小至一單個週期內完成。在一些情況下,對一加擾金鑰之改變可需要用隨機位元覆寫儲存加擾金鑰之至少一個暫存器。邏輯可進一步用零或任何其他常數值(諸如一編譯時隨機網路連線表常數)覆寫至少一個暫存器中之隨機位元。
加密協同處理器亦可藉由用隨機性(諸如一或多個隨機位元)覆寫至少一個暫存器506來保護狀態508 (包含一中間值428)。在一些情況下,狀態508之保護可需要用隨機位元覆寫儲存中間值428之至少一個暫存器506。邏輯可進一步用零覆寫至少一個暫存器506中之隨機位元。此兩步驟程序可阻撓基於觀察電力特徵(power signature)之一些攻擊。
可以諸多方式觸發安全抹除。首先,在處理器202上運行之軟體可「手動地」觸發一安全抹除。其次,可回應於可在加密協同處理器118內部或來自一外部組件之一警告而觸發一安全抹除。第三,加密協同處理器118可自動地觸發用於一內部清理操作之一安全抹除。本文中描述用於保護資訊(包含指令碼、資料及狀態資訊)之額外及替代實例性實施方案。
圖6繪示用於有效地提供隨機化之位元以支援一加密協同處理器之安全操作之實例性方案600。如所展示,具有隨機化之位元之多個暫存器408可至少包含一第一暫存器408-1及一第二暫存器408-2。第一暫存器408-1可儲存根據一第一隨機性品質604-1隨機化之多個第一位元602-1,且第二暫存器408-2可儲存根據不同於第一隨機性品質604-1之一第二隨機性品質604-2隨機化之多個第二位元602-2。因此,加密協同處理器118可具有對具有變化或不同的隨機性品質位準之至少兩個暫存器中之隨機化之位元的存取。
通常在實例性實施方案中,隨機位元暫存器408可包含兩個或更多個暫存器。每一各自暫存器408-X可儲存與隨機性604-X之一各自品質相關聯之一各自組之多個位元602-X,其中「X」表示大於1之一正整數。多個暫存器408-1及408-2實現分別以多個位準之隨機性品質604-1及604-2快速存取多個隨機位元602-1及602-2。具有擁有不同隨機性品質位準之隨機位元可有效地平衡「成本」與品質,如接下來闡釋。
一些加密操作及/或標準涉及或規定隨機化之位元之一特定品質位準。然而,在某些情形下,隨機化之位元之品質愈高,獲得隨機化之位元之成本愈大。成本可與電力或時間有關。換言之,一較高隨機化品質可需要一更大電力開支及/或可消耗一更長時間來產生隨機化之位元。採用多個暫存器408使加密協同處理器能夠具有對多個隨機性品質的快速存取,同時平衡各隨機性品質之相對成本。換言之,若一加密操作或支援加密協同處理器118之功能性之另一操作可使用與一較低成本相關聯之一較低隨機性品質,則控制器406可選擇與該較低隨機性品質相關聯之位元。
在一些實施方案中,第一暫存器408-1儲存對應於一第一隨機性品質604-1之多個第一位元602-1。第二暫存器408-2儲存對應於一第二隨機性品質604-2之多個第二位元602-2。在實例性操作中,控制器406可基於與(例如,圖4之)加密操作430 (包含其之一「子操作」)相關聯之一隨機性品質604選擇性地自第一暫存器408-1擷取多個第一位元602-1或自第二暫存器408-2擷取多個第二位元602-2。
對於相對隨機性品質,第一隨機性品質604-1可(例如)高於第二隨機性品質604-2。在此等情況下,多個第一位元602-1可對應於隨機數之一非確定性源(例如,一不可預測位元源,諸如隨機數之一基於類比之熵源)。多個第二位元602-2可對應於隨機數之一確定性源(例如,可能需要基於隨機數之過去值之未來值之一定程度的可預測性之一基於數位之源)。為確保加密協同處理器118在等待(例如)更高品質隨機化之位元時無需暫停,控制器406可在待使用多個第一位元602-1之前將多個第一位元602-1預取至第一暫存器408-1中。
第一(相對較高)隨機性品質604-1可(例如)符合一或多個隨機數產生及/或密碼相關標準(例如,一PTG.2類規範或一符合AIS31之PTG.3類規範)。多個第一位元602-1可具有擁有前向及後向保密之一經保證熵。例如,此品質之隨機化之位元可用於金鑰產生。此等隨機化之位元可經由一單條目快取區(其可實現為至少一個暫存器且可受完整性保護)源起自一熵分佈網路(EDN)。無關於條目之數目,快取區可能夠保存比控制器406在任一時間提取更多之位元。在快取區係空的時之讀取可引起加密協同處理器暫停,直至自EDN提取一新的隨機數,但可藉由在讀取之前將位元適當地預取至快取區中來避免此一暫停。此第一、較高隨機性品質604-1可對應於下文之RND描述。
第二(相對較低)隨機性品質604-2可更快地產生及/或用一更低電力量產生。多個第二位元602-2可對應於不具有經保證保密性質或特定統計性質之一隨機數。例如,此等位元可用於遮蔽及盲蔽方案或隨機化一應用程式之控制流。隨機化之位元可源起自一本端偽隨機數產生器(PRNG)。PRNG實例包含一xoshiro PRNG或使用一或多個線性回饋移位暫存器(LFSR)來數位地產生額外隨機化之位元之一PRNG。LFSR可用具有由一SBOX重排之一輸出之一Galois型LFSR來實施。產生可足夠快,使得加密協同處理器永遠不需要暫停,即使無預取。此第二、較低隨機性品質604-2可對應於下文之URND描述。本文中描述用於產生、儲存或存取具有不同隨機性品質之隨機化之位元之額外及替代實例性實施方案。
圖7繪示用於確認由一加密協同處理器對指令碼之安全執行之實例性方案700。如所繪示,加密協同處理器118可包含用於保全指令碼412之執行之多個暫存器。對於所描述之實施方案,展示兩個暫存器,但可替代性地使用一個或多於兩個。一個暫存器702可儲存一指令計數706。另一暫存器704可儲存一檢查總和708。
在一些實施方案中,控制器406可追蹤指令碼412之多少個指令已被執行為暫存器702中之指令計數706。暫存器702可實現為或可用作一指令計數器。因此,指令計數706之值可表示用於執行一操作(諸如(例如,圖4之)一加密操作430)之經執行指令之一數量。加密協同處理器118可將經執行指令之該數量作為指令計數706提供至處理器202。
可藉由將暫存器702或另一暫存器(例如,如上文參考圖3-1至圖3-3所描述)中之值曝露給處理器202來提供指令計數706。此外或替代性地,加密協同處理器118可經由互連件110或一專用通信路徑將指令計數706之值傳輸至處理器202。處理器202可確認指令計數706匹配用於一給定操作之經執行指令之一預期數目。若否,則處理器202可產生一警告。
在其他實施方案中,控制器406可對指令碼412運行一檢查以產生一檢查總和708。可使用(例如)一雜湊操作來執行檢查以產生檢查總和708。若指令碼412已被修改,則檢查總和708將無法匹配處理器202已知之檢查總和。檢查總和708可自當前儲存於指令記憶體402中或正被載入至指令記憶體402中之指令碼412之全部或部分導出。檢查總和708可使用(例如)在每次寫入至指令記憶體402時更新之一累積CRC檢查總和(例如,一32位元CRC-32-IEEE檢查總和)來產生。加密協同處理器118可將檢查總和708提供至處理器202。
可藉由將暫存器704或另一暫存器(例如,如上文參考圖3-1至圖3-3所描述)中之值曝露給處理器202來提供檢查總和708。此外或替代性地,加密協同處理器118可經由互連件110或一專用通信路徑將檢查總和708之值傳輸至處理器202。處理器202可確認檢查總和708匹配一段給定指令碼412之一預期檢查總和值。若否,則處理器202可產生一警告。指令計數及檢查總和安全方案可分開地或一起使用。本文中描述用於指令計數及檢查總和安全方案之額外及替代實例性實施方案。
接下來描述一乘法累加(MAC)組件,且此後描述多個安全相關特徵。該多個安全相關特徵包含詳述及/或進一步描述上文關於圖4至圖7所描述之彼等之一些特徵。對於一實例性乘法累加(MAC)單元(例如,圖4之MAC單元426),使用一寬整數乘法器來滿足效能目標。然而,寬乘法單元可消耗大量矽面積且可影響操作頻率(例如,當針對一給定設計採用相對較低管線化來減小設計複雜性及/或攻擊表面時)。
一加密協同處理器118可包含(例如)一64位元寬乘法電路作為減少週期計數與滿足頻率目標之間的一平衡。(對於一些使用案例,例如,一128位元寬乘法單元可能太慢或在面積方面太昂貴)。加密協同處理器118可補充有一256位元累加器以減少執行較寬乘法所涉及之操作。一乘法累加操作可在一單個週期內執行。當使用長乘法時,此意謂MAC單元可在每個週期產生及累加一個中間乘積,而無需分開的加法指令。例如,一128位元乘法可在4個週期內完成,且一256位元乘法可在16個週期內完成。
下文描述各種實例性安全相關特徵。各所描述特徵可包含僅藉由實例且非限制地枚舉之特定實施方案。一些所描述安全特徵經設計以對抗特定威脅或攻擊途徑。因此,各安全特徵可包含對適當對應對策之解釋。一加密協同處理器118之十九(19)個安全相關特徵係如下所闡述。
首先,可實施一完整性保護碼。為在無需定期重新編碼資訊(此可為一潛在故障注入點)的情況下為資訊(例如,資料或指令)提供總體完整性保護,可在協同處理器之各個部分(包含多達協同處理器之所有部分)中使用同一完整性保護碼。保護可應用於(例如) 32位元資料字且可產生包含七個錯誤校正碼(ECC)位元之39位元之經編碼資料。在一些情況下,保護碼可為一經反轉(39,32) Hsiao SEC-DED ECC。此具有4之一最小漢明(Hamming)距離,從而產生偵測經編碼之39位元字中之多達三個錯誤的能力。此實例性保護碼可用於多達三個翻轉位元之錯誤偵測;若是,則不執行錯誤校正。與原始Hsiao程式碼相比,此版本中之輸出(或其位元之至少一部分)可被反轉以產生一程式碼,其中全0字(32’h0)及全1字(32’h1)並非一有效碼字。此使能夠偵測將所有位元設定為0或將所有位元設定為0之攻擊。
第二,可實施一資訊加擾機制。為提供資訊保護,可使用許多不同加擾演算法之任一者來執行加擾。例如,可採用一縮減回合之PRINCE密碼來對定位於加密協同處理器以及安全電路系統之其他組件處之資訊加密。例如,一架構可在CTR模式中使用一縮減回合之PRINCE密碼基元以便(例如,相對較弱地)對寫入至記憶體巨集之資料加密。普通CTR模式可能不擴散資料,此係因為金鑰流可「僅」XOR至其上。因此,可使用一或多個(例如,相對較淺)替換/置換網路(S&P網路)層來執行逐位元組擴散以在一位元組內提供一雪崩效應。此外,為打破線性定址空間,可透過使用一(例如,相對較淺)替換/置換網路及一隨機數(nonce)構成之一雙射加擾功能來傳遞位址。歸因於該隨機數,位址映射可能並非由暫存器轉移層級(RTL)編碼來靜態指定,且因此亦可在運行時間改變位址重映射。
第三,可將完整性保護應用於暫存器檔案之一或多者。例如,32位元GPR及256位元WDR可儲存除了資料以外之一ECC以偵測經儲存資料之短時脈衝波干擾(glitch)。經偵測錯誤(例如,任何經偵測錯誤)可導致一致命警告。各32位元資料字可用一各自完整性保護碼來保護。因此,在256位元WDR中,可將各自ECC個別地應用於各32位元字。在一些情況下,資料及對應完整性位元可由暫存器檔案消耗及自暫存器檔案發出。若傳入資料未附加有ECC,則在將資料寫入至暫存器檔案之前在以其他方式驗證傳入資料之完整性之後計算ECC。
關於一暫存器檔案,可用自暫存器檔案讀取之資料及/或針對寫入至暫存器檔案之資料來傳遞對應ECC位元。替代性地,ECC位元可在自暫存器檔案讀取時被移除及/或自至一給定內部單元(諸如ALU)之一資料傳輸省略。對於由ALU產生之資料,可針對所產生之資料來計算ECC位元用於結合所產生之資料一起儲存於(或傳輸至)暫存器檔案中。
第四,可將完整性保護應用於資料記憶體。加密處理器之資料記憶體可為256位元寬,但資料記憶體仍可容許32位元對準之32位元字存取。資料記憶體之完整性可用一錯誤偵測碼來保護。各(32位元對準之) 32位元資料字可用一各自完整性保護碼來保護。經偵測錯誤(例如,任何經偵測錯誤)可導致一致命警告。在一些情況下,可藉由(例如)在協同處理器之各種單元、組件及其他電路系統周圍傳播ECC位元與對應資料來避免資料之重新編碼。
關於資料記憶體,無需重新編碼在協同處理器內消耗之資料。然而,可由協同處理器使用(例如)與資料記憶體介接之一載入儲存單元(LSU)來保存完整性位元。若系統匯流排傳播或提供相同類型之ECC資料,則無需重新編碼透過系統匯流排存取以供讀取或寫入之資料。此處,系統匯流排可實現至或自其他周邊器件或主處理器之資料傳送作為互連之部分。
第五,可(例如)使用一加擾金鑰對資料記憶體加擾。可對加密協同處理器之資料記憶體加擾以使其更防篡改。資料加擾亦可使短時脈衝波干擾攻擊之偵測更容易,此係因為歸因於加擾,單位元短時脈衝波干擾可在輸出上產生一不可預測的結果。可定期地,諸如至少每當起始一安全清除操作時,改變(例如,旋轉、更換或修改)加擾金鑰。視需要,加密協同處理器可操作以反轉加擾操作,例如,在接收到針對(未經加擾)資料之一請求後,或在被命令對(未經加擾)資料執行一操作後。
第六,可將完整性保護應用於指令記憶體。指令記憶體之完整性可用一錯誤偵測碼來保護。例如,各(32位元對準之) 32位元「資料」字可用一完整性保護碼來保護。儲存於指令記憶體中之指令碼中之經偵測錯誤(例如,任何經偵測錯誤)可導致一致命警告。如上文關於儲存於資料記憶體中之資料所描述,在許多情形下可藉由傳播及/或恢復ECC位元來避免重新編碼指令以重現完整性程式碼。
關於指令記憶體,若系統匯流排未利用相同類型之ECC資料,則可重新編碼透過系統匯流排用一讀取或一寫入操作存取之指令碼。否則,現有ECC資料可分別進一步傳播至系統匯流排或自系統匯流排傳播。通常,由解碼器讀取之指令可在使用之前進行完整性檢查,但接著可摒棄完整性資料。
第七,可(例如)使用一加擾金鑰對指令記憶體加擾以對儲存於指令記憶體中之指令碼加擾。可對加密協同處理器之指令記憶體加擾以使其更防篡改。加擾亦可使短時脈衝波干擾攻擊更容易被偵測,此係因為單位元短時脈衝波干擾可在輸出上具有一不可預測的結果。可定期地,諸如至少每當起始一安全清除操作時,改變(例如,旋轉、更換或修改)加擾金鑰。視需要,加密協同處理器可操作以反轉加擾操作,例如,在接收到用以執行由指令碼指定之一操作之一指令或命令後。
第八,可實施不同位準或品質之隨機數產生(RNG)。一加密協同處理器可將一隨機數源用於各種目的。RNG可至少用作軟體強化方案之部分,因此一可靠且及時的隨機位元源可促成一安全處理環境。例如,可經由至少一個暫存器(諸如控制及狀態暫存器(CSR)及/或一寬專用暫存器(WSR))之讀取來獲得隨機位元。
在一些情況下,兩個隨機位元源可具備兩個不同隨機性品質。例如,對於隨機位元,一第一品質可被表示為「RND」。此RND表示可滿足根據一或多個標準之密碼強度隨機性之認證「要求」之相對較高品質位元。此等RND位元可用於(例如)金鑰產生,且其等可「直接」源起自EDN請求。對於「無限制」隨機位元,一第二品質可被表示為「URND」。(儘管此等位元可能並非真正無限制,但其等可如此快地產生以便自協同處理器之角度來看,實際上看似為一無限制隨機位元源。)此URND表示相對較低品質位元。此等較低品質位元可源起自(例如)一本端偽隨機數產生器(PRNG)。在一些情況下,PRNG可包含週期性地自EDN請求再播種之至少一個線性回饋移位暫存器(LFSR)。
在實例性實施方案中,RND位元可經由一256位元快取區提供。若當此快取區係空時發生對RND之讀取,則可快速起始填充該快取區之一EDN請求,但加密協同處理器仍可暫停,直至RND位元可用。自RND讀取可清空快取區。然而,可藉由自開始用以填充RND快取區之一EDN請求之一特殊CSR讀取來執行一預取。若在預取請求之後的一合適時間發生對RND之讀取,則加密協同處理器無需暫停。通常,歸因於可重新填充隨機化之位元之速率,自URND之讀取不阻擋加密協同處理器。
通常,一RNG方案可包含若干不同態樣之一或多者。例如,可針對基本ISA提供一分開的32位元隨機數源,或可使用一256位元隨機數源並丟棄多餘位元。可在主處理器或加密協同處理器的控制下或藉由在其等上執行之軟體來再播種LFSR。例如,再播種可依一循環時間間隔或依一URND存取時間間隔。在一些情況下,軟體可控制RND快取區之重新填充及/或刷新。替代性地或此外,可回應於加密協同處理器啟動或被重設而刷新及/或重新填充RND快取區。
第九,可強化加密協同處理器之狀態(例如,經儲存之「工作」資訊)來抵抗攻擊。在暫存器中保存確實或可能影響加密協同處理器之執行之狀態機或其他狀態值的情況下,可強化此等位置防止短時脈衝波干擾。下表(表1)識別可在各項實施方案中應用以保護對應狀態資訊之一加密協同處理器之實例性狀態及對應實例性強化策略。
一加密協同處理器之實例性狀態 ( 若干 ) 實例性對應強化技術
加密協同處理器控制器狀態 稀疏狀態編碼
迴路堆疊,各條目可含有: ●   迴路啟動程式計數器(PC) ●   迴路結束PC ●   剩餘迴路反覆 迴路堆疊及/或其之迴路堆疊電路系統中之值之ECC或陰影反轉複本
硬體呼叫堆疊 ●   含有在函數返回時將跳躍至之PC PC及/或其之一暫存器之ECC或陰影反轉複本
當前PC PC之ECC或陰影反轉複本 (控制流完整性(CFI)亦可或代替性地解決當前PC之保護。)
內部專用暫存器(ISPR) ●   ACC – MAC累加器 ●   MOD –用於偽模數指令之模數 ●   FLAGS -用於條件選擇指令之旗標群組0及1 運算單元及/或旗標記憶體位置之ECC或陰影反轉複本
表1.一加密協同處理器之狀態資訊對實例性強化技術之實例
第十,加密協同處理器可使其資訊(例如,狀態)能夠被清除。相關聯於狀態強化或作為狀態強化之部分,加密協同處理器可提供用以安全地清除其儲存之資訊(例如,其儲存之狀態) (包含指令記憶體及資料記憶體)之一機制。此機制可被實施為其他「安全清除」機制之一超集,該超集可包含以下:清除資料記憶體、清除指令記憶體、清除內部記憶體,其等之組合等。
可由(例如)主機軟體透過一匯流排介面來觸發一安全清除機制。可在其中加密協同處理器判定其儲存之資訊可能或可能已被洩露之特定情形下自動起始此機制。例如,在以下情形下,加密協同處理器可起始一安全清除(諸如一完全安全清除)。一,一生命週期控制器可透過一升級信號來請求一安全清除。二,可發出一致命警告。在此後者情況下,可執行一安全清除作為一本端補救行動。在其他情形下,軟體可藉由寫入至一暫存器(諸如藉由將「3’b111」寫入至一相關聯暫存器以設定如下文所描述之個別資訊清除位元之各者)來觸發一資訊清除。
第十一,加密協同處理器可使一資料記憶體能夠被安全地清除。加密協同處理器中之資料記憶體可用於在操作期間儲存敏感資料且與主機處理器交換此資料。如本文中所描述,可提供一機制來根據請求安全地清除資料記憶體。可藉由安全地更換一資料記憶體加擾金鑰來執行資料記憶體清除,此使儲存於資料記憶體中之經加擾資料不可用。
僅藉由實例,可將金鑰更換實施為一兩部分程序。在一第一部分,加密協同處理器用隨機性(諸如來自一本端LFSR之位元)覆寫資料記憶體加擾基元之加擾金鑰(例如,128位元)。此動作在時間上係確定性的且可在小至一單個週期內完成。在一第二部分,加密協同處理器請求來自提供一加擾變數或金鑰之一模組之一或多個新的加擾參數。此請求可花費多個週期來完成。在一些情況下,軟體可藉由寫入至一暫存器(諸如藉由將一「1」寫入至一清除資料記憶體暫存器欄位)來起始一安全資料清除操作。
第十二,加密協同處理器可使一指令記憶體能夠被安全地清除。加密協同處理器中之指令記憶體可含有應用程式或指令碼,該應用程式或指令碼由於程式碼可含有秘密而可被視為一可保護資產。因此,可提供一機制來根據請求安全地清除指令記憶體。可藉由安全地更換一指令記憶體加擾金鑰或程式碼加擾金鑰來執行指令記憶體清除,此使儲存於指令記憶體中之經加擾指令碼不可用。
僅藉由實例,可將金鑰更換實施為一兩部分程序。在一第一部分,加密協同處理器用隨機性(諸如來自一本端LFSR之位元)覆寫指令記憶體加擾基元之加擾金鑰(例如,128個位元)。此動作在時間上係確定性的且可在小至一單個週期內完成。在一第二部分,加密協同處理器請求來自提供一加擾變數或金鑰之一模組之一或多個新的加擾參數。此請求可花費多個週期來完成。在一些情況下,軟體可藉由寫入至一暫存器(諸如藉由將一「1」寫入至一清除指令記憶體暫存器欄位)來起始一安全指令碼清除操作。
第十三,加密協同處理器可使狀態能夠被安全地清除。加密協同處理器可提供用以安全地抹除一般內部狀態之一機制,該機制可排除用於目標狀態抹除之指令及資料記憶體。抹除可以狀態之一部分或內部狀態之「全部」為目標。可用隨機資料(諸如來自一本端LFSR之隨機資料)來抹除以下狀態。狀態可包含暫存器檔案,諸如GPR及WDR (例如,一通用暫存器或一寬資料暫存器)。狀態亦可包含可以其他方式透過ACC WSR存取之一累加器暫存器。狀態可進一步包含軟體可寫專用暫存器,諸如旗標及模式暫存器。
此外,作為內部狀態清除之部分,可重設迴路及/或呼叫堆疊指標。在一些情況下,所有內部狀態之一安全抹除可花費多個週期。軟體可藉由寫入至對應於內部狀態清除之一暫存器來起始狀態資訊之一資料安全抹除。可回應於一或多個操作之完成來清除狀態(例如,可進行狀態清除之觸發)。
第十四,可遮沒(blanked)未使用之資料及/或控制路徑。遮沒(其亦可被稱為「擠壓(squashing)」)可用於防止電力或電磁特徵洩露與正被執行之指令無關之資料。憑藉此技術,加密協同處理器可透過功能單元將信號(如未使用之暫存器檔案位址或未使用之資料路徑)遮沒為可為一0或一非0值之一常數或固定/靜態值。此遮沒可防止或至少減小可偵測到來自與正被執行之指令無關之資料之一電力或電磁特徵的可能性。此技術可僅以一小面積成本及時序影響來實施。遮沒可選擇性地應用於不同資料及/或控制路徑。
第十五,一檢查總和可用於基於載入至指令記憶體中之指令碼來保全可執行指令。加密協同處理器可對寫入至指令記憶體中之指令碼計算一檢查總和。加密協同處理器可進一步使此檢查總和可用於主機軟體,諸如經由一匯流排可存取CSR。以此方式,檢查總和可在一經指定暫存器中可用以供主機處理器擷取。因此,此檢查總和可由主機處理器用作一相對輕量級完整性檢查以確保寫入至加密協同處理器之指令碼已被正確接收及儲存。
可以多種不同方式之任一者來運算檢查總和。例如,在將指令碼寫入至指令記憶體時,可即時計算具有32位元(CRC32)之一循環冗餘檢查(CRC)或另一檢查總和。因此,檢查總和可取決於傳入指令碼資料之排序。此外或替代性地,可回應於針對檢查總和之一請求循序地讀出指令碼,但此程序可能花費更長時間來提供檢查總和及/或引入處理延遲。
關於對指令碼提供一檢查總和之實施方案,實例性態樣可包含自主處理器讀取回資料。態樣亦可包含將對由主處理器寫入之指令運算之一相對簡單檢查總和(例如,CRC32)載入至一CSR中。主處理器可自暫存器讀取回檢查總和並比較其與由主處理器運算或以其他方式為主處理器所知之一個檢查總和。態樣可進一步包含將ROM程式碼併入至加密協同處理器中以使能夠執行一更強完整性檢查。
第十六,可將一經執行指令計數提供至主機軟體。加密協同處理器可對自開始一操作以來經執行指令之數目或數量進行計數。加密協同處理器亦可諸如經由一經指定暫存器將計數提供至主機軟體。可由主機軟體使用經執行指令之數目以偵測正由加密協同處理器執行之應用程式之一些形式之意外執行(諸如執行之提前終止)。主機軟體可負責適當地解譯此數目。在加密協同處理器上執行之一些演算法通常可或甚至總是執行相同數量個指令(例如,許多加密及解密演算法)。然而,其他演算法可具有經執行指令(例如,RSA金鑰產生)之一更可變的運行時間或數目。
第十七,可複製一指令解碼器。加密協同處理器可包含經複製解碼邏輯及控制邏輯之至少一些複製。經複製邏輯區塊之一者可輸出反轉信號。在一些情況下,信號反轉係使用多於經複製區塊之輸出上之NOT閘來實現,使得各區塊之邏輯實施方案係不同的。在控制信號到達執行區塊的情況下,電路系統可檢查以確認經複製信號彼此反轉。若否,則檢查電路系統可發出一警告。
一旦已摒棄指令字上之ECC保護,解碼器區塊複製便可強化加密協同處理器以抵抗針對解碼邏輯及/或控制邏輯之故障注入攻擊。歸因於不再係彼此之反轉版本之所得不匹配控制信號,注入至一個經複製區塊中之一故障變得明顯或可偵測。由於各區塊之邏輯實施方案可能不同,因此將需要兩個分開的經注入故障來變更控制信號,而不觸發確認警告。
第十八,可複製運算資源。加密協同處理器可具有經複製算術單元,且電路系統可檢查兩者之輸出在每次運算時匹配。此可形成針對短時脈衝波干擾攻擊之一對策。然而,歸因於乘法累加(MAC)單元之複製,複製ALU可消耗大量面積及電力。替代性地,軟體可藉由代替性地重複更關鍵運算並檢查結果匹配來輔助攻擊偵測。
第十九,可實施指令流完整性。指令流完整性可確保指令如軟體作者所預期般執行。指令流完整性包含作為一特殊情況之控制流完整性(CFI),但指令流完整性亦涵蓋一基本區塊內之指令。
已大體上描述用於一安全加密協同處理器之方案、技術及硬體,此論述現轉向實例性方法。 用於一安全加密協同處理器之實例性方法
下文參考圖8至圖13之流程圖描述實例性方法。圖8係繪示供一裝置對一加密協同處理器提供安全性之實例性程序之一流程圖800。流程圖800包含六個方塊802至812。實例性程序之動作可由(例如,圖1及圖2之)安全電路系統106執行。例如,動作可由(例如,圖1及圖2之)一處理器202及一加密協同處理器118執行。
在方塊802,一處理器判定待執行之一加密操作。例如,處理器202可判定待執行之一加密操作430。例如,加密操作430可涉及實現或以其他方式支援如本文中所描述之安全電路系統之安全相關功能之任一者的一對稱或一非對稱加密操作。
在方塊804,處理器將用以執行加密操作之一請求傳輸至一加密協同處理器。例如,處理器202可將用以執行加密操作430之一請求傳輸至加密協同處理器118。在一些情況下,處理器202可將一指令碼載入至作為加密協同處理器118之部分或以其他方式與加密協同處理器118相關聯之至少一個暫存器中。若加密操作430使用一輸入,則處理器202亦可將一或多個輸入載入至一或多個暫存器中。基於暫存器之通信之實例係在本文中參考圖3-1至圖3-3描述。此外或替代性地,處理器202可驅動一互連件110或專用於處理器-加密協同處理器通信之一通信路徑上之傳訊以傳輸用以執行加密操作430之請求。
在方塊806,加密協同處理器接收用以執行加密操作之請求。例如,加密協同處理器118可接收用以執行加密操作430之請求。請求之接收可用對應於上文參考方塊804所描述之傳輸選項之任一者之一接收側操作來實施。例如,加密協同處理器118之一控制器406可偵測一新的操作碼已被載入至一暫存器中。
在方塊808,加密協同處理器使用指令碼及一中間值對資料執行加密操作以獲得一結果。例如,加密協同處理器118可使用指令碼412及一中間值428對資料414執行加密操作430以獲得一結果432。此處,控制器406可基於資料414執行指令碼412,此產生至少一個中間值428,同時運算結果432。結果432可為一數值(例如,一金鑰)及/或一肯定或否定指示。
在方塊810,加密協同處理器保護資料、中間值或指令碼之至少一者免受未經授權存取。例如,加密協同處理器118可保護資料414、中間值428或指令碼412之至少一者免受未經授權存取。因此,加密協同處理器118可實施本文中參考圖5至圖7所描述之方案之任一或多者及/或本文中所描述之十九(19)種技術之任一或多者,包含上文在標題為「用於一安全加密協同處理器之實例性方案、技術及硬體」之子章節中作為安全相關特徵闡述之彼等方案及技術。實例性方案可包含安全地抹除資訊(例如,如參考圖5所描述),經由兩個或更多個暫存器利用具有不同隨機性品質之隨機化之位元以支援安全相關操作(例如,如參考圖6所描述),及用一指令計數或對指令碼產生之一檢查總和之至少一者來保全指令碼之執行(例如,如參考圖7所描述)。此等方案及技術可個別地或以任何組合聯合使用。
在方塊812,加密協同處理器將結果提供至處理器。例如,加密協同處理器118可將結果432提供至處理器202。此可藉由將結果432儲存於處理器202可讀取之一暫存器中,藉由將結果驅動至互連件110或一專用匯流排上,藉由傳訊一肯定或否定指示,其等之某一組合等來執行。
圖9係繪示供一加密協同處理器保護經儲存狀態(諸如數位資訊)之實例性程序之一流程圖900。流程圖900包含四個方塊902至908。實例性程序之動作可由(例如,圖1及圖2之)安全電路系統106執行。例如,動作可至少部分由(例如,圖1、圖2及圖4之)一加密協同處理器118之(例如,圖4及圖5之)一控制器406執行。
在方塊902,一加密協同處理器獲得數位資訊。例如,加密協同處理器118可藉由接收來自另一組件之數位資訊或藉由在內部產生數位資訊來獲得數位資訊。例如,數位資訊可包含指令碼412、資料414或至少一個中間值428 (或其他狀態資訊)。
在方塊904,加密協同處理器使用至少一個加擾金鑰對數位資訊加擾以產生經加擾數位資訊。例如,加密協同處理器118可使用至少一個加擾金鑰502或504對數位資訊加擾以產生經加擾數位資訊。因此,經加擾數位資訊可包含指令碼412之一經加擾版本及/或資料414之一經加擾版本。
在方塊906,加密協同處理器將經加擾數位資訊儲存於至少一個記憶體中。例如,加密協同處理器118可將經加擾數位資訊儲存於至少一個記憶體(諸如一指令記憶體402或一資料記憶體404)中。在一些情況下,一控制器406可在經加擾數位資訊被接收時或在經加擾數位資訊在內部產生時儲存經加擾數位資訊。在其他情況下,控制器406可自一記憶體讀出數位資訊,對數位資訊加擾以產生經加擾數位資訊,且接著將經加擾數位資訊回寫至同一記憶體。
在方塊908,加密協同處理器藉由改變至少一個加擾金鑰來防止對數位資訊之存取。例如,加密協同處理器118可藉由改變至少一個加擾金鑰(例如,分別為一程式碼加擾金鑰502或一資料加擾金鑰504)來防止對數位資訊(例如,指令碼412或資料414)之存取。為此,控制器406可用隨機位元更換一加擾金鑰之至少部分。儘管一攻擊者仍可能夠自至少一個記憶體讀出經加擾數位資訊,但因為已藉由改變儲存加擾金鑰之一暫存器中之位元而有效地刪除加擾金鑰,故「原始」、未經加擾數位資訊不可存取。
圖10係繪示供一加密協同處理器利用具有不同隨機性品質位準之隨機值以有效地保護相關聯加密操作之安全性之實例性程序的一流程圖1000。流程圖1000包含三個方塊1002至1006。實例性程序之動作可由(例如,圖1及圖2之)安全電路系統106執行。例如,動作可至少部分由(例如,圖1、圖2及圖4之)一加密協同處理器118之(例如,圖4及圖6之)一控制器406執行。
在方塊1002,一加密協同處理器將多個第一位元儲存於對應於一第一隨機性品質之一第一暫存器中。例如,加密協同處理器118可將多個第一位元602-1儲存於對應於一第一隨機性品質604-1之一第一暫存器408-1中。例如,一控制器406可獲得來自隨機數之一非確定性源之多個第一位元602-1並將多個第一位元602-1載入至第一暫存器408-1中。在一些情況下,此一源可使用一基於類比之機制,其中一隨機或不可預測物理性質係用於產生用於第一暫存器408-1之隨機化之位元。
在方塊1004,加密協同處理器將多個第二位元儲存於對應於不同於第一隨機性品質之一第二隨機性品質之一第二暫存器中。例如,加密協同處理器118可將多個第二位元602-2儲存於對應於不同於第一隨機性品質604-1之一第二隨機性品質604-2之一第二暫存器408-2中。此處,控制器406可獲得來自隨機數之一確定性源之多個第二位元602-2。在一些情況下,此一源可使用一基於數位之機制,其中可具有用於數位地產生額外隨機化之位元之一或多個線性回饋移位暫存器(LFSR)之一本端偽隨機數產生器(PRNG)係用於產生用於第二暫存器408-2之隨機化之位元。
在方塊1006,加密協同處理器基於至少一個加密操作選擇性地自第一暫存器擷取多個第一位元或自第二暫存器擷取多個第二位元。例如,加密協同處理器可基於至少一個加密操作選擇性地自第一暫存器408-1擷取多個第一位元602-1或自第二暫存器408-2擷取多個第二位元602-2。如本文中所描述,一相對較敏感的加密操作可與一較高隨機性品質相關聯(例如,對於非對稱金鑰產生或滿足一密碼標準),且一相對較不敏感的加密操作可與一較低隨機性品質相關聯。因此,控制器406可基於待執行之對應加密操作之敏感性自一選定暫存器408擷取隨機化之位元。
圖11係繪示供一加密協同處理器藉由實現指令碼之驗證來保護加密操作之實例性程序之一流程圖1100。流程圖1100包含三個方塊1102至1106。實例性程序之動作可由(例如,圖1及圖2之)安全電路系統106執行。例如,動作可至少部分由(例如,圖1、圖2及圖4之)一加密協同處理器118之(例如,圖4及圖7之)一控制器406執行。
在方塊1102,一加密協同處理器獲得指令碼。例如,加密協同處理器118可獲得指令碼412。在一些情況下,加密協同處理器118可結合用以執行一加密操作之一請求經由一互連件110或一專用路徑接收來自一主機處理器202之指令碼412。在其他情況下,一控制器406可自一記憶體(諸如加密協同處理器118之一指令記憶體402)擷取指令碼412。
在方塊1104,加密協同處理器基於指令碼產生至少一個參數。例如,加密協同處理器118可基於指令碼412產生至少一個參數(例如,一數值,諸如一指令計數706或一檢查總和708)。用於產生一檢查總和708之實例性實施方案係在下文參考圖12描述,且用於產生一指令計數706之實例性實施方案係在下文參考圖13描述。
在方塊1106,加密協同處理器將至少一個參數提供至另一組件以使另一組件能夠相對於加密協同處理器驗證指令碼。例如,加密協同處理器118可將至少一個參數提供至另一組件(例如,若加密協同處理器118係實施為如圖2中所描繪之安全電路系統106之部分,則為一處理器202或另一周邊器件250)。藉由提供另一組件對至少一個參數之存取,加密協同處理器118可使另一組件能夠相對於加密協同處理器118驗證指令碼412。此可藉由加密協同處理器118將至少一個參數傳輸至另一組件(例如,經由一共用互連件或其他匯流排或經由一專用路徑)或藉由將至少一個參數儲存於曝露至另一組件之至少一個暫存器中來完成。
另一組件(諸如處理器202)可接收或擷取至少一個參數且藉由比較來自加密協同處理器118之至少一個參數與由另一組件判定或由另一組件自與加密協同處理器118分離之一源獲得之另一值來執行一驗證操作。驗證可相對於加密協同處理器118執行,此係因為(例如)至少一個參數係指示指令碼412與加密協同處理器118之間的一關連(nexus)。該關連可係關於什麼指令係作為指令碼412儲存於加密協同處理器118處之指令記憶體402中,指令碼412之什麼指令係由加密協同處理器118執行等。驗證可包含比較來自加密協同處理器118之一參數與另一參數且若該兩個參數值不匹配,則產生一警告及/或採取另一保護行動。
圖12係繪示供一加密協同處理器藉由實現指令碼之完整性確認來保護加密操作之實例性程序的一流程圖1200。流程圖1200包含三個方塊1202至1206。實例性程序之動作可由(例如,圖1及圖2之)安全電路系統106執行。例如,動作可由(例如,圖1、圖2及圖4之)一加密協同處理器118之(例如,圖4及圖7之)一控制器406執行。
在方塊1202,一加密協同處理器獲得指令碼。例如,加密協同處理器118可獲得指令碼412。獲得指令碼412之實例性方法係在上文參考圖11之方塊1102所描述。
在方塊1204,加密協同處理器對指令碼運算一檢查總和。例如,加密協同處理器118可對指令碼412運算檢查總和708。例如,控制器406可在接收到指令碼412時或藉由自指令記憶體402讀取指令碼412而對指令碼412應用一雜湊函數以運算檢查總和708。
在方塊1206,加密協同處理器將檢查總和提供至另一組件以使另一組件能夠使用檢查總和來確認在加密協同處理器處之指令碼之一完整性。例如,加密協同處理器118可將檢查總和708提供至另一組件(例如,一處理器202)以使另一組件能夠使用檢查總和708來確認定位於加密協同處理器118處之指令碼412之一完整性。用以將檢查總和708提供至另一組件之實例性方法係在上文參考圖11之方塊1106所描述。為執行完整性確認,另一組件可比較來自加密協同處理器118之檢查總和708與另一組件運算或以其他方式獨立於加密協同處理器118獲得之一檢查總和。
圖13係繪示供一加密協同處理器藉由實現指令碼之執行確認來保護加密操作之實例性程序的一流程圖1300。流程圖1300包含三個方塊1302至1306。實例性程序之動作可由(例如,圖1及圖2之)安全電路系統106執行。例如,動作可由(例如,圖1、圖2及圖4之)一加密協同處理器118之(例如,圖4及圖7之)一控制器406執行。
在方塊1302,一加密協同處理器獲得指令碼。例如,加密協同處理器118可獲得指令碼412。用以獲得指令碼412之實例性方法係在上文參考圖11之方塊1102所描述。
在方塊1304,加密協同處理器追蹤指令碼之經執行指令之一數量以產生指令計數。例如,加密協同處理器118可追蹤指令碼412之經執行指令之一數量以產生指令計數706。例如,控制器406可回應於指令碼412之各指令被執行以執行一所請求之加密操作來遞增一指令計數暫存器702中之一值。
在方塊1306,加密協同處理器將指令計數提供至另一組件以使另一組件能夠使用指令計數來確認由加密協同處理器對指令碼之一執行。例如,加密協同處理器118可將指令計數706提供至另一組件(例如,一處理器202)以使另一組件能夠使用指令計數706來確認由加密協同處理器118對指令碼412之一執行。用以將指令計數706提供至另一組件之實例性方法係在上文參考圖11之方塊1106所描述。為執行執行確認,另一組件可比較來自加密協同處理器118之指令計數706與另一組件判定(例如,瞭解)或以其他方式獨立於加密協同處理器118獲得之一指令計數。若該兩個計數無法匹配,則另一組件可採取行動,諸如使一當前加密操作無效及/或使加密協同處理器118中之所有狀態不可讀取。
此等方法之態樣可在(例如)硬體(例如,固定邏輯電路系統、一控制器、一有限狀態機或結合一記憶體之一處理器)、韌體、軟體或其等之某一組合中實施。可使用圖1至圖7及圖14中所展示之裝置或組件之一或多者來實現方法,該等組件可被進一步劃分、組合等。此等圖之器件及組件通常表示硬體,諸如電子器件、PCB、經封裝模組、IC晶片、組件或電路;韌體;軟體;或其等之一組合。因此,此等圖繪示能夠實施所描述方法之許多可能系統及裝置的一些。
對於本文中所描述之方法及(若干)相關聯流程圖,展示及/或描述操作之順序不旨在被解釋為限制。代替性地,任何數目或組合之所描述方法操作可以任何順序組合以實施一給定方法或一替代方法,包含藉由將來自不同流程圖之操作組合成一或多個方法。操作亦可自所描述方法省略或添加至所描述方法。此外,所描述操作可以完全或部分重疊方式實施。 用於一安全加密協同處理器之實例性態樣及實施方案
在下文中,描述一些實例性態樣及實施方案:
實例性態樣1:一種用於安全密碼協同處理之裝置,該裝置包括:一互連件;一處理器,其耦合至該互連件,該處理器經組態以:判定待執行之一加密操作;及傳輸用以執行該加密操作之一請求;及一加密協同處理器,其耦合至該互連件,該加密協同處理器經組態以:自該處理器接收用以執行該加密操作之該請求;使用指令碼(例如,其當接收到該請求時已經存在於該加密協同處理器中或在該請求之後及/或回應於該請求而載入)及一中間值(其可為由該加密處理器例如在接收到該請求之前及/或作為處理該請求之部分而計算之一值,且可能先前尚未由該加密處理器輸出)對資料(例如,由該加密處理器諸如自該處理器接收之資料(例如,作為該請求之部分),或先前在該加密處理器中產生之資料)執行該加密操作以獲得一結果;保護該資料、該中間值或該指令碼之至少一者免受未經授權存取;及將該結果提供至該處理器。
實例性態樣2:如實例性態樣1之裝置,其中該加密協同處理器經組態以:藉由改變用於對儲存於至少一個記憶體中之資訊加擾之至少一個加擾金鑰來保護儲存於該至少一個記憶體中之該資訊。
實例性態樣3:如實例性態樣1或實例性態樣2之裝置,其中:該至少一個記憶體包括一資料記憶體;且該至少一個加擾金鑰包括用於對儲存於該資料記憶體中之該資料加擾之一資料加擾金鑰。此可為由實例性態樣1指定之該指令記憶體之該保護之至少一部分。
實例性態樣4:如前述實例性態樣中任一項之裝置,其中:該至少一個記憶體包括一指令記憶體;且該至少一個加擾金鑰包括用於對儲存於該指令記憶體中之該指令碼加擾之一程式碼加擾金鑰。此亦可為由實例性態樣1指定之該指令記憶體之該保護之至少一部分。
實例性態樣5:如前述實例性態樣中任一項之裝置,其中該加密協同處理器經組態以:藉由用隨機位元覆寫至少一個暫存器來保護該中間值,該中間值對應於狀態資訊。此進一步可為由實例性態樣1指定之該指令記憶體之該保護之至少一部分。
實例性態樣6:如前述實例性態樣中任一項之裝置,其中該加密協同處理器經組態以藉由以下執行一安全抹除:用隨機位元覆寫至少一個暫存器;及用一常數(例如,一固定或靜態值,諸如一0或非0值,包含來自儲存於設計之RTL網路連線表中之一隨機常數之一者)覆寫該至少一個暫存器中之該等隨機位元。當該暫存器儲存該資料、該中間值或該指令碼之至少一者時,此亦可為由實例性態樣1提及之該保護之至少一部分。因此,可藉由對該資料、該中間值或該指令碼之該至少一者執行選自由以下組成之群組之至少一個動作來執行由實例性態樣1提及之該資料、該中間值或該指令碼之該至少一者之該保護:(i)諸如藉由產生一加擾金鑰及使用該所產生之加擾金鑰對儲存於該加密協同處理器中之該資料、該中間值或該指令碼之該至少一者(例如,當其儲存於該加密協同處理器之一資料記憶體中時為該資料,及/或當其儲存於該加密處理器之一指令記憶體中時為該指令碼)加擾來編碼該資料、該中間值或該指令碼之該至少一者,或(ii)覆寫該資料、該中間值或該指令碼之該至少一者。
實例性態樣7:如前述實例性態樣中任一項之裝置,其中該加密協同處理器包括:一第一暫存器,其經組態以儲存對應於一第一隨機性品質之多個第一位元;及一第二暫存器,其經組態以儲存對應於一第二隨機性品質之多個第二位元。
實例性態樣8:如前述實例性態樣中任一項之裝置,其中該加密協同處理器經組態以:基於與該加密操作相關聯之隨機性之一品質(或一「隨機性品質」)選擇性地自該第一暫存器擷取該多個第一位元或自該第二暫存器擷取該多個第二位元。
實例性態樣9:如前述實例性態樣中任一項之裝置,其中:該第一隨機性品質高於該第二隨機性品質;該多個第一位元對應於隨機數之一非確定性源;且該多個第二位元對應於隨機數之一確定性源。
實例性態樣10:如前述實例性態樣中任一項之裝置,其中該加密協同處理器經組態以:在待使用該多個第一位元之前,將該多個第一位元預取至該第一暫存器中。
實例性態樣11:如前述實例性態樣中任一項之裝置,其中該加密協同處理器經組態以:對與一指令記憶體相關聯之該指令碼產生一檢查總和;及將該檢查總和提供至該處理器。
實例性態樣12:如前述實例性態樣中任一項之裝置,其中:該加密協同處理器包括一指令計數器;且該加密協同處理器經組態以:經由該指令計數器追蹤該指令碼之經執行指令之一數量;及將該等經執行指令之該數量提供至該處理器。
實例性態樣13:如前述實例性態樣中任一項之裝置,其中:該裝置包括一行動器件(例如,選自由平板電腦、行動電話及膝上型電腦組成之群組之一者);且該行動器件包含含有該互連件、該處理器及該加密協同處理器之一積體電路。
實例性態樣14:一種用於供一裝置提供安全密碼協同處理之方法,該裝置包含經由一互連件耦合至一加密協同處理器之一處理器,該方法包括:藉由該處理器判定待執行之一加密操作;藉由該處理器將用以執行該加密操作之一請求傳輸至該加密協同處理器;藉由該加密協同處理器接收用以執行該加密操作之該請求;藉由該加密協同處理器使用指令碼(例如,其當接收到該請求時已經存在於該加密協同處理器中或在該請求之後及/或回應於該請求而載入)及一中間值(其可為由該加密處理器例如在接收到該請求之前及/或作為處理該請求之部分而計算之一值,且可能先前尚未由該加密處理器輸出)對資料(例如,由該加密處理器諸如自該處理器接收之資料(例如,作為該請求之部分),或先前在該加密處理器中產生之資料)執行該加密操作以獲得一結果;藉由該加密協同處理器保護該資料、該中間值或該指令碼之至少一者免受未經授權存取;及藉由該加密協同處理器將該結果提供至該處理器。
實例性態樣15:如實例性態樣14或如由前述裝置實例性態樣中任一項實施之方法,其進一步包括:藉由該加密協同處理器藉由改變用於對儲存於至少一個記憶體中之資訊加擾之至少一個加擾金鑰來保護儲存於該至少一個記憶體中之該資訊。
實例性態樣16:如實例性態樣14、實例性態樣15或如由前述裝置實例性態樣中任一項實施之方法,其進一步包括:藉由該加密協同處理器基於與該加密操作相關聯之隨機性之一品質(或一「隨機性品質」)選擇性地自一第一暫存器擷取多個第一位元或自一第二暫存器擷取多個第二位元。
實例性態樣17:一種用於一加密協同處理器之方法,該方法包括:在該加密協同處理器處獲得數位資訊;藉由該加密協同處理器使用至少一個加擾金鑰對該數位資訊加擾以產生經加擾數位資訊;藉由該加密協同處理器將該經加擾數位資訊儲存於至少一個記憶體中;及藉由該加密協同處理器藉由改變該至少一個加擾金鑰來防止對該數位資訊之存取。
實例性態樣18:如實例性態樣17之方法,其中:該數位資訊包含資料;該至少一個加擾金鑰包含一資料加擾金鑰;該經加擾數位資訊包含經加擾資料;且該至少一個記憶體包含一資料記憶體。
實例性態樣19:如實例性態樣17或實例性態樣18之方法,其中:該數位資訊包含指令碼;該至少一個加擾金鑰包含一程式碼加擾金鑰;該經加擾數位資訊包含經加擾指令碼;且該至少一個記憶體包含一指令記憶體。
實例性態樣20:如實例性態樣17至19中任一項之方法,其中:該至少一個加擾金鑰係儲存於至少一個金鑰暫存器中;且該防止包括用隨機位元覆寫該至少一個金鑰暫存器。
實例性態樣21:如實例性態樣17至20中任一項之方法,其進一步包括:藉由用隨機位元覆寫至少一個暫存器來防止對儲存於該至少一個暫存器中之一中間值之存取。
實例性態樣22:如實例性態樣20或實例性態樣21之方法,其進一步包括:藉由用一常數值覆寫該至少一個金鑰暫存器或該至少一個暫存器中之該等隨機位元來執行一安全抹除。
實例性態樣23:如實例性態樣17至22中任一項之方法,其中:該獲得包括接收來自一主機處理器之該數位資訊;且該主機處理器及該加密協同處理器構成用於至少一個積體電路之安全電路系統之至少部分。
實例性態樣24:一種用於一加密協同處理器之方法,該方法包括:藉由該加密協同處理器將多個第一位元儲存於對應於一第一隨機性品質之一第一暫存器中;藉由該加密協同處理器將多個第二位元儲存於對應於不同於該第一隨機性品質之一第二隨機性品質之一第二暫存器中;及藉由該加密協同處理器基於至少一個加密操作選擇性地自該第一暫存器擷取該多個第一位元或自該第二暫存器擷取該多個第二位元。
實例性態樣25:如實例性態樣24之方法,其中該選擇性地擷取包括:基於與該至少一個加密操作相關聯之一隨機性品質選擇性地自該第一暫存器擷取該多個第一位元或自該第二暫存器擷取該多個第二位元。
實例性態樣26:如實例性態樣24或實例性態樣25之方法,其中:該第一隨機性品質高於該第二隨機性品質;且該方法進一步包括:獲得來自隨機數之一非確定性源之該多個第一位元;及獲得來自隨機數之一確定性源之該多個第二位元。
實例性態樣27:如實例性態樣26之方法,其中:隨機數之該非確定性源包括一基於類比之源;且隨機數之該確定性源包括包含一偽隨機數產生器之一基於數位之源。
實例性態樣28:如實例性態樣24至27中任一項之方法,其進一步包括:在待使用該多個第一位元之前,將該多個第一位元預取至該第一暫存器中。
實例性態樣29:一種用於一加密協同處理器之方法,該方法包括:在該加密協同處理器處獲得指令碼;藉由該加密協同處理器基於該指令碼產生至少一個參數;及藉由該加密協同處理器將該至少一個參數提供至另一組件以使另一組件能夠相對於該加密協同處理器驗證該指令碼。
實例性態樣30:如實例性態樣29之方法,其中:該至少一個參數包含一檢查總和;該產生包括對該指令碼運算該檢查總和;且該提供包括將該檢查總和提供至另一組件以使另一組件能夠使用該檢查總和確認該加密協同處理器處之該指令碼之一完整性。
實例性態樣31:如實例性態樣29或實例性態樣30之方法,其中:該至少一個參數包含一指令計數;該產生包括追蹤該指令碼之經執行指令之一數量以產生該指令計數;且該提供包括將該指令計數提供至另一組件以使另一組件能夠使用該指令計數來確認由該加密協同處理器對該指令碼之一執行。
實例性態樣32:如實例性態樣29至31中任一項之方法,其中:該提供包括在可由另一組件存取之一暫存器中曝露該至少一個參數,另一組件包括一主機處理器;且該主機處理器及該加密協同處理器構成一積體電路之安全電路系統之至少部分。
實例性態樣33:一種裝置,其包括:經組態以執行如實例性態樣17至32中任一項之方法之一加密協同處理器。 用於一安全加密協同處理器之實例性電子器件
圖14繪示根據一或多項所描述態樣之可實施一安全加密協同處理器118之一實例性電子器件1400之各種組件。電子器件1400可經實施為一固定、行動、獨立或嵌入式器件之任一者或組合;呈一消費者、電腦、可攜式、使用者、伺服器、通信、電話、導航、遊戲、音訊、相機、訊息傳遞、媒體播放及/或其他類型之電子器件1400之任何形式,諸如在圖1中描繪為裝置102之智慧型電話。所繪示組件之一或多者可實現為離散組件或電子器件1400之至少一個積體電路上之整合式組件。
電子器件1400可包含實現器件資料1404 (諸如經接收資料、經傳輸資料或上文識別之其他資訊)之有線及/或無線通信之一或多個通信收發器1402。實例性通信收發器1402包含近場通信(NFC)收發器、符合各種IEEE 802.15 (Bluetooth TM)標準之無線個人區域網路(PAN) (WPAN)無線電、符合各種IEEE 802.11 (Wi‑Fi TM)標準之任一者之無線區域網路(LAN) (WLAN)無線電、用於蜂巢式電話之無線廣域網路(WAN) (WWAN)無線電(例如,3GPP相容之彼等)、符合各種IEEE 802.16 (WiMAX TM)標準之無線都會區域網路(MAN) (WMAN)無線電、符合一紅外線資料協會(IrDA)協定之紅外線(IR)收發器,及有線區域網路(LAN) (WLAN)乙太網路收發器。
電子器件1400亦可包含一或多個資料輸入埠1406,可經由該一或多個資料輸入埠1406接收任何類型之資料、媒體內容及/或其他輸入,諸如使用者可選擇輸入、訊息、應用程式、音樂、電視內容、經錄製視訊內容,及自任何內容及/或資料源(包含一感測器,如一麥克風或一相機)接收之任何其他類型之音訊、視訊及/或影像資料。資料輸入埠1406可包含USB埠、同軸纜線埠、用於光纖互連件或電纜線之光纖埠,及用於快閃記憶體、DVD、CD及類似者之其他串列或並列連接器(包含內部連接器)。此等資料輸入埠1406可用於將電子器件耦合至組件、周邊設備或配件(諸如鍵盤、麥克風、相機或其他感測器)。
此實例之電子器件1400包含至少一個處理器1408 (例如,應用程式處理器、微處理器、數位信號處理器(DSP)、控制器及類似者之任一或多者),該至少一個處理器1408可包含處理(例如,執行)電腦可執行指令以控制器件之操作之一經組合處理器及記憶體系統(例如,實施為一SoC之部分)。處理器1408可經實施為一應用程式處理器、嵌入式控制器、微控制器、安全處理器、人工智能(AI)加速器及類似者。通常,一處理器或處理系統可至少部分在硬體中實施,該硬體可包含一積體電路或晶片上系統之組件、一數位信號處理器(DSP)、一特定應用積體電路(ASIC)、一場可程式化閘陣列(FPGA)、一複雜可程式化邏輯器件(CPLD),及矽及/或其他材料中之其他實施方案。
替代性地或此外,電子器件1400可用電子電路系統之任一者或組合來實施,該電子電路系統可包含結合處理及控制電路(其等大體上以1410指示(如電子電路系統1410))實施之軟體、硬體、韌體或固定邏輯電路系統。此電子電路系統1410可實施可執行或基於硬體之模組(圖14中未展示),諸如透過儲存於電腦可讀媒體上之處理/電腦可執行指令,透過邏輯電路系統及/或硬體(例如,諸如一FPGA)等。
儘管未展示,但電子器件1400可包含一系統匯流排、互連件、交叉開關(crossbar)、資料傳送系統,或耦合器件內之各種組件之其他切換組構。一系統匯流排或互連件可包含不同匯流排結構之任一者或一組合,諸如一記憶體匯流排或記憶體控制器、一周邊匯流排、一通用串列匯流排,及/或利用各種匯流排架構之任一者之一處理器或本端匯流排。
電子器件1400亦包含實現資料儲存之一或多個記憶體器件1412,其等之實例包含隨機存取記憶體(RAM)、非揮發性記憶體(例如,唯讀記憶體(ROM)、快閃記憶體、EPROM及EEPROM)及一磁碟儲存器件。因此,(若干)記憶體器件1412可跨一系統之不同邏輯儲存層級以及在不同實體組件處分佈。(若干)記憶體器件1412提供用以儲存器件資料1404、其他類型之程式碼及/或資料以及各種器件應用程式1420 (例如,軟體應用程式或程式)之資料儲存機構。例如,一作業系統1414可作為記憶體器件1412內之軟體指令而被維持且藉由處理器1408執行。
在一些實施方案中,電子器件1400亦包含處理音訊資料及/或將音訊及視訊資料傳遞至一音訊系統1418及/或至一顯示系統1422 (例如,一視訊緩衝器或一智慧型電話或相機之一螢幕)之一音訊及/或視訊處理系統1416。音訊系統1418及/或顯示系統1422可包含處理、顯示及/或以其他方式呈現音訊、視訊、顯示及/或影像資料之任何器件。可經由一RF (射頻)鏈路、S視訊鏈路、HDMI (高清晰度多媒體介面)、複合視訊鏈路、分量視訊鏈路、DVI (數位視訊介面)、類比音訊連接、視訊匯流排或其他類似通信鏈路(諸如一媒體資料埠1424)將顯示資料及音訊信號傳送至一音訊組件及/或至一顯示組件。在一些實施方案中,音訊系統1418及/或顯示系統1422係電子器件1400之外部或分離組件。替代性地,例如,顯示系統1422可為實例性電子器件1400之一整合式組件(諸如一整合式觸控介面之部分)。
圖14之電子器件1400係圖1之裝置102之一實例性實施方案、可實施圖3-2之分析344之一器件之一實例性實施方案,及可實施圖8之一方法之一器件之一實例性實施方案。因此,電子器件1400可包含安全電路系統106,該安全電路系統106可為一分開的IC晶片或被包含作為另一IC晶片或器件(如處理器1408、電子電路系統1410或記憶體器件1412)之部分。因此,所繪示組件之一或多者可整合於同一IC晶片(如一SoC)上或至少一單個PCB上。
如所展示,此外或替代性地,電子器件1400可包含一兼容性分析模組340。例如,記憶體器件1412可儲存兼容性分析模組340,且處理器1408可執行兼容性分析模組340。因此,記憶體器件1412亦可儲存周邊器件設計程式碼342、一介面規範332等。電子器件1400亦可或代替性地實施圖8之程序。此外,加密協同處理器118可包含圖4至圖7之組件之任一者(例如,作為安全電路系統106之部分)。此外,加密協同處理器118可在上文所描述之電子器件1400之組件之任一者中實施,作為安全電路系統106之部分或與安全電路系統106分離。例如,處理器1408可作為由加密協同處理器118支援之一主機處理器操作。因此,如本文中所描述之一安全加密協同處理器之原理可由圖14之電子器件1400或結合圖14之電子器件1400實施。
除非上下文另有規定,否則本文中使用字詞「或」可被視為使用一「包含性或」,或允許包含或應用由字詞「或」連結之一或多個品項之一術語(例如,一片語「A或B」可被解釋為僅允許「A」、僅允許「B」或允許「A」及「B」兩者)。又,如本文中所使用,提及一品項清單「之至少一者」之一片語係指彼等品項之任何組合(包含單個成員)。例如,「a、b或c之至少一者」可涵蓋a、b、c、a-b、a-c、b-c及a-b-c,以及具有多個相同元素之任何組合(例如,a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c及c-c-c或a、b及c之任何其他排序)。此外,附圖中所表示之品項及本文中所論述之術語可指示一或多個品項或術語,且因此可互換地引用此書面描述中之品項及術語之單一或複數形式。儘管已用特定於特定特徵及/或方法之語言描述一安全加密協同處理器之實施方案,但隨附發明申請專利範圍之標的並不一定限於所描述之特定特徵或方法。實情係,特定特徵及方法係揭示為一安全加密協同處理器及/或安全密碼協同處理之實例性實施方案。
100:實例性裝置102 102:裝置 102-1:平板器件 102-2:智慧型電視 102-3:桌上型電腦 102-4:伺服器電腦 102-5:智慧型手錶 102-6:智慧型電話 102-7:智能眼鏡 104:積體電路(IC) 106:安全電路系統 108-1至108-C:電路組件/組件 110:互連件 112:警告 114:中斷 116:加密處理 118:安全加密協同處理器/密碼協同處理區塊/加密協同處理器 202:處理器/本端主機處理器/主機處理器 204:警告處置器 206:唯讀記憶體(ROM) 208:靜態隨機存取記憶體(SRAM) 210:快閃記憶體 212:先進加密標準(AES)引擎/先進加密標準(AES)加密引擎 214:基於雜湊之訊息鑑認碼(HMAC)引擎 216:快閃記憶體控制器 218:通用異步接收器/傳輸器(UART)單元 220:通用輸入/輸出(GPIO)介面 222:接腳多工器(mux) 224:墊控制器 226:除錯模組(DM) 228:中斷控制器(ItC) 230:串列周邊介面(SPI)器件 232:隨機數產生器(RNG) 234:計時器 250:周邊器件 250-1至250-P:周邊器件 300-1:周邊器件250 300-2:方法 300-3:周邊器件250及實例性通信信號 302:介面/通信介面 304:互連介面 306:器件間介面 308:另一介面 310:暫存器介面 312:安全功能模組 314:互連通信 316:器件間通信 318:通信 320:通信協定 332:介面規範 334:互連方案 336:器件間方案 338:另一方案 340:兼容性分析模組 342:周邊器件設計程式碼/設計程式碼 344:分析 346:兼容性報告 348:處理器-器件傳訊 350:器件間傳訊 362-1:雙向傳訊 362-2:雙向傳訊 364:時脈信號 365:開發模式信號 366:中斷信號 367:雙向傳訊 368:警告信號 369-1:傳出信號 369-2:傳入信號 400:示意圖 402:指令記憶體 404:資料記憶體 406:控制器 408:暫存器/隨機位元暫存器 408-1:第一暫存器/暫存器 408-2:第二暫存器/暫存器 410:解碼器 412:指令碼 414:資料 416:通用暫存器(GPR) 418:寬資料暫存器(WDR) 420:增量器 422:基本算術邏輯單元(ALU) 424:大數算術邏輯單元(ALU) 426:乘法累加(MAC)單元 428:中間值 430:加密操作 432:結果 500:方案 502:程式碼加擾金鑰/加擾金鑰 504:資料加擾金鑰/加擾金鑰 506:暫存器 508:狀態 600:方案 602-1:第一位元/隨機位元 602-2:第二位元/隨機位元 604-1:第一隨機性品質/隨機性品質 604-2:第二隨機性品質/隨機性品質 700:方案 702:暫存器/指令計數暫存器 704:暫存器 706:指令計數 708:檢查總和 800:流程圖 802:方塊 804:方塊 806:方塊 808:方塊 810:方塊 812:方塊 900:流程圖 902:方塊 904:方塊 906:方塊 908:方塊 1000:流程圖 1002:方塊 1004:方塊 1006:方塊 1100:流程圖 1102:方塊 1104:方塊 1106:方塊 1200:流程圖 1202:方塊 1204:方塊 1206:方塊 1300:流程圖 1302:方塊 1304:方塊 1306:方塊 1400:電子器件 1402:通信收發器 1404:器件資料 1406:資料輸入埠 1408:處理器 1410:電子電路系統 1412:記憶體器件 1414:作業系統 1416:音訊及/或視訊處理系統 1418:音訊系統 1420:器件應用程式 1422:顯示系統 1424:媒體資料埠
參考以下圖式描述用於一安全加密協同處理器之裝置及技術。貫穿圖式使用相同數字來參考相同特徵及組件。 圖1繪示具有包含其中可實施一安全加密協同處理器之安全電路系統之一積體電路(IC)之一實例性裝置。 圖2繪示包含多個電路組件(包含可經實施為可兼容之多個實例性周邊器件,諸如一加密協同處理區塊)之實例性安全電路系統。 圖3-1繪示包含用以支援與其他電路組件之兼容性之至少一個介面之一實例性周邊器件。 圖3-2繪示用以分析一周邊器件設計以確保滿足可兼容目標之一實例性方法。 圖3-3繪示包含一暫存器介面之一實例性周邊器件及實例性通信信號。 圖4繪示根據特定加密協同處理器實施方案之一實例性示意圖。 圖5繪示用於在一加密協同處理器中安全地抹除(wiping)資訊之實例性方案。 圖6繪示用於有效地提供隨機化之位元以支援一加密協同處理器之安全操作之實例性方案。 圖7繪示用於確認由一加密協同處理器對指令碼之安全執行之實例性方案。 圖8係繪示用於保全一加密協同處理器之一實例性程序之一流程圖。 圖9係繪示供一加密協同處理器保護經儲存狀態(諸如實現為指令碼或資料之數位資訊)之一實例性程序之一流程圖。 圖10係繪示供一加密協同處理器利用具有不同隨機性品質位準之隨機值以有效地保護相關聯加密操作之安全性之一實例性程序的一流程圖。 圖11係繪示供一加密協同處理器藉由實現指令碼之驗證來保護加密操作之一實例性程序之一流程圖。 圖12係繪示供一加密協同處理器藉由實現指令碼之完整性確認來保護加密操作之一實例性程序的一流程圖。 圖13係繪示供一加密協同處理器藉由實現指令碼之執行確認來保護加密操作之一實例性程序的一流程圖。 圖14繪示根據一或多項所描述態樣之可實施一安全加密協同處理器之一實例性電子器件之各種組件。
100:實例性裝置102
102:裝置
102-1:平板器件
102-2:智慧型電視
102-3:桌上型電腦
102-4:伺服器電腦
102-5:智慧型手錶
102-6:智慧型電話
102-7:智能眼鏡
104:積體電路(IC)
106:安全電路系統
108-1至108-C:電路組件/組件
110:互連件
112:警告
114:中斷
116:加密處理
118:安全加密協同處理器/加密協同處理區塊/加密協同處理器

Claims (17)

  1. 一種用於一加密協同處理器之方法,該方法包括: 在該加密協同處理器處獲得數位資訊; 藉由該加密協同處理器使用至少一個加擾金鑰對該數位資訊加擾以產生經加擾數位資訊; 藉由該加密協同處理器將該經加擾數位資訊儲存於至少一個記憶體中;及 藉由該加密協同處理器藉由改變該至少一個加擾金鑰來防止對該數位資訊之存取。
  2. 如請求項1之方法,其中: 該數位資訊包含資料; 該至少一個加擾金鑰包含一資料加擾金鑰; 該經加擾數位資訊包含經加擾資料;且 該至少一個記憶體包含一資料記憶體。
  3. 如請求項1或請求項2之方法,其中: 該數位資訊包含指令碼; 該至少一個加擾金鑰包含一程式碼加擾金鑰; 該經加擾數位資訊包含經加擾指令碼;且 該至少一個記憶體包含一指令記憶體。
  4. 如請求項1或請求項2之方法,其中: 該至少一個加擾金鑰係儲存於至少一個金鑰暫存器中;且 該防止包括用隨機位元覆寫該至少一個金鑰暫存器。
  5. 如請求項1或請求項2之方法,其進一步包括: 藉由用隨機位元覆寫至少一個暫存器來防止對儲存於該至少一個暫存器中之一中間值之存取。
  6. 如請求項4之方法,其進一步包括: 藉由用一常數值覆寫該至少一個金鑰暫存器或該至少一個暫存器中之該等隨機位元來執行一安全抹除。
  7. 如請求項1或請求項2之方法,其中: 該獲得包括接收來自一主機處理器之該數位資訊;且 該主機處理器及該加密協同處理器構成用於至少一個積體電路之安全電路系統之至少部分。
  8. 一種用於一加密協同處理器之方法,該方法包括: 藉由該加密協同處理器將多個第一位元儲存於對應於一第一隨機性品質之一第一暫存器中; 藉由該加密協同處理器將多個第二位元儲存於對應於不同於該第一隨機性品質之一第二隨機性品質之一第二暫存器中;及 藉由該加密協同處理器基於至少一個加密操作選擇性地自該第一暫存器擷取該多個第一位元或自該第二暫存器擷取該多個第二位元。
  9. 如請求項1之方法,其中該選擇性地擷取包括: 基於與該至少一個加密操作相關聯之一隨機性品質選擇性地自該第一暫存器擷取該多個第一位元或自該第二暫存器擷取該多個第二位元。
  10. 如請求項1或請求項2之方法,其中: 該第一隨機性品質高於該第二隨機性品質;且 該方法進一步包括: 獲得來自隨機數之一非確定性源之該多個第一位元;及 獲得來自隨機數之一確定性源之該多個第二位元。
  11. 如請求項3之方法,其中: 隨機數之該非確定性源包括一基於類比之源;且 隨機數之該確定性源包括包含一偽隨機數產生器之一基於數位之源。
  12. 如請求項1或請求項2之方法,其進一步包括: 在待使用該多個第一位元之前,將該多個第一位元預取至該第一暫存器中。
  13. 一種用於一加密協同處理器之方法,該方法包括: 在該加密協同處理器處獲得指令碼; 藉由該加密協同處理器基於該指令碼產生至少一個參數;及 藉由該加密協同處理器將該至少一個參數提供至另一組件以使該另一組件能夠相對於該加密協同處理器驗證該指令碼。
  14. 如請求項6之方法,其中: 該至少一個參數包含一檢查總和; 該產生包括對該指令碼運算該檢查總和;且 該提供包括將該檢查總和提供至該另一組件以使該另一組件能夠使用該檢查總和確認該加密協同處理器處之該指令碼之一完整性。
  15. 如請求項6或請求項7之方法,其中: 該至少一個參數包含一指令計數; 該產生包括追蹤該指令碼之經執行指令之一數量以產生該指令計數;且 該提供包括將該指令計數提供至該另一組件以使該另一組件能夠使用該指令計數來確認由該加密協同處理器對該指令碼之一執行。
  16. 如請求項6或請求項7之方法,其中: 該提供包括在可由該另一組件存取之一暫存器中曝露該至少一個參數,該另一組件包括一主機處理器;且 該主機處理器及該加密協同處理器構成一積體電路之安全電路系統之至少部分。
  17. 一種裝置,其包括: 一加密協同處理器,其經組態以執行如請求項1至16中任一項之方法。
TW111113080A 2021-04-06 2022-04-06 安全加密協同處理器 TWI821971B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202163171554P 2021-04-06 2021-04-06
US63/171,554 2021-04-06

Publications (2)

Publication Number Publication Date
TW202240439A true TW202240439A (zh) 2022-10-16
TWI821971B TWI821971B (zh) 2023-11-11

Family

ID=81388876

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111113080A TWI821971B (zh) 2021-04-06 2022-04-06 安全加密協同處理器

Country Status (7)

Country Link
US (1) US20240193309A1 (zh)
EP (1) EP4281892A2 (zh)
JP (1) JP2024513723A (zh)
KR (1) KR20230144611A (zh)
CN (1) CN116982047A (zh)
TW (1) TWI821971B (zh)
WO (1) WO2022217229A2 (zh)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2790844B1 (fr) * 1999-03-09 2001-05-25 Gemplus Card Int Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme
US8175276B2 (en) * 2008-02-04 2012-05-08 Freescale Semiconductor, Inc. Encryption apparatus with diverse key retention schemes
US20120179898A1 (en) * 2011-01-10 2012-07-12 Apple Inc. System and method for enforcing software security through cpu statistics gathered using hardware features
CN104025501B (zh) * 2011-12-29 2018-03-27 英特尔公司 用于不确定性随机位发生器(nrbg)的方法和装置
DE102015202049B3 (de) * 2015-02-05 2016-08-18 Infineon Technologies Ag System und Verfahren zur Fehlerdetektion von ausgeführtem Programmcode unter Verwendung komprimierter Anweisungssignaturen
US10536441B2 (en) * 2016-08-23 2020-01-14 Texas Instruments Incorporated Thread ownership of keys for hardware-accelerated cryptography
US10333708B1 (en) * 2017-02-03 2019-06-25 Amazon Technologies, Inc. Hybrid random-number generator
US10785016B2 (en) * 2018-07-25 2020-09-22 Silicon Laboratories, Inc. Countermeasure for power injection security attack
US11363455B2 (en) * 2019-01-11 2022-06-14 Qualcomm Incorporated Near field communication forum data exchange format (NDEF) messages with authenticated encryption

Also Published As

Publication number Publication date
JP2024513723A (ja) 2024-03-27
WO2022217229A2 (en) 2022-10-13
US20240193309A1 (en) 2024-06-13
KR20230144611A (ko) 2023-10-16
EP4281892A2 (en) 2023-11-29
TW202407562A (zh) 2024-02-16
CN116982047A (zh) 2023-10-31
TWI821971B (zh) 2023-11-11
WO2022217229A3 (en) 2022-11-24

Similar Documents

Publication Publication Date Title
WO2021087418A1 (en) Peripheral device comportability with security circuitry
TWI821971B (zh) 安全加密協同處理器
TWI856849B (zh) 安全加密協同處理器
US20230177154A1 (en) Sparse Encodings for Control Signals
TWI807766B (zh) 安全之全晶片通信
TWI845059B (zh) 執行安全密碼操作之積體電路及方法
US20220391540A1 (en) Register File Protection
US20240184932A1 (en) Read-Only Memory (ROM) Security
JP2024513716A (ja) 読み取り専用メモリ(rom)のセキュリティ
CN118575161A (zh) 安全伪随机数生成器(prng)重播种