TWI722496B - 使用者資料的加解密方法及裝置 - Google Patents

使用者資料的加解密方法及裝置 Download PDF

Info

Publication number
TWI722496B
TWI722496B TW108125643A TW108125643A TWI722496B TW I722496 B TWI722496 B TW I722496B TW 108125643 A TW108125643 A TW 108125643A TW 108125643 A TW108125643 A TW 108125643A TW I722496 B TWI722496 B TW I722496B
Authority
TW
Taiwan
Prior art keywords
user data
encryption
decryption
path
flag
Prior art date
Application number
TW108125643A
Other languages
English (en)
Other versions
TW202101236A (zh
Inventor
李安邦
Original Assignee
慧榮科技股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 慧榮科技股份有限公司 filed Critical 慧榮科技股份有限公司
Publication of TW202101236A publication Critical patent/TW202101236A/zh
Application granted granted Critical
Publication of TWI722496B publication Critical patent/TWI722496B/zh

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Probability & Statistics with Applications (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)

Abstract

本發明提出一種使用者資料的加解密裝置,包含:記憶體、繞道旗標寫入電路及快閃介面控制器。繞道旗標寫入電路寫入繞道旗標於記憶體中原先配置來儲存端對端資料路徑保護資訊的空間中的剩餘位元,該繞道旗標指出使用者資料是否經過加密。快閃介面控制器從記憶體讀取該使用者資料、端對端資料路徑保護資訊及繞道旗標並寫入至閃存裝置。

Description

使用者資料的加解密方法及裝置
本發明涉及快閃記憶裝置,尤指一種使用者資料的加解密方法及裝置。
快閃記憶裝置通常分為NOR快閃記憶裝置與NAND快閃記憶裝置。NOR快閃記憶裝置為隨機存取裝置,主機端(Host)可於位址腳位上提供任何存取NOR快閃記憶裝置的位址,並及時地從NOR快閃記憶裝置的資料腳位上獲得儲存於該位址上的資料。相反地,NAND快閃記憶裝置並非隨機存取,而是序列存取。NAND快閃記憶裝置無法像NOR快閃記憶裝置一樣,可以存取任何隨機位址,主機端反而需要寫入序列的位元組(Bytes)的值到NAND快閃記憶裝置中,用以定義請求命令(Command)的類型(如,讀取、寫入、抹除等),以及用在此命令上的位址。位址可指向一個頁面(快閃記憶裝置中寫入作業的最小資料塊)或一個區塊(快閃記憶裝置中抹除作業的最小資料塊)。
如果對使用者資料有安全性的考量,快閃記憶裝置會在寫入儲存單元前使用加密演算法來保護資料的安全性。通常,為了資料寫入或讀取的效率,加密或解密演算法會使用硬體實現,並且提供繞道路徑(bypass path),讓主裝置提供的使用者資料不經過加密硬體而直接寫入儲存單元,或者將讀出的資料不經過解密硬體而直接返回給主裝置。然而,快閃記憶裝置中加密及繞道路徑的安排及組態,會影響系統效能。因此,本發明提出一種使用者資料的加解密方法 及裝置,有效率地安排及組態加密及繞道路徑。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本發明實施例提出一種使用者資料的加解密裝置,包含:記憶體、繞道旗標寫入電路及快閃介面控制器。繞道旗標寫入電路寫入繞道旗標於記憶體中原先配置來儲存端對端資料路徑保護資訊的空間中的剩餘位元。快閃介面控制器從記憶體讀取該使用者資料、端對端資料路徑保護資訊及繞道旗標並寫入至閃存裝置。
本發明實施例另提出一種使用者資料的加解密裝置,包含:快閃介面控制器;使用者資料及旗標檢查器;以及加解密控制器。快閃介面控制器從閃存裝置讀取使用者資料及繞道旗標並儲存至記憶體,此繞道旗標儲存於閃存裝置中原先配置來儲存端對端資料路徑保護資訊的空間中的剩餘位元。使用者資料及旗標檢查器輸出通過快閃介面控制器接收到的繞道旗標。加解密控制器接收繞道旗標,依據繞道旗標組態出讓使用者資料通過的解密路徑或繞道路徑。
本發明實施例提出一種使用者資料的加解密方法,包含:寫入使用者資料、端對端資料路徑保護資訊及繞道旗標至閃存裝置,其中,繞道旗標儲存於閃存裝置中原先配置來儲存端對端資料路徑保護資訊的空間中的剩餘位元。
本發明實施例另提出一種使用者資料的加解密方法,包含:從閃存裝置讀取繞道旗標,其中,繞道旗標儲存於閃存裝置中原先配置來儲存端對端資料路徑保護資訊的空間中的剩餘位元;依據繞道旗標組態出讓使用者資料通過的解密路徑或繞道路徑;以及輸出使用者資料或解密後的使用者資料給主機端。
上述繞道旗標指出使用者資料是否經過加密。上述解密路徑上包含加解密引擎,上述繞道路徑上不包含加解密引擎,而加解密引擎使 用密鑰將使用者資料解密。
上述實施例的優點之一,通過將繞道旗標儲存於記憶體及閃存裝置中原先配置來儲存端對端資料路徑保護資訊的空間中的剩餘位元,避免使用額外的空間來儲存使用者資料是否加密的資訊,以及花費額外的記憶體及閃存裝置的頻寬來存取上述資訊。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
110:主機端
130、200、400、500:閃存控制器
135:記憶體
150:NAND閃存裝置
210、310、510:處理單元
220:加解密引擎
230:主橋控制器
240、340、470:加解密控制器
250:快閃介面控制器
260、270、360、370、460、383:多工器
280、381:驗證碼產生器
290:使用者資料檢查器
380:資料驗證碼及旗標產生器
390:使用者資料及旗標檢查器
410:動態隨機存取記憶體
430:DMA控制器
450:解多工器
610、630:記憶體或NAND閃存裝置中的空間
S710~S790:方法步驟
S810~S890:方法步驟
圖1為依據一些實施方式的系統架構示意圖。
圖2為依據本發明實施例的系統架構示意圖。
圖3為依據本發明實施例的資料驗證碼及旗標產生器的方塊圖。
圖4及圖5為依據本發明實施例的系統架構示意圖。
圖6為依據本發明實施例的使用者資料及端對端資料路徑保護資訊的資料組織示意圖。
圖7為依據本發明實施例的資料寫入的方法流程圖。
圖8為依據本發明實施例的資料讀取的方法流程圖。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的”包含”、”包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如”第一”、”第二”、”第三”等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
必須了解的是,當元件描述為”連接”或”耦接"至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為”直接連接”或”直接耦接”至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如”介於”相對於”直接介於”,或者是”鄰接”相對於”直接鄰接”等等。
參考圖1。系統架構100包含主機端(Host-side)110、閃存控制器(Flash Controller)130及NAND閃存裝置150。此系統架構可實施於個人電腦、筆記型電腦(Laptop PC)、平板電腦、手機、數位相機、數位攝影機等電子產品。閃存控制器130及NAND閃存裝置150可合起來稱為固態硬碟(Solid State Disk,SSD)。閃存控制器130包含處理單元210,通過主橋控制器(Host Bridge Controller)230與主機端110通信。主橋控制器230可包含通用快閃記憶儲存(Universal Flash Storage,UFS)、快速非揮發記憶體(Non-Volatile Memory Express,NVMe)、通用序列匯流排(Universal Serial Bus,USB)、先進技術附著(advanced technology attachment,ATA)、序列先進技術附著(serial advanced technology attachment,SATA)、快速周邊元件互聯(peripheral component interconnect express,PCI-E)或其他介面。處理單元210可通過快閃介面控制器(Flash Interface,I/F Controller)250與NAND閃存裝置150通信,並且快閃介面控制器250可包含開放NAND快閃(Open NAND Flash Interface ONFI)、雙倍資料率開關(DDR Toggle)或其他介面。NAND閃存裝置150提供大量的儲存空間,通常是數百Gigabytes,甚至是Terabytes,可用於儲存大量的使用者資料,例如高解析度圖片、影片等。NAND閃存裝置150中的記憶單元可包含單層式單元(Single Level Cells,SLCs)、多層式單元(Multi-Level Cells,MLCs)、三層式單元(Triple Level Cells,TLCs)或四層式單元(Quad-Level Cells, QLCs),或以上的任意組合。
閃存控制器130包含加解密引擎(Encryption-and-Decryption Engine)220,使用相同的密鑰(Key)對使用者資料進行加密及解密。加解密引擎220耦接於主橋控制器230及多工器270之間,可為資料加密標準(Data Encryption Standard,DES)引擎、高級加密標準(Advanced Encryption Standard,AES)引擎,或其他使用對稱密鑰(Symmetric-key)演算法的引擎。加解密引擎220於較佳的情況下包含使用AES演算法的電路,是一種依託於硬體、實時進行且不影響性能的加解密方式。詳細來說,AES引擎220通過主橋控制器230接收使用者資料,並使用密鑰加密後經由多工器(Multiplexer,MUX)270傳送給記憶體135及驗證碼產生器(Verification-code Generator)280。另一方面,AES引擎220從記憶體135讀取加密過的使用者資料,並使用相同密鑰解密後經由多工器260傳送給主橋控制器230,使得解密後的資料能夠通過主橋控制器230傳送給主機端110。處理單元210可驅動加解密控制器240來設定加解密引擎220中的參數。
針對資料寫入操作,閃存控制器130包含兩個路徑:加密路徑;及繞道(Bypass)路徑。為一個主機寫命令(Host Write Command),處理單元210可通過發出訊號BP1/BP1’給多工器270,用於將閃存控制器130中的元件組態為加密路徑或繞道路徑。於一些實施例,主機端110可透過設定閃存控制器130中的指定寄存器(未顯示於圖1)來通知閃存控制器130是否啟動加密功能。於另一些實施例,主機端110可在主機寫命令中攜帶待寫入的使用者資料是否加密的資訊。 多工器270耦接於主橋控制器230、加解密引擎220、驗證碼產生器280及記憶體135之間。當主機端110指示閃存控制器130啟動加密功能時,處理單元210發出訊號BP1’給多工器270,用於將多工器270的輸入端連接至加解密引擎220,形成加密路徑。反之,處理單元 210發出訊號BP1給多工器270,用於將多工器270的輸入端連接至主橋控制器230,形成繞道路徑。
針對資料讀取操作,閃存控制器130包含兩個路徑:解密路徑;及繞道路徑。為一個主機讀命令(Host Read Command),處理單元210可通過發出訊號BP2/BP2’給多工器260,用於將閃存控制器130中的元件組態為解密路徑或繞道路徑。多工器260耦接於主橋控制器230、加解密引擎220及記憶體135之間。當偵測到需要啟動解密功能時,處理單元210發出訊號BP2’給多工器260,用於將多工器260的輸入端連接至加解密引擎220,形成解密路徑。反之,處理單元210發出訊號BP2給多工器260,用於將多工器260的輸入端連接至記憶體135,形成繞道路徑。偵測是否需要啟動解密功能的技術細節將於以下段落描述。
驗證碼產生器(Verification-code Generator)280耦接於多工器270及記憶體135之間,從多工器270接收使用者資料(可為原始資料或加密後資料),依據使用者資料產生端對端資料路徑保護資訊(End-to-End Data Path Protection,E2E DPP),其能夠用來檢查出使用者資料是否存在錯誤位元,並且儲存到記憶體135的指定位址。驗證碼產生器280可包含循環冗餘校驗(Cyclic Redundancy Check,CRC)編碼器、漢明碼(Hamming Code)編碼器或其他類似編碼器的電路。 假設一個邏輯位址指向512位元組(Bytes)(可稱為一個區段Sector)的使用者資料:驗證碼產生器280依據512位元組的使用者資料產生15位元(Bits)的E2E DPP(如CRC碼)。記憶體135可為動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM),作為使用者資料及E2E DPP的資料緩衝區(Data Buffer)。快閃介面控制器250耦接於記憶體135及NAND閃存裝置150之間,從記憶體135讀取使用者資料及E2E DPP並將其寫入NAND閃存裝置150的實體區塊。
快閃介面控制器250從NAND閃存裝置150的實體區塊讀取使用者資料及E2E DPP並將其寫入記憶體135的指定位址。使用者資料檢查器(User-data Checker)290耦接於處理單元210及記憶體135之間,從記憶體135讀取使用者資料(可為原始資料或加密後資料)及E2E DPP,並據以判斷讀取的資料是否正確。使用者資料檢查器290可包含循環冗餘校驗解碼器(CRC Decoder)、漢明碼解碼器(Hamming Code Decoder)或其他類似解碼器的電路。當發現讀取資料中存在錯誤時,使用者資料檢查器290發出中斷訊號INT給處理單元210,使得處理單元210開始執行錯誤回復程序。
為了讓寫入操作有效率,不同主機寫命令的於使用者資料及E2E DPP會搜集起來寫入一個主動區塊(Active Block),使得主動區塊中部份區段的使用者資料經過加密,而其他區段的使用者資料沒有經過加密。為了記錄每個區段的使用者資料是否經過加密的資訊,於一些實施方式中,處理單元210可於記憶體135中維護相應於主動區塊的繞道表(Bypass Table)。繞道表可使用位元圖(bitmap)實施,包含主動區塊中區段總數的位元,每個位元紀錄一個相應區段的使用者資料是否經過加密的資訊。例如,主動區塊中的區段總數為32,則繞道表為32位元的位元圖。然而,繞道表會佔用記憶體135中的部分空間,並且在NAND閃存裝置150中的主動區塊寫滿時,快閃介面控制器250需要花費時間及頻寬將對應的繞道表寫入NAND閃存裝置150中的指定位址。此外,為完成每個主機讀操作,快閃介面控制器250還需要花費時間及頻寬先讀取相應的繞道表,然後,依據繞道表的資訊組態閃存控制器130為解密路徑或繞道路徑。
參考圖6,為了節省記憶體135及NAND閃存裝置150的空間,以及使用者資料的寫入及讀取時間,本發明實施例提出使用記憶體135及NAND閃存裝置150中原先配置來儲存E2E DPP的空間630中的剩 餘1個位元,儲存每個區段的使用者資料610是否經過加密的資訊。 舉例來說,當15個位元的E2E DPP紀錄於2個位元組的空間時,可利用多餘的1個位元(例如,最高位Most Significant Bit,MSB或最低位Least Significant Bit,LSB)紀錄相應512KB的使用者資料是否經過加密的繞道旗標(Bypass Flag),其中,”1”代表使用者資料沒有經過加密(也就是通過繞道路徑);”0”代表使用者資料經過加密(也就是通過加密路徑)。在另一些實施例,E2E DPP也可配置為佔據4個位元組的空間,但實際只使用31個或更少的位元。
為了將如上所述的繞道旗標儲存於原先配置給E2E DPP的空間中,可修改圖1中的數個元件的功能、電路及連接關係。參考圖2所示修改後的系統架構實施例。閃存控制器200中配置處理單元310、加解密控制器340、多工器370及資料驗證碼及旗標產生器380。處理單元310耦接加解密控制器340,並且加解密控制器340耦接多工器370。 處理單元310解讀主橋控制器230收到的命令為主機寫命令時,判斷主機端110是否指示閃存控制器130啟動加密功能。當加密功能不啟動時,處理單元310發出控制訊號給加解密控制器340,通知加解密控制器340使用者資料不需要加密。加解密控制器340發出訊號BP1給多工器370,用於將多工器370的輸入端連接至主橋控制器230,形成繞道路徑。此外,加解密控制器340發出訊號BP1給資料驗證碼及旗標產生器380,驅動資料驗證碼及旗標產生器380產生表示使用者資料沒有經過加密的繞道旗標,並將繞道旗標連同E2E DPP儲存至記憶體135的特定位址。
當加密功能啟動時,處理單元310發出控制訊號給加解密控制器340,通知加解密控制器340使用者資料需要加密。加解密控制器340發出訊號BP1’給多工器370,用於將多工器370的輸入端連接至加解密引擎220,形成加密路徑。此外,加解密控制器340發出訊號BP1’給資料驗證碼及旗標產生器380,驅動資料驗證碼及旗標產生器380產生 表示使用者資料經過加密的繞道旗標,並將繞道旗標連同E2E DPP儲存至記憶體135的特定位址。
參考圖3,資料驗證碼及旗標產生器380包含驗證碼產生器381及多工器383。驗證碼產生器381的功能及電路類似於圖1的驗證碼產生器280。驗證碼產生器381可為CRC編碼器,依據一個區段(例如512KB)的使用者資料DAT(可為原始資料或加密後資料)產生15位元的E2E DPP,並輸出至記憶體135中特定位址Addr[14:0]。多工器383受控制於加解密控制器340。當從加解密控制器340接收到訊號BP1時,輸出”1”至記憶體135中特定位址Addr[15],代表使用者資料DAT沒有經過加密。當從加解密控制器340接收到訊號BP1’時,輸出”0”至記憶體135中特定位址Addr[15],代表使用者資料DAT經過加密。所屬技術領域技術人員可修改圖3的架構,讓驗證碼產生器381輸出至記憶體135中特定位置的位址Addr[15:1],並且讓多工器383輸出至記憶體135中特定位置的位址Addr[0]。
處理單元310接著驅動快閃介面控制器250,將記憶體135中的使用者資料、E2E DPP及繞道旗標寫入NAND閃存裝置150中主動區塊的空頁面的一個區段。
為了解讀原先配置給E2E DPP的空間中的繞道旗標來決定使用者資料是否需要解密,可修改圖1中的數個元件的功能、電路及連接關係。參考圖2所示修改後的系統架構實施例。閃存控制器200中配置使用者資料及旗標檢查器390及多工器360。使用者資料及旗標檢查器390耦接在記憶體135、加解密控制器340及處理單元310之間。加解密控制器340耦接多工器360。處理單元310解讀主橋控制器230收到的命令為主機讀命令時,驅動快閃介面控制器250,讀取NAND閃存裝置150中指定實體塊的指定頁面的指定區段的使用者資料、E2E DPP及繞道旗標,並儲存到記憶體135。使用者資料及旗標檢查器390從記憶體135讀取並輸出繞道旗標F給加解密控制器340。使用 者資料及旗標檢查器390包含如圖2所述的使用者資料檢查器290,用於判斷使用者資料的正確性。加解密控制器340依據繞道旗標F判斷閃存控制器130是否啟動解密功能。當解密功能不啟動時,加解密控制器340發出訊號BP2給多工器360,用於將多工器360的輸入端連接至記憶體135,形成繞道路徑。當解密功能啟動時,加解密控制器340發出訊號BP2’給多工器360,用於將多工器360的輸入端連接至加解密引擎220,形成解密路徑。
接著,當使用者資料(可為原始資料或加密後資料)通過使用者資料及旗標檢查器390的校驗(換句話說,沒有收到資料及旗標檢查器390的中斷訊號INT),處理單元310驅動主橋控制器230從多工器360接收使用者資料並輸出給主機端110。
閃存控制器200中其他未說明元件的功能、電路及操作,或者擁有相同命名的元件的一般性功能、電路及操作,可參考圖1中對應元件的說明,不再贅述以求簡明。
於一些實施例中,待寫入的使用者資料儲存於閃存控制器之外的DRAM,並且閃存控制器將從NAND閃存裝置讀取的使用者資料寫入DRAM以供主機端110抓取。因應上述的使用者資料存取機制,可修改圖2中的數個元件的功能、電路及連接關係,修改的結果可參考圖4。
針對資料寫入操作,閃存控制器400中設置直接記憶體存取(Direct Memory Access,DMA)控制器430,耦接於DRAM 410及解多工器(De-multiplexer)450之間。當加密功能不啟動時,加解密控制器470發出訊號BP1給解多工器450,用於將解多工器450的輸出端連接至記憶體135,形成繞道路徑。此外,加解密控制器470發出訊號BP1給DMA控制器430,使得DMA控制器430輸出繞道旗標為”1”至記憶體135中原先配置來儲存E2E DPP的空間中的剩餘位元,表示相應使用者資料沒有經過加密。
當加密功能啟動時,加解密控制器470發出訊號BP1’給解多工器450,用於將解多工器450的輸出端連接至加解密引擎220,形成加密路徑。 此外,加解密控制器470發出訊號BP1’給DMA控制器430,使得DMA控制器430輸出繞道旗標為”0”至記憶體135中原先配置來儲存E2E DPP的空間中的剩餘位元,表示相應使用者資料經過加密。
針對資料讀取操作,閃存控制器400中設置多工器460,耦接於DMA控制器430、加解密引擎220及記憶體135之間。當解密功能不啟動時,加解密控制器470發出訊號BP2給多工器460,用於將多工器460的輸入端連接至記憶體135,形成繞道路徑。當解密功能啟動時,加解密控制器450發出訊號BP2’給多工器460,用於將多工器460的輸入端連接至加解密引擎220,形成解密路徑。多工器460的輸出端耦接DMA控制器430,使得DMA控制器430可經由多工器460取得原始的或解密後的使用者資料。DMA控制器430儲存取得的使用者資料至DRAM 410中的指定位址,讓主機端110能存取DRAM 410中的使用者資料。
閃存控制器400中其他未說明元件的功能、電路及操作,或者擁有相同命名的元件的一般性功能、電路及操作,可參考圖1及圖2中對應元件的說明,不再贅述以求簡明。
於一些實施例中,閃存控制器不使用如圖2所示的資料驗證碼及旗標產生器380來產生繞道旗標,而改由處理單元完成。因應上述的改變,可修改圖2中的數個元件的功能、電路及連接關係,修改的結果可參考圖5。閃存控制器500中設置處理單元510,耦接於主橋控制器230、加解密控制器340及記憶體135之間。
處理單元510解讀主橋控制器230收到的命令為主機寫命令時,判斷主機端110是否指示閃存控制器130啟動加密功能。當加密功能不啟動時,處理單元510除發出控制訊號給加解密控制器340外,輸出繞道旗標為”1”至記憶體135中原先配置來儲存E2E DPP的空間中的剩 餘位元,表示相應使用者資料沒有經過加密。當加密功能啟動時,處理單元510除發出控制訊號給加解密控制器340外,輸出繞道旗標為”0”至記憶體135中原先配置來儲存E2E DPP的空間中的剩餘位元,表示相應使用者資料經過加密。
閃存控制器500中其他未說明元件的功能、電路及詳細操作,或者擁有相同命名的元件的一般性功能、電路及操作,可參考圖1及圖2中對應元件的說明,不再贅述以求簡明。
由於資料驗證碼及旗標產生器380、DMA控制器430或處理單元510都具有產生及寫入繞道旗標的功能,因此這些元件也可稱為繞道旗標寫入電路。
處理單元210、310或510可使用多種方式實施,如使用通用硬體(例如,單一處理器、具平行處理能力的多處理器,或其他具運算能力的處理器),並且在執行韌體或軟體指令(Instructions)時,提供之前描述的功能。
雖然本發明實施例描述寫入及讀取一個區段資料的技術內容作為範例,但是所屬技術領域人員可擴充閃存控制器中的相應元件來一次寫入及讀取多個區段的使用者資料、E2E DPP及繞道旗標,本發明不應因此侷限。
參考圖7所示的資料寫入方法,由閃存控制器200、400或500實施,並且其中的每一個步驟由閃存控制器200、400或500的一或多個元件完成。各個步驟分述如下:步驟S710:從主機端接收到主機寫命令。處理單元310或510可解讀經由主橋控制器230收到的命令而得主機寫命令。
步驟S730:判斷是否啟動加密功能,是則執行步驟S751;否則執行步驟S771。處理單元310或510可依據閃存控制器中指定寄存器的設定或主機寫命令中攜帶的資訊完成此判斷。
步驟S751:將閃存控制器中的元件組態為加密路徑。加解密控制器 340可通過發出訊號BP1’給多工器370來完成組態,或者,加解密控制器470可通過發出訊號BP1’給解多工器450來完成組態。
步驟S753:於原先配置來儲存E2E DPP的位元中沒用到的剩餘位元寫入繞道旗標,表示相應使用者資料經過加密。此步驟可由資料驗證碼及旗標產生器380、DMA控制器430或處理單元510完成。
步驟S771:將閃存控制器中的元件組態為繞道路徑。加解密控制器340可通過發出訊號BP1給多工器370來完成組態,或者,加解密控制器470可通過發出訊號BP1給解多工器450來完成組態。
步驟S773:於原先配置來儲存E2E DPP的記憶體空間中的剩餘位元寫入繞道旗標,表示相應使用者資料沒有經過加密。此步驟可由資料驗證碼及旗標產生器380、DMA控制器430或處理單元510完成。
步驟S790:將記憶體中的使用者資料、E2E DPP及繞道旗標寫入NAND閃存裝置中主動區塊的空頁面。處理單元310或510可驅動閃存介面控制器250完成寫入操作。
參考圖8所示的資料讀取方法,由閃存控制器200、400或500實施,並且其中的每一個步驟由閃存控制器200、400或500的一或多個元件完成。各個步驟分述如下:步驟S810:從主機端接收到主機讀命令。處理單元310或510可解讀經由主橋控制器230收到的命令而得主機讀命令。
步驟S820:從NAND閃存裝置讀取繞道旗標,此繞道旗標指出主機讀命令欲讀取的使用者資料是否經過加密,並且儲存於原先配置給E2E DPP的位元中沒用到的剩餘位元。處理單元310或510可驅動快閃介面控制器250完成對NAND閃存裝置150的讀取操作。
步驟S830:判斷是否啟動解密功能,是則執行步驟S850;否則執行步驟S870。使用者資料及旗標檢查器390可依據繞道旗標完成此判斷。
步驟S850:將閃存控制器中的元件組態為解密路徑。加解密控制器 340或470可通過發出訊號BP2’給多工器370來完成組態。
步驟S870:將閃存控制器中的元件組態為繞道路徑。加解密控制器340或470可通過發出訊號BP2給多工器370來完成組態。
步驟S880:從NAND閃存裝置讀取使用者資料。處理單元310或510可驅動快閃介面控制器250完成對NAND閃存裝置150的讀取操作。
步驟S890:輸出原始的或解密後的使用者資料給主裝置。處理單元310可驅動主橋控制器230完成此操作,或者,處理單元510可驅動DMA控制器430完成此操作。
處理單元210、310或510執行的方法步驟,可用一或多個功能模塊組成的電腦程式產品來實現。這些功能模塊存儲於非揮發性儲存裝置,並且可被處理單元210、310或510於特定時間點載入並執行。 所屬技術領域具有通常知識者可將本發明實施例的方法中的特定步驟撰寫成電腦程式,為求簡潔不再加以描述。依據本發明實施例方法實施的電腦程式,可儲存於適當的電腦可讀取資料載具,例如DVD、CD-ROM、USB碟、硬碟,亦可置於可通過網路(例如,網際網路,或其他適當載具)存取的網路伺服器。
雖然圖1至圖5中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然圖7及圖8的流程圖採用指定的順序來執行,但是在不違反發明精神,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方 式解釋來包含所有顯而易見的修改與相似設置。
110:主機端
135:記憶體
150:NAND閃存裝置
200:閃存控制器
220:加解密引擎
230:主橋控制器
250:快閃介面控制器
310:處理單元
340:加解密控制器
360、370:多工器
380:資料驗證碼及旗標產生器
390:使用者資料及旗標檢查器

