TW202226782A - 包括增強型密碼位址之密碼運算技術 - Google Patents

包括增強型密碼位址之密碼運算技術 Download PDF

Info

Publication number
TW202226782A
TW202226782A TW110135638A TW110135638A TW202226782A TW 202226782 A TW202226782 A TW 202226782A TW 110135638 A TW110135638 A TW 110135638A TW 110135638 A TW110135638 A TW 110135638A TW 202226782 A TW202226782 A TW 202226782A
Authority
TW
Taiwan
Prior art keywords
memory
address
data
host
key
Prior art date
Application number
TW110135638A
Other languages
English (en)
Inventor
阿布希雪克 巴薩克
謝爾蓋 道奇
大衛 M 達勒姆
卡倫維亞 S 葛瑞沃
麥克 D 萊美
安娜 特里卡利諾伊
奧伯瓦格納 安喬 L 瓦爾迪克
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 TW202226782A publication Critical patent/TW202226782A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • 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/606Protecting data by securing the transmission between two devices or processes
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

一種設備包含一處理器單元,該處理器單元包含:用以針對一第一網路主機產生對一第二網路主機之一物件的一請求之電路系統,其中該請求包含一位址,該位址包含該第二網路主機之一可路由的主機ID及一至少部分地經加密之物件ID,其中該位址唯一地識別一分散式運算域內之該物件;及一記憶體元件,其用以儲存該物件之至少一部分。

Description

