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

高木浩光@自宅の日記

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

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]
メール人語:CAPTCHAいろいろ (2006年08月22日 02:20)

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

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

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

検索

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

最近のタイトル

2024年03月16日

2024年03月13日

2024年03月11日

2023年03月27日

2022年12月30日

2022年12月25日

2022年06月09日

2022年04月01日

2022年01月19日

2021年12月26日

2021年10月06日

2021年08月23日

2021年07月12日

2020年09月14日

2020年08月01日

2019年10月05日

2019年08月03日

2019年07月08日

2019年06月25日

2019年06月09日

2019年05月19日

2019年05月12日

2019年03月19日

2019年03月16日

2019年03月09日

2019年03月07日

2019年02月19日

2019年02月11日

2018年12月26日

2018年10月31日

2018年06月17日

2018年06月10日

2018年05月19日

2018年05月04日

2018年03月07日

2017年12月29日

2017年10月29日

2017年10月22日

2017年07月22日

2017年06月04日

2017年05月13日

2017年05月05日

2017年04月08日

2017年03月10日

2017年03月05日

2017年02月18日

2017年01月08日

2017年01月04日

2016年12月30日

2016年12月04日

2016年11月29日

2016年11月23日

2016年11月05日

2016年10月25日

2016年10月10日

2016年08月23日

2016年07月23日

2016年07月16日

2016年07月02日

2016年06月12日

2016年06月03日

2016年04月23日

2016年04月06日

2016年03月27日

2016年03月14日

2016年03月06日

2016年02月24日

2016年02月20日

2016年02月11日

2016年02月05日

2016年01月31日

2015年12月12日

2015年12月06日

2015年11月23日

2015年11月21日

2015年11月07日

2015年10月20日

2015年07月02日

2015年06月14日

2015年03月15日

2015年03月10日

2015年03月08日

2015年01月05日

2014年12月27日

2014年11月12日

2014年09月07日

2014年07月18日

2014年04月23日

2014年04月22日

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|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|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|05|06|07|08|09|10|11|12|
2012|02|03|04|05|06|07|08|09|
2013|01|02|03|04|05|06|07|
2014|01|04|07|09|11|12|
2015|01|03|06|07|10|11|12|
2016|01|02|03|04|06|07|08|10|11|12|
2017|01|02|03|04|05|06|07|10|12|
2018|03|05|06|10|12|
2019|02|03|05|06|07|08|10|
2020|08|09|
2021|07|08|10|12|
2022|01|04|06|12|
2023|03|
2024|03|
<前の日記(2006年08月06日) 次の日記(2006年08月12日)> 最新 編集