(57)【要約】  フラッシュ記憶装置、およびソフトウェア・アプリケーションの不正使用を防止するためにフラッシュ記憶装置を使用する方法を提供する。フラッシュ記憶装置の特定セクター内には、識別子をエンコードすることができる。識別子の内ビット１を、特定セクターの内使用不可能のものとしてエンコードすることができ、識別子の内ビット０を、特定セクターの内使用可能なものとしてエンコードすることができる。あるいは、識別子の内ビット０を、特定セクターの内使用不可能な者としてエンコードすることもでき、識別子の内ビット１を、特定セクターの内使用可能なものとしてエンコードすることもできる。識別子がフラッシュ記憶装置内にエンコードされているときにのみ、フラッシュ記憶装置に接続されている処理装置上において、ソフトウェア・アプリケーションを実行することを許可することができる。【選択図】      図５
2010538364.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの不正使用を防止するためにフラッシュ記憶装置を用いる機械実装方法であって、
前記ソフトウェアの使用に関するライセンス情報にアクセスするステップであって、前記ライセンス情報が識別子を含む、ステップ（５０２、５１０）と、
前記フラッシュ記憶装置の特定記憶セクターにアクセスして、前記特定セクターの内使用不可能なものによって１ビットが表され、前記特定セクターの内使用可能なものによって０ビットが表されるように、または前記特定セクターの内使用不可能なものによって０ビットが表され、前記特定セクターの内使用可能なものによって１ビットが表されるように、前記識別子がその中にエンコードされているか否か判断するステップ（４０２、５１２）と、
前記フラッシュ記憶装置の前記特定セクター内に前記識別子がエンコードされていない場合、前記ソフトウェアの使用を禁止するステップ（５０８）と、
を備えている、機械実装方法。    
【請求項２】
請求項１記載の機械実装方法において、
前記ライセンス情報は、信頼のおける情報源によってディジタル的に署名されており、
前記方法は、更に、
前記ライセンス情報が、前記信頼のおける情報源の有効なディジタル署名を含むか否か判断するステップと、
前記ライセンス情報が、前記信頼のおける情報源の有効なディジタル署名を含んでいない場合、前記ソフトウェアの使用を禁止するステップと、
を備えている、機械実装方法。
【請求項３】
請求項１記載の機械実装方法であって、更に、
前記フラッシュ記憶装置の前記特定記憶セクターにアクセスして、前記識別子に関する有効なディジタル署名がその中にエンコードされているか否か判断するステップと、
前記識別子に関する前記有効なディジタル署名が、前記フラッシュ記憶装置の前記特定セクター内にエンコードされていない場合、前記ソフトウェアの使用を禁止するステップと、
を備えている、機械実装方法。
【請求項４】
請求項１記載の機械実装方法において、前記ライセンス情報は前記フラッシュ記憶装置内に格納されている、機械実装方法。
【請求項５】
請求項１記載の機械実装方法において、前記ライセンス情報は、処理装置のコンポーネントの中に格納されており、前記処理装置には前記フラッシュ記憶装置が接続されている、機械実装方法。
【請求項６】
請求項１記載の機械実装方法において、
前記ライセンス情報は、前記ソフトウェアの所定の使用回数を含み、前記機械実装方法は、更に、
前記フラッシュ記憶装置の少なくとも１つのセクターに対して複数回の書き込みを実行することによって、前記ソフトウェアの各使用を計数し、前記ソフトウェアの所定回数の使用を計数した後、前記少なくとも１つのセクターを使用不可能にするステップと、
前記少なくとも１つのセクターが使用不可能か否か判断するステップと、
前記少なくとも１つのセクターが使用不可能であると判断した場合、前記ソフトウェアの使用を禁止するステップと、
を備えている、機械実装方法。
【請求項７】
請求項１記載の機械実装方法において、
前記ライセンス情報は期限日を含み、
前記機械実装方法は、更に、
前記フラッシュ記憶装置の複数のセクターの内それぞれの１つに対して複数回の書き込みを実行することによって、複数の時間期間の各々の経過を計時して、前記複数のセクターの内それぞれの１つを使用不可能にするステップと、
前記複数のセクターの内使用不可能となったそれぞれのセクターの数を判定するステップと、
前記複数のセクターの内前記判定した使用不可能なものの数が、前記期限日の経過を示す場合、前記ソフトウェアの使用を禁止するステップと、
を備えている、機械実装方法。
【請求項８】
請求項１記載の機械実装方法であって、更に、
処理装置上における前記ソフトウェアの活性化の間に、前記フラッシュ記憶装置の前記特定記憶セクターに前記識別子をエンコードするステップを備えている、機械実装方法。
【請求項９】
ソフトウェア・アプリケーションの機能を制限またはディスエーブルするためにフラッシュ記憶装置を使用する機械実装方法であって、
前記ソフトウェア・アプリケーションの使用に関するライセンス情報にアクセスするステップであって、前記ライセンス情報が、前記フラッシュ記憶装置上、または前記フラッシュ記憶装置が接続されている処理装置のコンポーネント上の一方に位置し、前記ライセンス情報が識別子を含む、ステップ（５０２）と、
前記ライセンス情報の有効性を判断するステップ（５０４）と、
前記フラッシュ記憶装置の特定記憶セクターにアクセスして、前記特定セクターの内使用不可能なものによって１ビットが表され、前記特定セクターの内使用可能なものによって０ビットが表されるように、または前記特定セクターの内使用不可能なものによって０ビットが表され、前記特定セクターの内使用可能なものによって１ビットが表されるように、前記識別子がその中にエンコードされているか否か判断するステップ（４０２、５１０、５１２）と、
前記フラッシュ記憶装置の前記特定セクター内に前記識別子がエンコードされていない場合、前記ソフトウェア・アプリケーションの機能を制限またはディスエーブルするステップ（５０８）と、
を備えている、機械実装方法。
【請求項１０】
請求項９記載の機械実装方法であって、更に、
第１の所定使用回数の間、前記ソフトウェア・アプリケーションを全機能で実行することを許可するステップを備えている、機械実装方法。
【請求項１１】
請求項９記載の機械実装方法において、
前記識別子は、多数の要素を含み、
前記機械実装方法は、特定の時間周期で、前記識別子の複数の要素の各々を公開するステップを備えている、機械実装方法。
【請求項１２】
請求項９記載の機械実装方法において、
前記ソフトウェア・アプリケーションの機能が制限されているとき、前記ソフトウェア・アプリケーションの標準的機能をイネーブルし、
前記ソフトウェア・アプリケーションの機能がディスエーブルされておらず、かつ制限されてない場合、前記ソフトウェア・アプリケーションの拡張機能をイネーブルする、機械実装方法。
【請求項１３】
請求項９記載の機械実装方法において、前記ソフトウェア・アプリケーションは、前記フラッシュ記憶装置上に格納されている、機械実装方法。
【請求項１４】
請求項９記載の機械実装方法であって、更に、
前記ソフトウェアの活性化の間に、前記フラッシュ記憶装置の前記特定記憶セクターに、前記識別子と当該識別子のディジタル署名とをエンコードするステップを備えている、機械実装方法。
【請求項１５】
請求項９記載の機械実装方法であって、更に、
前記フラッシュ記憶装置の少なくとも１つのセクターの内それぞれの１つに対して複数回の書き込みを実行することによって、複数の時間期間の各々の経過を計時して、前記少なくとも１つのセクターの内それぞれの１つを使用不可能にするステップと、
前記複少なくとも１つのセクターの内使用不可能なセクターの数が、前記ライセンス情報によって示される期限日の経過を示す場合、前記ソフトウェア・アプリケーションの使用を制限またはディスエーブルするステップと、
を備えている、機械実装方法。
【請求項１６】
ソフトウェア・アプリケーションの機能を制限する、前記ソフトウェア・アプリケーションの機能をディスエーブルする、または前記ソフトウェア・アプリケーションの全機能をイネーブルするためのフラッシュ記憶装置（１０４）であって、前記ソフトウェア・アプリケーションは、前記フラッシュ記憶装置が接続されている処理装置上において実行され、前記フラッシュ記憶装置は、
前記ソフトウェア・アプリケーションに関して当該フラッシュ記憶装置上に格納されているライセンス情報であって、識別子を含む、ライセンス情報（３０４、４０２、１４１４）と、
前記ライセンス情報に含まれる前記識別子に対応するエンコード済み識別子であって、前記フラッシュ記憶装置の前記特定セクターの内使用不可能なものによって前記エンコードされている識別子の１ビットが表され、前記フラッシュ記憶装置の前記特定セクターの内使用可能なものによって前記エンコードされている識別子の０ビットが表されるように、または前記フラッシュ記憶装置の前記特定セクターの内使用不可能なものによって前記エンコードされている識別子の０ビットが表され、前記フラッシュ記憶装置の前記特定セクターの内使用可能なものによって前記エンコードされている識別子の１ビットが表されるように前記フラッシュ記憶装置内にエンコードされており、前記エンコード済み識別子が前記ライセンス情報に含まれる識別子と一致するときにのみ、前記ソフトウェア・アプリケーションの全機能をイネーブルする、エンコード済み識別子（３０６、１４１２、５１２、６１４）と、
を備えている、フラッシュ記憶装置。
【請求項１７】
請求項１６記載のフラッシュ記憶装置であって、更に、
前記識別子に対して計算され、前記フラッシュ記憶装置の特定セクター内にエンコードされている、信頼のおける情報源のディジタル署名を備えており、前記エンコードされているディジタル署名が、前記信頼のおける情報源からのものであると判断されたときのみ、前記ソフトウェア・アプリケーションの全機能をイネーブルする、フラッシュ記憶装置。
【請求項１８】
請求項１６記載のフラッシュ記憶装置において、
前記ライセンス情報は、前記ソフトウェア・アプリケーションの使用許可回数に関する情報を含み、
前記フラッシュ記憶装置の少なくとも１つのセクターの内使用不可能なものは、前記使用許可回数が過ぎたか否かを示す、フラッシュ記憶装置。
【請求項１９】
請求項１６記載のフラッシュ記憶装置であって、更に、
当該フラッシュ記憶装置内に格納されている前記ソフトウェア・アプリケーションを備えている、フラッシュ記憶装置。
【請求項２０】
請求項１６記載のフラッシュ記憶装置において、
前記ライセンス情報は、前記ソフトウェア・アプリケーションの使用についてのライセンス期限日に関する情報を含み、
前記フラッシュ記憶装置の少なくとも１つのセクターの内使用不可能なものは、前記期限日を過ぎたか否を示す、フラッシュ記憶装置。
【発明の詳細な説明】
【背景技術】
【０００１】
処理装置上におけるソフトウェアの不正使用を防止する従来の方法の１つでは、例えば、ユニバーサル・シリアル・バス（ＵＳＢ）ドングルまたはメモリー・キーのような、特殊デバイスをその処理装置に接続する必要がある。ソフトウェアは、この特殊デバイスを処理装置に接続したときでないとその処理装置上で実行することを許可しないようにすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
通例、このような特殊デバイスは、少数の業者(vendor)によって製造され、比較的コストが高く、ソフトウェアと共に配布しなければならない。更に、このような特殊デバイスをソフトウェアの不正使用を防止するために用いるのは、電子的に配布されるソフトウェアに関しては問題となる。
【課題を解決するための手段】
【０００３】
この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために用いることも意図していない。
【０００４】
本開示の主題に係る実施形態では、ソフトウェアの不正使用を防止するためのフラッシュ記憶装置、およびソフトウェアの不正使用を防止するためにフラッシュ記憶装置を用いる方法を提供する。フラッシュ記憶装置が接続されている処理装置上でソフトウェアを実行しようとすると、処理装置はライセンス情報にアクセスすることができる。ライセンス情報は、識別子を含むことができる。次いで、フラッシュ記憶装置の特定セクターにアクセスして、識別子がその中にエンコードされているか否か判断することができる。識別子の内ビット１を、特定セクターの内使用不可能のものとしてエンコードすることができ、識別子の内ビット０を、特定セクターの内使用可能なものとしてエンコードすることができる。あるいは、識別子の内ビット０を、特定セクターの内使用不可能な者としてエンコードすることもでき、識別子の内ビット１を、特定セクターの内使用可能なものとしてエンコードすることもできる。識別子がフラッシュ記憶装置内にエンコードされていると判断されたときにのみ、ソフトウェア・アプリケーションを全機能で実行することを処理装置に許可することができる。そうでなければ、処理装置は、ソフトウェアを実行することを許可されないか、または機能を制限してソフトウェアを実行することができる。
【０００５】
本開示の主題にかかる実施形態によっては、例えば、ソフトウェアの所定の認可使用回数、またはソフトウェアの期限日、およびその他のライセンス条件というような、ライセンス条件を超過していないか否か判断するために、フラッシュ記憶装置内にカウンターをエンコードすることもできる。
【図面の簡単な説明】
【０００６】
以上に明記した利点および特徴、ならびにその他の利点および特徴を得ることができる態様を説明するために、更に特定した説明を以下に記載し、添付図面に示すその具体的な実施形態を参照しながら説明を行う。これらの図面は典型的な実施形態のみを図示するのであり、したがってその範囲を限定するように解釈してはならないことを理解した上で、これらの添付図面を用いることによって、更に特殊性および詳細を加えて、実施態様について記載し説明する。
【図１】図１は、本開示の主題に係る実施形態に合った動作環境の一例を示す。
【図２】図２は、図１に示すサーバーまたは処理装置を実現するために用いることができる、処理装置の機能ブロック図である。
【図３】図３は、本開示の主題に係るフラッシュ記憶装置に含むことができる情報を示す。
【図４】図４は、本開示の主題に係るフラッシュ記憶装置に含むことができる情報を示す。
【図５】図５は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図６】図６は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図７】図７は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図８】図８は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図９】図９は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図１０】図１０は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図１１】図１１は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図１２】図１２は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図１３】図１３は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図１４】図１４は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【発明を実施するための形態】
【０００７】
以下に、実施形態について詳細に論ずる。具体的な実施態様について論ずるが、これは例示のみを目的として行っていることは言うまでもない。当業者には、本開示の主題の主旨および範囲から逸脱することなく、他のコンポーネントおよび構成も使用してもよいことは認められよう。
全体像
【０００８】
フラッシュ記憶装置は、容易に複製することができ、埋め込みプロセッサーや保護されているメモリーを有さない。しかしながら、フラッシュ記憶装置は、例えば、１６キロビット、２キロビット、またはその他のサイズというような、特殊なサイズのメモリー・ブロック、即ち、セクターを含む。これらのセクターの各１つが使用できなくなるまでに可能な、セクターの各１つの書き込みサイクルの回数には限界がある。通例、セクターの各１つが使用不可能になるまでに、セクターの各１つは約１００万回書き込むことができる。フラッシュ記憶装置の中には、１００，０００回またはその他の回数の書き込みというように、それぞれのセクターが使用不可能になるまでに可能な書き込みサイクルの限界回数が異なる場合もある。
【０００９】
本開示の主題に係る実施形態は、フラッシュ記憶装置の特定セクターに書き込みこの特定セクターを使用不可能とすることにより、フラッシュ記憶装置の中に情報をエンコードすることができる。この情報は、使用不可能なセクターによって１ビットを表し、使用可能なセクターによって０ビットを表すことによってエンコードすることができる。実施形態によっては、この情報は、使用不可能セクターによって０ビットを表し、使用可能なセクターによって１ビットを表すことによって、エンコードできる場合もある。このようにしてエンコードされたデータは、単にフラッシュ記憶装置をコピーするだけでは、複製を作ることはできない。
【００１０】
本開示の主題に係る種々の実施形態では、フラッシュ記憶装置に接続されている処理装置がライセンス情報にアクセスすることができる。ライセンス情報は識別子を含むとよい。処理装置は、フラッシュ記憶装置の特定セクターにアクセスして、識別子がその中にエンコードされているか否か判断することができる。識別子がフラッシュ記憶装置の中にエンコードされていない場合、処理装置はソフトウェア・アプリケーションを実行することができないか、または限られた機能だけでそのソフトウェア・アプリケーションを実行することができる。
【００１１】
更に、ライセンス情報は、当該ライセンスの１つ又は複数の条件に関する情報も含むことができる。例えば、この情報は、有効期限日、ライセンス期間（例えば、１年、６カ月、またはその他の時間）、または所定の許可使用回数を含むことができる。この所定回数を超えると、ソフトウェア・アプリケーションを実行することが許可されないか、または限られた機能だけで実行することを許可することができる。以下で更に詳しく説明するが、１つ又は複数のライセンス期間を超えたソフトウェア・アプリケーションの不正実行を防止できるように、過ぎ去った時間期間に関する現在の状態(status)、またはソフトウェア・アプリケーションの使用回数を、識別子と同様にして、フラッシュ記憶装置内にエンコードすることができる。
【００１２】
実施形態によっては、ソフトウェア・アプリケーションの活性化を実行する間に、識別子をフラッシュ記憶装置にエンコードできる場合もある。
動作環境例
【００１３】
図１は、本開示の主題に係る実施形態に合わせた動作環境１００の一例を示す。動作環境１００は、処理装置１０２、フラッシュ記憶装置１０４、１つ又は複数のサーバー１０６、およびネットワーク１０８を含む。
【００１４】
ネットワーク１０８は、例えば、インターネットまたはその他のネットワークのような、１つのネットワークまたはネットワークの組み合わせとすることができる。ネットワーク１０８は、ワイヤレス・ネットワーク、有線ネットワーク、パケット交換ネットワーク、公衆交換電気通信ネットワーク、光ファイバ・ネットワーク、その他の種類のネットワーク、または以上の内のあらゆる組み合わせでも含むことができる。
【００１５】
処理装置１０２は、例えば、デスクトップ・パーソナル・コンピューター（ＰＣ）、ラップトップＰＣ、ハンドヘルド処理装置、というようなユーザーの処理装置、またはその他の処理装置とすることができる。
【００１６】
フラッシュ記憶装置１０４は、例えば、ユニバーサル・シリアル・バス（ＵＳＢ）フラッシュＲＡＭデバイス、またはその他のフラッシュ記憶装置のような、再書き込み可能なリムーバブル・フラッシュ記憶装置とすることができる。これは、処理装置１０２に着脱可能に接続することができる。フラッシュ記憶装置１０４がＵＳＢフラッシュＲＡＭデバイスである実施形態では、ＵＳＢフラッシュＲＡＭデバイスを、処理装置１０２のＵＳＢポートを通じて、処理装置１０２に着脱可能に接続することができる。
【００１７】
サーバー１０６は、処理装置、または共に動作するように構成されている処理装置の集合体であってもよい。サーバー１０６が処理装置の集合体を含む実施形態では、これらの処理装置をサーバー・ファームとして構成することもできる。
処理装置の一例
【００１８】
図２は、処理装置２００の一例を示す機能ブロック図である。処理装置２００は、本開示の主題に係る処理装置１０２および／またはサーバー１０６の実施形態を実現するために用いることができる。
【００１９】
処理装置２００は、バス２１０、入力デバイス２２０、メモリー２３０、リード・オンリー・メモリー（ＲＯＭ）２４０、出力デバイス２５０、プロセッサー２６０、フラッシュ・デバイス・ポート２７０、および通信インターフェース２８０を含むことができる。バス２１０は、処理装置２００のコンポーネント間における通信を可能にすることができる。
【００２０】
プロセッサー２６０は、命令を解釈して実行する、少なくとも１つの従来からのプロセッサー、またマイクロプロセッサーを含むことができる。メモリー２３０は、ランダム・アクセス・メモリー（ＲＡＭ）、またはプロセッサー２６０による実行のために情報および命令を格納するその他の種類のダイナミック記憶装置とすることができる。また、メモリー２３０は、プロセッサー２６０による命令の実行中に用いられる一時変数またはその他の中間情報も格納することができる。ＲＯＭ２４０は、従来からのＲＯＭデバイス、またはプロセッサー２６０のための静的情報および命令を格納するその他の種類の静的記憶装置を含むことができる。フラッシュ・デバイス・ポート２７０は、フラッシュ記憶装置１０４を処理装置２００に接続する手段を設けることができる。フラッシュ記憶装置１０４は、例えば、プロセッサー２６０のような、プロセッサーのためにデータおよび／または命令を格納することができる。
【００２１】
入力デバイス２２０は、キーボードまたはその他の入力デバイスを含むことができる。出力デバイス２５０は、１つ又は複数の表示画面を含む情報を出力する１つ又は複数の従来からのメカニズム、またはその他の出力デバイスを含むことができる。
【００２２】
通信インターフェース２８０は、情報をネットワーク１０８との間で送信および受信する送受信機を含むことができる。通信インターフェース２８０は、ワイヤレス接続または有線接続を通じて情報を送信および受信することができる。
【００２３】
処理装置２００は、例えば、メモリー２３０、ＲＯＭ２４０、フラッシュ記憶装置１０４、またはその他の媒体というような、有形磁気読み取り可能媒体に収容されている一連の命令を実行するプロセッサー２６０に応答して、このような機能を実行することができる。このような命令は、他の機械読み取り可能媒体から、または別個のデバイスから通信インターフェース２８０を通じてメモリー２３０内に読み取ることができる。
フラッシュ記憶装置
【００２４】
フラッシュ記憶装置１０４は、多数のブロックまたはセクターを含むことができる。これらのセクターの各々は、所定数のビットを含む。例えば、セクターの各々は、１６キロビット、２キロビット、またはその他のビット数を含むことができる。通例、フラッシュ記憶装置１０４は、初期状態においてある数の使用不可能なセクターを有する場合がある。図３は、セクターに関する情報、およびフラッシュ記憶装置１０４の一実施形態において含むことができるその他の情報を示す。フラッシュ記憶装置１０４は、不良セクター３０２のセクター・アレイ、ライセンス情報３０４、およびエンコードされている情報３０６用のセクター・アレイを含むことができる。
【００２５】
不良セクター３０２のセクター・アレイは、フラッシュ記憶装置１０４に含まれる不良セクターの物理的アドレスに関する情報を含むことができる。
【００２６】
ライセンス情報３０４は、ソフトウェア・アプリケーションを使用するためのライセンスに関する情報を含むことができる。ライセンス情報３０４は、例えば、ソフトウェア・アプリケーションを含む製品を識別するための製品識別子、およびライセンス条件を含むことができる。ライセンス条件は、ソフトウェア・アプリケーションの実行が許可される条件を含むことができる。例えば、ライセンス条件は、ソフトウェア・アプリケーションの実行が許可される所定の回数、ソフトウェア・アプリケーションの実行が許可される期間(term)即ち時間期間（例えば、１年、６カ月、またはその他の時間期間）、ソフトウェア・アプリケーションの実行が許可されなくなる期限日、またはその他の条件を含むことができる。実施形態によっては、ライセンス情報３０４は、フラッシュ記憶装置１０４にエンコードすべき識別子を含むこともできる。また、ライセンス情報３０４は、例えば、ソフトウェア販売業者、ソフトウェア流通業者、またはその他の信頼のおける情報源というような、信頼のおける情報源の秘密鍵を用いて、ライセンス情報３０４に対して計算するディジタル署名を含むこともできる。
【００２７】
前述のように、ライセンス情報３０４に含まれる識別子、またはその他の識別子というような識別子、ならびにその他の情報を、フラッシュ記憶装置１０４の特定セクターの中にエンコードすることができる。識別子およびその他の情報をエンコードするには、特定セクターの内使用不可能なものによって１ビットを表し、特定セクターの内使用可能なものによって０ビットを表すようにすることができる。実施形態によっては、識別子およびその他の情報は、これらのセクターの内使用不可能なものによって０ビットを表し、これらのセクターの内使用可能なものによって１ビットを表すことによってエンコードすることもできる。
【００２８】
図４は、本開示の主題に係るフラッシュ記憶装置１０４の一実施形態におけるエンコード情報３０６のセクター・アレイを更に詳しく示す。フラッシュ記憶装置１０４は、識別子用のセクター・アレイ４０２、識別子に関するディジタル署名用のセクター・アレイ４０４、カウンターと使用するためのセクター・アレイ４０６、および時間期間カウンター用のセクター・アレイ４０８を含むことができる。
【００２９】
識別子用のセクター・アレイ４０２は、例えば、ライセンス情報３０４からの識別子のような識別子、またはその他の識別子をエンコードすることができる特定のセクターに関する情報を含むことができる。識別子のディジタル署名用のセクター・アレイ４０４は、当該識別子について計算されたディジタル署名をエンコードすることができる特定のセクターに関する情報を含むことができる。ディジタル署名は、例えば、信頼のおける情報源の秘密鍵のような秘密鍵を用いて、識別子について計算することができる。カウンターと共に用いるためのセクター４０６、および時間期間カウンター４０８用のセクター・アレイは、ライセンス条件に関する現在の状態(status)を追跡することができるように、カウンターをエンコードするための特定のセクターに関する情報を含むことができる。これらのカウンターの使用例について、図５から図１０のフローチャートを参照しながら以下で説明する。
処理例
【００３０】
図５および図６は、例えば、フラッシュ記憶装置１０４のようなフラッシュ記憶装置が接続されている、例えば、処理装置１０２のような処理装置上においてソフトウェア・アプリケーションを実行しようとするときに、本開示の主題に係る実施形態において実行することができるプロセス例のフローチャートを示す。
【００３１】
このプロセスは、処理装置がライセンス情報にアクセスすることから開始することができる（行為５０２）。ライセンス情報は、例えば、メモリー、ＲＯＭ、またはその他のコンポーネントというような、処理装置のコンポーネント上に格納することができる。あるいは、ライセンス情報は、例えば、ライセンス情報３０４のように、フラッシュ記憶装置上に格納することもできる。ライセンス情報は、当該ソフトウェア・アプリケーションを含む製品を識別するデータ、識別子（例えば、製品を使用するライセンスに付随する識別子）、ライセンス条件（例えば、ソフトウェア・アプリケーションの所定の使用回数、例えば、１年、６カ月、またはその他の時間期間というような、ソフトウェア・アプリケーションを用いることができる時間期間、あるいはソフトウェア・アプリケーションを用いることができなくなる期限日）、またはその他の条件を含むことができる。実施形態によっては、ライセンス情報は、例えば、ソフトウェア流通業者、ソフトウェア開発者、またはその他の信頼のおける情報源というような、信頼のおける情報源の秘密鍵のような、秘密鍵によって署名されたディジタル署名を含むことができる。
【００３２】
次に、処理装置は、ライセンス情報の有効性を判断することができる（行為５０４）。実施形態によっては、処理装置は、ライセンス情報の有効性を判断する際に、信頼のおける情報源の秘密鍵に対応する公開鍵を用いることもできる。次いで、処理装置は、ライセンス情報が有効であるか否か判断することができる（行為５０６）。これは、ライセンス情報の有効性判断の結果によって示される。ライセンス情報が無効であると判断された場合、処理装置はソフトウェア・アプリケーションの機能を制限するまたは不可能にすることができる（行為５０８）。例えば、処理装置は、ソフトウェア・アプリケーションを実行することを許可されない場合もあり、あるいは処理装置は、機能を制限して、ソフトウェア・アプリケーションを実行することができる場合もある。一実施形態では、ソフトウェア・アプリケーションの機能を制限する場合、処理装置はソフトウェア・アプリケーションの標準バージョンを実行することができ、ソフトウェア・アプリケーションの機能が制限されないまたは不可能にされない場合、処理装置は、強化バーション、即ち、プロフェッショナル・バージョンのソフトウェア・アプリケーションを実行することができる。
【００３３】
行為５０６の間に、処理装置が、ライセンス情報が有効であると判断した場合、処理装置は、ライセンス情報またはその他の情報源から識別子を入手することができる（行為５１０）。実施形態によっては、識別子が一意の識別子であるとよい場合もある。処理装置は、次いで、この識別子、および当該識別子に関するディジタル署名が、フラッシュ記憶装置の中にエンコードされているか否か判断することができる（行為５１２）。処理装置は、この判断を下す際に、例えば、識別子用のセクター・アレイ４０２（図４）のような識別子用のセクター・アレイを参照し、更に、例えば、識別子のディジタル署名用のセクター・アレイ４０４（図４）のような当該識別子のディジタル署名用のセクター・アレイを参照することによって行うことができる。
【００３４】
代替実施形態では、識別子のディジタル署名をエンコードしなくてもよく、代わりにフラッシュ記憶装置の格納部に格納すればよい。
【００３５】
処理装置が、識別子がフラッシュ記憶装置の中にエンコードされていないこと、または識別子の有効なディジタル署名がフラッシュ記憶装置にエンコードまたは格納されていないことを判断した場合、処理装置は、先に論じたように、ソフトウェア・アプリケーションの機能を制限するかまたは不可能にする（行為５０８）。そうでない場合、処理装置は、ソフトウェア・アプリケーションの使用回数を計数するか否か判断することができる（行為５１４）。
【００３６】
ソフトウェア・アプリケーションの使用回数は、ライセンス条件が、ソフトウェア・アプリケーションの所定の使用回数しか許可できないことを示すときに、計数すればよい。一実施形態では、使用回数を計数する場合、１つのセクターをカウンターとして用いることができ、この１つのセクターに対するある回数の書き込みを行うことができる。書き込み回数は、近似的に次のように計算することができる。
【数１】
2010538364.tif 000003
ここで、max_writesは、セクターを使用不可能にすることになる書き込みサイクル回数であり、counting_numberは、例えば、１０まで計数する場合の１０のような、カウンターの最大値である。書き込み回数丁度の直後にセクターが使用不可能にならないこともあり得るので、セクターが使用不可能になることを一層確実に保証するためにマージンを含むとよい。つまり、例えば、１００，０００回の書き込み（max_writes)の後にセクターが書き込み不可能になることにした場合、カウンターは１０（counting_number)まで計数するために用いられ、マージンを３０％とすると、number_of_writesは、１００，０００／１０×（．３＋１）、即ち、１３，０００となる。つまり、この例では、１つのセクターに１３，０００回書き込むことによって、カウンターを増分することができる。counting_numberまで計数した後、セクターは使用不可能になるはずである。
【００３７】
別の実施形態では、計数のために１群のセクターを用いることもできる。例えば、１０まで計数する場合、１０個のセクターからなる１群をカウンターとして用いることができる。各セクターは、計数時に、使用不可能にすることができる。１０個のセクターから成る１群が使用不可能になると、これは、カウンターが１０まで計数したことを示す。
【００３８】
行為５１４の間に、処理装置が、ソフトウェア・アプリケーションの使用回数を計数することを決定した場合、処理装置は、使用許可回数がいくらかでも残っているか否か判断することができる（図６の行為６０２）。そのソフトウェア・アプリケーションには、使用許可回数が残っていない場合、処理装置は、行為５０８に関して既に論じたように、このソフトウェア・アプリケーションの機能を制限するかまたは不可能にすることができる（行為６０４）。そうでない場合、処理装置は使用回数を計数することができる（行為６０６）。先に論じたように、処理装置は、使用回数を計数する際、それぞれのセクターに書き込んでそれぞれのセクターを使用不可能にするか、またはある回数の書き込みを１つのセクターに対して行うことにより、所定の使用回数を計数した後、その１つのセクターが使用不可能となるようにすることができる。
【００３９】
図７は、行為６０６を実行するプロセス６０６−１の一例を示すフローチャートである。このプロセスは、処理装置が、使用回数を計数するためにどのセクターを用いるか決定すること（行為７０２）から開始することができる。一実施形態では、処理装置は、カウンター４０６（図４）と共に用いるセクター・アレイにアクセスすることができる。このセクター・アレイは、カウンターとして用いるために確保してあるセクターに関する情報、および次に使用するカウンター用のセクターへのポインターを含むことができる。つまり、例えば、セクター１−２０を使用カウンターとして用い、セクター１−６が既に計数のために使用されて使用不可能となっている場合、ポインターは、計数の目的に用いるために、セクター７を指し示すことができる。
【００４０】
計数に使用するために用いるセクターを決定した後、処理装置は、セクターを使用不可能にするために、このセクターに対して多数回の書き込みを行うことができる（行為７０４）。次いで、処理装置は、次に使用するカウンター用のセクターへのポインターに関する情報を更新することができる（行為７０６）。セクター１〜２０を使用カウンターのために用いることができる前述の例に関しては、計数の目的でセクター７を使用した後、計数が次に行われるときにセクター８を使用不可能にすることができるように、ポインターはセクター８を指し示すように設定することができる。
【００４１】
図８は、行為６０６を実行するプロセッサー６０２−２の第２の例を示すフローチャートである。このプロセス例は、１つのセクターをカウンターとして用い、先に論じた式１(equation 1)にしたがって計数を実行する。このプロセスは、処理装置が計数の目的で使用するセクターを決定すること（行為８０２）から開始することができる。一実施形態では、処理装置は、カウンター４０６（図４）と共に用いるセクター・アレイにアクセスすることができる。このセクター・アレイは、使用カウンターとして用いるために確保したセクターに関する情報を含むことができる。また、処理装置は、セクターに関して実行する書き込み回数に関する情報も入手することができる。この情報は、カウンター４０６と共に用いるセクター・アレイに含めることができ、あるいは他の場所に格納してもよい。次いで、所定の使用回数を計数した後にこのセクターが使用不可能になるように、処理装置はこのセクターに対して前述の回数の書き込みを実行することができる（行為８０４）。
【００４２】
図６に戻って、行為６０６を実行した後、またはソフトウェア・アプリケーションの使用回数を計数すべきでないと判断した（行為５１４）後、処理装置は、時間期間を計時すべきか否か判断することができる（行為６０８）。一実施形態では、処理装置は、時間期間カウンター４０８（図４）のセクター・アレイにアクセスすることによって、この判断を行うことができる。これには、時間期間カウンターとして用いるフラッシュ記憶装置のセクターに関する情報を含むことができる。通例、時間期間カウンターは、例えば、日、週、月、年、またはその他の時間期間というような、多数の時間期間を計時することができる。このため、例えば、１８カ月というような特定の時間期間にわたってソフトウェア・アプリケーションを使用することができる場合、例えば、時間期間カウンターは月数を計数するために用いることができる。処理装置が、時間期間カウンターを用いないと判断した場合、処理装置は最大限の機能でソフトウェア・アプリケーションを実行することができる（行為６１４）。
【００４３】
行為６０８の間に、処理装置が、時間期間カウンターを用いると判断した場合、処理装置は、例えば、１８カ月のライセンス期間の場合、１８カ月のような、ライセンス情報に関する時間期間の最大数を既に計数したか否か判断することができる（行為６１０）。時間期間が残っていない場合（例えば、１８カ月のライセンス期間に対して、１８カ月が既に過ぎている）、処理装置は、先に論じたように、ソフトウェア・アプリケーションの機能を制限または不可能にすることができる（行為６０４）。それ以外の場合、時間期間を計時することができ（行為６１２）、処理装置は、最大限の機能でソフトウェア・アプリケーションを実行することができる。
【００４４】
一実施形態では、それぞれのセクターに書き込んでそれぞれのセクターを使用不可能にすることによって、時間期間を計時することができる。例えば、１８の時間期間を計時するには、セクターが使用不可能になるまでに１８のセクターに書き込むことができる。他の実施形態では、１つのセクターに書き込むことができ、式１に関して先に説明したように、例えば、１８時間期間のような所定数の時間期間、またはその他の何らかの数の時間期間の経過後に、その１つのセクターが使用不可能となるようにすることもできる。
【００４５】
図９は、本開示の主題に係る一実施形態において行為６１２を実行するプロセス６１２−１の一例を示すフローチャートである。このプロセスは、時間期間が経過したか否か処理装置が判断する（行為９０２）ことから開始することができる。時間期間は、日、週、月、年、またはその他の時間期間とすることができる。処理装置は、この判断を下す際、システム・クロックを参照し、システム・クロックの現在値を、時間期間の開始時におけるシステム・クロックの値と比較すればよい。
【００４６】
処理装置が、時間期間が経過したと判断した場合、処理装置は、時間期間を計時するために用いるセクターを決定することができる（行為９０４）。一実施形態では、処理装置は時間期間カウンター４０８（図４）のセクター・アレイにアクセスすることができる。セクター・アレイには、時間期間カウンターのために確保されているセクターに関する情報、および次の時間期間カウンター用のセクターへのポインターを含むことができる。つまり、例えば、時間期間カウンターにセクター１〜２４を用いることとし、セクター１〜１０が既に計時のために用いられており使用不可能とされている場合、ポインターは、時間期間計時の目的で用いるために、セクター１１を指し示すことができる。
【００４７】
時間期間計時のために用いるセクターを決定した後、処理装置は、そのセクターを使用不可能にするために、そのセクターに多数回の書き込みを実行することができる（行為９０６）。次いで、処理装置は、次の時間期間カウンター用のセクターへのポインターに関する情報を更新することができる（行為９０８）。セクター１〜２４を時間期間カウンターとして用いることができる前述の例に関して、セクター１０を時間期間計時に用いた後、時間期間計時を次に実行しようとするときにセクター１１を使用不可能にすることができるように、セクター１１を指し示すようにポインターを設定することができる。
【００４８】
図１０は、行為６１２を実行する第２プロセス６１２−２の一例を示すフローチャートである。このプロセス例は、１つのセクターを時間期間カウンターとして用い、先に論じた式１にしたがって計時を実行することができる。このプロセスは、時間期間が過ぎたか否か処理装置が判断すること（行為１００２）から開始することができる。処理装置が、時間期間が過ぎたと判断した場合、処理装置は時間期間計時の目的で用いるセクターを決定することができる（行為１００４）。一実施形態では、処理装置は、時間期間カウンター４０８（図４）用のセクター・アレイにアクセスすることができる。時間期間カウンター４０８は、時間期間カウンターとして用いるために確保してあるセクターに関する情報を含むことができる。また、処理装置は、このセクターに関して実行する書き込み回数に関する情報も入手することができる。この情報は、時間期間カウンター４０８用のセクター・アレイに含めることができ、または他の場所に格納してもよい。次いで、処理装置は、所定数の時間期間を計時した後にセクターが使用不可能となるように、セクターに前述の回数の書き込みを実行することができる（行為１００６）。
【００４９】
図６に戻って、処理装置は次にソフトウェア・アプリケーションを全機能で実行することができる（行為６１４）。
【００５０】
実施形態によっては、ソフトウェア・アプリケーションを処理装置上にインストールした後、ソフトウェア・アプリケーションの実行を認可する(authorize)または許可するためにフラッシュ記憶装置を有することなく、処理装置に所定の回数までソフトウェア・アプリケーションを実行することを許可してもよい。このため、例えば、ユーザーはソフトウェア・アプリケーションを電子的に処理装置にダウンロードすることができ、ソフトウェアを処理装置にインストールすることができ、フラッシュ記憶装置を有することなく、所定の回数までソフトウェア・アプリケーションを実行することができる。
【００５１】
図１１は、このような実施形態において実行することができるプロセスの一例を示す。このプロセスは、ソフトウェア・アプリケーションの現在の使用回数が、ソフトウェア・アプリケーションの認可された所定の使用回数未満であるか否か処理装置が判断すること（行為１１０２）から開始することができる。所定の認可使用回数は、ライセンス情報にアクセスすることによって入手することができ、ライセンス情報は処理装置上に格納することができる。
【００５２】
ソフトウェア・アプリケーションの現在の使用回数が、所定の認可使用回数未満でない場合、ソフトウェア・アプリケーションの機能をディスエーブルまたは制限することができる（行為１１０４）。例えば、処理装置はソフトウェア・アプリケーションを全く実行することができないか、または処理装置はソフトウェア・アプリケーションを、制限された機能のみで実行することができる。
【００５３】
行為１１０２において、処理装置が、現在の使用回数が所定の許可使用回数未満であると判断した場合、処理装置は、現在の使用回数のカウントを増分することができ（行為１１０６）、ソフトウェア・アプリケーションを最大の機能で実行させることができる（行為１１０８）。
【００５４】
図１２および図１３は、本開示の主題に係る別の実施形態において実行することができるプロセスの一例を示すフローチャートである。この実施形態では、識別子を部分的にフラッシュ記憶装置のセクターにエンコードすることができる。例えば、書き込みサイクルがセクターに許可されている最大数に達して、そのセクターが使用不可能になると、（許容書き込みサイクル最大回数−Ｗ）用の特定セクターに書き込むことによって、識別子の「１」ビットを部分的にフラッシュ記憶装置の特定セクターにエンコードすることができる。ここで、Ｗは、例えば、５０％というような許容書き込みサイクル最大回数のある割合、またはその他の値にほぼ等しい整数である。このため、エンコードされた識別子を隠すことができるように、特定セクターの全てが使用可能状態にあってもよい。エンコードされている識別子を読み出すためには、ある回数の書き込みサイクルを特定セクターに対して実行すればよい。例えば、Ｗ回の書き込みサイクルを特定セクターに対して実行すると、識別子の「１」ビットで表す、特定セクターを使用不可能にすることができる。代替実施形態では、識別子の「０」ビットをフラッシュ記憶装置の特定セクターに部分的にエンコードすることもできる。
【００５５】
識別子は多数の要素を有することができる。これらの要素の各々は、時間期間に対応することができる。初期状態では、識別子の全ての要素を隠すことができる（即ち、識別子のこれらの要素を表すセクターの全てが使用可能であってもよい）。現在の時刻に対応する識別子の要素を表すために用いられる対応の特定セクターに対して書き込みサイクルを実行することによって、識別子のこの要素を公開することができる。次の時間期間に達したときに、識別子の次の要素を表すために用いられている対応の特定セクターに対して書き込みサイクルを実行することによって、識別子の次の要素を公開することができる。ずっと先の時間期間に対応する識別子の要素が公開された場合、ハッカーによる攻撃の可能性が示され、識別子を無効と見なすことができる。
【００５６】
図１２のフローチャートに関して、本プロセスは、例えば、処理装置１０２のような処理装置がライセンス情報にアクセスすること（行為１２０２）から開始することができる。ライセンス情報は、例えば、メモリー、ＲＯＭ、またはその他のコンポーネントというような、処理装置のコンポーネント上に格納することができる。あるいは、ライセンス情報は、例えば、ライセンス情報３０４のように、フラッシュ記憶装置内に格納することもできる。ライセンス情報は、ソフトウェア・アプリケーションを含む製品を識別するデータ、識別子（例えば、その製品を使用するライセンスに付随する識別子）、およびライセンスが有効である時間を含むことができる。この識別子は、多数の要素を含むことができ、ライセンスが有効な全時間を構成する各時間期間毎に１つずつの要素がある。実施形態によっては、ライセンス情報が、例えば、ソフトウェア流通業者、ソフトウェア開発業者のような信頼のおける情報源、またはその他の信頼のおける情報源の、例えば、秘密鍵のような秘密鍵によって署名された、ディジタル署名を含むことができる。
【００５７】
次に、処理装置はライセンス情報の有効性を判断することができる（行為１２０４）。実施形態によっては、処理装置は、信頼のおける情報源の秘密鍵に対応する公開鍵を用いることによって、ライセンス情報の有効性を判断することができる。次いで、処理装置は、ライセンス情報が有効か否か判断することができる（行為１２０６）。これは、ライセンス情報の有効性判断の結果によって示される。ライセンス情報が無効であると判断された場合、処理装置は、ソフトウェア・アプリケーションの機能を制限またはディスエーブルすることができる（行為１２０８）。例えば、処理装置は、ソフトウェア・アプリケーションを実行することを許可されない可能性があり、あるいは処理装置は、機能を制限して、ソフトウェア・アプリケーションを実行できる場合もある。一実施形態では、ソフトウェア・アプリケーションの機能が制限される場合、処理装置は、ソフトウェア・アプリケーションの標準バージョンを実行することができ、ソフトウェア・アプリケーションの機能性が制限もディスエーブルもされない場合、処理装置は、ソフトウェア・アプリケーションの拡張バージョンまたはプロフェッショナル・バージョンを実行することができる。
【００５８】
行為１２０６において、処理装置がライセンス情報が有効であると判断した場合、処理装置は、ライセンス情報またはその他の情報源から識別子を入手することができる（行為１２１０）。実施形態によっては、識別子は一意の識別子であるとよい場合がある。次いで、処理装置は、識別子がフラッシュ記憶装置内にエンコードされているか否か判断することができる（行為１２１２）。処理装置は、この判断を下すにあたって、例えば、識別子４０２用のセクター・アレイ（図４）のような識別子用のセクター・アレイを参照することができる。
【００５９】
図１３は、一実施形態における行為１２１２に関する処理の一例を示す。最初に、処理装置は、新たな時間期間が開始しているか否か判断することができる（行為１３０２）。新たな時間期間が開始している場合、処理装置は、識別子の余分な部分があるか否か判断することができる（行為１３０４）。識別子の余分な部分がない場合、処理装置は、識別子がエンコードされていないことを示すことができる（行為１３０６）。これは、アプリケーションを実行するための認可が許可された時間期間を超えて、ソフトウェア・アプリケーションを実行しようとしたことを示すことができる。それ以外の場合、処理装置は、次の時間期間に対応する、識別子の次の部分のための特定セクターを決定することができる（行為１３０６）。実施形態によっては、識別子の次の部分のための特定セクターを決定するには、例えば、識別子４０２用のセクター・アレイのようなセクター・アレイを参照すればよい。次いで、処理装置は、識別子の次の部分（ここでは、現在の部分）の「１」ビット、または識別子の次の部分の「０」ビットのいずれかを表す特定セクターに、ある回数の書き込みサイクルを実行することができる（行為１３０８）。書き込みサイクルの回数は、許可された書き込みサイクルの最大回数未満であり、（書き込みサイクルに許可された最大回数−Ｗ）よりも大きくするとよい。ここで、Ｗは整数値である。行為１３０８を実行した後、特定セクターの内使用不可能なものによって、識別子の次の部分を公開することができる。
【００６０】
行為１３０２において、処理装置が、新たな時間期間が開始していないと判断した場合、または行為１３０８において、特定セクターに対して前述の回数の書き込みサイクルが実行された場合、処理装置は、識別子の現在の部分が使用不可能なセクターによってエンコードされているか否か判断することができる（行為１３１０）。処理装置が、識別子の現在の部分がエンコードされていないと判断した場合、処理装置は、識別子がエンコードされていないことを示すことができる（行為１３１６）。そうでない場合、処理装置は、ずっと先の時間期間に対する識別子のいずれかの部分がエンコードされているか否か判断することができる（行為１３１２）。ずっと先の時間期間中に使用するための識別子の部分のいずれかがエンコードされている場合、ずっと先の時間期間に対応する識別子のエンコードされている部分は、ハッカーによる攻撃を示す場合がある。したがって、ずっと先の時間期間のいずれかに対応する識別子の部分のいずれかがエンコードされている場合、処理装置は、識別子がエンコードされていないことを示し（行為１３１６）、不正使用を示すことができる。ずっと先の時間期間に対応する識別子の部分全てがエンコードされていない場合、処理装置は、識別子がエンコードされていることを示し（行為１３１４）、正規の使用であることを示すことができる。
【００６１】
図１２に戻り、行為１２１２において、処理装置が、識別子の現在の部分がフラッシュ記憶装置内にエンコードされていれると判断した場合、処理装置は、ソフトウェア・アプリケーションを最大限の機能で実行することを許可することができる（行為１２１４）。そうでない場合、処理装置はソフトウェア・アプリケーションの機能を制限またはディスエーブルすることができる（行為１２０８）。
【００６２】
図１２および図１３に関して説明した実施形態の一例として、識別子が３６の要素を有し、各要素が１６ビットであり、全長が５７６ビットであると仮定する。識別子の要素の各々は、１カ月のアプリケーション使用に対応することができる。その結果、アプリケーションには３６カ月の使用を認可することができる。更に、１００万回の書き込みサイクルによって、フラッシュ記憶装置の１セクターが使用不可能になると仮定する。アプリケーションを最初に起動し活性化したとき、アプリケーションは、行為１３１０に関して説明したように、識別子の最初の１６ビット部分の「１」ビットまたは「０」ビットに対応する特定セクターに対して、ある回数の書き込みを実行することによって、識別子の最初の１６ビット部分を公開することができる。アプリケーションは、識別子の最初の１６ビット部分が、ライセンス情報に含まれる識別子の対応する１６ビット部分と一致することを確認する(validate)ことができる。アプリケーションが、今後の月数の１つに対応する１６ビット部分が公開されていると判断すると、アプリケーションをディスエーブルすることができ、あるいは機能を制限して実行することができる。１カ月後、アプリケーションは識別子の次の１６ビット部分を公開することができ、識別子の次の１６ビット部分が、ライセンス情報に含まれる識別子の対応する１６ビット部分と一致することを確認することができる。
【００６３】
本開示の主題にかかる実施形態によっては、フラッシュ記憶装置は、例えば、処理装置１０２のようなユーザーの処理装置を通じて、前述のように、ソフトウェア・アプリケーションと共に用いるためにエンコードすることができる。図１４は、このような実施形態において実行することができるプロセスの一例を示す。このプロセスは、ソフトウェア・アプリケーションの実行を活性化する、即ち、イネーブルする活性化プロセスの一部とすることができる。
【００６４】
このプロセスは、処理装置が製品情報を、例えば、サーバー１０６のような第２処理装置に送ることから開始することができる（行為１４０２）。製品情報は、ソフトウェア・アプリケーションを含む製品を識別する情報を含むことができる。処理装置は、第２処理装置から、製品情報の送付に応答して、ライセンス情報および識別子情報を受信することができる（行為１４０４）。実施形態によっては、ライセンス情報が識別子、およびライセンスの１つ又は複数の条件に関する情報を含む場合もある。更に、ライセンス情報には、信頼のおける情報源の秘密鍵を用いて、ディジタル署名がされているとよい。実施形態によっては、識別子は、信頼のおける情報源の秘密鍵を用いて、別個のディジタル署名を有することもできる。
【００６５】
次いで、処理装置は、ライセンス情報および識別子情報の有効性を判断することができる（行為１４０６）。実施形態によっては、処理装置は、信頼のおける情報源の秘密鍵に対応する公開鍵を用いて、ライセンス情報および識別子情報の有効性を判断することもできる。処理装置は、有効性判断の結果に基づいて、ライセンス情報および識別子情報が有効か否か判断することができる（行為１４０８）。ライセンス情報および識別子情報が有効でないと判断された場合、処理装置はエラー・メッセージをユーザーに提示することができる（行為１４１０）。そうでない場合、処理装置は、識別子および対応するディジタル署名を、処理装置に接続されているフラッシュ記憶装置にエンコードすることができる（行為１４１２）。処理装置は、フラッシュ記憶装置の特定セクターに書き込むことによって、エンコード処理を実行して特定セクターを使用不可能にすることができ、あるいは、前述のように、特定セクターを使用可能のままにすることもできるが、ある回数の書き込みサイクルを特定セクターに対して実行することによってエンコード処理を公開し、これらを使用不可能にすることもできる。例えば、使用不可能なセクターによって１ビットを表し、使用可能なセクターによって０ビットを表すことによって、識別子およびディジタル署名をエンコードすることができる。実施形態によっては、使用不可能なセクターによって０ビットを表し、使用可能なセクターによって１ビットを表すことによって、情報をエンコードすることもできる。ライセンス情報は、フラッシュ記憶装置上または処理装置上のいずれかに格納することができる（行為１４１４）。
【００６６】
次に、処理装置は、ライセンス情報から、使用カウンターおよび／または時間期間カウンターを使用すべきか否か判断することができる（行為１４１６）。例えば、ライセンス情報が、ソフトウェア・アプリケーションを所定の回数だけ実行できることを示す場合、使用カウンターを用いるとよい。ソフトウェア・アプリケーションを実行する認可が特定の時間期間後または期限日後に消滅することをライセンス情報が示す場合、時間期間カウンターを用いるとよい。
【００６７】
次いで、処理装置は、識別子およびカウンターに関して１つ又は複数のセクター・アレイを作成することができ、更に、セクターに対して実行する書き込み回数に関する情報、システム・クロックまたはその他の時間測定器具のようなクロックに関する時間期間の長さ（日、週、年等）、あるいはその他の情報を格納することができる（行為１４１８）。
結論
【００６８】
汎用フラッシュ記憶装置を用いてソフトウェアの不正使用を防止すれば、ＵＳＢドングルまたはメモリー・キーのような特殊デバイスを必要とする方法よりも、少ない費用で済む。更に、ソフトウェアの不正使用を防止するために、ユーザーが供給するフラッシュ記憶装置を用いる方法は、そのソフトウェアと共に特殊化したデバイスを配達することを不要にし、電子的に流通するソフトウェアを不正使用から保護する実用的な方法である。
【００６９】
構造的機構および／または方法論的行動(act)に特定的なことばで、主題について説明したが、添付する特許請求の範囲において定義する主題は、必ずしも前述した特定的な機構や行動には限定されないことは言うまでもない。むしろ、前述した特定的な機構や行動は、特許請求の範囲を実現する形態の例として開示したに過ぎない。
【００７０】
以上の説明は具体的な詳細を内包する場合もあるが、これらが特許請求の範囲を限定するように解釈しては決してならない。記載した実施形態の他の構成が、本開示の範囲の一部となる。更に、本開示の主題に係る実施態様は、記載した行為よりも多いまたは少ない行為を有してもよく、あるいは図示した順序とは異なる順序で行為を実施してもよい。加えて、ある実施形態では、ソフトウェア・アプリケーションをフラッシュ記憶装置内に格納することができ、一方、別の実施形態では、ソフトウェア・アプリケーションをＲＯＭ、ハード・ディスク、またはその他のコンポーネントというような、処理装置のコンポーネント上に格納してもよい。したがって、提示したいずれの具体的な例でもなく、添付した特許請求の範囲およびその合法的な均等物だけが当然本発明を定めるべきである。
【図１】
2010538364.tif 000004
【図２】
2010538364.tif 000005
【図３】
2010538364.tif 000006
【図４】
2010538364.tif 000007
【図５】
2010538364.tif 000008
【図６】
2010538364.tif 000009
【図７】
2010538364.tif 000010
【図８】
2010538364.tif 000011
【図９】
2010538364.tif 000012
【図１０】
2010538364.tif 000013
【図１１】
2010538364.tif 000014
【図１２】
2010538364.tif 000015
【図１３】
2010538364.tif 000016
【図１４】
2010538364.tif 000017
【国際調査報告】
2010538364.tif 000018
2010538364.tif 000019