(57)【特許請求の範囲】
【請求項１】
別個のプログラムコードまたはデータの複数のインスタンスのためのセキュアな実行環境を提供するための方法であって、
セキュアな資産管理ユニット（ＳＡＭＵ）が、別個のコードまたはデータの複数のインスタンスを、ホストプロセッサから前記ＳＡＭＵへ暗号化フォーマットでオフロードして、前記別個のコードまたはデータの複数のインスタンスの機密性を認証および維持するステップであって、前記複数のインスタンスは複数のアプリケーションに関連し、前記ＳＡＭＵは、前記複数のアプリケーションを同時に管理し、且つ、前記暗号化フォーマットの復号化フォーマットを提供し、前記ホストプロセッサは、暗号化フォーマットの前記データまたはコードを、外部デバイスと接続したインタフェースを介して、コンテンツソースから最初に取り出すステップと、
前記ＳＡＭＵが、前記データの保護が必要な場合には、前記データを再暗号化フォーマットで前記ＳＡＭＵから前記ホストプロセッサへ返送し、前記データの保護が必要でない場合には、前記データを復号化フォーマットで前記ＳＡＭＵから前記ホストプロセッサへ返送するステップであって、前記データの各々に関連する所与のフィールドが保護要求を示すステップと、
を含む、方法。
【請求項２】
前記オフロードするステップは、前記別個のコードまたはデータの複数のインスタンスの各インスタンスについて、署名ツール内で生成されたランダム鍵によって暗号化２値ブートイメージを生成するステップを含む、請求項１に記載の方法。
【請求項３】
前記暗号化２値ブートイメージは、前記ＳＡＭＵのために暗号化され、前記ＳＡＭＵ用のセキュアなカーネルおよびセキュアなアプリケーションとして提供される、請求項２に記載の方法。
【請求項４】
ユーザは、前記暗号化２値ブートイメージを前記ホストプロセッサにインストールし、前記暗号化２値ブートイメージをオンデマンドで前記ＳＡＭＵに提供する、請求項３に記載の方法。
【請求項５】
前記暗号化２値ブートイメージをインテグリティについて検証した後に、前記ＳＡＭＵと共に用いられる復号化鍵を、ブートリードオンリーメモリ（ＲＯＭ）を用いて構成するステップ、
をさらに含む、請求項４に記載の方法。
【請求項６】
前記ＳＡＭＵと共に用いられる復号化鍵を、前記ブートＲＯＭによって生成するステップと、
前記ブートＲＯＭが、前記暗号化２値ブートイメージのインテグリティの検証に成功したという肯定的な検証に応じて、前記暗号化２値ブートイメージに制御を送るステップと、
をさらに含む、請求項５に記載の方法。
【請求項７】
肯定的な有効化および前記セキュアなカーネルの実行に応じて、コンテンツへのアクセスを提供するためのアプリケーションは、前記ＳＡＭＵハードウェアの利用可能性を検出し、前記セキュアなカーネルは、前記アプリケーションについてのコンテクストを生成して、前記アプリケーションのインテグリティを検証する、請求項６に記載の方法。
【請求項８】
前記アプリケーション用の前記別個のコードまたはデータの複数のインスタンスの各々のコード復号化鍵は、カーネルイメージと共に生成された前記コンテクストと共に用いられるための肯定的な検証に応じて、前記セキュアなカーネルによって復元される、請求項７に記載の方法。
【請求項９】
前記別個のコードまたはデータの複数のインスタンスの各々の前記セキュアなカーネルにおいて、前記カーネルイメージの肯定的な検証に応じて、前記アプリケーション用のデータ暗号鍵をランダムに生成するステップ、
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記暗号化２値ブートイメージのインテグリティの検証に失敗したという否定的な検証に応じて、前記ブートＲＯＭによってＳＡＭＵサービスがさらされず、前記アプリケーションは、ＳＡＭＵハードウェアベースの保護された実行環境の代わりに、ソフトウェアベースの保護スキームに移行する、請求項５に記載の方法。
【請求項１１】
別個のプログラムコードまたはデータの複数のインスタンスのためのセキュアな実行ユニットを提供するためのシステムであって、
コードまたはデータを含む複数のアプリケーションを実行し、かつ暗号化フォーマットのコードまたはデータを、外部デバイスと接続したインタフェースを介して、コンテンツソースから取り出すように構成されたホストプロセッサと、
プログラムコードを実行するように構成されたセキュアな資産管理ユニット（ＳＡＭＵ）であって、前記ホストプロセッサに接続されており、別個のコードまたはデータの複数のインスタンスを、前記ホストプロセッサから暗号化フォーマットでオフロードして、前記別個のコードまたはデータの複数のインスタンスの機密性を認証および維持するように構成されている、セキュアな資産管理ユニット（ＳＡＭＵ）とを含み、
前記複数のインスタンスは複数のアプリケーションに関連し、前記ＳＡＭＵは、前記複数のアプリケーションを同時に管理し、且つ、前記暗号化フォーマットの復号化フォーマットを提供し、前記ＳＡＭＵは、前記データの保護が必要な場合には、前記データを再暗号化フォーマットで前記ホストプロセッサへ返送し、前記データの保護が必要でない場合には、前記データを復号化フォーマットで前記ホストプロセッサへ返送し、前記データの各々に関連する所与のフィールドが保護要求を示す、
システム。
【請求項１２】
前記ＳＡＭＵは、前記別個のコードまたはデータの複数のインスタンスをオフロードすることの一部として、署名ツール内で生成されたランダム鍵によって暗号化２値ブートイメージを生成するように構成されている、請求項１１に記載のシステム。
【請求項１３】
前記暗号化２値ブートイメージは、前記ＳＡＭＵのために暗号化され、ＳＡＭＵのためのセキュアなカーネルおよびセキュアなアプリケーションとして提供される、請求項１２に記載のシステム。
【請求項１４】
ユーザは、前記暗号化２値ブートイメージを前記ホストプロセッサにインストールし、前記暗号化２値ブートイメージを前記ＳＡＭＵへオンデマンドで提供する、請求項１２に記載のシステム。
【請求項１５】
前記ＳＡＭＵは、前記暗号化２値ブートイメージをインテグリティについて検証した後、前記ＳＡＭＵと共に用いられる復号化鍵をブートリードオンリーメモリ（ＲＯＭ）を用いて構成するようにさらに構成されている、請求項１４に記載のシステム。
【請求項１６】
前記ブートＲＯＭは、前記ＳＡＭＵと共に用いられる復号化鍵の生成と、前記暗号化２値ブートイメージのインテグリティの検証に成功したという肯定的な検証に応じて前記暗号化２値ブートイメージへの制御送りとを行うようにさらに構成されている、請求項１５に記載のシステム。
【請求項１７】
前記セキュアなカーネルの肯定的な検証および実行に応じて、コンテンツへのアクセスを提供するためのアプリケーションは、前記ＳＡＭＵハードウェアの利用可能性を検出し、前記セキュアなカーネルは、前記アプリケーションのためのコンテクストを生成して、前記アプリケーションのインテグリティを検証する、請求項１６に記載のシステム。
【請求項１８】
前記アプリケーションのための前記別個のコードまたはデータの複数のインスタンスの各々に対するコード復号化鍵は、カーネルイメージと共に生成された前記コンテクストと共に用いられるための肯定的な検証に応じて、前記セキュアなカーネルによって回復される、請求項１７に記載のシステム。
【請求項１９】
前記カーネルイメージの肯定的な検証に応じて、前記別個のコードまたはデータの複数のインスタンスの各々の前記セキュアなカーネルにおいて、前記アプリケーション用のデータ暗号鍵をランダムに生成するように構成されている、請求項１８に記載のシステム。
【請求項２０】
前記暗号化２値ブートイメージのインテグリティの検証に失敗したという否定的な検証に応じて、ＳＡＭＵサービスはさらされず、前記アプリケーションは認証のためにソフトウェアベースの保護スキームに移行する、請求項１５に記載のシステム。
【請求項２１】
１つ以上のプロセッサによって実行される１組の命令を記憶する、コンピュータで読み出し可能な非一時的な記憶媒体であって、前記１組の命令は、セキュアな資産管理ユニット（ＳＡＭＵ）の製造を容易にするためのものであり、前記ＳＡＭＵは、
プログラムコードを実行することと、
別個のコードまたはデータの複数のインスタンスを、暗号化フォーマットでホストプロセッサからオフロードして、前記別個のコードまたはデータの複数のインスタンスの機密性を認証および維持することであって、前記複数のインスタンスは複数のアプリケーションに関連し、前記ＳＡＭＵは、前記複数のアプリケーションを同時に管理し、且つ、前記暗号化フォーマットの復号化フォーマットを提供し、前記ＳＡＭＵは、前記データの保護が必要な場合には、前記データを再暗号化フォーマットで前記ホストプロセッサへ返送し、前記データの保護が必要でない場合には、前記データを復号化フォーマットで前記ホストプロセッサへ返送し、前記データの各々に関連する所与のフィールドが保護要求を示すことと、
を行うように構成されている、
コンピュータで読み出し可能な非一時的な記憶媒体。
【請求項２２】
前記命令はハードウェア記述言語（ＨＤＬ）命令であり、デバイスの製造に用いられる、請求項２１に記載のコンピュータで読み出し可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、米国仮出願第６１／４０５，０４５号および第６１／４０５，０５４号（両出願とも、出願日は２０１０年１０月２０日）と、米国非仮出願第１２／９６４，２７８号（出願日：２０１０年１２月９日）および第１２／９７５，５５５号（出願日：２０１０年１２月２２日）の利益を主張する。本明細書中、同文献の内容を参考のため援用する。
【０００２】
本出願は、ハードウェアに基づくセキュリティ実行環境に関する。
【背景技術】
【０００３】
デジタル著作権管理（ＤＲＭ）ライセンスのロバスト（頑強）な技術実行においては、復号化デジタルコンテンツの生ビットストリームへの直接アクセスの回避と、ライセンス実行機構そのものとが可能であることを前提としている。しかし、オープンコンピューティングプラットフォーム（例えば、パーソナルコンピュータ（ＰＣ））上においては、これを達成することは困難である。
【０００４】
機密コードおよびデータの機密性を維持するためにＰＣをロバストにすることが困難であることが分かっている。コード機密性の維持またはデータセキュリティを維持するための現行の方法として、既存のソフトウェアベースのソリューションがある。このソリューションは、アンチデバッギング、インテグリティ監視、および難読化技術に基づいて、リバースエンジニアリングおよび改ざんを阻止しようとするものである。別の技術においては、セキュアなブートプロセスの間のロード時間においてシステムが実行することを望むソフトウェアコードおよび／またはデータ定数の認証を含む。これは、例えば、当業者にとって認識される署名照合技術によって達成され得る。しかし、ロード時間認証技術の場合、欠陥がある。例えば、この技術においては、認証は、セキュアなブートプロセス時において１回のみ行われる。そのため、ロード時間認証技術を用いたシステムは、ランタイムにおいてプログラミング攻撃および／またはデータ破損を受けやすくなる。ここで、ランタイムは、ロード時間の直後（すなわち、セキュアなブートプロセスの後）の期間として認識される。
【０００５】
既存のコンピューティングシステムは、レジスタに保存されたデータの完全性（インテグリティ）の保護を、認証情報ベースのセキュリティシステムを実行することによって行おうとすることが多い。このようなシステムの場合、レジスタ（すなわち、読み出し／書き込み可能なメモリ内の位置）へのアクセスは、認証情報が照合されている機能（すなわち、ソフトウェアプログラム）に限定される。この照合は、コンピューティングシステム内の論理によって達成され得る。しかし、認証情報ベースのセキュリティシステムの場合、複数の欠陥がある。例えば、認証情報ベースのセキュリティシステムは、１つのデータアクセス方針しか実行することができない。具体的には、実行可能な認証情報を有する機能はレジスタ内のデータへのアクセスが許可される一方、実行可能な認証情報を持たない機能は、上記データへのアクセスを拒否される。このシステムの場合、データアクセス機構として認証情報ベースの照合のみに依存しているため、実行可能な認証情報が不正機能によって不適切に入手され、その結果、保護すべきデータへのアクセスを上記不正機能が得るようなシナリオにおいて脆弱である。さらに、これらのシステムの場合、認証情報ベースのデータアクセスは、保護対象となる全てのデータにとって適切なセキュリティ方針であるとの前提にたっている。しかし、異なる種類のデータを異なるアクセス方針で保護することが大抵望ましい。
【０００６】
公知の技術（例えば、上述したもの）は、通常のＰＣ上で実行すべきソフトウェアに実装される場合、ＤＲＭシステムにおける利用には不十分であることが多い。リバースエンジニアリングを可能にするための多数のツールが利用可能となっている。
【０００７】
さらに、ＰＣにおいては、オペレーティングシステムの保護アーキテクチャおよびアクセス制御モデルに起因して、クライアントとして機能するＤＲＭコンテンツのためのプラットフォームとして用いるには煩雑になっている。なぜならば、オープンアーキテクチャでは、機密ソフトウェアコードを保護することが困難であるからである。機密性維持のための現行の方法の場合、素人ハッカーに対しては、コンピューターおよび出力オーバーヘッドの大きな犠牲と引き換えに、防御できることができることが分かっている。しかし、プロのハッカーに対しては、高価値財産を防護することは未だ困難である。そのため、機密コードおよびデータの実行のためのパーソナルコンピューティング環境において、セキュアな実行環境を提供することが必要とされている。
【発明の概要】
【課題を解決するための手段】
【０００８】
本明細書に記載の実施形態は、ハードウェアに基づいて保護された実行環境のために設けられたセキュリティ構成を含む。上記構成により、複数のアプリケーションまたはオンデマンド機密コードを同時に上記セキュアな実行環境へロードすることが可能となる。ランタイム生成されたデータを、外部メモリ内に保存された場合でもセキュアに保護することができる。各メモリコンテクストは別個に管理されるため、各コンテクスト間の機密性が保証される。実行環境は、セキュアな資産管理ユニット（ＳＡＭＵ）のアーキテクチャ詳細を含む。上記ＳＡＭＵは、ホストプロセッサからのコードまたはデータの機密性を認証および維持するために上記コードまたはデータを暗号化フォーマットでオフロードすることにより、プログラムコードまたはデータのためのセキュアな実行環境を提供する。上記ＳＡＭＵは、不正防止ソフトウェアのためのプラットフォームを提供することにより消費電力低減を可能にし、また、有効なソフトウェアが取り消される頻度を低減する。また、上記ＳＡＭＵは、正当なユーザに対しては非侵入型であり、かつ、機密コードのリバースエンジニアリングを困難にするための保護された実行環境を提供する。このようなハードウェアに基づいたセキュリティ構成により、垂直または水平方向の特権違反の回避が促進される。
【０００９】
以下の記載を添付の図面と共に読めば、より詳細な理解が可能となる。
【図面の簡単な説明】
【００１０】
【図１Ａ】一実施形態によるホストシステムを示す図であり、機密コードがプロセッサからセキュアな資産管理ユニット（ＳＡＭＵ）へとオフロードされる様子を示す図である。
【図１Ｂ】ＳＡＭＵ上位レベルアーキテクチャを示す図である。
【図２】マルチアプリケーションＳＡＭＵランタイムコンテクスト設定のフロー図である。
【図３】ＳＡＭＵソフトウェアスタックを示す図である。
【図４】ランタイムメモリ管理の一例を示す図である。
【発明を実施するための形態】
【００１１】
本出願は、米国非仮出願第１２／９６４，２７８号全体をあたかも同文献全体が記載されているかのように援用する点に留意されたい。
【００１２】
本明細書中用いられる「プロセッサ」という用語は、以下のうち任意のものを指す：プロセッサ、プロセッサコア、中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または類似のデバイス。上記プロセッサは、別のデバイス（例えば、一体型ノースブリッジ、アプリケーションプロセッサ（Ａｐｐｓプロセッサ）、ＣＰＵ、ＤＳＰ等）の一部を形成し得る。本明細書中用いられるプロセッサコアは、ｘ８６、ＲＩＳＣ、または他の命令セットコアであり得る。
【００１３】
セキュアな資産管理ユニット（ＳＡＭＵ）は、プロセッサコア内に設けられるように構成されたコンポーネントであるか、または、プロセッサコアと協働して実行するように構成された別個のコンポーネントである。プロセッサコアまたはプロセッサコアとは別個のコンポーネントとして構成された場合、ＳＡＭＵは、以下のうち少なくとも１つを実行するように構成される。ホストプロセッサから機密コードをオフロードすること、あるいは、メモリ中の機密コードまたはデータを暗号化すること。
【００１４】
上記ＳＡＭＵは、ハードウェアに基づいた保護された実行環境を提供するように、ハードウェアにおいて実行することができる。このような環境において、機密コードおよびデータをセキュアなメモリにおいて保護することができ、平文形態でキャッシュまたは埋設メモリのみに保存することができる。さらに、デバッギングは、生成側において完全に無効にされ、セキュアなカーネルが実行環境を「所有」および制御し、メモリおよびリソースへのアクセスが全て制御される。上記ＳＡＭＵは、メモリを上記プロセッサと共有してもよいし、あるいは専用のメモリを有してもよい。
【００１５】
図１Ａは、一実施形態によるホストシステム１０１を示す。この実施形態において、機密コードがプロセッサからＳＡＭＵへとオフロードされる。図１Ａは、プロセッサ１０２およびＳＡＭＵ１０４を含むシステム１０１を示す。プロセッサ１０２およびＳＡＭＵ１０４は、システムバスまたは内部バス１０５を介して接続される。システム１０１を用いて、セキュアなコードをプロセッサ１０２からＳＡＭＵ１０４へとオフロードする。システム１０１は、データをピアで交換することが可能な任意のコンピュータシステムであり得る。さらに、システム１０１は、１つ以上のアプリケーション（図示せず）を含み得る。上記１つ以上のアプリケーション（図示せず）は、セキュアなプロトコルを用いて、プロセッサ１０２とＳＡＭＵ１０４との間のデータ転送を行う。上記アプリケーションは、カーネル空間またはユーザ空間において実行され得る。
【００１６】
プロセッサ１０２は、システムカーネル（図示せず）において動作するように構成される。プロセッサ１０２は、外部デバイスとインターフェースで接続して、コンテンツソース（例えば、ブルーレイ（登録商標）ディスク等のコンテンツメディアや、インターネットから等）から、暗号化データおよびメッセージ（すなわち、パケット）を取り出す。プロセッサ１０２は、復号化および処理対象となる暗号化データをＳＡＭＵ１０４へと提供し得る。いくつかのデータセット（例えば、ナビゲーションデータ）をＳＡＭＵ１０４からプロセッサ１０２へと返送して、メディア消費プロセス全体を制御することができる。ＳＡＭＵ１０４はまた、保護が必要な場合、データを再暗号化フォーマットでプロセッサ１０２へと返送し得る。
【００１７】
一実施形態において、ＳＡＭＵ１０４は、外部デバイスへと送られるかまたは外部デバイスから受信したデータの処理を有効にするように構成された処理スタックを含む。よって、システム１０１が外部デバイスまたはインターネットとの接続を確立すると、ホストプロセッサ１０２が上記送信および受信したパケットを処理する代わりに、ＳＡＭＵ１０４は、ＳＡＭＵ１０４上において実行された処理スタックを介してこの処理機能を提供する。
【００１８】
別の実施形態において、ＳＡＭＵ１０４は、プロセッサ１０２の一部であり得る。
【００１９】
ＳＡＭＵ１０４のアーキテクチャについて、図１Ｂを参照してさらに詳述する。ＳＡＭＵ１０４は、セキュアなブートリードオンリーメモリ（ＲＯＭ）１１０と、メモリ管理ユニット（ＭＭＵ）１２０と、命令キャッシュ（Ｉキャッシュ）１３０と、データキャッシュ（Ｄキャッシュ）１４０と、メモリ高度暗号化標準（Ｍ−ＡＥＳ）コンポーネント１５０と、インテグリティ照合器（ＩＶ）１６０と、セキュリティアクセラレータ１７０と、プロセッサコア１８０と、セキュアなカーネル１８５と、メモリインターフェース１９０とを含む。セキュリティアクセラレータ１７０は、以下のうち少なくとも１つを実行するように構成される。１２８ｂ／１９２ｂ／２５６ｂＡＥＳ；セキュアなハッシュアルゴリズム（ＳＨＡ−１／−２）；Ｒｉｖｅｓｔ、ＳｈａｍｉｒおよびＡｄｌｅｍａｎ（ＲＳＡ）暗号化；楕円曲線暗号化（ＥＣＣ）演算；データ暗号化標準（ＤＥＳ）；３ＤＥＳ；Ｒｉｖｅｓｔ暗号化４（ＲＣ４）；１０２４ｂ／２０４８ｂ／３０７２ｂ冪剰余；または真の乱数生成器の提供。
【００２０】
ＳＡＭＵ１０４は、複数のプロセッサモード（例えば、シリコン内のブートコードのためのモードを含む）をサポートし得る。他のプロセッサモードは、セキュアなカーネル１８５によって定義され得る。セキュアなカーネル１８５は、例えば、カーネルコア機能、カーネルサービス、社内開発されたＳＡＭＵ１０４アプリケーション、サードパーティが開発したＳＡＭＵ１０４アプリケーション、署名されかつ暗号化されていないＳＡＭＵ１０４アプリケーション、または未署名でありかつ暗号化されていないＳＡＭＵ１０４アプリケーションを含む。
【００２１】
ブートＲＯＭ１１０は、シリコン形態においてブートコードを実行して、デバッグ管理の実行と、所与のカーネルのインテグリティの確認と、メモリＡＥＳの設定とを実行した後、（インテグリティ確認を通過した）カーネルへ制御を送るように構成される。ここで、埋設プロセッサは、リセット状態から起動して、ブートコードを実行するように構成される。上記ブートコードは、ｅフューズ技術に基づいてデバッギング機能を構成または再構成するようにさらに構成される（例えば、全デバッグ機能の生成側へのアクセスを無効にするか、またはｅフューズパターンへのアクセスを無効にする。上記ｅフューズパターンは、製造時においてチップ上へのエッチングまたはハードコーディングコンピュータ論理を用いて注入されるため、チップ製造後は変更不可能となる）。上記ブートコードはまた、ＳＡＭＵ１０４カーネルの初期化を待機するようにさらに構成される。ここで、ＳＡＭＵドライバは、セキュアなカーネル１８５をロード対象として提示する。上記ブートコードはまた、インテグリティ照合器（ＩＶ）ハードウェア１６０を用いて、所与のイメージのインテグリティを検証するようにさらに構成される。ＩＶハードウェア１６０は、所与のイメージからのハッシュコードを生成し、上記ハッシュコードと、上記イメージに取り付けられたハッシュコードとを比較するように構成され得る。上記生成されたハッシュコードと、上記取り付けられたハッシュコードとが整合した場合、ＩＶハードウェア１６０はＰＡＳＳレポートを提供し、そうではない場合、失敗を報告する。
【００２２】
ブートＲＯＭ１１０は、インテグリティ確認成功の後にセキュアなカーネル１８５のための環境を準備し、セキュアなカーネル１８５へ制御を送るようにさらに構成される。セキュアなカーネル１８５は、同一のＩＶハードウェア１６０を用いて定期的に再検証することができる。
【００２３】
ブートＲＯＭ１１０は、シリコン形態内のチップの一部として設けられてもよいし、あるいは外部ＲＯＭにセキュアに保存されてもよい。（暗号化および署名された）セキュアなカーネル１８５は、ＳＡＭＵドライバの一部として設けられ得る。セキュアなカーネル１８５は、ＳＡＭＵ内のリソース（セキュリティ方針）に制御アクセスを提供し、ＳＡＭＵサイクル（ジョブスケジューリング）に制御アクセスを提供し、ホスト上、またはＳＡＭＵで実行するＳＡＭＵアプリケーション上で実行するＳＡＭＵドライバを接続し、ＳＡＭＵメモリまたは他のコンテクストをオンデマンドで構築／分解するように、構成される。
【００２４】
コード保護を最大化するために、異なるアプリケーションからの異なるＳＡＭＵコードを異なるコンテクストで実行する。各コードイメージは、署名ツールによって異なる態様で暗号化およびハッシュされる。署名時において、暗号鍵はランダムに生成される。さらに、インテグリティ確認を暗号化イメージに適用した後、イメージを実行対象として受容する。
【００２５】
Ｍ−ＡＥＳ１５０は、（ハードウェア内のさらなる専用スクランブリングを用いて）変調したＡＥＳ復号化を読み出し時に実行し、変調したＡＥＳ暗号化を書き込み時（キャッシュまたは埋設内部メモリ中のコンテンツは平文である）に実行する。あるいは、（ＭＭＵを介して構成された）通常のメモリアクセスのためのパススルーとしてバイパスモードが設けられてもよい。メモリＡＥＳ鍵をブートＲＯＭコード又はセキュアなカーネル１８５によって生成してもよい。メモリＡＥＳ鍵は、メモリインターフェースを通過する機密コードおよびデータを保護するためのハードウェアに設けられてもよい。コンテンツは、命令キャッシュ１３０、データキャッシュ１４０または内部埋設メモリ内のみにおいて平文である。同一のコンテクストについてコードおよびデータ鍵を共有することも可能である。セキュアなカーネル１８５は、コンテクスト生成時間においてランダムビットを用いてデータ鍵を初期化して、リプレー攻撃を阻止することもできる。
【００２６】
ランタイムに確立された機密データは、通常、ランタイム生成されたランダム鍵によって保護される。上記ランダム鍵の保護の仕方としては、２つの方法がある。１つの方法としては、外部消費（例えば、ホストまたはプロセッサ内の復号化アクセラレータ）の対象となる機密データを標準ＡＥＳにおいて暗号化する。第２の方法としては、セキュアな実行環境内部に保存されるべき機密データをＭ−ＡＥＳ１５０によって暗号化する。Ｍ−ＡＥＳ動作においては、その他の場合の標準ＡＥＳプロセスの前後において、ハードウェア生成変調による変調が行われる。
【００２７】
さらなるセキュリティを提供するための別の実施形態において、ＳＡＭＵから来たメモリトラフィックを保護するために、Ｍ−ＡＥＳ１５０は、その他の場合の標準ＡＥＳ動作の前後においてハードウェア内のさらなる専用スクランブリングによるさらなる変調を行う。その結果、リバースエンジニアリングが困難となる。そのため、機密コードおよびデータを、既存のフレームバッファメモリまたはシステムメモリ内に保存および保護することが可能となる。異なるランダム鍵をデータセグメント保護のために生成することができ、コードおよびデータ鍵は共有されない。
【００２８】
さらなるセキュリティを提供するための別の実施形態において、署名ツールによって各コードイメージを暗号化およびハッシュする。署名時において、暗号鍵をランダム生成する（プロセスのこの部分は、ベンダーまたはサードパーティソフトウェアプロバイダにおいて行われる）。セキュアなカーネル１８５のための復号化鍵をブートＲＯＭ１１０中のブートコードによって計算および回復し、ＳＡＭＵアプリケーションのための復号化鍵をカーネルによって計算および回復する。さらに、インテグリティ確認を、ＩＶ１６０によって（暗号化バージョンで）適用し、その後実行対象のイメージが受容される。
【００２９】
ＭＭＵ１２０による支援により、コンテクストまたはメモリ管理がセキュアなカーネル１８５によって行われる。ＭＭＵ１２０は、アドレス変換論理を行うように構成される。上記アドレス変換論理は、プロセッサ１８０の仮想アドレス空間をデバイスアドレス空間（例えば、グラフィックスプロセッサ、デジタル信号プロセッサ、またはＦＰＧＡ）へとマップする。ＭＭＵ１２０は、１６個までの非重複アドレスセグメントを４つのＡＥＳ鍵によってサポートする。１つの可能な配置構成として、セキュアなカーネル１８５のための２つの鍵（１つはコード用およびもう１つはデータ用）と、ＳＡＭＵアプリケーションのためのその他の２つの鍵（１つはコード用およびもう１つはデータ用）とを割りあてる配置構成がある。この構成において、同一コンテクストに所属する全データセグメントのうちメモリＡＥＳ保護すべきもののみを、同一データ鍵によって保護することができる。各セグメントは、以下の要素に合わせて独立的に構成することができる：メモリサイズ、メモリＡＥＳ保護、実行可能かどうか（例えば、実行フラグが無い）、およびアクセス制御（読み出し／書き込みアクセスのための最小プロセッサモード）。各メモリセグメントは、仮想アドレス空間において隣接しなければならない。全てのセグメントがメモリＡＥＳ暗号化によって保護されるべきであるわけではない。詳細には、ＳＡＭＵ１０４と、外部デバイスまたはインターネットとの間の通信のためのバッファは、標準ＡＥＳのみによって保護可能であるため、Ｍ−ＡＥＳ１５０をオフにした状態で構成するべきである。
【００３０】
セキュアなカーネル１８５は、ＭＭＵ１２０を構成することが可能な唯一のエージェントである。（次のＳＡＭＵ動作またはアプリケーションを提供するための）新規コンテクストへ切り換える前に、セキュアなカーネル１８５は、ＭＭＵ１２０からの先行コンテクストに所属する全セグメントをアンマップし、ＭＭＵ１２０を再構成して、対象コンテクストに所属する全セグメントをマップする。このプロセスを行うために、セキュアなカーネル１８５は、データキャッシュをフラッシュして、全キャッシュデータをメモリに返送し、メモリＡＥＳ鍵を対象コンテクスト用のもので更新する必要があり得る。
【００３１】
メモリへのアクセスは、メモリインターフェース１９０を介して行われる。ＳＡＭＵ１０４およびその各コンポーネントは、デバイス（例えば、ＣＰＵ、ＧＰＵ、ＤＳＰまたはＦＰＧＡまたは他の同様のデバイスを含むプロセッサ）の観点から通常のクライアントとして扱われる。ＳＡＭＵ１０４は、機密コードおよびデータに対するメモリ保護を提供する際、Ｍ−ＡＥＳ１５０に依存する。
【００３２】
セキュアなカーネル１８５は、以下の範囲を提供するためにさらなるセキュリティサービスを含み得る：外部コンポーネントとのセキュアなトンネルを確立すること、デジタル著作権管理（ＤＲＭ）ブロックとの鍵交換、ライセンス鍵、デバイス鍵またはコンテンツ鍵をアンラップすること、ビットストリームの逆多重化、ビットストリームの復号化または再暗号化、バーチャルマシン（例えば、ＢＤ＋、ブルーレイ（登録商標）ディスクＤＲＭシステムのコンポーネント）としての動作、または既存の経路を用いた音声／映像（Ａ／Ｖ）の加速のためのデータ提出。
【００３３】
セキュアなカーネル１８５は、ロードおよび制御された後、ＳＡＭＵ実行環境を担当する。セキュリティサービスが（カーネルの一体部分となる代わりに）オンデマンドでロードされた場合、上記カーネルは、オンデマンドコードのインテグリティの確認と、これらのオンデマンドサービスに適した正しい復号化鍵の設定とを担当する。オンデマンドコードのための鍵誘導プロセスは、カーネルエンジニアリングプロセスによって決定され得、製品／デバイス生成または製造技術から変化し得る。（製品／デバイス生成は、デバイス製造を行うためのスケールである。例えば、プロセッサは、９０ナノメートル（ｎｍ）または６５ｎｍ技術を用いて製造され得る。）しかし、上記カーネルが鍵誘導アルゴリズムを変更するたびに、ユーザコードのためのオフライン署名ツールを暗号化プロセス内のフローに整合するように変更する必要がある。
【００３４】
プロセッサは、リセットされた後、シリコン内のＲＯＭコードからブートする。ブートストラップコードは、所与の暗号化カーネルのインテグリティを調査した後、復号化鍵を回復させ、上記鍵へと制御を転送するように構成される。インテグリティ照合は、ＩＶ１６０内の専用ハードウェア論理によって行われる。セキュアなカーネルのためのオフライン署名ツールは、インテグリティ照合ハードウェアと整合する暗号設定と、ブートＲＯＭ１１０中にハードコードされた鍵回復機構とを有する。暗号化または鍵生成のためのハッシュ機能の選択は重要ではなく、一方向ＡＥＳ動作の連鎖法に基づき得る。
【００３５】
ＳＡＭＵ１０４のアーキテクチャは、暗号化要求に基づいて何百万個の命令を１秒あたりに（ＭＩＰＳ）行うことが可能であり、暗号化加速（例えば、ＡＥＳ、ＤＥＳ、ＳＨＡｌ、および他のアルゴリズム）をサポートし得る。ＳＡＭＵ１０４アーキテクチャは、以下のうち全てまたは一部をサポートし得る：真の乱数生成器および疑似乱数生成器、セキュアなタイマー、メモリ管理を用いた命令／データキャッシュ、複数の実行モード（または保護レベル）、（カーネルによって構成された）アドレス範囲実行、ブート−ストラップコード検証、およびさらなる開発ツール。
【００３６】
ハードウェアに基づいたページテーブルを用いることにより、セキュリティおよび性能双方が向上する。しかし、ほとんどのオペレーティングシステムによって用いられることが多い４キロ（Ｋ）バイトのページサイズをシステムによってサポートするためには、さらなる専用メモリが必要となるため、高コストになり得る。このようなサポートに関する問題は、本明細書に記載されるセキュアな実行ユニットによって正当化される。一実施形態において、１メガ（Ｍ）バイトのページサイズを開始点として用いる。ハードウェアページテーブル機構は、１Ｍバイト〜４ギガ（Ｇ）バイトの任意の２のべき乗のページサイズをサポートし得る。あるいは、他のページサイズもサポートされ得る。（例えば、４Ｋバイト、８Ｋバイト、１６Ｋバイト、および他の２のべき乗のページサイズ）。
【００３７】
上記ページテーブルは、アドレス変換の他にも、他のセキュリティ特性を含み得る。例えば、上記ページテーブルは、以下のうち１つ以上を示すデータ構造を含み得る：ページ入力が活性であるかまたは無効であるか、ページがデータまたはコードを含むか否か、別個の読み出しアクセスおよび書き込みアクセス制御、メモリＡＥＳをオン・オフにするための暗号化フラグ、またはメモリＡＥＳが必要な場合の鍵索引。
【００３８】
ページ（またはセグメント）内にコードまたはデータが含まれるか否かを示すページテーブル情報は、大部分がセキュリティ問題であり、複数のコンテクストのサポートにおいて本質的ではないであろう。ページがデータ保存のためのものである旨をカーネルに通知することにより、上記カーネルは、当該ページからのコードを実行する試行を全て捕捉（トラップ）することができる。この情報により、バッファ−オーバーラン攻撃を捕捉するための有効な機構を促進することも支援される。
【００３９】
読み出しおよび書き込みアクセス制御は、ページ（またはセグメント）毎に規定され、当該ページ（またはセグメント）への読み出しおよび／または書き込みアクセスが許可される前に、コード実行中の最小保護リングを指定する。その結果、垂直特権違反が回避される。垂直特権違反は、低レベルの特権が割りあてられたアプリケーション（例えば、ユーザアプリケーション）がより高レベルの特権で実行する別のプロセス（例えば、カーネル）に所属するページへの読み出し／書き込みアクセスを取得する場合に発生する。典型的なプロセッサアーキテクチャにおいては、多様なレベルの保護／特権を用いて、制御機能およびプロセス（例えば、特定のデータ構造またはコードセグメントへアクセスするための特定の（事前規定された）保護レベルを持たなければならないプロセス）を分離および制御する。
【００４０】
暗号化フラグは、メモリインターフェースに対するキャッシュがＭ−ＡＥＳ１５０をオンにすることができるか否かを示す。Ｍ−ＡＥＳ１５０は、ＡＥＳ動作の前後に適用されたハードウェア変調を有する。Ｍ−ＡＥＳ１５０によって保護された情報は、セキュアな実行環境および／または環境内部において実行する機密機能のみによって用いられる機密データによって実行されるべきＳＡＭＵ機密コードの内部において消費されるべきものである。ページテーブル入力において設定された暗号化フラグがマーク付けされたページに対し、ハードウェアは、命令キャッシュまたはデータキャッシュ中への全メモリ読み出し動作に対して復号化を自動的に適用し、キャッシュラインのフラッシュ時において、メモリ書き込みに対して暗号化を適用する。
【００４１】
ＭＭＵ１２０における異なるページ入力は、異なる暗号鍵と関連付けられ得る。一実施形態においては、４つの活性暗号鍵が任意の時点においてサポートされ得る（別の実施形態においては、任意の数の鍵がサポートされ得る）。各ページ入力は、暗号化および復号化双方に用いることが可能な主要ハードウェアの索引を指定し得る。その結果、カーネルコード／データおよびユーザコード／データを独立した鍵で保護することが可能になる。ブートコードは、カーネルコード鍵を回復することを担当し、カーネルは、ユーザコード鍵を回復することを担当する。上記カーネルは、全データ鍵のランタイム生成も担当する。
【００４２】
別の実施形態において、上記コード鍵は、これらの機能双方に、それらへの入力部分としてｅフューズ値を用いることにより、インテグリティ照合機構中の署名と接続される。上記復号化鍵と、上記インテグリティ照合機構とを接続することにより、ＳＡＭＵ改ざんが困難になる。
【００４３】
最終的に、これら全てのリソース（すなわち、ページテーブル入力およびメモリＡＥＳ鍵）の構成空間の制御が必要となる。上記構成への読み出し／書き込みアクセスは、制御状態レジスタ中の別個のアクセス制御フィールドによって保護される。コードを適切な保護リング内に配置した後、上記コードにより、これらの構成設定を改変することができる。
【００４４】
このハードウェアに基づいた仮想メモリサポートと、上述の関連付けられたセキュリティ設定とにより、現代のＰＣベースのオペレーティングシステムと共に用いられる機密コードおよびデータを保護するためのロバストなソリューションが得られる。その結果、ソフトウェアベースの不正防止および難読化に関連する演算および出力／熱オーバーヘッドが無くなる。
【００４５】
図２は、ＳＡＭＵアーキテクチャを用いた場合の単一のアプリケーションのフロー図である。ＳＡＭＵのためのバイナリを生成する（ステップ２１０）。署名ツール内においてランダム鍵が生成される（ステップ２１５）。上記バイナリは、上記ＳＡＭＵのために再暗号化され（ステップ２２０）、セキュアなカーネルを例えばＧＰＵの表示ドライバの一部として発送することを含む。ユーザは、セキュアなカーネル（表示ドライバ）およびセキュアなアプリケーションを共に搬送するユーザのコンピュータ／システム上にドライバおよび上記アプリケーションをインストールし得る（ステップ２２５）。ブート時間において、セキュアなカーネル１８５がＳＡＭＵハードウェアへと提示される（ステップ２３０）。上記セキュアなカーネルは、ブートＲＯＭ１１０によってインテグリティについて照合および検証される（ステップ２３５）。ブートＲＯＭ１１０は、セキュアなカーネル１８５のインテグリティを検証（ステップ２４０）した後、（暗号化コードのオンデマンド復号化を行うための）メモリＡＥＳ内の復号化鍵を構成し、制御をセキュアなカーネル１８５へと送る。上記セキュアなカーネルが検証に失敗した場合（ステップ２４５）、ＳＡＭＵサービスはさらされず、上記アプリケーションはソフトウェアベースの保護スキームに後退する。検証が成功した場合、上記セキュアなカーネルのための復号化鍵がブートＲＯＭ１１０によって構成される（ステップ２５０）。
【００４６】
アプリケーションがユーザによって起動される（ステップ２５５）。アプリケーションが起動すると、アプリケーションは、ＳＡＭＵサービスの存在を検出し（ステップ２６０）、ＳＡＭＵから提供された保護された実行環境を利用する準備をする。アプリケーションは、セキュアなＳＡＭＵアプリケーションを、コンテクスト生成のためのセキュアなカーネルへ提供する（ステップ２６５）。ＳＡＭＵアプリケーションは、セキュアなカーネル１８５によってインテグリティについて検証される（ステップ２７０）。セキュアなカーネル１８５は、ＳＡＭＵアプリケーションのインテグリティについて確認するように、ＩＶハードウェア１６０を構成する（ステップ２７５）。インテグリティ検証の成功後、ＳＡＭＵアプリケーションのための復号化鍵が、セキュアなカーネル１８５によって構成される（ステップ２８０）。ＩＶハードウェア１６０がＳＡＭＵアプリケーションを検証できない場合（ステップ２７５）、ＳＡＭＵアプリケーションは実行を許可されず、対応する失敗メッセージがアプリケーションへ返送される（ステップ２８５）。この場合、アプリケーションは、ソフトウェアベースの保護技術に後退することを選択することができる。
【００４７】
上述したようなハードウェア加速のためのＳＡＭＵに対するコードまたはデータのオフロードは、復号化のオフロードおよび３Ｄレンダリングのオフロードに類似する。例えば、アプリケーションは、ＡＰＩを用いて、良好に規定されたワークアイテムをＧＰＵへとオフロードする。
【００４８】
ＳＡＭＵ１０４は、セキュアなブート、インテグリティ確認、実行暗号化コード、機密機能によって用いられる機密データについてのメモリ保護を提供し、チップ製造におけるデバッギングを無効にすることにより、セキュアな実行環境を提供する。上記セキュアな環境内において、少なくとも異なる２種類のコードがある（例えば、カーネルコードまたはファームウェアコード、およびブートストラップコード）。
【００４９】
上記ブートストラップコードは、セキュアな保存部中に暗号化された態様で保存され、最終チップと共に発送される。上記ブートストラップコードは、ブート時において主に以下の３つのサービスを提供する：チップ製造のためのデバッギングの無効、ＳＡＭＵドライバから提供されたカーネルイメージのインテグリティの確認、および所与のカーネルのために復号化鍵のコンピューティングを行った後、上記カーネルへ制御を送ること。
【００５０】
復号化鍵は、ブートプロセスの一部として計算され、カーネルイメージのインテグリティの照合が成功した後のみに用いられる。上記復号化鍵は、以下の複数の入力の関数である：（例えば、チップ製造後に変更ができないように、チップへのエッチングまたはコンピュータ論理のハードコーディングを含む）製造時において注入されたｅフューズパターン、（署名されたカーネルイメージの一部として保存された）カーネル２値署名において生成されたランダムパターン、およびブート時において上記ＳＡＭＵドライバから提供されたソフトウェアパラメータ。カーネル復号化鍵のコンピューティングにおいては、シリコン（例えば、秘密乗算器、ＤＳＰブロック、プロセッサ、高速ＩＯ論理、および埋設メモリ）に埋設された秘密機能へのアクセスも行われる。
【００５１】
カーネルコードは、ＳＡＭＵ１０４のためのマネージャとして機能し、サービスをＳＡＭＵドライバへ提供する。上記カーネルコードは、製造業者カーネル証明書を含み得、ブートローダによってインテグリティが実行される。上記カーネルコードは、ＳＡＭＵリソースを制御し、ＳＡＭＵおよびプロセッサ双方に対するレジスタレベルアクセスを有する。また、上記カーネルコードは、ランタイムにおいてオンデマンドサービスを提供するためのさらなるアプリケーションコードをロードし得る。セキュアなカーネル１８５は、ドライバ呼び出しを取り扱い、ファームウェアルーチンを相応に呼び出す。
【００５２】
図３は、ＳＡＭＵソフトウェアスタック３００を示す。ホストアプリケーション３１０およびＳＡＭＵドライバ３２０は、ホストプロセッサ３６０（例えば、パーソナルコンピュータ、スマートフォン）上に常駐する。ホストアプリケーション３１０から来たリクエストに基づいて、ＳＡＭＵドライバ３２０はコマンド３３０を発行し、対応するデータ３４０をＳＡＭＵプロセッサ３７０のセキュアなカーネル３８０（例えば、プロセッサコア内またはＧＰＵ内のもの）へと転送する。セキュアなカーネル３８０は、複数のアプリケーションプロセス（例えば、ＳＡＭＵアプリケーション）からのデータを受信し得る。このデータは、コード、アプリケーションデータ、および各鍵および（署名ツールによって埋設された）署名を含み得る。セキュアなカーネル３８０は、処理されたデータ３４０をＳＡＭＵドライバ３２０へと返送し得、その後ＳＡＭＵドライバ３２０は上記情報をホストアプリケーション３１０へと送る。あるいは、セキュアなカーネル３８０は、終了コード３５０をＳＡＭＵドライバ３２０へと送り得、終了コード３５０は最終的には処理対象としてホストアプリケーション３１０へ送られる。
【００５３】
図４は、ＳＡＭＵアーキテクチャにおけるランタイムメモリ管理の例を示す。ＳＡＭＵ仮想アドレス４１０は、ＭＭＵ１２０内の仮想アドレスページテーブル入力（Ｄ０〜Ｄ１５）へとマップされ、仮想アドレスページテーブル入力（Ｄ０〜Ｄ１５）は、アドレスをデバイスアドレス空間４２０（例えば、ＧＰＵメモリ、ＤＳＰメモリ、ＦＰＧＡメモリ、または他の類似のデバイス）内の入力へマップする。
【００５４】
一実施形態において、仮想アドレスページテーブルは、ＭＭＵ１２０のハードウェアレジスタに保存され、外部保存に依存するのではなく、プロセッサ１８０へのみアクセスが可能となる。このスキームの１つの特徴は、複数のアプリケーションの同時管理が可能な点にある。この例において、（ＳＡＭＵアドレス空間４１０およびデバイスアドレス空間４２０内の）ＳＡ２と、（デバイスアドレス空間４２０内の）ＳＡ１とは、少なくとも２つのアプリケーションを示し、ＳＡ２は、そのときにＳＡＭＵによってサービスされる活性コンテクストである。
【００５５】
以下、ページテーブル入力のアプリケーションについて説明する。ページテーブル入力を活性または非活性として表記して、ハードウェアに基づいたページ変換を行う。異なるコンテクストは、典型的には、異なる数のページテーブル入力を消費する。なぜならば、全コンテクストが同一数のメモリセグメントを利用しなければならない場合、ソフトウェア開発の観点からみて制限が高すぎるからである。入力毎のフラグにより、メモリ管理におけるカーネルの柔軟性が得られる。また、入力毎のフラグにより、水平特権違反も回避され得る。水平特権違反が発生する場合としては、同一保護リングが割りあてられた２つのコンテクスト（リング値は、ＳＡＭＵアドレス空間４１０、ＳＲＢに示すようにＳＡＭＵリングバッファ中に保存される）が別のコンテクストに所属するページへのアクセスを得た場合がある。
【００５６】
本明細書に記載される実施形態においては、ＳＡＭＵを用いて、ホストプロセッサからの機密コードをオフロードする。上記プロセッサは、ＳＡＭＵ上において実行する機密コードへ機密データを保護された態様で送る。貴重なコンテンツを取り扱うために、ＳＡＭＵは、コンテンツコピー保護、逆多重化、および音声および／または映像パケットの抽出、音声および／または映像主要ストリームの構築、再暗号化を適用した後のホストおよび／またはさらなる処理のためのコーデック復号化への制御返送を提供し得る。
【００５７】
ＳＡＭＵによって提供されるセキュアな実行環境を用いて、高価値コンテンツ消費のために確立されたコピー保護スキームと関連付けられた機密コードを実行することができる。セキュアな実行が必要となり得る環境の一例として、ブルーレイ（登録商標）ディスクプレーヤまたはホスト上において実行するブルーレイ（登録商標）プレーヤアプリケーションがある。ブルーレイ（登録商標）ディスクプレーヤは、パーソナルコンピュータまたはユーザデバイスの一部であり得る。ソフトウェアベンダーは、ブルーレイ（登録商標）ディスクを実行するためのセキュアな実行環境を必要とする。なぜならば、上記ディスクは、コンテンツ制作者がコンテンツ保護のために用いたロバストなコピー保護スキームと共に送られるからである。上記ＳＡＭＵは、このような環境を提供する。ブルーレイ（登録商標）プレーヤは、コンテンツ保護機能（例えば、ＡＡＣＳおよびＢＤ＋機能）をオフロードして、セキュアな環境上において実行させることができる。上記保護されたブルーレイ（登録商標）コンテンツは、光ディスクからロードされるが、復号化動作および逆多重化動作を行う際には、上記セキュアな環境内のＡＡＣＳおよびＢＤ＋機能に依存する。映像ビットストリームを上記セキュアな環境においてＡＥＳによって再暗号化して、映像復号器によって消費することができる。音声ビットストリームおよび他のナビゲーションデータをＡＥＳによって再暗号化して、プレーヤによって消費することができる。
【００５８】
しかし、当業者であれば、ＳＡＭＵの用途はブルーレイ（登録商標）ディスクプレーヤに限定されないことを理解する。ＳＡＭＵは、他のハードウェアプラットフォーム（例えば、携帯電話、ハンドヘルドアクセサリ、測位システムなど）においても利用可能である。
【００５９】
上記実施形態において、ＳＡＭＵは、プロセッサ中心のセキュリティプラットフォームである。プロセッサは、別のデバイス（例えば、一体型ノースブリッジ、アプリケーションプロセッサ、中央処理装置、デジタル信号プロセッサ）の一部を形成し得る。ＳＡＭＵはプロセッサの一部であるため、コーデック加速が可能となり、ＳＡＭＵから出てきたビットストリームを保護するための鍵（単数または複数）をコーデックアクセラレータへの入力として用いることができ、上記鍵は、プロセッサから退出することなくＳＡＭＵからコーデックアクセラレータへと移動することができる。このような構造および動作により、高価値コンテンツ消費のためのセキュリティの向上が可能となる。
【００６０】
ＳＡＭＵカーネルの一部として提供されたセキュリティサービスを検出および利用することにより、機密コードの実行をプロセッサからＳＡＭＵへと移動させることができる。あるいは、認証ドライバへのコードを署名されファームウェアとして半導体製造業者から提示することにより、機密コードをプロセッサからＳＡＭＵへと移動することも可能である。また、ＳＡＭＵを用いて、他の暗号動作（例えば、秘密鍵へのアクセスが必要な場合における認証およびデジタル署名の生成）をオフロードすることもできる。これらの動作をＳＡＭＵへと移動することにより、秘密鍵を暗号化された態様でホストシステム中に保存することができ、上記秘密鍵の平文値は、保護された実行環境のみにおいて回復および消費される。
【００６１】
ＳＡＭＵの利用により、全体的なシステムロバスト性および出力効率の向上が可能となる。ＳＡＭＵは、信頼性確認のための単一ポイントを処理アーキテクチャ（例えば、プロセッサ、ＧＰＵ、ＣＰＵ、ＤＳＰまたはＦＰＧＡ）内に提供する。ＳＡＭＵは、暗号化および署名されたカーネルコードのみからブートし、暗号化および署名されたコードのみを実行する。ＳＡＭＵハードウェアは、未署名でありかつ暗号化されていない（すなわち、未暗号化の）コードを実行し得る。ＳＡＭＵは、ハードウェアに基づいたセキュアなブートおよびメモリ保護を備えており、ホストプロセッサから提供されたオンデマンドコードを実行することができる。
【００６２】
一実施形態において、デバイス（例えば、ＧＰＵプラットフォーム）内の３２ビットＲＩＳＣプロセッサを統合し、上記プロセッサにセキュリティ論理を付加することにより、出力効率が良くかつコスト効率の良いセキュアな実行環境が確立される。この環境における実行対象として２値がランダム生成された鍵によって暗号化され、オフラインツールによって同時署名される。保護された２値は、暗号化形態でドライバおよび／またはアプリケーションへ提供され、メモリにロードされた際にもこの形態のままである。機密コードがオンデマンドで命令キャッシュ中へとロードされる際、復号化が「オンザフライ」で行われる。このような構成により、ＰＣ中において利用可能な既存のメモリを用いて機密情報を保存することが可能になる。
【００６３】
機密コードは、オフライン署名ツールによって保護される。機密コードには、リソースアクセスを管理するカーネルと、実際のセキュリティ関連機能をホストアプリケーションへ提供するユーザコードとの２種類が少なくともある。ＳＡＭＵ製造業者は上記カーネルを所有し得るが、ユーザコードは、（ＳＡＭＵ用のアプリケーションを構築する）ＳＡＭＵ製造業者または外部ソフトウェアベンダーのいずれかから来る。これらの種類の機密コードのために、別個の署名ツールを開発してもよい。
【００６４】
また、ＳＡＭＵ製造業者が開発ツールをソフトウェアベンダーに提供した場合またはＳＡＭＵ製造業者およびソフトウェアベンダー双方が分割スキームおよび関連ＡＰＩを開発した場合、ＳＡＭＵのコア機能をソフトウェアベンダーに提供することもできる。これらの状況において、ＳＡＭＵ製造業者またはソフトウェアベンダーのうちいずれかが、オンデマンドファームウェアコードを生成し得る。
【００６５】
さらに、本明細書に記載の実施形態により、研究および開発リソースのランダム化が低減し、収益からの小売り圧力が軽減し、また、パーソナルコンピュータプラットフォーム上における高価値ブロードキャストが可能となる。高価値コンテンツを挙げると、例えば、デジタル映像ブロードキャストハンドヘルド、ＡＲＩＢがある。本明細書に記載の実施形態により、難読化された不正防止ソフトウェアの利用に費やされる出力が低減し、有効なソフトウェアの取り消し頻度が低減し、顧客にとって煩わしさが比較的少ないかまたはほとんど無くなるため、コンテンツ所有者の満足度も増す。
【００６６】
本明細書に記載の実施形態は、プロセッサコア内において実行され得る。上記プロセッサコアは、ＣＰＵ、ＤＳＰ、ＦＰＧＡ、ＧＰＵまたはこれらの組み合わせとして実現され得る。当業者であれば、プロセッサコアが別のデバイス（例えば、一体型ノースブリッジ、アプリケーションプロセッサ、ＣＰＵ、ＤＳＰ）の一部を形成し得ることを理解する。
【００６７】
適切なプロセッサを例示的に挙げると、汎用プロセッサ、特殊目的用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアと関連付けられた１つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、他の任意の種類の集積回路（ＩＣ）および／または状態機械がある。
【００６８】
さらに、本発明は、ハードウェア、ソフトウェア、ファームウェアまたはこれらの任意の組み合わせとして実現され得る。本発明の実施形態またはその一部は、多数のプログラミング言語（例えば、ハードウェア記述言語（ＨＤＬ）、アセンブリ言語、Ｃ言語、ネットリスト）で符号化され得る。例えば、ＨＤＬ（例えば、Ｖｅｒｉｌｏｇ）を用いて、本発明の１つ以上の実施形態の局面を実行するデバイス（例えば、プロセッサ、特定用途向け集積回路（ＡＳＩＣ）、および／または他のハードウェア要素）の合成、シミュレートおよび製造を行うことができる。Ｖｅｒｉｌｏｇコードを用いて、ＳＡＭＵアプリケーションが可能なプロセッサのモデル化、設計および／または実行を行うことができる。
【００６９】
例えば、Ｖｅｒｉｌｏｇを用いて、レジスタ転送レベル（ＲＴＬ）記述論理を生成することができる。この論理は、ＳＡＭＵアプリケーションのための命令を実行することができる。次に、上記論理のＲＴＬ記述を用いて、所望の論理またはデバイスの製造に用いられるデータ（例えば、グラフィック設計システム（ＧＤＳ）またはＧＤＳＩＩデータ）を生成することができる。Ｖｅｒｉｌｏｇコード、ＲＴＬ記述および／またはＧＤＳＩＩデータは、コンピュータで読み出し可能な媒体上に保存され得る。本発明の局面を実行するために上記論理によって実行される命令は、多様なプログラミング言語（例えば、ＣおよびＣ＋＋）によって符号化され得、オブジェクトコードとしてコンパイルされることにより、論理または他のデバイスによって実行され得る。
【００７０】
本発明の局面は、全体的または部分的に、コンピュータで読み出し可能な媒体上に保存され得る。上記コンピュータで読み出し可能な媒体上に保存された命令は、本発明を全体的または部分的に行うようにプロセッサを適合させることもできるし、あるいは、本発明を全体的または部分的に実行するように特定に適合されたデバイス（例えば、プロセッサ、ＡＳＩＣまたは他のハードウェア）を生成するように適合させることもできる。これらの命令を用いて、マスクワーク／フォトマスクの生成を通じて製造プロセスを最終的に構成して、本明細書に記載される本発明のハードウェアデバイスを実現する局面を得ることができる。
【図１Ａ】
0005537742.tif 000002
【図１Ｂ】
0005537742.tif 000003
【図２】
0005537742.tif 000004
【図３】
0005537742.tif 000005
【図４】
0005537742.tif 000006