(57)【特許請求の範囲】
【請求項１】
ネットワークを通じて第１のサーバからコンピューティングプラットフォームへライセンスとアプリケーションプログラムをプロビジョニングする方法であって、前記ライセンスは第１の公開鍵を用いて前記第１のサーバにより暗号化され、第２の鍵を含み、前記アプリケーションプログラムは前記第２の鍵を用いて前記第１のサーバにより暗号化され、前記方法は、
前記コンピューティングプラットフォームのプロセッサにより実行されるホストアプリケーションが、ユーザのユーザパスワードを受け取るステップと、
前記ホストアプリケーションが、前記ユーザパスワードから、少なくとも部分的に対称鍵を求めるステップと、
前記ホストアプリケーションが、前記対称鍵で署名されたメッセージで、前記コンピューティングプラットフォームのチップセット中のハードウェアで実装されたセキュリティエンジンのライセンス管理ファームウェアコンポーネントに、ライセンスを送るステップと、
前記ライセンス管理ファームウェアコンポーネントが、前記ハードウェアで実装されたセキュリティエンジンのセキュアストレージに記憶された前記ユーザパスワードから少なくとも部分的に前記対称鍵を求め、前記対称鍵を用いて前記メッセージに対する署名を確認し、前記ライセンスに対する前記第１のサーバの署名を確認し、前記第１の公開鍵に対応する前記ライセンス管理ファームウェアコンポーネントの第１の秘密鍵を用いて前記ライセンスを復号して、前記第２の鍵を取得するステップと、
前記ライセンス管理ファームウェアコンポーネントが、前記第２の鍵を前記ホストアプリケーションに送るステップと、
前記ホストアプリケーションが、前記第２の鍵を用いて前記アプリケーションプログラムを復号するステップと
を有する、方法。
【請求項２】
前記コンピューティングプラットフォームが、前記第１のサーバに接続して、前記ホストアプリケーションを前記コンピューティングプラットフォームにダウンロードするステップをさらに有する、請求項１に記載の方法。
【請求項３】
前記セキュリティエンジンのケーパビリティライセンシングサービスが、前記ユーザパスワードを受け取る前に、前記第１のサーバと前記ライセンス管理ファームウェアコンポーネントとの間の許可された通信チャネルをアクティブ化するステップをさらに有する、請求項２に記載の方法。
【請求項４】
前記ライセンス管理ファームウェアコンポーネントの時間を前記第１のサーバの時間と同期するステップをさらに有する、請求項１に記載の方法。
【請求項５】
前記ライセンス管理ファームウェアコンポーネントが、前記ライセンスを復号する前に、前記アプリケーションプログラムの許可された仕様のリース期限が徒かしたか確認するステップをさらに有する、請求項４に記載の方法。
【請求項６】
前記ライセンスは、前記アプリケーションプログラムの一意的な識別子、前記ユーザのコンピューティングプラットフォームによる前記アプリケーションプログラムの許可された仕様のリース期限、及び前記第２の鍵を有する、請求項１に記載の方法。
【請求項７】
前記コンピューティングプラットフォームにおいて窃盗状態がトリガーされたとき、前記ライセンス管理ファームウェアコンポーネントから前記ホストアプリケーションに前記第２の鍵を送らないステップをさらに有する、請求項１に記載の方法。
【請求項８】
コンピューティングプラットフォームであって、
ホストアプリケーションを実行するプロセッサと、
前記ホストアプリケーションを記憶するメモリと、
インタフェースを通して前記プロセッサと結合したチップセットであって、前記チップセットはハードウェアで実装したセキュリティエンジンを有し、前記セキュリティエンジンはセキュアストレージとライセンス管理ファームウェアコンポーネントとを含む、チップセットとを有し、
前記コンピューティングプラットフォームは、ネットワークを通じて第１のサーバから前記コンピューティングプラットフォームへライセンスとアプリケーションプログラムをプロビジョニングするように構成され、前記ライセンスは第１の公開鍵を用いて前記第１のサーバにより暗号化され、第２の鍵を含み、前記アプリケーションプログラムは前記第２の鍵を用いて前記第１のサーバにより暗号化され、
前記ホストアプリケーションは、実行されたとき、ユーザのユーザパスワードを受け取り、前記ユーザパスワードから少なくとも部分的に対称鍵を求め、前記対称鍵で署名されたメッセージで、前記ライセンス管理ファームウェアコンポーネントに前記ライセンスを送り、
前記ライセンス管理ファームウェアコンポーネントが、前記セキュアストレージに記憶された前記ユーザパスワードから少なくとも部分的に前記対称鍵を求め、前記対称鍵を用いて前記メッセージに対する署名を確認し、前記ライセンスに対する前記第１のサーバの署名を確認し、前記第１の公開鍵に対応する前記ライセンス管理ファームウェアコンポーネントの第１の秘密鍵を用いて前記ライセンスを復号して、前記第２の鍵を取得し、前記第２の鍵を前記ホストアプリケーションに送り、
前記ホストアプリケーションは、実行されたとき、前記第２の鍵を用いて前記アプリケーションプログラムを復号する、
コンピューティングプラットフォーム。
【請求項９】
前記コンピューティングプラットフォームは、前記第１のサーバに接続され、前記ホストアプリケーションをダウンロードして前記メモリに記憶させる、請求項８に記載のコンピューティングプラットフォーム。
【請求項１０】
前記ハードウェアで実装されたセキュリティエンジンは、前記ユーザパスワードを受け取る前に、前記第１のサーバと前記ライセンス管理ファームウェアコンポーネントとの間の許可された通信チャネルをアクティブ化するケーパビリティライセンシングサービスコンポーネントを有する、請求項９に記載のコンピューティングプラットフォーム。
【請求項１１】
前記ライセンス管理ファームウェアコンポーネントは前記ライセンス管理ファームウェアコンポーネントの時間を前記第１のサーバの時間と同期する、請求項８に記載のコンピューティングプラットフォーム。
【請求項１２】
前記ライセンスを復号した後に、前記ライセンス管理ファームウェアコンポーネントが、前記アプリケーションプログラムの許可された仕様のリース期限が徒かしたか確認する、請求項１１に記載のコンピューティングプラットフォーム。
【請求項１３】
前記ライセンスは、前記アプリケーションプログラムの一意的な識別子、前記ユーザのコンピューティングプラットフォームによる前記アプリケーションプログラムの許可された仕様のリース期限、及び前記第２の鍵を有する、請求項８に記載のコンピューティングプラットフォーム。
【請求項１４】
前記ライセンス管理ファームウェアコンポーネントは、前記コンピューティングプラットフォームにおいて窃盗状態がトリガーされたとき、前記ホストアプリケーションに前記第２の鍵を送らない、請求項８に記載のコンピューティングプラットフォーム。
【請求項１５】
ネットワークにより第１のサーバからコンピューティングプラットフォームにライセンスとアプリケーションプログラムをプロビジョニングする方法であって、
前記コンピューティングプラットフォーム上のプロセッサにより実行されているホストアプリケーションが、前記第１のサーバから前記ライセンスと前記アプリケーションプログラムを受け取るステップであって、前記ライセンスは前記コンピューティングプラットフォームのチップセット中のハードウェアで実装されたセキュリティエンジンのライセンス管理ファームウェアコンポーネントの公開鍵を用いて、前記第１のサーバにより暗号化され、前記アプリケーションプログラムは前記第１のサーバにより生成されたライセンス暗号化鍵を用いて前記第１のサーバにより暗号化され、前記暗号化されたライセンスは前記第１のサーバの秘密鍵により署名され、前記暗号化され署名されたライセンスと前記暗号化されたアプリケーションプログラムとを前記コンピューティングプラットフォームのメモリに記憶させる、ステップと、
前記ホストアプリケーションが、前記コンピューティングプラットフォームのユーザからパスワードを取得するステップと、
前記ホストアプリケーションが、前記パスワードから少なくとも部分的に対称鍵を求め、前記暗号化され署名されたライセンスを含むメッセージを前記対称鍵で署名するステップと、
前記メッセージを、前記ホストアプリケーションから、前記ハードウェアで実装されたセキュリティエンジンのライセンス管理ファームウェアコンポーネントに送るステップと、
前記ライセンス管理ファームウェアコンポーネントが、前記パスワードから、少なくとも部分的に前記対称鍵を求めるステップと、
前記ライセンス管理ファームウェアコンポーネントが、前記対称鍵を用いて前記メッセージの署名を確認するステップと、
前記メッセージの署名が正しいと確認されたとき、前記第１のサーバの公開鍵を用いて前記暗号化されたライセンスの署名を確認し、前記ライセンス署名が正しいと確認されたとき、前記ライセンス管理ファームウェアコンポーネントの秘密鍵を用いて前記暗号化されたライセンスを復号するステップと、
前記ライセンス管理ファームウェアコンポーネントが、前記ライセンスからライセンス暗号化鍵を取り出し、前記ライセンス暗号化鍵を前記ホストアプリケーションに送るステップと、
前記ホストアプリケーションが、前記ライセンス暗号化鍵を用いて、前記暗号化されたアプリケーションプログラムを復号し、前記コンピューティングプラットフォームにおいて前記アプリケーションプログラムへのアクセスを許可するステップと
を有する、方法。
【請求項１６】
前記ライセンス管理ファームウェアコンポーネントが、前記対称鍵を求める前に、
前記ホストアプリケーションが、前記コンピューティングプラットフォームのユーザからパスワードを取得するステップと、
前記ホストアプリケーションが、前記ライセンス管理ファームウェアコンポーネントの公開鍵で前記パスワードを暗号化するステップと、
前記ホストアプリケーションが、前記暗号化されたパスワードを、前記ネットワークにより前記コンピューティングプラットフォームに結合した第２のサーバに送るステップと、
前記ライセンス管理ファームウェアコンポーネントが、前記第２のサーバの秘密鍵により署名された前記暗号化されたパスワードを受け取るステップと、
前記ライセンス管理ファームウェアコンポーネントが、前記暗号化されたパスワードの署名を確認し、前記署名が正しいと確認されたとき、前記ライセンス管理ファームウェアコンポーネントの秘密鍵を用いて前記暗号化されたパスワードを復号し、前記パスワードを前記セキュアエンジン中のセキュアストレージに記憶させるステップと
をさらに有する、請求項１５に記載の方法。
【請求項１７】
前記コンピューティングプラットフォームが、前記第１のサーバに接続して、前記ホストアプリケーションを前記コンピューティングプラットフォームにダウンロードするステップをさらに有する、請求項１５に記載の方法。
【請求項１８】
前記セキュリティエンジンのケーパビリティライセンシングサービスが、前記ユーザパスワードを受け取る前に、前記第１のサーバと前記ライセンス管理ファームウェアコンポーネントとの間の許可された通信チャネルをアクティブ化するステップをさらに有する、請求項１７に記載の方法。
【請求項１９】
前記ライセンス管理ファームウェアコンポーネントの時間を前記第１のサーバの時間と同期するステップをさらに有する、請求項１５に記載の方法。
【請求項２０】
前記ライセンス管理ファームウェアコンポーネントが、前記ライセンスを復号する前に、前記アプリケーションプログラムの許可された仕様のリース期限が徒かしたか確認するステップをさらに有する、請求項１９に記載の方法。
【請求項２１】
前記ライセンスは、前記アプリケーションプログラムの一意的な識別子、前記ユーザのコンピューティングプラットフォームによる前記アプリケーションプログラムの許可された仕様のリース期限、及び前記ライセンス暗号化鍵を有する、請求項１５に記載の方法。
【請求項２２】
前記コンピューティングプラットフォームにおいて窃盗状態がトリガーされたとき、前記ライセンス管理ファームウェアコンポーネントから前記ホストアプリケーションに前記ライセンス暗号化鍵を送らないステップをさらに有する、請求項１５に記載の方法。
【請求項２３】
コンピューティングプラットフォームであって、
ホストアプリケーションを実行するプロセッサと、
前記ホストアプリケーションを記憶するメモリと、
インタフェースを通して前記プロセッサと結合したチップセットであって、前記チップセットはハードウェアで実装したセキュリティエンジンを有し、前記セキュリティエンジンはセキュアストレージとライセンス管理ファームウェアコンポーネントとを含む、チップセットとを有し、
前記コンピューティングプラットフォームは、ネットワークにより第１のサーバからライセンスとアプリケーションプログラムをプロビジョニングし、
前記ホストアプリケーションは前記第１のサーバから前記ライセンスと前記アプリケーションプログラムを受け取り、前記ライセンスは前記コンピューティングプラットフォームのチップセット中のハードウェアで実装されたセキュリティエンジンのライセンス管理ファームウェアコンポーネントの公開鍵を用いて、前記第１のサーバにより暗号化され、前記アプリケーションプログラムは前記第１のサーバにより生成されたライセンス暗号化鍵を用いて前記第１のサーバにより暗号化され、前記暗号化されたライセンスは前記第１のサーバの秘密鍵により署名され、前記暗号化され署名されたライセンスと前記暗号化されたアプリケーションプログラムとを前記メモリに記憶させ、ユーザからパスワードを取得し、前記パスワードから少なくとも部分的に対称鍵を求め、前記暗号化され署名されたライセンスを含むメッセージを前記対称鍵で署名し、前記メッセージを前記ライセンス管理ファームウェアコンポーネントに送り、
前記ライセンス管理ファームウェアコンポーネントは、前記パスワードから少なくとも部分的に前記対称鍵を求め、前記対称鍵を用いて前記メッセージに対する署名を確認し、前記メッセージの署名が正しいと確認されたとき、前記第１のサーバの公開鍵を用いて前記暗号化されたライセンスの署名を確認し、前記ライセンス署名が正しいと確認されたとき、前記ライセンス管理ファームウェアコンポーネントの秘密鍵を用いて前記暗号化されたライセンスを復号し、前記ライセンスから前記ライセンス暗号化鍵を取り出し、前記ライセンス暗号化鍵を前記ホストアプリケーションに送り、
前記ホストアプリケーションは、前記ライセンス暗号化鍵を用いて、前記暗号化されたアプリケーションプログラムを復号し、前記コンピューティングプラットフォームにおいて前記アプリケーションプログラムへのアクセスを許可する、
コンピューティングプラットフォーム。
【請求項２４】
前記ライセンス管理ファームウェアコンポーネントは、前記ホストアプリケーションが、前記コンピューティングプラットフォームのユーザからパスワードを取得し、前記ライセンス管理ファームウェアコンポーネントの公開鍵で前記パスワードを暗号化し、
前記ホストアプリケーションが、前記暗号化されたパスワードを、前記ネットワークにより前記コンピューティングプラットフォームに結合した第２のサーバに送り、
前記ライセンス管理ファームウェアコンポーネントが、前記第２のサーバの秘密鍵により署名された前記暗号化されたパスワードを受け取り、前記暗号化されたパスワードの署名を確認し、前記署名が正しいと確認されたとき、前記ライセンス管理ファームウェアコンポーネントの秘密鍵を用いて前記暗号化されたパスワードを復号し、前記パスワードを前記セキュリティエンジン中のセキュアストレージに記憶させる、
請求項２３に記載のコンピューティングプラットフォーム。
【請求項２５】
前記コンピューティングプラットフォームは、前記第１のサーバに接続され、前記ホストアプリケーションをダウンロードして前記メモリに記憶させる、請求項２３に記載のコンピューティングプラットフォーム。
【請求項２６】
前記ハードウェアで実装されたセキュリティエンジンは、前記ユーザパスワードを受け取る前に、前記第１のサーバと前記ライセンス管理ファームウェアコンポーネントとの間の許可された通信チャネルをアクティブ化するケーパビリティライセンシングサービスコンポーネントを有する、請求項２５に記載のコンピューティングプラットフォーム。
【請求項２７】
前記ライセンス管理ファームウェアコンポーネントは前記ライセンス管理ファームウェアコンポーネントの時間を前記第１のサーバの時間と同期する、請求項２３に記載のコンピューティングプラットフォーム。
【請求項２８】
前記ライセンスを復号した後に、前記ライセンス管理ファームウェアコンポーネントが、前記アプリケーションプログラムの許可された仕様のリース期限が徒かしたか確認する、請求項２７に記載のコンピューティングプラットフォーム。
【請求項２９】
前記ライセンスは、前記アプリケーションプログラムの一意的な識別子、前記ユーザのコンピューティングプラットフォームによる前記アプリケーションプログラムの許可された仕様のリース期限、及び前記ライセンス暗号化鍵を有する、請求項２３に記載のコンピューティングプラットフォーム。
【請求項３０】
前記ライセンス管理ファームウェアコンポーネントは、前記コンピューティングプラットフォームにおいて窃盗状態がトリガーされたとき、前記ホストアプリケーションに前記ライセンス暗号化鍵を送らない、請求項２３に記載のコンピューティングプラットフォーム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してコンピューティングの分野に関する。より具体的には、本発明の一実施形態は、ハードウェアベースセキュリティエンジンを用いるコンピューティングプラットフォームへのソフトウェアのセキュアライセンシングに関する。
【背景技術】
【０００２】
コンピューティング装置は、ソフトウェアとともにエンドユーザに用いられ、ソフトウェアはソフトウェアサービスプロバイダその他のベンダーにより提供される正確なライセンシング／バージョニングシステムを必要とすることがある。現在のソフトウェアライセンシングメカニズムは、一般的に、（ドングルなどの）独自ハードウェアに基づくものか、オペレーティングシステム（ＯＳ）が提供するセキュリティ機能によるセキュア暗号鍵を用いるもののいずれかである。これらのメカニズムは、ＯＳと、暗号化／復号に用いられる鍵をセキュアするＯＳのサービスとに依存し、ポリシーに基づくソフトウェアライセンスに対しリース期間を強制することがある。ＯＳにより制御されたアプリケーションは、コンピュータウィルス、ハッカー、及び悪意のあるユーザにとって格好のターゲットとなる。彼らは、高度なツールを利用してＯＳにより管理されたストレージ中に隠された鍵を探したり、ポリシーをバイパスする方法を見つけたりする。例えばコンピューティングシステムの時間を変更してリース時間を延ばし、又はポリシーを読むのに文書を読む者が用いるファイルを、他のシステムから取得した異なるパラメータを有する有効ファイルと置き換えたりして、ポリシーをバイパスする。独自ハードウェアソリューションにはコストがかかり、ユーザを一ベンダーに制限し、ベンダーは素早く革新的なソリューションを開発できない。よって、コンピューティングシステムにソフトウェアをライセンスする、改良されたセキュアなメカニズムが必要である。
【図面の簡単な説明】
【０００３】
詳細な説明は、添付した図面を参照して行う。異なる図面で同じ参照番号を用いて、同様の又は同一のアイテムを示す。
【図１】本発明の一実施形態によるシステムアーキテクチャを示す図である。
【図２】本発明の一実施形態によるセキュアライセンス管理サービスをアクティブ化するプロセスを示す図である。
【図３】本発明の一実施形態によるケーパビリティライセンスサービスをアクティブ化するプロセスを示す図である。
【図４】本発明の一実施形態による、ライセンスを取得し、制約されたソフトウェアを許可（authorize）するプロセスを示す図である。
【図５】本発明の一実施形態による、ライセンスを取得し、制約されたソフトウェアを許可（authorize）するプロセスを示す図である。
【図６】本発明の一実施形態によるコンピューティングプラットフォームを示す図である。
【発明を実施するための形態】
【０００４】
本発明の実施形態は、ハードウェア実施のセキュリティエンジン（ＳＥ）を用いるソフトウェアライセンシングメカニズムを提供する。ＳＥは、コンピューティングプラットフォームのチップセットに組み込まれ、ホストＯＳとは独立しており、認証用リモートサーバとセキュアに通信することができる。ホストＯＳと独立なハードウェアコンポーネントを用いて、ソフトウェアライセンス及び／又は（アプリケーションプログラムなどの）制限付きソフトウェアの復号、及びリース期間などのポリシーの強制に必要な暗号鍵保護するので、純粋なソフトウェアベースのソリューションと比較してセキュリティソリューションがよりセキュアになる。ソフトウェアだけのソリューションと比較して、ＳＥをハッキングして鍵を取得することはずっと難しい。ＳＥはユーザレベルやＯＳソフトウェアにより改ざんできないからである。
【０００５】
以下の詳細な説明では、様々な実施形態をよく理解してもらうために、具体的な詳細事項を多数記載する。しかし、本発明の様々な実施形態はこれらの具体的な詳細事項がなくても実施することができる。他の場合には、本発明の具体的な実施形態を分かりにくくしないように、周知の方法、手順、コンポーネント、回路は詳細には説明していない。さらに、本発明の実施形態の様々な態様は、集積半導体回路（「ハードウェア」）、コンピュータ読み取り可能記憶媒体に記憶された一又は複数のプログラムに組織化されたコンピュータ読み取り可能命令（「ソフトウェア」）、又はハードウェアとソフトウェアの組合せなどの様々な手段を用いて実行できる。本開示の目的において、「ロジック」とは、ハードウェア、（プロセッサの動作を制御するマイクロコードなどを含む）ソフトウェア、ファームウェア、又はこれらの組合せを意味するものとする。
【０００６】
図１は、本発明の一実施形態によるシステムアーキテクチャ１００を示す図である。明りょう化のため、図１はコンピューティングプラットフォーム１０２の簡略図を含む。コンピューティングプラットフォームは、少なくとも一プロセッサと少なくとも一メモリとを有する任意のタイプのコンピューティング装置である。一実施形態では、コンピューティングプラットフォームは、セルラホン、スマートホン、タブレット、パーソナルデジタルアシスタント（ＰＤＡ）、ネットブックなどのハンドヘルド及び／又はモバイルコンピューティング装置を含む。コンピューティングプラットフォームがハンドヘルド及び／又はモバイル装置である一実施形態では、先行技術のシステムにおけるようにハードウェアドングルを必要とするものは実際的ではなく、問題がある。コンピューティングプラットフォームの一実施形態のより詳細な例は、図６を参照して説明する。
【０００７】
本発明の実施形態では、制限付きソフトウェアの不正使用をライセンス、準備及び抑止するため、セキュアな実行及び記憶環境を提供するため、セキュリティエンジン（ＳＥ）１０８と呼ぶ組み込みマイクロコントローラを用いる。一実施形態では、セキュリティエンジン１０８は、チップセット１０６中の周知のマネージャビリティエンジン（ＭＥ）ハードウェアコンポーネント内の機能として実施してもよい。他の実施形態では、セキュリティエンジンは、ＭＥとは別の、チップセット１０６内の回路として実施してもよい。ＳＥはファームウェアを有する。このファームウェアは、セキュアな実行環境においてマイコロコントローラ上で実行され、コンピューティングプラットフォーム１０２中のプロセッサで実行されるユーザレベルプログラム、オペレーティングシステム（ＯＳ）、ベーシック入出力システム（ＢＩＯＳ）による改ざんから保護されたセキュア記憶エリア１０９を提供する。一実施形態では、セキュアストレージは、ソフトウェアライセンシングの目的で用いられる暗号鍵その他のデータを記憶している。セキュアストレージはいかなるタイプのメモリであってもよい。
【０００８】
一実施形態では、ＳＥは少なくとも２つのファームウェアモジュールを有する。セキュアライセンスマネージメント（ＳＬＭ）サービス１１２は、ライセンス情報とそれに関連するポリシーを復号するのに必要な鍵の記憶を管理するファームウェアモジュールを有する。ケーパビリティライセンシングサービス（ＣＬＳ）１１０は、ＳＥにおいてＳＬＭサービスのセキュアプロビジョニングを提供するファームウェアモジュールを有する。コンピューティングプラットフォーム１０２は、チップセット１０６に結合した少なくとも一のプロセッサ１０４を含む。プロセッサ１０４は、ホストアプリケーション１１６と呼ぶアプリケーションプログラムを実行する。ホストアプリケーションは、コンピューティングプラットフォーム上にインストールされた制限付きソフトウェアを使い使用の許可を受ける目的で、コンピューティングプラットフォームのユーザとインターラクションする。制限付きソフトウェアは、ソフトウェアベンダが、ポリシーを定めて、ライセンスにより管理したいソフトウェアを含む。一実施形態では、ホストアプリケーション１１６は、セキュリティエンジンインタフェース（ＳＥＩ）１１４により、ＳＥ１０８と通信する。様々な実施形態では、ＳＥＩは、既知の標準的通信インタフェース又は独自の通信インタフェースの一により実施できる。ＳＥは、そのケーパビリティを、パブリック又はプライベートのセキュアアプリケーションプログラムインタフェース（ＡＰＩ）により、ＯＳ（図１には図示せず）とホストアプリケーションとに公開している。
【０００９】
コンピューティングプラットフォーム１０２は、既知の方法を用いてネットワーク１１８と通信する。一実施形態では、ネットワークはインターネットである。一実施形態では、ホストアプリケーション１１６はネットワークと通信でき、またホストアプリケーション１１６やプロセッサ１０４により実行されるその他のプログラム（ユーザレベルプログラムやＯＳにかかわらず）とは独立に、ＳＥ１０８もネットワークと通信できる。このように、ＳＥ１０８は、プロセッサにより実行されるプログラムとは別に、コンピューティングプラットフォームに対して他の通信チャネルを提供する。ライセンスサーバ１２０は、ネットワークに結合し、ライセンスと通信ポリシーをプロビジョニングするケーパビリティと復号鍵をＳＥに提供する。一実施形態では、ライセンスサーバは、制限付きソフトウェアを、ユーザのコンピューティングプラットフォームに供給する。ある実施形態では、複数のライセンスサーバがあってもよい。一実施形態では、各ライセンスサーバは、ソフトウェアベンダ（独立ソフトウェアベンダ（ＩＳＶ））により運営されてもよい。オーソライゼーションサーバ１２２が、ネットワークに結合し、ＣＬＳをイネーブルし、ＳＥ中のＣＬＳ１１０とＳＬＭ１１２をアクティブ化又は非アクティブ化する。
【００１０】
一実施形態では、ソフトウェアアプリケーションの取得及びライセンシングの前に、ＳＬＭサービス１１２はアクティブ化されなければならない。アクティブ化は、オーソライゼーションサーバ１２２を用いた実現できる。一実施形態では、ＳＥは、オーソライゼーションサーバの暗号鍵のうち公開部分にアクセスできる。この部分は、コンピューティングプラットフォームの製造時に、そのチップセット１０６に書き込まれた（fused）ものであっても良い。ＳＥは、オーソライゼーションサーバの公開鍵を用いて、オーソライゼーションサーバとのセキュア通信チャネルを生成できる。アクティブ化フローは、ＳＬＭサービスについて必要な修正をしたＣＬＳアクティブ化プロセスに従う。アクティブ化プロセスは、ライセンスサーバの公開鍵をＳＥに記憶し、ＳＬＭサービスとライセンスサーバがその間にセキュアな通信チャネルを生成できるようにする。
【００１１】
図２は、本発明の一実施形態によるＳＬＭサービスをアクティブ化するプロセス２００を示す図である。ブロック２０２において、ユーザはライセンスサーバ１２０に接続し、ホストアプリケーションをダウンロードして実行し、所望の制限付きソフトウェアのライセンスをユーザのコンピューティングプラットフォーム１０２にインストールする。この接続は、周知のように、ウェブブラウザを用いて行える。制限付きソフトウェアは、コンピューティングプラットフォーム上でユーザにより使用される任意のプログラムであが、そのソフトウェアへのアクセスはライセンスメカニズムにより制限されている。ブロック２０４において、ホストアプリケーションはＣＬＳアクティブ化プロセスを実行し、新しいオーソライゼーション（Authorization）をインストールし、ＳＬＭサービス１１２をアクティブ化する。一実施形態では、この処理はコンピューティングプラットフォームに対して一度だけ実行できる。他の実施形態では、この処理は制限付きソフトウェアをインストールする前に実行できる。
【００１２】
図３は、本発明の一実施形態によるケーパビリティライセンスサービス（ＣＬＳ）をアクティブ化するプロセス３００を示す図である。ブロック３０２において、ライセンスサーバ１２０は、ホストアプリケーション１１６とＳＥＩ１１４を介して、ＳＥ１０８内のＣＬＳ１１０に、ライセンスサーバの公開鍵を有するパーミット生成オブジェクト（create  permit  object）を送信する。ブロック３０４において、ＣＬＳは許可生成オブジェクトを用いてパーミット（permit）を生成し、そのパーミットをホストアプリケーションを介してライセンスサーバに送信する。ブロック３０６において、ライセンスサーバはそのパーミットにオーソライゼーションプロダクト鍵を付加し、ライセンスとパーミットの組合せをオーソライゼーションサーバ１２２に送信する。ブロック３０８において、オーソライゼーションサーバは、オーソライゼーションプロダクト鍵を確認し、成功裏に確認されれば、ルートパーミットサーバ鍵の秘密部分を用いて、そのパーミットに署名する。ＲＰＳＫの公開部分は、コンピューティングプラットフォーム１０２の製造時に、ＳＥ１０８に格納されている。次に、ブロック３１０において、オーソライゼーションサーバは、ライセンスサーバとホストアプリケーションを介してＣＬＳに、署名されたパーミットを送信する。署名されたパーミットを受信した時、ブロック３１２において、ＣＬＳは、ＲＰＳＫの公開部分を用いて、署名されたパーミットを確認し、成功裏に確認されれば、パーミットデータを保存し、ＳＬＭサービスをアクティブ化する。最後に、ブロック３１４において、ＣＬＳは、ホストアプリケーションとライセンスサーバを介してオーソライゼーションサーバに、アクティブ化確認（activation  confirmation）を送信する。
【００１３】
一実施形態では、オーソライゼーションサーバは、ＳＥの製造者により所有及び／又は運営されてもよい。ライセンスサーバは、ＳＬＭサービスのサービスプロバイダ（例えば、ハードウェアメカニズムによりソフトウェアの使用を保護したいＩＳＶ）により所有及び／又は運営されてもよい。一実施形態では、ＳＥは、最初にコンピューティングプラットフォームが出荷される時に、オーソライゼーションサーバのみを信頼する。その後、オーソライゼーションサーバを用いて、ＳＬＭサービスの管理のため、ライセンスサーバに、信頼関係を委託（delegate）する。このように、コンピューティングプラットフォームの購入後、ユーザによりＳＬＭサービスが付加される。これにより、ユーザが、同様のサービスを提供する複数のプロバイダからＳＬＭサービスプロバイダを選択するフレキシビリティを提供できる。また、これにより、ＳＥ製造者と取引関係にあるサービスプロバイダのみに信頼関係を委託するセキュアな方法を提供できる。
【００１４】
図２に戻り、ＣＬＳアクティブ化プロセスが不成功であれば、エラー状態が報告され、アクティブ化処理は終了する。ＳＬＭサービスのアクティブ化が成功すれば、ブロック２０６において、ライセンスサーバ１２０は自機の時間をＳＬＭサービスと同期させ、ライセンスのダウンロードの際、リース時間を適切に設定できるようにする。ホストアプリケーション１１６は、時間を同期した後、ブロック２０８においてパスワードを入力するようにユーザにプロンプトする。
【００１５】
ブロック２１０において、ホストアプリケーションは、（周知のコンピューティングプラットフォーム入力技術により）ユーザパスワードを受け取り、（製造プロセス中にＳＥ内のセキュアストレージに記憶された）ＳＬＭサービス１１２の公開鍵でそのユーザパスワードを暗号化し、オーソライゼーションサーバ１２２にその暗号化したパスワードを送信する。ブロック２１２において、オーソライゼーションサーバは、その秘密鍵で、暗号化されたパスワードに署名し、その結果得られたメッセージ（暗号化され署名されたユーザパスワード）をＳＬＭサービス１１２に送信する。ブロック２１４において、ＳＬＭサービスは、（製造時にＳＥに格納された）オーソライゼーションサーバの公開鍵を用いてそのメッセージを確認し、暗号化されたパスワードをＳＬＭサービスの秘密鍵を用いて復号し、確認が成功すると、ユーザパスワードをセキュアストレージ１０９に記憶する。
【００１６】
ＳＬＭサービスの非アクティブ化は、ＣＬＳ非アクティブ化プロセスを実行し、アクティブ化オーソライゼーション（activation  Authorization）をヌルオーソライゼーション（null  Authorization）で置き換えることにより、実現できる。
【００１７】
図４と図５は、本発明の一実施形態による、ライセンスを取得し、制約されたソフトウェアを許可（authorize）するプロセス４００と５００を示す図である。ブロック４０２において、ユーザは、ライセンスサーバ１２０に、ユーザのコンピューティングプラットフォーム１０２における使用のライセンスとともに、制限付きソフトウェアをダウンロードするように要求する。一実施形態では、この要求はホストアプリケーションを介して為される。ブロック４０４において、ライセンスサーバは、ライセンス暗号鍵（ＬＥＫ）を生成し、ＬＥＫを用いて、要求された制限付きソフトウェアを暗号化する。一実施形態では、ＬＥＫは対称鍵である。ブロック４０６において、ライセンスサーバはＬＥＫを用いてライセンスを生成する。一実施形態では、ライセンスは、要求された制限付きソフトウェアの一意的識別子、ユーザに関する情報、ソフトウェアを用いるリース期間、及びＬＥＫを含む。ライセンスサーバはＳＬＭサービスの公開鍵を用いてライセンスを暗号化する。一実施形態では、ホストアプリケーションはＳＬＭサービスの公開鍵をユーザ要求の一部としてライセンスサーバに送信する。ライセンスサーバはライセンスサーバの秘密鍵を用いてライセンスに署名する。
【００１８】
ブロック４０８において、ライセンスサーバは、暗号化された制限付きソフトウェアと署名されたライセンスとを、ユーザのコンピューティングプラットフォーム上のホストアプリケーションに送信する。一実施形態では、ホストアプリケーションは、暗号化された制限付きソフトウェアと署名されたライセンスとを、コンピューティングプラットフォーム上のメモリに記憶する。他の一実施形態では、暗号化された制限付きソフトウェア及び／又はライセンスは、セキュアストレージ１０９に記憶される。ブロック４１０において、ユーザがソフトウェアの使用を要求する。ブロック４１２において、ホストアプリケーションはユーザにそのユーザのパスワードを入力するようにプロンプトする。ブロック４１４において、ユーザはパスワードを入力する。処理は図５のブロック５０２に続く。ブロック５０２において、ホストアプリケーションは、ユーザパスワードから対称鍵を求める。一実施形態では、このプロセスは、Password-Based  Cryptography  Specification  (PKCS  #５),  Version  ２.０,  September  ２０００,B.  Kaliski,  RSA  Laboratories,  Request  for  Comments  ２８９８により実施できる。他の実施形態では、他の鍵生成メカニズムを用いても良い。ブロック５０４において、ホストアプリケーションは、対称鍵で署名されたメッセージで、暗号化されたライセンスを、ＳＥＩ１１４によりＳＬＭサービス１１２に送信する。ブロック５０６において、ＳＬＭサービスは、ブロック２１４で記憶されたユーザパスワードから、対称鍵を求める。ＳＬＭサービスはメッセージのデジタル署名を確認する。ＳＬＭサービスは、メッセージの署名が正しいことが確認されると、さらに、ライセンスサーバの公開鍵を用いて、暗号化されたライセンスのライセンスサーバの署名を確認する。ライセンス署名が確認されると、ＳＬＭサービスは、ＳＬＭサービスの秘密鍵を用いて、暗号化されたライセンスを復号し、リース期限が過ぎていないことを確認する。リース期限が経過していなければ、ブロック５０８において、ＳＬＭサービスは、ライセンスからＬＥＫを取り出し、そのＬＥＫをホストアプリケーションに送信する。ブロック５１０において、ホストアプリケーションは、ＬＥＫを用いて、暗号化された制限付きソフトウェアを復号し、コンピューティングプラットフォーム上のソフトウェアへのアクセスを許可する。
【００１９】
一実施形態では、ＬＥＫは一意的であり、あるリース期間のみに対して生成され、ワンタイムで使用されるだけであってもよい。ＬＥＫは、一旦使用されると、ハッカーが鍵にアクセスできたとしても、有用ではなくなる。一実施形態では、ＳＬＭサービスは、ＬＥＫを用いて、暗号化されたソフトウェアを復号し、復号の結果得られたソフトウェアをホストアプリケーションに提供する。一実施形態では、ＬＥＫは一時的にメモリに記憶されるが、ハードディスクドライブには記憶されない。さらなる保護のため、一実施形態では、ホストアプリケーションは既知の方法により改ざん耐久性があるようにできる。
【００２０】
一実施形態では、コンピューティングプラットフォームに複数のオーソライゼーションがインストールされ、ユーザは複数のソフトウェアベンダから得られる制限付きソフトウェアプロダクトを同時にサブスクライブ（subscribe）できる。
【００２１】
一実施形態では、コンピューティングプラットフォームをさらに保護するため、コンピューティングプラットフォームの既知の窃盗対策技術を含んでいてもよい。一実施形態では、窃盗状態がトリガーされると、ＳＬＭサービスはライセンス暗号鍵（ＬＥＫ）をホストアプリケーションに送信せずに、盗まれたコンピューティングプラットフォームでソフトウェアが使われることを防止する。他の一実施形態では、窃盗状態がトリガーされると、ＳＬＭサービスは、暗号化されたソフトウェアを復号しない。
【００２２】
一実施形態では、ホストアプリケーションは、上記の通りインストレーション機能を有する。他の一実施形態では、ホストアプリケーションは、制限付きソフトウェアだけでなくインストレーション機能を含む。一実施形態では、インストレーションはコンピューティングプラットフォームに対して一度だけ実行できる。他の一実施形態では、インストレーションは制限付きソフトウェアのインストールを試みる前に実行できる。
【００２３】
図６は、本発明の一実施形態によるコンピューティングプラットフォーム環境を示す図である。様々な実施形態では、システム６００の一又は複数のコンポーネントは、本発明の実施形態を参照してここに説明する一又は複数の動作を実行できる様々な電子デバイスに設けることができる。例えば、システム６００の一又は複数のコンポーネントを用いて、ここに説明する動作に従って例えば、命令を処理し、あるいはサブルーチンを実行するなどして、図１−５を参照して説明した動作を実行する。また、（例えば、図６を参照して）ここに説明する様々な記憶デバイスは、データ、動作結果などの記憶に用いることができる。一実施形態では、ネットワーク６０３を介して、又はローカルメモリデバイスから受け取ったデータは、プロセッサ６０２に備えられたキャッシュに記憶されてもよい。これらのプロセッサは、本発明の様々な実施形態によりここで説明する動作を用いる。図６のコンピューティングシステムは、モバイルコンピューティング装置、ハンドヘルドコンピューティング装置、又は据え置き型コンピューティング装置に組み込まれていてもよい。
【００２４】
より具体的には、コンピューティングシステム６００は、相互接続ネットワーク（すなわちバス）６０４を介して通信する一又は複数の中央処理ユニット（ＣＰＵ）６０２又はプロセッサを含む。したがって、ここに説明する様々な動作は、ある実施形態では、プロセッサにより実行される。さらに、プロセッサ６０２は、汎用プロセッサ、（コンピュータネットワーク６０３を介して通信されるデータを処理する）ネットワークプロセッサ、（ＲＩＳＣ（reduced  instruction  set  computer）又はＣＩＳＣ（complex  instruction  set  computer）を含む）その他のタイプのプロセッサを含む。さらに、プロセッサ６０２はシングルコアデザインでもマルチコアデザインでもよい。マルチコアデザインのプロセッサ６０２は、同じ集積回路（ＩＣ）ダイ上に異なるタイプのプロセッサコアを集積したものであってもよい。また、マルチコアデザインのプロセッサ６０２は、対称又は非対称のマルチプロセッサとして実装されてもよい。さらに、図１−５を参照して説明した動作は、システム６００の一又は複数のコンポーネントにより実行できる。一実施形態では、（プロセッサ１  ６０２−１などの）プロセッサは、ハードワイヤードロジック（例えば、回路）又はマイクロコードとして、セキュアライセンス管理サービス及び／又はケーパビリティライセンシングサービスを有する。一実施形態では、これらのコンポーネントは、セキュリティエンジンに記憶されたファームウェアとして実装できる。
【００２５】
チップセット６０６も相互接続６０４で通信できる。チップセット６０６は、グラフィックス・メモリコントロールハブ（ＧＭＣＨ）６０８を含む。ＧＭＣＨ６０８は、メモリ６１２と通信するメモリコントローラ６１０を含む。メモリ６１２は、コンピューティングシステム６００に含まれるプロセッサ６０２その他のデバイスにより実行される命令シーケンスを含むデータを記憶する。さらに、メモリ６１２は、（実行のためにプロセッサ６０２にロードされる前の）ホストアプリケーション１１６、暗号化されたライセンス、暗号化された制限付きソフトウェアプログラム、実行ファイルに対応する命令、マッピングなどのここで説明する一又は複数のプログラム又はアルゴリズムを記憶できる。（命令を含む）このデータの少なくとも一部は、ディスクドライブ６２８に、及び／又はプロセッサ６０２中の一又は複数のキャッシュに記憶できる。本発明の一実施形態では、メモリ６１２は、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、又はその他のタイプの記憶デバイスなどの一又は複数の揮発性ストレージ（すなわちメモリ）を含む。ハードディスクなどの不揮発性メモリも利用できる。複数のプロセッサ及び／又は複数のシステムメモリなど別のデバイスも、相互接続ネットワーク６０４を介して通信できる。
【００２６】
ＧＭＣＨ６０８は、ディスプレイ６１６と通信するグラフィックスインタフェース６１４も含む。本発明の一実施形態では、グラフィックスインタフェース６１４は、ＡＧＰ（accelerated  graphics  port）を介してディスプレイ６１６と通信できる。本発明の一実施形態では、ディスプレイ６１６はフラットパネルディスプレイ又はタッチスクリーンディスプレイである。これらは、例えば信号変換器によりグラフィックスインタフェース６１４と通信する。信号変換器は、ビデオメモリやシステムメモリなどの記憶デバイスに記憶された画像のデジタル表現をディスプレイ信号に変換する。ディスプレイ信号はディスプレイ６１６により解釈され表示される。インタフェース６１４により生成されたディスプレイ信号は、ディスプレイ６１６により解釈され、ディスプレイ６１６上に表示される前に、様々な制御デバイスを通して送られる。
【００２７】
ハブインタフェース６１８により、ＧＭＣＨ６０８と入出力（Ｉ／Ｏ）コントロールハブ（ＩＣＨ）６２０が通信できる。ＩＣＨ６２０は、コンピューティングシステム６００と通信するＩ／Ｏデバイスにインタフェースを提供する。ＩＣＨ６２０は、ペリフェラルコンポーネント相互接続（ＰＣＩ）ブリッジ、ユニバーサルシリアルバス（ＵＳＢ）コントローラ、又はその他のタイプのペリフェラルブリッジやコントローラなどのペリフェラルブリッジ（又はコントローラ）６２４を通してバス６２２と通信できる。ブリッジ６２４は、プロセッサ６０２とペリフェラルデバイスとの間にデータパスを提供する。他のタイプのトポロジーも利用できる。また、複数のバスが、例えば複数のブリッジ又はコントローラにより、ＩＣＨ６２０と通信できる。さらに、ＩＣＨ６２０と通信する他のペリフェラルには、本発明の様々な実施形態において、ＩＤＥ（integrated  drive  electronics）又はＳＣＳＩ（small  computer  system  interface）ハードディスクドライブ、ＵＳＢポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピィ（登録商標）ディスクドライブ、デジタル出力サポート（ＤＶＩ（digital  video  interface）など）、その他のデバイスが含まれる。一実施形態では、ＩＣＨはセキュリティエンジン１０８を有する。一実施形態では、セキュリティエンジンはＩＣＨ内のファームウェアとして実装できる。
【００２８】
バス６２２は、オーディオデバイス６２６、一又は複数のディスクドライブ６２８、及びネットワークインタフェースデバイス６３０と通信できる。これらは（例えば、インターネット等の）コンピュータネットワーク６０３と通信できる。一実施形態では、デバイス６３０は、有線又は無線通信機能を有するネットワークインタフェースコントローラ（ＮＩＣ）である。他のデバイスはバス６２２を介して通信できる。また、本発明の実施形態では、様々なコンポーネントがＧＭＣＨ６０８と通信できる。また、プロセッサ６０２、ＧＭＣＨ６０８、及び／又はグラフィックスインタフェース５１４を結合して単一チップとしてもよい。
【００２９】
一実施形態では、セキュリティエンジン１０８は、プロセッサ６０２による動作とは独立に、（ＩＣＨ６２０を介して）バス６２２及びネットワークインタフェースデバイス６３０を通じて、ネットワーク６０３と通信する。
【００３０】
さらに、コンピューティングシステム６００は揮発性及び／又は不揮発性のメモリ（又はストレージ）を含む。例えば、不揮発性メモリは、次のうち一又は複数を含む：リードオンリメモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、イレーザブルＰＲＯＭ（ＥＰＲＯＭ）、電気的ＥＰＲＯＭ（ＥＥＰＲＯＭ）、ディスクドライブ、フロッピィ（登録商標）ディスク、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタルバーサタイルディスク（ＤＶＤ）、フラッシュメモリ、光磁気ディスク、又は（命令などを含む）電子的データを記憶することができる他のタイプの不揮発性機械読み取り可能媒体を含む。
【００３１】
他の一実施形態では、システム６００のコンポーネントはポイント・ツー・ポイント（ＰｔＰ）構成で構成できる。例えば、プロセッサ、メモリ、及び／又は入出力デバイスは、複数のポイント・ツー・ポイントインタフェースにより相互接続される。一実施形態では、チップセット６０６は、メモリコントローラハブ（ＭＣＨ）とセキュリティエンジンとを有する。
【００３２】
本発明の様々な実施形態では、例えば、図１−５を参照してここで説明した動作は、ハードウェア（例えば、論理回路）、ソフトウェア（例えば、図６を参照して説明したプロセッサなどのプロセッサの動作を制御するマイクロコードを含む）、ファームウェア、又はこれらの組合せとして実装できる。これらは、コンピュータ（例えば、コンピューティング装置のプロセッサその他のロジック）のプログラムに用いられ、ここに説明する動作を実行させる命令（又はソフトウェアプロシージャ）を記憶した有体の機械読み取り可能又はコンピュータ読み取り可能媒体を含むコンピュータプログラム製品として提供できる。機械読み取り可能媒体は、ここに説明したような記憶デバイスを含み得る。
【００３３】
本明細書において「一実施形態」とは、その実施形態に関して説明する機能、構造、特徴が少なくとも１つの実施形態に含まれることを意味している。本明細書ではいろいろな箇所で「一実施形態とは」と記載するが、同じ実施形態を指すものであってもなくてもよい。
【００３４】
また、以下の説明及び請求項において、「coupled」と「connected」との用語及びその変化形を用いることがある。本発明のある実施形態では、「接続された（connected）」という用語を用いて、２以上の要素が互いに物理的または電気的に直接的に接触していることを示している。「結合された」という用語は、２つ以上の要素が物理的または電気的に直接的に接触していることを示している。しかし、「結合された」という用語は、複数の要素が互いに直接的には接触してないが、互いに協働または相互作用することを示している。
【００３５】
また、かかるコンピュータ読み取り可能媒体は、コンピュータプログラム製品としてダウンロード可能であってもよい。この場合、プログラムは、通信リンク（例えば、バス、モデム、又はネットワーク接続）を介して、リモートコンピュータ（例えば、サーバ）から要求コンピュータ（例えば、クライアント）に、データ信号により転送できる。
【００３６】
よって、本発明の実施形態を構造的特徴及び／又は方法動作の具体的な言葉で説明したが、言うまでもなく、本発明は説明した具体的な特徴や動作に限定されない。むしろ、具体的な特徴や動作は、請求した主題を実施する形式例として開示したものである。
【図１】
0005657811.tif 000002
【図２】
0005657811.tif 000003
【図３】
0005657811.tif 000004
【図４】
0005657811.tif 000005
【図５】
0005657811.tif 000006
【図６】
0005657811.tif 000007