CN110071927B - 一种信息加密方法、系统及相关组件 - Google Patents
一种信息加密方法、系统及相关组件 Download PDFInfo
- Publication number
- CN110071927B CN110071927B CN201910349533.3A CN201910349533A CN110071927B CN 110071927 B CN110071927 B CN 110071927B CN 201910349533 A CN201910349533 A CN 201910349533A CN 110071927 B CN110071927 B CN 110071927B
- Authority
- CN
- China
- Prior art keywords
- key
- sub
- word
- result
- encryption
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- 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/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种信息加密方法,所述信息加密包括当接收到加密指令时,确定待加密信息和主密钥编码;将所述主密钥编码以半字为单位分为左侧密钥字和右侧密钥字,并将所述待加密信息以半字为单位分为第一左侧编码字和第一右侧编码字;根据所述左侧密钥字和所述右侧密钥字执行密钥扩展操作得到N组子密钥;依次利用N组所述子密钥对所述第一左侧编码字和所述第一右侧编码字执行异或运算和模2M加运算,以便对所述待加密信息执行加密处理得到密文编码。本方法能够在满足一定安全性的前提下减小加密信息过程所占用的存储空间。本申请还公开了一种信息加密系统、一种计算机可读存储介质及一种电子设备,具有以上有益效果。
Description
技术领域
本发明涉及信息安全技术领域,特别涉及一种信息加密方法、系统、一种计算机可读存储介质及一种电子设备。
背景技术
随着物联网的广泛应用,其物联网部署引发的许多与物联网设备特性相关的安全问题越来越突出。对于物联网来说,物联网设备比连接互联网的计算机更容易受到安全威胁,这是因为物联网设备的处理能力和内存资源非常有限。物联网设备的自主操作和通信也促进了安全攻击。因此,迫切需要用于物联网系统的新的和更加强的安全解决方案,其中尤为突出的是在计算能力和内部存储方面需要轻量级加密算法。
目前,在现有分组算法中,大多算法的非线性部件采用的是S盒,其虽然有较高的安全性,但其所占用的存储空间大,如一个8进8出的S盒就需要占用256字节的存储空间,而对于应用最广泛的aes算法来说,其拥有的S盒就有16个之多,存储空间占用非常大,不适用于处理能力和资源非常有限的物联网设备。而对于满足一定的安全性的前提下,存储空间小且结构简单的分组算法对于物联网是非常迫切的。
因此,如何在满足一定安全性的前提下减小加密信息过程所占用的存储空间是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的是提供一种信息加密方法、系统、一种计算机可读存储介质及一种电子设备,能够在满足一定安全性的前提下减小加密信息过程所占用的存储空间。
为解决上述技术问题,本申请提供一种信息加密方法,该信息加密算法包括:
当接收到加密指令时,确定待加密信息和主密钥编码;其中,所述待加密信息为明文编码;
将所述主密钥编码以半字为单位分为左侧密钥字和右侧密钥字,并将所述待加密信息以半字为单位分为第一左侧编码字和第一右侧编码字;
根据所述左侧密钥字和右侧密钥字执行密钥扩展操作得到N组子密钥;
依次利用N组所述子密钥对所述第一左侧编码字和所述第一右侧编码字执行异或运算和模2M加运算,以便对所述待加密信息执行加密处理得到密文编码。
可选的,所述根据所述左侧密钥字和右侧密钥字执行密钥扩展操作得到N个子密钥包括:
步骤1:将循环左移A位后的左侧密钥字与所述右侧密钥字进行模216加操作得到第一中间密钥字L1,将循环右移B位后的右侧密钥字与所述第一中间密钥字L1执行异或运算操作得到第二中间密钥字R2;
步骤2:将循环左移A位后的第一中间密钥字L1与所述第二中间密钥字L2执行模216加操作得到第一子密钥KL0,将循环右移B位后的右侧密钥字与所述第一子密钥KL0执行异或运算操作得到第二子密钥KR0;
步骤3:将所述第一子密钥KL0和所述第二子密钥KR0设置为一组子密钥,并记录子密钥的组数;
步骤4:判断所述组数是否大于N;若否,则将所述第一子密钥KL0作为新的左侧密钥字并将所述第二子密钥KR0作为新的右侧密钥字,进入步骤1。
可选的,依次利用N组所述子密钥对所述第一左侧编码字和所述第一右侧编码字执行异或运算和模2M加运算,以便对所述待加密信息执行加密处理得到密文编码包括:
步骤1:将所有所述子密钥按照生成时间从早到晚顺序进行编号,并设Y=1;其中,所述生成时间越早的子密钥的编号数字越小;
步骤2:将所述编号为Y的2个子密钥分别作为当前第一子密钥和当前第二子密钥;
步骤3:将所述第一左侧编码字与当前第一子密钥进行异或运算得到第一运算结果,并将所述第一运算结果与所述第一右侧编码字执行模216加操作得到第二运算结果,将所述第二运算结果循环右移C位得到第一中间加密结果,将循环左移D位后的第一右侧编码字与所述第一中间加密结果执行异或运算操作得到第二中间加密结果;
步骤4:将所述第一中间加密结果与所述第二中间加密结果进行模216加操作得到第三运算结果,将所述第三运算结果与所述当前第一子密钥执行异或运算得到当前第一加密结果,将循环左移A位后的第一右侧编码字与当前第一加密结果执行异或操作得到当前第二加密结果;
步骤5:判断Y是否大于N;若是,则将根据当前第一加密结果和当前第二加密结果作为对所述待加密信息加密处理后的密文编码;若否,则将当前第一加密结果作为新的第一左侧编码字,并将当前第二加密结果作为新的第一右侧编码字,将Y加一,进入步骤2;
可选的,还包括:
在生成所述子密钥后,将所述子密钥存储至相应的寄存器中。
可选的,还包括:
当接收到所述密文编码对应的解密指令时,根据所述解密指令以半字为单位分为第二左侧编码字和第二右侧编码字;
依次利用N组所述子密钥对所述第二左侧编码字和所述第二右侧编码字执行异或运算和模2M加运算,以便对所述密文编码执行解密处理得到所述明文编码。
可选的,依次利用N组所述子密钥对所述第二左侧编码字和所述第二右侧编码字执行异或运算和模2M加运算,以便对所述密文编码执行解密处理得到所述明文编码包括:
步骤1:将所有所述子密钥按照生成时间从早到晚顺序进行编号,并设X=N;其中,所述生成时间越早的子密钥的编号数字越小,生成时间相同的子密钥的编号数字相同;
步骤2:将所述编号为X的子密钥作为当前第一子密钥和当前第二子密钥;
步骤3:将所述第二左侧编码字和所述第二右侧编码字执行异或运算得到第四运算结果,将所述第四运算结果右移A位得到第二中间解密结果;将所述第二左侧编码字与所述当前第二子密钥进行异或运算得到第五运算结果,将所述第五运算结果与所述第二中间密钥字R1进行模216加操作得到第一中间解密结果;
步骤4:将所述第一中间解密结果和所述第二中间解密结果进行异或运算得到第六运算结果,将所述第六运算结果循环右移D位得到当前第二解密结果;将循环左移C位后的第一中间解密结果与当前第二解密结果进行模216加操作得到第七运算结果,将所述第七运算结果与当前第一子密钥执行异或运算操作得到当前第一解密结果;
步骤5:判断X是否等于1;若是,则将根据当前第一解密结果和当前第二解密结果作为对所述密文编码解密处理后得到的明文编码;若否,则将当前第一解密结果作为新的第二左侧编码字,并将当前第二解密结果作为新的第二右侧编码字,将X减一,进入步骤2。
本申请还提供了一种信息加密系统,该信息加密系统包括:
信息确定模块,用于当接收到加密指令时,确定待加密信息和主密钥编码;其中,所述待加密信息为明文编码;
划分模块,用于将所述主密钥编码以半字为单位分为左侧密钥字和右侧密钥字,并将所述待加密信息以半字为单位分为第一左侧编码字和第一右侧编码字;
密钥扩展模块,用于根据所述左侧密钥字和右侧密钥字执行密钥扩展操作得到N组子密钥;
加密模块,用于依次利用N组所述子密钥对所述第一左侧编码字和所述第一右侧编码字执行异或运算和模2M加运算,以便对所述待加密信息执行加密处理得到密文编码。
可选的,所述密钥扩展模块包括:
中间密钥确定单元,用于将循环左移A位后的左侧密钥字与所述右侧密钥字进行模216加操作得到第一中间密钥字L1,将循环右移B位后的右侧密钥字与所述第一中间密钥字L1执行异或运算操作得到第二中间密钥字R2;
子密钥确定单元,用于将循环左移A位后的第一中间密钥字L1与所述第二中间密钥字L2执行模216加操作得到第一子密钥KL0,将循环右移B位后的右侧密钥字与所述第一子密钥KL0执行异或运算操作得到第二子密钥KR0;
子密钥处理单元,用于将所述第一子密钥KL0和所述第二子密钥KR0设置为一组子密钥,并记录子密钥的组数;
判断单元,用于判断所述组数是否大于N;若否,则将所述第一子密钥KL0作为新的左侧密钥字并将所述第二子密钥KR0作为新的右侧密钥字,启动所述中间密钥确定单元对应的工作流程。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述信息加密方法执行的步骤。
本申请还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述信息加密方法执行的步骤。
本申请提供了一种信息加密方法,包括当接收到加密指令时,确定待加密信息和主密钥编码;其中,所述待加密信息为明文编码;将所述主密钥编码以半字为单位分为左侧密钥字和右侧密钥字,并将所述待加密信息以半字为单位分为第一左侧编码字和第一右侧编码字;根据所述左侧密钥字和右侧密钥字执行密钥扩展操作得到N组子密钥;依次利用N组所述子密钥对所述第一左侧编码字和所述第一右侧编码字执行异或运算和模2M加运算,以便对所述待加密信息执行加密处理得到密文编码。
相对于相关技术中通过S盒进行加密的方式,本申请通过密钥扩展得到的N组子密钥依次对第一左侧编码字和所述第一右侧编码字执行加密操作得到密文编码。更进一步的,由于本申请通过执行异或运算和模2M加运算实现信息加密,该过程无需复杂的运算逻辑,提高了加密过程中硬件利用率,降低了对载体计算能力和存储空间的要求。因此,本申请能够在满足一定安全性的前提下减小加密信息过程所占用的存储空间。本申请同时还提供了一种信息加密系统、一种计算机可读存储介质和一种电子设备,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种信息加密方法的流程图;
图2为本申请实施例所提供的一种信息解密方法的流程图;
图3为本实施例整体电路结构示意图;
图4为本实施例密钥扩展电路每一轮的运算内部框架示意图;
图5为本实施例加解密电路整体框架示意图;
图6为本实施例加解密算法中每一轮的运算的内部框架示意图;
图7为本申请实施例所提供的一种信息加密系统的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面请参见图1,图1为本申请实施例所提供的一种信息加密方法的流程图。
具体步骤可以包括:
S101:当接收到加密指令时,确定待加密信息和主密钥编码;
其中,所述待加密信息为明文编码,本实施例可以应用于物联网中的物联网设备,本实施例的执行主体可以为物联网设备。待加密信息为需要进行加密处理的信息,待加密信息以明文编码的形式存在,本实施例不限定待加密信息的来源、用途以及内容。
S102:将所述主密钥编码以半字为单位分为左侧密钥字和右侧密钥字,并将所述待加密信息以半字为单位分为第一左侧编码字和第一右侧编码字;
其中,主密钥编码可以为一串字符,每一字符的长度为一个字,本步骤可以将主密钥中每一字符按照半字为单位划分为左侧密钥字和右侧密钥字,同理可以将待加密信息中每一字符按照半字为单位划分为第一左侧编码字和第一右侧编码字。
S103:根据所述左侧密钥字和右侧密钥字执行密钥扩展操作得到N组子密钥;
其中,本实施例的目的在于通过对主密钥编码执行密钥扩展得到多组子密钥,本步骤是在将主密钥编码划分为左侧密钥字和右侧密钥字的基础上实现的,此处不限定N的数值大小。
具体的,执行密钥扩展操作得到N组子密钥的操作可以包括以下步骤:
步骤1:将循环左移A位后的左侧密钥字与所述右侧密钥字进行模216加操作得到第一中间密钥字L1,将循环右移B位后的右侧密钥字与所述第一中间密钥字L1执行异或运算操作得到第二中间密钥字R2;
步骤2:将循环左移A位后的第一中间密钥字L1与所述第二中间密钥字L2执行模216加操作得到第一子密钥KL0,将循环右移B位后的右侧密钥字与所述第一子密钥KL0执行异或运算操作得到第二子密钥KR0;
步骤3:将所述第一子密钥KL0和所述第二子密钥KR0设置为一组子密钥,并记录子密钥的组数;
步骤4:判断所述组数是否大于N;若否,则将所述第一子密钥KL0作为新的左侧密钥字并将所述第二子密钥KR0作为新的右侧密钥字,进入步骤1。若是,则可以进入S104的相关操作。
作为一种可行的实施方式,在生成所述子密钥后可以将所述子密钥存储至相应的寄存器中。
S104:依次利用N组所述子密钥对所述第一左侧编码字和所述第一右侧编码字执行异或运算和模2M加运算,以便对所述待加密信息执行加密处理得到密文编码。
其中,本步骤中利用子密钥依次对第一左侧编码字和所述第一右侧编码字执行异或运算和模2M加运算相当于执行迭代操作。上一代得到的加密结果作为下一代加密处理的输入数据,具体过程可以包括以下步骤:
步骤1:将所有所述子密钥按照生成时间从早到晚顺序进行编号,并设Y=1;其中,所述生成时间越早的子密钥的编号数字越小;
其中,此处的编号最小值为1,最大值为N,相邻的编号之间差值为1。
步骤2:将所述编号为Y的2个子密钥分别作为当前第一子密钥和当前第二子密钥;
其中,本实施例默认编号为Y的子密钥存在两个,进一步的,本实施例中当前第一子密钥为左侧密钥字对应的子密钥,当前第二子密钥为右侧密钥字对应的子密钥。
步骤3:将所述第一左侧编码字与当前第一子密钥进行异或运算得到第一运算结果,并将所述第一运算结果与所述第一右侧编码字执行模216加操作得到第二运算结果,将所述第二运算结果循环右移C位得到第一中间加密结果,将循环左移D位后的第一右侧编码字与所述第一中间加密结果执行异或运算操作得到第二中间加密结果;
步骤4:将所述第一中间加密结果与所述第二中间加密结果进行模216加操作得到第三运算结果,将所述第三运算结果与所述当前第一子密钥执行异或运算得到当前第一加密结果,将循环左移A位后的第一右侧编码字与当前第一加密结果执行异或操作得到当前第二加密结果;
步骤5:判断Y是否大于N;若是,则将根据当前第一加密结果和当前第二加密结果作为对所述待加密信息加密处理后的密文编码;若否,则将当前第一加密结果作为新的第一左侧编码字,并将当前第二加密结果作为新的第一右侧编码字,将Y加一,进入步骤2;
相对于相关技术中通过S盒进行加密的方式,本实施例通过密钥扩展得到的N组子密钥依次对第一左侧编码字和所述第一右侧编码字执行加密操作得到密文编码。更进一步的,由于本实施例通过执行异或运算和模2M加运算实现信息加密,该过程无需复杂的运算逻辑,提高了加密过程中硬件利用率,降低了对载体计算能力和存储空间的要求。因此,本实施例能够在满足一定安全性的前提下减小加密信息过程所占用的存储空间。
下面请参见图2,图2为本申请实施例所提供的一种信息解密方法的流程图。作为对于图1对应实施例加密过程的进一步补充,本实施例在对待加密编码执行加密操作之后,还可以包括以下相应的解密操作:
S201:当接收到所述密文编码对应的解密指令时,根据所述解密指令以半字为单位分为第二左侧编码字和第二右侧编码字;
S202:依次利用N组所述子密钥对所述第二左侧编码字和所述第二右侧编码字执行异或运算和模2M加运算,以便对所述密文编码执行解密处理得到所述明文编码。
具体的S202中的操作可以包括以下步骤:
步骤1:将所有所述子密钥按照生成时间从早到晚顺序进行编号,并设X=N;其中,所述生成时间越早的子密钥的编号数字越小,生成时间相同的子密钥的编号数字相同;
步骤2:将所述编号为X的子密钥作为当前第一子密钥和当前第二子密钥;
其中,本实施例默认编号为X的子密钥存在两个,进一步的,本实施例中当前第一子密钥为左侧密钥字对应的子密钥,当前第二子密钥为右侧密钥字对应的子密钥。
步骤3:将所述第二左侧编码字和所述第二右侧编码字执行异或运算得到第四运算结果,将所述第四运算结果右移A位得到第二中间解密结果;将所述第二左侧编码字与所述当前第二子密钥进行异或运算得到第五运算结果,将所述第五运算结果与所述第二中间密钥字R1进行模216加操作得到第一中间解密结果;
步骤4:将所述第一中间解密结果和所述第二中间解密结果进行异或运算得到第六运算结果,将所述第六运算结果循环右移D位得到当前第二解密结果;将循环左移C位后的第一中间解密结果与当前第二解密结果进行模216加操作得到第七运算结果,将所述第七运算结果与当前第一子密钥执行异或运算操作得到当前第一解密结果;
步骤5:判断X是否等于1;若是,则将根据当前第一解密结果和当前第二解密结果作为对所述密文编码解密处理后得到的明文编码;若否,则将当前第一解密结果作为新的第二左侧编码字,并将当前第二解密结果作为新的第二右侧编码字,将X减一,进入步骤2。
下面通过在实际应用中的一种用于物联网的轻量级加/解密方法来说明上述实施例描述的流程。请参见图3、图4、图5和图6,图3为本实施例整体电路结构示意图,图4为本实施例密钥扩展电路每一轮的运算内部框架示意图,图5为本实施例加解密电路整体框架示意图,图6为本实施例加解密算法中每一轮的运算的内部框架示意图。
(一)加密流程
步骤一、将一组明文编码以半字为单位分为2个编码字L和R,主密钥编码以半字为单位分为2个密钥字L和R;
步骤二、将主密钥编码中L密钥字循环左移5位,再与主密钥编码中L密钥字R进行模216加,生成新的L1。将主密钥编码中R密钥字循环右移4位,再与主密钥编码中新生成密钥字L1进行异或运算,生成新的R1。再将L1密钥字循环左移5位,后与R1进行模216加,生成新的kL0。将R1密钥字循环右移4位,再与密钥字kL0进行异或运算,生成新的kR0。存储该轮子密钥。
步骤三、重复密钥扩展过程的步骤二再生成10个子密钥;
步骤四、将明文编码字L与生成的轮子密钥kL0进行异或运算,再与明文编码字R进行模216加,加后的结果再循环右移3位生成L',将明文编码字R循环左移2位,再与编码字L'进行异或运算生成R'。
步骤五、将L'与编码字R'进行模216加,加后的结果与生成的轮子密钥kR0进行异或运算生成L1,将编码字R'循环左移5位,再与编码字L1进行异或运算生成R1;
步骤六、对所述一组明文编码依次按顺序使用第2轮子密钥至第10轮子密钥重复步骤四,五进行10轮加密;
步骤七、当一组明文编码经过10轮加密后,输出获得密文编码;
(二)解密流程
步骤一、将一组密文编码以半字为单位分为2个编码字L和R,主密钥编码以半字为单位分为2个密钥字L和R;
步骤二、将主密钥编码中L密钥字循环左移5位,再与主密钥编码中L密钥字R进行模216加,生成新的L1。将主密钥编码中R密钥字循环右移4位,再与主密钥编码中新生成密钥字L1进行异或运算,生成新的R1。再将L1密钥字循环左移5位,后与R1进行模216加,生成新的kL0。将R1密钥字循环右移4位,再与密钥字kL0进行异或运算,生成新的kR0。存储该轮子密钥。
步骤三、重复解密过程的步骤二再生成10个子密钥;
步骤四、将密文编码字R与密文编码字L进行异或运算,再循环右移5位生成R'。将密文编码字L与轮子密钥kR9进行异或运算,再与R1进行模216加运算,生成L';
步骤五、将密文编码字R'与密文编码字L'进行异或运算,再循环右移2位生成R1。将密文编码字L'循环左移3位,再与R1进行模216加运算,再与轮子密钥kL9进行异或运算生成L1;
步骤六、对所述一组明文编码依次按顺序使用第9轮子密钥至第0轮子密钥重复步骤四,五进行10轮解密;
步骤七、当一组明文编码经过10轮解密后,输出获得明文编码。
上述实施例中10个子密钥可以通过Register File方式寄存。
RegisterFile的具体的接口如下:
RegisterFile的宽度为32比特,深度为10,mem_data_rd_raw[31:0]即为解密过程从RegisterFile中读出轮子密钥,clk即为系统时钟信号,CEN为RegisterFile的使能信号,该信号定义为解密时有效,WR是读写信号,该信号定义为高电平读有效,低电平写有效。mem_addr[8:4]为地址信号,标记需从RegisterFile的哪个地址读出或写入数据,每一个时钟周期,地址值加1,直到为10停止,即解密完成。mem_data_wr[31:0]为向RegisterFile写轮子密钥的数据端口,也即每轮的子密钥,例如:在解密过程中,首先必须生成好10轮的子密钥,10轮的子密钥是由密钥扩展算法生成的,每个时钟周期生成一轮子密钥,并向RegisterFile写入。第一轮时生成rk0,此时轮数为1,也即在这个时钟周期内把子密钥rk0写进RegisterFile中地址为0的地方,第二个时钟周期把子密钥rk1写进地址为1的地方,...,第10个时钟周期把子密钥rk9写进RegisterFile中地址为9的地方,产生完全部10轮子密钥之前,控制电路的key_ready信号拉低,即mem_rw_b信号由高拉低,RegisterFile是处于写状态中,而当10轮子密钥都生成好而且全部写进RegisterFile后之后,控制电路的key_ready信号为1,此时RegisterFile处于读状态,此时mem_addr[8:4]的值定义为(10-round),解密时第一个时钟周期,也即mem_addr[8:4]为0,此时从RegisterFile中读出地址为(9-0)=9的值,即读出子密钥rk9,mem_data_rd[31:0]即为rk9,解密时第二个时钟周期,也即mem_addr[8:4]为1,此时从RegisterFile中读出地址为(9-1)=8的值,即读出子密钥rk8,mem_data_rd[31:0]即为rk8,...,解密时第9个时钟周期,也即mem_addr[8:4]为9,此时从RegisterFile中读出地址为(9-9)=0的值,即读出子密钥rk0,mem_data_rd[31:0]即为rk0用于解密,从而完成解密过程。
本实施例上述内容解释如下。
附图3中各信号的功能描述如下:
输入信号:
clk:系统时钟输入;
rst_:复位信号,低电平有效;
en_de:加解密模式,0为解密,1为加密;
key[31:0]:算法的主密钥,位宽为32比特;
key_valid:密钥输入指示信号;
new_key:更新主密钥指示信号;
data_in[31:0]:明文输入,位宽为32比特;
data_valid:明文输入指示信号;
start:开始加解密信号。
输出信号:
crypt_out[31:0]:密文输出,位宽为32比特;
done:加解密结束指示信号。
加密密钥长度为32比特,表示为K=L|R,其中L和R为半字,轮密钥表示为(rk0,rk1,…,rk9),其中rki(i=0,1,…,9)为字。轮密钥由加密密钥生成。本算法采用非线性迭代结构,以半字为单位进行加密运算,称一次迭代运算为一轮变换.一共有10轮迭代变换。
本发明算法硬件实现方法包含算法中的密钥扩展算法的硬件实现和加解密算法的硬件实现,而用快速的算法硬件实现方法实现后的电路包括密钥扩展电路,加解密电路。所述密钥扩展电路是指用32比特的主密钥产生算法中10轮加解密所需的子密钥的电路,其中每一轮子密钥长度为32比特。所述加解密电路是指32比特明文和由密钥扩展电路产生的10轮子密钥经过算法10轮的加解密过程得到32比特密文的电路。所述轮控制电路是指选择和控制密钥扩展电路以及加解密电路中的轮数。
所述的加解密电路,定义10个32比特的寄存器,分别寄存由加解密算法所产生的10轮的轮密文,其中每一轮的轮密文为10比特,数据输入长度为32比特,而由一个数据输入指示信号data_valid来确定何时送入新的32比特数据,指示信号data_valid是一个周期为10个时钟单元的指示信号,也即每10个时钟单元后送入新的32比特数据。
所述的加解密电路,当指示信号data_valid指示信号有效时,第一组32比特数据送入加解密电路中,经过10个时钟单元可获得第一组32比特数据的密文,再经10个时钟单元即可获得第二组32比特数据的密文,再经10个时钟单元即可获得第三组32比特数据的密文,依次类推,直到所有的数据处理完成。
上述技术方案中的有关内容解释如下:
上述方案中,所述明文编码以半字为单位分为2个编码字L和R:M=L|R,|为连接符。所述解密过程中10个子密钥通过Register File方式寄存。所述加密过程中非线性变换为:τ为加密过程中非线性变换,其中模数N为216,即 的含义是模N加,即A+B的结果模N。非线性变换τ:设输入为A=(a15,a14,a13…a0)∈(216),B=(b15,b14,b13…b0)∈(216),输出为C=(c15,c14,c13…c0)∈(216),则有: 线性变换L:非线性变换τ的输出也即为线性变换L的输入。设输入为C∈216,则有:
D=L(C)=C<<<3,其中<<<i为16比特循环左移i位。
上述方案中,所述解密过程中非线性变换为:τ为加密过程中非线性变换,其中模数N为216,即τ=(A-B)modN。
非线性变换τ:设输入为A=(a15,a14,a13…a0)∈(216),B=(b15,b14,b13…b0)∈(216),输出为C=(c15,c14,c13…c0)∈(216),则有:
(c15,c14,c13…c0)=τ(A,B)=(A-B)modN;
线性变换L':非线性变换τ的输出也即为线性变换L'的输入。设输入为C∈216,则有:
D=L(C)=C>>>2,其中>>>i为16比特循环左右移i位。
由于上述技术方案运用,本发明与现有技术相比具有下列优点和效果:
(1)本发明设计简洁且占用面积少,去掉了面积更大的S,且整体运算简单,没有复杂的运算逻辑,密钥扩展方式和加解密方式类似。该算法实现时硬件的利用率更高,且有利于整个算法在更小的电路面积上实现。
(2)安全性高,对于我国的信息安全有更加可靠的保证。
(3)电路实现简单,通过定义不同的寄存器用于寄存每一轮所产生的轮密文和子密钥,从而使得电路实现相对简单,不需要过多的考虑加解密算法和密钥扩展算法的逻辑实现。
(4)适用面更广,通过采用简单的逻辑运算和更小的面积,使其在达到一定的安全性后,对载体的计算能力和存储空间要求大大降低,从而使得能适用于对计算能力和存储大小要求更弱的应用领域,从而使得其的使用范围扩大了,能适用不同的应用环境。
请参见图7,图7为本申请实施例所提供的一种信息加密系统的结构示意图;
该系统可以包括:
信息确定模块100,用于当接收到加密指令时,确定待加密信息和主密钥编码;其中,所述待加密信息为明文编码;
划分模块200,用于将所述主密钥编码以半字为单位分为左侧密钥字和右侧密钥字,并将所述待加密信息以半字为单位分为第一左侧编码字和第一右侧编码字;
密钥扩展模块300,用于根据所述左侧密钥字和右侧密钥字执行密钥扩展操作得到N组子密钥;
加密模块400,用于依次利用N组所述子密钥对所述第一左侧编码字和所述第一右侧编码字执行异或运算和模2M加运算,以便对所述待加密信息执行加密处理得到密文编码。
相对于相关技术中通过S盒进行加密的方式,本实施例通过密钥扩展得到的N组子密钥依次对第一左侧编码字和所述第一右侧编码字执行加密操作得到密文编码。更进一步的,由于本实施例通过执行异或运算和模2M加运算实现信息加密,该过程无需复杂的运算逻辑,提高了加密过程中硬件利用率,降低了对载体计算能力和存储空间的要求。因此,本实施例能够在满足一定安全性的前提下减小加密信息过程所占用的存储空间。
进一步的,所述密钥扩展模块300包括:
中间密钥确定单元,用于将循环左移A位后的左侧密钥字与所述右侧密钥字进行模216加操作得到第一中间密钥字L1,将循环右移B位后的右侧密钥字与所述第一中间密钥字L1执行异或运算操作得到第二中间密钥字R2;
子密钥确定单元,用于将循环左移A位后的第一中间密钥字L1与所述第二中间密钥字L2执行模216加操作得到第一子密钥KL0,将循环右移B位后的右侧密钥字与所述第一子密钥KL0执行异或运算操作得到第二子密钥KR0;
子密钥处理单元,用于将所述第一子密钥KL0和所述第二子密钥KR0设置为一组子密钥,并记录子密钥的组数;
判断单元,用于判断所述组数是否大于N;若否,则将所述第一子密钥KL0作为新的左侧密钥字并将所述第二子密钥KR0作为新的右侧密钥字,启动所述中间密钥确定单元对应的工作流程。
由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (7)
1.一种信息加密方法,其特征在于,包括:
当接收到加密指令时,确定待加密信息和主密钥编码;其中,所述待加密信息为明文编码;
将所述主密钥编码以半字为单位分为左侧密钥字和右侧密钥字,并将所述待加密信息以半字为单位分为第一左侧编码字和第一右侧编码字;
根据所述左侧密钥字和所述右侧密钥字执行密钥扩展操作得到N组子密钥;
依次利用N组所述子密钥对所述第一左侧编码字和所述第一右侧编码字执行异或运算和模2M加运算,以便对所述待加密信息执行加密处理得到密文编码;
其中,所述根据所述左侧密钥字和右侧密钥字执行密钥扩展操作得到N个子密钥包括:
步骤1:将循环左移A位后的左侧密钥字与所述右侧密钥字进行模216加操作得到第一中间密钥字L1,将循环右移B位后的右侧密钥字与所述第一中间密钥字L1执行异或运算操作得到第二中间密钥字R2;
步骤2:将循环左移A位后的第一中间密钥字L1与所述第二中间密钥字L2执行模216加操作得到第一子密钥KL0,将循环右移B位后的右侧密钥字与所述第一子密钥KL0执行异或运算操作得到第二子密钥KR0;
步骤3:将所述第一子密钥KL0和所述第二子密钥KR0设置为一组子密钥,并记录子密钥的组数;
步骤4:判断所述组数是否大于N;若否,则将所述第一子密钥KL0作为新的左侧密钥字并将所述第二子密钥KR0作为新的右侧密钥字,进入步骤1;
其中,所述依次利用N组所述子密钥对所述第一左侧编码字和所述第一右侧编码字执行异或运算和模2M加运算,以便对所述待加密信息执行加密处理得到密文编码包括:
步骤1:将所有所述子密钥按照生成时间从早到晚顺序进行编号,并设Y=1;其中,所述生成时间越早的子密钥的编号数字越小,生成时间相同的子密钥的编号数字相同;
步骤2:将所述编号为Y的2个子密钥分别作为当前第一子密钥和当前第二子密钥;
步骤3:将所述第一左侧编码字与当前第一子密钥进行异或运算得到第一运算结果,并将所述第一运算结果与所述第一右侧编码字执行模216加操作得到第二运算结果,将所述第二运算结果循环右移C位得到第一中间加密结果,将循环左移D位后的第一右侧编码字与所述第一中间加密结果执行异或运算操作得到第二中间加密结果;
步骤4:将所述第一中间加密结果与所述第二中间加密结果进行模216加操作得到第三运算结果,将所述第三运算结果与所述当前第一子密钥执行异或运算得到当前第一加密结果,将循环左移A位后的第一右侧编码字与当前第一加密结果执行异或操作得到当前第二加密结果;
步骤5:判断Y是否大于N;若是,则将根据当前第一加密结果和当前第二加密结果作为对所述待加密信息加密处理后的密文编码;若否,则将当前第一加密结果作为新的第一左侧编码字,并将当前第二加密结果作为新的第一右侧编码字,将Y加一,进入步骤2。
2.根据权利要求1所述信息加密方法,其特征在于,还包括:
在生成所述子密钥后,将所述子密钥存储至相应的寄存器中。
3.根据权利要求1所述信息加密方法,其特征在于,还包括:
当接收到所述密文编码对应的解密指令时,根据所述解密指令以半字为单位分为第二左侧编码字和第二右侧编码字;
依次利用N组所述子密钥对所述第二左侧编码字和所述第二右侧编码字执行异或运算和模2M加运算,以便对所述密文编码执行解密处理得到所述明文编码。
4.根据权利要求3所述加密方法,其特征在于,依次利用N组所述子密钥对所述第二左侧编码字和所述第二右侧编码字执行异或运算和模2M加运算,以便对所述密文编码执行解密处理得到所述明文编码包括:
步骤1:将所有所述子密钥按照生成时间从早到晚顺序进行编号,并设X=N;其中,所述生成时间越早的子密钥的编号数字越小,生成时间相同的子密钥的编号数字相同;
步骤2:将所述编号为X的子密钥作为当前第一子密钥和当前第二子密钥;
步骤3:将所述第二左侧编码字和所述第二右侧编码字执行异或运算得到第四运算结果,将所述第四运算结果右移A位得到第二中间解密结果;将所述第二左侧编码字与所述当前第二子密钥进行异或运算得到第五运算结果,将所述第五运算结果与所述第二中间密钥字R1进行模216加操作得到第一中间解密结果;
步骤4:将所述第一中间解密结果和所述第二中间解密结果进行异或运算得到第六运算结果,将所述第六运算结果循环右移D位得到当前第二解密结果;将循环左移C位后的第一中间解密结果与当前第二解密结果进行模216加操作得到第七运算结果,将所述第七运算结果与当前第一子密钥执行异或运算操作得到当前第一解密结果;
步骤5:判断X是否等于1;若是,则将根据当前第一解密结果和当前第二解密结果作为对所述密文编码解密处理后得到的明文编码;若否,则将当前第一解密结果作为新的第二左侧编码字,并将当前第二解密结果作为新的第二右侧编码字,将X减一,进入步骤2。
5.一种信息加密系统,其特征在于,包括:
信息确定模块,用于当接收到加密指令时,确定待加密信息和主密钥编码;其中,所述待加密信息为明文编码;
划分模块,用于将所述主密钥编码以半字为单位分为左侧密钥字和右侧密钥字,并将所述待加密信息以半字为单位分为第一左侧编码字和第一右侧编码字;
密钥扩展模块,用于根据所述左侧密钥字和所述右侧密钥字执行密钥扩展操作得到N组子密钥;
加密模块,用于依次利用N组所述子密钥对所述第一左侧编码字和所述第一右侧编码字执行异或运算和模2M加运算,以便对所述待加密信息执行加密处理得到密文编码;
其中,所述密钥扩展模块包括:
中间密钥确定单元,用于将循环左移A位后的左侧密钥字与所述右侧密钥字进行模216加操作得到第一中间密钥字L1,将循环右移B位后的右侧密钥字与所述第一中间密钥字L1执行异或运算操作得到第二中间密钥字R2;
子密钥确定单元,用于将循环左移A位后的第一中间密钥字L1与所述第二中间密钥字L2执行模216加操作得到第一子密钥KL0,将循环右移B位后的右侧密钥字与所述第一子密钥KL0执行异或运算操作得到第二子密钥KR0;
子密钥处理单元,用于将所述第一子密钥KL0和所述第二子密钥KR0设置为一组子密钥,并记录子密钥的组数;
判断单元,用于判断所述组数是否大于N;若否,则将所述第一子密钥KL0作为新的左侧密钥字并将所述第二子密钥KR0作为新的右侧密钥字,启动所述中间密钥确定单元对应的工作流程;
其中,所述加密模块的工作流程包括:
步骤1:将所有所述子密钥按照生成时间从早到晚顺序进行编号,并设Y=1;其中,所述生成时间越早的子密钥的编号数字越小,生成时间相同的子密钥的编号数字相同;
步骤2:将所述编号为Y的2个子密钥分别作为当前第一子密钥和当前第二子密钥;
步骤3:将所述第一左侧编码字与当前第一子密钥进行异或运算得到第一运算结果,并将所述第一运算结果与所述第一右侧编码字执行模216加操作得到第二运算结果,将所述第二运算结果循环右移C位得到第一中间加密结果,将循环左移D位后的第一右侧编码字与所述第一中间加密结果执行异或运算操作得到第二中间加密结果;
步骤4:将所述第一中间加密结果与所述第二中间加密结果进行模216加操作得到第三运算结果,将所述第三运算结果与所述当前第一子密钥执行异或运算得到当前第一加密结果,将循环左移A位后的第一右侧编码字与当前第一加密结果执行异或操作得到当前第二加密结果;
步骤5:判断Y是否大于N;若是,则将根据当前第一加密结果和当前第二加密结果作为对所述待加密信息加密处理后的密文编码;若否,则将当前第一加密结果作为新的第一左侧编码字,并将当前第二加密结果作为新的第一右侧编码字,将Y加一,进入步骤2。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述信息加密方法的步骤。
7.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至4任一项所述信息加密方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910349533.3A CN110071927B (zh) | 2019-04-28 | 2019-04-28 | 一种信息加密方法、系统及相关组件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910349533.3A CN110071927B (zh) | 2019-04-28 | 2019-04-28 | 一种信息加密方法、系统及相关组件 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110071927A CN110071927A (zh) | 2019-07-30 |
CN110071927B true CN110071927B (zh) | 2021-09-14 |
Family
ID=67369256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910349533.3A Active CN110071927B (zh) | 2019-04-28 | 2019-04-28 | 一种信息加密方法、系统及相关组件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110071927B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113901492A (zh) * | 2021-09-06 | 2022-01-07 | 苏州国芯科技股份有限公司 | 数据传输的加解密方法、装置、系统及设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196965A (zh) * | 2006-12-07 | 2008-06-11 | 上海安创信息科技有限公司 | 防攻击高级加密标准的加密芯片的算法 |
CN101459510A (zh) * | 2007-12-14 | 2009-06-17 | 华为技术有限公司 | 实时传输数据的加密算法的实现方法及装置 |
CN101764685A (zh) * | 2009-10-26 | 2010-06-30 | 广州杰赛科技股份有限公司 | 实现sms4算法的加解密系统 |
CN101895389A (zh) * | 2010-07-16 | 2010-11-24 | 黑龙江大学 | 采用比例计算的基于组合编码的文件加密和解密的方法 |
CN101924630A (zh) * | 2010-09-06 | 2010-12-22 | 苏州国芯科技有限公司 | 一种应用于无线局域网的快速加解密方法 |
CN103236923A (zh) * | 2010-09-06 | 2013-08-07 | 苏州国芯科技有限公司 | 用于无线局域网的高效安全加密方法 |
CN104301095A (zh) * | 2014-10-13 | 2015-01-21 | 深圳中科讯联科技有限公司 | Des轮运算方法和电路 |
CN106027227A (zh) * | 2016-07-01 | 2016-10-12 | 浙江工业大学 | 一种费马数数论变换与safer密码算法相结合的分组加密方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015130580A (ja) * | 2014-01-07 | 2015-07-16 | 富士通株式会社 | データスクランブル装置、セキュリティ装置、セキュリティシステム及びデータスクランブル方法 |
-
2019
- 2019-04-28 CN CN201910349533.3A patent/CN110071927B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196965A (zh) * | 2006-12-07 | 2008-06-11 | 上海安创信息科技有限公司 | 防攻击高级加密标准的加密芯片的算法 |
CN101459510A (zh) * | 2007-12-14 | 2009-06-17 | 华为技术有限公司 | 实时传输数据的加密算法的实现方法及装置 |
CN101764685A (zh) * | 2009-10-26 | 2010-06-30 | 广州杰赛科技股份有限公司 | 实现sms4算法的加解密系统 |
CN101895389A (zh) * | 2010-07-16 | 2010-11-24 | 黑龙江大学 | 采用比例计算的基于组合编码的文件加密和解密的方法 |
CN101924630A (zh) * | 2010-09-06 | 2010-12-22 | 苏州国芯科技有限公司 | 一种应用于无线局域网的快速加解密方法 |
CN103236923A (zh) * | 2010-09-06 | 2013-08-07 | 苏州国芯科技有限公司 | 用于无线局域网的高效安全加密方法 |
CN104301095A (zh) * | 2014-10-13 | 2015-01-21 | 深圳中科讯联科技有限公司 | Des轮运算方法和电路 |
CN106027227A (zh) * | 2016-07-01 | 2016-10-12 | 浙江工业大学 | 一种费马数数论变换与safer密码算法相结合的分组加密方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110071927A (zh) | 2019-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5822970B2 (ja) | 擬似ランダム生成、データ暗号化、およびメッセージ暗号化ハッシングのための暗号化デバイス | |
US8966279B2 (en) | Securing the implementation of a cryptographic process using key expansion | |
EP2058781B1 (en) | Encryption device, encryption method, and computer program | |
US9898623B2 (en) | Method for performing an encryption with look-up tables, and corresponding encryption apparatus and computer program product | |
CN108964872B (zh) | 一种基于aes的加密方法及装置 | |
US8504845B2 (en) | Protecting states of a cryptographic process using group automorphisms | |
US8605894B2 (en) | Cryptographic process execution protecting an input value against attacks | |
US8675866B2 (en) | Multiplicative splits to protect cipher keys | |
WO2019114122A1 (zh) | 登录信息的加密方法、装置、电子设备及介质 | |
US9565018B2 (en) | Protecting cryptographic operations using conjugacy class functions | |
US11258579B2 (en) | Method and circuit for implementing a substitution table | |
MX2011001228A (es) | Metodo para generar un codigo de autenticacion de mensajes basados en el cifrado. | |
CN107534549B (zh) | 可读存储介质、用于数据流字块加密的方法及系统 | |
US9418245B2 (en) | Encryption processing device, encryption processing method, and program | |
CN116488794A (zh) | 基于fpga的高速sm4密码模组实现方法及装置 | |
KR101506499B1 (ko) | 마스킹이 적용된 seed를 이용한 암호화 방법 | |
CN110071927B (zh) | 一种信息加密方法、系统及相关组件 | |
CN114124359A (zh) | 保留格式加密数据的方法、装置、电子设备及存储介质 | |
RU2188513C2 (ru) | Способ криптографического преобразования l-битовых входных блоков цифровых данных в l-битовые выходные блоки | |
US11101824B2 (en) | Encryption device and decryption device, and operation method thereof | |
JP5605197B2 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
JP5578422B2 (ja) | 暗号化通信システム、送信装置、受信装置、暗号化/復号化方法およびそれらのプログラム | |
JP4990843B2 (ja) | 暗号演算装置、その方法、及びプログラム | |
CN112487448B (zh) | 一种加密信息处理装置、方法及计算机设备 | |
Nuthan et al. | Development of Randomized Hybrid Cryptosystem Using Public and Private Keys |
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 |