包括增強型密碼位址之密碼運算技術
發明領域
本結露內容大體上係關於電腦系統之領域,且更特定言之,係關於密碼運算。
發明背景
密碼運算可指電腦系統安全解決方案,其使用處理器組件內部之密碼機制來保護由運算系統儲存之資料。密碼機制可用於使用密鑰、微調或其他安全性機制將資料自身及/或指標加密為資料。密碼運算為運算行業中之重要趨勢,其中運算自身之基礎在根本上變為密碼的。密碼運算表示重大的改變,係對系統安全性之根本性的重新思考,對行業具有廣泛影響。
依據本發明之一實施例,係特地提出一種設備,其包含:一處理器單元,其包含:電路系統,其用以針對一第一網路主機產生對一第二網路主機之一物件的一請求,其中該請求包含一位址,該位址包含該第二網路主機之一可路由的主機ID及一至少部分地經加密之物件ID,其中該位址唯一地識別一分散式運算域內之該物件;及一記憶體元件,其用以儲存該物件之至少一部分。
較佳實施例之詳細說明
本揭露內容提供用於實施可用於密碼運算之上下文中的記憶體寫入指令之各種可能的實施例或實例。通常,密碼運算可指電腦系統安全解決方案,其使用處理器組件內部之密碼機制作為其運算之部分。一些密碼運算系統可使用經加密記憶體存取指令來在處理器核心中實施指標位址(或其部分)、密鑰、資料及程式碼之加密及解密。因此,處理器核心之微架構管線可以此方式經組配以支援此類加密及解密操作。
本申請案中所揭露之實施例係與主動地阻止對記憶體之出界存取有關,同時施行對記憶體內之記憶體區的密碼隔離。密碼隔離可指產生於記憶體之不同區或區域運用一或多個不同參數經加密之隔離。參數可包括密鑰及/或微調。經隔離記憶體區可由物件構成,該等物件包括資料結構及/或軟體實體(例如,虛擬機(VM)、應用程式、功能、執行緒)之程式碼。因此,可以任意粒度位準支援隔離,諸如虛擬機器之間的隔離、應用程式之間的隔離、功能之間的隔離、執行緒之間的隔離或資料結構之間的隔離(例如,少數位元組結構)。
與特定記憶體區相關聯的資料或程式碼的加密及解密操作可藉由使用與彼記憶體區相關聯的密鑰的密碼演算法來執行。在至少一些實施例中,密碼演算法亦可(或替代地)使用微調作為輸入。通常,諸如「密鑰」及「微調」之參數意欲表示輸入值,該等輸入值可為秘密及/或唯一的,且由加密或解密程序分別用以產生經加密輸出值或經解密輸出值。密鑰可為唯一值,至少在以密碼方式隔離之記憶體區或子區當中。可例如在處理器暫存器或處理器記憶體(例如處理器快取記憶體、內容可定址記憶體(CAM)等)中維持密鑰,該等處理器暫存器或處理器記憶體可藉由指令集擴展來存取。微調可自經編碼指標(例如,嵌入其中之安全上下文資訊)導出至儲存或將儲存經加密/解密之資料或程式碼的記憶體位址,且在至少一些情境中,亦可包括與記憶體區相關聯之安全上下文資訊。
本說明書中所揭露之包括讀取及寫入操作的至少一些實施例係關於基於指標之資料加密及解密,其中至用於資料或程式碼之記憶體位置的指標係用標籤及/或其他元資料(例如,安全上下文資訊)編碼,且可用以導出至資料或程式碼密碼(例如,加密及解密)演算法的微調輸入之至少一部分。因此,密碼結合可產生於密碼定址層與資料/程式碼加密及解密之間。此隱式地強制執行界限,此係由於偏離物件(例如,資料)之末尾的指標很可能將不正確標籤值用於彼鄰近物件。在一或多個實施例中,指標經編碼有至記憶體位置及元資料之線性位址(在本文中亦被稱作「記憶體位址」)。在一些指標編碼中,指標中之位址的截塊或片段包括多個位元,且基於秘密位址密鑰及基於元資料之微調來加密(及解密)。其他指標可用明文記憶體位址(例如,線性位址)及元資料編碼。
出於說明用於主動地阻止出界記憶體存取同時施行記憶體區之密碼隔離的若干實施例之目的,首先理解與資料保護及記憶體安全相關聯的操作及活動係重要的。因此,以下基礎資訊可被視為可由此恰當地解釋本揭露內容之基礎。
已知運算技術(例如,用於程序/內核分離之頁表、虛擬機管理器、管理運行時間等)已使用架構及元資料以提供資料保護及隔離。舉例而言,在先前解決方案中,CPU界限外部之記憶體控制器以較粗糙粒度(例如,應用程式)支援記憶體加密及解密,且經加密資料之隔離經由存取控制實現。通常,將密碼引擎置放於在CPU核心外部之記憶體控制器中。為了加密,資料以及哪些密鑰應用於加密之一些識別自核心行進至記憶體控制器。此識別經由實體位址中之位元來傳達。因此,提供額外密鑰或微調的任何偏差可導致費用增加(例如,對於新匯流排)或額外位元正自位址匯流排「被盜」,以允許用於密鑰或微調之額外索引或識別運用實體位址來攜載。存取控制可能需要使用元資料,且處理器將使用查找表以編碼關於用於所有權、記憶體大小、位置、類型、版本等之資料的策略或資料。動態地儲存及載入元資料需要額外儲存(記憶體開銷)且影響效能,特別是對於精細粒度元資料(諸如,對於功能即服務(FaaS)工作負荷或物件界限資訊)。
記憶體隔室(在本文中亦被稱作「記憶體區」)之密碼隔離解決許多前述問題(及更多)。密碼隔離可使程序分離、使用者空間及內核的舊版模式變得冗餘,並具有全新的精細粒度保護模型。藉由記憶體隔室之密碼隔離,保護係密碼的,其中各種類型之處理器單元(例如,處理器及加速器)都利用秘密密鑰(且任擇地,微調)及密碼來提供存取控制及粒度愈來愈精細之分離。實際上,對於整個虛擬機而言,可支援小至一個位元組物件至與資料及程式碼一樣大的記憶體隔室的隔離。在至少一些情境下,密碼隔離可導致個別應用程式或功能變成界限,從而允許每一位址空間含有多個不同的應用程式或功能。物件可經由指標跨越隔離界限選擇性地共用。此等指標可以密碼方式編碼或以非密碼方式編碼。此外,在一或多個實施例中,加密及解密發生在核心界限內的處理器核心內部。因為加密在資料寫入至核心外部的記憶體單元(諸如,L1快取記憶體或主記憶體)之前發生,所以沒有必要自實體位址「竊用」位元以輸送密鑰或微調資訊,且可支援任意大量密鑰及/或微調。
密碼隔離利用密碼定址層之概念,其中處理器基於隱式及/或顯式元資料(例如上下文資訊)及/或記憶體位址自身之截塊對軟體分配之記憶體位址(線性/虛擬位址空間內之位址,亦被稱作「指標」)的至少一部分加密(例如作為對可微調區塊密碼(例如,具有密文竊用之基於XOR-加密-XOR之經微調碼本模式(XTS))的微調)。如本文中所使用,除常見明文或密文輸入及密鑰之外,「微調」亦可指至區塊密碼之額外輸入等等。微調包含表示值之一或多個位元。在一或多個實施例中,微調可構成用於區塊密碼之初始化向量(IV)之全部或部分。所得以密碼方式編碼之指標可包含記憶體位址之經加密部分(或截塊)及經編碼元資料(例如上下文資訊)之一些位元。當執行位址之解密時,若用於創建微調(例如隱式及/或顯式元資料,記憶體位址之明文位址截塊等)之資訊對應於藉由記憶體分配器(例如軟體分配方法)之記憶體位址的原始分配,則處理器可正確地對該位址進行解密。否則,隨機位址結果將引起故障且由處理器捕獲。
此等以密碼方式編碼之指標(或其部分)可進一步由處理器用作用於對其指代之資料(由以密碼方式編碼之指標參照的資料)進行加密/解密之資料加密密碼之微調,從而創建密碼定址層與資料/程式碼加密之間的密碼結合。在一些實施例中,以密碼方式編碼之指標可經解密及解碼以獲得線性位址。線性位址(或其部分)可由處理器用作對資料加密密碼之微調。替代地,在一些實施例中,記憶體位址可不經加密,但該指標仍可編碼有表示指標當中的唯一值之一些元資料。在此實施例中,經編碼指標(或其部分)可由處理器用作對資料加密密碼之微調。應注意,用作至區塊密碼之輸入以對記憶體位址進行加密/解密之微調在本文中亦被稱作「位址微調」。類似地,用作至區塊密碼之輸入以對資料進行加密/解密之微調在本文中亦被稱作「資料微調」。
儘管以密碼方式編碼之指標(或未以密碼方式編碼之指標)可用於經由加密隔離資料,但資料之完整性仍可易受損壞。舉例而言,以密碼方式隔離之資料之未經授權存取可損壞不管資料是否加密來儲存資料之記憶體區,從而損壞受害者不知道的資料內容。可使用諸如訊息鑑別碼(MAC)之完整性驗證(或檢查)機制或隱式地基於經解密資料之熵測度或二者來支援資料完整性。在一個實例中,可每快取行儲存MAC編碼,且每當讀取快取行時評估該等MAC碼以判定該資料是否已損壞。然而,此類機制並不主動地偵測未經授權的記憶體存取。實情為,可以反應性方式(例如,在寫入資料之後)而非主動方式(例如,在寫入資料之前)偵測記憶體之損壞(例如,出界存取)。舉例而言,記憶體損壞可藉由在針對軟體實體出界之記憶體位置處執行的寫入操作發生。藉由密碼運算,寫入操作可使用對於記憶體位置無效的密鑰及/或微調。當在彼記憶體位置處執行後續讀取操作時,讀取操作可使用損壞的記憶體上之不同密鑰並偵測損壞。舉例而言,若讀取操作使用有效密鑰及/或微調,則所擷取資料將不恰當地解密,且損壞可例如使用訊息鑑別碼或藉由偵測經解密資料(隱式完整性)中之高熵位準(隨機性)來偵測。
轉向圖1,圖1為根據本揭露內容之至少一個實施例的實例運算裝置100之簡化的方塊圖,該運算裝置用於實施針對記憶體的出界存取的主動的阻止技術,同時使用安全的記憶體存取邏輯來施行記憶體區的密碼隔離。在所展示之實例中,運算裝置100包括處理器102,該處理器具有位址密碼單元104、密碼運算引擎108、安全記憶體存取邏輯106及記憶體組件,諸如快取記憶體170 (例如L1快取記憶體、L2快取記憶體)及補充處理器記憶體180。安全記憶體存取邏輯106包括:加密儲存邏輯150,其用以基於各種密鑰及/或微調對資料進行加密,且接著儲存加密資料;及解密載入邏輯160,其用以基於密鑰及/或微調讀取資料且接著對資料進行解密。密碼運算引擎108可經組配以基於各種密鑰及/或微調對用於載入操作之資料或程式碼進行解密且基於各種密鑰及/或微調對用於儲存操作之資料或程式碼進行加密。位址密碼單元104可經組配以對線性位址(或線性位址之一部分)進行解密及加密,該線性位址在指標中經編碼為由線性位址所參照的資料或程式碼。
處理器102亦包括暫存器110,其可包括例如通用暫存器及專用暫存器(例如控制暫存器、模型特定暫存器(MSR)等)。暫存器110可含有可用於一或多個實施例中之各種資料,諸如至記憶體位址之經編碼指標114。經編碼指標可以密碼方式經編碼或以非密碼方式經編碼。經編碼指標編碼有一些元資料。若經編碼指標以密碼方式經編碼,則位址位元之至少一部分(或截塊)經加密。在一些實施例中,用於位址、程式碼及/或資料之加密及解密的密鑰116可儲存在暫存器110中。在一些實施例中,用於位址、程式碼及/或資料之加密及解密的微調117可儲存在暫存器110中。
處理器密鑰105 (在本文中亦被稱作「硬體密鑰」)可用於各種加密、解密及/或散列操作且可經組配為處理器102之硬體中之安全密鑰。處理器密鑰105可例如儲存在熔絲中,儲存在唯讀記憶體中,或由實體不可仿製之功能產生,該實體不可仿製之功能產生一組一致的隨機化位元。通常,處理器密鑰105可在硬體中組配且對於處理器102已知,但對特權軟體(例如作業系統、虛擬機管理器(VMM)、韌體、系統軟體等)或無特權軟體並非已知的或以其他方式可用於該特權軟體或無特權軟體。
安全記憶體存取邏輯106利用關於經編碼指標114之元資料,其經編碼成經編碼指標114之未使用的位元(例如,64位元位址之非規範位元或位址之範圍例如由作業系統留出,使得位址範圍之對應的高階位元可用於儲存元資料),以便保護及/或提供對經編碼指標114所指向的記憶體位置之存取控制。舉例而言,由安全記憶體存取邏輯106提供之元資料編碼及解碼可防止經編碼指標114被操控以導致緩衝器溢流,及/或可防止程式碼存取其無權存取之記憶體。可當記憶體以多種不同方式中之任一者(包括藉由使用諸如malloc、alloc或new之函數;或隱式地經由載入器或藉由編譯器靜態地分配記憶體等)經分配(例如藉由作業系統,在堆中)且提供至執行程式時,對指標進行編碼。因而,指向經分配記憶體之經編碼指標114經編碼有位址元資料。
位址元資料可包括有效的範圍元資料。有效的範圍元資料允許執行程式在有效的範圍內操縱經編碼指標114之值,但若使用超出有效的範圍之經編碼指標114來存取記憶體,則將損壞經編碼指標114。替代地或另外,有效的範圍元資料可用於識別有效的程式碼範圍,例如,准許存取程式碼之記憶體範圍(例如,經編碼範圍資訊可用於在暫存器上設定顯式範圍)。可在位址元資料中經編碼之其他資訊包括對經編碼指標114之存取(或權限)限制(例如經編碼指標114是否可用於寫入、執行或讀取經參照記憶體)。
在至少一些其他實施例中,其他元資料(或上下文資訊)可經編碼在經編碼指標114之未使用的位元中,該等未使用的位元諸如明文位址截塊之大小(例如嵌入於經編碼指標中之記憶體位址之明文截塊中的若干位元)、記憶體分配大小(例如,由經編碼指標參照之經分配記憶體的位元組)、資料或程式碼之類型(例如由程式設計語言界定之資料或程式碼的類別)、權限(例如經編碼指標之讀取、寫入及執行權限)、資料或程式碼之位置(例如其中儲存有資料或程式碼)、其中儲存有指標自身之記憶體位置、資料或程式碼之所有權、經編碼指標之版本(例如每當針對最新分配的記憶體創建經編碼指標時遞增、及時判定經參照之經分配記憶體的當前所有權之序列號)、隨機化位元之標籤(例如,與經編碼指標相關聯地產生)、特權等級(例如使用者或監督員)、密碼上下文識別符(或密碼上下文ID) (例如,用於每一經編碼指標之隨機化或明確地唯一的值)等。舉例而言,在一個實施例中,位址元資料可包括大小元資料,其對經編碼指標中之明文位址截塊之大小進行編碼。大小元資料可規定可藉由執行程式修改之經編碼指標中的最低階位元之數目。大小元資料係取決於藉由程式請求之記憶體之量。因此,若請求16個位元組,則大小元資料經編碼為4 (或指標之五個上部位元中之00100),且指標之4個最低位元經表示為可修改位元以允許定址至記憶體之經請求的16個位元組。在一些實施例中,位址元資料可包括與經編碼指標相關聯之經隨機化位元的標籤,以使標籤對於對手不可預測。對手可嘗試猜測標籤值,使得對手能夠存取由指標參照之記憶體,且相較於用於產生版本值之確定性的方法,隨機化標籤值可使得對手將不大可能成功地猜測值。在一些實施例中,代替隨機化標籤值或除了隨機化標籤值之外,該指標亦可包括版本號碼(或其他明確地不同的值),其及時判定經參照之經分配資料的當前所有權。即使例如因為用於產生版本號碼之演算法係可預測的,所以對手能夠猜測用於記憶體之區的當前標籤值或版本號碼,但該對手由於無法存取將稍後用於對該指標之對應的經加密部分進行解密之密鑰,而可能仍不能正確地產生該指標之彼部分。
實例安全記憶體存取邏輯106經實施為處理器指令之部分(例如經實施為處理器指令集架構之部分),或微碼(例如儲存在唯讀記憶體中且由處理器102直接執行之指令)。在其他實施例中,安全記憶體存取邏輯106之部分可經實施為硬體、韌體、軟體或其一組合(例如經實施為由運算裝置100之特權系統組件142執行的程式碼)。在一個實例中,解密載入邏輯160及加密儲存邏輯150經實施為新的載入(讀取)及儲存(寫入)處理器指令之部分,該等指令執行各別解密及加密操作以隔離記憶體隔室。解密載入邏輯160及加密儲存邏輯150驗證關於利用新的處理器指令(例如其可為諸如MOV之現存處理器指令的對應物)之記憶體讀取及寫入操作的經編碼元資料,其中通用暫存器用作記憶體位址以自記憶體讀取值(例如載入)或將值寫入至記憶體(例如儲存)。
安全記憶體存取邏輯106可由運算裝置100執行以例如在藉由運算裝置100執行程式(諸如使用者空間應用程式134)期間為「內嵌」經編碼指標提供安全性。如本文中所使用,術語「間接位址」及「指標」可各自指代儲存其他資料或指令之記憶體位置的位址(例如虛擬位址或線性位址)等等。在一實例中,儲存記憶體位置之經編碼記憶體位址的暫存器可充當指標,在該記憶體位置中儲存資料或程式碼。由此,經編碼指標114可經實施為例如資料指標(其指代資料之位置)、程式碼指標(其指代可執行碼之位置)、指令指標或堆疊指標。如本文中所使用,「上下文資訊」包括「元資料」且可指代關於或有關經編碼指標114的資訊等等,該資訊諸如有效的資料範圍、有效的程式碼範圍、指標存取權限、明文位址截塊(例如經編碼為以位元為單位之冪)之大小、記憶體分配大小、資料或程式碼之類型、資料或程式碼之位置、資料或程式碼之所有權、指標之版本、經隨機化位元之標籤、版本、軟體之特權等級、密碼上下文識別符等。
如本文中所使用,「記憶體存取指令」可指代:「MOV」或「LOAD」指令;或任一其他指令,該任一其他指令使得在例如記憶體之一個儲存位置處讀取、複製或以其他方式存取資料且使得資料移動至例如暫存器之另一儲存位置中(其中「記憶體」可指代主記憶體或快取記憶體,例如,隨機存取記憶體之形式,且「暫存器」可指代例如硬體之處理器暫存器);或存取或操縱記憶體之任一指令,等等。亦如本文中所使用,「記憶體存取指令」可指代:「MOV」或「STORE」指令;或任一其他指令,其使得在例如暫存器之一個儲存位置處讀取、複製或以其他方式存取資料且使得資料移動至例如記憶體之另一儲存位置中;或存取或操縱記憶體之任一指令,等等。
位址加密單元104可包括邏輯(包括電路系統),以執行經編碼指標之位址解碼以獲得資料(或程式碼)之記憶體位置之線性位址。位址解碼可視需要(例如若經編碼指標包括線性位址之經加密部分)包括至少部分地基於密鑰及/或基於自經編碼指標導出之微調之解密。位址加密單元104亦可包括邏輯(包括電路系統),以至少部分地基於用於解碼經編碼指標之相同密鑰及/或相同微調來執行經編碼指標之位址編碼,包括視需要進行加密(例如經編碼指標包括線性位址之經加密部分)。位址編碼亦可包括將元資料儲存在指標之非典型位元中。諸如位址編碼及位址解碼之各種操作(包括位址或其部分之加密及解密)可藉由以下各者執行:與位址加密單元104相關聯之處理器指令、其他處理器指令,或單獨指令或一系列指令,或由諸如作業系統內核或虛擬機監測器或指令集模仿器之特權系統組件執行之高階程式碼。如下文更詳細地描述,位址編碼邏輯及位址解碼邏輯各自使用元資料(例如有效的範圍、權限元資料、大小(功率)、記憶體分配大小、類型、位置、所有權、版本、標籤值、特權等級(例如使用者或監督員)、密碼上下文ID等中之一或多者)及秘密密鑰(例如密鑰116)對經編碼指標114進行操作,以便在記憶體分配/存取位準下保護經編碼指標114。
加密儲存邏輯150及解密載入邏輯160可使用密碼運算引擎108以對待儲存在由經編碼指標114參照之記憶體位置處或自由經編碼指標114參照之記憶體位置處獲得之資料執行密碼操作。密碼運算引擎108可包括邏輯(包括電路系統),以至少部分地基於自至資料(或程式碼)之記憶體位置之經編碼指標導出的微調來執行資料(或程式碼)解密,且至少部分地基於自至用於資料(或程式碼)之記憶體位置之經編碼指標導出的微調來執行資料(或程式碼)加密。引擎108之密碼操作可使用微調,其包括經編碼指標114 (或自經編碼指標產生之線性位址)之至少一部分及/或秘密密鑰(例如密鑰116)以便藉由將資料/程式碼加密及解密與經編碼指標結合而保護由經編碼指標114參照之記憶體位置處的資料或程式碼。
各種不同的密碼演算法可用於實施位址密碼單元104及密碼運算引擎108。通常,在使用128位元之區塊密碼之情況下,進階加密標準(AES)數十年來一直為資料加密之支柱。同時,記憶體定址現今通常為64位元。儘管可參考用於64台電腦之64位元的記憶體定址來說明且解釋本文中之實施例,但經揭露實施例並不意欲如此受限,且可容易地適於容納用於指標之32位元、128位元或任一其他可獲得位元大小。同樣地,本文中之實施例可進一步適於容納區塊密碼之各種大小(例如64位元、48位元、32位元、16位元等,其使用Simon、Speck、可微調K密碼、PRINCE或任一其他區塊密碼)。
最近亦出現了適於基於指標之加密的輕量密碼。舉例而言,PRINCE密碼可在10 nm程序中實施於需要少至799 μm 2面積的3個時脈中,從而在十分之一的矽面積中提供AES的一半潛時。密碼隔離可利用此等新的密碼以及其他密碼,從而引入新穎的電腦架構概念,其包括但不限於:(i)密碼定址,例如,處理器處之資料指標的加密,其使用關於經參照資料(例如嵌入於指標中之元資料及/或外部元資料)之上下文資訊、位址自身之截塊或其任何合適組合作為微調;及(ii)核心處之資料自身之加密,其使用以密碼方式經編碼之指標或其部分、以非密碼方式經編碼之指標或其部分、關於經參照資料之內容資訊或其任何合適組合作為用於資料加密之微調。可出於包括元資料(例如計數器模式(CTR)及具有密文竊用的基於XOR-加密-XOR (XEX)之經微調碼本模式(XTS))之此目的而使用可微調的多種加密模式。除了提供資料機密性之加密之外,其隱式完整性可允許處理器判定是否使用正確的密鑰流及微調來對資料進行恰當地解密。在一些區塊密碼加密模式中,區塊密碼創建密鑰流,其接著(例如使用XOR運算或其他更複雜邏輯)與輸入區塊組合以產生經加密或經解密區塊。在一些區塊密碼中,密鑰流經饋送至下一個區塊密碼中以執行加密或解密。
圖1中之實例經編碼指標114經實施為暫存器110 (例如處理器102之通用暫存器)。實例秘密密鑰116可由特權系統組件142之密鑰創建模組148產生,且儲存在暫存器110 (例如,專用暫存器或諸如模型特定暫存器(MSR)之控制暫存器)、可由處理器102讀取之另一記憶體位置(例如韌體、資料儲存裝置126之安全部分等)、外部記憶體或適於執行本文中所描述之功能的另一形式的記憶體中之一者中。在一些實施例中,可針對加密或解密實時地運算用於對位址、資料或程式碼進行加密之微調。微調117可儲存在暫存器110、可由處理器102讀取之另一記憶體位置(例如韌體、資料儲存裝置126之安全部分等)、外部記憶體或適於執行本文中所描述之功能的另一形式之記憶體中。在一些實施例中,秘密密鑰116及/或微調117儲存在可僅由處理器讀取之位置(諸如補充處理器記憶體180)中。在至少一個實施例中,補充處理器記憶體180可實施為新的快取記憶體或內容可定址記憶體(CAM)。在一或多個實施中,補充處理器記憶體180可用於儲存與密碼隔離相關的資訊,諸如密鑰及可能的微調、憑證及/或上下文ID。
秘密密鑰亦可產生且與以密碼方式經編碼之指標相關聯,以用於對在該指標中編碼之位址部分(或截塊)進行加密/解密。此等密鑰可與同指標相關聯之密鑰相同或不同,以對由以密碼方式經編碼之指標參照的資料(或程式碼)執行資料(或程式碼)加密/解密。為易於解釋,術語「秘密位址密鑰」或「位址密鑰」可用於指代用於記憶體位址之加密及解密操作中之秘密密鑰,且術語「秘密資料密鑰」或「資料密鑰」可用於指代秘密密鑰,該秘密密鑰用於操作中以對資料或程式碼進行加密及解密。
在記憶體分配操作(例如「malloc」)時(或期間),記憶體分配邏輯146為緩衝器分配記憶體之範圍,返回指標連同元資料(例如,範圍、權限元資料、大小(功率)、記憶體分配大小、類型、位置、所有權、版本、標籤、特權等級、密碼上下文ID等中之一或多者)。在一個實例中,記憶體分配邏輯146可在經編碼指標114中(例如在加密之前在未使用的/非規範位元中)編碼明文範圍資訊,或將元資料作為一或多個單獨參數供應至指令,其中參數規定範圍、程式碼權限資訊、大小(功率)、記憶體分配大小、類型、位置、所有權、版本、標籤、特權等級(例如使用者或監督員)、密碼上下文ID或其某一合適的組合。說明性地,記憶體分配邏輯146可經實施於特權系統組件142之記憶體管理器模組144中。記憶體分配邏輯146使得指標114編碼有元資料(例如範圍、權限元資料、大小(功率)、記憶體分配大小、類型、位置、所有權、版本、標籤值、特權等級、密碼上下文ID、其某一合適組合等)。元資料可儲存在經編碼指標114之未使用的部分(例如64位元位址之非規範位元)中。對於一些元資料或元資料之組合,指標114可經編碼在較大位址空間(例如128位元位址、256位元位址)中以適應元資料之大小或元資料之組合。
為了判定有效的範圍元資料,實例範圍規則邏輯選擇有效的範圍元資料以指示由經編碼指標114參照之緩衝器之大小的上限。位址調節邏輯視需要調節有效的範圍元資料,使得位址範圍中之位址的上部位址位元(例如最高有效位元)不會改變,只要經編碼指標114指代由範圍元資料指示之有效的範圍內之記憶體位置即可。此使得能夠操控經編碼指標114 (例如藉由執行算術運算之軟體等),但只要操控不會使得經編碼指標114超出有效的範圍(例如使緩衝器溢位)即可。
在一實施例中,有效的範圍元資料用於選擇待加密之經編碼指標114的一部分(或截塊)。在其他實施例中,待加密之經編碼指標114之截塊可先驗地已知(例如上部32個位元、下部32個位元等)。經編碼指標114之選定截塊(在一些實施例中,以及調節)係使用秘密位址密鑰(例如密鑰116)且任擇地使用位址微調來加密,如下文進一步描述。在記憶體存取操作(例如讀取、寫入或執行操作)時,解碼先前編碼之指標114。為此,經編碼指標114之經加密截塊(且在一些實施例中,經加密調節)係使用秘密位址密鑰(例如密鑰116)及位址微調(若位址微調用於加密中)來解密,如下文進一步描述。
經編碼指標114基於適當操作恢復至其原始(例如規範的)形式,以便恢復經編碼指標114之原始值(例如真正的原始線性記憶體位址)。為此,在至少一個可能的實施例中,在經編碼指標114之未使用的位元中編碼之位址元資料經移除(例如,將未使用的位元恢復至其原始形式)。若經編碼指標114成功地解碼,則記憶體存取操作會成功地完成。然而,若經編碼指標114已經操控(例如由軟體、無意或由攻擊者)使得其值落在由範圍元資料指示之有效的範圍之外(例如使緩衝器溢位),則經編碼指標114可由於對該指標中之經加密位址位元執行的解密程序而經損壞。經損壞指標將引發故障(例如若該位址未自分頁結構/頁表經映射為存在,則為一般保護故障或頁面錯誤)。可導致產生故障之一個條件為稀疏位址空間。在此情境下,經損壞位址有可能會落在未經映射之頁面上且產生頁面錯誤。即使經損壞位址落在經映射頁面上,但用於彼記憶體區之經授權微調或初始化向量很有可能不同於可在此狀況下作為微調或初始化向量供應之經損壞位址。以此方式,運算裝置100針對緩衝器溢位攻擊及類似利用提供經編碼指標安全性。
現在較詳細地參考圖1,運算裝置100可經實施為用於執行本文中所描述之功能的任何類型的電子裝置。舉例而言,運算裝置100可經實施為(但不限於)智慧型手機、平板電腦、可佩戴式運算裝置、膝上型電腦、筆記型電腦、行動運算裝置、蜂巢式電話、手機、傳訊裝置、載具遠程資訊處理裝置、伺服器電腦、工作站、分散式運算系統、多處理器系統、消費型電子裝置及/或經組配以執行本文中所描述之功能的任何其他運算裝置。如圖1中所展示,實例運算裝置100包括至少一個處理器102,其運用安全記憶體存取邏輯106、位址密碼單元104及密碼運算引擎108來實施。
運算裝置100亦包括記憶體120、輸入/輸出子系統124、資料儲存裝置126、顯示裝置128、使用者介面(UI)子系統130、通訊子系統132、應用程式134及特權系統組件142 (其說明性地包括記憶體管理器模組144及密鑰創建模組148)。在其他實施例中,運算裝置100可包括其他或額外組件,諸如通常發現於行動及/或固定電腦中之彼等組件(例如,各種感測器及輸入/輸出裝置)。另外,在一些實施例中,實例組件中之一或多者可併入於另一組件中或以其他方式形成另一組件的一部分。運算裝置100之組件中之每一者可實施為軟體、韌體、硬體或軟體及硬體之組合。
處理器102可實施為能夠執行本文中所描述之功能的任何類型之處理器。舉例而言,處理器102可實施為單核或多核中央處理單元(CPU)、多CPU處理器或處理/控制電路,或多個不同處理單元或電路(例如CPU及圖形處理單元(GPU)等)。
處理器記憶體可提供在核心內部及核心界限外部。舉例而言,暫存器110可包括在核心內且可用於儲存用於資料或程式碼及位址的加密及解密之經編碼指標(例如114)、秘密密鑰116及可能的微調117。處理器102亦可包括快取記憶體170,其可為例如L1及/或L2快取記憶體,資料在自記憶體120擷取以預期由處理器102提取時儲存在該快取記憶體中。
該處理器亦可包括在核心界限外部的補充處理器記憶體180。補充處理器記憶體180可為不可直接由軟體存取之專用快取記憶體。在一或多個實施例中,補充處理器記憶體180可儲存在參數與其相關聯的記憶體區之間的映射188。舉例而言,密鑰可經映射至其在映射188中之對應的記憶體區。在一些實施例中,與密鑰配對之微調亦可儲存在映射188中。在其他實施例中,映射188可由軟體管理。
在一或多個實施例中,用於保護密碼運算中之密鑰的硬體可信實體190及密鑰管理硬體192可經組配在運算裝置100中。硬體可信實體190及密鑰管理硬體192在邏輯上可為單獨實體或經組合為一個邏輯及物理實體。此實體經組配以提供呈已加密密鑰或唯一密鑰識別符之形式的程式碼及資料密鑰,程式碼、資料或指標密鑰可自已加密密鑰解密或程式碼、資料或指標密鑰可自該唯一密鑰識別符導出。硬體可信實體190及密鑰管理硬體192可實施為電路系統、韌體、軟體或其任何合適組合。在至少一些實施例中,硬體可信實體及/或密鑰管理硬體190可形成處理器102之一部分。在至少一些實施例中,硬體可信實體及/或密鑰管理硬體190可經實施為在特權狀態中執行之可信韌體組件。硬體可信實體之實例可包括但未必限於Intel®信任域擴展等之安全仲裁模式(SEAM)、Intel®融合安全管理引擎(CSME)、嵌入式安全處理器、其他可信韌體等。
通常,可基於特定需求及架構實施以任何合適方式處置密鑰及微調。在第一實施例中,密鑰及微調二者均可為隱式的,且因此由處理器管理。在此實施例中,密鑰及微調可在內部由處理器產生或在外部由安全處理器產生。在第二實施例中,密鑰及微調二者均可為顯式的,且因此由軟體管理。在此實施例中,使用包括參照密鑰及微調之運算元的指令在指令調用時間參照密鑰及微調。在此實施例中,密鑰及微調可儲存在暫存器或記憶體中。在第三實施例中,密鑰可由處理器管理,而微調可由軟體管理。
運算裝置100之記憶體120可實施為能夠執行本文中所描述之功能的任何類型之依電性或非依電性記憶體或資料儲存器。依電性記憶體可為需要功率以維持由媒體儲存之資料之狀態的儲存媒體。依電性記憶體之實例可包括各種類型的隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)或靜態隨機存取記憶體(SRAM)。可用於記憶體中之一種特定類型的DRAM為同步動態隨機存取記憶體(SDRAM)。在特定實施例中,記憶體120之DRAM符合電子裝置工程聯合委員會(JEDEC)之標準,諸如用於雙資料速率(DDR) SDRAM之JESD79F、用於DDR2 SDRAM之JESD79-2F、用於DDR3 SDRAM之JESD79-3F或用於DDR4 SDRAM之JESD79-4A (此等標準可在www.jedec.org處獲取)。非依電性記憶體為不需要功率以維持由媒體儲存之資料之狀態的儲存媒體。非依電性記憶體之非限制性實例可包括以下各者中之任一者或組合:固態記憶體(諸如平坦或3D NAND快閃記憶體或NOR快閃記憶體)、3D交叉點記憶體、使用硫族化物相變材料(例如硫族化物玻璃)之記憶體裝置、位元組可定址非依電性記憶體裝置、鐵電記憶體、矽氧化氮氧化矽(SONOS)記憶體、聚合物記憶體(例如鐵電聚合物記憶體)、鐵電電晶體隨機存取記憶體(Fe-TRAM)雙向記憶體、奈米線記憶體、電可擦除可規劃唯讀記憶體(EEPROM)、其他各種類型的非揮發性隨機存取記憶體(RAM),及磁性儲存記憶體。
在一些實施例中,記憶體120包含一或多個記憶體模組,諸如雙行記憶體模組(DIMM)。在一些實施例中,記憶體120可位於一或多個積體電路晶片上或可位於與處理器102相同之積體電路晶片上,該一或多個積體電路晶片不同於包含處理器102之積體電路晶片。在各種實施例中,記憶體120可包含任何合適類型之記憶體且不限於特定速度或技術的記憶體。
在操作中,記憶體120可儲存在運算裝置100以及作業系統、應用程式、程式、程式庫及驅動器之操作期間使用的各種資料及程式碼。記憶體120可儲存資料及/或程式碼,其包括由處理器102執行的指令序列。
記憶體120例如經由I/O子系統124以通訊方式耦接至處理器102。I/O子系統124可經實施為電路系統及/或組件以促進與處理器102、記憶體120及運算裝置100之其他組件的輸入/輸出操作。舉例而言,I/O子系統124可實施為或另外包括記憶體控制器集線器、輸入/輸出控制集線器、韌體裝置、通訊鏈路(例如點對點鏈路、匯流排鏈路、導線、電纜、光導、印刷電路板跡線等)及/或其他組件及子系統以促進輸入/輸出操作。在一些實施例中,I/O子系統124可形成系統單晶片(SoC)的一部分,且連同處理器102、記憶體120及/或運算裝置100之其他組件被併入於單一積體電路晶片上。
資料儲存裝置126可經實施為經組配以用於諸如資料之短期或長期儲存的任何類型的實體裝置、記憶體裝置及電路、記憶卡、硬碟機、固體狀態驅動機、快閃記憶體或其他唯讀記憶體、為唯讀記憶體與隨機存取記憶體之組合的記憶體裝置,或其他資料儲存裝置。在各種實施例中,記憶體120可快取儲存於資料儲存裝置126上的資料。
顯示裝置128可經實施為能夠顯示數位資訊的任何類型之顯示器,諸如液晶顯示器(LCD)、發光二極體(LED)、電漿顯示器、陰極射線管(CRT)或其他類型之顯示裝置。在一些實施例中,顯示裝置128可耦接至觸控式螢幕或其他人機介面裝置以允許使用者與運算裝置100的交互。顯示裝置128可為使用者介面(UI)子系統130之部分。使用者介面子系統130可包括用以促進使用者與運算裝置100之交互的數個額外裝置,包括實體或虛擬控制按鈕或按鍵、麥克風、揚聲器、單向或雙向靜態及/或視訊攝影機及/或其他裝置。使用者介面子系統130亦可包括諸如運動感測器、近接感測器及眼追蹤裝置之裝置,該等裝置可經組配以偵測、捕獲及處理各種其他形式的涉及運算裝置100之人為交互。
運算裝置100進一步包括通訊子系統132,其可經實施為能夠實現運算裝置100與其他電子裝置之間的通訊的任何通訊電路、裝置或其集合。通訊子系統132可經組配以使用任何一或多種通訊技術(例如,無線或有線通訊)及相關聯協定(例如,乙太網路、Bluetooth TM、Wi-Fi TM、WiMAX、3G/LTE等)來實現此通訊。通訊子系統132可經實施為網路配接器,包括無線網路配接器。
實例運算裝置100亦包括多個電腦程式組件,諸如一或多個使用者空間應用程式(例如應用程式134)及特權系統組件142。使用者空間應用程式可經實施為任一電腦應用程式(例如軟體、韌體、硬體或其一組合),其經由例如顯示裝置128或UI子系統130與終端使用者直接地或間接地交互。使用者空間應用程式之一些實例包括文字處理程式、文件觀察器/讀取器、網頁瀏覽器、電子郵件程式、傳訊服務、電腦遊戲,攝影機及視訊應用程式等。其中,特權系統組件142促進使用者空間應用程式(例如應用程式134)與運算裝置100之硬體組件之間的通訊。特權系統組件142之部分可經實施為能夠執行本文中所描述之功能的任一作業系統,諸如微軟公司之WINDOWS的版本、谷歌公司之ANDROID及/或其他版本。替代地或另外,特權系統組件142之一部分可經實施為能夠執行本文中所描述的功能之任何類型的虛擬機監測器(例如I型或II型超管理器)。
實例特權系統組件142包括密鑰創建模組148,其可經實施為軟體、韌體、硬體或軟體與硬體之組合。舉例而言,密鑰創建模組148可經實施為作業系統內核、虛擬機監測器或超管理器之模組。密鑰創建模組148創建秘密密鑰116 (例如秘密位址密鑰及秘密資料密鑰)且可將其寫入至處理器102可存取之暫存器(例如專用暫存器)。為了創建秘密密鑰,密鑰創建模組148可執行例如亂數產生器或另一演算法,其能夠產生可執行本文中所描述之功能的秘密密鑰。在其他實施中,秘密密鑰可經寫入至不可直接由軟體存取之補充處理器記憶體180。在又其他實施中,秘密密鑰可經加密且儲存在記憶體120中。在一或多個實施例中,當針對分配至特定軟體實體之記憶體區產生資料密鑰時,資料密鑰可經加密,且該軟體實體可具備經加密資料密鑰、至經加密資料密鑰之指標或包括經加密密鑰或至經加密資料密鑰之指標的資料結構。在其他實施中,軟體實體可具備儲存在處理器記憶體中的至未加密的資料密鑰之指標或包括至未加密的資料密鑰之指標的資料結構。通常,用於產生、儲存且提供待用於對資料(或程式碼)進行加密及解密且待用於對經編碼在指標中之記憶體位址(或其部分)進行加密及解密的安全密鑰之任何合適的機構可用於本文中所描述的實施例中。
應注意,多種方法可用於產生或獲得用於本文中所揭露之實施例的密鑰。舉例而言,儘管密鑰創建模組148經展示為運算裝置100之一部分,但可使用任何合適的鑑別程序自任何合適的外部來源獲得一或多個秘密密鑰,以安全地將密鑰傳達至運算裝置100,其可包括產生密鑰作為彼等程序之部分。此外,特權系統組件142可為可信執行環境(TEE)、虛擬機、處理器102、共處理器或運算裝置100中之任一其他合適硬體、韌體或軟體之部分,或可安全地連接至運算裝置100。此外,該密鑰可為「秘密」的,此意欲意謂其值保持隱藏、不可存取的、模糊或以其他方式對於未經授權的行動者係安全的(例如軟體、韌體、機器、無關的硬體組件及人類)。
圖2A為基於經編碼指標210之實施例說明密碼運算的一般程序200A之簡化流程圖。程序200A說明在由經編碼指標210指示之記憶體位址處將資料儲存(例如寫入)至記憶體區,其中資料之加密及解密根據至少一個實施例綁定至指標之內容。程序200A之至少一些部分可由運算裝置100之硬體、韌體及/或軟體執行。在所展示之實例中,指標210為經編碼指標114之實例,且經實施為包括元資料部分之經編碼線性位址。元資料部分為某一類型的上下文資訊(例如大小/功率元資料、標籤、版本等),且線性位址可以任何數目的可能組配來編碼,本文中描述該等可能組配中之至少一些。
經編碼指標210可具有根據各種實施例之各種組配。舉例而言,經編碼指標210可編碼有明文線性位址或可編碼有一些明文線性位址位元及一些經加密線性位址位元。取決於特定實施例,經編碼指標210亦可編碼有不同元資料。舉例而言,經編碼在經編碼指標210中之元資料可包括但不必限於大小/功率元資料、標籤值或版本號碼中之一或多者。
通常,程序200A說明密碼運算流程,其中經編碼指標210用於獲得用於儲存資料之記憶體220之記憶體區的記憶體位址且至少部分地基於自經編碼指標210導出的微調對待儲存之資料進行加密。首先,位址密碼單元202解碼經編碼指標210以獲得經解碼線性位址212。經解碼線性位址212可用於使用轉譯後備緩衝器204或頁表(圖中未示)獲得記憶體220中之實體位址214。至少部分地自經編碼指標210導出資料微調217。舉例而言,資料微調217可包括整個經編碼指標、經編碼指標之一或多個部分、經解碼線性位址之一部分、整個經解碼線性位址、經編碼元資料,及/或外部上下文資訊(例如不在指標中編碼之上下文資訊)。
一旦已經自經編碼指標210導出微調217,則密碼運算引擎270可藉由基於資料密鑰216及資料微調217對未經加密資料222加密來對經加密資料224進行運算。在至少一個實施例中,密碼運算引擎270包括諸如密鑰流產生器之加密演算法,其可以特定大小粒度(任何合適的大小)經實施為AES-CTR模式區塊密碼272。在此實施例中,資料微調217可用作初始化向量(IV),且經編碼指標210之明文偏移可用作計數器值(CTR)。密鑰流產生器可對資料微調217進行加密以產生密鑰流276,且接著可對未經加密資料222及密鑰流276執行密碼操作(例如諸如互斥或(XOR)之邏輯功能274,或其他更複雜的操作),以便產生經加密資料224。應注意,當自經編碼指標210獲得實體位址214時,可開始產生密鑰流276。因此,並行操作可增加對未經加密資料進行加密之效率。應注意,可在儲存至記憶體220之前或在一些情況下代替儲存至記憶體220,將經加密資料儲存至快取記憶體(例如170)。
圖2B為基於經編碼指標210之實施例說明密碼運算的一般程序200B之簡化流程圖。程序200B說明在由經編碼指標210參照之記憶體位址處獲得(例如讀取、載入、提取)儲存在記憶體區中之資料,其中根據至少一個實施例,資料之加密及解密綁定至指標之內容。程序200B之至少一些部分可由運算裝置100之硬體、韌體及/或軟體執行。
通常,程序200B說明密碼運算流程,其中經編碼指標210用於獲得用於儲存經加密資料之記憶體220之記憶體區的記憶體位址,且一旦自記憶體區提取經加密資料,則至少部分地基於自經編碼指標210導出之微調對經加密資料進行解密。首先,位址密碼單元202解碼經編碼指標210以獲得經解碼線性位址212,其用於自記憶體提取經加密資料224,如在232處所指示。至少部分地自經編碼指標210導出資料微調217。在用於自記憶體載入/讀取資料之此程序200B中,資料微調217係以與用於將資料儲存/寫入至記憶體之相反程序200A相同之方式導出。
一旦已經自經編碼指標210導出微調217,則密碼運算引擎270可藉由基於資料密鑰216及資料微調217對經加密資料224解密來對經解密(或未經加密)資料222進行運算。如先前所描述,在此實例中,密碼運算引擎270包括諸如密鑰流產生器之加密演算法,其以特定大小粒度(任何合適的大小)實施為AES-CTR模式區塊密碼272。在此實施例中,資料微調217可用作初始化向量(IV),且經編碼指標210之明文偏移可用作計數器值(CTR)。密鑰流產生器可對資料微調217進行加密以產生密鑰流276,且接著可對經加密資料224及密鑰流276執行密碼操作(例如諸如互斥或(XOR)之邏輯功能274,或其他更複雜的操作),以便產生經解密(或未經加密)資料222。應注意,可當在232處提取經加密資料時開始產生密鑰流。因此,並行操作可增加對經加密資料進行解密之效率。
增強型密碼位址
圖3描繪根據本揭露內容之至少一個實施例之利用增強型密碼定址的分散式運算網路300。分散式運算網路300可向分佈於橫跨網路300的層分佈之一或多個用戶端運算節點302、一或多個邊緣閘道節點312、一或多個邊緣聚合節點322、一或多個核心資料中心332及全球網路雲342當中的各種實體提供邊緣服務及應用程式。分散式運算網路300之實施可由電信服務提供商(「telco」或「TSP」)、物聯網服務提供商、雲端服務提供者(CSP)、企業實體或任何其他數目個實體提供或代表以上各者提供。圖3出於說明的目的提供在邊緣運算環境當中部署之分散式運算之層的抽象概述。
分散式運算網路300之每一節點或裝置位於對應於層310、320、330、340及350之特定層處。舉例而言,用戶端運算節點302各自位於端點層310處,而邊緣閘道節點312中之每一者位於網路之邊緣裝置層320 (本端層級)處。另外,邊緣聚合節點322中之每一者(及/或霧裝置324,若用霧聯網組配326或在該霧聯網組配當中配置或操作)位於網路存取層330 (中間層級)處。霧運算(或「霧化」)通常係指通常在經協調之分佈式或多節點網路中雲運算至企業網路之邊緣的擴展。一些形式的霧運算代表雲運算位置在終端裝置與雲運算資料中心之間提供運算、儲存及網路連接服務之部署。
核心資料中心332位於核心網路層340 (例如區域或地理中央層級)處,而全球網路雲342位於雲端資料中心層350 (例如國家或全球層)處。「核心」之使用係作為集中式網路位置之術語來提供,該集中式網路位置處於網路中較深處,可由多個邊緣節點或組件存取;然而,「核心」未必指代網路之「中心」或最深位置。因此,核心資料中心332可位於邊緣雲334內、處或附近。
儘管圖3中展示用戶端運算節點302、邊緣閘道節點312、邊緣聚合節點322、核心資料中心332、全球網路雲342之說明性數目,但應瞭解,運算網路300可在每一層(或該等層之子集)處包括較多或較少裝置或系統。另外,如圖3中所展示,每一層310、320、330、340、350之組件之數目通常在每一較低層級處增加(當較接近於端點移動時)。由此,一個邊緣閘道節點312可服務於多個用戶端運算節點302,且一個邊緣聚合節點322可服務於多個邊緣閘道節點312。
根據本文中所提供之實例,每一用戶端運算節點302可經實施為能夠作為資料之生產者或消費者通訊的任何類型的端點組件、裝置、設備或「事物」。此外,如網路300中使用之標記「節點」或「裝置」未必意謂此類節點或裝置以用戶端或代理/從屬/跟隨器角色來操作;確切而言,網路300中之節點或裝置中之任一者指代個別實體、節點或子系統,其包括離散或經連接硬體或軟體組配以促進或使用邊緣雲334。
由此,邊緣雲334係由網路元件及功能特徵形成,該等網路元件及功能特徵分別由層320、330之邊緣閘道節點312及邊緣聚合節點322操作及在該等節點內操作。邊緣雲334可經實施為任何類型的網路,其提供位於支援無線電存取網路(RAN)之端點裝置(例如,行動運算裝置、IoT裝置、智慧型裝置等)附近的邊緣運算及/或儲存資源,該等支援無線電存取網路之端點裝置在圖3中經展示為用戶端運算節點302。換言之,邊緣雲334可經設想為連接端點裝置與充當服務提供商核心網路之進入點的傳統行動網路存取點之「邊緣」,同時亦提供儲存及/或運算能力,該服務提供商核心網路包括載波網路(例如全球行動通訊系統(GSM)網路、長期演進(LTE)網路、5G網路等)。其他類型及形式之網路存取(例如Wi-Fi、長程無線網路)亦可用於代替此類3GPP載波網路或可結合此類3GPP載波網路使用。
在一些實例中,邊緣雲334可形成霧聯網組配326 (例如霧裝置324之網路,未詳細展示)之一部分或以其他方式提供霧聯網組配326之進入點或提供橫跨該霧聯網組配之進入點,該霧聯網組配可經實施為系統層級之水平及分佈式架構,其分配資源及服務以執行特定功能。舉例而言,霧裝置324之經協調及分佈式網路可在IoT系統配置之上下文中執行運算、儲存、控制或網路連接態樣。其他網路連接的、經聚集且分佈式功能可存在於雲端資料中心層350與用戶端端點(例如用戶端運算節點302)之間的邊緣雲334中。
邊緣閘道節點312及邊緣聚合節點322協作以向用戶端運算節點302提供各種邊緣服務及安全性。此外,因為每一用戶端運算節點302可為固定的或行動的,所以每一邊緣閘道節點312可與其他邊緣閘道器裝置協作以在對應的用戶端運算節點302圍繞一區移動時傳播目前提供的邊緣服務及安全性。為此,邊緣閘道節點312及/或邊緣聚合節點322中之每一者可支援多個租賃及多個利益相關者組配,其中可橫跨單個或多個運算裝置來支援且協調來自(或託管給)多個服務提供商及多個消費者之服務。
網路300 (或其他網路)之節點可由實體機器實施。舉例而言,實體機器可對應於網路之節點,諸如用戶端運算節點302、邊緣閘道節點312、邊緣聚合節點322、核心資料中心332之節點或全球網路雲342之節點。在其他實施例中,實體機器可實施網路300之多個節點,或網路300之單個節點可由多個實體機器實施。
在各種實施例中,橫跨網路(諸如300)之實體機器分佈的物件(例如資料或程式碼)可由任一授權主機藉由識別物件之增強型密碼位址來存取。在各種實施例中,增強型密碼位址可用於唯一地識別任何合適的位址空間內之物件,其中位址空間可包括共同地由網路連接在一起(自小網路直至整個網際網路之大小)之實體機器的任何合適的群組使用之物件位址。具有位址空間之網路連接之實體機器的集合在本文中可被稱作分散式運算域,該位址空間利用用於位址空間之物件的增強型密碼位址。在一些實施例中,每一物件在相關位址空間內具有唯一的增強型密碼位址。
圖4描繪用於參照由實體機器400儲存之物件406及408的增強型密碼位址410及416。實體機器400包括處理器單元402,其運行含有資料物件406及程式碼物件408之主機404。實體機器400亦包括頁表420以將增強型密碼位址410及416轉譯為各別實體位址。
在一些實施例中,處理器單元可包含任何合適的邏輯以執行一或多個主機。處理器單元可藉由提供(單獨或與其他邏輯組合)由主機需要之功能性來運行主機。處理器單元(其在本文中亦可被稱作處理器)之實例包括但不限於中央處理單元、處理器核心、圖形處理單元、硬體加速器、現場可規劃閘陣列、神經網路處理單元、人工智慧處理單元、推理機、資料處理單元、基礎設施處理單元、網路介面控制器、I/O裝置(例如周邊裝置)之控制器、記憶體或儲存裝置等等。圖43包括不同類型的處理器單元之實例。本文中之其他圖描述各種其他組件(例如處理器、I/O裝置等),其可充當處理器單元。
網路主機(例如404)可包含邏輯實體,其可由分散式運算域內之唯一位址來識別。在一些實施例中,該主機可包含使用IP位址定址之網際網路協定(IP)主機。在一些實施例中,主機(例如404)可充當用戶端及/或伺服器,其中用戶端主機可自一或多個其他主機請求資源(例如物件或程式碼的遠端執行),且伺服器主機可將資源提供至一或多個其他主機。
單個實體機器400可包括一或多種類型之一或多個處理器單元。一些主機可僅支援單個類型的處理器單元(例如該主機可需要x86 CPU以便恰當地運行),而其他主機可支援多種類型的處理器單元(例如,該主機可在NIC或硬體加速器上運行)。在一些實施例中,單個處理器單元可同時運行多個主機。在各種實施中,單個主機可在多個處理器單元上運行。
主機404含有物件(資料物件406及程式碼物件408)。物件可包括任何合適的經儲存資訊。資料物件(例如406)可表示值(例如,布林、字串、常數、整數、浮點數)、一組值(例如陣列、堆、鏈接串列、堆疊、佇列、散列表、樹、或其他一組值),或其他資訊(例如包括各種類型的值或其他資料之結構)。程式碼物件(例如408)可包含可執行碼,其包括一或多個指令。
含有物件之主機可用來在來自另一主機之請求之後提供彼物件。主機可以任何適合方式與其含有之物件相關聯。舉例而言,物件可儲存於處理器單元之記憶體內,該處理器單元正運行含有該物件之主機。作為另一實例,該物件可儲存於耦接至處理器單元之記憶體內,該處理器單元運行含有該物件之主機。在一些實例中,該主機可管理該物件(例如可控制對該物件之存取,可管理由分散式運算域中之其他主機發起的對該物件之更新,或可另外管理該物件)。
由實體機器(且由分散式運算域之其他實體機器)儲存之每一物件可由增強型密碼位址識別,該增強型密碼位址唯一地識別分散式運算域內之物件。舉例而言,增強型密碼位址410可識別(且用於存取)資料物件406,且增強型密碼位址416可識別程式碼物件408。
增強型密碼位址包括主機ID及物件ID。增強型密碼位址之主機ID唯一地識別含有對應的物件之主機(在分散式運算域內或在諸如包括分散式運算域之網際網路的較大域內)。因此,在所描繪實施例中,主機ID 412 (其用於增強型密碼位址410及增強型密碼位址416二者中)識別主機404。
物件ID唯一地識別經識別主機內之物件。在所描繪實施例中,位址410之物件ID 414識別物件406,且位址416之物件ID 418識別物件408。
增強型密碼位址(及其各別主機ID以及物件ID)可具有任何合適的大小。在一個實施例中,增強型密碼位址長達128位元,其中其主機ID長達64位元且其物件ID長達64位元。在此實施例中,增強型密碼位址之長度與IPv6位址之長度以及廣泛使用之密碼演算法(例如AES128)之區塊長度匹配。此實施例可促進路由增強型密碼位址以及將位址用作密碼密鑰,如將在下文更詳細地描述。在另一實施例中,增強型密碼位址長達64位元,其中其主機ID長達32位元且其物件ID長達32位元。在另一實施例中,增強型密碼位址長於128位元。增強型密碼位址之位元可在主機ID與物件ID之間均勻地拆分,或主機或物件ID中之一者可比另一ID長(例如由更多位元表示)。
在各種實施中,本文中提議之增強型密碼位址可使得能夠在網路主機之間安全地共用物件。該等物件可藉由單個增強型密碼位址存取,而無論物件在網路內之位置如何(相對於藉由第一線性位址例如在儲存物件之實體機器內在本端存取,及藉由不同的線性位址在遠端存取)。因此,增強型密碼位址可由位於請求物件之用戶端主機與提供物件之伺服器主機之間的網路基礎設施來辨識且操作。增強型密碼位址亦可由運行用戶端主機及伺服器主機之實體機器的硬體及/或軟體來辨識且操作(例如,實體機器之ISA可接受整個增強型密碼位址或物件ID作為一或多個指令之運算元)。因此,由用於路由目的之網路連接之基礎設施(例如,路由器、防火牆、交換器、伺服器、負載平衡器、網域名稱伺服器等)處理的相同位址亦可用作由運行主機之實體機器執行的指令中之記憶體運算元(例如,實體機器之處理器單元可接受位址作為記憶體存取指令運算元或處理元件可模擬指令之效能,其中該位址作為記憶體存取指令運算元來包括)。在特定實施例中,增強型密碼位址可藉由實體機器直接轉譯為實體位址(相對於由請求節點供應之線性位址或內容ID經轉譯為儲存物件之節點的線性位址且接著在由儲存該物件之節點返回之前經轉譯為實體位址)。因此,指代物件之線性位址不僅經界定在儲存該物件之特定實體機器的上下文內,且實際上貫穿整個分散式運算域係相同的。因此,分散式運算域中之任一實體機器(包括包括該物件之實體機器)上之主機可使用相同的增強型密碼位址來存取物件。
增強型密碼位址之使用可用於橫跨分散式運算域(在一些實施例中包括整個網際網路)提供統一的密碼定址層。在一些實施例中,此定址層可用於藉由向在實體機器或處理器單元上運行之每一經隔離實體提供其自身的主機ID來替換舊版隔離概念(例如程序、虛擬機(VM)、隔室等等)。此可降低支援多種不同類型的隔離之複雜性,因此改善平台之安全性強化。
在各種實施例中,增強型密碼位址可符合以資訊為中心之混合網路連接(hICN)架構。位址之主機ID可由網路連接之基礎設施使用以將請求自用戶端主機路由至伺服器主機。在至少一個實施例中,主機ID可為明文(使得密碼秘密不需要由網路連接之基礎設施共用),但實施例不限於此。
在各種實施例中,物件ID之全部或一部分可經加密(例如藉由用戶端主機或藉由代表用戶端主機之另一邏輯實體),使得其在藉由網路傳輸期間及/或在實體機器內受保護。該加密可以使物件ID (且因此使增強型密碼位址)不可偽造之方式實施。舉例而言,用戶端主機(或與用戶端主機相關聯之其他邏輯實體)可利用經鍵控散列函數以產生待連同增強型密碼位址一起發送(或嵌入增強型密碼位址內)之資訊(例如訊息鑑別碼),或可利用其他方法以為增強型密碼位址之物件ID提供完整性及鑑別。
在各種實施例中,增強型密碼位址之至少一部分可用於對藉由增強型密碼位址定址之物件進行加密或進行解密。在一個實施例中,整個增強型密碼位址係用作密碼密鑰以對物件進行加密及解密。舉例而言,增強型密碼位址可長達128位元,且可在128位元區塊密碼演算法中用作密碼密鑰。在其他實施例中,增強型密碼位址之一部分(例如嵌入物件ID內或由物件ID參照之上下文資訊)可結合密碼資料密鑰用於微調中以對物件進行加密及解密。先前已經描述上下文資訊之實例,且下文進一步詳細描述此類資訊在密碼操作中之額外實例及使用。
在各種實施例中,分散式運算域之實體機器400之頁表420支援增強型密碼位址至實體位址之直接轉譯。頁表420可包括(例如由電腦作業系統或其他軟體)用於儲存線性位址(例如增強型密碼位址或增強型密碼位址之物件ID)與實體位址(例如儲存基礎資料之實體記憶體上的位置)之間的映射之資料結構。在一些實施例中,實體位址表示駐存在記憶體中之資料的頁面之位址。線性位址亦可被稱作虛擬位址或邏輯位址。
在一個實施例中,頁表可將128位元線性位址(例如包括主機ID及物件ID之增強型密碼位址之經加密或解密形式)直接映射至實體機器之記憶體之實體位址。實體位址之長度亦可為128位元,或其可為不同位元長度,諸如32位元或64位元,此取決於由實體機器中之記憶體使用的定址方案。在另一實施例中,頁表可將64位元線性位址(例如增強型密碼位址之經加密或解密物件ID)直接映射至實體位址。在其他實施例中,頁表可將經加密或解密物件ID或具有任何合適的長度的增強型密碼位址之整個經加密或解密形式直接映射至實體位址。
在一些實施例中,頁表420可包括每主機頁表,其中針對各別主機維持一組離散頁表。舉例而言,針對第一主機(藉由第一主機ID識別)維持第一組頁表,針對第二主機(藉由第二主機ID識別)維持第二組頁表,等等。每主機頁表可直接將虛擬位址(例如物件ID)轉譯為實體位址。在一些實施例中,每主機頁表可直接將64位元物件ID轉譯為實體位址。當利用每主機頁表時,主機ID可用於回應於轉譯請求而識別待遍歷之一組相關頁表。頁表接著可基於物件ID而經遍歷。因此,當主機自另一主機存取資料時,其可暫時地切換為使用頁表,該等頁表對應於其資料經存取之主機的主機ID。
圖5描繪根據某些實施例之實體機器500與502之間的物件的通訊。在所描繪實施例中,實體機器500及502為離散實體機器(例如經由網路524連接之不同運算系統),但可針對在相同的實體機器上(例如在不同的處理器單元上)運行之不同主機執行類似流程。在所描繪實施例中,在初始時間點處,主機504在實體機器500上運行,且主機506及508在實體機器502上運行。主機504含有程式碼物件510及資料物件512,主機506含有資料物件514及資料物件516,且主機508含有資料物件518。
主機504在執行程式碼物件510 (例如一系列指令)。程式碼物件510可參照資料物件514,其為主機506之部分。可對物件514進行參照,例如作為記憶體運算元中之增強型密碼位址,該記憶體運算元為提交至運行主機504之處理器單元的記憶體存取指令之部分。處理器單元可存取頁表(例如420),以試圖獲得資料物件514之實體位址。然而,因為資料物件514位於不同實體機器上,所以用於資料物件514之虛擬至實體記憶體映射不包括於頁表中。因此,該頁表可產生故障。該故障係藉由物件故障處置器520來處置。
物件故障處置器520可包含任何合適的處置器,其實施於硬體及/或軟體中。在至少一些實施例中,資料物件及程式碼物件藉由物件故障處置器520經類似地處置。當執行發佈存取請求之程式碼的實體機器當前不具有用於指定位址(至實體位址)之映射時,可產生物件故障。一般而言,物件故障處置器520將定位經請求物件,將物件儲存在實體機器之記憶體中,且創建用於其之映射。物件已經可在非記憶體儲存器中之請求實體機器上獲得,例如,調出至固體狀態驅動機(SSD)或其他儲存裝置,或物件可儲存在不同的實體機器中且可經由網路524擷取。
物件故障處置器520可接收參照資料物件514之增強型密碼位址,且作為回應,調用協定以識別資料物件514位於網路內何處。等效地,可針對調用程式碼物件之請求而調用物件故障處置器。物件故障處置器可判定經請求物件可在在本端可用於發佈請求之實體機器的儲存器中獲得,例如可在儲存於固體狀態驅動機(SSD)或其他儲存裝置上的調換檔案中獲得。在此情況下,物件故障處置器520可僅將經請求物件複製至記憶體,將其增強型密碼位址映射至記憶體之實體位址,且重新嘗試存取請求。若物件不在在本端可用於實體機器之儲存器中,物件故障處置器520可調用網路協定(例如以資訊為中心之混合網路連接協定)以判定資料物件514位於何處。
一旦物件故障處置器520判定資料物件514位於不同的實體機器502上,則其開始產生包含增強型密碼位址之請求,且該請求經由網路524發送至實體機器502。實體機器502接著將擷取資料物件514,且經由網路將其發送至實體機器500。
經由網路524之資料的轉移可基於任何合適的協定,諸如hICN及基礎IPv6層。在一些實施例中,該請求規定物件之界限,使得回應於網路請求之實體機器502知道經由網路524發回哪些資料。舉例而言,可在增強型密碼位址中包括規定含有物件之二次冪槽大小(在本文中亦被稱作功率大小)的指標編碼。在一些情形中,該槽大小可包括一或多個其他物件或其他物件之部分。在一個實施例中,回應實體機器502可發送經指定槽之全部內容。因為一些槽極大,所以在各種實施例中,僅回應於每一請求而發送特定量的資料(例如4 KB頁面)。回應實體機器502可針對對大物件的不同部分的重複請求而建立遠端直接記憶體存取(RDMA)會話。此外,在一些情形中,並非槽內的所有頁面甚至均與資料相關聯,在此狀況下,映射此類關聯性之區無法發送至請求器。回應實體機器502可判定記憶體之經請求區何時與資料相關聯,即使回應機器上之頁表例如由於資料自記憶體調出至儲存器而當前不映射彼資料亦如此。舉例而言,回應機器上之網路伺服器可將對線性位址之請求發佈至在回應實體機器502上運行的OS,以提示其映射經請求資料。回應實體機器502可對資料進行加密以在傳輸時保護其(或在其單獨受經加密隧道保護之情況下提供深度防禦),且當存取與經請求槽內之經請求物件重疊的其他物件時避免觸發完整性違規。
在一些實施例中,可在發送至實體機器502之請求中精確地規定每一物件之界限。可指定物件之確切長度,或可以比二次冪槽大小大的精確度指定長度。作為一個實例,界限及其他元資料可置放於對應於跨越該槽中點之分配的每一槽之中點處。若使用此方法,則回應實體機器502可使用界限元資料以僅發送回用於所要分配之資料。在此狀況下,藉由請求實體機器500重建構之記憶體影像可在特定頁面內係不完整的,因此即使已針對頁面之某一部分擷取了資料,但此並不意謂可滿足對頁面之任何其他部分的請求。因此,請求實體機器500可藉由發佈對遺漏資料之額外請求而能夠回應於由於存取部分填充的頁面、例如由於線性線內元資料不匹配而產生之故障。
在各種實施例中,資料物件514可當儲存在實體機器502之記憶體中時經加密,且可在資料物件514經由網路524傳達至實體機器500時維持此加密。在其他實施例中,當資料物件514經由網路524傳達至實體機器500時,資料物件514可藉由實體機器502解密且接著使用任何合適的加密協定(例如如hICN中所界定)加密以在轉移期間保護資料物件514。
在一些實施例中,當接收資料物件514時,實體機器500可實施主機506自身內之狀態之至少一部分(如由圍繞實體機器500之主機506的虛線所描繪)。此可包括例如將資料物件514儲存在實體機器500之實體記憶體中,及創建將至資料物件514之增強型密碼位址映射至儲存資料物件的實體位址之頁表條目。此亦可包括實體機器500上之作業系統建立表示主機506之標識及狀態的資料結構,尤其當其在實體機器500中經具現化時。舉例而言,此資訊可包括用於主機506之主機位址、相關聯的記憶體映射及在運行或經排程以在主機506之上下文內運行的功能之執行狀態(例如暫存器值)。
在一些實施例中,實體機器500之智慧型NIC可處置來自物件故障處置器520之請求且可在一旦自實體機器502接收到資料物件514時即將其提供至請求主機,而無需實體機器500實施主機506自身內之一部分。主機504 (或在實體機器500上運行之另一主機)的隨後請求可產生藉由物件故障處置器520處置之另一故障,且若資料物件514仍在智慧型NIC之緩衝器內,則其可經提供至用戶端主機,而無需經由網路524發送另一請求。在替代實施例中,實體機器500之智慧型NIC可在實施實體機器500內之主機506之一部分時實施物件故障處置器520之全部或一部分。對稱地,在一些實施例中,實體機器502之智慧型NIC可實施邏輯之全部或一部分以將資料物件514發送至實體機器500。
在一些實施例中,物件故障處置器520可包括物件預提取器,以在於實體機器500上運行之主機明確地請求彼等物件之前自遠端實體機器(例如502)請求物件。舉例而言,預提取器可觀測對物件之請求之模式,且可預測有可能經存取之物件且可搶先自實體機器500請求物件,且接著對該等物件進行快取以用於實體機器500之一或多個主機的更快速存取。在其他實施例中,僅在請求之後將物件帶入至實體機器500。
為了存取資料物件514 (其現在在本端儲存在實體機器500上),主機504可能需要協商對密碼密鑰之存取以對資料物件進行解密。此類存取可在任何合適的時間進行,諸如在主機504請求資料物件514以及主機504對資料物件之請求之前,或在實體機器500接收及儲存資料物件之後。
若增強型密碼位址自身為對資料物件514進行解密所需之密碼密鑰,則主機504將在請求之前接收對存取物件之授權(使得其可產生增強型密碼位址),且主機504可僅僅使用增強型密碼位址以對資料物件進行解密。若需要單獨密鑰以對資料物件進行解密,則可在任何合適的時間協商對密鑰之存取。
在一個實施例中,基於屬性之加密協定(例如如由hICN密鑰管理協定所界定)可經調用以使第一主機(例如504)向另一主機(例如506)驗證其係在該密鑰可由第一主機使用之前經授權以存取密鑰。基於屬性之加密為允許針對節點(例如主機)界定屬性且接著將密鑰限制為僅由具有彼等屬性之節點存取的方案(其中該等屬性可為可藉由授予授權之節點驗證的任何合適的特性,諸如使用者之身分、裝置之位置、平台之能力等)。在一些實施例中,用戶端主機不與出於擷取密鑰的目的而提供資料之伺服器主機通訊,而實際上,可委託單獨的一組主機代表用戶端主機或伺服器主機中之一者或二者來在基於屬性之加密方案中產生私用密鑰。
在一些實施例中,在驗證實體經授權存取之後,可藉由向請求實體提供至結構之頂級指標而將含有各種指標之結構提供至請求實體。請求實體接著可遍歷結構內之指標以獲得對多個密鑰或指標之存取。以此方式,單個頂級指標可提供對物件之階層的存取。其他實施例考慮向主機提供針對其可存取之物件的授權之任何合適的方式。
在所描繪實施例中,實體機器500包括密鑰後備緩衝器522。密鑰後備緩衝器522可以與轉譯後備緩衝器類似之方式操作,該轉譯後備緩衝器將線性位址快取至實體位址轉譯,以藉由避免經快取之轉譯的頁面查核行程而縮減潛時。密鑰後備緩衝器522可對主機ID與對應資料密鑰之間的映射進行快取,使得每當自特定主機存取資料時都不需要執行授權(例如經由基於屬性之加密協定)。密鑰後備緩衝器522可接收主機ID作為輸入,且可將密碼密鑰(或至包含用於主機之密碼密鑰或對密鑰之一些其他參照的結構之頂級指標)返回作為輸出,其中密碼密鑰可用於對主機之一或多個物件進行解密。處理器指令可用於管理密鑰後備緩衝器522 (其中指令可類似於及/或改編自用於管理轉譯後備緩衝器之現有指令)。
由於一旦主機成功地協商了對用於其他主機之密碼密鑰的存取,主機即可自由直接存取屬於其他主機之資料,因此在一些實施例中,實體機器500之當前主機ID暫存器(諸如上文結合MAKROUTPTR指令所描述的暫存器)可經映射至當前經執行之當前主機的一組經授權主機ID,其中允許當前主機存取對應於經授權主機ID之主機的密碼密鑰。在一些實施例中,儲存在當前主機ID暫存器中之值(例如當前執行的主機之主機ID)可經映射至包含經授權主機ID之任何合適的記憶體。當用戶端主機執行自伺服器主機請求物件之指令時,當前主機ID暫存器可經檢查以判定用戶端主機是否經授權以自伺服器主機存取資料。若未經授權,則可發佈故障且可拒絕該請求。若用戶端主機經授權以存取物件,則可提供經請求物件(或可在授予對經請求物件之存取之前執行用以判定該主機是否經授權以存取特定經請求物件之額外檢查)。在一個實施例中,回應於用戶端主機經授權以存取伺服器主機之資料的判定,密鑰後備緩衝器522可經存取以獲得待用於對經請求物件進行解密之密碼密鑰。
在各種實施例中,主機之可供其他主機存取之物件可為不可變的,因此緩解對一致性協定之需求。在其他實施例中,物件可替代地或另外包括可藉由含有物件之主機或藉由其他主機編輯的物件。在此類實施例中,一致性協定(例如使用分散式散列表)可管理對物件之編輯及存取以便使物件橫跨分散式運算域保持同步且防止對經更新之物件的存取。
在一個實施例中,引入用於處理器單元之呼叫指令,其可接受作為運算元之參照程式碼物件的增強型密碼位址,其可儲存在本端(例如儲存在執行呼叫指令之相同實體機器上)或在遠端儲存(例如儲存在不同的實體機器上)。在各種實施例中,執行呼叫指令之處理器單元可判定係執行該功能(例如藉由使用堆疊上之參數來執行本端程序呼叫及在呼叫指令中所參照之位址處執行程式碼)或經由遠端程序呼叫將功能之執行轉移至不同實體機器。在遠端程序呼叫中,用於呼叫之參數可經發送至執行程式碼物件之實體機器。
在本端執行程式碼物件或轉移程式碼物件之執行的決策可基於任何合適的因素,諸如運行主機之處理器單元的組配(例如處理器單元是否能夠執行程式碼物件或處理器單元相對於不同處理器單元的適合性是否適於執行程式碼物件)、處理器單元之資源的可用性(例如受處理器單元上之當前負載影響)、與請求相關聯之潛時要求或其他合適的因素。以此方式,處理器單元可負載平衡程式碼物件之執行。因為增強型密碼位址可橫跨網路(例如網際網路)路由,所以遠端主機可使用與原本在本端使用以存取程式碼物件之位址相同的位址(增強型密碼位址),且可進行資料路由且無大量的額外開銷,因此避免資料或功能存取之中斷。
在一個實施例中,實體機器(例如400)之處理器單元可實施指令MKROUTPTR以產生增強型密碼指標。在一個實施例中,該指令可接受規定用於增強型密碼位址之目的地暫存器的第一運算元及規定儲存本端指標(例如物件ID)之暫存器的第二運算元。該指令可組合(例如串聯)當前主機ID (其可儲存在每當發佈指令時經存取之隱式暫存器中)與本端指標(例如物件ID)以產生增強型密碼指標。在一個實施例中,本端指標為64位元指標,主機ID為64位元ID,且經產生增強型密碼位址為128位元指標。其他實施例考慮MKROUTPTR之任何合適的變化,包括其他類型的運算元(例如用於輸入中之任一者的立即值、儲存主機ID之暫存器的規範等)。
在一些實施例中,MKROUTPTR指令可接受運算元,其包括對主機ID之參照。指令之執行可產生增強型密碼位址,其包含經參照主機ID與物件ID (其可經由不同運算元指定)之串聯。在下文描述利用此指令之流程。
在一個實施例中,MKROUTPTR指令可接受增強型密碼位址或物件ID作為第一運算元,且可接受主機ID作為第二運算元。物件ID (包括於增強型密碼位址中或經提供作為運算元)可包括密文部分,其使用本端指標加密密鑰(例如特定針對於發佈指令之主機的密鑰)進行加密。指令之執行可包括基於本端指標加密密鑰(其可經供應作為指令中之運算元或可為隱式運算元)對物件ID之密文進行解密且接著使用與作為運算元供應之主機ID相關聯的指標加密密鑰對所得明文進行加密。所得密文包括於新的物件ID (其指代作為運算元供應的物件ID所指代的相同物件)內,該新的物件ID包括於由於指令而輸出之增強型密碼位址(包括物件所處的主機ID)內。在一些實施例中,主機(或其上駐存有主機之實體機器)可維持主機ID及對應的指標加密密鑰之表。在其他實施例中,MKROUTPTR指令之第二運算元可包括對待用於對物件ID (而非與密鑰相關聯之主機ID)進行加密之密鑰的直接參照。在一些實施例中,此等指標加密密鑰可為執行指令之主機與另一主機之間或在含有經參照物件之主機與被授予對經參照物件之存取的另一主機之間的共用密鑰。以此方式,MKROUTPTR指令可允許創建包括基於共用密鑰而經加密之指標的增強型密碼位址,此相對於僅使用根據本端指標加密密鑰加密之指標可產生增強型安全性。在下文描述用於此類實施例之若干使用狀況。
圖6描繪根據本揭露內容之至少一個實施例之用於基於共用密鑰產生增強型密碼位址的流程。在602處,運用作為第一輸入運算元之本端指標(例如,諸如物件ID之64位元指標)及作為第二輸入運算元之目的地主機ID來執行MKROUTPTR指令。
在604處,運用目的地主機執行密鑰交換(例如,藉由發佈MKROUTPTR指令之主機)以建立共用指標加密密鑰。在606處,使用本端指標加密密鑰對原始指標輸入運算元進行解密,且接著使用共用指標加密密鑰對原始指標輸入運算元重新進行加密以產生可由目的地主機用於存取基礎物件的增強型密碼位址。
圖7描繪根據本揭露內容之至少一個實施例之用於共用物件的流程。圖7可利用圖6之流程以共用多個主機(主機1、主機2及主機3,其可駐存在相同或不同的實體機器上)當中之物件702。在此流程中,主機1包括物件702。藉由MKROUTPTR指令之各種使用且經由在主機1、2及3之間建立的密鑰之交換,使得每一主機能夠藉由識別物件702之增強型密碼位址來存取物件。在經描繪實施例中,使用在主機對之間建立的密鑰對指標3及4進行加密以更有效地阻止指標偽造。
指標1表示完全或部分使用本端指標加密密鑰經加密之物件ID。在704處,運用作為輸入運算元之指標1執行MKROUTPTR指令以產生指標2,其包括主機1之主機ID及經加密物件ID。在706處,運用作為運算元之指標2 (或指標2之經加密物件ID部分)及作為第二運算元之主機2之主機ID來執行MKROUTPTR指令。指令之執行可包括基於本端指標加密密鑰對指標2之物件ID進行解密且接著使用在主機1與主機2之間建立的共用密鑰來對物件ID進行加密。所得指標3包括主機1之主機ID及物件702之經加密物件ID。作為替代方案,可藉由運用作為第一輸入運算元之指標1及作為第二運算元之主機2之主機ID來呼叫MKROUTPTR指令而直接在708處產生指標3。指令之執行可包括基於本端指標加密密鑰對指標1之物件ID進行解密且接著使用在主機1與主機2之間建立的共用密鑰來對物件ID進行加密。
如所展示,主機2可使用指標2或指標3以自主機1存取物件702。在實施中,主機2將有可能僅可存取指標2或指標3,但一些實施例考慮主機2具有二個指標且能夠使用任一指標來存取物件702。由於使用共用密鑰而非本端指標加密密鑰,使用指標3 (其使用共用密鑰來加密)可提供優於使用指標2之安全性益處。
在一些實施例中,主機2亦可創建至物件702之指標以與其他主機共用。舉例而言,在710處,可藉由運用作為第一輸入運算元之指標3及作為第二運算元之主機3的主機ID來呼叫MKROUTPTR指令而產生指標4。指令之執行可包括基於在主機1與主機2之間共用的密鑰而對指標3之物件ID進行解密且接著使用在主機1與主機3之間建立的共用密鑰而對物件ID進行加密。所得指標4包括主機1之主機ID及物件702之經加密物件ID。主機3可使用此指標以存取物件702。儘管圖中未示,但主機2可另外或替代地將指標2提供至主機3以允許主機3存取物件702。以上文所描述的方式,指標可充當提供對物件702之存取的不可偽造的符記。
處理器(其例如執行包括經請求之物件的主機)可包括任何合適的邏輯,該邏輯用於判定當對在記憶體運算元中供應之增強型密碼位址(例如指標2、指標3、指標4)進行解密時使用哪一密鑰。在一些實施例中,每一指標之編碼可包括指示係本端指標加密密鑰抑或共用密鑰應用於解密之位元(且若共用密鑰用於解密,則處理器可利用當前執行的主機之主機ID以及指標中之主機ID以識別待用於解密之共用密鑰)。在一替代實施例中,記憶體存取指令之不同編碼可指示將使用哪一密鑰(例如MOV指令之第一變化可規定應使用本端指標加密密鑰,而第二變化可規定將使用共用密鑰)。
在各種實施例中,本端指標加密密鑰及共用密鑰可在經授權存取此類密鑰之主機當中同步以便維持正確指標。舉例而言,若主機2經授權以產生物件702之密鑰,則在某一實體機器上執行之主機2應能夠判定先前是否在主機1與主機3之間建立密鑰,即使此回應於由不同主機發佈的密鑰請求而出現在不同的實體機器上亦如此。主機2應亦能夠獲得彼密鑰,使得其可產生指標4 (否則,若主機3將在具有與主機2用於產生指標4之密鑰不同的在主機1與主機3之間的共用密鑰之實體機器上使用指標4,則指標4將不恰當地進行解密)。任何合適的機制(例如分散式散列表)可用於維持密鑰同步。對用於產生各種指標之密鑰的存取可基於使用例如認證協定建立之信任。
實例
目前所描述之增強型隱私實施例之額外實例包括以下非限制性實施。以下非限制性實例中之每一者可獨立存在或可以任一排列或組合與在下文或貫穿本揭露內容提供之其他實例中之任一或多者組合。
實例AA1係關於一種設備。該設備包含處理器單元,該處理器單元包含:用以針對第一網路主機產生對第二網路主機之物件的請求之電路系統,其中該請求包含位址,該位址包含第二網路主機之可路由主機ID及至少部分地經加密之物件ID,其中該位址唯一地識別分散式運算域內之物件;及記憶體元件,其用以儲存物件之至少一部分。
實例AA2包括實例AA1之主題,其中部分地經加密之物件ID係不可偽造的。
實例AA3包括實例AA1之主題,其中該電路系統將進一步執行具有參照位址之運算元的記憶體存取指令。
實例AA4包括任一先前實例AA之主題,其中該物件ID包括用於與物件相關聯之密碼操作的上下文資訊。
實例AA5包括任一先前實例AA之主題,其中該位址包含至少128個位元。
實例AA6包括任一先前實例AA之主題,其中該可路由主機ID長達64位元,且該物件ID長達64位元。
實例AA7包括任一先前實例AA之主題,其中該電路系統將使用位址作為密碼密鑰以對物件進行解密。
實例AA8包括任一先前實例AA之主題,其中該分散式運算域包含整個網際網路。
實例AA9包括任一先前實例AA之主題,其中該電路系統係用於回應於參照位址之呼叫指令及基於運行第一網路主機之處理器單元的當前負載來轉移程式碼物件的執行之判定而產生請求。
實例AA10包括任一先前實例AA之主題,其中該電路系統係用於回應於頁表不包括物件ID至實體位址之映射的判定而產生請求。
實例AA11包括任一先前實例AA之主題,進一步包含密鑰後備緩衝器以使主機ID與用以對物件進行解密之密鑰相關聯。
實例AA12包括實例AA10之主題,其中該電路系統係用於回應於密鑰後備緩衝器中之未命中而調用授權協定以獲得密鑰。
實例AB1係關於一種方法。該方法包含:藉由第一網路主機產生對第二網路主機之物件的請求,其中該請求包含位址,該位址包含第二運算主機之可路由主機ID及至少部分地經加密之物件ID,其中該位址唯一地識別分散式運算域內之該物件;及存取該物件。
實例AB2包括實例AB1之主題,其中部分地經加密之物件ID係不可偽造的。
實例AB3包括任一先前實例AB之主題,進一步包含藉由第一網路主機來執行具有參照位址之運算元的記憶體存取指令。
實例AB4包括任一先前實例AB之主題,其中該物件ID包括用於與物件相關聯之密碼操作的上下文資訊。
實例AB5包括任一先前實例AB之主題,其中該位址包含至少128個位元。
實例AB6包括任一先前實例AB之主題,其中該可路由主機ID長達64位元,且該物件ID長達64位元。
實例AB7包括任一先前實例AB之主題,進一步包含使用位址作為密碼密鑰以對物件進行解密。
實例AB8包括任一先前實例AB之主題,其中該分散式運算域包含整個網際網路。
實例AB9包括任一先前實例AB之主題,其中回應於參照位址之呼叫指令及基於運行第一網路主機之處理器單元的當前負載來轉移程式碼物件的執行之判定而產生請求。
實例AB10包括任一先前實例AB之主題,進一步包含回應於頁表不包括物件ID至實體位址之映射的判定而產生請求。
實例AB11包括任一先前實例AB之主題,進一步包含使用可路由主機ID在密鑰後備緩衝器中搜索用以對物件進行解密之密鑰。
實例AB12包括實例AB11之主題,進一步包含回應於密鑰後備緩衝器中之未命中而調用授權協定以獲得對物件進行解密之密鑰。
實例AC1包括一種設備,其包含用以執行實例AB1至AB12中之任一者之方法的一或多個要素之構件。
實例AD1包括一或多個非暫時性電腦可讀媒體,其包含指令,該等指令使得電子裝置在該電子裝置之一或多個處理器執行指令時執行實例AB1至AB12中之任一者的方法之一或多個要素。
實例AE1包括機器可讀儲存器,其包括機器可讀指令,該等機器可讀指令在被執行時實施實例AB1至AB12中之任一者之方法。
實例AF1包括一種設備,其包含:一或多個處理器及包含指令之一或多個電腦可讀媒體,該等指令在由該一或多個處理器執行時使得該一或多個處理器執行實例AB1至AB12中之任一者之方法。
指標覆蓋指令
圖8描繪根據某些實施例之用於記憶體存取指令之流程800,該記憶體存取指令指定用於將資料移動至記憶體或自記憶體移動資料之單獨的線性位址。在運算系統(例如,實體機器400或本文中所描述的其他運算系統)之操作期間,代表另一軟體實體(例如虛擬機、程序、執行緒等)執行IO之軟體實體(例如虛擬機監測器(VMM)或某一其他程序)可能需要存取記憶體之明文內容。然而,利用密碼運算之一些實施例可將資料加密綁定至線性位址。亦即,可基於映射至特定實體位址之線性位址之至少一部分而對儲存於彼實體位址處之資料進行加密。然而,存取相同實體記憶體之軟體實體可使用不同線性位址來存取相同實體位址。舉例而言,第一軟體實體可使用第一線性位址來存取實體位址,且第二軟體實體可使用第二線性位址來存取實體位址。因此,代表另一軟體實體執行存取之軟體實體可使用不同於用於對基礎實體位址處之資料進行加密的線性位址之線性位址(例如作為由另一軟體實體發佈之記憶體存取指令之部分)。若此不同線性位址用作對於資料之密碼操作的基礎,則可不恰當地對資料進行解密或加密。
作為一個實例,VMM (其可例如為特權程序)可能需要存取訪客之記憶體以執行操作。舉例而言,VMM可存取訪客記憶體以模擬軟體指令。在此狀況下,VMM可像存取訪客一樣存取訪客記憶體,且可對經存取資料進行解密以便模擬指令。VMM亦可對經存取資料重新進行加密(例如若修改),且將資料儲存回至記憶體。
作為另一實例,用於網路連接之諸如微內核之程序(其在一個實例中可為未授權程序)可經由共用記憶體在用戶端程序與網路連接程序之間交換網路封包。網路連接程序可在多個用戶端程序當中協調網路連接(例如藉由在用戶端程序之間轉遞資料,藉由使用網路介面以將資料發送至不直接連接至網路程序之例項的其他裝置等等)。在操作中,網路程序可具有其自身的與用戶端程序之線性位址空間分離之線性位址空間(例如相同的實體位址可經映射至網路程序之位址空間中之第一線性位址且映射至用戶端程序之位址空間中之第二線性位址)。
各種實施例提供記憶體存取指令MOVOVERRIDEPTR,其接受規定資料將移動至之位置的目的地運算元、規定儲存資料之位置的來源運算元及規定將用於關於資料之密碼操作中之線性位址的第三運算元。當MOVOVERRIDEPTR指令規定資料自記憶體至暫存器之移動時,來源運算元可規定記憶體之不同於待用於密碼操作(例如自記憶體存取之資料之解密)中之線性位址的線性位址。當MOVOVERRIDEPTR指令規定資料自暫存器至記憶體之移動(或立即值至記憶體之移動)時,該目的地運算元可規定記憶體之不同於待用於密碼操作(例如,待儲存在記憶體中之資料之加密)中之線性位址的線性位址。
在指令之執行期間,來源運算元或目的地運算元中之線性位址(取決於該指令自記憶體擷取資料抑或將資料移動至記憶體)可經映射至記憶體之實體位址(例如經由頁表或TLB),且另一線性位址用作密碼密鑰或微調以對經儲存至實體位址或自實體位址擷取之資料進行加密或解密(取決於該移動係去往記憶體抑或來自記憶體)。
在一個實施例中,該指令可在資料自記憶體擷取至暫存器中時經指定為MOVOVERRIDEPTR r64、m64、r128,且在資料自暫存器移動至記憶體中時經指定為MOVOVERRIDEPTR m64、r64、r128,其中r64規定將儲存資料(在儲存在記憶體中之前或在自記憶體擷取之後)之64位元暫存器,m64規定64位元線性位址(發佈指令之實體之位址空間中的線性位址),且r128規定包括待用於密碼操作中之線性位址之暫存器。在一些實施例中,用於密碼操作中之線性位址可為本文中所描述的任一合適指標,諸如如上文所描述之增強型密碼位址或其他密碼指標。在其他實施例中,線性位址之長度可為任一合適長度(且識別資料位置之線性位址及用於密碼操作中之線性位址可具有相同長度或可具有不同長度)。
在各種實施例中,由MOVOVERRIDEPTR指令供應之二個線性位址中之任一者可經加密或未經加密。在一個實施例中,用於定址之線性位址未經加密,而用於密碼之線性位址經加密。指令之執行可包括在將第一線性位址映射至實體位址或在密碼操作中使用第二線性位址之前的任一或二個線性位址之解密。
此指令可允許經授權軟體單獨地供應用於資料加密綁定及位址轉譯之位址。因此,MOVOVERRIDEPTR可由OS、VMM、不同程序或其他經授權軟體實體發佈以使用當前位址空間中所界定之線性位址來執行記憶體存取,但使用作為密鑰或微調之不同線性位址(例如由另一軟體實體使用的用於位址轉譯及對資料進行加密二者之線性位址)進行加密或解密。
使用此指令之軟體實體可以任何合適方式獲得待用於密碼操作中之線性位址。返回參考以上實例,若VMM正模擬記憶體存取,則在一個實例中,VMM可經由暫存器自經模擬之軟體獲得線性位址(待用於密碼操作中)。在以上網路程序實例中,用戶端程序可將線性位址傳達至快照微內核,因此微內核可在指令中供應該線性位址。
在經描繪實施例中,流程始於802,其中軟體實體發佈MOVOVERRIDEPTR指令。在804處,判定發佈指令之軟體實體是否經授權以使用MOVOVERRIDEPTR指令。MOVOVERRIDEPTR指令之使用可限於某些軟體實體以降低與指令相關聯之安全性風險。執行該指令之處理器單元可執行任何合適的檢查以查看軟體實體是否經授權以執行MOVOVERRIDEPTR指令。在一個實施例中,處理器單元可檢查模型特定暫存器(MSR),其儲存指示軟體實體是否經授權以使用該指令之資訊。在一些實施例中,特權軟體(例如OS或VMM)可具有對MSR之存取權利以便規定哪些程序能夠使用MOVOVERRIDEPTR指令。在一個實施例中,是否允許程序使用MOVOVERRIDEPTR之判定可基於軟體之特權等級(例如可自動允許環0軟體使用MOVOVERRIDEPTR指令,而可阻止其他軟體使用指令或該系統可能必須例如藉由特權軟體經專門組配以經允許使用該指令)。可按每程序之粒度(例如若允許程序使用該指令,則彼程序之任何部分均可使用該指令)或更精細粒度(例如針對執行程序之程式碼在逐頁基礎上)進行檢查。在一些實施例中,使用指令可限於某些位址範圍或用某些密鑰來限制。舉例而言,可允許給定程序使用多個密鑰,例如,可經由該指標內之位元的截塊來選擇。在一些實施例中,僅允許在彼等密鑰之子集上使用此指令。繼續以上實例,可僅允許網路微內核程序在對應於與其他程序共用之記憶體之密鑰上使用此指令,而非其自身專用記憶體,以便增強其對針對彼專用記憶體之威脅的抵抗力。可藉由處理器單元之任何合適部分進行授權檢查。舉例而言,可藉由指令解碼單元(回應於意識到已經發佈MOVOVERRIDEPTR指令)或執行單元來執行檢查。
若發佈軟體實體未經授權以使用指令,則在806處產生故障(例如以與當在特權操作模式外部執行特權指令時類似之方式)。若發佈軟體實體經授權以使用該指令,則在808處,處理器單元可發佈請求(例如至記憶體執行單元/控制器,其可為處理器單元之部分或耦接至處理器單元),以在指令中所指定之第一線性位址處存取記憶體。第一線性位址可為對當前位址空間(發佈指令之軟體實體之位址空間)中之資料的有效參照。在810處,基於由指令指定之第二線性位址在第一線性位址處對資料執行資料加密或解密。操作之次序可取決於MOVOVERRIDEPTR係將資料自暫存器移動至記憶體(在此狀況下,可首先執行加密,接著為記憶體存取)抑或將資料自記憶體移動至暫存器(在此狀況下,可首先進行記憶體存取,接著為資料之解密)。在各種實施例中,作為指令之執行之部分,第二線性位址可以經加密形式在該指令中供應,且可以彼形式使用以對資料進行加密或解密。
上下文資訊表
圖9描繪根據某些實施例之包含上下文資訊及密碼指標編碼902的表900。密碼指標編碼902可表示例如在用於記憶體存取之指令(例如MOVOVERRIDEPTR指令、標準MOV指令、本文中所描述的其他記憶體存取指令或任一其他合適的記憶體存取指令)中供應之線性位址。
在經描繪實施例中,密碼指標編碼902包括查詢標籤904、密文906、微調位址908及指標算術部分910。儘管編碼902之部分描繪特定位元長度,但其他實施例可包括用於每一部分之任何合適數目個位元。當具有此編碼之線性位址用於記憶體存取指令中時,查詢標籤904可用於經編索引至表900中以獲得額外上下文資訊(超出嵌入於線性位址自身中之任一上下文資訊)。此類實施例可允許使用額外上下文資訊而不用在線性位址之編碼中用完位元,且可尤其可用於提供在許多線性位址當中(例如,在相同應用程式中)可為共同的資訊。在經描繪實施例中,查詢標籤904之大小為3個位元,且查詢標籤編索引至具有8個條目之表中,但其他實施例可利用其他查詢標籤及表大小。
表900可使用任何合適的記憶體,諸如暫存器之集區,來實施。在一個實施例中,暫存器為由作業系統管理之MSR (或其他特權組件)。在另一實施例中,暫存器可為可經由專用指令組配之用戶模式控制暫存器。對該表進行組配之授權可以任何合適的方式提供(例如用於指令程式碼之頁表可包括指示該程式碼是否經授權以修改該表之位元)。使用者空間或其他軟體可動態地改變表900之內容或經供應線性位址中之查詢標籤值以便參照所要的上下文資訊。
在經描繪實施例中,表900之條目係與索引(其可明確地儲存在該表中或可基於條目在表900內之位置而為隱式的)相關聯,且包括上下文欄位類型,包括功率大小、偏移、版本及密碼上下文。在其他實施例中,表900可包括其他上下文欄位類型或一或多個上下文欄位類型之任何合適的子集。
偏移值可為添加至藉由對經加密輸入指標(諸如根據編碼902經編碼之線性位址)進行解密而產生之明文線性位址值的值。所得總和接著可用作可經映射至資料之實體位址的線性位址,同時將經加密輸入指標用作用於對資料進行加密或解密之密鑰或微調。因此,結合偏移值,單個密碼指標可用於映射至待存取之資料之實體位址以及用於關於資料之密碼操作。因此,再次參考以上實例,VMM、網路連接程序或其他適合的軟體實體可利用偏移以在由軟體實體利用之位址空間(當前位址空間)與由諸如訪客機器或用戶端程序之另一軟體實體利用的位址空間之間進行轉譯(其中由另一軟體實體利用之位址空間可包括用於對由位址空間參照之資料進行加密的線性位址)。因此,軟體實體可正確地對使用來自另一軟體實體之線性位址空間的線性位址加密之資料進行解密。
作為使用表900以獲得偏移之替代方案,一些實施例可將偏移儲存在暫存器中。此偏移接著可添加至明文線性位址,該明文線性位址藉由在將線性位址轉譯為實體位址之前而對在記憶體存取指令中指定之經加密指標進行解密而產生,同時將經加密指標用作用於關於儲存於明文線性位址處之資料的密碼操作之資料微調。
在其他實施例中,部分同態加密可用於將偏移添加至至少部分地經加密之指標中之線性位址,以縮減明文位址之曝露。在此實施例中,該偏移可經加密,且所得密文可經添加至至少部分地經加密之指標之對應的密文。藉由添加二個密文,明文偏移有效地經添加至基礎明文線性位址。該結果可經解密及轉譯以獲得資料之實體位址,同時原始經加密指標用作用於關於資料之密碼操作的資料微調。其他實施例可替代地利用完整同態加密以執行此操作,但可需要額外邏輯以實施相對於部分同態加密的完整同態加密。
在一些實施例中,功率大小值可規定微調位址908中之位元之數目(且因此隱式地規定指標算術部分910中之位元之數目及記憶體中之分配的大小(或粗略大小))。該版本可表示與功率大小相關聯之分配的特定版本。版本號碼可為明確地不同的值,諸如及時判定經參照之經分配記憶體的當前所有權之序列號。每當針對最新分配之記憶體創建間接位址時,該序列號都可遞增預定量。
在經描繪實施例中,分配912包括各種分配。分配912包括:功率大小為P 0且具有相同的基礎位址之二個不同的版本(其中每一版本與不同的版本值相關聯);功率大小為P 1之二個不同的分配(在不同的基礎位址處)、功率大小為P 2之8個不同的分配(其中此等不同的分配中之一組四個具有第一版本值且另一組四個具有第二版本值),及功率大小為P 3之24個分配(其中8個中之每一組具有其自身的各別版本值)。在此實例中,功率大小Pi隨著I減小而增加(但在於指標中指定功率大小之實施例中,用於功率大小之逐漸增加的值可對應於逐漸增加的分配大小)。表900中之每一列可與特定分配或一組分配相關聯(且該列中之上下文資訊中之任一者可用於對各別分配之資料進行加密)。
密碼上下文可包括密碼資料密鑰、隨機數、微調值,或可用於關於資料之密碼操作中的其他資訊。在一個實施例中,密碼上下文可與來自該表之諸如版本值或功率大小值之其他資訊組合,以產生可用於密碼操作中之值。
在一些實施例中,該表900可與多租戶情境一起使用,在該等情境中,程序內之多個隔室各自具有其自身的密碼資料密鑰(且因此可使用不同查詢標籤904以在該表900中例如在密碼上下文欄位內參照密鑰)。該等隔室亦可具有共用記憶體區,其可使用共同密碼密鑰來存取(此密鑰亦可在該表900中且可使用相同查詢標籤904由多個隔室存取)。
廢料收集
圖10描繪根據某些實施例之結合廢料收集操作使用之各種記憶體空間及密碼密鑰之表。許多程式化語言利用自動記憶體管理,其可利用通常被稱作廢料收集之程序。廢料收集程序可追蹤如何在應用程式內參照記憶體且偵測對記憶體之主動參照何時經去除或到期(例如藉由偵測不再自堆疊記憶體參照之孤立物件、全域變數或暫存器,無論直接地抑或間接地)。接著可回收且出於其他目的使用基礎記憶體。在至少一些實施例中,廢料收集在儲存物件或動態資料之記憶體中之堆上操作。
在經描繪實施例中,展示三個記憶體空間:新的空間1002、中間空間1004,及舊的空間1006。新的空間1002可用於新的記憶體分配,中間空間1004可在廢料收集期間結合新的空間使用且亦可儲存新的記憶體分配,且舊的空間1006可用於早期的分配。在一些語言中,新的空間1002可被稱作「來自空間」,且中間空間1004可被稱作「去往空間」。每一空間可包括各種大小的分配以及自由空間。當保留用於空間中之新的物件之分配時,用於彼空間之分配指標(alloc ptr)可根據分配大小遞增。一旦分配指標達至經填充空間之末端,則可觸發廢料收集遍次以將分配自彼空間移動至其他空間中之一或多者中以便使記憶體緊湊。
在各種實施例中,廢料收集器可每隔一段時間檢查用於未使用的物件之空間,該等間隔時間對於不同空間可為不同的。舉例而言,最新分配之物件可具有經回收之相對較高可能性,因此廢料收集在新的空間1002及中間空間1004上可比在舊的空間1006上更頻繁地運行(一旦記憶體分配經受若干廢料收集遍次,則其將在近期內未使用的機率會顯著地下降,因此不會像新的空間1002那樣頻繁地檢查舊的空間1006)。
一旦新的空間1002填充有記憶體分配(如由分配指標之位置指示),則可對新的空間執行廢料收集遍次。若分配不再有效,則釋放該分配。若分配係有效的,則其可在操作1008中移動至中間空間中或在操作1010中移動至舊的空間中(例如較新的分配可移動至中間空間1004中,而諸如經受了臨限數目個(例如2個)廢料收集遍次之分配的較舊分配可自新的空間1002移動至舊的空間1006)。移動至中間空間1004中之分配可以連續方式置放,以最大化中間空間1004內之自由空間的區域之大小。在完成了廢料收集遍次之後,新的空間1002經清空,且中間空間1004及新的空間1002互換角色。新的記憶體分配置放於中間空間1004之自由空間中,直至中間空間1004之分配指標達至中間空間1004之末端且接著在中間空間1004上運行廢料收集(其中較新分配以連續方式經寫入至新的空間1002,且較舊分配經寫入至舊的空間1006)。新的空間1002及中間空間1004再次互換角色,且該程序可以此方式繼續任意次數。
廢料收集可在舊的空間上較不頻繁地運行(例如以規則間隔,或回應於觸發,諸如可用的舊的空間之量小於臨限值之判定)。廢料收集器遍歷舊的空間中之分配,且若分配不再有效,則收集器將分配標記為經釋放。廢料收集器亦可藉由在舊的空間中重新配置物件來使舊的空間中之記憶體緊湊。
在本揭露內容之實施例中,用於對儲存在各種空間中之資料進行加密或解密之密碼密鑰可以某些間隔刷新,以便增強堆之安全性(因為使用密鑰之時間越長,則密鑰變得越易受攻擊)。在一個實施例中,不同的密碼密鑰用於每一空間,且當物件自一個空間移動至另一空間時,基於用於該物件自其移動之空間的密鑰來對該物件進行解密,且接著基於用於其移動至之空間的密鑰對其進行加密。用於特定空間之密碼密鑰可以任何合適方式與彼空間相關聯。舉例而言,可使用範圍暫存器或保護密鑰(例如儲存在頁表條目中之密鑰的ID)使密鑰與各別空間進行映射。
在一些實施例中,可結合廢料收集程序刷新用於空間之密鑰。舉例而言,在將新的空間1002之物件壓縮至中間空間1004中之前,針對中間空間選擇新的密碼密鑰,且此密碼密鑰用於對物件進行加密以用於儲存在中間空間中。因此,當物件自新的空間1002移動至中間空間1004中時,可使用針對新的空間1002界定之密鑰對該物件進行解密且接著使用針對中間空間1004界定之新的密鑰對其進行加密。一旦完成新的空間1002上之廢料收集,則用於新的空間1002之密鑰可被刪除,經標記為非作用中,或可藉由新的密鑰覆寫。在下一個廢料收集遍次(對中間空間1004執行)中,在將中間空間1004之物件壓縮至新的空間1002中之前,針對新的空間選擇新的密碼密鑰,且此密碼密鑰用於對物件進行加密以用於儲存在新的空間中(在使用針對中間空間界定之密鑰經解密之後)。
作為另一實例,在經由廢料收集遍次壓縮舊的空間1006之前,針對新的資料儲存(例如針對自新的空間1002或中間空間1004複製至舊的空間1006中之物件或針對在舊的空間之重組期間自舊的空間之一個位置複製至舊的空間之另一位置中之物件)選擇新的密鑰。先前用於舊的空間1006之密鑰接著可變為「舊的密鑰」。因為舊的空間1006可包括使用不同密鑰(例如新的密鑰及舊的密鑰)加密之物件,所以處理器單元可支援記憶體存取指令,該記憶體存取指令可當在廢料收集期間讀取待壓縮之舊的分配時規定待使用之密鑰(例如舊的密鑰)。相同的記憶體存取指令接著可用於規定新的密鑰以對彼相同資料進行加密,且將其移動至舊的空間1006之不同部分。
為了促進使用不同空間當中之多個密鑰(或空間中之一者內之多個密鑰),各種實施例提供記憶體存取指令MOVOVERRIDEKEY,其接受規定資料將移動至之位置的目的地運算元、規定儲存資料之位置的來源運算元,及識別待用於關於資料之密碼操作中之密鑰的第三運算元。當MOVOVERRIDEKEY指令規定資料自記憶體至暫存器之移動時,來源運算元可規定記憶體之線性位址,而目的地運算元規定資料將移動至之暫存器(在根據由第三運算元規定之密鑰經解密之後)。當MOVOVERRIDEKEY指令規定資料自暫存器至記憶體之移動時,目的地運算元可規定資料將儲存至之記憶體的線性位址(在根據由第三運算元規定之密鑰經加密之後),且該來源運算元可規定儲存資料之暫存器。
在一個實施例中,該指令可在將資料自記憶體擷取至暫存器中時經規定為MOVOVERRIDEKEY r64、m64、imm16,且在資料自暫存器移動至記憶體中時經規定為MOVOVERRIDEKEY m64、r64、imm16,其中r64規定將儲存資料(在儲存在記憶體中之前或在自記憶體擷取之後)之64位元暫存器,m64規定將儲存資料(在自暫存器移動之後或在移動至暫存器之前)之記憶體之64位元線性位址,且imm16規定識別將用於密碼操作中之密鑰的立即值(例如該立即值可為密碼密鑰之表1012的索引)。在各種實施例中,MOVOVERRIDEKEY之運算元可採用任何合適的格式(例如立即值、暫存器、記憶體位址等)且可具有任何合適的長度或指代具有任何合適的長度之參數。舉例而言,第三運算元並非立即值,而可為儲存待使用之密鑰(或對密鑰之參照)的暫存器。
表1012為可使用MOVOVERRIDEKEY指令之運算元(例如立即運算元)索引的一組實例密鑰。在經描繪實施例中,該表包括用於新的空間之第一密鑰、用於中間空間之第二密鑰,及用於舊的空間之二個密鑰(「舊的」密鑰及「新的」密鑰)。
在一些實施例中,並非使用可規定多個可用密鑰中之一者的指令,舊的空間1006可與新的密鑰及舊的密鑰二者混疊,且適當的別名可用於每一存取以選擇待使用之密鑰(用於加密或解密操作)。舉例而言,舊的空間1006可經混疊以具有至相同實體記憶體的多個線性位址至實體位址之記憶體映射(例如使用新的密鑰之一個記憶體映射及使用舊的密鑰之一個記憶體映射)。因此,不同的線性位址(用於每一別名之線性位址)可映射至相同實體位址。執行廢料收集之軟體接著可取決於應使用哪一密鑰來存取對應的實體位址處之資料來選擇適當別名(且因此選擇適當線性位址)。
在一些實施例中,每一應用程式可具有其自身的堆,該堆具有其各別用於廢料收集之空間(諸如所展示之空間或其變體)。在一些實施例中,多個堆(各自具有各別空間,諸如所展示之空間或其變體)可用於相同程序內(例如,每一指令碼可具有不同堆且每一堆將具有其自身新的空間、中間空間及舊的空間)。用於不同堆之密鑰可用不同密鑰ID來識別(因此,表1012可包括用於多個不同堆之條目)。在一些實施例中,運行時間(例如JavaScript運行時間)可經授權以結合不同的堆之間的切換以更新表1012 (例如以包括特定針對於待存取之堆的密鑰)。舉例而言,該表可實施於使用者模式控制暫存器中,該等使用者模式控制暫存器之內容可藉由運行時間修改。
指標壓縮
圖11說明根據某些實施例之用於與上下文資訊相關聯之分配的經壓縮指標1104。在以下實例中,論述64位元指標至32位元指標之壓縮及對應的解壓縮。在其他實施例中,具有任何合適長度的指標可經壓縮或經解壓縮成具有任一其他合適長度之指標。因此,可針對任何合適長度的指標執行與本文中所描述的操作類似之操作。舉例而言,128位元指標可經壓縮成32位元指標或64位元指標。
在一些程式化語言(例如JavaScript、Java等)中,具有第一長度之指標可經壓縮成較短長度以縮減儲存在記憶體中之指標所需的空間。指標之壓縮可縮減可包括在經儲存指標內之上下文資訊之量(或在一些情況下,需要將上下文資訊完全保留在經壓縮指標之外)。本揭露內容之各種實施例允許保存用於綁定經加密資料之上下文資訊,即使在利用經壓縮指標時亦如此(例如藉由與對應於經壓縮指標之分配相關聯地儲存上下文資訊)。
在一個實施例中,與經壓縮指標1104相關聯之上下文資訊(例如功率大小1106) (例如不適合經壓縮指標)可正好在記憶體中之分配1108之前經儲存。在至少一些引擎(例如,V8 JavaScript引擎)中,當指標儲存在記憶體中時,該指標指代分配之基址,因此緊接在分配之前儲存上下文資訊可允許簡單地存取上下文資訊(儘管上下文資訊係與經壓縮指標單獨地儲存(因為經壓縮指標或經壓縮指標之多個例項可儲存在記憶體之與經壓縮指標定址至的分配1108分離的一部分中))。在本揭露內容之各種實施例中,32位元指標1104之解壓縮可涉及將上下文資訊(例如1106)以及分配1108之基礎位址(其可指代分配1108之第一詞語之開始的實際位址或可指代上下文資訊自身之開始)置放至經解壓縮64位元指標1102中。經解壓縮指標1102可具有任何合適的格式,諸如用於本文中所描述的指標之格式中之任一者,且可包括任何合適的上下文資訊(例如功率大小、版本資訊、類型資訊、分配長度,或用於關於分配1108之資料的密碼操作中之其他合適的資訊)。即使未將所有上下文資訊儲存在經壓縮32位元指標1104內,亦可利用各種實施例以持堆之不同物件之間的安全隔離。
在經描繪實施例中,上下文資訊包含功率大小1106,其可指示例如二個槽大小之哪一功率最適合分配1108之大小。當經壓縮指標1104經解壓縮時,功率大小1106可置放於64位元指標1102中。當64位元指標用於將資料儲存至分配時,資料之加密可基於功率大小1106,且當64位元指標用於自分配存取資料時,功率大小1106可用於對資料進行解密(例如功率大小可用於密碼密鑰或微調內)。因此,若發生影響指標1102參照之物件的緩衝器溢位,則溢出之分配可受到保護,因為其以不同方式經加密(因為其可基於特定針對於彼分配之不同功率大小而經加密)。
在一些實施例中,與分配相關聯地儲存之上下文資訊(或其部分)可經加密。在一個實施例中,可使用與分配1108之資料相同的密鑰對上下文資訊進行加密。在另一實施例中,不同密鑰可用於對上下文資訊進行加密。在一些實施例中,儲存上下文資訊之位置(或分配之位置)可用作用於加密之微調。具有用於上下文資訊加密之擴散的密碼可適用於減少選擇性地翻轉上下文資訊中之位元的嘗試。
圖12說明根據某些實施例之用於與包括魔數1206及分配長度1208之上下文資訊相關聯的分配1210的經壓縮指標1204。魔數1206可為任一合適的數字且可用於保護與分配1210相關聯地儲存之上下文資訊的完整性。魔數1206可進一步藉由類似於鑑別碼操作來加強分配1210之安全性。其用於驗證用於經儲存上下文資訊之明文與如預期魔數所界定之預期格式匹配。若任一上下文資訊已經損壞,則假設所使用的密碼演算法具有足夠的擴散,明文魔數很有可能亦將被損壞。此可促進經損壞指標值之早期偵測,且可幫助調試或識別惡意軟體。
分配長度1208可為分配1210之精確長度(例如,與由功率大小提供之粗算相反),且分配長度1208可包括在經解壓縮指標1202內。假設分配足夠大,包括分配長度可當用於與分配相關聯之密碼中時提供額外的安全性保護。舉例而言,分配長度可用作微調或用於當存取分配時使用之密鑰內。
分配長度可另外或替代地用於執行界限檢查(以確保自分配1210請求資料之指標值參照由基礎位址及分配長度所界定之範圍內的位置)。舉例而言,可進行檢查以判定由指標規定之偏移是否小於分配長度1208。舉例而言,記憶體運算元之某些格式規定基礎暫存器及與基礎暫存器中之位址分離的按比例縮放索引及/或位移二者。處理器單元可將基礎暫存器解釋為將分配之開始及經按比例縮放索引及/或位移之總和作為分配內的偏移來參照。處理器單元接著可檢查整個經請求存取係在分配之界限內。替代地,若使用足夠大的(例如128位元)未經壓縮指標表示,則基址、界限及偏移均可適合經解壓縮指標,使得可執行界限檢查,而不管記憶體運算元之格式如何。
在一些實施例中,儲存於分配(例如1108、1210)內之資料的加密可用與分配(例如,分配基礎位址)相關聯地儲存上下文資訊之記憶體位置的位址之全部或一部分來進行微調。若對手試圖複製彼經加密上下文資訊且將其置放在另一分配前方以試圖操縱對彼另一分配之存取,則該嘗試將被挫敗,此係因為另一分配在不同的儲存位置處開始且因此將具有不同的微調值。
可藉由隔離分配基礎位址來促進時間安全性。在此類實施例中,可重複使用所有記憶體,但分配置放於不同的基礎位址處。該隔離可持續任何合適的時間量。在一些實施例(例如,將分配基礎位址及分配長度併入加密中之實施例)中,該隔離可基於分配基礎位址及分配長度(使得隔離僅有的分配基礎位址及分配長度對)。因此,可重複使用具有不同分配長度之分配基礎位址,或可在不同分配基礎位址下重複使用分配長度,且不被隔離。
圖13描繪根據某些實施例之與分配1306相關聯地儲存之指標標籤位元1302及上下文資訊1304。諸如瀏覽器之應用程式可使用指標標籤位元1302以區分資料(例如整數)及指標(當指標儲存在記憶體中時)。指標標籤位元1301可指示分配1306中之對應的詞語是否含有指標或非指標資料。
在一些實施例中,指標標籤位元1302可與分配1306中之每一詞語分開但與該每一詞語並排儲存(例如,儲存在指標標籤位元圖中,諸如緊接在上下文資訊1304或分配1306之前或緊接地在分配1306之後儲存的二進位值)。在各種實施例中,可藉由將標籤位元圖與分配(如實施例中所描繪)或外部指標標籤位元保持一致來明確地減輕釋放後使用(UAF)攻擊。可藉由掃描記憶體中之所有指標(例如自暫存器開始且以遞歸方式遞減)且確保在允許重新分配用於彼分配之記憶體之前已刪除至經釋放分配之所有指標來執行確定性的UAF緩解。
在一些系統中,普通記憶體存取指令不會存取指標標籤位元(例如,處理器單元可隱式地存取指標標籤以便保護指標)。諸如瀏覽器之應用程式可丟棄經壓縮指標之32位元表示中的位元中之一者,且用與標籤位元1302類別不同的標籤來替換彼位元。此類別之標籤之目的實際上係區分記憶體之含有指標的詞語與記憶體之含有資料值之詞語。可藉由對指標之其他31個位元進行加密且使標籤位元未經加密來維持與此方法之相容性。若資料儲存於記憶體詞語而非指標內,則其可以其明文格式儲存。
在一些記憶體存取中,指標之較低位址位元可未經加密使得可執行指標算術以編索引至分配中。然而,在諸如瀏覽器之一些應用程式中,經壓縮指標可參照物件之基址,且因此關於經壓縮指標之指標算術係不必要的(實際上,可在對指標解壓縮之後執行指標算術)。因此,在一些實施例中,可對整個經壓縮指標(例如1104、1204或其變體)進行加密。在其他實施例中,除標籤位元之外,亦可對經壓縮指標進行加密(因此32位元經壓縮指標之31個位元可經加密,且該標籤位元可保持未加密)。
圖14描繪根據某些實施例之用於壓縮指標之流程。該流程開始於在1402處發佈指標壓縮指令COMPRESSPTR。在經描繪實施例中,COMPRESSPTR指令接受作為第一運算元之將儲存32位元經壓縮指標之記憶體位址,及識別儲存64位元未經壓縮指標之暫存器的第二運算元。在其他實施例中,經壓縮指標及未經壓縮指標可為任何其他合適的長度。舉例而言,未經壓縮指標之位元長度可為128,且經壓縮指標之位元長度可為32或64。
在1404處,對未經壓縮指標進行存取及解密(藉由COMPRESSPTR指令參照之未經壓縮指標可部分地或整體地經加密)。
在1406處,自經解密指標減去堆基礎位址暫存器之值以產生堆偏移。因為單個程序可利用多個堆,以便防止32位元指標之間的錯誤混疊(其中可能會參照錯誤的堆),所以可利用用於每一堆之不同的基礎位址。堆基礎位址暫存器可儲存經存取之當前堆的位址。類似地,指標壓縮可應用於除堆以外之其他區,例如,堆疊及全域變數。若壓縮至多於一個區之指標,則軟體將告知處理器單元針對每一經壓縮指標參照哪一區,且可界定用於非堆區之額外基礎位址暫存器。舉例而言,經壓縮指標內之一或多個位元可識別該區。替代地或另外,可執行指令以在對應的記憶體存取之前更新堆基礎位址暫存器。堆基礎位址暫存器可等效地用作堆疊基礎位址暫存器、全域基礎位址暫存器等。
在一個實施例中,專用於儲存堆(或堆疊、全域變數等)基礎位址之暫存器包括於處理器單元中。此暫存器可出於其他目的釋放通用暫存器(其在一些運行時間中用於儲存堆基礎位址)。使用此暫存器亦可簡化COMPRESSPTR指令,此係因為該暫存器隱式地用於指令且暫存器不需要作為運算元包括在指令中。在其他實施例中,COMPRESSPTR指令可接受規定包括堆基礎位址之暫存器的運算元。
在1408處,判定堆偏移是否可在32位元內表示。若堆偏移不可在32位元內表示,則會在1410處產生故障(因為此可指示經解壓縮指標或堆基礎位址受到損壞)。若堆偏移可在32位元內表示,則該流程移動至1412。
在1412處,對堆偏移進行加密以形成經壓縮指標,且在1414處,將經壓縮指標儲存於經規定記憶體目的地處。在各種實施例中,根據本文中所描述的加密方案中之任一者來對經壓縮指標進行加密(例如該加密可基於包括於未經壓縮指標中之上下文資訊及/或與儲存經壓縮指標之分配相關聯的資料加密密鑰)。
在利用指標標籤位元之實施例中(例如如圖13中所展示),在1416處,設定對應於儲存經壓縮指標之目的地記憶體位置的指標標籤位元(例如詞語)。標籤位元可指示記憶體位置儲存一指標。
圖15描繪根據某些實施例之用於解壓縮指標之流程。該流程開始於在1502處發佈指標解壓縮指令DECOMPRESSPTR。在經描繪實施例中,DECOMPRESSPTR指令接受作為第一運算元的用以儲存64位元未經壓縮指標之暫存器及作為第二運算元之儲存32位元經壓縮指標之記憶體位址。在其他實施例中,經壓縮指標及未經壓縮指標可為任何其他合適的長度。舉例而言,未經壓縮指標之位元長度可為128,且經壓縮指標之位元長度可為32或64。
在1504處,在一些實施例(例如利用指標標籤之實施例)中,進行關於指標標籤是否指示由第二運算元參照之詞語為經壓縮指標之檢查。若指標標籤指示該詞語並非經壓縮指標,則在1506處產生故障且不執行該指令。若該標籤指示該詞語為經壓縮指標,則該流程移動至1508。
在1508處,自由該指令指示之記憶體源載入經壓縮指標。在1510處,接著對經壓縮指標進行解密。在各種實施例中,與儲存經壓縮指標之分配相關聯地儲存之上下文資訊用於解密中。在各種實施例中,該解密利用足以促進偵測對經壓縮指標之竄改的擴散。
在1512處,將來自經解密之經壓縮指標的堆偏移添加至堆基礎位址暫存器(其可為如上文所描述之專用暫存器2840或在該指令中規定之暫存器)的值以產生64位元線性位址。
在1514處,可自分配之前的空間載入與分配相關聯地儲存之上下文資訊且將該上下文資訊編碼在64位元線性位址內以產生64位元指標。在各種實施例中,可對64位元指標之全部或一部分進行加密。在1516處,將所得經加密指標值置放於由指令規定之目的地暫存器中。
圖16描繪根據某些實施例之與記憶體中之分配相關聯地儲存上下文資訊之流程。在1602處,發佈初始化指令INITCOMPRESSEDPTROBJ。在經描繪實施例中,初始化指令接受規定含有至分配之未經壓縮指標的暫存器之第一運算元。在一個實施例中,未經壓縮指標可包括上下文資訊。在一些實施例中,初始化指令可接受包括或參照上下文資訊之一或多個額外運算元。
在1604處,將在未經壓縮指標及/或額外運算元中規定之上下文資訊儲存至在由未經壓縮指標參照之分配之前的一位置。在各種實施例中,由指令規定之未經壓縮指標可經加密,且指令之執行可包括對未經壓縮指標進行解密以獲得分配在記憶體中之位置。一旦上下文資訊經儲存在記憶體中,則可經由如上文所描述之DECOMPRESSPTR指令獲得該上下文資訊。
在1606處,在利用指標標籤位元之實施例中,可初始化指標標籤位元以指示分配中之詞語中無一者包括指標。
實例
實例BA1係關於一種方法。該方法包含:執行包含第一運算元之記憶體存取指令,該第一運算元參照包含第一線性位址之指標,其中執行記憶體存取指令包含將第二線性位址轉譯為實體位址;存取實體位址處之資料;及基於指標對資料執行密碼操作。
實例BA2包括實例BA1之主題,其中該記憶體存取指令包含參照第二線性位址之第二運算元。
實例BA3包括任一先前實例BA之主題,其中執行記憶體存取指令包含將偏移添加至第一線性位址以產生第二線性位址。
實例BA4包括實例BA3之主題,其中執行記憶體存取指令包含使用嵌入於指標中之查詢標籤以編索引至表中,以獲得偏移。
實例BA5包括實例BA3之主題,其中執行記憶體存取指令包含自暫存器存取偏移。
實例BA6包括實例BA3之主題,其中將偏移添加至第一線性位址包含使用部分同態加密,以將呈經加密形式之偏移添加至呈經加密形式之第一線性位址。
實例BB1係關於一種設備。該設備包含用以儲存資料之記憶體元件及用以執行包含第一運算元之記憶體存取指令之電路系統,該第一運算元參照包含第一線性位址之指標,其中執行記憶體存取指令包含將第二線性位址轉譯為實體位址、存取實體位址處之資料及基於指標對資料執行密碼操作。
實例BB2包括實例BB1之主題,其中該記憶體存取指令包含參照第二線性位址之第二運算元。
實例BB3包括實例BB1之主題,其中執行記憶體存取指令包含將偏移添加至第一線性位址以產生第二線性位址。
實例BB4包括實例BB3之主題,其中執行記憶體存取指令包含使用嵌入於指標中之查詢標籤以編索引至表中,以獲得偏移。
實例BB5包括實例BB3之主題,其中執行記憶體存取指令包含自暫存器存取偏移。
實例BB6包括實例BB3之主題,其中將偏移添加至第一線性位址包含使用部分同態加密,以將呈經加密形式之偏移添加至呈經加密形式之第一線性位址。
實例BC1係關於一種方法。該方法包含:執行包含第一運算元之記憶體存取指令,該第一運算元參照包含第一線性位址之指標,其中執行記憶體存取指令包含存取嵌入於指標中之查詢標籤;基於查詢標籤而編索引至表中以獲得上下文資訊;及基於上下文資訊對經存取資料執行密碼操作。
實例BC2包括實例BC1之主題,其中該上下文資訊包括位址偏移。
實例BC3包括任一先前實例BC之主題,其中該上下文資訊包括功率大小。
實例BC4包括任一先前實例BC之主題,其中該上下文資訊包括版本。
實例BC5包括任一先前實例BC之主題,其中該上下文資訊包括密碼密鑰。
實例BC6包括任一先前實例BC之主題,其中該上下文資訊包括密碼微調。
實例BD1係關於一種設備。該設備包含用以儲存資料之記憶體元件及用以執行包含第一運算元之記憶體存取指令的電路系統,該第一運算元參照包含第一線性位址之指標,其中執行記憶體存取指令包含:存取嵌入於指標中之查詢標籤;基於查詢標籤編索引至表中以獲得上下文資訊;及基於上下文資訊對經存取資料執行密碼操作。
實例BD2包括實例BD1之主題,其中該上下文資訊包括位址偏移。
實例BD3包括任一先前實例BD之主題,其中該上下文資訊包括功率大小。
實例BD4包括任一先前實例BD之主題,其中該上下文資訊包括版本。
實例BD5包括任一先前實例BD之主題,其中該上下文資訊包括密碼密鑰。
實例BD6包括任一先前實例BD之主題,其中該上下文資訊包括密碼微調。
實例BE1係關於一種方法。該方法包含:將第一資料加密密鑰指派至第一記憶體空間及將第二資料加密密鑰分配至第二記憶體空間;及藉由釋放第一記憶體空間之不再有效的一或多個記憶體分配且將第一記憶體空間之其他記憶體分配移動至第二記憶體空間中來對第一記憶體空間執行廢料收集遍次。
實例BE2包括實例BE1之主題,進一步包含回應於起動對第一記憶體空間之廢料收集遍次而將第二資料加密密鑰指派至第二記憶體空間。
實例BE3包括任一先前實例BE之主題,進一步包含在廢料收集遍次期間執行記憶體存取指令,其中該記憶體存取指令包括規定第二記憶體空間內之位置的第一運算元及規定第二資料加密密鑰之第二運算元。
實例BE4包括任一先前實例BE之主題,其中執行第一記憶體空間之廢料收集遍次進一步包含將第一記憶體空間之至少一個記憶體分配移動至第三記憶體空間中,其中該第三記憶體空間包含根據第三加密密鑰加密之第一分配及根據第四加密密鑰加密之第二分配。
實例BE5包括實例BE4之主題,進一步包含維持第一線性位址空間以映射至第三空間且維持第二線性位址空間以映射至第三空間,其中該第一線性位址空間係與第三密碼密鑰相關聯,且該第二線性位址空間係與第四密碼密鑰相關聯。
實例BF1係關於一種設備。該設備包含用以儲存第一資料加密密鑰之第一記憶體元件、用以儲存資料加密密鑰之第二記憶體元件及電路系統,該電路系統用以:將第一資料加密密鑰指派至第一記憶體空間及將第二資料加密密鑰分配至第二記憶體空間;及藉由釋放第一記憶體空間之不再有效的一或多個記憶體分配且將第一記憶體空間之其他記憶體分配移動至第二記憶體空間中來對第一記憶體空間執行廢料收集遍次。
實例BF2包括實例BF1之主題,該電路系統回應於起動對第一記憶體空間之廢料收集遍次而將第二資料加密密鑰指派至第二記憶體空間。
實例BF3包括任一先前實例BF之主題,該電路系統用以在廢料收集遍次期間執行記憶體存取指令,其中該記憶體存取指令包括規定第二記憶體空間內之位置的第一運算元及規定第二資料加密密鑰之第二運算元。
實例BF4包括任一先前實例BF之主題,其中執行第一記憶體空間之廢料收集遍次進一步包含將第一記憶體空間之至少一個記憶體分配移動至第三記憶體空間中,其中該第三記憶體空間包含根據第三加密密鑰加密之第一分配及根據第四加密密鑰加密之第二分配。
實例BF5包括實例BF4之主題,該電路系統用以維持第一線性位址空間以映射至第三空間且維持第二線性位址空間以映射至第三空間,其中該第一線性位址空間係與第三密碼密鑰相關聯,且該第二線性位址空間係與第四密碼密鑰相關聯。
實例BG1包括一種方法。該方法包含:將分配保留在記憶體中;儲存與鄰近分配之分配相關聯的上下文資訊;產生包括上下文資訊之編碼的經解壓縮指標;及使用經解壓縮指標以存取分配中之資料,其中該存取包含基於上下文資訊執行密碼操作。
實例BG2包括實例BG1之主題,其中該指標之解壓縮包含將偏移添加至經壓縮指標。
實例BG3包括任一先前實例BG之主題,其中該上下文資訊包含功率大小。
實例BG4包括任一先前實例BG之主題,其中該上下文資訊包含分配之長度。
實例BG5包括任一先前實例BG之主題,其中該上下文資訊包含待檢查以驗證上下文資訊之另一部分之完整性的數字。
實例BG6包括任一先前實例BG之主題,進一步包含儲存鄰近上下文資訊或分配之多個指標標籤,其中各別指標標籤指示分配之一對應部分是否儲存指標或非指標資料。
實例BG7包括任一先前實例BG之主題,其中產生經解壓縮指標包括將32位元指標解壓縮成64位元指標。
實例BH1包括一種設備。該設備包含用以儲存資料之記憶體元件及電路系統,該電路系統用以:將分配保留在記憶體中;儲存與鄰近分配之分配相關聯的上下文資訊;產生包括上下文資訊之編碼的經解壓縮指標;及使用經解壓縮指標以存取分配中之資料,其中該存取包含基於上下文資訊執行密碼操作。
實例BH2包括實例BH1之主題,其中該指標之解壓縮包含將偏移添加至經壓縮指標。
實例BH3包括任一先前實例BH之主題,其中該上下文資訊包含功率大小。
實例BH4包括任一先前實例BH之主題,其中該上下文資訊包含分配之長度。
實例BH5包括任一先前實例BH之主題,其中該上下文資訊包含待檢查以驗證上下文資訊之另一部分之完整性的數字。
實例BH6包括任一先前實例BH之主題,該電路系統用以儲存鄰近上下文資訊或分配之多個指標標籤,其中各別指標標籤指示分配之一對應部分是否儲存指標或非指標資料。
實例BH7包括任一先前實例BH之主題,其中產生經解壓縮指標包括將32位元指標解壓縮成64位元指標。
實例BI1包括一種設備,其包含用以執行實例BA1至BA6、BC1至BC6、BE1至BE5或BG1至BG7中之任一者的方法之一或多個要素的構件。
實例BJ1包括一或多個非暫時性電腦可讀媒體,其包含指令,該等指令使得電子裝置在該電子裝置之一或多個處理器執行指令時執行實例BA1至BA6、BC1至BC6、BE1至BE5或BG1至BG7中之任一者的方法之一或多個要素。
實例BK1包括機器可讀儲存器,其包括機器可讀指令,該等機器可讀指令在被執行時實施實例BA1至BA6、BC1至BC6、BE1至BE5或BG1至BG7中之任一者之方法。
實例BL1包括一種設備,其包含:一或多個處理器及包含指令之一或多個電腦可讀媒體,該等指令在由該一或多個處理器執行時使得該一或多個處理器執行實例BA1至BA6、BC1至BC6、BE1至BE5或BG1至BG7中之任一者之方法。
藉由實施如本文中所描述之128位元指標,定址及基於此類定址之密碼保護(其可被稱作密碼運算(CC))可在裝置之核心及記憶體階層外部擴展至經由輸入/輸出(I/O或IO)互連件連接至核心及記憶體階層之其他裝置。類似於針對來自核心側之存取的基於CC之物件粒度記憶體保護,來自IO側上之不同裝置上下文之記憶體存取可能需要類似保護的才能真正地保護系統。隨著裝置及加速器(其可一般被稱作XPU,其可包括中央處理單元(CPU)、圖形處理單元(GPU)及其他類型的處理單元)日益被視為諸如雲平台之運算環境中之一流運算元件,IO安全性之重要性與日俱增。
本揭露內容之實施例提供關於系統單晶片(SoC) IO子系統之增強的關鍵新穎性,該系統單晶片IO子系統包括裝置以及相關聯的軟體堆疊以支援基於CC之保護語義且將其擴展至IO側。吾人自不同的IO威脅界限/保護粒度之態樣詳細列舉了此等適用的硬體及軟體改變,自類似於核心壁上之保護的自粗粒朝向日益細粒的保護開始。當參照「IO」、「IO子系統」或「IO側」等時,本說明書可參照裝置互連件及相關聯的協定,諸如基於周邊組件高速互連(PCIe)及/或基於運算快速鏈路(CXL)之互連件及相容裝置(其在本文中可被稱作「IO裝置」)及相同系統/平台(例如8插口伺服器平台)上之加速器。
實施 1
在此初始實例中,威脅界限包括對分配至裝置經指派至的IO裝置之直接記憶體存取(DMA)緩衝器外部的任何潛在的不可信之IO側存取(例如對關鍵的非IO程式碼、上下文之資料結構,將諸如環3應用程式之共同狀況假設為上下文)。儘管IO側頁表確實實行了存取控制,但存在某些IO程式化模型,如共用虛擬記憶體(SVM),其中IA頁表在CPU與IO裝置之間共用,藉此允許指標共用、非固定IO緩衝器等之優點,但同時使IO裝置能夠不受限制地存取應用程式/上下文記憶體(來自虛擬位址空間)。甚至類似於具有固定的應用程式頁面之嵌套式/二級頁表之一些IO虛擬化程式化模型亦用於保護作業系統(OS)關鍵記憶體結構,但允許裝置完全存取應用程式(訪客虛擬位址) GVA空間。在此類使用狀況情境中,藉助於核心壁上之CC語義連同至軟體堆疊之一些簡單擴展,吾人可保護應用程式記憶體之非IO程式碼及資料結構免於任何不可信的IO側存取(例如惡意裝置、驅動器等)。
圖17說明與執行本申請案之態樣的各種XPU相關聯之應用程式記憶體1710及資料1711、1712、1713的簡化方塊圖1700。在所展示之實例中,資料1711、1713係與主機裝置之CPU相關聯,而資料1712係與連接至主機裝置之IO裝置的程式碼或資料相關聯。如所展示,資料1711、1713係在記憶體1710中時經加密,其中該資料各自用如所展示之不同密鑰/微調對(例如用上下文特定的指標微調/密鑰)來加密。可根據本文中(例如關於以上圖2A至圖2B)及在美國專利第9,436,847號(名為「密碼指標位址編碼(Cryptographic pointer address encoding)」及/或美國專利申請案公開案第2020/0125501號(名為「基於指標之資料加密(Pointer Based Data Encryption)」)中揭露的密碼運算實施例來執行加密。此外,IO程式碼/資料1712未經加密。當相較於本文中所揭露之其他實施例時,由所展示之實例提供之保護可被稱作相對「粗粒的」。舉例而言,使用如圖17中所展示之應用程式記憶體分離,若惡意IO裝置存取非IO側記憶體(例如圖17之資料1711、1713),則經加密CPU資料/程式碼將導致返回廢料之讀取及有效地寫入廢料之寫入(其中CPU側讀取接著產生廢料)。
圖17中所展示之實例可允許不知曉CC語義之舊版裝置與實施CC之主機SoC協同操作。舉例而言,所展示之實例可能需要對IO軟體堆疊進行最小改變,此係因為CPU側分配通常將使用具有CC包裝器之啟發式glibc,但對於上文所提及之特定的IO程式化模型(例如SVM),IO記憶體分配器可使用不具有CC包裝器之舊版glibc。此可使用參數化「旋鈕」實現以停用用於例如clCreateBuffer的適用功能之各別程式庫中之CC保護。已經確保用以保護IO免於非IO影響之基於頁表的保護之IO側程式化模型可繼續使用未經修改的glibc (無CC感知)。總體而言,此粗粒(IO相對於非IO)保護使用狀況完全不需要任何SoC硬體或IO裝置改變。
此固有密碼及基於CC感知分配之IO/非IO分離亦將使得能夠以物件粒度位準在相同頁面上之CPU與IO裝置緩衝器之間進行共用。此將可能允許節省記憶體開銷及頻寬(例如橫跨IO/非IO物件之快取行),且可在細粒可擴展的功能即服務(FaaS)使用模型中日益重要。
此外,藉由CPU側上之經加密指標(且在IO側上未經加密),IO緩衝器映射/取消映射程序可藉由延遲輸入/輸出轉譯後備緩衝器(IOTLB)/裝置TLB (DevTLB)、輸入-輸出記憶體管理單元(IOMMU)快取失效來增強,此通常會導致當前平台上之高效能成本。吾人可在運用經加密核心側指標進行IO取消映射之後重新使用彼等分配,且任何IO側惡意存取(例如來自陳舊TLB/快取條目)將導致如上所述之不成功的資訊洩漏/損壞。作業系統(OS)可具有靈活的CC感知延遲IO失效策略,此可能提高淨系統效能。以上二者為藉由IO側上之CC擴展連同此實例啟用的一般使用狀況,可適用於其他細粒的CC IO保護,諸如下文進一步描述之保護。
實施 2
在來自以上實施1之進程中,CC語義可在邏輯上擴展以亦保護IO記憶體,此對於諸如SVM之上文所提及之不同的IO程式化模型可為尤其重要的。
圖18說明與執行本申請案之態樣之各種XPU相關聯的應用程式記憶體1810及資料1811、1812、1813之另一簡化方塊圖1800。在所展示之實例中,資料1811、1813係與主機裝置之CPU相關聯,而資料2012係與連接至主機裝置之IO裝置的程式碼或資料相關聯。如所展示,資料1811、1813中之每一者當在記憶體1810中時經加密,其中該資料運用如所展示之不同密鑰/微調對(例如運用上下文特定的指標微調/密鑰)經加密。可根據本文中(例如關於以上圖2A至圖2B)及在美國專利第9,436,847號(名為「密碼指標位址編碼(Cryptographic pointer address encoding)」及/或美國專利申請案公開案第2020/0125501號(名為「基於指標之資料加密(Pointer Based Data Encryption)」)中揭露的密碼運算實施例來執行資料1811、1813之加密。資料1812亦當儲存在記憶體1810中時使用租戶IO密鑰經加密。租戶IO密鑰可不同於經由CC啟發式程式庫由CPU使用之密鑰。
作為控制路徑操作之部分,此等經加密指標經發送至IO裝置,且可因此初始化對應的記憶體。實際的程式碼/資料加密密鑰(例如Gimli/GCM密鑰)可保持相同。若(例如藉由偽造的指標)在至CPU程式碼/資料結構之經允許分配外部進行惡意IO存取嘗試,則指標解密之後的IOMMU頁面查核行程將導致故障或如上文所描述之對應的讀取/寫入將導致廢料返回/CC完整性故障。另外,鑒於如上所述之相同的密碼分離語義,對IO程式碼/資料之不可信的CPU側存取(例如來自Jit程式碼、第3方外掛程式、程式庫等)將為不成功的。因此,自惡意/易受攻擊的CPU側存取提供IO側保護。
應注意,在此實例中,不使用用於此等IO指標(及實際資料)之加密的基於大小/類型/版本之微調,且藉此相同位址空間中之不同IO分配之間不存在保護(下文關於實施3進一步描述此情形)。此外,若不同租戶共用相同的位址空間(例如瀏覽器、資料庫、其他隔室化使用狀況等),則可運用租戶特定的IO指標加密密鑰來實現租戶間隔離。
圖19說明根據某些實施例之用於提供IO裝置資料加密之實例硬體組配1900的簡化方塊圖。在實例硬體組配1900中,主機SoC 1910經由諸如基於PCIe或CXL之互連件的互連件耦接至IO裝置SoC 1920。主機SoC 1910亦包括處理器1918及記憶體1919 (其中可儲存CPU資料及/或IO資料,例如,如圖18中所展示)。除了所展示之組件之外,每一SoC亦可包括其他組件。主機SoC 1910包括根埠1912,其可類似於PCIe根聯合體之根埠起作用。根埠1912包括:IOMMU 1914,其可包括記憶體管理單元(MMU),其將支援直接記憶體存取(DMA)之I/O匯流排連接至主機SoC 1910之記憶體1919;及加密引擎1916,其可執行如本文中所描述的一或多個加密/解密功能。舉例而言,加密引擎1916可在主機SoC 1910與IO裝置SoC 1920之間的互連鏈路上之儲存/傳輸(分別地)之前對經加密IO程式碼/資料1812進行加密/解密。IO裝置SoC 1920包括裝置TLB 1922及同調資料儲存器1924。
圖19中所展示之實例亦說明用於至IO側記憶體存取之粗粒CC伸展、例如用於SVM情境之操作的實例流程。下文展示且描述之實例流程參照CXL快取協定(因此使用PCIe位址轉譯服務(ATS)協定),但應理解,可在其他互連協定中利用基礎概念。首先,作為IO控制路徑中之命令提交(例如經由常規MMIO或特定的ENQCMD指令)之部分,經加密虛擬位址(EVA)經發送至IO裝置SoC 1920。作為資料路徑DMA操作之部分,IO裝置SoC 1920發回其接收之相同EVA。
在圖19中之(1)處,IO裝置SoC 1920經由PCIe ATS協定將包括EVA之轉譯請求發送至主機SoC 1910之根埠1912。根埠1912接著在(2)處使用加密引擎1916 (例如經由區塊密碼加密/解密方案,諸如如美國專利申請案公開案第2020/0145187號(名為「位元長度可參數化密碼(Bit-Length Parameterizable Cipher)」中所揭露之K密碼或另一32位元輕量級區塊密碼)將EVA解密為GVA。根埠1912接著將GVA定位在IOMMU 1914中。在單個IO指標加密密鑰之狀況下,可經由新的基礎位址暫存器(BAR)或甚至現有的VT-d BAR (用於定向I/O之虛擬化技術)藉由經記憶體映射IO (MMIO)在CPU側上安全地產生密鑰且在IO側上程式化該密鑰。對於多個IO密鑰,例如,每租戶或上下文密鑰,將現有裝置用於上下文VT-d映射,IO密鑰可儲存在程序位址空間ID (PASID)表條目中或經由彼條目中之指標經參照(例如每域ID為1)。在查找IA頁表之前,可經由以上方法獲得密鑰,且可對指標進行解密。基於K密碼之管道亦可在整合式IP中(例如主機I/O處理器(HIOP))且可保持單獨的硬體微架構以儲存藉由在專用BAR中曝露之請求者ID (RID)、PASID參照的密鑰。對於PCIe ATS,作為轉譯完成之部分,裝置可經擴展以將EVA+返回之HPA儲存在裝置TLB 1922中,且該PCIe協定可在經轉譯路徑上擴展以使用新的或現有前綴位元來發送作為相同TLP酬載之部分的EVA,以表示酬載中之有效的EVA。此係因為主機側上之實際資料加密/解密需要EVA。可在經轉譯路徑中進行(由GVA索引)且擷取其他VT-d擴展,如將EVA儲存在自用於待決的經轉譯(且藉此完成的轉譯)請求之PASID表條目參照的結構中。
接下來,在主機側上獲得主機實體位址(HPA),且在(3)處,HPA經發送至IO裝置SoC 1920。舉例而言,在DMA路徑中,無論未經轉譯(在EVA解密之後)抑或經轉譯(在PCIe ATS之狀況下),均可經由IOTLB存取/頁面查核行程正常獲得/檢查HPA。在(4)處,IO裝置SoC 1920使用經獲得HPA發送讀取或寫入請求。作為回應,主機SoC 1910經由加密引擎1916 (例如經由區塊密碼,例如,64位元區塊密碼,諸如PRINCE、伽羅華/計數器模式(GCM)或Gimli,或位元長度可參數化密碼,諸如K密碼)對儲存在主機記憶體中之資料進行解密,且在(7)處將經解密資料傳輸至IO裝置SoC 1920。對於寫入,EVA可儲存在IO輸入緩衝器條目中,且可經由IO路徑中之內嵌加密引擎1916對資料進行加密。對於讀取,EVA可另外儲存在現有分配的完成緩衝器條目(具有經攜載之唯一標籤)中,該條目可用於資料解密中以供完成。相同資料加密/解密管道可在讀取/寫入路徑上共用。對應的密鑰可經由安全的MMIO與IO子系統共用。
在一些實施例中,加密引擎1916可在傳輸至IO裝置SoC 1920之前對經解密資料執行完整性檢查。舉例而言,訊息鑑別碼(MAC)或散列可連同經加密資料一起儲存在記憶體中。若(例如藉由對手)改變經加密資料,則MAC在完整性檢查中將不再匹配(例如經由確定性的偵測)。
在所描述的實施例中,IO裝置始終經由互連件接收/傳輸未經加密之資料,從而使裝置改變最小(其中僅對用於PCIe ATS操作之EVA進行改變)。經由同級間MMIO存取藉由以上路徑附接至裝置之記憶體將按原樣起作用,其中對發起IO堆疊之DMA執行加密/解密。通用、可擴展的記憶體界限擴展支援任何裝置附接之系統記憶體(例如CXL記憶體協定),而無需對每一IO硬體堆疊之SoC改變。
圖20說明用於將密碼運算擴展至互連件上之I/O裝置的實例程序2000之流程圖。該實例程序可實施於軟體、韌體、硬體或其一組合中。舉例而言,在一些實施例中,圖20中所展示之實例程序中之操作可由主機裝置之電路系統(例如圖19之主機SoC 1910中之電路系統)執行。在一些實施例中,電腦可讀媒體可編碼有實施以下實例程序中之操作中之一或多者的指令。實例程序可包括額外或不同操作,且該等操作可以所展示之次序或以另一次序執行。在一些狀況下,圖20中所展示之操作中之一或多者經實施為包括多個操作之程序、子程序或其他類型的常式。在一些狀況下,可組合、以另一次序執行、並行執行、反覆、或以其他方式重複或以另一方式執行操作。應理解,在一些實施例中,程序2000之一些態樣可與下文描述之程序2300的態樣組合。
在2002處,主機裝置經由互連件(例如基於PCIe或CXL之互連件)自IO裝置接收轉譯請求,其中轉譯請求包括經編碼指標。經編碼指標可為如本文中所描述之經加密虛擬位址(EVA)。轉譯請求可為諸如如上文所描述之PCIe ATS之互連協定之位址轉譯請求。在2004處,對經編碼指標進行解碼以獲得記憶體位址。經獲得記憶體位址可為主機實體位址(HPA)。可如上文所描述例如經由IOMMU (例如圖19之IOMMU 1914)獲得HPA。在2006處,經由互連件將記憶體位址(例如HPA)傳輸至IO裝置。在2008處,接收對記憶體位址處之資料的讀取或寫入請求,且在2010處,主機裝置對儲存於記憶體位址處之經加密資料進行存取及解密。該解密可基於區塊密碼(例如64位元區塊密碼,諸如PRINCE、伽羅華/計數器模式(GCM)或Gimli,或位元長度可參數化密碼,諸如K密碼)。在2012處,主機裝置對經解密資料執行完整性檢查,且在2014處,經由互連件將經解密資料傳輸至IO裝置。
實施 3
在來自以上實施2之進一步進程中,實施3之範疇基於大小欄位、類型欄位、版本欄位或對應的緩衝器分配上之指標中之另一欄位運用微調強制執行IO內物件記憶體存取控制。在如在實施2內描述之租戶特定的IO分配密鑰之頂部上,對應的IO分配堆疊運用此微調資訊經啟發。因而,亦偵測到記憶體安全性問題,如IO程式碼/核心內之緩衝器溢位、懸空指標/釋放後使用(UAF)等(連同CPU側)/防止其引起利用漏洞。若IO記憶體自套接字分配至經附接DRAM,則如實施2中所描述之藉由增強型SoC/IOMMU之相同流程亦可適用於實施3。
圖21說明與執行本申請案之態樣的各種XPU相關聯之應用程式記憶體2110及資料2111、2112、2113、2114之又一簡化方塊圖2100。在所展示之實例中,資料2111、2113係與主機裝置之CPU相關聯,而資料2112、2114係與連接至主機裝置之IO裝置的程式碼或資料相關聯。如所展示,資料2111、2113中之每一者當在記憶體2110中時經加密,其中該資料運用如所展示之不同密鑰/微調對(例如運用上下文特定的指標微調/密鑰)經加密。可根據本文中(例如關於以上圖2A至圖2B)及在美國專利第9,436,847號(名為「密碼指標位址編碼(Cryptographic pointer address encoding)」及/或美國專利申請案公開案第2020/0125501號(名為「基於指標之資料加密(Pointer Based Data Encryption)」)中揭露的密碼運算實施例來執行資料2111、2113之加密。當資料2112、2114儲存在記憶體2110中時亦使用各別租戶IO密鑰/微調對該資料進行加密。租戶IO密鑰可不同於經由CC啟發式程式庫由CPU使用之密鑰。
圖22說明根據某些實施例之用於提供IO裝置資料加密之另一實例硬體組配2200的簡化方塊圖。在實例硬體組配2200中,主機SoC 2210經由諸如基於PCIe或CXL之互連件的互連件耦接至IO裝置SoC 2220。主機SoC 2210亦包括處理器2218及記憶體2219 (其中可儲存CPU資料及/或IO資料,例如,如圖21中所展示)。除了所展示之組件之外,每一SoC亦可包括其他組件。主機SoC 2210包括根埠2212,其可類似於PCIe根聯合體之根埠起作用。根埠2212包括IOMMU 2214,其可包括記憶體管理單元(MMU),該記憶體管理單元將支援直接記憶體存取(DMA)之I/O匯流排連接至主機SoC 1910之記憶體2219。此處,IO裝置SoC 2220包括加密引擎2216,其可執行本文中所描述的一或多個加密/解密功能。舉例而言,加密引擎2216可對在於互連件上傳輸至主機SoC 2210之前對經加密IO程式碼/資料(例如2112、2114)進行加密/解密。IO裝置SoC 1920亦包括裝置TLB 2222及同調資料儲存器2224。
相較於實施2,在IO裝置/加速器內吸收位於SoC IO子系統上之上文所描述的加密引擎。以上圖中展示裝置在PCIe ATS協定之後重新獲得HPA及使用其以存取任何系統記憶體之最常見狀況。此裝置涵蓋之CC H/W啟發防止需要支援SoC中之每一IO子系統堆疊上之硬體改變(理想地,無SoC改變)。此處,IO S/W堆疊將經加密虛擬位址(EVA)發送至控制路徑中之裝置。特定的IO指標加密密鑰經由PCIe安全協定及資料模型(SPDM)流程或經由命令提交控制路徑中之普通MMIO (使用PCIe/CXL IDE鏈路加密受保護之鏈路)而與裝置共用。對於多個密鑰,控制路徑主機/訪客S/W及裝置需要遵循某一協定以同步化(例如共用/通知密鑰改變以用於提交路徑中之租戶改變)。此可經由裝置介面管理協定(DIMP)中之新的訊息進行,該裝置介面管理協定作為可信任裝置要求之部分經標準化。
在圖22中之(1)處,IO裝置SoC 2220對EVA進行解密以獲得GVA,且亦可將原始EVA微調(例如EVA之一部分,諸如EVA之上部位元,包括大小欄位、版本欄位、類型欄位等中之一或多者)儲存在裝置TLB 2222之條目中。在(2)處,IO裝置SoC 2220將具有GVA之轉譯請求發送至主機SoC 2210。主機SoC 2210在藉由根埠2212中之IOMMU 2214 (或在一些情況下,經由裝置頁面查核行程)進行之轉譯之後獲得HPA,且在(4)處將HPA發送回至IO裝置SoC 2220。在(5)處,IO裝置SoC 2220儲存HPA,且在(6)處,IO裝置SoC 2220使用HPA將讀取/寫入請求發送至主機SoC 2210以存取記憶體2219 (其可在如所展示之主機SoC 2210中,或例如使用CXL記憶體協定以另一方式(例如,藉由附接至主機SoC 2210之裝置)耦接至主機SoC 2210)中之資料。
對於寫入,IO裝置SoC 2220使用加密引擎2226對待寫入之資料進行加密。加密引擎2226可運用基於EVA之計數器流對資料進行加密。對於讀取,IO裝置SoC 2220負責IO資料解密(相比於以上實施2)。用於對IO資料進行加密/解密之密鑰(例如64位元密碼,諸如PRINCE、伽羅華/計數器模式(GCM)或Gimli,或位元長度可參數化密碼,諸如K密碼)亦可經由建立之安全通道,例如,分別地經由PCIe/MCTP SPDM (管理組件傳送協定、安全性協定及資料模型) 1.1協定而與IO裝置SoC 2220共用。因此,所有CC密碼操作在IO裝置內部可為獨立的且將不取決於特定的主機SoC能力。自裝置硬體架構視角,完整性及資料加密(IDE) PCIe/CXL鏈路加密引擎2226可經擴展以支援IO裝置中之資料路徑加密/解密。藉由此可擴展的擴展,可運用用於IO之CC語義來支援任何系統記憶體(例如在平台上,且可藉由CXL記憶體協定存取)。
在一些實施例中,實施2及實施3之態樣可在系統中組合。舉例而言,一些IO裝置可不具有關於實施3所描述之組配(例如,諸如加密引擎2226之機載加密引擎),且可利用用於CC操作之主機SoC加密引擎,例如,如上文關於實施2所描述。在此類情況下,VT-d表可經擴展以指示頁面查核行程期間對用於CC之系統支援的要求(其中虛擬位址可經視為EVA)。在一些狀況下,IO裝置可在經編碼TLP前綴位元中通知主機SoC其CC能力/要求(例如如上文關於實施2所描述)。亦可採用其他模型特定的系統層級解決方案,諸如具有微架構表之IOMMU,該微架構表具有傳入裝置/匯流排:裝置.功能(BDF)之清單,其中在適當時不需要額外的CC操作。
最終,對於附接至IO裝置(例如不在系統位址空間中曝露)且由主機SoC/裝置驅動器管理之本端記憶體,可實施類似裝置側改變以支援針對彼記憶體中之所有本端分配的細粒的CC保護。
圖23說明用於將密碼運算擴展至互連件上之IO裝置的另一實例程序2300之流程圖。該實例程序可實施於軟體、韌體、硬體或其一組合中。舉例而言,在一些實施例中,圖23中所展示之實例程序中之操作可由IO裝置(例如圖22之IO裝置SoC 2220)之電路系統執行。在一些實施例中,電腦可讀媒體可編碼有實施以下實例程序中之操作中之一或多者的指令。實例程序可包括額外或不同操作,且該等操作可以所展示之次序或以另一次序執行。在一些狀況下,圖23中所展示之操作中之一或多者經實施為包括多個操作之程序、子程序或其他類型的常式。在一些狀況下,可組合、以另一次序執行、並行執行、反覆、或以其他方式重複或以另一方式執行操作。應理解,在一些實施例中,程序2300之一些態樣可與上文所描述之程序2000的態樣組合。
在2302處,對經編碼指標(例如EVA)進行解碼以獲得虛擬位址(例如GVA)。在2304處,經由互連件(例如基於PCIe或CXL之互連件)將GVA發送至主機裝置。在一些實施例中,作為例如PCIe ATS之互連協定的轉譯請求之部分,可發送GVA。在2306處,IO裝置作為交換接收記憶體位址(例如HPA)。在2308處,IO裝置將對記憶體位址處之資料的讀取或寫入請求發送至主機裝置,且在2310處,IO裝置基於讀取/寫入請求自主機裝置接收回經加密資料。在2312處,IO裝置(例如使用64位元區塊密碼,諸如PRINCE、伽羅華/計數器模式(GCM)或Gimli,或位元長度可參數化密碼,諸如K密碼)對資料進行解密,且在2314處,使用經解密資料來執行指令。
圖24至圖27說明實例互連實施例,其中可併入本揭露內容的態樣。參考圖24,說明由互連一組組件之點對點鏈路構成之網狀架構的實施例。系統2400包括耦接至控制器集線器2415之處理器2405及系統記憶體2410。處理器2405包括任何處理元件,諸如微處理器、主機處理器、嵌入式處理器、共處理器或其他處理器。處理器2405藉由前側匯流排(FSB) 2406耦接至控制器集線器2415。在一個實施例中,FSB 2406為如下文所描述的串列點對點互連件。在另一實施例中,FSB 2406包括與不同互連標準相容的串列差分互連架構。在一些實施中,該系統可包括用以實施多個協定堆疊之邏輯及用以協商待在共同實體層之頂部上運行的替代協定之其他邏輯,以及其他實例特徵。
系統記憶體2410包括任何記憶體裝置,諸如隨機存取記憶體(RAM)、非依電性(NV)記憶體,或由系統2400中之裝置可存取的其他記憶體。系統記憶體2410藉由記憶體介面2416耦接至控制器集線器2415。記憶體介面之實例包括雙資料速率(DDR)記憶體介面、雙通道DDR記憶體介面及動態RAM (DRAM)記憶體介面。
在一個實施例中,控制器集線器2415為周邊組件高速互連(PCIe或PCIE)互連階層中的根集線器、根聯合體,或根控制器。控制器集線器2415之實例包括晶片組、記憶體控制器集線器(MCH)、北橋、互連控制器集線器(ICH)、南橋,及根控制器/集線器。常常,術語晶片組係指二個實體分離之控制器集線器,例如,耦接至互連控制器集線器(ICH)的記憶體控制器集線器(MCH)。應注意,當前系統常常包括與處理器2405整合的MCH,而控制器2415以與如下文所描述之方式類似方式與I/O裝置通訊。在一些實施例中,任擇地藉由控制器集線器2415來支援同級間路由。
此處,控制器集線器2415藉由串聯鏈路2419耦接至交換器/橋接器2420。亦可稱為介面/埠2417及2421之輸入/輸出模組2417及2421包括/實施分層協定堆疊以在控制器集線器2415與交換器2420之間提供通訊。在一個實施例中,多個裝置能夠耦接至交換器2420。
交換器/橋接器2420在上游,例如沿著朝向根聯合體之層級向上將封包/訊息自裝置2425路由至控制器集線器2415,且在下游,例如沿著遠離根控制器之層級向下,將封包/訊息自處理器2405或系統記憶體2410路由至裝置2425。在一個實施例中,交換器2420被稱作多個虛擬PCI至PCI橋裝置的邏輯總成。裝置2425包括待耦接至電子系統之任何內部或外部裝置或組件,諸如I/O裝置、網路介面控制器(NIC)、添加式卡、音訊處理器、網路處理器、硬碟機、儲存裝置、CD/DVD ROM、監視器、印表機、滑鼠、鍵盤、路由器、攜帶型儲存裝置、火線裝置、通用串列匯流排(USB)裝置、掃描儀,及其他輸入/輸出裝置。常常,在PCIe中,諸如裝置之俗名(vernacular)被稱作端點。儘管未具體展示,但裝置2425可包括PCIe至PCI/PCI-X橋接器以支援舊版或其他版本PCI裝置。PCIe中之端點裝置常常分類為舊版、PCIe或根聯合體整合式端點。
圖形加速器2430亦藉由串聯鏈路2432耦接至控制器集線器2415。在一個實施例中,圖形加速器2430耦接至MCH,其耦接至ICH。交換器2420且因此I/O裝置2425接著耦接至ICH。I/O模組2431及2418亦將實施分層協定堆疊以在圖形加速器2430與控制器集線器2415之間進行通訊。類似於上文之MCH論述,圖形控制器或圖形加速器2430自身可整合於處理器2405中。此外,系統之一或多個鏈路(例如2423)可包括一或多個擴展裝置(例如2450),諸如重計時器、中繼器等。
轉至圖25,說明分層協定堆疊之一實施例。分層協定堆疊2500包括任何形式之分層通訊堆疊,諸如快速路徑互連(QPI)堆疊、PCIe堆疊、下一代高效能運算互連堆疊,或其他分層堆疊。儘管以下論述係關於PCIe堆疊,但相同概念可適用於其他互連堆疊。在一個實施例中,協定堆疊2500為PCIe協定堆疊,其包括異動層2505、鏈路層2510及實體層2520。介面,諸如圖24中之介面2417、2418、2421、2422、2426及2431,可表示為通訊協定堆疊2500。作為通訊協定堆疊的表示亦可被稱作實施/包括協定堆疊的模組或介面。
PCI高速使用封包來在組件之間傳達資訊。封包形成於異動層2505及資料鏈路層2510中以將資訊自傳輸組件攜載至接收組件。由於所傳輸封包流過其他層,因此該等封包藉由在彼等層處處置封包必要的額外資訊擴展。在接收側,反向程序發生,且封包自其實體層2520表示變換至資料鏈路層2510表示,且最終(對於異動層封包)變換至可由接收裝置之異動層2505處理的形式。
在一個實施例中,異動層2505將提供裝置之處理核心與互連架構之間的介面,諸如資料鏈路層2510及實體層2520。就此而言,異動層2505之主要職責為裝配及分解封包(例如,異動層封包,或TLP)。轉譯層2505通常管理TLP的基於信用之流程控制。PCIe實施分裂異動(例如,具有由時間分離之請求及回應的異動),從而允許鏈路攜載其他訊務,同時目標裝置收集針對回應之資料。
另外,PCIe利用基於信用之流程控制。在此方案中,裝置公告針對異動層2505中每一接收緩衝器的最初信用量。鏈路之相對末端處的外部裝置(諸如,圖24中之控制器集線器2415)對由每一TLP消耗之信用數目進行計數。若異動未超出信用限制,則可傳輸異動。在接收到回應之後,復原信用量。信用方案之優點為,信用傳回之潛時並不影響效能,其限制條件為並未遭遇到信用限制。
在一個實施例中,四個異動位址空間包括組配位址空間、記憶體位址空間、輸入/輸出位址空間及訊息位址空間。記憶體空間異動包括讀取請求及寫入請求中之一或多者以將資料傳送至記憶體映射位置/自記憶體映射位置傳送資料。在一個實施例中,記憶體空間異動能夠使用二種不同位址格式,例如,諸如32位元位址的短位址格式或諸如64位元位址的長位址格式。組配空間異動用於存取PCIe裝置之組配空間。對組配空間之異動包括讀取請求及寫入請求。訊息空間異動(或簡單地訊息)經定義以支援PCIe代理程式之間的頻帶內通訊。
因此,在一個實施例中,異動層2505裝配封包標頭/酬載2506。用於當前封包標頭/酬載之格式可在PCIe規範網站上之PCIe規範中發現。
亦被稱作資料鏈路層2510之鏈路層2510充當異動層2505與實體層2520之間的中間級。在一個實施例中,資料鏈路層2510之職責為提供用於經由鏈路在二個組件之間交換異動層封包(TLP)的可靠機構。資料鏈路層2510之一側接受藉由異動層2505組裝之TLP,應用封包序列識別符2511 (例如,識別編號或封包編號),計算並應用錯誤偵測碼(例如,CRC 2512),且提交經修改之TLP至實體層2520以供越過實體傳輸至外部裝置。
在一個實施例中,實體層2520包括邏輯子區塊2521及電氣子區塊2522以將封包實體傳輸至外部裝置。此處,邏輯子區塊2521負責實體層2520之「數位」功能。就此而言,邏輯子區塊包括準備去話資訊以供實體子區塊2522傳輸的傳輸區段,及在將接收到之資訊傳遞至鏈路層2510之前識別並準備接收到之資訊的接收器區段。
實體區塊2522包括傳輸器及接收器。由邏輯子區塊2521向傳輸器供應符號,傳輸器使該等符號串列化並傳輸至外部裝置上。接收器自外部裝置被供應有串列化符號,且將所接收信號變換成位元串流。位元串流經解串列化且供應至邏輯子區塊2521。在一個實施例中,使用8b/10b傳輸碼,在該8b/10b傳輸碼處傳輸/接收10位元符號。此處,特殊符號用於運用圖框2523來構建封包。另外,在一個實例中,接收器亦提供自傳入的串列流恢復的符號時鐘。
如上文所陳述,儘管異動層2505、鏈路層2510及實體層2520參看PCIe協定堆疊之特定實施例論述,但分層協定堆疊並不因此受限。實際上,可包括/實施任何分層協定。作為一實例,表示為分層協定之埠/介面包括:(1)裝配封包之第一層,例如,異動層;定序封包之第二層,例如鏈路層;及傳輸封包之第三層,例如實體層。作為具體實例,利用共同標準介面(CSI)分層協定。
多種其他互連架構及協定可利用本文中所論述的概念。在一個實例中,可使用運算快速鏈路(CXL)。CXL維持CPU記憶體空間與經附接裝置上之記憶體之間的記憶體一致性,此允許用於較高效能之資源共用、降低之軟體堆疊複雜性及較低的總系統成本,以及其他實例優點。CXL使得能夠在主機處理器(例如CPU)與一組工作負載加速器(例如,圖形處理單元(GPU)、場可規劃閘陣列(FPGA)裝置、張量及向量處理器單元、機器學習加速器、專用加速器解決方案以及其他實例)之間進行通訊。
CXL鏈路可為支援一致性、記憶體存取及輸入/輸出(I/O)協定之動態協定多工的低潛時、高頻寬離散或封裝上鏈路。在其他應用程式當中,CXL鏈路可使得加速器能夠存取作為快取代理程式及/或主機系統記憶體之系統記憶體,以及其他實例。CXL為經設計以支援廣泛的加速器之動態多協定技術。CXL提供一組豐富的協定,其在離散或封裝上鏈路上包括類似於PCIe之I/O語義(CXL.io)、快取協定語義(CXL快取)及記憶體存取語義(CXL記憶體)。基於特定加速器使用模型,可啟用所有CXL協定或僅協定之子集。在一些實施中,CXL可在完善的、廣泛採用之PCIe基礎設施(例如PCIe 5.0)上構建,利用PCIe實體及電介面以在包括I/O、記憶體協定(例如,允許主機處理器與加速器裝置共用記憶體)及一致性介面之區域中提供高階協定。
轉向圖26,展示簡化方塊圖2600,其說明利用CXL鏈路2650之實例系統。舉例而言,鏈路2650可將主機處理器2605 (例如CPU)互連至加速器裝置2610。在此實例中,主機處理器2605包括一或多個處理器核心(例如2615a至2615b)及一或多個I/O裝置(例如,2618)。主機記憶體(例如2660)可具備主機處理器(例如在相同封裝或晶粒上)。加速器裝置2610可包括加速器邏輯2620,且在一些實施中,可包括其自身的記憶體(例如加速器記憶體2665)。在此實例中,主機處理器2605可包括用以實施同調/快取邏輯2625及互連邏輯(例如PCIe邏輯2630)之電路系統。CXL多工邏輯(例如2655a至2655b)亦可經提供以啟用CXL協定(例如I/O協定2635a至2635b (例如CXL.io)、快取協定2640a至2640b (例如CXL快取)及記憶體存取協定2645a至2645b (CXL記憶體))之多工,藉此使得能夠以多工方式經由主機處理器2605與加速器裝置2610之間的鏈路2650發送經支援協定(例如2635a至2635b、2640a至2640b、2645a至2645)中之任一者之資料。
在一些實施中,Flex Bus TM埠可與符合CXL之鏈路協同使用以靈活地調適裝置以與多種其他裝置(例如,其他處理器裝置、加速器、交換器、記憶體裝置等)互連。Flex Bus埠為靈活的高速埠,其靜態地經組配以支援PCIe或CXL鏈路(且可能亦支援其他協定及架構之鏈路)。Flex Bus埠允許設計成在經由高頻寬、封裝外鏈路提供原生PCIe協定或CXL之間選擇。應用於埠處之協定的選擇可經由自動協商在啟動時間期間進行且可基於插入至槽中之裝置。Flex Bus使用PCIe電氣,使其與PCIe重計時器相容,且遵循用於添加式卡之標準PCIe外觀尺寸。
圖27說明簡化方塊圖,其說明用以實施CXL鏈路之實例埠架構2700 (例如Flex Bus)。舉例而言,Flex Bus架構可經組織為多個層以實施由埠支援之多個協定。舉例而言,該埠可包括異動層邏輯(例如2705)、鏈路層邏輯(例如2710)及實體層邏輯(例如2715) (例如在電路系統中全部或部分地實施)。舉例而言,異動(或協定)層(例如2705)可細分成:異動層邏輯2725,其實施PCIe異動層2755及基礎PCIe異動層2755之CXL異動層增強2760 (用於CXL.io);及邏輯2730,其用以實施用於CXL鏈路之快取(例如CXL快取)協定及記憶體(例如CXL記憶體)協定。類似地,鏈路層邏輯2735可經提供以實施基礎PCIe資料鏈路層2765及CXL鏈路層(用於CXl.io) (例如2770),該CXL鏈路層表示PCIe資料鏈路層2765之增強型版本。CXL鏈路層2710亦可包括快取及記憶體鏈路層增強邏輯2740 (例如用於CXL快取及CXL記憶體)。
繼續圖27之實例,CXL鏈路層邏輯2710可與CXL仲裁/多工(ARB/MUX)邏輯2720介接,該CXL仲裁/多工邏輯使來自二個邏輯串流(例如PCIe/CXL.io及CXL快取/CXL記憶體)之訊務交錯,以及其他實例實施。在鏈路訓練期間,異動及鏈路層經組配以在PCIe模式或CXL模式中操作。在一些情況下,主機CPU可支援實施PCIe或CXL模式,而諸如加速器之其他裝置可僅支援CXL模式,以及其他實例。在一些實施中,埠(例如Flex Bus埠)可基於PCIe實體層(例如PCIe電氣PHY 2750)利用實體層2715。舉例而言,Flex Bus匯流排實體層可實施為經會聚邏輯實體層2745,其可在鏈路訓練程序期間基於交替模式協商之結果在PCIe模式或CXL模式中操作。在一些實施中,實體層可支援多個傳信率(例如,8 GT/s、16 GT/s、32 GT/s等)及多個鏈路寬度(例如,×16、×8、×4、×2、×1等)。在PCIe模式中,由埠2700實施之鏈路可完全符合原生的PCIe特徵(例如如PCIe規範中所界定),而在CXL模式中,該鏈路支援針對CXL界定之所有特徵。因此,Flex Bus埠可提供點對點互連,其可傳輸原生PCIe協定資料或動態多協定CXL資料以經由PCIe電氣提供I/O、一致性及記憶體協定,以及其他實例。
CXL I/O協定、CXL.io為I/O裝置提供非同調載入/儲存介面。CXL.io中之異動類型、異動封包格式化、基於信用之流程控制、虛擬通道管理及異動排序規則可遵循PCIe定義之全部或一部分。CXL快取一致性協定、CXL快取將裝置與主機之間的相互作用界定為多個請求,其各自具有至少一個相關聯的回應訊息且有時具有資料傳送。該介面由在每一方向上之三個通道組成:請求、回應及資料。
CXL記憶體協定、CXL記憶體為處理器與記憶體之間的異動介面,且當橫跨晶粒進行通訊時使用CXL之實體層及鏈路層。CXL記憶體可用於多個不同記憶體附接選項,包括當記憶體控制器位於主機CPU中時、當記憶體控制器處於加速器裝置內時或當記憶體控制器移動至記憶體緩衝器晶片時,以及其他實例。CXL記憶體可適用於涉及不同記憶體類型(例如依電性、持久性等)及組配(例如平面、分層等)之異動,以及其他實例特徵。在一些實施中,主機處理器之一致性引擎可使用CXL記憶體請求及回應與記憶體介接。在此組配中,CPU一致性引擎被視為CXL記憶體主控器,且記憶體裝置被視為CXL記憶體從屬裝置。CXL記憶體主控器為負責獲取CXL記憶體請求(例如讀取、寫入等)之代理程式,且CXL記憶體從屬裝置為負責回應於CXL記憶體請求(例如資料、完成等)之代理程式。當從屬裝置為加速器時,CXL記憶體協定假設裝置一致性引擎(DCOH)之存在。假設此代理程式負責實施一致性相關功能,諸如基於CXL記憶體命令之裝置快取記憶體之探聽及元資料欄位之更新。在實施中,在元資料係由裝置附接之記憶體支援之情況下,其可由主機使用以實施CPU插口之粗略探聽濾波器,以及其他實例使用。
實例
實例CA1係關於一種設備,其包括:處理器;記憶體;及埠,其包含用以實施互連協定之一或多個層之電路系統,其中該電路系統將:自該互連件上之IO裝置接收經編碼指標;解碼經編碼指標以獲得記憶體中之記憶體位址;存取記憶體位址處之與IO裝置相關聯的經加密資料;基於經編碼指標及與IO裝置相關聯之密鑰對經加密資料進行解密;及將經解密資料傳輸至IO裝置。
實例CA2包括實例CA1之主題,其中該電路系統將使用區塊密碼對經加密資料進行解密。
實例CA3包括實例CA2之主題,其中該區塊密碼為K密碼、PRINCE密碼、Gimli密碼及伽羅華/計數器模式密碼中之一或多者。
實例CA4包括實例CA1至CA3中之任一者之主題,其中該電路系統將使用與IO裝置相關聯之密鑰及基於經編碼指標之微調值對經加密資料進行解密。
實例CA5包括實例CA4之主題,其中該微調值為經編碼指標之欄位。
實例CA6包括實例CA1至CA5中之任一者之主題,其中該經編碼指標為經加密虛擬位址(EVA),且該電路系統將進一步:對EVA進行解密以獲得訪客虛擬位址(GVA);自GVA獲得主機實體位址(HPA);及將HPA傳輸至IO裝置;及自包括HPA之IO裝置接收讀取或寫入請求。
實例CA7包括實例CA1至CA6中之任一者之主題,其中該電路系統將進一步對經解密資料執行完整性檢查。
實例CA8包括實例CA1至CA7中之任一者之主題,其中該IO裝置為第一IO裝置且該電路系統將進一步:自互連件上之第二IO裝置接收對存取資料之請求,該請求包含至記憶體中之第二記憶體位址的未經編碼指標;基於該請求存取第二記憶體位址處之與第二IO裝置相關聯的經加密資料;及將經加密資料傳輸至第二IO裝置。
實例CA9包括實例CA1至CA8中之任一者之主題,其中該處理器包含用以進行以下操作之電路系統:基於一指令存取記憶體中之與處理器相關聯的經加密資料,該指令指示至記憶體中之第二記憶體位置的經編碼指標;基於經編碼指標及與處理器相關聯的密鑰對經加密資料進行解密;及使用經解密資料以執行該指令。
實例CA10包括實例CA1至CA9中之任一者之主題,其中該互連協定為基於周邊組件高速互連(PCIe)之協定及基於運算快速鏈路(CXL)之協定中之一者。
實例CM1係關於一種方法,其包括:經由互連件自IO裝置接收經編碼指標;解碼經編碼指標以獲得記憶體中之記憶體位址;存取記憶體位址處之與IO裝置相關聯之經加密資料;基於經編碼指標及與IO裝置相關聯的密鑰對經加密資料進行解密;及將經解密資料傳輸至IO裝置。
實例CM2包括實例CM1之主題,其中對經加密資料進行解密係基於區塊密碼。
實例CM3包括實例CM2之主題,其中該區塊密碼為K密碼、PRINCE密碼、Gimli密碼及伽羅華/計數器模式密碼。
實例CM4包括實例CM1至CM3中之任一者之主題,其中對經加密資料進行解密係基於與IO裝置相關聯之密鑰及基於經編碼指標之微調值。
實例CM5包括實例CM4之主題,其中該微調值為經編碼指標之欄位。
實例CM6包括實例CM1至CM5中之任一者之主題,其中該經編碼指標為經加密虛擬位址(EVA),且該方法進一步包含:對EVA進行解密以獲得訪客虛擬位址(GVA);自GVA獲得主機實體位址(HPA);及將HPA傳輸至IO裝置;及自包括HPA之IO裝置接收讀取或寫入請求。
實例CM7包括實例CM1至CM6中之任一者之主題,其進一步包含對經解密資料執行完整性檢查。
實例CM8包括實例CM1至CM7中之任一者之主題,其中該IO裝置為第一IO裝置且該方法進一步包含:自互連件上之第二IO裝置接收對存取資料之請求,該請求包含至記憶體中之第二記憶體位址的未經編碼指標;基於該請求存取第二記憶體位址處之與第二IO裝置相關聯的經加密資料;及將經加密資料傳輸至第二IO裝置。
實例CM9包括實例CM1至CM8中之任一者之主題,其中該互連協定為基於周邊組件高速互連(PCIe)之協定及基於運算快速鏈路(CXL)之協定中之一者。
實例CAA1係關於一種設備,其包括:埠,其包含用以實施互連協定之一或多個層之電路系統,其中該電路系統將:解碼經編碼指標以獲得虛擬位址;基於虛擬位址獲得互連件上之另一裝置之記憶體中的記憶體位址;將請求傳輸至另一裝置以存取記憶體位址處之資料;基於該請求接收經加密資料;基於與IO裝置相關聯之密鑰對經加密資料進行解密;及使用經解密資料執行指令。
實例CAA2包括實例CAA1之主題,其中該電路系統將使用區塊密碼對經加密資料進行解密。
實例CAA3包括實例CAA2之主題,其中該區塊密碼為K密碼、PRINCE密碼、Gimli密碼及伽羅華/計數器模式密碼。
實例CAA4包括實例CAA1至CAA3中之任一者之主題,其中該電路系統將使用與IO裝置相關聯之密鑰及基於經編碼指標之微調值對經加密資料進行解密。
實例CAA5包括實例CAA4之主題,其中該微調值為經編碼指標之欄位。
實例CAA6包括實例CAA1至CAA5中之任一者之主題,其中該經編碼指標為經加密虛擬位址(EVA),且該電路系統將進一步對EVA進行解密以獲得虛擬位址。
實例CAA7包括實例CAA1至CAA6中之任一者之主題,其中該虛擬位址為訪客虛擬位址(GVA),且該電路系統將:將GVA傳輸至另一裝置;基於GVA接收主機實體位址(HPA);及傳輸請求中之HPA以存取資料。
實例CAA8包括實例CAA1至CAA7中之任一者之主題,其中該互連協定為基於周邊組件高速互連(PCIe)之協定及基於運算快速鏈路(CXL)之協定中之一者。
實例CMM1係關於一種方法,其包括:解碼經編碼指標以獲得虛擬位址;基於虛擬位址獲得互連件上之另一裝置之記憶體中的記憶體位址;將請求傳輸至另一裝置以存取記憶體位址處之資料;基於該請求接收經加密資料;基於與IO裝置相關聯之密鑰對經加密資料進行解密;及使用經解密資料執行指令。
實例CMM2包括實例CMM1之主題,其中對經加密資料進行解密係基於區塊密碼。
實例CMM3包括實例CMM2之主題,其中該區塊密碼為K密碼、PRINCE密碼、Gimli密碼及伽羅華/計數器模式密碼。
實例CMM4包括實例CMM1至CMM3中之任一者之主題,其中該電路系統將使用與IO裝置相關聯之密鑰及基於經編碼指標之微調值對經加密資料進行解密。
實例CMM5包括實例CMM4之主題,其中該微調值為經編碼指標之欄位。
實例CMM6包括實例CMM1至CMM5中之任一者之主題,其中該經編碼指標以密碼方式經編碼,且該電路系統將經進一步對經編碼指標之至少一部分進行解密以獲得記憶體位址。
實例CMM7包括實例CMM1至CMM6中之任一者之主題,其中該虛擬位址為訪客虛擬位址(GVA)且該方法進一步包含:將GVA傳輸至另一裝置;基於GVA接收主機實體位址(HPA);及在對存取資料之請求中傳輸HPA。
實例CMM8包括實例CMM1至CMM7中之任一者之主題,其中該互連協定為基於周邊組件高速互連(PCIe)之協定及基於運算快速鏈路(CXL)之協定中之一者。
實例CL1係關於一種設備,其包含用以執行實例CM1至CM10及CMM1至CMM8中之任一者之方法的一或多個要素之構件。
實例CL2係關於一或多個非暫時性電腦可讀媒體,其包含指令,該等指令使得電子裝置在該電子裝置之一或多個處理器執行指令時執行實例CM1至CM10及CMM1至CMM8中之任一者的方法之一或多個要素。
實例CL3係關於機器可讀儲存器,其包括機器可讀指令,該等機器可讀指令在被執行時實施CM1至CM10及CMM1至CMM8中之任一者之方法。
實例CL4係關於一種設備,其包含:一或多個處理器及包含指令之一或多個電腦可讀媒體,該等指令在由該一或多個處理器執行時使得該一或多個處理器執行實例CM1至CM10及CMM1至CMM8中之任一者之方法。 指令集架構及訊息鑑別碼
本揭露內容之一些實施例涉及用於各種密碼運算操作之指令及處理邏輯。圖28為根據本揭露內容之實施例之用於各種密碼運算操作之指令及邏輯之系統2800的方塊圖。
密碼運算(CC)中央處理單元(CPU)可具有多個密碼引擎,其用以對程式碼進行加密/解密、對傳送至快取記憶體及自快取記憶體傳送之資料進行加密/解密、編碼/解碼指標,及鑑別碼及資料之完整性。此等引擎可能需要密碼密鑰及/或微調,該等密碼密鑰及/或微調需要安全地儲存以防止在諸如使用者應用程式及可能的作業系統(OS)之可信賴的運算庫(TCB)外部曝露。
舉例而言,密碼密鑰及/或微調可儲存在內部硬體暫存器中。在一或多個實施例中,此等密鑰對於在相同硬體上運行之每一應用程式租戶(例如應用程式)而言係僅有的以避免租戶之間的資料洩漏。該硬體將基於哪一租戶在運行運用正確的密鑰經程式化。每一並行硬體單元(例如核心)具有其自身的一組密鑰暫存器。
系統2800可包括具有一或多個核心、SoC、積體電路或其他機構之處理器。舉例而言,系統2800可包括具有核心2804之處理器2801。儘管核心2804經展示且描述為圖28中之實例,但可使用任何合適的機構,包括處理器2801內之多個核心。核心2804可包括任何合適的機構,其用於執行密碼運算操作,包括涉及程式化128位元指標密鑰、資料密鑰及程式碼密鑰、在程序之間切換密鑰、製作可路由的指標、壓縮/解壓縮指標、傳送物件之指標所有權及自一個位址至不同位址之記憶體移動/反向資料的密碼運算操作。在一個實施例中,此等機構可以硬體實施。核心2804可由圖1至圖2B中所描述之元件及在本文中將在圖43至圖46處進一步描述的元件之實施例完全或部分地實施。
待在核心2804上執行之指令可包括在指令串流2802中。指令串流2802可由(例如)提前編譯器、適時編譯器、解譯器或其他合適機構(其可或可不包括於系統2800中)產生,或可由產生指令串流2802之程式碼之描圖器指定。舉例而言,編譯器可採取應用程式碼且產生呈指令串流2802形式之可執行碼。指令可由核心2804自指令串流2802接收。指令串流2802可以任何合適方式載入至核心2804。舉例而言,待由核心2804執行之指令可自儲存器、自其他機器、或自諸如主記憶體2830之其他記憶體載入。該等指令可到達且可用於諸如RAM之駐留記憶體,其中自儲存器提取指令以供核心2804執行。該等指令可藉由例如預提取器或提取單元(諸如,指令提取單元2808)自駐留記憶體提取。
在一個實施例中,指令串流2802可包括來自指令集架構(ISA)之指令,該指令串流具有基於各別指令定義之特定格式2832。通常,原生指令係由CPU直接執行,且含有作業碼及一至三個運算元。實例指令格式2832可包括具有第一作業碼A及一個運算元之第一指令格式、具有第二作業碼B及二個運算元之第二指令格式及具有第三作業碼C及三個運算元之第三指令。作業碼含有資訊,其通知CPU將執行哪些操作。運算元告知CPU將在待執行之操作中處理哪些資料。運算元之類型可包括立即、暫存器及記憶體。立即運算元為待由指令使用之恆定值。暫存器運算元可為待存取之暫存器之名稱/識別符。該暫存器可含有待存取之資料或至儲存待存取之資料的記憶體位置之指標。記憶體運算元可為對含有資料或至儲存待存取之資料之記憶體位置的指標之記憶體中之位置的參照。
典型的指令集架構可運用新的指令擴展,以使用如本文中所揭露之128位元定址來達成密碼運算實施例中之一或多個實施例。舉例而言,指令串流2802可包括「PRGPTRKEY」指令、「PRGDATAKEY」指令及「PRGCODEKEY」指令以分別地程式化用於指標、資料及程式碼之128位元指標加密密鑰。指令串流2802可包括「SAVEPTRKEY」指令、「SAVEDATAKEY」指令及「SAVECODEKEY」指令以分別地保存用於指標、資料及程式碼之經程式化128位元指標加密密鑰。指令串流2802可包括「RSTORPTRKEY」指令、「RSTORDATAKEY」指令及「RSTORCODEKEY」指令以分別地恢復(解包裝)用於指標、資料及程式碼之128位元指標加密密鑰。指令串流2802可包括用以使用當前本端指標及主機識別符來製作可路由指標之「MKROUTPTR」指令、用以使用當前位址空間中所界定之位址來執行記憶體移動但使用作為密鑰/微調之不同位址來加密/解密之「MOVOVERRIDEPTR」指令,及用以在指標之128位元表示與指標之32或64位元經壓縮表示之間轉換的「COMPRESSPTR」及「DECOMPRESSPTR」指令。指令串流2802可進一步包括用以將物件之所有權自輸入指標傳送至新的指標之「BORROWOWNERSHIP」指令,及用以在「BORROWOWNERSHIP」指令之後用於將物件之所有權返回至輸入指標之「RETURNOWNERSHIP」指令。在本文中進一步界定且描述關於此等指令中之每一者執行之各種運算元及特定的操作。當關於特定指令描述多個實施例時,應注意,此等實施例中之全部或子集可由處理器單元實施。舉例而言,可藉由使用指令之變化來實施不同實施例(其中每一變化可對應於指令之不同編碼,諸如不同作業碼或不同參數格式)。
核心2804可包括前端2806,其可包括指令提取管線級(諸如指令提取單位2808)及解碼管線級(諸如決定單元2810)。前端2806可自指令串流2802接收指令且使用解碼單元2810解碼該等指令。經解碼指令可由管線之分配級(諸如分配器2814)分派、分配及排程以供執行且分配至執行單元2816以供執行。核心2804可包括執行引擎2812,其包含分配器2814及執行單元2816。
執行單元2816可以任何合適方式經組配成具有密碼運算引擎及/或微碼2817,以使得能夠執行密碼運算指令擴展。在一個非限制性實例中,核心2804可包括用於密碼運算基元(例如,編碼/解碼以密碼方式經編碼之指標、對以密碼方式經編碼之指標進行加密/解密等)之一些專用執行單元,而使用微碼協調一些執行單元以實現總體的密碼運算指令流程。
待由核心2804執行之一或多個特定的密碼運算指令可包括在針對藉由核心2804的執行界定之程式庫中。在另一實施例中,特定的密碼運算指令可為核心2804之特定部分之目標。舉例而言,核心2804可隱式地或藉由前述指令中之一者的解碼(例如經由解碼單元2810)及執行或嘗試的執行而辨識將執行此等經擴展密碼運算操作中之一者。在一些實施及情境中,經擴展密碼運算指令(或指令之特定操作)可係針對用於執行指令(或指令之特定操作)之執行單元2816中之特定執行單元。舉例而言,指令(或指令之特定操作)可係針對執行某一密碼基元之專用執行單元。
執行密碼運算指令之執行單元2816可以任何合適的方式實施。在一個實施例中,執行單元2816可包括或可以通訊方式耦接至暫存器、補充處理器記憶體2826及其他記憶體元件,以儲存執行一或多個密碼運算操作所必需之資訊。在一個實施例中,執行單元2816可包括用以執行密碼運算操作之電路系統。
通常,在執行密碼運算指令期間,對通常儲存在記憶體中之資料或對額外指令(包括駐存在主記憶體2830中之資料或指令)之存取可藉由記憶體子系統2820進行。此外,來自執行之結果可儲存在記憶體子系統2820中且隨後移動至主記憶體2830或某一其他較長儲存記憶體。記憶體子系統2820可包括例如記憶體、RAM或快取記憶體階層,該快取記憶體階層可包括快取記憶體2824,諸如一或多個層級1 (L1)快取記憶體或層級2 (L2)快取記憶體,該等快取記憶體中之一些可由多個核心2804或處理器2801共用。
密碼運算指令之執行亦可涉及以密碼方式經編碼之指標及與密碼運算功能相關的其他資訊,諸如秘密密鑰、微調、上下文資訊及/或用於需要鑑別之資訊的憑證。以密碼方式經編碼之指標通常儲存在暫存器2822中。暫存器2822可包括在核心2804中,且亦可用於儲存與密碼運算相關的其他資訊。在一或多個實施例中,可提供每核心之專用暫存器2840以儲存用於密碼操作之秘密密鑰及/或微調。另外,專用暫存器2840可包括待用於資料密鑰、程式碼密鑰及指標密鑰之不同暫存器。舉例而言,暫存器可包含指標密鑰暫存器2842、資料密鑰暫存器2844及程式碼密鑰暫存器2846。應顯而易見,可在處理器或核心中組配用於指標密鑰、資料密鑰及程式碼密鑰之多個專用暫存器。在一個實例中,可針對每一128位元密鑰實施二個64位元暫存器。處理器2801亦可包括補充處理器記憶體2826,諸如內容可定址記憶體(CAM),其可專用於儲存與密碼運算相關的資訊。舉例而言,專用補充處理器記憶體2826可為不可由軟體存取之專用快取記憶體。因此,資訊,諸如密鑰、微調、上下文資訊、憑證及/或可能的以密碼方式經編碼之指標,可儲存在專用補充處理器記憶體2826中。在其他實施例中,用於保護以密碼方式經編碼之指標、資料及/或程式碼(及可能的與密碼運算相關的其他資訊)之密鑰可儲存在諸如韌體之另一記憶體位置中、儲存在主記憶體2830之安全部分或另一儲存裝置中,或儲存在適於執行本文中所描述功能之任一其他形式的安全記憶體中。
在由執行單元2816執行之後,指令可藉由引退單元2818中之寫回級或引退級引退。此執行管線化之各種部分可由一或多個核心執行。
圖29至圖32為說明用於管理密碼運算架構中之密碼密鑰的指令之實例操作之簡化流程圖。圖29至圖32之指令可作為指令串流(例如圖28之332)之部分執行,以執行包括程式化且初始化密鑰、在上下文交換器上保存密鑰及恢復上下文交換器上之密鑰的操作。在一或多個實施例中,密碼運算密鑰對於在相同硬體上運行之應用程式而言係僅有的,且對於每一應用程式,不同密鑰可用於程式碼、資料及至資料及/或程式碼之以密碼方式經編碼之指標的加密及解密。程式碼密鑰可用於任何類型的程式碼影像之加密及解密(例如經由270、2817),該任何類型的程式碼影像包括例如應用程式、程式、呈二進位形式之程式庫。在一些情境中,程式碼影像可僅包括程式碼,且在其他情境中,程式碼影像可包括程式碼及資料,諸如全域變數及/或常數。資料密鑰可用於對與應用程式相關聯之資料進行加密及解密(例如經由270、2817)。指標密鑰可用於對以密碼方式經編碼之指標之至少一部分進行加密及解密(例如經由202、2817)。因此,可針對用於程式碼密鑰、用於資料密鑰及用於指標密鑰之各別密鑰管理操作(例如程式化及初始化、保存及恢復)實施不同指令。現將參考特定密鑰管理操作描述指令,從而理解可分別針對程式碼密鑰、資料密鑰及指標密鑰實施指令。
圖29為根據至少一個實施例之流程圖2900,其說明用以程式化用於密碼運算中之密鑰的PRGxxxKEY指令之實例操作。PRGxxxKey指令表示用於程式化且初始化來自二個64位元暫存器之128位元(雙四倍字)資料密鑰、程式碼密鑰及指標密鑰的指令。指令可實施為三個單獨指令,諸如用於資料密鑰之PRGDATAKEY、用於程式碼密鑰之PRGCODEKEY及用於指標密鑰之PRGPTRKEY。因此,PRGxxxKey中之「xxx」表示「CODE」、「DATA」及「PTR」。在一實施例中,PRGxxxKEY指令可具有呈以下格式之二個暫存器運算元: PRGCODEKEY reg64_hi, reg64_lo PRGDATAKEY reg64_hi, reg64_lo PRGPTRKEY reg64_hi, reg64_lo
PRGxxxKEY指令藉由將在運算元中規定之密鑰值複製至對應的密碼引擎(例如202、270、2817)中之密鑰暫存器中而程式化硬體中之用於程式碼、資料及指標之對應的密鑰。在至少一個實施例中,PRGxxxKEY指令可僅使用硬體可信實體(例如190)由特權軟體執行,且將在具有較低特權等級之實體(例如藉由環3處之使用者層級應用程式)嘗試執行指令之情況下產生故障。在一實例實施中,128位元(雙四倍字)程式碼/資料/指標加密密鑰可橫跨二個64位元通用CPU暫存器拆分,其中最高64位元處於第一運算元中(例如reg64_hi)且最低64位元處於第二運算元中(例如reg64_lo)。然而,實施例不限於此,且可基於特定架構及需要實施且使用其他大小之密鑰及/或暫存器。
參考特權等級,一些電腦架構在同心保護環0至3之上下文中定義特權。通常,最內環(例如環0)係最小的且具有最大特權。特權在每一較大環中逐漸地減小,使得最大環—最外部環(例如環3),具有最小特權。在本說明書中,相對的「特權等級」(例如最高、最低等)意欲意謂運算裝置之實體(例如內核、裝置驅動器、應用程式等)具有的特權之量,而非與特定保護環相關聯之編號。舉例而言,在具有四個保護環(例如環0至環3)之架構中,在本文中對最高特權等級之參照可對應於環0,而對最低特權等級之參照可對應於環3。
圖29之流程圖2900說明PRGCODEKEY/PRGDATAKEY/PRGPTRKEY指令2902之實例操作。在2904處,關於請求執行指令之實體(例如租戶應用程式)之特權等級是否大於或等於針對指令界定之所需最小特權等級而做出判定。若判定請求執行之實體不具有所需最小特權等級或更大特權等級來執行指令,則在2906處,可能引發異常且不執行指令。
若在2904處判定請求執行指令之實體之特權等級大於或等於針對指令界定之所需最小特權等級,則在2908處,儲存在處理器暫存器(例如116、2822)中之值經複製至微架構暫存器中,硬體(例如2842、2844、2846)使用該微架構暫存器以用於對與特定密鑰相關聯之程式碼、資料或指標進行解密/加密。在一實例中,含有密鑰之最高有效64位元之第一64位元暫存器及含有密鑰之最低有效64位元之第二64位元暫存器經複製至128位元微架構暫存器中。
圖30為根據至少一個實施例之流程圖3000,其說明用以程式化具有某一上下文之密鑰的PRGxxxKEYContext指令之實例操作,該等密鑰用於密碼運算中。PRGxxxKEYContext指令表示用於程式化且初始化具有上下文之資料密鑰、程式碼密鑰及指標密鑰的指令,其可實施為三個單獨指令,諸如用於資料密鑰之PRGDATAKEYContext、用於程式碼密鑰之PRGCODEKEYContext及用於指標密鑰之PRGPTRKEYContext。因此,PRGxxxKEYContext中之「xxx」表示「CODE」、「DATA」及「PTR」。在一實施例中,PRGxxxKEY指令可具有呈以下格式之二個暫存器運算元: PRGCODEKEYContext reg64_hi, reg64_lo PRGDATAKEYContext reg64_hi, reg64_lo PRGPTRKEYContext reg64_hi, reg64_lo
PRGxxxKEYContext指令藉由將在運算元中規定之上下文值複製至對應的密碼引擎(例如202、270、2817)中之暫存器中而程式化硬體中之對應的上下文。在至少一個實施例中,PRGxxxKEYContext指令可僅使用硬體可信實體(例如SEAM、CSME、嵌入式安全處理器)由特權軟體執行,且將在具有較低特權等級之實體(例如藉由環3處之使用者層級應用程式)嘗試執行指令之情況下產生故障。128位元密鑰可藉由使用秘密CPU_Private_Key (例如處理器密鑰105)自上下文導出,以使用標準散列演算法對上下文進行散列且產生密鑰。任何合適的散列演算法可在本文中用於此及其他實施例中。可使用之散列演算法之實例包括但未必限於安全散列演算法(例如SHA1、SHA2、SHA3)或訊息摘要5 (MD5)。此外,可直接使用上下文或作為上下文之部分使用。舉例而言,所提供之上下文可經附加/前置有現行控制暫存器(例如CR3)值以確保其綁定至程序。
圖30之流程圖3000說明PRGCODEKEYContext/PRGDATAKEYContext/PRGPTRKEYContext指令3002之實例操作。在3004處,關於請求執行指令之實體(例如租戶應用程式)之特權等級是否大於或等於針對指令界定之所需最小特權等級做出判定。若判定請求執行之實體不具有所需最小特權等級或更大特權等級來執行指令,則在3006處,可能引發異常且不執行指令。
若在3004處判定請求執行指令之實體之特權等級大於或等於針對指令界定之所需最小特權等級,則在3008處,儲存在處理器暫存器(例如116、2822)中之上下文經複製至硬體(例如2842、2844、2846)使用之微架構暫存器中。在一實施例中,含有密鑰之最高有效64位元之第一64位元暫存器及含有密鑰之最低有效64位元之第二64位元暫存器經複製至128位元微架構暫存器中。
在3010處,密鑰可自上下文值導出且可用於對與特定密鑰相關聯之程式碼、資料或指標進行解密/加密。在一個非限制性實例中,可藉由使用處理器密鑰(例如105)導出密鑰,以對上下文進行散列且產生待用作密鑰之值: Key_n = SHA3(context,CPU_Private_Key)
運算系統現今通常在由於多任務、中斷或使用者內核模式交換器而發生之上下文切換之後保存當前處理器狀態。舉例而言,可藉由執行程式碼影像之程式指令來具現化程序,且程式碼密鑰、資料密鑰及指標密鑰均可在密碼引擎中經程式化。若程序接收中斷,則會發生上下文切換,且新的程式碼密鑰、資料密鑰及/或指標密鑰可儲存在密碼引擎中。然而,一旦程序恢復,則仍可能需要舊的程式碼密鑰、資料密鑰及指標密鑰。因此,啟用密碼運算之系統亦儲存當前在密碼引擎中經程式化之密鑰。圖31及圖32中提供用於保存及恢復指令之實例操作。
圖31為根據至少一個實施例之說明用以將用於密碼運算中之對應的密鑰保存至記憶體之SAVExxxKEY指令之實例操作的流程圖3100。SAVExxxKey指令表示用於將當前經程式化128位元(雙四倍字)資料密鑰、程式碼密鑰及指標密鑰保存在記憶體中自64位元暫存器中規定之位址開始的位址處之指令。指令可實施為三個單獨指令,諸如用於資料密鑰之SAVEDATAKEY、用於程式碼密鑰之SAVECODEKEY及用於指標密鑰之SAVEPTRKEY。因此,SAVExxxKey中之「xxx」表示「CODE」、「DATA」及「PTR」。在一實施例中,SAVExxxKEY指令可具有呈以下格式之一個暫存器運算元: SAVECODEKEY reg64_mem SAVEDATAKEY reg64_mem SAVEPTRKEY reg64_mem
SAVExxxKEY指令將對應的密鑰保存在記憶體中(例如在RAM中)的藉由運算元規定之實體位址處。在一個實施例中,該運算元可為64位元通用CPU暫存器(例如110、2822)中規定之64位元實體位址。SAVExxxKEY指令為將在運用較低特權等級(例如使用者層級應用程式)執行之情況下產生故障之特權指令。在寫入密鑰之前,其使用平台特定的秘密密鑰(例如處理器密鑰105)以密碼方式經包裝(例如加密)。此防止將密碼運算密鑰曝露至不可信軟體。
圖31之流程圖3100說明SAVECODEKEY/SAVEDATAKEY/SAVEPTRKEY指令3102之實例操作。在3104處,關於請求執行指令之實體(例如租戶應用程式)之特權等級是否大於或等於針對指令界定之所需最小特權等級做出判定。若判定請求執行之實體不具有所需最小特權等級或更大特權等級來執行指令,則在3106處,可能引發異常且不執行指令。
若在3104處判定請求執行指令之實體之特權等級大於或等於針對指令界定之所需最小特權等級,則在3108處,儲存在硬體暫存器(例如2842、2844、2846)中之密鑰(例如程式碼密鑰、資料密鑰或指標密鑰,取決於指令)使用硬體特定的密鑰包裝(例如受硬體保護之密鑰,如處理器密鑰105)來包裝。對密鑰進行包裝可包括使用任何合適的加密演算法(例如區塊密碼(例如64位元、48位元、32位元、16位元等,使用Simon、Speck、可微調K密碼、PRINCE或任一其他區塊密碼)、高階加密標準(AES)、資料加密標準(DES)、或Rivest密碼(RC4、RC5、RC6)之加密。在一些實施例中,密鑰導出功能可用於導出密鑰(例如PRGxxxKEYContext指令)。包裝密鑰可有利地用於防止未經授權的軟體直接讀取經包裝密鑰。因此,包裝密鑰自身對於未經授權的軟體不可存取。實現此情形之一種方式為每當處理器啟動包裝密鑰且將其儲存在未經授權的軟體無法存取之暫存器中時隨機地產生該包裝密鑰。建立包裝密鑰之其他方式亦為可能的。在此實施例中,該上下文係藉由SAVExxxKEY指令而非密鑰儲存。
在3110處,可將經加密金鑰寫入至實體記憶體中之在指令運算元中規定之記憶體位址處。在一實施例中,該運算元為含有實體記憶體位址之64位元暫存器。
圖32為根據至少一個實施例之說明用以恢復用於密碼運算中之來自記憶體之對應的密鑰的RSTORxxxKEY指令之實例操作之流程圖3200。RSTORxxxKey指令表示用於恢復保存在64位元暫存器運算元中所規定之位址處的128位元(雙四倍字)資料密鑰、程式碼密鑰及指標密鑰的指令。指令可實施為三個單獨指令,諸如用於資料密鑰之RSTORDATAKEY、用於程式碼密鑰之RSTORCODEKEY及用於指標密鑰之RSTORPTRKEY。因此,RSTORxxxKey中之「xxx」表示「CODE」、「DATA」及「PTR」。在一實施例中,RSTORxxxKEY指令可具有呈以下格式之一個暫存器運算元: RSTORCODEKEY reg64_mem RSTORDATAKEY reg64_mem RSTORPTRKEY reg64_mem
RSTORxxxKEY指令藉由自記憶體(例如RAM)讀取經包裝密鑰、對經包裝密鑰進行解包裝及將密鑰程式化至密碼引擎(例如202、270、2817)中而執行SAVExxxKEY指令之反向程序。RSTORxxxKEY指令為將在運用較低特權等級(例如使用者層級應用程式)執行之情況下產生故障之特權指令。在一個實施例中,該運算元可為64位元通用CPU暫存器(例如110、2822)中規定之64位元實體位址。當密鑰導出功能用於導出密鑰時,上下文而非密鑰係由SAVExxxKEY指令儲存,且因此,可藉由RSTORxxxKEY指令恢復該上下文。
圖32之流程圖3200說明RSTORCODEKEY/RSTORDATAKEY/RSTORPTRKEY指令3202之實例操作。在3204處,關於請求執行指令之實體(例如租戶應用程式)之特權等級是否大於或等於針對指令界定之所需最小特權等級做出判定。若判定請求執行之實體不具有所需最小特權等級或更大特權等級來執行指令,則在3206處,可能引發異常且不執行指令。
若在3204處判定請求執行指令之實體之特權等級大於或等於針對指令界定之所需最小特權等級,則在3208處,經包裝密鑰(例如程式碼密鑰、資料密鑰或指標密鑰,取決於指令)係自指令運算元中所界定之實體記憶體位址讀取。在3210處,可使用硬體特定的密鑰(例如處理器密鑰105)對經包裝密鑰進行解包裝,且可將經包裝密鑰儲存在硬體暫存器(例如2842、2844、2846)中以用於對程式碼、資料或指標進行解密。
圖33為根據一實施例之說明利用運算系統中之密碼運算密鑰管理的應用程式之實例流程的流程圖3300。流程圖3300之一或多個操作可由運算裝置(例如100、2800)之硬體、韌體及/或軟體執行。在此實例中,一或多個操作可由硬體可信實體(例如190)執行。運算裝置可包含諸如用於執行操作之處理器(例如102、301)之構件。
在應用程式開始之後,硬體可信實體接收程式碼影像(例如自檔案,或某一出界方式)。在一些情境中,該程式碼影像可單獨地以可信方式接收及/或藉由加密及/或完整性保護。非平台租戶密鑰可用於額外安全性。在此情境中,將在應用程式對該程式碼影像進行加密之前對其進行解密。
在3302處,硬體可信實體運用程式碼密鑰(例如用於對程式碼影像進行加密之密鑰)對二進位程式碼影像進行加密。在一實施例中,該程式碼密鑰例如藉由密鑰管理硬體(例如192)在內部產生。密鑰管理硬體及硬體可信實體在邏輯上可為單獨實體或經組合為一個邏輯及物理實體。
在3304處,可將為加密二進位之經加密程式碼影像載入至記憶體中。硬體可信實體接著可執行載入器之操作或與載入器一起工作以將經加密影像安裝至記憶體中。
在3306處,可在調用程式條目功能之前將程式碼密鑰載入至處理器暫存器(例如通用暫存器)中。在一個實例中,若程式碼密鑰為128位元,則二個64位元暫存器(例如rax、rdx)可用於將程式碼密鑰之最高有效64位元載入在一個64位元暫存器中,且將程式碼密鑰之最低有效64位元載入在另一64位元暫存器中。在一些實施中,128位元暫存器(例如XMM)可用於儲存整個程式碼密鑰。在其他實施例中,可隨機地產生程式碼密鑰。
在3308處,可運用含有程式碼密鑰作為運算元之適當暫存器(例如rax及rdx,或XMM)呼叫PRGCODEKEY指令。PRGCODEKEY指令可程式化且初始化如先前在本文中解釋之程式碼密鑰。在一個實例中,在通用暫存器或XMM暫存器用作用於PRGCODEKEY指令之來源運算元之前,暫存器係運用程式碼密鑰值(例如藉由自記憶體載入其或使用其他指令(例如RDRAND指令)將暫存器設定為隨機值)而經初始化。此具有使軟體可靈活地自記憶體載入密鑰或隨機地產生該密鑰之益處。
然而,在一些狀況下,藉由軟體對通用暫存器及XMM暫存器之存取可導致密鑰值經洩漏。因此,PRGCODEKEY之一些變型直接自亂數產生器而非來源運算元暫存器獲得程式碼密鑰值。在一個替代性實例中,PRGCODEKEYContext指令可經呼叫以將上下文程式化至密碼引擎中,來自該密碼引擎之程式碼密鑰可使用散列演算法運用處理器密鑰經導出(例如120)。舉例而言,可在處理器密鑰或其他安全根密鑰上使用安全散列演算法(例如SHA3)以產生可用作經導出密鑰之值。
PRGCODEKEY獲取來源運算元之內容且使用其以設定一或多個程式碼密鑰暫存器(例如2846)。可藉由直接複製128位元XMM暫存器之內容或串接二個64位元GPR之內容以形成128位元值來設定程式碼密鑰暫存器。
在3310處,可在調用程式條目功能之前將指標密鑰載入至處理器暫存器(例如通用暫存器)中。在一個實例中,若指標密鑰為128位元,則二個64位元暫存器(例如rax、rdx)可用於將指標密鑰之最高有效64位元載入在一個64位元暫存器中,且將指標密鑰之最低有效64位元載入在另一64位元暫存器中。在一些實施中,128位元暫存器(例如XMM)可用於儲存整個指標密鑰。在其他實施例中,可隨機地產生指標密鑰。
在3312處,可運用含有指標密鑰作為運算元之適當暫存器(例如rax及rdx,或XMM)呼叫PRGPTRKEY指令。PRGPTRKEY指令可程式化且初始化如先前在本文中解釋之指標密鑰。在一個實例中,在通用暫存器或XMM暫存器用作用於PRGPTRKEY指令之來源運算元之前,暫存器係運用指標密鑰值(例如藉由自記憶體載入其或使用其他指令(例如RDRAND指令)將暫存器設定為隨機值)而經初始化。此具有使軟體可靈活地自記憶體載入密鑰或隨機地產生該密鑰之益處。
然而,在一些狀況下,藉由軟體對通用暫存器及XMM暫存器之存取可導致密鑰值經洩漏。因此,PRGPTRKEY之一些變型直接自亂數產生器而非來源運算元暫存器獲得指標密鑰值。在一個替代性實例中,PRGPTRKEYContext指令可經呼叫以將上下文程式化至密碼引擎中,來自該密碼引擎之指標密鑰可使用散列演算法運用處理器密鑰經導出(例如120)。舉例而言,可在處理器密鑰或其他安全根密鑰上使用安全散列演算法(例如SHA3)以產生可用作經導出密鑰之值。
PRGPTRKEY獲取來源運算元之內容且使用其以設定一或多個指標密鑰暫存器(例如2842)。可藉由直接複製128位元XMM暫存器之內容或串接二個64位元GPR之內容以形成128位元值來設定指標密鑰暫存器。
在3314處,可在調用程式條目功能之前將資料密鑰載入至處理器暫存器(例如通用暫存器)中。在一個實例中,若資料密鑰為128位元,則二個64位元暫存器(例如rax、rdx)可用於將資料密鑰之最高有效64位元載入在一個64位元暫存器中,且將資料密鑰之最低有效64位元載入在另一64位元暫存器中。在一些實施中,128位元暫存器(例如XMM)可用於儲存整個資料密鑰。在一些實施例中,可隨機地產生指標密鑰。通常,第一次產生密鑰(例如程式碼、指標或資料)時,可自隨機值來源產生該密鑰。
在3316處,可運用含有資料密鑰作為運算元之適當暫存器(例如rax及rdx,或XMM)呼叫PRGDATAKEY指令。PRGDATAKEY指令可程式化且初始化如先前在本文中解釋之資料密鑰。在一個實例中,在通用暫存器或XMM暫存器用作用於PRGDATAKEY指令之來源運算元之前,暫存器係運用資料密鑰值(例如藉由自記憶體載入其或使用其他指令(例如RDRAND指令)將暫存器設定為隨機值)而經初始化。此具有使軟體可靈活地自記憶體載入密鑰或隨機地產生該密鑰之益處。
然而,在一些狀況下,藉由軟體對通用暫存器及XMM暫存器之存取可導致密鑰值經洩漏。因此,PRGDATAKEY之一些變型直接自亂數產生器而非來源運算元暫存器獲得資料密鑰值。在一個替代性實例中,PRGDATAKEYContext指令可經呼叫以將上下文程式化至密碼引擎中,來自該密碼引擎之資料密鑰可使用散列演算法運用處理器密鑰經導出(例如120)。舉例而言,可在處理器密鑰或其他安全根密鑰上使用安全散列演算法(例如SHA3)以產生可用作經導出密鑰之值。
PRGDATAKEY獲取來源運算元之內容且使用其以設定一或多個資料密鑰暫存器(例如2846)。可藉由直接複製128位元XMM暫存器之內容或串接二個64位元GPR之內容以形成128位元值來設定資料密鑰暫存器。
在3318處,可在使用者模式中執行程式直至其完成或直至存在上下文切換。上下文切換可包括例如程序間通訊或硬體中斷。若在3320處判定程式中存在上下文切換,則在3322處,可保存程序上下文。在上下文切換時,密鑰(程式碼密鑰、資料密鑰及指標密鑰)以及任一其他秘密元資料及/或上下文可為使用處理器密鑰(例如102)經包裝之密鑰,且經置放於常規記憶體中以提供機密性。諸如完整性值(例如訊息鑑別碼(MAC))之額外元資料亦可置放於記憶體中以偵測不受信任實體之任何損壞。硬體可信實體(或特權軟體處置器)可執行適當指令以將處理器狀態保存在內核記憶體中,該等指令諸如XSAVE、FXSAVE、SAVECODEKEY、SAVEDATAKEY及SAVEPTRKEY指令,如本文中先前所描述。舉例而言,可信實體或處置器可為在相同處理器上運行之模式,諸如安全仲裁模式(SEAM)。在一些實施中,該模式可在內部經組配為處理器微碼。
在3324處,該程式可在另一上下文內運行直至應用程式恢復為止。在上下文切換回來之後,在3326處,此經儲存元資料可經恢復且經驗證為正確的。硬體可信實體(或特權軟體處置器)可執行適當指令以自內核記憶體恢復處理器狀態,該等指令諸如XRSTOR、FXSTOR、RSTORCODEKEY、RSTORDATAKEY及RSTORPTRKEY指令,如先前在本文中所描述。 資料完整性及指標完整性
當前指標鑑別技術將鑑別碼嵌入至指標中。雖然鑑別碼係合乎需要的,但將其嵌入至指標中會竊取有價值的位元,該等有價值的位元可替代地用於其他重要元資料或上下文資訊。另外,在64位元指標中經編碼之鑑別碼可僅被分配少數位元。在一些實例中,鑑別碼以四個位元經編碼。因此,該等鑑別碼對於安全鑑別碼而言太短,此係因為四個位元允許1/16之碰撞機率。解決鑑別問題之一種方法為使用如圖34至圖39中所描述之記憶體分配方案。
圖34為說明性記憶體電路系統/快取記憶體電路系統3471之示意圖,該說明性記憶體電路系統/快取記憶體電路系統連同處理器電路系統46970允許對記憶體分配執行安全性檢查,該處理器電路系統可包括核心3474及記憶體控制器電路系統3472。儘管實施例不限於此,但在圖34之所展示實施例中,根據本文中所描述的至少一個實施例,記憶體電路系統/快取記憶體電路系統3471可經分配至一或多個二之冪(亦即,2 0至2 n)槽3440,其中各別中點位址3442包括各別、唯一元資料3450,其與槽3440內之各別記憶體分配3454相關聯。
作為一實例,記憶體電路系統/快取記憶體電路系統3471可類似於圖1之快取記憶體170或記憶體120,或類似於圖46之快取記憶體4671、4681或記憶體4632、4634。亦作為一實例,處理器電路系統3470可類似於圖1之處理器102或類似於圖46之處理器4670、4680,核心3474可類似於圖46之核心4674、4684,且記憶體控制器電路系統3472可類似於圖45之記憶體存取單元4564,或在一些狀況下,可類似於圖46之IMC 4672、4682。下文將進一步描述圖45至圖46及其組件。
在一些實施例中,使得處理器電路系統(諸如圖34之核心3474)執行記憶體操作之指令(例如來自程式3460)使得記憶體控制器電路系統3472使用指標3480存取記憶體電路系統/快取記憶體電路系統3471,該指標至少包括表示用於記憶體操作之位址3482的資料及對應於記憶體位址3482之與各別記憶體分配3440相關聯的元資料3484。元資料3484係與儲存於各別記憶體分配3440之中點位址3442處的元資料3450進行比較。若指標元資料3484與記憶體分配3440內之經儲存元資料3450匹配,則准許指定記憶體位址3482處之操作。若指標元資料3484未能與記憶體分配3440內之經儲存元資料3450匹配,則異常返回至處理器3470。
應注意,當在此章節中描述元資料之比較時,不意欲以限定性方式檢視比較,且該比較意欲涵蓋指標中之元資料(諸如完整性值、訊息鑑別碼(MAC)、標籤資料、隔室ID等)之全部或部分與同將實施存取控制所針對之物件相關聯之元資料的比較。
在圖34之記憶體電路系統/快取記憶體電路系統3471中,每一物件3454以確保中點處之元資料3450可容易地與其所涉及之物件相關聯的此方式經完全指派至給定槽(亦即,每一槽之一個物件及每一物件之一個槽)。物件3454在圖34中在圖之底部處展示了一次,且由各別槽3440自身內之雙指向箭頭對應地表示。即使物件3454可在比分配自身大的槽中,但根據一個實施例,該等分配不能需要填補以便置放於較大槽內。根據一些實施例,在給定一組可用槽及物件之情況下,物件可經分配至與物件最緊密地配合之槽中。在圖34之所展示實施例中,例如,32B物件3454經分配至32B槽3440,56B物件經分配至128B槽3440,48B物件經分配至256B槽,24B物件經分配至32B槽,且346B物件經分配至128B槽。在圖34之所展示實例中,因為48B物件將跨越二個槽內之對準界限,則其經指派至較大256B槽。儘管圖34之所展示實例將物件展示為以連續方式(緊密包封)橫跨槽,但顯然,實施例不限於此,且在其範疇內包括物件至各別、專用記憶體槽之分配方案,只要物件穿過該槽之中點位址即可,其中一些槽可能為閒置的,尤其例如在涉及搖擺指標的釋放後使用(UAF)情境中。根據一些實施例,包括元資料儲存器之物件大小在大小上可能不小於或等於最小槽之寬度之一半,以便使其在經指派至槽時穿過(亦即,至少部分地覆蓋)中點。
基於以上分配方案,在每一物件經唯一地指派至專用槽且穿過槽中點之情況下,元資料3450可位於該槽之中點位址處以便允許處理器快速找到該元資料,而不必轉至單獨的表或記憶體位置以判定該元資料。當前方法有時在每一分配之前通常以非二次冪方案置放元資料,且在每一指標內,規定指標位址與分配開始的距離。然而,該指標具有有限數目個位元,且規定後一距離之需求可能超出指標之範圍,其中該距離大於該指標可容納之距離,亦即,其中分配大於指標中之位元可容納之分配。根據一個實施例使用之二次冪(Po2)方法允許每一物件與Po2槽之唯一映射,其中該槽用於提供對其內之每一物件唯一地進行編碼及加密之可能性。根據一些實施例,亦可對元資料3450進行加密。
為了克服如上文所提及之距分配開始的距離/偏移太長的問題,相反,一些實施例僅在指標之大小欄位中將槽之大小,諸如槽之Po2大小,規定為待定址之物件適合的指標之大小欄位中之大小指數。該大小將判定處理器將參照之特定位址位元以便判定經參照之槽。在識別了特定槽之情況下,處理器可直接轉至經識別槽之中點位址以便讀出元資料,該元資料包括界限資訊或隔室ID,以及諸如標籤資料之其他可能元資料中之至少一者。然而,實施例不限於用於槽之Po2方案,且可包括其中大小連續增加之槽之可用性可基於除二之外的整數之冪或基於任一其他方案的方案。
經儲存為元資料3450之部分的界限資訊(其中已知物件始終穿過中點)可經表示為下限(LB)及上限(UB),其中中點為用於LB及UB之參考點,且可在無論該槽之大小如何之情況下使用,以便允許緩衝器溢位之偵測等等。有利地,因為界限資訊與物件一起儲存在槽中,所以其可以使記憶體操作比先前技術之記憶體操作更高效之方式在與物件自身實質上相同的時間可用於處理器。根據一些實施例,界限資訊允許基於已知中點參考判定分配之位置且無需佔據指標中之大量位元,其中該槽及/或分配自身係較大的,尤其其中指標中之位元之數目可能不足以支援指標值距分配開始之距離。作為實例在圖34中展示之Po2方案提供緊湊的編碼方案,其中每當將值添加在指標之大小指數欄位中時,經參照之槽大小都會倍增,而非如所提供的藉由提供指標值距經參照物件之開始的距離資訊的線性按比例調整。因此,在Po2方案中,有限大小欄位可用於指代相比於先前技術之方案大得多的槽大小及物件。
儘管記憶體控制器電路系統3472在圖34中經描繪為包括於處理器電路系統3470中,但在一些實施例中,處理器電路系統3470可僅包括記憶體控制器電路系統3472之一部分或其可為完全分開的。
回應於指令執行引起記憶體存取操作,處理器電路系統3470產生經編碼指標3480,該經編碼指標至少包括表示操作中涉及之記憶體位址3482的資料及表示對應於記憶體位址3482之與記憶體分配3440相關聯的元資料3484之資料。元資料3484可包括界限資訊或隔室ID中之至少一者。經編碼指標3480可包括額外資訊,諸如表示記憶體分配3440之大小的資料。
在一些實施例中,記憶體控制器電路系統3472儲存藉由經編碼指標3480攜載之元資料3484,及記憶體分配3440之中點位址3442處之元資料3450。若藉由經編碼指標3480攜載之元資料3484與儲存於槽3440之中點位址3442處的元資料3450匹配,則記憶體控制器電路系統3472完成經請求操作。若藉由經編碼指標3480攜載之元資料3484未能與儲存於槽3440之中點位址3442處的元資料3450匹配,則記憶體控制器電路系統3472將異常返回至處理器電路系統3470。
記憶體電路系統/快取記憶體電路系統3471可包括以下各者之任何數量及/或組合:電組件、半導體裝置、光學儲存裝置、量子儲存裝置、分子儲存裝置、原子儲存裝置及/或能夠儲存資訊及/或資料之邏輯元件。記憶體電路系統/快取記憶體電路系統3471之全部或一部分可包括暫時性記憶體電路系統,諸如RAM、DRAM、SRAM或類似者。記憶體電路系統/快取記憶體電路系統3471之全部或一部分可包括非暫時性記憶體電路系統,諸如:光學儲存媒體;磁性儲存媒體;NAND記憶體;及類似者。記憶體電路系統/快取記憶體電路系統3471可包括具有任何儲存容量之一或多個儲存裝置。舉例而言,記憶體電路系統/快取記憶體電路系統3471可包括一或多個儲存裝置,其儲存容量約:512千位元組或更大;1百萬位元組(MB)或更大;100 MB或更大;1十億位元組(GB)或更大;100 GB或更大;1太-位元組(TB)或更大;或約100 TB或更大。
在圖34之所展示實施例中,記憶體控制器電路系統3472將記憶體電路系統/快取記憶體電路系統3471分配至任一二次冪數量的槽3440中。在一些實施例中,記憶體控制器電路系統3472可將記憶體電路系統/快取記憶體電路系統3471分配至單個記憶體槽3440中(亦即,對於導致整個系統記憶體經覆蓋之m值,二次冪= 2 m)。在其他實施例中,記憶體控制器電路系統3472可將記憶體電路系統/快取記憶體電路系統3471分配至二個記憶體槽3440 (亦即,二次冪= 2 m-1)中。在其他實施例中,記憶體控制器電路系統3472可將記憶體電路系統/快取記憶體電路系統3471分配至四個記憶體槽3440 (亦即,二次冪= 2 m-2)中。在其他實施例中,記憶體控制器電路系統3472可將記憶體電路系統/快取記憶體電路系統3471分配至「n」個記憶體分配3440中(亦即,對於導致將記憶體空間劃分成「 n」個槽的值k,二次冪= 2 k )。重要的是,應注意,記憶體槽3440中之每一者中之中點位址3442不與其他記憶體槽中之中點位址對準,藉此准許儲存對於各別記憶體槽3440而言係唯一的元資料3450。在一些實施例中,元資料3450可包括任何數量的位元。舉例而言,元資料3450可包括2個位元或更多、4個位元或更多、6個位元或更多、8個位元或更多、16個位元或更多,或32個位元或更多。
經編碼指標3480包括記憶體位址3482以執行記憶體操作(提取、儲存等)。記憶體位址3482可包括任何數量的位元。舉例而言,記憶體位址3482可包括:8位元或更多;16位元或更多;32位元或更多;48位元或更多;或64位元或更多;128位元或更多;256位元或更多;512位元或更多,直至就經定址之槽大小而言使用者線性位址寬度位元的2次冪。在實施例中,藉由經編碼指標3480攜載之元資料3484可包括任何數量的位元。舉例而言,元資料3484可包括4位元或更多、8位元或更多、16位元或更多或32位元或更多。在實施例中,可對藉由經編碼指標3480攜載之位址及/或標籤資料之全部或一部分進行加密。在實施例中,元資料3450可作為快取行(例如32位元組區塊、64位元組區塊或128位元組區塊、256位元組區塊或更大、512位元組區塊,或等於二位元組之冪之區塊大小)載入至處理器快取記憶體電路系統3471中。在此類實施例中,在對儲存在處理器快取記憶體電路系統3471中之資料執行記憶體操作時,記憶體控制器電路系統3472或例如處理器電路系統3470中之其他邏輯將元資料3484與儲存於含有經請求記憶體位址之快取行上的元資料3450進行比較。
對於在分配3440之中點位址3442之前的記憶體位址(亦即,含有元資料3450中之標籤資料的「隱藏」位址)處進行之記憶體操作,在成功驗證元資料3450及與記憶體分配3440相關聯之元資料3484之後,指標3480可僅僅在經指示記憶體位址3482處執行操作。對於在分配3440之中點位址3442之後的記憶體位址處進行之記憶體操作,經編碼指標3480可基於儲存在記憶體分配3440中之元資料3450之大小而偏移。因此,元資料3450之存在係藉由處理器電路系統相對於使用經編碼指標3480存取元資料之軟體「隱藏」。
圖35為圖34之記憶體分配安全性檢查系統之記憶體電路系統/快取記憶體電路系統3471之一部分的示意性說明,其中將元資料儲存在記憶體分配之中點處係運用資料完整性能力來增強。資料完整性係由儲存在元資料部分中之在記憶體分配之中點處的訊息鑑別碼(MAC)提供。圖35中所展示之記憶體電路系統/快取記憶體電路系統3471之部分展示儲存在不同槽3440之不同記憶體分配3454之元資料3442/3450中的訊息鑑別碼3502、3504及3506。MAC 3502、3504及3506為針對儲存在各別分配中之資料產生的完整性值。在一個實施例中,特定分配之元資料中之MAC儲存可經由儲存在彼分配中之資料(或資料之截塊)來運算。MAC 3502經由儲存在32位元組分配中之資料來運算且儲存在彼32位元組分配之元資料中,MAC 3504經由儲存在56位元組分配中之資料運算且儲存在彼56位元組分配之元資料中,且MAC 3506經由儲存在48位元組分配中之資料來運算且儲存在彼48位元組分配之元資料中。
任何合適的MAC演算法可用於對MAC進行運算。舉例而言,帶有密鑰之散列MAC (HMAC)可與以下變數一起使用: MAC=HMAC(cc_key, slice_data || slice_address) 在此實例中,HMAC演算法應用於與分配之記憶體位址之截塊串接的資料之截塊。密鑰用作輸入。在一些實施例中,該密鑰可為針對程序的(亦即,用於對與特定程序相關聯之資料進行加密及解密)。在其他狀況下,可基於特定需要及實施隨機地或以任一其他合適方式產生或導出密鑰。HMAC演算法可為任一合適散列函數,包括但未必限於安全散列演算法(例如SHA1、SHA2、SHA3)或訊息摘要5 (MD5)。在其他實施例中,MAC演算法可能不需要密鑰作為輸入。
儲存針對資料(在本文中亦被稱作「資料MAC」)產生之MAC值係儲存且找到鑑別碼且不使用指標中之有限可用位元的高效方式。此外,可在讀取請求時執行完整性驗證,此對於防止釋放後使用或緩衝器溢位安全漏洞高效且適用。若作業系統將頁面映射至另一實體且其存取覆寫資料,則其亦可防止旁路讀取及寫入。在此情境下,作業系統將不能夠產生將與資料匹配之完整性值,此係因為僅存取資料之實體具有正確的密鑰以產生完整性值且在讀取時對其進行驗證。
圖36為根據一實施例之記憶體分配安全性檢查系統之實例記憶體分配的示意性說明。圖36展示具有中點3612之記憶體之槽3600中的記憶體分配之二個實例。第一經分配資料區3610包括劃分成五個部分(或「資料截塊」) 3612、3614、3616、3618及3619之經儲存資料,且此等資料截塊可經對準。
相同資料區3620之第二分配展示MAC值,其經由每一資料截塊運算且連同資料界限資訊3630儲存在中點位址3612處之元資料中。資料界限資訊3630界定有效資料區。每一MAC驗證具有固定大小(例如16B、32B、64B等)之資料之各別資料截塊。每一MAC亦可為固定大小(例如4B)。可使用應用程式特定的MAC密鑰以及作為微調之至特定資料截塊的經編碼指標而針對每一資料截塊計算MAC。藉由將資料及MAC對移動至不同資料及MAC位址,使用微調以密碼方式將資料綁定至其位址以避免偽造。MAC密鑰可為獨立的或自另一程序特定的密碼密鑰導出。若分配之開始或結束時的資料不與資料截塊對準,則其用固定值(例如零)填補以用於MAC計算。
在此實例中,MAC 3642經由資料截塊3612運算,MAC 3644經由資料截塊3614運算,MAC 3646經由資料截塊3616運算,MAC 3648經由資料截塊3618運算,MAC 3649經由資料截塊3619運算。MAC可連續鄰近資料界限資訊3630儲存,該等MAC經展示為區塊層級MAC 3640。在一些實施例中,MAC亦可產生且經儲存以保護界限元資料之完整性。
在操作中,當(例如在malloc常式期間)針對資料分配記憶體時,初始化資料區塊(在本文中亦被稱作「資料截塊」)及MAC。當對記憶體解除分配時,清除MAC以避免資料重複使用。在程序之運行時間期間,MAC會在寫入操作時更新且在寫入及讀取操作時進行檢查。若資料存取橫跨多個資料截塊,則將驗證或更新所有對應的MAC。若出現MAC不匹配,則應用程式可接收「資料損壞」異常。
資料經劃分成多個資料截塊且由各別MAC驗證之實例記憶體分配可提供顯著優點。在MAC係經由記憶體分配中之所有資料運算之傳統方法中,必須讀取彼分配中之所有資料,且必須經由所有資料對MAC進行運算,即使僅存取資料之小部分亦如此。然而,在圖36中所展示之實施例之情況下,啟用增量更新,使得若僅存取資料之小部分,則僅需要讀取資料之彼部分(或截塊)且可僅使用資料之彼部分重新計算MAC。
圖37為根據一實施例之與使用經編碼指標執行寫入操作相關的實例程序3700之流程圖。在3702處,使用經編碼指標嘗試資料寫入操作。在3704處,計算經分配記憶體之中點位址。藉由計算用於資料之記憶體分配之中點位址,可計算對應於經請求資料之MAC之位置。應注意,若記憶體分配經組配有交錯的MAC (例如圖36),則處理器(例如102)在寫入操作時對資料位址進行轉譯以便考慮交錯的MAC。在此情境下,基於資料截塊之數目、資料截塊之大小及交錯的元資料之大小對經轉譯位址進行運算。
在3706處,關於資料存取是否係在記憶體之特定分配(例如槽)內之有效資料區的界限內做出判定。若不在界限內,則在3708處引起異常。在一些實施例中,可在寫入期間跳過界限檢查,以替代地依賴於MAC檢查以偵測出界存取。若經請求資料係在有效資料區之界限(例如上限及下限)內,則在3710處,讀取當前儲存在分配中之舊的資料區塊及舊的MAC。在3712處,可驗證MAC以確保分配中之資料尚未被損壞。在一個實例中,可對舊的資料區塊執行資料MAC演算法(例如具有或不具有密鑰之單向散列),以對MAC進行運算。經運算MAC可與來自分配之MAC讀取進行比較。若經運算MAC及自記憶體讀取之MAC不匹配,則可在3714處引起資料損壞異常。然而,若經運算MAC與自記憶體讀取之MAC匹配,則在3716處,可將資料返回至核心(例如自記憶體控制器電路系統)。
圖38為根據一實施例之與使用經編碼指標執行讀取操作相關的實例程序3800之流程圖。在3802處,使用經編碼指標嘗試資料讀取操作。在3804處,計算經分配記憶體之中點位址。藉由計算用於資料之記憶體分配之中點位址,可計算對應於經請求資料之MAC之位置。應注意,若記憶體分配經組配有交錯的MAC (例如圖36),則處理器(例如102)在讀取操作時對資料位址進行轉譯以便考慮交錯的MAC。
在3806處,關於資料存取是否係在記憶體之特定分配(例如槽)內之有效資料區的界限內做出判定。若不在界限內,則在3808處引起異常。在一些實施例中,可在讀取期間跳過界限檢查,以替代地依賴於MAC檢查以偵測出界存取。若經請求資料係在有效資料區之界限內,則在3810處,讀取資料區塊及儲存在資料區塊中之MAC。在3812處,可驗證MAC。在一個實例中,可對資料執行資料MAC演算法(例如具有或不具有密鑰之單向散列),以對MAC進行運算。經運算MAC可與來自記憶體之MAC讀取進行比較。若經運算MAC及自記憶體讀取之MAC不匹配,則可在3814處引起資料損壞異常。然而,若經運算MAC與自記憶體讀取之MAC匹配,則在3816處,可將資料返回至核心(例如自記憶體控制器電路系統)。
圖39為根據一實施例之記憶體分配安全性檢查系統之替代性實例記憶體分配的示意性說明。圖39展示記憶體之槽3900中之記憶體分配的二個實例。第一經分配資料區展示分配3910,此係因為該分配對應用程式呈現。分配3900含有劃分成五個部分(或「資料截塊」) 3912、3914、3916、3918及3919之經儲存資料(或「資料區塊」)。相同資料區之第二分配3920展示線性空間中之實際資料佈局。資料截塊與其MAC 3912、3914、3916、3918及3919一起填充在資料分配3920內。在此實例中,每一資料及MAC對確切佔據一個快取行3905。此可為有利的,此係因為由於MAC與資料共同定位,所以可降低自不同快取行提取MAC之開銷。
在此實例中,記憶體分配器(例如144、146)需要分配額外位元組以便考慮交錯的MAC。另外,處理器(例如102)需要在記憶體存取時對資料位址進行轉譯以便考慮交錯的MAC。
圖40A至圖40B為流程圖4000A至4000B,其說明用於臨時改變物件之所有權的128位元指標之BorrowOwnership指令及ReturnOwnership指令的實例操作。在一個實例中,指令可具有以下格式: BorrowOwnership r128 ReturnOwnership r128
BorrowOwnership指令在經組合來源/目的地運算元中將物件之所有權自輸入指標傳送至新的指標。BorrowOwnership指令包括一個運算元,其為含有經加密之版本化指標作為輸入運算元之128位元暫存器。BorrowOwnership指令首先檢查指標運算元中之先前版本號碼與用於物件之相關聯的元資料中之先前版本號碼匹配。所有權傳送係藉由使128位元指標中之較大版本欄位遞增且亦更新當前版本欄位以在用於物件之相關聯的元資料中匹配來實現。可使用記憶體分配儲存物件,其中元資料儲存於分配之中點位址處。替代地,BorrowOwnership指令可接受含有更新值之額外來源運算元,以用於指標中之版本欄位及用於物件之相關聯的元資料,而非使當前值遞增。儘管參考128位元指標描述此等指令,但應顯而易見,本文中所描述的概念不限於此。實際上,與借用及歸還所有權指令相關的概念以及本文中所揭露之其他概念可適用於32位元指標、64位元指標、256位元指標等。
圖40A之流程圖4000A說明BorrowOwnership指令4002之實例操作。指令包括經加密之版本化指標作為輸入運算元。記憶體位址可參照用於物件之記憶體分配,其中元資料儲存於記憶體分配中之中點位址處。在3104處,與經供應指標相關聯且儲存於由指標參照之記憶體分配中之中點位址處的元資料中之版本號碼可遞增。在經供應指標中編碼之版本號碼亦可遞增以與元資料中之版本號碼匹配。在4006處,該指標可用新的版本號碼來重新加密。
可在BorrowOwnership指令之後使用ReturnOwnership指令以歸還「經借用」物件之所有權。ReturnOwnership指令包括一個運算元,其為含有經加密之版本化指標(其在4006處之BorrowOwnership指令期間產生)作為輸入運算元之128位元暫存器。ReturnOwnership指令首先檢查指標運算元中之先前版本號碼與用於物件之相關聯的元資料中之先前版本號碼匹配。可藉由使128位元指標中之較大版本欄位遞減且亦使相關聯的物件元資料中之版本號碼遞減來實現所有權歸還。
圖40B之流程圖4000B說明ReturnOwnership指令4002之實例操作。指令包括經加密之版本化指標作為輸入運算元。在4014處,與經供應指標相關聯且儲存於由指標參照之記憶體分配中之中點位址處的元資料中之版本號碼可遞減。另外,在經供應指標中編碼之版本號碼亦可遞減以與元資料中之版本號碼匹配。在4016處,該指標可用新的版本號碼來重新加密。替代地,在當軟體能夠將指標之任何複本替換為可隨後使用之彼分配時之狀況下,亦可在歸還所有權時使用BorrowOwnership指令。在彼狀況下,代替使版本欄位遞增,BorrowOwnership指令可使版本欄位隨機化。
圖41及圖42係與當實施128位元指標時提供安全性之額外選項相關。相對於較小指標(例如64位元指標),使用128位元指標在可編碼有安全性元資料之指標內提供額外位元。在一個實例中,資料完整性值或訊息鑑別碼(MAC)可在其對應資料指標中攜載,以使得能夠在記憶體存取期間對資料進行簡化且高效的完整性檢查。此可在參照不可變物件時為特別適用的。在此實例中,可藉由將不可變物件之MAC (亦即,未經修改或不可修改之程式碼及/或資料)儲存在指標中來驗證不可變物件之完整性。
圖41為根據一實施例之實例128位元經編碼指標4110之示意圖。在此實例中,指標4110可編碼有線性位址部分4118、旗標位元部分4116、資料長度部分4114及資料訊息鑑別碼(MAC)部分4112。作為說明而非限制,線性位址可在63位元部分4118中經編碼,旗標位元可在1位元部分4116中經編碼,資料長度可在32位元部分4114中經編碼,且資料MAC可在32位元部分4112中經編碼。
經加密位址4118部分可包括128位元線性位址之位址位元之一部分。經加密位址4118可經解密以獲得對應於儲存資料(或程式碼)之記憶體位置的線性位址。可使用任何合適的解密演算法來執行解密,該等解密演算法包括本文中所揭露之演算法(例如64位元、48位元、32位元、16位元等區塊密碼,其使用Simon、Speck、可微調K密碼、PRINCE或任一其他區塊密碼)以及可能的其他演算法。在至少一些情境中,密鑰可用作解密中之輸入。在至少一些實施中,程序特定的指標密鑰可用於經編碼指標3810中之經加密位址之解密。另外,微調亦可用作至解密之輸入。微調可含有線性位址之至少一部分,且可能含有其他元資料。
在一些情境中,來自經加密位址部分4110之經解密位址可與上部位址位元(例如儲存在暫存器或其他記憶體中)組合以獲得完整線性位址。線性位址參照儲存在記憶體中之資料(或程式碼) 4120。經編碼指標4110中之32位元資料長度部分4114含有表示由指標參照之資料(或程式碼) 4120之長度的值。32位元資料MAC部分4112可包括由資料MAC演算法4122產生的訊息鑑別程碼,該資料MAC演算法將資料(或程式碼) 4120用作輸入。在一些情境中,資料MAC演算法4122亦具有MAC密鑰輸入,其可儲存在資料MAC密鑰暫存器中。舉例而言,可如下計算帶有密鑰之散列訊息鑑別碼(HMAC): MAC=HMAC(cc_key, slice_data || slice_address) 在其他情境中,資料MAC演算法可為不需要密鑰輸入之單向散列。任何合適的演算法可用於提供安全資料MAC,諸如單向散列函數,包括但未必限於安全散列演算法(例如SHA-3、SHA-2等)或訊息摘要(例如MD4、MD5)。
圖42為根據一實施例之實例程序4200之流程圖,該實例程序用於在記憶體存取操作期間驗證指標中之MAC。舉例而言,可藉由密碼運算引擎及/或記憶體控制器電路系統來執行程序4200之一或多個操作。如在4202處所指示,程序4200係與使用呈任擇地含有資料MAC之格式的指標(例如4110)來執行記憶體存取相關。在4204處,偵測記憶體存取嘗試。若記憶體存取為經嘗試寫入操作,則在4206處,可產生故障。此可因為該指標正參照不可變物件而發生,且不允許此類物件經由藉由指標之寫入操作而更新。若記憶體存取嘗試為諸如讀取操作之另一操作,則在4208處,可對指標中之線性位址進行解密以識別且定位經參照記憶體分配。可經由經參照記憶體分配使用相同資料MAC演算法(例如4122)及資料MAC密鑰(例如4124) (若存在)對MAC進行運算,以獲得經運算MAC。
在4220處,可在經運算MAC與儲存在指標中之資料MAC (例如4112)之間進行比較。若經運算MAC與儲存在指標中之資料MAC不匹配,則在4212處,可產生故障。然而,若經運算MAC與儲存在指標中之資料MAC匹配,則在4214處,可執行經嘗試記憶體存取。
實例
實例DA1提供一種設備,其包含:處理器,其包括用以儲存至用於資料區的記憶體分配中之記憶體位置之經編碼指標的暫存器,其中經編碼指標將包括對應於記憶體位置之線性位址之至少一部分;電路系統,其用以:回應於存取記憶體位置之記憶體存取請求,計算記憶體分配之中點位址且使用中點位址以計算用於與儲存於記憶體位置處的第一資料相關聯之第一訊息鑑別碼(MAC)的第二記憶體位址;讀取第二記憶體位址處之第一MAC;自對應於線性位址之記憶體位置讀取第一資料;部分地基於第一MAC來判定第一資料未經損壞;及回應於判定第一資料未經損壞,允許執行記憶體存取請求。
實例DA2包含實例DA1之主題,且該電路系統將進一步:對第一資料之第二MAC進行運算;及將第二MAC與第一MAC進行比較,其中第一資料未經損壞之判定係回應於第一MAC與第二MAC匹配。
實例DA3包含實例DA1至DA2中之任一者之主題,且該記憶體存取請求為寫入請求。
實例DA4包含實例DA3之主題,且該電路系統將進一步:將第一資料之第三記憶體位址轉譯為第四記憶體位址,其中基於第三記憶體位址、資料區中之資料區塊之數目、資料區中之一或多個資料區塊之大小及與每一資料區塊交錯之元資料部分之大小對第四記憶體位址進行運算。
實例DA5包含實例DA3至DA4中之任一者之主題,且該電路系統將進一步:回應於判定第一資料未經損壞,計算用於第一資料之新的MAC;及將新的MAC及新的資料儲存至記憶體位置。
實例DA6包含實例DA1至DA2中之任一者之主題,且該記憶體存取請求為讀取請求。
實例DA7包含實例DA6之主題,且該電路系統將進一步:判定第一資料是否儲存於資料區之上限及下限內,其中回應於判定第一資料係儲存於資料區之上限及下限內,將在第二記憶體位址處讀取第一MAC且將在對應於線性位址之記憶體位置處讀取第一資料。
實例DA8包含實例DA1至DA7中之任一者之主題,且該第一MAC係儲存在記憶體分配之元資料部分中,該元資料部分鄰近記憶體分配之中點。
實例DA9包含實例DA1至DA7中之任一者之主題,且該第一MAC儲存在記憶體分配中之第一資料與第二資料之間,其中一或多個其他資料。
實例DA10包含實例DA1至DA9中之任一者之主題,且該電路系統將進一步:使用資料密鑰及參照記憶體位置之經編碼指標的線性位址之至少一部分來對第一資料之第二MAC進行運算。
實例DB1提供一種方法,其包含:針對第一程序在記憶體中創建中斷描述符;回應於藉由處理器電路系統接收用以存取用於資料區之記憶體分配中之記憶體位置的記憶體存取請求,計算記憶體分配之中點位址,其中記憶體位置係由包括記憶體位置之線性位址之至少一部分的經編碼指標來參照;基於中點位址計算用於與儲存於記憶體位置處之第一資料相關聯的第一訊息鑑別碼(MAC)之第二記憶體位址;讀取第二記憶體位址處之第一MAC;自對應於經編碼指標中之線性位址的記憶體位置讀取第一資料;部分地基於第一MAC判定第一資料未經損壞;及回應於判定第一資料未經損壞,允許執行記憶體存取請求。
實例DB2包含實例DB1之主題,且該方法進一步包括:對第一資料之第二MAC進行運算;及將第二MAC與第一MAC進行比較,其中第一資料未經損壞之判定係回應於第一MAC與第二MAC匹配。
實例DB3包含實例DB1至DB2中之任一者之主題,且該記憶體存取請求為寫入請求。
實例DB4包含實例DB3之主題,且該方法進一步包括:將第一資料之第三記憶體位址轉譯為第四記憶體位址,其中基於第三記憶體位址、資料區中之資料區塊之數目、資料區中之一或多個資料區塊之大小及與每一資料區塊交錯之元資料部分之大小對第四記憶體位址進行運算。
實例DB5包含實例DB3至DB4中之任一者之主題,且該方法進一步包括:回應於判定第一資料未經損壞,計算用於第一資料之新的MAC;及將新的MAC及新的資料儲存至記憶體位置。
實例DB6包含實例DB1至DB2中之任一者之主題,且該記憶體存取請求為讀取請求。
實例DB7包含實例DB6之主題,且該方法進一步包括:判定第一資料是否儲存於資料區之上限及下限內,其中回應於判定第一資料係儲存於資料區之上限及下限內,在第二記憶體位址處讀取第一MAC且在對應於線性位址之記憶體位置處讀取第一資料。
實例DB8包含實例DB1至DB7中之任一者之主題,且該第一MAC係儲存在記憶體分配之元資料部分中,該元資料部分鄰近記憶體分配之中點。
實例DB9包含實例DB1至DB7中之任一者之主題,且該第一MAC儲存在記憶體分配中之第一資料與第二資料之間,其中一或多個其他資料。
實例DB10包含實例DB1至DB9中之任一者之主題,且該方法進一步包括:使用資料密鑰及參照記憶體位置之經編碼指標的線性位址之至少一部分來對第一資料之第二MAC進行運算。
實例DC1包括一種設備,其包含用以執行實例DB1至DB10中之任一者之方法的一或多個要素之構件。
實例DD1包括一或多個非暫時性電腦可讀媒體,其包含指令,該等指令使得電子裝置在該電子裝置之一或多個處理器執行指令時執行實例DB1至DB10中之任一者的方法之一或多個要素。
實例DE1包括機器可讀儲存器,其包括機器可讀指令,該等機器可讀指令在被執行時實施實例DB1至DB10中之任一者之方法。
實例DF1包括一種設備,其包含:一或多個處理器及包含指令之一或多個電腦可讀媒體,該等指令在由該一或多個處理器執行時使得該一或多個處理器執行實例DB1至DB10中之任一者之方法。
實例DB11包含實例DB1至DB10中之任一者之主題,且進一步包含本文中之其他方法實例中之任一者的方法之步驟(只要彼等方法步驟與實例DB1至DB10之方法步驟無關)。
圖43至圖47在下文提供一些實例運算裝置、運算環境、硬體、軟體或流程,其可用於如本文中所描述之實施例之上下文中。
圖43為根據至少一個實施例之說明實例密碼運算環境4300的方塊圖。在所展示之實例中,密碼定址層4310橫跨實例運算向量-中央處理單元(CPU) 4302、圖形處理單元(GPU) 4304、人工智慧(AI) 4306及場可規劃閘陣列(FPGA) 4308擴展。舉例而言,CPU 4302及GPU 4304可共用用於儲存在記憶體4312中之資料的相同虛擬位址轉譯,且該等密碼位址可在此共用虛擬記憶體上構建。其可共用用於給定執行流程之相同程序密鑰,且對相同微調進行運算以按照相同密碼演算法對以密碼方式經編碼之位址進行解密且對由此類經編碼之位址參照的資料進行解密。
本文中所描述的能力組合起來可啟用密碼運算。可在自快取記憶體之第一層級至快取記憶體之最後層級的記憶體階層之每一層級對記憶體4312進行加密,且將其加密成系統記憶體。將密碼位址編碼綁定至資料加密可允許極細粒的物件界限及存取控制,從而啟用微粒安全容器之甚至個別功能且啟用其物件之功能即服務。以密碼方式編碼呼叫堆疊上之返回位址(取決於其位置)亦可啟用控制流程完整性,而無需陰影堆疊元資料。因此,可僅僅取決於密碼定址及各別密碼資料綁定而以密碼方式執行資料存取控制策略及控制流程中之任一者。
圖44至圖14為可根據本文中所揭露之實施例使用之例示性電腦架構的方塊圖。通常,可使用用於處理器及運算系統之所屬領域中已知的任何電腦架構設計。在一實例中,所屬領域中已知的用於筆記本電腦、桌上型電腦、手持式PC、個人數位助理、平板電腦、工程化工作站、伺服器、網路裝置、伺服器、電氣設備、網路集線器、路由器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微型控制器、智慧型手機、行動裝置、可穿戴電子裝置、便攜式媒體播放器、手持式裝置及各種其他電子裝置的系統設計及組配亦適於本文中所描述的運算系統之實施例。通常,用於本文中所揭露之實施例的合適電腦架構可包括但不限於圖44至圖46中所說明的組配。
圖44為根據一實施例之處理器之實例說明。處理器4400為可結合本文中所展示且描述的實施使用之一種類型的硬體裝置(例如處理器102)之實例。處理器4400可為任何類型的處理器,諸如微處理器、嵌人式處理器、數位信號處理器(DSP)、網路處理器、多核處理器、單核處理器,或執行程式碼之其他裝置。儘管在圖44中僅說明一個處理器4400,但處理元件可替代地包括圖44中所說明的處理器4400中之多於一者。處理器4400可為單一執行緒核心,或對於至少一個實施例,處理器4400可為多執行緒的,此係因為處理器每一核心可包括多於一個硬體執行緒上下文(或「邏輯處理器」)。
圖44亦說明根據一實施例之耦接至處理器4400的記憶體4402。記憶體4402可為如熟習此項技術者已知或以其他方式可用於熟習此項技術者的廣泛多種記憶體(包括記憶體階層之各種層)中之任一者。此類記憶體元件可包括但不限於隨機存取記憶體(RAM)、唯讀記憶體(ROM)、場可規劃閘陣列(FPGA)之邏輯區塊、可擦除可規劃唯讀記憶體(EPROM),及電可擦除可規劃ROM (EEPROM)。
處理器4400可執行與本文中詳述的演算法、程序或操作相關聯之任何類型的指令。通常,處理器4400可將元件或物品(例如資料)自一個狀態或事物變換為另一狀態或事物。
可為待由處理器4400執行之一或多個指令的程式碼4404可在適當時且基於特定需要而儲存在記憶體4402中,或可儲存在軟體、硬體、韌體或其任何合適組合中,或儲存在任一其他內部或外部組件、裝置、元件或物件中。在一個實例中,處理器4400可遵循藉由程式碼4404指示之指令之程式序列。每一指令進入前端邏輯4406,且由一或多個解碼器4408處理。解碼器可產生微操作作為其輸出,微操作諸如呈預定義格式的固定寬度微操作;或可產生其他指令、微指令或反映原始程式碼指令的控制信號。前端邏輯4406亦包括大體上分配資源並將對應於用於執行之指令的操作排入佇列的暫存器重命名邏輯4410及排程邏輯4412。
處理器4400亦可包括執行邏輯4414,其具有一組執行單元4416a、4416b、4416n等。一些實施例可包括專用於特定功能或功能之集合的數個執行單元。其他實施例可包括僅一個執行單元或可執行特定功能之一個執行單元。執行邏輯4414執行由程式碼指令規定之操作。
在由程式碼指令規定之操作的執行完成後,後端邏輯4418可引退程式碼4404之該等指令。在一實施例中,處理器4400允許無次序執行但需要有序引退指令。引退邏輯4420可採取多種已知形式(例如,重排序緩衝器或其類似者)。以此方式,處理器4400至少依據由解碼器產生之輸出、硬體暫存器及由暫存器重命名邏輯4410利用的表以及由執行邏輯4414修改的任何暫存器(圖中未示)在程式碼4404之執行期間經變換。
儘管圖44中未展示,但處理元件可在具有處理器4400之晶片上包括其他元件。舉例而言,處理元件可包括記憶體控制邏輯以及處理器4400。處理元件可包括I/O控制邏輯及/或可包括與記憶體控制邏輯整合之I/O控制邏輯。處理元件亦可包括一或多個快取記憶體。在一些實施例中,非依電性記憶體(諸如快閃記憶體或熔絲)亦可包括在具有處理器4400之晶片上。
圖45A為根據本揭露內容之一或多個實施例之說明例示性有序管線及例示性暫存器重命名、無序發佈/執行管線二者的方塊圖。圖45B為說明根據本揭露內容之一或多個實施例的待包括於處理器中的有序架構核心之例示性實施例及例示性暫存器重命名、無序發佈/執行架構核心二者的方塊圖。圖45A至圖45B中之實線框說明有序管線及有序核心,而虛線框之任擇的添加說明暫存器重命名、無序發佈/執行管線及核心。假定有序態樣為無序態樣之子集,將描述無序態樣。
在圖45A中,處理器管線4500包括提取級4502、長度解碼級4504、解碼級4506、分配級4508、重命名級4510、排程(亦被稱作分派或發佈)級4512、暫存器讀取/記憶體讀取級4514、執行級4516、寫回/記憶體寫入級4518、異常處置級4522,及提交級4524。
圖45B展示包括耦接至執行引擎單元4550之前端單元4530的處理器核心4590,且該前端單元及該執行引擎單元均耦接至記憶體單元4570。處理器核心4590及記憶體單元4570為可結合本文中所展示且描述的實施使用之硬體(例如處理器102、記憶體120)之類型的實例。核心4590可為精簡指令集運算(RISC)核心、複雜指令集運算(CISC)核心、超長指令字(VLIW)核心或混合或替代核心類型。作為又一選項,核心4590可為專用核心,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用運算圖形處理單元(GPGPU)核心、圖形核心或其類似者。另外,處理器核心4590及其組件表示實例架構,其可用於實施邏輯處理器及其各別組件。
前端單元4530包括耦接至指令快取記憶體單元4534之分支預測單元4532,該指令快取記憶體單元耦接至指令轉譯後備緩衝器(TLB)單元4536,該指令轉譯後備緩衝器單元耦接至指令提取單元4538,該指令提取單元耦接至解碼單元4540。解碼單元4540 (或解碼器)可解碼指令,且產生一或多個微操作、微碼入口點、微指令、其他指令或其他控制信號(其係自原始指令解碼或以其他方式反映原始指令或係自原始指令導出)作為輸出。解碼單元4540可使用各種不同機制來實施。合適機構之實例包括但不限於查找表、硬體實施、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一個實施例中,核心4590包括儲存用於某些巨集指令(例如,在解碼單元4540中或以其他方式在前端單元4530內)之微碼的微碼ROM或其他媒體。解碼單元4540耦接至執行引擎單元4550中之重命名/分配器單元4552。
執行引擎單元4550包括耦接至引退單元4554及一組一或多個排程器單元4556的重命名/分配器單元4552。排程器單元4556表示任何數目個不同排程器,包括保留站、中央指令窗等。排程器單元4556耦接至實體暫存器檔案單元4558。實體暫存器檔案單元4558中之每一者表示一或多個實體暫存器檔案,實體暫存器檔案中之不同實體暫存器檔案儲存一或多個不同資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,為待執行之下一指令的位址之指令指標),等。在一個實施例中,實體暫存器檔案單元4558包含向量暫存器單元、寫入遮罩暫存器單元及純量暫存器單元。此等暫存器單元可提供架構向量暫存器、向量遮罩暫存器及通用暫存器(GPR)。在本文中所描述的至少一些實施例中,暫存器單元4558為可結合本文中所展示且描述之實施使用的硬體(例如暫存器110)之類型之實例。實體暫存器檔案單元4558與引退單元4554重疊以說明可實施暫存器重命名及無序執行之各種方式(例如,使用重新排序緩衝器及引退暫存器檔案;使用未來檔案、歷史緩衝器及引退暫存器檔案;使用暫存器映射及暫存器之集區;等等)。引退單元4554及實體暫存器檔案單元4558耦接至執行群集4560。執行群集4560包括一或多個執行單元4562之集合及一或多個記憶體存取單元4564之集合。執行單元4562可執行各種運算(例如,移位、加法、減法、乘法)且針對各種類型之資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行各種運算。雖然一些實施例可包括專用於特定功能或功能集合之數個執行單元,但其他實施例可包括僅一個執行單元或全部執行所有功能之多個執行單元。執行單元4562亦可包括位址產生單元以計算由核心使用以存取主記憶體(例如記憶體單元4570)及頁面未命中處理常式(PMH)之位址。
排程器單元4556、實體暫存器檔案單元4558及執行群集4560經展示為可能為多個,此係因為某些實施例產生用於某些類型之資料/操作之單獨管線(例如,各自具有其自身排程器單元、實體暫存器檔案單元及/或執行群集之純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線及/或記憶體存取管線,且在單獨記憶體存取管線的狀況下,實施其中僅此管線之執行群集具有記憶體存取單元4564之某些實施例)。亦應理解,當使用單獨管線時,此等管線中之一或多者可為無序發佈/執行,且剩餘部分係有序的。
記憶體存取單元4564之集合耦接至記憶體單元4570,該記憶體單元包括耦接至資料快取記憶體單元4574之資料TLB單元4572,該資料快取記憶體單元耦接至層級2 (L2)快取記憶體單元4576。在一個例示性實施例中,記憶體存取單元4564可包括載入單元、儲存位址單元及儲存資料單元,其中之每一者耦接至記憶體單元4570中之資料TLB單元4572。指令快取記憶體單元4534進一步耦接至記憶體單元4570中之層級2 (L2)快取記憶體單元4576。L2快取記憶體單元4576耦接至快取記憶體之一或多個其他層級且最終耦接至主記憶體。另外,若在資料TLB單元4572中未發現匹配,則頁面未命中處理常式亦可包括於核心4590中以查詢頁表中之位址映射。
作為實例,例示性暫存器重命名、無序發佈/執行核心架構可如下實施管線4500:1)指令提取單位4538執行提取級4502及長度解碼級4504;2)解碼單元4540執行解碼級4506;3)重命名/分配器單元4552執行分配級4508及重命名級4510;4)排程器單元4556執行排程級4512;5)實體暫存器檔案單元4558及記憶體單元4570執行暫存器讀取/記憶體讀取級4514;執行群集4560執行執行級4516;6)記憶體單元4570及實體暫存器檔案單元4558執行寫回/記憶體寫入級4518;7)異常處置級4522中可涉及各種單元;及8)引退單元4554及實體暫存器檔案單元4558執行提交級4524。
核心4590可支援一或多個指令集(例如,x86指令集(具有已添加較新版本之一些擴展);加利福尼亞州森尼維耳市(Sunnyvale,CA)之MIPS Technologies的MIPS指令集;加利福尼亞州森尼維耳市之ARM Holdings的ARM指令集(具有諸如NEON之任擇的額外擴展),包括本文中所描述的指令。在一個實施例中,核心4590包括用以支援緊縮資料指令集擴展(例如,AVX1、AVX2)之邏輯,藉此允許許多多媒體應用使用之操作使用緊縮資料來執行。
應理解,該核心可支援多執行緒處理(執行操作或執行緒之二個或多於二個平行集合),及可以多種方式進行此操作,包括時間分片多執行緒處理、同時多執行緒處理(其中單一實體核心提供用於實體核心正同時多執行緒處理的執行緒中之每一者之邏輯核心),或其組合(例如,時間分片提取及解碼及其後之同時多執行緒處理,諸如在Intel®超執行緒技術中)。因此,在至少一些實施例中,可支援經多執行緒處理之指定位址空間。
雖然在無序執行之情形下描述暫存器重命名,但應理解,暫存器重命名可用於有序架構中。雖然處理器之所說明實施例亦包括單獨指令快取記憶體單元4534及資料快取記憶體單元4574以及共用L2快取記憶體單元4576,但替代實施例可具有用於指令及資料二者之單一內部快取記憶體,諸如層級1(L1)內部快取記憶體或多個層級之內部快取記憶體。在一些實施例中,系統可包括內部快取記憶體與在核心及/或處理器外部之外部快取記憶體的組合。替代地,所有快取記憶體可在核心及/或處理器外部。
圖46說明根據一實施例之配置於點對點(PtP)組配中的運算系統4600。詳言之,圖46展示一系統,其中處理器、記憶體以及輸入/輸出裝置係藉由數個點對點介面互連。通常,本文中所描述的運算系統或運算裝置中之一或多者可與運算系統4600以相同或類似方式經組配。
處理器4670及4680可經實施為單核處理器4674a及4684a或多核處理器4674a至4674b及4684a至4684b。處理器4670及4680可各自包括由其各別核心使用之快取記憶體4671及4681。共用快取記憶體(圖中未示)可包括於二個處理器中之任一者中或在二個處理器外部,又經由P-P互連件與處理器連接,使得可將二個處理器中之任一者或二者之本端快取記憶體資訊儲存於共用快取記憶體中(若處理器置放於低功率模式中)。應注意,本文中所描述的一或多個實施例可實施於諸如運算系統4600之運算系統中。此外,處理器4670及4680係可結合本文中所展示且描述的實施使用之硬體(例如處理器102)之類型之實例。
處理器4670及4680亦可各自包括整合式記憶體控制器邏輯(IMC) 4672及4682以與記憶體元件4632及4634通訊,該等記憶體元件可為在本端附接至各別處理器之主記憶體之部分。在替代實施例中,記憶體控制器邏輯4672及4682可為與處理器4670及4680分離的離散邏輯。記憶體元件4632及/或4634可儲存待由處理器4670及4680使用之各種資料以實現本文中所概述之操作及功能性。
處理器4670及4680可為任何類型之處理器,諸如結合其他圖論述之處理器。處理器4670及4680可分別地使用點對點介面電路4678及4688經由點對點(PtP)介面4650交換資料。處理器4670及4680可各自使用點對點介面電路4676、4686、4694及4698經由個別點對點介面4652及4654與輸入/輸出(I/O)子系統4690交換資料。I/O子系統4690亦可使用可為PtP介面電路之介面電路4692經由高效能圖形介面4639與高效能圖形電路4638交換資料。在一個實施例中,高效能圖形電路4638為專用處理器,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或其類似者。I/O子系統4690亦可與顯示器4633通訊以用於顯示可由人類使用者檢視之資料。在替代實施例中,圖46中所說明的任何或所有PtP鏈路可實施為多點匯流排而非PtP鏈路。
I/O子系統4690可經由介面電路4696與匯流排4610通訊。匯流排4610可具有經由其通訊之一或多個裝置,諸如匯流排橋接器4618、I/O裝置4614及一或多個其他處理器4615。經由匯流排4620,匯流排橋接器4618可與諸如以下各者之其他裝置通訊:使用者介面4622 (諸如鍵盤、滑鼠、觸控式螢幕或其他輸入裝置)、通訊裝置4626 (諸如數據機、網路介面裝置或可藉由電腦網路4660通訊之其他類型的通訊裝置)、音訊I/O裝置4624,及/或儲存單元4628。儲存單元4628可儲存可由處理器4670及/或4680執行之資料及程式碼4630。在替代實施例中,匯流排架構之任何部分可經實施具有一或多個PtP鏈路。
可將諸如程式碼4630之程式碼應用於輸入指令以執行本文中所描述之功能且產生輸出資訊。可以已知方式將輸出資訊應用於一或多個輸出裝置。出於本申請案之目的,處理系統可為運算系統4600之部分,且包括具有諸如數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)或微處理器之處理器的任何系統。
程式碼(例如4630)可用高階程序或物件導向式程式設計語言來實施以與處理系統通訊。必要時,亦可用組合語言或機器語言實施程式碼。實際上,本文中所描述的機制範疇並不限於任何特定程式設計語言。在任何狀況下,語言可為編譯或解譯語言。
在一些狀況下,指令轉換器可用以將指令自源指令集轉換為目標指令集。舉例而言,指令轉換器可將指令轉譯(例如,使用靜態二進位轉譯、包括動態編譯之動態二進位轉譯)、變形、模擬或以其他方式轉換至待由核心處理之一或多個其他指令。指令轉換器可以軟體、硬體、韌體或其組合來實施。指令轉換器可處於處理器上、處理器外,或部分處於處理器上且部分在處理器外。
圖47為根據本揭露內容之實施例的對比軟體指令轉換器之使用的方塊圖,該軟體指令轉換器用以將源指令集中之二進位指令轉換成目標指令集中之二進位指令。在所說明之實施例中,指令轉換器為軟體指令轉換器,但替代性地指令轉換器可以軟體、韌體、硬體或其各種組合來實施。圖47展示,可使用x86編譯器4704來編譯以高階語言4702撰寫之程式以產生x86二進位程式碼4706,該二進位程式碼本身可由具有至少一個x86指令集核心4716之處理器執行。具有至少一個x86指令集核心4716之處理器表示藉由相容地執行或以其他方式處理以下各者以便達成與具有至少一個x86指令集核心之Intel處理器實質上相同的結果而可執行與具有至少一個x86指令集核心之Intel處理器實質上相同的功能的任何處理器:(1)Intel x86指令集核心之指令集的大部分,或(2)目標為執行於具有至少一個x86指令集核心之Intel處理器上的應用程式或其他軟體之目標程式碼版本。x86編譯器4704表示可操作以產生x86二進位程式碼4706 (例如,目標碼)之編譯器,該x86二進位程式碼可在具有或不具有額外連結處理之情況下實行於具有至少一個x86指令集核心4716之處理器上。類似地,圖47展示,可使用替代指令集編譯器4708來編譯以高階語言4702撰寫之程式以產生替代指令集二進位程式碼4710,該二進位程式碼本身可由不具有至少一個x86指令集核心4714之處理器(例如,具有執行加利福尼亞州森尼維耳市MIPS Technologies之MIPS指令集及/或執行加利福尼亞州森尼維耳市之ARM Holdings之ARM指令集的核心的處理器)執行。指令轉換器4712用以將x86二進位程式碼4706轉換為本身可由不具有x86指令集核心4714之處理器實行的程式碼。此經轉換程式碼不可能與替代指令集二進位程式碼4710相同,此係因為能夠進行此轉換之指令轉換器難以製造;然而,該經轉換程式碼將實現一般操作且由來自替代指令集之指令構成。因此,指令轉換器4712表示軟體、韌體、硬體或其組合,其經由仿真、模擬或任何其他程序而允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行x86二進位程式碼4706。
可由儲存於表示處理器內之各種邏輯之機器可讀媒體上的代表性指令實施至少一實施例之一或多個態樣,該等指令在由機器讀取時使機器製造用以執行本文中所描述之技術中之一或多者的邏輯。稱為「IP核心」之此等表示可儲存於有形機器可讀媒體上,並將其供應至各種客戶或製造設施,以載入至實際上製造邏輯或處理器之製造機器中。
此等機器可讀儲存媒體可包括但不限於由機器或裝置製造或形成之物品的非暫時性有形配置,包括儲存媒體,諸如硬碟機、包括軟碟之任何其他類型之磁碟、光碟、緊密光碟唯讀記憶體(CD-ROM)、可重寫緊密光碟(CD-RW),及磁光碟、諸如唯讀記憶體(ROM)之半導體裝置、諸如動態隨機存取記憶體(DRAM)之隨機存取記憶體(RAM)、靜態隨機存取記憶體(SRAM)、可擦除可規劃唯讀記憶體(EPROM)、快閃記憶體、電可擦除可規劃唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光卡、或適於儲存電子指令之任何其他類型之媒體。
因此,本揭露內容之實施例亦包括含有指令或含有定義本文中描述之結構、電路、設備、處理器及/或系統特徵的設計資料(諸如,硬體描述語言(HDL))之非暫時性有形機器可讀媒體。此等實施例亦可被稱為程式產品。
圖46中所描繪的運算系統為可用以實施本文中所論述之各種實施例的運算系統之實施例之示意性說明。應瞭解,圖46中所描繪的系統之各種組件可在系統單晶片(SoC)架構中或在能夠實現本文中提供之實例及實施之功能性及特徵的任一其他合適組配中組合。
儘管在某些實施及大體上相關聯的方法方面描述了本揭露內容,但此等實施及方法之變更及排列對於熟習此項技術者將顯而易見。舉例而言,本文中所描述的動作可以與如所描述不同的次序執行且仍實現所要結果。作為一個實例,附圖中描繪之程序未必需要展示之特定次序,或依序次序,以實現所要結果。在某些實施中,多任務及並行處理可為有利的。其他變化係在以下申請專利範圍的範疇內。
本文中呈現之架構僅作為實例提供,且意欲為排他性及非限制性。此外,經揭露之各種部分僅意欲為邏輯劃分,且不必一定表示實體上分離之硬體及/或軟體組件。某些運算系統可在單個的實體記憶體裝置中提供記憶體元件,且在其他狀況下,記憶體元件可在功能上橫跨許多實體裝置分佈。在虛擬機管理器或超管理器之狀況下,功能之全部或部分可以在虛擬化層上運行之軟體或韌體之形式提供,以提供經揭露邏輯功能。
應注意,在本文中提供之實例之情況下,可在單個運算系統方面描述相互作用。然而,相互作用僅為了清楚及舉例目的而進行。在某些狀況下,可較易於僅藉由參考單個運算系統來描述流程之給定集合的功能性中之一或多者。此外,用於深度學習及惡意軟體偵測之系統可容易地擴展,且可橫跨大量組件(例如多個運算系統)以及較複雜/精密的配置及組配實施。因此,在將運算系統潛在地應用於大量其他架構時,所提供之實例不應限制運算系統之範疇或抑制運算系統之廣泛教示。
如本文中所使用,除非明確相反地陳述,否則片語「中之至少一者」之使用係指經命名項目、元件、條件或活動之任一組合。舉例而言,「X、Y及Z中之至少一者」意欲意謂以下各者中之任一者:1)至少一個X,而非Y及Z;2)至少一個Y,而非X及Z;3)至少一個Z,而非X及Y;4)至少一個X且至少一個Y,而非Z;5)至少一個X且至少一個Z,而非Y;6)至少一個Y且至少一個Z,而非X;或7)至少一個X,至少一個Y,且至少一個Z。
另外,除非明確地相反地陳述,否則術語「第一」、「第二」、「第三」等旨在區分其修飾之特定名詞(例如元件、條件、模組、活動、操作、請求項元件等),但並不意欲指示經修飾名詞之任何類型的次序、等級、重要性、時間序列或階層。舉例而言,「第一X」及「第二Y」旨在指代二個單獨的X元件,其不一定受二個元件之任一次序、等級、重要性、時間序列或階層限制。
本說明書中對「一個實施例」、「一實施例」、「一些實施例」等之參考指示所描述的實施例可包括一特定特徵、結構或特性,但每一實施例可或可能未必包括彼特定特徵、結構或特性。此外,此類片語未必指代同一實施例。
雖然本說明書含有許多特定實施細節,但此等細節不應視為任何實施例或可能主張的範疇的限制,而應認作特定針對於特定實施例的特徵的描述。在單獨實施例之上下文中描述於此說明書中之某些特徵亦可在單一實施例中以組合形式實施。相反地,在單個實施例之上下文中所描述的各種特徵亦可分別在多個實施例中實施或以任何合適的子組合來實施。此外,儘管上文可將特徵描述為以某些組合起作用且甚至最初按此來主張,但來自所主張組合之一或多個特徵在一些狀況下可自該組合刪除,且所主張組合可係針對子組合或子組合之變化。
類似地,上文所描述的實施例中之各種系統組件及模組之分離不應理解為在所有實施例中需要此類分離。應理解,經描述程式組件、模組及系統通常可在單個的軟體產品中在一起整合或經封裝至多個軟體產品中。
下文所描述或圖中所說明的各種組件中之任一者之流程、方法、程序(或其部分)或功能性中之任一者可由任何合適的運算邏輯執行,該任何合適的運算邏輯諸如一或多個模組、引擎、區塊、單元、模型、系統或其他合適的運算邏輯。本文中對「模組」、「引擎」、「區塊」、「單元」、「模型」、「系統」或「邏輯」之參照可指代硬體、韌體、軟體及/或每一者之組合以執行一或多個功能。作為一實例,模組、引擎、區塊、單元、模型、系統或邏輯可包括一或多個硬體組件,諸如微控制器或處理器,該等硬體組件與用以儲存適於由微控制器或處理器執行之程式碼的非暫時性媒體相關聯。因此,在一個實施例中,對模組、引擎、區塊、單元、模型、系統或邏輯之參照可指代硬體,其經特定組配以辨識及/或執行待保存於非暫時性媒體上之程式碼。此外,在另一實施例中,模組、引擎、區塊、單元、模型、系統或邏輯之使用係指包括程式碼之非暫時性媒體,其經特定調適以由微控制器或處理器執行以執行預定操作。且如可推斷,在另一實施例中,模組、引擎、區塊、單元、模型、系統或邏輯可指代硬體與非暫時性媒體之組合。在各種實施例中,模組、引擎、區塊、單元、模型、系統或邏輯可包括可用於執行軟體指令之微處理器或其他處理元件、諸如特殊應用積體電路(ASIC)之離散邏輯、諸如場可規劃閘陣列(FPGA)之經程式化邏輯裝置、含有指令之記憶體裝置、邏輯裝置之組合(例如,如在印刷電路板上所發現),或其他合適的硬體及/或軟體。模組、引擎、區塊、單元、模型、系統或邏輯可包括一或多個閘或其他電路組件,其可由例如電晶體實施。在一些實施例中,模組、引擎、區塊、單元、模型、系統或邏輯可充分地體現為軟體。軟體可體現為記錄於非暫時性電腦可讀儲存媒體上之套裝軟體、程式碼、指令、指令集及/或資料。韌體可體現為硬寫碼(例如,非依電性地)於記憶體裝置中之程式碼、指令或指令集及/或資料。此外,經說明為分離的邏輯界限通常不同且可能重疊。舉例而言,第一模組及第二模組(或多個引擎、區塊、單元、模型、系統或邏輯)可共用硬體、軟體、韌體或其一組合,同時可能保持一些獨立硬體、軟體或韌體。
因此,已描述主題的特定實施例。其他實施例係在本揭露內容的範疇內。熟習此項技術者可確定眾多其他改變、替代、變化、更改及修改,且本揭露內容意欲涵蓋如在隨附申請專利範圍之範疇內的所有此等改變、替代、變化、更改及修改。
100:實例計算裝置 104,202:位址密碼單元 105:處理器密鑰 106:安全記憶體存取邏輯 108,270:密碼運算引擎 110,2822:暫存器 114,210:經編碼指標 116:密鑰 117:微調 120,220,1919,2219,4312,4402,4632,4634:記憶體 124:輸入/輸出子系統 126:資料儲存裝置 128:顯示裝置 130:使用者介面(UI)子系統 132:通訊子系統 134:使用者空間應用程式 142:特權系統組件 144:記憶體管理器模組/記憶體分配器 146:記憶體分配器 148:密鑰創建模組 150:加密儲存邏輯 160:解密載入邏輯 170,2824,4671,4681:快取記憶體 180,2826:補充處理器記憶體 188:映射 190:硬體可信實體 192:密鑰管理硬體 200A,200B:一般程序 204:轉譯後備緩衝器 212:經解碼線性位址 214:實體位址 216:資料密鑰 217:資料微調 222:未經加密資料 224:經加密資料 272:AES-CTR模式區塊密碼 274:邏輯功能 276:密鑰流 300:分散式運算網路 302:用戶端運算節點 310,320,330,340,350:層 312:邊緣閘道節點 322:邊緣聚合節點 324:霧裝置 326:霧聯網組配 332:核心資料中心 334:邊緣雲 342:全球網路雲 350:雲端資料中心層 400,500,502:實體機器 402:處理器單元 404,504,506,508:主機 406,408,702:物件 410,416:增強型密碼位址 412:主機ID 414,418:物件ID 420:頁表 510:程式碼物件 512,514,516,518:資料物件 520:物件故障處置器 522:密鑰後備緩衝器 524:網路 232,602,604,606,704,706,708,710,802,804,806,808,810,1402,1404,1406,1408,1410,1412,1414,1416,1502,1504,1506,1508,1510,1512,1514,1516,1602,1604,1606,2002,2004,2006,2008,2010,2012,2014,2302,2304,2306,2308,2310,2312,2314,2904,2906,2908,3004,3006,3008,3010,3104,3106,3108,3110,3204,3206,3208,3210,3302,3304,3306,3308,3310,3312,3314,3316,3318,3320,3322,3324,3326,3702,3704,3706,3708,3710,3712,3714,3716,3802,3804,3806,3808,3810,3812,3814,3816,4006,4014,4016,4202,4204,4206,4208,4212,4214,4220:步驟 800:流程 900,1012:表 902:密碼指標編碼 904:查詢標籤 906:密文 908:微調位址 910:指標算術部分 912,1108,1210,1306,3910:分配 1002:新的空間 1004:中間空間 1006:舊的空間 1008,1010:操作 1102,3480:指標 1104,1204:經壓縮指標 1106:功率大小 1202:經解壓縮指標 1206:魔數 1208:分配長度 1301,1302:指標標籤位元 1304:上下文資訊 1700,2600:簡化方塊圖 1710,1810,2110:應用程式記憶體 1711,1712,1713,1811,1812,1813,2111,2112,2113,2114:資料 1800:另一簡化方塊圖 1900:實例硬體組配 1910,2210:主機SoC 1912,2212:根埠 1914,2214:IOMMU 1916,2216,2226:加密引擎 102,1918,2218,2405,2801,3470,4400,4670,4680,4674a,4674b,4684a,4684b:處理器 1920,2220:IO裝置SoC 1922,2222:裝置TLB 1924,2224:同調資料儲存器 2000,2300,3700,3800,4200:實例程序 2100:又一簡化方塊圖 2200:另一實例硬體組配 2300:另一實例程序 2400,2800:系統 2406:前側匯流排(FSB) 2410:系統記憶體 2415:控制器集線器 2416:記憶體介面 2417,2421:輸入/輸出模組 2419,2432:串聯鏈路 2420:交換器/橋接器 2423:鏈路 2425:裝置 2422,2426:介面 2430:圖形加速器 2431,2418:I/O模組 2450:擴展裝置 2500:分層協定堆疊 2505:異動層 2506:封包標頭/酬載 2510:鏈路層 2511:用封包序列識別符 2512:CRC 2520:實體層 2521:邏輯子區塊 2522:電子區塊 2523:圖框 2605:主機處理器 2610:加速器裝置 2615a,2615b,4590:處理器核心 2618,4614:I/O裝置 2620:加速器邏輯 2625:同調/快取邏輯 2630:PCIe邏輯 2635a,2635b:I/O協定 2640a,2640b:快取協定 2645a,2645b:記憶體存取協定 2650:CXL鏈路 2655a,2655b:CXL多工邏輯 2660:主機記憶體 2665:加速器記憶體 2700:實例埠架構 2705,2725:異動層邏輯 2710,2735:鏈路層邏輯 2715:實體層邏輯 2720:CXL仲裁/多工(ARB/MUX)邏輯 2730:邏輯 2740:快取記憶體及記憶體鏈路層增強邏輯 2745:經會聚邏輯實體層 2750:PCIe電氣PHY 2755:PCIe異動層 2760:CXL異動層增強 2765:基礎PCIe資料鏈路層 2770:CXL鏈路層 2802:指令串流 2804,3474,4674,4684:核心 2806:前端 2808:指令提取單元 2810:決定單元 2812:執行引擎 2814:分配器 2816,4416a,4416b,4416n,4562:執行單元 2817:密碼運算引擎及/或微碼 2820:記憶體子系統 2830:主記憶體 2832:特定格式 2840:專用暫存器 2842:指標密鑰暫存器 2844:資料密鑰暫存器 2846:程式碼密鑰暫存器 2900,3000,3100,3200,3300,4000A,4000B:流程圖 2902:PRGCODEKEY/PRGDATAKEY/PRGPTRKEY指令 3002:PRGCODEKEYContext/PRGDATAKEYContext/PRGPTRKEYContext指令 3102:SAVECODEKEY/SAVEDATAKEY/SAVEPTRKEY指令 3202:RSTORCODEKEY/RSTORDATAKEY/RSTORPTRKEY指令 3440,3600,3900:槽 3442:各別中點位址 3450,3484:元資料 3454:各別記憶體分配 3460:程式 3471:說明性記憶體電路系統/快取記憶體電路系統 3472:記憶體控制器電路系統 3482:記憶體位址 3502,3504,3506:訊息鑑別碼 3610:第一經分配資料區 3612,3614,3616,3618,3619:部分 3620:相同資料區 3630:資料界限資訊 3640:區塊層級MAC 3642,3644,3646,3648,3649:MAC 3905:快取行 3912,3914,3916,3918,3919:部分/MAC 3920:第二分配 4002:BorrowOwnership指令/ReturnOwnership指令 4110:實例128位元經編碼指標 4112:資料訊息鑑別碼(MAC)部分 4114:資料長度部分 4116:旗標位元部分 4118:線性位址部分 4120:資料/程式碼 4122:資料MAC演算法 4124:資料MAC密鑰 4300:實例密碼運算環境 4302:中央處理單元(CPU) 4304:圖形處理單元(GPU) 4306:人工智慧(AI) 4308:場可規劃閘陣列(FPGA) 4310:密碼定址層 4404:程式碼 4406:前端邏輯 4408:解碼器 4410:暫存器重命名邏輯 4412:排程邏輯 4414:執行邏輯 4418:後端邏輯 4420:引退邏輯 4500:處理器管線 4502:提取級 4504:長度解碼級 4506:解碼級 4508:分配級 4510:重命名級 4512:排程級 4514:暫存器讀取/記憶體讀取級 4516:執行級 4518:寫回/記憶體寫入級 4522:異常處置級 4524:提交級 4530:前端單元 4532:分支預測單元 4534:指令快取記憶體單元 4536:指令轉譯後備緩衝器(TLB)單元 4538:指令提取單元/高效能圖形電路 4638:高效能圖形電路 4639:高效能圖形介面 4540:解碼單元 4550:執行引擎單元 4552:重命名/分配器單元 4554,2818:引退單元 4556:排程器單元 4558:實體暫存器檔案單元 4560:執行群集 4564:記憶體存取單元 4570:記憶體單元 4572:資料TLB單元 4574:資料快取記憶體單元 4576:層級2 (L2)快取記憶體單元 4600:運算系統 4610,4620:匯流排 4615:一或多個其他處理器 4618:匯流排橋接器 4622:使用者介面 4624:音訊I/O裝置 4626:通訊裝置 4628:儲存單元 4630:資料及程式碼 4633:顯示器 4650,4652,4654:點對點(PtP)介面 4660:電腦網路 4672,4682:IMC 4678,4688,4676,4686,4694,4698:點對點介面電路 4690:輸入/輸出(I/O)子系統 4692,4696:介面電路 4702:高階語言 4704:x86編譯器 4706:x86二進位程式碼 4708:替代指令集編譯器 4710:替代指令集二進位程式碼 4712:指令轉換器 4714,4716:x86指令集核心
為了提供對本揭露內容及其特徵以及優點之較全面理解,結合附圖參考以下描述,其中相同附圖標記表示相同部分,在附圖中:
圖1為根據本揭露內容之至少一個實施例之經組配有安全記憶體存取邏輯的實例運算裝置之簡化方塊圖;
圖2A為根據本揭露內容之至少一個實施例之說明將廣義的經編碼指標綁定至彼指標之資料的加密之過程的流程圖;
圖2B為根據本揭露內容之至少一個實施例之解密綁定至廣義的經編碼指標之資料之過程的流程圖;
圖3描繪根據本揭露內容之至少一個實施例之利用增強型密碼定址的運算網路;
圖4描繪根據本揭露內容之至少一個實施例之用於參照物件且由實體機器儲存的增強型密碼位址;
圖5描繪根據本揭露內容之至少一個實施例之實體機器之間的物件之通訊;
圖6描繪根據本揭露內容之至少一個實施例之用於基於共用密鑰產生增強型密碼位址的流程;
圖7描繪根據本揭露內容之至少一個實施例之用於共用物件的流程;
圖8描繪根據本揭露內容之至少一個實施例之記憶體存取指令的流程,該記憶體存取指令指定用於將資料移動至記憶體或自記憶體移動資料之不同線性位址;
圖9描繪根據本揭露內容之至少一個實施例之包含上下文資訊及密碼指標編碼之表;
圖10描繪根據本揭露內容之至少一個實施例之結合廢料收集操作使用的各種記憶體空間及密碼密鑰之表;
圖11描繪根據本揭露內容之至少一個實施例之用於與上下文資訊相關聯的分配之經壓縮指標;
圖12描繪根據本揭露內容之至少一個實施例之用於與包括魔數及分配長度的上下文資訊相關聯之分配的經壓縮指標;
圖13描繪根據本揭露內容之至少一個實施例之與分配相關聯地儲存的標籤位元及上下文資訊;
圖14描繪根據本揭露內容之至少一個實施例之用於壓縮指標的流程;
圖15描繪根據本揭露內容之至少一個實施例之用於解壓縮指標的流程;
圖16描繪根據本揭露內容之至少一個實施例之用於將與分配相關聯之上下文資訊儲存在記憶體中之流程;
圖17說明根據至少一個實施例之與執行本申請案之態樣的各種XPU相關聯之應用及資料之簡化方塊圖;
圖18說明根據至少一個實施例之與執行本申請案之態樣之各種XPU相關聯的應用及資料之另一簡化方塊圖;
圖19說明根據至少一個實施例之用於提供IO裝置資料加密之實例硬體組配的簡化方塊圖;
圖20說明根據至少一個實施例之用於將密碼運算擴展至互連件上之IO裝置的實例過程之流程圖;
圖21說明根據至少一個實施例之與執行本申請案之態樣之各種XPU相關聯的應用及資料之又一簡化方塊圖;
圖22說明根據至少一個實施例之用於提供IO裝置資料加密之另一實例硬體組配的簡化方塊圖;
圖23說明根據至少一個實施例之用於將密碼運算擴展至互連件上之IO裝置的另一實例過程之流程圖;
圖24說明根據至少一個實施例之包括互連架構的運算系統之實施例;
圖25說明根據至少一個實施例之包括分層堆疊的互連架構之實施例;
圖26說明根據至少一個實施例之簡化方塊圖,其展示說明利用CXL鏈路之實例系統;
圖27說明根據至少一個實施例之說明用以實施CXL鏈路之實例埠架構的簡化方塊圖;
圖28為根據至少一個實施例之用於實施用於各種密碼運算操作之實例指令及邏輯的可能的系統之簡化方塊圖;
圖29為根據至少一個實施例之說明用以程式化用於密碼運算之密鑰的指令之實例操作的流程圖;
圖30為根據至少一個實施例之說明用以初始化用於密碼運算之密鑰的指令之實例操作的流程圖;
圖31為根據至少一個實施例之說明用以保存用於密碼運算之密鑰的指令之實例操作的流程圖;
圖32為根據至少一個實施例之說明用以恢復用於密碼運算之密鑰的指令之實例操作的流程圖;
圖33為根據至少一個實施例之說明管理用於密碼運算操作之密鑰的應用之實例流程的流程圖;
圖34為根據一實施例之記憶體分配安全性檢查系統之示意性說明;
圖35為根據一實施例之增強型記憶體分配安全性檢查系統之示意性說明;
圖36為根據一實施例之實例記憶體分配之示意性說明;
圖37為根據一實施例之與寫入操作相關的實例程序之流程圖;
圖38為根據一實施例之與寫入操作相關的實例程序之流程圖;
圖39為根據一實施例之替代記憶體分配安全性檢查系統之示意性說明;
圖40A為根據至少一個實施例之說明用以在密碼運算中返回物件之指令的實例操作之流程圖;
圖40B為根據至少一個實施例之說明用以在密碼運算中返回物件之指令的實例操作之流程圖;
圖41為根據一個實施例之說明性經編碼指標格式之示意圖;
圖42為根據一實施例之與圖41的經編碼指標相關的實例程序之流程圖;
圖43為根據至少一個實施例之說明實例密碼運算環境的方塊圖;
圖44為根據至少一個實施例之說明實例處理器之方塊圖;
圖45A為根據某些實施例之說明例示性有序管線及例示性暫存器重命名、無序發佈/執行管線之方塊圖;
圖45B為根據某些實施例之說明待包括於處理器中之有序架構核心及例示性暫存器重命名、無序發佈/執行架構核心的二個例示性實施例之方塊圖;
圖46為根據至少一個實施例之實例電腦架構之方塊圖;且
圖47為根據本揭露內容之實施例的對比軟體指令轉換器之使用的方塊圖,該軟體指令轉換器用以將源指令集中之二進位指令轉換成目標指令集中之二進位指令。
400:實體機器
402:處理器單元
404:主機
406,408:物件
410,416:增強型密碼位址
412:主機ID
414,418:物件ID
420:頁表

