(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023150829
(43)【公開日】2023-10-16
(54)【発明の名称】暗号化装置、復号装置、暗号化方法及び暗号化プログラム
(51)【国際特許分類】
G09C 1/04 20060101AFI20231005BHJP
G06F 21/60 20130101ALI20231005BHJP
【FI】
G09C1/04
G06F21/60 320
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022060130
(22)【出願日】2022-03-31
(71)【出願人】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【弁理士】
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【弁理士】
【氏名又は名称】林 一好
(72)【発明者】
【氏名】仲野 有登
(72)【発明者】
【氏名】福島 和英
(57)【要約】
【課題】一つのメッセージに対する暗号処理の並列化を実現すると共に、元のメッセージを正しい順番に復元可能な暗号化システムを提供すること。
【解決手段】暗号化装置10は、暗号化対象のメッセージを、複数のメッセージブロックに分割し、各メッセージブロックに順番を示す補助情報を付与して暗号アルゴリズムで規定されたサイズのデータを生成するメッセージ分割部11と、データを、予め定められた暗号アルゴリズムの並列数に分配して入力データを再構成する入力データ構成部12と、入力データを、暗号アルゴリズムに並列に入力し、並列数の暗号データを取得する暗号化部14と、複数の暗号データを統合した暗号文を出力する暗号文出力部15と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
暗号化対象のメッセージを、複数のメッセージブロックに分割し、各メッセージブロックに順番を示す補助情報を付与して暗号アルゴリズムで規定されたサイズのデータを生成するメッセージ分割部と、
前記データを、予め定められた前記暗号アルゴリズムの並列数に分配して入力データを再構成する入力データ構成部と、
前記入力データを、前記暗号アルゴリズムに並列に入力し、前記並列数の暗号データを取得する暗号化部と、
複数の前記暗号データを統合した暗号文を出力する暗号文出力部と、を備える暗号化装置。
【請求項2】
前記補助情報のサイズを含む並列化情報を、復号側へ通知する並列化情報通知部を備える請求項1に記載の暗号化装置。
【請求項3】
前記並列化情報通知部は、前記並列数を含む並列化情報を、復号側へ通知する請求項2に記載の暗号化装置。
【請求項4】
請求項1から請求項3のいずれかに記載の暗号化装置により出力された前記暗号文を、前記並列数に分割する暗号文分割部と、
前記暗号文分割部により分割された複数の前記暗号データを、それぞれ復号アルゴリズムに入力し、前記補助情報が付与された前記メッセージブロックを取得する復号部と、
前記補助情報に基づいて、前記メッセージブロックを元の順番に並べ替え、前記メッセージを復元するメッセージ復元部と、を備える復号装置。
【請求項5】
暗号化対象のメッセージを、複数のメッセージブロックに分割し、各メッセージブロックに順番を示す補助情報を付与して暗号アルゴリズムで規定されたサイズのデータを生成するメッセージ分割ステップと、
前記データを、予め定められた前記暗号アルゴリズムの並列数に分配して入力データを再構成する入力データ構成ステップと、
前記入力データを、前記暗号アルゴリズムに並列に入力し、前記並列数の暗号データを取得する暗号化ステップと、
複数の前記暗号データを統合した暗号文を出力する暗号文出力ステップと、をコンピュータが実行する暗号化方法。
【請求項6】
請求項1から請求項3のいずれかに記載の暗号化装置としてコンピュータを機能させるための暗号化プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号処理の高速な実装方法に関する。
【背景技術】
【0002】
従来、暗号処理の複雑化に伴って、処理を並列化することによって高速化を実現する手法が一般的に利用されている。しかしながら、暗号処理における次の内部状態が前の内部状態に依存する場合等、暗号アルゴリズムによっては、構造的に並列化が困難な場合があった。
【0003】
並列化が困難な構造を持つ暗号アルゴリズムにおいても並列化による高速化を実現する方式として、非特許文献1で提案されているcomb scheduler方式がある。comb schedulerでは、一つのメッセージの暗号化を並列に実行するのではなく、複数の独立したメッセージを並列で暗号化することで、全体として高速化を実現している。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】A. Bogdanov, M.M. Lauridsen, E. Tischhauser. (2015). Comb to Pipeline: Fast Software Encryption Revisited. In: Leander, G. (eds) Fast Software Encryption. FSE 2015. Lecture Notes in Computer Science, vol 9054. Springer, Berlin, Heidelberg.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、comb schedulerを用いた実装方式では、一つのメッセージに対する並列化が実現できないという課題が残っていた。すなわち、単純にメッセージを分割して並列化した場合、分割したメッセージから元のメッセージに復元する際の順番が保たれない可能性があった。
【0006】
本発明は、一つのメッセージに対する暗号処理の並列化を実現すると共に、元のメッセージを正しい順番に復元可能な暗号化システムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係る暗号化装置は、暗号化対象のメッセージを、複数のメッセージブロックに分割し、各メッセージブロックに順番を示す補助情報を付与して暗号アルゴリズムで規定されたサイズのデータを生成するメッセージ分割部と、前記データを、予め定められた前記暗号アルゴリズムの並列数に分配して入力データを再構成する入力データ構成部と、前記入力データを、前記暗号アルゴリズムに並列に入力し、前記並列数の暗号データを取得する暗号化部と、複数の前記暗号データを統合した暗号文を出力する暗号文出力部と、を備える。
【0008】
前記暗号化装置は、前記補助情報のサイズを含む並列化情報を、復号側へ通知する並列化情報通知部を備えてもよい。
【0009】
前記並列化情報通知部は、前記並列数を含む並列化情報を、復号側へ通知してもよい。
【0010】
本発明に係る復号装置は、前記暗号化装置により出力された前記暗号文を、前記並列数に分割する暗号文分割部と、前記暗号文分割部により分割された複数の前記暗号データを、それぞれ復号アルゴリズムに入力し、前記補助情報が付与された前記メッセージブロックを取得する復号部と、前記補助情報に基づいて、前記メッセージブロックを元の順番に並べ替え、前記メッセージを復元するメッセージ復元部と、を備える。
【0011】
本発明に係る暗号化方法は、暗号化対象のメッセージを、複数のメッセージブロックに分割し、各メッセージブロックに順番を示す補助情報を付与して暗号アルゴリズムで規定されたサイズのデータを生成するメッセージ分割ステップと、前記データを、予め定められた前記暗号アルゴリズムの並列数に分配して入力データを再構成する入力データ構成ステップと、前記入力データを、前記暗号アルゴリズムに並列に入力し、前記並列数の暗号データを取得する暗号化ステップと、複数の前記暗号データを統合した暗号文を出力する暗号文出力ステップと、をコンピュータが実行する。
【0012】
本発明に係る暗号化プログラムは、前記暗号化装置としてコンピュータを機能させるためのものである。
【発明の効果】
【0013】
本発明によれば、一つのメッセージに対する暗号処理の並列化を実現できると共に、元のメッセージを正しい順番に復元できる。
【図面の簡単な説明】
【0014】
【
図1】実施形態における暗号化システムの機能構成を示す図である。
【
図2】実施形態における暗号化システムで実施される処理の流れを示すシーケンス図である。
【
図3】実施形態における暗号化及び復号の流れを模式的に示す図である。
【発明を実施するための形態】
【0015】
以下、本発明の実施形態の一例について説明する。
本実施形態の暗号化方法は、暗号化対象の一つのメッセージを分割し、複数の独立したメッセージとして暗号処理を並列化することで、全体として高速化を実現する。
【0016】
図1は、本実施形態における暗号化システム1の機能構成を示す図である。
暗号化システム1は、メッセージを暗号化する暗号化装置10と、暗号文を復号する復号装置20とを備える。
暗号化装置10及び復号装置20は、それぞれ制御部及び記憶部の他、各種データの入出力デバイス及び通信デバイス等を備えた情報処理装置である。
なお、暗号化装置10及び復号装置20は、同一の装置であってもよい。
【0017】
制御部は、暗号化装置10又は復号装置20の全体を制御する部分であり、記憶部に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各機能を実現する。制御部は、CPUであってよい。
記憶部は、ハードウェア群を暗号化装置10又は復号装置20として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスクドライブ(HDD)等であってよい。
【0018】
暗号化装置10の制御部は、暗号化側スケジューラ(メッセージ分割部11、入力データ構成部12、並列化情報通知部13)と、暗号化部14と、暗号文出力部15とを備える。
復号装置20の制御部は、復号側スケジューラ(並列化情報取得部21、暗号文分割部22、メッセージ復元部24)と、復号部23とを備える。
【0019】
暗号化側スケジューラに暗号化対象の一つのメッセージM(例えば、動画ファイル等)が入力されると、メッセージ分割部11は、このメッセージMを、複数のメッセージブロックに分割する。さらに、メッセージ分割部11は、分割したメッセージブロックのそれぞれに対して、分割前のメッセージMの何番目のブロックであったかの順番を示す補助情報を付与し、暗号アルゴリズムで規定されたサイズのデータを生成する。
【0020】
このとき、効率的に暗号処理を実行できるようにするためには、メッセージブロックと補助情報とを連結したデータのサイズが、暗号の処理サイズと一致していることが必要である。補助情報のサイズは、元のメッセージMを何分割するかに依存するため、適切なサイズを暗号化側スケジューラで割り当てる。
【0021】
続いて、入力データ構成部12は、生成された各データを、予め定められた暗号アルゴリズムの並列数に分配して入力データである平文を再構成する。
例えば、暗号化処理を4つ並列化する場合、暗号側スケジューラは、Mを分割して補助情報を付与した後、分割数に応じて、次のように入力データを再構成する。
m0=M_{0}∥M_{4}∥…∥M_{4n-4}
m1=M_{1}∥M_{5}∥…∥M_{4n-3}
m2=M_{2}∥M_{6}∥…∥M_{4n-2}
m3=M_{3}∥M_{7}∥…∥M_{4n-1}
ここで、M_{i}は、分割されたi番目のメッセージブロックと、それがi番目であることを示す補助情報を含んだデータを示す。
【0022】
並列化情報通知部13は、並列数、及び補助情報のサイズを含む並列化情報を、復号側スケジューラ(並列化情報取得部21)へ通知して共有する。
【0023】
暗号化部14は、再構成された入力データ(平文)を、暗号アルゴリズムに並列に入力し、並列数の暗号データを取得する。
例えば、入力データm0,m1,m2,m3が生成された場合、暗号化部14は、並列化された暗号アルゴリズムに対してこれらを入力し、並列に暗号処理を実行する。すなわち、Eを暗号アルゴリズム、Kを秘密鍵として、
c0=E(m0,K)
c1=E(m1,K)
c2=E(m2,K)
c3=E(m3,K)
と表される4つの暗号データが得られる。
【0024】
暗号文出力部15は、これら複数の暗号データを統合した暗号文を出力し、復号装置20に提供する。
このとき、複数の暗号データの生成順、連結順は限定されないが、c0~c3それぞれのデータ列は保持されるものとする。すなわち、暗号文は、c0∥c1∥c2∥c3でもよいし、c1∥c3∥c0∥c2のように順序が入れ替わっていてもよい。
【0025】
復号側スケジューラにおいて、並列化情報取得部21は、暗号化側スケジューラ(並列化情報通知部13)から通知された並列数及び補助情報のサイズを取得する。
【0026】
暗号文分割部22は、暗号化装置10から受け取った暗号文を、暗号化装置10と共有した並列数に分割する。
例えば、暗号文分割部22は、暗号文c2∥c0∥c3∥c1を、共有した並列数である4つに分割し、暗号データc2,c0,c3,c1を得る。
【0027】
復号部23は、暗号文分割部22により分割された複数の暗号データを、それぞれ復号アルゴリズムに入力し、補助情報が付与されたメッセージブロックを取得する。
このとき、復号部23は、暗号化装置10と共有した同じ並列数で復号処理を並列実行してもよいが、復号装置20の処理能力等の環境に応じて、必ずしも暗号化側と並列数を合わせる必要はない。例えば、復号部23は分割されたc0~c3を4並列で復号し、対応するm0~m3を得てもよいし、c0及びc1を順に復号する処理と、c2及びc3を順に復号する処理とを2並列で実行してもよい。あるいは、復号部23は、復号処理を並列化せず、c0からc3まで順に復号してもよい。
【0028】
メッセージ復元部24は、並列化情報取得部21が取得した補助情報のサイズに基づいてメッセージブロックに付与された補助情報を分離し、この補助情報に基づいて、メッセージブロックを元の順番に並べ替え、メッセージMを復元する。
【0029】
なお、暗号化装置10及び復号装置20において、予め固定の並列数及び補助情報のサイズを保持している場合、並列化情報通知部13及び並列化情報取得部21は不要となる。
【0030】
図2は、本実施形態における暗号化システム1で実施される処理の流れを示すシーケンス図である。
本シーケンスでは、暗号化装置10で暗号化された暗号文を復号装置20が復号して利用する場合を示す。
【0031】
ステップS1において、ユーザは、メッセージを暗号化する際に何並列で暗号処理を実行するかの並列数を決定し、暗号化側スケジューラに設定する。
【0032】
ステップS2において、暗号化側スケジューラ(メッセージ分割部11)は、暗号化対象のメッセージをメッセージブロックに分割し、各ブロックに対して元のメッセージの何番目であったかを示す補助情報を付与する。さらに、暗号化側スケジューラ(入力データ構成部12)は、並列数に応じてメッセージブロックを暗号化アルゴリズムの入力データ(平文)として分配する。
このとき、補助情報のサイズは、復号時に必要となるため記録される。
【0033】
ステップS3において、暗号化部14は、並列数に応じて分割されたメッセージの暗号化処理を並列に実行し、暗号文を生成する。
【0034】
ステップS4において、暗号文出力部15は、生成された暗号文を復号装置20へ送信する。このとき、暗号化側スケジューラ(並列化情報通知部13)は、暗号化部14により並列実行された暗号化処理の並列数、及びメッセージブロックに付与された補助情報のサイズも復号装置20へ送信する。
【0035】
ステップS5において、復号側スケジューラ(並列化情報取得部21)は、暗号化装置10から、暗号化処理の並列数と、補助情報のサイズとを取得する。
なお、これらの情報は、ユーザから指定され、又は固定値として、予め復号側スケジューラに登録されていてもよい。
【0036】
ステップS6において、復号側スケジューラ(暗号文分割部22)は、並列数に応じて暗号文を分割し、暗号化装置10において連続して処理された暗号データを取得する。
【0037】
ステップS7において、復号部23は、並列数に分割された暗号データそれぞれの復号処理を、順に、あるいは、並列に実行し、復号された各メッセージブロックをスケジューラに入力する。
【0038】
ステップS8において、復号側スケジューラ(メッセージ復元部24)は、メッセージブロックから補助情報を抜き出し、ブロックを正しい順に並び変えることで元のメッセージを復元する。
【0039】
なお、暗号文を後で送信、又は暗号化装置10自身が復号して利用する場合、ステップS4において、暗号化側スケジューラは、暗号文、並列数及び補助情報サイズを送信せず記録しておいてもよい。
【0040】
図3は、本実施形態における暗号化及び復号の流れを模式的に示す図である。
ここでは、メッセージMを4並列で暗号化し、同じく4並列で復号する様子を例示している。
【0041】
メッセージMが暗号化側スケジューラに入力されると、このメッセージMはメッセージブロックに分割され、各ブロックに順番(補助情報)が付与された後、m0~m3の4つの平文として再構成される。これらが並列化された暗号化アルゴリズムEにそれぞれ入力され、暗号データc0~c3が得られる。
並列数、補助情報のサイズ、及び暗号文(c0∥c1∥c2∥c3、順不同)は、復号側スケジューラに渡される。
【0042】
復号側スケジューラは、通知された並列数に従って暗号文をc0~c3に分割し、それぞれを並列化された復号アルゴリズムDに入力する。
これらの暗号文が復号されると、平文のメッセージブロックと補助情報とが連結されたデータm0~m3が得られる。復号側スケジューラは、補助情報のサイズを取得しているため、連結されたデータからメッセージブロックのみを抜き出し、補助情報が示す順番に従ってソートすることで元のメッセージ全体を復元する。
【0043】
本実施形態によれば、暗号化装置10は、暗号化対象のメッセージを、複数のメッセージブロックに分割し、各メッセージブロックに順番を示す補助情報を付与して暗号アルゴリズムで規定されたサイズのデータを生成する。
これにより、暗号化装置10は、生成したデータを、予め定められた暗号アルゴリズムの並列数に分配して入力データを再構成することで、これらの入力データを、暗号アルゴリズムに並列に入力し、並列処理により高速に暗号文を出力できる。
【0044】
暗号化装置10により生成された暗号文には、各メッセージブロックに元のメッセージの何番目であるかの情報が含まれているため、復号されたメッセージブロックのソートが可能である。このため、暗号化されたデータは、他のメッセージブロックの処理と同期させる必要がなく、同期に必要な処理を省略できるメリットがある。同期が不要なため、処理が完了したブロックから、次の処理(通信相手への送信、ストレージへの格納等)を実行することが可能である。
したがって、暗号化システム1は、並列化が困難な暗号方式の場合でも、一つのメッセージに対する暗号処理の並列化を実現できると共に、補助情報を用いて元のメッセージを正しい順番に復元できる。
【0045】
また、暗号化側と復号側とでは、実行環境が異なる場合もあり、それぞれの環境で最適な並列数が異なる。復号装置20は、暗号化装置10における並列数以下の任意の並列数に暗号データを分配して復号処理を並列実行できるため、暗号化システム1は、暗号化側及び復号側の環境に応じて並列数を柔軟に変更でき、それぞれの環境に最適な処理を実行できる。
例えば、暗号化されたデータをサーバからクライアントに送信する場合、サーバはハイエンドCPUを用いて16並列で処理を実行し、クライアントはローエンドCPUを用いて4並列で実行するというように、それぞれの環境に応じてスケジューラを設定することで、適切なパフォーマンスを実現できる。
【0046】
暗号化装置10と復号装置20とは、メッセージブロックと連結された補助情報のサイズ、及び並列数を共有することにより、復号装置20は、暗号化側で任意に設定された並列化情報に応じて、適切に復号処理を実行できる。
また、暗号化システム1は、補助情報を含めた暗号化を実施するので、付加情報により暗号文の構造が推測され解読されるリスクを低減でき、安全性を担保できる。
【0047】
なお、前述の実施形態により、例えば、暗号化処理及び復号処理が高速化されることから、国連が主導する持続可能な開発目標(SDGs)の目標9「レジリエントなインフラを整備し、持続可能な産業化を推進すると共に、イノベーションの拡大を図る」に貢献することが可能となる。
【0048】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0049】
暗号化システム1による暗号化方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD-ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【0050】
1 暗号化システム
10 暗号化装置
11 メッセージ分割部
12 入力データ構成部
13 並列化情報通知部
14 暗号化部
15 暗号文出力部
20 復号装置
21 並列化情報取得部
22 暗号文分割部
23 復号部
24 メッセージ復元部