CN112115076A - 使用者数据的加解密装置及方法 - Google Patents

使用者数据的加解密装置及方法 Download PDF

Info

Publication number
CN112115076A
CN112115076A CN201910655617.XA CN201910655617A CN112115076A CN 112115076 A CN112115076 A CN 112115076A CN 201910655617 A CN201910655617 A CN 201910655617A CN 112115076 A CN112115076 A CN 112115076A
Authority
CN
China
Prior art keywords
user data
encryption
decryption
path
bypass
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
CN201910655617.XA
Other languages
English (en)
Inventor
李安邦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Motion Inc
Silicon Motion Technology Corp
Original Assignee
Silicon Motion Inc
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 Silicon Motion Inc filed Critical Silicon Motion Inc
Priority to US16/704,688 priority Critical patent/US11651707B2/en
Publication of CN112115076A publication Critical patent/CN112115076A/zh
Pending legal-status Critical Current

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
    • 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
    • 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
    • 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
    • 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
    • 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)
  • 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)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提出一种用户数据的加解密装置,包含:存储器、绕道标志写入电路及闪存接口控制器。绕道标志写入电路写入绕道标志于存储器中原先配置来存储端对端数据路径保护信息的空间中的剩余比特,所述绕道标志指出用户数据是否经过加密。闪存接口控制器从存储器读取所述用户数据、端对端数据路径保护信息及绕道标志并写入至闪存装置。

Description