Claims (25)

  1. 一種設備,其包含: 一處理器單元,其包含: 電路系統,其用以針對一第一網路主機產生對一第二網路主機之一物件的一請求,其中該請求包含一位址,該位址包含該第二網路主機之一可路由的主機ID及一至少部分地經加密之物件ID,其中該位址唯一地識別一分散式運算域內之該物件;及 一記憶體元件,其用以儲存該物件之至少一部分。
  2. 如請求項1之設備,其中該部分地經加密之物件ID係不可偽造的。
  3. 如請求項1之設備,其中該電路系統係用於執行具有一運算元之一記憶體存取指令,該運算元參照該位址。
  4. 如請求項1之設備,其中該物件ID包括用於與該物件相關聯之一密碼操作的上下文資訊。
  5. 如請求項1之設備,其中該位址包含至少128個位元。
  6. 如請求項1之設備,其中該可路由的主機ID長達64個位元,且該物件ID長達64個位元。
  7. 如請求項1之設備,其中該電路系統要使用該位址作為對該物件進行解密之一密碼密鑰。
  8. 如請求項1之設備,其中該分散式運算域包含整個網際網路。
  9. 如請求項1之設備,其中該電路系統係用於回應於參照該位址之一呼叫指令及基於運行該第一網路主機之一處理器單元的一當前負載來轉移一程式碼物件的執行之一判定而產生該請求。
  10. 如請求項1之設備,其中該電路系統係用於回應於一頁表不包括該物件ID至一實體位址之一映射的一判定而產生該請求。
  11. 如請求項1之設備,其進一步包含用以將該主機ID與對該物件進行解密之一密鑰相關聯的一密鑰後備緩衝器。
  12. 如請求項11之設備,其中該電路系統係用於回應於該密鑰後備緩衝器中之一未命中而調用一授權協定以獲得該密鑰。
  13. 一種電腦可讀之媒體,其包含指令,該等指令在由一機器執行時使得該機器用以: 藉由一第一網路主機產生對一第二網路主機之一物件的一請求,其中該請求包含一位址,該位址包含第二運算主機之一可路由的主機ID及一至少部分地經加密之物件ID,其中該位址唯一地識別一分散式運算域內之該物件;及 存取該物件。
  14. 如請求項13之媒體,其中該部分地經加密之物件ID係不可偽造的。
  15. 如請求項13之媒體,該等指令使得該機器藉由該第一網路主機執行具有一運算元之一記憶體存取指令,該運算元參照該位址。
  16. 如請求項13之媒體,其中該物件ID包括用於與該物件相關聯之一密碼操作的上下文資訊。
  17. 如請求項13之媒體,其中該位址包含至少128個位元。
  18. 如請求項13之媒體,其中該可路由的主機ID長達64個位元,且該物件ID長達64個位元。
  19. 如請求項13之媒體,該等指令使得該機器使用該位址作為對該物件進行解密之一密碼密鑰。
  20. 如請求項13之媒體,其中該分散式運算域包含整個網際網路。
  21. 如請求項13之媒體,該等指令使得該機器回應於參照該位址之一呼叫指令及基於運行該第一網路主機之一處理器單元的一當前負載來轉移一程式碼物件的執行之一判定而產生該請求。
  22. 如請求項13之媒體,該等指令使得該機器回應於一頁表不包括該物件ID至一實體位址之一映射的一判定而產生該請求。
  23. 一種方法,其包含: 執行包含一第一運算元之一記憶體存取指令,該第一運算元參照包含一第一線性位址之一指標,其中執行該記憶體存取指令包含將該第一線性位址轉譯為一實體位址、存取該實體位址處之資料、及基於一第二線性位址對該資料執行一密碼操作。
  24. 一種方法,其包含: 經由一互連件自一IO裝置接收一經編碼指標; 對該經編碼指標進行解碼以獲得記憶體中之一記憶體位址; 在該記憶體位址處存取與該IO裝置相關聯之經加密資料; 基於該經編碼指標及與該IO裝置相關聯之一密鑰來對該經加密資料進行解密;及 將該經解密資料傳輸至該IO裝置。
  25. 一種處理器,其包含: 一暫存器,其用以將一經編碼指標儲存至用於一資料區之一記憶體分配中之一記憶體位置,其中該經編碼指標要包括對應於該記憶體位置之一線性位址之至少一部分; 電路系統,其用以: 回應於用以存取該記憶體位置之一記憶體存取請求,而計算該記憶體分配之一中點位址且使用該中點位址來計算用於與儲存於該記憶體位置處之第一資料相關聯的一第一訊息鑑別碼(MAC)之一第二記憶體位址; 讀取該第二記憶體位址處之該第一MAC; 自對應於該線性位址之該記憶體位置讀取該第一資料; 部分地基於該第一MAC來判定該第一資料未經損壞;及 回應於判定該第一資料未經損壞,而允許執行該記憶體存取請求。
