行方不明のノートPCをAdeonaで追跡する
最新型のノートPCを見ると、たいていはケンジントン・セキュリティスロットが側面か背面にある。これは盗難防止用のワイヤーを通すためのスロットだ。このセキュリティ対策の難点は、(a)泥棒がケーブルを無理に引きちぎろうとしてノートPCを壊しかねないこと、(b)別売りのケーブルを買ってこなければならないこと。これに替わる盗難対策として、フリーソフトウェア・ユーティリティ Adeona がある。盗難は阻止できないが、盗まれたノートPCを追跡し、警察の力を借りて取り戻すのに役立つツールだ。
Adeonaはバックグラウンドで実行され、ランダムな間隔でアクティブになりノートPCの現在のロケーションと状態に関するデータを集め、これを暗号化してからオフサイトのストレージに密かにアップロードする。ノートPCが(または、同じ場所にあるサーバが)行方不明になった場合、最新の記録データを他の場所から取得し、内部および外部IPアドレス、ローカルネットワーク設定などを知ることができる。この情報を警察に提出すれば、捜査は大きく前進するだろう。
Adeonaが商用の機器追跡ツールと異なるのは、オフサイト記録データの匿名化、トレース不可能化、暗号化に複数の手段を用いることだ。これを実現するため、多くのパラメータ(状態をチェックする間隔、状態のチェックからアップロードを行うまでの時間、オフサイトストレージの宛先ノードなど)がランダムに決定される。
Linux用、Mac OS X用、Windows用のAdeonaクライアントをダウンロードできる。最新バージョンは0.21。GPLv2に基づいてライセンスされる。OS X用とWindows用のパッケージはバイナリ形式、Linux用のパッケージはソースコードである。ソースコードをコンパイルする手順は簡単で、一般のLinuxディストリビューションであれば標準の「./configure; make; make install
」の3ステップで足りる。Adeonaの実行にはOpenSSL、traceroute、cronの各パッケージが必要だが、どれも入手はたやすい。
コンパイルが完了すると、make install
の段階で、ローカル資格情報ファイル(credentials file)の暗号化に使用するAdeonaパスワードの入力が求められる。このファイルにはシード・データが格納されるが、このシードはマシンが紛失するか盗難された場合に保存済みのロケーション情報を取得するために必要なので、このパスワードを忘れてはならない。インストーラからは、サンプルのcronジョブも提供される。Adeonaを定期的に実行するために、このジョブをマシンのcrontabに追加する。
Adeonaクライアントを複数のマシンにインストールし、すべてのマシンのロケーション情報を1台のマシンから取得することができる(すべてのクライアントの資格情報ファイルがそのマシンにあることが前提となる)。複数のノートPC、デスクトップ、またはサーバを監視する場合、すべての資格情報ファイルのコピーを各マシンに置いておく。どのマシンが行方不明になるかわからないからだ。各ファイルの暗号化にはそれぞれに固有のパスワードを使う。
OS XバージョンのAdeonaには、他のバージョンにはまだサポートされていない機能がある。Macの最新機種に組み込まれたiSightビデオカメラを使ってスナップショットを撮る機能だ。泥棒を映像にとらえることができるかもしれない。うっとおしい、あるいは単に照れくさい場合は、カメラ無しのビルドも用意されている。
追跡のしくみ
ロケーションのチェックは約30分間隔で行われる。チェックのたびにオペレーティングシステムからマシンの内部IPアドレス、サードパーティのレポートサービスから外部IPアドレス、ネットワーク名(無線LANに接続している場合)、tracerouteで確認できる直近のルータ名、スナップ写真(iSightカメラが使用可能な場合)が収集される。情報は暗号化され、ローカルキャッシュに密かに格納される。その後、ランダムな時間が経過してからこの情報が分散型・非集中型のOpenDHTネットワークにアップロードされる。
ロケーションチェックとアップロードの実行間隔がランダムに決定されるため、攻撃者がチェックの実行前にマシンの電源を切るかアップロードを監視してセキュリティの裏をかくことは難しい。アップロード先のOpenDHTノードもランダムに決定されるため、情報を複数のサーバに分散できる。OpenDHTノード上のアップロード情報にインデックスを付ける際に使われるキーはランダムに生成されるため、攻撃者がロケーション情報を入手したり、特定のマシンに関連する一連の情報を探し出したりすることは不可能だ。
もちろん、キー値は真の乱数ではない。擬似乱数生成ロジックによって生成される値であり、それによりロケーション情報の取得がこのキーで妨げられる。間隔、ノード、キーは、初期シード値がわかれば完全に推測が可能だ。このシード値は資格情報ファイルに保管されている。Adeonaでは、このファイルを基に各ロケーション情報のタイムスタンプを計算し、目的の情報をOpenDHTから取得できる。資格情報ファイルはパスワードによりAESで暗号化されるため、総当り方式の攻撃を除き、あらゆる攻撃から守られる。
当然だが、マシンに物理的にアクセスできる窃盗犯は、Adeonaを無効にしようと、Adeonaのアンインストール、ハードディスクからの関連ファイルの削除、インターネットからの切断などを行うことができる。その場合、紛失したマシンを捜し出せるセキュリティ製品はAdeonaを含めこの世にない。Adeonaは、プロプライエタリのソリューションに匹敵する強さと、それを上回る匿名性・セキュリティ性を備えている。
実地テスト
実際、Adeonaは存在を主張しない。データ収集用クライアントをインストールした後は、そこにあることを忘れてしまってもいい。カメラ対応版OS Xビルドを使うときでさえ、それは変わらない。Linux用パッケージ以外にOS Xビルドも試してみたが、撮影時の緑色LEDの点灯には数時間の連続使用中もまったく気が付かなかった。Linuxバージョンをコンパイルしてインストールする作業は簡単そのものだ。あいまいな依存関係はなく、複雑な設定も必要ない。
実際に使用する場合、ロケーション情報をすぐに取得できるかどうかは、情報生成の堅牢性よりも重要だ。ノートPCが盗まれた場合、行動を起こせる時間はわずかしかない。その時間が過ぎてしまうと、ディスクの内容が消去されるかシステムがシャットダウンされて、盗品は中古ショップの棚に陳列されるだろう。Linuxで取得コマンドを実行するには、コマンドラインスイッチを使って取得対象のロケーション情報の開始時間と終了時間、そして件数を指定する必要がある。Macバージョンはもう少し使いやすい。付属のクリッカブル端末スクリプトからウィンドウがポップアップされるので、そこから時間と件数を入力する。Linuxで同じ操作をするには、Zenityを使う。
いずれの場合も、OpenDHTから取得したロケーション情報は読みやすい書式で出力される。テスト中に起きた唯一の問題は、OpenDHT側の不具合だった。OpenDHTは、ハッシュキー/値ペアの非集中型データベースであり、PlanetLabノードで動作する。そのため、いずれかのノードが到達不可能になった場合に備えてフォールトトレランスが提供される。だが、Adeonaのテストを始めてから数日間、OpenDHTシステム全体がダウンしていた。
困った私は、Adeonaの開発者Gabreil Maganis氏に問い合わせた。というのも、取得スクリプトが表示するエラーメッセージからは、OpenDHTに問題があるとは読み取れなかったのだ。Maganis氏は将来のバージョンでエラーメッセージの不備を修正すると約束し、OpenDHTの動作状況を確かめるにはhttp://www.opendht.org/servers.txtをチェックするといい、とアドバイスしてくれた。
OpenDHTストレージがAdeonaの動作を妨げる単一障害点(single point of failure)になることについて、Maganis氏は対策を検討している。「使用できるオンラインストレージを増やすことは、エンジニアリング上の問題です。”ウィッシュリスト”のようなものをWebサイトに掲載して、Adeona用のAzureus DHTモジュールを実装してくれる協力者を募るつもりですよ。こんなこともあろうかと、拡張や追加の簡単なコードを意識して開発しましたから」
Adeonaプロジェクトの本拠は、ワシントン大学(University of Washington)にある。Adeonaのセキュリティプロトコルに関する正確な情報は、このシステムの基本情報と阻止できる攻撃手口を解説した論文から入手できる。この技術はロケーション情報を詮索好きの目から確実に隠蔽するだけでなく、個人のプライバシーを普通の泥棒には思いもつかないような方法で保護する。プロプライエタリのデバイス追跡アプリケーションの購入を検討中であれば、この論文に目を通して、Adeonaの卓越した機能の基盤を正確に知ることをお勧めする。それでも納得できなければ、ソースコードをご覧いただきたい。
ノートPCやデスクトップコンピュータの紛失や盗難に遭うほどの不運はめったにないかもしれないが、Adeonaのセキュリティ対策は万が一の用心としても十分に価値がある。