離散対数問題と公開鍵暗号
概要
離散対数問題に基づく暗号アルゴリズムは古くから研究されてきたが、公開鍵暗号が世間に広く利用されるようになったのは素因数分解に基づく RSA を待たなければならなかった。しかし旧来の欠点を克服した DSA や、楕円曲線への応用によって、近年では RSA に比べてより高いパフォーマンスを得られるようになった。このページでは離散対数問題と、剰余環に基づく公開鍵暗号アルゴリズムについて解説する。
Table of Contents
計算困難問題
計算複雑性の文脈ではたかだか多項式時間 (polynomial time) で解くことのできるアルゴリズムは効率的であり、そのようなアルゴリズムは暗号理論において安全ではないと認識されている。
アルゴリズムの具体的な計算量はビット単位を手作業で計算したステップ数で数えることができる。例えば
- 加法:
- 乗法:
- 除法:
で商 と剰余を求めるとき
の時間で表すことができる。
パラメータとして整数
現代の暗号で広く実用されている公開鍵暗号技術は指数時間アルゴリズムの特性を持つ (と考えられている) 離散対数問題と素因数分解に基づいている。これら以外にも歴史的に暗号システムの基礎としての計算困難問題がいくつか提案されている [HoECC05]。
- ナップザック問題 (部分集合合計問題): 要素の合計がある整数
と等しくなるように、ある整数集合の部分集合を決定する。最初に提案された低密度の問題は多項式時間で破られている。まだ破られていない問題もいくつか存在するが、今のところそれほど適用されてはいない。 - NTRU 暗号および署名: ある有限体
の多項式環で を法とするスパース多項式の回復問題に基づいたシステムで、格子に転用して最短ベクトル問題に変換することができる。処理は非常に高速であるためセキュリティを確保するパラメータの選択に関心が持たれている。 - 多変量二次方程式 (MQ): 一般的な MQ 問題は NP 完全だが、暗号システムを構築するために提案された多くはそうではない。隠しフィールド方程式 (HFE; hidden field equations) は計算能力が進歩した今でも安全と考えられており、HFE の証明可能な変種を見つけ出す分野は依然として活発に研究されている。
離散対数問題や素因数分解は強力な量子コンピュータの仮定の下で両者とも既に多項式時間で解くアルゴリズムが存在している。現代のネットワークで DH や ECDSA、RSA といった公開鍵暗号アルゴリズムがもはや安全ではないとなれば世界的に大きな混乱を招くことが予想されるため、NP 困難などの量子計算耐性を持つ計算困難問題に基づく暗号アルゴリズムの研究が進められている。
離散対数問題
素数位数 (prime order)
長らく乗法群 (特に剰余環; 剰余環自体は加法群でも乗法群でもある) を用いて研究されてきた経緯から、この離散対数
一般的に離散対数問題に基づく暗号システムでは乗法群として巡回群 (cyclic group) が用いられており、公開鍵や秘密鍵、署名の値は
乗法群に基づく離散対数問題
冪剰余による乗法群
被除数
冪剰余の乗算の剰余は、その被除数に対する乗算の剰余と等しい。
正の整数における
-
のとき ( ) より であることから単位元は と考えることができる。しかし より 0 に対して 1 は単位元となり得ない。従って 0 は除外する必要があり である。 - 位数
がある整数 と の積 で表されるとき、 と は共に群の要素でありながら となり群 に属さない像となるため乗法が閉じていないことになる。これを回避するために位数 を素数とすると都合がよい ( と素でない要素を除外してもよいがデータサイズに対して要素数が減るので効率が悪い)。
乗法による巡回群は直感的に Fig 1. のような時計盤に似た構成と考えることができる。
一般に以下の条件を満たす乗法群の DLP を現在のコンピュータで解くのは現実的ではないと考えられている。
-
が 1024 ビット以上の素数であり、 の約数の中に に近いサイズの素数 が存在する。 -
に対して は となる値である。
冪剰余の効率的な計算
乗法群は乗算を繰り返すことでべき乗を計算することができる。ここで
例えば
このように冪剰余の計算式は指数が巨大な数であっても効率的に計算することができる。実装向けのアルゴリズムではモンゴメリ冪乗 (Montgomery modular multiplication) などがある。
乗法群の生成元
位数
-
(単位元 ) である。 -
かつ を満たす最初の 以降の値は繰り返しとなり新しい元は出現しない。したがって と表すことができる。( ) より を満たす最小の は である。
つまり、ある元
離散対数問題を扱うときの生成元
Diffie-Hellman 鍵共有
Diffie-Hellman 鍵共有 (DH key exchange) は乗法群を用いた離散対数問題に基づいて end-to-end で鍵を交換するアルゴリズム。1976 年に提案された。A と B とが安全ではない通信チャネルを用いて秘密の鍵を共有することができる。鍵が大きく計算量も多いが現在でも TLS で使われている。
この DH 鍵共有のアルゴリズムはしばしば Fig 2. のようなインクの混ぜ合わせによって双方で共通の色を作る操作で説明されている。
-
を 2 者間で取り決める (これらは平文で公開されていても良い)。 - A: 秘密鍵
を決め、公開鍵 を計算して B に渡す。 - B: 秘密鍵
を決め、公開鍵 を計算して A に渡す。 - A: 秘密鍵
と B の公開鍵 を使って を計算する。 - B: 秘密鍵
と A の公開鍵 を使って を計算する。 - A と B は
という共通の値を共有した。
一般に DH 鍵共有ではセキュリティを確保するためにモジュラス
DH 鍵共有は攻撃者の盗聴に対しては耐性を持つが、交換する公開鍵のすり替えによって中間者攻撃が可能である。このような Anonymous Diffie-Hellman は安全ではなく、通常は証明書付きの公開鍵を使用して通信相手の身元を検証できるように設計しなければならない。
ephemeral-DH と static-DH があり、static-DH は前方秘匿性 (forward secrecy; ある鍵共有セッションが解読されたとしても過去のセッションのいずれも解読できない性質) を持たないため TLS では非推奨 (あるいは廃止) とされている。
ElGamal 暗号
ElGamal 暗号は 1984 年に考案された CDH 仮定に基づいた公開鍵暗号方式。公開鍵で暗号化した暗号文は秘密鍵でしか復号化できず、同じ平文に対して毎回異なる暗号文が生成される。
- 構成: 大きな素数
と原始根 を選択して暗号スキームのパラメータとして公開する。 - 鍵生成: 秘密鍵
をランダムに選択し、 を公開鍵とする。 - 暗号化: 平文
の暗号化を考える。まずランダムに を選択し、暗号スキームのパラメータ , を使って を計算する。次に公開鍵 から を計算し を暗号文とする。 - 復号化: 秘密鍵
と暗号文 より、以下のように , , , を打ち消すことで元の平文 を復元することができる。
CDH 仮定より暗号文
DSA 署名
DSA (digigal sigunature algorithm) は欠点のあった ElGamal 署名の改良版として開発され 1993 年に標準化された電子署名アルゴリズム。RSA より小さな鍵や署名サイズで同等の安全性を保つことができる。
- 構成: ハッシュ関数
と DH パラメータとなる大きな素数 、およびハッシュ関数の出力と同じサイズの を取り決める。 - 鍵生成: 生成元
は であり、 は で割り切れるとする。 となる秘密鍵 をランダムに選択し、公開鍵を とする。 - 署名: 整数
をランダムに選択する。メッセージ に対して署名 を を法として以下のように算出する ( または の場合は を再選択する)。 - 検証: まず
, でなければ署名は無効である。次に を法として を算出し、 より が成り立つことから であれば署名は有効である。
Schnorr 署名
Schnorr 署名は 1989 年に開発された離散対数問題に基づく署名アルゴリズム。DSA に存在する除算ステップが存在しないため演算はより効率的である。2008 年に特許が切れている。
- 鍵生成: 秘密鍵
をランダムに選択し、公開鍵を とする。 - 署名: 整数
をランダムに選び , を計算する。署名を とする。 - 検証:
であれば署名は有効である。
ランダムオラクルモデルにおいて離散対数仮定の元で選択メッセージ攻撃に対して安全であることが証明されている。
複数の署名を一つの署名にまとめるマルチ署名のアルゴリズムが存在する。Bitcoin ではこのマルチ署名を使用してブロックサイズを削減する提案が行われていたが現在は音沙汰がない。
参考文献
- 辻井重男, 笠原正雄, 有田正剛, 境隆一, 只木孝太郎, 趙晋輝, 松尾和人, "暗号理論と楕円曲線", 森北出版 (2008)
- J.A. ブーフマン, "暗号理論入門 原書第3版, 丸善出版 (2012)
- 光成滋生, "クラウドを支えるこれからの暗号技術", 秀和システム (2015)
- [HoECC05] Henri Cohen, Gerhard Frey, Roberto Avanzi, Christophe Doche, Tanja Lange, Kim Nguyen, Frederik Vercauteren, "Handbook of Elliptic and Hyperelliptic Curve Cryptography", Chapman and Hall/CRC; 1版 (2005)
