🔥

素体上で構成されたNiederreiter暗号について

2024/12/11に公開

素体上構成したNiederreiter暗号のパラメータ算出

Niederreiter暗号は、Classical McEliece暗号の双対方式として知られている。(参考文献を読んでください。)
素体で構成するGoppa符号の復号処理の、C言語による実装がなかったので作ってみた。

https://github.com/anang0g0/Wild_Goppa_Codes_over_Prime_Fields

ここで、素体上のGoppa Codeを用いた場合の安全なパラメータを算出した。

符号をGF(3067)で構成するとする。
この時、符号長n、符号の次元k、秘密鍵のサイズ(次元\times係数体のサイズ、ここではGF(2^4)とする)d、エラーベクトルのハミング重みtとすると、

(n,k,d,t)=(3067,64,64*4=256bit,32)

となる。
今のままだと部分体部分符号が定義できないので、公開鍵を安全に構成できない。
素体上で安全な公開鍵を作ることが課題となる。

何故このパラメータなのかと言うと、まず符号長n=3067であり、エラーベクトルのハミング重みをt=32に対してとり得る訂正可能なエラーパターンの数が

_{3067} C _{32}=10^{73} > 240 bit

であるように取ることができるからであった。
ここでは便宜的にエラーの値を全て1とすることが考えられる。
また何故この符号長なのかは、プログラムのバグで動かない(泣)パラメータが存在するからであり、もっと短い符号(例えば[1129,128])でもいい。

(しかし、文献によると、GF(q),q \geq 31の素体を使った場合はまだ攻撃法が見つかっていないらしい。以下の参考文献には素体上のISD攻撃に対する安全性の議論がある。)

この暗号の利点は、GF(2^m)上で符号を構成したときに比べ同等な処理速度と、公開鍵サイズが小さくなることである。

バーストエラーを用いた暗号化

改良案の候補としては、素体による符号を他の基礎体を持つ拡大体上で構成した符号のインターリーブを使って安全な公開鍵暗号を構成するなどの方法が考えられる。
この場合素体上で構成された符号の利点が失われてしまう。
一方バイナリメッセージとして、ランダムエラーからバーストエラーを入れることができるので、暗号文の強度が上がることになる。(素体上の符号を使ってみたかっただけ。2の拡大体でも同じ。)

この場合素体上で構成された[3067,64]次元の各列を、例えばGF(4096)の符号で再符号化することにより目的の公開鍵が得られる。
この場合新たに生成された公開鍵のパラメータは、以下のようになる。

(n,k,t)=(3067,128*12=1536,32)

こうすると内部に素体上構成した古典的Goppa符号をGF(4096)上で構成したGoppa符号として扱えるので、部分対部分符号として扱えることになるはずである。(要確認)
この場合、通常のNiederreiter暗号に対してランダムエラーの代わりにバーストエラーを用いた暗号方式となる。
バーストエラーを用いた暗号方式はあまり有名でない(調べてない)。
インターリーブをすることで訂正能力が上がるので、通常の1段Niederreiter暗号よりも多くのメッセージを入れることができるようになるはずである。
この実装は後に行う予定である。

公開鍵の生成について

まず、第1段として素体上のごっぱ符号を構成し、第2段の符号化は第1段の符号の列をGF(2^{12})の符号で符号化したものである。
更に再符号化された符号をGF(2)のランダム正則行列によってスクランブルにかければ公開鍵の出来上がりである。
GF(4096)の符号は便利的に短縮符号を用いる。
つまり、第1段のn=3067より短いGF(4096)上の短縮符号をn'=128,k=64として使い、12*128=1536次のバイナリ正則行列でスクランブルをかける。
この時、公開鍵のサイズは1536 *3067=4710912bitとなる。

素体上で構成されたGoppa符号を用いた暗号系は2014年の時点では解読されていないようである。(現在どうなっているかは資料が見つからなかった。)
特に、公開鍵の代数的構造を利用した鍵回復攻撃が素体の場合で構成された場合には適用できるかどうかはまだ分かっていない。

参考文献

https://eprint.iacr.org/2009/589

https://eprint.iacr.org/2014/210

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。

https://iacr.org/archive/asiacrypt2014/88730287/88730287.pdf

https://eprint.iacr.org/2010/410

Discussion