素体上で構成されたNiederreiter暗号について
素体上構成したNiederreiter暗号のパラメータ算出
Niederreiter暗号は、Classical McEliece暗号の双対方式として知られている。(参考文献を読んでください。)
素体で構成するGoppa符号の復号処理の、C言語による実装がなかったので作ってみた。
ここで、素体上のGoppa Codeを用いた場合の安全なパラメータを算出した。
符号を
この時、符号長
となる。
今のままだと部分体部分符号が定義できないので、公開鍵を安全に構成できない。
素体上で安全な公開鍵を作ることが課題となる。
何故このパラメータなのかと言うと、まず符号長
であるように取ることができるからであった。
ここでは便宜的にエラーの値を全て1とすることが考えられる。
また何故この符号長なのかは、プログラムのバグで動かない(泣)パラメータが存在するからであり、もっと短い符号(例えば
(しかし、文献によると、
この暗号の利点は、
バーストエラーを用いた暗号化
改良案の候補としては、素体による符号を他の基礎体を持つ拡大体上で構成した符号のインターリーブを使って安全な公開鍵暗号を構成するなどの方法が考えられる。
この場合素体上で構成された符号の利点が失われてしまう。
一方バイナリメッセージとして、ランダムエラーからバーストエラーを入れることができるので、暗号文の強度が上がることになる。(素体上の符号を使ってみたかっただけ。2の拡大体でも同じ。)
この場合素体上で構成された
この場合新たに生成された公開鍵のパラメータは、以下のようになる。
こうすると内部に素体上構成した古典的Goppa符号を
この場合、通常のNiederreiter暗号に対してランダムエラーの代わりにバーストエラーを用いた暗号方式となる。
バーストエラーを用いた暗号方式はあまり有名でない(調べてない)。
インターリーブをすることで訂正能力が上がるので、通常の1段Niederreiter暗号よりも多くのメッセージを入れることができるようになるはずである。
この実装は後に行う予定である。
公開鍵の生成について
まず、第1段として素体上のごっぱ符号を構成し、第2段の符号化は第1段の符号の列を
更に再符号化された符号を
つまり、第1段の
この時、公開鍵のサイズは
素体上で構成されたGoppa符号を用いた暗号系は2014年の時点では解読されていないようである。(現在どうなっているかは資料が見つからなかった。)
特に、公開鍵の代数的構造を利用した鍵回復攻撃が素体の場合で構成された場合には適用できるかどうかはまだ分かっていない。
参考文献
Marek Repka and Pierre-Louis Cayrel。Chpter 5 Cryptography Based on Error Correcting Codes: A Surevey、Multidisciplinary Perspectives in Cryptology and Information Security、pp.139-141、2014。
Discussion