セキュリティ ウォッチ
BitLocker と信頼という複雑なもの
Justin Troutman
Windows Vista。これまでこの 2 つの単語を記事に載せたことはありません。そのため、このコラムを執筆していると、おもちゃ屋に入って、「いくらでも好きなものを選んでいいよ」と言われた 5 歳の子供になったような気分になります。説明したい機能、調べておく価値のある分野、取り上げることができるテーマなどが山ほどあります。
少し前のことですが、セキュリティの権威である Bruce Schneier 氏のブログを読んでいたとき、当時知らなかった "BitLocker™" という単語が目に留まりました。私は、すぐに、これが Windows Vista® の暗号化機能であることを突き止め、直後には嫌な気分になってしまいました。「何てことだ。Windows Vista が暗号化を行うとは。きっとろくなものじゃない。まともに機能したとしても、どこかにバックドアがあるに違いない。」
「ユーザーはなぜ Windows® に組み込まれたセキュリティ機能を利用することをためらうのか」という、(真実はどうであれ) 歴史的な論争があります。しかし、この理由を説明するためにこのコラムを執筆するわけではありません。むしろ、BitLocker にはチャンスを与えるべきだと信じる理由を説明したいと考えています。また、暗号化ソフトウェアやハードウェアに活力を与えるような考えには賛成したいとも思っています。
ただし、誤解しないでください。BitLocker をセキュリティの問題を全体的に解決する万能薬と言っているわけではありません。BitLocker は、セキュリティというパズルを組み立てる数多くのピースの 1 つに過ぎません。この機能の目標は、特定の脅威モデルに対する回復性を提供することです。
BitLocker は、特に、ラップトップ コンピュータの紛失 (または盗難) に重点を置いています。モバイル ワーカーは、常に、あらゆる場所 (電車、飛行機、飲食店、ホテル、自宅、ブランチ オフィス) へあらゆる種類の機密情報を携行します。こうした機密情報は、ラップトップ コンピュータなどのモバイル デバイスで持ち運びされますが、一般に、モバイル デバイスは本質的なセキュリティが欠如しており、データはきわめて脆弱なままです。では、ユーザーの 1 人が、ラップトップ コンピュータをどこかに放置すると、こうしたデータはどうなるでしょうか。
人間からだらしなさを取り除くことはできません。さいわい、こうしただらしなさによって生じる混乱を制限することはできます。企業にとっては、漏えいした機密データの処理にかかるコストに比べれば、ラップトップ コンピュータの買い換えなど安いものです。これが、BitLocker が提供を目指すセキュリティです。
評判について考える
ここでは、変わった観点から BitLocker を説明しましょう。実は、まだ試したことがないので、「BitLocker を使ったこともない人の意見なんて。まして、それについて役立つ話などできるわけがない」と、皆さんはお考えでしょう。ここは、我慢して聞いてください。実際には、暗号化を高レベルな視点から捉え、ソリューションの成功に不可欠な設計哲学について説明したいと考えています。
すべては Bruce Schneier 氏のブログの一節から始まりました。たとえば、これから見たい新作映画があるとします。予告編や主な出演者から、その映画についていくつかの想定を行います。もちろん、出演者が優れているからといって、名作であるとは限りません。しかし、俳優陣によって映画の大部分が決まり、何を期待するかも決まってきます。主演は Chris Rock と Ben Stiller ですか。それとも Kate Winslet と Johnny Depp ですか。
映画の例と同様に、世界的な尊敬を集めるセキュリティの権威が自身のブログで BitLocker について述べているのを読んだとき、私はいくつか想定を行いました。まず、この新しいテクノロジは、佳作程度の価値があるか、公共の場で発表しなければならないほど役に立たないかのどちらかに違いないと考えました。驚いたことに、Bruce Schneier 氏の出した結論は肯定的なものでした。
彼の記事の中で、「警察向けのバックドアは用意されていない」という文が目に留まりました。これには衝撃を受けました。彼のブログは自信を持って書かれており、Microsoft® System Integrity チームのブログへのリンクが含まれていました。このリンクにアクセスすると、Niels Ferguson 氏 (マイクロソフトのセキュリティ専門の開発者) からの投稿がありました。この投稿では、法の執行を目的として、マイクロソフトが故意に BitLocker にバックドアを組み込んだという噂は憶測にすぎないと非難していました。Ferguson 氏は、バックドアは許されないものであり、これを支持するプロジェクトの一員になったことはないと、はっきりと述べています (マイクロソフトは、法律によって強制的にバックドアを組み込まざるを得ないとするならば、バックドアを実装していることを公表するか、その機能から完全に撤退するだろう、とも説明しています)。
投稿者が Niels Ferguson 氏であるということが Schneier 氏の自信の根拠となっており、私の自信にもつながっています。Ferguson 氏は責任を持って発言することが知られており、その意見は信用できることが実証されています。Bruce Schneier 氏と Niels Ferguson 氏は、『実用的な暗号化』(簡潔、正確、かつ安全な優れた暗号化の適用に関する影響力のある書籍) を共同で執筆しました。また、ブロック暗号の Twofish も共同で設計しています。Twofish は、Advanced Encryption Standard (AES) の選考過程で最終段階まで残り、暗号化の骨組みを構築した 128 ビットの Feistel ネットワークです。
もちろん、熟練した暗号技術者がプロジェクトに参加したからといって、最終製品のセキュリティが確保される保証はありません。このようなベテランの技術者でも、たまには、キーの打ち間違いの 1 つや 2 つはあります。しかし、BitLocker の長期的な成果とは関係なく、彼らがプロジェクトに参加したことが、少なくとも、BitLocker の作成時の設計方針を正当なものにするうえで、なんらかの役割を果たしたことは確かです。
キーの打ち間違いと言えば、暗号化のセンスがまったくない開発者が誠意を持って取り組んだ場合にも、製品のリリースだけを気にしている開発者が不誠実に取り組んだ場合にも起こりえます。故意かどうかに関係なく、どちらも作成時のセキュリティ エラーです。しかし、BitLocker にはどちらも当てはまらないようです。少なくとも 1 人の有能な暗号技術者を関与させたり、その作業をサポートする豊富な人材を確保したりすることは良い兆しです。
信頼について
つい最近、PGP 暗号化の作成者である Phil Zimmerman 氏から、彼の経験に基づいて得られた法則を教わりました。『開発者のためのセキュリティ信条』という書物が出版されるとしたら、彼の助言は間違いなくその冒頭を飾るでしょう。彼の主張する設計哲学は、特に BitLocker を意識したものではありませんが、ほぼすべての暗号化ソリューションに当てはめることができます。「わかりきったことだ」とか、「熱くなりすぎている」と受け取られるかもしれませんが、セキュリティの現状を考えると、あえて述べておく価値があります。
開発者が暗号化インフラストラクチャを設計するときは、簡潔、正確、かつ安全に行う必要があります。ミスは避けられないものですが、当然起こるものとして容認し、軽視してはいけません。開発者は、細部にまでこだわる、完璧主義の忠実な支持者でなければなりません。Zimmerman 氏は、このことを「ミスをすれば人命が犠牲になると考えて設計しなさい」と表現しました。誇張だと思いますか。2005 年のコンピュータ セキュリティ カンファレンスで、NSA (国家安全保障局) の暗号技術者である Brian Snow 氏 (当時既に定年を迎えていました) は、「セキュリティ デバイスには機能と保険が必要です。顧客ではベータ テストを行いません。製品にエラーがあれば、だれかが命を落とすかもしれません」と述べました。ですから、忘れないでください。ミスを犯すと、金銭だけでは済まされない場合があります。
ユーザーは、保証を得て当然です。ユーザーの信頼を獲得し、それを維持することがきわめて重要です。Zimmerman 氏は、「ユーザーの信頼を獲得してください。いったんその重荷を背負ったら、決して下ろすことはできません」と、信頼維持の重要性を説きました。そうすることで、企業は、セキュリティが確保されているという、ユーザーからの保証と評判を維持できます。これらを失うと、回復は不可能です。
マイクロソフトが BitLocker (ついでに言えば、他の製品) を設計しているときに、このような観点を念頭に置いていたことを願っています。そうは言うものの、マイクロソフトにこのような適切な考え方が実際にあり、真剣に採用すべき暗号化テクノロジを提供していると、楽観的に考えている理由を説明します。
廉価版認証と Elephant
根本的には、BitLocker とは、Windows Vista Enterprise Edition と Ultimate Edition で、すべてのシステム ボリューム データを暗号化する方法のことです。こう言うと単純なアプリケーションのように聞こえますが、その制約について考えてください。BitLocker はセクタ単位のレベルでデータを暗号化します。また、暗号化したテキストはプレーンテキストの長さを超えることができません。そのため、ナンス (認証に一度だけ使用される数値または文字列)、Initialization Vector (IV)、メッセージ認証コード (MAC) など、他のデータのために残される領域がありません。このように厳しい制約や条件が課せられることはよくあると予想していましたが、メッセージ認証はなんらかの方法で対処されることもわかっていました。
BitLocker は、よく廉価版の認証と呼ばれる認証に依存しています。セキュリティが侵害され、暗号化したテキストが操作されても、意味のあるプレーンテキストにはならないと考えられるため、被害は通常想定するほど控えめなものではありません。つまり、暗号化したテキストが操作されると、敵対者がなんらかの機能を実行できるのではなく、たとえば、システムのクラッシュにつながります。
BitLocker を開発したマイクロソフト チームは、まったく新しいブロック暗号の分析には許容できないほど多くの時間が必要になることがわかっていましたが、既存の設計もまだ十分に分析されておらず、またそれほど効率的でもありませんでした。そこで、マイクロソフトでは、暗号化に CBC (暗号ブロック連鎖) モードの AES (以下 AES–CBC) を選択しました。AES–CBC は、選択平文攻撃モデルの下では識別不能 (IND-CPA) ですが、完全性は保持されません。また、MAC 用の空き領域がなく、CBC が機密性のモードであるため、完全性はまったく保持されません。これは、象 (Elephant) が列をなして、部屋に入るのを待っているようなものです。
この新しい Elephant コンポーネントには 2 つのディフューザがあります。これらのディフューザは、定番の AES-CBC よりもはるかに優れた、廉価版の認証を行うように構築されています (ただし、標準への厳しい準拠ポリシーに従う必要があるユーザー向けに、Elephant なしで AES-CBC を実行するオプションがあることに注意してください)。常に理想的であるとは限りませんが、廉価版の認証は、特定の制約下では最適なソリューションであり、Elephant はその状況下で最善を尽くすことを目的としています。では、実際どのように動作するのでしょうか。
図 1 に、動作の流れを示します。暗号化が行われるときに、プレーンテキストとセクタ キーが XOR で組み合わされます。次に、組み合わされたテキストが、キーのない 2 つのディフューザを経由して流れます。その後、AES-CBC を使用して暗号化されます。セクタ キーと AES-CBC の両方にキー マテリアルが必要であるため、個別にキーが付けられます。この方法により、AES-CBC と Elephant の構造のセキュリティを、AES-CBC のセキュリティに軽減するための証明の形式化が簡単になります。Elephant は、新しいプリミティブです。厳密な分析が完了するまでは、新しいプリミティブを受け入れるのに抵抗があるかもしれません。しかし、BitLocker では、Elephant を使用した AES-CBC の方が、AES-CBC 単独の場合よりも攻撃されにくいことを示す場合があるため、この方法によってバランスを取ります。
図 1 Elephant を使用した廉価版の認証
セクタ キーと AES-CBC コンポーネントは、共に 256 ビットのキー マテリアルを受け取り、キーの長さを 512 ビットにします。ただし、既定では、これらの各コンポーネントはそれぞれ 128 ビットのキー マテリアルしか使用しません。つまり、キー マテリアルの一部は使用されません。それは、キーの長さの変化に合わせてキー管理インフラストラクチャを変更するよりも、不要なビットを破棄する方が簡単だからです。
ブロックの長さは 512 ~ 8,192 バイトの範囲内で、任意の 2 の累乗値が許可されます。暗号化したテキストが変更されると、すべてのセクタのプレーンテキストがランダムに変更されるようにするには、ブロック暗号をこのようなさまざまなブロック サイズで動作するように設計します。さらに、セクタごとに少しずつ変化させるアルゴリズムによって、(Liskov、Rivest、Wagner が提唱したような) 調整可能なブロック暗号のように動作すると、敵対者はあるセクタの暗号化したテキストを別のセクタに移動できません。
時がたてばわかる
BitLocker の暗号化セキュリティばかりに注目すると、全体像を見失います。BitLocker のセキュリティ保護は、その役割を果たすには必ずしも十分ではありません。これは、BitLocker はそれ自体が 1 つのソリューションではないためです。BitLocker は、多くの Windows Vista の付属コンポーネントの 1 つです。マイクロソフトによると、BitLocker は Windows Vista に密接に統合されているそうです。しかし、OS に密接に統合されていると、別のコンポーネントの障害が、BitLocker の障害またはセキュリティ侵害につながると考えるのが妥当ではないでしょうか。
個人的には、モジュール方式や障害の分離の正当性を確信しています。モジュール化されずに密接な統合を行うと複雑さが増します。もちろん、これが Windows Vista と BitLocker に当てはまるとは限りませんが、時間がたち、十分に分析されたら、そのとおりになるかどうかがわかります。
それでは、BitLocker についての私の意見を述べましょう。暗号技術者の使命を果たした正真正銘の信頼できる暗号技術者を採用したことに対して、Microsoft System Integrity チームに敬意を表します。この機能が、販促活動ではなく暗号化のために設計されたことは明らかです。したがって、「BitLocker は真剣に検討すべきである」というのが私の考えです。ここでは、BitLocker のセキュリティが十分であるかどうかについては述べません。繰り返しになりますが、その答えは時間の経過と、実社会からの評価によってわかります。多くの暗号化プリミティブや暗号化プロトコルが侵害されてきました。しかし、少なくとも、Microsoft System Integrity チームは、さらに優れたソリューションを構築する技術とプラットフォームを私たちに用意しています。
Justin Troutman は、熟練の暗号技術者であり、数学を専攻する大学生です。主な研究分野は対称暗号化です。彼は、暗号専門の調査およびコンサルティング会社である Extorque の創立者でもあります。
© 2008 Microsoft Corporation and CMP Media, LLC. All rights reserved; 許可なしに一部または全体を複製することは禁止されています.