Wikiwand AI

マックエリス暗号

From Wikipedia, the free encyclopedia

マックエリス暗号(McEliece_cryptosystem)は、暗号理論において,公開鍵暗号方式の一つであり,1978年にロバート・マックエリス(Robert McEliece)によって提案された[1]。 この暗号方式は,最初の確率的な暗号方式であり,一つの平文から異なる暗号文が生成される.この暗号方式は暗号コミュニティにおいてあまり注目を浴びてこなかったが,ショアのアルゴリズムを用いた攻撃で破ることができないため,耐量子暗号の候補の一つとなっている[2].

この暗号方式は,線形符号の復号困難性(これはNP困難であることが知られている)に基づいている[3].復号に用いられる秘密鍵は,効率的に復号可能で 個のエラーを訂正可能な誤り訂正符号である.マックエリスによるオリジナルの方式は,二元ゴッパ符号(標数が2である有限体上の種数0の曲線で定義されるゴッパ符号)を用いている.この符号はPattersonによるアルゴリズムにより,効率的に復号できる.[4] 暗号化に用いる公開鍵は,秘密鍵である符号を一般的な線形符号に「偽装」することで得られる.このために,符号の生成行列 を,二つのランダムに選ばれた可逆行列 と によって攪乱する.(具体的な方法については下を参照のこと.)

この暗号化方式には,別の符号を用いた複数のバリエーションが存在するが,多くは安全性が低く,構造的攻撃によって破ることができる.

ゴッパ符号を用いたマックエリス暗号は現在のところ解読されていない.最も効率の良い攻撃方法として知られているのは information-set decodingアルゴリズムを用いるものである.2008年の論文には,攻撃手法と修正方法が示されている.[5] 別の論文では,量子コンピュータに対して安全にするためには,鍵サイズを4倍に延ばす必要があることが示されている.これは, 量子コンピュータによって information set decoding が効率化できるからである.[6]

マックエリス暗号の利点 --- 例えばRSA暗号などと比較して --- として,暗号化と復号が速いことが挙げられる.[7] 長い間,マックエリス暗号で デジタル署名 は生成できないだろうと考えられてきた.しかし,マックエリス暗号の双対版であるNiederreiter暗号を用いると署名方式を構築することができる.マックエリス暗号の一番大きな欠点は,公開鍵と秘密鍵が大きな行列であることである.標準的なパラメータにおいては,公開鍵は512KB(キロバイト)である.

鍵生成

マックエリス暗号は,鍵を生成する確率的アルゴリズム,暗号化をする確率的アルゴリズム,復号アルゴリズムの,3つのアルゴリズムから成る.マックエリス暗号を用いる全てのユーザは,共通のセキュリティパラメータ を用いる.

暗号の原理は,鍵生成者アリスが,効率的な復号アルゴリズムが分かっている符号 を(何らかの線形符号の族から)選び,符号 を公開するが復号アルゴリズムは秘密に保つ,というものである.符号の復号には,符号の生成行列の知識だけではなく,符号の族からを選び出したときに用いたパラメータを必要とする.例えば,二元ゴッパ符号においては,復号にはゴッパ多項式とcode locatorsが必要である.したがって,アリスは適切に難読化された の生成行列を公開することができる.

より具体的には,鍵は以下のように生成される.

  1. アリスは,何らかの符号の族(例えば,二元ゴッパ符号.この族には多数の符号が含まれている必要がある.)から,ビット誤りを効率的に訂正可能な二元-符号 を選ぶ.効率的な復号アルゴリズムを とする.また,符号 の生成行列(の一つ)を とする.線形符号は多くの生成行列を持つが,大抵の場合,自然な生成行列の選択が存在する.そのような生成行列は を明らかにしてしまう場合があるため,秘密にしておかなければならない.
  2. アリスは, の正則行列 をランダムに選ぶ.
  3. アリスは の置換行列 をランダムに選ぶ.
  4. アリスは 行列 を計算する.
  5. アリスの公開鍵は であり,秘密鍵は である.なお,復号アルゴリズム は符号 の選択に使ったパラメータによって定まるため,このパラメータのみを記憶すれば良い.

暗号化

ボブがメッセージ をアリスに送りたいとしよう.アリスの公開鍵=暗号化のための鍵が であるならば,ボブは以下のように を暗号化する.

  1. ボブはメッセージ を長さ のビット列として表現する.
  2. ボブは,ベクトル を計算する.
  3. ボブは,ビットのベクトルであり,ちょうど 個の要素が1(残りは0)であるようなベクトル をランダムに生成する.(つまり,ベクトル の長さは で重みが .)[1]
  4. ボブは暗号文として を計算する.

復号

暗号文 を受け取った時,アリスは次のようにして復号して元のメッセージを得る.

  1. アリスは の逆行列 を計算する.
  2. アリスは を計算する.
  3. アリスは復号アルゴリズム を使って を復号し,復号結果 を得る.
  4. アリスは を計算する. が元のメッセージである.

復号の正当性の証明

暗号化と復号の手順より, が成り立ち, が置換行列であるため は重み のベクトルである.

ゴッパ符号 は最大 個のエラーを訂正することができ,ベクトル と との距離は高々 である.したがって,復号アルゴリズムによって正しい符号語 が得られる.

の逆行列をかけることで, が得られ,これはボブが送ったメッセージに等しい.

鍵のサイズ

初めの論文でマックエリスはパラメータとして を提案していた.[1] その場合,公開鍵のサイズは 524*(1024-524) = 262,000 ビットである. 最近の解析により,80ビット安全を達成するためのパラメータとしては,標準的な代数的復号を使う場合は ,ゴッパ符号に対するリスト復号を用いる場合は とすることが提案されており,公開鍵長はそれぞれ 520,047ビット,460,647ビットとなる.[5] 量子コンピュータでの解読に耐性を持たせるためには,ゴッパ符号を用いる場合は とすることが提案されており,公開鍵長は 8,373,911ビットになる.[8]

攻撃手法

参考文献

外部リンク

Related Articles

Timelines

Top Qs

Fact Checks