数学 では、実数 aとbが与えられたとき、対数log b aはb x = aとなる数xです。同様に、任意の群Gにおいて、すべての整数kに対して累乗b k を定義でき、離散対数log b aはb k = aとなる整数kです。数論では、より一般的に使用される用語はインデックスです。rがm の原始根で gcd ( a , m ) = 1 である場合、r x ≡ a (mod m )に対してx = ind r a (mod m ) (「m を法とした底 rに対するaのインデックス」と読みます)と書くことができます。
離散対数は、いくつかの特殊なケースでは迅速に計算できます。しかし、一般的に離散対数を計算する効率的な方法は知られていません。暗号学において、離散対数問題の計算の複雑さとその応用は、ディフィー・ヘルマン問題で初めて提案されました。エルガマルなどの公開鍵暗号のいくつかの重要なアルゴリズムは、慎重に選択されたグループ上の離散対数問題 (DLP) には効率的な解がないという困難性仮定に基づいてセキュリティを構築しています。 [1]
意味
G を任意の群とする。群演算を乗算で表し、単位元を 1 とする。b をGの任意の元とする。任意の正の整数kに対して、式b k はbとそれ自身とのk回の積を表す: [2]
同様に、b − k はb −1とそれ自身とのk回の積を表します。k = 0 の場合、k乗は恒等式です: b 0 = 1。
aもGの元であるとします。方程式b k = aを解く整数k は、 b を底とするaの離散対数(または、この文脈では単に対数)と呼ばれます。 k = log b aと書きます。
例
10の累乗
10の累乗は
このリストの任意の数aについて、log 10 aを計算できます。たとえば、log 10 10000 = 4、log 10 0.001 = −3 です。これらは離散対数問題の例です。
実数のその他の 10 を底とする対数は、非整数指数を伴うため、離散対数問題の例ではありません。たとえば、方程式 log 10 53 = 1.724276… は、10 1.724276… = 53 を意味します。整数指数は積と逆数を使用して任意のグループで定義できますが、この 1.724276… などの任意の実数指数には、指数関数などの他の概念が必要です。
群論的に言えば、 10 の累乗は乗法の下で巡回群 Gを形成し、 10 はこの群の生成元です。離散対数 log 10 aはG内の任意のaに対して定義されます。
固定実数の累乗
同様の例が、任意の非ゼロの実数bにも当てはまります。 べき乗は、非ゼロの実数の乗法部分群 G = {…, b −3 , b −2 , b −1 , 1, b 1 , b 2 , b 3 , …} を形成します。 Gの任意の元aについて、log b aを計算できます。
モジュラー演算
離散対数の最も単純な設定の 1 つは、群Z p ×です。これは、素数pを法とする乗算の群です。その要素はpを法とする非ゼロ の合同類であり、 2 つの要素の群積は、要素の通常の整数乗算とそれに続く p を法とする縮約によって得られます。
このグループ内のいずれかの数のk乗は、そのk乗を整数として求め、それをpで割った後の余りを求めることで計算できます。関係する数が大きい場合、計算中にpを法として複数回減らす方が効率的です。使用する特定のアルゴリズムに関係なく、この操作はモジュラー指数法と呼ばれます。たとえば、Z 17 × を考えます。このグループで3 4を計算するには、 3 4 = 81 を計算し、次に 81 を 17 で割って、余り 13 を取得します。したがって、グループZ 17 ×では3 4 = 13 です。
離散対数は、まさに逆演算です。たとえば、方程式 3 k ≡ 13 (mod 17) を考えてみましょう。上記の例から、1 つの解はk = 4 ですが、これが唯一の解ではありません。フェルマーの小定理からわかるように、3 16 ≡ 1 (mod 17) であるため、 nが整数であれば、3 4 +16 n ≡ 3 4 × (3 16 ) n ≡ 13 × 1 n ≡ 13 (mod 17) となります。したがって、この方程式には、4 + 16 nという形式の解が無限に存在します。さらに、16 は 3 m ≡ 1 (mod 17)を満たす最小の正の整数mであるため、これらが唯一の解です。同様に、すべての可能な解の集合は、 k ≡ 4 (mod 16)という制約によって表現できます。
アイデンティティの力
b が群Gの単位元 1 である特殊なケースでは、離散対数 log b aは 1 以外のaに対しては定義されず、すべての整数kはa = 1に対して離散対数になります。
プロパティ
べき乗は通常の代数的恒等式b k + l = b k b lに従う。[2]言い換えれば、関数
f ( k ) = bで定義されるk は、 bによって生成されるGの部分群Hへの加算による整数Zからの群準同型である。Hのすべてのaに対して、 log b aが存在する。逆に、Hに含まれないaに対しては、 log b a は存在しない。
Hが無限大の場合にはlog b aも一意となり、離散対数は群同型となる。
一方、Hがn次の有限数である場合、log b aはnを法とする合同性までのみ一意であり、離散対数は群同型となる。
ここで、Z n はnを法とする整数の加法群を表します。
通常の対数に対するよく知られた底変換公式は有効である。cがHの別の生成元である場合、
アルゴリズム
離散対数問題は計算上は扱いにくいと考えられています。つまり、一般的に離散対数を計算するための効率的な古典的なアルゴリズムは知られていません。
有限群Gで log b a を計算する一般的なアルゴリズムは、目的のa が見つかるまでb をk の累乗でどんどん大きくしていくことです。このアルゴリズムは、試行乗算と呼ばれることもあります。実行時間は群Gのサイズに比例し、したがって群のサイズの桁数に比例します。したがって、これは指数時間のアルゴリズムであり、小さな群Gでのみ実用的です。
より洗練されたアルゴリズムも存在しますが、通常は整数因数分解の類似アルゴリズムからヒントを得ています。これらのアルゴリズムは単純なアルゴリズムよりも高速に実行され、その一部はグループの大きさの平方根に比例し、したがってグループの大きさの桁数の半分で指数関数的になります。ただし、いずれも多項式時間(グループの大きさの桁数) で実行されません。
- 小さな一歩、大きな一歩
- 関数フィールドふるい
- インデックス計算アルゴリズム
- 数フィールドふるい
- ポリーグ・ヘルマンアルゴリズム
- 対数に対するポラードのローアルゴリズム
- ポラードのカンガルーアルゴリズム(別名ポラードのラムダアルゴリズム)
ピーター・ショアによる効率的な量子アルゴリズムが存在する。[3]
効率的な古典的アルゴリズムは、特定の特殊なケースでも存在します。たとえば、加算によるpを法とする整数のグループでは、 b k の累乗はbkの積になり、等式は整数のp を法とする合同を意味します。拡張ユークリッドの互除法はk を素早く見つけます。
Diffie-Hellmanでは、素数p を法とする巡回群が使用され、群の位数 ( p −1) が十分に滑らかである場合、つまり大きな素因数を持たない場合、Pohlig-Hellman による離散対数の効率的な計算が可能になります。
整数因数分解との比較
離散対数の計算と整数因数分解は異なる問題ですが、いくつかの共通する特性があります。
- どちらも有限アーベル群の隠れた部分群問題の特殊なケースである。
- どちらの問題も難しいようです(非量子コンピュータでは効率的なアルゴリズムは知られていません)。
- どちらの問題も量子コンピュータ上で効率的なアルゴリズムが知られている。
- ある問題からのアルゴリズムは他の問題にも適応されることが多く、
- 両方の問題の難しさを利用して、さまざまな暗号システムを構築してきました。
暗号化
離散対数の計算が明らかに難しい群が存在する。いくつかのケース(例えば、群Z p ×の大きな素数位数部分群)では、最悪のケースに対する効率的なアルゴリズムが知られていないだけでなく、平均ケースの計算量は、ランダムな自己還元性を使用して最悪のケースとほぼ同じくらい難しいことが示される。[4]
同時に、離散累乗の逆問題は難しくありません(たとえば、を二乗する累乗法を使用して効率的に計算できます)。この非対称性は、整数因数分解と整数乗算の間の非対称性と類似しています。両方の非対称性(およびその他の一方向関数)は、暗号化システムの構築に利用されてきました。
離散対数暗号 (DLC) における群Gの一般的な選択肢は、巡回群Z p × (例: ElGamal 暗号化、Diffie-Hellman 鍵交換、デジタル署名アルゴリズム) と有限体上の楕円曲線の巡回部分群(楕円曲線暗号を参照) です。
離散対数問題を解くためのアルゴリズムは一般には知られていないが、数体ふるいアルゴリズムの最初の3つのステップは、有限対数を求めるGの特定の要素ではなく、グループGにのみ依存する。特定のグループに対してこれらの3つのステップを事前に計算することにより、そのグループ内の特定の対数を取得するには、最初の3つのステップよりもはるかに計算コストの少ない最後のステップを実行するだけでよい。[5]
多くのインターネットトラフィックは、1024ビット以下の順序を持つ少数のグループ、例えばRFC 2409で指定されたオークリー素数の順序を持つ巡回グループのいずれかを使用していることが判明しました。 [6] Logjam攻撃はこの脆弱性を利用して、512ビットの素数順序を持つグループ、いわゆる輸出グレードの使用を許可するさまざまなインターネットサービスを侵害しました。[5]
Logjam 攻撃の著者らは、1024 ビット素数の離散対数問題を解くために必要なはるかに困難な事前計算は、米国国家安全保障局(NSA)などの大規模な国家情報機関の予算内で済むと見積もっています。Logjam 攻撃の著者らは、NSA が現在の暗号の多くを解読できるというNSA の漏洩文書の主張の背景には、広く再利用されている 1024 DH 素数に対する事前計算があると推測しています。[5]
参照
参考文献
- ^ Menezes, AJ; van Oorschot, PC; Vanstone, SA「第 8.4 章 ElGamal 公開鍵暗号化」(PDF)。応用暗号化ハンドブック。CRCプレス。
- ^ ab Lam; Shparlinski; Wang; Xing (2001). Lam, Kwok-Yan; Shparlinski, Igor; Wang, Huaxiong; Xing, Chaoping (編). 暗号と計算数論. コンピュータサイエンスと応用論理の進歩 (第 1 版). バーゼル大学図書館. pp. 54–56. doi :10.1007/978-3-0348-8295-8. eISSN 2297-0584. ISBN 978-3-7643-6510-3. ISSN 2297-0576.
- ^ Shor, Peter (1997). 「量子コンピュータによる素因数分解と離散対数の多項式時間アルゴリズム」SIAM Journal on Computing . 26 (5): 1484–1509. arXiv : quant-ph/9508027 . doi :10.1137/s0097539795293172. MR 1471990. S2CID 2337707.
- ^ Blake, Ian F .; Garefalakis, Theo (2004-04-01). 「離散対数と Diffie–Hellman 問題の複雑さについて」Journal of Complexity . Harald Niederreiter 記念論文集、コーディングと暗号化に関する特別号。20 (2): 148–170. doi : 10.1016/j.jco.2004.01.002 . ISSN 0885-064X.
- ^ abc Adrian, David; Bhargavan, Karthikeyan; Durumeric, Zakir; Gaudry, Pierrick; Green, Matthew; Halderman, J. Alex; Heninger, Nadia ; Springall, Drew; Thomé, Emmanuel; Valenta, Luke; VanderSloot, Benjamin; Wustrow, Eric; Zanella-Béguelin, Santiago; Zimmermann, Paul (2015 年 10 月)。「不完全な前方秘匿性: Diffie-Hellman が実際に失敗する理由」(PDF)。
- ^ Harkins, D.; Carrel, D. (1998 年 11 月). 「インターネット キー交換 (IKE)」.ネットワーク ワーキング グループ. doi :10.17487/RFC2409. ISSN 2070-1721.
- ローゼン、ケネス H. (2011)。初等数論とその応用(第 6 版)。ピアソン。p. 368。ISBN 978-0321500311。
- Weisstein, Eric W. 「離散対数」。MathWorld。Wolfram Web 。 2019年1月1日閲覧。
さらに読む
- リチャード・クランドール、カール・ポメランス。第 5 章「素数: 計算の観点」、第 2 版、Springer。
- スティンソン、ダグラス・ロバート(2006年)。 『暗号:理論と実践』(第3版)。ロンドン、イギリス:CRC Press。ISBN 978-1-58488-508-5。
