CN116094715A - 加密数据的方法及相关产品 - Google Patents

加密数据的方法及相关产品 Download PDF

Info

Publication number
CN116094715A
CN116094715A CN202310274721.0A CN202310274721A CN116094715A CN 116094715 A CN116094715 A CN 116094715A CN 202310274721 A CN202310274721 A CN 202310274721A CN 116094715 A CN116094715 A CN 116094715A
Authority
CN
China
Prior art keywords
parameter
ciphertext
data
plaintext
input
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
CN202310274721.0A
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.)
China Financial Certification Authority Co ltd
Original Assignee
China Financial Certification Authority Co ltd
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 China Financial Certification Authority Co ltd filed Critical China Financial Certification Authority Co ltd
Priority to CN202310274721.0A priority Critical patent/CN116094715A/zh
Publication of CN116094715A publication Critical patent/CN116094715A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及一种加密数据的方法及相关产品。其中,该方法包括:在针对流式输入的明文数据进行哈希运算时,确定在明文数据流式输入过程中单次输入数据的第一密文和第二密文;响应于所输入的明文数据满足预定条件,基于第一密文得到第一参数和第二参数,和基于第二密文得到第三参数;以及在执行对压缩函数的计算过程中,基于第一至第三参数确定压缩函数中的中间变量TT1和TT2,并更新哈希运算所涉及的寄存器,直至更新后的寄存器输出关于明文数据的哈希结果。通过本发明的方案,针对流式输入的明文函数进行哈希计算时,在整个算法实现过程中能够以密文方式对明文进行有效保护,使得全过程均不出现明文,提高了数据的安全性。

Description

