サイトアイコン CAD日記

いたちごっこ1

ソフト開発者とクラッカー。その果てしない戦いの日々をここに記します。現在進行形のその戦いに終止符を打つべく、努力を重ねている今、臨場感をもって伝えられれば、と思います。

その前に、「いたちごっこ」という言葉を調べてみました。

江戸時代、子供たちの間に「いたちごっこ」なる遊びが流行ったという。「いたちごっこねずみごっこ」と唱えながら向かい合った二人が相手の手の甲をつねり、その手を重ねていく遊びで、それを終わりなく繰り返すことから転じて、相手より優位に立とうと繰り返すことを「いたちごっこ」と言うようになったらしい。(JASRAC NOW No.560から引用) 転じて、いつまでたっても勝敗が完全には決まらない勝負のこと。例)鍵屋と泥棒

では、本題に入ります。

●リリース

シェアウェアで一儲けしようと考えたソフト開発者がいました。1週間という期間限定で全ての機能を、試してもらえるソフトをダウンロードサイトに登録しました。購入してもらった人には、IDとパスワードを教えて、それをユーザーがソフトに登録すると、期間の限定がなくなり、ずっと使えるようにします。

●最初のクラック

ある日、ダウンロードサイトを管理している人から、開発者に連絡がきました。「急激にダウンロード数が増えている。ジャンプ元を解析したところ、とあるアングラサイトだ。」

開発者は急いでそのアングラサイトを覗いてみました。いかにもいかがわしい、危険なにおいのするところでした。いたのは、クラッカー達でした。依頼者の要求に基づき、シェアウェアのシリアルを解析して楽しんでいる、それがクラッカーです。もちろん、開発者がつくったソフトもクラックされていました。IDとパスワードを盗まれていたのです。

●敗因

IDとパスワードの仕組みを解説します。IDは4桁の数値、パスワードはIDをもとに”あるアルゴリズム”で生成される数値です。アルゴリズムは単純なもので、2進数に直して、決められた規則で桁をぐちゃぐちゃに入れ替えるようなものです。これ自体は問題ないのですが、それを無防備な状態でプログラムに埋め込んだこと、これが最大の敗因です。クラッカーにとって、プログラムの中を覗くことはたやすいことです。コンパイルしてバイナリ形式になっているのだから、プログラムの中を見れるわけがない、というのは浅はかな考えでした。リバースエンジニアリングという技術です。アセンブラを直接読んだり、専用のデバッグツールを使って、プログラムの中を覗くわけです。

●対策

試用版と製品版のシステムを分けることにしました。試用版においてはIDとパスワードを入力できないようにして、1週間たったら動かなくします。製品版は、従来どおりのIDとパスワードを入力するとずっと使えるもの。重要なのは、試用版に「IDからパスワードを生成する関数を入れないことです。実行ファイルの中にプログラムを入れなければ、解析できるわけがないという、理屈です。また、その入力インターフェースも削りました。システムを2つにわけるということは、メンテナンスをする上で非常にかったるいことですが、#ifdef で分岐するようしたりして、最低限の労力で済むようにしました。準備万端、完璧だー、という気持ちで、ダウンロードサイトにアップしたのですが...

つづく

モバイルバージョンを終了