« UI なんてキライだ | メイン | バックアップの話 »

2009年10月25日

『偽装』の勉強中

 といっても、産地とか耐震強度の話ではない。あくまでプログラミングの話だ。

 これまで必要に迫られたことがなかったのだが、いわゆるセキュアプログラミングという分野がある。これは、アプリケーションのオブジェクトコードや実行中のメモリ状態を解析・追跡して重要な情報を取り出したりする、いわゆる『クラッキング』と呼ばれる行為からプログラムやデータを保護するためのプログラミング技法のことだ。いま、これを勉強しているわけである。なぜかといえば、必要に迫られたからだ。

 思い出すのは、Japonica に設定した隠し機能だ。あれは別段死守しなければならない秘密でもなんでもなかったわけだが、なんの保護もしなかったとはいえミニーさんあっさりと見つけられてしまったときは本当に驚いた。自分は C/C++ よりも下の世界は詳しくしらないので、逆アセンブルリストから動作を紐解くというのはまるで魔法のように見える。

 で、今回はそれよりももっとシビアな理由でコードが何をやっているのかをわからなくしなければならないワケだ。つまり、プログラムが何をやっているか、あるいはどのようなデータを扱っているかを偽装して分かりにくくするというテクニックだ。この手のセキュリティには『完璧』というものはないようで、どれだけ努力しても技術と時間をたっぷり投入されればいつかは破られてしまう。キーワードは損益分岐点だろう。つまり、破るための時間やコストが、対象の価値を上回ればよい。良いというか、そこで手を打つしかないのだ。

 ミニーさんには『次回はもう少しヒネリを期待してま~す』などと言われたが、今作っているものが「次回」であるとすれば、破られたりしたらそれこそ笑えない話になる。頑張ってみよう。


投稿者 kagelow : 2009年10月25日 23:30

コメント

次回作は解析禁止なのかなぁ・・・、
おじさんは寂しいなぁ(^^)

投稿者 ミニー : 2009年10月26日 15:09

> ミニーさん

 いやいや、解析禁止ではないですよ。逆に、ミニーさんにはどれくらいセキュアな状態かを是非チェックして頂きたいくらいです。ただ、破った結果を公開されちゃうのはちょっとマズいんですけど(汗

 セキュアプログラミングというのはこれまでやったことがないんで、どれくらいやれば十分なのかとかも含め、色々と難しいですね。頑張ってみます。

投稿者 kagelow : 2009年10月26日 15:53

コメントがあればどうぞ




保存しますか?




kagelow home へ