Skip to content

第13章 前進!

コミュニティへの貢献

Xboxハッキングコミュニティに貢献する方法を探しているなら、まずこのことを覚えておいてほしい——ほとんどのハッカーは、自分が最も興味を持っている分野に対応した独自のスキルや強みを持っており、楽しみのためにハックしているということだ。

たとえば、僕は特にハードウェアが好きで、何かを作ることが求められるプロジェクトに強くひかれる。コードを書くことはできるが、それほど楽しいとは思えない。だから、ハッキングコミュニティへの僕の貢献は主としてハードウェアプロジェクトを通じたものになっている。同じ理由で、ソフトウェアプロジェクトに自分を奮い立たせることも難しい。だから多くの場合、ただ後ろに引いて、他の人たちがXboxで何をやっているかを眺めている。それはとても勉強になるし、楽しくもある。

Xboxハッキングコミュニティに何ができるかを考えるとき、急いで飛び込もうとしたり、夢中になれないプロジェクトや、自信を持って実行できないプロジェクトに無理に取り組もうとしたりしなくていい。自分の番が来たときには自然にわかる——プロジェクトが自分の名前を呼ぶような感覚があり、自然にハックせずにはいられなくなるだろう。

📦 コラム:Dan Johnson(別名 SiliconIce)プロフィール

ご自身のことと、ハッキングへの関わりについて教えてください。

以前からエレクトロニクスのハッキングに興味がありましたが、それはほとんど読んで楽しむだけのものでした。セガのDreamcastやNetpliance I-Openerといったハックされたデバイスが時々目に入ってくる程度でした。エレクトロニクスハッキングで最初の実体験となったのは「ePods」——販売が打ち切られたインターネットアプライアンス/ウェブタブレット端末——でした。このデバイスのことをオンラインで読み、Ken SeglerのI-Appliance BBS(http://www.linux-hacker.net)にたどり着きました。有名なI-Openerハックの拠点です。タブレットを使ってみんながやっていることを読んで興味を持ち、当時の貯金からかなりの金額($200)を使ってユニットを1つ入手しました。届いたばかりの玩具で、文書化されたハックの多く——主にソフトウェアベースのもの——を実践しました。これがエレクトロニクスハッキングの世界への最初の一歩でした。ePodsの後、別のインターネットアプライアンスであるGateway Connected Touchpadに移りました。400MHz CrusoeプロセッサとRAM 96MBを搭載した10インチタッチスクリーン。見栄えも良く、楽しいプロジェクトにぴったりに見えました。そのデバイスはAOL向けにカスタマイズされたLinuxを32MBのCompactFlashカードから起動していました。それをMicrodriveと入れ替え、ラップトップとUSBリーダーとGateway間でディスクを何度もやり取りした末に、「98Lite」を使ったスリムダウン版Windowsが起動しました。指で操作できるネットワーク接続型mp3ジュークボックス(その他用途も)として最適に思えたため、タッチパッドで操作しやすいカスタムプレーヤーの開発に取り掛かりました。Gateway全体の経験は、高校3年と4年の間の夏のプロジェクトとしてとても面白いものになりました。

XboxHacker BBSはどのように生まれたのですか?

まさにこの時期に、XboxHacker.Netのアイデアが浮かびました。僕の目には、Xboxはテレビのそばに置ける理想的なコンピューティングデバイスになる可能性があるように見えました——プログラムできるようになりさえすれば。当時のハードウェアとしては非常に印象的で、実現したいことには十分すぎるほどでした。他のコンソールと違い、Xboxにはハードドライブとイーサネットポートが内蔵される予定でした。ハックされれば、XboxはNES、SNES、N64、PSXなどのエミュレーション、mp3やDivXなどのメディアファイルの再生、ホームネットワークからのストリームメディア再生、さらには基本的なPCとしての利用にも使えるはずでした。$299という価格から、近いスペックのPCをハックなしで組めるとの理由でXboxをハックするのは割に合わないという意見もありました。しかしXboxには、Xboxゲームも遊べてテレビと一緒に置けるという強みがありました。ハックはあくまでも付加価値です。電子機器ハッキングの世界に少し足を踏み入れた後、Xboxハッキングはテレビのそばでさまざまなタスクを実行できる便利な箱を手に入れるための興味深いプロジェクトを整理するのに役立てられると思い、取り組んでみようと考えました。実際にXboxHacker.Netのドメインを取得したのはそれから何ヶ月も後のことでした。

XboxHacker BBSを成長させ運営した経験はどうでしたか?

最初からXboxHacker.Netはいくつかの主な目標に集中していました——Xboxに関する技術情報を提供・共有すること、そしてXboxハッキングに関連する技術的な議論をする場を提供することです。技術的な知識と経験が限られていたため実際のハッキングへの貢献は少なかったですが、関連情報を集めて配信し、ディスカッションボードをモデレートするという形でその取り組みを支援するには十分な知識がありました。

サイトの立ち上げ後まもなく、Mike MageeのThe InquirerやVan SmithのVan's Hardwareといった有名サイトからリンクをもらえる幸運に恵まれました。XboxHacker.Net BBSはXboxハッキングに関するあらゆる話題を議論するためのインターネット上の主要な場となり、XboxHacker.Netのニュースページは最新のXboxの状況を伝えるものとなりました。サイト公開から数週間後にCNETの記事で言及され、それ以降は活動が着実に増えていきました。ほどなくXboxHacker.Netは利用していた小さな共有サーバーを使い切り、より大きなアカウントに移行しましたが、それも数週間で使い切ってしまいました。フォーラムへのトラフィックは急速に増え続けたため、帯域幅の数MBや同時接続ユーザー数を心配せずに成長できる専用サーバーに移転することにしました。

XboxHacker.Netの活動はほどなくMicrosoftの注目を集めました。サイト初期に、素材の削除を求める連絡を数回受けました。最初はディスクの「セキュリティセクター」を示す開発者ツールのスクリーンショットについて、もう1つはフォーラムに誰かが投稿したXboxのBIOSイメージへのリンクについてでした。これらの小さな問題を除けば、MicrosoftとXboxHacker.Netの間の接触はほぼ皆無でした。ゲームのバックアップについての議論、著作権のある素材へのリンク、BIOSからのMicrosoftコードの投稿など、法的に疑問のある問題には距離を置くことを早い段階でポリシーとしていました。

最初は関心が高かったものの、進展は比較的ゆっくりとしていました——セキュリティが破られる前はXboxでできることが多くなかったのです。初期から注目すべき貢献をした人たちがいました。Xboxハッキングの世界の最初期の貢献者の中には、ファイルフォーマットや他の貴重なXbox情報を多数掲載したWebページを持つAndyとLukeがいました。Steve「SurferDude」GehlbachはXbox向けVGAコンバータ回路の設計に貢献し、Ken GasperはそれをもとにXbox向けの真のVGAアダプタを作り上げました。bunnieの初期の解析とハードウェア情報ページはSlashdotへの掲載後、Xboxハッキングへの関心を高めました。その他にも多くの人が足跡を残しました。そのような優れたハッカーたちをボードの貢献メンバーとして迎えられたことで、XboxHacker.NetはXboxの技術情報・議論・ニュースのハブへと成長していきました。

XboxHacker.Netの目玉は間違いなくXboxHacker BBSでした。サイトはフォーラムとメンバーの活動を中心に成り立っていました。最新のXboxハッキングニュースは、メンバーが投稿したフォーラムの話題へのリンクや引用であることもよくありました。フォーラムの目的は、Xboxハッキングに関心を持つ多国籍の多様なグループが共通の目標に向けて協力できる場を作ることでした。フォーラムはハッカー仲間と情報を共有しアイデアを議論する場として機能し、そうでなければ協力する手段を持てなかった多くの優れたハッカーを結びつけました。フォーラムが可能にした進展を見ていると、とても良い気持ちになりました。特に印象に残っている議論が数日間に渡って展開されたことがありました。複数のメンバーが第2世代Xboxの新しいセキュリティシステムを調べ、欠陥と回避方法を探していました。ハッカーたちが解答に近づき、やがて改訂版Xboxのセキュリティを突破するまでの経緯を目の当たりにするのはとてもわくわくするものでした。数百人の貢献メンバーが、XboxHacker.Netの成功と全体的なXboxハッキング世界の進展に大きく貢献しました。

XboxHacker.Net BBSの活動のほかにも、秘密裏にXboxをハックしていたグループが多数あったのは間違いありません。知っていたグループの1つはIRC上にあり、フォーラムの貢献メンバーや電子機器ハッキングのアンダーグラウンドからの人々も含まれていました。ここでは名前は伏せます。独立したグループや個人から、時間をかけて多くの情報が報告のために僕に届けられました。しかしXboxハッキングへの関心と関与者の数が増えていたにもかかわらず、大きなブレークスルーが公に知られるようになるまでにはまだ時間がかかりました。

Xboxハッキングの場面は、2002年夏頃にモッドチップが公に入手可能になってから急速に盛んになりました。その頃にはXboxのセキュリティシステムは複数のグループによって突破されており、モッドチップが一般に広く入手できるようになるのは時間の問題でした。この時点から、取り組みはハードウェアハッキングから離れ、ソフトウェア開発へと移っていきました。XboxHacker.Netの姉妹サイトXboxDeveloper(http://www.xboxdeveloper.net)は、Xbox向けに公開されたソフトウェアのカタログ作りを目的に設立されましたが、XboxHacker.Netほどの規模には成長しませんでした。MicrosoftのXbox SDKの流出コピーを使い、プログラマーたちはMAMEなどのメディアプレーヤーやエミュレーターを含むさまざまなXbox向けアプリケーションの作成とポートに取り掛かりました。Michael Steilが率いるXbox-Linuxプロジェクト(http://xbox-linux.sourceforge.net/)は、XboxでLinuxオペレーティングシステムを動かすことに成功しました。僕はOpenXDKプロジェクト(http://sourceforge.net/projects/openxdk/)の立ち上げを働きかけました——法的問題に縛られることなくXbox向けソフトウェアを開発できるオープンソースの開発キットです。ただし、このプロジェクトは成功と失敗が混在しています。現在はCase Western大学のCS学生「Caustik」(Aaron Robinson)が率いています。ハードウェアハッキングと比べてソフトウェア開発がより身近であるため、Xboxハッキング全体の取り組みに貢献するメンバー数は急速に増えていきました。今日のXbox向けホームブリューソフトウェアの量はすばらしく、メディアプレーヤー、コンソールエミュレーター、ユーティリティから、オリジナルゲームまで揃っています。

トラステッドコンピューティング

信頼はセキュリティの礎であり、セキュリティシステムを信頼するためには、実行しているハードウェアとソフトウェアを信頼できなければならない。トラステッドコンピュータとは、マシンの信頼性を損なう恐れのある攻撃に対して耐性を持つよう設計されたマシンのことだ。

信頼性の高いコンピュータを構築するアプローチはさまざまあり、ATM(現金自動預け払い機)方式の物理的なセキュリティや耐タンパー性から、Xboxで採用されているようなハードウェアの負担が少ない方式まで多岐にわたる。Xboxは、最初期の広く普及したトラステッドPC実装のひとつとして、トラステッドコンピューティングという大きな絵の中に位置づけられている。ある意味でXboxは、トラステッドコンピューティングの将来について示唆を与えてくれる存在だ。

トラステッドコンピューティングは、潜在的に破壊力を持つ新興技術だ。インターネットのようなアドホックなネットワーク上でトラステッドクライアントが広まれば、安全でプライベートなオンライン金融取引を可能にし、コンピュータウイルスやスパムメールを減らすまたは完全になくすという可能性を秘めている。トラステッドPCは、医療・金融記録や個人的な秘密といった機密データを安全に保管するためにも使える。また、デジタルコンテンツのアクセス権と管理ポリシーをユーザーに対して確実に適用するためにも利用できる。トラステッドコンピューティングのデジタル著作権管理(DRM)の側面は、今日のコンピュータの使い方を根本から変える可能性がある。僕たちの多くは、事実上フリーなコンテンツと柔軟な著作権実装の恩恵を享受している。根本的な問題はコンテンツ管理ポリシーの存在そのものではない——コンテンツ管理ポリシーは消費者にとって有益になり得る。本当の問題は、ユーザーの権利を決めるポリシーがコンテンツ提供者によって一方的に設定されうるときだ。現在のトラステッドPCの提案では、ユーザーはマシン内部の特定の重要な秘密に対するコントロールを信頼されていない。代わりに、ユーザーのマシンの認証情報(信頼性の確立に必要な情報)の一部が第三者によって管理される。選挙で選ばれたわけでもなく、規制もされていない、ビジネス上の利害を持つ第三者が、誰がビジネスを行い、メールを送り、信頼できる存在として認識されるかを決める権限を持つことを、僕たちは信頼できるのだろうか?

トラステッドコンピューティングは銃のようなものだ。引き金を自分が握っている限り、持っていることはすばらしい。しかし多くのトラステッドPC反対派が恐れるのは、実際には、消費者にとって不利な方向を向いた既定の権利・ポリシーとサードパーティの信頼確認リソースを設定した状態でシステムが展開されるということだ。企業は好景気のときにはより大きな顧客基盤を引きつけるためにユーザーに有利なプライバシーとセキュリティのポリシーを設定するかもしれないが、いったん倒産の危機が訪れたり、企業が売却されたり経営が変わったりすれば、ポリシーは変わりうる。当初はユーザーフレンドリーなポリシーでトラステッドコンピューティングを普及させ、突然、消費者の財布を絞るDRMモードに切り替えるビジネスマンを倫理が止められるだろうか?

一歩引いて考える

「トラステッドコンピューティング」というフレーズには問題がある——これが暗号学的に保護されたトラステッドコンピュータと同義語になってしまっているのだ。一歩引いて、トラステッドコンピュータを構築する代替アプローチについて話してみよう。

信頼性はコンピュータにとって常に重要だった。しかし、コンピュータの黎明期には機器があまりに高価で、強力な信頼ポリシーを適用するためのハードウェアは消費者の手の届くところになかった。たとえば、初期のマシンの多くはハードウェアのMMU(Memory Management Unit、メモリ管理ユニット)チップ用のソケットを備えていた。MMUは信頼性の高いハードウェアメモリモデルへの最初の一歩のひとつであり、MMUの仕事の一部はページレベルのメモリアクセス保護を適用することだ。当時はかなり高価だったため、MMUはオプションとして販売されていた。残念ながら、信頼性の高いハードウェアへの動きはMMUで止まってしまった。主な理由の一つは、コンピュータネットワークが大規模に存在するようになったのが比較的最近だからだ。ネットワークのない世界では、データはプログラムのエラーと、マシンへの物理的なアクセスを持つ少数の特定ユーザーによるアクセスからのみ保護できればよかった。今日のコンピュータには、MMU以上の何か——ウイルスや、悪意あるコードを実行するためにソフトウェアの微妙な脆弱性を突こうとするリモートの攻撃者に立ち向かえる信頼性——が必要だ。

MMUのハードウェアによってページング化された仮想メモリモデルの自然な拡張として、タグ付きメモリモデルを使ったアドレスケイパビリティが考えられる。メモリタグとは、メモリ位置に格納されているデータやコードのタイプを記録するビットの集合だ。タグ付きメモリモデルでは、すべてのメモリ位置に一連のタグビットが付与される。これはちょうど、従来のエラー訂正メモリ実装では各メモリ位置にECCビットが関連付けられているのに似ている。タグビットはハードウェアがデータ型管理ポリシーを適用するのを助ける。たとえば、データとしてタグ付けされたメモリ位置は、誤って意図的にコードとして実行されることがない。ケイパビリティとは、信頼されたカーネルによって付与された、偽造不能なポインタだ。偽造不能性はタグビットによってハードウェアで適用されるのが好ましい。多くのアーキテクチャでは、ハードウェアケイパビリティの一部としてアクセス境界を適用する機能も含んでいる。1

ケイパビリティとメモリタグは新しいアイデアではない。1961年には、Burroughs B5000がケイパビリティ(当時は「ディスクリプタ」と呼ばれた)とタグ付きメモリを使って、バッファオーバーフロー攻撃からハードウェアで保護し、コードとデータを分離していた。2 MIT PDP-1、Intel i432、IBM System/38、MachおよびAmoeba OSもある形でケイパビリティを実装しており、このリストはもちろん網羅的ではない。ケイパビリティのセキュリティ特性は、EROS(Extremely Reliable Operating System)など多くの学術研究でも実証されている。3 残念ながら、ケイパビリティとタグ付きメモリはメインストリームのPCアーキテクチャの核心に入り込むことはなかった。セキュリティと信頼性はコスト・後方互換性・パフォーマンスの前に常に後回しにされてきた。

このような簡単な歴史の教訓が示すのは、トラステッドコンピューティングが今日PalladiumやTCPA(Trusted Computing Platform Alliance、トラステッドコンピューティングプラットフォームアライアンス)によって提案されている暗号学的アプローチを必要とするわけではないということだ。実際、暗号化それ自体はいかなるセキュリティも提供しない。安全な鍵管理こそが、Palladium/TCPAにおけるすべてのセキュリティを提供している。暗号アルゴリズムは単に、鍵のセキュリティをユーザーの領域に移し替えるだけだ。

こう考えると、ケイパビリティと暗号鍵の間には類似点が見えてくる。どちらも、その生成・配布・破棄を管理するために信頼されたOSを必要とする。どちらも、システムが偽造された鍵やケイパビリティから保護できなければ同様に弱い。大きな違いは、秘密鍵が漏洩した場合、セキュリティはすべて、永遠に失われるという点だ。一方、ケイパビリティは動的に生成・破棄されるため、ケイパビリティが漏洩してもセキュリティ侵害の範囲と期間は限られる。この点で、ケイパビリティはコンピュータセキュリティにおいてより堅牢な解決策を提供する。

ハードウェアセキュリティのために暗号技術だけに頼ると、古典的なバッファオーバーラン型攻撃やプログラムエラーによるセキュリティホールに対してマシンが開かれたままになることに注意しておく必要がある。ソフトウェアの状態の「計測」は、セキュリティクリティカルな操作を実行する前にコードの変更を検出することでこの弱点を軽減するが、計測は完璧な解決策ではない。一方、ハードウェアによるケイパビリティと境界チェックを使用するシステムではバッファオーバーラン攻撃は不可能だ。

メモリタグは、純粋に暗号学的なアプローチでは実現不可能なセキュリティ機能を実装するためにも使える。一例として、コンパートメント化された秘密情報の信頼性の高い並行処理が挙げられる。4 この例では、さまざまなセキュリティクリアランスレベルを持つ複数のスレッドが1つのプロセッサ上で動作している。ハードウェアは、すべてのスレッドがアクセスするデータにそれぞれのセキュリティレベルを刻印するというポリシーを適用する。つまり、すべての計算は通常の算術演算のドメインとセキュリティドメインという2つのドメインで同時に動作する。

たとえば、非機密スレッドが2つの非機密の数を加算して「foo」というデータを作成するとする。fooのセキュリティタグは加算の算術演算と並行して計算される。この場合、セキュリティタグの結果は「非機密」だ。今度は、最高機密スレッドがfooにアクセスするとする。fooのセキュリティタグは「最高機密」に変わる。非機密スレッドは、fooへの有効なポインタを持っていてもfooを読み取れなくなる。fooは明示的に再分類されない限り、非機密スレッドが再び読み取ることができない。このような厳密にコンパートメント化されたセキュリティシステムは、たとえば、カーネルの内部構造が(メモリの解放とユーザープロセスへの再割り当てという手順のない場合を含むバグやメモリリークがある状況でも)ユーザープロセスからアクセスされないことを保証するために使える。このスキームは、セキュリティ侵害の根本原因をプログラマーが追跡するのに役立つセキュリティ監査証跡を確立するためにも、またセキュリティ侵害が発生した場合のダメージコントロール手段としても使用できる。

公正を期すると、暗号学的なトラステッドコンピューティングアプローチには1つの利点がある。もしある悪意ある者が何らかのハードウェア的手段でデータを入手しても——ハードウェアの盗聴やハードドライブの盗難など——そのデータは解読できない。しかし、ユーザーはハードウェアケイパビリティとタグ付きメモリを使った実装を含め、あらゆるコンピュータ実装でデータ保護のために暗号化を選択できる。安全な鍵管理の問題は依然として難しい問題だが、PCに暗号スマートカードリーダーを統合することで部分的に解決できるかもしれない。

トラステッドPCの実装がPalladiumやTCPAで提案されている暗号技術を使わなければならない本質的な理由はない。このセクションで見てきた技術——すなわちケイパビリティとタグ付きメモリ——は、ユーザーが自分自身のアクセスポリシーを設定する能力を失うリスクを伴わない形で、安全で信頼性の高いPCを実装するために使える。ユーザーは常に自分のマシンと秘密情報の完全なコントロールを持つことができる。

PalladiumとTCPAの比較

現在のトラステッドPC提案、すなわちMicrosoftのPalladiumとTCPA(Trusted Computing Platform Alliance)についての混乱が多い。2つの提案には十分な類似点があるため、多くの人が同じものだと思っているが、それぞれのイニシアティブの目標は異なる。

TCPAは、ある程度の名目的な信頼性を持つコンピュータを作るための複数企業による連合だ。特筆すべきことに、その仕様の多くはPC以外のプラットフォームにも適用できる。TCPAでは、信頼性はTPM(Trusted Platform Module、トラステッドプラットフォームモジュール)と呼ばれる安全なハードウェアモジュールに根ざしている。TPMには、モジュール内に格納された秘密情報がソフトウェア攻撃によって漏洩しないことを保証するための機能が含まれている。また、TPMに含まれる信頼性をホストマシンに移転しようとする、セキュリティの「計測」などの機能も含まれている。

Palladiumは一方で、Microsoftが単独で作ったPC中心のシステム全体のセキュリティコンセプトだ。構成要素の一つはTPMに似たセキュリティモジュールだが、PalladiumはハードウェアチップセットとI/Oポートの実装方法への大幅な変更も求めている。チップセットは、グラフィックカードなどの潜在的なすべてのDMAソースからのメモリセキュリティポリシーを適用することが求められる。PalladiumはキーボードとビデオサブシステムへのI/Oの暗号化も求めている。

チップセットベンダー・OEM・Microsoft間の協力を求めるPalladiumの要件は、潜在的に大きな欠陥だ。現在のコモディティPCハードウェア業界には、大規模な暗号化セキュリティの刷新を支えるだけの余裕がない。また、多くのチップセットベンダーには安全なシステムの実装経験がない。多くの海外チップセットベンダーが抱える言語の壁に加え、チップセットは通常、タイトなスケジュールで予算を厳しく管理しながら開発される。こうした状況で開発されたチップセットが機密情報を保護することは期待できるだろうか?

Xboxは、セキュリティポリシーをある組織が定義し、まったく異なる別の組織が実装する場合に何が起こりうるかの例だ。Microsoftは、信頼性の高いハードウェア——Xboxを——の仕様を書いた。強力な暗号アルゴリズムがXboxでは至るところで使われており、システムのマスター鍵は複雑なシリコンの奥深くに封じ込められている。しかし経験が示すのは、Xboxのセキュリティシステムが、非保護のデバッグポート、ハードウェア初期化スキームの欠陥、CPUの命令ポインタの境界ケース処理のバグという組み合わせを使って迂回できるということだ。3つの独立した当事者(組み立て業者、Xboxファームウェア設計者、Intel)によってそれぞれ犯された3つの小さな見落としが重なり、Xboxのセキュリティを破る便利な方法を提供することになった。

これらの見落としはそれぞれ単独では重大なセキュリティ問題にはならない。このことが、ある特定のPalladium実装において、複数の無害な欠陥が積み重なることでどれほどのセキュリティ侵害が引き起こされるかという不安な問いを生む。複雑な家庭用電子機器システムは、特に主たる関心が利益を出すことにある複数の独立した組織が作ったコンポーネントで構成されているとき、必ず小さなバグや設計上の見落としがある。

家庭用電子機器業界では、完璧な製品を出荷するか、お金を稼ぐかのどちらかだ。お金にならない製品は早々にキャンセルされる。したがって、あらゆる面で技術的に完璧な消費者製品を見つけることは非常にまれだ。その結果、Palladiumほど複雑な家庭用電子機器システムのセキュリティを保証する唯一の実際的な方法は、野に放ち、すべての大きなセキュリティホールが発見・修正されるまで何年もハッカーたちに好きにさせることだ。

一方でTCPAのTPMは、Palladiumより範囲が小さい特定の問題を解決するために作られたデバイスだ。したがってTPMは市場的な観点からはそれほど魅力的ではないが、意図された目的のためにはより実用的で使いやすいかもしれない。TPMとPalladiumのどちらもハードウェア攻撃には弱いが、TPMはセキュリティ要件をサードパーティのシステム設計の領域にそれほど深くまで伸ばそうとしない。TPMは主として、ホストシステムに対するほとんどの変更や侵入を検出できる安全な鍵管理モジュールだ。このサブストレートの上に構築されたソフトウェア層が残りの重労働をこなす——買い手は用心せよ(caveat emptor)。

トラステッドPCをハックする

現在提案されているトラステッドPCは、統合上の見落としやバグ関連のバックドアがなくても、かなりシンプルなハードウェア攻撃に対して弱い。

最初の攻撃は、僕が「Surreptitious BIOS」すなわちSPIOS(「スパイOS」と発音する)攻撃と呼ぶものだ。SPIOSは、ユーザーへの不正アクセスを防ぐためにトラステッドPCの暗号化されたストレージ機能に依存するDRMポリシーを破るために使える。基本的なアイデアは、変更されていないBIOSでPCをトラステッドモードで起動し、目的のデータをすべてシステムRAMに取り出し、BIOSイメージを差し替えながらウォームリセットを実行するというものだ。

変更されたBIOSイメージを使ってシステムRAMから目的のデータを読み取ることができる。目的のデータとは、プログラムがデータをメモリにどのように構造化してキャッシュするかによって、メモリに格納されたセッション鍵か、実際に復号されたデータ自体かもしれない。現在のトラステッドPC仕様がLPCバスベースのBIOSを採用しているため、安価な代替ファームウェアデバイス(Xboxで使われるものと同様)でこの攻撃を実行できる。この攻撃を複雑にするためにアプリケーションプログラマーが使える技法として、毎回システムメモリに1ブロックのデータだけを復号するというものがあるが、これらの技法の多くはシステムパフォーマンスを大幅に低下させる。特にファイルキャッシュとプリフェッチが無効化された場合、パフォーマンスの低下はとりわけ顕著になりうる。

もう1つの攻撃は、「Surreptitious RAM」すなわちSPAM攻撃と僕が呼ぶものだ。この攻撃の目的は、システム状態の適合性を計測する信頼されたルーティンを欺くことだ。FPGA(Field Programmable Gate Array)やASICなどのデバイスが、DRAMチップとメモリコネクタの間にある差し込み式メモリカードに取り付けられる。このデバイスはアドレスのパターンを監視するか、システムを認証する暗号モジュールのI/Oピンに接続されたワイヤの状態をスニッフする追加コネクタを持つかもしれない。

いずれにせよ、システム計測が進行中のとき、SPAMデバイスは変更されていない信頼されたシステム状態と一致するメモリイメージを提示する。しかしその他のすべての動作モードでは、SPAMデバイスはユーザーの望む通りに変更されたメモリイメージを提示する。この変更は非常に微妙なものでよい——セキュリティカーネルの重要な分岐命令を変更するのに必要なのは、適切な位置でのわずか数ビットのフリップだ。

このデバイスはSPIOSより強力だ。電源が入っており信頼されているはずのシステム上で動作するためだ。より広範なDRMスキームや、ローカルマシンとサーバー間の認証済みトランザクションの一部に対しても有効に適用できる。ただし、SPAMだけでは、システムを別の登録済みトラステッドシステムとして偽って識別させることには使えない。SPAMは、ローカルマシンの耐タンパー性セキュリティ暗号モジュールと認証サーバーの間で共有された秘密情報を持たないからだ。偽のシステム識別は、耐タンパー性セキュリティ暗号モジュールから鍵を抽出するか(可能ではあるが自明ではなく、モジュールを破壊する可能性が高い)、別の登録済みトラステッドマシンの安全な暗号モジュールをなんとか騙して偽の識別情報を提供させるかのどちらかが必要だろう。

SPAMデバイスは比較的少ない費用で製造できる(現在、高性能FPGAは1個単位で$50程度)、取り付けも非常に簡単だ。SPAMはメモリモジュールに直接統合されるか(その場合、信頼性侵害デバイスとメモリ拡張デバイスを兼ねる)、マザーボードのメモリスロットと既存のメモリデバイスの間にスタック構成で取り付けるデバイスとして提供される。一部のメモリカード構成、特にヒートシールドを採用しているものでは、SPAMデバイスを隠して通常のメモリ拡張デバイスとして通すことができるかもしれない。手の込んだ方法ではあるが、トラステッドPCベースのサーバーに高価値の秘密情報を保管している大企業や銀行に対する攻撃としては十分に価値があるかもしれない。

展望

トラステッドコンピューティングの見通しを考えるとき、まず現在提案されているスキームが約束するすべての利益をもたらすかどうかを検討し、それを消費者の権利への潜在的な損害や犯罪者にとっての潜在的な利益(強化されたプライバシーは善にも悪にも使える)と比較考量する必要がある。もしトラステッドコンピューティングがオンラインビジネスに完璧なセキュリティを提供できるなら、潜在的なリスクに見合うかもしれない。しかし本章で概説したシナリオは、トラステッドPCのセキュリティが完璧ではない可能性を示している。

Xboxを考えてみよう。Xboxはわずか$50のはんだ付け不要のモジュールでハックできるトラステッドPC実装だ。これはXboxに信頼できる秘密情報の価値についてかなり強い制約を置く。ハードウェアモッドチップはコピーされた1タイトル分——またはチップの取り付けを誰かに依頼する場合は2タイトル分——のゲームのコストでペイできるほど安価だ。

もちろん、コンテンツを盗むことの道徳的・社会的な意味もある。また、そのような行為を一部犯罪とすることを目指すDMCAなどの新しい法律もある。残念ながら、現在提案されているトラステッドPCも同様に安価なハードウェア攻撃に対して弱い。したがって、高価値またはきわめて恥ずかしい秘密情報に必要なレベルのセキュリティを提供する可能性は低い。

実のところ、ハッキング技術は合法であるかどうかに関わらず、また意図が善であるか悪であるかに関わらず開発される。したがって、ハッキングについて人々を教育し、誰もが自分の「トラステッドPC」の限界を理解することが、消費者と企業双方の最善の利益になる。最悪のシナリオは、トラステッドコンピューティングに数十億ドルが投資されても、消費者にとって安全性やプライバシーがまったく向上せず、一方でコンテンツポリシーの貧弱な実装によって消費者の権利が大きく損なわれるという結果になることだ。

トラステッドPCの支持者にとって朗報なのは、集積回路の微細化が進み、PC全体の統合が進んでいることだ。10年以内に、今日のPCは1枚のシリコンに収まるようになるだろう。RAMとBIOSが完全に1枚のシリコンに統合されれば、システムのハッキングははるかに難しくなる——ただし不可能ではない。FIB(Focused Ion Beam、集束イオンビーム)装置は、チップ設計者と故障解析ラボが使うツールで、ナノスケールの配線を切断・ジャンパできる。トラステッドマシン設計者にとってのもう1つのプラス面は、公開鍵プロセッサがチップに統合するほど小さく安価になりうることだ。そうなれば、個々のチップ、特にメモリチップが強力な暗号を使ってI/Oを認証・暗号化するようになり始めるかもしれない。

トラステッドPCの実装を助けるもう1つの技術は、耐タンパー性または改ざん検知機能の統合だ。たとえば、TDR(time-domain reflectometer、時間領域反射率計)をチップのI/Oセルに組み込むことができる。TDRはワイヤの電気的特性への特定の変化を認識することで、ワイヤ上の盗聴者の存在を検出できる。盗聴者を検出する能力に加え、統合TDRデバイスは高性能I/Oにとっても望ましい——マルチギガビット速度の通信に必要な駆動インピーダンスと等化/プリエンファシスフィルタのキャリブレーションに使えるからだ。

おわりに

本書はXboxハードウェアハッキングの駆け足旅行に連れ出してくれた。はんだ付けと分解の基礎から最新のプロジェクトと技術まで。またXboxハッキングの社会的側面——ハッキングをする人々と、社会・法律・ハッキングの相互作用——も紹介してきた。

XboxへのLEDの取り付け方の詳細は数年後には時代遅れになるかもしれないが、取り付けを実行することで身につくスキルは一生ものだ。さらに、ハッカーと消費者が直面している社会的・法的な問題は、Xboxを超えて、エレクトロニクスに満ち、コントロールされ、依存した僕たちの新たな情報中心の生き方のあらゆる部分にまで及んでいく。

本書の内容はただの出発点にすぎない。探求を待つハードウェアの世界がそこにある。本書が、エレクトロニクスがますます満ちあふれ、コントロールされ、依存されていく世界で、探求者・修繕者・革新者になるための強力な出発点を初心者の読者に提供できていれば幸いだ。

ハッピーハッキング!

bunnie@xenatera.com

1 ケイパビリティのハードウェア実装の効率的な高性能実装については、Jeremy Brown、J.P. Grossman、Andrew Huang、Tom Knightによるテクニカルノート「A capability representation with embedded address and nearly-exact object bounds」(http://www.ai.mit.edu/projects/aries/Documents/Memos/ARIES-05.pdf)を参照。

2 Alastair J.W. MayerによるBurroughs B5000の設計の分析については「The Architecture of the Burroughs B5000 — 20 Years Later and Still Ahead of the Times?」(http://www.ajwm.net/amayer/papers/B5000.html)を参照。

3 ペンシルバニア大学のJonathan Shapiroが当初考案(http://www.eros-os.org/)。

4 この種のセキュリティシステムの詳細については、Jeremy BrownとTom Knightによるテクニカルノート「A Minimal Trusted Computing Base for Dynamically Ensuring Secure Information Flow」(http://www.ai.mit.edu/projects/aries/Documents/Memos/ARIES-15.pdf)を参照。


*原著*: *Hacking the Xbox: An Introduction to Reverse Engineering* © 2003 Xenatera LLC
*著者*: Andrew "bunnie" Huang | *出版*: No Starch Press
*日本語訳・レビュー*: ニコ技深圳コミュニティ / 高須正和(@tks) — [https://takasumasakazu.net](https://takasumasakazu.net) — CC BY-NC-SA 1.0
*注記*: 本翻訳は、原著の Creative Commons ライセンス条件に従って公開する翻訳コントリビューションであり、著者 bunnie からも歓迎のコメントをいただいています。出版社による公式日本語版ではありません。

ニコ技深圳コミュニティ / 高須正和(@tks)による日本語訳コントリビューションです。著者 bunnie からも歓迎のコメントをいただいています。原著は Andrew 'bunnie' Huang および No Starch Press に帰属します。