(57)【要約】デバイスは、ソフトウェアプログラムを使用するための要求を受信し、要求の受信に基づいて比較インジケータを決定し、セキュア環境に格納されたライセンス有効性インジケータと、比較インジケータとに基づいて、ソフトウェアプログラムのライセンスが有効であるかどうかを判定する。デバイスは、ライセンスが有効と判定された場合に、セキュア環境に格納されたセキュアコードの実行を可能にし、ライセンスが無効と判定された場合に、セキュア環境に格納されたセキュアコードの実行を抑制する。【選択図】１Ｂ
2015535113.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサが、ソフトウェアプログラムを使用するための要求を受信することと、
前記プロセッサが、前記要求を受信したことに基づいて、比較インジケータを決定することと、
前記プロセッサが、セキュア環境に格納されたライセンス有効性インジケータと、前記比較インジケータとに基づいて、前記ソフトウェアプログラムのライセンスが有効であるかどうかを判定することと、
前記プロセッサが、前記ライセンスが有効と判定された場合に、前記セキュア環境に格納されたセキュアコードの実行を可能にすることと、
前記プロセッサが、前記ライセンスが無効と判定された場合に、前記セキュア環境に格納された前記セキュアコードの実行を抑制することと、
を含む、方法。
【請求項２】
前記ライセンス有効性インジケータは、キー生成アルゴリズムを、
前記ソフトウェアプログラムにアクセスするのに用いられるライセンスキーと、
前記ソフトウェアプログラムを実行するのに用いられるデバイスのうち少なくとも１つのコンポーネントを識別するシステム識別子と、
に適用することによって生成されるセキュアキーを含む、
請求項１に記載の方法。
【請求項３】
前記比較インジケータは、前記キー生成アルゴリズムを、
比較ライセンスキーと、
前記システム識別子と、
に適用することによって生成される比較キーを含み、
前記ライセンスが有効であるかどうかを判定することは、前記比較キーが前記セキュアキーと一致するかどうかを判定することによって、前記ライセンスが有効であるかどうかを判定すること、をさらに含む、
請求項２に記載の方法。
【請求項４】
前記ライセンス有効性インジケータは、前記ソフトウェアプログラムがコンピューティングデバイスにインストールされるときに決定される第１のシステム時間を示す、
請求項１に記載の方法。
【請求項５】
前記比較インジケータは、前記ソフトウェアプログラムを使用するための要求が前記コンピューティングデバイスによって受信されるときに決定される第２のシステム時間を示し、
前記ライセンスが有効であるかどうかを判定することは、前記第１のシステム時間と前記第２のシステム時間との間の時間差が閾値を満たすかどうかを判定することによって、前記ライセンスが有効であるかどうかを判定することをさらに含む、
請求項４に記載の方法。
【請求項６】
前記セキュアコードは、前記ソフトウェアプログラムを実行するのに用いられるプログラムコードの一部を含む、
請求項１に記載の方法。
【請求項７】
前記セキュアコードは、プログラムコードを解読するのに用いられる解読アルゴリズム、又は、前記ソフトウェアプログラムを実行するのに用いられる情報を含む、
請求項１に記載の方法。
【請求項８】
ソフトウェアプログラムを使用するための要求を受信し、
前記要求の受信に基づいて比較インジケータを決定し、
セキュア環境に格納されたライセンス有効性インジケータと、前記比較インジケータとに基づいて、前記ソフトウェアプログラムのライセンスが有効であるかどうかを判定し、
前記ライセンスが有効と判定された場合に、前記セキュア環境に格納されたセキュアコードの実行を可能にし、
前記ライセンスが有効ではないと判定された場合に、前記セキュア環境に格納されたセキュアコードの実行を抑制する、
ための１つ以上のプロセッサを備える、デバイス。
【請求項９】
前記ライセンス有効性インジケータは、キー生成アルゴリズムを、
前記ソフトウェアプログラムにアクセスするのに用いられるライセンスキーと、
前記ソフトウェアプログラムを実行するのに用いられるデバイスのうち少なくとも１つのコンポーネントを識別するシステム識別子と、
に適用することによって生成されるセキュアキーを含む、
請求項８に記載のデバイス。
【請求項１０】
前記比較インジケータは、前記キー生成アルゴリズムを、
比較ライセンスキーと、
前記システム識別子と、
に適用することによって生成される比較キーを含み、
前記１つ以上のプロセッサは、前記ライセンスが有効であるかどうかを判定するときに、前記比較キーが前記セキュアキーと一致するかどうかを判定することによって、前記ライセンスが有効であるかどうかを判定する、
請求項９に記載のデバイス。
【請求項１１】
前記ライセンス有効性インジケータは、前記ソフトウェアプログラムがコンピューティングデバイスにインストールされるときに決定される第１のシステム時間を示す、
請求項８に記載のデバイス。
【請求項１２】
前記比較インジケータは、前記ソフトウェアプログラムを使用するための要求が前記コンピューティングデバイスによって受信されるときに決定される第２のシステム時間を示し、
前記１つ以上のプロセッサは、前記ライセンスが有効であるかどうかを判定するときに、前記第１のシステム時間と前記第２のシステム時間との間の時間差が閾値を満たすかどうかを判定することによって、前記ライセンスが有効であるかどうかを判定する、
請求項１１に記載のデバイス。
【請求項１３】
前記セキュアコードは、前記ソフトウェアプログラムを実行するのに用いられるプログラムコードの一部を含む、
請求項８に記載のデバイス。
【請求項１４】
前記セキュアコードは、プログラムコードを解読するのに用いられる解読アルゴリズム、又は、前記ソフトウェアプログラムを実行するのに用いられる情報を含む、
請求項８に記載のデバイス。
【請求項１５】
命令を記憶するコンピュータ可読記憶媒体であって、前記命令は、プロセッサによって実行されると、
ソフトウェアプログラムを使用するための要求を受信することと、
前記要求の受信に基づいて比較インジケータを決定することと、
セキュア環境に格納されたライセンス有効性インジケータと、前記比較インジケータとに基づいて、前記ソフトウェアプログラムのライセンスが有効であるかどうかを判定することと、
前記ライセンスが有効と判定された場合に、前記セキュア環境に格納されたセキュアコードの実行を可能にすることと、
前記ライセンスが有効ではないと判定された場合に、前記セキュア環境に格納されたセキュアコードの実行を抑制することと、
を前記プロセッサに行わせる１つ以上の命令を含む、コンピュータ可読記憶媒体。
【請求項１６】
前記ライセンス有効性インジケータは、キー生成アルゴリズムを、
前記ソフトウェアプログラムにアクセスするのに用いられるライセンスキーと、
前記ソフトウェアプログラムを実行するのに用いられるデバイスのうち少なくとも１つのコンポーネントを識別するシステム識別子と、
に適用することによって生成されるセキュアキーを含む、
請求項１５に記載のコンピュータ可読記憶媒体。
【請求項１７】
前記比較インジケータは、前記キー生成アルゴリズムを、
比較ライセンスキーと、
前記システム識別子と、
に適用することによって生成される比較キーを含み、
前記１つ以上の命令は、前記ライセンスが有効であるかどうかを判定するときに、前記比較キーが前記セキュアキーと一致するかどうかを判定することによって、前記ライセンスが有効であるかどうかを判定すること、
を前記プロセッサに行わせる、
請求項１６に記載のコンピュータ可読記憶媒体。
【請求項１８】
前記ライセンス有効性インジケータは、前記ソフトウェアプログラムがコンピューティングデバイスにインストールされるときに決定される第１のシステム時間を示す、
請求項１５に記載のコンピュータ可読記憶媒体。
【請求項１９】
前記比較インジケータは、前記ソフトウェアプログラムを使用するための要求が前記コンピューティングデバイスによって受信されるときに決定される第２のシステム時間を示し、
前記１つ以上の命令は、前記ライセンスが有効であるかどうかを判定するときに、前記第１のシステム時間と前記第２のシステム時間との間の時間差が閾値を満たすかどうかを判定することによって、前記ライセンスが有効であるかどうかを判定すること、
を前記プロセッサに行わせる、
請求項１８に記載のコンピュータ可読記憶媒体。
【請求項２０】
前記セキュアコードは、前記ソフトウェアプログラムを実行するのに用いられるプログラムコードの一部、又は、
プログラムコードを解読するのに用いられる解読アルゴリズム、若しくは、前記ソフトウェアプログラムを実行するのに用いられる情報、
の少なくとも１つを含む、
請求項１５に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
開示される実施形態は、概して、ソフトウェアの使用許諾に関する。特に、開示される実施形態は、ファームウェアを用いたソフトウェアの使用許諾技術の実施に関する。
【背景技術】
【０００２】
ソフトウェアライセンスは、著作権で保護されたソフトウェアの使用又は再配信を規制する法的文書である。通常のソフトウェアライセンスは、使用許可がない場合にはかかる使用が著作権法の下でソフトウェア所有者の独占権の侵害をなすような形で、エンドユーザにソフトウェアの１つ以上のコピーの使用許可を与える。ソフトウェアライセンスは、コンピューティングデバイスを用いて実施される場合がある。
【発明の概要】
【課題を解決するための手段】
【０００３】
いくつかの実施形態によれば、デバイスは、ソフトウェアプログラムを使用するための要求を受信し、要求を受信したことに基づいて比較インジケータを決定し、セキュア環境に格納されたライセンス有効性インジケータ及び比較インジケータに基づいて、ソフトウェアプログラムのライセンスが有効であるかどうかを判定する。デバイスは、ライセンスが有効と判定された場合に、セキュア環境に格納されたセキュアコードの実行を可能にし、ライセンスが無効と判定された場合に、セキュア環境に格納されたセキュアコードの実行を抑制する。
【図面の簡単な説明】
【０００４】
【図１Ａ】いくつかの実施形態に係るソフトウェアの使用許諾プロセスの概要を示す図である。
【図１Ｂ】いくつかの実施形態に係るソフトウェアの使用許諾プロセスの概要を示す図である。
【図２】いくつかの実施形態に係るソフトウェアの使用許諾プロセスを実行し得る例示的なコンピューティングデバイスを示す図である。
【図３】いくつかの実施形態に係る図２の１つ以上のコンポーネント及び／又はデバイスに対応するデバイスの例示的なコンポーネントを示す図である。
【図４】いくつかの実施形態に係る図２の１つ以上のコンポーネント及び／又はデバイスに対応する例示的な機能コンポーネントを示す図である。
【図５】いくつかの実施形態に係るソフトウェアライセンスを評価及び実施するための例示的なプロセスのフロー図である。
【図６】図５に示された例示的なプロセスに関係する例示的な実施形態の図である。
【図７】図５に示された例示的なプロセスに関係する例示的な実施形態の図である。
【図８】図５に示された例示的なプロセスに関係する例示的な実施形態の図である。
【図９】図５に示された例示的なプロセスに関係する例示的な実施形態の図である。
【発明を実施するための形態】
【０００５】
例示的な実施形態の以下の詳細な説明は、添付の図面を参照する。異なる図中の同じ符号は、同じ又は類似の要素を特定し得る。
【０００６】
ソフトウェアライセンスは、ソフトウェア（例えば、特許で保護されたソフトウェア及び／又は著作権で保護されたソフトウェア）の使用又は再配信を規制する。ソフトウェアライセンス実施技術は、ソフトウェアで実装される実施技術、ハードウェアで実装される実施技術、及び、サーバで実装される実施技術を含む。ソフトウェアで実装される実施技術は、かなりの量のコンピュータリソースを消費し、ソフトウェアの性能を低下させ、ハッカーによって容易に免れられる。ハードウェアで実装される実施技術は、高価で不便な場合のある付加的なハードウェアを必要とする。サーバで実装される実施技術は、利用不可能な場合があるインターネット接続を必要とする。
【０００７】
本明細書で説明される実施形態は、ソフトウェアで実装される技術、ハードウェアで実装される技術、及び、サーバで実装される技術に関連する問題の多くをなくすことの可能な、ファームウェアで実装されるライセンス実施技術を提供する。例えば、ファームウェアで実装される実施技術は、高レベルのセキュリティを提供し、容易に免れられず、付加的なハードウェアを必要とせず、インターネット接続を必要としない。
【０００８】
図１Ａ及び図１Ｂは、いくつかの実施形態に係るソフトウェアの使用許諾プロセス１００の概要を示す図である。図１Ａに示すように、ソフトウェアの使用許諾プロセス１００は、ライセンスプログラムと、コンピューティングデバイスと、ライセンス評価部及びライセンス実施部を含むセキュア環境と、を含む。ソフトウェアの使用許諾プロセス１００において、ライセンスプログラムは、ソフトウェアプログラムであり、コンピューティングデバイスは、コンピュータであり、セキュア環境は、コンピューティングデバイスに含まれるファームウェアを含み、ライセンス評価部及びライセンス実施部は、セキュア環境のコンポーネントである。
【０００９】
いくつかの実施形態では、コンピューティングデバイスは、セキュア環境を実装するために、１つ以上のプロセッサコア（例えば、中央処理装置コア、グラフィックス処理装置コアなど）と、専用ハードウェア（例えば、専用セキュリティプロセッサ）と、を含むシステム・オン・ア・チップ（Ｓｙｓｔｅｍ−ｏｎ−ａ−Ｃｈｉｐ（ＳｏＣ））を含む。いくつかの実施形態では、コンピューティングデバイスは、１つ以上のプロセッサコア（例えば、中央処理装置コア、グラフィックス処理装置コアなど）と、ハードウェアベースのアクセス制御機構と、を有するＳｏＣを含む。これらの実施形態では、ＳｏＣは、セキュア環境を実装する少なくとも１つの仮想セキュリティプロセッサと、セキュア環境を実装しない（本明細書では「セキュアでない環境」と呼ばれる）少なくとも１つの仮想標準プロセッサと、を含む２つ以上の仮想プロセッサを実装する。ハードウェアベースのアクセス制御機構は、仮想セキュリティプロセッサ（例えば、セキュア環境）へのアクセスを管理（又は他の方法で制御）する。例えば、ハードウェアベースのアクセス制御機構は、セキュア環境へ又はセキュア環境からのワールド（ｗｏｒｌｄ）の切り換えが起こった場合に、アプリケーション、周辺機器等に通知してもよく、セキュア環境又はセキュアでない環境でセキュリティポリシーを実施してもよい。２つ以上の仮想プロセッサは、ＳｏＣのリソース（例えば、中央処理装置コア、グラフィックス処理装置コア等）を使用する。言い換えれば、これらの実施形態では、ＳｏＣは、セキュア環境を実装する専用ハードウェア（例えば、専用セキュリティプロセッサ）を含まない。
【００１０】
図１Ａに示すように、ライセンスプログラムは、コンピューティングデバイスにインストールされる。コンピューティングデバイスは、ライセンス有効性インジケータを生成し、ライセンス有効性インジケータは、ライセンス評価部に送られて、セキュア環境（例えば、不揮発性メモリ等のセキュアなメモリ）に格納される。いくつかの実施形態では、ライセンス有効性インジケータは、ライセンスプログラムをインストール又は実行するのに用いられるライセンスキーと、コンピューティングデバイスに関連するシステム識別子と、に基づいている。いくつかの実施形態では、ライセンス有効性インジケータは、ライセンスプログラムがコンピューティングデバイスにインストールされるときに測定されるシステム時間に基づいている。システム時間は、コンピュータ（例えば、コンピューティングデバイス２１０）の時間の経過の指標を指す。例えば、システム時間は、特定の開始日／時間から経過したいくつかのチック（ｔｉｃｋ）をカウントするコンピューティングデバイス２１０のシステムクロックによって測定されてもよい。システム時間は、システム時間の標準暦時間への変換を指す場合もある。
【００１１】
図１Ｂに示すように、コンピューティングデバイスのユーザは、ライセンスプログラムの使用を要求する。コンピューティングデバイスは、ライセンス評価部によってセキュア環境に格納されたライセンス有効性インジケータに基づいて、ライセンスプログラムのライセンスが有効であるかどうかを判定する。ライセンスが有効であると判定すると、ライセンス評価部は、有効性通知をライセンス実施部に送信する。ライセンスが有効であるとの判定に基づいて（例えば、有効性通知を介して）、ライセンス実施部は、セキュアコード（例えば、コンピューティングデバイスによってセキュア環境内でインストール及び／又は実行される）を実行し、又は、（例えば、セキュア環境に格納及び／又は実行される解読アルゴリズムを用いて）セキュアコード及び／又は情報を解読する。実行及び／又は解読は、ライセンスプログラムの本質的な機能がコンピューティングデバイスによって行われることを可能にする。
【００１２】
図２は、いくつかの実施形態に係るソフトウェアの使用許諾プロセスを実行し得る例示的なコンピューティングデバイス２１０の図である。図２に示すように、コンピューティングデバイス２１０は、ライセンスプログラム２２０と、セキュア環境２３０と、を含む。
【００１３】
コンピューティングデバイス２１０は、ソフトウェアプログラムを実行し、情報をメモリに格納することができるコンピューティングデバイスを含む。例えば、コンピューティングデバイス２１０は、ソフトウェアを実行し、情報を格納することができるデスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバコンピュータ、携帯電話又は別のコンピューティングデバイスを含んでもよい。
【００１４】
ライセンスプログラム２２０は、コンピューティングデバイス２１０等のコンピューティングデバイスによって実行可能なコンピュータプログラムを含む。例えば、ライセンスプログラム２２０は、フォト／ビデオエディタ、フォト／ビデオビューア、ファイルアーカイバ、音楽プレーヤ、ゲーム、ビジネスアプリケーション（例えば、ワードプロセッサ、スプレッドシートプログラム等）等のソフトウェアプログラム及び／又はアプリケーションを含んでもよい。ライセンスプログラム２２０は、ライセンスプログラム２２０がコンピューティングデバイス２１０によって実行され得る前に有効化されなければならないライセンスに関連する。いくつかの実施形態では、ライセンスプログラム２２０は、コンピューティングデバイス２１０にインストールされ、コンピューティングデバイス２１０によって不揮発性メモリ（例えば、ハードディスクドライブ、ソリッドステートディスクドライブ等の記憶装置）に格納される。
【００１５】
セキュア環境２３０は、コンピューティングデバイス２１０によって用いられる情報及び／又は命令を格納するメモリを含む。いくつかの実施形態では、セキュア環境２３０は、電源投入されない場合（例えば、セキュア環境２３０及び／又はコンピューティングデバイス２１０が電源投入されない場合）に、格納された情報を保持する、読出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読出し専用メモリ（ＥＰＲＯＭ）、フラッシュメモリ、ハードドライブ等の不揮発性メモリを含む。また、セキュア環境２３０は、不揮発性メモリと、不揮発性メモリに格納されるプログラムコード及び／又は情報との組み合わせ等のファームウェアを含んでもよい。追加的又は代替的に、セキュア環境２３０は、専用セキュリティプロセッサで実行するファームウェアを含む。いくつかの実施形態では、セキュア環境２３０は、プロセッサに一体化されたＳＡＭＵ（Ｓｅｃｕｒｅ  Ａｓｓｅｔ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）環境等のセキュア実行環境に一体化されている。いくつかの実施形態では、セキュア環境２３０は、本明細書で説明されている様に、少なくとも１つの仮想セキュリティプロセッサとして実装される。
【００１６】
図２に示されたデバイス／コンポーネントの数は、例示する目的で提供される。実際には、付加的なデバイス／コンポーネント、より少ないデバイス／コンポーネント、異なるデバイス／コンポーネント、又は、図２に示されたものとは異なるように配置されたデバイス／コンポーネントが存在する場合がある。さらに、図２に示された２つ以上のデバイス／コンポーネントは、単一のデバイス／コンポーネント内に実装されてもよく、又は、図２に示された単一のデバイス／コンポーネントは、複数の分散されたデバイス／コンポーネントとして実装されてもよい。加えて、図２に示されたデバイス／コンポーネントのうち１つ以上は、図２に示された別の１つ以上のデバイス／コンポーネントによって行われるものとして説明される１つ以上の機能を行ってもよい。図２に示されたデバイス／コンポーネントは、有線接続、無線接続、又は、有線接続と無線接続との組み合わせを介して相互接続されてもよい。
【００１７】
図３は、図２の１つ以上のコンポーネント及び／又はデバイスに対応するデバイス３００の例示的なコンポーネントを示す図である。図３に示すように、デバイス３００は、バス３１０と、プロセッサ３２０と、メインメモリ３３０と、不揮発性メモリ３４０と、ストレージコンポーネント３５０と、入力コンポーネント３６０と、出力コンポーネント３７０と、通信インターフェース３８０と、を含む。
【００１８】
バス３１０は、デバイス３００のコンポーネント間の通信を可能にするパスを含む。プロセッサ３２０は、命令を解釈及び／又は実行する処理装置（例えば、１つ以上の中央処理装置コア、１つ以上のグラフィックス処理装置コア、１つ以上の加速処理装置、特定用途向け集積回路、デジタル信号プロセッサ等）を含む。いくつかの実施形態では、プロセッサ３２０は、１つ以上のプロセッサコアを含む。追加的又は代替的に、プロセッサ３２０は、処理装置の組み合わせ（例えば、１つ以上の中央処理装置コアと１つ以上のグラフィックス処理装置コア等）を含んでもよい。
【００１９】
メインメモリ３３０は、プロセッサ３２０による実行のための情報及び命令を格納する、１つ以上のランダムアクセスメモリ（ＲＡＭ）又は他のタイプの動的記憶装置及び／若しくは揮発性記憶装置を含む。不揮発性メモリ３４０は、プロセッサ３２０による使用のための静的情報及び／若しくは命令を格納する１つ以上のＲＯＭコンポーネント又は他のタイプの静的記憶装置及び／若しくは不揮発性記憶装置を含む。いくつかの実施形態では、不揮発性メモリ３４０はセキュア環境２３０内に含まれる。ストレージコンポーネント３５０は、磁気記録媒体及び／又は光学記録媒体と対応するストレージドライブを含む。
【００２０】
入力コンポーネント３６０は、ユーザが、情報をデバイス３００（例えば、キーボード、キーパッド、マウス、ボタン、スイッチ等）に入力することを可能にするコンポーネントを含む。出力コンポーネント３７０は、デバイス３００（例えば、ディスプレイ、スピーカ、１つ以上の発光ダイオード（ＬＥＤ）等）から情報を出力するコンポーネントを含む。
【００２１】
通信インターフェース３８０は、デバイス３００が、有線接続、無線接続又は有線接続と無線接続との組み合わせ等を介して他のデバイスと通信することを可能にする、トランシーバ並びに／又は別個のレシーバ及び送信器等のトランシーバの様なコンポーネントを含む。例えば、通信インターフェース３８０は、イーサネット（登録商標）インターフェース、光学インターフェース、同軸インターフェース、赤外線インターフェース、無線周波数（ＲＦ）インターフェース、ユニバーサルシリアルバス（ＵＳＢ）インターフェース等を含んでもよい。
【００２２】
デバイス３００は、本明細書では種々の動作を行うものとして説明されている。デバイス３００は、メインメモリ３３０、不揮発性メモリ３４０及び／又はストレージコンポーネント３５０等のコンピュータ可読媒体に含まれるソフトウェア命令を実行するプロセッサ３２０に応じて、これらの動作を行ってもよい。コンピュータ可読媒体は、非一時的（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）なメモリデバイスとして定義される場合がある。メモリデバイスは、単一の記憶装置のスペース、又は、複数の記憶装置にわたって分散したスペースを含む。
【００２３】
いくつかの実施形態では、ソフトウェア命令は、別のコンピュータ可読媒体又は別のデバイスから通信インターフェース３８０を介して、メインメモリ３３０及び／又は不揮発性メモリ３４０に読み込まれる。メインメモリ３３０及び／又は不揮発性メモリ３４０に格納されたソフトウェア命令は、実行されるときに、プロセッサ３２０に対して、本明細書で説明される１つ以上のプロセスを行わせる。追加的又は代替的に、本明細書で説明される１つ以上のプロセスを行うために、ソフトウェア命令の代わりに又はこれと組み合わせてハードワイヤード回路が用いられてもよい。したがって、本明細書で説明される実施形態は、ハードウェア回路とソフトウェアとの如何なる特定の組み合わせにも限定されない。
【００２４】
図３に示されたコンポーネントの数は例示する目的で提供される。実際には、デバイス３００は、付加的なコンポーネント、より少ないコンポーネント、異なるコンポーネント、又は、図３に示されたものとは異なるように配置されたコンポーネントを含んでもよい。追加的又は代替的に、コンピューティングデバイス２１０は、１つ以上のデバイス３００、及び／又は、デバイス３００の１つ以上のコンポーネントを含んでもよい。
【００２５】
図４は、図２の１つ以上のコンポーネント及び／又はデバイスに対応する例示的な機能コンポーネント４００を示す図である。いくつかの実施形態では、機能コンポーネント４００は、コンピューティングデバイス２１０及び／又はセキュア環境２３０内に含まれる。いくつかの実施形態では、機能コンポーネントは、コンピューティングデバイス２１０とは別個の１つ以上のデバイス内、又は、コンピューティングデバイス２１０を含む１つ以上のデバイス内に含まれる。図４に示すように、機能コンポーネント４００は、ライセンス評価部４１０と、ライセンス実施部４２０と、を含む。
【００２６】
ライセンス評価部４１０は、ソフトウェアライセンスが有効であるかどうかを判定するために、ソフトウェアライセンスを評価することに関連する動作を行う。いくつかの実施形態では、ライセンス評価部４１０は、ライセンスプログラム２２０がコンピューティングデバイス２１０によってインストールされるときに、ライセンス有効性インジケータを生成、受信及び／又は格納する。追加的又は代替的に、ライセンス評価部４１０は、コンピューティングデバイス２１０がライセンスプログラム２２０を使用するための要求を受信するときに、ライセンス有効性インジケータに基づいて、ソフトウェアライセンスが有効であるかどうかを判定する。ライセンス評価部４１０は、ライセンスが有効であるかどうかを示す有効性通知をライセンス実施部４２０に伝送してもよい。いくつかの実施形態では、ライセンス評価部４１０は、専用ハードウェア（例えば、専用セキュリティプロセッサの少なくとも一部）を含む。いくつかの実施形態では、ライセンス評価部４１０は、セキュア環境（例えば、ソフトウェア、ファームウェア等）で実行される命令（例えば、専用セキュリティプロセッサによって実行される命令、仮想セキュリティプロセッサによって実行される命令等）を含む。
【００２７】
ライセンス実施部４２０は、ソフトウェアライセンスの実施に関連する動作を行う。いくつかの実施形態では、ライセンス実施部４２０は、ライセンス評価部４１０から、ライセンスが有効であることを示す有効性通知を受信し得る。ライセンスが有効であることを有効性通知が示す場合には、ライセンス実施部４２０は、セキュアコード（例えば、コンピューティングデバイスによってセキュア環境にインストールされる）を実行し、又は、（例えば、セキュア環境に格納された解読アルゴリズムを用いて）セキュアコード及び／又は情報を解読する。実行及び／又は解読は、ライセンスプログラム２２０の本質的な機能がコンピューティングデバイス２１０によって行われることを可能にする。ライセンスが有効ではないことを有効性通知が示す場合には、ライセンス実施部４２０は、セキュアコードを実行せず、又は、セキュアコード及び／又は情報を解読しない。いくつかの実施形態では、ライセンス実施部４２０は、専用ハードウェア（例えば、専用セキュリティプロセッサの少なくとも一部）を含む。いくつかの実施形態では、ライセンス実施部４２０は、セキュア環境（例えば、ソフトウェア、ファームウェア等）で実行される命令（例えば、専用セキュリティプロセッサによって実行される命令、仮想セキュリティプロセッサによって実行される命令等）を含む。
【００２８】
図４に示された機能コンポーネントの数は例示する目的で提供される。実際には、機能コンポーネント４００は、付加的な機能コンポーネント、より少ない機能コンポーネント、異なる機能コンポーネント、又は、図４に示されたものとは異なるように配置された機能コンポーネントを含んでもよい。
【００２９】
図５は、ソフトウェアライセンスを評価及び実施するための例示的なプロセス５００のフロー図である。いくつかの実施形態では、図５の１つ以上のプロセスブロックは、コンピューティングデバイス２１０によって行われる。追加的又は代替的に、図５の１つ以上のプロセスブロックは、コンピューティングデバイス２１０とは別個の若しくはコンピューティングデバイス２１０を含む、別のデバイス又はデバイスのグループによって行われる。
【００３０】
図５に示すように、プロセス５００は、ライセンスプログラムのライセンス有効性インジケータを生成することを含む（ブロック５１０）。いくつかの実施形態では、ライセンスプログラム２２０がコンピューティングデバイス２１０によってインストールされる場合に、ライセンス有効性インジケータが生成される。ライセンス有効性インジケータは、ライセンスプログラム２２０がインストールされたとき及び／又はコンピューティングデバイス２１０上でのライセンスプログラム２２０のインストールを終えたとき、に決定されるセキュアキー及び／又はシステム時間を含んでもよい。
【００３１】
いくつかの実施形態では、コンピューティングデバイス２１０は、ライセンスプログラム２２０のインストールに基づいて、セキュアキーを生成する。コンピューティングデバイス２１０は、ライセンスプログラム２２０の使用を可能にするライセンスキーをユーザが購入したという指標に基づいて、セキュアキーを生成してもよい。コンピューティングデバイス２１０は、ライセンスキーと、コンピューティングデバイス２１０に関連するシステム識別子と、を用いてセキュアキーを生成する。いくつかの実施形態では、コンピューティングデバイス２１０は、セキュアキーを生成するために、キー生成アルゴリズムに従って、ライセンスキーとシステム識別子とを組み合わせる。コンピューティングデバイス２１０は、セキュアキーをセキュア環境２３０（例えば、ライセンス評価部４１０）に格納する。いくつかの実施形態では、コンピューティングデバイス２１０は、セキュアキーを、専用セキュリティプロセッサ及び／又は仮想セキュリティプロセッサに関連するセキュア環境に格納する。代替的に、コンピューティングデバイス２１０は、セキュアキーをセキュア環境２３０外（例えば、ストレージコンポーネント３５０のセキュアでないストレージ領域）に格納する。この実施形態では、コンピューティングデバイス２１０は、セキュアキーをセキュアとしてマークしてもよいし、専用セキュリティプロセッサ及び／又は仮想セキュリティプロセッサによるセキュアキーへのアクセスのみを可能にしてもよい。
【００３２】
ライセンスキーは、いくつかの実施形態では、ライセンスプログラム２２０（及び／又はライセンスプログラム２２０の機能の一部）へのアクセス及び／又はその使用を可能にする文字（例えば、英字、数字、記号等）の組み合わせを含む。システム識別子は、いくつかの実施形態では、コンピューティングデバイス２１０及び／又はコンピューティングデバイス２１０のコンポーネント（例えば、プロセッサのシリアルナンバー、マザーボードのシリアルナンバー、図２又は図３に記載されたコンポーネント等のコンピューティングデバイス２１０の別のコンポーネントのシリアルナンバー）を識別する、シリアルナンバー又は別のユニーク識別子などのコンピューティングデバイス２１０に関連するユニーク識別子を含む。いくつかの実施形態では、システム識別子は、コンピューティングデバイス２１０に関連する複数の識別子の組み合わせを含んでもよい。
【００３３】
いくつかの実施形態では、コンピューティングデバイス２１０は、ライセンスプログラム２２０がコンピューティングデバイス２１０にインストールされるときに決定されるシステム時間をセキュア環境２３０（例えば、ライセンス評価部４１０）に格納する。いくつかの実施形態では、コンピューティングデバイス２１０は、システム時間を専用セキュリティプロセッサ及び／又は仮想セキュリティプロセッサに関連するセキュア環境に格納する。代替的に、コンピューティングデバイス２１０は、システム時間をセキュア環境２３０の外部（例えば、ストレージコンポーネント３５０のセキュアでないストレージ領域）に格納する。この実施形態では、コンピューティングデバイス２１０は、システム時間をセキュアとしてマークしてもよく、専用セキュリティプロセッサ及び／又は仮想セキュリティプロセッサによるシステム時間へのアクセスのみを可能にしてもよい。コンピューティングデバイス２１０は、特定の時間量（例えば、３０日間の試用期間）が経過した後にライセンスプログラム２２０の使用のライセンス期限が切れたという指標の受信に基づいて、システム時間を格納してもよい。
【００３４】
図５にさらに示されるように、プロセス５００は、ライセンスプログラムを使用するための要求を受信すること（ブロック５２０）と、比較インジケータを決定すること（ブロック５３０）と、ライセンス有効性インジケータ及び比較インジケータに基づいて、ライセンスプログラムのライセンスが有効であるかどうかを判定すること（ブロック５４０）と、を含む。いくつかの実施形態では、コンピューティングデバイス２１０は、コンピューティングデバイス２１０のユーザから要求を受信する。例えば、ユーザは、コンピューティングデバイス２１０の入力コンポーネントを介して、ライセンスプログラム２２０及び／又はライセンスプログラム２２０の特定の機能の実行の要望を示してもよい。また、コンピューティングデバイス２１０は、比較インジケータを決定し、比較インジケータをライセンス有効性インジケータと比較することによって、ライセンスプログラム２２０のライセンスが有効であるかどうかを判定する。コンピューティングデバイス２１０は、ライセンスプログラム２２０を使用するための要求と共に比較インジケータを受信してもよいし、要求の受信に基づいて比較インジケータを取得及び／又は生成してもよい。
【００３５】
いくつかの実施形態では、ライセンス有効性インジケータがセキュアキーである場合には、比較インジケータは比較キーである。いくつかの実施形態では、コンピューティングデバイス２１０は、比較キーを（例えば、ユーザ及び／又はメモリから）受信及び／又は取得する。いくつかの実施形態では、コンピューティングデバイス２１０は、比較ライセンスキーを（例えば、ユーザ及び／又はメモリから）受信し、キー生成アルゴリズムを用いて比較ライセンスキーとシステム識別子とを組み合わせることによって、比較キーを生成する。コンピューティングデバイス２１０は、比較キーをセキュアキーと比較することに基づいて、ライセンスが有効であるかどうかを判定する。比較キーがセキュアキーと一致する場合には、コンピューティングデバイス２１０は、ライセンスが有効であると判定する。比較キーがセキュアキーと一致しない場合には、コンピューティングデバイス２１０は、ライセンスが有効ではないと判定する。
【００３６】
いくつかの実施形態では、ライセンス有効性インジケータが、ライセンスプログラム２２０がコンピューティングデバイス２１０にインストールされるときに決定されるシステム時間（インストール時のシステム時間）である場合には、比較インジケータは、ライセンスプログラム２２０を使用するための要求が受信されるときに決定される比較システム時間（要求時のシステム時間）である。コンピューティングデバイス２１０は、インストール時のシステム時間を要求したときのシステム時間と比較することによって、ライセンスが有効であるかどうかを判定する。インストール時のシステム時間と要求時のシステム時間との間の時間差が閾値を下回る（例えば、３０日の試用期間等の試用期間閾値を下回る）場合には、コンピューティングデバイス２１０は、ライセンスが有効であると判定する。インストール時のシステム時間と要求時のシステム時間との間の時間差が閾値を上回る場合には、コンピューティングデバイス２１０は、ライセンスが有効ではないと判定する。いくつかの実施形態では、コンピューティングデバイス２１０は、（例えば、インストール中に）ライセンスプログラム２２０から閾値期間（例えば試用期間）を判定する。
【００３７】
ライセンスが有効であるとコンピューティングデバイス２１０が判定する（ブロック５４０：はい）場合には、プロセス５００は、セキュア環境に格納されたセキュアコードの実行を可能にすること（ブロック５５０）を含む。いくつかの実施形態では、セキュアコードは、ライセンスプログラム２２０を実行するのに用いられるプログラムコードの一部である。コンピューティングデバイス２１０がライセンスプログラム２２０をインストールするときに、ライセンスプログラム２２０のプログラムコードの一部がセキュア環境２３０にインストールされてもよい。代替的に、コンピューティングデバイス２１０は、プログラムコードの一部をセキュア環境２３０の外部（例えば、ストレージコンポーネント３５０のセキュアでないストレージ領域）にインストールしてもよい。この実施形態では、コンピューティングデバイス２１０は、インストールされた部分をセキュアとしてマークしてもよく、専用セキュリティプロセッサ及び／又は仮想セキュリティプロセッサによるインストールされた部分へのアクセス及び／又はその実行のみを可能にしてもよい。セキュア環境２３０にインストールされたコードの一部は、ライセンスが有効でなければ本質的な機能を行うことができないようにライセンスプログラム２２０の本質的な機能を果たす。例えば、本質的な機能は、大量のデータを生じるアルゴリズム、アーカイブファイルに格納されるファイルに関する情報を判定するためにアーカイブファイルのヘッダを構文解析するアルゴリズム等であってもよい。ライセンスが有効であるとコンピューティングデバイス２１０が判定した場合には、セキュア環境２３０に格納されたコードの一部が（例えば、ライセンス実施部４２０によって）実行され又は実行可能にされる。
【００３８】
例として、ファイルを圧縮及びアーカイブするソフトウェアプログラムは、プログラムコードをセキュア環境２３０にインストールしてもよい。プログラムコードは、セキュア環境２３０内でアーカイブされたファイルのヘッダを構文解析してもよく、構文解析されたヘッダに基づいて、アーカイブされたファイルに含まれるファイルに関する情報に関係するソフトウェアプログラムに情報を送り返してもよい。
【００３９】
別の例として、イメージ及び／又はビデオを編集するのに用いられるソフトウェアプログラムは、大量の情報を生じるフォト／ビデオ編集アルゴリズムを行うプログラムコードをセキュア環境２３０にインストールしてもよい。セキュア環境２３０は、情報を生成し、当該情報を、フォト／ビデオを編集するソフトウェアプログラムに送信する。セキュア環境２３０での大量の情報の生成は、単純なハックがセキュア環境２３０の実施機構を免れることが確実にできないようにする。さらに、セキュア環境２３０でのソフトウェア機能の実行は、ソフトウェアプログラムに組み込まれる機密情報の機密性の改善を可能にする。
【００４０】
いくつかの実施形態では、セキュアコードは、セキュア環境２３０に格納される解読アルゴリズム（例えば、共有秘密キーペア、公開キーペア、秘密キーペア等）である。コンピューティングデバイス２１０がライセンスプログラム２２０をインストールするときに、ライセンスプログラム２２０を用いるのに必要とされるライセンスプログラム２２０のプログラムコードの一部及び／又は情報が暗号化される。ライセンスが有効であるとコンピューティングデバイス２１０が判定するときに、セキュア環境２３０に格納される（又は他の方法で実行される）解読アルゴリズムによって（例えば、ライセンス実施部４２０によって）暗号化されたコード及び／又は情報が、解読され又は解読可能にされる。
【００４１】
ライセンスが有効ではないとコンピューティングデバイス２１０が判定した（ブロック５４０：いいえ）場合には、プロセス５００は、セキュア環境に格納されたセキュアコードの実行を抑制すること（ブロック５６０）を含む。いくつかの実施形態では、ライセンスが有効ではないとコンピューティングデバイス２１０が判定したときには、ライセンス実施部４２０は、コンピューティングデバイス２１０がセキュア環境２３０に格納されたコードの一部を実行するのを抑制する。いくつかの実施形態では、ライセンスが有効ではないとコンピューティングデバイス２１０が判定したときには、ライセンス実施部４２０は、コンピューティングデバイス２１０が、セキュア環境２３０に格納された解読アルゴリズムを用いてコード及び／又は情報を解読するのを抑制する。
【００４２】
一連のブロックが図５に関連して説明されているが、ブロック及び／又はブロックの順序は、いくつかの実施形態においては変更される場合がある。追加的又は代替的に、依存性のないブロックが並行して行われる場合がある。
【００４３】
図６は、図５に示された例示的なプロセスに関係する例示的な実施形態６００を示す図である。図６は、ソフトウェアライセンスが有効であるかどうかを判定するために、ライセンス評価部４１０が、セキュアキー及び比較キーを用いてソフトウェアライセンスを評価する、例示的な実施形態６００を示す図である。
【００４４】
符号６１０によって示されるように、例示的な実施形態６００は、コンピューティングデバイス２１０のライセンスプログラム２２０の使用及び／又はインストールを可能にするライセンスキーを受信することを含む。符号６２０によって示されるように、コンピューティングデバイス２１０は、セキュアキーを生成するために、ライセンスキーをシステム識別子（例えば、プロセッサ３２０等のコンピューティングデバイス２１０のコンポーネントのシリアルナンバー又は他のデバイス識別子）と組み合わせる。コンピューティングデバイス２１０は、ライセンスキーとシステム識別子とを組み合わせるためにキー生成アルゴリズムを適用することによって、セキュアキーを生成する。例えば、「１Ａ２Ｂ３Ｃ」のセキュアキーを生成するために、「１２３」のライセンスキーと「ＡＢＣ」のシステム識別子とが組み合わされてもよい。セキュアキーは、セキュア環境２３０（例えば、ライセンス評価部４１０）に格納される。
【００４５】
符号６３０によって示されるように、コンピューティングデバイス２１０は、ライセンスプログラム２２０を使用するための要求を受信する。要求は、ライセンスプログラム２２０を実行する（例えば、走らせる）ための要求、及び／又は、ライセンスプログラム２２０の特定の機能を実行するための要求を含んでもよい。いくつかの実施形態では、要求は、コンピューティングデバイス２１０のユーザによって生成される。いくつかの実施形態では、要求は、デバイス及び／又はデバイスのコンポーネント（例えば、コンピューティングデバイス２１０及び／又は別のデバイス上で実行されるアプリケーション）によって生成される。
【００４６】
符号６４０によって示されるように、コンピューティングデバイス２１０は、比較キーを決定する。例えば、コンピューティングデバイス２１０は、要求の受信に基づいて、比較キーを受信、取得及び／又は生成してもよい。いくつかの実施形態では、コンピューティングデバイス２１０は、（例えば、ユーザ、ライセンスプログラム２２０及び／又はメモリからの）ライセンスプログラム２２０を使用するための要求に基づいて、比較ライセンスキーを受信する。コンピューティングデバイス２１０は、比較ライセンスキー及びシステム識別子にキー生成アルゴリズムを適用することによって、比較キーを生成する。
【００４７】
符号６５０によって示されるように、コンピューティングデバイス２１０は、ライセンスプログラム２２０のライセンスが有効であるかどうかを判定するために、比較キーとセキュアキーとを比較する。コンピューティングデバイス２１０（例えば、ライセンス評価部４１０）は、符号６６０によって示されるように、比較に基づいて有効性通知を生成する。有効性通知は、ライセンスの有効又は無効を示し、ライセンス実施部４２０に伝送されてもよい。例えば、比較キー及びセキュアキーの両方が「１Ａ２Ｂ３Ｃ」である場合には、有効性通知はライセンスが有効であることを示す。
【００４８】
図７は、図５に示された例示的なプロセスに関係する例示的な実施形態７００を示す図である。図７は、ソフトウェアライセンスが有効であるかどうかを判定するために、ライセンス評価部４１０が、インストール時のシステム時間と要求時のシステム時間とを用いてソフトウェアライセンスを評価する、例示的な実施形態７００を示す図である。
【００４９】
符号７１０によって示されるように、例示的な実施形態７００は、ライセンスプログラム２２０をコンピューティングデバイス２１０にインストールすることを含む。符号７２０によって示されるように、ライセンスプログラム２２０がコンピューティングデバイス２１０にインストールされるときに決定されるシステム時間が、セキュア環境２３０（例えば、ライセンス評価部４１０）に格納される。例えば、ライセンスプログラム２２０がインストールされるときのシステム時間が、２０１２年１０月１日の午前９：００の場合を想定する。ライセンスプログラム２２０がインストールされるときには、コンピューティングデバイス２１０は、ライセンスプログラム２２０を用いるためのライセンスが有効である間の閾値時間値（例えば、３０日間又は２０１２年１０月３１日の午前９：００まで）を受信してもよい。
【００５０】
符号７３０によって示されるように、コンピューティングデバイス２１０は、図６に関連して上述したように、ライセンスプログラム２２０を使用するための要求を受信する。符号７４０によって示されるように、コンピューティングデバイス２１０は、ライセンスプログラム２２０を使用するための要求が受信されるときに決定されるシステム時間を判断する。符号７５０によって示されるように、コンピューティングデバイス２１０は、要求時のシステム時間とインストール時のシステム時間（例えば、セキュア環境２３０に格納されている）とを比較する。
【００５１】
コンピューティングデバイス２１０（例えば、ライセンス評価部４１０）は、要求時のシステム時間とインストール時のシステム時間との差が閾値を満たすかどうかを判定し、符号７６０によって示されるように、閾値（例えば、インストール中に受信した閾値時間値）を満たす差に基づいて有効性通知を生成する。例えば、差が閾値を下回る場合（例えば、要求時のシステム時間が３０日の試用期間に関して２０１２年１０月３１日の午前９：００前である場合）には、有効性通知は、ライセンスが有効であることを示す。差が閾値を上回るか閾値に等しい場合（例えば、要求時のシステム時間が２０１２年１０月３１日の午前９：００であるか又はその後である場合）には、有効性通知は、ライセンスが無効であることを示す。ライセンス評価部４１０は、有効性通知をライセンス実施部４２０に伝送してもよい。
【００５２】
図８は、図５に示された例示的なプロセスに関係する例示的な実施形態８００を示す図である。図８は、ライセンス実施部４２０が、有効性通知に基づいてライセンスプログラム２２０のコードの一部の実行を可能にする又は抑制する、例示的な実施形態８００を示す図である。
【００５３】
符号８１０によって示されるように、コンピューティングデバイス２１０は、ライセンスプログラム２２０のプログラムコードの一部をセキュア環境２３０（例えば、ライセンス実施部４２０）にインストールする。いくつかの実施形態では、コードの一部は、ライセンスプログラム２２０の本質的な機能を実行する。図８にさらに示されるように、ライセンス実施部４２０は、（例えば、ライセンス評価部４１０から）有効性通知６６０／７６０を受信する。
【００５４】
符号８２０によって示されるように、ライセンス実施部４２０は、ライセンスプログラム２２０のライセンスが有効であることを有効性通知が示す場合には、コードのインストールされた部分を実行する。符号８３０によって示されるように、ライセンス実施部４２０は、ライセンスプログラム２２０のライセンスが無効であることを有効性通知が示す場合には、コードのインストールされた部分を実行しない。
【００５５】
図９は、図５に示された例示的なプロセスに関係する例示的な実施形態９００を示す図である。図９は、ライセンス実施部４２０が、有効性通知に基づいて解読アルゴリズムの実行を可能にする又は抑制する、例示的な実施形態９００を示す図である。
【００５６】
符号９１０によって示されるように、ライセンス実施部４２０は、コンピューティングデバイス２１０から、ライセンスプログラム２２０を用いるのに必要とされる暗号化されたプログラムコード及び／又は暗号化された情報を受信する。いくつかの実施形態では、コンピューティングデバイス２１０は、ライセンスプログラム２２０を使用するためのユーザ要求に基づいて、暗号化されたコード／情報をライセンス実施部４２０に送信する。図９にさらに示されるように、ライセンス実施部４２０は、（例えば、ライセンス評価部４１０から）有効性通知６６０／７６０を受信する。
【００５７】
符号９２０によって示されるように、ライセンス実施部４２０は、ライセンスプログラム２２０のライセンスが有効であることを有効性通知が示す場合には、解読アルゴリズムを用いて、暗号化されたコード／情報を解読する。符号９３０によって示されるように、ライセンス実施部４２０は、ライセンスプログラム２２０のライセンスが無効であることを有効性通知が示す場合には、暗号化されたコード／情報を解読しない。いくつかの実施形態では、ライセンスプログラム２２０がコンピューティングデバイス２１０にインストールされるときに、コンピューティングデバイス２１０は、解読アルゴリズムをライセンス実施部４２０に送信し、ライセンス実施部４２０は、解読アルゴリズムを格納する。
【００５８】
本明細書で説明された実施形態は、ソフトウェアライセンスの評価、検証及び実施を改善するために、セキュア環境を用いたファームウェアで実施される使用許諾技術を提供する。例えば、ファームウェアで実施される使用許諾技術は、高レベルのセキュリティを提供し、容易に免れられず、付加的なハードウェアを必要とせず、インターネット接続を必要としない。
【００５９】
上記の開示は、図示及び説明を提供するが、網羅的なものとなること又は実施形態を開示された正確な形態に限定することを意図しない。修正及び変形は、上記の開示を参照することによって可能であり、又は、実施形態の実施から得られ得る。
【００６０】
本明細書で用いられる場合、「コンポーネント」という用語は、ハードウェア、ファームウェア、又は、ハードウェアとソフトウェアとの組み合わせとして広く解釈されることを意図する。
【００６１】
いくつかの実施形態が閾値と併せて本明細書で説明される。値と閾値との関係性を説明するために、本明細書で用いられる場合における「上回る」という用語（又は類似の用語）は、「上回るか又はこれに等しい」という用語（又は類似の用語）と交換可能に用いられ得る。同様に、値と閾値との関係性を説明するために、本明細書で用いられる場合における「下回る」という用語（又は類似の用語）は、「下回るか又はこれに等しい」という用語（又は類似の用語）と交換可能に用いられ得る。本明細書で用いられる場合における閾値を「満たす」（又は類似の用語）とは、「閾値を上回る」、「閾値を上回るか又はこれに等しい」、「閾値を下回る」、「閾値を下回るか又はこれに等しい」、又は、他の類似の用語と交換可能に用いられ得る。
【００６２】
本明細書で説明される場合のシステム及び／又は方法は、図面に示された実施形態においてソフトウェア、ファームウェア及びハードウェアの多くの異なる形態で実装され得ることが明白であろう。これらのシステム及び／又は方法を実装するのに用いられる実際のソフトウェアコード又は特化された制御ハードウェアは、実施形態を制限するものではない。したがって、システム及び／又は方法の動作並びに挙動が特定のソフトウェアコードへの言及なしに説明されており、ソフトウェア及び制御ハードウェアを、本明細書での説明に基づくシステム及び／又は方法を実装するように設計することができると理解される。
【００６３】
特徴の特定の組み合わせが請求項で列挙され、及び／又は、本明細書で開示されるにもかかわらず、これらの組み合わせは、可能な実施形態の開示を限定することを意図しない。実際には、これらの特徴の多くは、請求項で具体的に列挙されない、及び／又は、本明細書で開示されない方法で組み合わされてもよい。以下に挙げられる各従属請求項は、１つの請求項にのみ直接従属し得るが、可能な実施形態の開示は、請求項の組における全ての他の請求項と組み合わせた各従属請求項を含む。
【００６４】
本明細書で用いられる要素、行為又は命令は、明示的に記載されない限り、重要又は本質的なものであると解釈されるべきではない。また、本明細書で用いられる場合における冠詞「ａ」及び「ａｎ」は、１つ以上のアイテムを含むことを意図し、「１つ以上の」という用語と交換可能に用いられ得る。１つだけのアイテムを意図する場合には、「１つの」という用語又は類似の言葉が用いられる。さらに、「に基づいて」という文言は、他に明示的に表記されない限り、「に少なくとも部分的に基づいて」ということを意味していることを意図する。
【図１Ａ】
2015535113.tif 000003
【図１Ｂ】
2015535113.tif 000004
【図２】
2015535113.tif 000005
【図３】
2015535113.tif 000006
【図４】
2015535113.tif 000007
【図５】
2015535113.tif 000008
【図６】
2015535113.tif 000009
【図７】
2015535113.tif 000010
【図８】
2015535113.tif 000011
【図９】
2015535113.tif 000012
【手続補正書】
【提出日】平成27年7月17日(2015.7.17)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
開示される実施形態は、概して、ソフトウェアの使用許諾に関する。特に、開示される実施形態は、ファームウェアを用いたソフトウェアの使用許諾技術の実施に関する。
【背景技術】
【０００２】
ソフトウェアライセンスは、著作権で保護されたソフトウェアの使用又は再配信を規制する法的文書である。通常のソフトウェアライセンスは、使用許可がない場合にはかかる使用が著作権法の下でソフトウェア所有者の独占権の侵害をなすような形で、エンドユーザにソフトウェアの１つ以上のコピーの使用許可を与える。ソフトウェアライセンスは、コンピューティングデバイスを用いて実施される場合がある。
【発明の概要】
【課題を解決するための手段】
【０００３】
いくつかの実施形態によれば、デバイスは、ソフトウェアプログラムを使用するための要求を受信し、要求を受信したことに基づいて比較インジケータを決定し、セキュア環境に格納されたライセンス有効性インジケータ及び比較インジケータに基づいて、ソフトウェアプログラムのライセンスが有効であるかどうかを判定する。デバイスは、ライセンスが有効と判定された場合に、セキュア環境に格納されたセキュアコードの実行を可能にし、ライセンスが無効と判定された場合に、セキュア環境に格納されたセキュアコードの実行を抑制する。
【０００４】
いくつかの実施形態によれば、プロセッサが実行する方法は、プロセッサが、ソフトウェアプログラムを使用するための要求を受信することと、前記プロセッサが、前記要求を受信したことに基づいて、比較インジケータを決定することと、前記プロセッサが、セキュア環境に格納されたライセンス有効性インジケータと、前記比較インジケータとに基づいて、前記ソフトウェアプログラムのライセンスが有効であるかどうかを判定することと、前記プロセッサが、前記ライセンスが有効と判定された場合に、前記セキュア環境に格納されたセキュアコードの実行を可能にすることと、前記プロセッサが、前記ライセンスが無効と判定された場合に、前記セキュア環境に格納された前記セキュアコードの実行を抑制することと、を含んでもよい。
【０００５】
いくつかの実施形態によれば、前記ライセンス有効性インジケータは、キー生成アルゴリズムを、前記ソフトウェアプログラムにアクセスするのに用いられるライセンスキーと、前記ソフトウェアプログラムを実行するのに用いられるデバイスのうち少なくとも１つのコンポーネントを識別するシステム識別子と、に適用することによって生成されるセキュアキーを含んでもよい。
【０００６】
いくつかの実施形態によれば、前記比較インジケータは、前記キー生成アルゴリズムを、比較ライセンスキーと、前記システム識別子と、に適用することによって生成される比較キーを含んでもよい。前記ライセンスが有効であるかどうかを判定することは、前記比較キーが前記セキュアキーと一致するかどうかを判定することによって、前記ライセンスが有効であるかどうかを判定すること、をさらに含んでもよい。
【０００７】
いくつかの実施形態によれば、前記ライセンス有効性インジケータは、前記ソフトウェアプログラムがコンピューティングデバイスにインストールされるときに決定される第１のシステム時間を示してもよい。
【０００８】
いくつかの実施形態によれば、前記比較インジケータは、前記ソフトウェアプログラムを使用するための要求が前記コンピューティングデバイスによって受信されるときに決定される第２のシステム時間を示してもよい。前記ライセンスが有効であるかどうかを判定することは、前記第１のシステム時間と前記第２のシステム時間との間の時間差が閾値を満たすかどうかを判定することによって、前記ライセンスが有効であるかどうかを判定することをさらに含んでもよい。
【０００９】
いくつかの実施形態によれば、前記セキュアコードは、前記ソフトウェアプログラムを実行するのに用いられるプログラムコードの一部を含んでもよい。
【００１０】
いくつかの実施形態によれば、デバイスは、１つ以上のプロセッサを備えてもよい。前記１つ以上のプロセッサは、ソフトウェアプログラムを使用するための要求を受信し、前記要求の受信に基づいて比較インジケータを決定し、セキュア環境に格納されたライセンス有効性インジケータと、前記比較インジケータとに基づいて、前記ソフトウェアプログラムのライセンスが有効であるかどうかを判定し、前記ライセンスが有効と判定された場合に、前記セキュア環境に格納されたセキュアコードの実行を可能にし、前記ライセンスが有効ではないと判定された場合に、前記セキュア環境に格納されたセキュアコードの実行を抑制してもよい。
【００１１】
いくつかの実施形態によれば、前記ライセンス有効性インジケータは、キー生成アルゴリズムを、前記ソフトウェアプログラムにアクセスするのに用いられるライセンスキーと、前記ソフトウェアプログラムを実行するのに用いられるデバイスのうち少なくとも１つのコンポーネントを識別するシステム識別子と、に適用することによって生成されるセキュアキーを含んでもよい。
【００１２】
いくつかの実施形態によれば、前記比較インジケータは、前記キー生成アルゴリズムを、比較ライセンスキーと、前記システム識別子と、に適用することによって生成される比較キーを含んでもよい。前記１つ以上のプロセッサは、前記ライセンスが有効であるかどうかを判定するときに、前記比較キーが前記セキュアキーと一致するかどうかを判定することによって、前記ライセンスが有効であるかどうかを判定してもよい。
【００１３】
いくつかの実施形態によれば、前記ライセンス有効性インジケータは、前記ソフトウェアプログラムがコンピューティングデバイスにインストールされるときに決定される第１のシステム時間を示してもよい。
【００１４】
いくつかの実施形態によれば、前記比較インジケータは、前記ソフトウェアプログラムを使用するための要求が前記コンピューティングデバイスによって受信されるときに決定される第２のシステム時間を示してもよい。前記１つ以上のプロセッサは、前記ライセンスが有効であるかどうかを判定するときに、前記第１のシステム時間と前記第２のシステム時間との間の時間差が閾値を満たすかどうかを判定することによって、前記ライセンスが有効であるかどうかを判定してもよい。
【００１５】
いくつかの実施形態によれば、前記セキュアコードは、前記ソフトウェアプログラムを実行するのに用いられるプログラムコードの一部を含んでもよい。
【００１６】
いくつかの実施形態によれば、前記セキュアコードは、プログラムコードを解読するのに用いられる解読アルゴリズム、又は、前記ソフトウェアプログラムを実行するのに用いられる情報を含んでもよい。
【００１７】
いくつかの実施形態によれば、コンピュータ可読記憶媒体は、命令を記憶してもよい。命令は、プロセッサによって実行されると、ソフトウェアプログラムを使用するための要求を受信することと、前記要求の受信に基づいて比較インジケータを決定することと、セキュア環境に格納されたライセンス有効性インジケータと、前記比較インジケータとに基づいて、前記ソフトウェアプログラムのライセンスが有効であるかどうかを判定することと、前記ライセンスが有効と判定された場合に、前記セキュア環境に格納されたセキュアコードの実行を可能にすることと、前記ライセンスが有効ではないと判定された場合に、前記セキュア環境に格納されたセキュアコードの実行を抑制することと、を前記プロセッサに行わせる１つ以上の命令を含んでもよい。
【００１８】
いくつかの実施形態によれば、前記ライセンス有効性インジケータは、キー生成アルゴリズムを、前記ソフトウェアプログラムにアクセスするのに用いられるライセンスキーと、前記ソフトウェアプログラムを実行するのに用いられるデバイスのうち少なくとも１つのコンポーネントを識別するシステム識別子と、に適用することによって生成されるセキュアキーを含んでもよい。
【００１９】
いくつかの実施形態によれば、前記比較インジケータは、前記キー生成アルゴリズムを、比較ライセンスキーと、前記システム識別子と、に適用することによって生成される比較キーを含んでもよい。前記１つ以上の命令は、前記ライセンスが有効であるかどうかを判定するときに、前記比較キーが前記セキュアキーと一致するかどうかを判定することによって、前記ライセンスが有効であるかどうかを判定すること、を前記プロセッサに行わせてもよい。
【００２０】
いくつかの実施形態によれば、前記ライセンス有効性インジケータは、前記ソフトウェアプログラムがコンピューティングデバイスにインストールされるときに決定される第１のシステム時間を示してもよい。
【００２１】
いくつかの実施形態によれば、前記比較インジケータは、前記ソフトウェアプログラムを使用するための要求が前記コンピューティングデバイスによって受信されるときに決定される第２のシステム時間を示してもよい。前記１つ以上の命令は、前記ライセンスが有効であるかどうかを判定するときに、前記第１のシステム時間と前記第２のシステム時間との間の時間差が閾値を満たすかどうかを判定することによって、前記ライセンスが有効であるかどうかを判定すること、を前記プロセッサに行わせてもよい。
【００２２】
前記セキュアコードは、前記ソフトウェアプログラムを実行するのに用いられるプログラムコードの一部、又は、プログラムコードを解読するのに用いられる解読アルゴリズム、若しくは、前記ソフトウェアプログラムを実行するのに用いられる情報、の少なくとも１つを含んでもよい。
【図面の簡単な説明】
【００２３】
【図１Ａ】いくつかの実施形態に係るソフトウェアの使用許諾プロセスの概要を示す図である。
【図１Ｂ】いくつかの実施形態に係るソフトウェアの使用許諾プロセスの概要を示す図である。
【図２】いくつかの実施形態に係るソフトウェアの使用許諾プロセスを実行し得る例示的なコンピューティングデバイスを示す図である。
【図３】いくつかの実施形態に係る図２の１つ以上のコンポーネント及び／又はデバイスに対応するデバイスの例示的なコンポーネントを示す図である。
【図４】いくつかの実施形態に係る図２の１つ以上のコンポーネント及び／又はデバイスに対応する例示的な機能コンポーネントを示す図である。
【図５】いくつかの実施形態に係るソフトウェアライセンスを評価及び実施するための例示的なプロセスのフロー図である。
【図６】図５に示された例示的なプロセスに関係する例示的な実施形態の図である。
【図７】図５に示された例示的なプロセスに関係する例示的な実施形態の図である。
【図８】図５に示された例示的なプロセスに関係する例示的な実施形態の図である。
【図９】図５に示された例示的なプロセスに関係する例示的な実施形態の図である。
【発明を実施するための形態】
【００２４】
例示的な実施形態の以下の詳細な説明は、添付の図面を参照する。異なる図中の同じ符号は、同じ又は類似の要素を特定し得る。
【００２５】
ソフトウェアライセンスは、ソフトウェア（例えば、特許で保護されたソフトウェア及び／又は著作権で保護されたソフトウェア）の使用又は再配信を規制する。ソフトウェアライセンス実施技術は、ソフトウェアで実装される実施技術、ハードウェアで実装される実施技術、及び、サーバで実装される実施技術を含む。ソフトウェアで実装される実施技術は、かなりの量のコンピュータリソースを消費し、ソフトウェアの性能を低下させ、ハッカーによって容易に免れられる。ハードウェアで実装される実施技術は、高価で不便な場合のある付加的なハードウェアを必要とする。サーバで実装される実施技術は、利用不可能な場合があるインターネット接続を必要とする。
【００２６】
本明細書で説明される実施形態は、ソフトウェアで実装される技術、ハードウェアで実装される技術、及び、サーバで実装される技術に関連する問題の多くをなくすことの可能な、ファームウェアで実装されるライセンス実施技術を提供する。例えば、ファームウェアで実装される実施技術は、高レベルのセキュリティを提供し、容易に免れられず、付加的なハードウェアを必要とせず、インターネット接続を必要としない。
【００２７】
図１Ａ及び図１Ｂは、いくつかの実施形態に係るソフトウェアの使用許諾プロセス１００の概要を示す図である。図１Ａに示すように、ソフトウェアの使用許諾プロセス１００は、ライセンスプログラムと、コンピューティングデバイスと、ライセンス評価部及びライセンス実施部を含むセキュア環境と、を含む。ソフトウェアの使用許諾プロセス１００において、ライセンスプログラムは、ソフトウェアプログラムであり、コンピューティングデバイスは、コンピュータであり、セキュア環境は、コンピューティングデバイスに含まれるファームウェアを含み、ライセンス評価部及びライセンス実施部は、セキュア環境のコンポーネントである。
【００２８】
いくつかの実施形態では、コンピューティングデバイスは、セキュア環境を実装するために、１つ以上のプロセッサコア（例えば、中央処理装置コア、グラフィックス処理装置コアなど）と、専用ハードウェア（例えば、専用セキュリティプロセッサ）と、を含むシステム・オン・ア・チップ（Ｓｙｓｔｅｍ−ｏｎ−ａ−Ｃｈｉｐ（ＳｏＣ））を含む。いくつかの実施形態では、コンピューティングデバイスは、１つ以上のプロセッサコア（例えば、中央処理装置コア、グラフィックス処理装置コアなど）と、ハードウェアベースのアクセス制御機構と、を有するＳｏＣを含む。これらの実施形態では、ＳｏＣは、セキュア環境を実装する少なくとも１つの仮想セキュリティプロセッサと、セキュア環境を実装しない（本明細書では「セキュアでない環境」と呼ばれる）少なくとも１つの仮想標準プロセッサと、を含む２つ以上の仮想プロセッサを実装する。ハードウェアベースのアクセス制御機構は、仮想セキュリティプロセッサ（例えば、セキュア環境）へのアクセスを管理（又は他の方法で制御）する。例えば、ハードウェアベースのアクセス制御機構は、セキュア環境へ又はセキュア環境からのワールド（ｗｏｒｌｄ）の切り換えが起こった場合に、アプリケーション、周辺機器等に通知してもよく、セキュア環境又はセキュアでない環境でセキュリティポリシーを実施してもよい。２つ以上の仮想プロセッサは、ＳｏＣのリソース（例えば、中央処理装置コア、グラフィックス処理装置コア等）を使用する。言い換えれば、これらの実施形態では、ＳｏＣは、セキュア環境を実装する専用ハードウェア（例えば、専用セキュリティプロセッサ）を含まない。
【００２９】
図１Ａに示すように、ライセンスプログラムは、コンピューティングデバイスにインストールされる。コンピューティングデバイスは、ライセンス有効性インジケータを生成し、ライセンス有効性インジケータは、ライセンス評価部に送られて、セキュア環境（例えば、不揮発性メモリ等のセキュアなメモリ）に格納される。いくつかの実施形態では、ライセンス有効性インジケータは、ライセンスプログラムをインストール又は実行するのに用いられるライセンスキーと、コンピューティングデバイスに関連するシステム識別子と、に基づいている。いくつかの実施形態では、ライセンス有効性インジケータは、ライセンスプログラムがコンピューティングデバイスにインストールされるときに測定されるシステム時間に基づいている。システム時間は、コンピュータ（例えば、コンピューティングデバイス２１０）の時間の経過の指標を指す。例えば、システム時間は、特定の開始日／時間から経過したいくつかのチック（ｔｉｃｋ）をカウントするコンピューティングデバイス２１０のシステムクロックによって測定されてもよい。システム時間は、システム時間の標準暦時間への変換を指す場合もある。
【００３０】
図１Ｂに示すように、コンピューティングデバイスのユーザは、ライセンスプログラムの使用を要求する。コンピューティングデバイスは、ライセンス評価部によってセキュア環境に格納されたライセンス有効性インジケータに基づいて、ライセンスプログラムのライセンスが有効であるかどうかを判定する。ライセンスが有効であると判定すると、ライセンス評価部は、有効性通知をライセンス実施部に送信する。ライセンスが有効であるとの判定に基づいて（例えば、有効性通知を介して）、ライセンス実施部は、セキュアコード（例えば、コンピューティングデバイスによってセキュア環境内でインストール及び／又は実行される）を実行し、又は、（例えば、セキュア環境に格納及び／又は実行される解読アルゴリズムを用いて）セキュアコード及び／又は情報を解読する。実行及び／又は解読は、ライセンスプログラムの本質的な機能がコンピューティングデバイスによって行われることを可能にする。
【００３１】
図２は、いくつかの実施形態に係るソフトウェアの使用許諾プロセスを実行し得る例示的なコンピューティングデバイス２１０の図である。図２に示すように、コンピューティングデバイス２１０は、ライセンスプログラム２２０と、セキュア環境２３０と、を含む。
【００３２】
コンピューティングデバイス２１０は、ソフトウェアプログラムを実行し、情報をメモリに格納することができるコンピューティングデバイスを含む。例えば、コンピューティングデバイス２１０は、ソフトウェアを実行し、情報を格納することができるデスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバコンピュータ、携帯電話又は別のコンピューティングデバイスを含んでもよい。
【００３３】
ライセンスプログラム２２０は、コンピューティングデバイス２１０等のコンピューティングデバイスによって実行可能なコンピュータプログラムを含む。例えば、ライセンスプログラム２２０は、フォト／ビデオエディタ、フォト／ビデオビューア、ファイルアーカイバ、音楽プレーヤ、ゲーム、ビジネスアプリケーション（例えば、ワードプロセッサ、スプレッドシートプログラム等）等のソフトウェアプログラム及び／又はアプリケーションを含んでもよい。ライセンスプログラム２２０は、ライセンスプログラム２２０がコンピューティングデバイス２１０によって実行され得る前に有効化されなければならないライセンスに関連する。いくつかの実施形態では、ライセンスプログラム２２０は、コンピューティングデバイス２１０にインストールされ、コンピューティングデバイス２１０によって不揮発性メモリ（例えば、ハードディスクドライブ、ソリッドステートディスクドライブ等の記憶装置）に格納される。
【００３４】
セキュア環境２３０は、コンピューティングデバイス２１０によって用いられる情報及び／又は命令を格納するメモリを含む。いくつかの実施形態では、セキュア環境２３０は、電源投入されない場合（例えば、セキュア環境２３０及び／又はコンピューティングデバイス２１０が電源投入されない場合）に、格納された情報を保持する、読出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読出し専用メモリ（ＥＰＲＯＭ）、フラッシュメモリ、ハードドライブ等の不揮発性メモリを含む。また、セキュア環境２３０は、不揮発性メモリと、不揮発性メモリに格納されるプログラムコード及び／又は情報との組み合わせ等のファームウェアを含んでもよい。追加的又は代替的に、セキュア環境２３０は、専用セキュリティプロセッサで実行するファームウェアを含む。いくつかの実施形態では、セキュア環境２３０は、プロセッサに一体化されたＳＡＭＵ（Ｓｅｃｕｒｅ  Ａｓｓｅｔ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）環境等のセキュア実行環境に一体化されている。いくつかの実施形態では、セキュア環境２３０は、本明細書で説明されている様に、少なくとも１つの仮想セキュリティプロセッサとして実装される。
【００３５】
図２に示されたデバイス／コンポーネントの数は、例示する目的で提供される。実際には、付加的なデバイス／コンポーネント、より少ないデバイス／コンポーネント、異なるデバイス／コンポーネント、又は、図２に示されたものとは異なるように配置されたデバイス／コンポーネントが存在する場合がある。さらに、図２に示された２つ以上のデバイス／コンポーネントは、単一のデバイス／コンポーネント内に実装されてもよく、又は、図２に示された単一のデバイス／コンポーネントは、複数の分散されたデバイス／コンポーネントとして実装されてもよい。加えて、図２に示されたデバイス／コンポーネントのうち１つ以上は、図２に示された別の１つ以上のデバイス／コンポーネントによって行われるものとして説明される１つ以上の機能を行ってもよい。図２に示されたデバイス／コンポーネントは、有線接続、無線接続、又は、有線接続と無線接続との組み合わせを介して相互接続されてもよい。
【００３６】
図３は、図２の１つ以上のコンポーネント及び／又はデバイスに対応するデバイス３００の例示的なコンポーネントを示す図である。図３に示すように、デバイス３００は、バス３１０と、プロセッサ３２０と、メインメモリ３３０と、不揮発性メモリ３４０と、ストレージコンポーネント３５０と、入力コンポーネント３６０と、出力コンポーネント３７０と、通信インターフェース３８０と、を含む。
【００３７】
バス３１０は、デバイス３００のコンポーネント間の通信を可能にするパスを含む。プロセッサ３２０は、命令を解釈及び／又は実行する処理装置（例えば、１つ以上の中央処理装置コア、１つ以上のグラフィックス処理装置コア、１つ以上の加速処理装置、特定用途向け集積回路、デジタル信号プロセッサ等）を含む。いくつかの実施形態では、プロセッサ３２０は、１つ以上のプロセッサコアを含む。追加的又は代替的に、プロセッサ３２０は、処理装置の組み合わせ（例えば、１つ以上の中央処理装置コアと１つ以上のグラフィックス処理装置コア等）を含んでもよい。
【００３８】
メインメモリ３３０は、プロセッサ３２０による実行のための情報及び命令を格納する、１つ以上のランダムアクセスメモリ（ＲＡＭ）又は他のタイプの動的記憶装置及び／若しくは揮発性記憶装置を含む。不揮発性メモリ３４０は、プロセッサ３２０による使用のための静的情報及び／若しくは命令を格納する１つ以上のＲＯＭコンポーネント又は他のタイプの静的記憶装置及び／若しくは不揮発性記憶装置を含む。いくつかの実施形態では、不揮発性メモリ３４０はセキュア環境２３０内に含まれる。ストレージコンポーネント３５０は、磁気記録媒体及び／又は光学記録媒体と対応するストレージドライブを含む。
【００３９】
入力コンポーネント３６０は、ユーザが、情報をデバイス３００（例えば、キーボード、キーパッド、マウス、ボタン、スイッチ等）に入力することを可能にするコンポーネントを含む。出力コンポーネント３７０は、デバイス３００（例えば、ディスプレイ、スピーカ、１つ以上の発光ダイオード（ＬＥＤ）等）から情報を出力するコンポーネントを含む。
【００４０】
通信インターフェース３８０は、デバイス３００が、有線接続、無線接続又は有線接続と無線接続との組み合わせ等を介して他のデバイスと通信することを可能にする、トランシーバ並びに／又は別個のレシーバ及び送信器等のトランシーバの様なコンポーネントを含む。例えば、通信インターフェース３８０は、イーサネット（登録商標）インターフェース、光学インターフェース、同軸インターフェース、赤外線インターフェース、無線周波数（ＲＦ）インターフェース、ユニバーサルシリアルバス（ＵＳＢ）インターフェース等を含んでもよい。
【００４１】
デバイス３００は、本明細書では種々の動作を行うものとして説明されている。デバイス３００は、メインメモリ３３０、不揮発性メモリ３４０及び／又はストレージコンポーネント３５０等のコンピュータ可読媒体に含まれるソフトウェア命令を実行するプロセッサ３２０に応じて、これらの動作を行ってもよい。コンピュータ可読媒体は、非一時的（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）なメモリデバイスとして定義される場合がある。メモリデバイスは、単一の記憶装置のスペース、又は、複数の記憶装置にわたって分散したスペースを含む。
【００４２】
いくつかの実施形態では、ソフトウェア命令は、別のコンピュータ可読媒体又は別のデバイスから通信インターフェース３８０を介して、メインメモリ３３０及び／又は不揮発性メモリ３４０に読み込まれる。メインメモリ３３０及び／又は不揮発性メモリ３４０に格納されたソフトウェア命令は、実行されるときに、プロセッサ３２０に対して、本明細書で説明される１つ以上のプロセスを行わせる。追加的又は代替的に、本明細書で説明される１つ以上のプロセスを行うために、ソフトウェア命令の代わりに又はこれと組み合わせてハードワイヤード回路が用いられてもよい。したがって、本明細書で説明される実施形態は、ハードウェア回路とソフトウェアとの如何なる特定の組み合わせにも限定されない。
【００４３】
図３に示されたコンポーネントの数は例示する目的で提供される。実際には、デバイス３００は、付加的なコンポーネント、より少ないコンポーネント、異なるコンポーネント、又は、図３に示されたものとは異なるように配置されたコンポーネントを含んでもよい。追加的又は代替的に、コンピューティングデバイス２１０は、１つ以上のデバイス３００、及び／又は、デバイス３００の１つ以上のコンポーネントを含んでもよい。
【００４４】
図４は、図２の１つ以上のコンポーネント及び／又はデバイスに対応する例示的な機能コンポーネント４００を示す図である。いくつかの実施形態では、機能コンポーネント４００は、コンピューティングデバイス２１０及び／又はセキュア環境２３０内に含まれる。いくつかの実施形態では、機能コンポーネントは、コンピューティングデバイス２１０とは別個の１つ以上のデバイス内、又は、コンピューティングデバイス２１０を含む１つ以上のデバイス内に含まれる。図４に示すように、機能コンポーネント４００は、ライセンス評価部４１０と、ライセンス実施部４２０と、を含む。
【００４５】
ライセンス評価部４１０は、ソフトウェアライセンスが有効であるかどうかを判定するために、ソフトウェアライセンスを評価することに関連する動作を行う。いくつかの実施形態では、ライセンス評価部４１０は、ライセンスプログラム２２０がコンピューティングデバイス２１０によってインストールされるときに、ライセンス有効性インジケータを生成、受信及び／又は格納する。追加的又は代替的に、ライセンス評価部４１０は、コンピューティングデバイス２１０がライセンスプログラム２２０を使用するための要求を受信するときに、ライセンス有効性インジケータに基づいて、ソフトウェアライセンスが有効であるかどうかを判定する。ライセンス評価部４１０は、ライセンスが有効であるかどうかを示す有効性通知をライセンス実施部４２０に伝送してもよい。いくつかの実施形態では、ライセンス評価部４１０は、専用ハードウェア（例えば、専用セキュリティプロセッサの少なくとも一部）を含む。いくつかの実施形態では、ライセンス評価部４１０は、セキュア環境（例えば、ソフトウェア、ファームウェア等）で実行される命令（例えば、専用セキュリティプロセッサによって実行される命令、仮想セキュリティプロセッサによって実行される命令等）を含む。
【００４６】
ライセンス実施部４２０は、ソフトウェアライセンスの実施に関連する動作を行う。いくつかの実施形態では、ライセンス実施部４２０は、ライセンス評価部４１０から、ライセンスが有効であることを示す有効性通知を受信し得る。ライセンスが有効であることを有効性通知が示す場合には、ライセンス実施部４２０は、セキュアコード（例えば、コンピューティングデバイスによってセキュア環境にインストールされる）を実行し、又は、（例えば、セキュア環境に格納された解読アルゴリズムを用いて）セキュアコード及び／又は情報を解読する。実行及び／又は解読は、ライセンスプログラム２２０の本質的な機能がコンピューティングデバイス２１０によって行われることを可能にする。ライセンスが有効ではないことを有効性通知が示す場合には、ライセンス実施部４２０は、セキュアコードを実行せず、又は、セキュアコード及び／又は情報を解読しない。いくつかの実施形態では、ライセンス実施部４２０は、専用ハードウェア（例えば、専用セキュリティプロセッサの少なくとも一部）を含む。いくつかの実施形態では、ライセンス実施部４２０は、セキュア環境（例えば、ソフトウェア、ファームウェア等）で実行される命令（例えば、専用セキュリティプロセッサによって実行される命令、仮想セキュリティプロセッサによって実行される命令等）を含む。
【００４７】
図４に示された機能コンポーネントの数は例示する目的で提供される。実際には、機能コンポーネント４００は、付加的な機能コンポーネント、より少ない機能コンポーネント、異なる機能コンポーネント、又は、図４に示されたものとは異なるように配置された機能コンポーネントを含んでもよい。
【００４８】
図５は、ソフトウェアライセンスを評価及び実施するための例示的なプロセス５００のフロー図である。いくつかの実施形態では、図５の１つ以上のプロセスブロックは、コンピューティングデバイス２１０によって行われる。追加的又は代替的に、図５の１つ以上のプロセスブロックは、コンピューティングデバイス２１０とは別個の若しくはコンピューティングデバイス２１０を含む、別のデバイス又はデバイスのグループによって行われる。
【００４９】
図５に示すように、プロセス５００は、ライセンスプログラムのライセンス有効性インジケータを生成することを含む（ブロック５１０）。いくつかの実施形態では、ライセンスプログラム２２０がコンピューティングデバイス２１０によってインストールされる場合に、ライセンス有効性インジケータが生成される。ライセンス有効性インジケータは、ライセンスプログラム２２０がインストールされたとき及び／又はコンピューティングデバイス２１０上でのライセンスプログラム２２０のインストールを終えたとき、に決定されるセキュアキー及び／又はシステム時間を含んでもよい。
【００５０】
いくつかの実施形態では、コンピューティングデバイス２１０は、ライセンスプログラム２２０のインストールに基づいて、セキュアキーを生成する。コンピューティングデバイス２１０は、ライセンスプログラム２２０の使用を可能にするライセンスキーをユーザが購入したという指標に基づいて、セキュアキーを生成してもよい。コンピューティングデバイス２１０は、ライセンスキーと、コンピューティングデバイス２１０に関連するシステム識別子と、を用いてセキュアキーを生成する。いくつかの実施形態では、コンピューティングデバイス２１０は、セキュアキーを生成するために、キー生成アルゴリズムに従って、ライセンスキーとシステム識別子とを組み合わせる。コンピューティングデバイス２１０は、セキュアキーをセキュア環境２３０（例えば、ライセンス評価部４１０）に格納する。いくつかの実施形態では、コンピューティングデバイス２１０は、セキュアキーを、専用セキュリティプロセッサ及び／又は仮想セキュリティプロセッサに関連するセキュア環境に格納する。代替的に、コンピューティングデバイス２１０は、セキュアキーをセキュア環境２３０外（例えば、ストレージコンポーネント３５０のセキュアでないストレージ領域）に格納する。この実施形態では、コンピューティングデバイス２１０は、セキュアキーをセキュアとしてマークしてもよいし、専用セキュリティプロセッサ及び／又は仮想セキュリティプロセッサによるセキュアキーへのアクセスのみを可能にしてもよい。
【００５１】
ライセンスキーは、いくつかの実施形態では、ライセンスプログラム２２０（及び／又はライセンスプログラム２２０の機能の一部）へのアクセス及び／又はその使用を可能にする文字（例えば、英字、数字、記号等）の組み合わせを含む。システム識別子は、いくつかの実施形態では、コンピューティングデバイス２１０及び／又はコンピューティングデバイス２１０のコンポーネント（例えば、プロセッサのシリアルナンバー、マザーボードのシリアルナンバー、図２又は図３に記載されたコンポーネント等のコンピューティングデバイス２１０の別のコンポーネントのシリアルナンバー）を識別する、シリアルナンバー又は別のユニーク識別子などのコンピューティングデバイス２１０に関連するユニーク識別子を含む。いくつかの実施形態では、システム識別子は、コンピューティングデバイス２１０に関連する複数の識別子の組み合わせを含んでもよい。
【００５２】
いくつかの実施形態では、コンピューティングデバイス２１０は、ライセンスプログラム２２０がコンピューティングデバイス２１０にインストールされるときに決定されるシステム時間をセキュア環境２３０（例えば、ライセンス評価部４１０）に格納する。いくつかの実施形態では、コンピューティングデバイス２１０は、システム時間を専用セキュリティプロセッサ及び／又は仮想セキュリティプロセッサに関連するセキュア環境に格納する。代替的に、コンピューティングデバイス２１０は、システム時間をセキュア環境２３０の外部（例えば、ストレージコンポーネント３５０のセキュアでないストレージ領域）に格納する。この実施形態では、コンピューティングデバイス２１０は、システム時間をセキュアとしてマークしてもよく、専用セキュリティプロセッサ及び／又は仮想セキュリティプロセッサによるシステム時間へのアクセスのみを可能にしてもよい。コンピューティングデバイス２１０は、特定の時間量（例えば、３０日間の試用期間）が経過した後にライセンスプログラム２２０の使用のライセンス期限が切れたという指標の受信に基づいて、システム時間を格納してもよい。
【００５３】
図５にさらに示されるように、プロセス５００は、ライセンスプログラムを使用するための要求を受信すること（ブロック５２０）と、比較インジケータを決定すること（ブロック５３０）と、ライセンス有効性インジケータ及び比較インジケータに基づいて、ライセンスプログラムのライセンスが有効であるかどうかを判定すること（ブロック５４０）と、を含む。いくつかの実施形態では、コンピューティングデバイス２１０は、コンピューティングデバイス２１０のユーザから要求を受信する。例えば、ユーザは、コンピューティングデバイス２１０の入力コンポーネントを介して、ライセンスプログラム２２０及び／又はライセンスプログラム２２０の特定の機能の実行の要望を示してもよい。また、コンピューティングデバイス２１０は、比較インジケータを決定し、比較インジケータをライセンス有効性インジケータと比較することによって、ライセンスプログラム２２０のライセンスが有効であるかどうかを判定する。コンピューティングデバイス２１０は、ライセンスプログラム２２０を使用するための要求と共に比較インジケータを受信してもよいし、要求の受信に基づいて比較インジケータを取得及び／又は生成してもよい。
【００５４】
いくつかの実施形態では、ライセンス有効性インジケータがセキュアキーである場合には、比較インジケータは比較キーである。いくつかの実施形態では、コンピューティングデバイス２１０は、比較キーを（例えば、ユーザ及び／又はメモリから）受信及び／又は取得する。いくつかの実施形態では、コンピューティングデバイス２１０は、比較ライセンスキーを（例えば、ユーザ及び／又はメモリから）受信し、キー生成アルゴリズムを用いて比較ライセンスキーとシステム識別子とを組み合わせることによって、比較キーを生成する。コンピューティングデバイス２１０は、比較キーをセキュアキーと比較することに基づいて、ライセンスが有効であるかどうかを判定する。比較キーがセキュアキーと一致する場合には、コンピューティングデバイス２１０は、ライセンスが有効であると判定する。比較キーがセキュアキーと一致しない場合には、コンピューティングデバイス２１０は、ライセンスが有効ではないと判定する。
【００５５】
いくつかの実施形態では、ライセンス有効性インジケータが、ライセンスプログラム２２０がコンピューティングデバイス２１０にインストールされるときに決定されるシステム時間（インストール時のシステム時間）である場合には、比較インジケータは、ライセンスプログラム２２０を使用するための要求が受信されるときに決定される比較システム時間（要求時のシステム時間）である。コンピューティングデバイス２１０は、インストール時のシステム時間を要求したときのシステム時間と比較することによって、ライセンスが有効であるかどうかを判定する。インストール時のシステム時間と要求時のシステム時間との間の時間差が閾値を下回る（例えば、３０日の試用期間等の試用期間閾値を下回る）場合には、コンピューティングデバイス２１０は、ライセンスが有効であると判定する。インストール時のシステム時間と要求時のシステム時間との間の時間差が閾値を上回る場合には、コンピューティングデバイス２１０は、ライセンスが有効ではないと判定する。いくつかの実施形態では、コンピューティングデバイス２１０は、（例えば、インストール中に）ライセンスプログラム２２０から閾値期間（例えば試用期間）を判定する。
【００５６】
ライセンスが有効であるとコンピューティングデバイス２１０が判定する（ブロック５４０：はい）場合には、プロセス５００は、セキュア環境に格納されたセキュアコードの実行を可能にすること（ブロック５５０）を含む。いくつかの実施形態では、セキュアコードは、ライセンスプログラム２２０を実行するのに用いられるプログラムコードの一部である。コンピューティングデバイス２１０がライセンスプログラム２２０をインストールするときに、ライセンスプログラム２２０のプログラムコードの一部がセキュア環境２３０にインストールされてもよい。代替的に、コンピューティングデバイス２１０は、プログラムコードの一部をセキュア環境２３０の外部（例えば、ストレージコンポーネント３５０のセキュアでないストレージ領域）にインストールしてもよい。この実施形態では、コンピューティングデバイス２１０は、インストールされた部分をセキュアとしてマークしてもよく、専用セキュリティプロセッサ及び／又は仮想セキュリティプロセッサによるインストールされた部分へのアクセス及び／又はその実行のみを可能にしてもよい。セキュア環境２３０にインストールされたコードの一部は、ライセンスが有効でなければ本質的な機能を行うことができないようにライセンスプログラム２２０の本質的な機能を果たす。例えば、本質的な機能は、大量のデータを生じるアルゴリズム、アーカイブファイルに格納されるファイルに関する情報を判定するためにアーカイブファイルのヘッダを構文解析するアルゴリズム等であってもよい。ライセンスが有効であるとコンピューティングデバイス２１０が判定した場合には、セキュア環境２３０に格納されたコードの一部が（例えば、ライセンス実施部４２０によって）実行され又は実行可能にされる。
【００５７】
例として、ファイルを圧縮及びアーカイブするソフトウェアプログラムは、プログラムコードをセキュア環境２３０にインストールしてもよい。プログラムコードは、セキュア環境２３０内でアーカイブされたファイルのヘッダを構文解析してもよく、構文解析されたヘッダに基づいて、アーカイブされたファイルに含まれるファイルに関する情報に関係するソフトウェアプログラムに情報を送り返してもよい。
【００５８】
別の例として、イメージ及び／又はビデオを編集するのに用いられるソフトウェアプログラムは、大量の情報を生じるフォト／ビデオ編集アルゴリズムを行うプログラムコードをセキュア環境２３０にインストールしてもよい。セキュア環境２３０は、情報を生成し、当該情報を、フォト／ビデオを編集するソフトウェアプログラムに送信する。セキュア環境２３０での大量の情報の生成は、単純なハックがセキュア環境２３０の実施機構を免れることが確実にできないようにする。さらに、セキュア環境２３０でのソフトウェア機能の実行は、ソフトウェアプログラムに組み込まれる機密情報の機密性の改善を可能にする。
【００５９】
いくつかの実施形態では、セキュアコードは、セキュア環境２３０に格納される解読アルゴリズム（例えば、共有秘密キーペア、公開キーペア、秘密キーペア等）である。コンピューティングデバイス２１０がライセンスプログラム２２０をインストールするときに、ライセンスプログラム２２０を用いるのに必要とされるライセンスプログラム２２０のプログラムコードの一部及び／又は情報が暗号化される。ライセンスが有効であるとコンピューティングデバイス２１０が判定するときに、セキュア環境２３０に格納される（又は他の方法で実行される）解読アルゴリズムによって（例えば、ライセンス実施部４２０によって）暗号化されたコード及び／又は情報が、解読され又は解読可能にされる。
【００６０】
ライセンスが有効ではないとコンピューティングデバイス２１０が判定した（ブロック５４０：いいえ）場合には、プロセス５００は、セキュア環境に格納されたセキュアコードの実行を抑制すること（ブロック５６０）を含む。いくつかの実施形態では、ライセンスが有効ではないとコンピューティングデバイス２１０が判定したときには、ライセンス実施部４２０は、コンピューティングデバイス２１０がセキュア環境２３０に格納されたコードの一部を実行するのを抑制する。いくつかの実施形態では、ライセンスが有効ではないとコンピューティングデバイス２１０が判定したときには、ライセンス実施部４２０は、コンピューティングデバイス２１０が、セキュア環境２３０に格納された解読アルゴリズムを用いてコード及び／又は情報を解読するのを抑制する。
【００６１】
一連のブロックが図５に関連して説明されているが、ブロック及び／又はブロックの順序は、いくつかの実施形態においては変更される場合がある。追加的又は代替的に、依存性のないブロックが並行して行われる場合がある。
【００６２】
図６は、図５に示された例示的なプロセスに関係する例示的な実施形態６００を示す図である。図６は、ソフトウェアライセンスが有効であるかどうかを判定するために、ライセンス評価部４１０が、セキュアキー及び比較キーを用いてソフトウェアライセンスを評価する、例示的な実施形態６００を示す図である。
【００６３】
符号６１０によって示されるように、例示的な実施形態６００は、コンピューティングデバイス２１０のライセンスプログラム２２０の使用及び／又はインストールを可能にするライセンスキーを受信することを含む。符号６２０によって示されるように、コンピューティングデバイス２１０は、セキュアキーを生成するために、ライセンスキーをシステム識別子（例えば、プロセッサ３２０等のコンピューティングデバイス２１０のコンポーネントのシリアルナンバー又は他のデバイス識別子）と組み合わせる。コンピューティングデバイス２１０は、ライセンスキーとシステム識別子とを組み合わせるためにキー生成アルゴリズムを適用することによって、セキュアキーを生成する。例えば、「１Ａ２Ｂ３Ｃ」のセキュアキーを生成するために、「１２３」のライセンスキーと「ＡＢＣ」のシステム識別子とが組み合わされてもよい。セキュアキーは、セキュア環境２３０（例えば、ライセンス評価部４１０）に格納される。
【００６４】
符号６３０によって示されるように、コンピューティングデバイス２１０は、ライセンスプログラム２２０を使用するための要求を受信する。要求は、ライセンスプログラム２２０を実行する（例えば、走らせる）ための要求、及び／又は、ライセンスプログラム２２０の特定の機能を実行するための要求を含んでもよい。いくつかの実施形態では、要求は、コンピューティングデバイス２１０のユーザによって生成される。いくつかの実施形態では、要求は、デバイス及び／又はデバイスのコンポーネント（例えば、コンピューティングデバイス２１０及び／又は別のデバイス上で実行されるアプリケーション）によって生成される。
【００６５】
符号６４０によって示されるように、コンピューティングデバイス２１０は、比較キーを決定する。例えば、コンピューティングデバイス２１０は、要求の受信に基づいて、比較キーを受信、取得及び／又は生成してもよい。いくつかの実施形態では、コンピューティングデバイス２１０は、（例えば、ユーザ、ライセンスプログラム２２０及び／又はメモリからの）ライセンスプログラム２２０を使用するための要求に基づいて、比較ライセンスキーを受信する。コンピューティングデバイス２１０は、比較ライセンスキー及びシステム識別子にキー生成アルゴリズムを適用することによって、比較キーを生成する。
【００６６】
符号６５０によって示されるように、コンピューティングデバイス２１０は、ライセンスプログラム２２０のライセンスが有効であるかどうかを判定するために、比較キーとセキュアキーとを比較する。コンピューティングデバイス２１０（例えば、ライセンス評価部４１０）は、符号６６０によって示されるように、比較に基づいて有効性通知を生成する。有効性通知は、ライセンスの有効又は無効を示し、ライセンス実施部４２０に伝送されてもよい。例えば、比較キー及びセキュアキーの両方が「１Ａ２Ｂ３Ｃ」である場合には、有効性通知はライセンスが有効であることを示す。
【００６７】
図７は、図５に示された例示的なプロセスに関係する例示的な実施形態７００を示す図である。図７は、ソフトウェアライセンスが有効であるかどうかを判定するために、ライセンス評価部４１０が、インストール時のシステム時間と要求時のシステム時間とを用いてソフトウェアライセンスを評価する、例示的な実施形態７００を示す図である。
【００６８】
符号７１０によって示されるように、例示的な実施形態７００は、ライセンスプログラム２２０をコンピューティングデバイス２１０にインストールすることを含む。符号７２０によって示されるように、ライセンスプログラム２２０がコンピューティングデバイス２１０にインストールされるときに決定されるシステム時間が、セキュア環境２３０（例えば、ライセンス評価部４１０）に格納される。例えば、ライセンスプログラム２２０がインストールされるときのシステム時間が、２０１２年１０月１日の午前９：００の場合を想定する。ライセンスプログラム２２０がインストールされるときには、コンピューティングデバイス２１０は、ライセンスプログラム２２０を用いるためのライセンスが有効である間の閾値時間値（例えば、３０日間又は２０１２年１０月３１日の午前９：００まで）を受信してもよい。
【００６９】
符号７３０によって示されるように、コンピューティングデバイス２１０は、図６に関連して上述したように、ライセンスプログラム２２０を使用するための要求を受信する。符号７４０によって示されるように、コンピューティングデバイス２１０は、ライセンスプログラム２２０を使用するための要求が受信されるときに決定されるシステム時間を判断する。符号７５０によって示されるように、コンピューティングデバイス２１０は、要求時のシステム時間とインストール時のシステム時間（例えば、セキュア環境２３０に格納されている）とを比較する。
【００７０】
コンピューティングデバイス２１０（例えば、ライセンス評価部４１０）は、要求時のシステム時間とインストール時のシステム時間との差が閾値を満たすかどうかを判定し、符号７６０によって示されるように、閾値（例えば、インストール中に受信した閾値時間値）を満たす差に基づいて有効性通知を生成する。例えば、差が閾値を下回る場合（例えば、要求時のシステム時間が３０日の試用期間に関して２０１２年１０月３１日の午前９：００前である場合）には、有効性通知は、ライセンスが有効であることを示す。差が閾値を上回るか閾値に等しい場合（例えば、要求時のシステム時間が２０１２年１０月３１日の午前９：００であるか又はその後である場合）には、有効性通知は、ライセンスが無効であることを示す。ライセンス評価部４１０は、有効性通知をライセンス実施部４２０に伝送してもよい。
【００７１】
図８は、図５に示された例示的なプロセスに関係する例示的な実施形態８００を示す図である。図８は、ライセンス実施部４２０が、有効性通知に基づいてライセンスプログラム２２０のコードの一部の実行を可能にする又は抑制する、例示的な実施形態８００を示す図である。
【００７２】
符号８１０によって示されるように、コンピューティングデバイス２１０は、ライセンスプログラム２２０のプログラムコードの一部をセキュア環境２３０（例えば、ライセンス実施部４２０）にインストールする。いくつかの実施形態では、コードの一部は、ライセンスプログラム２２０の本質的な機能を実行する。図８にさらに示されるように、ライセンス実施部４２０は、（例えば、ライセンス評価部４１０から）有効性通知６６０／７６０を受信する。
【００７３】
符号８２０によって示されるように、ライセンス実施部４２０は、ライセンスプログラム２２０のライセンスが有効であることを有効性通知が示す場合には、コードのインストールされた部分を実行する。符号８３０によって示されるように、ライセンス実施部４２０は、ライセンスプログラム２２０のライセンスが無効であることを有効性通知が示す場合には、コードのインストールされた部分を実行しない。
【００７４】
図９は、図５に示された例示的なプロセスに関係する例示的な実施形態９００を示す図である。図９は、ライセンス実施部４２０が、有効性通知に基づいて解読アルゴリズムの実行を可能にする又は抑制する、例示的な実施形態９００を示す図である。
【００７５】
符号９１０によって示されるように、ライセンス実施部４２０は、コンピューティングデバイス２１０から、ライセンスプログラム２２０を用いるのに必要とされる暗号化されたプログラムコード及び／又は暗号化された情報を受信する。いくつかの実施形態では、コンピューティングデバイス２１０は、ライセンスプログラム２２０を使用するためのユーザ要求に基づいて、暗号化されたコード／情報をライセンス実施部４２０に送信する。図９にさらに示されるように、ライセンス実施部４２０は、（例えば、ライセンス評価部４１０から）有効性通知６６０／７６０を受信する。
【００７６】
符号９２０によって示されるように、ライセンス実施部４２０は、ライセンスプログラム２２０のライセンスが有効であることを有効性通知が示す場合には、解読アルゴリズムを用いて、暗号化されたコード／情報を解読する。符号９３０によって示されるように、ライセンス実施部４２０は、ライセンスプログラム２２０のライセンスが無効であることを有効性通知が示す場合には、暗号化されたコード／情報を解読しない。いくつかの実施形態では、ライセンスプログラム２２０がコンピューティングデバイス２１０にインストールされるときに、コンピューティングデバイス２１０は、解読アルゴリズムをライセンス実施部４２０に送信し、ライセンス実施部４２０は、解読アルゴリズムを格納する。
【００７７】
本明細書で説明された実施形態は、ソフトウェアライセンスの評価、検証及び実施を改善するために、セキュア環境を用いたファームウェアで実施される使用許諾技術を提供する。例えば、ファームウェアで実施される使用許諾技術は、高レベルのセキュリティを提供し、容易に免れられず、付加的なハードウェアを必要とせず、インターネット接続を必要としない。
【００７８】
上記の開示は、図示及び説明を提供するが、網羅的なものとなること又は実施形態を開示された正確な形態に限定することを意図しない。修正及び変形は、上記の開示を参照することによって可能であり、又は、実施形態の実施から得られ得る。
【００７９】
本明細書で用いられる場合、「コンポーネント」という用語は、ハードウェア、ファームウェア、又は、ハードウェアとソフトウェアとの組み合わせとして広く解釈されることを意図する。
【００８０】
いくつかの実施形態が閾値と併せて本明細書で説明される。値と閾値との関係性を説明するために、本明細書で用いられる場合における「上回る」という用語（又は類似の用語）は、「上回るか又はこれに等しい」という用語（又は類似の用語）と交換可能に用いられ得る。同様に、値と閾値との関係性を説明するために、本明細書で用いられる場合における「下回る」という用語（又は類似の用語）は、「下回るか又はこれに等しい」という用語（又は類似の用語）と交換可能に用いられ得る。本明細書で用いられる場合における閾値を「満たす」（又は類似の用語）とは、「閾値を上回る」、「閾値を上回るか又はこれに等しい」、「閾値を下回る」、「閾値を下回るか又はこれに等しい」、又は、他の類似の用語と交換可能に用いられ得る。
【００８１】
本明細書で説明される場合のシステム及び／又は方法は、図面に示された実施形態においてソフトウェア、ファームウェア及びハードウェアの多くの異なる形態で実装され得ることが明白であろう。これらのシステム及び／又は方法を実装するのに用いられる実際のソフトウェアコード又は特化された制御ハードウェアは、実施形態を制限するものではない。したがって、システム及び／又は方法の動作並びに挙動が特定のソフトウェアコードへの言及なしに説明されており、ソフトウェア及び制御ハードウェアを、本明細書での説明に基づくシステム及び／又は方法を実装するように設計することができると理解される。
【００８２】
特徴の特定の組み合わせが請求項で列挙され、及び／又は、本明細書で開示されるにもかかわらず、これらの組み合わせは、可能な実施形態の開示を限定することを意図しない。実際には、これらの特徴の多くは、請求項で具体的に列挙されない、及び／又は、本明細書で開示されない方法で組み合わされてもよい。以下に挙げられる各従属請求項は、１つの請求項にのみ直接従属し得るが、可能な実施形態の開示は、請求項の組における全ての他の請求項と組み合わせた各従属請求項を含む。
【００８３】
本明細書で用いられる要素、行為又は命令は、明示的に記載されない限り、重要又は本質的なものであると解釈されるべきではない。また、本明細書で用いられる場合における冠詞「ａ」及び「ａｎ」は、１つ以上のアイテムを含むことを意図し、「１つ以上の」という用語と交換可能に用いられ得る。１つだけのアイテムを意図する場合には、「１つの」という用語又は類似の言葉が用いられる。さらに、「に基づいて」という文言は、他に明示的に表記されない限り、「に少なくとも部分的に基づいて」ということを意味していることを意図する。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサが、ソフトウェアプログラムを使用するための要求を受信することと、
前記プロセッサが、前記要求を受信したことに基づいて、比較インジケータを決定することと、
前記プロセッサが、セキュア環境に格納されたライセンス有効性インジケータと、前記比較インジケータとに基づいて、前記ソフトウェアプログラムのライセンスが有効であるかどうかを判定することと、
前記プロセッサが、前記ライセンスが有効と判定された場合に、前記セキュア環境に格納されたセキュアコードの実行を可能にすることと、
前記プロセッサが、前記ライセンスが無効と判定された場合に、前記セキュア環境に格納された前記セキュアコードの実行を抑制することと、
を含む、方法。
【請求項２】
前記ライセンス有効性インジケータは、キー生成アルゴリズムを、
前記ソフトウェアプログラムにアクセスするのに用いられるライセンスキーと、
前記ソフトウェアプログラムを実行するのに用いられるデバイスのうち少なくとも１つのコンポーネントを識別するシステム識別子と、
に適用することによって生成されるセキュアキーを含む、
請求項１に記載の方法。
【請求項３】
前記比較インジケータは、前記キー生成アルゴリズムを、
比較ライセンスキーと、
前記システム識別子と、
に適用することによって生成される比較キーを含み、
前記ライセンスが有効であるかどうかを判定することは、前記比較キーが前記セキュアキーと一致するかどうかを判定することによって、前記ライセンスが有効であるかどうかを判定すること、をさらに含む、
請求項２に記載の方法。
【請求項４】
前記ライセンス有効性インジケータは、前記ソフトウェアプログラムがコンピューティングデバイスにインストールされるときに決定される第１のシステム時間を示す、
請求項１に記載の方法。
【請求項５】
前記比較インジケータは、前記ソフトウェアプログラムを使用するための要求が前記コンピューティングデバイスによって受信されるときに決定される第２のシステム時間を示し、
前記ライセンスが有効であるかどうかを判定することは、前記第１のシステム時間と前記第２のシステム時間との間の時間差が閾値を満たすかどうかを判定することによって、前記ライセンスが有効であるかどうかを判定することをさらに含む、
請求項４に記載の方法。
【請求項６】
前記セキュアコードは、前記ソフトウェアプログラムを実行するのに用いられるプログラムコードの一部を含む、
請求項１に記載の方法。
【請求項７】
前記セキュアコードは、プログラムコードを解読するのに用いられる解読アルゴリズム、又は、前記ソフトウェアプログラムを実行するのに用いられる情報を含む、
請求項１に記載の方法。
【請求項８】
ソフトウェアプログラムを使用するための要求を受信し、
前記要求の受信に基づいて比較インジケータを決定し、
セキュア環境に格納されたライセンス有効性インジケータと、前記比較インジケータとに基づいて、前記ソフトウェアプログラムのライセンスが有効であるかどうかを判定し、
前記ライセンスが有効と判定された場合に、前記セキュア環境に格納されたセキュアコードの実行を可能にし、
前記ライセンスが有効ではないと判定された場合に、前記セキュア環境に格納されたセキュアコードの実行を抑制する、
ための１つ以上のプロセッサを備える、デバイス。
【請求項９】
前記ライセンス有効性インジケータは、キー生成アルゴリズムを、
前記ソフトウェアプログラムにアクセスするのに用いられるライセンスキーと、
前記ソフトウェアプログラムを実行するのに用いられるデバイスのうち少なくとも１つのコンポーネントを識別するシステム識別子と、
に適用することによって生成されるセキュアキーを含む、
請求項８に記載のデバイス。
【請求項１０】
前記比較インジケータは、前記キー生成アルゴリズムを、
比較ライセンスキーと、
前記システム識別子と、
に適用することによって生成される比較キーを含み、
前記１つ以上のプロセッサは、前記ライセンスが有効であるかどうかを判定するときに、前記比較キーが前記セキュアキーと一致するかどうかを判定することによって、前記ライセンスが有効であるかどうかを判定する、
請求項９に記載のデバイス。
【請求項１１】
前記ライセンス有効性インジケータは、前記ソフトウェアプログラムがコンピューティングデバイスにインストールされるときに決定される第１のシステム時間を示す、
請求項８に記載のデバイス。
【請求項１２】
前記比較インジケータは、前記ソフトウェアプログラムを使用するための要求が前記コンピューティングデバイスによって受信されるときに決定される第２のシステム時間を示し、
前記１つ以上のプロセッサは、前記ライセンスが有効であるかどうかを判定するときに、前記第１のシステム時間と前記第２のシステム時間との間の時間差が閾値を満たすかどうかを判定することによって、前記ライセンスが有効であるかどうかを判定する、
請求項１１に記載のデバイス。
【請求項１３】
前記セキュアコードは、前記ソフトウェアプログラムを実行するのに用いられるプログラムコードの一部を含む、
請求項８に記載のデバイス。
【請求項１４】
前記セキュアコードは、プログラムコードを解読するのに用いられる解読アルゴリズム、又は、前記ソフトウェアプログラムを実行するのに用いられる情報を含む、
請求項８に記載のデバイス。
【国際調査報告】
2015535113.tif 000013
2015535113.tif 000014