👌

行列を用いた離散対数問題は何故解けるのか?

2024/08/26に公開

予感

解けると言われているけどよく知らないのでやってみました。

鍵生成

平文をZ_pの2次正則行列とし、それをMとする。
システムパラメータとして、Z_pの元からなる2次正則行列x,Aを公開する。
さらに、r_0,r_1はアリスが使う秘密の乱数、a,yはボブの秘密鍵である。
この暗号の特徴は非可換群における異なる2つの問題の合体である。
つまり、共役元探索問題と離散対数問題を同時に使っている。

公開鍵

アリスはボブに秘密のメッセージを送りたい。
ボブはパラメータx,Aと、秘密鍵a,yを使って以下のように公開鍵を生成する。
ボブの公開鍵は、

K_b=x^aA^{y}x^{-a}

である。

暗号化

アリスはまず、乱数r_0,r_1をとって、公開されている行列x,Aを使って次のような行列を生成する。

R=x^{r_1}A^{r_0}x^{-r_1}

次にボブの公開鍵と、行列xを使って平文行列Mを次のように暗号化する。
C=Mx^{r_1}K_b^{r_0}x^{r_1}=Mx^{(r_1+a)}A^{yr_0}x^{-(r_1+b)}

生成された行列のペア(R,C)を暗号文としてボブに送る。
C'=(R,C)

復号

Z=x^aR^yx^{-a}=x^{(r_1+a)}A^{r_0y}x^{-(r_1+a)}
M=CZ^{-1}

問題

K_b,x,Aから指数a,y,r_0,r_1を求めよ。

攻撃(ケーリーハミルトン)

公開鍵を攻撃する。

注意:この方法は他の人から教わったものです。鵜呑みにしただけで具体的に計算して確かめたものではないのでなにか間違っているかもしれません。ケーリーハミルトンというのはこういう意味で使うのですよという感じでした。

K_b=x^aA^yx^{-a}

これを、

K_bx^a=x^aA^y

と変形する。
ここでx,Aは公開されているので、ケーリーハミルトンの定理より、
K_b(sx+tI)=(sx+tI)(uA+vI)
よってこれらの4本の連立方程式から、s,t,u,vが全て求まりx^aA^yが求められる。

x,Aを原始元として、CRTもしくはジョルダン標準形に対するPoligh-Hellman攻撃から秘密のパラメータaを計算することができてしまう。

同様に、Rからr_1,r_0がわかり、最終的にはCから平文が計算できてしまう。
よってこの暗号は危険である!

まとめ

私はまだ具体的に確認してないので、線形代数の教科書で勉強したら具体例を解いて、納得したら解答例をまた書きます。固有多項式が何だかワカンネ。

Discussion