<前の日記(2006年08月06日) 次の日記(2006年08月12日)> 最新 編集

高木浩光@自宅の日記

目次 はじめに 連絡先:blog@takagi-hiromitsu.jp
訪問者数 本日: 2589   昨日: 2446

2006年08月10日

飾りじゃないのよCAPTCHAは 〜前代未聞のCAPTCHAもどき

CAPTCHA*1が基本的に荒らし対策目的で使用されるものであることは以前にも書いた。ユーザビリティの犠牲が少ないものは早いうちに破られるし、改良してもイタチごっこになることも目に見えている。それでもなお活用する意義があるのは、使用目的が荒らし対策だからだ。新規ユーザ登録や、ログインなしでできるコメントやトラックバックなど、元々自由に利用させる機能である限り、完全に防ぐことはできないのであり、たとえ将来破られる可能性があろうとも何もしないよりはましだというわけだ。(荒らしがよりハードルの低いところへ行ってくれることを期待できる。)

そのようなCAPTCHAは、日本ではあまり普及していないようだ。荒し行為が英語圏での状況ほど深刻なものになっていないためか、あるいは、イタチごっこになることが目に見えている技術の採用を嫌う国民性があるのかもしれない*2

そんな日本で最近、三井住友VISAカードがCAPTCHAの仕掛けを導入していた。

以前はこの仕掛けはなかったが、6月下旬ごろにこの仕掛けが追加されたようだ。(何の目的で導入されたのかについては言わない。)

ところがこのCAPTCHA、独自に作ったのだろうか、作りが唖然とするものなのだ。

図1: 三井住友VISAカードがCAPTCHAもどきを使っている様子

1桁目の「9」の画像と2桁目の「9」の画像が全く同一だ。3桁目と4桁目の「0」も同一だ。リロードしていろいろな数字を出してみると、ひとつの数字に1つの画像しかないことがわかる。

図2: 三井住友VISAカードのCAPTCHAで現れる数字画像のパターン

しかもこの画像は一枚板なのではなく、枠線の部分で分離している4枚のバラバラの画像なのだ。(図3は、JavaScriptでブラウザ上のtable要素の大きさを変更して表示した様子。)

図3: 三井住友VISAカードのCAPTCHA画像が文字ごとに分離した画像の並びで構成されている様子

つまり、数字一文字は一つの画像データに一対一対応している。したがって、画像データの適当なバイト位置(gif形式なので最初の何バイトかをスキップした位置)の1バイトを調べるだけで、表示されている数字が何かを特定できてしまう。人工知能はいらないし、文字認識もいらないし、画像処理さえいらない。

これを作った奴は CAPTCHAが何なのかまるでわかってない*3。この曲線は何なの? 雰囲気作りかい?

図4: CAPTCHA風味を醸し出す曲線

飾りじゃないのよCAPTCHAは。カウンタと違うのCAPTCHAは。

図5: カウンタの例 (ハバネロたんカウンターより)

CAPTCHAなのに数字だけ4文字というのも弱すぎる*4

コメントspamやトラックバック荒らしを防ぐならこの程度のものでも効果が出ることもあるだろうが、三井住友VISAカードのこのCAPTCHA導入の目的は荒らし対策ではない。この目的で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 これは発注元の指示によるものと想像される。

本日のTrackBacks(全100件) [TrackBack URL: http://takagi-hiromitsu.jp/diary/tb.rb/20060810]
prima materia diary (2006年08月11日 08:28)

しかもこの画像は一枚板なのではなく、枠線の部分で分離している4枚のバラバラの画像なのだ。 (画像ファイル) つまり、数字一文字は一つの画像データに一対一対応している。したがって、画像データの適当なバイト位置(gif形式なので最初の何バイトかをスキップした位置)..

高木浩光@自宅の日記 - 飾りじゃないのよCAPTCHAは 〜前代未聞のCAPTCHAもどき, CAPTCHA機能の発注仕様をどうするか うーん。これはひどい。 製造過程を創造するとかなり悲惨。 数字の画像も手で作ったのかなぁ? というわけで、ライブラリを使いましょう。 #!/usr/local/..

メール人語:CAPTCHAいろいろ (2006年08月22日 02:20)

先日に認証について書いた事がありましたが今日はそのちょっと続き。 ◎CAPTCH...

最近聞いた話として、カードローン機能付きの銀行系クレジットカードを誰かに盗まれた

さて、ちょっとタイムリーさを逃し気味ではあるが、Winnyの開発者が「著作権法...

本日のリンク元
検索

<前の日記(2006年08月06日) 次の日記(2006年08月12日)> 最新 編集

最近のタイトル

2009年08月01日

2009年07月20日

2009年07月18日

2009年07月12日

2009年07月05日

2009年07月04日

2009年06月29日

2009年06月27日

2009年06月21日

2009年06月14日

2000|01|
2003|05|
2004|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|05|06|07|08|
<前の日記(2006年08月06日) 次の日記(2006年08月12日)> 最新 編集