加密数据的方法及相关产品
技术领域
本发明一般地涉及信息安全技术领域。更具体地,本发明涉及一种加密数据的方法、和执行前述方法的电子设备和计算机可读存储介质。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。
SM3算法是一种哈希算法,也叫摘要算法。所谓哈希算法就是指将一组数据输入得到一个固定长度的数据。理想的哈希算法具有3个特点:
1.单向性,其表示可以很容易从原文推导出哈希值,但是无法从哈希值推导原文。
2.一致性,其表示不管输入内容长短,输出长度是固定值,并且输出值在输出域分布均匀。
3.防碰撞性,其表示输入不同的情况下,输出的哈希值几乎不可能相等。
根据哈希算法的这些特性,哈希算法经常被用于数据摘要以及验证,消息认证码生成、验证以及随机数生成等。在具体应用中,传统的哈希算法虽然也支持流式输入数据的加密计算,但是在具体实现过程中,会存在安全隐患。例如,针对密码输入的应用场景,传统的哈希算法流式实现,在输入完成或者达到64字节之前密码在内存中都是明文形式存在,这可能被一些针对内存搜索、内存监听的攻击方式攻击,从而带来安全隐患。对此,目前还没有有效的解决方案。
发明内容
为了至少解决上述背景技术部分所描述的技术问题,本发明提出了一种加密数据的方案。利用本发明的方案,可以提高流式输入数据的加密过程的安全性。
鉴于此,本发明在如下的多个方面提供解决方案。
本发明的第一方面提供了一种加密数据的方法,所述方法包括:在针对流式输入的明文数据进行哈希运算时,确定在所述明文数据流式输入过程中单次输入数据的第一密文和第二密文;响应于所输入的明文数据满足预定条件,基于所述第一密文得到用于压缩函数的第一参数和第二参数,和基于所述第二密文得到用于压缩函数的第三参数,其中所述第一参数、所述第二参数和所述第三参数均为密文状态;以及在执行对所述压缩函数的计算过程中,基于所述第一参数、所述第二参数和所述第三参数确定所述压缩函数中的中间变量TT1和TT2,并更新所述哈希运算所涉及的寄存器,直至更新后的寄存器输出关于所述明文数据的哈希结果。
在一个实施例中,确定在所述明文数据流式输入过程中单次输入数据的第一密文和第二密文包括:计算所述明文数据流式输入过程中单次输入数据与临时密钥中对应字节之间的异或值,以得到所述第一密文;以及计算所述异或值与所述单次输入数据之间的差值,以得到所述第二密文。
在一个实施例中,所述方法还包括:获取一随机数组;以及
对所述随机数组进行初始化处理,以得到所述临时密钥。
在一个实施例中,基于所述第一密文得到用于压缩函数的第一参数和第二参数包括:对所述第一密文进行拓展以得到所述第一参数和所述第二参数。
在一个实施例中,基于所述第二密文得到用于压缩函数的第三参数包括:对所述第二密文进行整数合并处理,以得到所述第三参数,其中在整数合并处理过程中每隔4个字节处理进位和借位。
在一个实施例中,根据以下公式确定所述中间变量TT1:
TT1←FFj(A,B,C)+D+SS2+Wa[j]-Wb[j],Wa[j+4]=Wkey[j+4]
且j<16
Figure BDA0004136093400000031
其中,FFj为布尔函数,A、B、C和D为所述寄存器,j为所述压缩函数的迭代轮数,Wa为所述第一参数,W′a为所述第二参数,SS2为一中间参数,Wkey是基于所述临时密钥拓展所得的。
在一个实施例,根据以下公式确定所述中间变量TT2
TT2←GGj(E,F,G)+H+SS1+Wa[j]-Wb[j],j<16
Figure BDA0004136093400000032
其中,GGj为布尔函数,E、F、G和H为所述寄存器,j为所述压缩函数的迭代轮数,Wa为所述第一参数,W′a为所述第二参数,SS1为一中间参数,Wkey是基于所述临时密钥拓展所得的。
在一个实施例中,所述哈希算法包括SM3算法。
本发明的第二方面提供了一种电子设备,包括:处理器;以及存储器,其存储有加密数据的计算机指令,当所述计算机指令由所述处理器运行时,使得所述设备执行根据前文第一方面以及下文多个实施例中所述的方法。
本发明的第三方面提供了一种计算机可读存储介质,包括加密数据的程序指令,当所述程序指令由处理器执行时,使得实现根据前文第一方面以及下文多个实施例中的方法。
利用本发明所提供的方案,对于流式输入的明文数据,能够针对单次输入数据进行有效保护,并且整个哈算计算过程中相关数据均以密文方式进行计算,从而避免明文的出现。由此,可以有效提高流式输入数据的加密过程的安全性。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示出根据本发明一个实施例的加密数据的方法的流程图;
图2是示出根据本发明另一个实施例的加密数据的方法的流程图;
图3是示出根据本发明再一个实施例的加密数据的方法的流程图;以及
图4是示出根据本发明实施例的电子设备的结构图。
具体实施方式
下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
应当理解,本发明的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本发明的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施方式的目的,而并不意在限定本发明。如在本发明说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本发明说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
本申请所涉及的传统SM3算法可以理解为是SM3密码杂凑算法,其为国家商用密码杂凑算法标准。
发明人发现传统SM3算法在针对流式输入数据计算过程中安全性较差,其原因在于传统SM3算法实现过程中,所涉及的内存或寄存器中无法避免明文的出现。具体地,在传统SM3算法实现过程中,可以通过update函数持续输入数据同步做哈希,输入结束后调用final函数完成整个哈希计算。但是在流式哈希计算中,只有达到块长(64字节)的整数倍才会进行hash计算,在这之前原文在内存中以明文的形式存在。
相关技术虽然也有改进,但效果依然不理想。例如,开放源代码的软件库包Openssl中实现的SM3算法是根据国标GMT 0004-2012来实现的,根据一些开源平台(例如GitHub)中源码可以得知在计算哈希结果的时候中间变量中存储了明文值,所以不能满足隐藏明文的需求。又例如,相关技术中采用更改寄存器的初始值从而进一步保护计算的中间变量值,但是该方法没有针对扩展字进行保护,在输入信息不超过16字的时候,扩展字中也有出现明文相关信息,所以不适用于流输入需要保护明文的场景。再例如,还有一些相关技术可能针对每个字符进行加密,但是在后续计算过程中仍然需要先解密得到明文才能进行计算,这一过程中仍然无法避免明文的出现。
因此,不管是传统SM3算法的经典实现,还是如上相关技术中的方法,其在压缩函数或扩展字的计算中,内存、寄存器中会出现明文或者会闪现明文。这显然无法满足一些对安全性要求高的应用场景,特别是以流式输入方式输入数据的应用场景。例如,一些密码信息或其他个人敏感信息等在输入的过程中内存应尽量避免出现明文,在安全性要求较高的场景,最好能够实现全过程不出现明文。
基于此,发明人经研究发现,通过调整哈希算法的具体实现过程以使整个计算过程仅涉及密文,从而有效避免明文出现,以有效提高流式输入数据的加密过程的安全性。
下面结合附图来详细描述本发明的具体实施方式。
图1是示出根据本发明一个实施例的加密数据的方法100的示意图。
如图1所示,在步骤S101处,可以在针对流式输入的明文数据进行哈希运算时,确定在明文数据流式输入过程中单次输入数据的第一密文和第二密文。其中,前述的流式输入可以理解为是一种持续输入数据的数据输入方式,或者可以理解为是一种连续输入数据的数据输入方法,又或者可以理解为是一种依次输入数据的数据输入方式。流式输入的明文数据可以理解为是该明文数据中内容被持续或者连续或者依次输入。需要说明的是,这里对明文数据的具体类型不进行限制,例如可以是密码、一些其他敏感信息或者安全性要求较高且可以以流式方式输入的数据。在该明文数据输入过程中,可以对其单次输入数据进行加密处理,以得到第一密文和第二密文。由此,可以对明文中所有内容在输入阶段进行有效保护,避免明文被泄露。
以密码作为该明文数据为例对上述过程进行说明。密码(例如123456)中各个数字依次输入的过程可以理解为密码以流式方式输入,对于单次输入的数据(例如“1”、…、“6”中任一数字),可以获取各个数字的第一密文和第二密文,由此各个数字可以以密文方式保存,以提高数据输入阶段的安全性。需要说明的是,这里仅以密码为例进行说明,明文数据还可以包含的其他类型数据输入过程可参考上述过程,不再进行穷尽列举。
在得到第一密文和第二密文之后,在步骤S102处,响应于所输入的明文数据满足预定条件,基于前述的第一密文得到用于压缩函数的第一参数和第二参数,和基于前述第二密文得到用于压缩函数的第三参数。在一些示例性场景中,前述的预定条件包含完成所有内容的输入,或者输入达到预定块长(例如64字节或其整数倍),又或者其他能够触发数据扩展运算的条件。当所输入的明文数据达到上述预设条件时,可以通过对第一密文和第二密文的计算得到上述第一参数、第二参数和第三参数。该第一参数、第二参数和第三参数将以密文状态参与到后续的压缩函数的计算过程中。可以看出,这一过程无需对步骤S101中得到的密文进行解密,也即无需明文参与这一过程的计算,可有效确保数据的安全性。
最后,在步骤S103处,可以在执行对前述的压缩函数的计算过程中,基于前述第一参数、第二参数和第三参数确定压缩函数中的中间变量TT1和TT2,并更新哈希运算所涉及的寄存器,直至更新后的寄存器输出关于前述明文数据的哈希结果。在利用压缩函数进行迭代压缩过程中,具体利用前文计算得到的密文状态的第一参数、第二参数和第三参数来确定中间变量TT1和TT2,以通过中间变量TT1和TT2调整压缩函数实现对迭代压缩过程的调整,直至输出明文数据的哈希结果。可以看出,对于流式输入的明文数据,可以针对单次输入数据进行有效保护,并且参与哈算计算的相关数据均以密文状态存在,从而避免明文的出现或利用明文计算。由此,可以有效提高流式输入数据的加密过程的安全性。由此,针对一些安全需求高的场景,可以实现在整个输入过程以及哈希的计算过程中内存、寄存器中都不会出现明文,从而提高数据加密过程的安全性。
图2是示出根据本发明另一个实施例的加密数据的方法200的流程图。需要说明的是,方法200可以理解为是对方法100中步骤的进一步限定或者拓展。因此,前文结合图1的相关描述同样也适用于下文。
如图2所示,在步骤S201处,在针对流式输入的明文数据进行哈希运算时,可以计算明文数据流式输入过程中单次输入数据与临时密钥中对应字节之间的异或值,以得到第一密文,以及计算异或值与单次输入数据之间的差值,以得到第二密文。
在一些实施例中,前述的临时密钥可以通过随机数组来确定。具体地,在哈希算法初始化时,可以获取一随机数组,并对该随机数组进行初始化处理来得到该临时密钥。
在明文数据流式输入过程中,对单次输入数据与临时密钥中对应字节进行异或处理得到第一密文,再利用该异或值与单词输入数据之间的差值确定第二密文。以密钥为例对上述过程进行说明,例如密码“123456”流式输入过程中,对于输入的第一个数字“1”,先计算“1”和临时密钥中第一个字节之间的异或值,再利用该异或值与“1”之间的差值确定第二密文。对于输入的第二个数字“2”,先计算“2”和临时密钥中第二个字节之间的异或值,再利用该异或值与“2”之间的差值确定第二密文,依次完成对密码中所有内容的加密处理。需要说明的是,这里仅以密码作为流式输入的明文数据为例进行说明,并不对明文数据的具体类型进行限制,其他类型的明文数据得到第一密文和第二密文的过程也可以参考上述过程。
接着,在步骤S202处,响应于所输入的明文数据满足预定条件,可以通过拓展第一密文得到用于压缩函数的第一参数和第二参数,以及通过整合第二密文得到用于压缩函数的第三参数。
在一些实施例中,可以通过对前述的第一密文进行拓展以得到第一参数和第二参数。一些示例性应用场景中,当输入的明文数据满足预定块长或者完成所有内容输入之后等预设条件时,可以对第一密文做拓展以得到第一参数和第二参数。需要说明的是,当输入的明文数据完成所有内容的输入之后,所有内容依然不满足预定块长时,需要补位或者填充到预定块长(例如64字节或其整倍数)。具体补位或者填充原则可以参考传统SM3的填充或补位原则,例如,对于输入的明文数据m,假设m的长度为l比特,则首先将比特“1”添加到明文数据m的末尾,再添加k个“0”,k是满足l+1+k=≡448(mod512)的最小的非负整数。然后,再添加一个64为比特串,该比特串的长度用二进制表示。经补位或填充后的明文数据m的比特长度为512的倍数(也即64字节或其整数倍)。需要说明的是,这里仅示例性地对具体的补位或填充过程进行描述。
在一些实施例中,可以参考传统SM3算法标准中的拓展方式来实现对上述第一密文的拓展,以得到68个字密文状态的第一参数和第二参数。
在一些实施例中,可以通过对前文中的第二密文进行整数合并处理,以得到第三参数。其中,可以在整数合并处理过程中每隔4个字节处理进位和借位。具体地,对于第二密文可以每隔4个字节合并为一个32bit整数,合并规则为如果当前字节小于0,则将前一位字节值减1,并将当前字节值加256,如果当前字节大于256,则将前一位字节值加1,并将当前字节值减256。然后4个字节(每个字节8bit)从前到后排列为32bit并转换为整数,符号位和第一个字节保持相同。需要说明的是,这里仅示例性说明了第二密文的整合过程,具体可以根据应用需求调整相应的整合方式。需要说明的是,这里仅示例性地对具体的整合处理过程进行描述。
在得到第一参数、第二参数以及第三参数之后,在步骤S203处,可以在计算压缩函数过程中,修改中间变量TT1和TT2的计算方式,并重复修改后的压缩函数过程,直至更新后的寄存器输入关于明文数据的哈希结果。
在一些实施例中,可以通过公式(1)和(2)来确定中间变量TT1
Figure BDA0004136093400000091
Figure BDA0004136093400000092
其中,在公式(1)和(2)中,FFj为布尔函数,A、B、C和D为所述寄存器,j为所述压缩函数的迭代轮数,Wa为所述第一参数,W′a为所述第二参数,SS2为一中间参数,Wkey是基于所述临时密钥拓展所得的(具体临时密钥可使用与第一参数Wa同样的拓展方法得到Wkey)。
在一些实施例中,可以通过公式(3)和(4)来确定中间变量TT2
TT2←GGj(E,F,G)+H+SS1+Wa[j]-Wb[j],j<16 (3)
Figure BDA0004136093400000093
其中,在公式(3)和(4)中,GGj为布尔函数,E、F、G和H为所述寄存器,j为所述压缩函数的迭代轮数,Wa为所述第一参数,W′a为所述第二参数,SS1为一中间参数,Wkey是基于所述临时密钥拓展所得的(具体临时密钥可使用与第一参数Wa同样的拓展方法得到Wkey)。
可以看出,针对流式输入的明文函数进行哈希计算时,在数据的输入极阶段以及具体的哈希计算阶段(包括扩展和迭代压缩等)均能够以密文方式对明文进行有效保护,使得全过程均不出现明文,提高了数据的安全性,从而满足安全性要求高的场景的需求。
图3示意性地示出了根据本发明再一个实施例的加密数据的方法300的流程图。需要说明的是,方法300可以理解为是方法100或方法200的一种具体技术实现。因此,前文结合图1和图2的相关细节性描述同样也使用下文。
另外,需要说明的是,方法300可以理解为是针对传统SM3算法标准具体实现的进一步的改进,以解决传统SM3算法在具体实现过程中需要明文参与而存在安全隐患,甚至无法满足一些安全性要求高的场景需求的技术问题。方法300以及本申请的各实施例中对一些公式中所涉及的字符(包含字母、符号等)的具体含义与传统SM3算法标准中的相关字符保持一致。例如,在哈希计算过程中,所涉及的寄存器包括A、B、C、D、E、F、G和H,SS1、SS2、TT1和TT2均为中间变量,以及FFj和GGj表示布尔函数等。
如图3所示,在步骤S301处,可以初始化一临时密钥key。具体地,在哈希算法初始化,需要进行哈希计算的时候,先初始化一64字节的随机数组作为临时密钥key。
接着,在步骤S302处,流输入更新时候计算其单次输入和key中对应字节的异或值(即第一密文a)以及该异或值和单次输入字符之间的差值(即第二密文b)。对于第一密文和第二密文的计算过程,可以参考前文图2中的相关细节性描述,这里不再进行赘述。
接着,在步骤S303处,当输入满64字节或者已经输入完成后,对第一密文a做拓展得到68个字密文状态的第一参数Wa和第二参数W′a,并对key使用Wa同样的方法扩展得到Wkey。需要说明的是,在实际应用中,Wa和W′a以及Wkey所涉及的具体拓展方法可以参考传统SM3算法标准中相关拓展方法来实施,这里不再进行赘述。
在步骤S304处,可以对第二密文b进行整合处理得到第三参数Wb。具体地,可以对第二密文b每隔4个字节合并为一个32bit整数Wb,合并规则为如果当前字节索引小于0,则将前一位字节值减1,并将当前字节值加256,如果当前字节大于256,则将前一位字节值加1,并将当前字节值减256。然后4个字节(其中每个字节为8bit)从前到后排列为32bit并转换为整数,符号位和第一个字节保持相同。
接着,在步骤S305处,在哈希运算的压缩函数中,修改中间变量TT1。具体地,如果j小于16并且Wa[j+4]和Wkey[j+4]的值相等,则TT1的计算方式为:
FFj(A,B,C)+D+SS2+Wa[j]-Wb[j]
否则,TT1的计算方式为:
Figure BDA0004136093400000111
在步骤S306处,在哈希运算的压缩函数中,修改中间变量TT2。具体地,如果j小于16,则TT2计算方式为:
GGj(E,F,G)+H+SS1+Wa[j]-Wb[j]
否则,TT2的计算方式为:
Figure BDA0004136093400000112
需要说明的是,步骤S305和步骤S306中,公式所涉及的A、B、C、D、E、F、G和H表示寄存器,SS1、SS2、TT1和TT2表示中间变量,以及FFj和GGj表示布尔函数,j为压缩函数的迭代轮数,Wa为第一参数,W′a为第二参数,Wkey是基于临时密钥key拓展所得,所涉及的运算符可以参考传统SM3算法标准中的相关运算符的含义。
可以采用与传统SM3算法标准中的类似或相同迭代压缩过程,不断重复经过步骤S305和S306修改后的压缩函数过程,并在步骤S307处,更新8个寄存器的结果得到256字节的哈希结果。
通过改进传统SM3算法的实现,使得在流式输入的明文数据时,可以针对单次输入数据通过异或和差值计算来实现明文保护,以及在后续计算过程中也无需再对经异或计算或差值计算的密文进行解密。由此,整个输入阶段和具体哈希算法的计算过程中内存、寄存器中都不出现明文,从而有效提高了数据安全性。特别是,在进行一些隐私的个人信息输入时候,可以避免通过非法扫描内存而致使数据泄露。
在实际应用中,结合实验表明,采用本申请的方案对流式输入数据进行加密处理所得到的哈希结果与采用传统SM3算法对该流式输入数据加密得到的哈希结果是一致。另外,实现表明本申请方案对明文保护操作耗时的时间复杂度为O(n),所以耗时极短。
图4示意性地示出了根据本发明实施例的电子设备400的示意框图。如图4所示,电子设备400可以包括处理器401和存储器402。其中存储器402存储有加密数据的计算机指令,当所述计算机指令由处理器401运行时,使得电子设备400执行根据前文结合图1~图3所描述的方法。例如,在一些实施例中,电子设备400可以执行对第一密文和第二密文的计算、对第一参数、第二参数和第三参数的计算、中间变量的计算,以及支持迭代压缩过程等。基于此,通过电子设备400对于流式输入的明文数据,能够针对单次输入数据进行有效保护,并且整个哈算计算过程中相关数据均以密文方式进行计算,从而避免明文的出现。由此,可以有效提高流式输入数据的加密过程的安全性。需要说明的是,本申请对电子设备的具体类型不进行限定,任何支持数据的流式输入且对该数据有加密需求的设备均可。
从上面关于本发明模块化设计的描述可以看出,本发明的系统可以根据应用场景或需求进行灵活地布置而不限于附图所示出的架构。进一步,还应当理解,本发明示例的执行操作的任何模块、单元、组件、服务器、计算机或设备可以包括或以其他方式访问计算机可读介质,诸如存储介质、计算机存储介质或数据存储设备(可移除的)和/或不可移动的)例如磁盘、光盘或磁带。计算机存储介质可以包括以用于存储信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质,例如计算机可读指令、数据结构、程序模块或其他数据。基于此,本发明也公开了一种计算机可读存储介质,其上存储有加密数据的方法的计算机可读指令,该计算机可读指令被一个或多个处理器执行时,实现在前结合附图所描述的方法和操作。
虽然本说明书已经示出和描述了本发明的多个实施方式,但对于本领域技术人员显而易见的是,这样的实施方式是仅以示例的方式提供的。本领域技术人员在不偏离本发明思想和精神的情况下想到许多更改、改变和替代的方式。应当理解在实践本发明的过程中,可以采用本文所描述的本发明实施方式的各种替代方案。所附权利要求书旨在限定本发明的保护范围,并因此覆盖这些权利要求范围内的模块组成、等同或替代方案。