Claims (17)

  1. 一種使用者資料的加解密裝置,包含:一記憶體;一繞道旗標寫入電路,耦接該記憶體,寫入一繞道旗標於該記憶體中原先配置來儲存一端對端資料路徑保護資訊的空間中的一剩餘位元,該繞道旗標指出一使用者資料是否經過加密;一加解密控制器,耦接一閃存裝置;以及一快閃介面控制器,耦接該閃存裝置及該記憶體,從該記憶體讀取該使用者資料、該端對端資料路徑保護資訊及該繞道旗標並寫入至該閃存裝置,使得該加解密控制器能夠在該使用者資料的一資料讀取操作中依據該繞道旗標組態出讓該使用者資料經由一加解密引擎進行解密或不經由該加解密引擎的一路徑。
  2. 如請求項1所述的使用者資料的加解密裝置,其中,該端對端資料路徑保護資訊用來檢查讀取的資料是否存在錯誤位元。
  3. 如請求項1所述的使用者資料的加解密裝置,其中,該繞道旗標寫入電路包含:一驗證碼產生器,依據該使用者資料產生該端對端資料路徑保護資訊,並且儲存該端對端資料路徑保護資訊至該記憶體中原先配置的空間;以及一多工器,依據一訊號輸出”1”或”0”至該記憶體中的該剩餘位元。
  4. 如請求項3所述的使用者資料的加解密裝置,其中,該驗證碼產生器為15位元的循環冗餘校驗編碼器。
  5. 如請求項1所述的使用者資料的加解密裝置,其中,該繞道旗標寫入電路為一直接記憶體存取控制器,用於從該使用者資料的加解密裝置外的一動態隨機存取記憶體讀取該使用者資料,並且依據訊號輸出”1”或”0”至該記憶體中的該剩餘位元。
  6. 如請求項1所述的使用者資料的加解密裝置,其中,該繞道旗標寫入電路為一處理單元,依據一寄存器的設定或一主機寫命令攜帶的資訊寫入”1”或”0”至該記憶體中的該剩餘位元。
  7. 如請求項1至6中任一項所述的使用者資料的加解密裝置,包含:一使用者資料及旗標檢查器,耦接該記憶體,其中,該快閃介面控制器從該閃存裝置讀取該使用者資料及該繞道旗標並儲存至該記憶體,該使用者資料及旗標檢查器從該記憶體讀取該繞道旗標並輸出給該加解密控制器,以及該加解密控制器依據該繞道旗標組態出讓該使用者資料通過的一解密路徑或一繞道路徑,其中,該解密路徑上包含該加解密引擎,該繞道路徑上不包含該加解密引擎,以及該加解密引擎使用一密鑰將該使用者資料解密。
  8. 一種使用者資料的加解密裝置,包含:一快閃介面控制器,耦接一閃存裝置,從該閃存裝置讀取一使用者資料及一繞道旗標並儲存至一記憶體,該繞道旗標儲存於該閃存裝置中原先配置來儲存一端對端資料路徑保護資訊的空間中的一剩餘位元,並指出該使用者資料是否經過加密;一使用者資料及旗標檢查器,耦接該快閃介面控制器,輸出通過該快閃介面控制器接收到的該繞道旗標;以及一加解密控制器,耦接該使用者資料及旗標檢查器,接收該繞道旗標,依據該繞道旗標組態出讓該使用者資料通過的一解密路徑或一繞道路徑,其中,該解密路徑上包含一加解密引擎,該繞道路徑上不包含該加解密引擎,以及該加解密引擎使用一密鑰將該使用者資料解密。
  9. 如請求項8所述的使用者資料的加解密裝置,包含:一主橋控制器,耦接該解密路徑或該繞道路徑,輸出該使用者資料或該解密後使用者資料給一主機端。
  10. 如請求項8所述的使用者資料的加解密裝置,包含:一直接記憶體存取控制器,耦接該解密路徑或該繞道路徑,儲存該使用者資料或該解密後使用者資料至該使用者資料的加解密裝置外的一動態隨機存取記憶體,使得一主機端能夠從該動態隨機存取記憶體取得該使用者資料或該解密後使用者資料。
  11. 一種使用者資料的加解密方法,包含:寫入一使用者資料、一端對端資料路徑保護資訊及一繞道旗標至一閃存裝置,其中,該繞道旗標儲存於該閃存裝置中原先配置來儲存一端對端資料路徑保護資訊的空間中的一剩餘位元,該繞道旗標指出一使用者資料是否經過加密,使得一加解密控制器能夠在該使用者資料的一資料讀取操作中依據該繞道旗標組態出讓該使用者資料經由一加解密引擎進行解密或不經由該加解密引擎的一路徑。
  12. 如請求項11所述的使用者資料的加解密方法,其中,該端對端資料路徑保護資訊用來檢查讀取的資料是否存在錯誤位元。
  13. 如請求項11所述的使用者資料的加解密方法,包含:依據一寄存器的設定或一主機寫命令攜帶的資訊寫入”1”或”0”至該閃存裝置中的該剩餘位元。
  14. 如請求項11所述的使用者資料的加解密方法,包含:依據一寄存器的設定或一主機寫命令攜帶的資訊組態出一加密路徑或一繞道路徑,其中,該加密路徑上包含該加解密引擎,該繞道路徑上不包含該加解密引擎,以及該加解密引擎使用一密鑰將該使用者資料加密。
  15. 如請求項11至14中任一項所述的使用者資料的加解密方法,包含:從該閃存裝置讀取該繞道旗標;依據該繞道旗標組態出讓該使用者資料通過的一解密路徑或一繞道路徑,其中,該解密路徑上包含該加解密引擎,該繞道路徑上 不包含該加解密引擎,以及該加解密引擎使用一密鑰將該使用者資料解密;以及輸出該使用者資料或該解密後的使用者資料給一主機端。
  16. 一種使用者資料的加解密方法,包含:從一閃存裝置讀取一繞道旗標,其中,該繞道旗標儲存於該閃存裝置中原先配置來儲存一端對端資料路徑保護資訊的空間中的一剩餘位元,該繞道旗標指出一使用者資料是否經過加密;依據該繞道旗標組態出讓該使用者資料通過的一解密路徑或一繞道路徑,其中,該解密路徑上包含一加解密引擎,該繞道路徑上不包含該加解密引擎,以及該加解密引擎使用一密鑰將該使用者資料解密;以及輸出該使用者資料或該解密後的使用者資料給一主機端。
  17. 如請求項16所述的使用者資料的加解密方法,其中,該端對端資料路徑保護資訊為15位元的循環冗餘校驗碼,以及該剩餘位元的長度為1。
