CAPTCHA*1が基本的に荒らし対策目的で使用されるものであることは以前にも書いた。ユーザビリティの犠牲が少ないものは早いうちに破られるし、改良してもイタチごっこになることも目に見えている。それでもなお活用する意義があるのは、使用目的が荒らし対策だからだ。新規ユーザ登録や、ログインなしでできるコメントやトラックバックなど、元々自由に利用させる機能である限り、完全に防ぐことはできないのであり、たとえ将来破られる可能性があろうとも何もしないよりはましだというわけだ。(荒らしがよりハードルの低いところへ行ってくれることを期待できる。)
そのようなCAPTCHAは、日本ではあまり普及していないようだ。荒し行為が英語圏での状況ほど深刻なものになっていないためか、あるいは、イタチごっこになることが目に見えている技術の採用を嫌う国民性があるのかもしれない*2。
そんな日本で最近、三井住友VISAカードがCAPTCHAの仕掛けを導入していた。
以前はこの仕掛けはなかったが、6月下旬ごろにこの仕掛けが追加されたようだ。(何の目的で導入されたのかについては言わない。)
ところがこのCAPTCHA、独自に作ったのだろうか、作りが唖然とするものなのだ。
1桁目の「9」の画像と2桁目の「9」の画像が全く同一だ。3桁目と4桁目の「0」も同一だ。リロードしていろいろな数字を出してみると、ひとつの数字に1つの画像しかないことがわかる。
しかもこの画像は一枚板なのではなく、枠線の部分で分離している4枚のバラバラの画像なのだ。(図3は、JavaScriptでブラウザ上のtable要素の大きさを変更して表示した様子。)
つまり、数字一文字は一つの画像データに一対一対応している。したがって、画像データの適当なバイト位置(gif形式なので最初の何バイトかをスキップした位置)の1バイトを調べるだけで、表示されている数字が何かを特定できてしまう。人工知能はいらないし、文字認識もいらないし、画像処理さえいらない。
これを作った奴は CAPTCHAが何なのかまるでわかってない*3。この曲線は何なの? 雰囲気作りかい?
飾りじゃないのよCAPTCHAは。カウンタと違うのCAPTCHAは。
CAPTCHAなのに数字だけ4文字というのも弱すぎる*4。
コメントspamやトラックバック荒らしを防ぐならこの程度のものでも効果が出ることもあるだろうが、三井住友VISAカードのこのCAPTCHA導入の目的は荒らし対策ではない。この目的でCAPTCHAを使うのはよくない。その理由は今はここでは言わない。まともなセキュリティコンサルに相談して、根本からセキュリティを考え直したほうがよい。
CAPTCHAを導入するにあたって、Yahoo!やMicrosoft PassportやGoogleなどのように自社で開発する場合には、たとえイタチごっこになっても、必要なときに必要なだけ自社で改良を加えればよいわけだが、外注で作らせた場合は、破られたときにほいそれと改良するわけにはいかないだろう。
発注の際、仕様に「○○機能にCAPTCHAを備えること」とだけ書いたのでは、雰囲気だけ真似た紛い物を納品されかねない。それを防止するようにキチンと仕様を明確に記すとしたら、何を書けばよいのだろうか……。CAPTCHAの強度を示す基準といったものはまだない。
Microsoft ResearchのKumar Chellapilla氏らが、様々な方式のCAPTCHAの攻撃耐性について調べ、強いCAPTCHAの作り方について探求した論文が以下にある。Microsoft Passportで使用されているCAPTCHAに応用されているそうだ。
*1 「CAPTCHA」はCMUのtrademarkだそうだ。CAPTCHAを含むより一般化された概念が「Human Interactive Proofs (HIPs)」と呼ばれている。
*2 私もあまり好きでない。
*3 もしくは、受注した仕事を故意に雑に済ませたか。
*4 これは発注元の指示によるものと想像される。
先日に認証について書いた事がありましたが今日はそのちょっと続き。 ◎CAPTCH...
最近聞いた話として、カードローン機能付きの銀行系クレジットカードを誰かに盗まれた
さて、ちょっとタイムリーさを逃し気味ではあるが、Winnyの開発者が「著作権法...