行列群を用いた公開鍵暗号(失敗作)
はじまり
行列で作られた暗号は弱いものが多い。
公開鍵を工夫することで、強い暗号は出来ないだろうか。
色々いじっているうちに面白いのが出来たので公開した。
ついでに、色々いじってみたら解読方法が見つかってしまった。
やはり関数が良くてもプラットホームがだめなのだろうか。
というわけで、行列を使った公開鍵暗号を作って攻撃してみた。
暗号化関数の構成1(共役元探索問題に還元可能)
以下のように、
未知変数の数え方:(k=2)の場合(
と書くことができるので、未知変数は、ケーリーハミルトンの定理より、
と合計36個になり、方程式の数20個より多く、未知変数を特定する事ができない。
さらに、
公開鍵以外のパラメータは、単に公開鍵の代数的な構造を示しているだけに過ぎず、暗号化に必要な情報ではない。
というわけで、
この方式を使った暗号化と復号を以下に与える。
暗号化:
復号:
行列を用いた離散対数問題は危険であるが、この方法なら安全かもしれない。
構成1に対する暗号解析
ここで復号に必要な鍵は、
つまり、この問題は
いま
であるので、
となり、
これから、4つの連立方程式を解けば、秘密鍵
よってこの暗号は完全に破られる。orz
さあー、残念でした。
自分としては自由群の語の問題を使った暗号のような気分でいたのですが、つまらない問題になってしまって残念です。
行列以外の非可換群
行列以外の置換群ならこの方法はうまく行くのだろうか?
あるいは、暗号化関数の設計に誤謬があったのだろうか?
この暗号では、公開鍵の構造より分割問題から共役元探索問題に変換ができる。
したがってこの暗号は、どのようなプラットホームに変えようとも、共役元探索が難しい問題を構成できなければ安全とは言えない。
この暗号系は、純粋には離散対数問題ではなく、元の分割や未知の元の算出方法が線形代数では計算できないプラットホームであることが望ましい。
楕円・スカラー半直積は、その1つではないだろうか。
楕円曲線暗号は離散対数問題を使うからいいのであって、それ以外の問題には転用する意味がないかもしれない。
結論
行列を使って公開鍵暗号が出来ないか挑戦してみた。
公開鍵を攻撃しても秘密がバレないように気を使ったが、意図せずして選択平文攻撃ができることを見つけた。
そしてこの暗号の本当の問題は、共役元探索問題であることが解った。
しかし、行列以外でこの問題が難しくなる代数系はあると思うので、それに注意すればまだ行けるかも。
とりあえず近い所で、楕円・スカラー半直積で作り直してみようと思い、その準備をしている。
本当は、語の問題を狙っていたのに残念である。
また頑張ろう。
Discussion