Claims (10)

1.一种加密数据的方法,其特征在于,所述方法包括:
在针对流式输入的明文数据进行哈希运算时,确定在所述明文数据流式输入过程中单次输入数据的第一密文和第二密文;
响应于所输入的明文数据满足预定条件,基于所述第一密文得到用于压缩函数的第一参数和第二参数,和基于所述第二密文得到用于压缩函数的第三参数,其中所述第一参数、所述第二参数和所述第三参数均为密文状态;以及
在执行对所述压缩函数的计算过程中,基于所述第一参数、所述第二参数和所述第三参数确定所述压缩函数中的中间变量TT1和TT2,并更新所述哈希运算所涉及的寄存器,直至更新后的寄存器输出关于所述明文数据的哈希结果。
2.根据权利要求1所述的方法,其特征在于,确定在所述明文数据流式输入过程中单次输入数据的第一密文和第二密文包括:
计算所述明文数据流式输入过程中单次输入数据与临时密钥中对应字节之间的异或值,以得到所述第一密文;以及
计算所述异或值与所述单次输入数据之间的差值,以得到所述第二密文。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取一随机数组;以及
对所述随机数组进行初始化处理,以得到所述临时密钥。
4.根据权利要求2所述的方法,其特征在于,基于所述第一密文得到用于压缩函数的第一参数和第二参数包括:
对所述第一密文进行拓展以得到所述第一参数和所述第二参数。
5.根据权利要求4所述的方法,其特征在于,基于所述第二密文得到用于压缩函数的第三参数包括:
对所述第二密文进行整数合并处理,以得到所述第三参数,其中在整数合并处理过程中每隔4个字节处理进位和借位。
6.根据权利要求5所述的方法,其特征在于,根据以下公式确定所述中间变量TT1
Figure FDA0004136093360000021
Figure FDA0004136093360000022
其中,FFj为布尔函数,A、B、C和D为所述寄存器,j为所述压缩函数的迭代轮数,Wa为所述第一参数,W′a为所述第二参数,SS2为一中间参数,Wkey是基于所述临时密钥拓展所得的。
7.根据权利要求5所述的方法,其特征在于,根据以下公式确定所述中间变量TT2
TT2←GGj(E,F,G)+H+SS1+Wa[j]-Wb[j],j<16
Figure FDA0004136093360000023
其中,GGj为布尔函数,E、F、G和H为所述寄存器,j为所述压缩函数的迭代轮数,Wa为所述第一参数,W′a为所述第二参数,SS1为一中间参数,Wkey是基于所述临时密钥拓展所得的。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述哈希算法包括SM3算法。
9.一种电子设备,其特征在于,包括:
处理器;以及
存储器,其存储有加密数据的计算机指令,当所述计算机指令由所述处理器运行时,使得所述电子设备执行根据权利要求1-8的任意一项所述的方法。
10.一种计算机可读存储介质,其特征在于,包括加密数据的程序指令,当所述程序指令由处理器执行时,使得实现根据权利要求1-8的任意一项所述的方法。
CN202310274721.0A 2023-03-17 2023-03-17 加密数据的方法及相关产品 Pending CN116094715A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310274721.0A CN116094715A (zh) 2023-03-17 2023-03-17 加密数据的方法及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310274721.0A CN116094715A (zh) 2023-03-17 2023-03-17 加密数据的方法及相关产品