使用者数据的加解密装置及方法
技术领域
本发明涉及存储装置,尤指一种使用者数据的加解密装置及方法。
背景技术
闪存通常分为NOR闪存与NAND闪存。NOR闪存为随机存取装置,主装置(Host)可在地址引脚上提供任何存取NOR闪存的地址,并及时地从NOR闪存的数据引脚上获得存储在该地址上的数据。相反地,NAND闪存并非随机存取,而是串行存取。NAND闪存无法像NOR闪存一样,可以存取任何随机地址,主装置反而需要写入串行的字节(Bytes)的值到NAND闪存中,用以定义请求命令(Command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(闪存中写入操作的最小数据块)或一个区块(闪存中抹除操作的最小数据块)。
如果对用户数据有安全性的考虑,闪存存储装置会在写入存储单元前使用加密算法来保护数据的安全性。通常,为了数据写入或读取的效率,加密或解密算法会使用硬件实现,并且提供绕道路径(bypass path),让主装置提供的用户数据不经过加密硬件而直接写入存储单元,或者将读出的数据不经过解密硬件而直接返回给主装置。然而,闪存存储装置中加密及绕道路径的安排及配置,会影响***效能。因此,本发明提出一种用户数据的加解密方法及装置,有效率地安排及配置加密及绕道路径。
发明内容
有鉴于此,如何减轻或消除上述相关领域的缺失,实为有待解决的问题。
本发明提出一种用户数据的加解密装置,包含:存储器、绕道标志写入电路及闪存接口控制器。绕道标志写入电路写入绕道标志于存储器中原先配置来存储端对端数据路径保护信息的空间中的剩余比特。闪存接口控制器从存储器读取所述用户数据、端对端数据路径保护信息及绕道标志并写入至闪存装置。
本发明另提出一种用户数据的加解密装置,包含:闪存接口控制器;用户数据及标志检查器;以及加解密控制器。闪存接口控制器从闪存装置读取用户数据及绕道标志并存储至存储器,此绕道标志存储于闪存装置中原先配置来存储端对端数据路径保护信息的空间中的剩余比特。用户数据及标志检查器输出通过闪存接口控制器接收到的绕道标志。加解密控制器接收绕道标志,依据绕道标志配置出让用户数据通过的解密路径或绕道路径。
本发明提出一种用户数据的加解密方法,包含:写入用户数据、端对端数据路径保护信息及绕道标志至闪存装置,其中,绕道标志存储于闪存装置中原先配置来存储端对端数据路径保护信息的空间中的剩余比特。
本发明另提出一种用户数据的加解密方法,包含:从闪存装置读取绕道标志,其中,绕道标志存储于闪存装置中原先配置来存储端对端数据路径保护信息的空间中的剩余比特;依据绕道标志配置出让用户数据通过的解密路径或绕道路径;以及输出用户数据或解密后的用户数据给主机端。
上述实施例的优点之一,通过锁定队列设置、交换队列的热区设置,以上步骤的执行,可用于避免消耗处理单元的运算能力及存储器接口的带宽,提升***的整体效能。
本发明的其他优点将配合以下的说明和附图进行更详细的解说。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为依据一些实施方式的***架构示意图。
图2为依据本发明实施例的***架构示意图。
图3依据本发明实施例的数据验证码及标志产生器的框图。
图4及图5为依据本发明实施例的***架构示意图。
图6为依据本发明实施例的用户数据及端对端数据路径保护信息的数据组织示意图。
图7为依据本发明实施例的数据写入的方法流程图。
图8为依据本发明实施例的数据读取的方法流程图。
符号说明:
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。***架构100包含主机端(Host-side)110、闪存控制器(FlashController)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 advancedtechnology attachment,SATA)、快速外设组件互联(peripheral componentinterconnect express,PCI-E)或其他接口。处理单元210可通过闪存接口控制器(FlashInterface,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及验证码产生器(Protection-data Generator)280。另一方面,AES引擎220从存储器135读取加密过的用户数据,并使用相同密钥解密后经由复用器280传送给主桥控制器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)的E2EDPP(如CRC码)。存储器135可为动态随机存取存储器(Dynamic Random Access Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM),作为用户数据及E2EDPP的数据缓冲区(Data Buffer)。闪存接口控制器250耦接于存储器135及NAND闪存装置150之间,从存储器135读取用户数据及E2E DPP并将其写入NAND闪存装置150的实体区块。
闪存接口控制器250从NAND闪存装置150的实体区块读取用户数据及E2E DPP并将其写入存储器135的指定地址。用户数据检查器(User-data Checker)290耦接于处理单元210及存储器135之间,从存储器135读取用户数据(可为原始数据或加密后数据)及E2EDPP,并据以判断读取的数据是否正确。用户数据检查器290可包含循环冗余校验译码器(CRC Decoder)、汉明码译码器(Hamming Code Decoder)或其他类似译码器的电路。当发现读取数据中存在错误时,用户数据检查器290发出中断信号INT给处理单元210,使得处理单元210开始执行错误回复程序。
为了让写入操作有效率,不同主机写命令的于用户数据及E2E DPP会搜集起来写入一个主动区块(Active Block),使得主动区块中部分区段的用户数据经过加密,而其他区段的用户数据没有经过加密。为了记录每个区段的用户数据是否经过加密的信息,于一些实施方式中,处理单元210可于存储器135中维护相应于主动区块的绕道表(BypassTable)。绕道表可使用比特图(bitmap)实施,包含主动区块中区段总数的比特,每个比特纪录一个相应区段的用户数据是否经过加密的信息。例如,主动区块中的区段总数为32,则绕道表为32比特的比特图。然而,绕道表会占用存储器135中的部分空间,并且在NAND闪存装置150中的主动区块写满时,闪存接口控制器250需要花费时间及带宽将对应的绕道表写入NAND闪存装置150中的指定地址。此外,为完成每个主机读操作,闪存接口控制器250还需要花费时间及带宽先读取相应的绕道表,然后,依据绕道表的信息配置闪存控制器130为解密路径或绕道路径。
参考图6,为了节省存储器135及NAND闪存装置150的空间,以及用户数据的写入及读取时间,本发明实施例提出使用存储器135及NAND闪存装置150中原先配置来存储E2EDPP的空间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 MemoryAccess,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中原先配置来存储E2EDPP的空间中的剩余比特,表示相应用户数据经过加密。
闪存控制器500中其他未说明组件的功能、电路及详细操作,或者拥有相同命名的组件的一般性功能、电路及操作,可参考图1及图2中对应组件的说明,不再赘述以求简明。
由于数据验证码及标志产生器380、DMA控制器430或处理单元510都具有产生及写入绕道标志的功能,因此这些组件也可称为绕道标志写入电路。
处理单元210、310或510可使用多种方式实施,如使用通用硬件(例如,单处理器、具并行处理能力的多处理器,或其他具运算能力的处理器),并且在执行固件或软件指令(Instructions)时,提供之前描述的功能。
参考图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的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,所属技术领域的技术人员可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,所属技术领域的技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或并行地执行更多步骤,本发明也不因此而局限。
虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用于限缩本发明。相反地,此发明涵盖了所属技术领域中的技术人员显而易见的修改与相似设置。所以,权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。

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至9中任一项所述的用户数据的加解密装置,其特征在于,包含:
直接存储器访问控制器,耦接所述解密路径或所述绕道路径,存储所述用户数据或所述解密后用户数据至所述用户数据的加解密装置外的动态随机存取存储器,使得主机端能够从所述动态随机存取存储器取得所述用户数据或所述解密后用户数据。
11.一种用户数据的加解密方法,包含:
写入用户数据、端对端数据路径保护信息及绕道标志至闪存装置,其中,所述绕道标志存储于所述闪存装置中原先配置来存储端对端数据路径保护信息的空间中的剩余比特,所述绕道标志指出用户数据是否经过加密。
12.如权利要求11所述的用户数据的加解密方法,其特征在于,所述端对端数据路径保护信息用于检查读取的数据是否存在错误比特。
13.如权利要求11所述的用户数据的加解密方法,其特征在于,包含:
依据寄存器的设定或主机写命令携带的信息写入“1”或“0”至所述闪存装置中的所述剩余比特。
14.如权利要求11所述的用户数据的加解密方法,其特征在于,包含:
依据寄存器的设定或主机写命令携带的信息配置出加密路径或绕道路径,其中,所述加密路径上包含加解密引擎,所述绕道路径上不包含所述加解密引擎,以及所述加解密引擎使用密钥将所述用户数据加密。
15.如权利要求11至14中任一项所述的用户数据的加解密方法,其特征在于,包含:
从所述闪存装置读取所述绕道标志;
依据所述绕道标志配置出让所述用户数据通过的解密路径或绕道路径,其中,所述解密路径上包含加解密引擎,所述绕道路径上不包含所述加解密引擎,以及所述加解密引擎使用密钥将所述用户数据解密;以及
输出所述用户数据或所述解密后的用户数据给主机端。
16.一种用户数据的加解密方法,包含:
从闪存装置读取绕道标志,其中,所述绕道标志存储于所述闪存装置中原先配置来存储端对端数据路径保护信息的空间中的剩余比特,所述绕道标志指出用户数据是否经过加密;
依据所述绕道标志配置出让所述用户数据通过的解密路径或绕道路径,其中,所述解密路径上包含加解密引擎,所述绕道路径上不包含所述加解密引擎,以及所述加解密引擎使用密钥将所述用户数据解密;以及
输出所述用户数据或所述解密后的用户数据给主机端。
17.如权利要求16所述的用户数据的加解密方法,其特征在于,所述端对端数据路径保护信息为15比特的循环冗余校验码,以及所述剩余比特的长度为1。
CN201910655617.XA 2019-06-20 2019-07-19 使用者数据的加解密装置及方法 Pending CN112115076A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/704,688 US11651707B2 (en) 2019-06-20 2019-12-05 Method and apparatus for encrypting and decrypting user data

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 (1)

