(57)【要約】  コンピュータ・デバイス上でのソフトウェアの利用を制御するための方法及びシステムに関する。認可鍵は、デバイスに記憶されるユニーク文字列であるデバイス文字列と、デバイス上での使用が認可されたソフトウェアに記憶されるユニーク文字列であるソフトウェア文字列との関数として生成される。認可鍵は秘密鍵を用いて暗号化され、デバイスに記憶される。デバイス上でソフトウェアを使用するという要求に応答して、秘密鍵に対応する公開鍵を用いて認可鍵が解読される。試験鍵はデバイス文字列と、使用が要求されたソフトウェアに記憶されたユニーク文字列である要求ソフトウェア文字列の関数として生成される。認可鍵は試験鍵と比較される。試験鍵が認可鍵と一致する時、要求されたソフトウェアの利用が許可される。【特許請求の範囲】
【請求項１】
コンピュータ・デバイス上でのソフトウェアの利用を制御するための方法において、
（ａ）デバイスに記憶されたユニーク文字列であるデバイス文字列と、デバイス上での使用が認可されるソフトウェアに記憶されたユニーク文字列であるソフトウェア文字列との関数として認可鍵を生成する工程と、
（ｂ）秘密鍵を用いて認可鍵を暗号化する工程と、
（ｃ）デバイスに認可鍵を記憶する工程と、
（ｄ）デバイス上でソフトウェアを使用するという要求に応答して、
（ｉ）秘密鍵に対応する公開鍵を用いて認可鍵を解読する工程と、
（ii）使用が要求されたソフトウェアに記憶されたユニーク文字列である要求ソフトウェア文字列と、デバイス文字列との関数として試験鍵を生成する工程と、
（iii ）解読された認可鍵を試験鍵と比較する工程と、
を実行する工程と、
（ｅ）試験鍵が解読された認可鍵と一致する時、デバイス上での使用が要求されたソフトウェアの利用を許可する工程とからなる方法。
【請求項２】
工程（ａ）は、
デバイス文字列とソフトウェア文字列との組み合わせ及び連結のうちの少なくとも一方を実行することにより結果の文字列を作成する工程と、
結果の文字列をハッシュ化することにより認可鍵を生成する工程とを含む請求項１に記載の方法。
【請求項３】
工程（ｂ）は、
認可鍵をバイナリ・ラージ・オブジェクトへ変換する工程と、
秘密鍵を用いてバイナリ・ラージ・オブジェクトを暗号化することにより、暗号化された認可鍵を生成する工程とを含む請求項２に記載の方法。
【請求項４】
工程（ｃ）はデバイスのレジストリに認可鍵を記憶する工程を含む請求項１に記載の方法。
【請求項５】
工程（ｄ）の（iii ）は、
試験鍵を用いて第１のサンプルデータを暗号化することにより第２のデータを生成する工程と、
認可鍵を用いて第２のデータを解読することにより第３のデータを生成する工程と、
第１のデータを第３のデータと比較する工程と、
第１のデータが第３のデータと実質的に同一である時、試験鍵は認可鍵と一致することとを含む請求項１に記載の方法。
【請求項６】
工程（ｄ）の（ii）は、
デバイス文字列と要求ソフトウェア文字列との組み合わせ及び連結のうちの少なくとも一方を実行することにより、さらなる結果の文字列を作成する工程と、
さらなる結果の文字列をハッシュ化することにより試験鍵を生成する工程とを含む請求項１に記載の方法。
【請求項７】
公開鍵はソフトウェアと共に提供される請求項１に記載の方法。
【請求項８】
ソフトウェアの利用を制御することが可能なコンピュータ・デバイスにおいて、
プロセッサと、
予め読み込まれた認可鍵と、ユニーク文字列であるデバイス文字列とを記憶するメモリ
構成とからなり、
認可鍵はデバイス文字列と、ソフトウェア文字列との関数として生成されることと、
ソフトウェア文字列はデバイス上での使用が認可されるソフトウェアに記憶されたユニーク文字列であることと、
認可鍵は秘密鍵を用いて暗号化されることと、
デバイス上でソフトウェアを使用するという要求に応答して、プロセッサが、
秘密鍵に対応する公開鍵を用いて認可鍵を解読することと、
使用が要求されたソフトウェアに記憶されたユニーク文字列である要求ソフトウェア文字列と、デバイス文字列との関数として試験鍵を生成することと、
認可鍵を試験鍵と比較することと、
試験鍵が認可鍵と一致する時、デバイス上での使用が要求されたソフトウェアの利用を許可することとを含むコンピュータ・デバイス。
【請求項９】
コンピュータ・デバイスはウィンドウズ（登録商標）ＣＥオペレーティングシステムを用いるポータブル・コンピュータ・デバイスを含み、
ソフトウェアはウィンドウズ（登録商標）ＣＥ互換ソフトウェアを含む請求項８に記載のコンピュータ・デバイス。
【請求項１０】
結果の文字列を作成するためのデバイス文字列とソフトウェア文字列との組み合わせ及び連結のうちの少なくとも一方により認可鍵が生成されることと、
結果の文字列はハッシュ化されて認可鍵を生成することとを含む請求項８に記載のコンピュータ・デバイス。
【請求項１１】
認可鍵がメモリに記憶される前に、認可鍵はバイナリ・ラージ・オブジェクトへ変換されることと、バイナリ・ラージ・オブジェクトは暗号化された認可鍵を生成するために秘密鍵を用いて暗号化されることとを含む請求項１０に記載のコンピュータ・デバイス。
【請求項１２】
プロセッサは試験鍵を用いて第１のサンプルデータを暗号化して第２のデータを生成することと、認可鍵を用いて第２のデータを解読して第３のデータを生成することと、第１のデータを第３のデータと比較することとにより試験鍵と認可鍵とを比較することと、
第１のデータが第３のデータと実質的に同一である時、試験鍵は認可鍵と一致することとを含む請求項８に記載のコンピュータ・デバイス。
【請求項１３】
公開鍵はソフトウェアと共に提供される請求項８に記載の方法。
【請求項１４】
さらなるコンピュータ・デバイス上でのソフトウェアの利用を制御するためのコンピュータ・デバイスにおいて、
メモリ構成と、
さらなるデバイス文字列と、ソフトウェア文字列との関数として認可鍵を生成するプロセッサとからなり、
ソフトウェア文字列はさらなるデバイス上での使用が認可されるソフトウェアに記憶されたユニーク文字列であることと、
さらなるデバイス文字列はさらなるデバイスに記憶されたユニーク文字列であることと、
認可鍵は秘密鍵を用いて暗号化されることと、
プロセッサは認可鍵と、秘密鍵に対応する公開鍵とを記憶することと、
さらなるデバイス上でソフトウェアを使用するという要求に応答して、さらなるデバイスが、
公開鍵を用いて認可鍵を解読することと、
使用が要求されたソフトウェアに記憶されたユニーク文字列である要求ソフトウェア文
字列と、さらなるデバイス文字列との関数として試験鍵を生成することと、
認可鍵を試験鍵と比較することと、
試験鍵が認可鍵と一致する時、使用が要求されたソフトウェアの利用を許可することとを含むコンピュータ・デバイス。
【請求項１５】
さらなるデバイスはウィンドウズ（登録商標）ＣＥオペレーティングシステムを用いるポータブル・コンピュータ・デバイスを含み、
ソフトウェアはウィンドウズ（登録商標）ＣＥ互換ソフトウェアを含む請求項１４に記載のコンピュータ・デバイス。
【請求項１６】
プロセッサに実行されることによりコンピュータ・デバイス上でのソフトウェアの利用を制御することが可能な命令のセットを記憶するコンピュータ可読記憶媒体において、
命令のセットは、
（ａ）デバイスに記憶されたユニーク文字列であるデバイス文字列と、デバイス上での使用が認可されるソフトウェアに記憶されたユニーク文字列であるソフトウェア文字列との関数として認可鍵を生成することと、
（ｂ）秘密鍵を用いて認可鍵を暗号化することと、
（ｃ）デバイスに認可鍵を記憶することと、
（ｄ）デバイス上でソフトウェアを使用するという要求に応答して、
（ｉ）秘密鍵に対応する公開鍵を用いて認可鍵を解読することと、
（ii）使用が要求されたソフトウェアに記憶されたユニーク文字列である要求ソフトウェア文字列と、デバイス文字列との関数として試験鍵を生成することと、
（iii ）認可鍵を試験鍵と比較することと、
を実行することと、
（ｅ）試験鍵が認可鍵と一致する時、デバイス上での使用が要求されたソフトウェアの利用を許可することとを実行する命令のセットであるコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・デバイス上でのソフトウェアの利用を制御するための方法及びシステムに関する。
【背景技術】
【０００２】
従来のコンピュータ・デバイスでは、日々の動作において広範な種々のソフトウェア・パッケージが利用されている。現在、ソフトウェアの配布は主に、使用許諾、アクセスコード、ＣＤキーなどにより管理されているが、そうしたセキュリティ予防策は未認可の第３者による操作を受け易い。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
したがって、特定のコンピュータ・デバイス上でのソフトウェアの利用を認可するための、よりセキュアな手段が必要である。
【課題を解決するための手段】
【０００４】
認可鍵はデバイス文字列及びソフトウェア文字列の関数として生成される。デバイス文字列はデバイスに記憶されているユニーク文字列である。ソフトウェア文字列は、デバイス上での使用が認可されたソフトウェアに記憶されているユニーク文字列である。認可鍵は秘密鍵を用いて暗号化され、デバイスに記憶される。
【０００５】
デバイス上でソフトウェアを使用するという要求に応答して、秘密鍵に対応する公開鍵を用いて認可鍵が解読される。試験鍵はデバイス文字列及び要求ソフトウェア文字列の関数として生成される。要求ソフトウェア文字列は、使用が要求されたソフトウェアに記憶されているユニーク文字列である。認可鍵は試験鍵と比較される。試験鍵が認可鍵と一致する時、デバイス上で使用が要求されたソフトウェアの利用は許可される。
【発明を実施するための最良の形態】
【０００６】
添付の図面は本発明のさらなる理解を提供するためのものであり、明細書に組み込まれてその一部を構成し、本発明の幾つかの実施形態を例示し、明細書の記載とともに本発明の実施例を説明するように働く。
【０００７】
図１には、コンピュータ・デバイス上でのソフトウェアの利用を制御するための例示的なシステムを示す。このシステムにおいては、ソフトウェア４の使用は特定のプラットフォーム２ａ，２ｄにのみ認められている。プラットフォーム２ａ〜２ｄは、複数のオペレーティングシステム（例えば、ウィンドウズ（登録商標）、ユニックス（登録商標）、Ａｐｐｌｅ（登録商標）ＯＳ）のうちの１つにて動作する、任意のコンピュータ・デバイス（例えば、パーソナル・コンピュータ、ハンドヘルドデバイス、ＰＤＡなど）であってよい。ソフトウェア４は、その使用の制限がハードウェア／ソフトウェアの製造者により所望される任意のプログラム／コード（例えば、オフィス・パッケージソフトウェア（ｓｕｉｔｅ）、画像認識ソフトウェアなど）であってよい。
【０００８】
特定のプラットフォーム２ａ，２ｄに対するソフトウェア４の制限は、このソフトウェアに対する認可鍵１４ａ，１４ｄを作成し、対応するプラットフォームのレジストリ１６ａ，１６ｄに記憶することにより達成され得る。レジストリ１６ａ〜１６ｄの各々は、特定のプラットフォーム２ａ〜２ｄに関する情報（例えば、製造日、製造者など）を格納し
得る、コンピュータ・デバイスのディジタル記憶領域（例えば、ＲＯＭ、ハードディスクなど）である。
【０００９】
以下でより詳細に説明する通り、図２，４に示すソフトウェア４に記憶された第２の文字列１０と共に、それぞれプラットフォーム２ａ，２ｄに記憶された第１の文字列６ａ，６ｄを用いて認可鍵１４ａ，１４ｄを作成する場合、プラットフォーム２ａ，２ｄのみがソフトウェアを利用し得る。第１の文字列６ａ，６ｄ及び第２の文字列１０は、それぞれプラットフォーム２ａ，２ｄ及びソフトウェア４に対しユニークであり、且つ特異的である。第１の文字列６ａ〜６ｄは製造工程中に製造者により作成され、プラットフォーム２ａ〜２ｄに記憶され得る。第２の文字列１０も同様に作成されソフトウェア４に記憶され得る。プラットフォームの文字列６は、相手先商標製品製造業者（ＯＥＭ）の文字列及び製品名の文字列の組み合わせなど、プラットフォーム２に存在する文字列を組み合わせることにより形成されてよい。第１の文字列６ａ，６ｄ及び第２の文字列１０は、製造工程後、ユーザにより変更されてもよい。第１の文字列６ａ，６ｄ及び第２の文字列１０はユニークであるという性質のため、並びに利用可能な変更手段が存在しないため、それらの文字列はプラットフォーム２ａ，２ｄ及びソフトウェア４を識別及び認可する目的に適する。
【００１０】
図１に示すように、プラットフォーム２ａ，２ｄのみが適正な認可鍵１４ａ，１４ｄを有するので、それらのプラットフォームのみにソフトウェア４を実行することが認められる。認可鍵１４ａ，１４ｄは、それぞれプラットフォーム２ａ，２ｄに記憶された第１の文字列６ａ，６ｄと、第２の文字列１０とを用いて作成される。認可鍵１４ａ，１４ｄを作成する際にプラットフォーム２ａ，２ｄが用いられるため、それらのプラットフォームのみがソフトウェア４を実行することが可能である。反対に、プラットフォーム２ｂ，２ｃは必要な認可鍵を有さない。したがって、これらのプラットフォーム２ｂ、２ｃがソフトウェア４を利用することは不可能である。
【００１１】
図２には、それぞれプラットフォーム２及びソフトウェア４に記憶された第１の文字列６及び第２の文字列１０を用いた認可鍵１４の生成を示す。上述のように、第１の文字列６及び第２の文字列１０は、それらの文字列の存在場所（即ち、プラットフォーム２及びソフトウェア４）に対し特異的、且つユニークである。
【００１２】
図４には認可鍵１４を作成するための方法を示す。認可鍵１４は、プラットフォーム２にソフトウェア４の利用が認められているか否かを判定するために、続いてプラットフォーム２により用いられ得る。工程３２にて、第１の文字列６及び第２の文字列１０を利用し、第３の文字列８を生成する。例えば、第１の文字列６及び第２の文字列１０を組み合わせること、又は連結すること（ｃｏｎｃａｔｅｎａｔｉｎｇ）により、第３の文字列８が形成されてよい。この工程はユニークな認可鍵１４の作成のために重要である。第１の文字列６はプラットフォーム２に対しユニークであり、第２の文字列はソフトウェア４に対しユニークであるため、結果として得られる第３の文字列８は、第３の文字列８の作成に用いられるプラットフォーム２及びソフトウェア４の組み合わせに対してのみ特異的である。
【００１３】
工程３４にて、第１の暗号鍵１２を形成するために第３の文字列８をハッシュ化（ｈａｓｈ）してもよい。詳細には、従来のハッシュ化アルゴリズムを用いて第３の文字列８のハッシュ値を生成してよい。この目的のために、複数のハッシュ化アルゴリズム（例えば、ＭＤ２，ＭＤ４，ＭＤ５，ＳＨＡ−１など）のうちの任意の１つを用いてよいことを、当業者は認めるであろう。ハッシュ化アルゴリズムはハッシュ化関数の一部であり、１組のデータ（即ち、第３の文字列８）を、より計算処理に適切な別の形態（即ち、暗号鍵１２）へ変形する。逆にハッシュ化しない限り、ハッシュ化されたデータを利用して元のデ
ータ（即ち、第３の文字列８）を取得することは不可能であるため、第３の文字列８をハッシュ化することにより、別のレベルのセキュリティも提供され得る。
【００１４】
第３の文字列８をハッシュ化した後、結果として得られる第１の暗号鍵１２を、工程３６にて、複数の暗号スキームのうちの１つを用いて暗号化し、認可鍵１４を形成する。例えば、秘密鍵／公開鍵ペアのうちの秘密鍵を用いて第１の暗号鍵１２を暗号化してよい。秘密鍵／公開鍵ペアのアルゴリズムは従来のＰＧＰシステムと同様であり、秘密鍵はメッセージ（例えば、電子メール）を暗号化するために用いられ、公開鍵は以前に暗号化したメッセージを解読するために用いられる。ＰＧＰシステムは以下の方式で動作され得る。即ち、メッセージの作成者は秘密鍵／公開鍵ペアのうち片方の鍵を所有し、その鍵を用いてメッセージを暗号化し、他方の鍵は作成者により送信されたメッセージを解読する必要のある者へ配布される。本発明においては、秘密鍵／公開鍵ペアを実質的にＰＧＰシステムと同様の方式で用いてよく、暗号鍵１２は、秘密鍵を用いて暗号化されるバイナリ・ラージ・オブジェクト（ｂｌｏｂ）に出力される。ｂｌｏｂとは、１つ以上の固定長ヘッダ構造とコンテキストに特異的なデータとを含むビット・シーケンスの総称である。続いて、このｂｌｏｂを認可鍵１４としてレジストリ１６に記憶してもよい。
【００１５】
工程３８にて、認可鍵１４をプラットフォーム２のレジストリ１６に記憶する。認可鍵１４は、例えば、ファイルへ出力され、プラットフォーム２の任意数のコンピュータ・デバイスにコピーされ得るｂｌｏｂの形態であってもよい。結果として、プラットフォーム２のコンピュータ・デバイスの全てがソフトウェア４を動作することが可能となり、これにより認可鍵１４の量産における困難は非常に減少される。
【００１６】
図３には、プラットフォーム２上でのソフトウェア４の利用を認可するためのシステムを示す。プラットフォーム２は、図２，４に示した方法を用いて作成された後に認可鍵１４が記憶されるレジストリ１６を備える。プラットフォーム２上でのソフトウェア４の動作に先立ち、プラットフォーム２上での実行が認可されるか否かを認可鍵１４を用いることによりソフトウェア４が判定する必要がある。
【００１７】
図５には、ソフトウェア４にプラットフォーム２上での実行が認可されているか否かを判定するための方法を示す。工程４２にて、認可鍵１４をレジストリ１６から抽出するとともに、第１の暗号鍵１２を取得するために認可鍵１４を解読する。この解読は、図３の工程３６にて用いたのと同一の秘密鍵／公開鍵ペアの公開鍵を用いることにより達成され得る。この工程はＰＧＰシステムにおける解読処理と同様であり、公開鍵は、秘密鍵を用いて暗号化されたメッセージを解読するために用いられる。認可鍵１４を解読するために用いた公開鍵が、第１の暗号鍵１２を暗号化するために用いた秘密鍵と同一の秘密鍵／公開鍵ペアに由来する場合、この解読の結果として生成される第２の暗号鍵２８は第１の暗号鍵１２と同一である。
【００１８】
工程４４，４６にて、プラットフォーム２及びソフトウェア４は、第４の文字列２０及び第５の文字列２６から第２の暗号鍵２８を作成する。これらの文字列は、それぞれプラットフォーム２及びソフトウェア４に配置されている。工程４４にて、第４の文字列２０及び第５の文字列２６が組み合わせて、第６の文字列２４を形成する。ソフトウェア４の使用に対する認可は、最終的には第３の文字列８と第６の文字列２４との比較に基づくため、連結又は他の方法のいずれであれ、工程３２にて第１の文字列６及び第２の文字列１０を組み合わせて第３の文字列８を形成したのと同じ方式で、第４の文字列２０及び第５の文字列２６を組み合わせることが重要である。工程３２，４４にて異なる組み合わせ方法を用いた場合、第３の文字列８と第６の文字列２４とが同一となることはなく、ソフトウェアの使用に対する認可が付与されることはない。工程４６にて、第６の文字列２４をハッシュ化し、第２の暗号鍵２８を形成する。
【００１９】
図５に示した方法において、第６の文字列２４と第３の文字列８とを比較することにより、プラットフォーム２での実行が認可されるか否かをソフトウェア４が判定することが可能となる。第６の文字列２４と第３の文字列８とが同一である場合、プラットフォーム２にソフトウェア４の利用が認可される。したがって、ソフトウェア４により第６の文字列２４及び第３の文字列８が適正に解析されることを保証するため、工程４６にて用いられるハッシュ化アルゴリズムは工程３４にて用いられるハッシュ化アルゴリズムと正確に同一である必要がある。工程４６，３４にて用いられるハッシュ化関数が異なる場合、第６の文字列２４と第３の文字列８が同一であっても、それらのハッシュ化関数により結果として得られるハッシュ化の結果は２つの文字列で異なる。ハッシュ化の結果における差により、今度は、第１の暗号鍵１２とは異なる第２の暗号鍵２８が生成される。図５に示した方法において、主な試験は第１の暗号鍵１２と第２の暗号鍵２８との比較によるため、２つの鍵の間に差が存在すると、実際にはソフトウェア４は認可されていたにもかかわらず、ソフトウェア２に対する認可が拒否される。
【００２０】
工程４８〜５４にて、第１の暗号鍵１２及び第２の暗号鍵２８を利用しデータを解析することにより、認可鍵１４を作成するために実際にプラットフォーム２と共にソフトウェア４が用いられたか否かが判定される。データは、プラットフォーム２又はソフトウェア４に記憶されている任意のファイル、コード、又は変数であり得る（例えば、第１の文字列６、第２の文字列１０、第３の文字列８など）。以下で説明するように、データは暗号鍵１２，２８の行う試験のための単なるサンプルを提供することから、データの含む情報は重要ではない。工程４８にて、第１の暗号鍵４８を用いて第１のデータを暗号化し、第２のデータを生成する。工程５０にて、第２の暗号鍵１２を用いて第２のデータを解読し、第３のデータを生成する。
【００２１】
工程５２にて、ソフトウェア４は第１のデータを第３のデータ（即ち、第１のデータを暗号化し解読した結果）と比較する。第１のデータと第３のデータとが同一（即ち、暗号化処理と解読処理が可逆）である場合、第１の暗号鍵１２と第２の暗号鍵２８とは同一である。第１の暗号鍵１２及び第２の暗号鍵２８が正確に同一であるため、第３の文字列８及び第６の文字列２４は同じソースから取得されたことになる（即ち、認可鍵１４を作成するために、実際にプラットフォーム２及びソフトウェア４が用いられた）。この場合、工程５６にて、ソフトウェア４にプラットフォーム２上での実行が認可される。
【００２２】
しかしながら、第１のデータのサンプルと第３のデータのサンプルとが異なる場合には、認可鍵１４の作成においてソフトウェア４が用いられなかったことを意味している。換言すると、第３の文字列８と第６の文字列２４とが異なるのは、認可鍵１４の作成において用いられたのとは異なるプラットフォーム２及びソフトウェア４に記憶されているためである。結果として、工程５４にて、ソフトウェア４にはプラットフォーム２上での動作が禁止される。
【００２３】
本発明により、一定のソフトウェアのみが特定のプラットフォーム又はコンピュータ・デバイス上で実行されることを、製造者又はソフトウェア制作者に保証することが可能となる。ソフトウェア及びプラットフォームに対するユニーク文字列を用いて認可鍵を作成するため、１つのプラットフォームから別のプラットフォームへ認可鍵をコピーすることは無効である。これにより、ソフトウェア及びプラットフォームは動作に先立ち、そのソフトウェア及びプラットフォームが実際に用いられ認可鍵が作成されたかを照合する必要があるため、１つのプラットフォームから別のプラットフォームへ認可鍵をコピーすることが阻止される。
【００２４】
本発明は、１つの特定の種類のソフトウェアを実行するのみのコンピュータ・デバイス
（例えば、ハンドヘルド・スキャナ及びイメージャ（ｉｍａｇｅｒ）など）における未認可ソフトウェアの使用の防止に、特に有用である。それらのデバイスにおいては、通常、デバイスの製造に加え、そのデバイスに必要なソフトウェアの提供も、１つの業者が行う。本発明以前においては、元の製造者の許可なくして第３者が元のデバイスを複製し、そのデバイス上で元のソフトウェアを使用することが可能であった。本発明により、複製デバイスは第３者に対し有用でなくなる。複製デバイスは必要な認可コードを有さないため、元のソフトウェアを動作させることは不可能となる。
【００２５】
セキュリティ性能の限定された一部のオペレーティングシステムにおける制限を克服するために、本発明が有利に利用され得る。例えば、一部のオペレーティングシステム（例えば、ウィンドウズ（登録商標）ＣＥ）は一般データの公開鍵／秘密鍵暗号化をサポートしていない。しかしながら、それらのオペレーティングシステムは「セッション」鍵の入出力における特定の目的においては、そうした暗号化をサポートしている。本発明は、比較されるデータを鍵に組み合わせることにより、この限定された暗号化性能を利用する。プラットフォーム２及びソフトウェア４の両者に由来するデータを組合せることにより鍵を形成し、続いてそれらの鍵により、そうしたオペレーティングシステムにおいて公開鍵／秘密鍵機能を利用することが可能である。この方式にて、本発明は、そうしたオペレーティングシステムにおけるセキュリティ性能を拡張する必要を免除することにより、実装コストを減少させる。
【００２６】
一般データの公開鍵／秘密鍵暗号化をサポートする他のオペレーティングシステムにおいて、本発明が利用されてもよい。本発明による方法は、不明化（ｏｂｆｕｓｃａｔｉｏｎ）及びセキュリティのレイヤを追加する。
【００２７】
当業者には明らかであるように、ソフトウェア４が市場に公開された後にも、本発明により、プラットフォーム２にソフトウェア４の実行を装備させることが可能である。ユーザがプラットフォーム２上でのソフトウェア４の実行を試行する時、認可鍵１４を形成するために必要な文字列をプラットフォーム２に対し伝送することにより、このことが達成され得る。
【００２８】
本発明の精神及び範囲から逸脱することなく、本発明の構造及び構成において種々の修正及び変形がなされ得ることが、当業者には明らかであろう。したがって、添付の特許請求の範囲及びその均等物の範囲の内にある限り、本発明は本発明の修正形態及び変形形態を包含することが意図される。
【図面の簡単な説明】
【００２９】
【図１】本発明によりソフトウェアの利用を制御するための例示的なシステムの図。
【図２】本発明によりソフトウェア認可鍵を作成及び記憶するための例示的なシステムの図。
【図３】本発明により特定のコンピュータ・デバイス上でのソフトウェアの実行が可能か否かを照合するための例示的なシステムの図。
【図４】本発明によりソフトウェア認可鍵を作成及び記憶するための方法の例示的な一実施形態の図。
【図５】本発明により特定のコンピュータ・デバイス上でのソフトウェアの実行が可能か否かを照合するための方法の例示的な一実施形態の図。
【図１】
2007527561.tif 000002
【図２】
2007527561.tif 000003
【図３】
2007527561.tif 000004
【図４】
2007527561.tif 000005
【図５】
2007527561.tif 000006
【手続補正書】
【提出日】平成19年6月6日(2007.6.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータ・デバイス上でのソフトウェアの利用を制御するための方法において、
（ａ）デバイスに記憶されたユニーク文字列であるデバイス文字列と、デバイス上での使用が認可されるソフトウェアに記憶されたユニーク文字列であるソフトウェア文字列との関数として認可鍵を生成する工程と、
（ｂ）秘密鍵を用いて認可鍵を暗号化する工程と、
（ｃ）デバイスに認可鍵を記憶する工程と、
（ｄ）デバイス上でソフトウェアを使用するという要求に応答して、
（ｉ）秘密鍵に対応する公開鍵を用いて認可鍵を解読する工程と、
（ii）使用が要求されたソフトウェアに記憶されたユニーク文字列である要求ソフトウェア文字列と、デバイス文字列との関数として試験鍵を生成する工程と、
（iii ）解読された認可鍵を試験鍵と比較する工程と、
を実行する工程と、
（ｅ）試験鍵が解読された認可鍵と一致する時、デバイス上での使用が要求されたソフトウェアの利用を許可する工程とからなる方法。
【請求項２】
工程（ａ）は、
デバイス文字列とソフトウェア文字列との組み合わせ及び連結のうちの少なくとも一方を実行することにより結果の文字列を作成する工程と、
結果の文字列をハッシュ化することにより認可鍵を生成する工程とを含む請求項１に記載の方法。
【請求項３】
工程（ｂ）は、
認可鍵をバイナリ・ラージ・オブジェクトへ変換する工程と、
秘密鍵を用いてバイナリ・ラージ・オブジェクトを暗号化することにより、暗号化された認可鍵を生成する工程とを含む請求項２に記載の方法。
【請求項４】
工程（ｃ）はデバイスのレジストリに認可鍵を記憶する工程を含む請求項１に記載の方法。
【請求項５】
工程（ｄ）の（iii ）は、
試験鍵を用いて第１のサンプルデータを暗号化することにより第２のデータを生成する工程と、
認可鍵を用いて第２のデータを解読することにより第３のデータを生成する工程と、
第１のデータを第３のデータと比較する工程と、
第１のデータが第３のデータと実質的に同一である時、試験鍵は認可鍵と一致することとを含む請求項１に記載の方法。
【請求項６】
工程（ｄ）の（ii）は、
デバイス文字列と要求ソフトウェア文字列との組み合わせ及び連結のうちの少なくとも一方を実行することにより、さらなる結果の文字列を作成する工程と、
さらなる結果の文字列をハッシュ化することにより試験鍵を生成する工程とを含む請求項１に記載の方法。
【請求項７】
公開鍵はソフトウェアと共に提供される請求項１に記載の方法。
【請求項８】
ソフトウェアの利用を制御することが可能なコンピュータ・デバイスにおいて、
プロセッサと、
予め読み込まれた認可鍵と、ユニーク文字列であるデバイス文字列とを記憶するメモリ構成とからなり、
認可鍵はデバイス文字列と、ソフトウェア文字列との関数として生成されることと、
ソフトウェア文字列はデバイス上での使用が認可されるソフトウェアに記憶されたユニーク文字列であることと、
認可鍵は秘密鍵を用いて暗号化されることと、
デバイス上でソフトウェアを使用するという要求に応答して、プロセッサが、
秘密鍵に対応する公開鍵を用いて認可鍵を解読することと、
使用が要求されたソフトウェアに記憶されたユニーク文字列である要求ソフトウェア文字列と、デバイス文字列との関数として試験鍵を生成することと、
認可鍵を試験鍵と比較することと、
試験鍵が認可鍵と一致する時、デバイス上での使用が要求されたソフトウェアの利用を許可することとを含むコンピュータ・デバイス。
【請求項９】
コンピュータ・デバイスはウィンドウズ（登録商標）ＣＥオペレーティングシステムを用いるポータブル・コンピュータ・デバイスを含み、
ソフトウェアはウィンドウズ（登録商標）ＣＥ互換ソフトウェアを含む請求項８に記載のコンピュータ・デバイス。
【請求項１０】
結果の文字列を作成するためのデバイス文字列とソフトウェア文字列との組み合わせ及び連結のうちの少なくとも一方により認可鍵が生成されることと、
結果の文字列はハッシュ化されて認可鍵を生成することとを含む請求項８に記載のコンピュータ・デバイス。
【請求項１１】
認可鍵がメモリに記憶される前に、認可鍵はバイナリ・ラージ・オブジェクトへ変換されることと、バイナリ・ラージ・オブジェクトは暗号化された認可鍵を生成するために秘密鍵を用いて暗号化されることとを含む請求項１０に記載のコンピュータ・デバイス。
【請求項１２】
プロセッサは試験鍵を用いて第１のサンプルデータを暗号化して第２のデータを生成することと、認可鍵を用いて第２のデータを解読して第３のデータを生成することと、第１のデータを第３のデータと比較することとにより試験鍵と認可鍵とを比較することと、
第１のデータが第３のデータと実質的に同一である時、試験鍵は認可鍵と一致することとを含む請求項８に記載のコンピュータ・デバイス。
【請求項１３】
公開鍵はソフトウェアと共に提供される請求項８に記載のコンピュータ・デバイス。
【請求項１４】
さらなるコンピュータ・デバイス上でのソフトウェアの利用を制御するためのコンピュータ・デバイスにおいて、
メモリ構成と、
さらなるデバイス文字列と、ソフトウェア文字列との関数として認可鍵を生成するプロセッサとからなり、
ソフトウェア文字列はさらなるデバイス上での使用が認可されるソフトウェアに記憶されたユニーク文字列であることと、
さらなるデバイス文字列はさらなるデバイスに記憶されたユニーク文字列であることと、
認可鍵は秘密鍵を用いて暗号化されることと、
プロセッサは認可鍵と、秘密鍵に対応する公開鍵とを記憶することと、
さらなるデバイス上でソフトウェアを使用するという要求に応答して、さらなるデバイスが、
公開鍵を用いて認可鍵を解読することと、
使用が要求されたソフトウェアに記憶されたユニーク文字列である要求ソフトウェア文字列と、さらなるデバイス文字列との関数として試験鍵を生成することと、
認可鍵を試験鍵と比較することと、
試験鍵が認可鍵と一致する時、使用が要求されたソフトウェアの利用を許可することとを含むコンピュータ・デバイス。
【請求項１５】
さらなるデバイスはウィンドウズ（登録商標）ＣＥオペレーティングシステムを用いるポータブル・コンピュータ・デバイスを含み、
ソフトウェアはウィンドウズ（登録商標）ＣＥ互換ソフトウェアを含む請求項１４に記載のコンピュータ・デバイス。
【請求項１６】
プロセッサに実行されることによりコンピュータ・デバイス上でのソフトウェアの利用を制御することが可能な命令のセットを記憶するコンピュータ可読記憶媒体において、
命令のセットは、
（ａ）デバイスに記憶されたユニーク文字列であるデバイス文字列と、デバイス上での使用が認可されるソフトウェアに記憶されたユニーク文字列であるソフトウェア文字列との関数として認可鍵を生成することと、
（ｂ）秘密鍵を用いて認可鍵を暗号化することと、
（ｃ）デバイスに認可鍵を記憶することと、
（ｄ）デバイス上でソフトウェアを使用するという要求に応答して、
（ｉ）秘密鍵に対応する公開鍵を用いて認可鍵を解読することと、
（ii）使用が要求されたソフトウェアに記憶されたユニーク文字列である要求ソフトウェア文字列と、デバイス文字列との関数として試験鍵を生成することと、
（iii ）認可鍵を試験鍵と比較することと、
を実行することと、
（ｅ）試験鍵が認可鍵と一致する時、デバイス上での使用が要求されたソフトウェアの利用を許可することとを実行する命令のセットであるコンピュータ可読記憶媒体。