(57)【要約】  不正使用から情報を保護するための本発明の方法および装置は、不正コピー用にコピーを流通させるユーザを特定することができる。ユーザが入手した情報は、非対称暗号方式により暗号化される。その際、情報の提供者から受信した前記ユーザの鍵が用いられる。情報は使用される前にユーザの秘密鍵を用いて復号化される。保護を改良するため、復号化はユーザのコンピュータのプロセッサにおいて直接実行される。復号化された情報は前記プロセッサの外部には存在しない。
2005512170.tif 000002
【特許請求の範囲】
【請求項１】
不正使用から情報を保護する方法であって、
ベンダがユーザの公開鍵を入手する段階と、
ベンダが秘密鍵を利用して、販売する情報を非対称暗号化により暗号化する段階と、
ユーザがユーザの秘密鍵を入手する段階と、
ユーザが前記公開鍵に対応する前記秘密鍵を用いて、購入した情報を復号化する段階と、
を備えることを特徴とする方法。
【請求項２】
請求項１に記載の方法において、前記公開鍵は、ユーザが情報を購入する際にユーザからベンダへ渡されることを特徴とする方法。
【請求項３】
請求項２に記載の方法において、前記公開鍵は、購入注文のデジタル署名の一部として渡されることを特徴とする方法。
【請求項４】
請求項２に記載の方法において、ベンダは、ユーザについての情報に基づいて鍵ストレージから前記公開鍵を入手することを特徴とする方法。
【請求項５】
請求項１に記載の方法において、復号化された情報は使用後に削除されることを特徴とする方法。
【請求項６】
請求項１に記載の方法において、前記購入した情報は２つ以上の暗号化されたセクションから成り、前記２つ以上の暗号化されたセクションは、１つが利用される時まで１つ以上のセクションが暗号化されたままであるように、利用の前に復号化されることを特徴とする方法。
【請求項７】
請求項６に記載の方法でにおいて、復号化されたセクションは、使用後に削除されることを特徴とする方法。
【請求項８】
請求項２に記載の方法において、ベンダは、ユーザの身元を認証するデジタル証明書の一部として前記公開鍵を受け取ることを特徴とする方法。
【請求項９】
請求項８に記載の方法において、前記ベンダは、前記デジタル証明書が有効か否かを確認することを特徴とする方法。
【請求項１０】
請求項１に記載の方法において、ユーザ所有の装置において実行可能なプログラムが、暗号化された情報を利用する前に、前記秘密鍵が有効か否かを確認することを特徴とする方法。
【請求項１１】
請求項１に記載の方法であって、前記公開鍵および前記秘密鍵はベンダによって生成され、少なくとも前記秘密鍵がユーザに与えられることを特徴とする方法。
【請求項１２】
不正コピーから情報を保護する方法であって、
ベンダがユーザの公開鍵を入手する段階と、
ベンダが対称暗号化アルゴリズム用の無作為鍵を生成する段階と、
ベンダが、前記対称暗号化アルゴリズムと前記無作為鍵とを用いて、保護対象の情報を暗号化する段階と、
ベンダが、非対称暗号化アルゴリズムと前記公開鍵とを用いて、前記無作為鍵を暗号化する段階と、
ユーザがユーザの秘密鍵を入手する段階と、
ユーザが、前記ベンダが利用する対称暗号化アルゴリズムに対応する非対称暗号化アルゴリズムと、前記秘密鍵とを用いて、前記ベンダから入手した前記暗号化された無作為鍵を復号化する段階と、
ユーザが、前記ベンダから入手した暗号化された情報を、前記対称暗号化アルゴリズムと前記復号化された無作為鍵とを利用して復号化する段階と、
を備えることを特徴とする方法。
【請求項１３】
請求項１２に記載の方法において、前記公開鍵は情報を購入する際に前記ユーザから前記ベンダへ渡されることを特徴とする方法。
【請求項１４】
請求項１３に記載の方法において、前記公開鍵は購入注文のデジタル署名の一部として譲渡されることを特徴とする方法。
【請求項１５】
請求項１２に記載の方法において、前記ベンダは、ユーザ情報に基づいて鍵ストレージから前記公開鍵を入手することを特徴とする方法。
【請求項１６】
請求項１２に記載の方法において、復号化された情報は使用後に削除されることを特徴とする方法。
【請求項１７】
請求項１２に記載の方法において、前記購入した情報は２つ以上の暗号化されたセクションから成り、前記２つ以上の暗号化されたセクションは、１つが復号化されるまで１つ以上のセクションが暗号化されたままであるように、利用の前に復号化されることを特徴とする方法。
【請求項１８】
請求項１７に記載の方法において、前記暗号化されたセクションを暗号化するための前記無作為鍵は、少なくとも、１対の前記暗号化されたセクションに関しては異なることを特徴とする方法。
【請求項１９】
請求項１２に記載の方法において、前記復号化された無作為鍵は、前記無作為鍵により暗号化された情報の復号化に使用された後、削除されることを特徴とする方法。
【請求項２０】
請求項１７に記載の方法において、復号化された部分は使用後に削除されることを特徴とする方法。
【請求項２１】
請求項１２に記載の方法において、前記ベンダは、ユーザの身元を認証するデジタル証明書の一部として前記公開鍵を入手することを特徴とする方法。
【請求項２２】
請求項２１に記載の方法において、前記ベンダは前記証明書が有効であるか否かを確認することを特徴とする方法。
【請求項２３】
請求項１２に記載の方法において、暗号化された情報の使用よりも前にユーザの装置で実行されるプログラムが、前記秘密鍵が有効であるか否かを確認することを特徴とする方法。
【請求項２４】
請求項１２に記載の方法において、ベンダが前記秘密鍵と前記公開鍵とを生成し、また、少なくとも前記秘密鍵はユーザに送信されることを特徴とする方法。
【請求項２５】
請求項１８に記載の方法において、前記復号化された無作為鍵は、前記無作為鍵によって暗号化されたセクションを復号化した後、削除されることを特徴とする方法。
【請求項２６】
不正コピーから情報を保護するシステムであって、
ベンダの装置がユーザの公開鍵を入手する段階と、
ベンダの装置が前記公開鍵を利用して、販売された情報を非対称アルゴリズムにより暗号化する段階と、
ユーザの装置がユーザの秘密鍵を入手する段階と、
ユーザの装置が前記秘密鍵を用いて、購入した情報を非対称アルゴリズムにより復号化する段階と、
を備えることを特徴とするシステム。
【請求項２７】
請求項２６に記載のシステムにおいて、前記公開鍵は、情報を購入する際にユーザからベンダへ渡されることを特徴とするシステム。
【請求項２８】
請求項２７に記載のシステムにおいて、前記公開鍵は、購入注文のデジタル署名の一部として譲渡されることを特徴とするシステム。
【請求項２９】
請求項２７に記載のシステムにおいて、前記公開鍵は、コンピュータネットワークを利用して渡されることを特徴とするシステム。
【請求項３０】
請求項２６に記載のシステムにおいて、前記ベンダは、ユーザの情報に関連した鍵ストレージから前記公開鍵を入手することを特徴とするシステム。
【請求項３１】
請求項３０に記載のシステムにおいて、前記ベンダはコンピュータネットワークを通じて前記公開鍵を要求および／または入手することを特徴とするシステム。
【請求項３２】
請求項２６に記載のシステムにおいて、前記購入された情報は、コンピュータネットワークを通じてユーザに渡されることを特徴とするシステム。
【請求項３３】
請求項２６に記載のシステムにおいて、前記購入した情報は前記ユーザが所有するＣＰＵによる実行を意図したプログラムに相当し、このプログラムは、前記秘密鍵を利用して、実行前に自身を復号化することを特徴とするシステム。
【請求項３４】
請求項２６に記載のシステムにおいて、復号化された情報は使用後に削除されることを特徴とするシステム。
【請求項３５】
請求項２６に記載のシステムにおいて、前記購入された情報は２つ以上の暗号化されたセクションから成り、前記２つ以上の暗号化されたセクションは、１つが利用される時まで１つ以上のセクションが暗号化されたままであるように、利用の前に復号化されることを特徴とするシステム。
【請求項３６】
請求項３５に記載のシステムにおいて、復号化された部分は使用後に削除されることを特徴とするシステム。
【請求項３７】
請求項２６に記載のシステムにおいて、
クライアントの装置がＣＰＵとメモリとを含み、
メモリ内の情報は前記公開鍵を利用して暗号化され、
ＣＰＵは情報の復号化のためのモジュールを含み、情報が他のＣＰＵモジュールに利用される前に前記秘密鍵を利用して、前記情報が復号化された状態でＣＰＵの外部に存在しないようにすることを特徴とするシステム。
【請求項３８】
請求項２６に記載のシステムにおいて、前記ベンダは、ユーザの身元を認証するデジタル証明書の一部として前記公開鍵を入手することを特徴とするシステム。
【請求項３９】
請求項３８に記載のシステムであって、前記ベンダは前記デジタル証明書が有効であるか否かを確認することを特徴とするシステム。
【請求項４０】
請求項２６に記載のシステムにおいて、暗号化された情報の利用前に、ユーザの装置で実行可能なプログラムが、前記秘密鍵が有効であるか否かを確認することを特徴とするシステム。
【請求項４１】
請求項２６に記載のシステムにおいて、ベンダが前記鍵を生成し、少なくとも秘密鍵がユーザに渡されることを特徴とするシステム。
【請求項４２】
請求項３７に記載のシステムにおいて、前記ＣＰＵ上で実行可能な前記プログラムは、復号化された実行可能なコードの読み出しへのアクセスを持たないことを特徴とするシステム。
【請求項４３】
不正使用に対する情報保護のシステムであって、
ベンダの装置がユーザの公開鍵を入手する段階と、
ベンダの装置が、対称暗号化アルゴリズムのための無作為鍵を生成する段階と、
ベンダの装置が、前記対称暗号化アルゴリズムと前記無作為鍵とを用いて暗号化された情報を暗号化する段階と、
ベンダの装置が、前記対称暗号化アルゴリズムと前記公開鍵とを用いて前記無作為鍵を暗号化する段階と、
ユーザの装置がユーザの公開鍵を入手する段階と、
ユーザの装置が、前記ベンダから入手した前記暗号化された無作為鍵を、非対称暗号化アルゴリズムと前記秘密鍵とを用いて復号化する段階と、
ユーザの装置が、前記ベンダから入手した前記暗号化された情報を、対称アルゴリズムと復号化された無作為鍵とを利用して復号化する段階と、
を備えることを特徴とするシステム。
【請求項４４】
請求項４３に記載のシステムにおいて、前記公開鍵は情報を購入する際に前記ユーザから前記ベンダへ渡されることを特徴とするシステム。
【請求項４５】
請求項４４に記載のシステムにおいて、前記公開鍵は、購入注文のデジタル署名の一部として譲渡されることを特徴とするシステム。
【請求項４６】
請求項４４に記載のシステムにおいて、前記公開鍵は、コンピュータネットワークを利用して渡されることを特徴とするシステム。
【請求項４７】
請求項４３に記載のシステムにおいて、前記ベンダは、ユーザの情報に関連した鍵ストレージから前記公開鍵を入手することを特徴とするシステム。
【請求項４８】
請求項４７に記載のシステムにおいて、前記ベンダはコンピュータネットワークを通じて前記公開鍵を要求および／または入手することを特徴とするシステム。
【請求項４９】
請求項４３に記載のシステムにおいて、前記購入された情報は、コンピュータネットワークを通じてユーザに渡されることを特徴とするシステム。
【請求項５０】
請求項４３に記載のシステムにおいて、前記購入した情報は前記ユーザが所有するＣＰＵによる実行を意図したプログラムに相当し、このプログラムは、前記秘密鍵を利用して、実行前に自身を復号化することを特徴とするシステム。
【請求項５１】
請求項４３に記載のシステムにおいて、復号化された情報は使用後に削除されることを特徴とするシステム。
【請求項５２】
請求項４３に記載のシステムにおいて、前記購入された情報は２つ以上の暗号化されたセクションから成り、前記２つ以上の暗号化されたセクションは、１つが利用される時まで１つ以上のセクションが暗号化されたままであるように、利用の前に復号化されることを特徴とするシステム。
【請求項５３】
請求項５２に記載のシステムにおいて、前記暗号化されたセクションの暗号化のための前記無作為鍵は、少なくとも１対の前記暗号化されたセクションに関しては異なることを特徴とするシステム。
【請求項５４】
請求項４３に記載のシステムにおいて、ユーザのデバイスで復号化された前記無作為鍵は、この鍵によって暗号化された情報の復号化に使用した後、削除されることを特徴とするシステム。
【請求項５５】
請求項５２に記載のシステムにおいて、復号化されたセクションは使用後に削除されることを特徴とするシステム。
【請求項５６】
請求項４３に記載のシステムにおいて、
ユーザの装置がＣＰＵとメモリとを含み、
購入された情報は前記メモリ内で前記無作為鍵を利用して暗号化され、
ＣＰＵは、前記情報が別のモジュールによって利用される前に前記無作為鍵を用いて前記メモリからの前記情報を復号化するためのモジュールを含み、
前記情報が復号化された状態で前記ＣＰＵの外部に存在しないようにすることを特徴とするシステム。
【請求項５７】
請求項５６に記載のシステムにおいて、前記ＣＰＵは、前記暗号化された情報を復号化するためのモジュールにおいて前記無作為鍵を利用する前に、前記秘密鍵を利用して前記無作為鍵を復号化するためのモジュールを含み、前記無作為鍵が、復号化された状態で前記ＣＰＵの外部に存在しないようにすることを特徴とするシステム。
【請求項５８】
請求項５６に記載のシステムにおいて、前記ＣＰＵにおいて実行可能な前記プログラムは、復号化された実行可能なコードの読み出しへのアクセスを持たないことを特徴とするシステム。
【請求項５９】
請求項５７に記載のシステムにおいて、実行可能なプログラムは、前記復号化された無作為鍵の読み出しへのアクセスを持たないことを特徴とするシステム。
【請求項６０】
請求項４３に記載のシステムにおいて、前記ベンダは、ユーザの身元を認証するデジタル証明書の一部として前記公開鍵を入手することを特徴とするシステム。
【請求項６１】
請求項６０に記載のシステムにおいて、前記ベンダは前記デジタル証明書が有効であるか否かを確認することを特徴とするシステム。
【請求項６２】
請求項４３に記載のシステムにおいて、復号化した情報を利用する前にユーザの装置で実行可能なプログラムが、前記秘密鍵が有効であるか否かを確認することを特徴とするシステム。
【請求項６３】
請求項４３に記載のシステムにおいて、ベンダが前記秘密鍵と前記公開鍵とを生成し、少なくとも前記秘密鍵はユーザに渡されることを特徴とするシステム。
【請求項６４】
請求項５３に記載のシステムにおいて、復号化された前記無作為鍵は、前記無作為鍵によって暗号化されたセクションの復号化の後に削除されることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は不正使用からのプログラムおよびデータの保護に係り、より詳細には、非対称暗号方式によるデータの暗号化を利用した保護のシステムおよび方法に関する。これにより、保護されたデータのコピーを不正に公開する人物を特定することが可能になる。
【背景技術】
【０００２】
今日、不正コピーに対する情報セキュリティの問題は次第に重要性を増している。特に、海賊版の流通に対するプログラムの保護には注目が集まっている。海賊版の流通により、ソフトウェアのベンダは甚大な損害を受ける。
現行のプログラム保護方法は、大きく２つの分野、すなわちハードウェアセキュリティとソフトウェアセキュリティとに分けられる。
【０００３】
特許文献１や特許文献２に記載のハードウェアセキュリティの方法では、購入したソフトウェアに技術的デバイスが添付されており、このデバイスを、ソフトウェアを使用するコンピュータに接続する。デバイスはプログラムの要求に応答し、プログラムはデバイスの応答に基づいて、ベンダがソフトウェアの使用を認可しているか否かを判断する。
【０００４】
ハードウェアセキュリティの方法にはいくつかの欠点がある。まず、追加的な機材を用いることからソフトウェアの費用が増大してしまう。また、コンピュータ間で保護機材を移動させなければならないので、使用許諾契約で認められているにもかかわらず、購入したソフトウェアをユーザが複数のコンピュータで同時に使用することが困難である。
【０００５】
ハードウェアセキュリティの方法では、多くの場合、保護機材のエミュレータを生成することが可能である。したがって、こうしたエミュレータを添付したソフトウェアの海賊版コピーが流通する。あるいは、ソースコード比較において、予測されるテンプレートに照らしてデバイスからの応答のロケーションを検出し、コードから認可チェックを取り除く（例えば条件付きの転送を無条件転送に置き換える）ことによって保護をすり抜けるという別の方法もある。
【０００６】
一方、ソフトウェアセキュリティの方法は、製品購入の際にユーザに提示される製造番号に基づくのが通例である（例えば特許文献３を参照）。
ユーザは、ソフトウェアをインストールまたは使用する際に製造番号を入力する。その後、一般的に、製造番号とテンプレートとが比較される。テンプレートは、プログラムで指定された定数、あるいはユーザおよび／またはユーザのコンピュータの機器に関するデータから得られた関数である。製造番号には、暗号化されたソースコードやソースコードの部品を復号化するための鍵としての働きを持つものもある。
【０００７】
ソフトウェアセキュリティの方法の欠点は、製造番号がユーザのコンピュータの個別設定に依らない場合、製造番号を添付したプログラムの不正コピーが違法に流通する可能性があるという点である。こうした相関関係が存在するとき、ユーザサポートサービスは、登録ユーザがコンピュータの構成要素を（例えば、アップグレードの際や不具合が生じた際に）変更する度に新しい製造番号を通知しなければならないため、大きな負担を被る。また、コンピュータの部品を交換すると以前購入したソフトウェアを使用できないのは、ユーザにとっても不便である。ユーザはコンピュータの新しい設定を製造者に伝え、新しい番号を通知してもらわなければならない。このとき、（製造番号を暗号化のキーとして用いない場合には）ソースコードから製造番号の真偽チェックが取り除かれる可能性がある。
【特許文献１】米国特許第５，８２６，０１１号
【特許文献２】米国特許第６，３０８，１７０号
【特許文献３】米国特許第６，１３４，６５９号
【特許文献４】米国特許出願第１，１８４，４０５，８２９号
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明が提供するのは、従来のセキュリティ方法の欠点を大幅に補う方法による、不正コピーに対するセキュリティシステムの方法およびプログラムである。
より詳細には、本発明が提供するのは、非対称暗号化アルゴリズムを用いたセキュリティの方法およびシステムである。これにより、特定のユーザに限ってプログラムの修正を許可する。また、ユーザの一人が合法的に購入したプログラムコピーが多数のユーザの間で流通する可能性を小さくする。不正コピーの流通が起きた場合には、これを配給しているユーザを特定し、法的措置を講じることも可能である。
【課題を解決するための手段】
【０００９】
本発明の実施方法の１つにおいては、プログラムコピーの販売に際して、プログラムコピーの実行コードを暗号化する。暗号化は、ユーザが購入した公開鍵を用いて非対称暗号方式により行う。こうして非対称暗号方式で暗号化されたプログラムコピーは特定のユーザに向けて販売される。秘密鍵を所有するユーザ以外には、何人もこのプログラムコピーを復号化できず、したがって実行できない。秘密鍵は公開鍵と対を成す。公開鍵はプログラムコピーの販売時に配布される。
【発明の効果】
【００１０】
本発明には、ベンダからプログラムを購入したユーザのみがプログラムを実行できるという重要な技術的利点がある。
また、本発明には、違法コピー用にプログラムを配給したユーザを否定の余地無く特定できるという別の重要な技術的利点がある。
【００１１】
本発明にはさらに、保護対象のプログラムが動作しているコンピュータの設定をユーザが変更できるという別の重要な技術的利点がある。その際、プログラム製造者に新しい鍵を報告する必要はない。
本発明には、ユーザのコンピュータに限らず、アクセス可能ないずれのコンピュータにおいてもユーザが保護対象のプログラムを実行可能であるという、さらに別の重要な技術的利点がある。この特徴はプログラム製造者には知られているところである。
【００１２】
また、本発明は、ユーザおよびプログラム製造者が、制御不能なユーザが所有する公開鍵に適合するプログラムコピーを無効にできるという別の重要な技術的利点を提供する。これにより、こうした公開鍵にアクセス可能な人物は、プログラムコピーを実行できなくなる。
本発明が提供する別の重要な技術的利点は、ユーザはすべての利用プログラムに対して１つの製造番号のみを覚えておけばよいという点である。この番号はユーザの秘密鍵であってもよいし、あるいは秘密鍵にアクセスするためのパスワードであってもよい。
【発明を実施するための最良の形態】
【００１３】
本発明の好適な実施例を図示する。なお、異なる図面中であっても、同一の部分には同一の符号を付す。
図１には、不正使用に対するプログラムセキュリティシステムの実装の１つを示す。ユーザ１０１はプログラムコピー１０５を購入し、ベンダ１００に公開鍵１０７を（場合によっては証明書の一部として）送信する。インターネットを通じてプログラムを購入する場合、ＳＳＬプロトコルを用いると、ＳＳＬプロトコルの機能の利用、すなわちクライアントの公開鍵の要求が可能である。公開鍵を入手すると、プログラムのベンダはこれを用いて非対称アルゴリズム（例えばＲＳＡ。特許文献４を参照）１０２を利用しプログラムを暗号化する。
【００１４】
暗号化されたプログラム１０８をメモリ１０３から削除した後に実行する場合、プログラム１０８は非対称アルゴリズム１０４、各アルゴリズム１０２によって復号化される。ここでは公開鍵１０７と対を成すユーザの秘密鍵１１０が利用される。この結果作り出される、プログラム１０５と全く同一の復号化されたプログラムコピー１０９は、ユーザのコンピュータのＣＰＵ１０６に送信され、実行される。
【００１５】
図２に示すのは、実行可能な暗号化されたプログラム１０８である。プログラム１０８は、ユーザの秘密鍵の失効確認のためのモジュール２０１を含む。モジュール２０１は、ユーザの証明書の一部として秘密鍵１１０を受信した後、この鍵１１０を添付している情報を通じて、証明書失効リスト（ＣＲＬ）２０５のロケーションを判断する。その後、プログラムは証明書失効リスト２０５のストレージ２０３に要求２０２を送信する（通例、こうしたストレージはユーザの公開鍵を認証する認証局である）。
【００１６】
認証局からの応答２０４は、ユーザの鍵の失効についての情報を含む。応答は、要求プログラムが認証を確認できるよう、デジタル署名を含んでもよい。認証局からの応答２０４に応じて、暗号化されたプログラムは実行２０８を取り消すか、または暗号の主要部分の管理を復号化モジュール２０６に委任する。
【００１７】
図３に示すのは、暗号化されたプログラム１０８である。プログラム１０８は、プロシージャの暗号を実行の直前に復号化することによって、復号化されたソースコードを含むメモリセクションをコピーして保護をすり抜ける処理を煩雑にする。プログラム１０８は１つ以上の暗号化されたセクション３０２を含む。プログラムの実行処理において、暗号化されたセクションに管理を委任する必要がある場合には、復号化モジュール２０６が呼び出される。復号化モジュール２０６はプログラムの暗号化されたセクションのみを復号化する。暗号化されたセクション３０２の実行の終わりに、メモリ消去モジュール３０４を呼び出し、ユーザのコンピュータのメモリにある暗号化されたプログラム３０２の復号化されたセクションコードを削除してもよい。
【００１８】
この処理は、次の暗号化されたセクションを実行する間繰り返される。
保護のすり抜けをさらに煩雑にするために、対称暗号方式と非対称暗号方式とを同時に用いる場合には、図５に示すように、種々の対称暗号化鍵を用いてプログラムの各部分の暗号化を行うことができる。
【００１９】
図４にはＣＰＵ４０３の動作を示す。ＣＰＵ４０３は、本発明のメモリ４０２からの情報を復号化するためのモジュール４０５を備える。コンピュータ４０１においてユーザの公開鍵により暗号化されるプログラムは、メモリ４０２に格納されている。ＣＰＵは、マシンコードの命令をメモリ４０２から選択し実行する。
【００２０】
暗号化されたプログラムを実行する前に、ＣＰＵ内部の秘密鍵レジスタ４０７にユーザの秘密鍵が入力される。プログラムを実行する間、暗号化された実行可能なコードは起動モジュール４０４のメモリからＣＰＵに読み出される。起動モジュール４０４は暗号化された実行可能な命令コードを復号化モジュール４０５に伝達する。公開鍵レジスタ４０７の内容を利用する復号化モジュール４０５は、モジュール４０６による実行に適した状態に変化させることにより、命令コードを復号化する。モジュール４０６は、これらの命令によって指定されるアクションの実行の主体である。さらに、復号化されたコードへのプログラムアクセスを実行のみに制限し、データの形での読み出しを許可しないことも可能である。この制限により、プログラムが（例えばバッファスラッシングから発生する過誤の結果）復号化されたコードの読み出しと、復号化された形態でのメモリへの記録とに用いられる場合、復号化された情報の漏洩を防ぐことができる。
【００２１】
この仕組みは、図５に示す暗号化を利用する方法を導入することにより改良できる。そのためには、ＣＰＵにもう１つのレジスタを設置して対称暗号化アルゴリズムの鍵５０６を格納することが考えられる。この鍵は、非対称暗号化アルゴリズム５０５を用いて復号化された後、ＣＰＵに記録される。また、もう１つの復号化モジュール５０７が対称暗号化アルゴリズムと前述のレジスタからの鍵５０６とを用いて、暗号化された情報を復号化する。
【００２２】
本発明の体系は、命令コードのみならず、命令コードによって処理されるデータにも拡大して適用することができる。この場合、プログラムの実行の結果として得られた情報を、ＣＰＵから出力する際に暗号化することも可能である。暗号化には、図１乃至５に説明するような方法を用いることが可能である。ベンダはこうした暗号化方法を用いて情報を利用する。
【００２３】
図５が示すのは、原則として対称暗号化プロシージャが非対称暗号化プロシージャよりもはるかに速く実行される場合の、本発明が提案する保護方法の更なる改良である。
ベンダはプログラムの販売時に対称アルゴリズムの鍵５０１を無作為に生成する。その後、ソースコード１０５が、鍵５０１を用いて暗号化される（段階５０２）。同時に、鍵５０１も非対称暗号化により暗号化される（段階５０３）。ユーザ１０１から受信した公開鍵１０７は、復号化鍵として機能する。段階５０４において、暗号化された鍵５０１は暗号化されたソースコードに加えられ、暗号化されたプログラム１０８となり、ユーザ１０１の手にわたる。
【００２４】
暗号化されたプログラム１０８を実行する間、ユーザ１０１はまず、秘密鍵１１０を用いて、公開鍵１０７と対を成す対称アルゴリズムの鍵を復号化する（段階５０５）。ここで得られる鍵は、ベンダが生成する鍵５０１と同一である。次に、鍵５０６を用いて実行可能なソースコードを復号化する（段階５０７）。その結果、実行可能なコード１０６が得られる。コード１０６はプログラム１０５と一致し、ユーザのコンピュータのＣＰＵによって実行される。
【００２５】
前述した本発明の実施例のいずれにおいても、復号化鍵は、一定期間内に必要としないのであれば、ユーザのデバイスのメモリから即座に消去することが望ましい（例えば、実行可能なソースコードの復号化に用いられる鍵は、このコードを復号化した後は次にプログラムを実行するときまで不要である）。
【００２６】
特に注目すべきは、本発明による、デジタル証明書を用いたプログラム保護の活用である。デジタル証明書の発行は認証局が行う。認証局はユーザの身元と公開鍵とが適合することを確認する。このとき、プログラムのコピーを復号化用の公開鍵とともに配給しようとすると（これは製造番号を利用した保護システムにおいては典型的な方法である）、誰がこのコピーを購入したのか、そしてコピーを配給するために公開鍵を他人に渡したのは誰なのかを特定することができる。
【産業上の利用可能性】
【００２７】
本発明の体系は、どんな種類の情報（例えば音声や映像の記録）の保護にも容易に適用することができ、実行可能なソースコードへの適用に限られることはない。この場合、データの利用（例えば音声や映像の記録の再生）に適用するか、あるいはシステムを操作することにより復号化が実行される。
【００２８】
以上、本発明を詳細に説明したが、本発明の理念と範囲から逸脱することなく、本明細書に従って様々な変更や補正を加えることが可能であるという点は明確にしておかなければならない。
【図面の簡単な説明】
【００２９】
【図１】本発明を利用して保護されるプログラムの生成および実行の過程を示す図である。
【図２】ユーザの秘密鍵の失効確認が行われる場合の、本発明を利用して保護されるプログラムの実行の過程を示す図である。
【図３】実行の過程でソースコードを復号化する場合の、本発明を利用して保護されるプログラムの実行の過程を示す図である。
【図４】ＣＰＵがプログラム実施のユーザ権利を確認するための特別なモジュールを含むコンピュータの構造図である。
【図５】対称暗号方式と非対称暗号方式とが同時に用いられる場合の、本発明を利用して保護されるプログラムの生成および実行の過程を示す図である。
【図１】
2005512170.tif 000003
【図２】
2005512170.tif 000004
【図３】
2005512170.tif 000005
【図４】
2005512170.tif 000006
【図５】
2005512170.tif 000007
【手続補正書】
【提出日】平成14年9月2日(2002.9.2)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】
情報の不正使用に対する保護方法であって、
ベンダがユーザの公開鍵を入手し、公開鍵と非対称暗号化アルゴリズムとを用いて、販売された情報を復号化する段階と、
ユーザが前記公開鍵に対応するユーザの秘密鍵を入手する段階と、
ユーザが前記公開鍵に対応する前記秘密鍵を用いて、入手した情報を復号化する段階とを備え、
前記情報は、使用の直前に復号化され、情報を使用しない時は前記公開鍵によって暗号化され格納されることを特徴とする方法。