TW108125643A 2019-06-20 2019-07-19 使用者資料的加解密方法及裝置 TWI722496B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962864038P 2019-06-20 2019-06-20
US62/864,038 2019-06-20

Publications (2)

Publication Number Publication Date
TW202101236A TW202101236A (zh) 2021-01-01
TWI722496B true TWI722496B (zh) 2021-03-21

Family

ID=73796696

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108125643A TWI722496B (zh) 2019-06-20 2019-07-19 使用者資料的加解密方法及裝置

Country Status (3)

Country Link
US (1) US11651707B2 (zh)
CN (1) CN112115076A (zh)
TW (1) TWI722496B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11520709B2 (en) * 2020-01-15 2022-12-06 International Business Machines Corporation Memory based encryption using an encryption key based on a physical address
US11763008B2 (en) * 2020-01-15 2023-09-19 International Business Machines Corporation Encrypting data using an encryption path and a bypass path
US11720715B2 (en) * 2021-03-21 2023-08-08 Western Digital Technologies, Inc. Secure data storage device and method of encryption

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103258172A (zh) * 2012-06-13 2013-08-21 福建睿矽微电子科技有限公司 一种芯片片外Nor Flash总线接口硬件加密装置
TWI411932B (zh) * 2004-12-21 2013-10-11 Sandisk Corp 用於加密/解密儲存裝置中之非揮發性記憶體中之資料之方法及處理資料之方法
TWI430084B (zh) * 2007-06-28 2014-03-11 Ibm 記憶體系統中錯誤校正與偵測之系統及方法
US20140075208A1 (en) * 2009-03-04 2014-03-13 Apple Inc. Data whitening for writing and reading data to and from a non-volatile memory
TWI659329B (zh) * 2017-11-01 2019-05-11 瑞昱半導體股份有限公司 資料存取裝置及方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7586914B2 (en) * 2001-09-27 2009-09-08 Broadcom Corporation Apparatus and method for hardware creation of a DOCSIS header
US7380120B1 (en) 2001-12-12 2008-05-27 Guardian Data Storage, Llc Secured data format for access control
JP3968056B2 (ja) * 2003-06-10 2007-08-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 形状作成装置、コンピュータ装置を形状作成装置として動作させるための制御方法、該制御方法をコンピュータ装置に対して実行させるためのコンピュータ実行可能なプログラム
US7822207B2 (en) * 2006-12-22 2010-10-26 Atmel Rousset S.A.S. Key protection mechanism
US20090320012A1 (en) * 2008-06-04 2009-12-24 Mediatek Inc. Secure booting for updating firmware over the air
US20110019814A1 (en) * 2009-07-22 2011-01-27 Joseph Roy Hasting Variable sized hash output generation using a single hash and mixing function
US9069703B2 (en) * 2011-04-29 2015-06-30 Seagate Technology Llc Encrypted-transport solid-state disk controller
TWI516921B (zh) * 2013-10-02 2016-01-11 群聯電子股份有限公司 資料處理方法、記憶體儲存裝置與記憶體控制電路單元
WO2016010625A1 (en) * 2014-07-16 2016-01-21 Bae Systems Information And Electronic Systems Integration, Inc. Flash memory device for storing sensitive information and other data
CN105868642A (zh) * 2015-09-28 2016-08-17 深圳创久科技有限公司 数据加密的闪存控制器以及写入或读取数据加密方法
CN105243344B (zh) * 2015-11-02 2020-09-01 上海兆芯集成电路有限公司 具有硬盘加密功能的芯片组以及主机控制器
CN105354503B (zh) * 2015-11-02 2020-11-17 上海兆芯集成电路有限公司 储存装置数据加解密方法
US10235176B2 (en) * 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10382136B2 (en) * 2017-04-26 2019-08-13 Futurewei Technologies, Inc. Envelope header design in passive optical networks
CN108898033B (zh) * 2018-06-15 2020-12-08 中国电子科技集团公司第五十二研究所 一种基于fpga的数据加解密系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI411932B (zh) * 2004-12-21 2013-10-11 Sandisk Corp 用於加密/解密儲存裝置中之非揮發性記憶體中之資料之方法及處理資料之方法
TWI430084B (zh) * 2007-06-28 2014-03-11 Ibm 記憶體系統中錯誤校正與偵測之系統及方法
US20140075208A1 (en) * 2009-03-04 2014-03-13 Apple Inc. Data whitening for writing and reading data to and from a non-volatile memory
CN103258172A (zh) * 2012-06-13 2013-08-21 福建睿矽微电子科技有限公司 一种芯片片外Nor Flash总线接口硬件加密装置
TWI659329B (zh) * 2017-11-01 2019-05-11 瑞昱半導體股份有限公司 資料存取裝置及方法

