加密和解密物理地址信息的方法及装置与流程

文档序号:27611019发布日期:2021-11-27 00:27阅读:301来源:国知局
1.本发明涉及存储装置,尤指一种加密和解密物理地址信息的方法及装置。
背景技术
::2.闪存通常分为nor闪存与nand闪存。nor闪存为随机存取装置,中央处理器(host)可于地址引脚上提供任何存取nor闪存的地址,并及时地从nor闪存的数据引脚上获得存储于该地址上的数据。相反地,nand闪存并非随机存取,而是串行存取。nand闪存无法像nor闪存一样,可以存取任何随机地址,中央处理器反而需要写入串行的字节(bytes)的值到nand闪存中,用于定义请求命令(command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(闪存中写入操作的最小数据块)或一个区块(闪存中抹除操作的最小数据块)。3.为了提升闪存模块的数据写入及读取效能,装置端会以多个信道并行地执行数据写入及读取。为了达成并行处理的目的,一段连续性的数据会分散地存储到多个通道所连接的闪存单元,并使用逻辑物理对照表(logical-to-physical,l2pmappingtable)记录用户数据的逻辑地址(由主机端管理)与物理地址(由闪存控制器管理)间的对应关系。更进一步地,在新的规范中,闪存控制器能够将逻辑地址与物理地址间的对应关系整理成主机性能增强器项目(hostperformancebooster,hpbentries)的格式并提供给主机端。之后,主机端可从hpb项目中取出需要的物理地址,并且将物理地址携带在发送给装置端的hpb读取命令中,使得闪存控制器可直接从闪存模块的物理地址读取用户数据并回复给主机端,而不需要像以前一样得花费时间和运算资源从闪存模块读取逻辑物理对照表并进行逻辑物理地址转换。然而,hpb项目的物理地址都是以明码的方式存储,让不法人员可通过主机端窥探物理地址来知道装置端的内部数据管理方式,并且使用不正当手段来取得敏感数据(例如,系统或管理数据)。因此,本发明提出一种加密和解密物理地址信息的方法及装置,用于提升数据安全性。技术实现要素:4.有鉴于此,如何减轻或消除上述相关领域的缺陷,实为有待解决的问题。5.本发明涉及一种加密和解密物理地址信息的方法,由闪存控制器执行,包含:从主机端接收读取命令,请求获取相应于一段逻辑区块地址区间的多个物理区块地址;从闪存装置读取相应于逻辑区块地址区间的物理区块地址;将物理区块地址编排入多个项目;使用加密算法和加密参数加密每个项目的内容以获得加密后项目;以及传送加密后项目给主机端。6.本发明还涉及一种加密和解密物理地址信息的装置,包含:控制逻辑;主机接口;和处理单元。处理单元用于通过主机接口从主机端接收读取命令,请求获取相应于一段逻辑区块地址区间的多个物理区块地址;通过控制逻辑从闪存装置读取第一表,第一表包含相应于逻辑区块地址区间的多个第一物理区块地址;将第一物理区块地址编排入多个项目;使用加密算法和加密参数加密每个项目的内容以获得加密后项目;以及通过主机接口传送加密后项目给主机端。7.每个第一物理区块地址指出逻辑区块地址区间中的特定逻辑区块地址的用户数据实际存储在闪存装置中的哪里。8.上述实施例的优点之一,通过加密包含物理区块地址的项目能够防止不法人员通过主机端窥探物理地址来知道装置端的内部数据管理方式。9.本发明的其他优点将配合以下的说明和附图进行更详细的解说。附图说明10.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。11.图1和图2为依据本发明实施例的电子装置的系统架构图。12.图3为依据本发明实施例的闪存装置的示意图。13.图4为依据本发明实施例的t1表和t2表之间的关联示意图。14.图5为依据本发明实施例的t1表和物理页面之间的关联示意图。15.图6为依据本发明实施例的主机性能增强器(hostperformancebooster,hpb)缓存的建立与运用示意图。16.图7为依据本发明实施例的应用在主机控制模式的操作顺序图。17.图8为依据本发明实施例的应用在装置控制模式的操作顺序图。18.图9为依据本发明实施例的产生hpb项目的方法流程图。19.图10为依据本发明实施例的存储器空间配置的示意图。20.图11为依据本发明实施例的hpb数据读取的操作顺序图。21.图12为依据本发明实施例的数据读取的方法流程图。22.其中,附图中符号的简单说明如下:23.10、20:电子装置;110:主机端;130、230:闪存控制器;131:主机接口;132:总线;134:处理单元;135:只读存储器;136:随机存取存储器;138:编码译码器;139:控制逻辑;150:闪存装置;151:接口;153#0~153#15:nand闪存单元;ch#0~ch#3:通道;ce#0~ce#3:启动信号;310#1:物理块;410:t2表;430#0~430#15:t1表;510:物理页面;530:物理地址信息;530-0:物理块编号;530-1:物理页面编号;600:hpb缓存;711~775、811~837、1110~1150:操作;s910~s960、s1210~s1270:方法步骤;1010~1040:存储器空间。具体实施方式24.以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。25.必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、作业处理、组件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。26.本发明中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。27.必须了解的是,当组件描述为“连接”或“耦接”至另一组件时,可以是直接连结、或耦接至其他组件,可能出现中间组件。相反地,当组件描述为“直接连接”或“直接耦接”至另一组件时,其中不存在任何中间组件。用于描述组件之间关系的其他词语也可以类似方式解读,例如“介于”相对于“直接介于”,或者“邻接”相对于“直接邻接”等等。28.参考图1。电子装置10包含主机装置(又可称主机端)110、闪存控制器130及闪存装置150,并且闪存控制器130及闪存装置150可合称为装置端(deviceside)。电子装置10可实施于个人计算机、笔记本计算机(laptoppc)、平板计算机、移动电话、数字相机、数字摄影机等电子产品之中。主机装置110与闪存控制器130的主机接口(hostinterface)131可以通用闪存记忆存储(universalflashstorage,ufs)等通信协议彼此通信。虽然以下实施例描述了ufs规范的主机性能增强器(hostperformancebooster,hpb)的功能,但所属
技术领域
:人员可将本发明应用到其他规范的类似功能中,本发明并不因此受限。闪存控制器130的控制逻辑139与闪存装置150可以双倍数据率(doubledatarate,ddr)通信协议彼此通信,例如,开放nand闪存接口(opennandflashinterface,onfi)、双倍数据率开关(ddrtoggle)或其他通信协议。闪存控制器130包含处理单元134,可使用多种方式实施,如使用通用硬件(例如,微控制单元、中央处理器、具有并行处理能力的多处理器、图形处理器或其他具有运算能力的处理器),并且在执行软件以及/或固件指令时,提供之后描述的功能。处理单元134通过主机接口131接收hpb命令,例如hpb读取命令(hpbreadcommand)、hpb读取缓冲器命令(hpbreadbuffercommand)、hpb写入缓冲器命令(hpbwritebuffercommand)等,并执行这些命令。闪存控制器130包含随机存取存储器(randomaccessmemory,ram)136,可实施为动态随机存取存储器(dynamicrandomaccessmemory,dram)、静态随机存取存储器(staticrandomaccessmemory,sram)或上述两者的结合,用于配置空间作为数据缓冲区。随机存取存储器136另可存储执行过程中需要的数据,例如,变量、数据表等。闪存控制器130包含只读存储器(readonlymemory,rom)135,用于存储开机时需要执行的程序代码。控制逻辑139包含nand闪存控制器(nandflashcontroller,nfc),提供存取闪存装置150时需要的功能,例如命令串行器(commandsequencer)、低密度奇偶校验(lowdensityparitycheck,ldpc)等。29.闪存控制器130包含编码译码器(coder-decoder,codec)138,为一种专用硬件,包含用于加密原始hpb项目的编码逻辑;以及将加密内容解密的译码逻辑,用于还原原始的hpb项目。以下段落将详述编码译码器138的结构、功能以及与其他组件间互动的细节。30.闪存控制器130中可配置总线架构(busarchitecture)132,用于让组件之间彼此耦接以传递数据、地址、控制信号等,这些组件包含主机接口131、处理单元134、ram136、编码译码器138、控制逻辑139等。在一些实施例中,主机接口131、处理单元134、ram136、编码译码器138与控制逻辑139可通过单一总线彼此耦接。在另一些实施例中,闪存控制器130中可配置高速总线,用于让处理单元134、编码译码器138与ram136彼此耦接,并且配置低速总线,用于让处理单元134、编码译码器138、主机接口131与控制逻辑139彼此耦接。总线包含并行的物理线,连接闪存控制器130中两个以上的组件。31.闪存装置150提供大量的存储空间,通常是数百个千兆字节(gigabytes,gb),甚至是数个兆兆字节(terabytes,tb),用于存储大量的用户数据,例如高分辨率图片、影片等。闪存装置150中包含控制电路以及存储器数组,存储器数组中的存储单元可包含单层式单元(singlelevelcells,slcs)、多层式单元(multiplelevelcells,mlcs)、三层式单元(triplelevelcells,tlcs)、四层式单元(quad-levelcells,qlcs)或上述的任意组合。处理单元134通过控制逻辑139写入用户数据到闪存装置150中的指定地址(目的地址),以及从闪存装置150中的指定地址(来源地址)读取用户数据和l2p对照表中的指定部分。控制逻辑139使用多个电子信号来协调闪存控制器130与闪存装置150间的数据与命令传递,包含数据线(dataline)、时钟信号(clocksignal)与控制信号(controlsignal)。数据线可用于传递命令、地址、读出及写入的数据;控制信号线可用于传递芯片启动(chipenable,ce)、地址提取启动(addresslatchenable,ale)、命令提取启动(commandlatchenable,cle)、写入启动(writeenable,we)等控制信号。32.在另一些实施例中,参考图2,电子装置20包含修改过的闪存控制器230,其中不包含如图1所示的编码译码器138。在闪存控制器230中,编码译码器138的功能可以软件或固件指令代替,并且在处理单元134加载并执行这些指令时完成加密原始的hpb项目,以及解密被加密过的内容,用于还原原始的hpb项目。换句话说,图1包含了使用硬件来加密和解密的解决方案,而图2包含了使用软件来加密和解密的解决方案。33.参考图3,闪存装置150中的接口151可包含四个输出输入通道(i/ochannels,以下简称通道)ch#0至ch#3,每一个通道连接四个nand闪存单元,例如,信道ch#0连接nand闪存单元153#0、153#4、153#8及153#12。每个nand闪存单元可封装为独立的芯片(die)。控制逻辑139可通过接口151发出启动信号ce#0至ce#3中的一个来启动nand闪存单元153#0至153#3、153#4至153#7、153#8至153#11、或153#12至153#15,接着以并行的方式从启动的nand闪存单元读取用户数据,或者写入用户数据至启动的nand闪存单元。34.由于一段连续性的数据(也就是一段连续逻辑地址的数据)被分散地存储到多个通道所连接的闪存单元,闪存控制器130使用逻辑物理对照表(logical-to-physical,l2pmappingtable)记录用户数据的逻辑地址(由主机装置110管理)与物理地址(由闪存控制器130管理)间的对应关系。l2p对照表也可称为主机闪存对照表(host-to-flash,h2fmappingtable)。h2f对照表包含多笔记录,依逻辑地址的顺序存储每个逻辑地址的用户数据实际存储在哪个物理地址的信息。然而,由于ram136无法提供足够空间存储整个h2f对照表以供处理单元134将来于数据读取操作时快速查找,h2f对照表可切成多个第一表(table1,又可称为t1表),并存储在非易失性的闪存装置150,使得将来于数据读取操作时只要从闪存装置150读取相应的t1表至ram136。参考图4,整个h2f对照表可切成t1表430#0~430#15。处理单元134还维护第二表(table2,又可称为t2表)410,包含多个记录,依逻辑地址的顺序存储每段逻辑地址区段关联的t1表的物理地址信息。例如,第0个至第4095个逻辑区块地址(logicalblockaddresses,lbas)的关联t1表430#0存储在特定逻辑单元号(logicalunitnumber,lun)的特定物理块中(字母“z”可代表lun和物理块的编号)的第0个物理页面,第4096个至第8191个lba的关联t1表430#1存储在特定lun的特定物理块中的第1个物理页面,依此类推。虽然图4中只包含16个t1表,但是所属
技术领域
:的技术人员可根据闪存装置150的容量,设置更多的t1表,本发明并不因此局限。35.每个t1表所需的空间可以为4kb、8kb、16kb等。每个t1表依照lba的顺序存储相应于每一个lba的物理地址信息,而每一个lba对应到一个固定大小的物理存储空间,例如4kb。参考图5,举例来说,t1表430#0依序存储从lba#0至lba#4095的物理地址信息。物理地址信息530可以四个字节表示:前两个字节530-0记录物理块编号(physicalblocknumber);后两个字节530-1记录物理页面编号(physicalpagenumber)。举例来说,相应于lba#2的物理地址信息530可指向物理块310#1中的物理页面510。字节530-0记录物理块310#1的编号,字节530-1记录物理页面510的编号。36.参考图6,在hpb规范中,主机端110在其系统存储器(systemmemory)中配置空间作为hpb缓存600,用于暂存由装置端维护的h2f对照表的信息。hpb缓存600存储多个从装置端接收的hpb项目(hpbentries),每个hpb项目记录相应于一个lba的物理地址的信息。接着,主机端110可发出携带hpb项目的hpb读取命令给装置端,用于取得指定lba的用户数据。装置端可直接根据hpb项目中的信息来驱动控制逻辑139从闪存装置150读取指定lba的用户数据,而不需要像以前一样得花费时间和运算资源从闪存装置150读取h2f对照表并进行逻辑物理地址转换后才能从闪存装置150读取指定lba的用户数据。针对hpb缓存600的建立和运用,可分为三个阶段:37.阶段i(hbp初始化):主机端110向装置端(详细来说是闪存控制器130)请求取得其装置能力并且配置hbp功能,包含hpb模式(mode)等。38.阶段ii(l2p缓存管理):主机端110在系统存储器中配置空间作为hpb缓存600,用于存储hpb项目。主机端110可在配置好的模式下于需要的时间点发送hpb读取缓冲器命令(hpbreadbuffercommand)给闪存控制器130,用于从装置端加载指定的hpb项目。接着,主机端110将这些hpb项目存储在hpb缓存600中的一个或多个子区(sub-regions)。在hpb规范中,每个逻辑单元(例如区段,partition)的lbas分为多个hpb局部,而每个hpb局部可进一步细分为多个子区。例如,hpb缓存600可包含n个hpb局部,而每个hpb局部可包含l个子区,其中变量“n”和“l”为正整数,用于存储一段lba区间的hpb项目。hpb缓存600的划分示例如表1所示:39.表1[0040][0041]在一些实施例中,局部和子区可设定为拥有32mb的空间,也就是说,每个局部只包含一个子区。在另一些实施例中,局部可设定为拥有32mb的空间,而子区可设定为拥有4mb、8mb或16mb的空间。也就是说,每个局部可包含八个、四个或两个子区。[0042]阶段iii(hpb读取命令):主机端110在hpb缓存600的hpb项目中搜索包含欲读取lba的数据的物理区块地址(physicalblockaddresses,pbas)的hpb项目。接着,主机端110发送hpb读取命令(hpbreadcommand)给闪存控制器130,其中除了lba、传输长度(transferlength)等信息外还包含hpb项目,用于从装置端获取指定的用户数据。[0043]然而,以往通常以明码的方式在hpb项目中包含pba的信息,让不法人员可通过主机端110窥探pba的信息来知道装置端的内部数据管理方式,并且使用不正当手段来取得敏感数据(例如,系统或管理数据)。[0044]hpb规范定义了两种取得hpb项目的模式:主机控制模式(hostcontrolmode)和装置控制模式(devicecontrolmode)。主机控制模式由主机端110触发,决定哪些hpb子区需要存储在hpb缓存600;而装置控制模式则由闪存控制器130触发,决定哪些hpb子区需要存储在hpb缓存600。所属
技术领域
:人员理解,本发明实施例涵盖这两种或其他类似的控制模式。[0045]参考如图7所示应用在主机控制模式的操作顺序图,详细说明如下:[0046]操作711:主机端110决定哪些子区即将要启动(activated)。[0047]操作713:主机端110发送hpb读取缓冲器命令给闪存控制器130,向闪存控制器130请求决定子区的hpb项目。hpb读取缓冲器命令可包含10个字节,其中第0个字节记录操作码(operationcode)“f9h”、第2和第3个字节记录即将启动hpb局部的信息以及第4和第5个字节记录即将启动子区的信息。[0048]操作715:闪存控制器130从闪存装置150读取特定部分的h2f对照表,把读取的对照信息编排成hpb项目。为了避免hpb项目中的pba信息被不法人员窥探而了解数据存储的内部管理方式,闪存控制器130加密hpb项目的内容。以下段落将更详细说明此步骤的读取操作。[0049]操作717:闪存控制器130传送数据输入ufs协议信息单元(datainufsprotocolinformationunit,upiu)给主机端110,其中包含决定子区的hpb项目的加密内容,而不是明码。[0050]操作719:主机端110存储接收到的已加密hpb项目到hpb缓存600中的启动子区。[0051]操作731:主机端110决定哪些局部即将要关闭(deactivated)。在这里需要注意的是,在hpb规范中,启动是以子区为单位,而关闭是以局部为单位,主机端110可依据其算法的需求决定要启动的子区以及要关闭的局部。[0052]操作733:主机端110发送hpb写入缓冲器命令(hpbwritebuffercommand)给闪存控制器130,向闪存控制器130通知关闭决定的局部。hpb读取缓冲器命令可包含10个字节,其中第0个字节记录操作码“fah”并且在第2和第3个字节记录即将关闭局部的信息。[0053]操作735:闪存控制器130关闭局部。举例而言,闪存控制器130在将hpb项目传送给主机端110之后,闪存控制器130可针对已启动的子区对主机端110后续的读取命令的读取流程执行优化运作,而在收到主机端110关闭区域局部的通知后,闪存控制器130即可终止相应于关闭局部的相关优化运作。[0054]操作751:闪存控制器130在执行完主机写入命令、主机抹除命令或背景操作(例如垃圾回收、磨耗平均、读取回收、读取刷新等程序)后,更新h2f对照表的内容,其中包含相应于启动子区的内容。[0055]操作753:闪存控制器130传送回复ufs协议信息单元(responseupiu)给主机端110,其中包含建议主机端110更新上述子区的hpb项目的信息。[0056]操作755和757:主机端110发送hpb读取缓冲器命令给闪存控制器130,向闪存控制器130请求建议子区的hpb项目。[0057]操作771:闪存控制器130从闪存装置150读取特定部分的h2f对照表,把读取的对照信息编排成hpb项目。同样的,闪存控制器130亦加密hpb项目的内容。以下段落将更详细说明此步骤的读取操作。[0058]操作773:闪存控制器130传送数据输入upiu给主机端110,其中包含更新子区的hpb项目的加密内容,而不是明码。[0059]操作775:主机端110将接收到的已加密hpb项目覆写掉hpb缓存600的启动子区中的内容。[0060]参考如图8所示应用在装置控制模式的操作顺序图,详细说明如下:[0061]操作811:闪存控制器130决定哪些子区即将要启动和/或哪些局部即将关闭。[0062]操作813:闪存控制器130传送回复upiu给主机端110,其中建议主机端110启动上述子区和/或关闭上述局部。[0063]操作815:如果需要,主机端110从系统存储器中舍弃那些不再有效的hpb局部的hpb项目。[0064]操作831:如果需要,主机端110发送hpb读取缓冲器命令给闪存控制器130,向闪存控制器130请求建议子区的hpb项目。[0065]操作833:闪存控制器130从闪存装置150读取特定部分的h2f对照表,把读取的对照信息编排成hpb项目。同样的,闪存控制器130亦加密hpb项目的内容。以下段落将更详细说明此步骤的读取操作。[0066]操作835:闪存控制器130传送数据输入upiu给主机端110,其中包含相应于上述子区的hpb项目的加密内容,而不是明码。[0067]操作837:主机端110存储接收到的已加密hpb项目到hpb缓存600中的启动子区。[0068]关于读取操作715、771或833的技术细节可参考如图9所示的hpb项目产生方法的流程图,此方法由处理单元134于加载并执行相关软件或固件程序代码时实施,进一步说明如下:[0069]步骤s910:通过主机接口131从主机端110接收到如上所述的hpb读取缓冲器命令,其中包含即将启动子区的信息。hpb读取缓冲器命令向闪存控制器130请求读取一段lba区间的pba。[0070]步骤s920:通过控制逻辑139从闪存装置150读取相应于启动子区的特定t1表和t2表。[0071]步骤s930:根据t1表和t2表的内容编排hpb项目。所属
技术领域
:技术人员理解hpb规范的每个hpb项目的长度(例如8字节)可能大于t1表中记录的关联于每个lba的物理地址信息的长度(例如4字节)。因此,在一些实施例中,除了每个lba的物理地址信息(也就是t1表中记录的此lba的pba信息)外,处理单元134可在hpb项目的剩余空间添加虚假值(dummyvalues)来填满hpb项目。在另一些实施例中,除了每个lba的物理地址信息外,处理单元134依据不同的系统需要在hpb项目的剩余空间添加其他信息,用于加速将来的hpb读取操作。[0072]在一些实施例中,处理单元134可在每个8字节的hpb项目填入4字节的t1表的相应pba信息和4字节的t2表的相应pba信息。t1表的pba信息指出关联于特定lba实际存在于闪存装置150中的何处的信息,而t2表的pba信息指出此t1表实际存在于闪存装置150中的何处的信息。t2表的pba信息可在将来被装置端检查是否此hpb项目无效。如果将来从hpb读取命令中获得的hpb项目所包含的t2表的pba信息不符合相应t1表实际存储在闪存装置150的地址,处理单元134判定此hpb项目是无效的。hpb项目的示例如表2所示:[0073]表2[0074][0075]在另一些实施例中,处理单元134可在每个8字节的hpb项目填入28比特的t1表的相应pba信息、24比特的t2表的相应pba信息和12比特的连续长度(continuouslength)。连续长度指出在此lba之后有多少个lba的数据是连续性地存储在闪存装置150中的物理地址。所以,一个hpb项目能够表达t1表中多个连续pba的信息。hpb项目的示例如表3所示:[0076]表3[0077][0078]假设表3中的第0个hpb项目关联于lba“0x001000”:第0个hpb项目指出在lba“0x001000”之后有五个lba的用户数据是连续性地存储在闪存装置150中的物理地址。详细来说,lba“0x001000”至lba“0x001005”的数据分别存储在闪存装置150中的pba“0x00a000”至pba“0x00a005”。处理单元134将来能够根据第0个hpb项目中携带的信息读取六个lba“0x001000”至“0x001005”的用户数据。如果hpb读取命令指出欲读取的lba为“0x001000”并且传输长度小于或等于“6”时,处理单元134不需要再从闪存装置150中读取对应部分的h2f对照表。[0079]在另一些实施例中,处理单元134可在每个8字节的hpb项目填入28比特的t1表的相应pba信息、24比特的t2表的相应pba信息和12比特的连续比特表(continuousbittable)。连续比特表用于表示此lba的多个后续lba(例如,12个后续lba)的pba连续性。例如,12个比特分别相应于12个后续lba。hpb项目的示例如表4所示:[0080]表4[0081][0082]假设表4中的第0个hpb项目关联于lba“0x001000”:第0个hpb项目的连续比特表指出lba“0x001001”至“0x00100c”的pba连续性。理想情况下,lba“0x001001”至“0x00100c”的数据应该要分别存储在闪存装置150的pba“0x000a001”至“0x000a00c”。每个比特的值为“0”时代表相应lba的数据没有存储在理想的pba,而每个比特的值为“1”时代表相应lba的数据存储在理想的pba。所以,依据第0个hpb项目,处理单元134将来能够预测连续比特为“1”的pba并从闪存装置150的pba读取lba的数据,但忽略连续比特为“0”的pba。举例来说,如果主机装置110发送hpb读取命令,其中的参数携带第0个hpb项目并且传输长度为“9”,用于请求lba“0x001000”至“0x001008”的用户数据。处理单元134获取hpb读取命令的第0个hpb项目中的连续比特表,并且在译码连续比特表后预测出lba“0x001000”至“0x001005”及lba“0x001007”至“0x001008”的数据实际存储在闪存装置150的pba,而不需要从闪存装置150加载h2f对照表。在只有少数断点的案例中,能够减少从闪存装置150加载t1表的特定pba信息的次数。[0083]步骤s940:存储原始hpb项目到ram136。参考图10,ram136可配置空间给原始项目区1010,可为一段连续的存储器地址的空间。处理单元134可依据lba的顺序依序存储原始hpb项目到ram136中的原始项目区1010。[0084]步骤s950:加密hpb项目并存储加密后的hpb项目到ram136。参考图10,ram136可配置空间给加密项目区1020,可为一段连续的存储器地址的空间。在如图1所示的架构中,处理单元134可设定编码译码器138中的寄存器来驱动编码译码器138,从ram136的原始项目区1010中读取如上所述hpb项目的内容,依据设定参数对hpb项目加密,并且存储加密后的hpb项目到ram136中的加密项目区1020。编码译码器138执行完hpb项目的加密后,发出中断(interrupt)给处理单元134,通知加密完成的信息,使得处理单元134可继续处理加密后hpb项目。或者是,在如图2所示的架构中,处理单元134可加载并执行加密模块的程序代码,来完成如上所述的操作。[0085]可用的加密算法举例如下:在一些实施例中,处理单元134或编码译码器138将hpb项目的内容向左或向右循环位移n个比特,n代表1到63的任意整数。在另一些实施例中,处理单元134或编码译码器138将hpb项目的内容加上默认的键值。在另一些实施例中,处理单元134或编码译码器138将hpb项目的内容和默认的键值进行互斥或(exclusiveor,xor)运算。在另一些实施例中,处理单元134或编码译码器138以默认规则进行乱序(randomization)。例如,默认规则可为hpb项目的第i个比特和第63-i个比特交换,i从“0”到“31”。[0086]为了进一步加强数据安全性,一个子区的hpb项目可依据lba分成多个群,并分别使用不同的加密算法和相应加密参数加密不同群的hpb项目。hpb项目分群规则示例如下:在一些实施例中,hpb项目关联的lba可先除以一个值,并且根据其商数(quotients)对hpb项目分群。假设此值设为“100”:第一群包含lba#0~99的hpb项目,第二群包含lba#100~199的hpb项目,依此类推。在另一些实施例中,hpb项目关联的lba可先除以一个值,并且根据其余数(remainders)对hpb项目分群。假设此值设为“100”:第一群包含lba#0、lba#100、lba#200等的hpb项目,第二群包含lba#1、lba#101、lba#201等的hpb项目,依此类推。[0087]在一些实施例中,不同群的hpb项目可使用相同的加密算法但分别带入不同的加密参数。例如,第一群的每个hpb项目的内容向左循环位移1个比特,第二群的每个hpb项目的内容向右循环位移2个比特,第三群的每个hpb项目的内容向左循环位移3个比特,依此类推。或者,第一群的每个hpb项目的内容加上第一值或与第一值进行xor运算,第二群的每个hpb项目的内容加上第二值或与第二值进行xor运算,第三群的每个hpb项目的内容加上第三值或与第三值进行xor运算,依此类推。又或者,第一群的每个hpb项目的内容以第一规则进行乱序,第二群的每个hpb项目的内容以第二规则进行乱序,第三群的每个hpb项目的内容以第三规则进行乱序,依此类推。[0088]在另一些实施例中,不同群的hpb项目可分别使用不同的加密算法并带入适当的加密参数。例如,第一群的每个hpb项目的内容向左循环位移n个比特,第二群的每个hpb项目的内容与默认值进行xor运算,第三群的每个hpb项目的内容加上特定值,第四群的每个hpb项目的内容以默认规则进行乱序,依此类推。[0089]在一些实施例中,处理单元134可在ram136中存储群加密对照表(group-and-encryptionmappingtable),包含多个配置记录。每个配置记录存储信息,指出特定群的hpb项目使用哪个加密算法及相应加密参数。在另一些实施例中,类似群加密对照表的信息也可以嵌入在处理单元134执行的程序逻辑中,本发明并不因此受限。[0090]步骤s960:从ram136中的加密项目区1020读取加密后的hpb项目,并且传送数据输入upiu给主机端110,其中包含加密后的hpb项目。当hpb项目的内容被加密时,不法人员不能够通过主机端110来理解hpb项目的内容并据以知道装置端的内部数据管理方式,可以避免不法人员使用不正当手段来取得敏感数据。虽然hpb项目是加密过的,但是主机端110只要将来在hpb读取命令中携带这些加密过的hpb项目,依然可以从装置端获取想要的用户数据。[0091]参考如图11所示的hpb数据读取的操作顺序图,详细说明如下:[0092]操作1110:主机端110从hpb缓存600获取相应于欲读取lba的hpb项目。需要注意的是,这些hpb项目的内容是已经加密过的。[0093]操作1120:主机端110发送hpb读取命令给闪存控制器130,向闪存控制器130请求指定lba的用户数据,其中包含lba、传输长度和hpb项目。[0094]操作1130:闪存控制器130解密hpb项目的内容,依据hpb项目的t1表的pba信息(如果需要的话,加上连续长度或连续比特表)从闪存装置150读取请求的用户数据。[0095]操作1140:闪存控制器130传送数据输入upiu给主机端110,其中包含请求的用户数据。[0096]操作1150:主机端110依据操作系统、驱动程序、应用程序等的需要处理这些用户数据。[0097]关于读取操作1130的技术细节可参考如图12所示的数据读取方法的流程图,此方法由处理单元134于加载并执行相关软件或固件程序代码时实施,进一步说明如下:[0098]步骤s1210:通过主机接口131从主机端110收到hpb读取命令,其中包含lba、传输长度和hpb项目等信息。参考图10,ram136可配置空间给接收项目区1030,可为一段连续的存储器地址的空间,用于存储接收到的hpb项目。[0099]步骤s1220:如果原来的hpb项目有实施分群加密时,依据hpb读取命令中的lba得到其属于的群。取得lba所属群的技术细节可参考步骤s950的说明,为求简明不再赘述。如果原来的hpb项目没有实施分群加密,可以忽略此步骤。[0100]步骤s1230:使用相应的解密算法和解密参数解密hpb项目。以上所述的解密算法和解密参数是原来加密hpb项目所使用的加密算法和加密参数的逆向程序(reverseprocess),用于恢复出原始的hpb项目。例如,如果加密算法将原始hpb项目循环左移2个比特,则解密算法将加密hpb项目循环右移2个比特。如果加密算法将原始hpb项目加上特定值,则解密算法将加密hpb项目减去特定值。如果加密算法将原始hpb项目与特定值进行xor运算,则解密算法将加密hpb项目再进行xor运算一次。如果加密算法使用默认规则将原始hpb项目进行乱序,则解密算法使用默认规则将原始hpb项目进行反乱序。在一些实施例中,如果原来的hpb项目实施分群加密,则处理单元134查找ram136中的群加密对照表来获得此lba所属群的加密算法和加密参数,接着使用相应解密算法和解密参数进行解密。[0101]参考图10,ram136可配置空间给解密项目区1040,可为一段连续的存储器地址的空间。在如图1所示的架构中,处理单元134可设定编码译码器138中的寄存器来驱动编码译码器138,从ram136的接收项目区1030中读取如上所述hpb项目的内容,依据设定参数对hpb项目解密,并且存储解密后的hpb项目到ram136中的解密项目区1040。编码译码器138执行完hpb项目的解密后,发出中断给处理单元134,通知解密完成的信息,使得处理单元134可继续处理解密后hpb项目。或者是,在如图2所示的架构中,处理单元134可加载并执行解密模块的程序代码,来完成如上所述的操作。[0102]步骤s1240:判断hpb项目是否有效。如果是,则流程继续进行步骤s1250的处理;否则,继续进行步骤s1270的处理。如果原始hpb项目中不包含t2表的信息,则此步骤可以忽略。处理单元134可判断解密后hpb项目包含的t2表的pba信息是否符合相应t1表实际存储在闪存装置150的地址,如果符合则代表此hpb项目有效。[0103]步骤s1250:根据解密后hpb项目的t1表的pba信息通过控制逻辑139从闪存装置150的pba读取请求lba的用户数据。[0104]步骤s1260:通过主机接口131传送一个或多个数据输入upiu给主机端110,其中包含读出的用户数据。[0105]步骤s1270:通过主机接口131传送回复upiu给主机端110,指出读取失败的信息。在另一些实施例中,回复upiu可包含建议主机端110更新相应子区的hpb项目的信息,使得主机端110能够开始如上所述的发送操作755和757。[0106]本发明所述的方法中的全部或部分步骤可以由计算机程序实现,例如特定硬件的驱动程序、或软件程序。此外,也可实现于如上所示的其他类型程序。所属
技术领域
:中的技术人员可将本发明实施例的方法撰写成程序代码,为求简明不再加以描述。依据本发明实施例方法实施的计算机程序可存储于适当的计算机可读取存储介质,例如dvd、cd-rom、u盘、硬盘,也可置于可通过网络(例如,互联网,或其他适当介质)存取的网络服务器。[0107]虽然图1至图3中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。此外,虽然图9、图12的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,所属
技术领域
:的技术人员可以在达到相同效果的前提下,修改这些步骤之间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,所属
技术领域
:的技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或并行地执行更多步骤,本发明也不应因此而局限。[0108]以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本技术的权利要求书所界定的范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1