IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ テラ クアンタム アーゲーの特許一覧

特許7511919暗号鍵を決定する方法、コンピュータプログラム、及びデータ処理システム
<>
  • 特許-暗号鍵を決定する方法、コンピュータプログラム、及びデータ処理システム 図1
  • 特許-暗号鍵を決定する方法、コンピュータプログラム、及びデータ処理システム 図2
  • 特許-暗号鍵を決定する方法、コンピュータプログラム、及びデータ処理システム 図3
  • 特許-暗号鍵を決定する方法、コンピュータプログラム、及びデータ処理システム 図4
  • 特許-暗号鍵を決定する方法、コンピュータプログラム、及びデータ処理システム 図5
  • 特許-暗号鍵を決定する方法、コンピュータプログラム、及びデータ処理システム 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-28
(45)【発行日】2024-07-08
(54)【発明の名称】暗号鍵を決定する方法、コンピュータプログラム、及びデータ処理システム
(51)【国際特許分類】
   G09C 1/00 20060101AFI20240701BHJP
   G06N 99/00 20190101ALI20240701BHJP
【FI】
G09C1/00 610B
G06N99/00 180
【請求項の数】 16
【外国語出願】
(21)【出願番号】P 2022107794
(22)【出願日】2022-07-04
(65)【公開番号】P2023009013
(43)【公開日】2023-01-19
【審査請求日】2022-10-04
(31)【優先権主張番号】21183810
(32)【優先日】2021-07-05
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】521124319
【氏名又は名称】テラ クアンタム アーゲー
【氏名又は名称原語表記】TERRA QUANTUM AG
(74)【代理人】
【識別番号】100109210
【弁理士】
【氏名又は名称】新居 広守
(72)【発明者】
【氏名】ヴォロシノフ・ヴラジーミル
(72)【発明者】
【氏名】レソヴィク・ゴルデイ
(72)【発明者】
【氏名】パホムチク・アレクセイ
【審査官】金沢 史明
(56)【参考文献】
【文献】特開2020-119548(JP,A)
【文献】特表2017-515195(JP,A)
【文献】特開2019-041166(JP,A)
【文献】米国特許出願公開第2020/0394547(US,A1)
【文献】米国特許出願公開第2020/0027029(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/00- 9/40
G09C 1/00
G06N 10/00
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
暗号鍵を決定する方法であって、前記方法はデータ処理システム(20)で実行され、前記方法は、
平文と、暗号鍵及び暗号演算を含む暗号化処理手順を用いて前記平文から求められた暗号文とを提供するステップと、
前記暗号演算に含まれる論理式に基づいて、前記暗号化処理手順中の前記暗号演算ごとに、中間方程式及び/又は中間不等式を含む少なくとも1つの中間関係式を求めるステップと、
前記少なくとも1つの中間関係式の集合に基づいて、前記平文及び前記暗号文と前記暗号化処理手順の1つのラウンドに割り当てられた少なくとも1つの最適化式と、前記暗号化処理手順の状態変数及び暗号鍵変数を含む最適化変数とを含む最適化問題を特定するステップであって、前記少なくとも1つの最適化式は、前記少なくとも1つの中間関係式から求められ、且つ、前記少なくとも1つの最適化式は、先行するラウンドに対して割り当てられた少なくとも1つの先行状態変数を含む、ステップと、
前記最適化問題を解き、前記暗号鍵変数の最適化値から前記暗号鍵を決定するステップと、を含む、
暗号鍵を決定する方法。
【請求項2】
前記暗号化処理手順が、2値変数のブール関数によって記述されており、かつ/又はAES、IDEA、Salsa 20、DES、3-DES、又はARXの処理手順のうちの1つである、請求項1に記載の方法。
【請求項3】
前記暗号演算がAES演算を含み、好ましくはAddRoundKey、SubBytes、ShiftRows、MixColumns、又はKeyExpansionのうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項4】
前記暗号演算のうちの少なくとも1つの基本演算を特定するステップと、
前記基本演算から、基本方程式及び/又は基本不等式を含む基本関係式を求めるステップと、
前記基本関係式から、少なくとも1つの中間関係式を求めるステップと、をさらに含み、
好ましくは、前記基本演算が、NOT(否定)、AND(論理積)、OR(論理和)、又はXOR(排他的論理和)のうちの少なくとも1つである、
請求項1に記載の方法。
【請求項5】
少なくとも1つの前記基本関係式が、基本最適化問題を解くことによって求められ、好ましくは制約のない二次問題を解くことによって求められる、請求項4に記載の方法。
【請求項6】
前記少なくとも1つの中間関係式が、中間最適化問題を解くことによって提供され、かつ/又は2つ以上の基本演算を伴うブール関数に対応している、請求項1に記載の方法。
【請求項7】
前記少なくとも1つの中間関係式が、前記暗号演算のうちの1つにおける凸多面体のH表現を求めることによって提供される、請求項1に記載の方法。
【請求項8】
有限体に作用する前記暗号演算のうちの1つにおいて、低次の別の有限体に作用する更なる演算を特定することによって、前記少なくとも1つの中間関係式が提供される、請求項1に記載の方法。
【請求項9】
前記最適化問題が、混合整数線形計画問題、混合整数非線形計画問題、又は二次制約なし2値最適化問題である、請求項1に記載の方法。
【請求項10】
前記最適化式が最適化制約式である、請求項1に記載の方法。
【請求項11】
前記最適化式が前記最適化問題の目的関数に含まれている、請求項1に記載の方法。
【請求項12】
前記平文が第1の平文及び第2の平文を含み、前記暗号文が第1の暗号文及び第2の暗号文を含み、前記第1の暗号文が、前記暗号鍵及び前記暗号化処理手順を用いて前記第1の平文から求められており、前記第2の暗号文が、前記暗号鍵及び前記暗号化処理手順を用いて前記第2の平文から求められている、請求項1に記載の方法。
【請求項13】
前記最適化問題が、前記データ処理システム(20)の量子処理装置(22)で少なくとも部分的に解かれ、好ましくは量子アニーリング装置で少なくとも部分的に解かれる、請求項1に記載の方法。
【請求項14】
前記最適化変数が、量子状態の重ね合わせに割り当てられる、請求項13に記載の方法。
【請求項15】
データ処理システム(20)で実行されると、請求項1から14のいずれか一項に記載の方法のステップを前記データ処理システム(20)に実行させる命令を含む、コンピュータプログラム。
【請求項16】
平文と、暗号鍵及び暗号演算を含む暗号化処理手順を用いて前記平文から求められた暗号文とを提供するステップと、
前記暗号演算に含まれる論理式に基づいて、前記暗号化処理手順中の前記暗号演算ごとに、中間方程式及び/又は中間不等式を含む少なくとも1つの中間関係式を求めるステップと、
前記少なくとも1つの中間関係式の集合に基づいて、前記平文及び前記暗号文と、前記暗号化処理手順の1つのラウンドに割り当てられた少なくとも1つの最適化式と、前記暗号化処理手順の状態変数及び暗号鍵変数とを含む最適化変数を含む最適化問題を特定するステップであって、前記少なくとも1つの最適化式は、前記少なくとも1つの中間関係式から求められ、且つ、前記少なくとも1つの最適化式は、先行するラウンドに対して割り当てられた少なくとも1つの先行状態変数を含む、ステップと、
前記最適化問題を解き、前記暗号鍵変数の最適化値から前記暗号鍵を決定するステップと、
を実行することにより、前記暗号鍵を決定するように構成された、データ処理システム(20)。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、具体的には量子アニーリング装置などの量子コンピュータ上で暗号鍵を決定する手法に関する。
【背景技術】
【0002】
対称鍵暗号化アルゴリズムでは、入力データ(平文)を暗号化データ(暗号文)に暗号化することと、暗号文を復号して平文に戻すこととの両方に同じ暗号鍵が使用されている。代表的な対称鍵アルゴリズムは、高度暗号化標準(Advanced Encryption Standard:AES)である。通常、暗号文と平文との両方が既知であっても、平文から暗号文を作成するために使用される暗号鍵を決定することは、コンピュータ的に困難な課題である。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本開示の目的は、効率的かつ省リソースな方法で暗号鍵を決定する方法を提供することである。
【課題を解決するための手段】
【0004】
この課題を解決するために、独立請求項1に記載の暗号鍵を決定する方法が提供される。さらに、独立請求項14及び15にそれぞれ記載の、コンピュータプログラムとデータ処理システムとが提供される。更なる実施形態が従属請求項に開示されている。
【0005】
一態様によれば、データ処理システムで実行される、暗号鍵を決定する方法が提供される。本方法は、平文と、暗号鍵及び暗号演算を含む暗号化処理手順を用いて平文から求められた暗号文とを提供するステップと、暗号化処理手順中の暗号演算ごとに、中間方程式及び/又は中間不等式を含む少なくとも1つの中間関係式を提供するステップと、当該平文及び当該暗号文、暗号化処理手順の1つのラウンドに割り当てられた少なくとも1つの最適化式、並びに当該暗号化処理手順の状態変数及び暗号鍵変数を含む最適化変数を含む最適化問題を特定するステップであって、当該少なくとも1つの最適化式は、当該少なくとも1つの中間関係式から求められ、先行するラウンドに対して割り当てられた少なくとも1つの先行状態変数を含む、ステップと、を含む。本方法は、最適化問題を解き、次いで暗号鍵変数の最適化値から暗号鍵を決定するステップをさらに含む。
【0006】
別の態様によれば、コンピュータプログラム及び/又はコンピュータプログラム製品が提供され、これらは、当該コンピュータプログラム及び/又はコンピュータプログラム製品がデータ処理システムで実行されると、暗号鍵を決定する方法のステップを当該データ処理システムに実行させる命令を含む。
【0007】
更なる一態様によれば、平文と、暗号鍵及び暗号演算を含む暗号化処理手順を用いて平文から求められた暗号文とを提供するステップと、暗号化処理手順中の暗号演算ごとに、中間方程式及び/又は中間不等式を含む少なくとも1つの中間関係式を提供するステップと、当該平文及び当該暗号文、そして暗号化処理手順の1つのラウンドに割り当てられた少なくとも1つの最適化式、並びに当該暗号化処理手順の状態変数及び暗号鍵変数を含む最適化変数を含む最適化問題を特定するステップであって、当該少なくとも1つの最適化式は、当該少なくとも1つの中間関係式から求められ、先行するラウンドに対して割り当てられた少なくとも1つの先行状態変数を含む、ステップと、最適化問題を解き、次いで暗号鍵変数の最適化値から暗号鍵を決定するステップと、を実行することにより、暗号鍵を決定するように構成されたデータ処理システムが提供される。
【0008】
提案されている方法により、2値変数のブール関数、とりわけDESベース、3DESベース、AES-ベース、及びARXベースの暗号などの対称暗号化アルゴリズムによって記述される複数の最先端の暗号化アルゴリズムの暗号強度を検査かつ/又は検証することができる。さらに、平文と暗号文とのペアに基づいて対称暗号方式の秘密鍵を求める問題は、適切な混合整数線形計画(mixed-integer linear programming:MILP)問題又は二次制約なし2値最適化(quadratic unconstrained binary optimization:QUBO)問題に変換され得る。そのようなQUBO問題は、原理上、大幅な計算速度向上を伴う量子アニーリング装置を使用することで、解かれる可能性がある。線形方程式(同じ変数と2値補助変数とを用いる)又は線形不等式系(2値補助変数を用いず、同じ2値変数を用いる)のいずれかとしての、2値変数の任意のブール関数表現は、線形制約式が自動生成されるサブシステムとして、広範囲の離散最適化システムに適用され得る。
【0009】
当該暗号化処理手順は、2値変数のブール関数によって記述され得る。当該暗号化処理手順は、AESの処理手順、IDEAの処理手順、Salsa20の処理手順、DESの処理手順、3-DESの処理手順、又はARX(AND-ROTATE-XOR)の処理手順のうちの1つであってもよい。
【0010】
具体的には、当該暗号化処理手順は、AES-128、AES-192、又はAES-256のうちの1つであってもよい。当該暗号化処理手順は、AND(論理積)、OR(論理和)、XOR(排他的論理和)、NOR(否定論理和)、及びNAND(否定論理積)からなる基本演算に分解可能であり得る、暗号演算を含んでもよい。ARXの処理手順は、AND演算、ROTATE演算、及びXOR演算のみを含み得る。通常、提供されている本方法では分解する必要がないため、2値変数の任意のブール関数を使用する暗号化処理手順に適用されてもよい。
【0011】
当該暗号演算がAES演算を含んでもよく、好ましくはAddRoundKey、SubBytes、ShiftRows、MixColumns、又はKeyExpansionのうちの少なくとも1つを含んでもよい。具体的には、当該暗号演算の各々は、AddRoundKey、SubBytes、ShiftRows、MixColumns、又はKeyExpansionのうちの少なくとも1つであってもよい。
【0012】
当該暗号演算が、有限体の逆元演算、又は有限体の、好ましくはGF(2)における1よりも大きい整数(例えば、2又は3などである)の乗算などの部分演算を含んでもよい。
【0013】
本方法は、暗号演算のうちの少なくとも1つの基本演算を特定するステップと、当該基本演算から、基本方程式及び/又は基本不等式を含む基本関係式を求めるステップと、当該基本関係式から、少なくとも1つの中間関係式を求めるステップと、をさらに含む。好ましくは、当該基本演算が、NOT(否定)、AND(論理積)、OR(論理和)、又はXOR(排他的論理和)のうちの少なくとも1つである。通常、当該基本演算は、1つ又は2つの2値変数に作用するブール関数であってもよい。当該基本関係式及び/又は基本関係式系は、1つ又は2つの2値変数に作用するブール関数に対応してもよい。
【0014】
複数の基本演算が特定されてもよい。複数の基本演算の各々から、複数の基本関係式における対応する基本関係式が求められてもよい。複数の基本関係式から、複数の中間関係式が求められてもよい。
【0015】
少なくとも1つの基本関係式が、基本最適化問題を解くことによって求められてもよく、好ましくは制約のない二次問題を解くことによって求められてもよい。制約のない二次問題は、量子アニーリング装置で解かれるように適合されてもよい。
【0016】
具体的には、基本関係式の各々が、それぞれの基本最適化問題を解くことによって求められてもよく、好ましくはそれぞれの制約付き二次問題を解くことによって求められてもよい。
【0017】
基本関係式のうちの少なくとも1つは、双線形方程式及び/又は線形方程式を含んでもよく、当該方程式が、好ましくは連続変数、2値変数、又は整数変数のうちの少なくとも1つを含んでもよい。
【0018】
具体的には、基本関係式のうちの少なくとも1つは、形
【数1】
を有してもよく、式中、2値変数及び/又は整数変数は
【数2】
を含み、連続変数は
【数3】
を含み、式中qは基本演算のうちの1つである。基本最適化問題を解くことによって、連続変数及び/又は2値変数のうちの少なくとも1つが求められてもよい。具体的には、変数
【数4】
は、基本最適化問題を解くことによって求められてもよい。基本最適化問題は、形(c-1)の基本目的関数を含んでもよく、式中cが、好ましくは変数
【数5】
の第1の成分であってもよい。基本最適化問題は、
【数6】
のうちの少なくとも1つを含む補助制約式を含んでもよい。
【0019】
少なくとも1つの中間関係式(具体的には1つの中間方程式である)は、中間最適化問題を解くことによって提供されてもよい。付加的に又は代替的に、少なくとも1つの中間関係式は、2つ以上の基本演算を伴うブール関数に対応してもよい。さらに、少なくとも1つの中間関係式系は、2つ以上の基本演算を伴うブール関数に対応してもよい。
【0020】
少なくとも1つの中間関係式はまた、1つの基本演算に対応してもよい。
【0021】
中間最適化問題が、好ましくは制約付き二次問題であってもよい。
【0022】
少なくとも1つの中間関係式は、置換関数を含んでもよい。各中間方程式は、2値変数及び/又は連続変数を含んでもよい。各中間不等式も同様に、2値変数及び/又は連続変数を含んでもよい。
【0023】
少なくとも1つの中間関係式は、暗号演算のうちの1つにおける凸多面体のH表現を求めることによって提供されてもよい。具体的には、暗号演算のうちの1つにおいて、凸多面体のH表現を求めることによって、中間不等式系が提供されてもよい。
【0024】
中間不等式の系は、既約になるように求められてもよい。
【0025】
凸多面体は、それぞれの暗号演算のブール関数から求められてもよい。凸多面体は、その頂点(V表現)又はそのファセット(H表現)によって記述可能であってもよい。当該H表現は、多面体の演算処理コードによって求められてもよく、とりわけCDD又はLRSによって求められてもよい。
【0026】
少なくとも1つの中間関係式はまた、それぞれの暗号演算のブール関数における連言標準形又は選言標準形を求めることによって提供されてもよい。次いで、中間関係式が、好ましくは、連言標準形又は選言標準形の項に対応する基本関係式から求められてもよい。
【0027】
有限体に作用する暗号演算のうちの1つにおいて、低次の別の有限体に作用する更なる演算を特定することによって、少なくとも1つの中間関係式が提供されてもよい。さらに、有限体に作用する暗号演算のうちの部分演算において、低次の別の有限体に作用する更なる部分演算及び/又は基本演算を特定することによって、少なくとも1つの中間関係式が提供されてもよい。
【0028】
具体的には、暗号演算及び/又は部分演算がGF(2)に作用する場合、更なる演算、部分演算及び/又は基本演算がGF(2)に作用してもよい。暗号演算及び/又は部分演算がGF(2)に作用する場合、更なる演算、部分演算及び/又は基本演算がGF(2)に作用してもよい。暗号演算及び/又は部分演算がGF(2)に作用する場合、更なる演算、部分演算及び/又は基本演算がGF(2)に作用してもよい。
【0029】
当該最適化問題は、混合整数線形計画問題、混合整数非線形計画問題、又は二次制約なし2値最適化問題であってもよい。当該最適化問題はまた、制約付き整数計画問題であってもよい。
【0030】
最適化中、最適化変数における最適化値の集合を最適化したものが探索空間内で探索される。当該最適化問題は、離散探索空間を含んでもよい。当該最適化集合は、最適化問題の最小値に対応してもよく、好ましくは大域的最小値に対応してもよい。
【0031】
当該最適化式は最適化制約式であってもよいし、又は当該最適化問題の目的関数に含まれてもよい。
【0032】
当該最適化制約式は方程式又は不等式であってもよく、具体的には中間方程式又は中間不等式のうちの1つであってもよい。当該最適化制約式はまた、並べ替えられた中間方程式又は中間不等式であってもよい。複数の最適化式又は複数の最適化制約式はまた、中間方程式の線形系又は中間不等式系を減少させることによって求められてもよい。
【0033】
当該最適化問題の目的関数は、二乗最適化式の和からなっていてもよい。
【0034】
当該平文は第1の平文及び第2の平文を含んでもよく、当該暗号文は第1の暗号文及び第2の暗号文を含んでもよい。第1の暗号文は、暗号鍵及び暗号化処理手順を用いて第1の平文から求められていてもよく、第2の暗号文は、(同じ)暗号鍵及び暗号化処理手順を用いて第2の平文から求められていてもよい。
【0035】
例えば、当該暗号鍵は192ビット長又は256ビット長を有してもよく、また、第1及び第2の平文はそれぞれ、128ビット長を有してもよい。
【0036】
第1の平文及び第1の暗号文において、第1の複数の中間関係式が求められてもよい。さらに、第2の平文及び第2の暗号文において、複数の第2の中間関係式が求められてもよい。当該最適化問題は、第1の中間関係式及び複数の第2の中間関係式の両方から特定されてもよい。
【0037】
当該最適化問題は、データ処理システムの量子処理装置で少なくとも部分的に解かれてもよく、好ましくは量子アニーリング装置で少なくとも部分的に解かれてもよい。
【0038】
例えば、量子アニーリング装置は、D-Waveのアニーリング装置を備えてもよい。
【0039】
当該最適化問題はまた、汎用量子コンピュータ上で少なくとも部分的に解かれてもよい。これを目的として、量子近似最適化アルゴリズムを使用して最適化問題が解かれてもよい。
【0040】
あるいは、当該最適化問題は、データ処理システムのうちの1つ又は複数の古典処理装置でのみ解かれてもよい。古典処理装置はそれぞれ、プロセッサ及びメモリを備えてもよい。
【0041】
基本関係式を求めるステップ、中間関係式を求めるステップ、最適化問題を特定するステップ、及び/又は暗号鍵変数の最適化値から暗号鍵を決定するステップは、1つ又は複数の古典データ処理装置で実行されてもよく、具体的には1つ又は複数の対応するプロセッサによって実行されてもよい。
【0042】
当該データ処理システムは、量子処理装置を備えてもよく、具体的には量子アニーリング装置を備えてもよい。あるいは、量子処理装置は当該データ処理システムから分離されてもよい。
【0043】
最適化制約式のうちの少なくとも1つ、好ましくはすべての最適化制約式が、量子処理装置に転送されてもよく、好ましくは1つ又は複数の古典処理装置から転送されてもよく、具体的には1つ又は複数の古典処理装置の1つ又は複数のメモリから転送されてもよい。最適化制約式を転送するステップは、最適化中に固定値を転送するステップを含んでもよい。
【0044】
当該最適化変数は、量子状態の重ね合わせに割り当てられてもよい。
【0045】
具体的には、当該最適化変数の各有効値の割り当てが、好ましくは量子処理装置内で生成される量子状態のうちの1つに対応してもよい。初期時刻において、重ね合わせの量子状態の各々は等しい重みを有してもよい。
【0046】
当該重ね合わせは、制約式から求められた規定に従って、量子処理装置によって時間発展してもよい。当該規定は、例えばハミルトニアンによって記述されてもよい。
【0047】
当該暗号鍵変数の最適化値は、最終時刻における重ね合わせから求められてもよい。最終時刻において、最適化集合に対応する量子状態の最適化量子状態は、重ね合わせの量子状態の最大重みを有してもよい。最適化量子状態は、例えばハミルトニアンの基底状態に対応してもよい。
【0048】
当該暗号鍵変数の最適化値は、最適化量子状態を特定することによって求められてもよい。当該最適化値は、1つ又は複数の古典データ処理装置に転送されてもよい。これにより、当該暗号鍵が1つ又は複数の古典データ処理装置で提供されてもよく、具体的には、1つ又は複数の古典処理装置の1つ又は複数のメモリで提供されてもよい。
【0049】
暗号鍵を決定する方法に関する前述の実施形態は、暗号鍵を決定するように構成されたデータ処理システムに対応して提供されてもよい。
【図面の簡単な説明】
【0050】
以下では、例示として、図面を参照しながらいくつかの実施形態について説明する。
図1】暗号鍵を決定する方法を図で表したものである。
図2】データ処理システムを図で表したものである。
図3】AddRoundKey演算を図で表したものある。
図4】SubBytes演算を図で表したものある。
図5】MixColumns演算を図で表したものある。
図6】KeyExpansion演算を図で表したものある。
【0051】
図1には、暗号鍵を決定する(コンピュータ実装された)方法が図で表されている。第1のステップ11では、平文と、暗号化処理手順を用いて当該平文を暗号化することによって得られる暗号文とが提供される。
【0052】
第2のステップ12では、暗号化処理手順中の暗号演算ごとに、少なくとも1つの中間関係式が提供される。暗号化処理手順がAESである場合、当該暗号演算はAddRoundKey、SubBytes、Shiftows、MixColumns、及びKeyExpansionである。各中間関係式を中間方程式とすることができ、あるいは中間不等式とすることができる。当該中間方程式は、基本最適化問題を解くことによって求められ得る。
【0053】
第3のステップ13では、中間関係式を提供した後、具体的には中間関係式を求めた後、混合整数線形計画問題(MILP)又は二次制約なし2値最適化(QUBO)問題などの最適化問題が特定される。
【0054】
当該最適化問題は、中間関係式から成立しており、暗号化処理手順の各ラウンドに割り当てられた複数の最適化式を含む。当該最適化式を、具体的にはMILPの最適化制約式とすることができる。あるいは、当該最適化式は最適化問題の目的関数の第1項に含まれており、具体的にはQUBO問題の目的関数の第1項に含まれている。
【0055】
当該最適化問題は、暗号化処理手順の状態変数をさらに含む。あるラウンドに割り当てられた複数の最適化式はそれぞれ、先行するラウンドに割り当てられた少なくとも1つの状態変数を含む。
【0056】
最適化問題を特定した後、当該最適化問題が解かれ、次いで当該最適化問題の最適化変数の集合を最適化したもの(オプティマイザ)から暗号鍵が決定され、具体的には、暗号鍵変数の最適化値から暗号鍵が決定される(第4のステップ14)。
【0057】
図2は、データ処理システム20を図で表したものである。データ処理システム20は、少なくとも1つの古典処理装置21を備える。さらに、データ処理システム20は量子処理装置22を備えてもよく、例えば量子アニーリング装置を備えてもよい。少なくとも1つの古典処理装置21と量子処理装置22との間で、データが交換されてもよい。
【0058】
具体的には、D-Waveの量子アニーリング装置を使用する場合、D-WaveのPython APIがデータ交換に使用されてもよい。
【0059】
ステップ11~ステップ13が、古典処理装置21内で実行されると好ましい。最適化問題を解く第4のステップ14は、古典処理装置21又は量子処理装置22内で実行されてもよい。後者の場合、第4のステップ14の実行が大幅に加速される。
【発明を実施するための形態】
【0060】
以下では、本方法のステップについて、とりわけAESを参照しながら詳細に説明する。
【0061】
a.AES構造
AESでは、暗号鍵は、3つの異なるサイズ、即ち128ビット、192ビット、又は256ビットのうちの1つを有し得るが、入力が平文である場合は、128ビットの固定ブロックサイズを有する。より大きな入力データが暗号化される場合、当該入力データはそれぞれ128ビットのデータブロックに分割され、次いでブロック暗号操作モードを使用して、各データブロックに対してAESアルゴリズムが適用される。
【0062】
AESは、暗号鍵のサイズに応じて、暗号演算が連続して実行される、異なるラウンド数又は反復回数を含み、即ち、それぞれ128ビット、192ビット、又は256ビットに対応する10、12、又は14を含む。
【0063】
AESは4×4データブロック又はデータ配列に作用する。AES方式では、これらのデータブロックは状態と呼ばれ、各々が合計16個の状態エントリ(バイト)を含む。例えば、128ビット又は16バイトの平文bであるb0、、…、b15は、二次元配列によって以下のように記述される。
【0064】
【数7】
【0065】
AESは、以下の暗号演算を含む。
【0066】
I.KeyExpansion(鍵の拡張)-ラウンド鍵は、AESの鍵スケジュールを使用して暗号鍵から導出される。AESでは、ラウンドごとに別個の128ビットのラウンド鍵ブロックと、追加のラウンド鍵ブロックとを要する。
【0067】
II.鍵の追加ラウンド:
a.AddRoundKey(ラウンド鍵の追加)-各状態エントリは、ビット単位のXORを用いてラウンド鍵のバイトと組み合わされる。
【0068】
III.後続ラウンド(9ラウンド、11ラウンド、又は13ラウンド):
a.SubBytes(バイト置換)-ルックアップテーブルに従って各バイトが別のバイトに置き換えられる、非線形置換手段である。
b.ShiftRows(行シフト)-当該状態の最後の3行が、一定数の段階だけ周期的にシフトされる転置手段である。
c.MixColumns(列の混合)-各列の4つのバイトを結合する、当該状態の列に作用する線形混合演算である。
d.AddRoundKey
【0069】
IV.最終ラウンド:
a.SubBytes
b.ShiftRows
c.AddRoundKey
【0070】
最終状態は暗号文に対応する。
【0071】
本開示の文脈内で、KeyExpansion演算が第1のラウンドに含まれるものと理解され得る。
【0072】
b.基本関係式の特定
当該暗号演算は、2値変数を用いたブール関数を含む。例えば、暗号演算SubBytesは、XOR演算を連続的に適用するステップを含む。本方法では、ブール関数に基づいて、暗号演算ごとに中間関係式が求められる。当該中間関係式は、(中間)方程式(方程式表現)又は(中間)不等式(不等式表現)系に対応してもよい。
【0073】
暗号演算の各ブール関数は、x∧y、x∨y、又は
【数8】
(AND、OR、XOR)などの基本演算にさらに分割され得る。各基本演算において、少なくとも1つの基本関係式が求められ得、即ち、基本方程式又は基本不等式が求められ得る。ここで成立した基本関係式から、中間関係式が求められ得る。以下では、後続の項での中間関係式を処理するステップの前に、基本関係式を求めるステップを例示する。
【0074】
基本演算に対応する線形方程式を求めるために、それぞれの(基本)最適化問題が解かれる。ベクトル
【数9】
は、
【数10】
の結合ベクトル
【数11】
として定義される。また、fは実行可能な構成の集合である。求められる基本方程式は、以下の形を有し、
【数12】
式中、
【数13】
は2項係数の補助ベクトルであり、bは連続係数であり、
【数14】
は連続係数のベクトルであり、
【数15】
は2値変数のベクトルである。ベクトルの転置が(・)で記述されている。特に、式(2)は
【数16】
において線形である。
【0075】
当該線形系は、以下を満たす必要がある。
【0076】
【数17】
【0077】
ここで求められる係数は基本最適化問題によって特定されるが、当該係数は連続変数
【数18】
である。当該基本最適化問題は、MILPとして定式化され得、式(3)から以下のように求められる。まず、式(3)中の補助変数
【数19】
の数Nが選択される。原問題における変数の数がNで記述される。MILPは、補助制約式の集合と目的関数とからなる。実行可能な構成からの各ベクトルから、連続変数
【数20】
とN個の新たな2値変数
【数21】
を用いた補助制約式のうちの1つが以下のように得られる:
【数22】
【0078】
実行不可能な構成からの各ベクトル
【数23】
に対して、2Na個の新たな補助制約式が以下のように追加される。
【0079】
【数24】
【0080】
結果として、|f|+2Na|f|補助制約式(|f|及び|f|がそれぞれ、実行可能な構成及び実行不可能な構成である)及びN+N+1+|f|・N変数を用いたMILPが成立する。そのような同次形MILPは、複数の解を有する(すべての係数に同じ数を乗算すると、解も得られる)。よって、
【数25】
の第1の係数cが1に設定され、追加の補助制約式又は対応するペナルティ項c=1が得られる。
【0081】
次に、当該基本最適化問題は以下のように記載され、
【数26】
ただし、以下を条件とする。
【0082】
【数27】
【0083】
ここで、
【数28】
は実数値変数を含み、
【数29】
は2値変数を含む。
【0084】
一実施例として、基本演算z=x∧yの基本方程式を求めるステップを以下に記載する。
【0085】
基本演算の実行可能な構成及び実行不可能な構成は、以下のようになる。
【0086】
x y z
0 0 0 実行可能
0 1 0 実行可能
1 0 0 実行可能
1 1 1 実行可能
0 0 1 実行不可能
0 1 1 実行不可能
1 0 1 実行不可能
1 1 0 実行不可能
【0087】
式(4)はcx+cy+cz+ca=bに単純化され、また係数c、c、c、c、bは、以下のように求められる。
【0088】
z=x∧y⇔(∃a∈{0,1}:cx+cy+cz+ca=b) (7)
【0089】
次に、当該基本最適化問題は以下のように記載され、
【数30】
以下を条件とする。
【0090】
・0+c・0+c・0+c=b,
・0+c・1+c・0+c=b
・1+c・0+c・0+c=b
・1+c・1+c・1+c=b
・0+c・0+c・1+c・0≠b,
・0+c・0+c・1+c・1≠b,
・0+c・1+c・1+c・0≠b,
・0+c・1+c・1+c・1≠b,
・1+c・0+c・1+c・0≠b,
・1+c・0+c・1+c・1≠b,
・1+c・1+c・0+c・0≠b,
・1+c・1+c・0+c・1≠b,
【数31】
【0091】
同様に、更なる基本ブール演算の基本方程式が求められ得、これにより、以下の表1が得られる。
【0092】
【表1】
【0093】
基本方程式の代わりに、表2に従って、各基本演算に対して基本不等式系が成立し得る。
【0094】
【表2】
【0095】
当該等価性は、それぞれの基本演算及び基本不等式系から直接証明されてもよい。系
【数32】
は、zから1-zに変数を変化させることによって、
【数33】
から導出されてもよい。変数x、y、zが対応する基本不等式系を満たし、またx及びyが2値である場合、zも同様に2値になる。
【0096】
c.中間関係式の特定
暗号演算の基礎となる基本ブール演算に対応する基本関係式が成立すると、それぞれの中間関係式は以下のように求められる。
【0097】
c.1 Rijndael(ラインダール)の有限体
AESにおけるいくつかの暗号演算は、Rijndaelの有限体、即ちガロア体GF(2)=GF(2)[x]/(x+x+x+x+1)に基づいている。AESでは、GF(2)で逆元演算と、1の乗算、2の乗算、及び3の乗算とが行われている。逆元演算の計算はGF(2)では難問となるが、GF(2)ではAND演算を用いて乗算を行うため、対応しやすくなる。したがって、GF(2)では1-1=1になる。また、0-1が0と定義される。これらの関係式は、あらゆるGF(2)、p≧1において有効である。GF(2)における反転は、GF(2)、次いでGF(2)、そしてGF(2)で逐次約分していき、乗算して反転されてもよい(「Cryptographic Hardware and Embedded Systems」(CHES)に掲載のCanrightによる論文、2005年、第441~455頁を参照されたい)。例えば、GF(2)における元Gは、既約多項式r(y)=y+τy+ν及びγ0,γ∈GF(2)を法とする乗算によって、G=γy+γと記述され得る。GF(2)及びGF(2)に対する同様の変換が行われてもよい。これにより、GF(2)の反転が基本ブール演算XOR、NAND、及びNORで記述され得る。上記で挙げたように、基本演算は、対応する基本関係式に変換されるものであり、これについては表1及び表2を参照されたい。1つのバイト又は状態エントリに対して、180個の基本演算(XOR、NAND、NOR)が必要となる。各基本演算は、1つの追加の方程式と、2つの追加のビット(z及びa)とを要する。結果として得られる反転の中間方程式は基本方程式から求められ、(ベクトル値の)変数
【数34】
を用いた
【数35】
で記述される。
【0098】
GF(2)の1の乗算、2の乗算、及び3の乗算の中間方程式は、以下のように求められ得る。1を乗算すると、単純に同じ数値が得られ、即ちa×1=aとなり、ここでa∈GF(2)となる。ある数値に2を乗算することは、その数値を1だけ左にシフトさせることに相当し、続いて、その数値の最上位ビットが1である場合、当該結果及び当該値0x1B(16進表現ではこう記述され、2進表現での00011011に対応する)にXORを付加的に適用することに相当する。
【0099】
具体的には、
【数36】
から開始して、シフトを行い、0x1Bに対してXORを適用すると、
【数37】
が得られる。0x1Bは一定であるので、
【数38】
を用いてXOR演算が単純化され得る。よって、シフト後、xの最上位ビットと、0x1Bの対応ビットとが両方とも1に等しい場合、当該結果が反転される。したがって、2の乗算が完全に行われると、以下の中間方程式系が得られる。
【0100】
【数39】
【0101】
2つの変数を用いた中間方程式は置換に対応しており、このために除去され得る。これにより、2の乗算には、3つの追加の方程式と、6つの追加のビットとが必要になる。
【0102】
3の乗算は、以下のように再定式化され得る。
【0103】
【数40】
【0104】
使用されるXOR演算では、状態ビットごとに1つの追加の方程式と、1つの追加の補助ビットとが必要になる。よって、3を乗算するには、3+8=11個の追加の方程式と、22個の追加のビットとが必要になる。対応する中間方程式は
【数41】
で記述される。
【0105】
c.2 AddRoundKey
AddRoundKey演算では、AESの鍵スケジュールを用いてラウンドごとに暗号鍵から求められるラウンド鍵と、当該状態とが結合される。各ラウンド鍵は、当該状態と同じサイズである。ラウンド鍵は、ビット単位のXOR(典型的なバイト値の説明については、図3を参照されたい)を介して当該状態の各バイトをラウンド鍵の対応するバイトと結合することにより、当該状態に追加される。128ビットの当該状態及びラウンド鍵の各々に対して、ビット単位のXOR演算が適用される。したがって、AddRoundKey演算では、128個の追加の方程式に対応する128個のXOR演算と、256個の追加のビットとが必要になる。
【0106】
その結果として、中間方程式
【数42】
は以下のように記述され得る。
【0107】
【数43】
【0108】
c.3 SubBytes
図4は、SubBytes演算を図で表したものである。SubBytes演算では、当該状態の各バイトai、jが、8ビットの置換ボックス(Sボックス)Sを用いてS(ai,j)と置換される。この暗号演算は、暗号化処理手順において非線形性を提供するものである。使用されるSボックスは、適切な非線形性特性を含むGF(2)に対する乗法的逆元から導出される。SubBytes演算は、2つの部分に分解され得る。
【0109】
最初に、各入力バイトは、Rijndaelの有限体GF(2)におけるその乗法的逆元にマッピングされる。第二に、以下のアフィン変換が適用され、
【数44】
式中、
【数45】
は入力バイトの乗法的逆元である。
【0110】
乗法的逆元の特定は、項c.1に記載しているように実行され得る。したがって、各バイトに180個の追加の方程式と、360個のビットとが必要になり、その結果、16・180=360個の追加の線形方程式とビットとが必要になる。
【0111】
アフィン変換は、5つの入力ビットを用いたXOR演算(行列の行ごとに値1を有する5つの成分に対応する)を含む。右辺ベクトルは、変数を一切持たない。よって、そのi番目のビットの値が0である場合、sは反転値(対応する式中、sは1-sに置き換えられる)である。5つの入力値を用いたXOR演算は逐次評価され得、即ち
【数46】
となる。当該演算では、いくつかの追加の補助変数を必要とする。
【0112】
代替的な一手法では、中間最適化問題が、基本最適化問題に関して上述したように特定され、かつ解かれる。当該最適化問題から、以下の中間方程式が得られる。
【0113】
【数47】
【0114】
よって、暗号演算SubBytesの各ビットは、1つの方程式と、3つの補助ビットとを要する。全状態につき、128個の方程式と、384個の補助ビットとが必要になる。SubBytes演算では合計で、2880+128=3008個の(中間)方程式と、5760+384=6144個の補助ビットとが必要になる。
【0115】
したがって、暗号演算SubBytesにおいて、以下の中間方程式が提供される。
【0116】
【数48】
【0117】
c.4 ShiftRows
ShiftRows演算は、各行のバイトを一定のオフセット分周期的にシフトさせることによって、当該状態の行に作用する。AESの場合、第1の行は変更されないままである。第2の行の各バイトは、1つ左にシフトされる。同様に、第3の行と第4の行とはそれぞれ、オフセット2とオフセット3だけシフトされる。よって、ShiftRows演算では単にビットを並べ替えるだけになるため、補助変数を用いた追加の線形方程式を要しない。
【0118】
その結果、対応する中間関係式は置換関数を含み、
【数49】
上記はビットの並び替えを表している。
【0119】
c.5 MixColumns
図5は、MixColumns演算を図で表したものであり、この演算により、当該状態の各列の4つのバイトが、可逆線形変換を用いて結合される。各列jは、固定行列を列jに左乗算することにより、固定行列を用いて変換される。
【0120】
【数50】
【0121】
乗算と加算とは、ガロア体GF(2)内で実行される。GF(2)の加算は、XOR演算に対応している。各出力ビットbi、jに対して4つの入力ビットを用いると(i=0,..3)、対応する中間方程式は以下のように記載される。
【0122】
+x-x+x+y-2a-2a=0 (17)
【0123】
よって、GF(2)の加算では、1状態ビットにつき1つの追加の方程式と、3つの補助ビットとが必要になり、結果として、1状態につき合計128個の追加の方程式と、384個の補助ビットとが必要になる。2の乗算は、1バイトにつき3つの方程式と6つの補助ビット、及び1状態につき48個の方程式と96個のビットとを要する一方、3の乗算は、1状態につき176個の方程式と、352個の補助ビットとを要する。MixColumns演算では合計で、128+48+176=352個の中間方程式と、384+96+352=832個の補助ビットとが必要になる。
【0124】
MixColumnsの入力状態を
【数51】
で記述し、また出力状態を
【数52】
で記述すると、MixColumns演算の中間方程式は以下のように記載される。
【0125】
【数53】
【0126】
c.6 KeyExpansion
図6は、KeyExpansion演算を図で表したものであり、この演算では、暗号鍵を複数の別個のラウンド鍵に展開する。3つのAESバリアントAES-128、AES-192、及びAES-256(暗号鍵がそれぞれ、128ビット、192ビット、及び256ビットを有する)は、異なるラウンド数を含む。各AESバリアントでは、ラウンドごとに別個の128ビットのラウンド鍵と、追加のラウンドとを要する。AESの鍵スケジュールでは、暗号鍵からラウンド鍵を生成する。暗号鍵における32ビットワードの数をNで記述し(即ち、AES-128の場合はN=4、AES-192の場合はN=6、AES-256の場合はN=8となる)、当該暗号鍵を[K0,1,…,KN-1]で記述し、1を追加したラウンド数を、Rを用いて記述し(即ち、AES-128の場合はR=11、AES-192の場合はR=13、AES-256の場合はR=15となる)、かつ拡張鍵における32ビットワードをW0,1,…,W4R-1を用いて記述すると、ラウンドr(r<Rの場合の)のラウンド鍵は[W4r,W4r+1,W4r+2,W4r+3]となる。各ラウンド鍵の32ビットワードWは、以下のように求められる。
【0127】
【数54】
【0128】
RotWord演算は、1バイトの左循環シフトに対応しており、状態ビットを並べ替えるだけなので、追加の線形方程式を必要としない。SubWord演算は、項c.3に記載しているように、AESのSボックスを、以下のように当該ワードの4つのバイトの各々に適用する様子を表す。
【0129】
SubWord([b])=[S(b)S(b)S(b)S(b)] (20)
【0130】
また、rconは、定数値の配列である。したがって、XORを適用するステップは、追加の線形方程式と、補助ビットとを含まない。両方の演算
【数55】
と、
【数56】
とは、追加の方程式及び補助ビットに関して同等である。よって、ラウンド鍵の32ビットワードWは、以下の3つの異なる演算を用いて計算される。
【0131】
I.WはKとして求められ、これは暗号鍵の一部にすぎない。よって、追加の方程式を必要とせず、必要になるのは32ビットのみである(各Kのビット長は32である)。この型の演算はN回行われる。
【0132】
II.Wは、
【数57】
として求められるか、又は
【数58】
として求められる。対応するSボックスは、1バイトにつき188個の方程式と、384個の補助ビットとを要する。4つのバイトと、追加のXORとでは、合計188・4+8=760個の方程式と、384・4+2・8=1552個の補助ビットとが必要になる。この型の演算は、AES-128では10回、AES-192では8回、そしてAES-256では13回行われる。
【0133】
III.W
【数59】
として求められ、これは32ビットワードに作用するXORに対応しており、その結果32個の方程式と、補助の64ビットとが必要になる。この型の演算は、AES-128では30回、AES-192では38回、そしてAES-256では39回行われる。
【0134】
KeyExpansion演算では合計で、AES-128の場合の8560個の中間方程式と17568個の補助ビット、AES-192の場合の7296個の中間方程式と15040個の補助ビット、及びAES-256の場合の11128個の中間方程式と22928個の補助ビットが必要になる。
【0135】
KeyExpansion演算に対応する中間方程式が、
【数60】
で記述される。
【0136】
c.7 凸多面体表現による中間不等式の取得
それぞれの暗号化処理手順における中間不等式はまた、いずれのブール関数
【数61】
も線形不等式系として記述できるという事実を利用することによっても求められ得る。ブール関数F:B→{0,1},のすべての0~1個の独立変数の集合に対応する、n次元単位立方体のすべての頂点の集合
【数62】
に対して、n+1個の変数
【数63】
を使用した線形不等式系が、以下のように存在し、
【数64】
(式中、a,b,b≠0はスカラであり、また
【数65】
はn個の変数の線形関数である)、これにより、以下が成立する。
【0137】
【数66】
【0138】
即ち、あらゆる
【数67】
に対して、
【数68】
が成立するときに、かつそのときにのみ、当該式が成立する。xn+1を2値変数と仮定する必要がないことが重要である。いずれの2値ベクトル
【数69】
に対しても、系
【数70】
は解
【数71】
のみを有し、ここで
【数72】
である。
【0139】
ブール関数を線形方程式又は線形不等式に変換することは、とりわけブール充足可能性(Boolean satisfiability:SAT)問題と整数線形計画法(integer linear programming:ILP)問題との関係性に関して、コンピュータ科学における既知の課題となっている。SAT問題を処理することは、主として2つの特別形式である、連言標準形(conjunctive normal form:CNF)又は選言標準形(disjunctive normal form:DNF)のうちの一方で記述される、大規模なブール関数の充足可能性を確認することに相当する。ブール関数がDNF表現又はCNF表現を有する場合、対応する線形不等式の生成は表2に基づいて直接行われてもよく、これはなぜなら、DNF表現及びCNF表現が、双変の基本ブール演算を合成したものであるためである。いずれのブール関数もDNF表現又はCNF表現に変換され得るので、この(第1の)手法はあらゆるブール関数に適用されてもよい。
【0140】
そのような手法には2つの欠点があり得、第一に、与えられたブール関数に対して対応するCNF表現又はDNF表現を特定する必要があるという点、そして第二に、生成される線形不等式系が、相当量の冗長不等式を含み得るという点が挙げられる。
【0141】
代替的な第2の手法では、DNF表現又はCNF表現を要することなく、線形不等式の既約系が得られてもよい。n変数におけるいずれのブール関数Fも、単位超立方体
【数73】
の適切な2頂点の凸包によって記述され得る。ブール関数Fは、ブール関数Fのグラフとして理解することができる、
【数74】
におけるベクトルの集合によって記述されてもよい。V[F]は単位超立方体のサブセットであり、即ちV[F]⊂Bn+1となる。V[F]内のすべてのベクトルが対応する凸多面体conv(V[F])の頂点、即ちV[F]の凸包であることが証明され得る。その結果、ブール関数Fは、(多面体及びその頂点の集合に対して同じ記号を使用して)凸多面体V[F]として処理されてもよい。あらゆる多面体は、そのすべての頂点の集合、V表現、又は線形不等式系(多面体のファセットの集合に対応する)、H表現のいずれかによって記述され得る(AvisとFukudaによる、Discrete&Computational Geometry誌、第8巻第3号第295~313頁、1992年を参照のこと)。多面体V[F]のH表現(V表現によって与えられる)は、ここで求められる線形不等式系を表す。
【0142】
ユークリッド空間における点の有限集合の凸包のV表現及びH表現は、例えば、CDD又はLRSなどの多面体の演算処理コードによって特定されてもよい。とりわけ、既約H表現が生成され得、即ち冗長な線形不等式が除去される。これにより、結果として生じる暗号鍵を決定するための最適化問題の複雑性が低減され得る。LRSにより、逆探索アルゴリズムの並列実装がさらに可能になる。また、LRS計算では、(V[F]の場合のように)整数値の頂点を有する多面体に関するLRS計算が、精度損失なく実行され得る。
【0143】
表2に列挙されている双変の基本ブール関数のすべての線形系は、対応するH表現を求めることによって取得されてもよい。一実施例として、ブール関数Jの場合、
J(x,x,x)=(x∧x)∨(x∧x)∨(x∧x)=x (23)
となる、MILPの制約式としての不等式系が、第1及び第2の手法の両方を用いて求められる。
【0144】
H表現(例えば、LRSを使用した)を特定すると、10個の不等式を有する系が得られ、
【数75】
その一方で、DNF表現又はCNF表現を用いた第1の手法を使用して、17個の不等式及び4つの連続補助変数の系を成立させている。後者の場合により多くの数が得られているが、これは、双変の基本ブール関数及び連続補助変数から当該系が連続的に構築されることから結果として生じる一方、前者の手法では、ブール関数Jを全体として処理することができる。
【0145】
第2の実施例では、5つの2値変数x,x,x,x,x,xを含むブール式
【数76】
は、以下の線形不等式系と等価である。
【0146】
【数77】
【0147】
,x,x,x,xはすべて2値であるため、自明な冗長不等式(0≦x≦1)と、変数xの係数が0の不等式とが除外され得る。出力値xは、自動的に2値になる。
【0148】
d.最適化問題の特定
すべての中間関係式が成立すると、解くべき最適化問題が特定され得る。表3は、使用される中間方程式及び補助ビットの数を示す。
【0149】
【表3】
【0150】
最適化問題の最適化式は、以下の中間方程式の場合、中間関係式の集合から求められ、
【数78】
ここで、
【数79】
は平文に対応しており、
【数80】
は暗号文に対応しており、また
【数81】
は暗号鍵変数を表している。当該暗号鍵は、暗号鍵変数
【数82】
の最適化値から決定される。状態変数
【数83】
は、個々のラウンドrに対するAESの処理手順の状態に対応する。とりわけ、いくつかの最適化式はそれぞれ、先行するラウンドに割り当てられた、具体的には直前のラウンドに割り当てられた少なくとも1つの先行状態変数を含む。例えば、最適化式
【数84】
は、先行するラウンドR-2に割り当てられた状態変数
【数85】
を含む。
【0151】
当該最適化問題がMILPである場合、最適化式は最適化制約式となる。よって、式(27)中の中間方程式は、MILPの制約式を構成している。また、制約式を中間方程式ではなく中間不等式とする形態で、最適化式を用いてMILPが特定され得る。これを目的として、各暗号演算及びラウンドに対応する不等式を求める必要がある。
【0152】
当該最適化問題がQUBO問題である場合、各中間方程式のすべての項を一方の辺に移動させ、得られた項を二乗することにより、中間方程式から最適化式が求められる。その結果、QUBO問題の目的関数は、すべての二乗項の和を含む。このように最適化式を求めるステップは、形式的には以下のように記述され得る。中間方程式を線形系として記述しており、
【数86】
式中、
【数87】
及びaijは、i行j列の行列Aの成分であり、式(28)中の線形系は、以下の式と等価である。
【0153】
【数88】
【0154】
式(29)の左辺を合計すると、以下の目的関数が得られる。
【0155】
【数89】
【0156】
【数90】
が式(28)、(29)における線形系の解であるときに、かつそのときにのみ、式(30)中の目的関数の最小値に達する。
【0157】
方程式表現と不等式表現との両方が、MILPを特定するために使用されてもよい。
【0158】
方程式を使用する場合、暗号化処理手順の各ブール関数は、2値補助変数を使用した単一の方程式に要約されてもよい。CPLEXソルバーを使用して、当該方程式の係数が取得されてもよい。2値補助変数又は補助変数を使用した中間方程式を用いることにより、量子アニーリング装置にとりわけ適したQUBO問題を特定することがさらにできるようになる。
【0159】
MILP問題とQUBO問題との両方は原理上、CPLEX、Gurobi、SCIP、又はCBCなどの古典的な汎用ソルバーによって解かれてもよい。しかしながら、2値補助変数を追加すると、計算の複雑性を大幅に増大させる可能性があり、古典的なソルバーにとっては難題となる。この点において、QUBO問題は、D-Waveなどの量子アニーリング装置によって解くことができるため、より有望であると考えられ得る。
【0160】
2値補助変数なしの不等式の場合、各ブール関数は、追加の2値変数なしの線形不等式系に要約される。当該不等式は、LRSなどの多面体応用システムを使用して明示的に求められてもよい。本手法は、それに限定されないが、主として古典的なソルバーに適している。
【0161】
AESバリアントでは、平文よりも長い暗号鍵が使用されてもよい(AES-256は、暗号鍵に対して256ビットを有し、平文に対しては128ビットを有する)。したがって、128ビットを有する1つの平文ブロック及びその暗号文は、完全な暗号鍵を決定するのに十分ではない。しかしながら、128ビットからなる2つの既知の平文ブロックは(対応するそれらの暗号文と共に)それぞれ、十分な情報を含む。
【0162】
バリアントであるAES-192とAES-256とを処理するために、複数の中間関係式又は中間関係式(方程式又は不等式)の系を複製したものが2つ求められる。第1の系は第1の平文と、暗号鍵を使用して第1の平文から生成された第1の暗号文とを含み、また第2の系は第2の平文と、(同じ)暗号鍵を使用して第2の平文から生成された第2の暗号文とを含む。第1及び第2の系が、中間関係式の(全体の)系を形成していると考えることもできる。第1及び第2の系から共通の最適化問題が特定され、AES-128の場合と同様に解かれる。
【0163】
記載している方法ステップは、AESに適しているだけでなく、他の暗号化処理手順にも適している。定義されたプロトコル及び非線形関数を含み、その入力ビットの量が限られているか、又は基本演算XOR、ANDなどに分解することができるあらゆる暗号化処理手順にも、同様にアプローチすることができる。即ち、本方法は、IDEA、Salsa 20、又はARXに適合され得る。
【0164】
本明細書、図及び/又は特許請求の範囲に開示されている特徴は、単独で、又はそれらの様々な組み合わせで取り入れられる、様々な実施形態を実現するための材料であってもよい。
図1
図2
図3
図4
図5
図6