Niederreiter暗号で0を暗号化する

符号を用いた暗号方式にNiederreiter暗号というものがあるのですが、符号のパリティ検査行列に平文を入力して、シンドロームを暗号文とするような方式です。
IPAの文書の中に、すでに安全に暗号化をするためのリアクトとかOAEP方式があるのですが、何だかよくわからない。
そのままでは0を暗号化できないので考えてみました。
平文
ここで、
暗号文は
暗号化:
ステップ:
ステップ:
ステップ:
ステップ:
ステップ:
復号:復号関数を
ステップ:
ステップ:
ステップ:
もし
なぜこれではいけないのかを、IPAが公開している文書(かなりややこしい)で確認する予定。
自分で勝手に作って安全な方式に従わず危険な目に会うとするなら、それはもう自己責任だとしか言えない気がする。
なぜ安全であるのかを説明できるようになりたい。
暗号というのはインフラであって、気付いたときには意識しなくても安全に通信できるようになっているものかもしれないけれど。
10年も符号ベースの暗号やっていて、そろそろ最新のトレンドに追いつけなくなった感じがする。
符号以外にも1種類くらい(格子以外の)耐量子性をもつ安全な方式を知っておきたい感じである。
自分のお気に入りは非可換群を用いた暗号である。
今から楕円をやりたいと思うのは、面白そうな楕円ナップサックくらいだし、そもそも安全とはいえ平文を楕円に埋め込む方法を調べるのが面倒くさい。
後10年もしないうちに楕円も主流じゃなくなるみたいだし、事実新しい暗号規格が決まったのに、今更楕円に戻るなんて意味がない気がする。
など、楕円について色々言った上でペアリング関数を計算することだけが(ナップサックのために)自分に残されているような気がする。
符号のプログラムは大変だった。
NISTに提出されたコードの量も自分のと同じくらい長かったし、もちろん技術的には公式のほうが遥かに上ですけど、それでも実際作った人でなければ、なにこれって言う感じだと思うし。
まあそれが平然とできるのがプロなんですね。
昨日は格子簡約基底の方法とか線形代数と現代暗号の意外な接点を見つけて驚いた。
線形代数はもう確率統計と同じく実用数学と言っていいと思う。
こんなにすごいことを大学に行くまで知らないというのがもったいない。
それと多項式。
多項式は統計と同じくらい未来がある気がする。
線形代数の次は論理学化確率論にしたかったけど、今日になって多変数多項式に興味が出てきてしまった。
論理学はテーブル使った判定をするだけで機械的に命題の正しさを判定できそうだけど、目的は数学の証明を理解して自分でもかけるようになることである。
確率は暗号で使われている用語を理解するために必要。
そして多項式は暗号方式の材料として、多様体上の有理関数の写像を考えるのに使える気がする。(なぜ?)
なんとなく写像が非可換になってくれると嬉しいだけだが。(群論ベースの暗号?)
夢だからね、夢。
何しろ格子暗号も超楕円も符号も多項式だから、自分の作った2変数の計算ライブラリが面白いように動いてくれることを祈りつつ今日はもう寝ることにする。
サラリーマンには夢がないね。

r := Rand
m¯ := P rep(m)
y1 := ( ¯m||Const) ⊕ Gen(r)
y2 := r ⊕ Hash(y1)
z := Conv(y2||y1)
c := Niederreiter(z)
これはOAEPのNiederreiterバージョンである。
よくできていると思うけど、どの行がどんなふうに役に立っているのかが不明。
解説が載ってないので、私には謎である。
とにかくNiederreiterを実装するときにはこうしろ、というお達しである。
そのままはアカン。
で、楕円ナップサックは捨てました。
今から楕円やるのは大量死でなければならない。
という訳で新型調べと、署名はPKPDSSをやることに。
新型は非可換群のMOBSと符号の等価性判定問題を使ったやつ、ゴッパ的符号、Thue系の組み合わせ群論を使ったもの、LLLなどである。
置換群が使えたらステキじゃない?
夢物語かもしれないけど・・・。