(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-05
(45)【発行日】2024-02-14
(54)【発明の名称】暗号化ハッシュ関数の原像要素を決定するための方法、コンピュータプログラム、およびデータ処理システム
(51)【国際特許分類】
G06N 10/60 20220101AFI20240206BHJP
G09C 1/00 20060101ALI20240206BHJP
G06F 17/10 20060101ALI20240206BHJP
【FI】
G06N10/60
G09C1/00 650Z
G06F17/10 Z
【外国語出願】
(21)【出願番号】P 2021186248
(22)【出願日】2021-11-16
【審査請求日】2022-03-08
(32)【優先日】2020-11-25
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】521124319
【氏名又は名称】テラ クアンタム アーゲー
【氏名又は名称原語表記】TERRA QUANTUM AG
(74)【代理人】
【識別番号】100109210
【氏名又は名称】新居 広守
(72)【発明者】
【氏名】パホムチク・アレクセイ
(72)【発明者】
【氏名】ヴォロシノフ・ヴラジーミル
【審査官】金田 孝之
(56)【参考文献】
【文献】特表2017-515195(JP,A)
【文献】特開2019-145970(JP,A)
【文献】細部 博史,Chorus: モジュール機構を備えた幾何制約解消系,レクチャーノート/ソフトウェア学 24 インタラクティブシステムとソフトウェアVIII,株式会社近代科学社,2000年12月20日,第1版,pp. 91-100,ISBN4-7649-0285-0
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/00-10/80
G09C 1/00- 5/00
G06F 17/00-17/18
H04K 1/00- 3/00
H04L 9/00- 9/40
(57)【特許請求の範囲】
【請求項1】
データ処理システム(20)で実行される、暗号化ハッシュ関数の原像要素を決定するための方法であって、
-暗号化ハッシュ関数の出力値および前記暗号化ハッシュ関数のハッシュ関数演算をもたらすステップ(10)と、
-前記ハッシュ関数演算の各々について、方程式および/または不等式を含む少なくとも1つのハッシュ関数関係を決定するステップ(11)と、
-最適化問題を決定するステップ(12)であって、
-前記出力値と、
-前記暗号化ハッシュ関数の反復に割り当てられた少なくとも1つの制約と、
-前記暗号化ハッシュ関数の内部状態変数と少なくとも1つの原像変数とを含む最適化変数であって、
前記少なくとも1つの制約は、前記少なくとも1つのハッシュ関数関係から決定され、先行する反復に割り当てられた先行する内部状態変数を含む、最適化変数を含む、最適化問題を決定するステップと、
-前記最適化問題を解き(13)、前記少なくとも1つの原像変数の最適化した値から前記暗号化ハッシュ関数の原像要素を決定するステップと
を含む、方法。
【請求項2】
前記ハッシュ関数演算は、非線形ブール関数、左ビット回転、右ビット回転、およびモジュラ加算のうちの少なくとも1つ、特に、
【数1】
の少なくとも1つを含む、請求項1に記載の方法。
【請求項3】
-前記ハッシュ関数演算のうちの少なくとも1つの要素的演算を決定するステップと、
-前記要素的演算の各々について、要素方程式および/または要素不等式を含む少なくとも1つの要素的関係を決定するステップ(11a)と
、前記少なくとも1つのハッシュ関数演算の前記要素的関係から前記少なくとも1つのハッシュ関数関係を決定するステッ
プと、をさらに含む、請求項1または2に記載の方法。
【請求項4】
前記ハッシュ関数関係のうちの少なくとも1つおよび/または前記要素的関係のうちの少なくとも1つは、双線形方程式および/または線形方程式を含
む、請求項
3に記載の方法。
【請求項5】
前記ハッシュ関数関係のうちの少なくとも1つおよび/または前記要素的関係のうちの少なくとも1つは、複数の連続変数、複数のバイナリ変数、および、複数の整数の変数のうちの少なくとも1つを含み、
前記
複数の連続
変数のうちの少なくとも1つおよび/または
前記複数のバイナリ変数のうちの少なくとも1つが、初期の最適化問
題を解くことによって決定される、請求項4に記載の方法。
【請求項6】
前記ハッシュ関数関係のうちの少なくとも1つおよび/または前記要素的関係のうちの少なくとも1つは、連続的な係
数、およびバイナリ変数の線形方程式を含む、請求項
3に記載の方法。
【請求項7】
前記最適化問題を解くときに、初期内部状態の値および/または最終的内部状態の値が固定される、請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記最適化問題を解く前に、前記最適化問題を少なくとも部分的に事前に解くステップ(12a)をさらに含む、請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記最適化問題は、整数混合線形プログラム、整数混合非線形プログラム、または二次の非制約バイナリ最適化問題である、請求項1から8のいずれか一項に記載の方法。
【請求項10】
前記最適化問題は、前記データ処理システム(20)の量子処理デバイス(22
)において少なくとも部分的に解かれる、請求項1から9のいずれか一項に記載の方法。
【請求項11】
前記最適化変数は量子状態の重ね合わせに割り当てられ、および/また
はオプティマイザは、前記最適化問題の最小
値である、請求項10に記載の方法。
【請求項12】
前記暗号化ハッシュ関数は
、情報のセキュリティをもたらし、および/またはMD4、MD5、SHA-1、およびSHA-2のうちの1つである、請求項1から11のいずれか一項に記載の方法。
【請求項13】
前記原像要素は
、デジタル署名および/または検証されるメッセージおよび/またはデータファイルを含む、請求項1から12のいずれか一項に記載の方法。
【請求項14】
コンピュータプログラムであって、前記コンピュータプログラムがデータ処理システム(20)で実行されると、前記データ処理システム(20)に、請求項1から13のいずれか一項に記載の方法のステップを実行させる命令を含む、コンピュータプログラム。
【請求項15】
暗号化ハッシュ関数の原像要素を決定するように構成されたデータ処理システム(20)であって、
-暗号化ハッシュ関数の出力値および前記暗号化ハッシュ関数のハッシュ関数演算をもたらすステップ(10)と、
-前記ハッシュ関数演算の各々について、方程式および/または不等式を含む少なくとも1つのハッシュ関数関係を決定するステップ(11)と、
-最適化問題を決定するステップ(12)であって、
-前記出力値と、
-前記暗号化ハッシュ関数の反復に割り当てられた少なくとも1つの制約と、
-前記暗号化ハッシュ関数の内部状態変数と少なくとも1つの原像変数とを含む最適化変数であって、
前記少なくとも1つの制約は、前記少なくとも1つのハッシュ関数関係から決定され、先行する反復に割り当てられた先行する内部状態変数を含む、最適化変数を含む最適化問題を決定するステップと、
-前記最適化問題を解き(13)、前記少なくとも1つの原像変数の最適化した値から前記暗号化ハッシュ関数の原像要素を決定するステップと
を実行することによって、暗号化ハッシュ関数の原像要素を決定するように構成されたデータ処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、特に量子アニーリングデバイスなどの量子コンピュータで、暗号化ハッシュ関数の原像要素を決定するための技術に関する。
【背景技術】
【0002】
反転の暗号化ハッシュ関数は、それぞれの暗号強度の分析に関する。式中Xが入力値の集合(入力ビットシーケンス、メッセージ)であり、Yが出力値の集合(ハッシュの値、固定の長さのビットシーケンス)であるハッシュ関数H:X→Yについて、Yにおける要素yのサイズ|y|は通常、|x|よりもはるかに小さい。したがって、ハッシュ関数は全単射ではなく、次式
H(x)=y (1)
は一般に、多くの解を有し、すなわち、集合H(-1)(y)={x:H(x)=y}(特定のハッシュの値yに対応する原像要素または逆像要素の集合)は多くの要素を含むことができる。それにもかかわらず、それらのいずれかの模索は、「強力な」ハッシュ関数の計算上困難な問題である。近年、ハッシュ関数は、ブロックチェーン技術における重要な要素として使用されている。最も計算電力を消費する段階、いわゆるマイニングはまた、以下の不等式を解くと理解され得る。
【0003】
H({x,xfixed})≦y (2)
【0004】
式中、{x,xfixed}は、未知の部分x(いわゆるノンス、通常は4バイトのフィールド)と、ブロックヘッダを伴う固定された残りの部分xfixedとを含むハッシュ関数Hの引数であり、ハッシュの値yは、所定の閾値に対応する。式(2)の左辺および右辺はビットシーケンスであるが、整数のバイナリ表現として解釈することもできる。これにより、式(2)から、ハッシュの値yの事前定義された先頭ビット数はすべて0に等しい。例えば、ハッシュ関数が128ビットのハッシュ関数Hである場合、ハッシュの値yは、ymがシーケンス(yk)(k=1,…,128)内の最初の(左から)ゼロ以外のビットである(有限)シーケンスy=(yk)(k=1,…,128)として書くことができる。したがって、式(2)は、以下に相当する。
【0005】
[H({x,xfixed})]k=0(k=1:(m-1)) (2’)
【0006】
ハッシュ関数Hの先頭ビット(m-1)は0である。これにより、原像要素の集合のうちの1つを決定することができる。
【0007】
暗号化ハッシュ関数によって処理される入力にアクセスするか、またはそれを変更する主なタイプは、衝突攻撃と原像攻撃の2つである。衝突攻撃では、目標は、2つの異なるメッセージx1,x2を見つけ、H(x1)=H(x2)とすることである。MD5の暗号化ハッシュ関数に対するこのタイプの攻撃は既に知られており、約218MD5の圧縮を必要とし、これは依然として網羅的な探索(264MD5の圧縮を必要とする)よりもはるかに少ない。したがって、そのような攻撃は通常のPCで実行することができる。一方、原像攻撃は、より複雑であるが、衝突攻撃よりも強力である。原像攻撃の間、xは所与のyに対して決定され、H(x)=yである。MD5の場合、そのような攻撃は現在、理論的なものに過ぎず、すなわち、網羅的な探索よりも少ないMD5圧縮が必要とされるが(2123.4対2128)、既知の原像攻撃は、利用可能なコンピュータ上で完了することが、依然として事実上不可能である。
【発明の概要】
【0008】
本開示の目的は、効率的かつリソースを節約する方法で、暗号化ハッシュ関数によって処理されたハッシュの値に対応する原像要素を決定するための方法を提供することである。
【0009】
問題を解決するために、請求項1に記載の、データ処理システムで実行される、暗号化ハッシュ関数の原像要素を決定するための方法が提供される。さらに、コンピュータプログラムおよびデータ処理システムが、それぞれ独立請求項14および15に従って提供される。さらなる実施形態は、従属請求項に開示されている。
【0010】
一態様によれば、データ処理システムで実行される、暗号化ハッシュ関数の原像要素を決定するための方法が提供される。本方法は、暗号化ハッシュ関数の出力値および暗号化ハッシュ関数のハッシュ関数演算を提供することを含み、ハッシュ関数演算の各々について、式および/または不等式を含む少なくとも1つのハッシュ関数関係を決定することと、最適化問題を決定するステップとを含む。最適化問題は、出力値と、暗号化ハッシュ関数の反復に割り当てられた少なくとも1つの制約(最適化関係)と、暗号化ハッシュ関数の内部状態変数および少なくとも1つの原像変数を含む最適化変数とを含む。少なくとも1つの制約は、少なくとも1つのハッシュ関数関係から決定され、先行する反復に割り当てられた先行する内部状態変数を含む。本方法は、最適化問題を解き、少なくとも1つの原像変数の最適化した値から暗号化ハッシュ関数の原像要素を決定するステップをさらに含む。
【0011】
別の態様によれば、コンピュータプログラムおよび/またはコンピュータプログラム製品が提供され、コンピュータプログラムおよび/またはコンピュータプログラム製品がデータ処理システムで実行されると、データ処理システムに、暗号化ハッシュ関数の原像要素を決定するための方法のステップを実行させる命令を含む。
【0012】
さらなる態様によれば、以下の暗号化ハッシュ関数の出力値および暗号化ハッシュ関数のハッシュ関数演算をもたらすステップ、ハッシュ関数演算の各々について、方程式および/または不等式を含む少なくとも1つのハッシュ関数関係を決定するステップ、最適化問題を決定するステップ、および最適化問題を解き、少なくとも1つの原像変数の最適化した値から暗号化ハッシュ関数の原像要素を決定するステップを実行することによって、暗号化ハッシュ関数の原像要素を決定するように構成されたデータ処理システムが提供される。最適化問題は、出力値と、暗号化ハッシュ関数の反復に割り当てられた少なくとも1つの制約と、暗号化ハッシュ関数の内部状態変数および少なくとも1つの原像変数を含む最適化変数とを含む。少なくとも1つの制約は、少なくとも1つのハッシュ関数関係から決定され、先行する反復に割り当てられた先行する内部状態変数を含む。
【0013】
少なくとも1つのハッシュ関数関係は、直前の反復に割り当てられた先行する内部状態変数を含むことができる。最適化問題は、複数の制約を含むことができる。暗号化ハッシュ関数は、複数の反復、特に48、64、80、または128の反復を含むことができる。好ましくは、制約の各々を反復のうちの1つに割り当てることができる。さらに、反復の各々は、制約のうちの少なくとも1つを割り当てられてもよい。反復の各々は、制約のうちの少なくとも1つを割り当てることができ、その各々は、直前の反復に割り当てられた先行する内部状態変数のうちの少なくとも1つを含むことができる。制約は、最適化方程式、最適化不等式、および目的関数のうちの少なくとも1つを含むことができる。特に、式(1)または式(2)を最適化問題に対して用いるとき、明示的な目的関数(例えば、最小化されるべきである)が必要ない場合がある。したがって、最適化問題は、ダミー0定数の目的関数を含むことができる。複数の制約のいくつかは、ペナルティ項として目的関数要素に変換することもできる。
【0014】
少なくとも1つの原像変数の最適化した値は、最適化問題の最小値および/または最大値が決定されたときに仮定され得る。最適化問題は、複数の原像変数、例えば16個の原像変数を含むことができる。原像要素は、原像変数の最適化した値を連結することによって決定され得る。最小値および/または最大値は、大域的および/または局在的であってもよい。
【0015】
暗号化ハッシュ関数の出力値は、好ましくは128または160ビットのサイズを有するハッシュの値(ダイジェスト)とすることができる。
【0016】
ハッシュ関数演算は、非線形ブール関数、左ビット回転、右ビット回転、およびモジュラ加算のうちの少なくとも1つ、特に、以下のうちの1つを含み得る。
【0017】
【0018】
ハッシュ関数演算のうちの少なくとも1つ、好ましくは関数演算の各々は、暗号化ハッシュ関数の反復および/またはラウンドに割り当てられ得る。
【0019】
左ビット回転は、1つの桁または複数の桁によって左ビットを回転させることを含んでもよい。右ビット回転は、1つの桁または複数の桁によって右ビットを回転させることを含んでもよい。回転させる桁の数は、左ビットの回転および/または右ビットの回転に割り当てられた反復および/またはラウンドに依存し得る。
【0020】
方法は、ハッシュ関数演算のうちの少なくとも1つの要素的演算を決定するステップと、要素的演算の各々について、要素方程式および/または要素不等式を含む少なくとも1つの要素的関係を決定するステップと、少なくとも1つのハッシュ関数演算の要素的関係から少なくとも1つのハッシュ関数関係を決定するステップとを含み得る。好ましくは、要素的演算は、NOT、AND、OR、およびXORのうちの少なくとも1つを含み得る。
【0021】
実施形態では、ハッシュ関数関係のすべては、要素的関係から決定されてもよい。代わりに、ハッシュ関数関係の少なくとも1つまたはすべては、ハッシュ関数演算から直接決定される。
【0022】
ハッシュ関数関係のうちの少なくとも1つおよび/または要素的関係のうちの少なくとも1つは、双線形方程式および/または線形方程式を含み、好ましくは連続変数、バイナリ変数、および整数の変数のうちの少なくとも1つを含み得る。
【0023】
ハッシュ関数関係のうちの少なくとも1つおよび/または要素的関係のうちの少なくとも1つは、
【数2】
の形式を有し、バイナリ変数および/または整数の変数が
【数3】
を含み、連続変数が、
【数4】
を含み、qは、ハッシュ関数演算および/または要素的演算のうちの1つである。
【0024】
連続および/またはバイナリ変数の少なくとも1つが、初期の最適化問題(補助的最適化問題)、好ましくは制約付き二次問題を解くことによって決定され得る。
【0025】
特に、変数
【数5】
は、初期最適化問題を解くことによって決定され得る。初期最適化問題は、(с
1-1)
2の形式の目的関数を含むことができ、ここではc
1は
【数6】
の第1の成分である。この形態は、正規化を可能にする。初期最適化問題は、
【数7】
のうちの少なくとも1つを含む補助的制約を含むことができる。特に、初期の最適化問題は次のようになり得る。
【0026】
【0027】
ここで、fは実行可能な構成のセットを示し、Naは式(4)での補助変数の数を示す。
【0028】
好ましくは初期最適化問題によって決定される、ハッシュ関数関係の少なくとも1つおよび/または要素的関係の少なくとも1つは、連続的な係数、好ましくは整数の値の係数、およびバイナリ変数の線形方程式を含み得る。
【0029】
例えば、要素的関係の少なくとも1つは、x+y-1=0、x+y-2z-a=0、x+y-2z+a=0、およびx+y-z-2a=0の少なくとも1つを含むことができ、ここで、x、y、z、およびaは、バイナリ変数である。さらに、要素的関係の少なくとも1つは、x+3y+2z-6F+2a0-3a1+2a2=0、3x+2y-z-6G-3a0+2a1+2a2=0、x+y+z-H-2a0=0、x+2y-z-2I+a0-4a1=0,および(x+y+z-2J-a=0)の少なくとも1つを含むことができ、x、y、z、FからJ、およびa0からa2は、バイナリ変数である。
【0030】
要素的関係のうちの少なくとも1つはまた、以下の要素不等式{z≦x,z≦y,z≧x+y-1}、{x≦z,y≦z,z≦x+y,z≦1};および{z≦x+y,z≧x-y,z≧y-x,z≦2-x-y}の集合のうちの少なくとも1つを含むことができ、式中、xおよびyは、バイナリ変数であり、zは連続変数である。ハッシュ関数関係の不等式は、要素不等式の集合のうちの少なくとも1つから決定され得る。
【0031】
最適化問題を解くときに、初期内部状態の値および/または、好ましくは最後の反復に割り当てられる最終的な内部状態の値、が固定され得る。最適化変数は、最後の反復に割り当てられた内部状態変数を含まなくてもよい。
【0032】
方法は、最適化問題を解く前に、最適化問題を少なくとも部分的に事前に解くステップをさらに含み得る。最適化問題を事前に解くことにより、制約および/または最適化変数の数を減らすことができる。最適化問題を事前に解くことは、最適化問題の値、好ましくは最適の値を決定することを含んでもよい。事前に解くことはまた、制約のうちの少なくとも1つの他の制約を代替する少なくとも1つの代替の制約を決定することを含むことができる。
【0033】
最適化問題は、整数混合線形プログラム(MILP)、整数混合非線形プログラム(MINLP)、または二次の非制約バイナリ最適化(QUBO)問題であり得る。最適化問題はまた、制約付き整数プログラムであり得る。QUBO問題の目的関数は、MILPおよび/または、MINLPに対して決定された制約から、好ましくは制約を二乗することによって決定することができる。最適化問題は、別個の探索空間を含むことができる。
【0034】
最適化問題は、データ処理システムの量子処理デバイス、好ましくは量子アニーリングデバイスにおいて(少なくとも部分的に)解くことができる。
【0035】
例えば、量子アニーリングデバイスは、D波アニーリングデバイスであってもよい。最適化問題は、汎用量子コンピュータ上で解くこともできる。この目的のために、量子近似最適化アルゴリズムを使用して最適化問題を解くことができる。
【0036】
あるいは、最適化問題は、古典的な処理デバイス、好ましくはデータ処理システムにおいてのみ解くことができる。古典的な処理デバイスは、プロセッサおよびメモリを備えることができる。要素的関係を決定すること、ハッシュ関数関係を決定すること、最適化問題を決定すること、および/または少なくとも1つの原像変数の最適化した値から暗号ハッシュ関数の原像要素を決定することは、古典的なデータ処理デバイスにおいて、特に古典的な処理デバイスのプロセッサによって実行され得る。
【0037】
データ処理システムは、量子処理デバイス、特に量子アニーリングデバイスを備えてもよい。あるいは、量子処理デバイスは、データ処理システムから分離されてもよい。
【0038】
少なくとも1つの制約、好ましくはすべての制約は、量子処理デバイス、好ましくは古典処理デバイス、特に古典処理デバイスのメモリから転送されてもよい。制約を転送することは、最適化中に固定値、例えば暗号化ハッシュ関数の出力値を転送することを含むことができる。
【0039】
最適化変数は量子状態の重ね合わせに割り当てられ、および/またはオプティマイザは、最適化問題の最小値、好ましくは大域的最小値であり得る。
【0040】
特に、最適化変数の可能な各々の値の割り当ては、好ましくは量子処理デバイスによって生成される量子状態のうちの1つに対応することができる。初期において、重畳の量子状態の各々は同じ重みを有することができる。重畳は、制約から決定された処方に従って量子処理デバイスによって時間的に発展させることができる。処方は、例えばハミルトニアンによって表されてもよい。少なくとも1つの原像変数の最適化した値(割り当て)は、最終時刻における重畳から決定されてもよい。最後に、最適化した値割の当てに対応する量子状態の最適化量子状態は、重畳の量子状態の最大重みを有することができる。最適化量子状態は、例えば、ハミルトニアンの基底状態に対応し得る。
【0041】
少なくとも1つの原像変数の最適化した値は、最適化量子状態を決定することによって決定され得る。最適化した値は、古典的なデータ処理デバイスに転送されてもよい。これにより、原像要素は、古典的なデータ処理デバイス、特に古典的な処理デバイスのメモリに設けられてもよい。
【0042】
暗号化ハッシュ関数は、好ましくは認証および/またはデータ破損検出のための情報のセキュリティをもたらすことができる。暗号化ハッシュ関数は、さらに、MD4、MD5、SHA-1、およびSHA-2のうちの1つであってもよい。
【0043】
原像要素は、好ましくはデータの完全性および/またはプルーフオブワークのために、デジタル署名および/または検証されるメッセージおよび/またはデータファイルを含み得る。プルーフオブワークにより、ブロックチェーン内のトランザクションを確認することができ、および/またはブロックチェーンの新しいブロックを生成することができる。
【0044】
暗号化ハッシュ関数の原像要素を決定するための方法に関する前述の実施形態は、暗号化ハッシュ関数の原像要素を決定するように構成されたデータ処理システムに対応して提供することができる。
【図面の簡単な説明】
【0045】
以下では、例として、図面を参照して実施形態を説明する。
【
図1】MD5ハッシュ関数の図形による表示を示す。
【
図2】SHA-1ハッシュ関数の図形による表示を示す。
【
図3】暗号化ハッシュ関数の原像要素を決定するための方法の図形による表示を示す。
【
図4】データ処理システムの図形による表示を示す。
【発明を実施するための形態】
【0046】
図1は、MD5ハッシュ関数の図形による表示を示す。ハッシュ関数の入力データ、例えばメッセージは、ハッシュ関数の異なる反復kに対応する固定されたブロック長(MD5の場合32ビット)のメッセージブロック(原像データブロック)M
kに分割される。ハッシュ関数は、反復kごとの内部状態を含み、各内部状態は、4つの32ビットのブロックA
k,B
k,C
k,D
kからなる。
【0047】
初期内部状態(A
0,B
0,C
0,D
0)から開始して、ハッシュ関数の演算が第1の反復の中の初期内部状態(A
0,B
0,C
0,D
0)に適用され、その結果、第1の内部状態(A
1,B
1,C
1,D
1)が得られ、これにより、ひいては、ハッシュ関数の演算を適用する第2の反復の開始点が得られる。
図1に示す図は、反復kのためのハッシュ関数演算の適用を示す。各反復kの中で、メッセージブロックM
kが処理され、内部状態を修正するために使用される。最大反復回数(MD5の場合は64)に達した後、最後の内部状態の32ビットブロックが連結され、暗号化ハッシュ関数の出力値が生成される。
【0048】
MD5ハッシュ関数(MD4、SHA-1、およびSHA-2などの広く使用されている暗号化ハッシュ関数の大半と同様に)は、以下のハッシュ関数演算を含む。
-ビット単位の論理演算に基づく非線形ブール関数Fk、
-16、32ビットの整数のモジュロ216または232の加算、
-ビット数分のビットシーケンスのシフト。
【0049】
MD5ハッシュ関数の64回の反復は、16回の演算の4回にグループ化される。各ラウンドについて、異なるブール関数F
kが使用され、K
kは32ビットの定数からなり、反復kごとに異なる。記号
【数9】
は、反復ごとにsが変化するsの桁による、左ビット回転を示す。記号
【数10】
は、加算モジュロ2
32を示す。
【0050】
反復kに対して、内部状態(A
(k-1),B
(k-1),C
(k-1),D
(k-1))から開始して、
図1に従い、内部状態の値は以下のように処理される。
【0051】
【0052】
この関数μは、以下のように定義される。
【0053】
【0054】
非線形ブール関数Fkは、反復kに応じて、以下のように定義される。
【0055】
【0056】
第1の16の反復kは第1のラウンドを構成し、その後の16の反復は第2のラウンドを構成し、第3の16の反復は第3のラウンドを構成し、最後の16の反復は第4のラウンド兼最後のラウンドを構成する。記号
【数14】
は、論理演算OR、AND、XOR、およびNOTをそれぞれ示す。変数B、C、およびDは、32ビットのワードである。
【0057】
Ak,Bk,Ck,Dk,Mμ(k),Kkすべてが32ビットの符号なしの整数として扱われ得る。A64,B64,C64,D64は、最終的なハッシュの値の32ビットブロックである。k∈0...15であるMkは、求められる入力メッセージを構成し、最適化変数(原像変数)として用いられる。式(1)および(2)に示される変数yは、内部状態/データブロックA64,B64,C64,D64の和集合である。
【0058】
したがって、所与のハッシュの値yに対する原像要素xを求めることは、所与のA64,B64,C64,D64に対する原像変数Mkを求めることに相応する。
【0059】
図2は、反復kのためのハッシュ関数演算の適用を示す、SHA-1ハッシュ関数の対応する図形による表示である。各反復の内部状態は、5つの32ビットデータブロックA
k,B
k,C
k,D
k,E
kからなる。M
kは反復kのメッセージブロックを表し、K
kは反復kごとに異なる定数である。
【0060】
MD5およびSHA-1で使用される非線形ブール関数Fkは、以下のように定義される。
【0061】
【0062】
上記のブール関数のうちの2つのみがMD5およびSHA-1の両方で使用されるが、すべてのブール関数は、バイナリ変数
【数16】
に対する要素的なブール演算の合成である。
【0063】
ビットレベルでは、NOTの演算は、0と1との間の切り替え、すなわち、!1=0および!1=0に相当する。他の3つの要素的演算は、以下のように定義される(なお、
【数17】
は加算モジュロ2に対応する)。
【0064】
【0065】
左ビット回転演算および加算モジュロ演算は、以下の式で表すことができる。Nビット数xのs桁ごとの左シフト回転yは、以下のように定義される。
【0066】
【0067】
式中、記号「//」はフロアの分割を示し、記号「<<」および「>>」はそれぞれ左シフトおよび右シフトを示す。右シフトの回転は、y=x>>>s=(x>>s)|(x<<(N-s))=x//2s+x・2N-smod2Nと定義される。加算モジュロ2Nは、加算に続いて2N除算後の剰余を計算することを意味する。
【0068】
a.原像要素を決定するための方法
式(2)H({x,xfixed})≦yの左辺および右辺がバイナリ表記で表される場合、式(2)は、H({x,xfixed})の先頭ビットの数nZ(yの値によって事前定義される)が0に等しい場合に限り成立する。式(2)を満たす原像要素xを決定することは、nZが大きいほど困難である。(b)kで表すと、(バイナリ)有限シーケンスbのk番目のビットとされ、式(2)は、以下の方程式系で定式化することができる。
【0069】
(H({x,xfixed}))k=0,k=1,…,nZ (9)
【0070】
式(1)、H(x)=y、および式(9)は、バイナリ変数を有する整数混合計画問題、特に制約として線形方程式および/または線形不等式を含む制約を有する整数混合線形計画問題(MILP)としてさらに再定式化することができる。
【0071】
式(1)および(9)は、双一次関数を含み、バイナリ変数の実現可能な値に対する追加の制約なしの二次制約なしバイナリ最適化問題(QUBO)として定式化することもできる。MILPおよびQUBOの両方は、利用可能な古典的なソルバ(例えば、CPLEX、Gurobi、XPRESS、またはSCIP)を使用して解くことができるが、量子処理デバイスで解くことも可能である。特に、D-Waveなどの量子アニーリングデバイスを使用してQUBOを解くことができる。QUBOは、最適化変数のすべての可能な値の割り振りを含む離散探索空間を含むことができるので、可能な値の割り振りは並列に処理することができ(量子並列度)、原像要素を決定する際の実質的な高速化を達成することができる。
【0072】
式(1)および(9)などの方程式系を解く任意の顕著な加速は、特に、ブロックチェーンシステムなどのデータの完全性またはプルーフオブワークに依存するシステムのパフォーマンスを大幅に向上させる。現在、ノンス探索には10分の制限時間が許容されている。特にこの状況において、量子アニーリングデバイスは、必要な計算時間を数秒に短縮するのに役立ち得る。
【0073】
図3は、データ処理システムで実行される、暗号化ハッシュ関数の原像要素を決定するための方法の図形による表示を示す。
【0074】
最初のステップ10では、式(8)の暗号化ハッシュ関数(MD5またはSHA-1など)で定義される場合のハッシュ関数の演算F,…,Jが得られる。各ハッシュ関数演算F,…,Jについて、1つの対応するハッシュ関数関係または複数の対応するハッシュ関数関係が決定される(ステップ11)。各ハッシュ関数関係は方程式とすることができる。あるいは、複数の対応するハッシュ関数は、不等式の集合であり得る。方程式は、好ましくは低次元の補助的な(初期の)最適化問題を解くことによって決定することができる。
【0075】
ハッシュ関数関係は、ハッシュ関数演算から直接、または任意選択の中間ステップ11aを介して決定される。ステップ11aにおいて、ハッシュ関数演算F,…,JのNOT、AND、OR、および/またはXORを含む要素的演算が決定され、各要素的演算について、対応する要素方程式および/または要素不等式の集合が決定される。
【0076】
ハッシュ関数関係を決定した後、MILP、QUBOなどの最適化問題が決定される(ステップ12)。最適化問題は、ハッシュ関数関係から確立されたハッシュ関数の反復ごとの最適化方程式または最適化不等式(制約)の集合を含む。最適化問題は、ハッシュ関数の内部状態(MD5の場合Ai,Bi,Ci,Di)および(SHA-1の場合Ai,Bi,Ci,Di,Ei)))および原像変数Miを、最適化変数としてさらに含む。 初期内部状態(A0,B0,C0,…)および最終的内部状態(結果として得られるハッシュの値に対応する)は既知であり、最適化中固定されたままである。特定の反復に割り当てられた制約は、先行する反復に割り当てられた内部状態変数を含む。
【0077】
任意選択のステップ12aでは、制約および/または最適化変数の数を減らすことができる。これは、制約および/または最適化変数を事前に解くことによって達成することができる。
【0078】
最適化問題を決定した後、最適化問題が解かれ、最適化問題の最適化変数の集合(オプティマイザ)からハッシュ関数の原像要素が決定される(ステップ13)。
【0079】
図4は、データ処理システム20の図形による表示を示す。データ処理システム20は、古典的処理デバイス21を備える。さらに、データ処理システム20は、量子処理デバイス22、例えば量子アニーリングデバイスを備えてもよい。古典処理デバイス21と量子処理デバイス22との間でデータの授受が行われてもよい。特に、D-Wave量子アニーリングデバイスを使用する場合、D-Wave Python APIをデータ交換に使用することができる。ステップ10から12は、古典的処理デバイス21内で実行されることが好ましい。また、ステップ13は、古典的処理デバイス21内で実行されてもよい。しかし、ステップ13は、最適化問題が量子処理デバイス22において解かれるときに著しく加速される。
【0080】
b.要素的演算の要素的関係の決定
ステップ11aに従って要素的関係を決定することは、各要素的演算!x=y,x∧y=z,x∨y=z,および
【数19】
について(要素的)方程式または不等式の集合を確立することを含む。
【0081】
MILP制約に対する基本的なブール関数での方程式の削減を考慮する。
NOT演算は、バイナリ変数x,yについて、減算の演算を含む式に対応し、以下の等価性をもたらす。
【0082】
!x=y⇔y=1-x (10)
【0083】
より一般的には、(ブール関数である)他の要素的演算のうちの1つに対応する線形方程式系を決定するために、それぞれの初期の最適化問題が解かれる。以下では、
【数20】
は、要素的演算q、入力変数の集合
【数21】
および出力
【数22】
のためのジョイントベクトル
【数23】
として定義される。さらに、fは、実現可能な構成の集合を示す。決定される式は、以下の形式を有する。
【0084】
【0085】
式中、
【数25】
はバイナリ係数の補助ベクトルであり、bは連続係数であり、
【数26】
は連続的な係数のベクトルであり、
【数27】
はバイナリ変数のベクトルである。ベクトルの転置は(・)
Tで表される。特に、式(11)は
【数28】
において線形である。
【0086】
線形系は、以下を満たさなければならない。
【0087】
【0088】
初期の最適化問題によって決定されるべき求められる係数は、連続変数
【数30】
である。初期の最適化問題は、MILPとして定式化することができ、以下のように式(12)から求められる。まず、式(12)の付随
【数31】
の数N
aが選択される。元の問題における変数の数はN
xで示される。MILPは、補助制約の集合と目的の関数とからなる。実現可能な構成からの各ベクトルは、連続変数
【数32】
およびN
a、新しいバイナリ変数
【数33】
の補助制約のうちの1つをもたらす。
【0089】
【0090】
実行不可能な構成からの各ベクトル
【数35】
に対して、2
Naの新しい補助制約が追加される。
【0091】
【0092】
補助制約の数は指数関数的に増加するが、最も一般的なハッシュ関数は、少数の入力変数および出力変数のみを有する関数を有する。これは、MDハッシュ関数およびSHAハッシュ関数を含んでいた。総和は考慮しない。そのための対応する線形方程式を本発明者らが発明したからである。
【0093】
結果として、|f|+2
Na|f
*|の補助制約(|f|および|f
*|はそれぞれ実現可能な構成および実現不可能な構成の数である)およびN
x+N
a+1+|f|・N
aの変数のMILPが確立される。そのような均一のMILPは多くの解を有する(すべての係数に同じ数を乗算すると解がまた得られる)。したがって、
【数37】
の第1の係数c
1は1に設定され、追加の補助制約または対応するペナルティ項c
1=1をもたらす。
【0094】
次いで、初期の最適化問題は次のようになる。
【0095】
【0096】
実数値変数を含む
【数39】
およびバイナリ変数を含む
【数40】
を伴う。以下では、例として、要素的演算z=x∧yの要素方程式の決定について説明する。演算の実現可能な構成および実現不可能な構成は以下の通りである。
【0097】
【0098】
式(13)はcxx+cyy+cZz+caa=bに簡略化され、係数cx,cy,cZ,ca,bは次のように決定される。
【0099】
z=x∧y⇔(∃a∈{0,1}:cxx+cyy+czz+caa=b) (16)
【0100】
次いで、初期の最適化問題は次のようになる。
【0101】
【0102】
上記の初期の最適化問題は、最先端のソルバ(CPLEXなど)に直接移されてもよく、あるいは古典的なMINLP(不等式の制約なし)またはMILPに変換されてもよい。
【0103】
最適化問題は、要素的演算z=x∧yに対して、補助変数aを有する以下の要素方程式をもたらす。
【0104】
x+y-2z-a=0 (18)
【0105】
式(18)は、式(18)が成立するようにバイナリaが存在する場合、およびその場合にのみ、バイナリ変数x,y,zのトリプルは、z=x∧yを満たすという意味でz=x∧yに相当する。これは、以下の表(x,y,zの実行可能なトリプルに対する太字の点のゼロ)により分かるように保持されている。
【0106】
【0107】
式でz=x∧yを表す代わりに、要素的演算は不等式の集合で表すこともできる。
【0108】
z≦x,z≦y,z≧x+y-1 (19)
【0109】
重要なことに、x,yがバイナリである場合、およびzが式(19)を満たす場合は、zは別個の値0および1のみをとることができ、zがバイナリであることを明示的に必要としない。これにより、原像のMILP表現の複雑さ、および/またはマイニングの問題を低減することができる。
【0110】
これに対応して、さらなる要素的演算ORは、
x∨y=z (20)
であり、以下の要素方程式をもたらす。
【0111】
x+y-2z+a=0 (21)
【0112】
これは、以下の表を介して確認することができる。
【0113】
【0114】
(要素的)不等式の集合に関して、要素的演算ORは、以下のように表される。
【0115】
x≦z,y≦z,z≦x+y,z≦1 (22)
【0116】
x,yがやはりバイナリであり、zが式(22)を満たしている場合、zは、zがバイナリであることを明示的に要求することなく、別個の値0および1のみをとることができる。
【0117】
要素的関係XORが、次式の場合
【数42】
対応する要素方程式は、以下となり、
x+y-z-2a=0 (24)
【0118】
これは、以下の表によって確認することができる。
【0119】
【0120】
XOR演算は、不等式の集合によって表すこともできる。
【0121】
z≦x+y,
z≧x-y,
z≧y-x,
z≦2-x-y (25)
【0122】
上述したように、連続変数zがバイナリxおよびyを伴う以下の式(25)を満たす場合、依然、値0および1をとることしかできない。
【0123】
c.ハッシュ関数関係の決定
ステップ11で決定されるハッシュ関数関係は、要素的関係と同様に、方程式または不等式であり得る。方程式の場合、式は、式(15)のような形式で初期の最適化問題を解くことによって決定することができる。あるいは、各ハッシュ関数演算を構成する要素的演算に対応する不等式の集合から、不等式の集合を決定することができる。
【0124】
ハッシュ関数演算F(式(8.1)参照)の場合、
F(x,y,z)=(x∧y)∨(!x∧z) (26)
【0125】
x,y,zは32ビットワードB、C、およびDからの相互ビットに対応して、以下の式が決定される。
【0126】
x+3y+2z-6F’+2a0-3a1+2a2=0 (27)
【0127】
バイナリ変数F’およびバイナリ補助変数、a0、a1、およびa2を含む。要素不等式からハッシュ関数演算のための不等式の集合を決定するために、式(26)は次のように再定式化される。
【0128】
F(uF,vF)=uF∨vF (28)
【0129】
連続補助変数uF=(x∧y)およびvF=(!x∧z)を伴う、ただし、実際にはバイナリ値のみをとる。ハッシュ関数演算Fのための不等式の集合は、次のように決定される。
【0130】
uF≦x,uF≦y,uF≧x+y-1,
vF≦1-x,vF≦z,vF≧z-x,vF≧0,
vF≦F’,uF≦F’,F’≦uF+vF,F’≦1 (29)
【0131】
バイナリ変数F’を伴う。式(27)および式(29)は、最適化問題における制約、好ましくはMILPを決定するためにそれぞれ使用することができる。
【0132】
ハッシュ関数演算Gの場合、
G(x,y,z)=(x∧z)∨(y∧!z) (30)
【0133】
x,y,zは32ビットワードB、C、およびDからの相互ビットに対応して、以下の式が決定される。
【0134】
3x+2y-z-6G’-3a0+2a1+2a2=0 (31)
【0135】
バイナリ変数G’’およびバイナリ補助変数a0、a1、およびa2を含む。要素不等式からハッシュ関数演算のための不等式の集合を決定するために、式(30)は次のように再定式化される。
【0136】
G(uG,vG)=uG∨vG (32)
【0137】
連続した補助変数uG=(x∧z)およびvG=(y∧!z)を伴い、バイナリ値をとる。ハッシュ関数演算Gのための不等式の集合は、次のように決定される。
【0138】
uG≦x,uG≦z,uG≧x+z-1,
vG≦1-z,vG≦y,vG≧y-z,vG≧0,
vG≦G’,uG≦G’,G’≦uG+vG,G’≦1 (33)
【0139】
バイナリ変数G’を伴う。
【0140】
ハッシュ関数演算H(式(8.3)参照)の場合、
【数43】
【0141】
x,y,zは32ビットワードB、C、およびDからの相互ビットに対応して、以下の式が決定される。
【0142】
x+y+z-H’-2a=0 (35)
【0143】
バイナリ変数H’’およびバイナリ補助変数aを含む。要素不等式からハッシュ関数演算のための不等式の集合を決定するために、式(34)は次のように再定式化される。
【0144】
【0145】
連続した補助変数
【数45】
を伴い、バイナリ値をとる。ハッシュ関数演算Hのための不等式の集合は、次のように決定される。
【0146】
uH≦x+y,H’≦uH+z,
uH≧x-y,H’≧uH-z,
uH≧y-x,H’≧z-uH,
uH≦2-x-y,H’≦2-uH-z (37)
【0147】
バイナリ変数H’を伴う。
【0148】
ハッシュ関数演算Iの場合、
【数46】
x,y,zは32ビットワードB、C、およびDからの相互ビットに対応して、以下の式が決定される。
【0149】
x+2y-z-2I’+a0-4a1=0 (39)
【0150】
バイナリ変数I’’およびバイナリ補助変数a0、およびa1を含む。要素不等式からハッシュ関数演算Iのための不等式の集合を決定するために、式(38)は次のように再定式化される。
【0151】
【0152】
連続した補助変数ui=x∨!zを伴って、バイナリ値をとる。ハッシュ関数演算Iのための不等式の集合は、次のように決定される。
【0153】
x≦uI,1-z≦uI,uI≦x-z+1,uI≦1.
I’≦y+uI,I’≧y-uI,I’≧uI-y,I’≦2-y-uI, (41)
【0154】
バイナリ変数I’を伴う。
【0155】
ハッシュ関数演算Jの場合、
J(x,y,z)=(x∧y)∨(x∧z)∨(y∧z), (42)
【0156】
x,y,zは32ビットワードB、C、およびDからの相互ビットに対応して、以下の式が決定される。
【0157】
x+y+z-2J’-a=0, (43)
【0158】
バイナリ変数J’’およびバイナリ補助変数aを含む。要素不等式からハッシュ関数演算Jのための不等式の集合を決定するために、式(42)は次のように再定式化される。
【0159】
J(uJ,vJ)=uJ∨vJ (44)
【0160】
連続した補助変数pJ=(x∧y),qJ=(x∧z),uJ=(pJ∨qJ),およびvJ=(y∧z)を伴い、バイナリ値をとる。ハッシュ関数演算Jのための不等式の集合は、次のように決定される。
【0161】
pJ≦x,pJ≦y,pJ≧x+y-1,
qJ≦x,qJ≦z,qJ≧x+z-1,
vJ≦y,vJ≦z,vJ≧y+z-1,
pJ≦uJ,qJ≦uJ,uJ≦pJ+qJ,uJ≦1,
uJ≦J’,vJ≦J’,J’≦uJ+vJ,J’≦1 (45)
【0162】
バイナリ変数J’を伴う。式(43)および式(45)は、最適化問題における制約、好ましくはMILPを決定するためにそれぞれ使用することができる。
【0163】
ハッシュ関数演算が線形方程式系
【数48】
に作用するシフト演算で、式中
【数49】
が変数のベクトルで、
【数50】
はパラメータの固定ベクトル(最適化中の定数)である場合、対応する変数のリネーミングのみが行われる。
【0164】
【数51】
に関し、シフトされたベクトル
【数52】
は、右回転(x’=x>>>s)の場合は
【数53】
左回転(x’=x<<<s)の場合は
【数54】
で示す。したがって、シフト演算を適用した後の線形方程式系は、単なる別の再指数化線形方程式系
【数55】
である。
【0165】
ハッシュ関数演算が加算モジュロ演算である場合、a
i∈Zに作用する、すなわち、
【数56】
被加数b∈Zに関し、式(46)の各ビットの桁が考慮されるべきである。a
ij,b
jがa
iとbの第jビットである式
【数57】
それぞれを展開すると、式(46)は、以下に相当する。
【0166】
【0167】
式中Ciは、aiおよびbの第iビットのキャリービット数である。
【0168】
ハッシュ関数演算F,G,H,I,およびJのためのMILP制約のための決定されたハッシュ関数式から開始して、対応するQUBOペナルティ項を決定することができる、すなわち、
QF(F,B,C,D,A0,A1)=-2BC+2BD+4BF+4BA0+4BA1-4CF
-4CA0+4DA1+4FA0+4FA1-4B+4C-2D-2F-4A1+4
QG(G,B,C,D,A0,A1)=2BD-4BG+4BA0-2CD-4CG
+4CA1+4DA0-4DA1-4GA0-4GA1+2C+6G+4A1
QH=(H,B,C,D,A0,A1)=4BD-4BA0-4BA1-4CH-4CA0+4CA1
-4DA0-4DA1+4HA0-4HA1+2B+2C+2D+2H+4A0+4A1
QI=(I,B,C,D,A0,A1)=-2BD+4BA0+4BA1+4CI+4CA0
-4CA1-4DA0-4DA1+4IA0-4IA1-2C+2D-2I+8A1+2
QJ(J,B,C,D)=2BC+2BD-4BJ+2CD-4CJ-4DJ+6J (48)
【0169】
式(48)のQUBOペナルティは、対応する決定されたハッシュ関数方程式をMILP形式で二乗することによって直接得られるものよりも効率的な最適化を必ずしももたらさない。上記のQUBOペナルティは、例えば、より多くのバイナリ補助変数を含むことができる。
【0170】
一般に、離散的な変数が多いほど、使用される潜在可能性がある分岐の限定されたアルゴリズム探索木のサイズが大きくなるため、付加的なバイナリ変数は、回避するべきである。一方、最先端のMILPソルバは、パフォーマンスを著しく損なうことなく、数千の連続変数を許容することができる。
【0171】
さらに、1つのハッシュ関数演算に対して1つの方程式の代わりに不等式の集合を使用する場合、実行可能な不等式の集合を作成する異なる代替的な方法がある。
【0172】
d.最適化問題の決定
ハッシュ関数関係を決定した後、ステップ12に従って最適化問題を決定する。この目的のために、暗号化ハッシュ関数の各反復内でのハッシュ関数関係は、
図1または2に示すように、ハッシュの値を計算するときに、それらの(時系列の)順序に対応して結合される。
【0173】
MD5の場合、および、初期内部状態のデータブロック(内部状態変数)B
0,C
0,およびD
0から始まって、ハッシュ関数関係として方程式を使用するとき、最適化問題の第1の制約は、
【数59】
【0174】
B
0,C
0,D
0,F
1および補助変数ベクトル
【数60】
を、それぞれ式(27)における変数x,y,z,F
’,および(a
0,a
1,a
2)について(第1ラウンドの)ハッシュ関数演算子Fの式に挿入することによって、決定される。続いて、
図1に従って、原像変数M
μ(1)および定数K
1を用いたモジュラ加算F
1=F(B
0,C
0,D
0)が実行される。式(47)の対応するハッシュ関数関係にF
1、M
μ(1)、およびK
1を挿入し、方程式の左辺にあるすべての項を配置し、制約
Σ(F
1,A
0,M
μ(1),K
1,FM
1,ξ
1,1)=0 (50)
は、補助変数ξ
1,1を伴って決定される。これに続いて、得られた項FM
1がシフトされて、B
0に追加され、次の制約が得られる。
【0175】
【0176】
これは、補助変数ξ1,2を伴う。結果として得られるモジュラ加算の項は、次の反復に割り当てられる内部状態変数B1に対応する。内部状態変数B0,C0,およびD0を、次の反復に割り当てられるそれぞれの内部状態変数C1,D1,およびA1に割り当てることを表すために、さらなる制約が決定される。
【0177】
要約すると、最初の反復に割り当てられた以下の制約が決定される。
【0178】
【0179】
後続の反復に割り当てられる制約は同様に決定され、以下の制約の集合(ここでは最適化方程式)が得られる。
【0180】
【0181】
式(53)は、式(53)のすべての制約を満たす実現可能な解を決定する制約充足問題(CSP)をもたらす。特に、A64、B64、C64、D64は、ハッシュの値yの一部であり、k=1、...、16の場合のMkは、ハッシュ関数の引数の一部(原像要素)である。
【0182】
一般に、変数A0,B0,C0,D0,A64,B64,C64,D64,およびKkfork=1,…,64は既知であり、最適化の最中固定される。残りの変数は、最適化変数を構成する。
【0183】
最適化方程式の場合、すべてのMkは事前に未知であり、A64、B64、C64、D64は固定である。
【0184】
最適化不等式(式(9)を参照)の場合、Mkの一部(例えば、k=3、...、16)は固定され、残りのもの(例えば、M1、M2)のみが未知の変数である。さらに、A64、B64、C64、D64の各々を有限シーケンスとして扱う場合、例えば、A64は0ビットシーケンスに固定され、残りの変数は任意の値をとることができる。
【0185】
次いで、最適化問題、すなわち制約(式(53))のMILPが解かれ、最適化変数の最適値が得られる。メッセージブロックMkの最適値は、暗号化ハッシュ関数MD5の原像要素の1つを構成する。SHA-1および他の暗号化ハッシュ関数の場合、制約は同様に決定することができる。
【0186】
任意選択の事前に解くステップ12aでは、制約および/または最適化変数の数を減らすことができる。制約を解析することにより、全体として最適化問題を解く前に、一部の最適化変数の値を決定することができる。例えば、以下を含む制約で開始すると、
【数64】
【0187】
関係x+y=1-z≦1を決定することができ、このことから、x+y=1およびz=0の関係を決定することができる。続いて、より少ない最適化変数/制約を伴う修正された制約の集合が決定される。
【0188】
【0189】
事前に解くことはまた、SCIPの中のPaPILOといった事前に解く際のライブラリーを使用することによって、行うことができる。
【0190】
最適化問題をMILPとして決定して解く代わりに、最適化問題をQUBO問題として決定して解くこともできる。特に、MILP(式(53)および(54))をQUBOに変換することができる。これに対して、制約(式(53))がそれぞれ二乗され、合計され、その結果、QUBO目的関数fQUBOが最小化される。
【0191】
【0192】
最適化問題は、利用可能なソルバを使用して解くこともできる。MILPおよびMINLPは、例えばCPLEX、Gurobi、Fico XPRESS、ParaSCIP、FiberSCIP、および/またはオープンソースSCIPを使用して古典的に解くことができる。QUBO問題は、一般的なアニーリングソルバ、例えば、デジタルアニールおよび/またはSimulated Bifurcation Machineを使用して、古典的に解決することができる。
【0193】
量子処理デバイスを用いてQUBO問題を解く場合、量子アニーリングデバイス(例えば、D-Waveアニールデバイス)を用いることができる。この目的のために、QUBO目的関数fQUBOが量子アニーリングデバイスに伝達される。次に、量子アニーリングデバイスでQUBOが解かれ、最適化変数、特に原像変数Mkの最適値の最適値割り当てが得られる。これにより、暗号化ハッシュ関数の原像要素を決定することができる。
【0194】
本明細書、図および/または特許請求の範囲に開示された特徴は、単独でまたはそれらの様々な組み合わせで解釈される、様々な実施形態の実現のための材料であり得る。