【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】請求項１２
【補正方法】変更
【補正の内容】
【請求項１２】
不正複製に対する情報保護の方法であって、
ベンダがユーザの公開鍵を入手する段階と、
ベンダが非対称暗号化アルゴリズムの無作為鍵を生成する段階と、
ベンダが、前記非対称暗号化アルゴリズムおよび前記無作為鍵を用いて保護対象の情報を暗号化する段階と、
ベンダが、非対称暗号化アルゴリズムおよび前記公開鍵を用いて前記無作為鍵を暗号化する段階と、
ユーザが前記公開鍵に対応するユーザの秘密鍵を入手する段階と、
ユーザが、前記ベンダによって用いられる前記非対称暗号化アルゴリズムに対応する非対称暗号化アルゴリズムを用いて、ベンダから入手した暗号化された無作為鍵を復号化し、その際、情報が用いられない場合には、前記非対称暗号化アルゴリズムと前記復号化された無作為鍵とを用いて、前記ベンダから得られた保護された情報を復号化する段階と、
を備えることを特徴とする方法。


【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】請求項２６
【補正方法】変更
【補正の内容】
【請求項２６】
不正複製に対する情報の保護システムであって、
ベンダの装置がユーザの公開鍵を入手する段階と、
ベンダの装置が、前記鍵を用いて非対称アルゴリズムにより、販売された情報を復号化する段階と、
ユーザの装置が前記公開鍵に対応するユーザの秘密鍵を入手する段階と、
ユーザの装置が、前記秘密鍵を用いて非対称アルゴリズムにより、入手した情報を復号化する場合には、情報は使用の直前に復号化され、情報が使用されない場合には前記公開鍵により暗号化され格納される段階と、
を備えることを特徴とするシステム。


【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】請求項４３
【補正方法】変更
【補正の内容】
【請求項４３】
不正使用に対する情報保護のシステムであって、
ベンダの装置がユーザの公開鍵を入手する段階と、
ベンダの装置が対称暗号化アルゴリズムの無作為鍵を生成する段階と、
ベンダの装置が、前記対称暗号化アルゴリズムおよび前記無作為鍵を用いて、保護されるべき情報を暗号化する段階と、
ベンダの装置が、対称暗号化アルゴリズムおよび前記公開鍵を用いて、前記無作為鍵を暗号化する段階と、
ユーザの装置が前記公開鍵に対応するユーザの秘密鍵を入手する段階と、
ユーザの装置が非対称暗号化アルゴリズムおよび前記秘密鍵を用いて、ベンダから入手した、前記暗号化された無作為鍵を復号化する場合には、保護される情報は使用の直前に復号化され、情報が用いられない場合には前記無作為鍵は前記公開鍵を用いて暗号化されたまま格納される段階と、
ユーザの装置が対称暗号化アルゴリズムおよび復号化された無作為鍵を用いてベンダから入手した保護された情報を復号化する段階と、
を備えることを特徴とするシステム。




【国際調査報告】
2005512170.tif 000008
2005512170.tif 000009