Crypto Alarm Basic(CAB方式)について再び考えてみる
- 「解読不能は数学的に証明済み」、RSAを超える新暗号方式とは − @ITの続報“解読不能”の新暗号の記事について、いくつかのお詫び − @ITが@ITから出たので、Crypto Alarm Basicについてもう一度考えてみる。とりあえずこの二つの記事から、主観を抜いて、事実(と思われる)部分だけ抜き出して、並べ替えてみた。
- 計算機上で実際に実装した上で、安全性を保障する必要がある暗号アルゴリズムにおいて、無限を持ち出すのはやはりおかしい。これは、無限と言っていいほど多数の、という概念を、考案者が素人にわかりやすく表現しただけ、と見た。Haskellの無限リストみたく、有限の計算資源で無限を扱う方法も無くはないが、多分今回は関係ないでしょ。無限の概念の濫用はサイエンスのマナーに反するので、サイエンティストは無限という言葉の使用には敏感なはず。
- そういう理解のもとで考えると、どうもカオス暗号のことを言っているような気がする。「無限(といえるくらい大きい)集合から鍵となる関数をピックアップ」する、というのはカオス源となる関数をあらかじめ決めておいて、そのパラメータを鍵として考えているということでしょう。たとえばロジスティック写像だったら関数形がx=ax(1-x)で、aとxの初期値を鍵とする、みたいな。パラメータが有理数だったら確かに無限個あるけど、計算機上では浮動小数点で表現するわけだから、まあやっぱり有限だよね。
- さてそう決めつけて考えると、以下のようなハイブリッド暗号を考えることができる
- このスキーム自体はたぶん全然新しい話じゃなくてカオス暗号の一般的な枠組みだと思われます(良く知らないけど)。このスキームの弱点は二つある。
-
- カオス関数から吐き出される値が一様ランダムであることは証明されてないこと。onetime padを使っているので情報理論的に安全にみえるけれど、実際はそうじゃない(かもしれない)。かもしれないからこそ、「ランダムな数列生成ではNIST(米国立標準技術研究所)で使われるテストで検証済み」として安全性を担保しているのだろう。
- 一方このスキームのいいとこはとにかく鍵生成が高速なとこ。カオス関数の計算は、巨大素数をぶん回すような計算は不要で、ごく単純な代数的計算ですむし、暗号化・復号化部分は単なる排他的論理和だ。これなら「10万ビットの鍵でも1秒未満で生成でき」て、「4MBほどある聖書のテキストを、その聖書に含まれるビット数と同じ長さの鍵を使って暗号化するのに、一般的なPCでも1秒もかからない」ってのも納得です。
- 実際にはカオス暗号ってのは理論の世界ではいまのとこ中心的に議論されているとはいえなくって、今後にこうご期待、というような立ち位置ではあるけれど(see 信頼性の低い暗号アルゴリズム - Wikipedia)、別にIND-CPAだとなんだといわなくても、速くて使い勝手がいいんだったら、用途を選んでどんどん使ったらいいと思う。ゆっていいのかどかわからないのでゆわないけれど、どっかの電機メーカもカオス暗号をつかった映像配信のシステムを試作してたようだし。
- 実際にはこれくらいの枠組みで、あのような大々的な成果を誇るってことは多分なくて、もっと画期的な発明があったのだろう。以下は単なる予想。
-
- 暗号に(どのような点でかは知らないが)すごく良く適したカオス関数の群れを発見した
- 鍵交換アルゴリズムとカオス関数の間になにか良い性質があって、それがスキームの大幅な効率向上をもたらした
- このぐらいまで証明する必要があると思う。こうだったらかなりの大発見でしょう。でもそれはやっぱりないよな。。。
- と、つらつら書いてきたけど、本当にこの@ITの記事で納得できないのは、暗号系自体の説明や扱いではないんですよ。長くなったから続きはまた明日。