TW110135638A 2020-12-26 2021-09-24 包括增強型密碼位址之密碼運算技術 TW202226782A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
WOPCT/US20/67076 2020-12-26
PCT/US2020/067076 WO2022139850A1 (en) 2020-12-26 2020-12-26 Cryptographic computing including enhanced cryptographic addresses

Publications (1)

Publication Number Publication Date
TW202226782A true TW202226782A (zh) 2022-07-01

Family

ID=82119875

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110135638A TW202226782A (zh) 2020-12-26 2021-09-24 包括增強型密碼位址之密碼運算技術

Country Status (5)

Country Link
US (1) US20220206958A1 (zh)
FR (1) FR3118506A1 (zh)
NL (1) NL2029792B1 (zh)
TW (1) TW202226782A (zh)
WO (1) WO2022139850A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI832800B (zh) * 2023-09-19 2024-02-11 英業達股份有限公司 多種規格點燈的硬碟背板

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11216366B2 (en) 2020-02-13 2022-01-04 Intel Corporation Security check systems and methods for memory allocations
US11928472B2 (en) 2020-09-26 2024-03-12 Intel Corporation Branch prefetch mechanisms for mitigating frontend branch resteers
US11972126B2 (en) 2021-03-26 2024-04-30 Intel Corporation Data relocation for inline metadata
US11940935B2 (en) * 2021-04-19 2024-03-26 Mellanox Technologies, Ltd. Apparatus, method and computer program product for efficient software-defined network accelerated processing using storage devices which are local relative to a host
US11973765B2 (en) * 2021-05-07 2024-04-30 Cisco Technology, Inc. Group access control
US11954045B2 (en) 2021-09-24 2024-04-09 Intel Corporation Object and cacheline granularity cryptographic memory integrity
EP4164184A1 (en) * 2021-10-07 2023-04-12 Renesas Electronics Corporation A communication controller and communication control method
US11681787B1 (en) * 2021-10-15 2023-06-20 T Stamp Inc. Ownership validation for cryptographic asset contracts using irreversibly transformed identity tokens
US20220100911A1 (en) * 2021-12-10 2022-03-31 Intel Corporation Cryptographic computing with legacy peripheral devices
US20230208639A1 (en) * 2021-12-27 2023-06-29 Industrial Technology Research Institute Neural network processing method and server and electrical device therefor
US11949428B2 (en) * 2022-01-19 2024-04-02 Micron Technology, Inc. Iterative error correction in memory systems
US11579783B1 (en) * 2022-03-09 2023-02-14 Vim Inc. Multi-tenant storage

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8060756B2 (en) * 2003-08-07 2011-11-15 Rao G R Mohan Data security and digital rights management system
DE10345385B4 (de) * 2003-09-30 2005-10-06 Infineon Technologies Ag Entschlüsselung bzw. Verschlüsselung bei Schreibzugriffen auf einen Speicher
US8751830B2 (en) * 2012-01-23 2014-06-10 International Business Machines Corporation Memory address translation-based data encryption/compression
US9424049B2 (en) * 2012-03-02 2016-08-23 Apple Inc. Data protection for opaque data structures
US9436847B2 (en) 2014-09-26 2016-09-06 Intel Corporation Cryptographic pointer address encoding
JP6494373B2 (ja) * 2015-03-31 2019-04-03 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、およびコンピュータプログラム
KR101754518B1 (ko) * 2016-01-19 2017-07-07 순천향대학교 산학협력단 Usb 장치를 통해 입력된 데이터를 보호하기 위한 보안 시스템 및 방법
US10372628B2 (en) * 2017-09-29 2019-08-06 Intel Corporation Cross-domain security in cryptographically partitioned cloud
US10949210B2 (en) * 2018-05-02 2021-03-16 Micron Technology, Inc. Shadow cache for securing conditional speculative instruction execution
US11295025B2 (en) * 2019-05-31 2022-04-05 Nxp B.V Probabilistic memory safety using cryptography
US20200145187A1 (en) 2019-12-20 2020-05-07 Intel Corporation Bit-length parameterizable cipher
US11580234B2 (en) 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI832800B (zh) * 2023-09-19 2024-02-11 英業達股份有限公司 多種規格點燈的硬碟背板

