CSRF対策とCAPTCHA

CSRF対策

CAPTCHAが実装によってはセキュリティ対策として不十分かもしれないという警告をあらたに付記しました。4/27

てけとうなWeb開発者の雑記 - CSRF - クロスサイトリクエストフォージェリであげられているCSRF対策のひとつ、ワンタイムトークに類する面白い道具がid:sen-uさんのお書きになった@ITのコラムで紹介されています。この@IT:「ぼくはまちちゃん」 ――知られざるCSRF攻撃から引用させて頂きます。強調はhoshikuzu。

もう1つは、上記の方法を人力で行う方法だ。正式名称を何と呼ぶのか知らないが、フォーム入力時の画面で画像を使ってランダムな文字列を表示し、それをユーザーに手入力させるという方法だ。この方法は、ユーザーの明確な入力を求めるので、エンドユーザーには少し手間であるが、CSRF対策としての効果は高い。

CAPTCHA

…なんだっけ?なんていう名前でしたっけ?確かyoggyさんのところで見た覚えが。というわけでyoggyさんのおうちの専用検索エンジンを回すと出てきました。せっかくなのでメモメモ。いくつかのURLと引用。

CAPTCHA
Completely Automated Public Turing Test To Tell Computers and Humans Apart

機械には理解できないけど人間ならば理解することができる情報を使って,認証などを行うことをCAPTCHA(Completely Automated Public Turing Test To Tell Computers and Humans Apart)というらしい.HotmailOrkutとかの,登録時に画像に書かれているふにゃふにゃ文字を入力させることで,ボットとかの自動登録を防ぐアレです.

The CAPTCHA Projectのサイトには,いくつかの方法の紹介や,ソースとかが置いています.

素晴らしい。ソースあるんですね。実装意欲をそそりませんか?なにかにつけて使いまわしもききそうですし。CSRF対策の範疇としてよりもBlogへのコメントを人間によって行って頂きたい、機械によるspamコメントは嫌だ、という実装のほうが海外でよく採用されているような気がします。

アクセシビリティー上の危惧

でもまぁ読み上げブラウザ対策が必要なのですよねぇ…はてどうしたものやら。ションボリ。いやぁ意外と大事だぞ、この観点は。視覚を持つ目によるワンタイム生体認証のようなものだから、その点でアクセシビリティーを阻害しては駄目なのだなぁ。alt属性では逃げられない気がする。

Captchaアクセシビリティ、機械による判読

4/27追記します。コメント欄でのえむけいさんご教示のおかげをもちまして、以下の有益なページをみつけました。

アクセシビリティとの兼ね合いではもっと探せば他にもあるかもしれません。しかし、セキュリティ面でちょっと驚いたことがあります。以下に引用します。採用するにあたっては考えるべきことです。

MoriらはIEEE CVPR'03において 最も有名なCaptchaの一つのEZ-Gimpyを打ち破る手法を詳述した論文を発表し,その手法は92%の的中率であると検証されました。また,より複雑であまり広く普及していないGimpyプログラムが,同じ手法により33%の的中率で打ち破られました。しかし,彼らのアルゴリズムが"野生で"実装されて存在しているかどうかについては,現時点でははっきりしていません。

野生でと云うのは、in the wild のこと。ぶっちゃけ悪意ある者に実際に使われているということ。性質上、表に露呈することは少ないと思われます。逆の意味の言葉では "in the zoo" というものがあります。実験室環境では、という言葉が日本語ではよく使われるかな?

実装にあたっては注意が必要なようですね。

クロスサイトリクエストフォージェリ(CSRF)の正しい対策方法という記事が、高木浩光@自宅の日記で出ていますね。

量子暗号についてかねてから疑問なこと

量子暗号

量子暗号について何か良い解説はと探して見ると意外となかったりします。以下はGoogleの検索順位で1位と2位なので、比較的に多くリンクされている情報なのでしょう。参考文書としてあげさせて頂きます。既にご存知の方は読み飛ばしてください。

わかる人にはわかる解説ですよねぇ…で、この書き方では本当に実用化できるのか私には不安でしょうがないのです。

量子暗号の仕組みにある欠陥?

