(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-16
(45)【発行日】2024-10-24
(54)【発明の名称】暗号化装置、暗号化方法及び暗号化プログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20241017BHJP
【FI】
G09C1/00 610A
(21)【出願番号】P 2021127442
(22)【出願日】2021-08-03
【審査請求日】2023-07-20
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【氏名又は名称】林 一好
(72)【発明者】
【氏名】仲野 有登
(72)【発明者】
【氏名】福島 和英
【審査官】塩澤 如正
(56)【参考文献】
【文献】特開2012-215816(JP,A)
【文献】SAKAMOTO, Kosei et al.,Rocca: An Efficient AES-based Encryption Scheme for Beyond 5G,IACR Transactions on Symmetric Cryptology,Vol.2021, No.2,2021年06月11日,pp.1-30,Retrieved from the Internet <URL https://tosc.iacr.org/index.php/ToSC/article/view/8904/8480>, [retrieved on 2024.05.29],特に「1.2 Our Design」内の「Optimized AES-NI-Friendly Round Function」、「5 Software Implemetion」第3段落、「B Round function in Table 2」参照
【文献】Henk-Jan Lebbink,VAESENC,github,2019年10月24日,Retrieved from the Internet <URL https://github.com/HJLebbink/asm-dude/wiki/VAESENC>, [retrieved on 2024.05.29],特に「VAESENC」参照
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
規定ビット長の複数の内部状態をそれぞれ更新するために、AESのラウンド関数を複数回実行する暗号方式を実装した暗号化装置であって、
並列して実行可能な前記ラウンド関数のグループを、所定の命令の1回の呼び出しにより、まとめて処理する処理部を備え、
前記命令は、処理可能なビット数の上限を有し、前記命令の呼び出し回
数が最小となるように、
かつ、複数の前記ラウンド関数
のうち、後続する演算の種類が共通するものが
優先してグループ化される暗号化装置。
【請求項2】
複数の前記ラウンド関数のうち、後続する前記演算への入力値の少なくとも一部が共通するものがグループ化される請求項
1に記載の暗号化装置。
【請求項3】
処理可能なビット数の上限が異なる複数の命令により、前記ラウンド関数がグループ化される請求項1
又は請求項
2に記載の暗号化装置。
【請求項4】
規定ビット長の複数の内部状態をそれぞれ更新するために、AESのラウンド関数を複数回実行する暗号方式をコンピュータが実施する際に、
並列して実行可能な前記ラウンド関数のグループを、所定の命令の1回の呼び出しにより、まとめて処理し、
前記命令は、処理可能なビット数の上限を有し、前記命令の呼び出し回
数が最小となるように、
かつ、複数の前記ラウンド関数
のうち、後続する演算の種類が共通するものが
優先してグループ化される暗号化方法。
【請求項5】
請求項1から請求項
3のいずれかに記載の暗号化装置としてコンピュータを機能させるための暗号化プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号方式の高速な実装方法に関する。
【背景技術】
【0002】
従来、CPU等のプロセッサには、特定の処理を高速に実行するための特別な命令セットが実装されることがあった。例えば、Intel(登録商標)製のCPU等には、AES(Advanced Encryption Standard)の処理を高速に実行する命令セット(AES-NI)が実装されており、これを活用することでAESのラウンド関数を高速に処理することが可能である。非特許文献1では、この命令セットを利用して高速な暗号方式を実装するための検討がなされている。
【先行技術文献】
【非特許文献】
【0003】
【文献】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.
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の実装では、AESのラウンド関数の実行数分だけ命令を呼び出す必要があり、十分に高速化されていなかった。
【0005】
本発明は、AESのラウンド関数を用いる暗号方式を高速に実行できる暗号化装置、暗号化方法及び暗号化プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明に係る暗号化装置は、規定ビット長の複数の内部状態をそれぞれ更新するために、AESのラウンド関数を複数回実行する暗号方式を実装した暗号化装置であって、並列して実行可能な前記ラウンド関数のグループを、所定の命令の1回の呼び出しにより、まとめて処理する処理部を備え、前記命令は、処理可能なビット数の上限を有し、前記命令の呼び出し回数に応じた処理負荷が最小となるように、前記ラウンド関数がグループ化される。
【0007】
複数の前記ラウンド関数のうち、後続する演算の種類が共通するものがグループ化されてもよい。
【0008】
複数の前記ラウンド関数のうち、後続する前記演算への入力値の少なくとも一部が共通するものがグループ化されてもよい。
【0009】
処理可能なビット数の上限が異なる複数の命令により、前記ラウンド関数がグループ化されてもよい。
【0010】
本発明に係る暗号化方法は、規定ビット長の複数の内部状態をそれぞれ更新するために、AESのラウンド関数を複数回実行する暗号方式をコンピュータが実施する際に、並列して実行可能な前記ラウンド関数のグループを、所定の命令の1回の呼び出しにより、まとめて処理し、前記命令は、処理可能なビット数の上限を有し、前記命令の呼び出し回数に応じた処理負荷が最小となるように、前記ラウンド関数がグループ化される。
【0011】
本発明に係る暗号化プログラムは、前記暗号化装置としてコンピュータを機能させるためのものである。
【発明の効果】
【0012】
本発明によれば、AESのラウンド関数を用いる暗号方式を高速に実行できる。
【図面の簡単な説明】
【0013】
【
図1】暗号方式の従来の実装方法を例示する図である。
【
図2】実施形態における暗号化装置の機能構成を示す図である。
【
図3】実施形態における暗号方式の実装方法を例示する図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施形態の一例について説明する。
本実施形態では、暗号方式の従来の実装方法を改良し、特定のCPUに用意された命令セットを用いることにより、AESのラウンド関数の実行に必要な処理サイクル数を削減し、高速化を実現する。
【0015】
図1は、暗号方式の従来の実装方法を例示する図である。
この例は、前述の非特許文献1において提案された構成の1つである。ここでは、それぞれ128ビットの値である7つの内部状態(0~6)に対して、AESのラウンド関数(A)が5回、メッセージ(M1又はM2)とのXOR演算が7回実行され、新たな内部状態に変換されている。
ここで、ラウンド関数に対して、高速に実行する命令セットが実装されることにより、暗号方式全体の処理速度が向上する。
【0016】
本実施形態では、
図1のように、規定ビット長(例えば、128ビット)の複数の内部状態をそれぞれ更新するために、AESのラウンド関数を複数回実行する暗号方式を実装した暗号化装置を提供する。
【0017】
図2は、本実施形態における暗号化装置1の機能構成を示す図である。
暗号化装置1は、制御部10及び記憶部20の他、各種の入出力インタフェース等を備えた情報処理装置(コンピュータ)である。
【0018】
制御部10は、暗号化装置1の全体を制御する部分であり、記憶部20に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各機能を実現する。制御部10は、CPUであってよい。
【0019】
記憶部20は、ハードウェア群を暗号化装置1として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスクドライブ(HDD)等であってよい。
具体的には、記憶部20は、本実施形態の各機能を制御部10に実行させるためのプログラム(暗号化プログラム)等を記憶する。
【0020】
制御部10は、暗号化プログラムを実行することにより、処理部11として機能する。処理部11は、並列して実行可能なラウンド関数のグループを、所定の命令の1回の呼び出しにより、まとめて処理する。
ここで、制御部10(プロセッサ)に実装され、処理部11により呼び出される所定の命令は、処理可能なビット数の上限を有し、命令の呼び出し回数に応じた処理負荷が最小となるように、ラウンド関数がグループ化される。
【0021】
例えば、Ice Lake世代のIntel CPUには、256ビット及び512ビット分をまとめて処理できる次の2つの命令が実装されている。
__m256i _mm256_aesenc_epi128 (__m256i a, __m256i RoundKey)
__m512i _mm512_aesenc_epi128 (__m512i a, __m512i RoundKey)
これらの命令の1回の呼び出しにより、256ビット(ラウンド関数2回分)又は512ビット(ラウンド関数4回分)までの入力(複数の内部状態)に対して、同時にラウンド関数の処理を実行することができる。
【0022】
図3は、本実施形態における暗号方式の実装方法を例示する図である。
従来の例(
図1)に示した実装方法では、AESのラウンド関数を実行する処理を計5回呼び出す必要があった。
これに対して、本実施形態の実装方法では、計5回実行されるラウンド関数(128ビットの入力)を、例えば2回と3回とにグループ化することで、処理部11は、入力が256ビットの命令によりラウンド関数2回分を、入力が512ビットの命令によりラウンド関数3回分を、それぞれまとめて1回で処理する。
【0023】
これにより、従来は(1ラウンドのサイクル数×5回)のサイクル数が必要であった処理を、(1ラウンドのサイクル数×2回)のサイクル数に削減して実行することができる。
なお、
図3の例において、5つのラウンド関数は、実行順序に制約がなく、それぞれ独立しているため、アルゴリズム上、並列実行が可能である。したがって、グループ化の組み合わせは、いずれでもよいが、より処理効率を向上させるため、次のように組み合わせが決定されることが好ましい。
【0024】
各種の暗号方式において、ラウンド関数による演算結果は、さらに後続の演算により変換される場合が多い。
このとき、複数のラウンド関数のうち、後続する演算の種類(例えば、XOR、AND等)が共通するものがグループ化されることにより、さらに、複数のラウンド関数のうち、後続する演算への入力値(メッセージ)の少なくとも一部が共通するものがグループ化されることにより、処理が効率化されてもよい。
【0025】
例えば、
図3の例では、内部状態0,1に対する2つのラウンド関数が、後続のXOR演算にメッセージM1が共通して入力されるグループとしてまとめられ、256ビットを処理する命令、又は512ビットを処理する命令により同時に実行される。
また、内部状態3~5に対する3つのラウンド関数が、後続のXOR演算にメッセージM2が共通して入力されるグループとしてまとめられ、512ビットを処理する命令により同時に実行される。
【0026】
なお、前述の256ビット用及び512ビット用のように、複数の命令が利用可能なとき、呼び出し回数に応じた処理負荷がそれぞれ異なる場合には、ラウンド関数のグループ及び命令の組み合わせに応じた全体の処理負荷を比較し、最小となるグループ及び命令が決定されてよい。
【0027】
本実施形態によれば、AESのラウンド関数を構成要素として持つ暗号方式において、プロセッサに実装された所定の命令セットが利用される。これにより、暗号化装置1は、ラウンド関数を複数まとめて実行し、暗号化及び復号に掛かる全体の処理サイクル数、すなわち処理時間を削減できる。この結果、暗号処理速度の高速化、さらには、暗号通信の高速化等が実現される。
【0028】
また、暗号化装置1は、複数のラウンド関数のうち、後続する演算の種類が共通するもの、さらには、後続する演算への入力値の少なくとも一部が共通するものをグループ化して処理することにより、処理全体がさらに効率化される。
【0029】
また、暗号化装置1は、処理可能なビット数の上限が異なる複数の命令を適宜選択することにより、ラウンド関数を適切にグループ化でき、処理を効率化できる。
【0030】
なお、前述の実施形態により、例えば、高速な暗号処理を実現できることから、国連が主導する持続可能な開発目標(SDGs)の目標9「レジリエントなインフラを整備し、持続可能な産業化を推進するとともに、イノベーションの拡大を図る」に貢献することが可能となる。
【0031】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0032】
暗号化装置1による暗号化方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD-ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【0033】
1 暗号化装置
10 制御部
11 処理部
20 記憶部