共通鍵暗号は公開鍵暗号より安全じゃない?

最近のEdy暗号解読疑惑を見るとなんとなく誤解があるような気がしますが、「公開鍵暗号は安全な暗号化方式」と言う言い方は間違いです。というわけで、当たり前の話を。
暗号の強度は暗号化アルゴリズムと鍵長に依存します。以前の記事ですが、場合によっては公開鍵暗号で主に使われるRSA暗号方式ははるかに短いbit長の共通鍵暗号より強度が低い(ただしマシンリソースが潤沢である必要がある)という話もあったりします。
じゃあ何故「公開鍵暗号方式」が喧伝されるかと言うと、共通鍵暗号にはある弱点があるからです。それは、「通信する双方が同じ鍵を持っていなければならない」ことです。古来、暗号化の歴史は解読の歴史ですが、十分な長さの暗号化キーと、そのキーを類推するための文書のサンプル数の少なさで強度を保ってきたわけです。古典的な暗号ではサンプルが多ければ多いほど解読される可能性がありますから、定期的に暗号化キーを変えたりして解読される可能性を下げたり、解読されても実害が無いようにがんばっているわけです。ところが、大きな落とし穴というか問題があって、鍵そのものを受け渡す必要がどうしてもあるので、そこをつかれないようにしなければなりません。
かつて暗号は軍隊や外交官などが使うもので、鍵の受け渡しは厳重な注意を払って行われてきたわけですが、ネットワークの世界になるに至って、一般の人も普通に使うものになりました。ネットワークを盗聴されても内容はわからないという状態を作らなければならなくなったからです。覚えている人もいるかと思いますが、ブラウザでの使用できる鍵の長さが「何ビット以上は輸出禁止」ということでアメリカ国内と国外で変わってたりしたこともあります。いずれにせよ、共通鍵暗号は全世界に広がるWebと一つ一つのブラウザで個別の鍵を持つなんてことが不可能である以上、実質使用不可能です。ところが、公開鍵方式であれば、公開鍵を公開している相手については(その秘密鍵が他者に流出していない限り)片方が一切自分のものとしての鍵を持っていなくても暗号での通信が可能です。つまり、鍵の受け渡しで鍵を盗まれるということ自体がありえません。公開鍵は誰に見られても構わないものだし、秘密鍵は外へ出て行かないものだから。
つまり、鍵の受け渡しを伴う場合、その受け渡しが安全だ、というのが公開鍵方式の特徴で、それ自体は暗号方式としての強度とは一切関係ありませんし、前出のように場合によっては強度は共通鍵より低いかもしれない。また、アルゴリズムが複雑なので処理に時間がかかると言う欠点もあります。なのでSSLでの通信なんかは、その場限りとして生成した共通鍵を暗号化して受け渡すときの暗号化方式に公開鍵暗号を使い、安全な受け渡しが終わったあとは処理の早い共通鍵での暗号化を行うというやり方をしていたりもします。「共通鍵だから」危ないっていう発想はそういう実態とはマッチしていませんね。
今回、もしFelicaに問題がある可能性があるとしたら、「共通鍵そのものが流出した」と言う事態か「共通鍵が解読された*1」という事態であるということで、前者は仕掛けとか管理の問題だし、後者だと暗号強度の問題か(無いと思いますが)暗号解読の新手法の問題ということになりますね。FACTAの記事は前者を匂わせていますが、果たしてどうなのか。そのものずばりを書けないってことは「管理がずさんだけど鍵は大丈夫?」っていうだけのことかもしれませんね。