(57)【要約】      （修正有）【課題】ソフトウェア製品の不正使用を防止する。【解決手段】１つのプログラムを、それぞれ公開と秘密との少なくとも２つの部分に分割し、公開部分は、第１の処理手段上で実行し、秘密部分は、安全化された第２の処理手段上で実行する。公開部分は第１の処理手段のメモリ内に置き、秘密部分は第２の処理手段の安全化された媒体上に置く。次に、第２の処理手段を第１の処理手段に接続し、かつユーザーによって始動される外部信号の関数のパラメータ／変数を、第１の処理手段から第２の処理手段へ伝送する。第２の処理手段によって、受信した前記パラメータ／変数の幾つかを実施することにより、プログラムの少なくとも一部を実行する。その実行の結果を、第２の処理手段から第１の処理手段へ伝送し、第１の手段によって実現される実行において、前記の結果の幾つかを利用する。【選択図】なし【特許請求の範囲】
【請求項１】
コンピュータプログラム実行の制御方法であって、
該コンピュータプログラムが公開データと秘密データとに分割されており、
前記公開データは第１のメモリ内に保存されており、
該第１のメモリは第１の処理手段からアクセス可能なものであり、
前記秘密データは、チップ内に保存されており、
該チップは前記第１の処理手段に接続されており、
該チップは安全モジュールを有する第２の処理手段を備えており、
前記安全モジュールはマイクロプロセッサおよび第２のメモリを備えており、
当該制御方法が以下のステップを有することを特徴とする、コンピュータプログラム実行の制御方法。
ａ）ユーザーによって始動される外部信号によって決まるデータが、第１の処理手段から第２の処理手段へと伝送される。
ｂ）前記コンピュータプログラムの少なくとも一部を実行する為に、受信したデータの少なくとも一部が第２のメモリ内に保存され、第２の処理手段により実行される。
ｃ）前記第２の処理手段による実行の結果が、第２の処理手段から第１の処理手段へ伝送される。
ｄ）第１の処理手段によって実現される実行において、第１の処理手段が前記の結果の幾つかを利用する。
【請求項２】
コンピュータプログラム実行の制御方法であって、
該コンピュータプログラムが公開データと秘密データとに分割されており、
該秘密データとは暗号化されたデータ（暗号化データ）であって、
前記公開データと前記暗号化データとが第１のメモリ上に保存されており、該第１のメモリは第１の処理手段に接続されるためのものであり、
前記暗号化データが、チップ内に保存され、
該チップは第２の処理手段を備えており、
該第２の処理手段は復号化機能を発揮し、かつ、安全モジュールを備えており、
前記安全モジュールは、マイクロプロセッサと第２のメモリとを備えており、
以下から成るステップを有することを特徴とする、コンピュータプログラム実行の制御方法。
ａ’）前記暗号化データを、第１の処理手段から第２の処理手段へ伝送する。
ｂ’）第２の処理手段が、前記復号化機能を実施することにより、受信した前記暗号化データを復号化し、第２のメモリ内に、該復号化された暗号化データを保存する。
ｃ’）外部信号によって決まるデータを、第１の処理手段が第２の処理手段へ伝送する。
ｄ’）第２の処理手段が、受信したデータの少なくとも一部を利用することにより、前記復号化された暗号化データを実行する。
ｅ’）該第２の処理手段による実行の結果を、第２の処理手段から第１の処理手段へ伝送する。
ｆ’）第１の処理手段によって実現される実行において、第１の処理手段が前記の結果の幾つかを利用する。
【請求項３】
第１の処理手段が、コンピュータの中央装置であることを特徴とする、請求項１または２に記載の方法。
【請求項４】
中央装置が、特にインターネットタイプのネットワークに接続されており、該ネットワーク上で、プログラムの少なくとも前記公開データがネットワークエンティティからアクセス可能であることを特徴とする、請求項１から３のいずれか１つに記載の方法。
【請求項５】
前記プログラムの使用権の安全化された配布が、サーバーから、ユーザーに係る媒体に対して行われることを特徴とする、請求項２から４のいずれか１つに記載の方法。
【請求項６】
媒体が、該サーバーに、権利（秘密プログラムまたは秘密鍵）のロード要求を送信し、該ロード要求は前記コンピュータプログラムのＩＤと前記媒体のＩＤとを含んでおり、該サーバーは、該ユーザーに係る媒体のＩＤと権利の暗号化鍵とを組み合わせて多様化された暗号化鍵を作成し、該サーバーは該多様化された暗号鍵を使用して要求された権利を暗号化し、かつこのように暗号化された権利を該ユーザーに係る媒体に送信することを特徴とする、請求項５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、違法コピーに対するソフトウェア製品の保護の分野に関するものである。それは、ソフトウェア製品の実行の制御方法を対象とする。
【０００２】
ソフトウェア製品とは、中央装置、特にマイクロコンピュータＰＣによって処理または実行される一切のプログラムおよび／またはデータを意味する。それらは、フロッピー（登録商標）ディスク、ハードディスクまたはコンパクト光学ディスク《ＣＤ−ＲＯＭ》などのあらゆる媒体に記録されることができるか、または《ＲＯＭ》《ＥＥＰＲＯＭ》タイプのメモリのようなあらゆる媒体に記憶されることができる。
【背景技術】
【０００３】
特にＰＣ用のコンピュータプログラムまたはソフトウェア製品は、無許可で複製され、使用されることが多くなってきている。このことは、サーバー網によってコピーを大規模に配布すること、またはソフトウェアの焼き付けられたＣＤ−ＲＯＭの大量生産によってそれを複製することが可能であることによって増大している。また、同じ会社内で起こり得るマイクロコンピュータのハードディスクまたはフロッピー（登録商標）ディスクへの単なる不法コピーも周知のことである。
【０００４】
ソフトウェア製品の不正使用を防ぐための解決法の中で、コンピュータプログラムの配布の制御方法が知られている。プログラムは、暗号化された形でその媒体に記録されており、次に、許可されたユーザーによって、コンピュータにロードされる前に復号化される。許可されたユーザーは、このために、復号化を可能にする手段をもっている。この方法は、暗号化されたプログラムを含む媒体の複製を防ぐという利点をもつが、ＰＣからのプログラムのコピーを防がないという欠点をもつ。
【０００５】
プログラムの実行の制御方法もまた、知られている。それは、特にシリアル通信用のＰＣのコネクタに、またはプリンタに接続された安全化された装置の存在を検証することを可能にする手順を実施することから成り、この装置は、その存在によって、ユーザーがプログラムを使用することを許可されていることを証明する。プログラムの実行の際、安全化された装置の存在と真正を検証し、検証はプログラムの実行の続行を条件づけている。この方法は、この検証に対応する命令をジャンプして、迂回される可能性があるという欠点をもつ。
【０００６】
マイクロコンピュータの使用を、つまり間接的には内部に含まれる一切のプログラムを、許可された人によって制御する方法もまた、知られている。それは、普通、《スマートカード》と呼ばれる、超小型回路カードのようなチップカードを実現する。この方法においては、マイクロコンピュータＰＣは、認証秘密コードを含む《スマートカード》に適したインターフェースによって、接続されている。許可されたユーザーは、アクセスコードをキーボードに入力しなければならず、該アクセスコードは、《スマートカード》内に保存されたものと比較される。適正の場合、コンピュータ、または情報、あるいはコンピュータプログラムへのアクセスが許可される。
【０００７】
この方法には、コンピュータ内へプログラムがロードされる前では、媒体を直接保護しないという欠点がある。従って、媒体を複製することができるのである。
【０００８】
以下に続く説明において、スマートカードとは、付属的で、取り外し可能で携帯可能なあらゆるチップ式媒体を意味し、マイクロプロセッサと、秘密鍵並びに秘密プログラムのような秘密データを含むのに適したメモリ空間とを有する少なくとも１つの安全モジュールを有する。特に、コンピュータの入出力ポートに差込み可能なモジュールに関するものである。好ましくは、チップカードまたはミニチップカードの標準サイズのカードに関するものである。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、現在の解決法よりもより効果的な、違法コピーの問題に対する解決法を提案することである。
【００１０】
本発明によってもたらされる解決法もまた、コンピュータプログラム実行の制御のレベルに位置する。実行は、使用権を得た人のみに許可されることによって制御される。この権利は、安全化された手段または付属物、特に本発明の一例による《スマートカード》 によって具体化される。この手段で、あらゆる複製または一切のプログラムの配布を実施することが抑止される。
【課題を解決するための手段】
【００１１】
このために、本発明はまず、コンピュータプログラム実行の制御方法を対象とする。第１の態様によると、それは以下のことから成るステップを有する。
１）１つのプログラムを、それぞれ公開と秘密との少なくとも２つの部分に分割し、公開部分は、第１の処理手段上で実行されることに適しており、秘密部分は、安全化された第２の処理手段上で実行されることに適している。
２）第１の処理手段のメモリ内に、前記公開部分を置く。
３）第１の処理手段に接続されるための第２の処理手段の、安全化された媒体上に、秘密部分を置く。
４）第１の処理手段によるプログラム実行のために、以下のオペレーションを行う。
ａ）第２の処理手段を第１の処理手段に接続し、かつユーザーによって始動される外部信号の関数のパラメータ／変数を、第１の処理手段から第２の処理手段へ伝送する。
ｂ）第２の処理手段によって、受信した前記パラメータ／変数の幾つかを実施することにより、プログラムの少なくとも一部を実行する。
ｃ）前項ｂ）の実行の結果を、第２の処理手段から第１の処理手段へ伝送する。
ｄ）第１の手段によって実現された実行において、前記の結果の幾つかを利用する。
【００１２】
それは、第２の手段が携帯可能かつ取り外し可能なチップの付いた付属媒体であることを特徴とする。
【００１３】
別の実施態様によると、方法は、以下から成るステップを有する。
１’）１つのプログラムを、それぞれ公開と秘密との、少なくとも２つの部分に分割し、公開部分は、第１の処理手段上で実行されることに適しており、秘密部分は、安全化された第２の処理手段上で実行されることに適している。
２’）少なくとも１つの秘密部分を暗号化し、それを同一媒体上に公開部分と共に置き、媒体が第１の処理手段に接続されるためのものである。
３’）対応する復号化機能を、第２の処理手段内に置く。
４’）プログラム実行のために、以下のオペレーションを行う。
ａ’）第２の処理手段を第１の処理手段へ接続し、かつ暗号化された秘密部分の全部または一部を、第１の処理手段から第２の処理手段へ伝送する。
ｂ’）安全化された第２の処理手段によって、前記復号化機能を実施することにより、受信し暗号化された前記前記秘密部分を復号化し、かつ安全化されたメモリに平文の秘密部分を保存する。
ｃ’）外部信号の関数のパラメータ／変数を、第１の処理手段から第２の処理手段へ伝送する。
ｄ’）安全化された第２の処理手段によって、受信した前記パラメータ／変数の幾つかを利用することにより、秘密の少なくとも一部を実行する。
ｅ’）前項ｄ’）の実行の結果を、第２の処理手段から第１の処理手段へ伝送する。
ｆ’）第１の手段によって実現された実行において、前記の結果の幾つかを利用する。
【００１４】
それは、第２の手段が携帯可能かつ取り外し可能なチップの付いた付属媒体であることを特徴とする。
【００１５】
第２の変型の実施の特徴によると、オペレーションａ’）において、必要に応じて、および／または安全化された第２の処理手段の容量に応じて、暗号化されたプログラムの一部を伝送する。
【００１６】
この特徴のおかげで、第２の処理手段のメモリ容量より大きなサイズの暗号化されたプログラムを実行することが可能である。そのことは、容量が小さいために第２の処理手段としては普通は除外される、チップタイプの手で扱える、目立たない携帯可能な媒体を、利用することを可能にする。
【００１７】
本発明は、コンピュータプログラムの一例についての方法の２つの実施態様の説明を読むことによってより良く理解されるであろう。
【実施例１】
【００１８】
例のために採用されたプログラムは、テキスト処理プログラムである。
【００１９】
方法を実施するためには、テキスト処理プログラムを少なくとも２つの、それぞれ公開と秘密の部分に分割することが必要である。公開部分は、第１の処理手段上にで実行されるのに適しており、その一方で、秘密部分は、安全化された第２の処理手段上で実行されるのに適している。従って、それらは、それぞれ互いに別個の適切なコンパイルを受けることができる。
【００２０】
第１の部分は公開と呼ばれ、第１の処理手段として例にとられたマイクロコンピュータ（ＰＣ）のオペレーティング・システム上で実行可能である。
【００２１】
秘密と呼ばれる第２の部分に関しては、第２の処理手段として例にとられたチップカードの安全化された回路上で実行可能である。安全化された回路は、８ビットのプロセッサと、カードのオペレーティング・システムを有する恒久性メモリＲＯＭと、ＥＥＰＲＯＭタイプの不揮発性メモリと、ＲＡＭタイプの作業用揮発性メモリとを備える。回路は、例えば、《スマートカード》の回路とすることができる。
【００２２】
テキスト処理プログラムを市販用媒体上へ保存する際、それは、個別の記憶または記録媒体に分割される。そのため、実施例では、公開部分を光学ディスク（ＣＤ−ＲＯＭ）上に置き、一方で秘密部分は、チップカードのＥＥＰＲＯＭメモリ内に置かれる。従って、この場合、プログラムは、それを具体化するための物理的媒体として２つの要素：光学ディスク、および組み合わされたチップカードを必要とする。実施例では、ＰＣ画面上でのカーソル位置の計算機能が選択されて、秘密部分を構成する。従って、光学ディスクに欠けているこの機能は、チップカード内のみに在ることになる。
【００２３】
プログラムを実行するために、ＰＣはインターフェースによってチップカードに接続され、それらの間の双方向通信が可能になる。光学ディスクの公開プログラムは、光学ディスクの読み取りによりＰＣ内にロードされる。チップカードは、例えばチップカード読取り装置を介してＰＣに接続することができ、読取り装置自身はＰＣの入出力ポートに接続されている。
【００２４】
本発明による実行の際、以下のオペレーションまたはステップが行われる。
【００２５】
第１の処理手段から第２の処理手段へ、外部信号の関数のパラメータ／変数を伝送する。
【００２６】
一般的に、外部信号とは、プログラムの各々の使用によって異なる可能性のある情報またはイベントを意味する。システムの安全は、カードへ通信される情報セットが各々の使用によって異なるほどよりよく保証される。また、それは、チップカード内のプログラムが複雑であるほどよりよく保証されるが、なぜならそれは、例えば、膨大な可能な出力を有し、入力と出力との関係が高度になるからである。
【００２７】
本発明での意味において、外部信号は、例えば、マウスまたはキーボードあるいは別の周辺入力装置を介して、ユーザーによって始動される行為とすることが可能である。
【００２８】
実施例では、ＰＣの中央装置が、ユーザーにより入力されるキーボードのキーに対応するデータを、インターフェースを介してカードに伝送する。中央装置は、公開プログラムおよびオペレーティング・システムの機能を実行することによって、この伝送を実施する。このため、公開プログラムは、この伝送に必要な命令を有する。
【００２９】
方法の次のステップによると、安全化された第２の処理手段によって、受信した前記パラメータ／変数の幾つかを利用することにより、プログラムの少なくとも一部を実行する。それは、プログラムのこの部分の実行の出力が、秘密プログラムの実行のために第２の処理手段によって利用または考慮されるパラメータ／変数の値または性質に、大きく依存するようになることを意味する。
【００３０】
実施例において、ユーザーがキーボードのキーを打つ時、カードは、従って、画面上のテキストライン内のカーソル位置の計算を実行し、方法の別のステップに従って、結果を、この場合はこの位置の値を、ＰＣに送り返す。
【００３１】
次に、方法によると、上記の結果は、そのまま使用することができるか、または、好ましくは、第１の手段によって実現された実行における上記の前記結果の幾つかを、考慮あるいは利用することができる。実施例では、ＰＣの中央装置は、プログラムの公開部分を実行し、カーソル位置を画面に表示する。
【００３２】
ユーザーは、カードの無い時にはテキスト処理のカーソル機能を使用できないことが確認される。この手段によって、テキスト処理ソフトウェアの一切の不正コピーが抑止されるが、これも、カードが無くてはそれを使用できないからである。本発明により、秘密部分はプログラムの本質的な部分に対応するだけに、上記の抑止力がさらに効果的であることが理解される。
【実施例２】
【００３３】
ここで、本発明の方法の別の実施態様を説明する。
【００３４】
方法の実施に必要なシステムは、上述のものと同一であるが、相違点は後に説明する。
【００３５】
秘密部分は、チップカードに置かれる代わりに、暗号化された形で、公開部分とともに光学ディスク上に置かれる。
【００３６】
カードのＲＯＭメモリは、オペレーティング・システムの他に、そのＲＡＭメモリ内に、復号化されるプログラムの復号化およびロード機能を含む。
【００３７】
本発明によるプログラムを実行する際、以下のオペレーションまたはステップを行う。
【００３８】
第１の処理手段から第２の処理手段へ、暗号化されたプログラムの全部または一部を伝送する。
【００３９】
実施例では、カーソル位置の計算機能が暗号化されている。それは、例えばプログラムの起動の際に、テキスト処理プログラムによってチップカードへ、暗号化されて伝送される。それは、また、必要になる時のみ伝送することもできる。このため、テキスト処理プログラムは、特にファイルのアドレスまたはネームを示すことを可能にする情報もまた含む。
【００４０】
本方法によると、安全化された第２の処理手段によって、前記復号化機能を実施することにより、受信し暗号化された前記秘密部分を復号化し、安全化されたメモリ内に平文の秘密部分を保存する。
【００４１】
実施例においては、その復号化機能を実施することによって、チップカードはカーソル位置の計算機能を復号化し、問題の機能を実行可能な形で記憶する。
【００４２】
この実施例では、本方法はスマートカードを備えるシステムを実施し、カードは、暗号化されたプログラムの全部または一部をロードすることと、ソフトウェアの発行者の秘密鍵で復号化することと、第１の手段のコールを受信することと、前もってロードされた実行可能なプログラムにコールを伝送することと、第１の処理手段に結果を送り返すことが可能であることが確認される。
【００４３】
実行可能な公開プログラムは、カードのオペレーティング・システムの入出力機能を介して、また場合によっては、ＰＣのオペレーティング・システムの機能を介して、秘密プログラムの部分をカードに伝送するための補足的命令、およびカードにロードされた機能へのコールのための命令を有する。
【００４４】
本発明の方法の可能なアプリケーションの拡張によって、第２の処理手段の復号機は、メモリカード内にハードウェア方式の形で存在することが可能であり、それは付属品のコストを低減するためである。
【００４５】
第１の処理手段に関しては、それは一般的にはパーソナルコンピュータの中央装置である。
【００４６】
有利なことには、公開部分は、ＰＣのような第１の処理手段にロードされてから、第１の手段の中央装置が接続可能なサーバーセンターまたはデータベース上で自由に使えるようになる。プログラムまたはソフトウェアの公開部分もまた、ユーザーの希望で、第１の処理手段が接続可能な特にインターネットタイプのネットワーク上で自由に使えるようになる。
【００４７】
このように、あるソフトウェアの買い手になり得る客にとっては、インターネットのようなネットワーク上で自由に使えるソフトウェアを探し、ＰＣのメモリにそれをロードするだけで十分なのである。平行して、買い手は秘密部分を含むカードを特に郵送で受け取ることができる。
【００４８】
ソフトウェアは、インターネット網上のすべての人々に提供することができても、ユーザーが、特にマイクロプロセッサ式カードによって具体化された付属品を持たなければ、使用することができない。
【００４９】
このように、この手段によって、本発明は、ソフトウェアの発行者を、それらがフロッピー（登録商標）のような物理的媒体上に複製されることから解放することができる。本発明によって、また、ソフトウェアの物理的な配布からも免れる。
【００５０】
インターネット上に置かれた実行可能なソフトウェアに加えて、ソフトウェアの使用マニュアルの内容などのデータを添えることが可能である。
【００５１】
権利の配布の方法：
上記に記載された本発明は、ソフトウェア自身の配布を、使用権の配布から分離することを可能にする。ソフトウェアは、ユーザーによって自由に複製されることができ、かつ／またはアクセス制限無しに、ローカルのまたはリモートサーバー上に置かれることができる。それは、第２の変型において記載されているように、公開部分について、並びに暗号化された場合の秘密部分については、本当のことである。それに反して、支払いの後でしかソフトウェアの使用が許可されないことを確実にするために、使用権の配布は安全化されなければならない。
【００５２】
上述の第１の変型では、権利は、カード内に保存されたプログラムの秘密部分の形で具体化される。実際、この秘密プログラムとともにカードを所有する者のみが、ソフトウェアを使用することができるのである。第２の変型では、権利は、秘密の暗号鍵によって具体化され、該鍵は、第２の処理手段（安全モジュール）が、そこに伝送される秘密コードを復号化することを可能にする。
【００５３】
記載された２つの変型では、権利（秘密プログラムまたは秘密鍵）が、安全モジュールにロードされてから、安全モジュールが配布される。ユーザー・カードを備えたＰＣが接続されている公のネットワーク（インターネットなど）ような手段によって、または、例えばソフトウェアの小売業者の支店の装置にカードを挿入することによって、これらの要素を、既に配布されているカードに配布することもまた可能である。第３の手段は、権利配布のリモートサーバーとユーザーのＰＣとの間で、モデムにより電話網を介して通信を確立することから成る。リモートでの権利配布は、ネットワークによって、または友達のコピーから、または例えばもともとのＣＤ−ＲＯＭ（コンパクト光学ディスク）には複数のソフトウェアが含まれるがユーザーはその中の１つの権利のみしか得ていないという理由から、公開プログラムが一方で自由にアクセス可能である例えば新しいソフトウェアのために、権利を既に幾つか含んでいるカードに、新しい権利をダウンロードすることを可能にする。それはまた、カードの配布から権利の配布を切り離すことを可能にし、それによって、例えば複数のソフトウェア発行者が、同一カードで保証される保護を用いることを可能にする。カードは中立的なものとなり、この場合、マイクロコンピュータの業者の所で、最終ユーザーによって取得されることができる。
【００５４】
鍵または秘密プログラムの、安全化されたこの配布を実現するために、本方法の第１の変型が以下に記載されている。最初のカードにはいかなる権利も含まれていないと想定する。
１）カードの発行機は、配布前に、本発明の２つの変型において上記に記載された要素に加えて、権利（ある場合は、それ自体鍵によって表される）を復号化するための復号化手段および秘密鍵をそこに入れる。さらに、カードの《ＩＤ》と呼ばれるただ一つの番号（それぞれのカードによって異なる）を入れる。
２）カードの発行機は、一または複数のソフトウェア発行者に対して、このまたはこれらの発行者に固有のプログラムのための、権利の暗号化手段およびその暗号化鍵を提供する。暗号化鍵は、ここでは、ユーザーカード内に含まれている復号化鍵と同一である。
３）権利を取得する際、買い手は、権利の暗号化手段に接続されている権利配布サーバーと自分のカードとを通信状態におく。これは、例えばユーザーの自宅、会社、あるいはソフトウェアの販売拠点から、インターネット網、モデムによる接続、またはカードの読取り装置を備えた携帯電話網の通信手段の使用などの、あらゆるデータ通信手段を介して実現することができる。
４）業者での現金または小切手での手動取引を、または同じあるいは別のカードのオペレーティング・システムの特殊な支払い機能を介入させる同じあるいは別のリモートサーバーでの自動取引を使用する、ここには記載されていない何らかの手段によって、支払いの確認をした後、カードはサーバーに対して権利のロード要求を送信する。この要求は、要求されるソフトウェア製品の識別、並びにカードのＩＤを含む。
５）サーバーは、例えば論理演算ＸＯＲによって、権利の暗号化鍵にカードのＩＤを組み合わせるが、その結果は暗号化鍵として使用されるのに適切なビット数である。この方法は、鍵の多様化と呼ばれる。サーバーはこの多様化された鍵を使用し、要求された権利を暗号化する。それは、このように暗号化された権利がそれを要求したカードによってのみ使用可能であり、他のカード内には特にロードされないことを保証する。
６）サーバーは、このように暗号化された権利を、買い手のカードに送信する。
７）買い手のカードは、暗号化鍵とＩＤとを組み合わせる同じ演算を行い、復号化鍵を計算する。カードは、権利を復号化するために復号化鍵を使用し、その不揮発性メモリに権利を保存する。カードは、その時、取得されたプログラムの秘密部分を実行する手段を有する。