Also Published As

Publication number Publication date
TW202101236A (zh) 2021-01-01
US20200402426A1 (en) 2020-12-24
CN112115076A (zh) 2020-12-22
US11651707B2 (en) 2023-05-16

Similar Documents

Publication Publication Date Title
US10127166B2 (en) Data storage controller with multiple pipelines
US10503934B2 (en) Secure subsystem
TWI475385B (zh) 程式化記憶胞與資料讀取方法、記憶體控制器與儲存裝置
TWI479359B (zh) 指令執行方法、記憶體控制器與記憶體儲存裝置
TWI722496B (zh) 使用者資料的加解密方法及裝置
TWI496161B (zh) 記憶體識別碼產生方法、管理方法、控制器與儲存系統
TWI688965B (zh) 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置
JP6460940B2 (ja) 記憶装置およびデータ退避方法
US20130080787A1 (en) Memory storage apparatus, memory controller and password verification method
KR20140044070A (ko) 버퍼 메모리 장치를 포함하는 데이터 저장 장치
KR20150015621A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20200128825A (ko) 분리된 rpmb 기능을 가지는 스토리지 시스템 및 그 구동 방법
US11893248B2 (en) Secure metadata protection
KR102547251B1 (ko) 비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법
US12032492B2 (en) Method of operating storage device and method of operating storage system using the same
TWI781464B (zh) 用於資料之加密及解密的運算裝置
US20230128638A1 (en) Method of operating storage device and method of operating storage system using the same
US20240103726A1 (en) NVMe Copy Command Acceleration
KR102435910B1 (ko) 스토리지 장치 및 그것의 동작 방법
EP4187398A1 (en) Controller controlling non-volatile memory device, storage device including the same, and operating method thereof
CN112416240B (zh) 数据写入方法、存储器控制电路单元及存储器存储装置
CN117093137A (zh) 嵌入式存储装置、具有其的主机系统及其操作方法
CN117850663A (zh) 一种管理数据的方法及相关产品