CN113079001A - 密钥更新方法、信息处理设备及密钥更新装置 - Google Patents
密钥更新方法、信息处理设备及密钥更新装置 Download PDFInfo
- Publication number
- CN113079001A CN113079001A CN202110252142.7A CN202110252142A CN113079001A CN 113079001 A CN113079001 A CN 113079001A CN 202110252142 A CN202110252142 A CN 202110252142A CN 113079001 A CN113079001 A CN 113079001A
- Authority
- CN
- China
- Prior art keywords
- hash
- key
- data
- trng
- user
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0822—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Power Engineering (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及密钥更新方法、信息处理设备及密钥更新装置。首先接收用户更新口令;利用哈希算法将用户更新口令与存储设备的识别码进行转换,以获得用户更新密钥哈希值;再基于对应至存储设备的随机数据将用户更新密钥哈希值进行加密,以获得用户更新口令密文。另产生真随机数;基于用户更新密钥哈希值对真随机数进行加密,以获得数据更新密钥加密值。本发明更新密钥中的用户口令密文与数据密钥加密值,不仅更新便捷,且加密效果佳。
Description
技术领域
本发明一般地涉及信息安全领域。更具体地,本发明涉及密钥更新方法、信息处理设备及密钥更新装置。
背景技术
在大数据时代,为了防止对大数据***中信息资源的非授权访问,用户在访问大数据***前都需要进行认证。现有的一种用户认证方式为基于用户标识(Identification,ID)和口令,在用户注册时对口令进行加密。
现有存在多种对口令进行加密的方法,例如接收用户注册请求,该用户注册请求中携带有用户ID和口令;生成一个与硬件绑定的随机数;根据该随机数加密口令,得到口令密文;将用户ID、口令密文以及随机数关联存储。据此,当用户登录服务器进行用户认证时,***接收用户认证请求,其中用户认证请求载有用户ID和待认证的口令;获取用户ID所对应的口令密文以及该随机数,根据预设加密算法加密该待认证的口令,得到口令密文;若计算得到的口令密文与获取到的口令密文一致,则认证通过。
随着大数据的发展,用户数据的存储安全越来越重要,为了确保信息安全,密钥需要定期更新,因此一种保密等级高且便捷的密钥更新方案是迫切需要的。
发明内容
为了至少部分地解决背景技术中提到的技术问题,本发明的方案提供了一种密钥更新方法、信息处理设备及密钥更新装置。
在一个方面中,本发明揭露一种应用在存储设备上的用户加密密钥的密钥更新方法,所述用户加密密钥包括用户原始口令密文(C_Pin_Hash)及数据原始密钥加密值(C_TRNG_Hash)。所述密钥更新方法包括:接收用户更新口令;利用哈希算法将所述用户更新口令与所述存储设备的识别码进行转换,以获得用户更新密钥哈希值(New Pin_hash D);获取一次可编程的随机数据(TRNG Data);基于所述随机数据(TRNG Data),将所述用户更新密钥哈希值(New Pin_hash D)进行加密,以获得用户更新口令密文(New C_Pin_Hash),并取代用户原始口令密文(C_Pin_Hash);产生真随机数(New TRNG_Data);以及基于所述用户更新密钥哈希值(New Pin_hash D),对所述真随机数(New TRNG_Data)进行加密,以获得数据更新密钥加密值(New C_TRNG_Hash),并取代数据原始密钥加密值(C_TRNG_Hash)。
可选地,密钥更新方法还包括:利用哈希算法将用户原始口令与所述识别码进行转换,以获得用户原始密钥哈希值(Pin_Hash D);基于所述随机数据(TRNG Data),将所述用户原始密钥哈希值(Pin_Hash D)进行加密,以获得用户原始密文基准值(C_Pin_Hash_R);获取所述用户原始口令密文(C_Pin_Hash);以及判断所述用户原始口令密文(C_Pin_Hash)与所述用户原始密文基准值(C_Pin_Hash_R)是否相同;其中,如相同,则利用哈希算法将所述用户更新口令与所述识别码进行转换。
可选地,所述将用户原始口令与所述识别码进行转换的步骤包括:自所述用户原始口令中选定原始口令特定位数;自所述识别码中选定识别码特定位数;拼接所述原始口令特定位数及所述识别码特定位数,以形成拼接数列;以及利用哈希算法将所述拼接数列进行转换,以获得所述用户原始密钥哈希值(Pin_Hash D)。
可选地,所述原始口令特定位数为所述用户原始口令的前128位元素,且所述识别码特定位数为所述识别码的前128位元素。
可选地,所述拼接数列为所述原始口令特定位数及所述识别码特定位数前后相连。
可选地,所述拼接数列为所述原始口令特定位数及所述识别码特定位数以特定规则重新排列而成。
可选地,所述将所述用户原始密钥哈希值(Pin_Hash D)进行加密的步骤包括:利用哈希算法对所述随机数据(TRNG Data)进行转换,以获得随机数据哈希值(Hash_0);以及基于所述随机数据哈希值(Hash_0),将所述用户原始密钥哈希值(Pin_Hash D)进行加密,以获得所述用户原始密文基准值(C_Pin_Hash_R)。
可选地,所述数据原始密钥加密值(C_TRNG_Hash)包括第一数据原始密钥加密值(C_TRNG_Hash_1)及第二数据原始密钥加密值(C_TRNG_Hash_2),所述密钥更新方法还包括:自所述用户原始密钥哈希值(Pin_Hash D)中选定密钥特定位数;获取所述第一数据原始密钥加密值(C_TRNG_Hash_1)及所述第二数据原始密钥加密值(C_TRNG_Hash_2);基于所述密钥特定位数,将所述第一数据原始密钥加密值(C_TRNG_Hash_1)进行解密,以获得第一数据原始密钥(TRNG_Hash_1);以及基于所述第一数据原始密钥(TRNG_Hash_1),将所述第二数据原始密钥加密值(C_TRNG_Hash_2)进行解密,以获得第二数据原始密钥(TRNG_Hash_2)。
可选地,所述密钥特定位数为所述用户原始密钥哈希值(Pin_Hash D)的前128位元素。
可选地,所述数据更新密钥加密值(New C_TRNG_Hash)包括第一数据更新密钥加密值(New C_TRNG_Hash_1),所述对所述真随机数(New TRNG_Data)进行加密的步骤包括:利用哈希算法对所述真随机数(New TRNG_Data)进行转换,以获得真随机数哈希值(NewTRNG_Hash);以及基于所述用户更新密钥哈希值(New Pin_hash D),将所述真随机数哈希值(New TRNG_Hash)进行加密,以获得所述第一数据更新密钥加密值(New C_TRNG_Hash_1)。
可选地,所述数据更新密钥加密值(New C_TRNG_Hash)包括第二数据更新密钥加密值(New C_TRNG_Hash_2),所述对所述真随机数(New TRNG_Data)进行加密的步骤还包括:基于所述真随机数哈希值(New TRNG_Hash),将所述第二数据原始密钥(TRNG_Hash_2)进行加密,以获得所述第二数据更新密钥加密值(New C_TRNG_Hash_2)。
可选地,所述哈希算法为SM3。
可选地,加密是利用SM4算法进行的。
在另一个方面,本发明揭露一种信息处理设备,包括处理器及存储器。存储器存储有密钥更新的计算机程序代码,当所述计算机程序代码由处理器运行时,执行前述的方法。
在另一个方面,本发明揭露一种配置于存储设备中的密钥更新装置,连接至片外存储单元,所述片外存储单元存储有用户加密密钥,所述用户加密密钥包括用户原始口令密文(C_Pin_Hash)及数据原始密钥加密值(C_TRNG_Hash)。密钥更新装置包括哈希模块、一次可编程模块、真随机数产生模块及加密模块。其中,哈希模块用以将用户更新口令与所述存储设备的识别码进行转换,以获得用户更新密钥哈希值(New Pin_hash D);一次可编程模块用以存储一次可编程的随机数据(TRNG Data);真随机数产生模块用以产生真随机数(New TRNG_Data);加密模块用以基于所述随机数据(TRNG Data),将所述用户更新密钥哈希值(New Pin_hash D)进行加密,以获得用户更新口令密文(New C_Pin_Hash),且基于所述用户更新密钥哈希值(New Pin_hash D),对所述真随机数(New TRNG_Data)进行加密,以获得数据更新密钥加密值(New C_TRNG_Hash)。
可选地,所述哈希模块将用户原始口令与所述识别码进行转换,以获得用户原始密钥哈希值(Pin_Hash D);所述加密模块基于所述随机数据(TRNG Data),将所述用户原始密钥哈希值(Pin_Hash D)进行加密,以获得用户原始密文基准值(C_Pin_Hash_R);以及若所述用户原始口令密文(C_Pin_Hash)与所述用户原始密文基准值(C_Pin_Hash_R)相同,则所述哈希模块将所述用户更新口令与所述识别码进行转换。
可选地,当所述哈希模块利用将用户原始口令与所述识别码进行转换时,所述哈希模块将拼接数列进行转换,以获得所述用户原始密钥哈希值(Pin_Hash D),其中所述拼接数列由原始口令特定位数及识别码特定位数拼接形成,以及其中所述原始口令特定位数是自所述用户原始口令中选定的,所述识别码特定位数是自所述识别码中选定的。
可选地,所述原始口令特定位数为所述用户原始口令的前128位元素,且所述识别码特定位数为所述识别码的前128位元素。
可选地,所述拼接数列为所述原始口令特定位数及所述识别码特定位数前后相连。
可选地,所述拼接数列为所述原始口令特定位数及所述识别码特定位数以特定规则重新排列而成。
可选地,所述哈希模块对所述随机数据(TRNG Data)进行转换,以获得随机数据哈希值(Hash_0),所述加密模块基于所述随机数据哈希值(Hash_0),将所述用户原始密钥哈希值(Pin_Hash D)进行加密,以获得所述用户原始密文基准值(C_Pin_Hash_R)。
可选地,还包括解密模块,所述数据原始密钥加密值(C_TRNG_Hash)包括第一数据原始密钥加密值(C_TRNG_Hash_1)及第二数据原始密钥加密值(C_TRNG_Hash_2);其中,所述解密模块基于密钥特定位数,将所述第一数据原始密钥加密值(C_TRNG_Hash_1)进行解密,以获得第一数据原始密钥(TRNG_Hash_1);所述解密模块还基于所述第一数据原始密钥(TRNG_Hash_1),将所述第二数据原始密钥加密值(C_TRNG_Hash_2)进行解密,以获得第二数据原始密钥(TRNG_Hash_2);其中,所述密钥特定位数是自所述用户原始密钥哈希值(Pin_Hash D)中选定的。
可选地,所述密钥特定位数为所述用户原始密钥哈希值(Pin_Hash D)的前128位元素。
可选地,所述数据更新密钥加密值(New C_TRNG_Hash)包括第一数据更新密钥加密值(New C_TRNG_Hash_1),所述哈希模块对所述真随机数(New TRNG_Data)进行转换,以获得真随机数哈希值(New TRNG_Hash),所述加密模块基于所述用户更新密钥哈希值(NewPin_hash D),将所述真随机数哈希值(New TRNG_Hash)进行加密,以获得所述第一数据更新密钥加密值(New C_TRNG_Hash_1)。
可选地,所述数据更新密钥加密值(New C_TRNG_Hash)包括第二数据更新密钥加密值(New C_TRNG_Hash_2),所述加密模块基于所述真随机数哈希值(New TRNG_Hash),将所述第二数据原始密钥(TRNG_Hash_2)进行加密,以获得所述第二数据更新密钥加密值(New C_TRNG_Hash_2)。
可选地,所述哈希算法为SM3。
可选地,加密是利用SM4算法进行的。
本发明利用一次可编程的随机数据(TRNG Data),将用户更新密钥哈希值(NewPin_hash D)进行加密,以获得用户更新口令密文(New C_Pin_Hash),并利用真随机数进行加密,以获得数据更新密钥加密值(New C_TRNG_Hash),这样的密钥更新方式与存储设备产生绑定,不仅更新便捷,且加密效果佳。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1是示出本发明的应用场景示意图;
图2是示出本发明实施例的密钥更新装置的结构示意图;
图3是示出本发明实施例在口令认证阶段中的流程图;
图4是示出本发明实施例在密钥计算阶段中的流程图;
图5是示出本发明实施例在口令设置阶段中生成用户更新口令密文的流程图;
图6是示出本发明实施例在口令设置阶段中生成数据更新密钥加密值的流程图;
图7是示出本发明实施例利用密钥加密值对用户数据加密的流程图;
图8是示出本发明另一实施例在密钥计算阶段中的流程图;
图9是示出本发明另一实施例在口令设置阶段中生成数据更新密钥加密值的流程图;以及
图10是示出本发明另一实施例启动加密用户数据的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,本发明的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本发明的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本发明。如在本发明说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本发明说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本发明的具体实施方式。
图1示出本发明的应用场景示意图,本发明的应用场景包括主机11与存储设备12,用户通过主机11,将数据存储至存储设备12中,或自存储设备12读取数据。
主机11是一种信息处理设备,例如:个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等;存储设备12用于为主机11提供存储能力。主机11与存储设备12互相连接,其连接方式包括但不限于通过SATA(Serial AdvancedTechnology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机***接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(IntegratedDrive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,高速***组件互联)、以太网、光纤通道、无线通信网络等。因此,主机11与存储设备12可以属于利用有线连接的同一套物理设备,或存储设备12相较于主机11而言是处于同一个局域网(LAN)或广域网(WAN)的远程设备。
存储设备12包括接口121、控制器122、NVM阵列123及DRAM(Dynamic RandomAccess Memory,动态随机访问存储器)124。
接口121用以与主机11进行联系,基于前述的连接方式,可适配为SATA、IDE、USB、PCIE、SAS、以太网、光纤通道等。
控制器122用于协调接口121、NVM阵列123及DRAM 124之间的数据传输任务,可通过软件、硬件、固件或其组合的多种方式来实现。以硬件为例,控制器122可以是FPGA(FieldProgrammable Gate Array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)、CPU或者其组合的形式。
NVM阵列123是存储设备12中用来存储用户数据的存储装置,通常会采用非易失性存储器,即使关闭电源也不会丢失已保存的数据。NVM阵列123一般包括一个、多个或大量的NVM芯片,每个NVM芯片可以是NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(Magnetic Random Access Memory,磁阻存储器)、RRAM(Resistive RandomAccess Memory,阻变存储器)、XPoint存储器等。
DRAM 124用以缓存主机11发送来的输入/输出命令,供控制器122取出处理。
对于存储在NVM阵列123中的用户数据,需要对其进行加密以确保信息安全。为此,控制器122设置有命令处理单元125与密钥管理单元126。
用户加密密钥用于对存储设备12中存储的数据加密与解密。因此,用户加密密钥需要在存储设备12的片外存储单元中被可靠地保存。即使存储设备12被拆解,存储了用户加密密钥的片外存储单元被外部工具强行直接访问,也需要保证用户加密密钥以及用户数据的安全性,即保证从片外存储单元所获取的用户加密密钥不能被用于未经认证地解密其所加密的数据。在大数据应用场景中,用户会使用多个同型号的存储设备来存储数据。出于管理的便利性,用户可能针对这些存储设备使用相同的用户原始口令,即使这样的场景下,也要防止利用拆解的已经授权的存储设备的控制器122应用于未经授权的存储设备来访问未经授权的存储设备的数据。不仅如此,还需要满足用户加密密钥在使用中可被更新。
用户通过主机11产生IO命令与密钥管理命令。这些命令会经由接口121暂存在DRAM 124中。命令处理单元125依序自DRAM 124取出命令进行处理。以密钥管理命令为例,命令处理单元125指示密钥管理单元126对用户密钥进行处理,可能是设定或更新用户加密密钥。用户加密密钥包括用户原始口令密文(C_Pin_Hash)及数据原始密钥加密值(C_TRNG_Hash),其中用户原始口令密文(C_Pin_Hash)是基于用户口令与控制器122的识别码进行加密所产生的密钥,而数据原始密钥加密值(C_TRNG_Hash)是基于用户口令与真随机数进行加密所产生的密钥。用户加密密钥受到密钥管理单元126的管理与保存,命令处理单元125无法直接访问用户加密密钥。每个存储设备12的控制器122载有相对应的识别码。控制器122的识别码在控制器122制造过程中被产生并写入于控制器122内,即使采用相同的生成流程与工艺,所生成的控制器122各自具有不同的识别码。
当存储设备12收到IO命令时,命令处理单元125会指示密钥管理单元126对欲访问的用户数据进行加密和/或解密。如果IO命令是读取数据,则密钥管理单元126基于用户原始口令密文(C_Pin_Hash)及数据原始密钥加密值(C_TRNG_Hash),对从NVM阵列123读出的用户数据进行解密,并将解密后的数据直接通过接口121发送给主机11。如果IO命令是写入数据,则密钥管理单元126基于用户原始口令密文(C_Pin_Hash)及数据原始密钥加密值(C_TRNG_Hash)对传输至存储设备12的用户数据进行加密,并将加密后的用户数据写入NVM阵列123中。
综上所述,密钥管理单元126会根据命令处理单元125的指示对用户数据进行加密或解密,过程中命令处理单元125无法取得用户原始口令密文(C_Pin_Hash)及数据原始密钥加密值(C_TRNG_Hash)的信息,以避免信息或数据外泄。
为了确保密钥信息的安全,在一些特定的情境下,例如用户主动更新(如重设、修改)用户口令密文及数据密钥加密值,或是主机11定期提醒用户更新用户口令密文及数据密钥加密值,图1的***便会启动更新密钥的流程。
本发明的第一实施例是一种应用在图1***中的密钥更新装置,用来更新用户原始口令密文(C_Pin_Hash)及数据原始密钥加密值(C_TRNG_Hash),也就是获得用户更新口令密文(New C_Pin_Hash)及数据更新密钥加密值(New C_TRNG_Hash)。此密钥更新装置可以是密钥管理单元126,或是控制器122中的其他单元。
图2示出此实施例的密钥更新装置的结构示意图。
如图2所示,密钥更新装置21连接至片外存储单元22,片外存储单元22可以是图1的DRAM 124、NVM阵列123或是存储设备12中的其他存储单元,例如或非型闪存(NORFlash),用以存储原始或更新后的用户加密密钥。密钥更新装置21包括哈希模块211、一次可编程模块212、真随机数产生模块213、加密模块214和解密模块215。
哈希模块211用以根据哈希算法SM3标准的哈希算法对输入数据进行哈希运算。SM3是一种密码散列函数标准,本发明实施例中的SM3算法是例如由国家密码管理局于2012年03月21日发布,相关标准为“GM/T 0004-2012《SM3密码杂凑算法》”、或者由国家密码管理局于2017年03月1日实施的,相关标准为“GB/T 32905-2016信息安全技术SM3密码杂凑算法。SM3主要用于数字签名及验证、消息认证码生成及验证、随机数生成等,其安全性及效率与SHA-256相当。可选地,诸如MD5、SHA等哈希算法也可应用于根据本申请实施例的哈希模块211。
一次可编程模块212的一种实施态样为一次可编程(One Time Programmable,OTP)存储器,这种存储器的生命周期内只可以写入(编程)一次,编程后就再也无法修改了。例如用户通过编程将OTP存储器的值写为0xFFFFFFFE,其值将永远保持为0xFFFFFFFE,无法再改写为其他值了。
真随机数产生模块213是一种硬件随机数发生器(TRNG),用以根据物理过程而不是计算机程序生成随机数。这样的设备通常是基于一些能生成低等级、统计学上随机的“噪声”信号的微观现象,如热力学噪声、光电效应和量子现象等来产生随机数的。这些物理现象在理论上是完全不可测也不可控的,因此具备良好的随机性。真随机数产生模块213包括换能器、放大器和模拟数字转换器,换能器用来将前述的微观现象的某些效果转换为电信号,放大器用来将其电信号的振幅放大到宏观级别,模拟数字转换器则用来将其输出转变成二进制的数字。通过重复采样这些随机信号,一系列的随机数得以生成。
加密模块214用来根据例如SM4标准的加密算法对输入数据进行加密计算。SM4是一种分组密码标准,由国家密码管理局于2012年3月21日发布。相关标准为“GM/T0002-2012《SM4分组密码算法》”。SM4主要用于数据加密,分组长度与密钥长度均为128比特。可选地,诸如AES等加密算法也可应用于根据本申请实施例的加密模块214。加密模块214的输入包括待加密数据的明文与密钥,加密模块214用密钥对明文数据加密后输出加密后的密文。
解密模块215用来根据例如SM4准的解密算法对输入数据进行解密。其将密文分成多个等长的模块,使用SM4算法和对称密钥对每组分别进行解密。解密模块215的输入包括待解密的密文数据与密钥,解密模块215用密钥对密文解密后输出解密后的明文数据。
在此发明的实施例中,哈希模块211、加密模块214及解密模块215,均是对输入自身的数据进行按照上述描述的方式进行处理,并将数据处理结果进行输出。输出的目的模块由各个模块的接口及各个模块之间的耦合关系决定。示例性地如图2所示,一次可编程模块212与真随机数产生模块213各自的输出被耦合到哈希模块211的输入,哈希模块211的输出被耦合到加密模块214与解密模块215的输出。
本领域技术人员可以理解地,诸如SM3、SM4、MD5、AES等算法可由硬件、软件或其组合实现。在例如中国专利申请201910577949.0、202010285739.7中提供了硬件实现的SM4/AES加密电路。
在此实施例中,密钥更新流程分为3个阶段:口令认证阶段、密钥计算阶段及口令设置阶段。口令认证阶段用以识别用户是否为合法用户以及识别控制器122是否安装正确。在确认口令无误后进入密钥计算阶段,将用户数据密钥的明文解出。最后进入口令设置阶段,搭配解出的该明文、新的用户口令、控制器122的识别码和真随机数进行加密,获得用户更新口令密文(New C_Pin_Hash)及数据更新密钥加密值(New C_TRNG_Hash)。以下将针对每个阶段做详细说明。
图3示出此实施例在口令认证阶段中的流程图。
在步骤301中,密钥更新装置21接收来自用户通过主机11输入的用户原始口令。在步骤302中,自用户原始口令中选定原始口令特定位数。在步骤303中,读取控制器122的识别码。在步骤304中,自控制器122的识别码中选定识别码特定位数。在步骤305中,拼接原始口令特定位数及识别码特定位数,以形成拼接数列。本实施例中,步骤301-305可由密钥更新装置21的特定电路或是由控制器122的处理单元实现。可选地,密钥更新装置21接收的是例如步骤305得到的拼接数列,密钥更新装置21将该拼接数列输入哈希模块211。
在步骤306中,哈希模块211实现SM3算法,将输入到哈希模块211的用户原始口令与识别码进行转换,以获得用户原始密钥哈希值(Pin_Hash D)。更详细来说,当哈希模块211将用户原始口令与识别码进行转换时,是将前述步骤305获得的拼接数列进行转换,以获得用户原始密钥哈希值(Pin_Hash D)。可选地,用户原始口令与识别码并不限于该拼接数列,相应地,哈希模块211是对输入的数据进行处理,相当于对该输入的数据执行SM3算法。进一步可选地,哈希模块211能够处理预设长度的数据,拼接数列的长度等于该预设长度。例如,预设长度为128位、256位等,预设长度可根据需求进行配置,本发明不对预设长度做限制。
在此实施例中,原始口令特定位数为用户原始口令的前128位元素,且识别码特定位数亦为识别码的前128位元素。可选地,原始口令特定位数的长度不等于识别码特定位数的长度。例如,原始口令特定位的长度为128位,而识别码特定位数的长度为64位。本实施例中原始口令特定位数及识别码特定位数的长度可根据需求进行设置,在此不做限定。在一种情况下,当形成拼接数列时,可以直接将原始口令特定位数及识别码特定位数前后相连,原始口令特定位数或识别码特定位数在前均可。在另一种情况下,可以将原始口令特定位数及识别码特定位数以特定规则重新排列而成,例如随机重新排列,或是将原始口令特定位数及识别码特定位数间隔排列。不论此实施例采用何种规则形成拼接数列,所形成的拼接数列的长度是固定。
在步骤307中,一次可编程模块212输出至哈希模块211随机数据(TRNG Data),此随机数据(TRNG Data)即是先前写入一次可编程模块212且无法修改的值。例如,密钥更新装置21在将拼接数列输入哈希模块211时,还向一次可编程模块212发送一个指示信号,从而触发一次可编程模块212执行步骤307。响应于接收到随机数据(TRNG Data),进行步骤308,哈希模块211实现SM3算法,对随机数据(TRNG Data)进行转换,以获得随机数据哈希值(Hash_0)。本实施中,步骤307和步骤308并没有明确的先后顺序,例如,哈希模块211先接收到随机数据(TRNG Data)则先执行步骤307。进一步,哈希模块211具备同时进行两次运算的能力,则步骤307和步骤308可同时执行。
响应于接收到随机数据(TRNG Data)以及户原始密钥哈希值(Pin_Hash D),执行步骤309,加密模块214基于随机数据哈希值(Hash_0),利用SM4算法将用户原始密钥哈希值(Pin_Hash D)进行加密,以获得用户原始密文基准值(C_Pin_Hash_R)。在一种情况下,加密模块214利用SM4算法以随机数据哈希值(Hash_0)的前128位作为密钥,并将用户原始密钥哈希值(Pin_Hash D)的前128位作为明文进行加密,获得的用户原始密文基准值(C_Pin_Hash_R)即为密文,亦为128位。即本实施方式中的任一加密并不改变被加密的数据长度,加密前的明文和加密后的密文原则上长度相同。由步骤307至步骤309可知,加密模块214是基于一次可编程模块212中不可变的随机数据(TRNG Data),对用户原始密钥哈希值(Pin_Hash D)进行加密,以获得用户原始密文基准值(C_Pin_Hash_R)。
在步骤310中,密钥更新装置21自片外存储单元22取出用户原始口令密文(C_Pin_Hash)。步骤310在步骤305之后执行即可。在步骤311中,密钥更新装置21判断存储在片外存储单元22的用户原始口令密文(C_Pin_Hash)与用户原始密文基准值(C_Pin_Hash_R)是否相同。
可选地,密钥更新装置21还包括判断模块,将用户原始口令密文(C_Pin_Hash)和用户原始密文基准值(C_Pin_Hash_R)输入判断模块后,由判断模块执行步骤311。判断结果如相同,表示用户口令正确,且控制器122亦未被装设在其他存储设备12上,从而认证通过。如果用户原始口令密文(C_Pin_Hash)与用户原始密文基准值(C_Pin_Hash_R)不相同,则表示用户口令错误,或NVM芯片被置换成其他NVM芯片了,认证不通过,这时执行步骤313,停止更新密钥。进一步,在判断结果为不相同时,密钥更新装置21生成认证失败信息,以告知主机11当前输入的用户口令不正确或者控制器122未被正确地安装在存储设备12中,认证失败的具体原因则交由主机11去确定。
在认证成功后,执行步骤312,进入密钥计算阶段,哈希模块211在此阶段将用户更新口令与控制器122的识别码进行转换,生成新的密钥。
进一步可选地,在此实施例中可以设定认证失败而重新认证的次数,例如设定为5次,也就是在步骤311中判断用户原始口令密文(C_Pin_Hash)与用户原始密文基准值(C_Pin_Hash_R)不相同时,密钥更新装置21会发送错误信息至主机11,以通知用户认证失败并要求用户重新输入用户原始口令。当认证连续失败超过5次时,才会执行步骤313,停止密钥更新操作。一旦执行步骤313,密钥更新装置21需要重启、等待主机11的指示或者等待特定时间后(例如1小时)才能再次进行密钥的更新。
在口令认证阶段认证通过后,便会进入到密钥计算阶段。在此实施例中,例如密钥计算设置为一级,则仅进行一次的计算便可获得数据原始密钥。
图4示出此实施例在密钥计算阶段中的流程图。
在步骤401中,自片外存储单元22读取数据原始密钥加密值(C_TRNG_Hash)。在步骤402中,从步骤306中产生的用户原始密钥哈希值(Pin_Hash D)中选定密钥特定位数,例如密钥特定位数为用户原始密钥哈希值(Pin_Hash D)的前128位元素。在将用户原始密钥哈希值(Pin_Hash D)的选定密钥特定位数输入解密模块215之后,执行步骤403,解密模块215基于密钥特定位数,将数据原始密钥加密值(C_TRNG_Hash)进行解密,以获得数据原始密钥(TRNG_Hash)。更详细来说,解密模块215以密钥特定位数作为SM4算法所使用的密钥,将数据原始密钥加密值(C_TRNG_Hash)作为输入进行解密,以获得明文的数据原始密钥(TRNG_Hash)。例如,当密钥特定位数为用户原始密钥哈希值(Pin_Hash D)的前128位元素时,解密模块215亦取数据原始密钥(TRNG_Hash)的前128位元素,供解密时使用。
在密钥更新的口令设置阶段中,会生成新的用户口令密文及数据密钥加密值,也就是获得用户更新口令密文(New C_Pin_Hash)及数据更新密钥加密值(New C_TRNG_Hash)。
图5示出此实施例在口令设置阶段中生成用户更新口令密文(New C_Pin_Hash)的流程图。
首先,用户从主机11端输入新的用户口令(以下称用户更新口令)。在步骤501中,密钥更新装置21接收用户更新口令,用户更新口令是由用户自行重新设定的,有别于用户原始口令,并通过主机11传送到存储设备12。在步骤502中,自用户更新口令中选定更新口令特定位数。在步骤503中,读取控制器122的识别码。在步骤504中,自控制器122的识别码中选定识别码特定位数。在步骤505中,拼接更新口令特定位数及识别码特定位数,以形成拼接数列,拼接方式如前所述。可选地,密钥更新装置21接收到的除了用户更新口令之外,还可以是用户更新口令及控制器122的识别码、用户更新口令及控制器122的识别码拼接而成的数列、用户更新口令的特定位数和/或控制器122的识别码的特定位数、或者用户更新口令的特定位数和控制器122的识别码的特定位数拼接而成的数列。
哈希模块211接收到拼接数列之后,执行步骤506。哈希模块211实现SM3算法,将用户更新口令与识别码进行转换,以获得用户更新密钥哈希值(New Pin_hash D)。更详细来说,当哈希模块211将用户更新口令与识别码进行转换时,是基于前述的拼接数列进行转换,以获得用户更新密钥哈希值(New Pin_hash D)。哈希模块211将用户更新密钥哈希值(New Pin_hash D)输出至加密模块214。
响应于接收到用户更新口令,在步骤507。一次可编程模块212向哈希模块211输出随机数据(TRNG Data)。接收到随机数据(TRNG Data)后,哈希模块211执行步骤508,哈希模块211实现SM3算法,对随机数据(TRNG Data)进行转换,以获得随机数据哈希值(Hash_0)。哈希模块211将随机数据哈希值(Hash_0)输出至加密模块214。
在接收到随机数据哈希值(Hash_0)以及用户更新密钥哈希值(New Pin_hash D)后,加密模块214执行步骤509。这个步骤中加密模块214基于随机数据哈希值(Hash_0),利用SM4算法将用户更新密钥哈希值(New Pin_hash D)进行加密,以获得用户更新口令密文(New C_Pin_Hash)。在一种情况下,加密模块214利用SM4算法以随机数据哈希值(Hash_0)的前128位作为密钥,并将用户更新密钥哈希值(New Pin_hash D)的前128位作为明文进行加密,以获得用户更新口令密文(New C_Pin_Hash)。由步骤507至步骤509可知,加密模块214是基于一次可编程模块212的随机数据(TRNG Data),将用户更新密钥哈希值(New Pin_hash D)进行加密,以获得用户更新口令密文(New C_Pin_Hash)。最后执行步骤510,将用户更新口令密文(New C_Pin_Hash)存储至片外存储单元22,并删除用户原始口令密文(C_Pin_Hash)。至此,将用户原始口令密文(C_Pin_Hash)更新成用户更新口令密文(New C_Pin_Hash)。
图6示出此实施例在口令设置阶段中生成数据更新密钥加密值(New C_TRNG_Hash)的流程图。在此实施例中,例如密钥加密等级设置为一级,即仅进行一次的加密便可获得数据更新密钥加密值(New C_TRNG_Hash)。
在步骤601中,从步骤506中生成的用户更新密钥哈希值(New Pin_hash D)中选定密钥特定位数,例如密钥特定位数为用户更新密钥哈希值(New Pin_hash D)的前128位元素。在步骤602中,真随机数产生模块213产生真随机数(New TRNG_Data)。可选地,密钥更新装置21收到用户更新口令之后,向真随机数产生模块213发送指示信息,以指示真随机数产生模块213执行步骤602;或者,执行完步骤601之后,密钥更新装置21向真随机数产生模块213发送该指示信息,以指示真随机数产生模块213执行步骤602。真随机数产生模块213将真随机数(New TRNG_Data)输出至哈希模块211。
响应于收到真随机数(New TRNG_Data),哈希模块211执行步骤603,具体的,哈希模块211实现SM3算法,对真随机数(New TRNG_Data)进行转换,以获得真随机数哈希值(NewTRNG_Hash)。哈希模块211将真随机数哈希值(New TRNG_Hash)输出给加密模块214。在接收到真随机数哈希值(New TRNG_Hash)及用户更新密钥哈希值(New Pin_hash D)之后,加密模块214执行步骤604,加密模块214基于用户更新密钥哈希值(New Pin_hash D),对真随机数哈希值(New TRNG_Hash)进行加密,以获得数据更新密钥加密值(New C_TRNG_Hash)。
在一种情况下,加密模块214利用SM4算法以用户更新密钥哈希值(New Pin_hashD)的前128位作为密钥,并将真随机数哈希值(New TRNG_Hash)的前128位作为明文进行加密,获得的数据更新密钥加密值(New C_TRNG_Hash)为密文。换言之,加密模块214理论上是基于用户更新密钥哈希值(New Pin_hash D),对真随机数(New TRNG_Data)进行加密,以获得数据更新密钥加密值(New C_TRNG_Hash)。
最后执行步骤605,密钥更新装置21将数据更新密钥加密值(New C_TRNG_Hash)存储至片外存储单元22中,并删除数据原始密钥加密值(C_TRNG_Hash)。
至此,密钥更新装置21已更新用户口令密文及数据密钥加密值,也就是以用户更新口令密文(New C_Pin_Hash)来取代用户原始口令密文(C_Pin_Hash),以数据更新密钥加密值(New C_TRNG_Hash)来取代数据原始密钥加密值(C_TRNG_Hash)。更新后,当存储设备12针对用户数据进行加密/解密时,均以用户更新口令密文(New C_Pin_Hash)与数据更新密钥加密值(New C_TRNG_Hash)作为加密/解密的密钥。以命令处理单元125接收到的IO命令是写入数据为例,此实施例在对接收到的用户数据进行加密前,需要先认证用户的身份,此认证流程与图3的口令认证阶段的流程图相似,在此不再赘述。
图7展示了利用密钥加密值对用户数据加密的流程图。
本实施例中,密钥加密值包括数据更新密钥加密值(New C_TRNG_Hash)和数据原始密钥加密值(C_TRNG_Hash)。下面将以数据更新密钥加密值(New C_TRNG_Hash)为例对图7中的流程进行描述,可以理解地,使用数据原始密钥加密值(C_TRNG_Hash)实现用户数据加密时,仅需将图7中与数据更新密钥加密值(New C_TRNG_Hash)相关参数替换为数据原始密钥加密值(C_TRNG_Hash)即可。
在步骤701中,自片外存储单元22读取数据更新密钥加密值(New C_TRNG_Hash)。在步骤702中,自片外存储单元22读取用户更新密钥哈希值(New Pin_Hash D)并从中选定密钥特定位数,例如密钥特定位数为用户更新密钥哈希值(New Pin_Hash D)的前128位元素。在步骤703中,解密模块215基于密钥特定位数,对数据更新密钥加密值(New C_TRNG_Hash)进行解密。解密获得的明文可以是真随机数哈希值(New TRNG_Hash)或者另一个随机数哈希值(该随机数据也是由一次可编程模块输出,具体可以是一次可编程模块212或另一个一次可编程模块输出,但随机数据的取值不同于步骤307得到的随机数据的取值)。更详细来说,例如解密模块215以密钥特定位数作为SM4算法的密钥,将数据更新密钥加密值(New C_TRNG_Hash)作为输入进行解密,以获得明文状态的真随机数哈希值(New TRNG_Hash)。
接着执行密钥后处理。在步骤704中,一次可编程模块输出随机数据。该随机数据的取值不同于步骤307的随机数据或步骤703中涉及的又一随机数据的取值。例如,密钥更新装置21可以包括多个一次可编程模块,以产生不同的随机数据;又如,一次可编程模块212可产生1个以上的随机数据。虽然可将此实施例中出现的三个随机数据设置为取值相同(即仅由一次可编程模块212设置一个随机数据),但在该三个随机数据相同时,会降低数据加密的安全性。进一步可选地,步骤307、步骤703及步骤704中的三个随机数据中至少2个不同的取值。
在步骤705中,自又一随机数据中选定随机数据特定位数。在步骤706中,读取控制器122的识别码。在步骤707中,自控制器122的识别码中选定识别码特定位数。在步骤708中,拼接随机数据特定位数及识别码特定位数,以形成拼接数列(在随机数据不同时,得到的拼接数列不同于图3中的拼接数列),拼接方式如前所述。在步骤709中,哈希模块211实现SM3算法,对拼接数列进行转换,以获得后处理哈希值(Hash_3)。
在步骤710中,加密模块214基于真随机数哈希值(New TRNG_Hash),利用SM4算法将后处理哈希值(Hash_3)进行加密,以获得用户数据密钥。可选地,步骤710的另一种实施方式为,加密模块214基于又一随机数哈希值利用SM4算法将后处理哈希值(Hash_3)进行加密,以获得用户数据密钥。
在步骤711中,加密模块214基于用户数据密钥,利用SM4算法对用户数据进行加密,以获得用户数据密文。在步骤712中,密钥管理单元126将用户数据密文存储至NVM阵列123。至此,存储设备12基于用户更新口令密文(New C_Pin_Hash)与数据更新密钥加密值(New C_TRNG_Hash),完成对用户数据加密并存储的流程。
本发明的第二实施例是又一种应用在图1与图2***中的密钥更新装置,用来获得用户更新口令密文(New C_Pin_Hash)及数据更新密钥加密值(New C_TRNG_Hash)。在此实施例中,密钥更新流程同样包括口令认证阶段、密钥计算阶段及口令设置阶段。
此实施例在口令认证阶段中的流程与图3的流程无异,不再赘述。在密钥计算阶段中,此实施例与第一实施例不同处在于,此实施例的密钥计算等级可设置为二级及以上,也就是进行至少两次的计算才能获得数据原始密钥。相应地,此实施例的片外存储单元22除了存储有用户原始口令密文(C_Pin_Hash)外,还存储有第一数据原始密钥加密值(C_TRNG_Hash_1)、第二数据原始密钥加密值(C_TRNG_Hash_2)、……、以及第n数据原始密钥加密值(C_TRNG_Hash_n),n为大于或等于3的整数,且n为预设的密钥计算等级。为了便于描述,下面将以密钥计算等级设置为二级为例举例说明。可以理解地,若密钥计算等级设置为多级(三级及以上)时,本实施例中的第二级就相当于多级中的最后一级,多级中的第一级和中间级则与本实施例中第一级相同地处理。
图8示出此实施例提供的密钥计算阶段的流程图。
在步骤801中,自片外存储单元22读取第一数据原始密钥加密值(C_TRNG_Hash_1)及第二数据原始密钥加密值(C_TRNG_Hash_2)。在步骤802中,从步骤306中产生的用户原始密钥哈希值(Pin_Hash D)中选定密钥特定位数,例如密钥特定位数同样为用户原始密钥哈希值(Pin_Hash D)的前128位元素。
在步骤803中,执行第一级的密钥计算,解密模块215基于密钥特定位数,将第一数据原始密钥加密值(C_TRNG_Hash_1)进行解密,以获得第一数据原始密钥(TRNG_Hash_1)。更详细来说,解密模块215以密钥特定位数作为SM4算法的密钥,将第一数据原始密钥加密值(C_TRNG_Hash_1)作为输入进行解密,以获得明文状态的第一数据原始密钥(TRNG_Hash_1)。当密钥特定位数为用户原始密钥哈希值(Pin_Hash D)的前128位元素时,解密模块215亦可取第一数据原始密钥(TRNG_Hash_1)的前128位元素。解密模块215保留的第一数据原始密钥的长度为预设长度或者根据下一级可处理的数据长度确定,在此不进行限定。
在步骤804中,执行第二级的密钥计算,解密模块215基于第一数据原始密钥(TRNG_Hash_1),将第二数据原始密钥加密值(C_TRNG_Hash_2)进行解密,以获得第二数据原始密钥(TRNG_Hash_2)。更详细来说,解密模块215以第一数据原始密钥(TRNG_Hash_1)作为SM4算法的密钥,将第二数据原始密钥加密值(C_TRNG_Hash_2)作为输入进行解密,以获得明文的第二数据原始密钥(TRNG_Hash_2)。在此步骤中,解密模块215亦取第二数据原始密钥(TRNG_Hash_2)的前128位元素,供口令设置阶段中使用。
再举例来说,当密钥计算等级为5级时,则第1级的密钥计算与步骤803相同,第5级的密钥计算与步骤804相同。第2-4级的密钥计算与步骤803类似,区别在于前一级输出的数据原始密钥或其特定位数作为下一级计算中的密钥特定位数(或作为下一级的密钥)。
在口令设置阶段中,新的用户口令密文及数据密钥加密值会被生成,也就是获得用户更新口令密文(New C_Pin_Hash)及数据更新密钥加密值(New C_TRNG_Hash)。在此实施例中,数据更新密钥加密值(New C_TRNG_Hash)包括第一数据更新密钥加密值(New C_TRNG_Hash_1)及第二数据更新密钥加密值(New C_TRNG_Hash_2)。
此实施例生成用户更新口令密文(New C_Pin_Hash)的流程可参照图5的流程,不再赘述。
图9示出此实施例在口令设置阶段中生成第一数据更新密钥加密值(New C_TRNG_Hash_1)及第二数据更新密钥加密值(New C_TRNG_Hash_2)的流程图。与第一实施例不同处在于,此实施例的密钥加密设置为二级,也就是需要进行两次的加密以分别获得第一数据更新密钥加密值(New C_TRNG_Hash_1)及第二数据更新密钥加密值(New C_TRNG_Hash_2)。
在步骤901中,自用户更新密钥哈希值(New Pin_hash D)中选定密钥特定位数,例如密钥特定位数为用户更新密钥哈希值(New Pin_hash D)的前128位元素。在步骤902中,真随机数产生模块213产生真随机数(New TRNG_Data)。在步骤903中,哈希模块211实现SM3算法,对真随机数(New TRNG_Data)进行转换,以获得真随机数哈希值(New TRNG_Hash)。在步骤904中,执行第一级密钥加密,加密模块214基于用户更新密钥哈希值(New Pin_hashD),对真随机数哈希值(New TRNG_Hash)进行加密,以获得第一数据更新密钥加密值(NewC_TRNG_Hash_1)。
在一种情况下,加密模块214利用SM4算法以用户更新密钥哈希值(New Pin_hashD)的前128位作为密钥,并将真随机数哈希值(New TRNG_Hash)的前128位作为明文进行加密,获得的第一数据更新密钥加密值(New C_TRNG_Hash_1)为密文。换言之,加密模块214理论上是基于用户更新密钥哈希值(New Pin_hash D),对真随机数(New TRNG_Data)进行加密,以获得第一数据更新密钥加密值(New C_TRNG_Hash_1)。
在步骤905中,执行第二级密钥加密,加密模块214基于真随机数哈希值(NewTRNG_Hash),对在步骤804中生成的第二数据原始密钥(TRNG_Hash_2)进行加密,以获得第二数据更新密钥加密值(New C_TRNG_Hash_2)。
在一种情况下,加密模块214利用SM4算法以真随机数哈希值(New TRNG_Hash)的前128位作为密钥,并将第二数据原始密钥(TRNG_Hash_2)的前128位作为明文进行加密,获得的第二数据更新密钥加密值(New C_TRNG_Hash_2)为密文。
最后执行步骤906,将第一数据更新密钥加密值(New C_TRNG_Hash_1)及第二数据更新密钥加密值(New C_TRNG_Hash_2)存储至片外存储单元22中,并删除第一数据原始密钥加密值(C_TRNG_Hash_1)与第二数据原始密钥加密值(C_TRNG_Hash_2)。
至此,密钥更新装置21已更新用户口令密文及数据密钥加密值,也就是以用户更新口令密文(New C_Pin_Hash)来取代用户原始口令密文(C_Pin_Hash),以第一数据更新密钥加密值(New C_TRNG_Hash_1)来取代第一数据原始密钥加密值(C_TRNG_Hash_1),以第二数据更新密钥加密值(New C_TRNG_Hash_2)来取代第二数据原始密钥加密值(C_TRNG_Hash_2)。未来存储设备12针对用户数据进行加密/解密时,均以用户更新口令密文(New C_Pin_Hash)、第一数据更新密钥加密值(New C_TRNG_Hash_1)及第二数据更新密钥加密值(New C_TRNG_Hash_2)作为加密/解密的密钥。
需要理解的是,本发明中诸如步骤302-305、步骤401-402、步骤502-505和步骤601之类的步骤可由密钥更新装置21中实例化的一个或多个硬件电路执行,亦可由处理器通过运行特定程序实现。
在用户身份认证通过后,可进行加密并存储用户数据的流程,图10示出此实施例进行加密用户数据的流程图。
在步骤1001中,自片外存储单元22读取第一数据更新密钥加密值(New C_TRNG_Hash_1)及第二数据更新密钥加密值(New C_TRNG_Hash_2)。在步骤1002中,从步骤706中生成的用户更新密钥哈希值(New Pin_Hash D)中选定密钥特定位数。例如密钥特定位数为用户更新密钥哈希值(New Pin_Hash D)的前128位元素。
在步骤1003中,解密模块215基于密钥特定位数,将第一数据更新密钥加密值(NewC_TRNG_Hash_1)进行解密,以获得真随机数哈希值(New TRNG_Hash)。更详细来说,解密模块215以密钥特定位数作为SM4的密钥,将第一数据更新密钥加密值(New C_TRNG_Hash_1)作为输入进行解密,以获得明文的真随机数哈希值(New TRNG_Hash)。在步骤1004中,解密模块215进一步基于真随机数哈希值(New TRNG_Hash),将第二数据更新密钥加密值(NewC_TRNG_Hash_1)进行解密,以获得第二数据原始密钥(TRNG_Hash_2)。更详细来说,解密模块215以真随机数哈希值(New TRNG_Hash)作为SM4的密钥,将第二数据更新密钥加密值(New C_TRNG_Hash_2)作为输入进行解密,以获得明文的第二数据原始密钥(TRNG_Hash_2)。
接着执行密钥后处理。在步骤1005中,一次可编程模块212输出随机数据(TRNGData)。在步骤1006中,自随机数据(TRNG Data)中选定随机数据特定位数。在步骤1007中,读取控制器122的识别码。在步骤1008中,自控制器122的识别码中选定识别码特定位数。在步骤1009中,拼接随机数据特定位数及识别码特定位数,以形成拼接数列,拼接方式如前所述。在步骤1100中,哈希模块211执行SM3算法,对拼接数列进行转换,以获得后处理哈希值(Hash_3)。在步骤1011中,加密模块214基于第二数据原始密钥(TRNG_Hash_2),利用SM4将后处理哈希值(Hash_3)进行加密,以获得用户数据密钥。在步骤1012中,加密模块214基于用户数据密钥,利用SM4将用户数据进行加密,以获得用户数据密文。在步骤1013中,密钥管理单元126将用户数据密文存储至NVM阵列123。至此,存储设备12基于用户更新口令密文(New C_Pin_Hash)、第一数据更新密钥加密值(New C_TRNG_Hash_1)及第二数据更新密钥加密值(New C_TRNG_Hash_2),完成对用户数据加密并存储的流程。
此实施例采用二级的密钥计算与密钥加密,使得密钥的安全程度高于第一实施例。
本发明的第三实施例是一种信息处理设备,包括处理器、存储器及密钥更新装置。本实施例中的密钥更新装置例如是如图2中的密钥更新装置21。存储器存储有涉及密钥更新的计算机程序代码,当计算机程序代码由处理器运行时,密钥更新装置进行如第一实施例或第二实施例的密钥更新流程。
本发明的第四实施例是一种信息处理设备,包括处理器及存储器,存储器存储有密钥更新的计算机程序代码,当计算机程序代码由处理器运行时,执行前述各实施例所述的流程,具体来说,即执行图3至图10所示的流程。
本发明利用一次可编程的随机数据,将新的用户口令搭配对应至存储装置的识别码进行加密,以获得用户更新口令密文,并利用真随机数进行至少一级的加密,以获得至少一个数据更新密钥加密值,这样的密钥更新方式不仅便捷,且密钥安全性佳。
需要说明的是,为了简明的目的,本发明将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本发明的方案并不受所描述的动作的顺序限制。因此,依据本发明的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本发明所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本发明某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本发明对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本发明某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本发明的公开和教导,本领域技术人员可以理解本发明所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个***,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种应用在存储设备上的用户加密密钥的密钥更新方法,所述用户加密密钥包括用户原始口令密文(C_Pin_Hash)及数据原始密钥加密值(C_TRNG_Hash),所述密钥更新方法包括:
接收用户更新口令;
利用哈希算法将所述用户更新口令与所述存储设备的识别码进行转换,以获得用户更新密钥哈希值(New Pin_hash D);
获取一次可编程的随机数据(TRNG Data);
基于所述随机数据(TRNG Data),将所述用户更新密钥哈希值(New Pin_hash D)进行加密,以获得用户更新口令密文(New C_Pin_Hash),并取代用户原始口令密文(C_Pin_Hash);
产生真随机数(New TRNG_Data);以及
基于所述用户更新密钥哈希值(New Pin_hash D),对所述真随机数(New TRNG_Data)进行加密,以获得数据更新密钥加密值(New C_TRNG_Hash),并取代数据原始密钥加密值(C_TRNG_Hash)。
2.根据权利要求1所述的密钥更新方法,还包括:
利用哈希算法将用户原始口令与所述识别码进行转换,以获得用户原始密钥哈希值(Pin_Hash D);
基于所述随机数据(TRNG Data),将所述用户原始密钥哈希值(Pin_Hash D)进行加密,以获得用户原始密文基准值(C_Pin_Hash_R);
获取所述用户原始口令密文(C_Pin_Hash);以及
判断所述用户原始口令密文(C_Pin_Hash)与所述用户原始密文基准值(C_Pin_Hash_R)是否相同;
其中,如相同,则利用哈希算法将所述用户更新口令与所述识别码进行转换。
3.根据权利要求2所述的密钥更新方法,其中所述数据原始密钥加密值(C_TRNG_Hash)包括第一数据原始密钥加密值(C_TRNG_Hash_1)及第二数据原始密钥加密值(C_TRNG_Hash_2),所述密钥更新方法还包括:
自所述用户原始密钥哈希值(Pin_Hash D)中选定密钥特定位数;
获取所述第一数据原始密钥加密值(C_TRNG_Hash_1)及所述第二数据原始密钥加密值(C_TRNG_Hash_2);
基于所述密钥特定位数,将所述第一数据原始密钥加密值(C_TRNG_Hash_1)进行解密,以获得第一数据原始密钥(TRNG_Hash_1);以及
基于所述第一数据原始密钥(TRNG_Hash_1),将所述第二数据原始密钥加密值(C_TRNG_Hash_2)进行解密,以获得第二数据原始密钥(TRNG_Hash_2)。
4.根据权利要求3所述的密钥更新方法,其中所述数据更新密钥加密值(New C_TRNG_Hash)包括第一数据更新密钥加密值(New C_TRNG_Hash_1),所述对所述真随机数(NewTRNG_Data)进行加密的步骤包括:
利用哈希算法对所述真随机数(New TRNG_Data)进行转换,以获得真随机数哈希值(New TRNG_Hash);以及
基于所述用户更新密钥哈希值(New Pin_hash D),将所述真随机数哈希值(New TRNG_Hash)进行加密,以获得所述第一数据更新密钥加密值(New C_TRNG_Hash_1)。
5.根据权利要求3或4所述的密钥更新方法,其中所述数据更新密钥加密值(New C_TRNG_Hash)包括第二数据更新密钥加密值(New C_TRNG_Hash_2),所述对所述真随机数(New TRNG_Data)进行加密的步骤还包括:
基于所述真随机数哈希值(New TRNG_Hash),将所述第二数据原始密钥(TRNG_Hash_2)进行加密,以获得所述第二数据更新密钥加密值(New C_TRNG_Hash_2)。
6.一种信息处理设备,包括处理器及存储器,所述存储器存储有程序代码,当所述程序代码由所述处理器运行时,执行权利要求1-5任一项所述的方法。
7.一种配置于存储设备中的密钥更新装置,连接至片外存储单元,所述片外存储单元存储有用户加密密钥,所述用户加密密钥包括用户原始口令密文(C_Pin_Hash)及数据原始密钥加密值(C_TRNG_Hash),所述密钥更新装置包括:
哈希模块,用以将用户更新口令与所述存储设备的识别码进行转换,以获得用户更新密钥哈希值(New Pin_hash D);
一次可编程模块,用以存储一次可编程的随机数据(TRNG Data);
真随机数产生模块,用以产生真随机数(New TRNG_Data);
加密模块,用以基于所述随机数据(TRNG Data),将所述用户更新密钥哈希值(NewPin_hash D)进行加密,以获得用户更新口令密文(New C_Pin_Hash),且基于所述用户更新密钥哈希值(New Pin_hash D),对所述真随机数(New TRNG_Data)进行加密,以获得数据更新密钥加密值(New C_TRNG_Hash)。
8.根据权利要求7所述的密钥更新装置,还包括解密模块,所述数据原始密钥加密值(C_TRNG_Hash)包括第一数据原始密钥加密值(C_TRNG_Hash_1)及第二数据原始密钥加密值(C_TRNG_Hash_2);
其中,所述解密模块基于密钥特定位数,将所述第一数据原始密钥加密值(C_TRNG_Hash_1)进行解密,以获得第一数据原始密钥(TRNG_Hash_1);所述解密模块还基于所述第一数据原始密钥(TRNG_Hash_1),将所述第二数据原始密钥加密值(C_TRNG_Hash_2)进行解密,以获得第二数据原始密钥(TRNG_Hash_2);
其中,所述密钥特定位数是自所述用户原始密钥哈希值(Pin_Hash D)中选定的。
9.根据权利要求8所述的密钥更新装置,其中所述数据更新密钥加密值(New C_TRNG_Hash)包括第一数据更新密钥加密值(New C_TRNG_Hash_1),所述哈希模块对所述真随机数(New TRNG_Data)进行转换,以获得真随机数哈希值(New TRNG_Hash),所述加密模块基于所述用户更新密钥哈希值(New Pin_hash D),将所述真随机数哈希值(New TRNG_Hash)进行加密,以获得所述第一数据更新密钥加密值(New C_TRNG_Hash_1)。
10.根据权利要求8或9所述的密钥更新装置,其中所述数据更新密钥加密值(New C_TRNG_Hash)包括第二数据更新密钥加密值(New C_TRNG_Hash_2),所述加密模块基于所述真随机数哈希值(New TRNG_Hash),将所述第二数据原始密钥(TRNG_Hash_2)进行加密,以获得所述第二数据更新密钥加密值(New C_TRNG_Hash_2)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110252142.7A CN113079001B (zh) | 2021-03-08 | 2021-03-08 | 密钥更新方法、信息处理设备及密钥更新装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110252142.7A CN113079001B (zh) | 2021-03-08 | 2021-03-08 | 密钥更新方法、信息处理设备及密钥更新装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113079001A true CN113079001A (zh) | 2021-07-06 |
CN113079001B CN113079001B (zh) | 2023-03-10 |
Family
ID=76612146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110252142.7A Active CN113079001B (zh) | 2021-03-08 | 2021-03-08 | 密钥更新方法、信息处理设备及密钥更新装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113079001B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114726543A (zh) * | 2022-04-12 | 2022-07-08 | 北京信息科技大学 | 报文链构建及密钥链生成、报文发送及接收方法及装置 |
CN115361168A (zh) * | 2022-07-15 | 2022-11-18 | 北京海泰方圆科技股份有限公司 | 一种数据加密方法、装置、设备及介质 |
CN117668936A (zh) * | 2024-01-31 | 2024-03-08 | 荣耀终端有限公司 | 数据处理方法及相关装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103427984A (zh) * | 2012-05-24 | 2013-12-04 | 三星电子株式会社 | 用于使用设备id和用户验证信息来生成安全密钥的装置 |
JP2016192715A (ja) * | 2015-03-31 | 2016-11-10 | 株式会社東芝 | 暗号鍵管理システムおよび暗号鍵管理方法 |
US20190052634A1 (en) * | 2017-08-08 | 2019-02-14 | American Megatrends, Inc. | Dynamic generation of key for encrypting data in management node |
CN111082935A (zh) * | 2019-12-31 | 2020-04-28 | 江苏芯盛智能科技有限公司 | 一种媒体密钥生成方法、装置及基于媒体密钥的终端 |
CN111131130A (zh) * | 2018-10-30 | 2020-05-08 | 北京忆芯科技有限公司 | 密钥管理方法及*** |
-
2021
- 2021-03-08 CN CN202110252142.7A patent/CN113079001B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103427984A (zh) * | 2012-05-24 | 2013-12-04 | 三星电子株式会社 | 用于使用设备id和用户验证信息来生成安全密钥的装置 |
JP2016192715A (ja) * | 2015-03-31 | 2016-11-10 | 株式会社東芝 | 暗号鍵管理システムおよび暗号鍵管理方法 |
US20190052634A1 (en) * | 2017-08-08 | 2019-02-14 | American Megatrends, Inc. | Dynamic generation of key for encrypting data in management node |
CN111131130A (zh) * | 2018-10-30 | 2020-05-08 | 北京忆芯科技有限公司 | 密钥管理方法及*** |
CN111082935A (zh) * | 2019-12-31 | 2020-04-28 | 江苏芯盛智能科技有限公司 | 一种媒体密钥生成方法、装置及基于媒体密钥的终端 |
Non-Patent Citations (1)
Title |
---|
李兴望等: "一种带有盐度值的安全哈希加密算法的设计与实现", 《漳州师范学院学报(自然科学版)》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114726543A (zh) * | 2022-04-12 | 2022-07-08 | 北京信息科技大学 | 报文链构建及密钥链生成、报文发送及接收方法及装置 |
CN114726543B (zh) * | 2022-04-12 | 2023-07-18 | 北京信息科技大学 | 基于报文链的密钥链生成、报文发送及接收方法及装置 |
CN115361168A (zh) * | 2022-07-15 | 2022-11-18 | 北京海泰方圆科技股份有限公司 | 一种数据加密方法、装置、设备及介质 |
CN115361168B (zh) * | 2022-07-15 | 2023-05-23 | 北京海泰方圆科技股份有限公司 | 一种数据加密方法、装置、设备及介质 |
CN117668936A (zh) * | 2024-01-31 | 2024-03-08 | 荣耀终端有限公司 | 数据处理方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113079001B (zh) | 2023-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021013245A1 (zh) | 一种数据密钥保护方法、***及电子设备和存储介质 | |
KR102182894B1 (ko) | 패스워드 기반의 인증을 수행하는 사용자 장치 및 그것의 패스워드 등록 방법 및 인증 방법 | |
CN102138300B (zh) | 消息认证码预计算在安全存储器中的应用 | |
CN101291224B (zh) | 在通信***中处理数据的方法和*** | |
US20200153808A1 (en) | Method and System for an Efficient Shared-Derived Secret Provisioning Mechanism | |
US9537657B1 (en) | Multipart authenticated encryption | |
KR20190052631A (ko) | 물리적으로 복제 불가능한 기능의 원격 재등록 | |
JP6927981B2 (ja) | パスコード検証のためのフォワードセキュア型暗号技術を使用した方法、システム、及び装置。 | |
CN110825401B (zh) | 认证固件设定输入文档的方法与装置 | |
CN112906070B (zh) | 具有块密码侧信道攻击减轻的集成电路和IoT设备及相关方法 | |
WO2022083324A1 (zh) | 消息加密方法及装置、消息解密方法及装置、移动终端 | |
CN113079001B (zh) | 密钥更新方法、信息处理设备及密钥更新装置 | |
US11190511B2 (en) | Generating authentication information independent of user input | |
CN107944234B (zh) | 一种Android设备的刷机控制方法 | |
EP3563516A1 (en) | Pseudo-random generation of matrices for a computational fuzzy extractor and method for authentication | |
JP6991493B2 (ja) | データセキュリティを提供するメモリデバイス | |
US11722467B2 (en) | Secured communication from within non-volatile memory device | |
US9003197B2 (en) | Methods, apparatus and system for authenticating a programmable hardware device and for authenticating commands received in the programmable hardware device from a secure processor | |
CN111401901A (zh) | 生物支付设备的认证方法、装置、计算机设备和存储介质 | |
WO2019142307A1 (ja) | 半導体装置、更新データ提供方法、更新データ受取方法およびプログラム | |
KR100963417B1 (ko) | 보안 기능을 갖는 rfid 보안 장치 및 방법 | |
JP6246516B2 (ja) | 情報処理システム | |
KR102199464B1 (ko) | 컨소시엄 블록체인 참가 노드 간의 인증 방안 | |
CN117501271A (zh) | 通过利用物理不可克隆函数puf进行数据加密/解密向主机认证存储设备 | |
CN112291058A (zh) | 一种管理***的通讯方法及管理*** |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |