ソフトウェアの不正使用を防止するためのフラッシュ記憶装置の使用
フラッシュ記憶装置、およびソフトウェア・アプリケーションの不正使用を防止するためにフラッシュ記憶装置を使用する方法を提供する。フラッシュ記憶装置の特定セクター内には、識別子をエンコードすることができる。識別子の内ビット1を、特定セクターの内使用不可能のものとしてエンコードすることができ、識別子の内ビット0を、特定セクターの内使用可能なものとしてエンコードすることができる。あるいは、識別子の内ビット0を、特定セクターの内使用不可能な者としてエンコードすることもでき、識別子の内ビット1を、特定セクターの内使用可能なものとしてエンコードすることもできる。識別子がフラッシュ記憶装置内にエンコードされているときにのみ、フラッシュ記憶装置に接続されている処理装置上において、ソフトウェア・アプリケーションを実行することを許可することができる。
【発明の詳細な説明】
【背景技術】
【0001】
処理装置上におけるソフトウェアの不正使用を防止する従来の方法の1つでは、例えば、ユニバーサル・シリアル・バス(USB)ドングルまたはメモリー・キーのような、特殊デバイスをその処理装置に接続する必要がある。ソフトウェアは、この特殊デバイスを処理装置に接続したときでないとその処理装置上で実行することを許可しないようにすることができる。
【発明の概要】
【発明が解決しようとする課題】
【0002】
通例、このような特殊デバイスは、少数の業者(vendor)によって製造され、比較的コストが高く、ソフトウェアと共に配布しなければならない。更に、このような特殊デバイスをソフトウェアの不正使用を防止するために用いるのは、電子的に配布されるソフトウェアに関しては問題となる。
【課題を解決するための手段】
【0003】
この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために用いることも意図していない。
【0004】
本開示の主題に係る実施形態では、ソフトウェアの不正使用を防止するためのフラッシュ記憶装置、およびソフトウェアの不正使用を防止するためにフラッシュ記憶装置を用いる方法を提供する。フラッシュ記憶装置が接続されている処理装置上でソフトウェアを実行しようとすると、処理装置はライセンス情報にアクセスすることができる。ライセンス情報は、識別子を含むことができる。次いで、フラッシュ記憶装置の特定セクターにアクセスして、識別子がその中にエンコードされているか否か判断することができる。識別子の内ビット1を、特定セクターの内使用不可能のものとしてエンコードすることができ、識別子の内ビット0を、特定セクターの内使用可能なものとしてエンコードすることができる。あるいは、識別子の内ビット0を、特定セクターの内使用不可能な者としてエンコードすることもでき、識別子の内ビット1を、特定セクターの内使用可能なものとしてエンコードすることもできる。識別子がフラッシュ記憶装置内にエンコードされていると判断されたときにのみ、ソフトウェア・アプリケーションを全機能で実行することを処理装置に許可することができる。そうでなければ、処理装置は、ソフトウェアを実行することを許可されないか、または機能を制限してソフトウェアを実行することができる。
【0005】
本開示の主題にかかる実施形態によっては、例えば、ソフトウェアの所定の認可使用回数、またはソフトウェアの期限日、およびその他のライセンス条件というような、ライセンス条件を超過していないか否か判断するために、フラッシュ記憶装置内にカウンターをエンコードすることもできる。
【図面の簡単な説明】
【0006】
以上に明記した利点および特徴、ならびにその他の利点および特徴を得ることができる態様を説明するために、更に特定した説明を以下に記載し、添付図面に示すその具体的な実施形態を参照しながら説明を行う。これらの図面は典型的な実施形態のみを図示するのであり、したがってその範囲を限定するように解釈してはならないことを理解した上で、これらの添付図面を用いることによって、更に特殊性および詳細を加えて、実施態様について記載し説明する。
【図1】図1は、本開示の主題に係る実施形態に合った動作環境の一例を示す。
【図2】図2は、図1に示すサーバーまたは処理装置を実現するために用いることができる、処理装置の機能ブロック図である。
【図3】図3は、本開示の主題に係るフラッシュ記憶装置に含むことができる情報を示す。
【図4】図4は、本開示の主題に係るフラッシュ記憶装置に含むことができる情報を示す。
【図5】図5は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図6】図6は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図7】図7は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図8】図8は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図9】図9は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図10】図10は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図11】図11は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図12】図12は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図13】図13は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図14】図14は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【発明を実施するための形態】
【0007】
以下に、実施形態について詳細に論ずる。具体的な実施態様について論ずるが、これは例示のみを目的として行っていることは言うまでもない。当業者には、本開示の主題の主旨および範囲から逸脱することなく、他のコンポーネントおよび構成も使用してもよいことは認められよう。
全体像
【0008】
フラッシュ記憶装置は、容易に複製することができ、埋め込みプロセッサーや保護されているメモリーを有さない。しかしながら、フラッシュ記憶装置は、例えば、16キロビット、2キロビット、またはその他のサイズというような、特殊なサイズのメモリー・ブロック、即ち、セクターを含む。これらのセクターの各1つが使用できなくなるまでに可能な、セクターの各1つの書き込みサイクルの回数には限界がある。通例、セクターの各1つが使用不可能になるまでに、セクターの各1つは約100万回書き込むことができる。フラッシュ記憶装置の中には、100,000回またはその他の回数の書き込みというように、それぞれのセクターが使用不可能になるまでに可能な書き込みサイクルの限界回数が異なる場合もある。
【0009】
本開示の主題に係る実施形態は、フラッシュ記憶装置の特定セクターに書き込みこの特定セクターを使用不可能とすることにより、フラッシュ記憶装置の中に情報をエンコードすることができる。この情報は、使用不可能なセクターによって1ビットを表し、使用可能なセクターによって0ビットを表すことによってエンコードすることができる。実施形態によっては、この情報は、使用不可能セクターによって0ビットを表し、使用可能なセクターによって1ビットを表すことによって、エンコードできる場合もある。このようにしてエンコードされたデータは、単にフラッシュ記憶装置をコピーするだけでは、複製を作ることはできない。
【0010】
本開示の主題に係る種々の実施形態では、フラッシュ記憶装置に接続されている処理装置がライセンス情報にアクセスすることができる。ライセンス情報は識別子を含むとよい。処理装置は、フラッシュ記憶装置の特定セクターにアクセスして、識別子がその中にエンコードされているか否か判断することができる。識別子がフラッシュ記憶装置の中にエンコードされていない場合、処理装置はソフトウェア・アプリケーションを実行することができないか、または限られた機能だけでそのソフトウェア・アプリケーションを実行することができる。
【0011】
更に、ライセンス情報は、当該ライセンスの1つ又は複数の条件に関する情報も含むことができる。例えば、この情報は、有効期限日、ライセンス期間(例えば、1年、6カ月、またはその他の時間)、または所定の許可使用回数を含むことができる。この所定回数を超えると、ソフトウェア・アプリケーションを実行することが許可されないか、または限られた機能だけで実行することを許可することができる。以下で更に詳しく説明するが、1つ又は複数のライセンス期間を超えたソフトウェア・アプリケーションの不正実行を防止できるように、過ぎ去った時間期間に関する現在の状態(status)、またはソフトウェア・アプリケーションの使用回数を、識別子と同様にして、フラッシュ記憶装置内にエンコードすることができる。
【0012】
実施形態によっては、ソフトウェア・アプリケーションの活性化を実行する間に、識別子をフラッシュ記憶装置にエンコードできる場合もある。
動作環境例
【0013】
図1は、本開示の主題に係る実施形態に合わせた動作環境100の一例を示す。動作環境100は、処理装置102、フラッシュ記憶装置104、1つ又は複数のサーバー106、およびネットワーク108を含む。
【0014】
ネットワーク108は、例えば、インターネットまたはその他のネットワークのような、1つのネットワークまたはネットワークの組み合わせとすることができる。ネットワーク108は、ワイヤレス・ネットワーク、有線ネットワーク、パケット交換ネットワーク、公衆交換電気通信ネットワーク、光ファイバ・ネットワーク、その他の種類のネットワーク、または以上の内のあらゆる組み合わせでも含むことができる。
【0015】
処理装置102は、例えば、デスクトップ・パーソナル・コンピューター(PC)、ラップトップPC、ハンドヘルド処理装置、というようなユーザーの処理装置、またはその他の処理装置とすることができる。
【0016】
フラッシュ記憶装置104は、例えば、ユニバーサル・シリアル・バス(USB)フラッシュRAMデバイス、またはその他のフラッシュ記憶装置のような、再書き込み可能なリムーバブル・フラッシュ記憶装置とすることができる。これは、処理装置102に着脱可能に接続することができる。フラッシュ記憶装置104がUSBフラッシュRAMデバイスである実施形態では、USBフラッシュRAMデバイスを、処理装置102のUSBポートを通じて、処理装置102に着脱可能に接続することができる。
【0017】
サーバー106は、処理装置、または共に動作するように構成されている処理装置の集合体であってもよい。サーバー106が処理装置の集合体を含む実施形態では、これらの処理装置をサーバー・ファームとして構成することもできる。
処理装置の一例
【0018】
図2は、処理装置200の一例を示す機能ブロック図である。処理装置200は、本開示の主題に係る処理装置102および/またはサーバー106の実施形態を実現するために用いることができる。
【0019】
処理装置200は、バス210、入力デバイス220、メモリー230、リード・オンリー・メモリー(ROM)240、出力デバイス250、プロセッサー260、フラッシュ・デバイス・ポート270、および通信インターフェース280を含むことができる。バス210は、処理装置200のコンポーネント間における通信を可能にすることができる。
【0020】
プロセッサー260は、命令を解釈して実行する、少なくとも1つの従来からのプロセッサー、またマイクロプロセッサーを含むことができる。メモリー230は、ランダム・アクセス・メモリー(RAM)、またはプロセッサー260による実行のために情報および命令を格納するその他の種類のダイナミック記憶装置とすることができる。また、メモリー230は、プロセッサー260による命令の実行中に用いられる一時変数またはその他の中間情報も格納することができる。ROM240は、従来からのROMデバイス、またはプロセッサー260のための静的情報および命令を格納するその他の種類の静的記憶装置を含むことができる。フラッシュ・デバイス・ポート270は、フラッシュ記憶装置104を処理装置200に接続する手段を設けることができる。フラッシュ記憶装置104は、例えば、プロセッサー260のような、プロセッサーのためにデータおよび/または命令を格納することができる。
【0021】
入力デバイス220は、キーボードまたはその他の入力デバイスを含むことができる。出力デバイス250は、1つ又は複数の表示画面を含む情報を出力する1つ又は複数の従来からのメカニズム、またはその他の出力デバイスを含むことができる。
【0022】
通信インターフェース280は、情報をネットワーク108との間で送信および受信する送受信機を含むことができる。通信インターフェース280は、ワイヤレス接続または有線接続を通じて情報を送信および受信することができる。
【0023】
処理装置200は、例えば、メモリー230、ROM240、フラッシュ記憶装置104、またはその他の媒体というような、有形磁気読み取り可能媒体に収容されている一連の命令を実行するプロセッサー260に応答して、このような機能を実行することができる。このような命令は、他の機械読み取り可能媒体から、または別個のデバイスから通信インターフェース280を通じてメモリー230内に読み取ることができる。
フラッシュ記憶装置
【0024】
フラッシュ記憶装置104は、多数のブロックまたはセクターを含むことができる。これらのセクターの各々は、所定数のビットを含む。例えば、セクターの各々は、16キロビット、2キロビット、またはその他のビット数を含むことができる。通例、フラッシュ記憶装置104は、初期状態においてある数の使用不可能なセクターを有する場合がある。図3は、セクターに関する情報、およびフラッシュ記憶装置104の一実施形態において含むことができるその他の情報を示す。フラッシュ記憶装置104は、不良セクター302のセクター・アレイ、ライセンス情報304、およびエンコードされている情報306用のセクター・アレイを含むことができる。
【0025】
不良セクター302のセクター・アレイは、フラッシュ記憶装置104に含まれる不良セクターの物理的アドレスに関する情報を含むことができる。
【0026】
ライセンス情報304は、ソフトウェア・アプリケーションを使用するためのライセンスに関する情報を含むことができる。ライセンス情報304は、例えば、ソフトウェア・アプリケーションを含む製品を識別するための製品識別子、およびライセンス条件を含むことができる。ライセンス条件は、ソフトウェア・アプリケーションの実行が許可される条件を含むことができる。例えば、ライセンス条件は、ソフトウェア・アプリケーションの実行が許可される所定の回数、ソフトウェア・アプリケーションの実行が許可される期間(term)即ち時間期間(例えば、1年、6カ月、またはその他の時間期間)、ソフトウェア・アプリケーションの実行が許可されなくなる期限日、またはその他の条件を含むことができる。実施形態によっては、ライセンス情報304は、フラッシュ記憶装置104にエンコードすべき識別子を含むこともできる。また、ライセンス情報304は、例えば、ソフトウェア販売業者、ソフトウェア流通業者、またはその他の信頼のおける情報源というような、信頼のおける情報源の秘密鍵を用いて、ライセンス情報304に対して計算するディジタル署名を含むこともできる。
【0027】
前述のように、ライセンス情報304に含まれる識別子、またはその他の識別子というような識別子、ならびにその他の情報を、フラッシュ記憶装置104の特定セクターの中にエンコードすることができる。識別子およびその他の情報をエンコードするには、特定セクターの内使用不可能なものによって1ビットを表し、特定セクターの内使用可能なものによって0ビットを表すようにすることができる。実施形態によっては、識別子およびその他の情報は、これらのセクターの内使用不可能なものによって0ビットを表し、これらのセクターの内使用可能なものによって1ビットを表すことによってエンコードすることもできる。
【0028】
図4は、本開示の主題に係るフラッシュ記憶装置104の一実施形態におけるエンコード情報306のセクター・アレイを更に詳しく示す。フラッシュ記憶装置104は、識別子用のセクター・アレイ402、識別子に関するディジタル署名用のセクター・アレイ404、カウンターと使用するためのセクター・アレイ406、および時間期間カウンター用のセクター・アレイ408を含むことができる。
【0029】
識別子用のセクター・アレイ402は、例えば、ライセンス情報304からの識別子のような識別子、またはその他の識別子をエンコードすることができる特定のセクターに関する情報を含むことができる。識別子のディジタル署名用のセクター・アレイ404は、当該識別子について計算されたディジタル署名をエンコードすることができる特定のセクターに関する情報を含むことができる。ディジタル署名は、例えば、信頼のおける情報源の秘密鍵のような秘密鍵を用いて、識別子について計算することができる。カウンターと共に用いるためのセクター406、および時間期間カウンター408用のセクター・アレイは、ライセンス条件に関する現在の状態(status)を追跡することができるように、カウンターをエンコードするための特定のセクターに関する情報を含むことができる。これらのカウンターの使用例について、図5から図10のフローチャートを参照しながら以下で説明する。
処理例
【0030】
図5および図6は、例えば、フラッシュ記憶装置104のようなフラッシュ記憶装置が接続されている、例えば、処理装置102のような処理装置上においてソフトウェア・アプリケーションを実行しようとするときに、本開示の主題に係る実施形態において実行することができるプロセス例のフローチャートを示す。
【0031】
このプロセスは、処理装置がライセンス情報にアクセスすることから開始することができる(行為502)。ライセンス情報は、例えば、メモリー、ROM、またはその他のコンポーネントというような、処理装置のコンポーネント上に格納することができる。あるいは、ライセンス情報は、例えば、ライセンス情報304のように、フラッシュ記憶装置上に格納することもできる。ライセンス情報は、当該ソフトウェア・アプリケーションを含む製品を識別するデータ、識別子(例えば、製品を使用するライセンスに付随する識別子)、ライセンス条件(例えば、ソフトウェア・アプリケーションの所定の使用回数、例えば、1年、6カ月、またはその他の時間期間というような、ソフトウェア・アプリケーションを用いることができる時間期間、あるいはソフトウェア・アプリケーションを用いることができなくなる期限日)、またはその他の条件を含むことができる。実施形態によっては、ライセンス情報は、例えば、ソフトウェア流通業者、ソフトウェア開発者、またはその他の信頼のおける情報源というような、信頼のおける情報源の秘密鍵のような、秘密鍵によって署名されたディジタル署名を含むことができる。
【0032】
次に、処理装置は、ライセンス情報の有効性を判断することができる(行為504)。実施形態によっては、処理装置は、ライセンス情報の有効性を判断する際に、信頼のおける情報源の秘密鍵に対応する公開鍵を用いることもできる。次いで、処理装置は、ライセンス情報が有効であるか否か判断することができる(行為506)。これは、ライセンス情報の有効性判断の結果によって示される。ライセンス情報が無効であると判断された場合、処理装置はソフトウェア・アプリケーションの機能を制限するまたは不可能にすることができる(行為508)。例えば、処理装置は、ソフトウェア・アプリケーションを実行することを許可されない場合もあり、あるいは処理装置は、機能を制限して、ソフトウェア・アプリケーションを実行することができる場合もある。一実施形態では、ソフトウェア・アプリケーションの機能を制限する場合、処理装置はソフトウェア・アプリケーションの標準バージョンを実行することができ、ソフトウェア・アプリケーションの機能が制限されないまたは不可能にされない場合、処理装置は、強化バーション、即ち、プロフェッショナル・バージョンのソフトウェア・アプリケーションを実行することができる。
【0033】
行為506の間に、処理装置が、ライセンス情報が有効であると判断した場合、処理装置は、ライセンス情報またはその他の情報源から識別子を入手することができる(行為510)。実施形態によっては、識別子が一意の識別子であるとよい場合もある。処理装置は、次いで、この識別子、および当該識別子に関するディジタル署名が、フラッシュ記憶装置の中にエンコードされているか否か判断することができる(行為512)。処理装置は、この判断を下す際に、例えば、識別子用のセクター・アレイ402(図4)のような識別子用のセクター・アレイを参照し、更に、例えば、識別子のディジタル署名用のセクター・アレイ404(図4)のような当該識別子のディジタル署名用のセクター・アレイを参照することによって行うことができる。
【0034】
代替実施形態では、識別子のディジタル署名をエンコードしなくてもよく、代わりにフラッシュ記憶装置の格納部に格納すればよい。
【0035】
処理装置が、識別子がフラッシュ記憶装置の中にエンコードされていないこと、または識別子の有効なディジタル署名がフラッシュ記憶装置にエンコードまたは格納されていないことを判断した場合、処理装置は、先に論じたように、ソフトウェア・アプリケーションの機能を制限するかまたは不可能にする(行為508)。そうでない場合、処理装置は、ソフトウェア・アプリケーションの使用回数を計数するか否か判断することができる(行為514)。
【0036】
ソフトウェア・アプリケーションの使用回数は、ライセンス条件が、ソフトウェア・アプリケーションの所定の使用回数しか許可できないことを示すときに、計数すればよい。一実施形態では、使用回数を計数する場合、1つのセクターをカウンターとして用いることができ、この1つのセクターに対するある回数の書き込みを行うことができる。書き込み回数は、近似的に次のように計算することができる。
【数1】
ここで、max_writesは、セクターを使用不可能にすることになる書き込みサイクル回数であり、counting_numberは、例えば、10まで計数する場合の10のような、カウンターの最大値である。書き込み回数丁度の直後にセクターが使用不可能にならないこともあり得るので、セクターが使用不可能になることを一層確実に保証するためにマージンを含むとよい。つまり、例えば、100,000回の書き込み(max_writes)の後にセクターが書き込み不可能になることにした場合、カウンターは10(counting_number)まで計数するために用いられ、マージンを30%とすると、number_of_writesは、100,000/10×(.3+1)、即ち、13,000となる。つまり、この例では、1つのセクターに13,000回書き込むことによって、カウンターを増分することができる。counting_numberまで計数した後、セクターは使用不可能になるはずである。
【0037】
別の実施形態では、計数のために1群のセクターを用いることもできる。例えば、10まで計数する場合、10個のセクターからなる1群をカウンターとして用いることができる。各セクターは、計数時に、使用不可能にすることができる。10個のセクターから成る1群が使用不可能になると、これは、カウンターが10まで計数したことを示す。
【0038】
行為514の間に、処理装置が、ソフトウェア・アプリケーションの使用回数を計数することを決定した場合、処理装置は、使用許可回数がいくらかでも残っているか否か判断することができる(図6の行為602)。そのソフトウェア・アプリケーションには、使用許可回数が残っていない場合、処理装置は、行為508に関して既に論じたように、このソフトウェア・アプリケーションの機能を制限するかまたは不可能にすることができる(行為604)。そうでない場合、処理装置は使用回数を計数することができる(行為606)。先に論じたように、処理装置は、使用回数を計数する際、それぞれのセクターに書き込んでそれぞれのセクターを使用不可能にするか、またはある回数の書き込みを1つのセクターに対して行うことにより、所定の使用回数を計数した後、その1つのセクターが使用不可能となるようにすることができる。
【0039】
図7は、行為606を実行するプロセス606−1の一例を示すフローチャートである。このプロセスは、処理装置が、使用回数を計数するためにどのセクターを用いるか決定すること(行為702)から開始することができる。一実施形態では、処理装置は、カウンター406(図4)と共に用いるセクター・アレイにアクセスすることができる。このセクター・アレイは、カウンターとして用いるために確保してあるセクターに関する情報、および次に使用するカウンター用のセクターへのポインターを含むことができる。つまり、例えば、セクター1−20を使用カウンターとして用い、セクター1−6が既に計数のために使用されて使用不可能となっている場合、ポインターは、計数の目的に用いるために、セクター7を指し示すことができる。
【0040】
計数に使用するために用いるセクターを決定した後、処理装置は、セクターを使用不可能にするために、このセクターに対して多数回の書き込みを行うことができる(行為704)。次いで、処理装置は、次に使用するカウンター用のセクターへのポインターに関する情報を更新することができる(行為706)。セクター1〜20を使用カウンターのために用いることができる前述の例に関しては、計数の目的でセクター7を使用した後、計数が次に行われるときにセクター8を使用不可能にすることができるように、ポインターはセクター8を指し示すように設定することができる。
【0041】
図8は、行為606を実行するプロセッサー602−2の第2の例を示すフローチャートである。このプロセス例は、1つのセクターをカウンターとして用い、先に論じた式1(equation 1)にしたがって計数を実行する。このプロセスは、処理装置が計数の目的で使用するセクターを決定すること(行為802)から開始することができる。一実施形態では、処理装置は、カウンター406(図4)と共に用いるセクター・アレイにアクセスすることができる。このセクター・アレイは、使用カウンターとして用いるために確保したセクターに関する情報を含むことができる。また、処理装置は、セクターに関して実行する書き込み回数に関する情報も入手することができる。この情報は、カウンター406と共に用いるセクター・アレイに含めることができ、あるいは他の場所に格納してもよい。次いで、所定の使用回数を計数した後にこのセクターが使用不可能になるように、処理装置はこのセクターに対して前述の回数の書き込みを実行することができる(行為804)。
【0042】
図6に戻って、行為606を実行した後、またはソフトウェア・アプリケーションの使用回数を計数すべきでないと判断した(行為514)後、処理装置は、時間期間を計時すべきか否か判断することができる(行為608)。一実施形態では、処理装置は、時間期間カウンター408(図4)のセクター・アレイにアクセスすることによって、この判断を行うことができる。これには、時間期間カウンターとして用いるフラッシュ記憶装置のセクターに関する情報を含むことができる。通例、時間期間カウンターは、例えば、日、週、月、年、またはその他の時間期間というような、多数の時間期間を計時することができる。このため、例えば、18カ月というような特定の時間期間にわたってソフトウェア・アプリケーションを使用することができる場合、例えば、時間期間カウンターは月数を計数するために用いることができる。処理装置が、時間期間カウンターを用いないと判断した場合、処理装置は最大限の機能でソフトウェア・アプリケーションを実行することができる(行為614)。
【0043】
行為608の間に、処理装置が、時間期間カウンターを用いると判断した場合、処理装置は、例えば、18カ月のライセンス期間の場合、18カ月のような、ライセンス情報に関する時間期間の最大数を既に計数したか否か判断することができる(行為610)。時間期間が残っていない場合(例えば、18カ月のライセンス期間に対して、18カ月が既に過ぎている)、処理装置は、先に論じたように、ソフトウェア・アプリケーションの機能を制限または不可能にすることができる(行為604)。それ以外の場合、時間期間を計時することができ(行為612)、処理装置は、最大限の機能でソフトウェア・アプリケーションを実行することができる。
【0044】
一実施形態では、それぞれのセクターに書き込んでそれぞれのセクターを使用不可能にすることによって、時間期間を計時することができる。例えば、18の時間期間を計時するには、セクターが使用不可能になるまでに18のセクターに書き込むことができる。他の実施形態では、1つのセクターに書き込むことができ、式1に関して先に説明したように、例えば、18時間期間のような所定数の時間期間、またはその他の何らかの数の時間期間の経過後に、その1つのセクターが使用不可能となるようにすることもできる。
【0045】
図9は、本開示の主題に係る一実施形態において行為612を実行するプロセス612−1の一例を示すフローチャートである。このプロセスは、時間期間が経過したか否か処理装置が判断する(行為902)ことから開始することができる。時間期間は、日、週、月、年、またはその他の時間期間とすることができる。処理装置は、この判断を下す際、システム・クロックを参照し、システム・クロックの現在値を、時間期間の開始時におけるシステム・クロックの値と比較すればよい。
【0046】
処理装置が、時間期間が経過したと判断した場合、処理装置は、時間期間を計時するために用いるセクターを決定することができる(行為904)。一実施形態では、処理装置は時間期間カウンター408(図4)のセクター・アレイにアクセスすることができる。セクター・アレイには、時間期間カウンターのために確保されているセクターに関する情報、および次の時間期間カウンター用のセクターへのポインターを含むことができる。つまり、例えば、時間期間カウンターにセクター1〜24を用いることとし、セクター1〜10が既に計時のために用いられており使用不可能とされている場合、ポインターは、時間期間計時の目的で用いるために、セクター11を指し示すことができる。
【0047】
時間期間計時のために用いるセクターを決定した後、処理装置は、そのセクターを使用不可能にするために、そのセクターに多数回の書き込みを実行することができる(行為906)。次いで、処理装置は、次の時間期間カウンター用のセクターへのポインターに関する情報を更新することができる(行為908)。セクター1〜24を時間期間カウンターとして用いることができる前述の例に関して、セクター10を時間期間計時に用いた後、時間期間計時を次に実行しようとするときにセクター11を使用不可能にすることができるように、セクター11を指し示すようにポインターを設定することができる。
【0048】
図10は、行為612を実行する第2プロセス612−2の一例を示すフローチャートである。このプロセス例は、1つのセクターを時間期間カウンターとして用い、先に論じた式1にしたがって計時を実行することができる。このプロセスは、時間期間が過ぎたか否か処理装置が判断すること(行為1002)から開始することができる。処理装置が、時間期間が過ぎたと判断した場合、処理装置は時間期間計時の目的で用いるセクターを決定することができる(行為1004)。一実施形態では、処理装置は、時間期間カウンター408(図4)用のセクター・アレイにアクセスすることができる。時間期間カウンター408は、時間期間カウンターとして用いるために確保してあるセクターに関する情報を含むことができる。また、処理装置は、このセクターに関して実行する書き込み回数に関する情報も入手することができる。この情報は、時間期間カウンター408用のセクター・アレイに含めることができ、または他の場所に格納してもよい。次いで、処理装置は、所定数の時間期間を計時した後にセクターが使用不可能となるように、セクターに前述の回数の書き込みを実行することができる(行為1006)。
【0049】
図6に戻って、処理装置は次にソフトウェア・アプリケーションを全機能で実行することができる(行為614)。
【0050】
実施形態によっては、ソフトウェア・アプリケーションを処理装置上にインストールした後、ソフトウェア・アプリケーションの実行を認可する(authorize)または許可するためにフラッシュ記憶装置を有することなく、処理装置に所定の回数までソフトウェア・アプリケーションを実行することを許可してもよい。このため、例えば、ユーザーはソフトウェア・アプリケーションを電子的に処理装置にダウンロードすることができ、ソフトウェアを処理装置にインストールすることができ、フラッシュ記憶装置を有することなく、所定の回数までソフトウェア・アプリケーションを実行することができる。
【0051】
図11は、このような実施形態において実行することができるプロセスの一例を示す。このプロセスは、ソフトウェア・アプリケーションの現在の使用回数が、ソフトウェア・アプリケーションの認可された所定の使用回数未満であるか否か処理装置が判断すること(行為1102)から開始することができる。所定の認可使用回数は、ライセンス情報にアクセスすることによって入手することができ、ライセンス情報は処理装置上に格納することができる。
【0052】
ソフトウェア・アプリケーションの現在の使用回数が、所定の認可使用回数未満でない場合、ソフトウェア・アプリケーションの機能をディスエーブルまたは制限することができる(行為1104)。例えば、処理装置はソフトウェア・アプリケーションを全く実行することができないか、または処理装置はソフトウェア・アプリケーションを、制限された機能のみで実行することができる。
【0053】
行為1102において、処理装置が、現在の使用回数が所定の許可使用回数未満であると判断した場合、処理装置は、現在の使用回数のカウントを増分することができ(行為1106)、ソフトウェア・アプリケーションを最大の機能で実行させることができる(行為1108)。
【0054】
図12および図13は、本開示の主題に係る別の実施形態において実行することができるプロセスの一例を示すフローチャートである。この実施形態では、識別子を部分的にフラッシュ記憶装置のセクターにエンコードすることができる。例えば、書き込みサイクルがセクターに許可されている最大数に達して、そのセクターが使用不可能になると、(許容書き込みサイクル最大回数−W)用の特定セクターに書き込むことによって、識別子の「1」ビットを部分的にフラッシュ記憶装置の特定セクターにエンコードすることができる。ここで、Wは、例えば、50%というような許容書き込みサイクル最大回数のある割合、またはその他の値にほぼ等しい整数である。このため、エンコードされた識別子を隠すことができるように、特定セクターの全てが使用可能状態にあってもよい。エンコードされている識別子を読み出すためには、ある回数の書き込みサイクルを特定セクターに対して実行すればよい。例えば、W回の書き込みサイクルを特定セクターに対して実行すると、識別子の「1」ビットで表す、特定セクターを使用不可能にすることができる。代替実施形態では、識別子の「0」ビットをフラッシュ記憶装置の特定セクターに部分的にエンコードすることもできる。
【0055】
識別子は多数の要素を有することができる。これらの要素の各々は、時間期間に対応することができる。初期状態では、識別子の全ての要素を隠すことができる(即ち、識別子のこれらの要素を表すセクターの全てが使用可能であってもよい)。現在の時刻に対応する識別子の要素を表すために用いられる対応の特定セクターに対して書き込みサイクルを実行することによって、識別子のこの要素を公開することができる。次の時間期間に達したときに、識別子の次の要素を表すために用いられている対応の特定セクターに対して書き込みサイクルを実行することによって、識別子の次の要素を公開することができる。ずっと先の時間期間に対応する識別子の要素が公開された場合、ハッカーによる攻撃の可能性が示され、識別子を無効と見なすことができる。
【0056】
図12のフローチャートに関して、本プロセスは、例えば、処理装置102のような処理装置がライセンス情報にアクセスすること(行為1202)から開始することができる。ライセンス情報は、例えば、メモリー、ROM、またはその他のコンポーネントというような、処理装置のコンポーネント上に格納することができる。あるいは、ライセンス情報は、例えば、ライセンス情報304のように、フラッシュ記憶装置内に格納することもできる。ライセンス情報は、ソフトウェア・アプリケーションを含む製品を識別するデータ、識別子(例えば、その製品を使用するライセンスに付随する識別子)、およびライセンスが有効である時間を含むことができる。この識別子は、多数の要素を含むことができ、ライセンスが有効な全時間を構成する各時間期間毎に1つずつの要素がある。実施形態によっては、ライセンス情報が、例えば、ソフトウェア流通業者、ソフトウェア開発業者のような信頼のおける情報源、またはその他の信頼のおける情報源の、例えば、秘密鍵のような秘密鍵によって署名された、ディジタル署名を含むことができる。
【0057】
次に、処理装置はライセンス情報の有効性を判断することができる(行為1204)。実施形態によっては、処理装置は、信頼のおける情報源の秘密鍵に対応する公開鍵を用いることによって、ライセンス情報の有効性を判断することができる。次いで、処理装置は、ライセンス情報が有効か否か判断することができる(行為1206)。これは、ライセンス情報の有効性判断の結果によって示される。ライセンス情報が無効であると判断された場合、処理装置は、ソフトウェア・アプリケーションの機能を制限またはディスエーブルすることができる(行為1208)。例えば、処理装置は、ソフトウェア・アプリケーションを実行することを許可されない可能性があり、あるいは処理装置は、機能を制限して、ソフトウェア・アプリケーションを実行できる場合もある。一実施形態では、ソフトウェア・アプリケーションの機能が制限される場合、処理装置は、ソフトウェア・アプリケーションの標準バージョンを実行することができ、ソフトウェア・アプリケーションの機能性が制限もディスエーブルもされない場合、処理装置は、ソフトウェア・アプリケーションの拡張バージョンまたはプロフェッショナル・バージョンを実行することができる。
【0058】
行為1206において、処理装置がライセンス情報が有効であると判断した場合、処理装置は、ライセンス情報またはその他の情報源から識別子を入手することができる(行為1210)。実施形態によっては、識別子は一意の識別子であるとよい場合がある。次いで、処理装置は、識別子がフラッシュ記憶装置内にエンコードされているか否か判断することができる(行為1212)。処理装置は、この判断を下すにあたって、例えば、識別子402用のセクター・アレイ(図4)のような識別子用のセクター・アレイを参照することができる。
【0059】
図13は、一実施形態における行為1212に関する処理の一例を示す。最初に、処理装置は、新たな時間期間が開始しているか否か判断することができる(行為1302)。新たな時間期間が開始している場合、処理装置は、識別子の余分な部分があるか否か判断することができる(行為1304)。識別子の余分な部分がない場合、処理装置は、識別子がエンコードされていないことを示すことができる(行為1306)。これは、アプリケーションを実行するための認可が許可された時間期間を超えて、ソフトウェア・アプリケーションを実行しようとしたことを示すことができる。それ以外の場合、処理装置は、次の時間期間に対応する、識別子の次の部分のための特定セクターを決定することができる(行為1306)。実施形態によっては、識別子の次の部分のための特定セクターを決定するには、例えば、識別子402用のセクター・アレイのようなセクター・アレイを参照すればよい。次いで、処理装置は、識別子の次の部分(ここでは、現在の部分)の「1」ビット、または識別子の次の部分の「0」ビットのいずれかを表す特定セクターに、ある回数の書き込みサイクルを実行することができる(行為1308)。書き込みサイクルの回数は、許可された書き込みサイクルの最大回数未満であり、(書き込みサイクルに許可された最大回数−W)よりも大きくするとよい。ここで、Wは整数値である。行為1308を実行した後、特定セクターの内使用不可能なものによって、識別子の次の部分を公開することができる。
【0060】
行為1302において、処理装置が、新たな時間期間が開始していないと判断した場合、または行為1308において、特定セクターに対して前述の回数の書き込みサイクルが実行された場合、処理装置は、識別子の現在の部分が使用不可能なセクターによってエンコードされているか否か判断することができる(行為1310)。処理装置が、識別子の現在の部分がエンコードされていないと判断した場合、処理装置は、識別子がエンコードされていないことを示すことができる(行為1316)。そうでない場合、処理装置は、ずっと先の時間期間に対する識別子のいずれかの部分がエンコードされているか否か判断することができる(行為1312)。ずっと先の時間期間中に使用するための識別子の部分のいずれかがエンコードされている場合、ずっと先の時間期間に対応する識別子のエンコードされている部分は、ハッカーによる攻撃を示す場合がある。したがって、ずっと先の時間期間のいずれかに対応する識別子の部分のいずれかがエンコードされている場合、処理装置は、識別子がエンコードされていないことを示し(行為1316)、不正使用を示すことができる。ずっと先の時間期間に対応する識別子の部分全てがエンコードされていない場合、処理装置は、識別子がエンコードされていることを示し(行為1314)、正規の使用であることを示すことができる。
【0061】
図12に戻り、行為1212において、処理装置が、識別子の現在の部分がフラッシュ記憶装置内にエンコードされていれると判断した場合、処理装置は、ソフトウェア・アプリケーションを最大限の機能で実行することを許可することができる(行為1214)。そうでない場合、処理装置はソフトウェア・アプリケーションの機能を制限またはディスエーブルすることができる(行為1208)。
【0062】
図12および図13に関して説明した実施形態の一例として、識別子が36の要素を有し、各要素が16ビットであり、全長が576ビットであると仮定する。識別子の要素の各々は、1カ月のアプリケーション使用に対応することができる。その結果、アプリケーションには36カ月の使用を認可することができる。更に、100万回の書き込みサイクルによって、フラッシュ記憶装置の1セクターが使用不可能になると仮定する。アプリケーションを最初に起動し活性化したとき、アプリケーションは、行為1310に関して説明したように、識別子の最初の16ビット部分の「1」ビットまたは「0」ビットに対応する特定セクターに対して、ある回数の書き込みを実行することによって、識別子の最初の16ビット部分を公開することができる。アプリケーションは、識別子の最初の16ビット部分が、ライセンス情報に含まれる識別子の対応する16ビット部分と一致することを確認する(validate)ことができる。アプリケーションが、今後の月数の1つに対応する16ビット部分が公開されていると判断すると、アプリケーションをディスエーブルすることができ、あるいは機能を制限して実行することができる。1カ月後、アプリケーションは識別子の次の16ビット部分を公開することができ、識別子の次の16ビット部分が、ライセンス情報に含まれる識別子の対応する16ビット部分と一致することを確認することができる。
【0063】
本開示の主題にかかる実施形態によっては、フラッシュ記憶装置は、例えば、処理装置102のようなユーザーの処理装置を通じて、前述のように、ソフトウェア・アプリケーションと共に用いるためにエンコードすることができる。図14は、このような実施形態において実行することができるプロセスの一例を示す。このプロセスは、ソフトウェア・アプリケーションの実行を活性化する、即ち、イネーブルする活性化プロセスの一部とすることができる。
【0064】
このプロセスは、処理装置が製品情報を、例えば、サーバー106のような第2処理装置に送ることから開始することができる(行為1402)。製品情報は、ソフトウェア・アプリケーションを含む製品を識別する情報を含むことができる。処理装置は、第2処理装置から、製品情報の送付に応答して、ライセンス情報および識別子情報を受信することができる(行為1404)。実施形態によっては、ライセンス情報が識別子、およびライセンスの1つ又は複数の条件に関する情報を含む場合もある。更に、ライセンス情報には、信頼のおける情報源の秘密鍵を用いて、ディジタル署名がされているとよい。実施形態によっては、識別子は、信頼のおける情報源の秘密鍵を用いて、別個のディジタル署名を有することもできる。
【0065】
次いで、処理装置は、ライセンス情報および識別子情報の有効性を判断することができる(行為1406)。実施形態によっては、処理装置は、信頼のおける情報源の秘密鍵に対応する公開鍵を用いて、ライセンス情報および識別子情報の有効性を判断することもできる。処理装置は、有効性判断の結果に基づいて、ライセンス情報および識別子情報が有効か否か判断することができる(行為1408)。ライセンス情報および識別子情報が有効でないと判断された場合、処理装置はエラー・メッセージをユーザーに提示することができる(行為1410)。そうでない場合、処理装置は、識別子および対応するディジタル署名を、処理装置に接続されているフラッシュ記憶装置にエンコードすることができる(行為1412)。処理装置は、フラッシュ記憶装置の特定セクターに書き込むことによって、エンコード処理を実行して特定セクターを使用不可能にすることができ、あるいは、前述のように、特定セクターを使用可能のままにすることもできるが、ある回数の書き込みサイクルを特定セクターに対して実行することによってエンコード処理を公開し、これらを使用不可能にすることもできる。例えば、使用不可能なセクターによって1ビットを表し、使用可能なセクターによって0ビットを表すことによって、識別子およびディジタル署名をエンコードすることができる。実施形態によっては、使用不可能なセクターによって0ビットを表し、使用可能なセクターによって1ビットを表すことによって、情報をエンコードすることもできる。ライセンス情報は、フラッシュ記憶装置上または処理装置上のいずれかに格納することができる(行為1414)。
【0066】
次に、処理装置は、ライセンス情報から、使用カウンターおよび/または時間期間カウンターを使用すべきか否か判断することができる(行為1416)。例えば、ライセンス情報が、ソフトウェア・アプリケーションを所定の回数だけ実行できることを示す場合、使用カウンターを用いるとよい。ソフトウェア・アプリケーションを実行する認可が特定の時間期間後または期限日後に消滅することをライセンス情報が示す場合、時間期間カウンターを用いるとよい。
【0067】
次いで、処理装置は、識別子およびカウンターに関して1つ又は複数のセクター・アレイを作成することができ、更に、セクターに対して実行する書き込み回数に関する情報、システム・クロックまたはその他の時間測定器具のようなクロックに関する時間期間の長さ(日、週、年等)、あるいはその他の情報を格納することができる(行為1418)。
結論
【0068】
汎用フラッシュ記憶装置を用いてソフトウェアの不正使用を防止すれば、USBドングルまたはメモリー・キーのような特殊デバイスを必要とする方法よりも、少ない費用で済む。更に、ソフトウェアの不正使用を防止するために、ユーザーが供給するフラッシュ記憶装置を用いる方法は、そのソフトウェアと共に特殊化したデバイスを配達することを不要にし、電子的に流通するソフトウェアを不正使用から保護する実用的な方法である。
【0069】
構造的機構および/または方法論的行動(act)に特定的なことばで、主題について説明したが、添付する特許請求の範囲において定義する主題は、必ずしも前述した特定的な機構や行動には限定されないことは言うまでもない。むしろ、前述した特定的な機構や行動は、特許請求の範囲を実現する形態の例として開示したに過ぎない。
【0070】
以上の説明は具体的な詳細を内包する場合もあるが、これらが特許請求の範囲を限定するように解釈しては決してならない。記載した実施形態の他の構成が、本開示の範囲の一部となる。更に、本開示の主題に係る実施態様は、記載した行為よりも多いまたは少ない行為を有してもよく、あるいは図示した順序とは異なる順序で行為を実施してもよい。加えて、ある実施形態では、ソフトウェア・アプリケーションをフラッシュ記憶装置内に格納することができ、一方、別の実施形態では、ソフトウェア・アプリケーションをROM、ハード・ディスク、またはその他のコンポーネントというような、処理装置のコンポーネント上に格納してもよい。したがって、提示したいずれの具体的な例でもなく、添付した特許請求の範囲およびその合法的な均等物だけが当然本発明を定めるべきである。
【背景技術】
【0001】
処理装置上におけるソフトウェアの不正使用を防止する従来の方法の1つでは、例えば、ユニバーサル・シリアル・バス(USB)ドングルまたはメモリー・キーのような、特殊デバイスをその処理装置に接続する必要がある。ソフトウェアは、この特殊デバイスを処理装置に接続したときでないとその処理装置上で実行することを許可しないようにすることができる。
【発明の概要】
【発明が解決しようとする課題】
【0002】
通例、このような特殊デバイスは、少数の業者(vendor)によって製造され、比較的コストが高く、ソフトウェアと共に配布しなければならない。更に、このような特殊デバイスをソフトウェアの不正使用を防止するために用いるのは、電子的に配布されるソフトウェアに関しては問題となる。
【課題を解決するための手段】
【0003】
この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために用いることも意図していない。
【0004】
本開示の主題に係る実施形態では、ソフトウェアの不正使用を防止するためのフラッシュ記憶装置、およびソフトウェアの不正使用を防止するためにフラッシュ記憶装置を用いる方法を提供する。フラッシュ記憶装置が接続されている処理装置上でソフトウェアを実行しようとすると、処理装置はライセンス情報にアクセスすることができる。ライセンス情報は、識別子を含むことができる。次いで、フラッシュ記憶装置の特定セクターにアクセスして、識別子がその中にエンコードされているか否か判断することができる。識別子の内ビット1を、特定セクターの内使用不可能のものとしてエンコードすることができ、識別子の内ビット0を、特定セクターの内使用可能なものとしてエンコードすることができる。あるいは、識別子の内ビット0を、特定セクターの内使用不可能な者としてエンコードすることもでき、識別子の内ビット1を、特定セクターの内使用可能なものとしてエンコードすることもできる。識別子がフラッシュ記憶装置内にエンコードされていると判断されたときにのみ、ソフトウェア・アプリケーションを全機能で実行することを処理装置に許可することができる。そうでなければ、処理装置は、ソフトウェアを実行することを許可されないか、または機能を制限してソフトウェアを実行することができる。
【0005】
本開示の主題にかかる実施形態によっては、例えば、ソフトウェアの所定の認可使用回数、またはソフトウェアの期限日、およびその他のライセンス条件というような、ライセンス条件を超過していないか否か判断するために、フラッシュ記憶装置内にカウンターをエンコードすることもできる。
【図面の簡単な説明】
【0006】
以上に明記した利点および特徴、ならびにその他の利点および特徴を得ることができる態様を説明するために、更に特定した説明を以下に記載し、添付図面に示すその具体的な実施形態を参照しながら説明を行う。これらの図面は典型的な実施形態のみを図示するのであり、したがってその範囲を限定するように解釈してはならないことを理解した上で、これらの添付図面を用いることによって、更に特殊性および詳細を加えて、実施態様について記載し説明する。
【図1】図1は、本開示の主題に係る実施形態に合った動作環境の一例を示す。
【図2】図2は、図1に示すサーバーまたは処理装置を実現するために用いることができる、処理装置の機能ブロック図である。
【図3】図3は、本開示の主題に係るフラッシュ記憶装置に含むことができる情報を示す。
【図4】図4は、本開示の主題に係るフラッシュ記憶装置に含むことができる情報を示す。
【図5】図5は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図6】図6は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図7】図7は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図8】図8は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図9】図9は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図10】図10は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図11】図11は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図12】図12は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図13】図13は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【図14】図14は、本開示の主題に係る実施形態において実行することができるプロセス例を示すフローチャートである。
【発明を実施するための形態】
【0007】
以下に、実施形態について詳細に論ずる。具体的な実施態様について論ずるが、これは例示のみを目的として行っていることは言うまでもない。当業者には、本開示の主題の主旨および範囲から逸脱することなく、他のコンポーネントおよび構成も使用してもよいことは認められよう。
全体像
【0008】
フラッシュ記憶装置は、容易に複製することができ、埋め込みプロセッサーや保護されているメモリーを有さない。しかしながら、フラッシュ記憶装置は、例えば、16キロビット、2キロビット、またはその他のサイズというような、特殊なサイズのメモリー・ブロック、即ち、セクターを含む。これらのセクターの各1つが使用できなくなるまでに可能な、セクターの各1つの書き込みサイクルの回数には限界がある。通例、セクターの各1つが使用不可能になるまでに、セクターの各1つは約100万回書き込むことができる。フラッシュ記憶装置の中には、100,000回またはその他の回数の書き込みというように、それぞれのセクターが使用不可能になるまでに可能な書き込みサイクルの限界回数が異なる場合もある。
【0009】
本開示の主題に係る実施形態は、フラッシュ記憶装置の特定セクターに書き込みこの特定セクターを使用不可能とすることにより、フラッシュ記憶装置の中に情報をエンコードすることができる。この情報は、使用不可能なセクターによって1ビットを表し、使用可能なセクターによって0ビットを表すことによってエンコードすることができる。実施形態によっては、この情報は、使用不可能セクターによって0ビットを表し、使用可能なセクターによって1ビットを表すことによって、エンコードできる場合もある。このようにしてエンコードされたデータは、単にフラッシュ記憶装置をコピーするだけでは、複製を作ることはできない。
【0010】
本開示の主題に係る種々の実施形態では、フラッシュ記憶装置に接続されている処理装置がライセンス情報にアクセスすることができる。ライセンス情報は識別子を含むとよい。処理装置は、フラッシュ記憶装置の特定セクターにアクセスして、識別子がその中にエンコードされているか否か判断することができる。識別子がフラッシュ記憶装置の中にエンコードされていない場合、処理装置はソフトウェア・アプリケーションを実行することができないか、または限られた機能だけでそのソフトウェア・アプリケーションを実行することができる。
【0011】
更に、ライセンス情報は、当該ライセンスの1つ又は複数の条件に関する情報も含むことができる。例えば、この情報は、有効期限日、ライセンス期間(例えば、1年、6カ月、またはその他の時間)、または所定の許可使用回数を含むことができる。この所定回数を超えると、ソフトウェア・アプリケーションを実行することが許可されないか、または限られた機能だけで実行することを許可することができる。以下で更に詳しく説明するが、1つ又は複数のライセンス期間を超えたソフトウェア・アプリケーションの不正実行を防止できるように、過ぎ去った時間期間に関する現在の状態(status)、またはソフトウェア・アプリケーションの使用回数を、識別子と同様にして、フラッシュ記憶装置内にエンコードすることができる。
【0012】
実施形態によっては、ソフトウェア・アプリケーションの活性化を実行する間に、識別子をフラッシュ記憶装置にエンコードできる場合もある。
動作環境例
【0013】
図1は、本開示の主題に係る実施形態に合わせた動作環境100の一例を示す。動作環境100は、処理装置102、フラッシュ記憶装置104、1つ又は複数のサーバー106、およびネットワーク108を含む。
【0014】
ネットワーク108は、例えば、インターネットまたはその他のネットワークのような、1つのネットワークまたはネットワークの組み合わせとすることができる。ネットワーク108は、ワイヤレス・ネットワーク、有線ネットワーク、パケット交換ネットワーク、公衆交換電気通信ネットワーク、光ファイバ・ネットワーク、その他の種類のネットワーク、または以上の内のあらゆる組み合わせでも含むことができる。
【0015】
処理装置102は、例えば、デスクトップ・パーソナル・コンピューター(PC)、ラップトップPC、ハンドヘルド処理装置、というようなユーザーの処理装置、またはその他の処理装置とすることができる。
【0016】
フラッシュ記憶装置104は、例えば、ユニバーサル・シリアル・バス(USB)フラッシュRAMデバイス、またはその他のフラッシュ記憶装置のような、再書き込み可能なリムーバブル・フラッシュ記憶装置とすることができる。これは、処理装置102に着脱可能に接続することができる。フラッシュ記憶装置104がUSBフラッシュRAMデバイスである実施形態では、USBフラッシュRAMデバイスを、処理装置102のUSBポートを通じて、処理装置102に着脱可能に接続することができる。
【0017】
サーバー106は、処理装置、または共に動作するように構成されている処理装置の集合体であってもよい。サーバー106が処理装置の集合体を含む実施形態では、これらの処理装置をサーバー・ファームとして構成することもできる。
処理装置の一例
【0018】
図2は、処理装置200の一例を示す機能ブロック図である。処理装置200は、本開示の主題に係る処理装置102および/またはサーバー106の実施形態を実現するために用いることができる。
【0019】
処理装置200は、バス210、入力デバイス220、メモリー230、リード・オンリー・メモリー(ROM)240、出力デバイス250、プロセッサー260、フラッシュ・デバイス・ポート270、および通信インターフェース280を含むことができる。バス210は、処理装置200のコンポーネント間における通信を可能にすることができる。
【0020】
プロセッサー260は、命令を解釈して実行する、少なくとも1つの従来からのプロセッサー、またマイクロプロセッサーを含むことができる。メモリー230は、ランダム・アクセス・メモリー(RAM)、またはプロセッサー260による実行のために情報および命令を格納するその他の種類のダイナミック記憶装置とすることができる。また、メモリー230は、プロセッサー260による命令の実行中に用いられる一時変数またはその他の中間情報も格納することができる。ROM240は、従来からのROMデバイス、またはプロセッサー260のための静的情報および命令を格納するその他の種類の静的記憶装置を含むことができる。フラッシュ・デバイス・ポート270は、フラッシュ記憶装置104を処理装置200に接続する手段を設けることができる。フラッシュ記憶装置104は、例えば、プロセッサー260のような、プロセッサーのためにデータおよび/または命令を格納することができる。
【0021】
入力デバイス220は、キーボードまたはその他の入力デバイスを含むことができる。出力デバイス250は、1つ又は複数の表示画面を含む情報を出力する1つ又は複数の従来からのメカニズム、またはその他の出力デバイスを含むことができる。
【0022】
通信インターフェース280は、情報をネットワーク108との間で送信および受信する送受信機を含むことができる。通信インターフェース280は、ワイヤレス接続または有線接続を通じて情報を送信および受信することができる。
【0023】
処理装置200は、例えば、メモリー230、ROM240、フラッシュ記憶装置104、またはその他の媒体というような、有形磁気読み取り可能媒体に収容されている一連の命令を実行するプロセッサー260に応答して、このような機能を実行することができる。このような命令は、他の機械読み取り可能媒体から、または別個のデバイスから通信インターフェース280を通じてメモリー230内に読み取ることができる。
フラッシュ記憶装置
【0024】
フラッシュ記憶装置104は、多数のブロックまたはセクターを含むことができる。これらのセクターの各々は、所定数のビットを含む。例えば、セクターの各々は、16キロビット、2キロビット、またはその他のビット数を含むことができる。通例、フラッシュ記憶装置104は、初期状態においてある数の使用不可能なセクターを有する場合がある。図3は、セクターに関する情報、およびフラッシュ記憶装置104の一実施形態において含むことができるその他の情報を示す。フラッシュ記憶装置104は、不良セクター302のセクター・アレイ、ライセンス情報304、およびエンコードされている情報306用のセクター・アレイを含むことができる。
【0025】
不良セクター302のセクター・アレイは、フラッシュ記憶装置104に含まれる不良セクターの物理的アドレスに関する情報を含むことができる。
【0026】
ライセンス情報304は、ソフトウェア・アプリケーションを使用するためのライセンスに関する情報を含むことができる。ライセンス情報304は、例えば、ソフトウェア・アプリケーションを含む製品を識別するための製品識別子、およびライセンス条件を含むことができる。ライセンス条件は、ソフトウェア・アプリケーションの実行が許可される条件を含むことができる。例えば、ライセンス条件は、ソフトウェア・アプリケーションの実行が許可される所定の回数、ソフトウェア・アプリケーションの実行が許可される期間(term)即ち時間期間(例えば、1年、6カ月、またはその他の時間期間)、ソフトウェア・アプリケーションの実行が許可されなくなる期限日、またはその他の条件を含むことができる。実施形態によっては、ライセンス情報304は、フラッシュ記憶装置104にエンコードすべき識別子を含むこともできる。また、ライセンス情報304は、例えば、ソフトウェア販売業者、ソフトウェア流通業者、またはその他の信頼のおける情報源というような、信頼のおける情報源の秘密鍵を用いて、ライセンス情報304に対して計算するディジタル署名を含むこともできる。
【0027】
前述のように、ライセンス情報304に含まれる識別子、またはその他の識別子というような識別子、ならびにその他の情報を、フラッシュ記憶装置104の特定セクターの中にエンコードすることができる。識別子およびその他の情報をエンコードするには、特定セクターの内使用不可能なものによって1ビットを表し、特定セクターの内使用可能なものによって0ビットを表すようにすることができる。実施形態によっては、識別子およびその他の情報は、これらのセクターの内使用不可能なものによって0ビットを表し、これらのセクターの内使用可能なものによって1ビットを表すことによってエンコードすることもできる。
【0028】
図4は、本開示の主題に係るフラッシュ記憶装置104の一実施形態におけるエンコード情報306のセクター・アレイを更に詳しく示す。フラッシュ記憶装置104は、識別子用のセクター・アレイ402、識別子に関するディジタル署名用のセクター・アレイ404、カウンターと使用するためのセクター・アレイ406、および時間期間カウンター用のセクター・アレイ408を含むことができる。
【0029】
識別子用のセクター・アレイ402は、例えば、ライセンス情報304からの識別子のような識別子、またはその他の識別子をエンコードすることができる特定のセクターに関する情報を含むことができる。識別子のディジタル署名用のセクター・アレイ404は、当該識別子について計算されたディジタル署名をエンコードすることができる特定のセクターに関する情報を含むことができる。ディジタル署名は、例えば、信頼のおける情報源の秘密鍵のような秘密鍵を用いて、識別子について計算することができる。カウンターと共に用いるためのセクター406、および時間期間カウンター408用のセクター・アレイは、ライセンス条件に関する現在の状態(status)を追跡することができるように、カウンターをエンコードするための特定のセクターに関する情報を含むことができる。これらのカウンターの使用例について、図5から図10のフローチャートを参照しながら以下で説明する。
処理例
【0030】
図5および図6は、例えば、フラッシュ記憶装置104のようなフラッシュ記憶装置が接続されている、例えば、処理装置102のような処理装置上においてソフトウェア・アプリケーションを実行しようとするときに、本開示の主題に係る実施形態において実行することができるプロセス例のフローチャートを示す。
【0031】
このプロセスは、処理装置がライセンス情報にアクセスすることから開始することができる(行為502)。ライセンス情報は、例えば、メモリー、ROM、またはその他のコンポーネントというような、処理装置のコンポーネント上に格納することができる。あるいは、ライセンス情報は、例えば、ライセンス情報304のように、フラッシュ記憶装置上に格納することもできる。ライセンス情報は、当該ソフトウェア・アプリケーションを含む製品を識別するデータ、識別子(例えば、製品を使用するライセンスに付随する識別子)、ライセンス条件(例えば、ソフトウェア・アプリケーションの所定の使用回数、例えば、1年、6カ月、またはその他の時間期間というような、ソフトウェア・アプリケーションを用いることができる時間期間、あるいはソフトウェア・アプリケーションを用いることができなくなる期限日)、またはその他の条件を含むことができる。実施形態によっては、ライセンス情報は、例えば、ソフトウェア流通業者、ソフトウェア開発者、またはその他の信頼のおける情報源というような、信頼のおける情報源の秘密鍵のような、秘密鍵によって署名されたディジタル署名を含むことができる。
【0032】
次に、処理装置は、ライセンス情報の有効性を判断することができる(行為504)。実施形態によっては、処理装置は、ライセンス情報の有効性を判断する際に、信頼のおける情報源の秘密鍵に対応する公開鍵を用いることもできる。次いで、処理装置は、ライセンス情報が有効であるか否か判断することができる(行為506)。これは、ライセンス情報の有効性判断の結果によって示される。ライセンス情報が無効であると判断された場合、処理装置はソフトウェア・アプリケーションの機能を制限するまたは不可能にすることができる(行為508)。例えば、処理装置は、ソフトウェア・アプリケーションを実行することを許可されない場合もあり、あるいは処理装置は、機能を制限して、ソフトウェア・アプリケーションを実行することができる場合もある。一実施形態では、ソフトウェア・アプリケーションの機能を制限する場合、処理装置はソフトウェア・アプリケーションの標準バージョンを実行することができ、ソフトウェア・アプリケーションの機能が制限されないまたは不可能にされない場合、処理装置は、強化バーション、即ち、プロフェッショナル・バージョンのソフトウェア・アプリケーションを実行することができる。
【0033】
行為506の間に、処理装置が、ライセンス情報が有効であると判断した場合、処理装置は、ライセンス情報またはその他の情報源から識別子を入手することができる(行為510)。実施形態によっては、識別子が一意の識別子であるとよい場合もある。処理装置は、次いで、この識別子、および当該識別子に関するディジタル署名が、フラッシュ記憶装置の中にエンコードされているか否か判断することができる(行為512)。処理装置は、この判断を下す際に、例えば、識別子用のセクター・アレイ402(図4)のような識別子用のセクター・アレイを参照し、更に、例えば、識別子のディジタル署名用のセクター・アレイ404(図4)のような当該識別子のディジタル署名用のセクター・アレイを参照することによって行うことができる。
【0034】
代替実施形態では、識別子のディジタル署名をエンコードしなくてもよく、代わりにフラッシュ記憶装置の格納部に格納すればよい。
【0035】
処理装置が、識別子がフラッシュ記憶装置の中にエンコードされていないこと、または識別子の有効なディジタル署名がフラッシュ記憶装置にエンコードまたは格納されていないことを判断した場合、処理装置は、先に論じたように、ソフトウェア・アプリケーションの機能を制限するかまたは不可能にする(行為508)。そうでない場合、処理装置は、ソフトウェア・アプリケーションの使用回数を計数するか否か判断することができる(行為514)。
【0036】
ソフトウェア・アプリケーションの使用回数は、ライセンス条件が、ソフトウェア・アプリケーションの所定の使用回数しか許可できないことを示すときに、計数すればよい。一実施形態では、使用回数を計数する場合、1つのセクターをカウンターとして用いることができ、この1つのセクターに対するある回数の書き込みを行うことができる。書き込み回数は、近似的に次のように計算することができる。
【数1】
ここで、max_writesは、セクターを使用不可能にすることになる書き込みサイクル回数であり、counting_numberは、例えば、10まで計数する場合の10のような、カウンターの最大値である。書き込み回数丁度の直後にセクターが使用不可能にならないこともあり得るので、セクターが使用不可能になることを一層確実に保証するためにマージンを含むとよい。つまり、例えば、100,000回の書き込み(max_writes)の後にセクターが書き込み不可能になることにした場合、カウンターは10(counting_number)まで計数するために用いられ、マージンを30%とすると、number_of_writesは、100,000/10×(.3+1)、即ち、13,000となる。つまり、この例では、1つのセクターに13,000回書き込むことによって、カウンターを増分することができる。counting_numberまで計数した後、セクターは使用不可能になるはずである。
【0037】
別の実施形態では、計数のために1群のセクターを用いることもできる。例えば、10まで計数する場合、10個のセクターからなる1群をカウンターとして用いることができる。各セクターは、計数時に、使用不可能にすることができる。10個のセクターから成る1群が使用不可能になると、これは、カウンターが10まで計数したことを示す。
【0038】
行為514の間に、処理装置が、ソフトウェア・アプリケーションの使用回数を計数することを決定した場合、処理装置は、使用許可回数がいくらかでも残っているか否か判断することができる(図6の行為602)。そのソフトウェア・アプリケーションには、使用許可回数が残っていない場合、処理装置は、行為508に関して既に論じたように、このソフトウェア・アプリケーションの機能を制限するかまたは不可能にすることができる(行為604)。そうでない場合、処理装置は使用回数を計数することができる(行為606)。先に論じたように、処理装置は、使用回数を計数する際、それぞれのセクターに書き込んでそれぞれのセクターを使用不可能にするか、またはある回数の書き込みを1つのセクターに対して行うことにより、所定の使用回数を計数した後、その1つのセクターが使用不可能となるようにすることができる。
【0039】
図7は、行為606を実行するプロセス606−1の一例を示すフローチャートである。このプロセスは、処理装置が、使用回数を計数するためにどのセクターを用いるか決定すること(行為702)から開始することができる。一実施形態では、処理装置は、カウンター406(図4)と共に用いるセクター・アレイにアクセスすることができる。このセクター・アレイは、カウンターとして用いるために確保してあるセクターに関する情報、および次に使用するカウンター用のセクターへのポインターを含むことができる。つまり、例えば、セクター1−20を使用カウンターとして用い、セクター1−6が既に計数のために使用されて使用不可能となっている場合、ポインターは、計数の目的に用いるために、セクター7を指し示すことができる。
【0040】
計数に使用するために用いるセクターを決定した後、処理装置は、セクターを使用不可能にするために、このセクターに対して多数回の書き込みを行うことができる(行為704)。次いで、処理装置は、次に使用するカウンター用のセクターへのポインターに関する情報を更新することができる(行為706)。セクター1〜20を使用カウンターのために用いることができる前述の例に関しては、計数の目的でセクター7を使用した後、計数が次に行われるときにセクター8を使用不可能にすることができるように、ポインターはセクター8を指し示すように設定することができる。
【0041】
図8は、行為606を実行するプロセッサー602−2の第2の例を示すフローチャートである。このプロセス例は、1つのセクターをカウンターとして用い、先に論じた式1(equation 1)にしたがって計数を実行する。このプロセスは、処理装置が計数の目的で使用するセクターを決定すること(行為802)から開始することができる。一実施形態では、処理装置は、カウンター406(図4)と共に用いるセクター・アレイにアクセスすることができる。このセクター・アレイは、使用カウンターとして用いるために確保したセクターに関する情報を含むことができる。また、処理装置は、セクターに関して実行する書き込み回数に関する情報も入手することができる。この情報は、カウンター406と共に用いるセクター・アレイに含めることができ、あるいは他の場所に格納してもよい。次いで、所定の使用回数を計数した後にこのセクターが使用不可能になるように、処理装置はこのセクターに対して前述の回数の書き込みを実行することができる(行為804)。
【0042】
図6に戻って、行為606を実行した後、またはソフトウェア・アプリケーションの使用回数を計数すべきでないと判断した(行為514)後、処理装置は、時間期間を計時すべきか否か判断することができる(行為608)。一実施形態では、処理装置は、時間期間カウンター408(図4)のセクター・アレイにアクセスすることによって、この判断を行うことができる。これには、時間期間カウンターとして用いるフラッシュ記憶装置のセクターに関する情報を含むことができる。通例、時間期間カウンターは、例えば、日、週、月、年、またはその他の時間期間というような、多数の時間期間を計時することができる。このため、例えば、18カ月というような特定の時間期間にわたってソフトウェア・アプリケーションを使用することができる場合、例えば、時間期間カウンターは月数を計数するために用いることができる。処理装置が、時間期間カウンターを用いないと判断した場合、処理装置は最大限の機能でソフトウェア・アプリケーションを実行することができる(行為614)。
【0043】
行為608の間に、処理装置が、時間期間カウンターを用いると判断した場合、処理装置は、例えば、18カ月のライセンス期間の場合、18カ月のような、ライセンス情報に関する時間期間の最大数を既に計数したか否か判断することができる(行為610)。時間期間が残っていない場合(例えば、18カ月のライセンス期間に対して、18カ月が既に過ぎている)、処理装置は、先に論じたように、ソフトウェア・アプリケーションの機能を制限または不可能にすることができる(行為604)。それ以外の場合、時間期間を計時することができ(行為612)、処理装置は、最大限の機能でソフトウェア・アプリケーションを実行することができる。
【0044】
一実施形態では、それぞれのセクターに書き込んでそれぞれのセクターを使用不可能にすることによって、時間期間を計時することができる。例えば、18の時間期間を計時するには、セクターが使用不可能になるまでに18のセクターに書き込むことができる。他の実施形態では、1つのセクターに書き込むことができ、式1に関して先に説明したように、例えば、18時間期間のような所定数の時間期間、またはその他の何らかの数の時間期間の経過後に、その1つのセクターが使用不可能となるようにすることもできる。
【0045】
図9は、本開示の主題に係る一実施形態において行為612を実行するプロセス612−1の一例を示すフローチャートである。このプロセスは、時間期間が経過したか否か処理装置が判断する(行為902)ことから開始することができる。時間期間は、日、週、月、年、またはその他の時間期間とすることができる。処理装置は、この判断を下す際、システム・クロックを参照し、システム・クロックの現在値を、時間期間の開始時におけるシステム・クロックの値と比較すればよい。
【0046】
処理装置が、時間期間が経過したと判断した場合、処理装置は、時間期間を計時するために用いるセクターを決定することができる(行為904)。一実施形態では、処理装置は時間期間カウンター408(図4)のセクター・アレイにアクセスすることができる。セクター・アレイには、時間期間カウンターのために確保されているセクターに関する情報、および次の時間期間カウンター用のセクターへのポインターを含むことができる。つまり、例えば、時間期間カウンターにセクター1〜24を用いることとし、セクター1〜10が既に計時のために用いられており使用不可能とされている場合、ポインターは、時間期間計時の目的で用いるために、セクター11を指し示すことができる。
【0047】
時間期間計時のために用いるセクターを決定した後、処理装置は、そのセクターを使用不可能にするために、そのセクターに多数回の書き込みを実行することができる(行為906)。次いで、処理装置は、次の時間期間カウンター用のセクターへのポインターに関する情報を更新することができる(行為908)。セクター1〜24を時間期間カウンターとして用いることができる前述の例に関して、セクター10を時間期間計時に用いた後、時間期間計時を次に実行しようとするときにセクター11を使用不可能にすることができるように、セクター11を指し示すようにポインターを設定することができる。
【0048】
図10は、行為612を実行する第2プロセス612−2の一例を示すフローチャートである。このプロセス例は、1つのセクターを時間期間カウンターとして用い、先に論じた式1にしたがって計時を実行することができる。このプロセスは、時間期間が過ぎたか否か処理装置が判断すること(行為1002)から開始することができる。処理装置が、時間期間が過ぎたと判断した場合、処理装置は時間期間計時の目的で用いるセクターを決定することができる(行為1004)。一実施形態では、処理装置は、時間期間カウンター408(図4)用のセクター・アレイにアクセスすることができる。時間期間カウンター408は、時間期間カウンターとして用いるために確保してあるセクターに関する情報を含むことができる。また、処理装置は、このセクターに関して実行する書き込み回数に関する情報も入手することができる。この情報は、時間期間カウンター408用のセクター・アレイに含めることができ、または他の場所に格納してもよい。次いで、処理装置は、所定数の時間期間を計時した後にセクターが使用不可能となるように、セクターに前述の回数の書き込みを実行することができる(行為1006)。
【0049】
図6に戻って、処理装置は次にソフトウェア・アプリケーションを全機能で実行することができる(行為614)。
【0050】
実施形態によっては、ソフトウェア・アプリケーションを処理装置上にインストールした後、ソフトウェア・アプリケーションの実行を認可する(authorize)または許可するためにフラッシュ記憶装置を有することなく、処理装置に所定の回数までソフトウェア・アプリケーションを実行することを許可してもよい。このため、例えば、ユーザーはソフトウェア・アプリケーションを電子的に処理装置にダウンロードすることができ、ソフトウェアを処理装置にインストールすることができ、フラッシュ記憶装置を有することなく、所定の回数までソフトウェア・アプリケーションを実行することができる。
【0051】
図11は、このような実施形態において実行することができるプロセスの一例を示す。このプロセスは、ソフトウェア・アプリケーションの現在の使用回数が、ソフトウェア・アプリケーションの認可された所定の使用回数未満であるか否か処理装置が判断すること(行為1102)から開始することができる。所定の認可使用回数は、ライセンス情報にアクセスすることによって入手することができ、ライセンス情報は処理装置上に格納することができる。
【0052】
ソフトウェア・アプリケーションの現在の使用回数が、所定の認可使用回数未満でない場合、ソフトウェア・アプリケーションの機能をディスエーブルまたは制限することができる(行為1104)。例えば、処理装置はソフトウェア・アプリケーションを全く実行することができないか、または処理装置はソフトウェア・アプリケーションを、制限された機能のみで実行することができる。
【0053】
行為1102において、処理装置が、現在の使用回数が所定の許可使用回数未満であると判断した場合、処理装置は、現在の使用回数のカウントを増分することができ(行為1106)、ソフトウェア・アプリケーションを最大の機能で実行させることができる(行為1108)。
【0054】
図12および図13は、本開示の主題に係る別の実施形態において実行することができるプロセスの一例を示すフローチャートである。この実施形態では、識別子を部分的にフラッシュ記憶装置のセクターにエンコードすることができる。例えば、書き込みサイクルがセクターに許可されている最大数に達して、そのセクターが使用不可能になると、(許容書き込みサイクル最大回数−W)用の特定セクターに書き込むことによって、識別子の「1」ビットを部分的にフラッシュ記憶装置の特定セクターにエンコードすることができる。ここで、Wは、例えば、50%というような許容書き込みサイクル最大回数のある割合、またはその他の値にほぼ等しい整数である。このため、エンコードされた識別子を隠すことができるように、特定セクターの全てが使用可能状態にあってもよい。エンコードされている識別子を読み出すためには、ある回数の書き込みサイクルを特定セクターに対して実行すればよい。例えば、W回の書き込みサイクルを特定セクターに対して実行すると、識別子の「1」ビットで表す、特定セクターを使用不可能にすることができる。代替実施形態では、識別子の「0」ビットをフラッシュ記憶装置の特定セクターに部分的にエンコードすることもできる。
【0055】
識別子は多数の要素を有することができる。これらの要素の各々は、時間期間に対応することができる。初期状態では、識別子の全ての要素を隠すことができる(即ち、識別子のこれらの要素を表すセクターの全てが使用可能であってもよい)。現在の時刻に対応する識別子の要素を表すために用いられる対応の特定セクターに対して書き込みサイクルを実行することによって、識別子のこの要素を公開することができる。次の時間期間に達したときに、識別子の次の要素を表すために用いられている対応の特定セクターに対して書き込みサイクルを実行することによって、識別子の次の要素を公開することができる。ずっと先の時間期間に対応する識別子の要素が公開された場合、ハッカーによる攻撃の可能性が示され、識別子を無効と見なすことができる。
【0056】
図12のフローチャートに関して、本プロセスは、例えば、処理装置102のような処理装置がライセンス情報にアクセスすること(行為1202)から開始することができる。ライセンス情報は、例えば、メモリー、ROM、またはその他のコンポーネントというような、処理装置のコンポーネント上に格納することができる。あるいは、ライセンス情報は、例えば、ライセンス情報304のように、フラッシュ記憶装置内に格納することもできる。ライセンス情報は、ソフトウェア・アプリケーションを含む製品を識別するデータ、識別子(例えば、その製品を使用するライセンスに付随する識別子)、およびライセンスが有効である時間を含むことができる。この識別子は、多数の要素を含むことができ、ライセンスが有効な全時間を構成する各時間期間毎に1つずつの要素がある。実施形態によっては、ライセンス情報が、例えば、ソフトウェア流通業者、ソフトウェア開発業者のような信頼のおける情報源、またはその他の信頼のおける情報源の、例えば、秘密鍵のような秘密鍵によって署名された、ディジタル署名を含むことができる。
【0057】
次に、処理装置はライセンス情報の有効性を判断することができる(行為1204)。実施形態によっては、処理装置は、信頼のおける情報源の秘密鍵に対応する公開鍵を用いることによって、ライセンス情報の有効性を判断することができる。次いで、処理装置は、ライセンス情報が有効か否か判断することができる(行為1206)。これは、ライセンス情報の有効性判断の結果によって示される。ライセンス情報が無効であると判断された場合、処理装置は、ソフトウェア・アプリケーションの機能を制限またはディスエーブルすることができる(行為1208)。例えば、処理装置は、ソフトウェア・アプリケーションを実行することを許可されない可能性があり、あるいは処理装置は、機能を制限して、ソフトウェア・アプリケーションを実行できる場合もある。一実施形態では、ソフトウェア・アプリケーションの機能が制限される場合、処理装置は、ソフトウェア・アプリケーションの標準バージョンを実行することができ、ソフトウェア・アプリケーションの機能性が制限もディスエーブルもされない場合、処理装置は、ソフトウェア・アプリケーションの拡張バージョンまたはプロフェッショナル・バージョンを実行することができる。
【0058】
行為1206において、処理装置がライセンス情報が有効であると判断した場合、処理装置は、ライセンス情報またはその他の情報源から識別子を入手することができる(行為1210)。実施形態によっては、識別子は一意の識別子であるとよい場合がある。次いで、処理装置は、識別子がフラッシュ記憶装置内にエンコードされているか否か判断することができる(行為1212)。処理装置は、この判断を下すにあたって、例えば、識別子402用のセクター・アレイ(図4)のような識別子用のセクター・アレイを参照することができる。
【0059】
図13は、一実施形態における行為1212に関する処理の一例を示す。最初に、処理装置は、新たな時間期間が開始しているか否か判断することができる(行為1302)。新たな時間期間が開始している場合、処理装置は、識別子の余分な部分があるか否か判断することができる(行為1304)。識別子の余分な部分がない場合、処理装置は、識別子がエンコードされていないことを示すことができる(行為1306)。これは、アプリケーションを実行するための認可が許可された時間期間を超えて、ソフトウェア・アプリケーションを実行しようとしたことを示すことができる。それ以外の場合、処理装置は、次の時間期間に対応する、識別子の次の部分のための特定セクターを決定することができる(行為1306)。実施形態によっては、識別子の次の部分のための特定セクターを決定するには、例えば、識別子402用のセクター・アレイのようなセクター・アレイを参照すればよい。次いで、処理装置は、識別子の次の部分(ここでは、現在の部分)の「1」ビット、または識別子の次の部分の「0」ビットのいずれかを表す特定セクターに、ある回数の書き込みサイクルを実行することができる(行為1308)。書き込みサイクルの回数は、許可された書き込みサイクルの最大回数未満であり、(書き込みサイクルに許可された最大回数−W)よりも大きくするとよい。ここで、Wは整数値である。行為1308を実行した後、特定セクターの内使用不可能なものによって、識別子の次の部分を公開することができる。
【0060】
行為1302において、処理装置が、新たな時間期間が開始していないと判断した場合、または行為1308において、特定セクターに対して前述の回数の書き込みサイクルが実行された場合、処理装置は、識別子の現在の部分が使用不可能なセクターによってエンコードされているか否か判断することができる(行為1310)。処理装置が、識別子の現在の部分がエンコードされていないと判断した場合、処理装置は、識別子がエンコードされていないことを示すことができる(行為1316)。そうでない場合、処理装置は、ずっと先の時間期間に対する識別子のいずれかの部分がエンコードされているか否か判断することができる(行為1312)。ずっと先の時間期間中に使用するための識別子の部分のいずれかがエンコードされている場合、ずっと先の時間期間に対応する識別子のエンコードされている部分は、ハッカーによる攻撃を示す場合がある。したがって、ずっと先の時間期間のいずれかに対応する識別子の部分のいずれかがエンコードされている場合、処理装置は、識別子がエンコードされていないことを示し(行為1316)、不正使用を示すことができる。ずっと先の時間期間に対応する識別子の部分全てがエンコードされていない場合、処理装置は、識別子がエンコードされていることを示し(行為1314)、正規の使用であることを示すことができる。
【0061】
図12に戻り、行為1212において、処理装置が、識別子の現在の部分がフラッシュ記憶装置内にエンコードされていれると判断した場合、処理装置は、ソフトウェア・アプリケーションを最大限の機能で実行することを許可することができる(行為1214)。そうでない場合、処理装置はソフトウェア・アプリケーションの機能を制限またはディスエーブルすることができる(行為1208)。
【0062】
図12および図13に関して説明した実施形態の一例として、識別子が36の要素を有し、各要素が16ビットであり、全長が576ビットであると仮定する。識別子の要素の各々は、1カ月のアプリケーション使用に対応することができる。その結果、アプリケーションには36カ月の使用を認可することができる。更に、100万回の書き込みサイクルによって、フラッシュ記憶装置の1セクターが使用不可能になると仮定する。アプリケーションを最初に起動し活性化したとき、アプリケーションは、行為1310に関して説明したように、識別子の最初の16ビット部分の「1」ビットまたは「0」ビットに対応する特定セクターに対して、ある回数の書き込みを実行することによって、識別子の最初の16ビット部分を公開することができる。アプリケーションは、識別子の最初の16ビット部分が、ライセンス情報に含まれる識別子の対応する16ビット部分と一致することを確認する(validate)ことができる。アプリケーションが、今後の月数の1つに対応する16ビット部分が公開されていると判断すると、アプリケーションをディスエーブルすることができ、あるいは機能を制限して実行することができる。1カ月後、アプリケーションは識別子の次の16ビット部分を公開することができ、識別子の次の16ビット部分が、ライセンス情報に含まれる識別子の対応する16ビット部分と一致することを確認することができる。
【0063】
本開示の主題にかかる実施形態によっては、フラッシュ記憶装置は、例えば、処理装置102のようなユーザーの処理装置を通じて、前述のように、ソフトウェア・アプリケーションと共に用いるためにエンコードすることができる。図14は、このような実施形態において実行することができるプロセスの一例を示す。このプロセスは、ソフトウェア・アプリケーションの実行を活性化する、即ち、イネーブルする活性化プロセスの一部とすることができる。
【0064】
このプロセスは、処理装置が製品情報を、例えば、サーバー106のような第2処理装置に送ることから開始することができる(行為1402)。製品情報は、ソフトウェア・アプリケーションを含む製品を識別する情報を含むことができる。処理装置は、第2処理装置から、製品情報の送付に応答して、ライセンス情報および識別子情報を受信することができる(行為1404)。実施形態によっては、ライセンス情報が識別子、およびライセンスの1つ又は複数の条件に関する情報を含む場合もある。更に、ライセンス情報には、信頼のおける情報源の秘密鍵を用いて、ディジタル署名がされているとよい。実施形態によっては、識別子は、信頼のおける情報源の秘密鍵を用いて、別個のディジタル署名を有することもできる。
【0065】
次いで、処理装置は、ライセンス情報および識別子情報の有効性を判断することができる(行為1406)。実施形態によっては、処理装置は、信頼のおける情報源の秘密鍵に対応する公開鍵を用いて、ライセンス情報および識別子情報の有効性を判断することもできる。処理装置は、有効性判断の結果に基づいて、ライセンス情報および識別子情報が有効か否か判断することができる(行為1408)。ライセンス情報および識別子情報が有効でないと判断された場合、処理装置はエラー・メッセージをユーザーに提示することができる(行為1410)。そうでない場合、処理装置は、識別子および対応するディジタル署名を、処理装置に接続されているフラッシュ記憶装置にエンコードすることができる(行為1412)。処理装置は、フラッシュ記憶装置の特定セクターに書き込むことによって、エンコード処理を実行して特定セクターを使用不可能にすることができ、あるいは、前述のように、特定セクターを使用可能のままにすることもできるが、ある回数の書き込みサイクルを特定セクターに対して実行することによってエンコード処理を公開し、これらを使用不可能にすることもできる。例えば、使用不可能なセクターによって1ビットを表し、使用可能なセクターによって0ビットを表すことによって、識別子およびディジタル署名をエンコードすることができる。実施形態によっては、使用不可能なセクターによって0ビットを表し、使用可能なセクターによって1ビットを表すことによって、情報をエンコードすることもできる。ライセンス情報は、フラッシュ記憶装置上または処理装置上のいずれかに格納することができる(行為1414)。
【0066】
次に、処理装置は、ライセンス情報から、使用カウンターおよび/または時間期間カウンターを使用すべきか否か判断することができる(行為1416)。例えば、ライセンス情報が、ソフトウェア・アプリケーションを所定の回数だけ実行できることを示す場合、使用カウンターを用いるとよい。ソフトウェア・アプリケーションを実行する認可が特定の時間期間後または期限日後に消滅することをライセンス情報が示す場合、時間期間カウンターを用いるとよい。
【0067】
次いで、処理装置は、識別子およびカウンターに関して1つ又は複数のセクター・アレイを作成することができ、更に、セクターに対して実行する書き込み回数に関する情報、システム・クロックまたはその他の時間測定器具のようなクロックに関する時間期間の長さ(日、週、年等)、あるいはその他の情報を格納することができる(行為1418)。
結論
【0068】
汎用フラッシュ記憶装置を用いてソフトウェアの不正使用を防止すれば、USBドングルまたはメモリー・キーのような特殊デバイスを必要とする方法よりも、少ない費用で済む。更に、ソフトウェアの不正使用を防止するために、ユーザーが供給するフラッシュ記憶装置を用いる方法は、そのソフトウェアと共に特殊化したデバイスを配達することを不要にし、電子的に流通するソフトウェアを不正使用から保護する実用的な方法である。
【0069】
構造的機構および/または方法論的行動(act)に特定的なことばで、主題について説明したが、添付する特許請求の範囲において定義する主題は、必ずしも前述した特定的な機構や行動には限定されないことは言うまでもない。むしろ、前述した特定的な機構や行動は、特許請求の範囲を実現する形態の例として開示したに過ぎない。
【0070】
以上の説明は具体的な詳細を内包する場合もあるが、これらが特許請求の範囲を限定するように解釈しては決してならない。記載した実施形態の他の構成が、本開示の範囲の一部となる。更に、本開示の主題に係る実施態様は、記載した行為よりも多いまたは少ない行為を有してもよく、あるいは図示した順序とは異なる順序で行為を実施してもよい。加えて、ある実施形態では、ソフトウェア・アプリケーションをフラッシュ記憶装置内に格納することができ、一方、別の実施形態では、ソフトウェア・アプリケーションをROM、ハード・ディスク、またはその他のコンポーネントというような、処理装置のコンポーネント上に格納してもよい。したがって、提示したいずれの具体的な例でもなく、添付した特許請求の範囲およびその合法的な均等物だけが当然本発明を定めるべきである。
【特許請求の範囲】
【請求項1】
ソフトウェアの不正使用を防止するためにフラッシュ記憶装置を用いる機械実装方法であって、
前記ソフトウェアの使用に関するライセンス情報にアクセスするステップであって、前記ライセンス情報が識別子を含む、ステップ(502、510)と、
前記フラッシュ記憶装置の特定記憶セクターにアクセスして、前記特定セクターの内使用不可能なものによって1ビットが表され、前記特定セクターの内使用可能なものによって0ビットが表されるように、または前記特定セクターの内使用不可能なものによって0ビットが表され、前記特定セクターの内使用可能なものによって1ビットが表されるように、前記識別子がその中にエンコードされているか否か判断するステップ(402、512)と、
前記フラッシュ記憶装置の前記特定セクター内に前記識別子がエンコードされていない場合、前記ソフトウェアの使用を禁止するステップ(508)と、
を備えている、機械実装方法。
【請求項2】
請求項1記載の機械実装方法において、
前記ライセンス情報は、信頼のおける情報源によってディジタル的に署名されており、
前記方法は、更に、
前記ライセンス情報が、前記信頼のおける情報源の有効なディジタル署名を含むか否か判断するステップと、
前記ライセンス情報が、前記信頼のおける情報源の有効なディジタル署名を含んでいない場合、前記ソフトウェアの使用を禁止するステップと、
を備えている、機械実装方法。
【請求項3】
請求項1記載の機械実装方法であって、更に、
前記フラッシュ記憶装置の前記特定記憶セクターにアクセスして、前記識別子に関する有効なディジタル署名がその中にエンコードされているか否か判断するステップと、
前記識別子に関する前記有効なディジタル署名が、前記フラッシュ記憶装置の前記特定セクター内にエンコードされていない場合、前記ソフトウェアの使用を禁止するステップと、
を備えている、機械実装方法。
【請求項4】
請求項1記載の機械実装方法において、前記ライセンス情報は前記フラッシュ記憶装置内に格納されている、機械実装方法。
【請求項5】
請求項1記載の機械実装方法において、前記ライセンス情報は、処理装置のコンポーネントの中に格納されており、前記処理装置には前記フラッシュ記憶装置が接続されている、機械実装方法。
【請求項6】
請求項1記載の機械実装方法において、
前記ライセンス情報は、前記ソフトウェアの所定の使用回数を含み、前記機械実装方法は、更に、
前記フラッシュ記憶装置の少なくとも1つのセクターに対して複数回の書き込みを実行することによって、前記ソフトウェアの各使用を計数し、前記ソフトウェアの所定回数の使用を計数した後、前記少なくとも1つのセクターを使用不可能にするステップと、
前記少なくとも1つのセクターが使用不可能か否か判断するステップと、
前記少なくとも1つのセクターが使用不可能であると判断した場合、前記ソフトウェアの使用を禁止するステップと、
を備えている、機械実装方法。
【請求項7】
請求項1記載の機械実装方法において、
前記ライセンス情報は期限日を含み、
前記機械実装方法は、更に、
前記フラッシュ記憶装置の複数のセクターの内それぞれの1つに対して複数回の書き込みを実行することによって、複数の時間期間の各々の経過を計時して、前記複数のセクターの内それぞれの1つを使用不可能にするステップと、
前記複数のセクターの内使用不可能となったそれぞれのセクターの数を判定するステップと、
前記複数のセクターの内前記判定した使用不可能なものの数が、前記期限日の経過を示す場合、前記ソフトウェアの使用を禁止するステップと、
を備えている、機械実装方法。
【請求項8】
請求項1記載の機械実装方法であって、更に、
処理装置上における前記ソフトウェアの活性化の間に、前記フラッシュ記憶装置の前記特定記憶セクターに前記識別子をエンコードするステップを備えている、機械実装方法。
【請求項9】
ソフトウェア・アプリケーションの機能を制限またはディスエーブルするためにフラッシュ記憶装置を使用する機械実装方法であって、
前記ソフトウェア・アプリケーションの使用に関するライセンス情報にアクセスするステップであって、前記ライセンス情報が、前記フラッシュ記憶装置上、または前記フラッシュ記憶装置が接続されている処理装置のコンポーネント上の一方に位置し、前記ライセンス情報が識別子を含む、ステップ(502)と、
前記ライセンス情報の有効性を判断するステップ(504)と、
前記フラッシュ記憶装置の特定記憶セクターにアクセスして、前記特定セクターの内使用不可能なものによって1ビットが表され、前記特定セクターの内使用可能なものによって0ビットが表されるように、または前記特定セクターの内使用不可能なものによって0ビットが表され、前記特定セクターの内使用可能なものによって1ビットが表されるように、前記識別子がその中にエンコードされているか否か判断するステップ(402、510、512)と、
前記フラッシュ記憶装置の前記特定セクター内に前記識別子がエンコードされていない場合、前記ソフトウェア・アプリケーションの機能を制限またはディスエーブルするステップ(508)と、
を備えている、機械実装方法。
【請求項10】
請求項9記載の機械実装方法であって、更に、
第1の所定使用回数の間、前記ソフトウェア・アプリケーションを全機能で実行することを許可するステップを備えている、機械実装方法。
【請求項11】
請求項9記載の機械実装方法において、
前記識別子は、多数の要素を含み、
前記機械実装方法は、特定の時間周期で、前記識別子の複数の要素の各々を公開するステップを備えている、機械実装方法。
【請求項12】
請求項9記載の機械実装方法において、
前記ソフトウェア・アプリケーションの機能が制限されているとき、前記ソフトウェア・アプリケーションの標準的機能をイネーブルし、
前記ソフトウェア・アプリケーションの機能がディスエーブルされておらず、かつ制限されてない場合、前記ソフトウェア・アプリケーションの拡張機能をイネーブルする、機械実装方法。
【請求項13】
請求項9記載の機械実装方法において、前記ソフトウェア・アプリケーションは、前記フラッシュ記憶装置上に格納されている、機械実装方法。
【請求項14】
請求項9記載の機械実装方法であって、更に、
前記ソフトウェアの活性化の間に、前記フラッシュ記憶装置の前記特定記憶セクターに、前記識別子と当該識別子のディジタル署名とをエンコードするステップを備えている、機械実装方法。
【請求項15】
請求項9記載の機械実装方法であって、更に、
前記フラッシュ記憶装置の少なくとも1つのセクターの内それぞれの1つに対して複数回の書き込みを実行することによって、複数の時間期間の各々の経過を計時して、前記少なくとも1つのセクターの内それぞれの1つを使用不可能にするステップと、
前記複少なくとも1つのセクターの内使用不可能なセクターの数が、前記ライセンス情報によって示される期限日の経過を示す場合、前記ソフトウェア・アプリケーションの使用を制限またはディスエーブルするステップと、
を備えている、機械実装方法。
【請求項16】
ソフトウェア・アプリケーションの機能を制限する、前記ソフトウェア・アプリケーションの機能をディスエーブルする、または前記ソフトウェア・アプリケーションの全機能をイネーブルするためのフラッシュ記憶装置(104)であって、前記ソフトウェア・アプリケーションは、前記フラッシュ記憶装置が接続されている処理装置上において実行され、前記フラッシュ記憶装置は、
前記ソフトウェア・アプリケーションに関して当該フラッシュ記憶装置上に格納されているライセンス情報であって、識別子を含む、ライセンス情報(304、402、1414)と、
前記ライセンス情報に含まれる前記識別子に対応するエンコード済み識別子であって、前記フラッシュ記憶装置の前記特定セクターの内使用不可能なものによって前記エンコードされている識別子の1ビットが表され、前記フラッシュ記憶装置の前記特定セクターの内使用可能なものによって前記エンコードされている識別子の0ビットが表されるように、または前記フラッシュ記憶装置の前記特定セクターの内使用不可能なものによって前記エンコードされている識別子の0ビットが表され、前記フラッシュ記憶装置の前記特定セクターの内使用可能なものによって前記エンコードされている識別子の1ビットが表されるように前記フラッシュ記憶装置内にエンコードされており、前記エンコード済み識別子が前記ライセンス情報に含まれる識別子と一致するときにのみ、前記ソフトウェア・アプリケーションの全機能をイネーブルする、エンコード済み識別子(306、1412、512、614)と、
を備えている、フラッシュ記憶装置。
【請求項17】
請求項16記載のフラッシュ記憶装置であって、更に、
前記識別子に対して計算され、前記フラッシュ記憶装置の特定セクター内にエンコードされている、信頼のおける情報源のディジタル署名を備えており、前記エンコードされているディジタル署名が、前記信頼のおける情報源からのものであると判断されたときのみ、前記ソフトウェア・アプリケーションの全機能をイネーブルする、フラッシュ記憶装置。
【請求項18】
請求項16記載のフラッシュ記憶装置において、
前記ライセンス情報は、前記ソフトウェア・アプリケーションの使用許可回数に関する情報を含み、
前記フラッシュ記憶装置の少なくとも1つのセクターの内使用不可能なものは、前記使用許可回数が過ぎたか否かを示す、フラッシュ記憶装置。
【請求項19】
請求項16記載のフラッシュ記憶装置であって、更に、
当該フラッシュ記憶装置内に格納されている前記ソフトウェア・アプリケーションを備えている、フラッシュ記憶装置。
【請求項20】
請求項16記載のフラッシュ記憶装置において、
前記ライセンス情報は、前記ソフトウェア・アプリケーションの使用についてのライセンス期限日に関する情報を含み、
前記フラッシュ記憶装置の少なくとも1つのセクターの内使用不可能なものは、前記期限日を過ぎたか否を示す、フラッシュ記憶装置。
【請求項1】
ソフトウェアの不正使用を防止するためにフラッシュ記憶装置を用いる機械実装方法であって、
前記ソフトウェアの使用に関するライセンス情報にアクセスするステップであって、前記ライセンス情報が識別子を含む、ステップ(502、510)と、
前記フラッシュ記憶装置の特定記憶セクターにアクセスして、前記特定セクターの内使用不可能なものによって1ビットが表され、前記特定セクターの内使用可能なものによって0ビットが表されるように、または前記特定セクターの内使用不可能なものによって0ビットが表され、前記特定セクターの内使用可能なものによって1ビットが表されるように、前記識別子がその中にエンコードされているか否か判断するステップ(402、512)と、
前記フラッシュ記憶装置の前記特定セクター内に前記識別子がエンコードされていない場合、前記ソフトウェアの使用を禁止するステップ(508)と、
を備えている、機械実装方法。
【請求項2】
請求項1記載の機械実装方法において、
前記ライセンス情報は、信頼のおける情報源によってディジタル的に署名されており、
前記方法は、更に、
前記ライセンス情報が、前記信頼のおける情報源の有効なディジタル署名を含むか否か判断するステップと、
前記ライセンス情報が、前記信頼のおける情報源の有効なディジタル署名を含んでいない場合、前記ソフトウェアの使用を禁止するステップと、
を備えている、機械実装方法。
【請求項3】
請求項1記載の機械実装方法であって、更に、
前記フラッシュ記憶装置の前記特定記憶セクターにアクセスして、前記識別子に関する有効なディジタル署名がその中にエンコードされているか否か判断するステップと、
前記識別子に関する前記有効なディジタル署名が、前記フラッシュ記憶装置の前記特定セクター内にエンコードされていない場合、前記ソフトウェアの使用を禁止するステップと、
を備えている、機械実装方法。
【請求項4】
請求項1記載の機械実装方法において、前記ライセンス情報は前記フラッシュ記憶装置内に格納されている、機械実装方法。
【請求項5】
請求項1記載の機械実装方法において、前記ライセンス情報は、処理装置のコンポーネントの中に格納されており、前記処理装置には前記フラッシュ記憶装置が接続されている、機械実装方法。
【請求項6】
請求項1記載の機械実装方法において、
前記ライセンス情報は、前記ソフトウェアの所定の使用回数を含み、前記機械実装方法は、更に、
前記フラッシュ記憶装置の少なくとも1つのセクターに対して複数回の書き込みを実行することによって、前記ソフトウェアの各使用を計数し、前記ソフトウェアの所定回数の使用を計数した後、前記少なくとも1つのセクターを使用不可能にするステップと、
前記少なくとも1つのセクターが使用不可能か否か判断するステップと、
前記少なくとも1つのセクターが使用不可能であると判断した場合、前記ソフトウェアの使用を禁止するステップと、
を備えている、機械実装方法。
【請求項7】
請求項1記載の機械実装方法において、
前記ライセンス情報は期限日を含み、
前記機械実装方法は、更に、
前記フラッシュ記憶装置の複数のセクターの内それぞれの1つに対して複数回の書き込みを実行することによって、複数の時間期間の各々の経過を計時して、前記複数のセクターの内それぞれの1つを使用不可能にするステップと、
前記複数のセクターの内使用不可能となったそれぞれのセクターの数を判定するステップと、
前記複数のセクターの内前記判定した使用不可能なものの数が、前記期限日の経過を示す場合、前記ソフトウェアの使用を禁止するステップと、
を備えている、機械実装方法。
【請求項8】
請求項1記載の機械実装方法であって、更に、
処理装置上における前記ソフトウェアの活性化の間に、前記フラッシュ記憶装置の前記特定記憶セクターに前記識別子をエンコードするステップを備えている、機械実装方法。
【請求項9】
ソフトウェア・アプリケーションの機能を制限またはディスエーブルするためにフラッシュ記憶装置を使用する機械実装方法であって、
前記ソフトウェア・アプリケーションの使用に関するライセンス情報にアクセスするステップであって、前記ライセンス情報が、前記フラッシュ記憶装置上、または前記フラッシュ記憶装置が接続されている処理装置のコンポーネント上の一方に位置し、前記ライセンス情報が識別子を含む、ステップ(502)と、
前記ライセンス情報の有効性を判断するステップ(504)と、
前記フラッシュ記憶装置の特定記憶セクターにアクセスして、前記特定セクターの内使用不可能なものによって1ビットが表され、前記特定セクターの内使用可能なものによって0ビットが表されるように、または前記特定セクターの内使用不可能なものによって0ビットが表され、前記特定セクターの内使用可能なものによって1ビットが表されるように、前記識別子がその中にエンコードされているか否か判断するステップ(402、510、512)と、
前記フラッシュ記憶装置の前記特定セクター内に前記識別子がエンコードされていない場合、前記ソフトウェア・アプリケーションの機能を制限またはディスエーブルするステップ(508)と、
を備えている、機械実装方法。
【請求項10】
請求項9記載の機械実装方法であって、更に、
第1の所定使用回数の間、前記ソフトウェア・アプリケーションを全機能で実行することを許可するステップを備えている、機械実装方法。
【請求項11】
請求項9記載の機械実装方法において、
前記識別子は、多数の要素を含み、
前記機械実装方法は、特定の時間周期で、前記識別子の複数の要素の各々を公開するステップを備えている、機械実装方法。
【請求項12】
請求項9記載の機械実装方法において、
前記ソフトウェア・アプリケーションの機能が制限されているとき、前記ソフトウェア・アプリケーションの標準的機能をイネーブルし、
前記ソフトウェア・アプリケーションの機能がディスエーブルされておらず、かつ制限されてない場合、前記ソフトウェア・アプリケーションの拡張機能をイネーブルする、機械実装方法。
【請求項13】
請求項9記載の機械実装方法において、前記ソフトウェア・アプリケーションは、前記フラッシュ記憶装置上に格納されている、機械実装方法。
【請求項14】
請求項9記載の機械実装方法であって、更に、
前記ソフトウェアの活性化の間に、前記フラッシュ記憶装置の前記特定記憶セクターに、前記識別子と当該識別子のディジタル署名とをエンコードするステップを備えている、機械実装方法。
【請求項15】
請求項9記載の機械実装方法であって、更に、
前記フラッシュ記憶装置の少なくとも1つのセクターの内それぞれの1つに対して複数回の書き込みを実行することによって、複数の時間期間の各々の経過を計時して、前記少なくとも1つのセクターの内それぞれの1つを使用不可能にするステップと、
前記複少なくとも1つのセクターの内使用不可能なセクターの数が、前記ライセンス情報によって示される期限日の経過を示す場合、前記ソフトウェア・アプリケーションの使用を制限またはディスエーブルするステップと、
を備えている、機械実装方法。
【請求項16】
ソフトウェア・アプリケーションの機能を制限する、前記ソフトウェア・アプリケーションの機能をディスエーブルする、または前記ソフトウェア・アプリケーションの全機能をイネーブルするためのフラッシュ記憶装置(104)であって、前記ソフトウェア・アプリケーションは、前記フラッシュ記憶装置が接続されている処理装置上において実行され、前記フラッシュ記憶装置は、
前記ソフトウェア・アプリケーションに関して当該フラッシュ記憶装置上に格納されているライセンス情報であって、識別子を含む、ライセンス情報(304、402、1414)と、
前記ライセンス情報に含まれる前記識別子に対応するエンコード済み識別子であって、前記フラッシュ記憶装置の前記特定セクターの内使用不可能なものによって前記エンコードされている識別子の1ビットが表され、前記フラッシュ記憶装置の前記特定セクターの内使用可能なものによって前記エンコードされている識別子の0ビットが表されるように、または前記フラッシュ記憶装置の前記特定セクターの内使用不可能なものによって前記エンコードされている識別子の0ビットが表され、前記フラッシュ記憶装置の前記特定セクターの内使用可能なものによって前記エンコードされている識別子の1ビットが表されるように前記フラッシュ記憶装置内にエンコードされており、前記エンコード済み識別子が前記ライセンス情報に含まれる識別子と一致するときにのみ、前記ソフトウェア・アプリケーションの全機能をイネーブルする、エンコード済み識別子(306、1412、512、614)と、
を備えている、フラッシュ記憶装置。
【請求項17】
請求項16記載のフラッシュ記憶装置であって、更に、
前記識別子に対して計算され、前記フラッシュ記憶装置の特定セクター内にエンコードされている、信頼のおける情報源のディジタル署名を備えており、前記エンコードされているディジタル署名が、前記信頼のおける情報源からのものであると判断されたときのみ、前記ソフトウェア・アプリケーションの全機能をイネーブルする、フラッシュ記憶装置。
【請求項18】
請求項16記載のフラッシュ記憶装置において、
前記ライセンス情報は、前記ソフトウェア・アプリケーションの使用許可回数に関する情報を含み、
前記フラッシュ記憶装置の少なくとも1つのセクターの内使用不可能なものは、前記使用許可回数が過ぎたか否かを示す、フラッシュ記憶装置。
【請求項19】
請求項16記載のフラッシュ記憶装置であって、更に、
当該フラッシュ記憶装置内に格納されている前記ソフトウェア・アプリケーションを備えている、フラッシュ記憶装置。
【請求項20】
請求項16記載のフラッシュ記憶装置において、
前記ライセンス情報は、前記ソフトウェア・アプリケーションの使用についてのライセンス期限日に関する情報を含み、
前記フラッシュ記憶装置の少なくとも1つのセクターの内使用不可能なものは、前記期限日を過ぎたか否を示す、フラッシュ記憶装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公表番号】特表2010−538364(P2010−538364A)
【公表日】平成22年12月9日(2010.12.9)
【国際特許分類】
【出願番号】特願2010−523015(P2010−523015)
【出願日】平成20年8月4日(2008.8.4)
【国際出願番号】PCT/US2008/072118
【国際公開番号】WO2009/032462
【国際公開日】平成21年3月12日(2009.3.12)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
【公表日】平成22年12月9日(2010.12.9)
【国際特許分類】
【出願日】平成20年8月4日(2008.8.4)
【国際出願番号】PCT/US2008/072118
【国際公開番号】WO2009/032462
【国際公開日】平成21年3月12日(2009.3.12)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
[ Back to top ]