TWI850571B - 針對每輸入輸出密鑰安全的元件、方法以及電腦可讀取儲存元件 - Google Patents
針對每輸入輸出密鑰安全的元件、方法以及電腦可讀取儲存元件 Download PDFInfo
- Publication number
- TWI850571B TWI850571B TW110123776A TW110123776A TWI850571B TW I850571 B TWI850571 B TW I850571B TW 110123776 A TW110123776 A TW 110123776A TW 110123776 A TW110123776 A TW 110123776A TW I850571 B TWI850571 B TW I850571B
- Authority
- TW
- Taiwan
- Prior art keywords
- request
- key
- address
- value
- read
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
一種元件包括通訊電路,所述通訊電路被配置以與儲存
元件控制器及主機元件進行通訊。所述元件更包括處理元件,所述處理元件被配置以經由通訊電路自儲存元件控制器接收請求。所述請求請求將經加密資料寫入至主機元件的記憶體位址。所述處理元件更被配置以基於記憶體位址辨識與寫入請求相關聯的密鑰。所述處理元件更被配置以基於所述密鑰產生資料的經解密版本。所述處理元件更被配置以啟動資料的經解密版本經由通訊電路向主機元件的傳輸。
Description
本揭露大體而言是有關於一種半導體記憶體,且具體而言是有關於針對每輸入/輸出密鑰(key per input/output)安全之系統、方法以及元件。
本申請案主張優先於在2020年7月27日提出申請的美國臨時專利申請案第63/057,283號,所述美國臨時專利申請案的內容全文併入本案供參考。
許多公司及個人將敏感資料儲存於電腦儲存系統上。因此,近年來儲存於儲存系統中的資訊安全資料已變得非常重要。資料可能面臨風險的情況的實例包括儲存元件的丟失或被盜、在多個使用者之間共享儲存元件等。
揭露在儲存系統中提供每輸入/輸出(input/output,I/O)密鑰的系統及方法。具體而言,所揭露的系統及方法可在不修改儲存元件控制器的情況下提供每I/O密鑰。
一種元件包括通訊電路,所述通訊電路被配置以與儲存元件控制器及主機元件進行通訊。所述元件更包括處理元件,所述處理元件被配置以經由所述通訊電路自所述儲存元件控制器接收請求。所述請求請求將經加密資料寫入至所述主機元件的記憶體位址。所述處理元件更被配置以基於所述記憶體位址辨識與寫入請求相關聯的密鑰。所述處理元件更被配置以基於所述密鑰產生資料的經解密版本。所述處理元件更被配置以啟動所述資料的所述經解密版本經由所述通訊電路向所述主機元件的傳輸。
在一些實施方案中,所述處理元件更被配置以經由所述通訊電路自所述儲存元件控制器接收第二請求。所述第二請求可請求自所述主機元件的第二記憶體位址讀取第三資料。所述處理元件可更被配置以基於所述第二記憶體位址辨識與所述第二請求相關聯的第二密鑰標籤。所述處理元件可更被配置以儲存所述第二密鑰標籤與所述第二請求的讀取標籤之間的關聯。所述處理元件可更被配置以啟動所述第二請求向所述主機元件的傳送。所述處理元件可更被配置以自所述主機元件接收訊息。所述訊息可包括所述讀取標籤及所述第三資料。所述處理元件可更被配置以基於所述第二密鑰標籤與所述讀取標籤之間的所述關聯來辨識所述
第二密鑰標籤。所述處理元件可更被配置以基於所述第二密鑰標籤辨識第二密鑰。所述處理元件可更被配置以基於所述第二密鑰對所述第三資料進行加密。
一種方法包括在與儲存元件控制器及主機元件進行通訊的元件處自所述儲存元件控制器接收請求,所述請求請求將經加密資料寫入至所述主機元件的記憶體位址。所述方法更包括基於所述記憶體位址辨識與寫入請求相關聯的密鑰。所述方法更包括基於所述密鑰產生資料的經解密版本。所述方法更包括啟動所述資料的所述經解密版本向所述主機元件的傳輸。
在一些實施方案中,所述方法更包括自所述儲存元件控制器接收第二請求。所述第二請求可請求自所述主機元件的第二記憶體位址讀取第三資料。所述方法可更包括基於所述第二記憶體位址辨識與所述第二請求相關聯的第二密鑰標籤。所述方法可更包括儲存所述第二密鑰標籤與所述第二請求的讀取標籤之間的關聯。所述方法可更包括啟動所述第二請求向所述主機元件的傳送。所述方法可更包括自所述主機元件接收訊息。所述訊息可包括所述讀取標籤及所述第三資料。所述方法可更包括基於所述第二密鑰標籤與所述讀取標籤之間的所述關聯來辨識所述第二密鑰標籤。所述方法可更包括基於所述第二密鑰標籤辨識第二密鑰。所述方法可更包括基於所述第二密鑰對所述第三資料進行加密。
一種電腦可讀取儲存元件儲存指令,所述指令能夠由一或多個處理器執行以在與儲存元件控制器及主機元件進行通訊的
元件處自所述儲存元件控制器接收請求,所述請求請求將經加密資料寫入至所述主機元件的記憶體位址。所述指令能夠被進一步執行以基於所述記憶體位址辨識與寫入請求相關聯的密鑰。所述指令能夠被進一步執行以基於所述密鑰產生資料的經解密版本。所述指令能夠被進一步執行以啟動所述資料的所述經解密版本向所述主機元件的傳輸。
所述指令可能夠進一步由所述一或多個處理器執行以自所述儲存元件控制器接收第二請求。所述第二請求可請求自所述主機元件的第二記憶體位址讀取第三資料。所述指令可能夠進一步由所述一或多個處理器執行以基於所述第二記憶體位址辨識與所述第二請求相關聯的第二密鑰標籤。所述指令可能夠進一步由所述一或多個處理器執行以儲存所述第二密鑰標籤與所述第二請求的讀取標籤之間的關聯。所述指令可能夠進一步由所述一或多個處理器執行以啟動所述第二請求向所述主機元件的傳送。所述指令可能夠進一步由所述一或多個處理器執行以自所述主機元件接收訊息。所述訊息可包括所述讀取標籤及所述第三資料。所述指令可能夠進一步由所述一或多個處理器執行以基於所述第二密鑰標籤與所述讀取標籤之間的所述關聯來辨識所述第二密鑰標籤。所述指令可能夠進一步由所述一或多個處理器執行以基於所述第二密鑰標籤辨識第二密鑰。所述指令可能夠進一步由所述一或多個處理器執行以基於所述第二密鑰對所述第三資料進行加密。
100、100a、100b:系統
102、102a、102b:主機元件
104:每輸入/輸出(I/O)密鑰元件
104a:現場可程式化閘陣列(FPGA)
104b:計算元件
106、106b:儲存元件控制器
106a:固態驅動機(SSD)控制器
108:處理元件
110:通訊電路系統
112:記憶體元件
120:密鑰表
122:查找表(LUT)
201:積體電路間(I2C)配接器/SSD元件
202:密鑰伺服器
204:作業系統/超管理器
206:管理虛擬機
208:驅動器
210:檔案系統
212:應用
214:韌體
216:讀取因應緩衝器
218:控制器
220:讀取請求緩衝器
222:編碼器
224:解碼器
226:第一PCIe介面/第一PCIe配接器/PCIe配接器
228:第二PCIe介面/第二PCIe配接器/PCIe配接器
230:主機介面層
232:快閃轉譯層
234:快閃通道
236:主機介面CPU核心
302:指令
304:中央處理單元(CPU)
306:第一通訊介面
308:第二通訊介面
402:管理提交佇列(ASQ)資訊
406:管理命令
408:I/O提交佇列(IOSQ)基址/ASQ基址
410:ASQ長度/IOSQ長度
502:讀取命令
504、604:密鑰標籤
506、606:位址範圍
508:寫入請求
510、612:位址
512、620:經加密資料
514:經修改寫入請求
516:經解密資料
602:寫入命令
608:讀取請求
610:讀取標籤
614:讀取因應
616:資料
618:經修改讀取因應
700、800、900、920、1000:方法
702、704、706、708、710、714、716、718、720、804、806、808、810、812、814、816、818、820、822、902、904、906、908、910、922、924、926、928、930、932、1002、1004、1006、1008、1010、1012:步驟
圖1是用於提供每I/O密鑰安全的系統的圖。
圖2是其中每I/O密鑰元件被實施為現場可程式化閘陣列元件的系統的圖。
圖3是其中每I/O密鑰元件被實施為包括中央處理器單元的計算元件的系統的圖。
圖4是例示出每I/O密鑰元件所使用的監聽過濾器(snoop filter)的配置期間的資料流的圖。
圖5是例示出向讀取命令提供每I/O密鑰安全的圖。
圖6是例示出向寫入命令提供每I/O密鑰安全的圖。
圖7是例示出將資料過濾器設定成監控I/O命令的方法的流程圖。
圖8是例示出構建在提供每I/O密鑰安全中使用的查找表(look up table,LUT)的方法的流程圖。
圖9A是例示出製備讀取標籤/密鑰標籤LUT的方法的流程圖。
圖9B是對被發送至儲存元件控制器的資料進行加密的方法的流程圖。
圖10是例示出對自儲存元件控制器讀取的資料進行解密的方法的流程圖。
參照圖1,示出用於每輸入/輸出(I/O)密鑰的系統100
的圖。系統100包括主機元件102、每I/O密鑰元件104及儲存元件控制器106。主機元件102可包括計算元件。在一些實施方案中,主機元件102對應於快速非揮發性記憶體(non-volatile memory express,NVMe)主機元件。儲存元件控制器106是被配置以管理一或多個儲存元件的計算元件。在一些實施方案中,儲存元件控制器106對應於固態驅動機(solid state drive,SSD)控制器。
在所例示的實例中,每I/O密鑰元件104包括處理元件108、通訊電路系統110及記憶體元件112。
記憶體元件112可包括動態隨機存取記憶體(dynamic random access memory,DRAM)、靜態隨機存取記憶體(static random access memory,SRAM)、可抹除可程式化唯讀記憶體(erasable programmable read-only memory,EPROM)、電性可抹除可程式化唯讀記憶體(electrically erasable programmable read-only memory,EEPROM)、另一類型的記憶體、固態元件、另一類型的電腦可讀取儲存元件或其組合。如本文中所使用的電腦可讀取儲存元件是指製造章程(article of manufacture)而非瞬態訊號。應注意,在一些實施方案中,記憶體元件112可位於每I/O密鑰元件104外部且可由每I/O密鑰元件104存取。此外,在一些實例中,記憶體元件112對應於二或更多個不同的元件。
在一些實施方案中,每I/O密鑰元件104對應於現場可程式化閘陣列(field programmable gate array,FPGA)元件,如以下參照圖2進一步論述。在此種實施方案中,處理元件108可
對應於一或多個FPGA組件。在其他實施方案中,每I/O密鑰元件104對應於包括中央處理器單元(central processor unit,CPU)的計算元件,如以下參照圖3進一步闡述。在此種實施方案中,計算元件可對應於被配置以執行儲存於記憶體元件112中的指令的一或多個CPU。
通訊電路系統110包括一或多個通訊介面。通訊電路系統110被配置以經由所述一或多個通訊介面與主機元件102及儲存元件控制器106進行通訊(例如,發送及接收資料及命令)。在一些實施方案中,通訊電路系統110包括被配置以與主機元件102進行通訊的第一通訊介面及被配置以與儲存元件控制器106進行通訊的第二通訊介面。在其他實施方案中,通訊電路系統110包括被配置以與主機元件102及儲存元件控制器106二者進行通訊的通訊介面。此外,儘管兩個元件(主機元件102及儲存元件控制器106)被示出為與每I/O密鑰元件104進行通訊,然而應注意,在其他實施方案中,多於兩個的元件可經由通訊電路系統110與每I/O密鑰元件104進行通訊。舉例而言,每I/O密鑰元件104可經由通訊電路系統110與多於一個的主機元件及/或多於一個的儲存元件控制器進行通訊。通訊電路系統110中可包括的通訊介面的實例包括快速周邊組件互連(peripheral component interconnect express,PCIe)介面、網路介面控制器(例如,乙太網路(Ethernet)介面)、其他類型的通訊介面或其組合。
記憶體元件112儲存密鑰表120及一或多個查找表
(LUT)122。密鑰表120儲存密鑰與密鑰標籤的關聯。舉例而言,密鑰表120可儲存包括第一密鑰標籤及第一密鑰的列,進而指示第一密鑰標籤與第一密鑰相關聯。儘管所例示的實例包括密鑰表120,然而其他實施方案可包括將密鑰與密鑰標籤相關聯的不同資料結構。可基於自密鑰伺服器、自主機元件102或自另一元件(例如,在配置操作期間)接收的密鑰至密鑰標籤映射來產生密鑰表120。在一些實施方案中,密鑰與密鑰標籤之間的關聯專用於主機元件。舉例而言,密鑰表120可包括包含第一密鑰標籤、第一密鑰及第一主機元件102的辨識符的列,進而指示第一密鑰標籤被映射至與第一主機元件102相關聯的I/O的第一密鑰。在一些實施方案中,密鑰表120包括64,000個表項。
在一些實例中,密鑰表120由儲存元件控制器106填充。儲存元件控制器106中的安全韌體可使用發送/接收命令(例如,NVMe安全發送/接收命令)與可信計算群組(trusted computing group,TCG)協定一起來安全地下載密鑰。接著可將未經加密的密鑰經由通訊電路系統110(例如,帶內連接(in-band connection)及/或帶外連接(out of band connection),例如PCIe連接、系統管理匯流排(system management bus,SMBus)連接或積體電路間(Inter-Integrated Circuit,I2C)連接)提供至每I/O密鑰元件104中的密鑰表120。在其他實例中,每I/O密鑰元件104中的密鑰表120由主機元件102直接填充而不涉及儲存元件控制器106。
所述一或多個LUT 122包括將位址範圍與密鑰標籤相
關聯的LUT、將讀取標籤與密鑰標籤相關聯的LUT或其組合。應注意,在一些實施方案中,LUT 122可由一或多個不同資料結構替換。經由每I/O密鑰元件104發送在主機元件102與儲存元件控制器106之間交換的命令及資料。每I/O密鑰元件104被配置以自主機元件102監聽(例如,監控)命令,以使用位址範圍至密鑰標籤映射來更新LUT 122。每I/O密鑰元件104更被配置以使用LUT 122將請求中所包括的位址映射至密鑰標籤且基於與密鑰標籤相關聯的密鑰提供行內加密/解密(inline encryption/decryption)。因此,每I/O密鑰元件104可在包括不支援每I/O密鑰安全的儲存元件控制器的系統中提供每I/O密鑰安全。
參照圖2,示出其中系統100的每I/O密鑰元件104對應於FPGA 104a的系統100a的圖。在圖2所例示的實例中,FPGA 104a及SSD控制器106a(對應於儲存元件控制器106)包括於SSD元件201中,且主機元件102a(對應於主機元件102)經由FPGA 104a連接至SSD元件201。主機元件102a進一步連接至密鑰伺服器202。密鑰伺服器202是計算元件,所述計算元件被配置以產生將由主機元件102a用於I/O命令的密鑰。主機元件102a的作業系統(operating system,OS)或超管理器(hypervisor)可進一步為密鑰產生密鑰標籤。在一些實施方案中,FPGA 104a自密鑰伺服器202接收密鑰表120。
主機元件102a包括被配置以管理虛擬機206、檔案系統
210及應用212的作業系統/超管理器204。主機元件102a更包括驅動器208。主機元件102a的該些組件中的每一者對應於可由主機元件102a的一或多個處理器(未示出)執行的軟體。驅動器208被配置以促進作業系統/超管理器204與主機元件102a的硬件(未示出)之間的通訊。此種硬件可包括通訊介面(例如,PCIe埠)。
FPGA 104a包括讀取因應緩衝器216、控制器218、讀取請求緩衝器220、編碼器222及解碼器224。讀取因應緩衝器216、控制器218、讀取請求緩衝器220、編碼器222及解碼器224對應於處理元件108且包括FPGA區塊。記憶體元件112進一步儲存可由控制器218執行的韌體214。控制器218可被實施為硬體、韌體或二者的組合。LUT 122可由韌體214存取(例如,連接至控制器218或包括於韌體214中)。
FPGA 104a包括第一PCIe配接器226(例如,第一通訊配接器)、第二PCIe配接器228(例如,第二通訊配接器)及I2C配接器201。PCIe配接器226、228及I2C配接器201對應於通訊電路系統110。FPGA 104a被配置以經由第一PCIe配接器226與主機元件102a進行通訊且經由第二PCIe配接器228與SSD控制器106a進行通訊。在所例示的實例中,第一PCIe配接器226對應於PCIe端點埠(endpoint port,EP)且第二PCIe配接器228對應於PCIe根埠(root port,RP)。I2C配接器201可被配置以接收SSD控制器106a中所包括的某些暫存器(例如,NVMe暫存器)的狀態。
在操作中,FPGA 104a被配置以在主機元件102a與SSD控制器106a之間轉送資料及I/O命令且提供每I/O密鑰加密/解密,如本文中進一步所闡述。
SSD控制器106a包括主機介面CPU核心(H核心)236且實施主機介面層230、快閃轉譯層232及快閃通道234。主機介面層230對應於被配置以對自主機元件102接收的命令進行處理的軟體。快閃轉譯層232對應於被配置以將邏輯區塊位址映射至連接至SSD控制器106a的一或多個快閃儲存元件(未示出)的物理位址的軟體。快閃通道234對應於SSD控制器106a與一或多個固態元件之間的介面。
參照圖3,示出其中系統100的每I/O密鑰元件104對應於計算元件104b的系統100b的圖。在所例示的實例中,計算元件104b包括與處理元件108對應的中央處理單元304。中央處理單元304被配置以執行儲存於記憶體元件112中的指令302,以提供如本文中所述的每I/O密鑰。除指令302之外,記憶體元件112亦儲存密鑰表120及LUT 122。在一些實施方案中,儲存於記憶體元件112中的元素可儲存於不同的實體元件上。計算元件104b更包括與通訊電路系統110對應的第一通訊介面306及第二通訊介面308。第一通訊介面306與和主機元件102對應的主機元件102b進行通訊,且第二通訊介面308與和儲存元件控制器106對應的儲存元件控制器106b進行通訊。第一通訊介面306可包括PCIe介面、I2C介面、SMBus介面、網路介面控制器、另一類型
的介面或其組合。主機元件102b與密鑰伺服器202進行通訊。第二通訊介面308可包括PCIe介面、I2C介面、SMBus介面、網路介面控制器、另一類型的介面或其組合。
應注意,儘管圖2及圖3例示出其中每I/O密鑰元件104是FPGA及計算元件的實例,然而在其他實施方案中每I/O密鑰元件104對應於其他類型的元件。舉例而言,每I/O密鑰元件104可對應於系統晶片(system on chip,SoC)元件或通用CPU元件。
參照圖4,示出例示出在由每I/O密鑰元件104使用的監聽過濾器(例如,辨識每I/O密鑰元件104對何種命令實行附加處理而非簡單地傳遞至下一元件的過濾器)的配置期間的資料流的圖。如圖所示,每I/O密鑰元件104經由通訊電路系統110自儲存元件控制器106接收管理提交佇列(admin submission queue,ASQ)資訊402。可因應於來自每I/O密鑰元件104的請求將ASQ資訊402發送至每I/O密鑰元件104。在一些實施方案中,每I/O密鑰元件104自儲存元件控制器106中的NVMe暫存器讀取ASQ資訊402。ASQ資訊402辨識ASQ在主機元件102的記憶體中的位置。在所例示的實例中,ASQ資訊402包括ASQ基址(base address)408(指示主機元件102的記憶體中的位址)及ASQ長度410。使用ASQ資訊402,處理元件108將過濾器設定成辨識由儲存元件控制器106獲取的管理命令。
在例示性實例中,圖2所示FPGA 104a可經由第二PCIe介面228或經由I2C介面自SSD控制器106a接收ASQ資訊402。
FPGA 104a可基於ASQ資訊402更新韌體214,以使控制器218基於ASQ資訊402所指示的記憶體位置來辨識來自主機元件102a的管理命令。
作為另一實例,圖3所示計算元件104b可經由第二通訊介面308自儲存元件控制器106b接收ASQ資訊402。中央處理單元304可基於ASQ資訊402更新指令302,以使中央處理單元304基於ASQ資訊402所指示的記憶體位置來辨識來自主機元件102b的管理命令。在一些實施方案中,當主機元件102實行儲存元件控制器106的NVMe配置時,ASQ資訊402可由計算元件104b捕獲。
返回參照圖3,每I/O密鑰元件104在通訊電路系統110處自主機元件102接收管理命令406。在一些實例中,管理命令406可為對由每I/O密鑰元件104自儲存元件控制器106轉送至主機元件102的獲取請求的因應。每I/O密鑰元件104被配置以基於管理命令406的記憶體位址(例如,基於根據ASQ資訊402設定的過濾器)將管理命令406辨識為管理命令。管理命令406辨識I/O提交佇列(I/O submission queue,IOSQ)在主機元件102的記憶體中的位置。在所例示的實例中,管理命令406包括IOSQ基址408及IOSQ長度410。處理元件108將I/O命令過濾器設定成基於IOSQ記憶體位置辨識I/O命令。每I/O密鑰元件104進一步將管理命令406經由通訊電路系統轉送至儲存元件控制器106。
在例示性實例中,圖2所示FPGA 104a可經由第一PCIe
介面226自主機元件102a接收管理命令406。FPGA 104a可基於管理命令406更新韌體214,以使控制器218基於管理命令406所指示的記憶體位置來辨識來自主機元件102a的I/O命令。FPGA 104a可進一步將管理命令406轉送至SSD控制器106a。
作為另一實例,圖3所示計算元件104b可經由第一通訊介面306自主機元件102b接收管理命令406。中央處理單元304可基於管理命令406更新指令302,以使中央處理單元304基於管理命令406所指示的記憶體位置來辨識來自主機元件102b的I/O命令。FPGA 104a可進一步將管理命令406轉送至儲存元件控制器106b。
因此,圖4例示出每I/O密鑰元件可如何將過濾器配置以對I/O命令進行監控。接著每I/O密鑰元件可將每I/O密鑰安全應用於該些I/O命令,如以下進一步所闡述。應注意,每I/O密鑰元件104可對多於一個的管理命令過濾器及/或多於一個的IOSQ過濾器進行設定。
參照圖5,示出例示出向讀取命令提供每I/O密鑰安全的圖。在圖5中,每I/O密鑰元件104經由通訊電路系統110自主機元件102接收讀取命令502。處理元件108因應於確定出主機元件102處的源位址對應於如以上參照圖4闡述般設置的IOSQ過濾器而確定對讀取命令502實行附加處理。讀取命令502包括密鑰標籤504及位址範圍506(例如,物理區頁面(physical region page,PRP)、分散集中列表(scatter gather list,SGL)等)。位址範圍
506對應於主機元件102處的記憶體位址範圍。處理元件108更新所述一或多個LUT 122中所包括的解密LUT,以將密鑰標籤504與位址範圍506相關聯且將讀取命令502經由通訊電路系統110轉送至儲存元件控制器106。在一些實施方案中,處理元件108在將讀取命令502轉送至儲存元件控制器106之前自讀取命令502移除密鑰標籤504。
隨後,每I/O密鑰元件104經由通訊電路系統110自儲存元件控制器106接收寫入請求508。寫入請求508包括自儲存元件擷取的經加密資料512作為讀取命令502的結果。寫入請求508更包括位址510,所述位址510辨識主機元件102內將被寫入資料的記憶體位址。處理元件108基於位址510辨識LUT 122中的密鑰標籤504,辨識密鑰表120中的與密鑰標籤504對應的密鑰且使用所述密鑰對經加密資料512進行解密,進而得到經解密資料516。處理元件108進一步啟動經修改寫入請求514經由通訊電路系統110向主機元件102的傳輸。經修改寫入請求514指示經解密資料516將被寫入至位址510。
藉由儲存位址範圍與密鑰標籤之間的關聯,每I/O密鑰元件104可對每一各別的讀取命令應用不同的密鑰。舉例而言,來自主機元件102的第一讀取命令可包括第一位址範圍及第一密鑰標籤,而來自主機元件102的第二讀取命令包括第二位址範圍及第二密鑰標籤。每I/O密鑰元件104可將第一密鑰標籤與第一位址範圍相關聯且將第二密鑰標籤與第二位址範圍相關聯。接著
當每I/O密鑰元件104自儲存元件控制器106接收到將資料寫入至主機元件102的處於第一位址範圍中的位址的請求時,每I/O密鑰元件104可基於與第一位址範圍的關聯來辨識第一密鑰標籤。接著每I/O密鑰元件104可基於第一密鑰標籤辨識第一密鑰且在寫入至第一位址範圍中的位址之前使用所述密鑰對資料進行解密。相似地,當每I/O密鑰元件104自儲存元件控制器106接收到將資料寫入至主機元件102的處於第二位址範圍中的位址的請求時,每I/O密鑰元件104可基於與第二位址範圍的關聯來辨識第二密鑰標籤。接著每I/O密鑰元件104可基於第二密鑰標籤辨識第二密鑰,且在寫入至第二位址範圍中的位址之前使用第二密鑰對資料進行解密。因此,每I/O密鑰元件104被配置以將每I/O密鑰安全應用於讀取命令。
在例示性實例中,圖2所示FPGA 104a經由第一PCIe介面226自主機元件102a接收讀取命令502。讀取因應緩衝器216自第一PCIe介面226接收讀取命令502且將讀取命令502轉送至執行韌體214的控制器218以進行處理。控制器218基於源自與由控制器監控的IOSQ對應的位址的讀取命令502(例如,基於被程式化至韌體214中的IOSQ過濾器)來確定讀取命令502是IO命令。控制器218更新LUT 122以包括密鑰標籤504與位址範圍506之間的關聯且將讀取命令502經由第二PCIe介面228轉送至SSD控制器106a。
隨後,FPGA 104a經由第二PCIe介面228自SSD控制
器106a接收寫入請求508。讀取請求緩衝器220自第二PCIe介面228接收寫入請求508且將寫入請求508轉送至控制器218以進行處理。控制器218基於位址510辨識LUT 122中的密鑰標籤504且接著基於密鑰標籤504辨識密鑰表120中的密鑰。控制器218將密鑰轉送至解碼器224且解碼器224基於密鑰對經加密資料512進行解密,以產生經解密資料516。接著控制器218啟動包括經解密資料516的經修改寫入請求514經由第一PCIe介面226向主機元件102a的傳送。
在另一例示性實例中,圖3所示計算元件104b經由第一通訊介面306自主機元件102b接收讀取命令502。執行指令302的CPU 304基於源自與由CPU 304監控的IOSQ對應的位址的讀取命令502(例如,基於被程式化至指令302中的IOSQ過濾器)來確定讀取命令502是IO命令。CPU 304更新LUT 122以包括密鑰標籤504與位址範圍506之間的關聯且經由第二通訊介面308將讀取命令502轉送至儲存元件控制器106b。
隨後,計算元件104b經由第二通訊介面308自儲存元件控制器106b接收寫入請求508。CPU 304基於位址510辨識LUT 122中的密鑰標籤504且接著基於密鑰標籤504辨識密鑰表120中的密鑰。CPU 304基於密鑰對經加密資料512進行解密,以產生經解密資料516。接著CPU 304啟動包括經解密資料516的經修改寫入請求514經由第一通訊介面306向主機元件102b的傳輸。
參照圖6,示出例示出向寫入命令提供每I/O密鑰安全
的圖。在圖6中,每I/O密鑰元件104經由通訊電路系統110自主機元件102接收寫入命令602。處理元件108因應於確定出主機元件102處的源位址對應於如以上參照圖4闡述般設置的IOSQ過濾器來確定出對寫入命令602實行附加處理。寫入命令602包括密鑰標籤604及位址範圍606(例如,物理區頁面、分散集中列表等)。位址範圍606對應於主機元件102處的記憶體位址範圍。處理元件108更新所述一或多個LUT 122中所包括的加密LUT,以將密鑰標籤604與位址範圍606相關聯且將寫入命令602經由通訊電路系統110轉送至儲存元件控制器106。在一些實施方案中,處理元件108在將寫入命令602轉送至儲存元件控制器106之前自寫入命令602移除密鑰標籤604。
隨後,每I/O密鑰元件104經由通訊電路系統110自儲存元件控制器106接收讀取請求608。讀取請求608包括位址612及讀取標籤610。位址612辨識主機元件102內的記憶體位址,自所述記憶體位址讀取將被寫入至由儲存元件控制器106控制的儲存元件的資料。讀取標籤610辨識讀取請求608。在一些實例中,讀取標籤610對應於PCIe記憶體讀取請求標籤。處理元件108基於位址612辨識LUT 122中的密鑰標籤604且將讀取標籤更新成LUT 122中的密鑰標籤LUT,以儲存讀取標籤610與密鑰標籤604之間的關聯。處理元件108進一步將讀取請求608經由通訊電路系統110轉送至主機元件102。讀取因應614包括將被寫入至由儲存元件控制器106管理的儲存元件的讀取標籤610及資料616。處
理元件108基於讀取標籤610辨識LUT 122中的密鑰標籤604,基於密鑰標籤604辨識密鑰表120中的密鑰且藉由使用密鑰對資料616進行加密來產生經加密資料620。處理元件108啟動包括經加密資料620的經修改讀取因應618經由通訊電路系統110向儲存元件控制器106的傳送。接著經加密資料620可由儲存元件控制器106儲存於儲存元件中。
藉由儲存位址範圍與密鑰標籤之間的關聯以及讀取標籤與密鑰標籤之間的關聯,每I/O密鑰元件104可對每一各別的寫入命令應用不同的密鑰。舉例而言,來自主機元件102的第一寫入命令可包括第一位址範圍及第一密鑰標籤,而來自主機元件102的第二寫入命令包括第二位址範圍及第二密鑰標籤。每I/O密鑰元件104可將第一位址範圍與第一密鑰標籤之間的第一關聯儲存於LUT 122中且將第二位址範圍與第二密鑰標籤之間的第二關聯儲存於LUT 122中。隨後,每I/O密鑰元件104可自儲存元件控制器106接收第一讀取請求及第二讀取請求。第一讀取請求可辨識第一位址範圍中的第一位址以及第一讀取標籤,而第二讀取請求辨識第二位址範圍中的第二位址以及第二讀取標籤。每I/O密鑰元件104可基於第一位址查找第一密鑰標籤且接著將第一密鑰標籤與第一讀取標籤之間的關聯儲存於LUT 122中。相似地,每I/O密鑰元件104可基於第二位址查找第二密鑰標籤且接著將第二密鑰標籤與第二讀取標籤之間的關聯儲存於LUT 122中。因應於自主機元件102接收到辨識出第一讀取標籤的第一讀取因
應,每I/O密鑰元件104可基於第一讀取標籤查找第一密鑰標籤,基於第一密鑰標籤查找第一密鑰且基於第一密鑰對第一讀取因應中的資料進行加密。相似地,因應於自主機元件102接收到辨識出第二讀取標籤的第二讀取因應,每I/O密鑰元件104可基於第二讀取標籤查找第二密鑰標籤,基於第二密鑰標籤查找第二密鑰且基於第二密鑰對第二讀取因應中的資料進行加密。
在例示性實例中,圖2所示FPGA 104a經由第一PCIe介面226自主機元件102a接收寫入命令602。讀取因應緩衝器216自第一PCIe介面226接收寫入命令602且將寫入命令602轉送至執行韌體214的控制器218以進行處理。控制器218基於源自與由控制器監控的IOSQ對應的位址的寫入命令602(例如,基於被程式化至韌體214中的IOSQ過濾器)來確定寫入命令602是IO命令。控制器218更新LUT 122以包括密鑰標籤604與位址範圍606之間的關聯且將寫入命令602經由第二PCIe介面228轉送至SSD控制器106a。
隨後,FPGA 104a經由第二PCIe介面228自SSD控制器106a接收讀取請求608。讀取請求緩衝器220自第二PCIe介面228接收讀取請求608且將讀取請求608轉送至執行韌體214的控制器218以進行處理。控制器218基於位址612辨識LUT 122中的密鑰標籤604且將密鑰標籤604與讀取標籤610之間的關聯儲存於LUT 122中。控制器218將讀取請求608轉送至主機元件102a。
隨後,FPGA 104a經由第一PCIe介面226自主機元件102a接收讀取因應614。讀取因應緩衝器216自第一PCIe介面226接收讀取因應614且將來自讀取因應614的讀取標籤610轉送至執行韌體214的控制器218以進行處理。控制器218基於讀取標籤610辨識LUT 122中的密鑰標籤604,基於密鑰標籤604辨識密鑰表120中的密鑰且將密鑰發送至編碼器222。編碼器222對資料616進行編碼,以使用密鑰產生經加密資料620。接著控制器218啟動包括經加密資料620的經修改讀取因應618經由第二PCIe介面228向SSD控制器106a的傳送。
在另一例示性實例中,圖3所示計算元件104b經由第一通訊介面306自主機元件102b接收寫入命令602。執行指令302的CPU 304基於源自與由CPU 304監控的IOSQ對應的位址的讀取命令502(例如,基於被程式化至指令302中的IOSQ過濾器)來確定寫入命令602是IO命令。CPU 304更新LUT 122以包括密鑰標籤604與位址範圍606之間的關聯且將寫入命令602經由第二通訊介面308轉送至儲存元件控制器106b。
隨後,計算元件104b經由第二通訊介面308自儲存元件控制器106b接收讀取請求608。CPU 304基於位址612辨識LUT 122中的密鑰標籤604且接著更新LUT 122以包括密鑰標籤604與讀取請求608中所包括的讀取標籤610之間的關聯。CPU 304啟動讀取請求608經由第一通訊介面306向主機元件102b的傳送。
隨後,計算元件104b經由第一通訊介面306自主機元
件102b接收讀取因應614。CPU 304基於讀取因應614中所包括的讀取標籤610來辨識LUT 122中的密鑰標籤604,基於密鑰標籤604辨識密鑰表120中的密鑰且使用所述密鑰對讀取因應614中的資料616進行加密。CPU 304啟動包括經加密資料620的經修改讀取因應618經由第二通訊介面308向儲存元件控制器106b的傳送。
參照圖7,示出例示出將資料過濾器設定成監控I/O命令的方法700的流程圖。方法700可由每I/O密鑰元件104(例如,FPGA 104a、計算元件104b、SOC元件或其他元件)來實行。
方法700包括在702處自儲存元件控制器讀取ASQ資訊。ASQ資訊可辨識主機元件內的位址範圍(例如,藉由基址及長度)。舉例而言,每I/O密鑰元件104的處理元件108可經由通訊電路系統110(例如,藉由讀取儲存元件控制器106內的一或多個狀態暫存器)自儲存元件控制器106接收ASQ資訊402。
方法700更包括在704處針對ASQ位址範圍將資料過濾器程式化。舉例而言,處理元件108可將資料過濾器程式化成辨識自主機元件102接收且源自ASQ位址範圍的管理命令。在圖2所示實例中,將資料過濾器程式化可包括更新韌體214。在圖3所示實例中,將資料過濾器程式化可包括更新指令302。
方法700更包括在706處監聽管理命令。舉例而言,處理元件108可監控經由每I/O密鑰元件104在主機元件102與儲存元件控制器106之間傳遞的所有訊息,以判斷是否有任何訊息
源自由ASQ過濾器辨識的位址範圍。
方法700更包括在708處判斷管理命令是否對應於創建IOSQ命令。舉例而言,處理元件108可基於管理命令中所包括的參數來判斷自主機元件102接收的所偵測管理命令是否是創建IOSQ命令。
因應於在708處判斷出管理命令對應於創建IOSQ命令,方法700包括在714處自管理命令提取IOSQ位址範圍。舉例而言,處理元件108可自管理命令406提取IOSQ基址408及IOSQ長度410。
方法700更包括在718處針對IOSQ範圍將資料過濾器程式化。舉例而言,處理元件108可將資料過濾器程式化成確定自主機元件102接收的源自IOSQ範圍的訊息是I/O命令。在圖2所示實例中,將資料過濾器程式化可包括更新韌體214。在圖3所示實例中,將資料過濾器程式化可包括更新指令302。
方法700更包括在706處繼續監聽管理命令。
因應於在708處判斷出管理命令不對應於創建IOSQ命令,方法700包括在710處判斷管理命令是否對應於刪除IOSQ命令。舉例而言,處理元件108可基於管理命令中所包括的參數來判斷自主機元件102接收的所偵測管理命令是否是刪除IOSQ命令。
因應於在710處確定出管理命令對應於刪除IOSQ命令,方法700包括在716處自管理命令提取IOSQ範圍。舉例而言,
處理元件108可自刪除IOSQ命令提取基址及長度。
方法700更包括在720處針對IOSQ範圍移除資料過濾器。舉例而言,處理元件108可將刪除被設定成確定自主機元件102接收的源自IOSQ範圍的訊息是I/O命令的資料過濾器程式化。在圖2所示實例中,刪除資料過濾器可包括更新韌體214。在圖3所示實例中,刪除資料過濾器可包括更新指令302。
方法700更包括在706處繼續監聽管理命令。
此外,因應於在710處判斷出管理命令不對應於刪除IOSQ命令,方法700包括在706處繼續監聽管理命令。
因此,圖7例示出如下的方法:每I/O密鑰元件可藉由所述方法建立過濾器來監控在主機元件與儲存元件控制器之間流動的I/O命令。如以下進一步所闡述,每I/O密鑰元件可針對由過濾器偵測的I/O命令實施每I/O密鑰安全。
參照圖8,示出例示出構建在提供每I/O密鑰安全中使用的查找表的方法800的流程圖。方法800可由每I/O密鑰元件104(例如,FPGA 104a、計算元件104b、SOC元件或其他元件)來實行。
方法800包括在804處監聽I/O命令。舉例而言,處理元件108可對主機元件102與儲存元件控制器106之間的通過每I/O密鑰元件104的流量進行監控,以使用根據上述方法700設定的IOSQ過濾器來辨識I/O命令。對I/O命令進行監聽可包括偵測源自由IOSQ過濾器辨識的IOSQ的資料。此資料可包括I/O命令
或其他資料(例如,位址範圍列表)。
方法800更包括在806處判斷來自IOSQ的所偵測資料是否是寫入命令。舉例而言,處理元件108可基於I/O命令中所包括的參數來判斷自主機元件102接收的所偵測I/O命令是否是寫入命令。
因應於在806處判斷出來自IOSQ的所偵測資料是寫入命令,方法800更包括在808處自I/O命令提取密鑰標籤及位址範圍(例如,PRP、SGL等)。舉例而言,因應於判斷出寫入命令602是寫入命令,處理元件108可自寫入命令602提取密鑰標籤604及位址範圍606。
方法800更包括在810處使用密鑰標籤及位址範圍將加密密鑰查找表程式化。舉例而言,處理元件108可產生將密鑰標籤604與位址範圍606相關聯的LUT列且將所述列插入至LUT 122中所包括的加密密鑰LUT中。
方法800更包括在806處繼續監聽I/O命令。
因應於在806處判斷出來自IOSQ的所偵測資料不是寫入命令,方法800更包括在812處判斷I/O命令是否是讀取命令。舉例而言,處理元件108可基於I/O命令中所包括的參數來判斷自主機元件102接收的所偵測I/O命令是否是讀取命令。
因應於在812處判斷出來自IOSQ的所偵測資料是讀取命令,方法800更包括在814處自I/O命令提取密鑰標籤及位址範圍(例如,PRP、SGL等)。舉例而言,因應於判斷出讀取命令
502是讀取命令,處理元件108可自讀取命令502提取密鑰標籤504及位址範圍506。
方法800更包括在816處使用密鑰標籤及位址範圍將解密密鑰查找表程式化。舉例而言,處理元件108可產生將密鑰標籤504與位址範圍506相關聯的LUT列且將所述列插入至LUT 122中所包括的解密密鑰LUT中。
方法800更包括在806處繼續監聽I/O命令。
因應於在812處判斷出來自IOSQ的所偵測資料不是讀取命令,方法800包括在818處判斷來自IOSQ的所偵測資料是否是位址範圍列表(例如,而非是I/O命令)。舉例而言,處理元件108可基於PRP列表讀取請求上下文資訊(例如,先前保存的上下文資訊)來判斷來自IOSQ的資料是否是位址列表(例如,PRP列表)。
方法800更包括在820處提取位址範圍及密鑰標籤。舉例而言,處理元件108可自來自IOSQ的所偵測資料及所儲存的上下文資訊提取所接收的PRP列表。PRP列表中的每一PRP可進一步與儲存於與PRP對應的上下文中的密鑰標籤相關聯。處理元件108可進一步提取該些密鑰標籤。
方法800更包括在822處使用密鑰標籤及位址範圍將加密/解密密鑰查找表程式化。舉例而言,處理元件108可針對將所述密鑰標籤與所述位址範圍相關聯的每一密鑰標籤/位址範圍對產生LUT且將每一列插入至LUT 122中所包括的加密/解密LUT中。
方法800更包括在806處繼續監聽I/O命令。
因此,方法800可用於對在每I/O密鑰命令安全中使用的LUT進行配置,如以下進一步所闡述。應注意,儘管闡述了加密、解密及加密/解密LUT,然而在一些實施方案中,藉由方法800創建單個LUT。
參照圖9A,示出例示出製備讀取標籤/密鑰標籤LUT的方法900的流程圖。方法900可由每I/O密鑰元件104(例如,FPGA 104a、計算元件104b、SOC元件或其他元件)來實行。
方法900包括在902處自儲存元件控制器接收記憶體讀取請求以獲取寫入資料(例如,NVMe寫入命令資料)。舉例而言,處理元件108可經由通訊電路系統110自儲存元件控制器106接收讀取請求608。
方法900更包括在904處在密鑰標籤/位址範圍LUT中查找讀取位址。舉例而言,處理元件108可在LUT 122中查找位址612。
方法900更包括在906處判斷在LUT中是否存在命中(hit)。因應於在906處判斷出存在命中,方法900包括在908處提取記憶體讀取標籤。舉例而言,因應於基於位址612在LUT 122中辨識出密鑰標籤604,處理元件108可自讀取請求608提取讀取標籤610。
方法900更包括在910處將讀取標籤/密鑰標籤LUT程式化。舉例而言,處理元件108可產生將密鑰標籤604與讀取標
籤610相關聯的LUT列且將LUT列儲存於LUT 122中。
方法900更包括在902處繼續監控記憶體讀取請求。
因應於在906處判斷出在LUT中不存在位址的命中,方法900包括在902處繼續監控記憶體讀取請求。
由方法900建立的讀取標籤/密鑰標籤LUT可用於辨識用於對被發送至儲存元件控制器的資料進行加密的密鑰。圖9B例示出對被發送至儲存元件控制器的資料進行加密的方法920的流程圖。
方法920包括在922處自主機接收資料。舉例而言,處理元件108可經由通訊電路系統110自主機元件102接收讀取因應614。讀取因應614包括將被發送至儲存元件控制器106以被寫入至儲存元件的資料616。
方法920更包括在924處在讀取標籤/密鑰LUT中查找讀取標籤。舉例而言,處理元件108可在LUT 122中查找讀取標籤610。方法920更包括在926處判斷在LUT中是否存在命中。舉例而言,處理元件108可判斷在LUT 122中是否存在讀取標籤610的表項。
因應於在926處判斷出在LUT中存在命中,方法920更包括在928處使用密鑰標籤來獲得加密密鑰。舉例而言,因應於判斷出讀取標籤610與LUT 122中的密鑰標籤604相關聯,處理元件108可在密鑰表120中查找密鑰標籤604以辨識與密鑰標籤604相關聯的加密密鑰。
方法920更包括在930處對來自主機的資料進行加密。舉例而言,處理元件108可使用自密鑰表120擷取的密鑰來對資料616進行加密且產生經加密資料620。
方法920更包括在932處將經加密資料發送至儲存元件控制器。舉例而言,處理元件108可啟動包括經加密資料620的經修改讀取因應618經由通訊電路系統110向儲存元件控制器106的傳送。
方法920更包括在922處繼續監控來自主機元件的資料。
因應於在926處判斷出在LUT中不存在命中,方法920更包括在922處繼續監控來自主機元件的資料。舉例而言,因應於判斷出在LUT 122中不存在讀取標籤610的表項,處理元件108可啟動讀取因應614向儲存元件控制器的傳輸而無需修改,且繼續監控將被寫入至儲存元件控制器106的資料。
因此,方法920可用於對將被寫入至儲存元件控制器的資料進行加密。由於方法920依賴於基於位址範圍/密鑰標籤LUT建立的讀取標籤/密鑰標籤LUT且位址範圍對應於I/O命令,因此方法920可提供被發送至儲存元件控制器以用於寫入的資料的每I/O密鑰加密。
參照圖10,示出例示出對自儲存元件控制器讀取的資料進行解密的方法1000的流程圖。方法1000可由每I/O密鑰元件104(例如,FPGA 104a、計算元件104b、SOC元件或其他元件)
來實行。
方法1000包括在1002處自控制器接收記憶體寫入以存放讀取命令(例如,NVMe讀取命令)資料。舉例而言,處理元件108可經由通訊電路系統110自儲存元件控制器106接收寫入請求508。寫入請求508包括經加密資料512及主機元件的位址510,經加密資料512的經解密版本將被寫入至所述主機元件。
方法1000更包括在1004處在密鑰標籤/位址範圍LUT中查找寫入位址。舉例而言,處理元件108可在LUT 122中查找位址510。
方法1000更包括在1006處判斷在LUT中是否存在所述位址的命中。因應於在1006處判斷出存在命中,方法1000包括在1008處使用密鑰標籤來獲得解密密鑰。舉例而言,因應於判斷出密鑰標籤504與LUT 122中的位址510相關聯,處理元件108可在密鑰表120中查找密鑰標籤504以辨識解密密鑰。
方法1000更包括在1010處使用解密密鑰來對資料進行解密。舉例而言,處理元件108可使用解密密鑰來對經加密資料512進行解密且產生經解密資料516。
方法1000更包括在1012處將經解密資料存放於主機記憶體中。舉例而言,處理元件108可啟動包括經解密資料516的經修改寫入請求514向主機元件102的傳送,以儲存於位址510處。
方法1000更包括在1002處繼續監控來自儲存元件控制
器的寫入。
因應於在1006處判斷出在LUT中不存在寫入位址的命中,方法1000包括在1002處繼續監控來自儲存元件控制器的寫入。舉例而言,因應於判斷出在LUT 122中不存在位址510的命中,處理元件108可啟動寫入請求508經由通訊電路系統110向主機元件102的傳送。
因此,方法1000可用於對將被寫入至主機元件記憶體的資料進行解密(例如,因應於來自主機元件的讀取命令)。由於方法1000依賴於位址範圍/密鑰標籤LUT且位址範圍對應於I/O命令,因此方法1000可提供被寫入至主機元件的資料的每I/O密鑰加密(例如,用於讀取命令)。
前述者是對示例性實施例的例示,且不應被視為對示例性實施例進行限制。儘管已闡述了幾個示例性實施例,然而熟習此項技術者將易於理解,可在不實際上背離示例性實施例的新穎教示內容及優點的條件下在示例性實施例中作出諸多潤飾。因此,所有此類潤飾皆旨在包含於如在申請專利範圍中所界定的示例性實施例的範圍內。在申請專利範圍中,方式加功能條款旨在涵蓋本文中所述的用於實行所敍述功能的結構、且不僅涵蓋結構性等效形式而且亦涵蓋等效結構。因此,應理解,前述者是對示例性實施例的例示且不應被視為僅限於所揭露的具體實施例,且對所揭露示例性實施例所作的潤飾以及其他示例性實施例皆旨在包含於隨附申請專利範圍的範圍內。
本文中所使用的術語僅是為了闡述具體實施例,而非旨在限制本揭露。除非上下文清楚地另外指示,否則本文中所使用的單數形式「一(a及an)」旨在亦包含複數形式。更應理解,當在本說明書中使用用語「包括(comprises/comprising)」、「具有(have/having)」及「包含(includes/including)」時,是指明所陳述特徵、整數、步驟、操作、部件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、部件、組件及/或其群組的存在或增添。本文中所使用的用語「及/或」包括相關聯所列項中一或多個項的任意及全部組合。
如本文中所使用的,在闡述本揭露的實施例時使用「可(may)」是指代「本揭露的一或多個實施例」。本文中所使用的用語「使用(use)」、「正使用(using)」及「被使用(used)」可視為分別與用語「利用(utilize)」、「正利用(utilizing)」及「被利用(utilized)」同義。此外,用語「示例性(exemplary)」旨在指代實例或例示。
當可以不同的方式實施某一實施例時,可與所述次序不同地實行一特定過程次序。舉例而言,可實質上同時實行或以與所述次序不同的次序實行兩個連續的所述過程或方法步驟。
根據本文中所述本揭露實施例的電子元件或電元件及/或任何其他相關元件或組件可利用任何適合的硬體、韌體(例如,特殊應用積體電路)、軟體、或軟體、韌體及硬體的組合來實施。舉例而言,可將該些元件的各種組件形成於一個積體電路
(integrated circuit,IC)晶片上或單獨的IC晶片上。此外,可將該些元件的各種組件實施於可撓性印刷電路膜、膠帶載體封裝(tape carrier package,TCP)、印刷電路板(printed circuit board,PCB)上、或形成於一個基板上。此外,該些元件的各種組件可為在一或多個計算元件中在一或多個處理器上運行、執行電腦程式指令並與用於實行本文中所述各種功能的其他系統組件交互作用的過程或執行緒(thread)。電腦程式指令儲存於可在使用例如(舉例而言)隨機存取記憶體(RAM)等標準記憶體元件的計算元件中實施的記憶體中。電腦程式指令亦可儲存於例如(舉例而言)光碟唯讀記憶體(compact disk read-only memory,CD-ROM)、快閃驅動機等其他非暫時性電腦可讀取媒體中。另外,熟習此項技術者應認識到,在不背離本揭露示例性實施例的精神及範圍的條件下,各種計算元件的功能可被組合或整合至單個計算元件中,或者特定計算元件的功能可跨一或多個其他計算元件分佈。
除非另外定義,否則本文中所使用的所有用語(包括技術用語及科學用語)具有與本揭露所屬技術中具有通常知識者所通常理解的含義相同的含義。更應理解,用語(例如在常用詞典中所定義的用語)應被解釋為具有與其在相關技術及/或本說明書的上下文中的含義一致的含義,且除非本文中明確如此定義,否則不應將其解釋為具有理想化或過於正式的意義。
100:系統
102:主機元件
104:每輸入/輸出(I/O)密鑰元件
106:儲存元件控制器
108:處理元件
110:通訊電路系統
112:記憶體元件
120:密鑰表
122:查找表(LUT)
Claims (20)
- 一種針對每輸入/輸出密鑰安全的元件,所述元件包括:第一處理器,被配置以:自計算元件接收第一請求,所述第一請求與第一位址相關聯且包括第一值;儲存與所述第一位址相關聯的所述第一值;將所述第一請求傳輸至儲存元件的第二處理器;因應於所述第一請求而自所述第二處理器接收第二請求,所述第二請求包括第二位址以及用於追蹤所述第二請求的辨識符;基於所述第二位址辨識所述第一值;儲存與所述第一值相關聯的所述辨識符;以及啟動向所述計算元件傳輸所述第二請求。
- 如請求項1所述的元件,其中所述第一請求為寫入請求,且所述第二請求為讀取請求。
- 如請求項1所述的元件,其中所述第一處理器更被配置以接收對所述第二請求的因應,其中所述因應包括所述辨識符以及與所述第二位址相關聯的資料。
- 如請求項3所述的元件,其中所述第一處理器更被配置以:基於所述辨識符來辨識所述第一值; 基於所述第一值對所述資料進行加密以產生經加密資料;以及將所述經加密資料傳輸至所述第二處理器。
- 如請求項1所述的元件,其中所述第一處理器更被配置以創建用於監控發送與自所述第二處理器的請求的過濾器。
- 如請求項1所述的元件,其中所述第一處理器更被配置以:自所述計算元件接收第三請求,所述第三請求與第三位址相關聯且包括第二值;儲存與所述第二值相關聯的所述第三位址;以及基於所述第二值辨識密鑰。
- 如請求項6所述的元件,其中所述第三請求為讀取請求,且所述第一處理器更被配置以將所述第三請求傳輸至所述第二處理器。
- 如請求項6所述的元件,其中所述第一處理器更被配置以:因應於所述第三請求而自所述第二處理器接收第四請求,所述第四請求與第四位址相關聯且包括經加密資料;基於所述第四位址辨識所述第二值;基於所述第二值辨識解密密鑰;基於所述解密密鑰對所述經加密資料進行解密且輸出經解密資料;以及 將所述經解密資料傳輸至所述計算元件。
- 如請求項8所述的元件,其中所述第四請求為寫入請求。
- 如請求項1所述的元件,更包括記憶體元件,所述記憶體元件儲存一或多個查找表,所述一或多個查找表儲存與所述第一位址相關聯的所述第一值,且更儲存與所述第一值相關聯的所述辨識符。
- 一種針對每輸入/輸出密鑰安全的方法,所述方法包括:接收第一請求,所述第一請求與第一位址相關聯且包括第一值;儲存與所述第一位址相關聯的所述第一值;將所述第一請求傳輸至儲存元件的處理器;因應於所述第一請求而自所述處理器接收第二請求,所述第二請求包括第二位址以及用於追蹤所述第二請求的辨識符;基於所述第二位址辨識所述第一值;儲存與所述第一值相關聯的所述辨識符;以及啟動所述第二請求的傳輸。
- 如請求項11所述的方法,其中所述第一請求為寫入請求,且所述第二請求為讀取請求。
- 如請求項11所述的方法,更包括:接收對所述第二請求的因應,其中所述因應包括所述辨識符 以及與所述第二位址相關聯的資料。
- 如請求項13所述的方法,更包括:基於所述辨識符來辨識所述第一值;基於所述第一值對所述資料進行加密以產生經加密資料;以及將所述經加密資料傳輸至所述處理器。
- 如請求項11所述的方法,更包括:創建用於監控發送與自所述處理器的請求的過濾器。
- 如請求項11所述的方法,更包括:接收第三請求,所述第三請求與第三位址相關聯且包括第二值;儲存與所述第二值相關聯的所述第三位址;以及基於所述第二值辨識密鑰。
- 如請求項16所述的方法,其中所述第三請求為讀取請求,且所述方法更包括:將所述第三請求傳輸至所述處理器。
- 如請求項16所述的方法,更包括:因應於所述第三請求而自所述處理器接收第四請求,所述第四請求與第四位址相關聯且包括經加密資料;基於所述第四位址辨識所述第二值;基於所述第二值辨識解密密鑰;基於所述解密密鑰對所述經加密資料進行解密且輸出經解密 資料;以及傳輸所述經解密資料。
- 如請求項18所述的方法,其中所述第四請求為寫入請求。
- 如請求項11所述的方法,更包括:搜尋儲存與所述第一位址相關聯的所述第一值的一或多個查找表;以及搜尋儲存與所述第一值相關聯的所述辨識符的所述一或多個查找表。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202063057283P | 2020-07-27 | 2020-07-27 | |
| US63/057,283 | 2020-07-27 | ||
| US17/157,560 | 2021-01-25 | ||
| US17/157,560 US11575505B2 (en) | 2020-07-27 | 2021-01-25 | Systems, methods, and devices for key per input/output security |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202219778A TW202219778A (zh) | 2022-05-16 |
| TWI850571B true TWI850571B (zh) | 2024-08-01 |
Family
ID=79689534
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW110123776A TWI850571B (zh) | 2020-07-27 | 2021-06-29 | 針對每輸入輸出密鑰安全的元件、方法以及電腦可讀取儲存元件 |
Country Status (4)
| Country | Link |
|---|---|
| US (2) | US11575505B2 (zh) |
| KR (1) | KR102789113B1 (zh) |
| CN (1) | CN113987523A (zh) |
| TW (1) | TWI850571B (zh) |
Families Citing this family (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP7781513B2 (ja) * | 2019-09-19 | 2025-12-08 | 三星電子株式会社 | ストレージ装置及びメッセージトンネリングのためのシステム並びにその方法 |
| US11704444B2 (en) * | 2021-03-08 | 2023-07-18 | Micron Technology, Inc. | Managing encryption keys per logical block on a persistent memory device |
| US11567676B2 (en) * | 2021-04-30 | 2023-01-31 | Nxp B.V. | Inline encryption/decryption for a memory controller |
| KR20240033958A (ko) * | 2022-09-06 | 2024-03-13 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법 |
| US12449971B2 (en) | 2023-02-01 | 2025-10-21 | SanDisk Technologies, Inc. | Key-per-IO multiple tenant isolation |
| US12411961B2 (en) | 2023-06-09 | 2025-09-09 | International Business Machines Corporation | Use of ‘type’ encryption keys with key per IO-enabled devices |
| TWI889608B (zh) * | 2024-12-05 | 2025-07-01 | 智原科技股份有限公司 | 存取儲存裝置的方法及相關的系統晶片 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TW201737658A (zh) * | 2016-03-25 | 2017-10-16 | 添文 范 | 使用動態公鑰基礎建設發送及接收加密訊息方法、系統及媒介 |
| TWI608361B (zh) * | 2016-09-23 | 2017-12-11 | 群暉科技股份有限公司 | 電子裝置、伺服器、通訊系統及通訊方法 |
| TW201935884A (zh) * | 2018-02-19 | 2019-09-01 | 瑞典商Lm艾瑞克生(Publ)電話公司 | 支援不同無線通訊系統之間的交互工作及/或移動性 |
| US20200089430A1 (en) * | 2018-09-19 | 2020-03-19 | Toshiba Memory Corporation | Memory system and control method |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8165301B1 (en) * | 2006-04-04 | 2012-04-24 | Bitmicro Networks, Inc. | Input-output device and storage controller handshake protocol using key exchange for data security |
| US9712495B2 (en) * | 2011-05-03 | 2017-07-18 | International Business Machines Corporation | Methods and systems for selective encryption and secured extent quota management for storage servers in cloud computing |
| CN106487742B (zh) * | 2015-08-24 | 2020-01-03 | 阿里巴巴集团控股有限公司 | 用于验证源地址有效性的方法及装置 |
| US10157153B2 (en) * | 2016-02-03 | 2018-12-18 | Qualcomm Incorporated | Inline cryptographic engine (ICE) for peripheral component interconnect express (PCIe) systems |
| JP2018156289A (ja) * | 2017-03-16 | 2018-10-04 | 東芝メモリ株式会社 | 共有メモリコントローラ、共有メモリモジュールおよびメモリ共有システム |
| JP7048411B2 (ja) * | 2018-05-22 | 2022-04-05 | キオクシア株式会社 | メモリシステムおよび制御方法 |
| US11138132B2 (en) | 2018-06-20 | 2021-10-05 | Intel Corporation | Technologies for secure I/O with accelerator devices |
| US11829517B2 (en) | 2018-12-20 | 2023-11-28 | Intel Corporation | Method and apparatus for trust domain creation and destruction |
| CA3065058A1 (en) | 2018-12-28 | 2020-06-28 | Eidetic Communications Inc. | Apparatus and method for encrypting data in a data storage system |
| US11418333B2 (en) * | 2020-01-10 | 2022-08-16 | Dell Products L.P. | System and method for trusted control flow enforcement using derived encryption keys |
| US11347875B2 (en) * | 2020-01-28 | 2022-05-31 | Intel Corporation | Cryptographic separation of memory on device with use in DMA protection |
| US11595192B2 (en) * | 2020-04-24 | 2023-02-28 | Dell Products L.P. | System and method of migrating one or more storage class memories from a first information handling system to a second information handling system |
-
2021
- 2021-01-25 US US17/157,560 patent/US11575505B2/en active Active
- 2021-06-07 KR KR1020210073586A patent/KR102789113B1/ko active Active
- 2021-06-28 CN CN202110718454.2A patent/CN113987523A/zh active Pending
- 2021-06-29 TW TW110123776A patent/TWI850571B/zh active
-
2022
- 2022-12-28 US US18/090,110 patent/US11902422B2/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TW201737658A (zh) * | 2016-03-25 | 2017-10-16 | 添文 范 | 使用動態公鑰基礎建設發送及接收加密訊息方法、系統及媒介 |
| TWI608361B (zh) * | 2016-09-23 | 2017-12-11 | 群暉科技股份有限公司 | 電子裝置、伺服器、通訊系統及通訊方法 |
| TW201935884A (zh) * | 2018-02-19 | 2019-09-01 | 瑞典商Lm艾瑞克生(Publ)電話公司 | 支援不同無線通訊系統之間的交互工作及/或移動性 |
| US20200089430A1 (en) * | 2018-09-19 | 2020-03-19 | Toshiba Memory Corporation | Memory system and control method |
Also Published As
| Publication number | Publication date |
|---|---|
| US20230137282A1 (en) | 2023-05-04 |
| KR102789113B1 (ko) | 2025-04-01 |
| US20220029793A1 (en) | 2022-01-27 |
| TW202219778A (zh) | 2022-05-16 |
| KR20220013898A (ko) | 2022-02-04 |
| US11902422B2 (en) | 2024-02-13 |
| US11575505B2 (en) | 2023-02-07 |
| CN113987523A (zh) | 2022-01-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI850571B (zh) | 針對每輸入輸出密鑰安全的元件、方法以及電腦可讀取儲存元件 | |
| US12450380B2 (en) | File system metadata protection | |
| TWI705374B (zh) | 電子裝置及其操作方法 | |
| CN109844751B (zh) | 用于提供信息隔离的方法和处理器 | |
| US10810138B2 (en) | Enhanced storage encryption with total memory encryption (TME) and multi-key total memory encryption (MKTME) | |
| CN101246456B (zh) | 数据加密设备、数据解密设备及数据加密方法 | |
| CN110618947A (zh) | 用于利用存储器加密引擎的安全i/o的技术 | |
| CN105243344B (zh) | 具有硬盘加密功能的芯片组以及主机控制器 | |
| CN104160407B (zh) | 利用存储控制器总线接口以确保存储设备和主机之间的数据传输安全 | |
| TWI620093B (zh) | 用於保全電腦大容量儲存資料的方法和裝置 | |
| CN104012030A (zh) | 用于保护对称加密密钥的系统及方法 | |
| CN101268650A (zh) | 在微控制器中用于数据安全性处理的方法和装置 | |
| CN105354503B (zh) | 储存装置数据加解密方法 | |
| TWI856215B (zh) | 卸載加密的方法及系統、以及加密元件 | |
| TW202008744A (zh) | 動態密碼密鑰擴展 | |
| CN101398790B (zh) | 以全盘加密整合外部nvram | |
| CN114237817A (zh) | 虚拟机数据读写方法及相关装置 | |
| US11080409B2 (en) | SSD content encryption and authentication | |
| WO2020093290A1 (zh) | 一种存储控制器、文件处理方法、装置及系统 | |
| CN110007849A (zh) | 存储器控制器以及用于对存储模块进行访问控制的方法 | |
| TWI249676B (en) | Method and system for initiating an event in a first device by a host | |
| CN117473573B (zh) | 一种管理sata接口系统及数据安全摆渡的方法 | |
| US20240330205A1 (en) | Storage inline encryption circuit | |
| US20160026582A1 (en) | Encrypt data of storage device | |
| US12147354B2 (en) | Methods and systems for processor agnostic encryption management |