(57)【要約】ライセンス契約によって保護されているソフトウェア（１０６）の同時使用者の数を制限するための方法および構成。ソフトウェアがワークステーション（１０２）によって起動されるとき、ソフトウェアから鍵ユニット（１０８）へと開始要求が送信され、その後に、鍵ユニットに接続され且つ当該ソフトウェアに対応している物理ライセンス・ユニット（１１０）について、空いている使用者収容位置があるか否かが調査される。空いている使用者収容位置が存在する場合、ソフトウェアが立ち上がり、空いている使用者収容位置が存在しない場合、ソフトウェアは終了する。この解決法により、同時使用者の数がライセンス契約に包含される数を超えることができないよう規制および保安が向上し、さらに、ライセンス契約のアップグレードが容易になる。
2005518041.tif 000002
【特許請求の範囲】
【請求項１】
ライセンス契約で保護され、ネットワークに接続された複数のワークステーションによって使用することができるソフトウェアについて、同時使用者数を制限するための方法であって、
Ａ）ワークステーションによって該ソフトウェアが起動されたとき、ネットワークに接続された鍵ユニットであって、保護されるソフトウェアに関連づけられ且つ限定数の使用者収容位置を有している物理ライセンス・ユニットが少なくとも１つ接続されている鍵ユニットへと、該ソフトウェアから開始要求を送信する工程、
Ｂ）該鍵ユニットへと接続され且つ該ソフトウェアに関連づけられているライセンス・ユニットについて、空いている使用者収容位置があるか否かを調査する工程、
Ｃ）工程Ｂ）で空いている使用者収容位置が見つかった場合に、前記ワークステーションでの使用のため該ソフトウェアを立ち上げる工程、および
Ｄ）工程Ｂ）で空いている使用者収容位置が見つからなかった場合に、該ソフトウェアを終了させる工程
を特徴とする方法。
【請求項２】
工程Ｂ）が、
Ｅ）前記鍵ユニットに接続された各ライセンス・ユニットの固有の識別コードを読み出す副工程、
Ｆ）前記ソフトウェアに関連づけられた少なくとも１つのライセンス・ユニットを特定する副工程、および
Ｇ）工程Ｆ）で特定されたライセンス・ユニットについて、空いている使用者収容位置があるか否かを調査する副工程
からなることを特徴とする請求項１に記載の方法。
【請求項３】
工程Ｅ）で読み出された識別コードのリストが、前記鍵ユニットから前記ソフトウェアへと送信され、
工程Ｆ）で特定されたライセンス・ユニットの識別コード、および特定された各ライセンス・ユニットについて許可される使用者の最大数を与える上限数からなる新しいリストが生成されて、前記鍵ユニットへと送信され、
前記鍵ユニットが、対応するライセンス・ユニットについて、上限数と現在占有されている使用者収容位置の数とを比較する
ことを特徴とする請求項２に記載の方法。
【請求項４】
前記鍵ユニットが、どのライセンス・ユニットが接続されているのかについての情報、および各ライセンス・ユニットにおいて現在占有されている対応する使用者収容位置の数についての情報を保持していることを特徴とする請求項３に記載の方法。
【請求項５】
前記ソフトウェアが、前記鍵ユニットへと送信される乱数などを生成し、
前記鍵ユニットが、工程Ｂ）で空いている使用者収容位置が見つかったことを告知して、工程Ｃ）で前記ソフトウェアを立ち上げることができるようにするため、当該乱数を前記ソフトウェアへと返送することを特徴とする請求項１〜４のいずれかに記載の方法。
【請求項６】
公開暗号鍵が、前記鍵ユニットから前記ソフトウェアへと送信され、
前記乱数が、前記ソフトウェアによって生成されたセッション鍵で暗号化され、
該セッション鍵が前記公開鍵で暗号化され、
前記乱数およびセッション鍵が、暗号化されたメッセージとして前記ソフトウェアから前記鍵ユニットへと送信され、
前記鍵ユニットが、前記セッション鍵を前記公開鍵に対応する秘密鍵で復号化し、その後に前記乱数を前記セッション鍵で復号化できる
ことを特徴とする請求項５に記載の方法。
【請求項７】
工程Ｂ）で空いている使用者収容位置が見つからなかった場合、この事実を示すべく前記鍵ユニットが誤りの乱数を前記ソフトウェアへと送信して、工程Ｄ）で前記ソフトウェアが終了することを特徴とする請求項１〜６のいずれかに記載の方法。
【請求項８】
対応する使用者収容位置の占有の継続を監視および制限できるよう、前記鍵ユニットが、工程Ｃ）において前記ソフトウェアの開始時刻を登録することを特徴とする請求項１〜７のいずれかに記載の方法。
【請求項９】
どのワークステーションが動作中でありライセンス・ユニットの使用者収容位置を占有しているのかを把握しておくため、前記鍵ユニットがワークステーションに一時的識別コードを割り当て、該一時的識別コードが現在の開始時間とともに鍵ユニットに保存され、
さらに前記鍵ユニットが、該ワークステーションの一時的識別コードを前記ソフトウェアにも送信する
ことを特徴とする請求項８に記載の方法。
【請求項１０】
前記ソフトウェアが、所定の時間間隔Ｔの後に前記鍵ユニットへと、割り当てられた一時的識別コードを含んでいる更新メッセージを送信することによって、占有されている前記ソフトウェアの使用者収容位置を定期的に更新するよう構成されていることを特徴とする請求項９に記載の方法。
【請求項１１】
前記ソフトウェアに関連づけられ且つ空いている使用者収容位置を少なくとも１つ有するライセンス・ユニットが選択され、
少なくとも１つの署名コードＭＡＣが、前記ソフトウェアが知っている少なくとも１つのパラメータにもとづいて生成され、前記鍵ユニットから前記ソフトウェアへと送信され、前記ソフトウェアが、受信した署名コードと比較されるべき対応する署名コードを局地にて生成し、
受信した署名コードと局地にて生成した署名コードが互いに一致した場合に前記ソフトウェアが立ち上がり、受信した署名コードと局地にて生成した署名コードが互いに一致しなかった場合に前記ソフトウェアが終了する
ことを特徴とする請求項１〜１０のいずれかに記載の方法。
【請求項１２】
前記ライセンス・ユニットが、前記鍵ユニットＬによって生成および送信されたリストｌ’１であって、前記鍵ユニットに接続されているすべてのライセンス・ユニットの固有の識別コード、および各ライセンス・ユニットについて、何人の使用者が現在活動中であって当該ライセンス・ユニットの使用者収容位置を占有しているのかについての情報を含んでいるリストｌ’１から、前記ソフトウェアによって選択されることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記署名コードＭＡＣが前記ソフトウェアへと、前記ソフトウェアとの通信に割り当てられたセッション・コードＳＩＤ、前記ソフトウェアとの通信の発生時刻を特定すべく生成された時刻スタンプＴＭ、および現在活動中の使用者の数ＡＡとともに送信されることを特徴とする請求項１１または１２に記載の方法。
【請求項１４】
前記署名コードＭＡＣが、以下のパラメータ、すなわち、選択されたライセンス・ユニットの読み出し可能な識別コードＡＩＤ、該ライセンス・ユニットの秘密の識別コードＤＡＩＤ、鍵ユニットの読み出し可能な識別コードＬＩＤ、鍵ユニットの秘密の識別コードＤＬＩＤ、鍵ユニットの機能の機能コードＰＬＩＤ、該ソフトウェアによって生成および送信された乱数ｓｔ１、前記セッション・コードＳＩＤ、前記時刻スタンプＴＭ、および前記現在の使用者数ＡＡの少なくとも１つにもとづいて生成されることを特徴とする請求項１３に記載の方法。
【請求項１５】
前記ＡＩＤコードと前記ＤＡＩＤコードの間の関係が、ＤＡＩＤコードをＡＩＤコードから導き出すことができるように、前記ソフトウェアで前もって定められ、
前記ＬＩＤコードと前記ＤＬＩＤコードの間の関係が、ＤＬＩＤコードをＬＩＤコードから導き出すことができるように、前記ソフトウェアで前もって定められている
ことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記署名コードＭＡＣが、第１の署名コードＭＡＣ１および第２の署名コードＭＡＣ２からなり、ＭＡＣ１が、ｓｔ１、ＳＩＤ、ＡＩＤ、ＡＡ、ＴＭ、ＬＩＤ、ＤＬＩＤ、およびＰＬＩＤの少なくとも１つにもとづき、ＭＡＣ２が、ｓｔ１、ＳＩＤ、ＴＭ、ＡＡ、ＡＩＤ、およびＤＡＩＤの少なくとも１つにもとづいていることを特徴とする請求項１４または１５に記載の方法。
【請求項１７】
前記鍵ユニットが、前記ソフトウェアを使用しているワークステーション、使用されているライセンス・ユニット、および最も最近に保存された時刻スタンプＴＭを特定して、継続使用を許すべきか否かを判断できるよう、前記ソフトウェアが、所定の時間間隔Ｔの後に鍵ユニットへと、割り当てられたセッション・コードＳＩＤおよび新たに生成された乱数ｓｔ２を含んでいる更新メッセージを送信することによって、占有されている前記ソフトウェアの使用者収容位置を定期的に更新するよう構成されていることを特徴とする請求項１６に記載の方法。
【請求項１８】
現時点の時刻に対応する新しい時刻スタンプＴＭ’が生成され、第３の署名コードＭＡＣ３が生成されて前記鍵ユニットから前記ソフトウェアへと送信され、ＭＡＣ３が、ｓｔ２、ＳＩＤ、ＴＭ、ＴＭ’、ＡＩＤ、およびＤＡＩＤの少なくとも１つにもとづいていることを特徴とする請求項１７に記載の方法。
【請求項１９】
ライセンス契約で保護され、ネットワークに接続された複数のワークステーションによって使用することができるソフトウェアについて、同時使用者数を制限するための構成であって、
−ネットワークに接続された鍵ユニットであって、それぞれが限定数の使用者収容位置を有し、固有の識別コードを備え、少なくとも１つのライセンス契約に関連づけられている随意の数の物理ライセンス・ユニットを接続することができる鍵ユニット、
−ワークステーションによって起動されたとき、該鍵ユニットへと開始要求を送信するよう構成されたソフトウェア、
−該鍵ユニットへと接続され且つ該ソフトウェアに関連づけられているライセンス・ユニットについて、空いている使用者収容位置があるか否かを調査するための手段、
−空いている使用者収容位置が存在する場合に、前記ワークステーションでの使用のため該ソフトウェアを立ち上げるための手段、および
−空いている使用者収容位置が存在しない場合に、該ソフトウェアを終了させるための手段
を特徴とする構成。
【請求項２０】
前記鍵ユニットが、どのライセンス・ユニットが接続されているのかについての情報、および各ライセンス・ユニットにおいて現在占有されている対応する使用者収容位置の数についての情報を保持するよう構成されていることを特徴とする請求項１９に記載の構成。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライセンスされたソフトウェアを不正使用および／または不法コピーから保護するための方法および構成に関する。
【背景技術】
【０００２】
パーソナル・コンピュータや端末が接続されている中央コンピュータなどのコンピュータにインストールして使用するため、たくさんのソフトウェアが市販されている。一部のソフトウェアは中央サーバにインストールすることもでき、該サーバへと接続されたコンピュータが、データ・ネットワークを介して該中央サーバへとアクセスすることができる。そのようなソフトウェア製品は、所定の数の使用者に当該ソフトウェアの使用を許可するライセンスとともに販売されることがしばしばである。
【０００３】
ライセンスは、販売されたソフトウェア製品の使用を制限するため、あらかじめ定めることができる或る特定の数の使用者または使用者のグループについて有効であるよう約束されることができる。例えば、ライセンスは、学校や企業など、限られた数の人々からなる使用者グループについて有効であることができる。実際には、これは、限定数のワークステーションにおいてソフトウェアを同時に使用することが許されるということを意味する。
【０００４】
しかしながら、販売されたソフトウェアが、有効なライセンス契約下にない他の人々によって使用される、すなわち不正に使用されることがしばしばあり問題である。販売およびインストール後の監視を特定の補助手段なしで行なうことは、不可能でないにせよ、困難である。また、販売されたプログラムを容易に不法コピーして、複数のコンピュータに無制限にインストールできることも、さらなる不正使用を引き起こし問題である。
【０００５】
例えば三次元処理プログラムなどの高価な製品は、販売されるソフトウェア製品に関するライセンスを伴ったいわゆるハードウェア・ロックによって、不正使用からの保護を行なうことがしばしばある。この種のハードウェア・ロックは、小さな箱などの鍵ユニットから構成され、これが正規使用者のワークステーションまたはコンピュータのパラレル・ポートに接続されるようになっている。保護されているプログラムを実行するとき、プログラムは最初にパラレル・ポートを調べることを要求し、パラレル・ポートに有効な鍵がついていない場合、プログラムを開始することができない。プログラムを開始するため、さらに鍵ユニットに対して定義された個人コードの入力を要求してもよい。
【０００６】
しかしながら、複数のワークステーションまたはコンピュータの前にいる多数の使用者にライセンスされるより安価なコンピュータ・プログラムは、通常は、この種の鍵による保護を有していない。これは、ワークステーションや使用者の数に対応してそのような鍵ユニットが多数必要になり、高コストにつながるためである。さらに、コンピュータにおいて保護されているプログラムを複数使用できるようにする場合でも、互換性および物理的空間の両者から、１台の同じコンピュータにはきわめて限られた数の鍵ユニットしか接続することができない。これは、通常、権限のない使用者がこの種の鍵ユニットを容易に取り外すことができるというさらなる欠点につながり、例えば学校などにおいて問題である。
【０００７】
鍵ユニットなしでは、ソフトウェアは、ソフトウェア製造者とそれを使用する顧客との間のライセンス契約によってのみ保護される。ネットワークにおいて同時に製品を使用している使用者の数を外部から調べることは困難であるため、企業は、例えば、或る特定の数の使用者について有効なライセンスを購入し、その後、実際には、より多くの使用者に製品を不正使用させている。後に、ソフトウェア製造者の査察員が使用状況を検査すべく企業を訪れた場合には、企業のデータ管理者は、例えば、一時的にだけ使用を制限することが容易に可能であり、その後に、より多数の、すなわち不正な使用者による使用を再開することができる。
【０００８】
このように、販売されたソフトウェア製品の使用を、作成されたライセンス契約が有効である使用者または使用者のグループに制限するという課題がある。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、ソフトウェア製品の有効なライセンス契約を超えての不正使用を防止する解決策を得ることにある。とくに、本発明は、ライセンスによって保護されたソフトウェア製品が、ライセンスに包含された数よりも多くの使用者によって使用されることがないようにすることを目的とする。
【００１０】
本発明のさらなる目的は、ライセンスされたソフトウェア製品の歯止めのないコピーを防止することを目的とする。
【００１１】
この目的およびその他の目的は、ライセンスで保護され、ネットワークに接続された複数のワークステーションによって起動することができるソフトウェアについて、同時使用者数を制限する方法および構成を提供することによって達成される。ワークステーションによってソフトウェアが起動されたとき、該ソフトウェアは、ネットワークに接続された鍵ユニットであって、保護されるソフトウェアに関連づけられ且つ限定数の使用者収容位置を有している物理ライセンス・ユニットが少なくとも１つ接続されている鍵ユニットへと、開始要求を送信する。次いで、鍵ユニットへと接続され且つ該ソフトウェアに関連づけられているライセンス・ユニットについて、空いている使用者収容位置があるか否かが調査される。空いている使用者収容位置がある場合、ソフトウェアは立ち上がり、一方、空いている使用者収容位置がない場合、ソフトウェアは終了する。
【００１２】
空いているライセンス・ユニットを割り出すため、鍵ユニットに接続された各ライセンス・ユニットの固有の識別コードを読み出すことができ、当該ソフトウェアに関連づけられた少なくとも１つのライセンス・ユニットが特定され、特定されたライセンス・ユニットについて、空いている使用者収容位置があるか否かが調査される。次に、読み出された識別コードのリストを、鍵ユニットからソフトウェアへと送信してもよく、特定されたライセンス・ユニットの識別コード、および特定された各ライセンス・ユニットについて許可される使用者の最大数を与える上限数からなる新しいリストを生成し、鍵ユニットへと送信してもよい。次いで、鍵ユニットは、対応するライセンス・ユニットについて、前記上限数を現在占有されている使用者収容位置の数と比較することができる。
【００１３】
鍵ユニットは、どのライセンス・ユニットが接続されているのかについての情報、および各ライセンス・ユニットにおいて現在占有されている対応する使用者収容位置の数についての情報を保持するように構成してもよい。
【００１４】
ソフトウェアが鍵ユニットへと送信される乱数などを生成してもよく、鍵ユニットが、空いている使用者収容位置が見つかったことを告知してソフトウェアを立ち上げることができるようにするため、この乱数をソフトウェアへと返送する。
【００１５】
送信されるデータを盗聴から守るため、暗号化を使用することができ、公開暗号鍵が鍵ユニットからソフトウェアへと送信され、前記乱数が、ソフトウェアによって生成されたセッション鍵で暗号化され、このセッション鍵が前記公開鍵で暗号化され、前記乱数およびセッション鍵が、暗号化されたメッセージとしてソフトウェアから鍵ユニットへと送信される。これにより、鍵ユニットは、前記セッション鍵を前記公開鍵に対応する秘密鍵で復号化し、その後に前記乱数を前記セッション鍵で復号化できる。
【００１６】
空いている使用者収容位置がいずれのライセンス・ユニットにも見つからなかった場合、この事実を示すべく鍵ユニットは誤りの乱数をソフトウェアへと送信することができ、これに従ってソフトウェアを終了させることができる。
【００１７】
ソフトウェアの使用が開始された場合、対応する使用者収容位置の占有の継続を監視および制限できるよう、鍵ユニットがソフトウェアの開始時刻を登録してもよい。さらに、どのワークステーションが動作中でありライセンス・ユニットの使用者収容位置を占有しているのかを把握しておくため、鍵ユニットがワークステーションに一時的識別コードを割り当て、現在の開始時間とともに鍵ユニットに保存してもよい。その後、鍵ユニットが、さらにワークステーションの一時的識別コードを、ソフトウェアに送信してもよい。
【００１８】
ソフトウェアは、所定の時間間隔Ｔの後に鍵ユニットへと、割り当てられた一時的識別コードを含んでいる更新メッセージを送信することによって、占有されている当該ソフトウェアの使用者収容位置を定期的に更新するよう構成されていてもよい。
【００１９】
他の実施の形態によれば、まず、ソフトウェアに関連づけられ且つ空いている使用者収容位置を少なくとも１つ有しているライセンス・ユニットを選択し、その後、少なくとも１つの署名コードＭＡＣが、ソフトウェアが知っている少なくとも１つのパラメータにもとづいて生成され、鍵ユニットから該ソフトウェアへと送信されることによって、安全性を高めることができる。次いで、ソフトウェアが、対応する署名コードを局地にて生成し、これが受信した署名コードと比較される。受信した署名コードと局地にて生成した署名コードが互いに一致した場合、ソフトウェアは立ち上がることができ、受信した署名コードと局地にて生成した署名コードが互いに一致しなかった場合、ソフトウェアは終了する。
【００２０】
ライセンス・ユニットは、鍵ユニットＬによって生成および送信されたリストｌ’１であって、鍵ユニットに接続されているすべてのライセンス・ユニットの固有の識別コード、および各ライセンス・ユニットについて、何人の使用者が現在活動中であって当該ライセンス・ユニットの使用者収容位置を占有しているのかについての情報を含んでいるリストｌ’１から、ソフトウェアによって選択することができる。
【００２１】
前記署名コードＭＡＣをソフトウェアへと、ソフトウェアとの通信に割り当てられたセッション・コードＳＩＤ、ソフトウェアとの通信の発生時刻を特定すべく生成された時刻スタンプＴＭ、および現在活動中の使用者の数ＡＡとともに送信してもよい。
【００２２】
前記署名コードＭＡＣを、以下のパラメータ、すなわち、選択されたライセンス・ユニットの読み出し可能な識別コードＡＩＤ、このライセンス・ユニットの秘密の識別コードＤＡＩＤ、鍵ユニットの読み出し可能な識別コードＬＩＤ、鍵ユニットの秘密の識別コードＤＬＩＤ、鍵ユニットの機能の機能コードＰＬＩＤ、ソフトウェアによって生成および送信された乱数ｓｔ１、セッション・コードＳＩＤ、時刻スタンプＴＭ、および現在の使用者数ＡＡの少なくとも１つにもとづいて生成してもよい。
【００２３】
ＡＩＤコードとＤＡＩＤコードの間の関係は、ＤＡＩＤコードをＡＩＤコードから導き出すことができるように、ソフトウェアで前もって定めることができる。さらに、ＬＩＤコードとＤＬＩＤコードの間の関係は、ＤＬＩＤコードをＬＩＤコードから導き出すことができるように、ソフトウェアで前もって定めることができる。
【００２４】
前記署名コードＭＡＣは、第１の署名コードＭＡＣ１および第２の署名コードＭＡＣ２からなることができ、ＭＡＣ１が、ｓｔ１、ＳＩＤ、ＡＩＤ、ＡＡ、ＴＭ、ＬＩＤ、ＤＬＩＤ、およびＰＬＩＤの少なくとも１つにもとづき、ＭＡＣ２が、ｓｔ１、ＳＩＤ、ＴＭ、ＡＡ、ＡＩＤ、およびＤＡＩＤの少なくとも１つにもとづいている。
【００２５】
ソフトウェアを、所定の時間間隔Ｔの後に鍵ユニットへと、割り当てられたセッション・コードＳＩＤおよび新たに生成した乱数ｓｔ２を含んでいる更新メッセージを送信することによって、占有されている当該ソフトウェアの使用者収容位置を定期的に更新するよう構成してもよい。これにより、鍵ユニットは、ソフトウェアを使用しているワークステーション、使用されているライセンス・ユニット、および最も最近に保存された時刻スタンプＴＭを特定でき、継続使用を許すべきか否かを判断できる。
【００２６】
新しい時刻スタンプＴＭ’を、現時点の時刻に対応して生成してもよく、第３の署名コードＭＡＣ３を生成して鍵ユニットからソフトウェアへと送信してもよく、ＭＡＣ３は、ｓｔ２、ＳＩＤ、ＴＭ、ＴＭ’、ＡＩＤ、およびＤＡＩＤの少なくとも１つにもとづいている。
【発明を実施するための最良の形態】
【００２７】
本発明はネットワークを基盤とし、すなわちこれは、ライセンス契約によって保護されたソフトウェア製品が、ローカル・ネットワーク、イントラネット、またはインターネットなどのネットワークを介して特定の中央鍵ユニットへと接続されたワークステーションまたはコンピュータで使用されることを意味する。これが、本発明による解決策をとくに魅力的なものとしている。何故ならば、ライセンスで保護されたソフトウェアは、パーソナル・コンピュータをネットワークへと接続して備えていることが通常である企業および学校に販売されるためである。
【００２８】
以下において、用語「ワークステーション」は、そこから使用者がネットワークを介して通信を行い、保護されているソフトウェアを起動することができるすべての形式の端末装置、端末設備、あるいはパーソナル・コンピュータを包含して用いられる。保護されるソフトウェアは、ワークステーションからアクセスすることができる中央のコンピュータまたはサーバにインストールされるあらゆる種類のコンピュータ・プログラムであってよく、あるいは、各ワークステーションに局地的にインストールされるあらゆる種類のコンピュータ・プログラムであってよい。
【００２９】
図１にデータ・ネットワーク１００が示されており、複数のワークステーション１０２が接続されている。図には、さらに、データ・ネットワーク１００へと接続されたサーバ１０４が示されており、このサーバ１０４に、コンピュータ・プログラムなどの保護されているソフトウェア１０６がインストールされている。ソフトウェア１０６は、多数のワークステーション１０２からアクセスおよび起動が可能であり、あらかじめ決められた限られた数の使用者について有効なライセンス契約で保護されている。前述のとおり、代案として、保護されているソフトウェア１０６を各ワークステーション１０２にそれぞれインストールすることもできるが、これについては図示されていない。
【００３０】
さらに、中央鍵ユニット１０８がデータ・ネットワーク１００に接続されており、中央鍵ユニット１０８を、ライセンス契約に従って、保護されているソフトウェア１０６の制御下での使用および同時使用者の数の制限のために利用することができる。鍵ユニット１０８は、現実には、ネットワーク接続されたプログラム可能なコンピュータで構成してもよい。使用者の数を制御するため、鍵ユニット１０８には、任意の数の着脱可能な物理ライセンス・ユニット１１０が設けられ、これら物理ライセンス・ユニット１１０のそれぞれが、所定の数のワークステーション１０２から保護されているソフトウェアを使用できるようにしているが、これについては以下で詳述する。このように、鍵ユニットへと接続されたライセンス・ユニット１１０の数が、ライセンス契約に包含されたワークステーションの数に対応する。
【００３１】
各ライセンス・ユニット１１０は、例えばシリアル番号など、カードやチップなどに焼き付けることができる読み出し可能な固有の識別コードすなわち契約識別ＡＩＤを収容した、小型かつきわめて簡素な物理ユニットである。このように、固有の識別コードが、ソフトウェア１０６およびそのライセンス契約に関連付けられ、ライセンス契約にもとづいて前もって決められた１つ以上のワークステーション１０２におけるソフトウェアの使用を許可する。
【００３２】
鍵ユニット１０８の基本的なハードウェアは、例えば「ＴＩＮＩ」（タイニー・インターネット・インターフェイス）と呼ばれてすでに市場で知られている、ダラスセミコンダクタ社によって製造されている製品から構成することができる。さらに、ライセンス・ユニット１１０は、例えば、同じ会社によって製造されており「アイボタン」と呼ばれている、それぞれがレーザで焼き付けられた固有のシリアル番号を含んでいる小さな電子ボタンで構成することができる。今日、これらのボタンは、ドアなどのための電子の鍵としてしばしば使用されている。しかしながら、本発明は、鍵ユニット１０８および／またはライセンス・ユニット１１０の特定の設計には限定されないので、これ以上の説明は省略する。
【００３３】
簡単に述べると、本発明の鍵構成は、以下のように動作する。鍵ユニット１０８が、現在ソフトウェア１０６を使用しているワークステーション１０２のリストを保持し、使用中の間、対応するライセンス・ユニット１１０を「占有されている」として登録するよう、例えばソフトウェア１０６のインストールに関連して前もってプログラミングされている。各ライセンス・ユニット１１０は、どのようにライセンス契約が構築されているかに応じて、１つ以上の使用者収容位置を含むことができる。さらに、各ライセンス・ユニット１１０は、或る特定のワークステーション１０２について有効であってもよく、あるいは、特定数の不特定のワークステーション１０２について有効であってもよい。また、この種のライセンス・ユニット１１０を、契約によって保護されている複数のプログラムのために使用してもよい。保護されているソフトウェア１０６は、実際に使用できるようになる前に、まず以下に示すとおりに、鍵ユニット１０８と一緒に照合の手順を実行するよう構成されている。
【００３４】
使用者が、保護されているソフトウェア１０６を最初にワークステーション１０２から起動させたとき、ソフトウェア１０６が、鍵ユニット１０８に開始要求を送信する。次いで、ソフトウェア１０６に対応するライセンス・ユニット１１０が鍵ユニット１０８に接続され、且つ空いている使用者収容位置を有しているか、あるいは、現時点ですべての使用者収容位置が他のワークステーションによって占有されているのかが調査される。ソフトウェア１０６のためのライセンス・ユニット１１０のいずれかに、空いている使用者収容位置がある場合、ソフトウェア１０６をワークステーション１０２での使用のために立ち上げることができる。一方、当該ソフトウェアに関連づけられたライセンス・ユニット１１０が、占有されているとして登録されている場合、あるいは当該ソフトウェアに関連づけられたライセンス・ユニットを発見できなかった場合、ソフトウェア１０６は自身を終了させる。
【００３５】
このように、この構成によって保護されたソフトウェア１０６を起動して使用するためには、前記の制御手順におけるやり取りを行なうように構成された特定のコンピュータ・プログラムを含んでいる鍵ユニット１０８が、データ・ネットワーク１００において利用可能でなければならない。本ソフトウェア１０６のため、ライセンスが、接続されたライセンス・ユニット１１０およびその固有の識別コードに関連づけられている必要がある。例えば、企業は、ソフトウェア製品へのアクセスを得たいと望むライセンスの数について、ライセンス・ユニット１１０を購入して接続することができる。その後、この種のライセンス・ユニット１１０が、１つ以上のライセンス契約に対応してもよく、各契約が１つ以上の使用者またはワークステーションを包含して、接続されるライセンス・ユニットの数を減らすことができる。必要であれば、鍵ユニット１０８にさらなるライセンス・ユニット１１０を接続することによって、保護されたソフトウェアのために需要に応じてさらなるライセンスを追加することも可能である。しかしながら、これにより、或る場合には、保護されたソフトウェアを追加したライセンス・ユニット１１０にあわせて更新する必要が生じるかもしれない。同様のやり方で、ライセンス・ユニット１１０の数を減らすことも可能である。
【００３６】
さらにソフトウェア製造者は、データ・ネットワーク１００を介し鍵ユニット１０８によってライセンス・ユニット１１０を照合することにより、製品に関連づけられた少なくとも１つのライセンス・ユニット１１０がそこに接続されていることを確認して、自身の製品を保護することが可能である。鍵ユニット１０８は、当該ソフトウェア１０６を現在使用しているワークステーション、すなわち現存するライセンス・ユニット１１０の使用者収容位置を占有しているワークステーションのリストを保持することによって、許可されている数の使用者のみに当該製品を同時に使用させるようプログラムされている。このようにして、当該企業によって支払いがされている数の使用者のみが、同時に製品を使用することができる。空いている使用者収容位置を有するライセンス・ユニット１１０を発見できない場合、ソフトウェア１０６は自身を終了させる。
【００３７】
前記制御手順の際にワークステーション１０２と鍵ユニット１０８との間で送られるデータを、暗号化によって保護すると好ましいが、これについては以下で詳述する。この目的のため、暗号化方法が、セッション鍵および公開鍵／秘密鍵とともに使用される。
【００３８】
セッション鍵は、ランダムに選択された或る特定の長さの数字であり、例えばデータの転送など、１セッションにのみ使用され、送信者と受信者の両方によって知られている必要がある。このような鍵の利点は、データの暗号化を比較的高速に行なえる点にある。メッセージの復号化を可能にして完全なメッセージを読むことができるようにするため受信者へと送信される鍵は、経路の途中で何者かによって傍受されることがないように、それ自身暗号化されていなければならない。この目的のため、公開鍵を、秘密に保たれる秘密鍵と一緒に使用することができる。セッション鍵を暗号化するため、送信者によって公開鍵が使用される一方、復号化のため受信者によって秘密鍵が使用される。このようにして、セッション鍵が実際のメッセージを暗号化する一方で、公開鍵がセッション鍵を暗号化し、これによりメッセージを、秘密鍵を有している受信者以外の何者にも読むことができないようにする。
【００３９】
図２を参照し、第１の実施の形態に従って、本発明をいかに使用できるのかについてのより詳細な例を以下に説明する。図２は、保護されているコンピュータ・プログラムＰとネットワークに接続された中央鍵ユニットＬとの間の信号のやり取りを示した図である。実施において、コンピュータ・プログラムＰは、ライセンス契約によって保護された任意のソフトウェアでよい。簡単のため、プログラムＰが、鍵ユニットＬと同様にネットワークに接続されたワークステーションへと局地的にインストールされ、信号が当該ワークステーションと鍵ユニットＬとの間で共通のネットワークを介して物理的に送信されるものとする。しかしながら、代案として、図１に示すように、プログラムＰを、ワークステーションからアクセスできる中央のサーバにインストールしてもよい。
【００４０】
プログラムＰは、どのライセンス・ユニットが関連づけられているのかについての情報、および対応する使用者収容位置に関する情報を収容している。一方、鍵ユニットも、どのライセンス・ユニットが接続されているのかについての情報、および各ライセンス・ユニットにおいて現在占有されている対応する使用者収容位置の数に関する情報を保持している。
【００４１】
ワークステーションによってプログラムＰが起動されたとき、第１の工程２００において、プログラムのインストールの際に指定された鍵ユニットＬへと開始要求ＳＦが送られる。そのような鍵ユニットが、データ・ネットワークへと複数接続されていてもよく、それらはネットワーク・アドレスによって識別される。開始要求に応答して、鍵ユニットＬは、当該鍵ユニットへと接続された各ライセンス・ユニットのシリアル番号など固有の識別コードを読み出し、それら識別コードのリストｌ１を生成する。したがって、各鍵ユニットは、複数の保護されたコンピュータ・プログラムにそれぞれ関連づけられた複数のライセンス・ユニットを含むこともできる。さらに、１つの同じライセンス・ユニットが、複数のコンピュータ・プログラムのための使用者収容位置を含むこともできる。
【００４２】
さらに、鍵ユニットは、公開鍵暗号化のための新しい鍵の組を生成するようプログラムされている。安全な鍵の組を生成するために大きいランダムな素数を生成しなければならないため、この鍵の生成には時間を要し、バックグラウンドで連続的に進めることが好ましい。鍵ユニット内のプロセッサに依存するが、必要な計算の実行には数時間を要するかもしれない。ひとたび新しい鍵が生成されると、盗聴者が公開鍵から秘密鍵を解読するまでの少なくとも或る時間の間、この鍵を送信される情報を秘密に保つために使用することができる。
【００４３】
次の工程２０２において、接続されているすべてのライセンス・ユニットのリストｌ１が、最も最近に生成された公開鍵ｐｎとともに、鍵ユニットＬからコンピュータ・プログラムＰへと送られる。鍵ユニットＬだけが対応する秘密鍵を所有しているので、公開鍵ｐｎで暗号化されたデータは、鍵ユニットＬによってのみ復号化できる。
【００４４】
次に、プログラムＰが、プログラムＰに関連づけられているライセンス・ユニットをリストｌ１から特定する。そこから、プログラムＰは、プログラムＰに関連づけられているライセンス・ユニットの識別子、および各ライセンス・ユニットについて許可される使用者の最大数を示す上限数を含んだ新しいリストｌ２を生成する。プログラムＰに関連づけられたライセンス・ユニットをリストｌ１内に発見できない場合、保護されているプログラムＰは、ワークステーションにおいて自動的に終了するよう構成されている。
【００４５】
新しいリストｌ２が生成されたとき、さらにプログラムＰは、後にプログラムが起動を許されていることを確認するために用いる目的で、セッション鍵ｓｎ１および特定の乱数ｓｔ１などを生成するが、これについては後述する。
【００４６】
リストｌ２および乱数ｓｔ１は、例えばＴＥＡ（タイニー・エンクリプション・アルゴリズムと呼ばれるアルゴリズムに従って、セッション鍵ｓｎ１で暗号化される。その後、続いてセッション鍵ｓｎ１が、例えばＲＳＡ（リベスト、シャミア、エイドルマン）と呼ばれるアルゴリズムに従って、公開鍵ｐｎで暗号化される。次いで、工程２０４において、リストｌ２、乱数ｓｔ１、およびセッション鍵ｓｎ１が、暗号化メッセージとしてプログラムＰから鍵ユニットへと返信され、鍵ユニットＬは、自身の秘密鍵でセッション鍵ｓｎ１を復号化し、次いで残りのメッセージをセッション鍵ｓｎ１で復号化することができる。
【００４７】
プログラムに関連づけられたライセンス・ユニットおよびそれらの上限数に関する復号化されたリストｌ２にもとづき、鍵ユニットＬは、接続されているライセンス・ユニットの中に、プログラムＰによって当該ライセンス・ユニットに許される最大値として与えられた上限数よりも少ない数の使用者によって満たされているライセンス・ユニットがあるかどうかを調査する。次いで、鍵ユニットは、そのような上限数のそれぞれを、対応するライセンス・ユニットについて現在占有されている使用者収容位置の数と比較する。空いている使用者収容位置を有するライセンス・ユニットが見つからない場合、鍵ユニットＬは、二者択一の工程２０６ａにて、誤った乱数ｓｔ（Ｅｒｒｏｒ）をプログラムＰに返信し、プログラムＰが自動的に終了する。一方、空いている使用者収容位置を少なくとも１つ有するライセンス・ユニットが接続されている場合、当該ワークステーションが、そのライセンス・ユニットの活動中リストに追加され、鍵ユニットが今や使用者収容位置が１つ占有されたことを認知する。
【００４８】
さらに鍵ユニットＬは、対応する使用者収容位置の占有時間を検査して制限することができるよう、開始の時間を登録する。その後、当該使用者収容位置が、或る時間の後に自動的に解放され、あるいはワークステーションが自身による使用を頻繁な間隔で更新した場合そのままにされるが、これについては以下に詳述する。次に、二者択一の工程２０６ｂにおいて、正しく復号化された乱数ｓｔ１がプログラムＰに送られ、これによりプログラムＰはワークステーションでの使用のため起動することができる。
【００４９】
どのワークステーションが活動中であり、ライセンス・ユニットの使用者収容位置を占有しているか追跡し続けるため、鍵ユニットが、一時的識別コードＴＩＤをワークステーションに割り当てると好ましく、これが鍵ユニットＬに、当該ワークステーションのセッション鍵ｓｎ１および現在の開始時間と共に保存される。ＴＩＤコードは、工程２０６ｂでプログラムＰにも送られるが、鍵ユニットＬおよびプログラムＰのみがＴＩＤコードを読むことができるよう、ＴＩＤコードはセッション鍵ｓｎ１で暗号化される。
【００５０】
次いで、プログラムＰは、プログラムＰが依然使用されているかどうかに関して鍵ユニットが更新されるよう、占有されているプログラムＰの使用者収容位置を更新することができる。すなわち、例えば１分間など所定の時間間隔Ｔの後、工程２０８でプログラムＰが、割り当てられたＴＩＤコードを例えば復号化形式で含み、さらに新しい乱数ｓｔ２および新たに生成したセッション鍵ｓｎ２を共に前のセッション鍵ｓｎ１で暗号化して含んでいる更新メッセージを鍵ユニットＬへと送信する。この鍵の変更は、より長い時間にわたって鍵を秘密に保つことができるようにする。たとえ権限のない何者かが公開鍵を解読して第１のセッション鍵を取り出したとしても、最新の有効なセッション鍵を明らかにするためには、さらにこのような鍵の変更のそれぞれを傍受する必要があり、それはほとんどありそうにないことである。
【００５１】
鍵ユニットＬは、受信したＴＩＤコードにもとづいて、プログラムＰを使用しているワークステーションおよび対応する以前のセッション鍵ｓｎ１を、両者とも工程２０４の後で保存されているため特定することができ、新しいセッション鍵ｓｎ２および乱数ｓｔ２を以前のセッション鍵ｓｎ１で復号化することができる。あるいは、乱数ｓｔ２を新しいセッション鍵ｓｎ２で復号化しておいてもよい。新しい開始時間が登録され、新しいセッション鍵ｓｎ２が保存される。二者択一の工程２０６ａ、ｂと同様に、工程２０８で与えられたＴＩＤコードが鍵ユニットＬで発見されるか否かによって、正しい乱数または誤った乱数が、二者択一の工程２１０ａまたは２１０ｂにてプログラムＰへと返信される。工程２１０ｂ、すなわち正しい乱数ｓｔ２を受け取った場合、プログラムＰはそのまま動作し、工程２１０ａ、すなわち誤った乱数ｓｔ（ｅｒｒｏｒ）を受信した場合、プログラムＰは自動的に終了する。プログラムＰを、所定の制限時間内に乱数または応答を受け取らなかった場合に、自動的に終了するよう構成してもよい。
【００５２】
このようにして、工程２０８および２１０ｂを所定の時間間隔で繰り返し、プログラムＰの継続使用を可能にすることができる。さらに安全性を高めるため、プログラムＰが更新を送信するたびごとに、鍵ユニットＬによって新しいＴＩＤコードを生成し、工程２１０ｂでプログラムＰへと送信してもよいが、図示はされていない。
【００５３】
図２に示した手順を、プログラムＰに関連づけられたライセンス・ユニットが空いている使用者収容位置を有しているかどうかを鍵ユニットＬ自身が調査するように、変更することも可能である。このためには、プログラムＰが特定される必要があり、鍵ユニットＬが、各ライセンス・ユニットがどのプログラムについて有効であるのか、および対応する用者収容位置に許されている上限数はいくらであるかの両者を登録している必要がある。これにより、工程２０２および２０４において、リストｌ１およびｌ２の送信をそれぞれ省略することができる。より良好な安全性を得るため、プログラムＰの特定は暗号化形式で送信されるべきである。
【００５４】
他の実施の形態により、前述のようにプログラムＰと鍵ユニットＬの間で送信されるメッセージの暗号化を使用するかわりに、あるいは暗号化の使用に加えて、署名手続きを使用することができる。そこで、図３に、鍵ユニット１０８および鍵ユニット１０８に接続されたライセンス・ユニット１１０について、他の実施の形態を示す。とくに断らない限り、図１の参照番号と同じ参照番号が、図３の対応する要素のために使用されている。この実施の形態においては、ライセンス・ユニット１１０に、例えばマイクロプロセッサおよび通信ユニットからなるチップの形式で、データを処理するための手段および鍵ユニット１０８へとデータを送信するための手段が設けられている。さらに、各ライセンス・ユニット１１０には、対応するライセンス契約のための識別コードＡＩＤおよび秘密の識別コードＤＡＩＤの両者が備えられ、識別コードＡＩＤは外部から読み出すことができ、識別コードＤＡＩＤは外部から読み出すことができず、元々のコードが失われた場合に新しいコードで上書きのみされることができる。ＡＩＤコードとＤＡＩＤコードの間の関係は、プログラムＰが例えばアルゴリズムや表によってＡＩＤコードからＤＡＩＤコードを導き出すことができるよう、プログラムＰで前もって定められている。
【００５５】
同様に、鍵ユニット１０８に、読み出し可能な識別コードＬＩＤおよび秘密の識別コードＤＬＩＤを設けることができ、おそらくは、鍵ユニットの機能を固有に識別する追加の機能コードＰＬＩＤを設けることができる。機能コードＰＬＩＤは、好ましくは鍵ユニットのプログラムされたプログラムまたはソフトウェア・コードから引き出すことができる。例えば、コードＬＩＤ、ＤＬＩＤ、およびＰＬＩＤは、鍵ユニット１０８の内部メモリに記憶してもよく、あるいは、図３に破線で示されているように、鍵ユニット１０８へと接続された別置きの識別ユニット３００に記憶してもよく、識別ユニット３００は、ライセンス・ユニット１１０と同種のものでよい。これらのコードＡＩＤ、ＤＡＩＤ、ＬＩＤ、ＤＬＩＤ、およびＰＬＩＤは、この実施の形態において、ライセンス・ユニット１１０および鍵ユニット１０８を偽造から守り、送信されるメッセージを保護するため、署名手続きに以下のとおり使用することができる。
【００５６】
各ライセンス・ユニット１１０は、提供されたデータによって、秘密のコードＤＡＩＤを含むＭＡＣ（メッセージ署名コード）と呼ばれる署名コードを生成することができる。このコードは不可逆であり、すなわち、このようなコードによって秘密の識別コードを見つけ出すことはできない。
【００５７】
ＤＡＩＤコードに加えて、ＭＡＣコードが、鍵ユニットからＭＡＣコード生成の要求に関連して送られる同様に不可逆な情報を含んでいてもよい。
【００５８】
プログラムＰは、ＡＩＤコードによってＤＡＩＤコードを生成することができるので、プログラムＰは、同様に局所ＭＡＣ＊コードを生成することができる。局所ＭＡＣ＊とライセンス・ユニット１１０で生成され鍵ユニット１０８を介してプログラムＰへと送られたＭＡＣを比較することによって、ライセンス・ユニットが本物であるか否かを判断することができる。鍵ユニットがプログラムＰへと送られるＭＡＣコードにさらにデータを埋め込む場合、これによっても、データが本物であるか否かを判断することができる。
【００５９】
同様の信号手順を、ＬＩＤコードおよびＤＬＩＤコード、ならびに随意によりＰＬＩＤコードも使用することによって、鍵ユニット１０８の信憑性を確保するために使用することができる。ＬＩＤコードとＤＬＩＤコード、およびおそらくはＰＬＩＤコードの間の関係は、これらコードを対応して導き出すことができるように、同様にプログラムＰで前もって定められている。このように、鍵ユニットの識別も、ＭＡＣコードの形式で鍵ユニットに保存された情報とともに署名でき、プログラムＰへと送られてライセンス・ユニット１１０と同様のやり方で照合される。
【００６０】
図４を参照して、別の好ましい実施の形態にしたがって本発明をどのように使用できるのかを以下に説明する。図２と同様、図４も、保護されているコンピュータ・プログラムＰと鍵ユニットＬとの間の信号のやり取りを示した図である。ここでも、もちろん、プログラムＰがワークステーションへと局所的にインストールされていてもよく、あるいは中央のサーバにインストールされていてもよい。プログラムＰは、どのライセンス・ユニットが当該プログラムに関連づけられているのかについての情報、および対応する使用者収容位置の数に関する情報を収容している。一方、鍵ユニットＬも、どのライセンス・ユニットが接続されているのかについての情報、および各ライセンス・ユニットにおいて現在占有されている対応する使用者収容位置の数に関する情報を保持している。
【００６１】
ワークステーションにおいてプログラムＰが起動されたとき、第１の工程４００で、鍵ユニットＬへと開始要求ＳＦが送られる。開始要求に応答して、鍵ユニットＬは、当該鍵ユニットへと接続されたすべてのライセンス・ユニットについて、この場合はＡＩＤコードであるが、固有の識別コードのリストｌ’１を生成する。この実施の形態においては、リストｌ’１はさらに、各ライセンス・ユニットについて、何人の使用者が現在活動中であって、当該ライセンス・ユニットの使用者収容位置を占有しているのかについての情報を含んでいる。
【００６２】
次の工程４０２において、リストｌ’１がＬＩＤコードとともに鍵ユニットＬからプログラムＰに送られ、次いでプログラムＰが、当該プログラムに関連付けられたライセンス・ユニットを、リストｌ’１から特定する。次に、プログラムＰは、当該プログラムに関連づけられたライセンス・ユニットであって、少なくとも１つの使用者収容位置がまだ空いているライセンス・ユニット、すなわち、現在の活動使用者数ＡＡが許可されている最大数ＡＡｍａｘよりも少ないライセンス・ユニットを選択する。空いている収容位置を有しているライセンス・ユニットがリストｌ’１中に２つ以上見つかった場合は、それらのうちの１つを任意に選択することができる。一方、プログラムに関連づけられたライセンス・ユニットであって空きの収容位置を有するライセンス・ユニットが見つけられなかった場合、保護されているプログラムＰは、ワークステーションにおいて自動的に終了するよう構成されている。
【００６３】
プログラムＰは、付随するＡＩＤコードとともにライセンス・ユニットを選択したときに、固有の署名コードを生成する際に使用する目的で、さらに第１の乱数ｓｔ１を生成するが、これについては以下で説明する。
【００６４】
次いで、工程４０４で、選択されたライセンス・ユニットのＡＩＤコードおよび乱数ｓｔ１がプログラムＰから鍵ユニットＬへと送られる。次に、鍵ユニットＬが、プログラムＰとの通信を特定するセッション・コードＳＩＤ、および、当該通信が発生したクロック時刻を特定する時刻スタンプＴＭを生成する。さらに、鍵ユニットＬは、接続されているライセンス・ユニットについて、ＳＩＤコードの活動リストを保持する。このようにして、現在のＳＩＤコードが、付随するＡＩＤコードを備える選択されたライセンス・ユニットについての活動リストに追加され、ＳＩＤコードおよび時刻スタンプＴＭが保存され、現在のライセンス・ユニットの使用者の数ＡＡが１だけ増加させられる。
【００６５】
次に、鍵ユニットＬは、１組の署名コードＭＡＣ１およびＭＡＣ２が生成されたとき、この通信および鍵ユニットの信憑性を署名手続きによって確認する。すなわち、第１の署名コードＭＡＣ１は、鍵ユニットによって生成され、以下のパラメータの少なくとも１つにもとづいている。すなわち、受信した乱数ｓｔ１、セッション・コードＳＩＤ、ライセンス・ユニットのＡＩＤコード、現在の使用者数ＡＡ、生成された時刻スタンプＴＭ、ならびに鍵ユニットの識別コードＬＩＤ、ＤＬＩＤ、およびＰＬＩＤである。実際の実施においては、ＭＡＣ１コードを、別置きの識別ユニット３００が鍵ユニットＬへと接続されて使用されているのであれば、この別置きの識別ユニット３００で生成してもよく、あるいは鍵ユニットの内部で生成してもよい。
【００６６】
これに対し、第２の署名コードＭＡＣ２も、ライセンス・ユニットで、以下のパラメータの少なくとも１つにもとづいて生成される。すなわち、乱数ｓｔ１、セッション・コードＳＩＤ、時刻スタンプＴＭ、現在の使用者数ＡＡ、ならびに鍵ユニット自身の識別コードＡＩＤ、およびＤＡＩＤである。ＭＡＣ１およびＭＡＣ２は、あらかじめ定められたアルゴリズムによって生成することができ、前記パラメータの１つ以上が含まれる。安全性を最大にするために前記パラメータのすべてが使用されると好ましいが、或る用途においては、それよりも少ないパラメータで充分である。したがって、好ましい場合には以下が使用される。
ＭＡＣ１＝（ｓｔ１、ＳＩＤ、ＡＩＤ、ＡＡ、ＴＭ、ＬＩＤ、ＤＬＩＤ、ＰＬＩＤ）
ＭＡＣ２＝（ｓｔ１、ＳＩＤ、ＴＭ、ＡＡ、ＡＩＤ、ＤＡＩＤ）
【００６７】
再び図４を参照すると、２つの署名コードＭＡＣ１およびＭＡＣ２、ならびにＳＩＤコード、時刻スタンプＴＭ、および使用者数ＡＡが、次の工程４０６において、プログラムＰへと送られる。この情報を受信したとき、プログラムＰは、ライセンス・ユニットおよび識別ユニットにおけるのと同じやり方で、対応する署名コードＭＡＣ１＊およびＭＡＣ２＊を局地的に生成する。これは、ＳＩＤ、ＴＭおよびＡＡが平文で受信され、ＡＩＤ、ＬＩＤ、およびＰＬＩＤがすでにプログラムに記憶され、ＤＡＩＤおよびＤＬＩＤをそれぞれＡＩＤおよびＬＩＤから引き出すことができるため、可能である。さらに、プログラムによって生成された乱数ｓｔ１が含まれており、署名コードをこの通信に固有のものとしている。
【００６８】
次いで、プログラムＰによって局地的に生成された署名コードＭＡＣ１＊およびＭＡＣ２＊が、受信した署名コードＭＡＣ１およびＭＡＣ２とそれぞれ比較され、それらが互いに一致しなかった場合、プログラムは自動的に終了する。一方、局地的に生成された署名コードと受信した署名コードとが一致した場合、プログラムＰは起動され、使用することができる。さらに、今や署名され、したがって信憑性が肯定された現在の使用者の数ＡＡを、コードＡＩＤによって識別される当該契約についての最大使用者数ＡＡｍａｘと比較することができる。使用者数ＡＡは新たに加わった使用者も含んでおり、さらに、ＡＡがＡＡｍａｘよりも大きい場合、プログラムを終了させる。そうでない場合、ワークステーションにおいて、使用のためプログラムＰを開始させることができる。
【００６９】
さらに、鍵ユニットＬは、前記実施の形態と同様、対応する使用者収容位置の占有の継続を検査して制限できるよう、例えば時刻スタンプＴＭを使用することによってプログラムの使用開始の時刻を登録する。
【００７０】
この実施の形態においても、プログラムは、プログラムの継続使用に関して鍵ユニットが更新されるよう、ライセンス・ユニットにおいて占有されている当該プログラムの使用者収容位置を頻繁に更新することができる。すなわち、所定の時間間隔Ｔの後、工程４０８でプログラムＰが、割り当てられたセッション・コードＳＩＤおよび新たに生成された乱数ｓｔ２を含んでいる更新メッセージを、鍵ユニットＬに送信する。継続使用が許されるか否かを判断するため、鍵ユニットＬは、受信したＳＩＤコードによって、プログラムＰを使用しているワークステーション、ならびに現在のＡＩＤコード、および最も最近に記憶された時刻スタンプＴＭを特定することができる。
【００７１】
その後、鍵ユニットＬが、現時点での時刻に対応する新しい時刻スタンプＴＭ’を生成し、前の時刻スタンプＴＭが新しい時刻スタンプＴＭ’で置き換えられるよう使用者のリストに保存される。この通信を署名し、使用されているライセンス・ユニットが依然として鍵ユニットＬに接続されていることを補償するため、以下のパラメータの少なくとも１つ、好ましくはすべてにもとづき、ライセンス・ユニットＬにて第３の署名コードＭＡＣ３が生成される。すなわち、受信した乱数ｓｔ２、ＳＩＤコード、以前の時刻スタンプＴＭ、新しい時刻スタンプＴＭ’、ならびに、現ライセンス・ユニットのＡＩＤコードおよびＤＡＩＤコードである。したがって、好ましい場合には以下が使用される。
ＭＡＣ３＝（ｓｔ２、ＳＩＤ、ＴＭ、ＴＭ’、ＡＩＤ、ＤＡＩＤ）
【００７２】
しかしながら、鍵ユニットＬが使用者のリストの中にセッション番号ＳＩＤを見つけることができない場合、あるいはＡＩＤコードに対応するライセンス・ユニットがもはや接続されていないことを発見した場合、二者択一の工程４１０ａにおいて、誤りメッセージＦＭがプログラムＰに返信される。誤りメッセージＦＭに応答して、プログラムは自動的に終了することができ、あるいは、同じＡＩＤを使用できる場合は工程４０４から、新しいＡＩＤが必要な場合には工程４００から、手順を繰り返して新しい使用者収容位置を占有しようと試みることができる。そうでない場合、二者択一の工程４１０ｂにおいて、署名コードＭＡＣ３および時刻スタンプＴＭ’がプログラムＰに送信され、次いでプログラムＰは、ワークステーションにおいて動作したままでいることができる。さらに、プログラムＰを、プログラムＰがそのまま動作を続けるか、あるいは自動的に終了するかを判断するため、ＭＡＣ１およびＭＡＣ２についてと同様、対応する署名コードＭＡＣ３＊を生成して受け取った署名コードＭＡＣ３と比較するように構成することができる。しかしながら、より簡潔な実施の形態では、鍵ユニットＬが工程４１０ｂで継続使用を承認するメッセージを送信することで充分である。
【００７３】
この実施の形態においても、プログラムＰを、工程４０８で更新メッセージを送信した後、所定の時間内に鍵ユニットＬから応答を受け取らなかった場合に、自動的に終了するよう構成してもよい。
【００７４】
工程４０８および４１０も、プログラムＰの継続使用のため、所定の時間間隔で繰り返すことができる。さらに安全性を高めるため、プログラムＰが更新要求を送信するたびごとに鍵ユニットＬで新しいＳＩＤコードを生成し、工程４１０ｂでプログラムＰへと送信してもよいが、これについては図示されていない。さらに、新しいＳＩＤコードおよび以前のＳＩＤコードの両者を、ライセンス・ユニットＬによって生成される第３の署名コードＭＡＣ３に、パラメータとして含ませてもよい。
【００７５】
本発明は、管理を強化し安全性を高めることによって、中央集中化された管理および監視、パラレル・ポートの解放、ライセンスおよびライセンス数の簡単なアップグレードといった保護されたソフトウェアの利益を使用者にもたらす。ソフトウェア製造者にとっての明白な利益は、同時使用者の数が顧客が購入したライセンス契約を越えることができないため、ライセンス収入が大きくなる可能性である。さらに、必要な設備も比較的安価であり取り扱いが容易である。
【００７６】
当然ながら、前記実施の形態のさまざまな変形および組み合わせが、本発明の技術的範囲において可能であり、本発明の技術的範囲が前記の実施の形態に限られるわけではない。例えば、図２および４において説明した各工程は、どの程度の水準の安全性が望まれるか／適切かによって変えることができる。前記で使用した「乱数」の概念は、もちろん、数字および／または文字など、１つ以上の追加の符号を使用できるよう変更することができる。
【図面の簡単な説明】
【００７７】
本発明を、添付の図面を参照しつつ以下で詳細に説明する。
【００７８】
【図１】本発明の一実施の形態によるデータ・ネットワークの概略ブロック図である。
【図２】本発明の他の実施の形態に従ったコンピュータ・プログラムと鍵ユニットとの間の信号のやり取りの概略図である。
【図３】本発明の別の実施の形態によるデータ・ネットワークの概略ブロック図である。
【図４】本発明の別の実施の形態に従ったコンピュータ・プログラムと鍵ユニットとの間の信号のやり取りの概略図である。
【図１】
2005518041.tif 000003
【図３】
2005518041.tif 000004
【図２】
2005518041.tif 000005
【図４】
2005518041.tif 000006
【国際調査報告】
2005518041.tif 000007
2005518041.tif 000008
2005518041.tif 000009