数据储存装置以及固件加解密方法与流程

文档序号:16250062发布日期:2018-12-11 23:56阅读:332来源:国知局
数据储存装置以及固件加解密方法与流程

本发明涉及固件加密及解密技术,特别有关于一种两段式的加解密技术,适用于管控是否允许对数据储存装置的固件进行更新。

背景技术

随着电脑科技的演进,逐渐发展出各式的密集储存装置,其中又以存储器为最广受使用的储存媒介,一般来说,依据储存特性之别,存储器又可区分为挥发性(volatile)存储器与非挥发性(non-volatile)存储器,其中挥发性存储器所储存的数据会在电源供应中断后消失,而非挥发性存储器所储存的数据即使在断电时依旧能够被保存下来,只要重新供电就能够读取内存数据。

以快闪存储器(flashmemory)为一种非挥发性存储器为例,制造商制作快闪存储器相关的存储器装置时,由于通常需符合各种存储器类型、以及不同厂商所定义的规格,所以设计一个存储器装置常需要同时能够相容于多种类型及规格。而为了能够满足这些多样的类型及规格,一般来说,制造商会在制作时于固件部分载入全部需相容的类型及规格等资讯。然而,在存储器装置出货后,厂商或使用者对于类型及规格可能有变更的需求而需要对固件进行更新,此时,要如何确认固件更新的合法性则成为一重要的技术问题。



技术实现要素:

为了解决上述问题,本发明提出一种数据储存装置及固件加解密方法,使用两段式的加解密技术确认固件更新的合法性,有效防止非法的固件更新。

本发明的第一实施例提供了一种数据储存装置,包括一非挥发性存储器以及一微控制器。上述非挥发性存储器储存一固件档案。上述微控制器耦接至上述非挥发性存储器,对上述固件档案执行一加密程序,上述加密程序包括:使用一第一金钥与一第一演算法对上述固件档案进行加密以取得一签证(signature),使用上述第一金钥与一第二演算法对上述签证进行混码(scramble)以取得一混码签证,将上述混码签证附加至上述固件档案。

此外,上述数据储存装置还可包括一电子熔丝存储器(electronicfuse),上述加密程序还可包括:使用一第二金钥与上述第二演算法对上述第一金钥进行混码以取得一混码金钥,将上述混码金钥写入上述电子熔丝存储器。

本发明的第二实施例提供了一种固件加密方法,适用于加密一数据储存装置的一固件档案,上述固件加密方法包括以下步骤:使用一第一金钥与一第一演算法对上述固件档案进行加密以取得一签证;使用上述第一金钥及一第二演算法对上述签证进行混码以取得一混码签证;以及将上述混码签证附加至上述固件档案。

上述固件加密方法还可包括以下步骤:使用一第二金钥与上述第二演算法对上述第一金钥进行混码以取得一混码金钥;以及将上述混码金钥写入上述数据储存装置的一电子熔丝存储器。

在上述第一实施例与第二实施例中,较佳的情况是,上述第一金钥是从一使用者输入所取得,上述固件档案是储存于上述数据储存装置的一非挥发性存储器,上述混码签证是附加于上述固件档案的尾端或标头,上述第一演算法可为一安全杂凑演算法256(securehashalgorithm-256,sha-256),上述第二演算法可为一循环冗余检查30(cyclicredundancycheck-30,crc-30)。

本发明的第三实施例提供了一种数据储存装置,包括一非挥发性存储器、一电子熔丝存储器、以及一微控制器。上述非挥发性存储器储存一固件档案,其中上述固件档案包括一固件程式档与一第一混码签证。上述电子熔丝存储器储存一混码金钥。上述微控制器耦接至上述非挥发性存储器与上述电子熔丝存储器,对上述固件档案执行一解密程序,上述解密程序包括:使用一第一金钥与一第一演算法对上述混码金钥进行解混码(descramble)以取得一第二金钥,使用上述第二金钥与一第二演算法对上述固件程式档进行加密以取得一签证,使用上述第二金钥与上述第一演算法对上述签证进行混码以取得一第二混码签证,以及于上述第一混码签证相同于上述第二混码签证时决定上述解密程序成功完成。

上述解密程序还可包括:从一使用者输入取得一第三金钥,决定上述第三金钥是否相同于上述第二金钥,若是,则进行取得上述第二金钥之后的步骤,若否,则决定上述解密程序失败。

或者,上述解密程序还可包括:在上述电子熔丝存储器未储存上述混码金钥时,决定上述解密程序失败。

本发明的第四实施例提供了一种固件解密方法,适用于解密一数据储存装置的一固件档案,上述固件解密方法包括以下步骤:从上述数据储存装置的一电子熔丝存储器读取一混码金钥;使用一第一金钥与一第一演算法对上述混码金钥进行解混码以取得一第二金钥;使用上述第二金钥与一第二演算法对上述固件档案中的一固件程式档进行加密以取得一签证;使用上述第二金钥与上述第一演算法对上述签证进行混码以取得一第一混码签证;以及于上述第一混码签证相同于上述固件档案中的一第二混码签证时,决定上述解密程序成功完成。

上述固件解密程序还可包括:从一使用者输入取得一第三金钥;决定上述第三金钥是否相同于上述第二金钥;若是,则进行取得上述第二金钥之后的步骤;以及若否,则决定上述解密程序失败。

或者,上述固件解密程序还可包括:在上述电子熔丝存储器未储存上述混码金钥时,决定上述解密程序失败。

在上述第三实施例与第四实施例中,较佳的情况是,上述第一演算法为一循环冗余检查30,上述第二演算法为一安全杂凑演算法256。

关于本发明其他附加的特征与优点,此领域的熟悉本技术领域者,在不脱离本发明的精神和范围内,当可根据本案实施方法中所揭示的数据储存装置以及固件加解密方法做些许的更动与润饰而得到。

附图说明

图1是根据本发明一实施例所述的数据储存装置的示意图。

图2是根据本发明一实施例所述的储存空间垃圾回收的示意图;

图3a以及图3b是显示数据区块池114的范例示意图。

图4a以及图4b是根据本发明一实施所述具有认证机制的开卡方法的流程图。

图5是根据本发明一实施例所述的固件档案的示意图。

图6是根据本发明另一实施例所述的固件档案的示意图。

图7是根据本发明另一实施例所述具有认证机制的固件更新方法的流程图。

符号说明

100数据储存装置;

110快闪存储器;

111线上编程区块池;

10固件档案;

112系统资讯区块池;

113闲置区块池;

114数据区块池;

20数据区域;

30备用区域;

120控制单元;

121微控制器;

122随机存取存储器;

123只读存储器;

124电子熔丝存储器;

blk#1、blk#2、blk#z物理区块;

u#i、u#(i+1)、u#(i+2)、u#(i+3)储存单元;

s401~s414、s701~s708步骤编号;

isp.bin固件程式档;

sha-256安全杂凑演算法256;

crc-30循环冗余检查30;

pa、ka金钥;

sa、sa’签证;

scr_sa1、scr_sa2、scr_sa3混码签证。

具体实施方式

本章节所叙述的是实施本发明的最佳方式,目的在于说明本发明的精神而非用以限定本发明的保护范围,应理解下列实施例可经由软件、硬件、固件、或上述任意组合来实现。

除了快闪存储器之外,非挥发性存储器还包括:磁阻式随机存取存储器(magneto-resistiveram)、铁电随机存取存储器(ferroelectricram)、电阻式存储器(resistiveram)、自旋转移力矩随机存取存储器(spintransfertorque-ram,stt-ram)等,其具有长时间保存数据的特性。以下特别以快闪存储器为例进行说明。

现今数据储存装置常以快闪存储器为储存媒介,常用来实现记忆卡(memorycard)、通用串行总线排闪存装置(usbflashdevice)、以及固态硬碟(solidstatedrive,ssd)等产品。其中一种应用是采多晶片封装,将快闪存储器与其控制器包装在一起,称为嵌入式快闪存储器模组(如:嵌入式多媒体卡(embeddedmultimediacard,emmc))。

以快闪存储器为储存媒介的数据储存装置可应用于多种电子装置中,包括:智慧型手机、穿戴装置、平板电脑、以及虚拟实境设备等,而一般来说,这般电子装置中的中央处理单元(centralprocessingunit,cpu)可被视为操作所述数据储存装置的一主机。

图1是根据本发明一实施例所述的数据储存装置的示意图。数据储存装置100包括快闪存储器110以及控制单元120,其中控制单元120耦接于主机200与快闪存储器110之间,并根据主机200所下达的指令(如:读取/写入数据、或更新固件等)操作快闪存储器110。

控制单元120包括微控制器121、随机存取存储器122、只读存储器123、以及电子熔丝存储器(electronicfuse)124,其中,随机存取存储器122与微控制器121可设置于同一个晶粒(die),或是分开制作,且可能空间有限(相较于大尺寸dram)。举例来说,一安全数位(securedigital,sd)卡可使用512kb的静态随机存取存储器(staticrandomaccessmemory,sram)来实现随机存取存储器122。

只读存储器123是用以储存只读程式码(如,romcode),由微控制器121载入并执行,以进行本发明的固件加解密方法的相关作业。

电子熔丝存储器124为一次性可编程存储器,是用以接受一次性的数据写入。明确来说,所写入的数据是指本发明的固件加解密方法所用到的混码金钥,且一旦写入就无法被修改且仅供读取。

微控制器121可从电子熔丝存储器124读取混码金钥、载入并执行只读存储器123所储存的只读程式码、以及载入并执行快闪存储器110的线上编程(in-systemprogramming,isp)区块池111所储存的固件档案10,以进行本发明的固件加解密方法的相关作业,其中,固件档案10可为制造商所预存(pre-load)的原始固件档案或使用者自网络下载并储存的更新固件档案。而在运作过程中,微控制器121可利用随机存取存储器122作动态资讯储存。在一实施例,固件档案10可包括固件程式档isp.bin以及额外资讯,例如:内建的第一混码签证scr_sa1。

快闪存储器110的空间配置包括:线上编程区块池111、系统资讯区块池112、闲置区块池113、以及数据区块池114。

线上编程区块池111中的区块系用以储存线上编程程式,包括固件档案10。

系统资讯区块池112中的区块用以储存系统资讯,包括主机至快取存储器(hosttoflash,h2f)映射表(于文后简称为h2f映射表)的非挥发式存储,其中关于h2f映射表的叙述将后续进一步说明。

闲置区块池113中的闲置区块可由微控制器121配置来储存数据(例如,作为主动区块接收主机200写入数据、或作为垃圾回收的目的区块),并待数据储存完成(写满、或中断不再利用)即推入数据区块池114并定义为数据区块。

进一步说明,快闪存储器有一种特殊的物理特性:其中数据的更新并非对同样储存空间作复写,而是将更新数据储存在闲置空间,且原储存空间的储存内容将转为无效。频繁的写入操作容易致使快闪存储器100充斥无效的内容,垃圾回收机制因应发展而出。图2图解垃圾回收的概念。斜线标示无效数据。来源区块的有效数据将被复制至目的区块。当复制完成后,来源区块可被抹除(erase)并将变更为闲置区块,其空间释出。

数据区块池114中的区块又可被称为数据区块,由实体地址所定义出来的数据储存空间,也就是主机200要读取的数据的真实所在位置。除了储存主机200所指定的数据之外,每个数据区块还储存有快取存储器至主机(flashtohost,f2h)映射表(于文后简称为f2h映射表),一般来说,f2h映射表储存于对应区块的区块终端(endofblock,eob)中,而区块终端较佳储存于对应区块的最末数据页,其中关于f2h映射表的叙述将后续进一步说明。

图3a以及图3b是显示数据区块池114的一范例示意图。

如图3a所示,数据区块池114的数据储存空间可被划分为多个区块(或称物理区块(physicalblock))blk#1、blk#2、…blk#z,其中z为正整数。各物理区块包括多个物理页(physicalpage),或可称为数据页(datapage),例如:256个数据页。

如图3b所示,每一数据页包括数据区域(dataarea)20、以及备用区域(sparearea)30。数据区域20可进一步划分为多个储存单元u#i、u#(i+1)、u#(i+2)、u#(i+3),经配置后,对应主机端的逻辑地址储存数据。主机端的逻辑地址有多种形式,例如,以逻辑区块地址(logicalblockaddress,lba)、或全域主机页(globalhostpage,ghp)进行编号。

在一实施例,数据区域20的大小为16kb(kilo-byte,千位元组),储存单元u#i、u#(i+1)、u#(i+2)、u#(i+3)的大小各为4kb,每个储存单元可对应到8个逻辑区块地址(如:lba#0~lba#7)、或对应到1个全域主机页。

备用区域30是用来储存所属数据页的元数据(metadata),包括映射资讯、以及区块识别码。区块识别码系用以记录所属物理区块的区块识别码。映射资讯系用以指示储存单元u#i、u#(i+1)、u#(i+2)、u#(i+3)所储存的内容对应到的主机端的逻辑地址。举例来说,映射资讯可纪录4段逻辑区块地址(各段包括8个逻辑区块地址的编号)、或4个全域主机页的编号。以下以全域主机页为例进行说明,但不以此为限。

一般运作下,快闪存储器的映射资讯需动态整理成映射表,包括:h2f映射表、以及f2h映射表。h2f映射表可以全域主机页为索引,记录各全域主机页的数据是被储存至快闪存储器的哪个实体地址,也就是哪一物理区块中的哪一数据页、以及哪一储存单元。f2h映射表则可记录所描述的物理区块中,数据页或储存单元所储存的内容所对应到的全域主机页为何。由此可知,映射表是主机操控快闪存储器的重要依据。

图4是根据本发明一实施例所述具有认证机制的开卡方法之流程图。在此实施例中,于执行固件档案之前,先进行固件档案的正确性的确认,以避免恶意或未授权的固件档案被安装于数据储存装置100中,造成非预期的伤害。此外,本发明的开卡方法可与量产(massproduction,mp)程序结合,成为量产(massproduction,mp)程序的一部份。

首先,制造商输入金钥pa至量产工具(mptool),而微控制器121透过量产工具取得金钥pa,其中量产工具是由软件程式所实作(步骤s401)。

接着,微控制器121决定电子熔丝存储器124是否已写入数据(步骤s402),若否,则表示为初次开卡,微控制器121执行第一阶段的检验动作,包括:从快闪存储器110的线上编程区块池111读取固件档案10,并对固件档案10的固件程式档isp.bin执行第一演算法的运算以取得签证(signature)sa(步骤s403)。

在一实施例,第一演算法为安全杂凑演算法256(securehashalgorithm-256,sha-256),而运算得到的签证sa为一32位元组的签证。

接续步骤s403,微控制器121执行第二阶段的混码动作,包括:以金钥pa当作种子(seed)并使用第二演算法对签证sa进行混码(scramble)以取得第二混码签证scr_sa2(步骤s404)。

在一实施例,第二演算法为循环冗余检查30(cyclicredundancycheck-30,crc-30),且使用第二演算法所进行的运算为可逆的作业,也就是说,只要使用相同的种子以及相同演算法就能够反推(即解混码)得到混码前的数据。

接续步骤s404,微控制器121判断第二混码签证scr_sa2与固件档案10的第一混码签证scr_sa1是否相同(步骤s405)。明确来说,微控制器121将第二混码签证scr_sa2与固件档案10的第一混码签证scr_sa1进行比对。接着,如果两者相同,则流程继续往下;反之,若不相同,则流程结束,终止本发明所述具有认证机制的开卡方法的执行。

图5是根据本发明一实施例所述的固件档案的示意图。如图5所示,固件档案包括固件程式档isp.bin以及第一混码签证scr_sa1,其中固件程式档isp.bin的大小为641kb(kilo-byte,千位元组),第一混码签证scr_sa1可附加于固件程式档isp.bin的尾端或标头(header),例如:附加于固件程式档isp.bin的尾端并补0值到512位元组大小。首先,针对固件程式档isp.bin的部分,经过如上述步骤s403的处理产生了签证sa,接着,经过如上述步骤s404的处理产生了混码签证scr_sa2。之后,再如上述步骤s405比对混码签证scr_sa2与scr_sa1是否相同。

回到图4,接续步骤s405,如果第二混码签证scr_sa2与第一混码签证scr_sa1相同,为了防止金钥pa被破解,微控制器121进一步将金钥smi_k当作种子并使用第二演算法对金钥pa进行混码以取得混码金钥scr_ka(步骤s406),然后将混码金钥scr_ka写入电子熔丝存储器124(步骤s407)。

在一实施例,金钥smi_k可以是由固件档案自行定义的固定大小的金钥。

接续步骤s407,微控制器121接着执行固件程式档isp.bin(步骤s408),然后流程结束。由于固件程式档isp.bin的执行以及后续的开卡程序不在本发明的发明范畴,故相关说明在此省略不提。

回到步骤s402,如果电子熔丝存储器124已写入数据,则表示为再次开卡,也就是说,步骤s403~s408已于先前某时间点执行过,且电子熔丝存储器124已储存混码金钥scr_ka。

首先,微控制器121从电子熔丝存储器124读取混码金钥scr_ka(步骤s409),然后将金钥smi_k当作种子并使用第二演算法对混码金钥scr_ka进行解混码(descramble)以取得金钥ka(步骤s410)。

接着,微控制器121决定金钥ka是否相同于金钥pa(步骤s411),若否,则表示金钥pa不是合法或授权取得的金钥,所以终止本发明所述具有认证机制的开卡方法的执行,流程结束。反之,如果金钥ka相同于金钥pa,则表示金钥pa是合法或授权取得的金钥,所以从快闪存储器110之线上编程区块池111读取固件档案10,并对固件档案10的固件程式档isp.bin执行第一演算法的运算以取得签证sa’(步骤s412)。

之后,微控制器121将金钥pa当作种子并使用第二演算法对签证sa’进行混码以取得第三混码签证scr_sa3(步骤s413),然后比对第三混码签证scr_sa3与固件档案10中的第一混码签证scr_sa1是否相同(步骤s414),若是,则表示固件档案10是正确或已授权的固件,所以流程进入步骤s408;反之,若否,则表示固件档案10为不正确或未授权的固件,所以终止本发明所述具有认证机制的开卡方法的执行,流程结束。

图6是根据本发明一实施例所述的固件档案的示意图。如图6所示,固件档案包括了固件程式档isp.bin以及混码签证scr_sa1。首先,针对固件程式档isp.bin的部分,经过如上述步骤s412的处理产生了签证sa’,接着,经过如上述步骤s413的处理产生了混码签证scr_sa3。之后,再如上述步骤s414比对混码签证scr_sa3与scr_sa1是否相同。

图7是根据本发明另一实施例所述具有认证机制的固件更新方法的流程图。在此实施例,具有认证机制的固件更新方法适用于管控使用者是否可对数据储存装置100执行固件更新程序。

首先,微控制器121决定电子熔丝存储器124是否已写入数据(步骤s701),若否,表示为异常状态,则不允许执行固件更新程序(步骤s702),流程结束。反之,若是,则从电子熔丝存储器124读取混码金钥scr_ka(步骤s703),然后将金钥smi_k当作种子并使用第二演算法对混码金钥scr_ka进行解混码以取得金钥ka(步骤s704)。

在一实施例,第二演算法为循环冗余检查30,且使用第一演算法所进行的运算为可逆之作业,也就是说,只要使用相同的种子(即金钥smi_k)以及相同演算法就能够反推(即解混码)得到混码前的数据。

接着,微控制器121从快闪存储器110的线上编程区块池111读取固件档案10,并对固件档案10的固件程式档isp.bin部分执行第一演算法的运算以取得签证sa’(步骤s705)。

在一实施例,第一演算法为安全杂凑演算法256,而运算后得到的签证sa’为一32位元组的签证。

之后,微控制器121将金钥ka当作种子并使用第二演算法对签证sa’进行混码以取得混码签证scr_sa3(步骤s706),然后比对混码签证scr_sa3与固件档案10中的混码签证scr_sa1是否相同(步骤s707),若否,则表示解密不成功,流程进入步骤s703;反之,若是,则表示固件档案10是正确或已授权的固件,允许执行固件更新程序(步骤s708),流程结束。由于固件更新程序的细节不在本发明的发明范畴,故相关说明在此省略不提。

根据前述图4~7的实施例,当可理解的是,本发明的固件加解密方法有效地管控是否允许对数据储存装置的固件进行更新,特别是,使用了两段式的加解密技术确来认固件更新的合法性,此外,还进一步针对金钥进行混码并以电子熔丝存储器加以储存,以防止金钥被破解。因此,本发明的固件加解密方法有效提升了固件更新的安全性。

本发明虽以各种实施例揭示如上,然而其仅为范例参考而非用以限定本发明的范围,任何熟悉本技术领域者,在不脱离本发明的精神和范围内,当可做些许的更动与润饰。因此上述实施例并非用以限定本发明的范围,本发明的保护范围当视后附的权利要求书界定为准。

于申请专利范围中所使用的“第一”、“第二”、“第三”等词是用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序,先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1