TWI869715B - 半導體裝置及用以管理其之安全操作的系統與方法 - Google Patents
半導體裝置及用以管理其之安全操作的系統與方法 Download PDFInfo
- Publication number
- TWI869715B TWI869715B TW111139064A TW111139064A TWI869715B TW I869715 B TWI869715 B TW I869715B TW 111139064 A TW111139064 A TW 111139064A TW 111139064 A TW111139064 A TW 111139064A TW I869715 B TWI869715 B TW I869715B
- Authority
- TW
- Taiwan
- Prior art keywords
- address
- information
- data
- semiconductor device
- response
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- 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/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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
- Read Only Memory (AREA)
Abstract
用以管理半導體裝置之安全寫入的系統、裝置、方法、及電路。於一方面中,半導體裝置包括一記憶體陣列及一邏輯電路,邏輯電路耦接於記憶體陣列。邏輯電路係用以回應於接收加密資訊,於記憶體陣列中執行一安全寫入操作。加密資訊包括將寫入之資料、一選擇碼、或記憶體陣列中之數個位址的資訊的至少一者,選擇碼用以指定寫入資料至記憶體陣列中的此些位址之至少一者的一操作形式。
Description
本發明是有關於一種半導體裝置,且特別是有關於一種種可安全操作之半導體裝置。
保護半導體裝置來避免無心的覆寫、惡意的攻擊及複製係為必要的措施,半導體裝置例如是記憶體裝置。為了符合安全的需求,半導體裝置可能包括某些特定的功能,例如是認證。不過認證可能降低半導體裝置之效能,舉例為因資料強健性(data robustness)的雙重安全寫入操作。
本揭露說明用以管理半導體裝置之安全寫入的方法、裝置、系統及技術。半導體裝置舉例為非揮發性記憶體裝置,例如是快閃記憶體裝置。
根據本揭露之一方面的特徵在於一種半導體裝置,包括:一記憶體陣列及邏輯電路,邏輯電路耦接於記憶體陣列及用以回應於接收加密資訊,於記憶體陣列中執行一安全寫入操作。加密資訊包括將寫入之資料、一選擇碼、或記憶體陣列中之數個位址的資訊的至少一者,選擇碼用以指定寫入資料至記憶體陣列中的此些位址之至少一者的一操作形式。
於一些實施例中,安全寫入操作包括一編程操作,及此些位址包括一第一位址及一第二位址。選擇碼係指定下述之其中一者:編程資料至第一位址上,或編程資料至第一位址及第二位址上。
於一些實施例中,安全寫入操作包括一抹除操作,及此些位址包括一第一位址及一第二位址。選擇碼指定下述之其中一者:從第一位址抹除資料之一特定位元數,或從第一位址及第二位址抹除資料之特定位元數。特定位元數可包括4 KB、32 KB、或64 KB。
於一些實施例中,記憶體陣列包括數個記憶體次陣列,及此些位址包括一第一位址及一第二位址。邏輯電路可用以:回應於決定出第一位址及第二位址位在一相同之記憶體次陣列中,依序地寫入資料至第一位址及第二位址,以及回應於決定出第一位址及第二位址位在兩個不同之記憶體次陣列中,同時地或依序地寫入資料至此兩個不同之記憶體次陣列中之第一位址及第二位址。此些記憶體次陣列之各者可分別地及獨立地耦接於半導體裝置中之一電壓產生器。
於一些實施例中,邏輯電路係用以:從一控制器接收認證資訊及加密資訊,以及基於認證資訊、加密資訊、以及控制器及半導體裝置之間共享之一密鑰,藉由利用一加密演算法(cryptographic algorithm)產生一認證碼及解密資訊。
於一些實施例中,加密演算法包括一高級加密標準(Advanced Encryption Standard,AES)演算法。AES演算法可包括AES-GCM(伽羅華/計數器模式(Galois/Counter Mode))或AES-CCM(編密區塊鏈訊息認證碼之計數器(Counter with Cipher Block Chaining-Message Authentication Code))。
於一些實施例中,加密資訊包括與認證資訊相關之至少一其他選擇碼之資訊,以及認證碼係至少部分地基於加密資訊中的此至少一其他選擇碼產生。
於一些實施例中,認證資訊包括一輸入認證碼,以及邏輯電路係用以:比較產生之認證碼及輸入認證碼;以及基於此比較之一結果,決定控制器的一認證是否失敗。
於一些實施例中,邏輯電路係用以:回應於決定出產生之認證碼與輸入認證碼之匹配失敗,決定認證失敗及產生一錯誤訊息;以及回應於決定出產生之認證碼匹配輸入認證碼,決定認證成功且於解密資訊上繼續執行安全寫入操作。
於一些實施例中,邏輯電路係用以:回應於決定出產生之認證碼匹配輸入認證碼,解碼用以執行安全寫入操作的選擇碼。於一些實施例中,邏輯電路係用以基於與不同之數個選擇碼及不同之數個寫入操作相關的一預定表格來解碼選擇碼。
於一些實施例中,邏輯電路係用以:回應於決定出選擇碼指定寫入資料至此些位址中之一第一位址及一第二位址,決定第一位址及第二位址是否位於記憶體陣列之一相同之記憶體次陣列,及基於決定出第一位址及第二位址是否位於此相同之記憶體次陣列的一結果,執行安全寫入操作。
於一些實施例中,解密資訊包括一寫入命令、將寫入之資料、此些位址、及選擇碼,以及邏輯電路係用以回應於決定出產生之認證碼匹配輸入認證碼,解碼寫入命令。
於一些實施例中,邏輯電路係用以基於控制器及半導體裝置之間的一預定協定來解碼寫入命令。於一些實施例中,此些位址之各者代表用以寫入資料的一起始位址,及其中解密資訊包括將寫入之資料的長度資訊。
於一些實施例中,邏輯電路係用以接收來自控制器之一封包命令、認證資訊、及加密資訊,以及邏輯電路係用以至少部分地基於封包命令產生認證碼及解密資訊。
於一些實施例中,邏輯電路係用以:在執行安全寫入操作期間決定一錯誤是否發生,回應於決定出錯誤係發生,產生一錯誤訊息,以及回應於決定出沒有發生錯誤,產生一完成訊息,完成訊息係表示完成安全寫入操作。
本揭露之另一方面的特徵在於一種系統,包括:一半導體裝置,包括一記憶體陣列及邏輯電路,耦接於記憶體陣列;以及一控制器,耦接於半導體裝置及用以:加密將寫入之資料、一選擇碼、或記憶體陣列中之數個位址的資訊之至少一者,選擇碼用以指定寫入資料至記憶體陣列中之此些位址之至少一者的一操作形式,以及傳送加密資訊至半導體裝置。邏輯電路係用以回應於接收來自控制器的加密資訊,於記憶體陣列中執行一安全寫入操作。
於一些實施例中,控制器係用以:基於半導體裝置及控制器之間共享之一密鑰、選擇碼、此些位址、及將寫入之資料,藉由利用一加密演算法(cryptographic algorithm)產生加密資訊及認證資訊,以及傳送認證資訊及加密資訊至半導體裝置。
於一些實施例中,邏輯電路係用以:從控制器接收認證資訊及加密資訊,以及基於認證資訊、加密資訊、及密鑰,藉由利用加密演算法產生一認證碼及解密資訊。
於一些實施例中,邏輯電路係用以:比較產生之認證碼與認證資訊中之一輸入認證碼,回應於決定出產生之認證碼與輸入認證碼之匹配失敗,產生一錯誤訊息,回應於決定出產生之認證碼匹配輸入認證碼,解碼用以執行安全寫入操作的選擇碼,回應於決定出選擇碼指定寫入資料至此些位址中之一第一位址及一第二位址,決定第一位址及第二位址是否位於記憶體陣列之一相同之記憶體次陣列,回應於決定出第一位址及第二位址位於此相同之記憶體次陣列,依序地寫入資料至第一位址及第二位址,以及回應於決定出第一位址及第二位址位在兩個不同之記憶體次陣列中,同時地寫入資料至此兩個不同之記憶體次陣列中之第一位址及第二位址。
本揭露之另一方面的特徵在於一種記憶體裝置,包括:一記憶體陣列及邏輯組件(logic),耦接於記憶體陣列。記憶體陣列包括一輸入/輸出埠,具有一輸入模式及一輸出模式,及輸入/輸出埠具有至少一訊號線,交替地使用於輸入模式及輸出模式。邏輯組件係用以回應於在輸入模式中之輸入/輸出埠上所接收一寫入封包命令及加密資訊來執行一安全寫入操作。加密資訊包括一選擇碼及至少兩個位址。
本揭露之另一方面的特徵在於一種用以管理半導體裝置之安全操作的方法,此方法包括:接收從耦接於半導體裝置之一控制器接收加密資訊,加密資訊包括將寫入之資料、一選擇碼、或半導體裝置之一記憶體陣列中之數個位址的資訊的至少一者;以及回應於接收加密資訊,根據選擇碼,於記憶體陣列中執行一安全寫入操作,選擇碼用以指定寫入資料至記憶體陣列中之此些位址的至少一者的一操作形式。
於一些實施例中,此方法更包括:從控制器接收認證資訊以及加密資訊,基於認證資訊、加密資訊、及半導體裝置及控制器之間共享的一密鑰,藉由利用一加密演算法(cryptographic algorithm)產生一認證碼及解密資訊,以及回應於決定出產生之認證碼匹配認證資訊中之一輸入認證碼,解碼選擇碼以用於執行安全寫入操作。
上述技術之實施例包括方法、系統、電路、電腦程式產品(computer program products)及電腦可讀取媒體(computer-readable media)。於一例子中,一種方法可包括上述之動作。於另一例子中,一個此種電腦程式產品係適用於在一非暫態機器可讀取媒體(non-transitory machine-readable medium)中實現,非暫態機器可讀取媒體儲存藉由一或多個處理器可執行的指令。指令係用以致使此一或多個處理器執行上述的動作。一個此種電腦可讀取媒體係儲存指令。指令係用以在藉由一或多個處理器執行時,致使此一或多個處理器執行上述的動作。
一或多個所揭露之實施例的細節係在所附的圖式及下方的實施方式提出。其他特徵、方面、及優點將透過實施方式、圖式及申請專利範圍更為清楚理解。為了對本發明之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式詳細說明如下:
本揭露之實施例係提供用以管理在半導體裝置中安全寫入的技術,半導體裝置例如是非揮發性記憶體裝置。安全寫入操作可包括認證及資料寫入。半導體裝置(舉例為記憶體晶片)可透過輸入訊息認證碼(message authentication code,MAC)檢查控制器是否通過識別來進行認證,及解密來自控制器之輸入資訊及資料以執行寫入操作。為了增加在安全寫入中之資料強健性(data robustness),除了寫入資料至指派(assigned)或指定(designated)位址,半導體裝置可寫入相同的資料(舉例為用於備份之冗餘資料(redundant data))至第二個位址,此第二個位址不同於半導體裝置中之指派位址。此處所述之此些技術可避免執行兩個分開之安全寫入命令,執行兩個分開之安全寫入命令係花費兩倍的安全寫入操作時間及可能降低半導體裝置之安全寫入效能。取而代之,此些技術可利用一個安全寫入命令完成安全及強健的寫入,以寫入相同的資料至半導體裝置中之多個不同的位址,而可增加半導體裝置之安全寫入效能及減少軟體處理工作。
於一些實施例中,從控制器傳送至半導體裝置之安全寫入協定包括封包命令、加密資訊、及認證資訊(舉例為將驗證之MAC)。加密資訊包括寫入命令(舉例為編碼命令或抹除命令)、選擇碼、數個位址(舉例為第一位址及第二位址)、或將寫入之資料的至少一者。選擇碼係使用,以選擇寫入操作(舉例為編碼或抹除)及指定寫入資料至此些位址之至少一者的操作形式。控制器可使用加密演算法(cryptographic algorithm)(舉例為AES演算法,例如是AES-GCM或AES-CCM),以基於半導體裝置及控制器之間共享的密鑰(cryptographic key或secret key)、封包命令、寫入命令、選擇碼、此些位址、及將寫入之資料來產生加密資訊及認證資訊。
於一些實施例中,回應於接收加密資訊及認證資訊,半導體裝置基於相同之密鑰與封包命令使用相同之加密演算法來解密加密資訊及認證資訊,以產生MAC及解密資訊。半導體裝置可比較產生之MAC及接收之認證資訊中的輸入MAC。如果此兩個MACs彼此匹配,半導體裝置驗證出控制器通過MAC檢查,及基於解密資訊繼續執行安全寫入操作。
此處所揭露的技術提供多個位址寫入機制來用於半導體裝置中之高效能的安全寫入。針對所述之目的,記憶體裝置於此係以說明成一半導體裝置做為範例。值得注意的是,此些技術可應用於需要安全寫入的任何形式之電路、裝置、或系統。舉例來說,除了記憶體裝置以外,此些技術可亦應用於針對安全寫入而利用安全或加密特徵之任何其他儲存裝置。
此些技術可應用於數種形式的非揮發性記憶體裝置,例如是NOR快閃記憶體、NAND快閃記憶體、電阻式隨即存取記憶體(resistive random-access memory,RRAM)、相變化隨機存取記憶體(phase-change random-access memory,PCRAM)等。此些技術可應用於數種記憶體形式,例如是單層記憶胞(single-level cell,SLC)裝置、多層記憶胞(multi-level cell,MLC)裝置,像是二層記憶胞裝置(2-level cell devices)、三層記憶胞(triple-level cell,TLC)裝置、四層記憶胞(quad-level cell,QLC)裝置、或五層記憶胞(penta-level cell,PLC)裝置。此些技術可額外地或替代地應用於各種形式的裝置及系統,例如是安全數位(secure digital,SD)卡、嵌入型多媒體卡(embedded multimedia cards,eMMC)、或固態驅動器(solid-state drives,SSDs)、嵌入型系統等。
第1A圖繪示系統100之範例。系統100包括裝置110及主機設備120。裝置110包括裝置控制器112及記憶體116。裝置控制器112包括處理器113及內部記憶體114。於一些應用中,裝置110包括數個記憶體116,耦接於裝置控制器112。記憶體116包括數個區塊(blocks)。記憶體116可為二維(two-dimensional,2D)記憶體,包括2D記憶體區塊。記憶體116可亦為三維(three-dimensional,3D)記憶體,包括3D記憶區塊。
主機設備120包括主機控制器122,主機控制器122可包括至少一處理器及至少一記憶體,耦接於此至少一處理器及儲存編程指令。編程指令用以藉由此至少一處理器執行,以執行一或多個對應之操作。
於一些應用中,裝置110係為儲存裝置。舉例來說,裝置110可為嵌入式多媒體卡(embedded multimedia card,eMMC)、安全數位(secure digital,SD)卡、固態硬碟(solid-state drive,SSD)、或其他適合的儲存器。於一些應用中,裝置110係為智慧手錶、數位相機或媒體播放器。於一些應用中,裝置110係為客戶端設備,耦接於主機設備120。舉例來說,裝置110係為數位相機或媒體播放器中之SD卡。數位相機或媒體播放器為主機設備120。
裝置控制器112係為通用微處理器(general-purpose microprocessor)、或專用微控制器(application-specific microcontroller)。於一些應用中,裝置控制器112係為用於裝置110的記憶體控制器。以下部分係基於裝置控制器112為記憶體控制器之應用來說明數種技術。然而,於以下部分中所說明的技術亦可應用於裝置控制器112為不同於記憶體控制器之另一形式的控制器的實施例中。
處理器113係用以執行指令及處理資料。指令包括韌體指令及/或其他編程指令,於輔助記憶體(secondary memory)中分別儲存成韌體碼及/或其他編程碼。資料包括編程資料及其他適合的資料,編程資料對應於韌體及/或由處理器執行之其他程式。於一些應用中,處理器113係為通用微處理器、或專用微控制器。
處理器113從內部記憶體114存取指令及資料。於一些應用中,內部記憶體114係為靜態隨機存取記憶體(Static Random Access Memory,SRAM)或動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)。舉例來說,於一些應用中,當裝置110係為eMMC、SD卡或智慧手錶時,內部記憶體114係為SRAM。於一些應用中,當裝置110係為數位相機或媒體播放器時,內部記憶體114係為DRAM。
於一些應用中,內部記憶體係為快取(cache)記憶體,包括於裝置控制器112中,如第1A圖中所示。內部記憶體114儲存指令碼,及/或在運行期間由處理器113所請求的資料。指令碼對應於由處理器113所執行之指令。裝置控制器112傳送來自記憶體116之指令碼及/或資料至內部記憶體114。
於一些應用中,記憶體116係為非揮發性記憶體,用以用於長期儲存指令及/或資料,舉例為NAND或NOR快閃記憶體裝置,或一些其他適合的非揮發性記憶體裝置。記憶體116可包括一或多個記憶體晶片。於記憶體116為NAND快閃記憶體之數個應用中,裝置110為快閃記憶體裝置,舉例為快閃記憶卡,以及裝置控制器112為NAND快閃控制器。舉例來說,於一些應用中,當裝置110為eMMC或SD卡時,記憶體116為NAND快閃記憶體;於一些應用中,當裝置110為數位相機時,記憶體116為SD卡;及於一些應用中,當裝置110為媒體播放器時,記憶體116為硬碟。於記憶體116為NOR快閃記憶體之一些應用中,裝置110可選擇地包括裝置控制器112。於一些情況中,裝置110可不包括裝置控制器,以及記憶體116可與主機設備120直接地通訊。
安全記憶體裝置可為包括加密、解密、及/或認證特徵之記憶體裝置。舉例來說,安全記憶體裝置可加密及/或解密資料,及/或驗證(或檢查)來自控制器的認證碼,以認證控制器。
第1B圖繪示根據本揭露一或多個實施例之具有控制器160及安全記憶體裝置170之系統150之另一範例的示意圖。控制器160經由電性連接或無線連接來耦接於安全記憶體裝置170,且與安全記憶體裝置170通訊,舉例為直接地通訊。電性連接舉例為電線、接腳或匯流排。控制器160可為第1A圖之主機控制器122或第1A圖之裝置控制器112。安全記憶體裝置170可應用成第1A圖之記憶體116。安全記憶體裝置170可亦為如第2圖中所更詳細說明之安全記憶體裝置200、如第3圖中所更詳細說明之安全記憶體裝置300、或如第4圖中所更詳細說明之安全記憶體裝置。
第2圖繪示根據本揭露一或多個實施例之安全記憶體裝置200之範例的示意圖。安全記憶體裝置200可應用成第1A圖之記憶體116或第1B圖之安全記憶體裝置170。安全記憶體裝置200可用以執行安全寫入操作。
如第2圖中所示,安全記憶體裝置200包括數個元件,可整合於舉例為矽基載板之板上且進行封裝。安全記憶體裝置200可具有記憶體陣列210,可包括數個記憶胞。記憶胞可串接於數列的字元線及數行的位元線。各記憶胞可包括記憶電晶體,作為儲存元件以儲存資料。記憶電晶體可包括矽-氧化物-氮化物-氧化物-矽(SONOS)電晶體、浮動閘極電晶體、氮化物唯讀記憶體電晶體(nitride read only memory transistor,NROM)、或可儲存電荷之任何適合的非揮發性記憶體MOS裝置。
安全記憶體裝置200可包括X解碼器(或列解碼器)208及選擇之Y解碼器(或行解碼器)212。各記憶胞可經由個別之字元線耦接於X解碼器208及經由個別之位元線耦接於Y解碼器212。因此,各記憶胞可藉由X解碼器208及Y解碼器212來經由個別的字元線及個別的位元線進行讀取或寫入操作。
安全記憶體裝置200可包括記憶體介面(輸入/輸出-I/O)202,具有數個接腳。接腳係用以耦接於外部裝置,舉例為第1A圖的裝置控制器112及/或主機設備120,或第1B圖的控制器160。接腳可包括SI/SIO0、SO/SIO1、SIO2、SIO3、RESET#、CS#、ECS#、及R/B#接腳。SI/SIO0用於串列資料輸入/串列資料輸入及輸出。SO/SIO1用於串列資料輸出/串列資料輸入及輸出。SIO2用以串列資料輸入或輸出。SIO3用於串列資料輸入或輸出。RESET#用於硬體重設接腳低態致能(active low)。CS#用於晶片選擇。ECS#用於ECC校正訊號。R/B#接腳用以指示安全記憶體裝置200之就緒(ready)或忙碌狀態。ECS係為錯誤校正碼校正訊號(Error Correction Code (ECC) Correction Signal)的縮寫。記憶體介面202可亦包括一或多個其他接腳,舉例為用以寫入保護低態致能的WP#,及/或用以保持(holding)訊號輸入的Hold#。
安全記憶體裝置200可包括資料暫存器204、SRAM緩衝器220、位址產生器206、同步時脈(synchronous clock, SCLK) 輸入218、時脈產生器228、模式邏輯222、狀態機224、及高壓(high voltage,HV)產生器226。SCLK輸入218可用以接收同步時脈輸入,及時脈產生器228可用以基於同步時脈輸入產生時脈訊號來用於安全記憶體裝置200。模式邏輯222可用以決定是否有讀取或寫入操作,及提供決定的結果至狀態機224。
安全記憶體裝置200可亦包括感測放大器214及輸出緩衝器216。感測放大器214可藉由資料線213選擇地連接於Y解碼器212。輸出緩衝器216用以緩衝從感測放大器214至記憶體介面202的輸出訊號。感測放大器214可為部分之讀取電路,在資料從安全記憶體裝置200讀取資料時使用。感測放大器214可用以從儲存於記憶胞中之代表資料位元(1或0)的字元線感測低功率訊號,及放大小電壓擺幅(voltage swings)至可辨識的邏輯位準(logic levels),所以資料可妥當地解讀。感測放大器214可亦與狀態機224通訊,舉例為雙向通訊。
控制器可產生命令,例如是讀取命令及/或寫入命令,可分別執行以從安全記憶體裝置200讀取資料及/或寫入資料至安全記憶體裝置200。控制器舉例為第1A圖之主機控制器122或裝置控制器112或第1B圖之控制器160。寫入至記憶體陣列210或從記憶體陣列210讀取的資料可在安全記憶體裝置200及控制器及/或其他元件之間經由資料匯流排(舉例為系統匯流排)通訊或傳送。資料匯流排可為多位元匯流排(multi-bit bus)。
於一些範例中,在寫入操作期間,安全記憶體裝置200從控制器經由記憶體介面202接收讀取命令。狀態機224可提供控制訊號至HV產生器226及感測放大器214。感測放大器214可從儲存於選擇之記憶胞中之代表資料位元(1或0)的字元線感測小功率(電壓或電流)訊號,及放大小功率訊號擺幅至可辨識的邏輯位準,所以資料位元可藉由安全記憶體裝置200外的邏輯組件(logic)妥當地解讀。HV產生器226可提供電壓至X解碼器208及Y解碼器212,用以選擇記憶胞。感測放大器214可從位元線感測小功率(電壓或電流)訊號,表示資料位元(1或0),儲存於選擇之記憶胞中,及放大小功率訊號擺幅至可辨識邏輯位準,所以資料位元可藉由安全記憶體裝置200外側之邏輯妥當地轉譯。輸出緩衝器216可從感測放大器214接收放大的電壓,及透過記憶體介面202輸出放大之功率訊號至安全記憶體裝置200外的邏輯組件。
於一些範例中,在寫入操作期間,安全記憶體裝置200從控制器接收寫入命令。資料暫存器204可從記憶體介面202暫存輸入資料,及位址產生器206可產生對應的實體位址,以儲存輸入資料至記憶體陣列210的特定之記憶胞中。位址產生器206可連接於X解碼器208及Y解碼器212。X解碼器208及Y解碼器212係受到控制,以透過對應之字元線和位元線選擇特定之記憶胞。只要有提供功率,SRAM緩衝器220可保有來自資料暫存器204的輸入資料於其記憶體中。狀態機224可處理來自SRAM緩衝器220的寫入訊號,及提供控制訊號至HV產生器226。HV產生器226可產生寫入電壓,及提供寫入電壓至X解碼器208及Y解碼器212。Y解碼器212可用以輸出寫入電壓至位元線,用以儲存輸入資料於特定的記憶胞中。狀態機224可亦提供資訊至SRAM緩衝器220,資訊舉例為狀態資料。SRAM緩衝器220可與輸出緩衝器216通訊,舉例為傳送資訊或資料離開至輸出緩衝器216。
如第2圖中所示,安全記憶體裝置200包括安全引擎230,用以執行安全寫入操作。安全引擎230可耦接於安全記憶體裝置200中的一或多個元件,舉例為SRAM緩衝器220、模式邏輯222、及/或狀態機224。安全引擎230可與SRAM緩衝器220、模式邏輯222、或狀態機224之至少一者通訊,舉例為雙向通訊。如下方更詳細的說明,SRAM緩衝器220可輸入額外認證資料(additional authentication data,AAD)及密文(Ciphertext,CT)至安全引擎230。模式邏輯222可解碼來自控制器之用於安全引擎230的封包命令。狀態機224可啟動安全引擎230,舉例為回應於接收來自控制器的安全寫入命令,及/或檢查安全引擎230是否對控制器認證失敗或成功。
如第3至7圖中更進一步詳細的說明,安全引擎230可用以:i) 利用密鑰解密(及/或加密)資訊(舉例為寫入命令、選擇碼、位址、及資料)、ii) 產生認證碼以驗證來自控制器之認證資訊以及認證控制器、及/或iii) 執行安全寫入資料至記憶體陣列210中的一或多個位址。
第3圖繪示根據本揭露一或多個實施例之另一安全記憶體裝置300之範例的示意圖。安全記憶體裝置300可應用成第1A圖的記憶體116、第1B圖的安全記憶體裝置170、或第2圖的安全記憶體裝置200。
類似於安全記憶體裝置200,安全記憶體裝置300包括記憶體陣列310(舉例為第2圖之記憶體陣列210)、安全引擎320(舉例為第2圖之安全引擎230)、高壓(high voltage,HV)模組302(舉例為第2圖之HV產生器226)、及周邊及介面(peripheral and interface(I/F))330。周邊及介面330可包括一或多個其他元件於安全記憶體裝置300中,舉例為如第2圖中所示的記憶體介面202、資料暫存器204、位址產生器206、X解碼器208、Y解碼器212、資料線213、感測放大器214、輸出緩衝器216、SCLK輸入218、SRAM緩衝器220、模式邏輯222、及/或狀態機224。
記憶體陣列310可包括數個記憶體次陣列或記憶庫,舉例為記憶庫312及記憶庫314,如第3圖中所示。各記憶體次陣列或庫可包括個別之數個記憶胞及可個別地(分開地及獨立地)耦接於HV模組302,HV模組302提供個別之寫入電壓至記憶體次陣列或庫。如第6圖中進一步詳細的說明,安全引擎320可決定資料所寫入的兩個位址是否在相同的記憶庫中。如果此兩個位址在相同的記憶庫中,安全引擎320依序地寫入資料(整體之資料(an entirety of the data))至此兩個位址中。如果此兩個位址在兩個不同的庫中,舉例為如第3圖中所示之在記憶庫312中的第1位址、在記憶庫314中的第2位址,安全引擎320可同時地或依序地寫入資料至不同庫中的此兩個位址中。安全引擎320亦可同時地或依序地寫入資料於不同庫中或相同庫中之多於兩個位址中。
在一些應用中,安全引擎320包括加密模組322、認證模組324、及安全寫入模組326。加密模組322、認證模組324、及安全寫入模組326之各者可包括一或多個邏輯電路及/或暫存器,用以實現演算法及操作。
加密模組322係用以利用加密演算法解密舉例為從控制器所接收之加密資訊及/或認證資訊,控制器例如是第1A圖之主機控制器122或裝置控制器112或第1B圖之控制器160。加密演算法可為認證加密演算法,設計以提供認證及機密性。於一些範例中,加密演算法為高級加密標準(Advanced Encryption Standard,AES)演算法,舉例為高級加密標準伽羅華計數器模式(Advanced Encryption Standard Galois Counter Mode,AES-GCM),或具有編密區塊鏈訊息認證碼之計數器的高級加密標準(Advanced Encryption Standard-Counter with Cipher Block Chaining-Message Authentication Code,AES-CCM)。認證模組324係用以基於比較加密模組322產生的認證碼與來自控制器的輸入認證碼的結果來認證控制器。安全寫入模組326係用以舉例為回應於決定出控制器已認證而在記憶體陣列310中執行安全寫入操作。
第4圖繪示根據本揭露一或多個實施例之於控制器及安全記憶體裝置之間的安全寫入之範例400的示意圖。控制器可為第1A圖之主機控制器122或裝置控制器112或第1B圖之控制器160。安全記憶體裝置可為第1A圖之記憶體116、第1B圖之安全記憶體裝置170、第2圖之安全記憶體裝置200、或第3圖之安全記憶體裝置300。
控制器可傳送封包命令、加密資訊及認證資訊至安全記憶體裝置來用於安全寫入操作。認證資訊可包括訊息認證碼(message authentication code,MAC)。加密資訊可包括寫入命令(write command(CMD_Write))之資訊、選擇碼資訊、資料資訊、及位址資訊。
第5圖繪示根據本揭露一或多個實施例之列出將加密之資訊之範例表格500的示意圖。表格500與不同的碼,不同的碼具有對應之操作。舉例來說,CMD碼表示安全寫入操作。ADDR1碼表示用於將寫入之資料的第一位址(舉例為第一起始位址)。ADDR2碼表示用於相同之將寫入的資料之第二位址(舉例為第二起始位址)。第一位址可為指定位址,及第二位址可為備份位址。BC表示欲寫入之資料中的位元組數目。Data表示寫入資料或將寫入之資料。
選擇碼係使用以指定寫入資料至單一位址或兩個位址上的操作形式。如第5圖中所示,選擇碼可以三個位元[2:0]表示。舉例來說,選擇[2:0]為000指定編程資料至單一位址上(舉例為第一位址)、選擇[2:0]為001指定從單一位址(舉例為第一位址)抹除4 KB資料、選擇[2:0]為010指定從單一位址(舉例為第一位址)抹除32 KB資料、選擇[2:0]為011指定從單一位址(舉例為第一位址)抹除64 KB資料、選擇[2:0]為100指定編程資料至第一位址及第二位址上、選擇[2:0]為101指定從第一位址及第二位址抹除4 KB資料、選擇[2:0]為110指定從第一位址及第二位址抹除32 KB資料、選擇[2:0]為111指定從第一位址及第二位址抹除64 KB資料。安全寫入命令可與選擇碼之列表中的一個選擇碼相關。
於一些實施例中,將加密的資訊包括一或多個與認證資訊相關的選擇碼。舉例來說,選擇碼表示包括在MAC中之連接訊息碼(linked message codes)、或包括在MAC中之序列數(serial number,SN)、或包括在MAC中之ExtraZone的首四個位元組。
重新參照第4圖,控制器及安全記憶體裝置之各者可包括個別之加密模組410、420,利用相同之加密演算法,舉例為AES-GCM,用於認證加密/解密。控制器及安全記憶體裝置共享相同之密鑰K。
在控制器中,如第4圖中所示,加密模組410使用密鑰411、例如是封包命令之額外的認證資料(AAD)412、及明文(PT)413做為輸入,及藉由例如是AES-GCM之加密演算法產生認證標籤414 (或MAC碼)及密文(Ciphertext, CT) 415 (或In Data)做為輸出。PT 413可包括將加密的資訊,舉例為繪示於第5圖中。加密演算法可用以讓輸入(舉例為密鑰K 411、AAD 412、及PT 413)失序(disorder)或結構紊亂(disorganize),以及接著使用安全演算法或函數以產生認證標籤414。安全演算法或函數舉例為安全雜湊演算法(Secure Hash Algorithm,SHA),例如是SHA 128或SHA 256。加密演算法亦可用以利用密鑰K 411加密PT 413,以產生為CT 415 (或In Data)的加密資訊。控制器可接著傳送封包命令、認證標籤414或MAC碼、及加密資訊CT 415或In Data至安全記憶體裝置。
在安全記憶體裝置中,如第4圖中所示,加密模組420藉由使用密鑰K 421(相同於K 411)、AAD(舉例為從控制器接收之封包命令)422、及CT(舉例為接收之In Data)423做為輸入來執行認證之解密,及藉由例如是AES-GCM之相同的加密演算法來產生認證標籤424 (或MAC碼)及明文(PT)425做為輸出。PT 425代表解密資訊,可相同於PT 413,也就是相同於將加密的資訊,舉例為如第5圖中所示。安全記憶體裝置可包括認證模組430(舉例為第3圖之認證模組324),用以接收來自控制器之輸入認證標籤414 (或MAC碼)及來自加密模組420的產生之認證標籤424 (或MAC碼),以及比較此兩個認證標籤414、424 (或MAC碼)是否彼此匹配。如果此兩個認證標籤(或MAC碼)沒有彼此匹配,認證模組430可決定控制器之認證失敗及回傳錯誤訊息至控制器。如果此兩個認證標籤(或MAC碼)彼此匹配,認證模組430可決定輸入認證標籤(或MAC碼)通過,也就是控制器係已通過認證。回應於決定出控制器已認證,安全記憶體裝置可執行安全寫入操作。
第6圖繪示根據本揭露一或多個實施例之用以管理在安全記憶體裝置中安全寫入之程序600之範例的流程圖。程序600可藉由安全記憶體裝置執行,安全記憶體裝置舉例為第1A圖之記憶體116、第1B圖之安全記憶體裝置170、第2圖之安全記憶體裝置200、第3圖之安全記憶體裝置300、或第4圖中所說明之安全記憶體裝置。安全記憶體裝置可包括記憶體陣列(舉例為第2圖之記憶體陣列210或第3圖之記憶體陣列310)及邏輯電路(舉例為第2圖之安全引擎230或第3圖之安全引擎320)。
於一些實施例中,邏輯電路包括加密模組(舉例為第3圖之加密模組322或第4圖之加密模組420)、認證模組(舉例為第3圖之認證模組324或第4圖之認證模組430)、及安全寫入模組(舉例為第3圖之安全寫入模組326)。邏輯電路可亦包括一或多個其他元件,舉例為緩衝器、模式邏輯、及/或狀態機。緩衝器例如是第2圖之SRAM緩衝器220。模式邏輯例如是第2圖之模式邏輯222。狀態機例如是第2圖之狀態機224。
在步驟602,安全記憶體裝置接收安全寫入命令,舉例為來自控制器之封包命令與封包資訊。控制器可為第1A圖之主機控制器122或裝置控制器112、第1B圖之控制器160、或第4圖中所說明之控制器。封包資訊可包括加密資訊(舉例為第4圖之CT 415或In Data)及認證資訊(舉例為第4圖之認證標籤414或MAC)。
如第4圖中所示,控制器可包括加密引擎(舉例為第4圖之加密模組410),以藉由加密演算法(舉例為AES-GCM或AES-CCM)利用密鑰(舉例為第4圖之K 411)、封包命令(舉例為第4圖之AAD 412)、及將加密之訊息(舉例為第4圖之PT 413)做為輸入來產生加密資訊及認證資訊。將加密的資訊可包括舉例為如第5圖中所示之寫入命令、將寫入的資料、選擇碼、用於將寫入資料的兩個位址、及/或資料長度(舉例為將寫入的位元組數目)。密鑰於控制器及安全記憶體裝置之間共享。
在步驟604,回應於接收安全寫入命令,安全記憶體裝置解密封包資訊。舉例來說,如第4圖中所示,安全記憶體裝置使用加密模組,以藉由例如是AES-GCM之相同的解密演算法使用密鑰、從控制器接收之封包命令、及加密資訊做為輸入以及產生認證碼(舉例為第4圖之認證標籤424)及解密資訊做為輸出來執行認證解密。解密資訊可相同於將加密之資訊,舉例為如第5圖中所示。
在步驟606,安全記憶體裝置(舉例為邏輯電路中的認證模組)舉例為藉由比較產生之認證碼與所接收的認證資訊中之輸入訊息認證碼(MAC)來執行認證。在步驟608,安全記憶體裝置基於比較的結果決定輸入MAC是否通過認證。如果產生之認證碼不匹配輸入MAC,安全記憶體裝置決定輸入MAC失敗,以及回傳錯誤訊息(舉例為錯誤標幟(error flag))至控制器(步驟610)。控制器可讀取安全記憶體裝置之狀態,舉例為藉由例如是第2圖的記憶體介面202之記憶體介面中之R/B#接腳,及從安全記憶體裝置取得錯誤訊息。如果產生的認證碼匹配輸入MAC,安全記憶體裝置決定輸入MAC通過,以及程序600繼續進行到步驟612。
在步驟612,安全記憶體裝置解碼在解密資訊中的寫入命令及選擇碼。舉例來說,安全記憶體裝置可基於控制器及安全記憶體裝置之間的預定協定來解碼寫入命令。安全記憶體裝置可基於與具有不同寫入操作的不同選擇碼相關的預定表格(舉例為如第5圖中所示)來解碼選擇碼,選擇碼舉例為選擇碼[2:0]=100。選擇碼指定寫入資料至解密資訊中的此兩個位址之至少一者的操作形式。
在步驟614,安全記憶體裝置(舉例為安全寫入模組)決定第一及第二位址是否位於相同的庫中。記憶體陣列可包括數個記憶體次陣列或記憶庫(舉例為第3圖之記憶庫312、314)。如果第一及第二位址位於相同的庫中,安全記憶體裝置(舉例為安全寫入模組)依序地寫入資料至相同的庫中(步驟616)。如果第一及第二位址位在兩個不同的庫中,安全記憶體裝置(舉例為安全寫入模組)同時地寫入相同的資料至第一及第二位址中(步驟618),而可增加雙重安全寫入速度。
在步驟620,安全記憶體裝置決定錯誤是否發生。舉例來說,安全寫入操作可能失敗而無法執行,舉例為寫入電壓不能到達用以編程之高臨界電壓(threshold voltage)或可能無法達到低臨界電壓來進行抹除。如果錯誤發生時,程序600繼續進行到步驟610。如果沒有錯誤發生時,安全記憶體裝置決定安全寫入操作係完成(步驟622)。回應於其,安全記憶體裝置可傳送完成訊息至控制器,此完成訊息表示安全寫入操作完成。
第7圖繪示根據本揭露一或多個實施例之用以管理半導體裝置之安全寫入的方法700之另一範例的流程圖。半導體裝置可為記憶體裝置,舉例為第1A圖之記憶體116、第1B圖之安全記憶體裝置170、第2圖之安全記憶體裝置200、第3圖之安全記憶體裝置300、或第4圖中所說明之安全記憶體裝置。安全記憶體裝置可包括記憶體陣列(舉例為第2圖之記憶體陣列210或第3圖之記憶體陣列310)及邏輯電路(舉例為第2圖之安全引擎230或第3圖之安全引擎320)。控制器可耦接於半導體裝置。控制器可為第1A圖之主機控制器122或裝置控制器112、第1B圖之控制器160、或第4圖中所說明的控制器。
在步驟702,半導體裝置從控制器接收加密資訊。加密資訊包括將寫入的資料、選擇碼、或半導體裝置之記憶體陣列中的多個位址之資訊的至少一者。此些位址可包括第一位址(舉例為由控制器指定以寫入資料的位址)及第二位址(舉例為備份用於資料冗餘之資料的備用位址)。加密資訊可為第4圖之CT 415。
在步驟704,回應於接收加密資訊,半導體裝置根據選擇碼於記憶體陣列中執行安全寫入操作。選擇碼指定寫入資料至記憶體陣列中之此些位址的至少一者的操作形式,如第5圖中所示。
於一些實施例中,安全寫入操作包括編程操作。選擇碼指定編程資料於第一位址上(舉例為選擇碼[2:0]=000)或編程資料於第一位址及第二位址上(舉例為選擇碼[2:0]=100)。於一些實施例中,安全寫入操作包括抹除操作。選擇碼指定從第一位址抹除資料之特定位元數(舉例為選擇碼[2:0]=001、010、或011)或從第一位址及第二位址抹除資料之特定位元數(舉例為選擇碼[2:0]=101、110、或111)之其中一者。特定位元數可為4 KB、32 KB、或64 KB。
於一些實施例中,記憶體陣列包括數個記憶體次陣列(舉例為第3圖之記憶庫312、314)。此些記憶體次陣列之各者係分別地及獨立地耦接於半導體裝置中的電壓產生器(舉例為第2圖的HV產生器226或第3圖的HV模組302)。
於一些實施例中,邏輯電路係用以:回應於決定出第一位址及第二位址位於相同之記憶體次陣列,依序地寫入資料至第一位址及第二位址(舉例為第6圖的步驟616),及回應於決定出第一位址及第二位址位在兩個不同的記憶體次陣列中,同時地寫入資料至第一位址及第二位址(舉例為第6圖之步驟618)。
於一些實施例中,邏輯電路係用以:從控制器接收認證資訊(舉例為第4圖之MAC)及加密資訊,以及基於認證資訊、加密資訊、及控制器及半導體裝置之間共享的密鑰(舉例為第4圖的K 421),藉由使用加密演算法產生認證碼(舉例為第4圖的認證標籤424)及解密資訊(舉例為第4圖的PT 425)。於一些例子中,加密演算法包括高級加密標準(Advanced Encryption Standard,AES)演算法,舉例為AES-GCM或AES-CCM。
於一些實施例中,加密資訊包括與認證資訊相關之至少一其他選擇碼的資訊,及認證碼至少部分地基於加密資訊中之此至少一其他選擇碼產生。舉例來說,選擇碼可包括在MAC中之連接訊息碼(linked message codes)、在MAC中之序列數(serial number,SN)、或在MAC中之ExtraZone的首四個位元組。
於一些實施例中,認證資訊包括輸入認證碼,及邏輯電路係用以:比較產生之認證碼與輸入認證碼,以及基於比較的結果決定控制器的認證是否失敗,舉例為如第4或6圖中所示。於一些實施例中,邏輯電路係用以:回應於決定出產生的認證碼與輸入認證碼之匹配失敗,決定認證失敗以及產生錯誤訊號;及回應於決定出產生的認證碼匹配輸入認證碼,決定認證成功及於解密資訊上繼續執行安全寫入操作。
於一些實施例中,邏輯電路係用以:回應於決定出產生之認證碼匹配輸入認證碼,解碼選擇碼來用以執行安全寫入操作。舉例來說,邏輯電路可基於與具有不同寫入操作的不同選擇碼相關的預定表格來解碼選擇碼,舉例為如第5圖中所示。
於一些實施例中,邏輯電路係用以:回應於決定出選擇碼指定寫入資料至第一位址及第二位址,決定第一位址及第二位址是否位在記憶體陣列之相同的記憶體次陣列中,以及基於決定第一位址及第二位址是否位在相同的記憶體次陣列中之結果來執行安全寫入操作,如第6圖中所示。
於一些實施例中,解密資訊包括寫入命令、將寫入的資料、此些位址、及選擇碼,舉例為如第5圖中所示。邏輯電路係用以回應於決定出產生的認證碼匹配輸入認證碼來解碼寫入命令。邏輯電路可用以基於控制器及半導體裝置之間的預定協定來解碼寫入命令。第一及第二位址之各者可表示用以寫入資料的起始位址,及解密資訊可包括將寫入之資料的長度資訊,舉例為將寫入之字元組數目。
於一些實施例中,邏輯電路係用以接收來自控制器的封包命令(舉例為第4圖的AAD 412)、認證資訊、及加密資訊。邏輯電路係用以至少部分地基於封包命令產生認證碼及解密資訊。
於一些實施例中,邏輯電路係用以:決定錯誤是否在執行安全寫入操作時發生(舉例為第6圖的步驟620)。回應於決定出錯誤係發生,半導體裝置產生錯誤訊息(舉例為第6圖中的步驟610)。回應於決定出沒有發生錯誤,半導體裝置產生完成訊息,完成訊息用以表示安全寫入操作完成。
本案與其他範例可應用成一或多個電腦程式產品,舉例來說,在電腦可讀取媒介上所編碼的電腦程式指令之一或多個模組係由資料處理設備執行或控制資料處理設備的操作。電腦可讀取媒介可為機器可讀取儲存裝置、機器可讀取儲存基板、記憶體裝置,或其之一或多個組合。術語「資料處理設備」包括用以處理資料的所有設備、裝置、與機器,包括舉例為可編程處理器、電腦、或多個處理器或電腦。除了硬體之外,此設備可包括建立所討論之電腦程式之執行環境的程式碼,舉例為構成處理器韌體、協定堆疊(protocol stack)、資料庫管理系統、操作系統、或其之一或多個組合的程式碼。
系統可包含用以處理資料的所有設備、裝置、及機器,包括舉例為可編程處理器、電腦、或多個處理器或電腦。除了硬體之外,此系統可包括建立所討論之電腦程式之執行環境的程式碼,舉例為構成處理器韌體、協定堆疊、資料庫管理系統、操作系統、或其之一或多個組合的程式碼。
電腦程式(亦稱為程式、軟體、軟體應用程式、指令碼或程式碼)可以用任何形式的程式語言來編寫,包括編譯或直釋語言,並且可以任何形式進行配置(deployed),包括做為獨立程式(standalone program)或做為模組、元件、子常式(subroutine)、或適用於使用於計算環境中的其他單元。電腦程式並非必須對應於檔案系統中的檔案。程式可儲存於保存有其他程式或資料(舉例為儲存在標示語言文件(markup language document)中的一或多個指令碼)的檔案的一部分中、儲存於專用於所討論的程式的單一個檔案中、或儲存於多個已協調之檔案(舉例為儲存一或多個模組、子程式或部分程式碼的檔案)中。電腦程式可配置,以在一個電腦上或多個電腦上執行。此多個電腦位於一個地點或分佈在多個地點,且藉由通訊網路進行互連。
本文中所說明的程序和邏輯流程可藉由執行一或多個電腦程式的一或多個可編程處理器執行,以執行此處所說明的功能。程序和邏輯流程可亦由專用邏輯電路(special purpose logic circuitry)執行,並且設備可亦由專用邏輯電路實現,舉例為場可程式化閘陣列(field programmable gate array,FPGA)或特殊應用積體電路(application specific integrated circuit,ASIC)。
適用於執行電腦程式的處理器包含例如是通用微處理器及專用微處理器兩者,及任何種類的數位電腦的任何一或多個處理器。一般而言,處理器將從唯讀記憶體或隨機存取記憶體或此兩者接收指令及資料。電腦的基本元件可包含用於執行指令的處理器及用於儲存指令及資料的一或多個記憶體裝置。通常,電腦可亦包括或可操作地耦接於用於儲存資料的一或多個大容量儲存裝置,以從此一或多個大容量儲存裝置接收資料,或傳送資料至此一或多個大容量儲存裝置,或二者皆有。此一或多個大容量儲存裝置舉例為磁碟、磁光碟、或光碟。然而,電腦無需具有此種裝置。適用於儲存電腦程式指令及資料的電腦可讀媒體可包含所有形式的非揮發性記憶體、媒體以及記憶體裝置,包括例如是半導體記憶體裝置,舉例為EPROM、EEPROM、及快閃記憶體裝置;磁碟。處理器及記憶體可由專用邏輯電路增補或併入於專用邏輯電路中。
雖然本文可說明許多細節,但此些細節不應解釋為對本發明的所主張或可主張的範疇的限制,而是解釋為針對特定實施例的特徵的說明。在分開之數個實施例中說明於本文中的某些特徵可亦在單一實施例中組合實施。相反地,說明於單一實施例中的各種特徵可亦分開地或以任何適合的子組合的方式在多個實施例中實施。再者,儘管數個特徵於上文可說明為以某些組合來作用且甚至最初按此來主張,但來自所主張的組合的一或多個特徵在一些情況下可從所述的組合排除(excised),且所主張的組合可針對次組合或次組合的變化。類似地,雖然數個操作在圖式中以特定次序來描繪,但不應將理解為此些操作須以所繪示的特定次序或以順序次序執行,或須執行所有所說明的操作以達成合乎期望的結果。
本文僅揭露一些範例和實施方式。基於所揭露的內容,本領域具有通常知識者可對所說明的範例和實施方式以及其他實施方式進行改變、修改和改善。綜上所述,雖然本發明已以實施例揭露如上,然其並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100,150:系統
110:裝置
112:裝置控制器
113:處理器
114:內部記憶體
116:記憶體
120:主機設備
122:主機控制器
160:控制器
170,200,300:安全記憶體裝置
202:記憶體介面
204:資料暫存器
206:位址產生器
208:X解碼器
210,310:記憶體陣列
212:Y解碼器
213:資料線
214:感測放大器
216:輸出緩衝器
218:同步時脈(SCLK)輸入
220:SRAM緩衝器
222:模式邏輯
224:狀態機
226:高壓(HV)產生器
228:時脈產生器
230:安全引擎
302:高壓(HV)模組
312,314:記憶庫
320:安全引擎
322,410,420:加密模組
324:認證模組
326:安全寫入模組
330:周邊及介面
400:範例
411,421:密鑰(K)
412:認證資料(AAD)
413:明文(PT)
414,424:認證標籤
415:密文(CT)
422:AAD
423:CT
425:明文(PT)
430:認證模組
500:表格
600,700:程序
602~622,702,704:步驟
第1A圖繪示根據本揭露一或多個實施例之具有記憶體之系統之範例的示意圖。
第1B圖繪示根據本揭露一或多個實施例之具有安全記憶體裝置及控制器之系統之另一範例的示意圖。
第2圖繪示根據本揭露一或多個實施例之安全記憶體裝置之範例的示意圖。
第3圖繪示根據本揭露一或多個實施例之另一安全記憶體裝置之範例的示意圖。
第4圖繪示根據本揭露一或多個實施例之於控制器及安全記憶體裝置之間的安全寫入之範例的示意圖。
第5圖繪示根據本揭露一或多個實施例之列出將加密之資訊之範例表格的示意圖。
第6圖繪示根據本揭露一或多個實施例之用以管理安全記憶體裝置之安全寫入的方法之範例的流程圖。
第7圖繪示根據本揭露一或多個實施例之用以管理半導體裝置之安全寫入的方法之另一範例的流程圖。
700:程序
702,704:步驟
Claims (17)
- 一種半導體裝置,包括: 一記憶體陣列,包括複數個記憶體次陣列;以及 一邏輯電路,耦接於該記憶體陣列,及用以回應於接收加密資訊,於該記憶體陣列中執行一安全寫入操作, 其中該加密資訊包括將寫入之資料、一選擇碼、或該記憶體陣列中之複數個位址的資訊的至少一者,該選擇碼用以在該安全寫入操作期間,指定寫入該資料至該記憶體陣列中的該些位址之至少一者的一操作形式,該些位址包括一第一位址及一第二位址, 其中該邏輯電路用以: 回應於決定出該第一位址及該第二位址位在一相同之記憶體次陣列中,依序地寫入該資料至該第一位址及該第二位址, 回應於決定出該第一位址及該第二位址位在兩個不同之記憶體次陣列中,同時地寫入該資料至該兩個不同之記憶體次陣列中之該第一位址及該第二位址, 在執行該安全寫入操作期間決定一錯誤是否發生, 回應於決定出該錯誤係發生,產生一錯誤訊息,以及 回應於決定出沒有發生該錯誤,產生一完成訊息,該完成訊息係表示完成該安全寫入操作。
- 如請求項1所述之半導體裝置,其中該安全寫入操作包括一編程操作,以及 其中該選擇碼指定下述之其中一者: 編程該資料至該第一位址上,或 編程該資料至該第一位址及該第二位址上。
- 如請求項1所述之半導體裝置,其中該安全寫入操作包括一抹除操作,以及 其中該選擇碼指定下述之其中一者: 從該第一位址抹除該資料之一特定位元數,或 從該第一位址及該第二位址抹除該資料之一特定位元數。
- 如請求項1所述之半導體裝置,其中該邏輯電路係用以: 從一控制器接收認證資訊及該加密資訊,以及 基於該認證資訊、該加密資訊、以及該控制器及該半導體裝置之間共享的一密鑰,藉由利用一加密演算法(cryptographic algorithm)產生一認證碼及解密資訊。
- 如請求項4所述之半導體裝置,其中該加密演算法包括一高級加密標準(Advanced Encryption Standard,AES)演算法。
- 如請求項4所述之半導體裝置,其中該加密資訊包括與該認證資訊相關之至少一其他選擇碼之資訊,以及 其中該認證碼係至少部分地基於該加密資訊中的該至少一其他選擇碼產生。
- 如請求項4所述之半導體裝置,其中該認證資訊包括一輸入認證碼,以及 其中該邏輯電路係用以: 比較產生之該認證碼及該輸入認證碼;以及 基於該比較之一結果,決定該控制器的一認證是否失敗。
- 如請求項7所述之半導體裝置,其中該邏輯電路係用以: 回應於決定出產生之該認證碼與該輸入認證碼之匹配失敗,決定該認證失敗及產生該錯誤訊息;以及 回應於決定出產生之該認證碼匹配該輸入認證碼,決定該認證成功且於該解密資訊上繼續執行該安全寫入操作。
- 如請求項8所述之半導體裝置,其中該邏輯電路係用以: 回應於決定出產生之該認證碼匹配該輸入認證碼,解碼用以執行該安全寫入操作的該選擇碼。
- 如請求項8所述之半導體裝置,其中該解密資訊包括一寫入命令、將寫入之該資料、該些位址、及該選擇碼,以及 其中該邏輯電路係用以回應於決定出產生之該認證碼匹配該輸入認證碼,解碼該寫入命令。
- 如請求項4所述之半導體裝置,其中該邏輯電路係用以接收來自該控制器之一封包命令、該認證資訊、及該加密資訊,以及 其中該邏輯電路係用以至少部分地基於該封包命令產生該認證碼及該解密資訊。
- 一種用以管理一半導體裝置之安全操作的系統,包括: 該半導體裝置,包括一記憶體陣列及一邏輯電路,該邏輯電路耦接於該記憶體陣列,該記憶體陣列包括複數個記憶體次陣列;以及 一控制器,耦接於該半導體裝置及用以: 加密將寫入之資料、一選擇碼、或該記憶體陣列中之複數個位址的資訊之至少一者,該選擇碼用以指定寫入該資料至該記憶體陣列中之該些位址之至少一者的一操作形式,及 傳送該加密資訊至該半導體裝置,以及 其中該邏輯電路係用以回應於接收來自該控制器的該加密資訊,於該記憶體陣列中執行一安全寫入操作, 其中該邏輯電路用以: 回應於決定出該選擇碼指定寫入該資料至該些位址中之一第一位址及一第二位址,決定該第一位址及該第二位址是否位於該記憶體陣列之一相同之記憶體次陣列, 回應於決定出該第一位址及該第二位址位於該相同之記憶體次陣列,依序地寫入該資料至該第一位址及該第二位址, 回應於決定出該第一位址及該第二位址位在兩個不同之記憶體次陣列中,同時地寫入該資料至該兩個不同之記憶體次陣列中的該第一位址及該第二位址, 在執行該安全寫入操作期間決定一錯誤是否發生, 回應於決定出該錯誤係發生,產生一錯誤訊息,以及 回應於決定出沒有發生該錯誤,產生一完成訊息,該完成訊息係表示完成該安全寫入操作。
- 如請求項12所述之系統,其中該控制器係用以: 基於該半導體裝置及該控制器之間共享的一密鑰、該選擇碼、該些位址、及將寫入之該資料,藉由利用一加密演算法(cryptographic algorithm)產生該加密資訊及認證資訊,以及 傳送該認證資訊及該加密資訊至該半導體裝置。
- 如請求項13所述之系統,其中該邏輯電路係用以: 從該控制器接收該認證資訊及該加密資訊,以及 基於該認證資訊、該加密資訊、及該密鑰,藉由利用該加密演算法產生一認證碼及解密資訊。
- 如請求項14所述之系統,其中該邏輯電路係用以: 比較產生之該認證碼與該認證資訊中之一輸入認證碼, 回應於決定出產生之該認證碼與該輸入認證碼之匹配失敗,產生該錯誤訊息, 回應於決定出產生之該認證碼匹配該輸入認證碼,解碼用以執行該安全寫入操作的該選擇碼。
- 一種用以管理一半導體裝置之安全操作的方法,該方法包括: 從耦接於該半導體裝置之一控制器接收加密資訊,該加密資訊包括將寫入之資料、一選擇碼、或該半導體裝置之一記憶體陣列中之複數個位址的資訊的至少一者,該記憶體陣列包括複數個記憶體次陣列,該些位址包括一第一位址及一第二位址,; 回應於接收該加密資訊,根據該選擇碼,於該記憶體陣列中執行一安全寫入操作,該選擇碼用以指定寫入該資料至該記憶體陣列中之該些位址的至少一者的一操作形式, 回應於決定出該第一位址及該第二位址位在一相同之記憶體次陣列中,依序地寫入該資料至該第一位址及該第二位址, 回應於決定出該第一位址及該第二位址位在兩個不同之記憶體次陣列中,同時地寫入該資料至該兩個不同之記憶體次陣列中之該第一位址及該第二位址, 在執行該安全寫入操作期間決定一錯誤是否發生, 回應於決定出該錯誤係發生,產生一錯誤訊息,以及 回應於決定出沒有發生該錯誤,產生一完成訊息,該完成訊息係表示完成該安全寫入操作。
- 如請求項16所述之方法,更包括: 從該控制器接收認證資訊以及該加密資訊, 基於該認證資訊、該加密資訊、及該半導體裝置及該控制器之間共享的一密鑰,藉由利用一加密演算法(cryptographic algorithm)產生一認證碼及解密資訊,以及 回應於決定出產生之認證碼匹配該認證資訊中的一輸入認證碼,解碼用以執行該安全寫入操作的該選擇碼。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202263309641P | 2022-02-13 | 2022-02-13 | |
| US63/309,641 | 2022-02-13 | ||
| US17/881,078 US12086457B2 (en) | 2022-02-13 | 2022-08-04 | Managing secure writes in semiconductor devices |
| US17/881,078 | 2022-08-04 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202403773A TW202403773A (zh) | 2024-01-16 |
| TWI869715B true TWI869715B (zh) | 2025-01-11 |
Family
ID=87558511
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW111139064A TWI869715B (zh) | 2022-02-13 | 2022-10-14 | 半導體裝置及用以管理其之安全操作的系統與方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US12086457B2 (zh) |
| CN (1) | CN116627314A (zh) |
| TW (1) | TWI869715B (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN119620918A (zh) * | 2023-09-14 | 2025-03-14 | 长江存储科技有限责任公司 | 存储器系统、主机、电子设备及其操作方法、存储介质 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20080263262A1 (en) * | 2007-04-22 | 2008-10-23 | Anobit Technologies Ltd. | Command interface for memory devices |
| US20160248588A1 (en) * | 2006-09-07 | 2016-08-25 | Altera Corporation | Security ram block with multiple partitions |
| US20190035473A1 (en) * | 2017-07-25 | 2019-01-31 | Western Digital Technologies, Inc. | Group write operations for a data storage device |
| US20190122007A1 (en) * | 2014-06-20 | 2019-04-25 | Cypress Semiconductor Corporation | Encryption for xip and mmio external memories |
| US20190205317A1 (en) * | 2012-10-30 | 2019-07-04 | FHOOSH, Inc. | Systems and methods for secure storage and retrieval of data objects |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5363334A (en) | 1993-04-10 | 1994-11-08 | Microchip Technology Incorporated | Write protection security for memory device |
| US6073209A (en) * | 1997-03-31 | 2000-06-06 | Ark Research Corporation | Data storage controller providing multiple hosts with access to multiple storage subsystems |
| US7269743B2 (en) * | 2004-07-16 | 2007-09-11 | Hitachi, Ltd. | Method and apparatus for secure data mirroring a storage system |
| US8255655B2 (en) | 2009-10-02 | 2012-08-28 | Sandisk Technologies Inc. | Authentication and securing of write-once, read-many (WORM) memory devices |
-
2022
- 2022-08-04 US US17/881,078 patent/US12086457B2/en active Active
- 2022-10-14 TW TW111139064A patent/TWI869715B/zh active
- 2022-10-24 CN CN202211306165.2A patent/CN116627314A/zh active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20160248588A1 (en) * | 2006-09-07 | 2016-08-25 | Altera Corporation | Security ram block with multiple partitions |
| US20080263262A1 (en) * | 2007-04-22 | 2008-10-23 | Anobit Technologies Ltd. | Command interface for memory devices |
| US20190205317A1 (en) * | 2012-10-30 | 2019-07-04 | FHOOSH, Inc. | Systems and methods for secure storage and retrieval of data objects |
| US20190122007A1 (en) * | 2014-06-20 | 2019-04-25 | Cypress Semiconductor Corporation | Encryption for xip and mmio external memories |
| US20190035473A1 (en) * | 2017-07-25 | 2019-01-31 | Western Digital Technologies, Inc. | Group write operations for a data storage device |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202403773A (zh) | 2024-01-16 |
| CN116627314A (zh) | 2023-08-22 |
| US12086457B2 (en) | 2024-09-10 |
| US20230259301A1 (en) | 2023-08-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8341500B2 (en) | Detecting corrupted data for a system having non-volatile memory | |
| US20140032935A1 (en) | Memory system and encryption method in memory system | |
| US10438684B2 (en) | Memory device, memory system, and method of operating the memory system | |
| US11736276B2 (en) | Delegation of cryptographic key to a memory sub-system | |
| CN112836247B (zh) | 与存储器子系统的安全数据通信 | |
| TWI738097B (zh) | 具有密碼學組件的記憶體裝置 | |
| JP2010509690A (ja) | 記憶装置のセキュリティを確保する方法とシステム | |
| KR102768150B1 (ko) | 메모리에서의 데이터 증명 | |
| CN116648688A (zh) | 包含使用认证逻辑产生用于存储器区的存取代码的实例的存储器系统和装置 | |
| US11736453B2 (en) | Secure key storage devices | |
| CN116420145A (zh) | 基于多个组件的启动时间绑定的端点验证 | |
| US10180804B1 (en) | Obfuscation-enhanced memory encryption | |
| CN113767387A (zh) | 使用加密散列验证存储在存储器中的数据 | |
| TWI869715B (zh) | 半導體裝置及用以管理其之安全操作的系統與方法 | |
| JP2022526934A (ja) | ブロックチェーンを基にしたメモリコマンドの正当性確認 | |
| US20240184668A1 (en) | Managing status output | |
| CN113935062A (zh) | 存储器系统及其操作方法 |