Publications (1)

Publication Number Publication Date
CN116094715A true CN116094715A (zh) 2023-05-09

Family

ID=86202831

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310274721.0A Pending CN116094715A (zh) 2023-03-17 2023-03-17 加密数据的方法及相关产品

Country Status (1)

Country Link
CN (1) CN116094715A (zh)

Similar Documents

Publication Publication Date Title
US20210256165A1 (en) Protecting parallel multiplication operations from external monitoring attacks
EP2691906B1 (en) Method and system for protecting execution of cryptographic hash functions
CN106888080B (zh) 保护白盒feistel网络实施方案以防错误攻击
US9838198B2 (en) Splitting S-boxes in a white-box implementation to resist attacks
US9455833B2 (en) Behavioral fingerprint in a white-box implementation
CN106953723B (zh) 防止dfa攻击的拆分和合并方法
CN106888081B (zh) 白盒实施方案内中间值的宽编码
US9569639B2 (en) Remapping constant points in a white-box implementation
CN107273724B (zh) 为白盒实施方案的输入和输出加水印
JP6884284B2 (ja) キー付きメッセージ認証コードのホワイトボックス計算
US9485226B2 (en) Method for including an implicit integrity or authenticity check into a white-box implementation
US20210152331A1 (en) Protecting polynomial hash functions from external monitoring attacks
WO2019043921A1 (ja) 暗号化装置、復号装置、暗号化方法、復号方法、暗号化プログラム及び復号プログラム
EP3832945A1 (en) System and method for protecting memory encryption against template attacks
EP2940917B1 (en) Behavioral fingerprint in a white-box implementation
US9338145B2 (en) Security patch without changing the key
CN116094715A (zh) 加密数据的方法及相关产品
CN113408012A (zh) 故障检测
EP2940677A1 (en) Method for including an implicit integrity or authenticity check into a white-box implementation
EP2940920B1 (en) Security patch without changing the key
CN114666049B (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