(57)【特許請求の範囲】
【請求項１】
デジタルデバイスのパワーオン処理中にデジタルデバイスおよびデバイスのコンテントのセキュリティを確保する方法は、
メーカ識別子を、前記デジタルデバイスの外部からアクセス不可能な前記デジタルデバイスの第１リードオンリーメモリロケーションにストアし、
前記デジタルデバイスに一義的なデバイス識別子を、前記デジタルデバイスの外部からアクセス不可能な前記デジタルデバイスの第２リードオンリーメモリロケーションにストアし、
前記デジタルデバイスのパワーアップ毎に、
Ａ．前記メーカ識別子を前記第１リードオンリーメモリロケーションから読み出し、
Ｂ．前記デバイス識別子を前記第２リードオンリーメモリロケーションから読み出し、
Ｃ．前記メーカ識別子と前記デバイス識別子を用いて第１の暗号／暗号解読鍵を求め、
Ｄ．暗号化された第２の暗号／暗号解読鍵をメモリから読み出し、
Ｅ．前記第２の暗号／暗号解読鍵を前記第１の暗号／暗号解読鍵を用いて解読し、
Ｆ．暗号化されたプログラムファイルをメモリから読み出し、
Ｇ．前記暗号化されたプログラムファイルのハッシュ値を求め、
Ｈ．前記暗号化されたプログラムファイルを前記解読された第２の暗号／暗号解読鍵を用いて解読し、
Ｉ．前記解読されたプログラムファイルをメモリにストアし、
Ｊ．前記プログラムファイルに関連したハッシュ値をメモリから読み出し、
Ｋ．前記求められたハッシュ値と前記読み出されたハッシュ値とを比較し、
Ｌ．該比較の結果、ハッシュ値が等しい場合には、前記解読されたプログラムファイルを実行し、
Ｍ．該比較の結果、ハッシュ値が等しくない場合には、エラーメッセージを発生する。
【請求項２】
請求項１の方法において、前記ＦからＩまでの処理は、一時に、前記暗号化されたプログラムファイルの一部についてなされ、前記暗号化されたプログラムファイルについての処理が終了するまで繰り返される。
【請求項３】
請求項１の方法において、更に、
再オーサリングモードまたはノーマルモードを示す前記デジタルデバイスのブートローダーモードフラグをストアし、該ブートローダーモードフラグは前記デジタルデバイスの最初の製造時の再オーサリングモードを示し、
前記デジタルデバイスのパワーアップ毎に、更に、
Ｎ．前記ブートローダーモードフラグで示される前記モードを決定し、
Ｏ．前記ブートローダーモードフラグが前記ノーマルモードを示す場合のみ前記ＩからＭまでの処理を行い、
Ｐ．前記ブートローダーモードフラグが前記再オーサリングモードを示す場合には、
Ｑ．前記解読されたプログラムファイルを前記第２の暗号／暗号解読鍵を用いて再び暗号化し、
Ｒ．該再暗号化されたプログラムファイルをメモリにストアし、
Ｓ．前記再暗号化されたプログラムファイルの第２ハッシュ値を求め、
Ｔ．メモリから、前記プログラムファイルに関連する第３ハッシュ値を読み出し、
Ｕ．前記第１ハッシュ値と前記第３ハッシュ値とを比較し、
Ｖ．該比較の結果、ハッシュ値が等しい場合には、前記第２ハッシュ値をストアし、
Ｗ．該比較の結果、ハッシュ値が等しくない場合には、エラーメッセージを発生し、
Ｘ．前記ブートローダーモードフラグをセットして前記通常モードを示す。
【請求項４】
請求項３の方法において、前記Ｆ及びＱからＵまでの処理は、一時に、前記暗号化されたプログラムファイルの一部についてなされ、前記暗号化されたプログラムファイルについての処理が終了するまで繰り返される。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的にはデジタルデバイスに関し、より詳細には、デジタルデバイスのパワーアップシーケンス中にデジタルデバイスおよびデバイスのコンテントのためのセキュリティを提供することに関する。
【０００２】
【従来の技術】
インターネット（情報スーパーハイウェイ）は、莫大な量の情報を高速で、かつ容易に共有する方法を全世界に提供している。不幸なことに、広まりつつある情報のうちのかなりのパーセントが情報の所有者の同意のないものである。明らかな目的が、ソフトウェアプログラムおよび著作権のあるマテリアル、例えば音楽、映画、書籍および芸術の不法な交換にある多数のウェブサイト、ユースネットニュースグループ、および分散型サーバーネットワークがインターネットに存在している。
【０００３】
著作権のある音楽の不法な配信が著しく横行しており、非常に普及している分散型サーバーネットワークのいくつかは毎日何百万もの圧縮された音楽ファイルを交換している。著作権所有者の将来的に失われる収入を減らし、かつ所有者の権利を保つ努力の一環として、１８０を越える会社および組織から成るフォーラムが、安全デジタル音楽イニシアティブ（ＳＤＭＩ）として知られる一組のガイドラインを作成した。
【０００４】
ＳＤＭＩはデジタルオーディオのセキュリティに関する多くのガイドラインを規定しているが、主なセキュリティのファクターは２つある。一方は、コンテントファイルのセキュリティであり、他方は、デジタルデバイス内部にあるソフトウェアおよびシステムのセキュリティである。コンテントファイルのセキュリティを守ることは比較的簡単であり、通常、ある種の暗号化アルゴリズムおよび暗号化／暗号解読鍵の使用を必要とする。リキッドオーディオおよびインタートラストのような会社では、外部メディアに記憶されたコンテントファイルを保護するためのデジタル権利管理（ＤＲＭ）ソフトウェアを開発した。
【０００５】
セキュリティが守られたコンテントファイルをプレイするデジタルデバイスに対するセキュリティを守ることはより困難である。その理由は、このようにするには、本来的にセキュリティの守られていないプログラマブルプロセッサで実行されるソフトウェアを保護しなければならないからである。ユーザーはデジタルデバイスを物理的に所有しており、他方、メーカーとコンテントプロバイダはデジタルデバイスを物理的に所有していないので、デジタルデバイスのセキュリティを守ることは困難である。ユーザーはテスト装置、ロジックアナライザなどを使用することによりソフトウェアを通して、またはデジタルデバイス内のメモリチップその他のコンポーネントを置き換えることにより物理手段を介して、デジタルデバイスのハッキングを試みることができる。
【０００６】
ユーザーは、デジタルデバイスを物理的に所有しているので、メーカーはユーザーがデジタルデバイス内部の回路を物理的に改造しようとすることを困難にすること以外に、ハードウェアを物理的に保護することはできない。回路を保護するための極端な形態は不正改造を検出できる回路を設け、不正改造が行われると、自動的にデバイスが自動的に破壊されるようにすることである。デジタルデバイスは高価であるので、ハッキングするとデジタルデバイスが破壊されるようにすれば、割りの会わないことになり、ほとんどの普通のハッカーはハッキングを思い止どまるようになる。
【０００７】
デジタルデバイスのソフトウェア部分を完全に保護するためには、メーカーはデジタルデバイスのすべての作動上の特徴に対してセキュリティを提供しなければならない。デジタルデバイスをまずターンオンし、デジタルデバイスが実行するごく最初の動作から電源をオフにする直前の最終動作まで、ソフトウェアを保護する必要がある。デジタルデバイスのソフトウェア内にハッキングするための最良の時間は、恐らくはパワーオンシーケンス中である。このシーケンスは一般にブートアップシーケンスとも称されている。この理由は、パワーオンのシーケンス中にデジタルデバイスの制御装置の周辺でいくつかの異なるプログラムが通過するからである。ハッカーがデジタルデバイスに自分が設計したプログラムをロードアップするようにさせることができれば、ハッカーはデジタルデバイスを完全に制御できることになる。
【０００８】
これまで、デジタルデバイスのためのパワーオン時のセキュリティを提供せんとした発明は多数ある。一部の発明は、付属セキュリティプロセッサまたはチップを使用しなければならない。この解決案は複雑で高価なデバイス、例えばコンピュータに対しては有効であるが、ぎりぎりの少ない利益しかもたらさないようなデジタルデバイス、例えばオーディオプレイヤー、アクティブ画像フレームおよびその他のデジタル装置に対して付属セキュリティプロセッサを使用することは、単に有効な解決案とは言えない。米国特許第5,421,006号および同第5,379,342号はオペレーティングシステムに制御を移す前にオペレーティングシステムのブートブロックの証明を使用するセキュリティの守られたブートモデルを提供している。
【０００９】
米国特許第6,185,678号は、検証プログラムとオペレーティングシステムを記憶するメモリの双方のセキュリティを守る安全なモデルを提供している。この米国特許は時間と共に終了し、パワーオンシーケンス内のステップの有効性を短い時間スロットに限定する暗号証明を使用している。したがって、この米国特許第6,185,678号に示されているセキュリティモデルは不必要なほど複雑となっている。
【００１０】
米国特許第5,937,063号は、コマンドおよび命令の暗号化および暗号解読を使用する、改造可能なメモリ、例えばフラッシュメモリおよび消去可能なプログラマブルリードオンリーメモリに埋め込まれた、ブートアップファームウェアの不正な交換を防止するためのシステムを示している。この米国特許は自らの内蔵暗号化ユニットと共にセキュリティが守られたブートデバイスを使用している。
【００１１】
【発明が解決しようとする課題】
セキュリティを守るために、保護されたメモリスペースまたはセキュリティコプロセッサ内の実行プログラムを使用するこれら解決案には、システムの全体のハードウェア条件に対して大きな追加をしなければならないという重大な欠点がある。このように、ハードウェアの条件が増す結果、システムのダイの面積は広くなり、従って、コストも高くなる。
【００１２】
従って、デジタルデバイスおよび保護されたコンテントのための簡単かつ安全なパワーオンシーケンスを提供するための方法および装置に対するニーズが生じている。
【００１３】
【課題を解決するための手段】
１つの特徴によれば、本発明はデジタルデバイスのためのオペレーティングシステムまたはユーザーインターフェースプログラムを含む暗号化されたプログラムファイルの正当性を証明することによって、初期のパワーアップシーケンスからデジタルデバイスのセキュリティを守るための方法を提供するものである。この方法は、最初の暗号化／暗号解読鍵を計算する工程と、プログラムファイルに関連付けされた第２の暗号化／暗号解読鍵を読み出す工程と、暗号化されたオブジェクトファイルを読み出す工程と、暗号化されたオブジェクトファイルを認証する工程と、暗号化されたオブジェクトファイルの解読をする工程と、解読されたオブジェクトファイルをロードする工程と、オブジェクトファイルが認証された場合に解読されたオブジェクトファイルを実行する工程を含む。
【００１４】
別の特徴によれば、本発明はバインドされたプログラムファイルに対し、バインドされていないプログラムファイルを安全に再オーサリングするための方法を提供するものである。この方法は、第１鍵および第２鍵を得る工程と、バインドされていないオブジェクトファイルを読み出す工程と、バインドされていないオブジェクトファイルを認証する工程と、バインドされていないオブジェクトファイルを解読する工程と、前記解読されたオブジェクトファイルを再び暗号化する工程と、再び暗号化されたオブジェクトファイルを認証する工程と、バインドされていないオブジェクトファイルが認証された場合、再暗号化されたオブジェクトファイルをセーブする工程とを備える。
【００１５】
本発明は特別なセキュリティプロセッサまたは複雑なセキュリティアルゴリズムを設けなくても、不正なプログラムがデジタルデバイスの制御を行うことを防止することにより、保護されたコンテントを含むファイルのセキュリティを保証できるという主な利点を有する。
【００１６】
本発明の別の利点は保護されていない、または保護されているコンテントファイルをデジタルデバイスが処理できる充分なレベルのフレキシビリティを提供でき、コンテントファイルが保護されている場合には本発明は単一ユーザーまたはあるユーザーグループ専用のコンテントファイルをデジタルデバイスが処理できるようにするものである。
【００１７】
本発明の更に別の利点は、ダイの面積の全体の純増加量が少ないことである。本発明はセキュリティを提供するのにごくわずかのハードウェアだけで済む状態で、すなわちシステムのコストに対する影響が最小の状態で、ハードウェアの条件を無視できる量しか大きくしない。
添付図面を参照し、次の説明を検討すれば、本発明の上記特徴はより明瞭に理解できよう。
【００１８】
【発明の実施の形態】
以下、種々の実施例の製造および使用について詳細に説明する。しかしながら、本発明は広範な種々の特定の分野で具現化できる適用可能な発明の概念を多数提供するものであると理解しなければならない。本明細書に説明する特定の実施例は、発明を製造し、使用する特定の方法を単に説明するものであり、発明の範囲を限定するものではない。
【００１９】
デジタルデバイスは、デバイスのコンテントにアクセスしたがっているハッカーからの攻撃を受けやすい。これらデバイスは特にパワーアップ（ブートアップ）シーケンス中に脆弱である。多くのデジタルデバイスでは、パワーアップシーケンス中にパワーアップシーケンスを中断したり、または予定するプログラムと異なるプログラムをデジタルデバイスにロードできるようになっている場合、デジタルデバイスはハッカーによる操作に対してオープンな状態となっている。
【００２０】
多くのメーカーは製造プロセス中にデバイスのテストを容易にするための別のテストハードウェアも有している。このような同じテスト用ハードウェアは、内蔵されたセキュリティ対策に対抗するのに利用できる攻撃の別の侵入路となる。更に、デジタルデバイスはマイクロプロセッサまたはデジタル信号プロセッサ（ＤＳＰ）を含むことが多く、これらデジタルデバイスは製造中のマイクロプロセッサまたはＤＳＰの機能の正常性の判断を容易にするため、マイクロプロセッサまたはＤＳＰメーカーによって追加されるスキャンテストハードウェアにより、これらプロセッサを介した攻撃を受けやすくなっている。
【００２１】
本発明の説明で参照する例はデジタルデバイスであり、このことはハンドヘルドであり、単一機能を有する比較的簡単な内蔵型デバイスを意味するが、本発明の用途はこれら簡単なデバイスだけに限定されるものでない。この説明は、保護された音楽ファイルも主とするものであるが、本発明は保護されるコンテントを有する任意のファイルにも適用可能である。本発明はパワーアップシーケンスを経過し、ユーザーに情報を提供するために公衆の場所に設置される、基本的には内蔵コンピュータである情報キオスクまたはメモリ内にあるコンテントのためのセキュリティを必要とするコンピュータを含む、任意のデジタルデバイスで用途を有する。
【００２２】
セキュリティ問題の中心はデジタルデバイス自身であり、このケースではコード化されたコンテントファイル（暗号化されているか、または暗号化されていない）を入力として受け取ることができ、デコードされたコンテントをデジタルデバイスのユーザーに提供するものである。コード化されたコンテントファイルはデジタルデバイス内部のメモリに記憶してもよいし、デジタルデバイス内に挿入されるメモリカードに記憶してもよい。ユーザーは通常、小売場所を通してデジタルデバイスを購入し、このデバイスを所有するので、コンテントプロバイダはどのユーザーがデバイスに何をするかに関して管理できない。すなわちユーザーは意図する用途のためにデバイスを使用することもできるし、またはコンテントファイルにアクセスするためにデバイスにハッキングすることもできる。
【００２３】
次に、本発明の好ましい実施例に係わるデジタルデバイス１１０を示すブロック図である図１を参照する。図１に示されたこのデジタルデバイス１１０は、暗号化されたオーディオファイルおよび暗号化されていないオーディオファイルを演奏するように製造されたオーディオプレイヤーである。しかしながら、これまで述べたように、このオーディオファイルは図示した目的にしか使用されないものであるが、本発明はオーディオプレイヤーのみに限定されると見なしてはならない。このデジタルデバイス１１０はコネクタ１２５を介してパソコン１２０に結合されている。本発明の好ましい実施例によれば、パソコン１２０とデジタルデバイス１１０との間のコネクタ１２５は、ユニバーサルシリアルバス（ＵＳＢ）である。しかしながら、データを搬送できる、パラレルデータコネクタ、ＲＳ−２３２シリアルコネクタ、ファイアーワイヤーコネクタ、無線（ＲＦ）リンク、赤外線リンク、または有線もしくは無線の、他の任意のタイプのコネクタもＵＳＢコネクタの代替物として使用できる。
【００２４】
パソコン１２０はコネクタ１２５を通してデジタルデバイス１１０にコンテントを提供する。このコンテントは音楽ファイル、ブックオンテープファイル、ニュース、ビデオ、アートなどでよい。コンテントの所有者およびこの所有者とユーザーとの間の契約に応じて、コンテントの一部を保護したり、一部を保護しないようにすることもできる。本発明の別の実施例では、パソコン１２０は、インターネットへのダイレクトネトワークコネクション、オーディオ装置の一部、携帯電話、パーソナルデジタルアシスタン、デジタルデバイスにコンテントを提供できる他の任意のタイプのデバイスに置換される。
【００２５】
デジタルデバイス１１０の内部にはデジタル信号プロセッサ（ＤＳＰ）１３０が設けられており、このプロセッサはデジタルデバイス１１０の機能を制御する汎用マイクロプロセッサとして機能する。ＤＳＰ１３０は演奏目的のためにコンテントファイルのデコードも行う。ＤＳＰ１３０は必要なデータの暗号化および暗号解読も行う。ＤＳＰ１３０はリードオンリーメモリを含む内部メモリも有する。このリードオンリーメモリは変化しないプログラムおよび値を記憶するためのものである。本発明の好ましい実施例によれば、リードオンリーメモリは内部メモリに記憶されているプログラムおよび値を変えることができる再プログラム可能なリードオンリーメモリである。本発明の好ましい実施例によれば、リードオンリーメモリには２つのタイプがある。すなわちＤＳＰ１３０で実行されるプログラムによりアクセス可能な通常のリードオンリーメモリと、セキュリティが守られたリードオンリーメモリの２つのタイプがある。
【００２６】
セキュリティが守られたリードオンリーメモリは機能が通常のリードオンリーメモリに類似しているが、正当なプログラムしか読み出しのアクセスを行うことができない。セキュリティが守られたリードオンリーメモリはリードオンリーメモリおよびＤＳＰ１３０の一部であり、不正なプログラムのアドレス指定を許可せず、メモリスペースの特定部分、すなわちセキュリティの守られたリードオンリーメモリは通常のリードオンリーメモリとは別個のリードオンリーメモリとすることができる。例えば、ＤＳＰ１３０で実行される正当性の無いユーザープログラムはセキュリティが守られているリードオンリーメモリのコンテントを読み出すことはできないが、通常のリードオンリーメモリのコンテントは読み出すことができる。
【００２７】
ＳＤＭＩに記載されているセキュリティのガイドラインの１つは、コンテントファイルと単一のユーザーまたはデジタルデバイスとをバインドできることを求めている。コンテントファイルを単一のユーザーまたはデジタルデバイスにバインドすることにより、コンテントファイルに異なるデジタルデバイスでのアクセスが防止される。これを行う１つの方法は、各デジタルデバイスを一義的に識別し、コンテントファイルとデジタルデバイスとをバインドするのに、一義的な識別子を使用することである。
【００２８】
リードオンリーメモリ（ＲＯＭ）内のロケーション、またはＤＳＰ１３０の内部の専用記憶ロケーション内には２つの記憶ロケーションがある。第１の記憶ロケーションはデジタルデバイスのデータを識別するのに使用されるメーカー識別子を記憶し、そのメーカーが製造したどのデジタルデバイスも同じメーカー識別子を有することになる。第２の記憶ロケーションが各ＤＳＰ１３０に対して一義的なデバイス識別子を記憶する。このデバイス識別子は単一デジタルデバイスと使用するための暗号化されたファイルとをバインドするために使用できる。この理由は、同じデバイス識別子を有する別のＤＳＰは存在しないからである。
【００２９】
上記２つの識別子はＲＯＭに記憶され、ここではこれら識別子は変更できないが、ＤＳＰ１３０で実行されるプログラムはこれら識別子を読み出すことができる。ＤＳＰ１３０で実行が認められているプログラムしか、識別子の読み出しの実行が認められないので、このことはセキュリティの問題を生じない。これら識別子はＤＳＰ１３０内にあるので、識別子を物理的に変更しようとする試みの結果、ＤＳＰ１３０が破壊されやすい。本発明の別の好ましい実施例では、これら２つの識別子はセキュリティが守られたＲＯＭに記憶され、ＤＳＰ１３０で実行されるプログラムのサブセットしか、これら２つの識別子を読み出すことができない。
【００３０】
本発明の好ましい実施例によれば、デジタルデバイス１１０はＤＳＰ１３０を含む。しかしながら、デジタルデバイス１１０はＤＳＰ１３０の代わりに（またはＤＳＰ１３０に追加して）汎用マイクロプロセッサまたはマイクロコントローラを含むことができ、このように装備されたデジタルデバイスは等価的に機能する。
【００３１】
デジタルデバイス１１０の内部にはコンテントファイルを記憶するためのある形態の記憶メディア１４０、デバイスドライバー、暗号化されたデバイスコード、暗号化鍵、有効化鍵などの情報およびプログラムを記憶するためのメモリ１５０、スピーカー１６０およびヘッドフォンジャック１６５も設けられている。
【００３２】
本発明の好ましい実施例によれば、メモリ１５０は電気的に消去可能なプログラマブルリードオンリーメモリ（ＥＥＰＲＯＭ）である。しかしながら、再プログラムでき、不揮発性である、すなわち電源をオフにしてもメモリのコンテントが残る別のタイプのメモリも使用できる。適当な別のメモリの例として、消去可能なプログラマブルリードオンリーメモリ（ＥＰＲＯＭ）、フラッシュメモリ、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）およびプログラマブルリードオンリーメモリ（ＰＲＯＭ）が挙げられる。ＤＳＰ１３０は一時記憶のためにある種のスクラッチランダムアクセスメモリ（スクラッチＲＡＭ）を有することもできる。
【００３３】
記憶媒体１４０はコンテントファイルのための記憶ロケーションである。記憶メディア１４０はデジタルデバイス１１０内に永久的に固定してもよいし、また、スロットまたはコネクタを通して取り外したり、デジタルデバイス６０に取り付けてもよい。本発明の好ましい実施例によれば、メディア１４０の好ましい形態はコンパクトフラッシュ（ＣＦ（ＣＲ））であるが、マルチメディアカード（ＭＭＣ）、ＮＡＮＤ  ＦＬＡＳＨ、安全デジタル（ＳＤ）メモリカードまたはメモリスティック状のメディアを使用する場合でも、本発明は同じように作動できる。本発明の別の好ましい実施例によれば、別の形態の記憶装置も使用できる。これら記憶装置としては、フロッピーディスクドライブ（Ｒ）、ハードディスクドライブ、（ホストポートインターフェース（ＨＰＩ）を介してデジタルデバイスに接続されるような）別のプロセッサ、およびネットワークをベースとする記憶装置（例えばＵＳＢ接続される大規模記憶装置またはＴＣＰ／ＩＰをベースとする記憶装置）が挙げられる。
【００３４】
次に、図２を参照する。このブロック図はデジタルデバイス１１０のための代表的なパワーオンシーケンス２００を示す。ユーザーが電源ボタン（またはデジタルデバイスによってデジタルデバイス上のボタン）を押すと、パワーオンシーケンス２００がスタートする。このデジタルデバイスをパワーオンするのに多数の方法が可能である。デジタルデバイス１１０に電力が供給されると、デジタルデバイスはパワーオンセルフテスト（２２０）と一般に称されているテストを実行する。このテストでは、ＤＳＰ１３０内のインテリジェントコンポーネントが自らの、かつその他の内部コンポーネントのチェックを実行し、正しく作動するかどうかを確認する。
【００３５】
デジタルデバイス１１０内のコンポーネントがパワーオンセルフテストをパスした場合、ＤＳＰ１３０はＲＯＭ（２３０）内に記憶されているブートローダーソフトウェアを実行することによってブートプロセスをスタートする。このブートローダーソフトウェアは一般にＤＳＰのリードオンリーメモリ内に常駐しており、コード、例えばオペレーティングシステムまたはユーザーインターフェースソフトウェアを外部ソース（ＥＥＰＲＯＭ１５０または外部ＲＯＭまたはＲＡＭ）からＤＳＰのプログラムメモリ（２４０）へ転送する。このブートローダーは通常同じ半導体チップ、例えばＤＳＰ上にあるＤＳＰのリードオンリーメモリに常駐しているので、攻撃に対して比較的耐性がある。その理由は、オンチップメモリのコンテントを変えようと試みると、一般にＤＳＰ１３０が破壊されるからである。一旦、ブートローダーがオペレーティングシステムのソフトウェアまたはユーザーインターフェースソフトウェアのローディングを終了すると、このブートローダーは動作を完了し、実行制御を新しくロードされたソフトウェアに向ける。
【００３６】
ハッカーがオペレーティングシステムまたはユーザーインターフェースを自分の構造の１つに置換できる場合、ハッカーは自分の望む方法でメーカーが意図する態様とは一致しない可能性が高い態様でデジタルデバイス１１０を作動させ得るので、パワーオンシーケンス２００は攻撃を受けやすい。通常、このような攻撃はオペレーティングシステムまたはユーザーインターフェースソフトウェアがＥＥＰＲＯＭ１５０または外部ＲＯＭまたはＲＡＭに記憶されており、ハッカーはこのようなＥＥＰＲＯＭ１５０または外部ＲＯＭもしくはＲＡＭを異なる部品に置換させるだけでよいので、このような行為は比較的容易である。デジタルデバイス１１０が不正なオペレーティングシステムまたはユーザーインターフェースをロードしたり、実行することを防止するためにセキュリティが守られたブートローダーを使用できる。
【００３７】
通常のブートローダーはソフトウェアの正当性を確認するためのチェックを行うことなく実行するように命令されている任意のソフトウェアをロードし、実行する。他方、セキュリティが守られているブートローダーは暗号化され、正当化されているソフトウェアしか、ロードしたり実行したりしない。ソフトウェアが暗号化され、正当化されていない場合、セキュリティが守られたブートローダーはそのソフトウェアをロードも実行もせず、かつデジタルデバイスの制御をソフトウェアにパスしない。セキュリティの保護されたブートローダーはデジタルデバイス１１０およびそのコンテントのセキュリティを危うくし得るＤＳＰ１３０への不正なコードまたは改造されたコードのロードおよび実行を防止する。不正なコードまたは対応されたコードは誰に対してもデジタルデバイスへのコードのダウンロードを許可できる。
【００３８】
図３は、暗号化されたソフトウェアをロードし、実行するためのセキュリティが守られたブートローダーによって使用されるアルゴリズムのフローチャートを示す。この制御の保護されたブートローダーはＤＳＰ１３０からメーカーの識別子を読み出すことによってスタートする。メーカーの識別子はＤＳＰ１３０の製造プロセス中にデジタルデバイス１１０のメーカーに割り当てられた一義的な識別子である。セキュリティの保護されたブートローダーはＤＳＰ１３０からデバイス識別子も読み出す。しかしながら、デバイス識別子を必要としない、または利用できないような状況がある。かかる状況のひとつとして、デジタルデバイスのためのソフトウェアの開発時の製品開発中の状況が挙げられる。かかる状況では、ソフトウェアの単一のデジタルデバイスにバインドさせることは効率的ではないので、そのソフトウェアはメーカーの識別子を通して、そのメーカーにしかバインドできない。
【００３９】
メーカー識別子および恐らくはデバイス識別子を用い、ブートローダーは暗号解読鍵（ブロック３２０）を発生する。双方の鍵を利用できる場合、ブートローダーはメーカー識別子とデバイス識別子とを使用する。暗号解読鍵の発生時に双方の識別子を使用する場合、この鍵はバインド鍵と称される。メーカー識別子しか使用しない場合、この鍵はバインドされていない鍵である。本発明の好ましい実施例によれば、これら鍵を発生するのにセキュリティが守られたハッシング関数を使用する。使用されるハッシング関数とは、ＳＨＡ−１として知られる一般に公知のセキュリティが守られたハッシング関数である。ＳＨＡ−１は任意の長さの入力を取り込み、１６０ビットの結果を発生する。実際の鍵は１２８ビット長の長さであり、ＳＨＡ−１のハッシング関数を１６０ビット長の結果のうちの最初の１２８の連続するビットにすぎない。１６０ビットのＳＨＡ−１の結果のうちの任意の１２８ビット長の部分の結果、等価的に安全な符号化システムが得られるが、最初の１２８の連続するビットを選択するほうがより簡単であると理解すべきである。
【００４０】
このバインド鍵は次のように示される演算によって発生される。
【００４１】
【外１】
0004027738.tif 000002
【００４２】
ここで、「│」は連接演算子であり、「］128」は結果の最初の連続する１２８のビットしか使用しないことを意味する。バインドされない鍵は次のように示される演算によって発生される。
【００４３】
【外２】
0004027738.tif 000003
【００４４】
鍵（バインド鍵、またはバインドされていない鍵のいずれか）を発生した後に、セキュリティが守られたブートローダーはファイル鍵を読み出す。このファイル鍵は暗号化されたファイルと共に記憶された暗号化された暗号／暗号解読鍵である。暗号化されたどのファイルも、ファイル鍵と関連付けされている。この場合、ファイル鍵はセキュリティが守られたブートローダーがロードすることを望むオペレーティングシステムまたはユーザーインターフェースプログラムを含む暗号化されたプログラムファイルと関連付けされている。セキュリティが守られたブートローダーは次に暗号化されたファイル鍵の暗号解読をしなければならない（ブロック３３０）。本発明の好ましい実施例によれば、使用される暗号化および暗号解読アルゴリズムは周知のＳＡＦＥＲ  ＳＫ−１２８アルゴリズムである。このＳＡＦＥＲ  ＳＫ−１２８は対称的な暗号化アルゴリズムであり、このことは、暗号化および暗号解読の双方に１つの鍵を使用することを意味する。他の対称的暗号化／暗号解読アルゴリズムを数種リストアップすれば、例えばＤＥＳ、ＡＥＳ、ブローフィッシュまたはＲＣ５も使用できる。
【００４５】
ファイル鍵の暗号解読は次のように示すことができる。
【００４６】
【外３】
0004027738.tif 000004
【００４７】
ここで、file＿keyは暗号化されたファイル鍵であり、この鍵はブロック３２０で計算されるバインド鍵またはバインドされていない鍵のいずれかであり、暗号化されたファイル鍵を解読するための暗号解読鍵として使用される。
【００４８】
セキュリティが守られたブートローダーは、手元の解読された暗号化／暗号解読鍵により解読されたプログラムファイルの有効性を認証し始める。本発明の好ましい実施例によれば、セキュリティが守られたブートローダーはハッシュトメッセージ認証コード（ＨＭＡＣ）として知られる関数を使用する。この関数は暗号化されたプログラムファイルを認証するのに、下記のように示される式を有する。
【００４９】
【外４】
0004027738.tif 000005
【００５０】
ここで、ＸＯＲはビット毎の排他的ＯＲ関数であり、ｏｕｔｅｒｐａｄは１６進値０×５ｃが６４回繰り返されたシーケンスであり、ｉｎｎｅｒｐａｄは１６進値０×３６が６４回繰り返されたシーケンスである。
【００５１】
本発明の好ましい実施例によれば、一度に１ブロック毎暗号化されたファイルが読み出され（ブロック３４０）、新しく読み出されたブロックを使ってＨＭＡＣ値が更新され（ブロック３４５）、ブロックの暗号解読が行われ、記憶される（ブロック３５０）。すべての暗号化されたファイルが読み出され、暗号解読されるまでこのような操作が繰り返される。本発明の好ましい実施例によれば、暗号化されたファイルブロックは暗号解読後、メモリにロードされる。これとは異なり、プログラムメモリではなく、メモリの別の部分に暗号解読されたファイルブロックを記憶してもよい。本発明の別の好ましい実施例によれば、暗号化された全ファイルを読み出し、１回の演算で暗号解読されると、容易に理解できよう。
【００５２】
全ファイルが解読され、記憶された後に、セキュリティが守られたブートローダーは暗号化されたファイルと共に記憶されていたＨＭＡＣ値を読み出す。このセキュリティが守られたブートローダーは読み出したＨＭＡＣ値とこれが計算したＨＭＡＣ値とを比較する。これら２つのＨＭＡＣ値が同一であれば、暗号化されたファイルは認証されたものであり、ブートローダーはプログラムを実行できる（ブロック３６５）。２つのＨＭＡＣ値が一致しなければ、ブートローダーは実行を終了する。本発明の別の好ましい実施例によれば、ブートローダーは実行を終了するのに先立ち、エラーメッセージを発生する。
【００５３】
記憶されたＨＭＡＣ値と計算されたＨＭＡＣ値とは、メーカー識別子あるいはメーカー識別子とデバイス識別子の双方を使って解読されたファイル鍵を使用して発生されるので、ハッキングするハッカーはほぼ確実に、自分の交換用のプログラムに対し、異なるＨＭＡＣ値を発生することができなくなり、この結果、２つのＨＭＡＣ値を比較しても同じとなる。従って、２つのＨＭＡＣ値が一致する場合、暗号化されたプログラムファイルはデジタルデバイス用のプログラムファイルになるはずである。
【００５４】
デジタルデバイス１１０の製造プロセス中には、ここのデジタルデバイスのデバイス識別子を使ってプログラムファイルを暗号化し、これをデジタルデバイスのメモリ１５０内に記憶することは極めて非効率的となる。この非効率性は主にデバイス識別子を得て、プログラムファイルを暗号化することが困難であることに起因する。そのようにするには、アセンブリステーションごとに１台のコンピュータが必要となり、製造ラインを不必要にスローダウンさせることになる。全体の製造速度を低下するのではなく、メーカー識別子を使って１つの包括的な暗号化されたプログラムファイルを発生し、各デジタルデバイス１１０にこれを記憶する。包括的な暗号化プログラムファイルはメーカー識別子を使って暗号化され、そのメーカーによって製造されたすべてのデジタルデバイスで同じプログラムファイルが実行される。次に、最初のパワーアップ中にセキュリティが守られたブートローダーは、暗号化されたプログラムファイルを解読し、デバイス識別子とメーカー識別子の双方を使ってファイルを再び暗号化し、プログラムファイルをここのデジタルデバイスにロックする。この初期のパワーアップは製造プロセスの機能テストおよび品質管理段階の間で行うことができ、製造プロセスに対して時間を追加するものではない。
【００５５】
次に、再オーサリングモードとしても知られる、プログラムファイルを個々のデジタルデバイスにロックするための、セキュリティが守られたブートローダーによって使用されるアルゴリズムを示すフローチャートである図４を参照する。再オーサリングに使用される、セキュリティが守られたブートローダーは、通常のパワーアップシーケンス中に暗号化されたプログラムファイルをロードするために使用される、同じセキュリティが守られたブートローダーでもよいし、また、特別な１回使用のセキュリティが守られたブートローダーでもよい。本発明の好ましい実施例によれば、再オーサリングに使用されるセキュリティが守られたブートローダーは、通常のパワーアップシーケンス中に使用された同じセキュリティが守られたブートローダーである。どのモードでオペレートすべきかをセキュリティが守られたブートローダーに知らせるために、ブートローダーモードフラグが使用される。
【００５６】
セキュリティが守られたブートローダーは記憶ロケーションからメーカー識別子を読み出し、これを使ってバインドされていない鍵を発生する。このバインドされていない鍵はメーカー識別子を使って暗号化キーを使って暗号化されたプログラムファイルを解読するのに使用される。バインドされていない鍵は次の演算を使用して作成される。
【００５７】
【外５】
0004027738.tif 000006
【００５８】
ここで、「］128」は結果の最初の１２８の連続するビットしか使用しないことを意味する。
【００５９】
次に、ブートローダーは暗号化鍵を作成する。この鍵はデバイス識別子およびメーカー識別子の双方を使用しており、次のように表記できる。
【００６０】
【外６】
0004027738.tif 000007
【００６１】
ここで、「│」は連接演算子であり、「］128」は結果の最初の連続する１２８のビットしか使用しないことを意味する。
【００６２】
暗号化鍵を得た後にセキュリティが守られたブートローダーは、ブートローダーモードフラグを通常のセキュリティが守られたブートローダー作動モードに変更し、このフラグをメモリに書き込み、暗号化されたプログラムファイルの認証を開始する。プログラムファイルをロードするのにセキュリティの守られたブートローダーを使用する場合と同じように、再オーサリングモードのセキュリティが守られたブートローダーは認証のためにハッシュされたメッセージ認証コード（ＨＭＡＣ）関数を使用する。しかしながら、再オーサリングモードではブートローダーは２つの異なるＨＭＡＣ値を維持する。一方のＨＭＡＣ値はコード証明に使用されるものである。すなわち暗号解読されるプログラムファイルの正当性を証明するのに使用される。第２のＨＭＡＣ値は作成される、新しく再暗号化されるプログラムファイルのための認証値を発生するのに使用される。第２のＨＭＡＣ値はその後、デジタルデバイス１１０がパワーアップされるたびに、再符号化されたプログラムファイルを認証するためにセキュリティが守られたブートローダーによって使用するための値である。
【００６３】
本発明の好ましい実施例によれば、一度に１ブロック毎に暗号化されたファイルが読み出され（ブロック４４０）、新しく読み出されたブロックを使って第１のＨＭＡＣ値が更新され（ブロック４４５）、バインドされていない鍵を使ってブロックが暗号解読され（ブロック４５０）、暗号化キーを使ってブロックが再暗号化され、メモリに記憶され（ブロック４５５および４６０）、再暗号化されたブロックを使って第２のＨＭＡＣ値が更新される。暗号化されたファイル全体が読み出され、解読されるまで、このような操作が繰り返される。本発明の別の好ましい実施例では、暗号化された全ファイルを読み出し、１回の演算で解読されると、容易に理解できよう。
【００６４】
ファイル全体が再び暗号化され、記憶された後に、セキュリティが守られたブートローダーは暗号化されたファイルと共に記憶されていたＨＭＡＣ値を読み出す。セキュリティの守られたブートローダーはこの読み出されたＨＭＡＣ値とブートローダーが計算した第１ＨＭＡＣ値とを比較する。２つのＨＭＡＣ値が同一であれば、再暗号化されたファイルは認証されたものであり、第２ＨＭＡＣ値をメモリに記憶し、ブートローダーは実行を完了する。ＨＭＡＣ値が一致していなければ、ブートローダーは実行を中止し、エラーメッセージを発生する。
【００６５】
アタッカーがデジタルデバイスに物理的にアクセスする時は、ソフトウェアに基づくセキュリティシステムは全体のセキュリティを与えるには充分でない。ソフトウェアに基づくセキュリティシステムを補助するために、ハードウェアのサポートは存在していなければならない。冒頭で述べたように、本発明の好ましい実施例に係わるＤＳＰ１３０は、正当なプログラムにしかアクセスできない内部メモリの一部を有する。この内部メモリの部分はセキュリティが守られたリードオンリーメモリとして知られる。このセキュリティが守られたリードオンリーメモリ内のメモリロケーションをアドレス指定できるのは正当なプログラムだけである。
【００６６】
増設ハードウェアに基づくセキュリティの特徴は、ホストポートインターフェース（ＨＰＩ）を通してロードされるプログラムがアドレス指定できるメモリ量を少なくすることである。このＨＰＩはデジタルデバイスの機能を制御するのに使用されるオプションのマイクロコントローラとＤＳＰ１３０との間のインターフェースである。マイクロコントローラがなくてもＤＳＰ１３０を使ってデジタルデバイスの機能を制御できる。作動中のデジタルデバイスを制御するので、マイクロコントローラはソフトウェアに基づくセキュリティ機能を破ろうと試みるハッカーの攻撃の対象となり得る。マイクロコントローラによって生じるセキュリティの抜け孔を小さくする１つの方法は、ＨＰＩを通してＤＳＰ１３０にロードされるプログラムがアドレス指定できるメモリスペース量を少なくすることである。このプログラムは利用可能なメモリスペースの小さい部分へのアクセスおよびその使用だけに限定できる。感知できるプログラムおよびデータ値を不正なプログラムから分離するのに、このメモリスペースのこのような区分化を使用できる。
【００６７】
ほとんどのＤＳＰおよびマイクロプロセッサは機能テストおよびエミュレーションを容易にするための追加ハードウェアを含んでいる。機能テストおよびエミュレーションを行うためのハードウェアに対する一般に使用される技術規格はＪＴＡＧ規格としても知られるＩＥＥＥ技術規格１１４９.１−１９９０である。この追加ハードウェアはユーザーがＤＳＰで走っているプログラムの実行を停止し、メモリおよびレジスタのコンテントを検査できるようにするものである。ユーザーはメモリロケーションおよびレジスタの値を変更することもできる。このような主なセキュリティの孔を閉じるには、ＤＳＰメーカーは一旦機能テストおよびエミュレーションが完了すると、ＪＴＡＧハードウェアを含まないようにするか、ＪＴＡＧハードウェアをディスエーブルするかのいずれかを行わなければならない。
【００６８】
図示した実施例を参照して本発明について説明したが、この説明は限定的に考えるものではない。当業者が明細書の説明を読めば、図示した実施例の種々の変更および組み合わせだけでなく、本発明の他の実施例も明らかとなろう。従って、特許請求の範囲はかかる変形例または実施例を含むものである。
【００６９】
以上の説明に関して、更に以下の項を開示する。
（１）
Ａ）第１暗号化／暗号解読鍵を計算する工程と、
Ｂ）第２暗号化／暗号解読鍵を読み出す工程と、
Ｃ）暗号化されたオブジェクトファイルを読み出す工程と、
Ｄ）前記暗号化されたオブジェクトファイルのためのマッピング値を計算する工程と、
Ｅ）前記暗号化されたオブジェクトファイルの暗号解読をする工程と、
Ｆ）前記暗号解読されたオブジェクトファイルを記憶ロケーションに記憶する工程と、
Ｇ）マッピング値を読み出す工程と、
Ｈ）前記計算したマッピング値と前記読み出されたマッピング値とを比較する工程と、
Ｉ）前記比較したマッピング値が等しい場合に、暗号解読したオブジェクトコードを実行する工程と、
Ｊ）前記比較したマッピング値が等しくない場合に、エラーメッセージをアサートする工程とを備えた、デジタルデバイスおよびそのコンテントのパワーオンプロセス中のセキュリティを保証するための方法。
【００７０】
（２）  前記第１鍵を使って前記第２暗号化／暗号解読鍵自身を暗号化し、暗号解読する、第１項記載の方法。
（３）  第２記憶ロケーションから識別子を読み出す工程を更に含む、第１項記載の方法。
（４）  対称的な鍵の暗号化および暗号解読アルゴリズムを使って前記暗号化工程および暗号解読工程を実行する、第１項記載の方法。
（５）  公開鍵の暗号化および暗号解読アルゴリズムを使って前記暗号化工程および暗号解読工程を実行する、第１項記載の方法。
【００７１】
（６）  コンテントを記憶するための第１記憶ロケーションと、
プログラムファイルを記憶するためのメモリと、
前記第１記憶ロケーションおよび前記メモリに結合されており、前記コンテントをデコードするようになっているプロセッサとを備えたデジタルデバイスであって、前記プロセッサが、
リードオンリーメモリと、
内部に記憶された識別子を含むセキュリティが守られた記憶ロケーションと、
前記識別子を使ってデータを暗号化し、かつ暗号解読するための暗号化／暗号解読回路と、
前記データを認証するのに使用するための、前記データに基づくマッピング値を発生するためのマッピング値発生器とを更に備えた、前記デジタルデバイスのセキュリティを守るための内蔵装置によりセキュリティが守られたコンテントをプレイするためのデジタルデバイス。
【００７２】
（７）  前記プロセッサがディスエーブルされるスキャン境界テスト回路を更に含む、第６項記載のデジタルデバイス。
（８）  第１パーティション内で実行される第１プログラムと第２パーティション内で実行される第２プログラムとが相互作用しないようにするための、パーティションに分けられたプログラムメモリスペースを前記プロセッサが更に含む、第６項記載のデジタルデバイス。
（９）  前記デジタルデバイスがオーディオプレイヤーである、第６項記載のデジタルデバイス。
（１０）  パソコンに結合するためのインターフェースを更に含む、第６項記載のデジタルデバイス。
【００７３】
（１１）  暗号化され、認証されたブートソフトウェアだけを保証することにより、デジタルデバイス１１０内のソフトウェアおよびシステムのセキュリティを守るための、セキュリティが守られたブートローダーが、デジタルデバイス１１０にロードされ、実行される。デジタル信号プロセッサ（１３０）により内部ＲＯＭ（１８０）から暗号化されたブートソフトウェアが読み出され、デバイスおよびメーカー識別コード（１７０）を使って認証される。このブートソフトウェアが認証されなければ、デジタルデバイス１１０はブートしない。
【００７４】
本願は、２００２年７月６日に「デジタルデバイスのセキュリティを守るための安全なブートローダ」を発明の名称として米国特許商標局に出願された仮特許出願第６０／３０３、７４３号に基づく優先権を主張するものである。本願ではこの仮特許出願の内容を参考例として援用する。
【図面の簡単な説明】
【図１】本発明の好ましい実施例に係わるデジタルデバイスを示す。
【図２】デジタルデバイスのパワーアッププロセス中に生じるステップの代表的なシーケンスを示すフローチャートである。
【図３】本発明の好ましい実施例により、暗号化されたプログラムファイルをロードするセキュリティが守られたブートローダーによって実行される操作を示すフローチャートである。
【図４】本発明の好ましい実施例により、再オーサリングモードで作動するセキュリティが守られたブートローダーによって実行される操作を示すフローチャートである。
【符号の説明】
１１０  デジタルデバイス
１３０  ＤＳＰ
１５０  ＥＥＰＲＯＭ
２４０  ＲＯＭ
【図１】
0004027738.tif 000008
【図２】
0004027738.tif 000009
【図３】
0004027738.tif 000010
【図４】
0004027738.tif 000011