加密装置、加密方法及加密程序

申请号 CN202280051086.3 申请日 2022-07-26 公开(公告)号 CN117677997A 公开(公告)日 2024-03-08
申请人 KDDI株式会社; 发明人 仲野有登; 福岛和英;
摘要 为了分别更新规 定位 长的复数个内部状态而安装了复数次执行AES的轮函数的加密方式的加密装置具备处理部,该处理部通过规定的命令的一次调用,对能够并行执行的轮函数的组进行集中处理,命令具有能够处理的位数的上限,以使与命令的调用次数对应的处理负荷最小的方式对轮函数进行分组。
权利要求

1.一种加密装置,为了分别更新规定位长的复数个内部状态而安装了复数次执行AES的轮函数的加密方式,其中,
所述加密装置具备处理部,所述处理部通过规定的命令的一次调用,对能够并行执行的所述轮函数的组进行集中处理,
所述命令具有能够处理的位数的上限,以使与所述命令的调用次数对应的处理负荷最小的方式对所述轮函数进行分组。
2.根据权利要求1所述的加密装置,其中,
对复数个所述轮函数中的、后续的运算的种类相同的轮函数进行分组。
3.根据权利要求2所述的加密装置,其中,
对复数个所述轮函数中的、后续的所述运算的输入值的至少一部分相同的轮函数进行分组。
4.根据权利要求1至3中任一项所述的加密装置,其中,
利用能够处理的位数的上限不同的复数个命令,对所述轮函数进行分组。
5.一种加密方法,其中,
在计算机为了分别更新规定位长的复数个内部状态而实施复数次执行AES的轮函数的加密方式时,
通过规定的命令的一次调用,对能够并行执行的所述轮函数的组进行集中处理,所述命令具有能够处理的位数的上限,以使与所述命令的调用次数对应的处理负荷最小的方式对所述轮函数进行分组。
6.一种加密程序,用于使计算机作为权利要求1至4中的任一项所述的加密装置而发挥功能。

说明书全文

加密装置、加密方法及加密程序

技术领域

[0001] 本发明涉及加密方式的高速安装方法。
[0002] 本申请要求2021年8月3日在日本申请的日本特愿2021‑127442号的优先权,在此引用其内容。

背景技术

[0003] 以往,在CPU等处理器中,安装有用于高速地执行特定的处理的特别的命令集。例如,在Intel(注册商标)制的CPU等中,安装有高速地执行AES(Advanced Encryption Standard:高级加密标准)的处理的命令集(AES‑NI),通过有效利用该命令集,能够高速地处理AES的轮函数。在非专利文献1中,进行了用于利用该命令集来安装高速的加密方式的研究。
[0004] 现有技术文献
[0005] 非专利文献
[0006] 非专利文献1:J.Jean and I.Nikolic,“Efficient Design Strategies Based on the AES Round Function,”in Fast Software Encryption,vol.9783,T.Peyrin,Ed.Berlin,Heidelberg:Springer Berlin Heidelberg,2016,pp.334‑353。

发明内容

[0007] 发明要解决的问题
[0008] 然而,在上述以往的命令集中,需要调用与AES的轮函数的执行次数对应的命定,没有充分地高速化。
[0009] 本发明的目的在于提供一种能够高速地执行使用AES的轮函数的加密方式的加密装置、加密方法以及加密程序。
[0010] 用于解决问题的手段
[0011] 本发明的一实施方式所涉及的加密装置是为了分别更新规定位长的复数个内部状态而安装了复数次执行AES的轮函数的加密方式的加密装置,其中,该加密装置具备处理部,所述处理部通过规定的命令的一次调用,对能够并行执行的所述轮函数的组进行集中处理,所述命令具有能够处理的位数的上限,以使与所述命令的调用次数对应的处理负荷最小的方式对所述轮函数进行分组。
[0012] 在上述加密装置中,也可以是,对复数个所述轮函数中的、后续的运算的种类相同的轮函数进行分组。
[0013] 在上述加密装置中,也可以是,对复数个所述轮函数中的、后续的所述运算的输入值的至少一部分相同的轮函数进行分组。
[0014] 在上述加密装置中,也可以是,利用能够处理的位数的上限不同的复数个命令,对所述轮函数进行分组。
[0015] 本发明的一实施方式所涉及的加密方法,在计算机为了分别更新规定位长的复数个内部状态而实施复数次执行AES的轮函数的加密方式时,通过规定的命令的一次调用,对能够并行执行的所述轮函数的组进行集中处理,所述命令具有能够处理的位数的上限,以使与所述命令的调用次数对应的处理负荷最小的方式对所述轮函数进行分组。
[0016] 本发明所涉及的加密程序使计算机作为所述加密装置而发挥功能。
[0017] 发明效果
[0018] 根据本发明,能够高速地执行使用AES的轮函数的加密方式。附图说明
[0019] 图1是例示加密方式的以往的安装方法的图。
[0020] 图2是表示实施方式中的加密装置的框图
[0021] 图3是例示实施方式中的加密方式的安装方法的图。

具体实施方式