Also Published As

Publication number Publication date
NL2029792B1 (en) 2023-06-13
NL2029792A (en) 2022-07-20
US20220206958A1 (en) 2022-06-30
FR3118506A1 (fr) 2022-07-01
WO2022139850A1 (en) 2022-06-30

Similar Documents

Publication Publication Date Title
NL2029792B1 (en) Cryptographic computing including enhanced cryptographic addresses
US11755500B2 (en) Cryptographic computing with disaggregated memory
EP3757856B1 (en) Cryptographic isolation of memory compartments in a computing environment
US10325118B2 (en) Cryptographic cache lines for a trusted execution environment
US11088846B2 (en) Key rotating trees with split counters for efficient hardware replay protection
EP3757839B1 (en) Scalable virtual machine operation inside trust domains within the trust domain architecture
US20180046823A1 (en) Secure Public Cloud
CN111353158A (zh) 信任域架构与多密钥总存储器加密技术在服务器中的共存
KR20170033891A (ko) 보호 영역에서의 메모리 초기화
JP2023514484A (ja) マルチテナント環境における暗号コンピューティング
CN106716435B (zh) 设备与安全处理环境之间的接口
EP4195054A1 (en) Cryptographic computing with legacy peripheral devices
CN115525387A (zh) 用于支持加密远程直接存储器访问(erdma)以供进行虚拟机实时迁移的电路和方法
US20230018412A1 (en) Reverse shadow page tables for nested virtual machines
US20220100907A1 (en) Cryptographic computing with context information for transient side channel security
CN114692231A (zh) 用于针对硬件重放攻击和存储器访问模式泄漏的提高的恢复力的存储器地址总线保护
US20240104027A1 (en) Temporal information leakage protection mechanism for cryptographic computing