量子暗号は、どんなに悪人が逆立ちしようと絶対不可侵な利点があります。宇宙の決まりごとなので不可能なのですね。先にあげた参考文書にも書いてありますけれど、私なりにその利点をあげます。ひとつには、第三者が通信に介在すると、そのことが必ず本来の送受信者に判明するということです。もうひとつは、たとえ介入していることがバレるのを覚悟していたとしても第三者による伝送情報の複写が不可能だということですね。通常の電子情報が簡単に複写できることを考えますと、これは本当に奇跡に見えますが、実は単に宇宙の法則に従っているまでのこと、奇跡ではありません。これらの利点には私は絶対的な信頼をおいています。なにせ物理屋志望だったのでどの程度信をおけるのかについては充分にわきまえているつもりです。

ところが私には量子暗号についてどうしても納得できないことがあるのです。なぜ誰もそのことに触れないのだろうと。誰かが既に指摘していることを私が知らないだけかも知れませんがそれにしても…あまりにも知られなさ過ぎているのではと思われてしかたがないのです。

実は上記の最大の利点はそのまま裏返すと最大の欠点であると思われるのです。

セキュリティ上の観点から考えますと確かに情報が第三者に漏洩してしまうことは有り得ないことになるでしょう。私もそれには特に反論を申し上げません。反論する人がいたら天にむかって唾を吐くようなものです。しかしながら、通信の安全を考えると…いいでしょうか?情報漏洩の観点でのセキュリティの問題ではありません。通信そのものの安全性は?と疑問をいだいているのです。

三者が介入することにより、よくある言い方をすれば、アリスからボブへのラブレターは永遠に届きません。第三者をチャーリーとしましょう。横恋慕のチャーリーは伝送路のどこにでも盗聴可能な機械を取り付けるだけで良いのです。盗聴は確かに失敗します、確かに。ですが、その行為でもって、アリスからボブへの通信文は、破壊されます。要するにDoSです。サービス不能攻撃ですね。

全くもって皮肉なことに、盗聴不可能性は、伝送される量子の不確定性によるものでした。そしてその不確定性は容易に第三者によってランダマイズされます。盗聴しようとする行為でも良いですし、バーナーの炎で回線をあぶっても良い。ひどく簡単なのです。

そもそも何ゆえ量子暗号による通信の実現が手間取っているのか。不確定性の範囲内で安定した通信を行うことが難しいからです。これは宇宙のお許しを得ながら物理的にキレイな環境で通信を行いたいという意味ですが、これが難しい、難しいから手間取っているのです。

で、攻撃者は極めて簡単にキレイな環境を壊せるのですね。

これは原理的な欠陥でしょう。確かに盗聴不可能ですが、悪意ある敵がいれば通信も不可能です。

以上の欠陥?に関する疑問は数年来ずっと抱えているのですがどこにも解決策を見出したことがありません。浅学な私の為にどなたかご存知の方がいたら是非教えてください。

私の悲観的?な未来予想

別途定める(笑)悲観的予想の為に、まず量子コンピュータによる時間的空間的な計算量の限界の圧倒的な突破はありえないものと考えます。量子コンピュータの原理を支える多世界解釈が滅びるであろうということですね、そして新しい物理現象がみつかるであろうと。

今回お話ししたように、量子暗号もまた実用的ではありません。

SF的な亜空間伝送(サブエーテル的な)もなおさら無理でしょう。

ですがそれほど悲観することもありません。圧倒的な計算量を誇る量子コンピュータが実現されないのですから、従来から存在している既存のアーキテクチャのコンピュータの進化にあわせて、従来から知られている各種の暗号を、ちょっとずつ進化させれば良いでしょう。

新しい幾何学による別種の暗号も開発されるかもしれません。離散的な数学的実在と連続的な数学的実在とのあいだの一方向的ハッシュ「のようなもの」、あるいは落とし戸関数「のようなもの」は、まだまだ出てくると想像しています。

ところでチャーリーはアリスとボブのうち、どちらに横恋慕しているのでしょう。まぁそんな(量子暗号が実現するような)未来の話を今から考えていても鬼が笑い転げ続けるだけです。私の心配も杞憂であれば良いのですが。