CN109617671A - 加解密、扩展方法及装置、加解密系统、终端 - Google Patents
加解密、扩展方法及装置、加解密系统、终端 Download PDFInfo
- Publication number
- CN109617671A CN109617671A CN201811570489.0A CN201811570489A CN109617671A CN 109617671 A CN109617671 A CN 109617671A CN 201811570489 A CN201811570489 A CN 201811570489A CN 109617671 A CN109617671 A CN 109617671A
- Authority
- CN
- China
- Prior art keywords
- algorithm
- encryption
- wheel
- single iteration
- iteration operation
- 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
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/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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing 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)
- Storage Device Security (AREA)
Abstract
本发明实施例公开了一种加解密、扩展方法及装置、加解密系统、终端。其中,加密方法包括:确定加密算法的多轮迭代运算所需要的轮密钥;利用所述轮密钥对待加密的明文数据进行所述加密算法的多轮迭代运算;其中,所述加密算法的至少两轮单次迭代运算在一个时钟周期内完成。本发明实施例中的技术方案提升了加解密的效率,并且提升了加密算法的抗攻击性。
Description
技术领域
本发明涉及芯片技术领域,尤其涉及一种加解密、扩展方法及装置、加解密系统、终端。
背景技术
随着网络技术和通信技术的飞速发展,加密方法的应用越来越广泛。加密方法不仅运用于网络数据传输,也越来越多的应用于近场通信等场景。加密方法的运用逐渐走入日常生活,例如,应用于支付等场景中。在一些应用场景中,对加密方法的效率有较高的要求。
现有的加密方法的效率有待提升。
发明内容
本发明实施例解决的技术问题是提升加密方法的效率。
为解决上述技术问题,本发明实施例提供一种加密方法,包括:确定加密算法的多轮迭代运算所需要的轮密钥;利用所述轮密钥对待加密的明文数据进行所述加密算法的多轮迭代运算;其中,所述加密算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,所述加密算法的至少两轮单次迭代运算在一个时钟周期内完成。
可选的,所述轮密钥的数量为多个,确定加密算法的多轮迭代运算所需要的轮密钥包括:根据所述加密算法的单次迭代运算在所述加密算法的多轮迭代运算中的轮位置,确定与所述加密算法的单次迭代运算对应的轮密钥;所述利用所述轮密钥对对待加密的明文数据进行加密算法的多轮迭代运算包括:根据所述加密算法的单次迭代运算在所述加密算法的多轮迭代运算中的轮位置,确定与所述加密算法的单次迭代运算对应的待运算数据;利用对应的轮密钥对所述待运算数据进行所述加密算法的单次迭代运算,直至完成加密算法的预设轮数的单次迭代运算。
可选的,确定与所述加密算法的单次迭代运算对应的待运算数据包括以下任意一种:确定所述待加密的明文数据为加密算法的第一轮单次迭代运算的待运算数据;确定加密算法的前轮单次迭代运算输出的运算结果为加密算法的后轮单次迭代运算的待运算数据。
可选的,利用对应的轮密钥对所述待运算数据进行所述加密算法的单次迭代运算,直至完成加密算法的预设轮数的单次迭代运算包括:在每个时钟周期内的加密算法的单次迭代运算结束后,确认尚未完成加密算法的预设轮数的单次迭代运算;进行下个时钟周期的加密算法的单次迭代运算。
可选的,确定加密算法的多轮迭代运算所需要的轮密钥包括:进行扩展算法的多轮迭代运算,以生成所述轮密钥。
可选的,所述扩展算法的多轮迭代运算包括扩展算法中多轮迭代进行的单次迭代运算,扩展算法中的至少两轮单次迭代运算在一个时钟周期内完成。
可选的,所述进行扩展算法的多轮迭代运算,以生成所述轮密钥包括:确定所述扩展算法中的单次迭代运算的扩展运算对象,所述扩展运算对象选自预设的加密密钥以及扩展算法中前轮单次迭代运算输出的轮密钥;对所述扩展运算对象进行扩展运算,直至完成扩展算法中预设轮数的单次迭代运算。
可选的,确定所述扩展运算对象包括以下任一种:确定预设的加密密钥为扩展算法中第一轮单次迭代运算的扩展运算对象;确定扩展算法中前轮单次迭代运算输出的轮密钥为扩展算法中的后轮单次迭代运算的扩展运算对象。
可选的,所述对所述扩展运算对象进行扩展运算,直至完成扩展算法中预设轮数的单次迭代运算包括:在每个时钟周期内的扩展算法中的单次迭代运算结束后,确认尚未完成扩展算法中预设轮数的单次迭代运算;进行下个时钟周期的扩展算法中的单次迭代运算。
可选的,根据一个时钟周期内完成的所述扩展算法中的单次迭代运算的轮数,以及一个时钟周期内完成的加密算法的单次迭代运算的轮数,确定硬件资源的运算速度下限。
可选的,一个时钟周期内完成的所述扩展算法中的单次迭代运算的轮数,与一个时钟周期内完成的加密算法的单次迭代运算的轮数相等。
可选的,一个周期内完成的扩展算法中的单次迭代运算与加密算法的单次迭代运算的轮数均为4轮。
可选的,所述加密算法的多轮迭代运算包括32轮加密算法的单次迭代运算,所述扩展算法的多轮迭代运算包括32轮扩展算法中的单次迭代运算。
可选的,所述确定加密算法的多轮迭代运算所需的轮密钥包括:确定上一时钟周期内扩展算法中的单次迭代运算生成的轮密钥,为下一时钟周期内的加密算法的单次迭代运算所需要的轮密钥。
可选的,不同时钟周期内完成的加密算法的单次迭代运算复用同样的运算资源。
本发明实施例还提供一种解密方法,包括:确定解密算法的多轮迭代运算所需要的轮密钥;利用所述轮密钥对密文数据进行解密算法的多轮迭代运算;其中,所述解密算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,所述解密单次迭代运算解密算法的至少两轮单次迭代运算在一个时钟周期内完成。
本发明实施例还提供一种加密装置,包括:轮密钥确定单元,适于确定加密算法的多轮迭代运算所需要的轮密钥;加密算法的迭代运算单元,适于利用所述轮密钥对待加密的明文数据进行所述加密算法的多轮迭代运算;其中,所述加密算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,所述加密算法的至少两轮单次迭代运算在一个时钟周期内完成。
可选的,所述轮密钥的数量为多个,所述轮密钥确定单元,适于根据所述加密算法的单次迭代运算在所述加密算法的多轮迭代运算中的轮位置,确定与所述加密算法的单次迭代运算对应的轮密钥;所述加密算法的迭代运算单元包括:待运算数据确定子单元,适于根据所述加密算法的单次迭代运算在所述加密算法的多轮迭代运算中的轮位置,确定与所述加密算法的单次迭代运算对应的待运算数据;加密算法的迭代子单元,适于利用对应的轮密钥对所述待运算数据进行所述加密算法的单次迭代运算,直至完成加密算法的预设轮数的单次迭代运算。
可选的,所述待运算数据确定子单元,适于以如下任一种方式确定所述待运算数据:确定所述待加密的明文数据为加密算法的第一轮单次迭代运算的待运算数据;确定加密算法的前轮单次迭代运算输出的运算结果为加密算法的后轮单次迭代运算的待运算数据。
可选的,所述加密算法的迭代子单元包括:加密算法的迭代运算轮数确认模块,适于在每个时钟周期内的加密算法的单次迭代运算结束后,确认尚未完成加密算法的预设轮数的单次迭代运算;加密算法的迭代控制模块,适于进行下个时钟周期的加密算法的单次迭代运算。
可选的,所述轮密钥确定单元适于进行扩展算法的多轮迭代运算,以生成所述轮密钥。
可选的,所述扩展算法的多轮迭代运算包括扩展算法中多轮迭代进行的单次迭代运算,扩展算法中的至少两轮单次迭代运算在一个时钟周期内完成。
可选的,所述轮密钥确定单元包括:扩展对象确定子单元,适于确定所述扩展算法中的单次迭代运算的扩展运算对象,所述扩展运算对象选自预设的加密密钥以及扩展算法中前轮单次迭代运算输出的轮密钥;扩展运算子单元,适于对所述扩展运算对象进行扩展运算,直至完成扩展算法中预设轮数的单次迭代运算。
可选的,所述扩展对象确定子单元适于以如下任一种方式确定所述扩展运算对象:确定预设的加密密钥为扩展算法中第一轮单次迭代运算的扩展运算对象;确定扩展算法中前轮单次迭代运算输出的轮密钥为扩展算法中的后轮单次迭代运算的扩展运算对象。
可选的,所述扩展运算子单元,包括:扩展确认模块,适于在每个时钟周期内的扩展算法中的单次迭代运算结束后,确认尚未完成扩展算法中预设轮数的单次迭代运算;继续扩展模块,适于进行下个时钟周期的扩展算法中的单次迭代运算。
可选的,根据一个时钟周期内完成的所述扩展算法中的单次迭代运算的轮数,以及一个时钟周期内完成的加密算法的单次迭代运算的轮数,确定硬件资源的运算速度下限,本领域技术人员可以根据该运算速度下限设计或者选用芯片。
可选的,一个时钟周期内完成的所述扩展算法中的单次迭代运算的轮数,与一个时钟周期内完成的加密算法的单次迭代运算的轮数相等。
可选的,一个周期内完成的扩展算法中的单次迭代运算与加密算法的单次迭代运算的轮数均为4轮。
可选的,所述加密算法的多轮迭代运算包括32轮加密算法的单次迭代运算,所述扩展算法的多轮迭代运算包括32轮扩展算法中的单次迭代运算。
可选的,所述轮密钥确定单元,适于确定上一时钟周期内扩展算法中的单次迭代运算生成的轮密钥,为下一时钟周期内的加密算法的单次迭代运算所需要的轮密钥。
可选的,不同时钟周期内完成的加密算法的单次迭代运算复用同样的运算资源。
本发明实施例还提供一种解密装置,包括:解密密钥确定单元,适于确定解密算法的多轮迭代运算所需要的轮密钥;解密运算的迭代运算单元,适于利用所述轮密钥对密文数据进行解密算法的多轮迭代运算;其中,所述解密算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,所述解密单次迭代运算解密算法的至少两轮单次迭代运算在一个时钟周期内完成。
本发明实施例还提供一种加密系统,包括:加密算法的集合迭代运算单元,适于在一个时钟周期内完成加密算法的至少两轮单次迭代运算,所述加密算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,所述加密算法的多轮迭代运算为按照所述加密算法利用轮密钥对待加密的明文数据迭代进行的多轮迭代运算;第一逻辑判断单元,适于在所述加密算法的集合迭代运算单元完成一个时钟周期内的加密算法的单次迭代运算后,判断是否已完成所述加密算法的多轮迭代运算中预设轮数的单次迭代运算;所述加密算法的集合迭代运算单元还适于在所述第一逻辑判断单元的判断结果为否时,进行下一个时钟周期的加密算法的单次迭代运算。
可选的,当所述第一逻辑判断单元的判断结果为是时,还适于输出所述加密算法的集合迭代运算单元的运算结果。
可选的,所述加密系统还包括:第一寄存器,适于存储所述加密算法的集合迭代运算单元在完成一个周期内的扩展算法中的单次迭代运算后得到的运算结果。
可选的,所述加密系统还包括:第一选择器,适于选择原始的待加密的明文数据或者在上一个时钟周期已经过所述加密算法的集合迭代运算单元运算的运算结果,作为下一个时钟周期中所述加密算法的集合迭代运算单元的输入。
可选的,所述加密系统还包括:扩展算法的集合迭代运算单元,适于在一个时钟周期内完成扩展算法中的至少两轮单次迭代运算,以生成所述加密算法的集合迭代运算单元所需的轮密钥;其中,扩展算法中的相邻两轮单次迭代运算之间为迭代关系。
可选的,所述加密算法的集合迭代运算单元在一个时钟周期内完成的加密算法的单次迭代运算的轮数,与所述扩展算法的集合迭代运算单元在一个时钟周期内完成的扩展算法中的单次迭代运算的轮数相等。
可选的,所述扩展算法的集合迭代运算单元在一个时钟周期内完成的扩展算法中的单次迭代运算得到的轮密钥,适于供所述加密算法的集合迭代运算单元在下个时钟周期内使用,以完成下个时钟周期内的加密算法的单次迭代运算。
可选的,所述加密系统还包括:第二逻辑判断单元,适于在所述扩展算法的集合迭代运算单元完成一个周期内的扩展算法中的单次迭代运算后,判断是否已完成扩展算法中预设轮数的单次迭代运算;所述扩展算法的集合迭代运算单元,还适于在所述第二逻辑判断单元的判断结果为否时,进行下一个时钟周期的扩展算法中的单次迭代运算。
可选的,所述加密系统还包括:密钥扩展输出单元,适于当所述第二逻辑判断单元的判断结果为是时,输出所述扩展算法的集合迭代运算单元的密钥扩展结果。
可选的,所述加密系统还包括:第二寄存器,适于存储所述扩展算法的集合迭代运算单元在完成一个周期内的扩展算法中的单次迭代运算得到的密钥扩展结果。
可选的,所述加密系统还包括:第二选择器,适于选择预设的加密密钥或者上一时钟周期内经过所述扩展算法的集合迭代运算单元扩展运算后输出的轮密钥,作为下一时钟周期中所述扩展算法的集合迭代运算单元的扩展输入。
本发明实施例还提供一种解密系统,包括:解密算法的集合迭代运算单元,适于在一个时钟周期内完成至少两轮解密算法的单次迭代运算,解密算法的多轮迭代运算过包括多轮所述解密算法的单次迭代运算,所述解密算法的多轮迭代运算为利用轮密钥对密文数据迭代进行的多轮单次迭代运算;第三逻辑判断单元,适于在所述解密算法的集合迭代运算单元完成一个时钟周期内的解密算法的单次迭代运算后,判断是否已完成所述解密算法的多轮迭代运算中预设轮数的单次迭代运算;所述解密算法的集合迭代运算单元还适于在所述第三逻辑判断单元的判断结果为否时,进行下一个时钟周期的解密算法的单次迭代运算。
本发明实施例还提供一种加密解密系统,包括所述的加密系统以及解密系统,其中,所述加密算法的集合迭代运算单元与所述解密算法的集合迭代运算单元分时复用同样的硬件资源;所述第一逻辑判断单元与所述第三逻辑判断单元分时复用同样的硬件资源。
本发明实施例还提供一种密钥扩展方法,包括:确定扩展算法的多轮迭代运算中第一轮单次迭代运算的加密密钥;对所述加密密钥进行所述扩展算法的多轮迭代运算;其中,所述扩展算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,扩展算法中的至少两轮单次迭代运算在一个时钟周期内完成。
本发明实施例还提供一种密钥扩展装置,包括:迭代加密密钥确定单元,适于确定扩展算法的多轮迭代运算中第一轮单次迭代运算的加密密钥;扩展运算单元,适于对所述加密密钥进行所述扩展算法的多轮迭代运算;其中,所述扩展算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,扩展算法中的至少两轮单次迭代运算在一个时钟周期内完成。
本发明实施例还提供一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行所述加密方法的步骤。
本发明实施例还提供另一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行所述解密方法的步骤。
本发明实施例还提供另一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行所述密钥扩展方法的步骤。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
在本发明实施例中,确定加密算法的多轮迭代运算所需要的轮密钥,并利用轮密钥对待加密的明文数据进行所述加密算法的多轮迭代运算。其中,加密算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,利用轮密钥对待加密的明文数据进行加密算法的多轮迭代运算时,可以在一个时钟周期内完成加密算法的至少两轮单次迭代运算,故可以减少加密算法的多轮迭代运算占用的时钟周期,提升加密方法的效率。
进一步,在每个时钟周期内的加密算法的单次迭代运算结束后,确认尚未完成加密算法的预设轮数的单次迭代运算,并进行下个时钟周期的加密算法的单次迭代运算。由于每个时钟周期内完成加密算法的多轮单次迭代运算,故在每个时钟周期内的加密算法的单次迭代运算结束后,对是否完成加密算法的预设轮数的单次迭代运算进行判断,而非在加密算法的每轮单次迭代运算结束后进行判断,可以减少判断次数,节省系统资源。
进一步,在进行扩展算法的多轮迭代运算生成轮密钥时,在一个时钟周期内完成扩展算法中的至少两轮单次迭代运算,可以减少扩展算法的多轮迭代运算占用的时钟周期,进而可以提升加密方法的效率。
进一步,确定上一时钟周期内扩展算法中的单次迭代运算生成的轮密钥,为下一时钟周期内的加密算法的单次迭代运算所需要的轮密钥。可以使得扩展算法的多轮迭代运算和加密算法的多轮迭代运算并行进行,相比于先进行扩展算法的多轮迭代运算,待其结束后进行加密算法的多轮迭代运算,可以提升加密方法的效率。
进一步,不同时钟周期内完成的加密算法的单次迭代运算复用同样的运算资源,可以节省运算资源,提升资源利用效率。
另外,在加密解密系统中分时复用同样的硬件资源实现加密和解密,可以提升系统资源的利用率。
附图说明
图1是本发明实施例中一种加密方法的流程图;
图2是本发明实施例中一种加密系统的示意图;
图3是本发明实施例中一种解密系统的示意图;
图4是本发明实施例中一种加密装置的结构示意图;
图5是本发明实施例中一种加密算法的迭代运算单元的结构示意图;
图6是本发明实施例中一种轮密钥确定单元的结构示意图;
图7是本发明实施例中一种解密装置的结构示意图。
具体实施方式
如前所述,现有的加密方法的效率有待提升。
在本发明实施例中,确定加密算法的多轮迭代运算所需要的轮密钥,并利用轮密钥对待加密的明文数据进行所述加密算法的多轮迭代运算。其中,所述加密算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,利用轮密钥对待加密的明文数据进行加密算法的多轮迭代运算时,可以在一个时钟周期内完成加密算法的至少两轮单次迭代运算,故可以减少加密算法的多轮迭代运算占用的时钟周期,提升加密方法的效率。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
图1是本发明实施例中一种加密方法的流程图,具体包括:
步骤S11,确定加密算法的多轮迭代运算所需要的轮密钥;
步骤S12,利用所述轮密钥对待加密的明文数据进行所述加密算法的多轮迭代运算;
其中,加密算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,所述加密算法的至少两轮单次迭代运算在一个时钟周期内完成。时钟周期可以是运行本发明实施例中加密方法的处理器的时钟周期。
本发明实施例中的加密方法可以实现不同的用于加密的算法规则,特别是可以以更高的效率实现其中包含多轮迭代运算的用于加密算法。包含多轮迭代运算的用于加密的算法规则可以是DES加算法、AES算法、SM4分组密码算法中任一种。
本领域技术人员可以理解的是上述用于加密的算法规则可以包括加密算法、扩展算法及解密算法,其中扩展算法为密钥扩展算法的简称。例如SM4分组密码算法中:通过预设的密钥得到轮密钥的部分可以称作扩展算法;结合轮密钥将明文转变为密文的部分可以称作加密算法;根据加密算法的流程反推进行解密可以称作解密算法。
在本发明实施例中,将加密算法的多轮迭代运算中每轮迭代运算称作加密算法的单次迭代运算,将扩展算法多轮迭代运算中每轮迭代运算称作扩展算法的单次迭代运算,将解密算法多轮迭代运算中每轮迭代运算称作解密算法的单次迭代运算。本发明实施例中的加密算法的多轮迭代运算、扩展算法的多轮迭代运算以及解密算法的多轮迭代运算,均可按照以下任一种算法规则中的规定实现:DES加算法、AES算法以及SM4分组密码算法。
轮密钥指加密算法的多轮迭代运算中,每轮单次迭代运算所需的加密密钥。轮密钥与加密算法的单次迭代运算相对应,其数量可以为多个。
在具体实施中,步骤S11中确定轮密钥可以包括:根据加密算法的单次迭代运算在所述加密算法的多轮迭代运算中的轮位置,确定与所述加密算法的单次迭代运算对应的轮密钥。例如,对加密算法的第二轮的单次迭代运算,需确定用于该轮单次迭代运算的轮密钥。
如前所述,加密算法的多轮迭代运算是多轮以迭代的方式进行的单次迭代运算。在加密算法的多轮迭代运算中,上一轮单次迭代运算的运算结果可以作为下一轮单次迭代运算的运算对象,也即,可以确定加密算法的前轮单次迭代运算输出的数据为加密算法的后轮单次迭代运算的待运算数据。另外,可以理解的是,在加密算法的多轮迭代运算中的第一轮单次迭代运算中,待加密的明文数据可以作为其迭代运算的对象。
与前述步骤S11的具体实施方式相类似地,步骤S12中利用所述轮密钥对待加密的明文数据进行加密算法的多轮迭代运算可以包括:根据所述加密算法的单次迭代运算在所述加密算法的多轮迭代运算中的轮位置,确定与所述加密算法的单次迭代运算对应的待运算数据;利用该轮单次迭代运算的轮密钥对所述待运算数据进行所述单次迭代运算,直至完成加密算法的预设轮数的单次迭代运算。其中,待运算数据选自所述待加密的明文数据或者由待加密的明文数据生成的数据。
加密算法的多轮迭代运算中,可以包括预设轮的单次迭代运算,其中,预设轮的具体数量可以由加密算法确定,加密算法可以来源于算法规则,但算法规则中并非仅包括加密算法,还可以包括解密算法、扩展算法。其中,扩展算法是为方便描述,对密钥扩展算法的简称。
例如,SM4分组密码算法中包括32轮的单次迭代运算,也即预设的轮数为32;DES加密算法中包括16轮迭代的单次迭代运算,也即预设的轮数为16。完成加密算法的预设轮数的单次迭代运算,在SM4分组密码算法中,可以是完成32轮的单次迭代运算;在DES加密算法中,可以是完成16轮的单次迭代运算。本领域技术人员可以理解的是,在不同的加密算法中,单次迭代运算的具体实现方式可以不同。
在具体实施中,完成加密算法的预设轮数的单次迭代运算可以包括:在每个时钟周期内的加密算法的单次迭代运算结束后,确认尚未完成加密算法的预设轮数的单次迭代运算;以及进行下个时钟周期的加密算法的单次迭代运算。
由于每个时钟周期内完成加密算法的多轮单次迭代运算,故在每个时钟周期内的加密算法的单次迭代运算结束后,对是否完成加密算法的预设轮数的单次迭代运算进行判断,而非在加密算法的每轮单次迭代运算结束后进行判断,可以减少判断次数,节省系统资源。
为方便描述,每个时钟周期内的加密算法的单次迭代运算总称为加密算法的集合迭代运算。在具体实施中,可以在每次加密算法的集合迭代运算结束后,判断是否已完成加密算法的预设轮数的单次迭代运算。
结合参考图2,可以通过第一逻辑判断单元24确认尚未完成加密算法的预设轮数的单次迭代运算。具体地,可以设置变量j,每轮加密算法的集合迭代运算结束后,设置j=j+n,并判断j值是否与预设的加密算法的单次迭代运算的轮数相等,若相等,则判断结果为已完成加密算法的预设轮的单次迭代运算,否则,则确定未完成加密算法的预设轮数的单次迭代运算。其中n值为每个时钟周期内进行的加密算法的单次迭代运算的轮数,j的初始值为0。
在具体实施中,若已完成加密算法的预设轮数的单次迭代运算,则可以输出运算结果,否则,继续进行加密算法的多轮迭代运算。
如前所述,在加密算法的多轮迭代运算中,加密算法的上一轮单次迭代运算的运算结果可以作为加密算法的下一轮单次迭代运算的运算对象;在加密算法的多轮迭代运算的第一轮单次迭代运算中,待加密的明文数据可以作为其运算的对象。
在加密算法的第一轮单次迭代运算中,可以通过第一选择器21选择所述待加密的明文数据为加密算法的第一轮单次迭代运算的待运算数据。在前述经过第一逻辑判断单元24判断后,继续进行加密算法的多轮迭代运算时,可以通过第一选择器21选择加密算法的集合迭代运算单元22输出的运算结果作为加密算法的下一轮单次迭代运算的待运算数据。
具体地,加密算法的集合迭代运算单元22输出的运算结果可以存储于第一寄存器23,第一选择器21可以在第一逻辑判断单元24判断结果为未完成加密算法的预设轮数的单次迭代运算时,通过第一逻辑判断单元24的控制,从第一寄存器23获取加密算法的集合迭代运算单元22输出的运算结果。其中,存储加密算法的集合迭代运算单元22输出的运算结果,可以在每个时钟周期内的加密算法的单次迭代运算完成后,也即加密算法的集合迭代运算完成后进行。
在具体实施中,不同时钟周期内完成的加密算法的单次迭代运算复用同样的运算资源,也即,加密算法的集合迭代运算复用同样的运算资源。例如,每个周期的加密算法的集合迭代运算,均可以复用加密算法的集合迭代运算单元22使用,从而可以节省加密方法占用的系统资源。
继续以SM4分组密码算法为例,当本发明实施例中的加密方法实现SM4分组密码算法时,加密算法的预设轮数的单次迭代运算为32轮,前述的n值可以为4。故经过8个时钟周期,本发明实施例中的加密方法即可得到运算结果,利用本发明实施例中的加密方法实现SM4分组密码算法的效率较高。另外,通过复用加密算法的集合迭代运算单元22,可以节省进行运算时占用的系统资源。
在具体实施中,加密算法的多轮迭代运算中所需的轮密钥可以是在加密算法的多轮迭代运算之前已存储的,或者轮密钥也可以是通过预设的加密密钥按照扩展算法,经过密钥扩展运算生成的。
相应地,在具体实施中,加密算法的多轮迭代运算可以与扩展算法的多轮迭代运算并行进行;或者,在加密算法的多轮迭代运算之前,可以完成扩展算法的多轮迭代运算,以为加密算法的多轮迭代运算提供所需要的加密密钥。
也即,确定所述加密算法的多轮迭代运算所需要的轮密钥,可以通过已存储的包含各个轮密钥的密钥信息中确定,或者也可以在进行扩展算法的多轮迭代运算的过程中,确定所述轮密钥。相应地,图1中步骤S11可以包括:进行扩展算法的多轮迭代运算,以生成所述轮密钥。
在具体实施中,扩展算法的多轮迭代运算可以包括扩展算法中多轮迭代进行的单次迭代运算。
扩展算法与前述加密算法可以是规定于同一算法,例如均规定于DES加算法、AES算法或者SM4分组密码算法。例如,在SM4分组密码算法中,扩展算法的多轮迭代运算可以包括32轮的扩展算法中的单次迭代运算。
进一步地,扩展算法中的至少两轮单次迭代运算可以在一个时钟周期内完成。时钟周期可以是运行本发明实施例中加密方法的处理器的时钟周期。在进行密钥运算生成轮密钥时,在一个时钟周期内完成扩展算法中的至少两轮单次迭代运算,可以减少扩展算法的多轮迭代运算占用的时钟周期,进而可以提升加密方法的效率。
在具体实施中,进行扩展算法的多轮迭代运算,以生成所述轮密钥进一步可以包括:确定所述扩展算法中的单次迭代运算的扩展运算对象,所述扩展运算对象选自预设的加密密钥以及扩展算法中前轮单次迭代运算输出的轮密钥;对所述扩展运算对象进行扩展运算,直至完成扩展算法中预设轮数的单次迭代运算。
具体地,确定所述扩展运算对象包括以下任一种:确定预设的加密密钥为扩展算法中第一轮单次迭代运算的扩展运算对象;确定扩展算法中前轮单次迭代运算输出的轮密钥为扩展算法中的后轮单次迭代运算的扩展运算对象。
其中,确定扩展算法中前轮单次迭代运算输出的轮密钥为扩展算法中的后轮单次迭代运算的扩展运算对象的扩展运算对象可以包括:在每个时钟周期内的扩展算法中的单次迭代运算结束后,确认尚未完成扩展算法中预设轮数的单次迭代运算;进行下个时钟周期的扩展算法中的单次迭代运算。
为了方便描述,每个时钟周期内完成的扩展算法中的单次迭代运算总称为扩展算法的集合迭代运算。在具体实施中,可以在每次扩展算法的集合迭代运算结束后,判断是否已完成预设轮的扩展算法中的单次迭代运算。
结合参考图2,可以通过第二逻辑判断单元28确认尚未完成扩展算法中预设轮数的单次迭代运算。具体地,类似于第一逻辑判断单元24的工作方式,可以设置变量j,每轮扩展算法的集合迭代运算结束后,设置j=j+n,并判断j值是否与预设的扩展算法中的单次迭代运算的轮数相等,若相等,则判断结果为已完成预设轮的扩展算法中的单次迭代运算,否则,则确定未完成扩展算法中预设轮数的单次迭代运算。其中n值为每个时钟周期内扩展算法中的单次迭代运算的轮数,j的初始值为0。
在具体实施中,若已完成扩展算法中预设轮数的单次迭代运算,则可以得到加密算法的多轮迭代运算所需要的轮密钥的集合。在SM4分组密码算法中,加密算法的多轮迭代运算所需的轮密钥集合中包括32轮的轮密钥。若未完成扩展算法中预设轮数的单次迭代运算,则继续进行扩展算法的多轮迭代运算。
如前所述,在扩展算法的多轮迭代运算中,扩展算法中上一轮单次迭代运算的扩展结果可以作为下扩展算法中的后轮单次迭代运算的扩展对象;在扩展算法的多轮迭代运算的扩展算法中第一轮单次迭代运算中,预设的加密密钥可以作为其扩展的对象。
预设的加密密钥可以从第二选择器25的输入端输入,在扩展算法中第一轮单次迭代运算中,可以通过第二选择器25选择所述预设的加密密钥为扩展算法中第一轮单次迭代运算的待扩展数据。在前述经过第二逻辑判断单元28判断后,继续进行扩展算法的多轮迭代运算时,可以通过第二选择器25选择扩展算法的集合迭代运算单元26输出的轮密钥作为下扩展算法中的后轮单次迭代运算的扩展运算对象。
在具体实施中,可以存储扩展算法的集合迭代运算单元26的输出结果,以供扩展算法中的后轮单次迭代运算使用。例如可以通过第二寄存器27在扩展算法的集合迭代运算单元26运算结束后进行存储。扩展算法的集合迭代运算单元26的运算结果,可以通过第二寄存器27传输至加密算法的集合迭代运算单元22。
继续以SM4分组密码算法为例,本发明实施例中的扩展方法以实现SM4分组密码算法为目标时,扩展算法中预设轮数的单次迭代运算为32轮,前述的n值可以为4。故经过8个时钟周期,本发明实施例中的扩展方法即可得到所需的轮密钥,利用本发明实施例中的密钥扩展方法实现SM4分组密码算法的效率较高。另外,通过复用扩展算法的集合迭代运算单元22,可以节省进行运算是占用的系统资源。
从上例可以看出,一个时钟周期内完成的所述扩展算法中的单次迭代运算的轮数,与一个时钟周期内完成的加密算法的单次迭代运算的轮数可以相等。虽然上例中一个周期内完成的扩展算法中的单次迭代运算与加密算法的单次迭代运算的轮数均为4轮。但以理解的是,一个时钟周期内完成的扩展算法中的单次迭代运算与加密算法的单次迭代运算的轮数也可以是其它数值。
通常情况下,加密算法中扩展算法中的单次迭代运算的轮数与加密算法中单次迭代运算的轮数一致。故一个时钟周期内完成的所述扩展算法中的单次迭代运算的轮数,与一个时钟周期内完成的加密算法的单次迭代运算的轮数相等,可以使得扩展算法的集合迭代运算与加密算法的集合迭代运算更加匹配,达到更高的运算效率。
在具体实施中,根据一个时钟周期内完成的所述扩展算法中的单次迭代运算的轮数,以及一个时钟周期内完成的加密算法的单次迭代运算的轮数,本领域技术人员可以设计硬件资源的运算速度,以使得硬件资源的运算速度满足高于下限。硬件资源指运行本发明实施例中加密方法的运算设备。在具体实施中,也可以通过设计硬件资源的运算速度支持一个时钟周期内完成加密算法的预设轮的单次迭代运算,,如此,加密算法的多轮迭代运算可以在一个周期内实现。
如前所述,在具体实施中,加密算法的多轮迭代运算可以与扩展算法的多轮迭代运算并行进行;或者,在加密算法的多轮迭代运算之前,可以完成扩展算法的多轮迭代运算,以为加密算法的多轮迭代运算提供所需要的加密密钥。在不同的应用场景中,可以选取不同的具体实现方式,以下分别进行说明。
在一些场景中,密钥可以在预设的时间点进行更新,例如,可以每月进行一次密钥更新,在下次更新前,可以采用上次更新得到的密钥实现加密算法的多轮迭代运算。这这些场景中,扩展算法的多轮迭代运算可以在加密算法的多轮迭代运算前完成,扩展算法的多轮迭代运算和加密算法的多轮迭代运算可以由不同的主体进行。
参见前文所述,以SM4分组密码算法为例,若n值为4,在上述场景中,利用本发明实施例中的加密方法实现SM4分组密码算法,经过8个时钟周期,即可得到所需的轮密钥,类似地,经过8个时钟周期即可完成迭代加密算法,实现SM4分组加密。也即,在一次实现SM4分组加密过程中,仅需8个时钟周期,考虑生成轮密钥的过程在内,也仅需要16个时钟周期。
在另外一些对安全性较高的场景中,密钥更换的频次较高,可以采用本发明实施例中加密算法的多轮迭代运算可以与扩展算法的多轮迭代运算并行进行的实施方式。
继续以SM4分组密码算法为例,若n值为4,则在该场景中,当加密密钥更新时,第一次加密需9个时钟周期,后续可以利用已有的密钥进行迭代运算,一次实现SM4分组加密过程仅需8个时钟周期。在该种需要场景下,并行进行加密算法的多轮迭代运算和扩展算法的多轮迭代运算,相较于分别进行加密算法的多轮迭代运算和扩展算法的多轮迭代运算,本发明中的具体实施方式的效率有很大的提升。
继续参见图1,在具体实施中,图1步骤S11中确定迭代加密所需的轮密钥包括:确定上一时钟周期内扩展算法中的单次迭代运算生成的轮密钥,为下一时钟周期内的加密算法的单次迭代运算所需要的轮密钥。也即,在具体实施中,扩展算法的集合迭代运算与加密算法的集合迭代运算可以并行进行,在同一个时钟周期内进行加密算法的多轮单次迭代运算,并且进行多轮扩展算法中的单次迭代运算。
如此,密钥扩展过程中的多轮迭代运算与加密算法的多轮迭代运算可以在同一个时钟周期内完成,在功耗上特征已经难以分别出单个轮运算的模型,进而使得攻击者无法有效地找到每轮运算的侧信道信息,故可以有效抵抗加密算法的模板攻击。
例如,当加密方法用于实现SM4分组密码算法时,可以有效抵抗SM4分组密码算法的模板攻击。以下以SM4分组密码算法为例对抵抗模板攻击的原理进行进一步说明。本领域技术应当理解的是,本发明实施例中的加密算法的单次迭代运算与扩展算法中的单次迭代运算均可以称为轮运算。
SM4分组密码算法模板攻击是基于密码芯片在SM4分组密码算法运算时的功耗与正在参与运算数据的相关性的基础上实施的。其攻击过程通常包括两个步骤:第一个阶段是对所有可能猜测密钥的能量消耗特征,并依据算法的轮运算规格,依次建立对应模型;第二个阶段是采集被攻击密码芯片上的每轮运算时的侧信道功耗信息,计算其与所建模的能量消耗特征的匹配程度,即可得到有关正确密钥的信息。
由于模板攻击非常有效、实现简单且无需大量资源,所以目前是侧信道分析攻击研究领域的重点之一。而本发明实施例中,由于扩展算法的集合迭代运算的四轮迭代进行的单次迭代运算与加密算法的集合迭代运算中四轮迭代进行的单次迭代运算是同时进行的,在功耗上特征已经无法分别出单个轮运算的模型。故针对目前现有的32轮运算的模型无法从侧信道上进行分析破解密钥,进而本发明实施例中的加密算法的安全性更高。
以下结合参考图2,对本发明实施例进行进一步说明。扩展算法的集合迭代运算单元26在一个时钟周期内生成的轮密钥,可以供加密算法的集合迭代运算单元22在下一时钟周期进行迭代运算。如此,可以提升迭代运算方法的效率。
本领域技术人员可以理解的是,在具体实施中,本发明实施例中的加密方法还可以包括加密算法的多轮迭代运算、扩展算法的多轮迭代运算以外的其它步骤,具体包括的步骤根据所实现的算法确定,例如,当本发明实施例中的加密方法用于SM4分组密码算法时,还可以包括反序变换。
继续以SM4分组密码算法为例,SM4分组密码算法中分组长度和密钥长度均为128bit,扩展算法的集合迭代运算单元26的输入可以由第二选择器25从预设的加密密钥Key[127:0]或者第二寄存器27中存储的轮密钥中确定。
扩展算法的集合迭代运算单元26在一个时钟周期内可以完成4轮扩展算法中的单次迭代运算,每轮扩展算法中的单次迭代运算的运算方式可以是与SM4分组密码算法中规定的扩展算法一致。扩展算法的集合迭代运算单元26的输入可以分别为[Ki,Ki+1,Ki+2,Ki+3]与[CKi,CKi+1,CKi+2,CKi+3]。其中,[Ki,Ki+1,Ki+2,Ki+3]为四个32位的数据,作为待进行扩展算法的集合迭代运算数据;[CKi,CKi+1,CKi+2,CKi+3]为SM4分组密码算法的固定参数,用于与SM4分组密码算法中的扩展算法,i∈[0,31]。
[Ki,Ki+1,Ki+2,Ki+3]经扩展算法的集合迭代运算单元26运算的输出(Ki+4,Ki+5,Ki+6,Ki+7)可以表示为公式(1):
(Ki+4,Ki+5,Ki+6,Ki+7)=BT(Ki,Ki+1,Ki+2,Ki+3,CKi,CKi+1,CKi+2,CKi+3)(1)
其中,函数BT表示扩展算法的集合迭代运算单元26的运算函数。
扩展算法的集合迭代运算单元26的内部操作可以表示为公式(2)至(5):
其中,函数T为合成置换函数,具体操作可以参见SM4分组密码算法中的规定。
扩展算法的集合迭代运算单元26的输出可以锁存至第二寄存器27,第二寄存器27可以是128位寄存器,对应于扩展算法的集合迭代运算单元26的输出结果,寄存器中存储的数据可以表示为Ki_reg[127:0]。
第二逻辑判断单元28可以进行是否已完成32轮密钥扩展的逻辑判断,若判断结果为是,则输出轮密钥的集合rkey[127:0],若判断结果为否,则由第二选择器25确定扩展运算对象,以进行扩展算法中下4轮的单次迭代运算。
扩展算法的集合迭代运算单元26生成的轮密钥,可以供加密算法的集合迭代运算单元22进行加密算法的集合迭代运算。加密算法的集合迭代运算单元22进行4轮迭代的加密算法的单次迭代运算,其输入为[Xi,Xi+1,Xi+2,Xi+3]与[Ki+4,Ki+5,Ki+6,Ki+7],输出为[Xi+4,Xi+5,Xi+6,Xi+7],扩展算法的集合迭代运算单元26进行的运算可以表示为:
(Xi+4,Xi+5,Xi+6,Xi+7)=BF(Xi,Xi+1,Xi+2,Xi+3,RKi,RKi+1,RKi+2,RKi+3)(6)
其中,函数BF为扩展算法的集合迭代运算的函数,也即在一个时钟周期内进行的四轮扩展算法中的单次迭代运算。每轮扩展算法中的单次迭代运算的具体实现方式可以参见SM4分组密码算法,可以参见公式(7):
Xi+4=F(Xi,Xi+1,Xi+2,Xi+3,RKi)=Xi⊕T(Xi+1⊕Xi+2⊕Xi+3⊕RKi)(7)
在具体实施中,加密算法的集合迭代运算单元22的运算可以表示为公式(8)至公式(11):
如前所述,加密算法的集合迭代运算单元22的输出可以锁存至第一寄存器23,该寄存器可以表示为Xi_reg[127:0],为一个128位的寄存器。若经第一逻辑判断单元24判断,已完成32轮单加密算法,则输出密文结果。若未完成,则加密算法的集合迭代运算单元22进行下四轮的加密算法的单次迭代运算。
本发明实施例提供了一种加密方法,在本发明实施例中的加密方法中,一个时钟周期可以至少完成加密算法的两轮单次迭代运算。本发明实施例中的加密算法的多轮迭代运算可以用来实现SM4分组密码算法以及其它包括的迭代运算的算法。以实现SM4分组密码算法为例,一次分组的多轮迭代运算仅需要8个时钟周期,有效提升了SM4分组密码算法的运算速度。
本发明实施例还提供一种解密方法,其流程图参见图3,具体可以包括如下步骤:
步骤S31,确定解密算法的多轮迭代运算所需要的轮密钥;
步骤S32,利用所述轮密钥对密文数据进行解密算法的多轮迭代运算;
其中,所述解密算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,所述解密单次迭代运算解密算法的至少两轮单次迭代运算在一个时钟周期内完成。
解密算法可以同与其配套实施的加密算法、扩展算法来源于同一算法规则,例如前述的DES加算法、AES算法、SM4分组密码算法等包括多轮迭代运算的算法。
本发明实施例中所述的解密方法可以采用与所述加密方法相对应的方式实现,其中涉及的具体名词解释、具体实现方式以及有益效果,本领域技术人员可以根据本发明实施例中所述的加密方法获悉,在此不再赘述。
本发明实施例还提供一种加密装置,其结构示意图参见图4,具体可以包括:
轮密钥确定单元41,适于确定加密算法的多轮迭代运算所需要的轮密钥;
加密算法的迭代运算单元42,适于利用所述轮密钥对待加密的明文数据进行所述加密算法的多轮迭代运算;
其中,所述加密算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,所述加密算法的至少两轮单次迭代运算在一个时钟周期内完成。
在具体实施中,所述轮密钥的数量为多个,所述轮密钥确定单元41,适于根据所述加密算法的单次迭代运算在所述加密算法的多轮迭代运算中的轮位置,确定与所述加密算法的单次迭代运算对应的轮密钥;
相应地,参见图5,图4中加密算法的迭代运算单元42可以包括:
待运算数据确定子单元51,适于根据所述加密算法的单次迭代运算在所述加密算法的多轮迭代运算中的轮位置,确定与所述加密算法的单次迭代运算对应的待运算数据;
加密算法的迭代子单元52,适于利用对应的轮密钥对所述待运算数据进行所述加密算法的单次迭代运算,直至完成加密算法的预设轮数的单次迭代运算。
进一步地,待运算数据确定子单元51,适于以如下任一种方式确定所述待运算数据:确定所述待加密的明文数据为加密算法的第一轮单次迭代运算的待运算数据;确定加密算法的前轮单次迭代运算输出的运算结果为加密算法的后轮单次迭代运算的待运算数据。
在具体实施中,加密算法的迭代子单元52可以包括:
加密算法的迭代运算轮数确认模块(图中未示出),适于在每个时钟周期内的加密算法的单次迭代运算结束后,确认尚未完成加密算法的预设轮数的单次迭代运算;
加密算法的迭代控制模块(图中未示出),适于进行下个时钟周期的加密算法的单次迭代运算。
继续参见图4,轮密钥确定单元41适于进行扩展算法的多轮迭代运算,以生成所述轮密钥。
在具体实施中,所述扩展算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,扩展算法中的至少两轮单次迭代运算在一个时钟周期内完成。
进一步地,参见图6,所述轮密钥确定单元41可以包括:
扩展对象确定子单元61,适于确定所述扩展算法中的单次迭代运算的扩展运算对象,所述扩展运算对象选自预设的加密密钥以及扩展算法中前轮单次迭代运算输出的轮密钥;
扩展运算子单元62,适于对所述扩展运算对象进行扩展运算,直至完成扩展算法中预设轮数的单次迭代运算。
在具体实施中,所述扩展对象确定子单元适于以如下任一种方式确定所述扩展运算对象:
确定预设的加密密钥为扩展算法中第一轮单次迭代运算的扩展运算对象;
确定扩展算法中前轮单次迭代运算输出的轮密钥为扩展算法中的后轮单次迭代运算的扩展运算对象。
在具体实施中,所述扩展运算子单元62可以包括:
扩展确认模块(图中未示出),适于在每个时钟周期内的扩展算法中的单次迭代运算结束后,确认尚未完成扩展算法中预设轮数的单次迭代运算;
继续扩展模块(图中未示出),适于进行下个时钟周期的扩展算法中的单次迭代运算。
在具体实施中,根据一个时钟周期内完成的所述扩展算法中的单次迭代运算的轮数,以及一个时钟周期内完成的加密算法的单次迭代运算的轮数,可以确定硬件资源的运算速下限,本领域技术人员可以根据该运算速度下限设计或者选用芯片。
在具体实施中,一个时钟周期内完成的所述扩展算法中的单次迭代运算的轮数,可以与一个时钟周期内完成的加密算法的单次迭代运算的轮数相等。例如,所述加密算法的多轮迭代运算可以包括32轮加密算法的单次迭代运算,所述扩展算法的多轮迭代运算可以包括32轮扩展算法中的单次迭代运算。此时,一个周期内完成的扩展算法中的单次迭代运算与加密算法的单次迭代运算的轮数均可以为4轮。
进一步地,图4中轮密钥确定单元41,适于确定上一时钟周期内扩展算法中的单次迭代运算生成的轮密钥,为下一时钟周期内的加密算法的单次迭代运算所需要的轮密钥。也即,一个时钟周期内并行进行扩展算法中的单次迭代运算以及加密算法的单次迭代运算。
在具体实施中,同时钟周期内完成的加密算法的单次迭代运算复用同样的运算资源。
本发明实施例中的加密装置涉及的名词解释、原理说明、具体实现方式以及有益效果,均可以参见本发明实施例中的加密方法,在此不再赘述。
本发明实施例还提供一种解密装置,其结构示意图参见图7,具体可以包括:
解密密钥确定单元71,适于确定解密算法的多轮迭代运算所需要的轮密钥;
解密运算的迭代运算单元72,适于利用所述轮密钥对密文数据进行解密算法的多轮迭代运算;
其中,所述解密算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,所述解密单次迭代运算解密算法的至少两轮单次迭代运算在一个时钟周期内完成。
本发明实施例中的解密装置涉及的名词解释、原理说明、具体实现方式以及有益效果,均可以参见本发明实施例中的解密方法,在此不再赘述。
继续参见图2,本发明实施例还提供一种加密系统,包括:
加密算法的集合迭代运算单元22,适于在一个时钟周期内完成加密算法的至少两轮单次迭代运算,所述加密算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,所述加密算法的多轮迭代运算为按照所述加密算法利用轮密钥对待加密的明文数据迭代进行的多轮单次迭代运算;
第一逻辑判断单元24,适于在所述加密算法的集合迭代运算单元完成一个时钟周期内的加密算法的单次迭代运算后,判断是否已完成所述加密算法的多轮迭代运算中预设轮数的单次迭代运算;
所述加密算法的集合迭代运算单元22还适于在所述第一逻辑判断单元24的判断结果为否时,进行下一个时钟周期的加密算法的单次迭代运算。
在具体实施中,所述加密系统还可以包括:第一寄存器23,适于存储所述加密算法的集合迭代运算单元22在完成一个周期内的扩展算法中的单次迭代运算后得到的运算结果。
在具体实施中,当所述第一逻辑判断单元24的判断结果为是时,输出所述加密算法的集合迭代运算单元22的运算结果。具体地,所述加密算法的集合迭代运算单元的22运算结果可以是存储于第一寄存器23的运算结果,或者为第一存储器23的运算结果反序后的数据。在其它具体实施中,第一寄存器23存储的运算结果也可以是加密算法的集合迭代运算单元22输出的运算结果的反序数据。
在具体实施中,所述加密系统还可以包括:第一选择器21,适于选择原始的待加密的明文数据或者在上一个时钟周期已经过所述加密算法的集合迭代运算单元22加密的运算结果,作为下一个时钟周期中所述加密算法的集合迭代运算单元22的输入。
具体地,上一个时钟周期已经过所述加密算法的集合迭代运算单元22加密的运算结果可以是第一寄存器23中存储的结果。
在具体实施中,所述加密系统还可以包括:扩展算法的集合迭代运算单元26,适于在一个时钟周期内完成扩展算法中的至少两轮单次迭代运算,以生成所述加密算法的集合迭代运算单元22所需的轮密钥;其中,扩展算法中的相邻两轮单次迭代运算之间为迭代关系。
在具体实施中,所述加密算法的集合迭代运算单元26在一个时钟周期内完成的加密算法的单次迭代运算的轮数,与所述扩展算法的集合迭代运算单元22在一个时钟周期内完成的扩展算法中的单次迭代运算的轮数相等。
在具体实施中,所述扩展算法的集合迭代运算单元26在一个时钟周期内完成的扩展算法中的单次迭代运算得到的轮密钥,可以输入值加密算法的集合迭代运算单元22,供所述加密算法的集合迭代运算单元22在下个时钟周期内使用,以完成下个时钟周期内的加密算法的单次迭代运算。
在具体实施中,所述加密系统还可以包括:第二逻辑判断单元28,适于在所述扩展算法的集合迭代运算单元26完成一个周期内的扩展算法中的单次迭代运算后,判断是否已完成扩展算法中预设轮数的单次迭代运算;所述扩展算法的集合迭代运算单元26,还适于在所述第二逻辑判断单元28的判断结果为否时,进行下一个时钟周期的扩展算法中的单次迭代运算。
在具体实施中,当所述第二逻辑判断单元28的判断结果为是时,可以输出所述扩展算法的集合迭代运算单元26的密钥扩展结果。
在具体实施中,所述加密系统还可以包括第二寄存器27,适于存储所述扩展算法的集合迭代运算单元26在完成一个周期内的扩展算法中的单次迭代运算得到的密钥扩展结果。
在具体实施中,所述加密系统还可以包括第二选择器25,适于选择预设的加密密钥或者上一时钟周期内经过所述扩展算法的集合迭代运算单元26扩展运算后输出的轮密钥,作为下一时钟周期中所述扩展算法的集合迭代运算单元26的扩展输入。
本发明实施例中加密系统的具体实现和有益效果可以参见本发明实施例中加密方法的描述,在此不再赘述。
本发明实施例还提供一种解密系统,包括:
解密算法的集合迭代运算单元(图中未示出),适于在一个时钟周期内完成至少两轮解密算法的单次迭代运算,解密算法的多轮迭代运算过包括多轮所述解密算法的单次迭代运算,所述解密算法的多轮迭代运算为利用轮密钥对密文数据迭代进行的多轮单次迭代运算;
第三逻辑判断单元(图中未示出),适于在所述解密算法的集合迭代运算单元完成一个时钟周期内的解密算法的单次迭代运算后,判断是否已完成所述解密算法的多轮迭代运算中预设轮数的单次迭代运算;
所述解密算法的集合迭代运算单元还适于在所述第三逻辑判断单元的判断结果为否时,进行下一个时钟周期的解密算法的单次迭代运算。
本发明实施例中的解密系统可以对相应的加密系统生成的密文进行解密,对应于统一算法规则的解密系统为相应的加密系统和解密系统,例如对应于SM4分组密码算法的解密系统可以对相应的加密系统生成的密文进行解密。
在具体实施中,相应的解密系统和加密系统,可以复用同样的硬件资源,故本发明实施例中的具体实现和有益效果,可以参见本发明实施例中的解密方法,在此不再赘述。
本发明实施例还提供一种加密解密系统,包括前述的加密系统以及解密系统,其中,加密系统与解密系统分时复用同样的硬件资源。具体地,同样的硬件资源,在输入不同的情况下,可以实现加密或者解密功能。
进一步地,所述加密算法的集合迭代运算单元与所述解密算法的集合迭代运算单元可以分时复用同样的硬件资源;所述第一逻辑判断单元与所述第三逻辑判断单元可以分时复用同样的硬件资源。
例如,在利用加密解密系统实现SM4分组密码算法时,若输入为待加密的明文数据和预设的密钥,则可以实现SM4分组密码算法中的加密部分,若输入为密文以及相应的密钥,则输出可以为明文数据。
本领域技术人员可以理解的是,硬件资源的分时复用不限于上述举例,其它以实现加密和解密为目标复用其它相同的硬件结构的实施方式均属于本发明的保护范围。
本发明实施例中的加密解密系统可以用于手机等智能设备,根据场景需要,利用同样的硬件资源分别实现加密或解密的功能。
本发明实施例中还提供一种密钥扩展方法,可以包括如下步骤:确定扩展算法的多轮迭代运算中第一轮单次迭代运算的加密密钥;对所述加密密钥进行所述扩展算法的多轮迭代运算;其中,所述扩展算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,扩展算法中的至少两轮单次迭代运算在一个时钟周期内完成。
如前文所述,加密算法的多轮迭代运算所需的轮密钥可以是事先生成的,也可以是与加密算法的多轮迭代运算并行生成的。在前文对本发明实施例中的加密方法进行描述中,已对密钥扩展方法进行了描述,故在此对密钥扩展方法的具体实施与有益效果不再赘述。单独使用本发明实施例中的密钥扩展方法亦落入本发明的保护范围。
相应地,本发明实施例中还提供密钥扩展装置,其特征在于,包括:迭代加密密钥确定单元,适于确定扩展算法的多轮迭代运算中第一轮单次迭代运算的加密密钥;扩展运算单元,适于对所述加密密钥进行所述扩展算法的多轮迭代运算;其中,所述扩展算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,扩展算法中的至少两轮单次迭代运算在一个时钟周期内完成。
本发明实施例中的密钥扩展装置的具体实现和有益效果可以参见对本发明实施例中密钥扩展方法的说明,在此不再赘述。
本发明实施例还提供一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行所述加密方法的步骤。
本发明实施例还提供另一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行所述解密方法的步骤。
本发明实施例还提供另一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行所述密钥扩展方法的步骤。
所述终端可以是智能手机、平板电脑等各种适当的终端,也可以是单台计算机、服务器或者服务器集群。
本发明实施例中的技术方案的加解密效率高,尤其适用于对加解密效率要求较高的场景。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (50)
1.一种加密方法,其特征在于,包括:
确定加密算法的多轮迭代运算所需要的轮密钥;
利用所述轮密钥对待加密的明文数据进行所述加密算法的多轮迭代运算;
其中,所述加密算法的多轮迭代运算包括多轮迭代进行的单次迭代运算所述加密算法的至少两轮单次迭代运算在一个时钟周期内完成。
2.根据权利要求1所述的加密方法,其特征在于,所述轮密钥的数量为多个,确定加密算法的多轮迭代运算所需要的轮密钥包括:根据所述加密算法的单次迭代运算加密算法的多轮迭代运算的轮位置,确定与所述加密算法的单次迭代运算对应的轮密钥;
所述利用所述轮密钥对待加密的明文数据进行加密算法的多轮迭代运算包括:
根据所述加密算法的单次迭代运算在所述加密算法的多轮迭代运算中的轮位置,确定与所述加密算法的单次迭代运算对应的待运算数据;
利用对应的轮密钥对所述待运算数据进行所述加密算法的单次迭代运算,直至完成加密算法的预设轮数的单次迭代运算。
3.根据权利要求2所述的加密方法,其特征在于,确定与所述加密算法的单次迭代运算对应的待运算数据包括以下任意一种:
确定所述待加密的明文数据待加密的明文数据为加密算法的第一轮单次迭代运算的待运算数据待运算数据;
确定加密算法的前轮单次迭代运算输出的运算结果为加密算法的后轮单次迭代运算的待运算数据。
4.根据权利要求2所述的加密方法,其特征在于,利用对应的轮密钥对所述待运算数据进行所述加密算法的单次迭代运算,直至完成加密算法的预设轮数的单次迭代运算包括:
在每个时钟周期内的加密算法的单次迭代运算结束后,确认尚未完成加密算法的预设轮数的单次迭代运算;
进行下个时钟周期的加密算法的单次迭代运算。
5.根据权利要求1所述的加密方法,其特征在于,确定加密算法的多轮迭代运算所需要的轮密钥包括:进行扩展算法的多轮迭代运算,以生成所述轮密钥。
6.根据权利要求5所述的加密方法,其特征在于,所述扩展算法的多轮迭代运算包括扩展算法中扩展算法中多轮迭代进行的单次迭代运算,扩展算法中至少两轮单次迭代运算在一个时钟周期内完成。
7.根据权利要求6所述的加密方法,其特征在于,所述进行扩展算法的多轮迭代运算,以生成所述轮密钥包括:
确定所述扩展算法中的单次迭代运算的扩展运算对象,所述扩展运算对象选自预设的加密密钥以及扩展算法中的前轮单次迭代运算输出的轮密钥;
对所述扩展运算对象进行扩展运算,直至完成扩展算法中的预设轮数的单次迭代运算。
8.根据权利要求7所述的加密方法,其特征在于,确定所述扩展运算对象包括以下任一种:
确定预设的加密密钥为扩展算法中的第一轮单次迭代运算的扩展运算对象;
确定扩展算法中的前轮单次迭代运算输出的轮密钥为扩展算法中的后轮单次迭代运算的扩展运算对象。
9.根据权利要求7所述的加密方法,其特征在于,所述对所述扩展运算对象进行扩展运算,直至完成扩展算法中预设轮数的单次迭代运算包括:
在每个时钟周期内的扩展算法中的单次迭代运算结束后,确认尚未完成扩展算法中预设轮数的单次迭代运算;
进行下个时钟周期的扩展算法中的单次迭代运算。
10.根据权利要求6所述的加密方法,其特征在于,根据一个时钟周期内完成的所述扩展算法中的单次迭代运算的轮数,以及一个时钟周期内完成的加密算法的单次迭代运算的轮数,确定硬件资源的运算速度下限。
11.根据权利要求6所述的加密方法,其特征在于,一个时钟周期内完成的所述扩展算法中的单次迭代运算的轮数,与一个时钟周期内完成的加密算法的单次迭代运算的轮数相等。
12.根据权利要求11所述的加密方法,其特征在于,一个周期内完成的扩展算法中的单次迭代运算与加密算法的单次迭代运算的轮数均为4轮。
13.根据权利要求12所述的加密方法,其特征在于,所述加密算法的多轮迭代运算为32轮的单次迭代运算,所述扩展算法的多轮迭代运算为32轮单次迭代运算。
14.根据权利要求11所述的加密方法,其特征在于,所述确定加密算法的多轮迭代运算所需的轮密钥包括:确定上一时钟周期内扩展算法中的单次迭代运算生成的轮密钥,为下一时钟周期内的加密算法的单次迭代运算所需要的轮密钥。
15.根据权利要求1所述的加密方法,其特征在于,不同时钟周期内完成的加密算法的单次迭代运算复用同样的运算资源。
16.一种解密方法,其特征在于,包括:
确定解密算法的多轮迭代运算所需要的轮密钥;
利用所述轮密钥对待运算数据进行解密算法的多轮迭代运算;
其中,所述解密算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,所述解密算法的至少两轮单次迭代运算在一个时钟周期内完成。
17.一种加密装置,其特征在于,包括:
轮密钥确定单元,适于确定加密算法的多轮迭代运算所需要的轮密钥;
加密算法的迭代运算单元,适于利用所述轮密钥对待加密的明文数据进行所述加密算法的多轮迭代运算;
其中,所述加密算法的多轮迭代运算包括多轮迭代进行的单次迭代运算所述加密算法的至少两轮单次迭代运算在一个时钟周期内完成。
18.根据权利要求17所述的加密装置,其特征在于,所述轮密钥的数量为多个,所述轮密钥确定单元,适于根据所述加密算法的单次迭代运算在所述加密算法的多轮迭代运算中的轮位置,确定与所述加密算法的单次迭代运算对应的轮密钥;
所述加密算法的迭代运算单元包括:
待运算数据确定子单元,适于根据所述加密算法的单次迭代运算在所述加密算法的多轮迭代运算中的轮位置,确定与所述加密算法的单次迭代运算对应的待运算数据;
加密算法的迭代子单元,适于利用对应的轮密钥对所述待运算数据进行所述加密算法的单次迭代运算,直至完成加密算法的预设轮数的单次迭代运算。
19.根据权利要求18所述的加密装置,其特征在于,所述待运算数据确定子单元,适于以如下任一种方式确定所述待运算数据:确定待加密的明文数据待加密的明文数据为加密算法的第一轮单次迭代运算的待运算数据;
确定加密算法的前轮单次迭代运算输出的运算结果为加密算法的后轮单次迭代运算的待运算数据。
20.根据权利要求18所述的加密装置,其特征在于,所述加密算法的迭代子单元包括:
加密算法的迭代运算轮数确认模块,适于在每个时钟周期内的加密算法的单次迭代运算结束后,确认尚未完成加密算法的预设轮数的单次迭代运算;
加密算法的迭代控制模块,适于进行下个时钟周期的加密算法的单次迭代运算。
21.根据权利要求17所述的加密装置,其特征在于,所述轮密钥确定单元适于进行扩展算法的多轮迭代运算,以生成所述轮密钥。
22.根据权利要求21所述的加密装置,其特征在于,所述扩展算法的多轮迭代运算包括扩展算法中的多轮迭代运算,所述扩展算法中的至少两轮单次迭代运算在一个时钟周期内完成。
23.根据权利要求22所述的加密装置,其特征在于,所述轮密钥确定单元包括:
扩展对象确定子单元,适于确定所述扩展算法中的单次迭代运算的扩展运算对象,所述扩展运算对象选自预设的加密密钥以及扩展算法中的前轮单次迭代运算输出的轮密钥;
扩展运算子单元,适于对所述扩展运算对象进行扩展运算,直至完成扩展算法中预设轮数的的单次迭代运算。
24.根据权利要求23所述的加密装置,其特征在于,所述扩展对象确定子单元适于以如下任一种方式确定所述扩展运算对象:
确定预设的加密密钥为扩展算法中的第一轮单次迭代运算的扩展运算对象;
确定扩展算法中的前轮单次迭代运算输出的轮密钥为扩展算法中的后轮单次迭代运算的扩展运算对象。
25.根据权利要求23所述的加密装置,其特征在于,所述扩展运算子单元,包括:
扩展确认模块,适于在每个时钟周期内的扩展算法中的单次迭代运算结束后,确认尚未完成扩展算法中预设轮数的单次迭代运算;
继续扩展模块,适于进行下个时钟周期的扩展算法中的单次迭代运算。
26.根据权利要求22所述的加密装置,其特征在于,根据一个时钟周期内完成的所述扩展算法中的单次迭代运算的轮数,以及一个时钟周期内完成的加密算法的单次迭代运算的轮数均根据,确定硬件资源的运算速度下限。
27.根据权利要求22所述的加密装置,其特征在于,一个时钟周期内完成的所述扩展算法中的单次迭代运算的轮数,与一个时钟周期内完成的加密算法的单次迭代运算的轮数相等。
28.根据权利要求27所述的加密装置,其特征在于,一个周期内完成的扩展算法中的单次迭代运算与加密算法的单次迭代运算的轮数均为4轮。
29.根据权利要求28所述的加密装置,其特征在于,所述加密算法的多轮迭代运算包括32轮加密算法的单次迭代运算,所述扩展算法的多轮迭代运算包括32轮扩展算法中的单次迭代运算。
30.根据权利要求27所述的加密装置,其特征在于,所述轮密钥确定单元,适于确定上一时钟周期内扩展算法中的单次迭代运算生成的轮密钥,为下一时钟周期内的加密算法的单次迭代运算所需要的轮密钥。
31.根据权利要求17所述的加密装置,其特征在于,不同时钟周期内完成的加密算法的单次迭代运算复用同样的运算资源。
32.一种解密装置,其特征在于,包括:
解密密钥确定单元,适于确定解密算法的多轮迭代运算所需要的轮密钥;
解密运算的迭代运算单元,适于利用所述轮密钥对密文数据进行解密算法的多轮迭代运算;
其中,解密算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,所述解密算法的至少两轮单次迭代运算在一个时钟周期内完成。
33.一种加密系统,其特征在于,包括:加密算法的集合迭代运算单元,适于在一个时钟周期内完成加密算法的至少两轮单次迭代运算,所述加密算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,所述加密算法的多轮迭代运算为按照所述加密算法利用轮密钥对待加密的明文数据进行的多轮迭代运算;
第一逻辑判断单元,适于在所述加密算法的迭代运算单元完成一个时钟周期内的加密算法的单次迭代运算后,判断是否已完成所述加密算法的多轮迭代运算中预设轮数的单次迭代运算;
所述加密算法的集合迭代运算单元还适于在所述第一逻辑判断单元的判断结果为否时,进行下一个时钟周期的加密算法的单次迭代运算。
34.根据权利要求33所述的加密系统,其特征在于,当所述第一逻辑判断单元的判断结果为是时,还适于输出所述加密算法的集合迭代运算单元的运算结果。
35.根据权利要求33所述的加密系统,其特征在于,还包括:第一寄存器,适于存储所述加密算法的集合迭代运算单元在完成一个周期内的扩展算法中的单次迭代运算后得到的运算结果。
36.根据权利要求33所述的加密系统,其特征在于,还包括:第一选择器,适于选择原始的待加密的明文数据或者在上一个时钟周期已经过所述加密算法的集合迭代运算单元运算的运算结果,作为下一个时钟周期中所述加密算法的集合迭代运算单元的输入。
37.根据权利要求33所述的加密系统,其特征在于,还包括:扩展算法的集合迭代运算单元,适于在一个时钟周期内完成扩展算法中的至少两轮单次迭代运算,以生成所述加密算法的集合迭代运算单元所需的轮密钥;其中,扩展算法中的相邻两轮单次迭代运算之间为迭代关系。
38.根据权利要求37所述的加密系统,其特征在于,所述加密算法的集合迭代运算单元在一个时钟周期内完成的加密算法的单次迭代运算的轮数,与所述扩展算法的集合迭代运算单元在一个时钟周期内完成的扩展算法中的单次迭代运算的轮数相等。
39.根据权利要求37所述的加密系统,其特征在于,所述扩展算法的集合迭代运算单元在一个时钟周期内完成的扩展算法中的单次迭代运算得到的轮密钥,适于供所述加密算法的集合迭代运算单元在下个时钟周期内使用,以完成下个时钟周期内的加密算法的单次迭代运算。
40.根据权利要求37所述的加密系统,其特征在于,还包括:
第二逻辑判断单元,适于在所述扩展算法的集合迭代运算单元完成一个周期内的扩展算法中的单次迭代运算后,判断是否已完成扩展算法中预设轮数的单次迭代运算;
所述扩展算法的集合迭代运算单元,还适于在所述第二逻辑判断单元的判断结果为否时,进行下一个时钟周期的扩展算法中的单次迭代运算。
41.根据权利要求40所述的加密系统,其特征在于,还包括:密钥扩展输出单元,适于当所述第二逻辑判断单元的判断结果为是时,输出所述扩展算法的集合迭代运算单元的密钥扩展结果。
42.根据权利要求37所述的加密系统,其特征在于,还包括:第二寄存器,适于存储所述扩展算法的集合迭代运算单元在完成一个周期内的扩展算法中的单次迭代运算得到的密钥扩展结果。
43.根据权利要求37所述的加密系统,其特征在于,还包括:第二选择器,适于选择预设的加密密钥或者上一时钟周期内经过所述扩展算法的集合迭代运算单元扩展运算后输出的轮密钥,作为下一时钟周期中所述扩展算法的集合迭代运算单元的扩展输入。
44.一种解密系统,其特征在于,包括:
解密算法的集合迭代运算单元,适于在一个时钟周期内完成至少两轮解密算法的单次迭代运算,解密算法的多轮迭代运算过包括多轮所述解密算法的单次迭代运算,所述解密算法的多轮迭代运算为利用轮密钥对密文数据迭代进行的多轮单次迭代运算;
第三逻辑判断单元,适于在所述解密算法的集合迭代运算单元完成一个时钟周期内的解密算法的单次迭代运算后,判断是否已完成所述解密算法的多轮迭代运算中预设轮数的单次迭代运算;
所述解密算法的集合迭代运算单元还适于在所述第三逻辑判断单元的判断结果为否时,进行下一个时钟周期的解密算法的单次迭代运算。
45.一种加密解密系统,其特征在于,包括:如权利要求33至43任一项所述的加密系统,以及如权利要求44所述的解密系统;其中,
所述加密算法的集合迭代运算单元与所述解密算法的集合迭代运算单元分时复用同样的硬件资源;
所述第一逻辑判断单元与所述第三逻辑判断单元分时复用同样的硬件资源。
46.一种密钥扩展方法,其特征在于,包括:
确定扩展算法的多轮迭代运算中第一轮单次迭代运算的加密密钥;
对所述加密密钥进行所述扩展算法的多轮迭代运算;
其中,所述扩展算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,扩展算法中的至少两轮单次迭代运算在一个时钟周期内完成。
47.一种密钥扩展装置,其特征在于,包括:
迭代加密密钥确定单元,适于确定扩展算法的多轮迭代运算中第一轮单次迭代运算的加密密钥;
扩展运算单元,适于对所述加密密钥进行所述扩展算法的多轮迭代运算;
其中,所述扩展算法的多轮迭代运算包括多轮迭代进行的单次迭代运算,扩展算法中的至少两轮单次迭代运算在一个时钟周期内完成。
48.一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,其特征在于,所述处理器运行所述计算机指令时执行权利要求1至15任一项所述加密方法的步骤。
49.一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,其特征在于,所述处理器运行所述计算机指令时执行权利要求16所述解密方法的步骤。
50.一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,其特征在于,所述处理器运行所述计算机指令时执行权利要求46所述的密钥扩展方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811570489.0A CN109617671B (zh) | 2018-12-21 | 2018-12-21 | 加解密、扩展方法及装置、加解密系统、终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811570489.0A CN109617671B (zh) | 2018-12-21 | 2018-12-21 | 加解密、扩展方法及装置、加解密系统、终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109617671A true CN109617671A (zh) | 2019-04-12 |
CN109617671B CN109617671B (zh) | 2023-06-09 |
Family
ID=66011093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811570489.0A Active CN109617671B (zh) | 2018-12-21 | 2018-12-21 | 加解密、扩展方法及装置、加解密系统、终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109617671B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110071727A (zh) * | 2019-04-26 | 2019-07-30 | 成都海光集成电路设计有限公司 | 编码方法、译码方法、纠错方法及装置 |
CN111274613A (zh) * | 2020-01-20 | 2020-06-12 | 广州安研信息科技有限公司 | 迭代式sm2数字签名生成方法、系统、介质和设备 |
CN111294059A (zh) * | 2019-12-26 | 2020-06-16 | 成都海光集成电路设计有限公司 | 编码方法、译码方法、纠错方法及相关装置 |
CN111950039A (zh) * | 2020-08-17 | 2020-11-17 | 海光信息技术有限公司 | 一种数据处理装置、方法、内存控制器、处理器、电子设备 |
CN114019855A (zh) * | 2021-10-27 | 2022-02-08 | 国网山东省电力公司宁阳县供电公司 | 一种线路安全智能辅助监测系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1527531A (zh) * | 2003-03-07 | 2004-09-08 | 华为技术有限公司 | 一种数据加密标准或三重数据加密标准的实现方法 |
CN101159545A (zh) * | 2007-11-19 | 2008-04-09 | 西安西电捷通无线网络通信有限公司 | 一种基于分组密码算法的加密处理方法 |
CN101764684A (zh) * | 2009-10-26 | 2010-06-30 | 广州杰赛科技股份有限公司 | 实现sms4算法的加解密系统 |
CN103812641A (zh) * | 2012-11-07 | 2014-05-21 | 中国科学院微电子研究所 | 一种实现sm4分组对称密码算法的系统 |
CN104579636A (zh) * | 2015-02-16 | 2015-04-29 | 滨州职业学院 | 一种超高速实现sm4算法的系统及其运行方法 |
CN105577363A (zh) * | 2016-01-29 | 2016-05-11 | 江苏沁恒股份有限公司 | 针对sm4密码算法的可扩展流水线电路及其实现方法 |
CN108933653A (zh) * | 2018-06-28 | 2018-12-04 | 郑州云海信息技术有限公司 | 一种基于大规模数据的aes加解密系统及方法 |
-
2018
- 2018-12-21 CN CN201811570489.0A patent/CN109617671B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1527531A (zh) * | 2003-03-07 | 2004-09-08 | 华为技术有限公司 | 一种数据加密标准或三重数据加密标准的实现方法 |
CN101159545A (zh) * | 2007-11-19 | 2008-04-09 | 西安西电捷通无线网络通信有限公司 | 一种基于分组密码算法的加密处理方法 |
CN101764684A (zh) * | 2009-10-26 | 2010-06-30 | 广州杰赛科技股份有限公司 | 实现sms4算法的加解密系统 |
CN103812641A (zh) * | 2012-11-07 | 2014-05-21 | 中国科学院微电子研究所 | 一种实现sm4分组对称密码算法的系统 |
CN104579636A (zh) * | 2015-02-16 | 2015-04-29 | 滨州职业学院 | 一种超高速实现sm4算法的系统及其运行方法 |
CN105577363A (zh) * | 2016-01-29 | 2016-05-11 | 江苏沁恒股份有限公司 | 针对sm4密码算法的可扩展流水线电路及其实现方法 |
CN108933653A (zh) * | 2018-06-28 | 2018-12-04 | 郑州云海信息技术有限公司 | 一种基于大规模数据的aes加解密系统及方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110071727A (zh) * | 2019-04-26 | 2019-07-30 | 成都海光集成电路设计有限公司 | 编码方法、译码方法、纠错方法及装置 |
CN111294059A (zh) * | 2019-12-26 | 2020-06-16 | 成都海光集成电路设计有限公司 | 编码方法、译码方法、纠错方法及相关装置 |
CN111274613A (zh) * | 2020-01-20 | 2020-06-12 | 广州安研信息科技有限公司 | 迭代式sm2数字签名生成方法、系统、介质和设备 |
CN111950039A (zh) * | 2020-08-17 | 2020-11-17 | 海光信息技术有限公司 | 一种数据处理装置、方法、内存控制器、处理器、电子设备 |
CN114019855A (zh) * | 2021-10-27 | 2022-02-08 | 国网山东省电力公司宁阳县供电公司 | 一种线路安全智能辅助监测系统 |
CN114019855B (zh) * | 2021-10-27 | 2024-03-29 | 国网山东省电力公司宁阳县供电公司 | 一种线路安全智能辅助监测系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109617671B (zh) | 2023-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109617671A (zh) | 加解密、扩展方法及装置、加解密系统、终端 | |
CN100428751C (zh) | 安全通信包处理装置及其方法 | |
CN101060408B (zh) | 消息认证码生成装置、消息认证码验证装置和认证系统 | |
CN101350714B (zh) | 采用混合rijndael s-box的有效高级加密标准数据路径 | |
US20030046561A1 (en) | Non-algebraic cryptographic architecture | |
CN109656840A (zh) | 一种数据加解密的装置、方法、存储介质、以及数据存储系统 | |
CN1964251A (zh) | 分组加密系统和方法 | |
CN105207772A (zh) | 安全地交换消息的加密方法及实现该方法的设备和系统 | |
CN110166223A (zh) | 一种国密sm4的快速软件实现方法 | |
EP1330702B1 (en) | Method and system of using an insecure crypto-accelerator | |
Prakasam et al. | An enhanced energy efficient lightweight cryptography method for various IoT devices | |
Cao et al. | Related-key differential cryptanalysis of the reduced-round block cipher GIFT | |
CN109005184A (zh) | 文件加密方法及装置、存储介质、终端 | |
CN112749812A (zh) | 一种联合学习系统、训练结果聚合的方法及设备 | |
CN103444125A (zh) | 加密处理设备、加密处理方法和程序 | |
Lam et al. | An improved method for locating and extracting the eye in human face images | |
CN110336661A (zh) | Aes-gcm数据处理方法、装置、电子设备及存储介质 | |
CN101867471A (zh) | 基于无理数的des认证加密算法 | |
CN104219045B (zh) | Rc4 流密码生成器 | |
EP3552339B1 (en) | Programmable block cipher with masked inputs | |
CN114218594A (zh) | 加解密初始化配置方法、边缘端、加解密平台及安全系统 | |
CN106341384A (zh) | 用于促进安全通信的方法 | |
CN101150399A (zh) | 共享密钥生成方法 | |
JP2004054128A (ja) | 暗号化装置 | |
JP2006527412A (ja) | データを暗号化および/または復号化するプロセッサとこのプロセッサを使用してデータを暗号化および/または復号化する方法 |
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 |