[0022] 在说明本发明的实施方式之前,为了明确与本发明的实施方式的不同,参照图1说明以往的加密方式的安装方法。
[0023] 图1是例示加密方式的以往的安装方法的图。
[0024] 该例子是在上述非专利文献1中提出的结构之一。其中,对于分别为128位的值的7个内部状态(0~6),AES的轮函数(A)被执行五次,与消息(M1或M2)的XOR运算被执行七次,被变换为新的内部状态。
[0025] 在此,通过对轮函数安装高速执行的命令集,从而提高加密方式整体的处理速度。
[0026] 在该安装方法中,如图1所示,为了分别更新规定位长(例如128位)的复数个内部状态,提供安装了复数次执行AES的轮函数的加密方式的加密装置。
[0027] 以下,对本发明的实施方式的一例进行说明。
[0028] 在本实施方式中,通过改良加密方式的以往的安装方法,使用为特定的CPU准备的命令集,从而削减执行AES的轮函数所需要的处理循环数,实现高速化。
[0029] 图2是表示本实施方式中的加密装置1的功能结构的框图。
[0030] 加密装置1是除了控制部10及存储部20之外还具备各种输入输出接口等的信息处理装置(计算机)。
[0031] 控制部10是控制加密装置1的整体的部分,通过适当读出并执行存储在存储部20中的各种程序,来实现本实施方式中的各功能。控制部10可以是CPU。
[0032] 存储部20是用于使硬件群作为加密装置1发挥功能的各种程序以及各种数据等的存储区域,可以是ROM、RAM、闪存或者硬盘驱动器(HDD)等。
[0033] 具体而言,存储部20存储用于使控制部10执行本实施方式的各功能的程序(加密程序)等。
[0034] 控制部10通过执行加密程序而作为处理部11发挥功能。处理部11通过规定的命令的一次调用,集中处理能够并行执行的轮函数的组。
[0035] 其中,安装于控制部10(处理器)并由处理部11调用的规定的命令具有能够处理的位数的上限,以使与命令的调用次数对应的处理负荷最小的方式对轮函数进行分组。
[0036] 例如,在Ice Lake代的Intel CPU中,安装有能够将256位及512位集中处理的以下两个命令。
[0037] __m256i_mm256_aesenc_epi128(__m256i a,__m256i RoundKey)
[0038] __m512i_mm512_aesenc_epi128(__m512i a,__m512i RoundKey)
[0039] 通过这些命令的一次调用,能够对256位(轮函数两次)或512位(轮函数四次)为止的输入(复数个内部状态)同时执行轮函数的处理。
[0040] 图3是例示本实施方式中的加密方式的安装方法的图。
[0041] 在以往的例子(图1)所示的安装方法中,需要共计调用五次执行AES的轮函数的处理。
[0042] 与此相对,在本实施方式的安装方法中,通过将共计执行五次的轮函数(128位的输入)例如分组为两次和三次,处理部11利用输入为256位的命令将轮函数两次的量集中在一次中、利用输入为512位的命令将轮函数三次的量分别集中在一次中进行处理。
[0043] 由此,能够将以往需要(1轮的循环数×5次)的循环数的处理削减为(1轮的循环数×2次)的循环数来执行。
[0044] 此外,在图3的例子中,五个轮函数在执行顺序上没有制约,分别独立,因此在算法上能够并行执行。因此,分组的组合可以是任意的,但为了进一步提高处理效率,优选如下决定组合。
[0045] 在各种加密方式中,基于轮函数的运算结果大多进一步通过后续的运算进行变换。
[0046] 此时,也可以通过对复数个轮函数中的、后续的运算的种类(例如,XOR、AND等)相同的轮函数进行分组,此外,也可以通过对复数个轮函数中的、后续的运算的输入值(消息)的至少一部分相同的轮函数进行分组,从而使处理高效化。
[0047] 例如,在图3的示例中,针对内部状态0、1的两个轮函数被集中为在后续的XOR运算中共同输入消息M1的组,由处理256位的命令或处理512位的命令同时执行。
[0048] 另外,针对内部状态3~5的三个轮函数被集中为在后续的XOR运算中共同输入消息M2的组,由处理512位的命令同时执行。
[0049] 此外,如上述的使用256位以及512位那样,在能够利用复数个命令时,在与调用次数对应的处理负荷分别不同的情况下,可以比较与轮函数的组以及命令的组合对应的整体的处理负荷,决定成为最小的组以及命令。
[0050] 根据本实施方式,在具有AES的轮函数作为构成元素的加密方式中,利用安装于处理器的规定的命令集。由此,加密装置1集中执行复数个轮函数,能够削减加密和解密所花费的整体的处理周期数、即处理时间。其结果是,实现了加密处理速度的高速化,进而实现了加密通信的高速化等。
[0051] 加密装置1通过将复数个轮函数中的、后续运算的种类相同的轮函数、以及对后续运算的输入值的至少一部分相同的轮函数分组来进行处理,从而使处理整体进一步高效化。
[0052] 另外,加密装置1通过适当选择能够处理的位数的上限不同的复数个命令,能够将轮函数适当地分组,能够使处理高效化。
[0053] 此外,通过上述的实施方式,例如,能够实现高速的加密处理,所以能够对联合国主导的可持续的发展目标(SDGs)的目标9“配备弹性的基础设施,推进可持续的工业化,并且实现创新的扩大”做出贡献。
[0054] 以上,对本发明的实施方式进行了说明,但本发明不限于上述的实施方式。另外,上述的实施方式所记载的效果只不过列举了从本发明产生的最优选的效果,本发明的效果并不限定于实施方式所记载的效果。
[0055] 加密装置1的加密方法通过软件来实现。在由软件实现的情况下,构成该软件的程序被安装于信息处理装置(计算机)。另外,这些程序可以记录在诸如CD‑ROM的可移动介质上,并且可以分发给用户,或者可以通过经由网络下载到用户的计算机来分发。此外,这些程序可以作为经由网络的Web服务提供给用户的计算机,而无需下载。
[0056] 附图标记的说明
[0057] 1 加密装置
[0058] 10 控制部
[0059] 11 处理部
[0060] 20 存储部
QQ群二维码
意见反馈