コンピュータサイエンスにおいて、格子問題は格子と呼ばれる数学的対象に関連する最適化問題の一種です。このような問題の難解さは、安全な格子ベースの暗号システムの構築において中心的な役割を果たします。格子問題は、平均ケースで困難であることが示されているNP困難問題の一例であり、暗号アルゴリズムの安全性のテストケースとなります。さらに、最悪ケースで困難な格子問題の中には、極めて安全な暗号方式の基礎として使用できるものもあります。このような方式で最悪ケースの困難性を利用することで、量子コンピュータに対しても非常に安全である可能性の高い数少ない方式の一つとなります。このような暗号システムへの応用では、ベクトル空間上の格子(多くの場合)が用いられます。)または無料モジュール(多くの場合))は一般的に考えられています。
以下のすべての問題については、(他のより具体的な入力に加えて)ベクトル空間Vの基底とノルムNが与えられていると仮定します。通常考慮されるノルムはユークリッドノルムL 2です。ただし、他のノルム( L pなど)も考慮され、さまざまな結果に現れます。[ 1 ]
この記事全体を通して、格子L内の最短の非ゼロベクトルの長さを表す。すなわち、

SVPでは、格子Lに対してベクトル空間Vの基底とノルムN(多くの場合L² )が与えられ、 Nで測ったV内の最短非ゼロベクトルをL内で見つける必要があります。言い換えれば、アルゴリズムは、次の条件を満たす非ゼロベクトルvを出力する必要があります。以下では、問題のサイズはベクトル空間Vの次元nで指定されます。
γ近似版SVPγでは、長さが最大でゼロでない格子ベクトルを見つける必要がある。与えられた .
問題の正確なバージョンは、ランダム化還元に対してのみNP困難であることが知られています。[ 2 ] [ 3 ]対照的に、一様ノルム に関する対応する問題はNP困難であることが知られています。[ 4 ]
ユークリッドノルムの下でのSVPの正確なバージョンを解くには、いくつかの異なるアプローチが知られており、それらは2つのクラスに分類できます。超指数時間を必要とするアルゴリズム() そしてメモリ、および指数関数的な時間と空間の両方を必要とするアルゴリズム(格子次元における ) 。前者のアルゴリズム群には、特に格子列挙[ 5 ] [ 6 ] [ 7 ]およびランダムサンプリング削減[ 8 ] [ 9 ]が含まれ、後者には格子篩分け[ 10 ] [ 11 ] [ 12 ]格子のボロノイセルの計算[ 13 ] [ 14 ]および離散ガウスサンプリング[ 15 ]が含まれる。正確な SVP を解くためのアルゴリズムが単一指数時間 ()そして、格子次元に対して多項式的に増加するメモリが必要となる。[ 16 ]
γ近似版SVPγを解くためにユークリッドノルムの場合、最もよく知られているアプローチは格子基底縮小法を用いることに基づいている。大きな、 Lenstra–Lenstra–Lovász (LLL) アルゴリズムは、格子次元の多項式時間で解を見つけることができます。値が小さい場合ブロックKorkine-Zolotarevアルゴリズム(BKZ)[ 17 ] [ 18 ] [ 19 ]が一般的に使用されており、アルゴリズムへの入力(ブロックサイズ)は)は時間計算量と出力品質を決定します。近似係数が大きい場合小さなブロックサイズで十分であり、アルゴリズムはすぐに終了します。より大きな十分短い格子ベクトルを見つけるには、 が必要であり、アルゴリズムは解を見つけるのに時間がかかります。BKZ アルゴリズムは内部的に、サブルーチンとして正確な SVP アルゴリズムを使用します (最大次元の格子で実行)。)、そしてその全体的な複雑さは、次元におけるこれらのSVP呼び出しのコストと密接に関連している。 .
GapSVP β問題は、最短ベクトルの長さが最大で である SVP のインスタンスを区別することから成ります。またはより大きい、そこで格子の次元の固定関数となる可能性がある格子の基底が与えられた場合、アルゴリズムは、または他のプロミス問題と同様に、このアルゴリズムは他のすべてのケースでエラーを起こすことが許容されます。
この問題の別のバージョンは、関数 ζ と γ に対する GapSVP ζ,γです。アルゴリズムへの入力は基底です。そして数グラム・シュミット直交化におけるすべてのベクトルの長さが少なくとも 1 であり、そしてそれは、そこでは次元です。アルゴリズムは、 の場合に受け入れる必要があります。、そして拒否する場合。大規模な場合(つまり )、この問題は GapSVP γと同等です。なぜなら[ 20 ] LLL アルゴリズムを使用した前処理により、2 番目の条件 (したがって、 冗長です。

CVPでは、格子Lに対してベクトル空間Vの基底と計量M(多くの場合L2)が与えられ、 Vに含まれるが必ずしもLに含まれるとは限らないベクトルvも与えられる。Mによって測定されたvに最も近いL内のベクトルを見つけることが求められる。-近似バージョン CVP γでは、最大距離にある格子ベクトルを見つける必要があります。
最も近いベクトル問題は、最短ベクトル問題の一般化です。CVP γ (以下で定義)のオラクルが与えられた場合、オラクルにいくつかのクエリを実行することでSVP γを解くことができることは容易に示せます。 [ 21 ] CVP γオラクルを呼び出して0 に最も近いベクトルを見つけることで最短ベクトルを見つけるという素朴な方法は、0 自体が格子ベクトルであり、アルゴリズムが 0 を出力する可能性があるため機能しません。
SVP γからCVP γへの還元は次のようになります。SVP γへの入力が格子基底であると仮定します。基礎を考慮するそしてCVP γ ( B i , b i )によって返されるベクトルを とします。主張は、セット内の最短ベクトルがは、与えられた格子の中で最短のベクトルです。
Goldreichらは、SVPの硬度がCVPの硬度と同じであることを示した[ 22 ] 。AroraらはPCPツールを用いて、CVPは係数の範囲内で近似するのが難しいことを示した。ない限り[ 23 ] Dinurらは、NP硬度の結果を示すことでこれを強化した。のために[ 24 ]
CVP のアルゴリズム、特に Fincke と Pohst の変種[ 6 ]は、多入力多出力 ( MIMO ) 無線通信システム (符号化信号と非符号化信号の両方) におけるデータ検出に使用されています。[ 25 ] [ 13 ]この文脈では、多くの CVP ソリューションで内部的に使用される半径のため、球体復号と呼ばれています。 [ 26 ]
これは搬送波位相GNSS(GPS)の整数曖昧性解決の分野に適用されています。[ 27 ]この分野ではLAMBDA法と呼ばれています。同じ分野では、一般的なCVP問題は整数最小二乗法と呼ばれています。
この問題はGapSVP問題に似ています。GapSVPβの場合、入力は格子基底とベクトルで構成されます。、そしてアルゴリズムは、以下のいずれかが成り立つかどうかを答える必要がある。
反対の条件は、最も近い格子ベクトルが距離にあることです。そのため、 Gap CVPという名前が付けられました。
この問題は、任意の近似係数に対して、自明にNPに含まれる。
シュノールは1987年に、決定論的多項式時間アルゴリズムで問題を解決できることを示した。[ 28 ] Ajtaiらは、確率的アルゴリズムがわずかに優れた近似係数を達成できることを示した。[ 10 ]
1993年、バナシュチクはGapCVP nが[ 29 ] 2000年に、GoldreichとGoldwasserは、NPとcoAMの両方の問題を提起する。[ 30 ] 2005年にアハロノフとレゲフは、ある定数に対して、問題はは[ 31 ]
n次元の格子Lが与えられたとき、アルゴリズムはn個の線形独立な値を出力しなければならない。となることによって右辺はすべての基底を考慮している格子の。
では-近似版では、次元nの格子 L が与えられた場合、 n個の線形独立なベクトルを見つける必要がある。長さ、そこではの連続する最小値 .
この問題はCVPに似ています。格子からの距離が最大でアルゴリズムは、それに最も近い格子ベクトルを出力する必要がある。
格子の基底が与えられた場合、アルゴリズムは任意のベクトルから格子までの最大距離(または一部のバージョンではその近似値)を見つける必要がある。
入力基底が短いベクトルで構成されている場合、多くの問題が容易になります。最短基底問題 (SBP) を解くアルゴリズムは、格子基底が与えられた場合、、同等の基底を出力する最長ベクトルの長さはできるだけ短く。
近似版SBPγ問題は、最長ベクトルが最大で最短基底における最長ベクトルよりも倍長い。
問題の平均ケースの困難性は、ほとんどの暗号方式のセキュリティ証明の基礎となる。しかし、実験的証拠によれば、ほとんどのNP困難問題はこの性質を欠いており、おそらく最悪ケースの困難性しか持たない。多くの格子問題は平均ケースの困難性が予想または証明されており、暗号方式の基礎となる魅力的な問題群となっている。さらに、一部の格子問題の最悪ケースの困難性は、安全な暗号方式を作成するために利用されてきた。このような方式で最悪ケースの困難性を利用することで、量子コンピュータに対しても非常に安全である可能性の高い、ごく少数の方式の一つとなっている。
上記の格子問題は、「良い」基底が与えられれば簡単に解くことができます。格子縮小アルゴリズムは、格子の基底が与えられたときに、比較的短く、ほぼ直交するベクトルからなる新しい基底を出力することを目的としています。Lenstra –Lenstra–Lovász格子基底縮小アルゴリズム(LLL)は、この問題に対する初期の効率的なアルゴリズムであり、ほぼ縮小された格子基底を多項式時間で出力できました。[ 33 ]このアルゴリズムとその後の改良版は、いくつかの暗号方式を破るために使用され、暗号解読における非常に重要なツールとしての地位を確立しました。実験データに対するLLLの成功により、格子縮小は実際には簡単な問題であるという考えが生まれましたが、1990年代後半に、 Ajtaiの結果から始まる格子問題の困難性に関するいくつかの新しい結果が得られたことで、この考えは疑問視されました。[ 2 ]
Ajtai は、その画期的な論文で SVP 問題が NP 困難であることを示し、いくつかの格子問題の最悪ケースの複雑さと平均ケースの複雑さの間にいくつかの関連性があることを発見しました。 [ 2 ] [ 3 ]これらの結果に基づいて、Ajtai とDwork は、SVP のあるバージョンの最悪ケースの困難性のみを使用して安全性を証明できる公開鍵暗号システムを作成しました。 [ 34 ]これにより、最悪ケースの困難性を使用して安全なシステムを構築した最初の結果となりました。[ 35 ]