(57)【特許請求の範囲】
【請求項１】
中央処理装置（ＣＰＵ）をシステム内の他のコンポーネントへ接続するためのブリッジであって、
該ブリッジ内に設けられたセキュリティエンジンを備え、
前記セキュリティエンジンは、該ブリッジを介して行われるデータアクセスオペレーションに暗号化サービスを提供するよう動作して、前記ＣＰＵによって暗号化デジタルコンテンツから生成され該ブリッジによって受け取られるクリアテキストデータを暗号化して暗号テキストを生成し、該ブリッジに結合されたシステムメモリに該ブリッジを介して前記暗号テキストを転送し、
前記ブリッジは、前記暗号テキストを、前記ブリッジに結合されており且つ前記暗号テキストを復号して生成したコンテンツを表示するグラフィック処理装置（ＧＰＵ）へ提供するようになっている、
ブリッジ。
【請求項２】
前記ブリッジは、前記ＣＰＵから受け取ったコマンドストリームを暗号化し、暗号化されたコマンドストリームを前記ブリッジに結合されたグラフィック処理装置へ提供するようになっている、請求項１に記載のブリッジ。
【請求項３】
改善されたデジタルコンテンツの保護を有するデジタルコンテンツシステムにおいて、
暗号化デジタルコンテンツからクリアテキストデジタルデータを生成するようになっている中央処理装置（ＣＰＵ）と、
前記ＣＰＵに結合され、前記暗号化デジタルコンテンツに対応する前記クリアテキストデータを受け取るブリッジと、
前記ブリッジに結合されたシステムメモリと、
前記ブリッジに結合されたグラフィック処理装置（ＧＰＵ）と、
前記ブリッジ内に設けられたセキュリティエンジンであって、暗号化サービスを提供して、前記クリアテキストデータを該セキュリティエンジンによって暗号化して暗号テキストを生成し、前記ブリッジを介して前記暗号テキストを前記システムメモリ及び前記暗号テキストを復号して生成したコンテンツを表示する前記グラフィック処理装置に転送する、該セキュリティエンジンと、
を備えるデジタルコンテンツシステム。
【請求項４】
前記ブリッジは、ビデオ信号を受け取り、該ビデオ信号のビデオキャプチャ用のコンテンツ保護を提供するよう暗号化サービスを実行するようになっている、請求項１に記載のブリッジ。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
[0001]本出願は、本出願人へ共に譲渡され、且つ、本願と同日に米国特許商標庁に出願された「Apparatus, System, and Method for Digital Content Protection」と題する米国特許出願（代理人管理番号ＮＶＩＤ−１０６／０２ＵＳ）に関連するものであり、当該米国特許出願の内容を本明細書に援用する。
【発明の分野】
【０００２】
[0002]本発明は、一般に、デジタルコンテンツの保護を提供するための技術に関するものである。より詳細には、本発明は、中央処理装置（ＣＰＵ）からデジタルコンテンツの保護の側面をオフロード（移動）する技術に関するものである。
【発明の背景】
【０００３】
[0003]多くの消費者向け製品における問題の一つは、傍受されてしまうことのある信号経路に沿ってデジタルコンテンツが送信されねばならいことである。その結果として、デジタルコンテンツプロバイダーは、ハッカーによるデジタルコンテンツの許可されていないコピーについて心配しなければならない。例えば、ホームエンターテイメントシステムは、パーソナルコンピュータ（ＰＣ）、グラフィックサブシステム、高精細テレビジョン、セットトップボックス、デジタルビデオレコーダ及びプレーヤ、並びにデジタル汎用ディスク（ＤＶＤ）プレーヤを含み得る。従って、暗号化されていないデジタルコンテンツ（しばしば「クリアテキスト」コンテンツとして知られる）は、ハッカーが、例えば、一以上の信号バスの出力を使用することによって傍受されてしまうというリスクがある。
【０００４】
[0004]デジタルコンテンツの保護は、オーディオ及びビデオコンテンツが許可なしにコピーされないようにするために、その重要性を増してきている。デジタルコンテンツの保護は、とりわけ、傍受され得るような信号バスを通して送信されるコンテンツを暗号化するためのプロトコルを含む。デジタル送信コンテンツ保護（ＤＴＣＰ）スキームは、１９９８年に五つの会社（５Ｃ）によって開発され、日立、インテルコーポレーション、松下電器産業、ソニーコーポレーション及び東芝コーポレーションによって１９９８年７月に刊行された文献「5C Digital Transmission Content Protection」に記載されており、当該文献の内容を本明細書に援用する。このＤＴＣＰの方法のより詳細な点については、日立、インテルコーポレーション、松下電器産業、ソニーコーポレーション及び東芝コーポレーションによって２００４年１月に刊行された「Digital Transmission Content Protection Specification」改訂１．３に記載されており、その内容を本明細書に援用する。ＤＴＣＰの方法は、米国電気電子技術者協会（ＩＥＥＥ）１３９４マルチメディアバスに使用し得るものであり、ソースデバイス及びシンクデバイス（コンテンツストリームを受け取る装置）のためのプロトコルであってコンテンツの安全な送信を確立するためのプロセスを含んでいる。ＤＴＣＰの方法は、認証及びキー交換（ＡＫＥ）プロトコル、コンテンツ暗号化、並びに、暗号化モードインジケータ（ＥＭＩ）を使用するコピーコントロール情報（ＣＣＩ）を含む。
【０００５】
[0005]ＤＴＣＰのようなデジタルコンテンツの保護のスキームの１つの欠点は、コンテンツがデバイス間のシステムバスにて暗号化されるにもかかわらず、クリアテキストデータが一以上の内部データバスで盗まれやすいというものである。例えば、ＰＣベースのマルチメディアシステムにおけるＤＶＤの再生について考える。ＤＶＤコンテンツは、ＤＶＤプレーヤから暗号化された形式にて中央処理装置（ＣＰＵ）によって受け取られる。ＣＰＵは、受け取ったデジタルコンテンツを復号する。次いで、ＣＰＵは、そのデータを表示装置へ書き込む前にそのＤＶＤデータを再暗号化する。しかしながら、ＣＰＵによって行われる復号及び再暗号化では、通常、クリアテキストデータをシステムメモリへ書き込む必要があり、この場合には、コンテンツがメモリバスにて盗まれ易いのである。
【０００６】
[0006]デジタルコンテンツの保護スキームの別の欠点は、高精細ビデオの暗号化及び復号を行うのにＣＰＵに相当の負荷を掛けてしまうということである。例えば、アドバンスド暗号化標準（ＡＥＳ）は、略１６サイクル/バイト（Ｂ）の暗号化コストを要する。圧縮フォーマット高精細テレビジョン（ＨＤＴＶ）は、約５０ＭＢ/ｓの暗号化帯域幅に相当し、各圧縮ＨＤＴＶコンテンツストリームは利用可能なＣＰＵクロックサイクルの８００ＭＨｚに相当する。これは、数ギガヘルツのクロックレートで動作するＣＰＵには相当の負荷である。その上、幾つかのマルチメディアシステムにおいては、同時に幾つかのビデオストリームを取り扱う能力を有することが望まれており、これによって、最悪のケースのシナリオでは、ＣＰＵに対する暗号化/復号の全負荷がＣＰＵクロックサイクルの大部分を消費することがある。
【０００７】
[0007]従って、デジタルコンテンツの保護を提供するための改良された装置、システム及び方法が望まれている。
【発明の概要】
【０００８】
[0008]中央処理装置をシステムの他のコンポーネントへ接続（ブリッジ）するためのブリッジについて開示する。ブリッジにおけるセキュリティエンジンは、暗号化サービスが中央処理装置からブリッジへと移動されるようにする。一実施の形態では、セキュリティエンジンは、ブリッジの非安全なインターフェイスにおいて、保護されるべきデータを暗号テキストとして暗号化する。
【０００９】
[0009]本発明は、添付図面と共に以下なされる詳細な説明を参照することによって、より十分に理解されよう。これら図を通して対応する部分を、同様の参照符号によって指し示す。
【発明の詳細な説明】
【００１０】
[0018]図１は、本発明の一実施の形態によるデジタルコンテンツシステム１００のブロック図である。デジタルコンテンツシステム１００は、セキュリティエンジン１１２を有するブリッジ１１０を含む。本発明の一実施の形態によれば、セキュリティサービスは、ＣＰＵ１２０より下流の少なくとも一つのデバイス用のデータの暗号化といったものであり、ＣＰＵ１２０からセキュリティエンジン１１２を使用するブリッジ１１０へ移動される。
【００１１】
[0019]ブリッジ１１０は、単一チップとして、一群のチップとして、又はＣＰＵ１２０が形成されているチップの一部分として実装し得るものである。以下に詳述するように、ブリッジ１１０は、中央処理装置（ＣＰＵ）１２０を他のデバイスへと接続（ブリッジ）するためのチップセットの部分として使用される任意のブリッジを含み得るものであり、例えば、ノースブリッジチップ、サウスブリッジチップ、又は、ノースブリッジチップ及びサウスブリッジチップの組み合わせといったものである。
【００１２】
[0020]セキュリティエンジン１１２は、ブリッジ１１０内で暗号化サービスを実行する。典型的な暗号化サービスとしては、暗号化、復号、及びトランスコード（すなわち、異なる暗号化フォーマット間の変換）がある。暗号化サービスは、例えば、保護される必要のあるデータクラスに適用し得る。あるアプリケーションでは、ブリッジを通るデータの全てが暗号化サービスを必要とする。しかしながら、より一般的には、保護を必要とするデータ、例えば、デジタルコンテンツの保護を必要とするデータのようなデータのみが、暗号化サービスを必要とする。セキュリティエンジン１１２によって提供される暗号化サービスを利用して、ハッキングを受けやすいデジタルコンテンツシステム１００の各部におけるデータ（例えば、ビデオコンテンツのようなデジタルコンテンツ）を保護してもよい。
【００１３】
[0021]暗号化サービスは、データ書込みオペレーションのようなデータアクセスオペレーション中に提供することが可能である。暗号化/復号キー１１４は、暗号化サービスをサポートするためにセキュリティエンジン１１２に記憶されている。単一の暗号化及び／又は復号キーが記憶されているが、より一般的には、暗号化、復号、又はトランスコードのうち一以上のタイプをサポートするために追加のキーを記憶してもよい。一実施の形態では、コンテクストポインター１１６が、メモリ１３０内のコンテクストデータ１１８といったコンテクストデータのソースを指示する。コンテクストデータ１１８は、特定のソース/宛先アドレスに対してセキュリティエンジン１１２によって行われるべき特定の暗号化サービス（例えば、暗号化、復号又はトランスコード）をコンテクストスイッチが選択できるようにするデータ構造体を含む。各コンテクストが、また、特定の暗号化/復号キーを指示してもよい。
【００１４】
[0022]一実施の形態においては、セキュリティエンジン１１２は、圧縮又は非圧縮データの標準暗号化及び復号技法（例えば、アドバンスド暗号化標準（ＡＥＳ）、トリプルデータ暗号化標準（３ＤＥＳ）、又はパブリック/プライベートキーリモートサーバー管理（ＲＳＭ））をサポートする。しかしながら、セキュリティエンジン１１２は、また、他の暗号化プロトコルをサポートするように構成されていてもよい。典型的なトランスコードアプリケーションとしては、一つの暗号化標準のフォーマットから別の一つの暗号化標準のフォーマットへの変換、又は、二つの異なる暗号化キーの間の変換、例えば、第１キーでのＡＥＳと第２キーでのＡＥＳとの間の変換の実行がある。セキュリティエンジン１１２は、好ましくは、専用の改竄防止暗号化ハードウェアを少なくとも部分的に用いて実装されており、これにより、ソフトウェアのみによる暗号化／復号アルゴリズムの実行と比較してセキュリティが改善されるという利点が得られる。また、セキュリティエンジン１１２を専用ハードウェアで実施することによって、更に、性能及び電力消費における改善が可能となる。
【００１５】
[0023]ブリッジ１１０は、ＣＰＵ１２０、メモリ１３０、及びグラフィック処理装置（ＧＰＵ）１４０（図示の例ではディスプレイ１５０に結合されている）といった他の装置を結合している。ブリッジ１１０は、フロントサイドバス（ＦＳＢ）のようなバスインターフェイス１２１を有するバス１２２によって、ＣＰＵ１２０に結合されている。ＣＰＵをブリッジに結合するバスインターフェイス１２１は、典型的には、専用高速インターフェイスであり、当該専用高速インターフェイスは、半田接続、埋め込み回路パス、及び高速なデータ速度のために、バスへのハッキングを困難なものとするのであり、本来的にセキュリティの高いものである。従って、以下の説明を通じて、クリアテキストデータがＣＰＵ１２０からブリッジ１１０へバスインターフェイス１２１を通して安全に送信できることが理解されるであろう。これは、アセンブルされたユニットにおいては、バスインターフェイス１２１からハッカーがデータを傍受することが、非常に難しいものであるからである。
【００１６】
[0024]システム１００においては、ブリッジ１１０とコンポーネント１３０及び１４０のような他のコンポーネントとの間に非安全なリンクを有する幾つかの経路がある。リンクが安全でないのは、例えば、ブリッジインターフェイス１２４又は１２６及びそれに関連するバス１３５又は１４５が潜在的にハッカーによってアクセスできる場合である。例えば、メモリバス１３５又はＧＰＵ１４０へのバス１４５は、それらバス１３５又は１４５が、確実に半田付けされていないか、及び／又は、それらバス１３５又は１４５へのハッキングが可能であるような低いデータレートを有する場合には、安全ではないことがある。
【００１７】
[0025]入力経路としては、ＣＰＵ１２０からブリッジ１１０への直接書込みのような、他のデバイスからブリッジ１１０への入力データの書込み経路がある。出力経路としては、ＧＰＵ１４０への書込み又はメモリ１３０への書込みのように、ピアツーピア技法を使用する他のデバイスへのブリッジ１１０からの出力データの直接書込み経路がある。更に、直接メモリアクセス経路としては、ＣＰＵ１１０がメモリ１３０へ書き込む直接メモリアクセスのようなメモリ１３０への直接書込み経路がある。ブリッジ１１０は、一つのデバイスから別の一つのデバイスへデータを書き込みすることが可能であり且つ直接メモリアクセスを可能とする任意のインターフェイスを利用できる。一実施の形態では、ブリッジ１１０は、ＧＰＵ１４０のような少なくとも一つ他のデバイスとの高速インターフェイスとして、周辺コンポーネントインターフェイスエクスプレス（ＰＣＩ-Ｅ）を使用するようになっている。ＰＣＩ-Ｅは、周辺コンポーネントインターフェイススペシャルインタレストグループ（ＰＣＩ-ＳＩＧ）によって刊行された「ＰＣＩｅベース仕様書」に記載された高速インターフェイス標準であり、この仕様書の内容を本明細書に援用する。しかしながら、より一般的には、ＣＰＵ１１０をブリッジ１１０へ結合するＰＣＩ-Ｅの代わりに周辺コンポーネントインターフェイス（ＰＣＩ）のような他の工業標準インターフェイスを使用することも可能である。
【００１８】
[0026]一実施の形態では、セキュリティエンジン１１２は、ＰＣＩデバイスであり、当該ＰＣＩデバイスを、例えば、ＰＣＩバス０に実装して、セキュリティエンジン１１２をマザーボード製造時に認証及び承認することを可能にしている。ＰＣＩアーキテクチャーにおいては、一次バス番号、二次バス番号、及び下位バス番号に対応する異なるバス番号がある。ＰＣＩバス０は、ホストブリッジが接続するバスであるものと定義され、当該ホストブリッジは、ＣＰＵをＰＣＩシステムへ接続する。暗号化/復号キーをセキュリティエンジン１１２へロードするために特権書込みを使用してもよい。
【００１９】
[0027]図１は、ＣＰＵ１２０においてビデオプレーヤ（ＶＰ）アプリケーション１９０及びグラフィックドライバー１８５を実行する典型的なアプリケーション１８５を例示している。暗号化されたデジタルコンテンツは、ＤＶＤプレーヤのようなデジタルコンテンツソースプレーヤ１６０から受け取られる（例示のために、デジタルコンテンツソースプレーヤ１６０を、直接的にＣＰＵ１２０に取り付けているように示しているが、より正確には、プレーヤ１６０は入力デバイスポートに接続される）。デジタルコンテンツ保護プロトコルに従って、ＣＰＵ１２０は、暗号化/復号ソフトウェア１９５を有しており、デジタルコンテンツソース１６０から暗号化されたデジタルコンテンツを読み取り、暗号化/復号ソフトウェア１９５を使用して暗号化されたコンテンツの初期復号を実行する。ＶＰアプリケーション１９０は、一以上のビデオストリームの再生及び／又は記憶を管理するためのオペレーションを実行する。
【００２０】
[0028]ＧＰＵ１４０は、ビデオフレームを生成するためのコマンドをＣＰＵ１２０から受け取り、また、通常、メモリ１３０からビデオデータを受け取る。ＧＰＵ１４０の一つの特徴は、ＣＰＵ１４０の使用を減少させるためにビデオ処理オペレーションをＧＰＵ１４０へ移動し得ることである。しかしながら、ＧＰＵ１４０の別の特徴は、改善された表示特性を有するビデオフレームを生成し得ることである。ビデオコンテンツは、例えば、パーソナルコンピュータ又は高精細テレビジョンにおいて表示するのに最適化されていないようなオリジナルフォーマットで生成されることがある。例えば、カリフォルニア州サンタクララのＮｖｉｄｉａコーポレーションによって販売されているＮｖｉｄｉａ  ＰｕｒｅＶｉｄｅｏ  Ｄｅｃｏｄｅｒは、ＧｅＦｏｒｃｅ６及び７シリーズのＧＰＵで作動する。ＧｅＦｏｒｃｅ６及び７シリーズのＧＰＵは、プログラマブルビデオプロセッサ、ＭＰＥＧ-２復号エンジン、及び運動推定エンジンを備えている。Ｎｖｉｄｉａ  ＰｕｒｅＶｉｄｅｏ  Ｄｅｃｏｄｅｒは、ハードウェアアクセラレーションを使用して、フィルタリング、スケーリング、フォーマット変換、及びその他のオペレーションを行い、ビデオの再生を加速する。さらに、種々なオペレーションを利用して、デスクトップパーソナルコンピュータ、ノートブックパーソナルコンピュータ（ＰＣ）及び高精細テレビジョン（ＨＤＴＶ）でのビデオコンテンツの表示を、エイリアシング効果を減少させるサブピクセル計算を含む視覚アーチファクトの除去によって、改善してもよい。従って、本明細書を通じて、一実施の形態では、ＧＰＵ１４０が、ビデオ再生を改善し、且つ、ＣＰＵの使用を減少させる一以上の特徴、例えば、プログラマブルビデオ処理、ＭＰＥＧ-２デコーディング、デインターレーシング、逆テレシネ、フィルタリング、スケーリング、フォーマット変換、及び運動推定を、サポートするものと理解されるであろう。
【００２１】
[0029]ＣＰＵ１２０は、任意の適当なマイクロプロセッサに基づくことができる。一実施形態として、ＣＰＵ１２０は、仮想マシンの実装をサポートするマイクロプロセッサであってもよい。仮想マシンの実装は、マイクロプロセッサＣＰＵを、種々の機能を実行する専用の別々のパーティションへと論理的に分割することを可能にする。デジタルコンテンツアプリケーションでは、これによって、例えば、あるパーティションを、デジタルコンテンツサービスに専用のものとすることが可能である。例示的な実施の形態として、仮想マシンにおける一つのパーティションが、ビデオプレーヤソフトウェアに専用のものとされてもよい。仮想マシンの実装では、ビデオプレーヤのパーティションが、他のパーティションから分離され、その結果、他のソフトウェアが、ビデオプレーヤのデータを読み取ったり変更したりすることがなくなる。仮想マシンは、ソフトウェアの攻撃に対して改善されたセキュリティを提供し、一方、セキュリティエンジン１１２は、ハードウェアの攻撃に対して改善されたセキュリティを提供する。仮想マシンとして動作するように設計されたＣＰＵの一実施の形態として、インテルが、ワシントン州レドモンドのマイクロソフトコーポレーションのＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムのコードネーム「ロングホーン(Longhorn)」バージョンをサポートするように設計された統合セキュリティ特徴を有する６４ビットペンティアムマイクロプロセッサを開発している。
【００２２】
[0030]従来のコンテンツ保護スキームによれば、バス１４５にてＧＰＵ１４０へ送られるコマンドストリームは、暗号化される必要があり、次いで、ＧＰＵ復号エンジン１４７を使用してＧＰＵ１４０にて復号される。従来においては、ＣＰＵ１２０が、また、バス１４５の出力が暗号化されるよう、ブリッジ１１０へ送られるデジタルコンテンツを再暗号化する機能を実行しなければならなかったであろう。しかしながら、本発明によれば、ブリッジ１１０が、データの任意の必要な再暗号化を実行する。従って、再暗号化機能が、ＣＰＵ１２０からオフロードされ、それによって、ＣＰＵ性能が改善される。その上、セキュリティエンジン１１２は、ＣＰＵ１９５内のソフトウェアベースの暗号化／復号に比べて暗号化/復号に必要とされる電力消費を低減する専用ハードウェアを有することが可能である。さらに、一実施の形態では、ブリッジ１１０は、メモリ１３０での記憶のためにメモリバス１３５を通して送信されるデータを暗号化し、それによって、セキュリティを改善する。
【００２３】
[0031]図２は、セキュリティエンジン１１２の典型的な実装形態を示している。一実施の形態では、セキュリティエンジン１１２は、レジスタスペース２１０、マイクロコントローラ２２０、及び読取り専用メモリ（ＲＯＭ）コードストア２３０を備えている。サポートされた暗号化アルゴリズムの各々は、暗号化／復号アルゴリズムを実行するためのものであってチップメモリバッファ２４５に関連付けられた専用の改竄防止暗号化ハードウェアモジュール２４０（通常「暗号化ハードウェア」として知られている）を含むことができる。通信モジュール２５０は、直接メモリアクセス（ＤＭＡ）及びシステム１００の他のコンポーネントとのピアツーピア（Ｐ２Ｐ）通信をサポートする。
【００２４】
[0032]図３は、ノースブリッジアーキテクチャーを例示している。この実施の形態では、セキュリティエンジン１１２が、ノースブリッジチップ３０５内に設けられている。通常のサウスブリッジチップ３１０が、ノースブリッジチップ３０５に結合されている。
【００２５】
[0033]図４は、サウスブリッジアーキテクチャーを例示している。この実施の形態では、セキュリティエンジン１１２が、サウスブリッジチップ４１０内に設けられている。サウスブリッジチップ４１０は、ノースブリッジチップ４０５に結合されていてもよい。しかしながら、ＡＭＤ  Ｋ８プロセッサのようなマイクロプロセッサＣＰＵは、統合ノースブリッジ機能を有している。したがって、この場合には、サウスブリッジチップ４１０が、ＣＰＵ１２０に直接に接続されることが理解されるであろう。
【００２６】
[0034]前述したように、一実施の形態では、セキュリティエンジン１１２は、ＰＣＩアーキテクチャー環境（例えば、ＰＣＩ-Ｅ仕様書又はＰＣＩ２．２仕様書に記載されているようなＰＣＩ-エクスプレス環境。これら仕様書は、共にＰＣＩ-ＳＩＧによって刊行されており、その内容を参照することによって本明細書に援用する。）にて動作するように設計されている。ＰＣＩアーキテクチャーは、ＣＰＵ及びデバイスのメモリに対する読取り書込みトランザクション、並びに特殊コンフィギュレーションによるデバイスに対する読取り書込みトランザクション、Ｉ／Ｏ、及びメモリマップＩ／Ｏ（ＭＭＩＯ）トランザクションをサポートする。各ＰＣＩ準拠デバイスは、当該デバイスを検出し、当該デバイスに問い合わせを行い、当該デバイスを設定することを可能にする「コンフィギュレーションスペース」をサポートする。各「コンフィギュレーションスペース」は、ＣＰＵ及び他のデバイスがそのデバイスに対して読取り書込みを行うアドレス領域を任意にサポートしてもよい。これらの領域は、「ベースアドレスレジスタ」（ＢＡＲ）によって定義される。
【００２７】
[0035]図５は、ＣＰＵ又は他のデバイスからメモリマップの読取り及び書込みを介してメモリマップアドレス領域へのアクセスを可能にするベースアドレスレジスタ５２０を有するＰＣＩコンフィギュレーションスペース５１０を例示している。デバイス制御及びデータ構造体は、ＢＡＲによって指示されるアドレス領域に埋め込むことができる。例えば、以下に説明する制御及びデータ構造体は、セキュリティエンジン１１２の一実施の形態ではＢＡＲによって指示される一以上のアドレス領域に埋め込むことができる。
【００２８】
[0036]図６は、コンテクストスイッチを実装するための典型的なコンテクストデータ構造体６１０を例示している。一実施の形態では、セキュリティエンジン１１２は、コンテクストデータ構造体６１０のＭ個のインスタンスに対応する整数Ｍ個の同時セッションをサポートすることができる。キー配列６３０は、異なるキー（又は一つより多いキー）を必要とする種々の暗号化、復号、又はトランスコーディングアルゴリズムを使用することを可能とする。一実施の形態では、整数Ｎ個のキーがキー配列６３０によってサポートされる。コンテクストは、ソースアドレス、宛先アドレス、及びメモリ属性（例えば、直接メモリアドレス）に基づいて選択される。典型的なコンテクストデータ構造体６１０は、暗号化又は復号のいずれが実行されるべきかを定めるコンテクスト情報ｅ／ｄフィールド６１２、使用されるべき暗号化/復号アルゴリズムを定めるｅ／ｄアルゴリズムフィールド６１４、ＤＭＡが使用されるか否かを定めるフィールド６１６、メモリからのＤＭＡ用にデバイスによって必要とされるパラメータを定めるＤＭＡ入力記述子フィールド６１８、デバイスからの出力のために必要とされるパラメータを定める出力記述子フィールド６２０、キーアレイ６３０における第１のキーを特定するインデックスフィールド６２２、及び暗号化/復号アルゴリズムによって使用されるキーの数を指示するナンバーフィールド６２４を含む。
【００２９】
[0037]典型的なコンテクストデータ構造体６１０を、また、疑似コードとして表してもよい。一実施の形態では、セキュリティエンジンが、整数Ｍ個のコンテクスト及び整数Ｎ個のオンチップキーをサポートする。各コンテクストは、種々の数のキーを使用してもよい。さらに、各コンテクストは、入力データを読み取ることができるようにする（又は入力データをそれに書き込ませる）のに必要な情報、及び出力データを書き込むことができるようにするのに必要な情報を有する。ＤＭＡアドレス記述子テーブル又は他の記述子を備えて、ＤＭＡアクセスをサポートしてもよい。また、現在のコンテクストへのインデックスを提供しており、これによって、（コンテクストを変更し、現在のインデックスを変更するための）高速コンテクストスイッチを可能にしている。ベースアドレスレジスタからのオフセットを提供して、セキュリティエンジン１１２を単一ＰＣＩデバイスにおける幾つかの機能の一つとして実施できるようにしている。疑似コードにおいては、これらデータ構造体が、一以上のセキュリティエンジンＢＡＲへ次のようにマッピングされる。
Integer  N
Integer  M
Index  current_context
Offset_from_base_address_MMIO_input
Key  keys［N］
【００３０】
典型的なコンテクストデータ構造体は次の通りである。
Struct  {
Boolean      encrypt_not decrypt;
Enumerated   encryption_decryption_algorithm;
Boolean      use_dma
DMA_input    dma_input
Output       output
Index        start_key(index into keys)
Integer      number_of_keys
(numberof keys must be consistent with encryption decryption algorithm)
}  Contexts［M］
ここで、
struct DMA input{
Address      data_descript_table
Integer      length
}
Struct Output{
Address      addr
Integer      limit
}
【００３１】
[0038]本発明によれば、セキュリティエンジン１１２を使用して、暗号化、復号又はトランスコードを行う幾つかの異なる入力モードが可能になる。セキュリティエンジン１１２への入力は、ＣＰＵからの直接的書込み、別のデバイスからの直接的書込み、又は直接メモリアクセスを通してなされる入力であることが可能である。一例として、デバイスへのメモリマップ書込みは、ＣＰＵによって、又はピアツーピアトランザクションを介した別のデバイスによって行うことが可能である。一例として、ＣＰＵは、クリアテキストをセキュリティエンジンへ書き込むことが可能である。次いで、セキュリティエンジンは、暗号化を実行して暗号テキストを宛先へ書き込む。別の例として、ＣＰＵ又は他のデバイスが、暗号テキストをセキュリティエンジン１１２へ書き込むことが可能である。この場合には、セキュリティエンジン１１２が、その暗号テキストを復号してクリアテキストの出力を宛先へ書き込む。直接メモリアクセス入力の場合には、直接メモリアクセスを使用して、ＣＰＵ又は別のデバイスによって書き込まれるコンテンツデータをメモリから読み取る。直接メモリアクセスがクリアテキストデータに対するものである場合には、セキュリティエンジン１１２が、暗号テキストの暗号化及び書込みを行う。直接メモリアクセスがクリアテキストデータに対するものである場合には、セキュリティエンジン１１２は、復号してクリアテキストデータを書き込む。
【００３２】
[0039]出力は、物理メモリに対して成すことが可能であり、又はピアツーピアを使用して別のデバイスに対して成すことも可能である。一実施の形態では、出力は、プログラマブルアドレスによって決定される。例えば、プログラマブルアドレスは、物理メモリ又は別のデバイスのメモリスペースにおける出力アドレス領域であることができる。
【００３３】
[0040]入力モードは、ＣＰＵ１２０によるＭＩＭＯ書き込み、又はピアツーピア書込みを使用する他のデバイスによるＭＭＩＯ書込みを含む。出力モードは、メモリに対する直接的メモリアクセス、及びピアツーピアを含む。１つの実施形態では、ＣＰＵ１２０は、クリアテキストデータを暗号化エンジン１１２へ直接的に書き込むことができる。暗号化エンジンは、暗号化されたデータをメモリ１３０へ書き込むことができ、クリアデータテキストデータをメモリ１３０に記憶する必要をなくすることができる。
【００３４】
[0041]本発明の典型的なアプリケーションとしては、再生用のビデオの暗号化及び復号のアプリケーション、ネットワーク記憶のような記憶アプリケーションのための異なる標準間の暗号化及び復号（すなわち、トランスコーディング）、ネットワークトラフィックの暗号化、復号、及びトランスコーディング、並びに、パーソナルビデオレコーダーシステムにおけるコンテンツの暗号化及び復号のアプリケーションがある。
【００３５】
[0042]図７は、ビデオを安全に表示するためのオペレーションの典型的なシーケンスを示している。例示として、ブリッジ１１０が、ノースブリッジチップ６１０-Ａ及びサウスブリッジチップ６１０-Ｂとして示されている。コンポーネント間のバスは、図を簡単化するために省略されている。矢印７０１によって示されるように、ＣＰＵ１２０は、ビデオコンテンツソース１６０からビデオデータを読み取る。コンテンツ保護プロトコルによれば、コンテンツは暗号化される。ＣＰＵ１２０は、ソフトウェア復号技法を使用してＣＰＵ１２０内で復号７０２を行う。クリアテキストデータが、矢印７０３で示されるようにＣＰＵ１２０によってセキュリティエンジン１１２へ送られる。フロントサイドバスは傍受され難いので、ＣＰＵ１２０からセキュリティエンジン１１２へのクリアテキストデータの送信は、本来的に安全である。セキュリティエンジン１１２は、データ７０４を暗号化する。次いで、セキュリティエンジン１１２は、直接メモリアクセスを使用して、暗号テキストをメモリ１３０に書き込む（７０５）。その結果、メモリバス（図示していない）を通して送信されるコンテンツは安全となる。次いで、ＧＰＵ１４０が、直接メモリアクセスを使用して、暗号テキストを読み取る（７０６）。次に、ＧＰＵ１４０は、そのコンテンツを復号し表示する（７０７）。
【００３６】
[0043]図７を参照するに、本発明によって提供される一つの利点は、ハッキングを受け易いシステムの各部においてコンテンツが暗号テキストとして送信され記憶されるという点である。従って、デジタルコンテンツ保護が改善される。加えて、コンテンツの暗号化に関連したＣＰＵのオーバーヘッドが減少され、ＣＰＵの性能が改善される。さらに、セキュリティエンジン１１２は、好ましくは、暗号化及び復号オペレーションを行うのにＣＰＵ１２０よりもより良い電力効率を有するように設計される。その結果、セキュリティエンジン１１２への暗号化／復号オペレーションのオフロードによって、電力消費を減少することが可能である。
【００３７】
[0044]本発明の別のアプリケーションとして、パーソナルビデオレコーダー（ＰＶＲ）アプリケーションがある。ＰＶＲは、ＨＤＴＶ信号といったテレビジョン信号を記録する。図８は、デジタルテレビジョン（ＤＴＶ）のための典型的なＰＶＲシステム８００を例示している。ＰＶＲシステム８００は、例えば、ＣＰＵ１２０、ＧＰＵ１４０、ディスプレイ１５０、メモリ１３０、及びブリッジ１１０のような少なくとも一つのブリッジを有するメディアセンターパーソナルコンピュータであってもよい。ビデオキャプチャ（ＶＣ）モジュール８０５が、ＰＶＲシステム８００に含まれており、例えば、ブリッジ１１０に含まれていてもよい。ＶＣモジュール８０５は、記憶のためブロードキャスト信号を取り込む。ＨＤＴＶ受信器８０２が、ブロードキャスト信号を受け取るためＰＶＲシステム８００に結合されていてもよい。ＨＤＴＶ受信器８０２は、例えば、復調及び復号を実行して、復調データパケットのトランスポートストリームの形態でビデオ信号８１０を生成してもよい。ビデオ信号８１０は、その実装形態に依存して、ブリッジ１１０により直接的に受け取られてもよく、又は、別のコンポーネントからブリッジ１１０へ結合されてもよい。
【００３８】
[0045]将来のテレビジョン受信器は、ブロードキャストフラグを認識する必要があり、そのブロードキャストフラグの検出に応答してデジタルコンテンツ保護スキームを実施し、取り入れたビデオがインターネット又はその他のマス方法を介して分配されないようにすることが提案されている。その結果、受信されたブロードキャストＨＤＴＶ信号のコピーは、保護されたフォーマットにて維持され、これによって、エンドユーザがビデオコンテンツの保護されていないコピーを分配することが困難なものとされる。ブロードキャストフラグを、例えば、プログラム及びシステム情報プロトコル（ＰＳＩＰ）に従ってアドバンスドテレビジョンシステムコミッティ（ＡＴＳＣ）のヘッダーに含めてもよい。本発明の一実施の形態では、ＰＶＲシステム８００は、ブロードキャストフラグがビデオ信号８１０に存在するか否かを検出する。ブロードキャストフラグが存在する場合には、デジタルコンテンツ保護をサポートするのに必要とされる暗号化／復号サービスがセキュリティエンジン１１２へ移動される。ＰＶＲアプリケーションの場合には、多くのプロセスは、データのソースがブロードキャスト信号であること、及び、ブロードキャストフラグの存在が監視されることを除けば、図７に記載したプロセスと同一である。例えば、ＰＶＲシステム８００は、メモリ１３０に記憶して後に再生するために受信したビデオ信号のコピーを暗号化し、その後の再生に必要な復号を行ってもよい。
【００３９】
[0046]本発明の典型的なアプリケーションについて説明してきたが、より一般的には、本発明を利用して、種々の異なるタイプのデバイス及びメモリのための暗号化、復号又はトランスコーディングサービスを提供し得る。暗号化、復号又はトランスコーディングサービスは、メモリスティック又はネットワーク記憶デバイスに対して提供することができる。例えば、ネットワーク記憶デバイスでは、セキュリティエンジン１１２を使用して、記憶用のデータを暗号化してもよい。ネットワーク記憶装置の一実施の形態では、セキュリティエンジン１１２は、暗号化フォーマットが第１の暗号化フォーマット（例えば、ネットワークを通して送信されるデータのための暗号化フォーマット）から第２の暗号化フォーマット（例えば、データ記憶のための暗号化フォーマット）へ変換されるようなトランスコーディングを実行する。
【００４０】
[0047]一実施の形態では、セキュリティエンジン１１２は、ブリッジ１１０とは別の分離したデバイスに形成される。例えば、セキュリティエンジン１１２が、ブリッジ１１０とは異なるチップに形成されてもよい。この実施形態では、ＰＣＩ-Ｅのような入力／出力インターフェイスを使用して、セキュリティエンジン１１２をチップセットにおける他のコンポーネントへ結合してもよい。この代替の実装形態の一つの利点は、セキュリティエンジン１１２の機能的な利点を異なる物理的パーティショニングを用いてチップセットにて達成できることである。一例として、基本的なチップセットは、セキュリティエンジン１１２なしに設計できる。高いセキュリティを必要とするマーケットの場合には、セキュリティエンジン１１２を含むデバイスを、Ｉ／Ｏインターフェイスを介して基本チップセット構造に結合して、高いセキュリティを有したチップセットとすることができる。
【００４１】
[0048]前述したように、コンテクスト状態は、複数のコンテクストの使用をサポートするためメモリに記憶される。仮想マシンの実装形態（例えば、ロングホーン）では、パーティションによって、前述したように、ソフトウェアの攻撃に対して高度の保護が提供される。しかしながら、Ｌｉｎｕｘ又はＷｉｎＸｐを実行するシステムのように、コンテナの分離を提供するパーティションを有していないシステムにおいては、セキュリティを増すためにメモリに記憶されたコンテクスト情報の付加的保護を提供することが望ましい。一実施の形態では、メモリに記憶されるコンテクスト状態を暗号化／復号するためのキーがセキュリティエンジン１１２のハードウェアに記憶される。これによって、コンテクスト状態が暗号テキストとしてメモリに記憶させられ、コンテクスト状態情報をクリアテキストとしてメモリに記憶するのに比べて、セキュリティが改善される。
【００４２】
[0049]本発明の一実施の形態は、種々のコンピュータ実装のオペレーションを実行するウためのコンピュータコードを有するコンピュータ読取り可能な媒体を備えたコンピュータ記憶製品に関する。媒体及びコンピュータコードは、本発明の目的のために特別に設計及び構成されたものであってもよいし、又は、コンピュータソフトウェア技術の分野において当業者に良く知られて利用可能となっている種類のものであってもよい。コンピュータ読取り可能な媒体の例として、これに限定されないが、ハードディスク、フロッピーディスク、及び磁気テープのような磁気媒体、ＣＤ-ＲＯＭ及びホログラフィックデバイスのような光学的媒体、光ディスクのような磁気-光媒体、並びに、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル論理デバイス（ＰＬＤ）、ＲＯＭ及びＲＡＭデバイスのようにプログラムコードを記憶し実行するように特別に構成されたハードウェアデバイスがある。コンピュータコードの例としては、コンパイラによって生成されるようなマシンコード、及びインタープリタを使用してコンピュータにより実行されるようなより高レベルのコードを含むファイルがある。例えば、本発明の一実施の形態は、Ｊａｖａ、Ｃ＋＋、又は他のオブジェクト指向プログラミング言語及び開発ツールを使用して実施できる。本発明の別の実施の形態は、適宜、マシン実行可能なソフトウェア命令の代わりに、又はマシン実行可能なソフトウェア命令と組み合わせて、ハード・ワイヤード回路でも実施し得る。
[0050]前述の記載では、本発明を完全に理解させるために特定の用語を使用した。しかしながら、特定の細部が本発明の実施に必要でないことが当業者に明らかであろう。従って、前述の本発明の特定の実施形態についての記載は、単なる例示に過ぎない。それらの記載はそれに尽きるものでなく、又、本発明を、それら説明した細部の構成に限定しようとするものではなく、前述の記載に鑑みれば、多くの変形例が可能であることは明らかであろう。前述の実施形態は、本発明の原理及びその実際的な応用について最も良く説明するために選択されたものであり、従って、当業者であれば、本発明及び種々な実施形態について意図する特定の使用に適合するような種々な変形を加えて最も良く利用することができるであろう。特許請求の範囲及びその等効物は、本発明の範囲を定めることを意図したものである。
【図面の簡単な説明】
【００４３】
【図１】本発明の一実施の形態によるブリッジに配置されたセキュリティエンジンを有するデジタルコンテンツ保護システムのブロック図である。
【図２】本発明の一実施形の態によるセキュリティエンジンのブロック図である。
【図３】本発明の一実施の形態によるノースブリッジの実装形態のブロック図である。
【図４】本発明の一実施の形態によるサウスブリッジの実装形態のブロック図である。
【図５】本発明の一実施の形態によるＰＣＩコンフィギュレーションスペースを示す図である。
【図６】本発明の一実施の形態によるコンテクストデータ構造を示す図である。
【図７】本発明の一実施の形態によるデジタルコンテンツの保護のためのオペレーションの典型的シーケンスを示す図である。
【図８】本発明の一実施の形態によるビデオデータのためのデジタルコンテンツ保護システムのブロック図である。
【符号の説明】
【００４４】
１１０…ブリッジ、１１２…セキュリティエンジン、１１４…キー、１１６…コンテクストポインター、１１８…コンテクストデータ構造、１３０…メモリ、１４７…復号、１５０…ディスプレイ、１６０…コンテンツ、１８５…グラフィックドライバー、１９０…ビデオプレーヤ、１９５…暗号化／復号、２１０…レジスタスペース、２２０…マイクロコントローラ、２３０…ＲＯＭコードストア
【図１】
0004740830.tif 000002
【図２】
0004740830.tif 000003
【図３】
0004740830.tif 000004
【図４】
0004740830.tif 000005
【図５】
0004740830.tif 000006
【図６】
0004740830.tif 000007
【図７】
0004740830.tif 000008
【図８】
0004740830.tif 000009