何のために Obfuscation を学ぶのか

一年以上ブログかいてませんでした ^^;;

以前、obfuscation についてブログにかいた時に紹介したネコの海賊の表紙の教科書「Surreptitious Software」がアマゾンジャパンで "Information Theory" の洋書の38位になっていたので、高い本なのにびっくりしてます。あれやっぱり日本語訳だしたら売れるようなきがするのですがピアソンさんどうでしょ?私のでよければすぐに訳つくりますが。

で、皆さんどういうモチベーションであの本を買っているのだろうか?と、紹介した張本人がいうのもなんですが気になりまして。というか、高い本なのでちょっと心配になってきたというか、例えば大学のソフトウェア工学(もしくは科学)の研究室の学生が勉強する為に買っているのならそれは良い事だなぁと思います。GMAT の教科書みたいに分厚い本ですが、あれ一冊、ざざっと読んでしまう優秀な学生さんがソフトウェア開発の現場に出てくると頼もしいと思います。

もともと DTCPIP のコンテキストで書いてたので、もしかして DTCPIP の実装をしようというモチベーションで、obfuscation の実装を勉強するために買われている方がいるのではないかとちょっと心配になりました。ソフトウェア工学における品質および生産性の向上に一番効果的なのは”再利用”なのですが、DTCPIP についてはすでに多数のライブラリ製品が存在する(オープンソースはないと思います。鍵が手に入らないので)ので、なにも自分でオブフスケーションからつくらなくても単にプロダクトを作る目的ならそういうライブラリを買ってきてリンクしてテストすればそれで良いと思います。ただし、単にベンダーに投げっぱなしにするのではなく、どういうオブフスケーションが実装されているのか発注元として理解しておく、ということだとそれはすばらしいと思います。発注元として十分な知識をもったうえでベンダに質問するとベンダ側の怪しげな実装のボロがみえてくるかもしれません。

もしくは DTCPIP ライブラリのベンダになろうとして obfuscation を実装しようとされている方。今だと obfuscation の library 製品がいくつかあります。特に商用のものでは DTCPIP の実製品での使用実績を歌っているようなものも検索すると出てくるので、そのあたりの製品の利用を検討してみるのもいいかもしれません。

あと、リンクプロテクションを欺きたいという目的で obfuscation の勉強をするのはあまり意味がないようなきがします。商用の obfuscation library の実装は教科書に載っている以上にえげつないものもあって、私も評価したことがあるのですがデバッグされていることを検知するとと処理をとめてしまうのではなく、無意味な演算が永遠に続くフェイクの処理に分岐させて無駄なデバッグを延々とさせて消耗させるという攻性障壁みたいな実装もあります。そんなのがあると知っていたところでその罠に嵌ることを防げるわけでもないですし。手をださないほうが安全な気がします。
そもそも暗号ライブラリの obfuscation を見破って、鍵を抜いて、その鍵でなりすまし実装をつくって、コンテンツを抜く、というのがちょっとあるいみ生真面目すぎるというか遠回りすぎる気がします。苦労して鍵など抜かなくても、ハードウェア機能と連携した真面目なメディアプレイヤーを除き、平文化した後のコンテンツのデコード、レンダリングを OS のノンセキュアなメディアフレームワークにゆだねざるを得ず、つまりノーガードなメディアフレームワークに流しているのだから単にそれを抜き取ればいいだけの話です。つまりきっちり守られてるリンクプロテクションなど攻撃しなくても、メディアフレームワークに渡ってしまった後のコンテンツをシステムから抜くほうが楽だというある意味あたりまえの話ですね。ちなみに真面目なメディアプレイヤーはどうやっているのかというと、一言でいうとメディアフレームワークデコーダ、レンダラの間でリンクプロテクションをやり直しているという感じで、OS レベル(Windows のProtected Environment等)やチップレベル(TEE等)で提供される機能をつかってメディアフレームワークデコーダ、レンダラとの間で認証と鍵交換を行い、デクリプテッドコンテンツを内部用にまたエンクリプトして流通させます。このあたりはハードウェアやプラットフォーム(チップのベンダ)によってインターフェースが異なるため、製品毎の一品ものの実装を真面目にされているようです。

そんなこと思ってたら本当にそういう脆弱製を抱えた商品がいくつかあるようで、筐体外してジャンパ線をハンダ付けすると平文化したコンテンツがそのまま流れてくるようなセットトップボックスが売られているらしく、いくらソフトウェアでセキュリテリーを真面目に実装してもシステムの設計が間違っているとどうしょうもないという分りやすい見本でした。