Publication Number Publication Date
CN112115076A true CN112115076A (zh) 2020-12-22

Family

ID=73796696

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910655617.XA Pending CN112115076A (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
US11763008B2 (en) * 2020-01-15 2023-09-19 International Business Machines Corporation Encrypting data using an encryption path and a bypass path
US11520709B2 (en) * 2020-01-15 2022-12-06 International Business Machines Corporation Memory based encryption using an encryption key based on a physical address
US11720715B2 (en) * 2021-03-21 2023-08-08 Western Digital Technologies, Inc. Secure data storage device and method of encryption

Family Cites Families (14)

* 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
US20060242429A1 (en) 2004-12-21 2006-10-26 Michael Holtzman In stream data encryption / decryption method
US7822207B2 (en) * 2006-12-22 2010-10-26 Atmel Rousset S.A.S. Key protection mechanism
US8041990B2 (en) * 2007-06-28 2011-10-18 International Business Machines Corporation System and method for error correction and detection in a memory system
US20090320012A1 (en) * 2008-06-04 2009-12-24 Mediatek Inc. Secure booting for updating firmware over the air
US8589700B2 (en) * 2009-03-04 2013-11-19 Apple Inc. Data whitening for writing and reading data to and from a non-volatile memory
US20110019814A1 (en) * 2009-07-22 2011-01-27 Joseph Roy Hasting Variable sized hash output generation using a single hash and mixing function
CN103258172A (zh) * 2012-06-13 2013-08-21 福建睿矽微电子科技有限公司 一种芯片片外Nor Flash总线接口硬件加密装置
TWI516921B (zh) * 2013-10-02 2016-01-11 群聯電子股份有限公司 資料處理方法、記憶體儲存裝置與記憶體控制電路單元
JP6585153B2 (ja) * 2014-07-16 2019-10-02 ビーエイイー・システムズ・インフォメーション・アンド・エレクトロニック・システムズ・インテグレイション・インコーポレーテッド 重要なまたは機密扱いの技術情報および他のデータを記憶するためのフラッシュメモリを用いたデバイス
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
CN109753821B (zh) * 2017-11-01 2022-03-15 瑞昱半导体股份有限公司 数据存取装置及方法

Also Published As

Publication number Publication date
US11651707B2 (en) 2023-05-16
US20200402426A1 (en) 2020-12-24
TW202101236A (zh) 2021-01-01
TWI722496B (zh) 2021-03-21

Similar Documents

Publication Publication Date Title
JP6983313B2 (ja) 不揮発性メモリの書込みクレジットの管理
US10127166B2 (en) Data storage controller with multiple pipelines
KR101457451B1 (ko) 암호화된 전송 고체 상태 디스크 제어기
TWI475385B (zh) 程式化記憶胞與資料讀取方法、記憶體控制器與儲存裝置
TWI479359B (zh) 指令執行方法、記憶體控制器與記憶體儲存裝置
US9348693B2 (en) Data accessing method for flash memory module
KR102139179B1 (ko) 보안 서브시스템
US9189397B2 (en) Data storage device including buffer memory
US20080320209A1 (en) High Performance and Endurance Non-volatile Memory Based Storage Systems
US20130080787A1 (en) Memory storage apparatus, memory controller and password verification method
TWI722496B (zh) 使用者資料的加解密方法及裝置
KR20150015621A (ko) 데이터 저장 장치 및 그것의 동작 방법
US9058295B2 (en) Encrypt data of storage device
KR20200128825A (ko) 분리된 rpmb 기능을 가지는 스토리지 시스템 및 그 구동 방법
US20230128638A1 (en) Method of operating storage device and method of operating storage system using the same
CN113704145B (zh) 加密和解密物理地址信息的方法及装置
KR102547251B1 (ko) 비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법
US20240103726A1 (en) NVMe Copy Command Acceleration
US11893248B2 (en) Secure metadata protection
US20230141861A1 (en) Data storage devices using non-volatile memory devices and operating methods thereof
TWI821965B (zh) 編碼歷程資訊的存取方法及電腦程式產品及裝置
CN117093137A (zh) 嵌入式存储装置、具有其的主机***及其操作方法
KR20170089646A (ko) 반도체 메모리 장치 및 그것을 포함하는 데이터 저장 장치

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination