(57)【特許請求の範囲】
【請求項１】
ライセンス・ソフトウェア・プログラムを実行するために必須のライセンス・トークンを第２の（第１の）集積回路と交換するように構成された第１の（第２の）集積回路構成要素であって、
前記第１の（第２の）集積回路内で完全に情報を処理するための処理手段と、
前記処理手段に結合され、第１の（第２の）集積回路構成要素に固有の公開キーと私的キーの対と製造業者の認証装置証明と製造業者の公開キーとそしてライセンス・トークンとを記憶する第１の記憶手段と、
前記処理手段に結合され、前記処理手段によって処理された前記情報を記憶する第２の記憶手段と、
前記処理手段に結合され、前記第１の（第２の）集積回路構成要素内に常駐する前記固有の公開キーと私的キーの対を生成するための乱数発生手段と、そして
前記処理手段に結合され、ライセンス・トークンを交換するために、前記第１の（第２の）集積回路構成要素と第２の（第１の）集積回路構成要素との間に、前記固有の公開キーと私的キーの対と前記製造業者の認証装置証明とそして前記製造業者の公開キーとを使用して通信リンクを提供するインターフェース手段と
を備える第１の（第２の）集積回路構成要素。
【請求項２】
ライセンス・ソフトウェア・プログラムを実行するために必須のライセンス・トークンを第１の（第２の）集積回路構成要素から遠隔に分離された第２の（第１の）集積回路構成要素と交換するように構成された前記第１の（第２の）集積回路構成要素であって、
第１の（第２の）集積回路構成要素に固有の公開キーと私的キーの対と製造業者の認証装置証明と製造業者の公開キーとそしてライセンス・トークンとを記憶する不揮発性メモリと、
情報を一時的に記憶するランダム・アクセス・メモリと、
前記固有の公開キーと私的キーの対と前記製造業者の認証装置証明とそして前記製造業者の公開キーとが前記第１の（第２の）集積回路構成要素の外部にアクセス可能でないように、前記第２の（第１の）集積回路構成要素から送信された情報を内部的に処理するための、前記不揮発性メモリと前記ランダム・アクセス・メモリとに結合された処理装置と、
前記処理装置に結合され、前記固有の公開キーと私的キーの対を第１の（第２の）集積回路構成要素で内部的に発生させるための乱数発生器と、そして
前記処理装置に結合され、前記第１の（第２の）集積回路構成要素に対して前記第２の（第１の）集積回路構成要素と前記ライセンス・トークンを、前記固有の公開キーと私的キーの対と前記製造業者の認証装置証明とそして前記製造業者の公開キーとを使用して交換することを可能にするインターフェースと
を備える第１の（第２の）集積回路構成要素。
【請求項３】
ライセンスされたソフトウェア・プログラムを実行するために必要なライセンス・トークンを遠隔システム（システム））と交換するように構成されたシステム（遠隔システム）であって、
ソフトウェア・プログラムを実行するホスト処理手段と、
前記ソフトウェア・プログラムを記憶する記憶手段と、
前記ホスト処理手段と前記記憶手段とを結合するバス手段と、そして
前記バス手段に結合され、エージェント手段に入力された暗号情報を内部的に復号し、前記エージェント手段から出力される暗号情報を内部的に暗号化する前記エージェント手段と
を備えるシステム（遠隔システム）において、
前記エージェント手段は、
前記入力暗号情報および出力暗号情報を完全に前記エージェント手段内で処理する処理手段と、
前記処理手段に結合され、前記入力暗号情報の復号と前記出力暗号情報の暗号化とに使用される前記エージェント手段に固有の公開キーと私的キーの対と前記エージェント手段の製造業者の認証装置証明と前記製造業者の公開キーとそしてライセンス・トークンを記憶する第１の記憶手段と；
前記処理手段に結合され、前記入力暗号情報および出力暗号情報を一時的に記憶する第２の記憶手段と、
前記処理手段に結合され、エージェント手段の外部にアクセス不可能な前記固有の公開キーと私的キーの対を生成するための乱数発生手段と、
前記処理手段に結合され、前記システム（遠隔システム）と前記遠隔システム（システム））との間に、前記固有の公開キーと私的キーの対と前記製造業者の認証装置証明とそして前記製造業者の公開キーとを使用して通信リンクを提供するインターフェース手段とを備える、
システム（遠隔システム）。
【請求項４】
ライセンスされたソフトウェア・プログラムを実行するために必要なライセンス・トークンを遠隔システム（システム））と交換するように構成されたシステム（遠隔システム）であって、
記憶素子と、
ホスト・プロセッサと、
前記ホスト・プロセッサと前記記憶素子とを結合するバスと、そして
前記バスに結合され、前記遠隔システムによって暗号化されたライセンス・トークンを含めて入力情報を内部的に復号し、ライセンス・トークンを含めて出力情報を、前記遠隔システムに送信する前に暗号化するハードウェア・エージェントと
を備えるシステム（遠隔システム）において、
前記ハードウェア・エージェントは、
ライセンス・トークンを取得するために、前記ハードウェア・エージェント内で暗号化プログラムと復号プログラムとを実行するプロセッサと、
前記プロセッサに結合され、前記入力情報の復号と前記出力情報の暗号化に使用するために、前記ハードウェア・エージェントに固有の公開キーと私的キーの対と製造業者の認証装置証明とそして製造業者の公開キーとを記憶する不揮発性記憶素子と、
前記プロセッサによって処理された前記入力情報と前記出力情報とを一時的に記憶する揮発性記憶素子と、
前記ハードウェア・エージェントの外部にアクセス不可能な前記固有の公開キーと私的キーの対を生成するための乱数発生器と、そして
前記プロセッサに結合され、前記システム（遠隔システム）と前記遠隔システム（システム））との間の通信を、前記固有の公開キーと私的キーの対と前記製造業者の認証装置証明とそして前記製造業者の公開キーとを使用して可能にするインターフェースと
を備える、
システム（遠隔システム）。
【発明の詳細な説明】
発明の背景
発明の分野
本発明は、ライセンス供与ソフトウェアに関する。詳細には、本発明は、第１のハードウェア・エージェントを有する許可されたノードからライセンス・ソフトウェア・プログラムを実行するアクセス特権を、特定ユーザ・ライセンスに違反することなく第２のハードウェア・エージェントを有する非許可ノードに転送する装置および方法に係わる。
本発明に関する背景技術
コンピュータ・システムの発展の初期には、近代化された企業は一般に、メインフレームに接続されたいくつかの「ダム（ｄｕｍｂ）」端末を有する、一部屋の大きさの集中メインフレームを使用していた。より小型で高速で高性能のコンピュータの登場と共に、それらの近代化された企業の多くは自社の集中メインフレームを撤去して、いくつかのスタンドアロン型コンピュータ、またはパーソナル・コンピュータの集まりを有し、各ユーザが自分のパーソナル・コンピュータを管理する分散ネットワーク（たとえばローカル・エリア・ネットワーク）を使用する方を選んだ。
この非集中化傾向を認めて、多くのソフトウェア開発業者が「ユーザ特有の」ライセンスと一般に呼ばれる特定のライセンス供与方式に従って自社のソフトウェアをライセンス供与している。ユーザ特有のライセンスは一般に、特定のソフトウェア・プログラムを特定の方式で随時操作することを所定数の個人に許可する。したがって、ライセンスは特定のノードではなく選択された数の個人に付随する。本出願の範囲では、「ノード」とは、好ましくは本発明を含む、コンピュータ、プリンタ、ファクシミリ機、および同様のものなどの「インテリジェンス」を有するハードウェア製品であると定義する。ユーザ特有のソフトウェアに付随する主要な問題は、ソフトウェア開発業者の潜在的ライセンス供与収益をむしばむライセンス・ソフトウェアの無許可の使用またはコピーあるいはその両方を間接的に助長することである。
長年にわたり、ソフトウェア開発業者は、自社のソフトウェアがユーザ特有のライセンスの条件の範囲を超えて使用およびコピーされないように保護する方法を探し求めてきたが、企業ライセンス被供与者は自社の従業員によるライセンス・ソフトウェアの不法な使用またはコピーによる潜在的な代位責任を大幅に軽くしようとしてきた。したがって、ユーザ特有のライセンスの条件を超えたソフトウェアの拡散を防止することは、ソフトウェア開発業者と企業ライセンス非供与者の両方に同様に利益がある。
現在、ユーザ特有のソフトウェア・ライセンスの遵守は、「ドングル（ｄｏｎｇｌｅ）」と呼ばれる物理的ハードウェア装置の使用によって行われている。ドングルとは、最初に購入したときにライセンス・ソフトウェアと共にパッケージされている物理ハードウェア装置である。これは一般には、たとえばパーソナル・コンピュータなどのノードのパラレル・ポートに接続する。実行中の様々な時点で、対象ライセンス・ソフトウェア・プログラムはドングル内で使用されているアクティブ装置に許可メッセージ（「呼びかけ」と呼ばれる）を送る。ドングル内のアクティブ装置は、ドングル内部に記憶されている秘密情報（以下、「有効ライセンス・トークン」と呼ぶ）を使用してその呼びかけを処理し、戻りメッセージ（「応答」と呼ぶ）を発生する。ソフトウェア・プログラムはこの応答を期待応答と比較し、その２つの応答が同じである場合にのみそれ以降の実行を許可する。
したがって、ユーザはライセンス・ソフトウェア・プログラムをコピーし、それを複数のパーソナル・コンピュータにロードすることはできるが、そのソフトウェア・プログラムを実行することができるのはドングルが接続されている第１のコンピュータのみである。ライセンス・ソフトウェア・プログラムを他のパーソナル・コンピュータで実行するためには、第１のパーソナル・コンピュータからドングルを取り外して他のパーソナル・コンピュータに接続しなければならない。その結果、第１のパーソナル・コンピュータではそのソフトウェアは使用不能になる。企業ライセンス被供与者に与えられるドングルの数は一般にユーザ特有のソフトウェア・ライセンス契約を結んだ人数に限定されているため、ライセンス・ソフトウェア・プログラムの複数の導入がソフトウェア開発業者にとって不利な財務上の影響を引き起こさないことは明らかである。
ドングルによってユーザ特有のライセンスの遵守は確保されるが、いくつかの欠点がある。１つの欠点は、ドングルを顧客に物理的に配布しなければならないことである。したがって、ソフトウェアの電子配布用システム（「コンテンツ配布」と呼ぶ）が提案され、実施されて便利さを増し、配布コストを削減しているが、物理装置としてのドングルは依然として従来の配布方法とそれに伴う費用とを必要とする。ソフトウェア開発業者の経済的利益を保護するためにドングルを必要とすることによって、顧客は、（ｉ）選定された場所でドングルを直接入手し、その後でそのドングルをノードに装着してからでなければライセンス・プログラムを使用することができないか、または（ii）意図した使用の前にコンテンツ配布者が顧客にドングルを郵送する時間を見越してライセンス・ソフトウエア・プログラムを発注するという煩わしい作業に耐えなければならない。いずれにしても、ドングルはコンテンツ配布の効率と興味を妨げる。
もう一つの欠点は、ドングルの取り外しと装着が時間のかかる処理であることである。時間を争う企業では、ドングルの交換は企業の業績全体に影響を及ぼす。他の欠点は、ドングルを絶えず取り外したり装着したりすることによって、ドングルが損傷し機能不能になる確率が高くなり、企業は新しいドングルを待ってからでなければ、そのソフトウェア・アプリケーションを再び使用することができない。
他の欠点は、ライセンスは個人を対象としているが、ドングルは一般にノードに装着されることである。したがって、ユーザが別の機械（たとえば自宅にあるパーソナル・コンピュータ）に移動した場合、そのユーザはドングルを所有していない限り、ライセンス・ソフトウェア・プログラムを使用することができない。
発明の簡単な概要
上記に基づき、ノード内に内部実装された集積回路構成要素として、電子ドングルの機能を備えた暗号装置を作製することが望ましい。したがって、本発明の目的は、集積回路構成要素を遠隔認証する際に使用する固有ディジタル証明を内部的に記憶する記憶素子を備えた、集積回路構成要素としての暗号装置を提供することである。
本発明の他の目的は、固有の公開キーと私用キーとの対を内部的に生成し、少なくとも秘密キーを記憶することができ、それによって集積回路構成要素の外部の使用を防止する固有集積回路構成要素を提供することである。
本発明の他の目的は、あるエンティティによって検証または製造された別の同様の集積回路構成要素とのセキュリティ保護された通信を可能にするために、そのエンティティの公開キーを内部的に記憶する集積回路構成要素を提供することである。
本発明の他の目的は、ハードウェアの物理的操作を頻繁に必要としないロビング（ｒｏｖｉｎｇ）・ソフトウェア・ライセンスを与える集積回路構成要素を提供することである。
この集積回路構成要素を一般にハードウェア・ライセンスと呼び、識別のための動作を行う処理装置と、（ｉ）固有の公開キーと私用キーの対を記憶する不揮発性メモリと、（ii）キーの対が認証されたものであるかどうかを検証するディジタル証明と、（iii）集積回路構成要素と製造業者によって製造された他の同様の構成要素との間の通信を可能にする選定されたエンティティ（集積回路構成要素の製造業者であることが好ましい）の公開キーとを含む記憶素子を備える。不揮発性メモリは暗号アルゴリズムを記憶するためにも使用することができる。集積回路構成要素は、処理装置によって処理される情報を記憶する揮発性メモリと、他の同様の構成要素から通信バスを介して暗号化形式または復号形式の情報を送受信するためのインタフェースと、固有の公開キーと私用キーの対を生成するための乱数発生器とをさらに備える。
【図面の簡単な説明】
本発明の目的、特徴、および利点は以下の本発明の詳細な説明を読めば明らかになろう。
第１図は、双方向対称キー暗号化および復号プロセスを示すブロック図である。
第２図は、双方向非対称キー暗号化および復号プロセスを示すブロック図である。
第３図は、信用権威者からのディジタル証明プロセスを示すブロック図である。
第４図は、本発明の実施形態を組み込んだコンピュータ・システムのブロック図である。
第５図は、本発明の実施形態を示すブロック図である。
第６図は、対とディジタル証明を集積回路構成要素に実装する方法を示すフローチャートである。
第７Ａ図〜第７Ｃ図は、ライセンス特権を有する第２のハードウェア・エージェントと第１のハードウェア・エージェントとの間で有効ライセンス・トークンを転送するために、第１のハードウェア・エージェントが第２のハードウェア・エージェントとの通信を確立する操作を示すフローチャートである。
発明の詳細な説明
本発明は、適切に構成されたハードウェア・エージェント間でロビング・ソフトウェア・ライセンスを転送することができるようにし、それによって配布する物理ハードウェア装置を不要にする装置および方法に関する。以下の説明では、本発明を十分に理解することができるように多くの詳細を記載する。しかし、当業者には、本発明の精神および範囲から逸脱することなく、本発明を例示されているものとは異なる多くの実施形態を使用して実施することができることが明らかである。他の場合には、本発明を無用に不明瞭にしないために、周知の回路、要素、および同様のものについては詳細には記載しない。
詳細な説明では、特定の特性または品質を説明するためにいくつかの暗号関係の用語を頻繁に使用するが、ここでそれらについて定義する。「キー」とは従来の暗号アルゴリズムの暗号化または復号あるいはその両方のパラメータである。具体的には、キーはｎビットの長さの二進データの順次配置（「ストリング」）である（ただし「ｎ」は任意の数である）。「メッセージ」とは、一連のバス・サイクルで転送される情報（たとえば暗号化キー・アドレスおよびデータ）であると一般に定義される。この情報には、呼びかけや戻り応答が含まれる。「ディジタル証明」とは、通信を開始するエンティティに関係する情報であると定義され、典型的には広く公開された信用権威者（たとえば銀行、政府機関、同業組合など）によって私用キーを使用して暗号化されたエンティティの公開キーである。「ディジタル署名」とは、ディジタル証明と類似しているが、送信者ではなくメッセージ自体の認証に使用される。
ここ数年、１つの場所から他の場所にディジタル情報を送信することがますます望まれるようになっている。その結果、現在、多くのエンティティが暗号技術を使用しており、それによって正当な受信者にとっては明瞭であいまいさがないが不正な受信者には理解できない方式で情報が転送される。一般に、暗号技術は２つの従来の技法のうちの１つに従って機能する。すなわち、対称キー暗号化または非対称（または公開）キー暗号化あるいはそれらの暗号化技術の組合せである。
第１図を参照すると、対称キー暗号技法の実施形態が図示されている。この技法では、同一、すなわち対称な秘密キー（「ＳＫ」と符号が付されている）１を使用して、第１のノード１０と第２のノード１５の間で転送される原メッセージ５を暗号化して暗号化された原メッセージ２０を形成し、暗号化された原メッセージ２０を復号して原メッセージ５を復元する必要がある。このような暗号化および復号は、たとえばデータ暗号アルゴリズム（より一般には「ＤＥＳ」と呼ばれる）などの周知の従来の暗号アルゴリズムを使用して行われる。原メッセージ５は、（ｉ）第１のノード１０で暗号化され、（ii）電話回線および同様のものなどの公共領域２５を使用して第１のノード１０から第２のノード１５に転送され、（iii）第２のノード１５で復号される。しかし、この技法は秘密キー（「ＳＫ」）を前もって設定する必要があるため、ユーザ数が多い場合にはサポートするのが困難である。
次に第２図を参照すると、非対称キー技法の実施形態が図示されている。この技法は、暗号化と復号に別々に使用される２つの別々のキー（「公開キー」および「私用キー」と呼ぶ）を使用する。第１のノード１０から第２のノード１５への双方向通信を確立するために、第２のノード１５のキーの対のうちの「公開」キー１６（「ＰＵＫ２」と符号が付されている）が第１のノード１０に記憶され、一般に第１のノード１０が暗号化の分野で周知の非対称「ＲＳＡ」アルゴリズムに基づいて原メッセージ３０を暗号化するために使用する。これによって、第２のノード１５に転送される暗号化原メッセージ３５が形成される。第１のノード１０の公開キーと私用キーの対１１および１２（［ＰＵＫ１」および「ＰＲＫ１」と符号が付されている）はさらに第１のノード１０に記憶される。
第２のノード１５のキーの対のうちの「私用」キー１７（「ＰＲＫ２」と符号が付されている）は、第２のノード１５のみが知っており、第２図に示すようにＲＳＡアルゴリズムに基づく第１のノード１０からの暗号化メッセージ３５の復号を含む多くの目的のために使用する。しかし、この技法は、不正なエンティティ（たとえば商業スパイなど）が正当なエンティティ（たとえば従業員、合弁企業など）を装おって、仕事の流れを中断させたり機密情報を入手したりするために他の正当なエンティティに詐欺的メッセージを送信しようとする試みを許しやすい。したがって、一般に付加的なプロトコルを使用して、メッセージの認証を行い、そのメッセージを送信するエンティティの正当化を行う。
事前には未知である当事者間で最初に通信を確立するときは、送信者の認証（すなわち公開キーの送信者が実際にその公開キーの真の所有者であることの検証）が問題である。この問題は、一般に、送信メッセージ５０内にディジタル証明４５を組み込むことによって回避される。ディジタル証明４５は、相互信用権威者５５（たとえば銀行、政府機関、同業者組合など）が、署名文（「ＳＭ」と符号が付されている）５８を使用して通信を開始するノードの公開キー（「ＰＵＫ１」）１１を、信用権威者５５の私用キー（「ＰＲＫＴＡ」）５７を使用して暗号化することによって発行する。したがって、ＰＵＫ２  １６を使用しようとする不正な試みが行われてもその送信メッセージに対しては受信者には読めない応答が返されることになるだけである。選択される信用権威者５５は、関係当事者によって異なる。たとえば、同じ企業に雇用されている２人の個人は両者とも、その企業の会社セキュリティ管理局によって発行された証明を信用する。しかし、２つの独立した企業エンティティの従業員は、それぞれのセキュリティ管理局からの認証だけでなく、たとえばそのような企業エンティティを証明する何らかの産業組織からの証明も必要とする。
この手法では、複数の操作を並列して実行して送信メッセージ５０を作成する。１つの操作は、ＤＥＳアルゴリズムを介して対称秘密キー（「ＳＫ」）６０を使用して原メッセージ４０を暗号化して、ディジタル証明４５と共に送信メッセージ５０に入れられる暗号化メッセージ６５を形成することである。原メッセージ４０にはハッシュ・アルゴリズム７０（たとえば「ＭＤ５」）も適用されて、送信メッセージ・ダイジェスト７５が形成される。送信メッセージ・ダイジェスト７５は、第１のノードの私用キー（「ＰＲＫ１」）１２を使用してさらに暗号化されてディジタル署名８０を形成し、それが送信メッセージ５０に入れられる。さらに、対称キー（「ＳＫ」）６０がＲＳＡアルゴリズムに基づいて第２のノードの公開キー（「ＰＵＫ２」）１６を使用して暗号化されて「ＳＫｅｎｃ」８５となり、さらに送信メッセージ５０に入れられる。
第３図を続けて参照する。第１のノード１０から公共領域２５を介して送信される送信メッセージ５０を受信すると、第２のノード１５は私用キー（ＰＲＫ２」）１７を使用してＳＫｅｎｃ８５を復号し、信用権威者５５の発行公開キー（「ＰＵＢＴＡ」）を使用してディジタル証明４５を復号し、ＳＫ６０とＰＵＫ１  １１を入手する。このＳＫキー６０とＰＵＫ１キー１１を使用して、暗号化原メッセージ６５とディジタル署名８０を復号し、送信メッセージ・ダイジェスト７５と原メッセージ４０をそれぞれ取り出す。次に、原メッセージ４０に第１のノード１０で行われたのと同じハッシュ・アルゴリズム８５を適用する。その結果９０（「受信メッセージ・ダイジェスト」と称する）が、送信メッセージ・ダイジェスト７５と比較される。送信メッセージ・ダイジェスト７５が受信メッセージ・ダイジェスト９０と同じ場合、この２つの正当ノード間の通信が維持される。
第４図を参照すると、本発明を使用するコンピュータ・システム１００の実施形態が図示されている。コンピュータ・システム１００は、ホスト・プロセッサ１０５と、メモリ装置１１０と、入出力（「Ｉ／Ｏ」）制御装置１１５と、「ハードウェア・エージェント」と呼ばれる暗号装置１２とを備える。複数のバス・エージェントがシステム・バス１３０を介して互いに接続され、それによってこれらのバス・エージェント間で情報を伝達することができる。
この実施形態ではホスト・プロセッサ１０５しか図示されていないが、コンピュータ業界では周知のように、コンピュータ・システム１００内で複数のホスト・プロセッサを使用することもできるものと企図される。さらに、メモリ装置１１０はダイナミック・ランダム・アクセス・メモリ（「ＤＲＡＭ」）、読取り専用メモリ（「ＲＯＭ」）、ビデオ・ランダム・アクセス・メモリ（「ＶＲＡＭ」）、および同様のものを含むことができる。メモリ装置１１０には、ホスト・プロセッサ１０５が使用する情報が記憶される。
入出力制御措置１１５は、入出力バス１３５とシステム・バス１３０との間のインタフェースであり、システム・バス１３０または入出力バス１３５に結合された構成要素間で情報を転送する通信経路（すなわちゲートウェイ）を提供する。入出力バス１３５はコンピュータ・システム１００内の少なくとも１つの周辺装置との間で情報を転送する。これには、画像を表示する表示装置１４０（たとえば陰極線管、液晶表示装置など）、ホスト・プロセッサ１０５に情報およびコマンド選択を伝達する英数字入力装置１４５（たとえば英数字キーボードなど）、カーソル移動を制御するカーソル制御装置１５０（たとえばマウス、トラックボール、タッチ・パッドなど）、情報を記憶する大容量データ記憶装置１５５（たとえば磁気テープ、ハード・ディスク・ドライブ、フロッピィ・ディスク・ドライブなど）、コンピュータ・システム１００から他の装置に情報を送信する情報送受信装置１６０（ファックス機、モデム、スキャナなど）、および情報の有形の視覚表現を提供するハード・コピー装置１６５（たとえばプロッタ、プリンタなど）が含まれるがこれらには限定されない。第４図に示すコンピュータ・システムはこれらの構成要素または例示したもの以外の構成要素のうちの一部または全部を使用することができる。
次に、第５図に示す本発明の実施形態を参照すると、ハードウェア・エージェント１２０は、ホスト・プロセッサ１０５および、メモリおよび入出力制御装置（図示せず）との通信経路を確立するシステム・バス１３０に結合されている。ハードウェア・エージェント１２０は、ダイ１２１を損傷と有害汚染物質から保護するように集積回路構成要素パッケージ１２２内に、好ましくは密閉されてカプセル封止されたダイ１２１（たとえばマイクロコントローラ）の形態の単一の集積回路を含む。ダイ１２１は、記憶素子１２４に結合された処理装置１２３と、バス・インタフェース１２５と、乱数発生器１２６とを含む。バス・インタフェース１２５は、ハードウェア・エージェント１２０から他の装置（たとえばホスト・プロセッサ、他の装置内の他のハードウェア・エージェントなど）への通信を可能にする。処理装置１２３は、ダイ１２１の中のセキュリティ保護された環境内で内部的に計算を行って、許可された受信者との有効な接続を確認する。そのような計算には、特定のアルゴリズムおよびプロトコルの実行、装置固有の公開／私用キー対および同様のものを生成する、回路（たとえばランダムな性質であることが好ましい、乱数発生器１２６など）の起動が含まれる。処理装置１２３は、コンピュータ・システムを混乱させてその私用キーおよびその他の情報を入手する一般的な方法であるウィルス攻撃による私用キーのアクセスを防ぐようにダイ１２１内に配置されている。
記憶素子１２４は、「ＲＳＡ」や「ＤＥＳ」などの適切な暗号アルゴリズム、公開キーと私用キーの対１２７ａ、価値の対が認証されたものであるかどうかを検証するためのディジタル証明（「ＤＣ」という符号が付されている）１２７ｂ、および集積回路構成要素とその製造業者によって製造された他の同様の装置との間の通信を可能にする集積回路構成要素の製造業者の公開キー（「ＰＵＫＭ」）１２７ｃを記憶するフラッシュ・メモリなどの不揮発性メモリ素子１２７を含む（第６図に詳細に記載する）。電源が切断されても内容を保持するため、この不揮発性メモリ１２７が主として使用される。メモリ装置１２４は、処理装置１２３からの特定の結果を記憶するためにさらにランダム・アクセス・メモリ（「ＲＡＭ」）１２８を含む。
ハードウェア・エージェント１２０は、セキュリティ強化のためにシステム・バス１３０に接続された周辺装置として実装されているが、ハードウェア・エージェント１２０はＰＣプラットフォーム・レベルで他のいくつかの方法（たとえば、ハード・ディスクから入出力される情報の自動的な復号または暗号化あるいはその両方を行うディスク制御装置またはＰＣＭＣＩＡカードとしてなど）で実施することもできるものと企図される。他の代替実施態様は、後述するようにハードウェア・エージェントをホスト・プロセッサを含むマルチチップ・モジュールの１つの構成要素とすることであろう。さらに、ハードウェア・エージェントについてＰＣプラットフォームと関連して説明しているが、このようなハードウェア・エージェントはファックス機、プリンタおよび同様のものなどのノード内や、コンピュータと入出力周辺装置との間の通信経路上に実施することもできるものと企図される。
第６図を参照すると、本発明を製作する操作のフローチャートが示されている。まず、ステップ１００で、任意の従来の公知の半導体製造技法に従ってハードウェア・エージェントのダイを製作する。次に、ハードウェア・エージェント自体を形成するようにそのダイを半導体パッケージ内にカプセル封止する（ステップ１０５）。証明システム上にハードウェア・エージェントを配置し、それによってハードウェア・エージェントと証明システムとの間に電気的および機械的結合を確立する（ステップ１１０）。証明システムは、ハードウェア・エージェントの証明のための電気信号の発生と受信を行う、プリント回路基板に結合されたキャリヤを備える。証明システムはさらに、固有キー生成を保証するために前に生成された公開キーの記憶装置（たとえばデータベース）をさらに備える。その後で、証明システムはハードウェア・エージェントに電力を供給し、ハードウェア・エージェントは乱数発生器に電力を供給してハードウェア・エージェント内で乱数発生器が装置固有の公開キーと私用キーの対を内部的に生成することができるようにする。
ハードウェア・エージェント内で公開キーと私用キーの対が生成された後、公開キーと私用キーの対のうちの公開キーを証明システムに送る（ステップ１２０）。その公開キーを、記憶装置に記憶されている前に製造されたハードウェア・エージェントの前に生成された公開キーと比較する（ステップ１２５）。万一、その公開キーが前に生成された公開キーの１つと同じである場合（ステップ１３０）、証明システムがハードウェア・エージェントに対して別の前記公開キーと私用キーの対を生成するように通知し（ステップ１３５）、このプロセスをステップ１２０から続けて各公開キーと私用キーの対が確実に固有のものになるようにする。
公開キーが固有である場合は、記憶装置はその固有の公開キーで更新される（ステップ１４０）。その後、証明システムがステップ１４５で、キーの対が認証されたものであるかどうかを検証する固有装置証明（以下、「認証装置証明」と呼ぶ）を作成する。認証装置証明は、秘密私用製造業者キーを使用して「ディジタル署名」された装置の公開キーを少なくとも含む（すなわち、大ざっぱに言えば製造業者の私用キーを使用して装置の公開キーを暗号化する）。この認証装置証明を製造業者の一般に知られた公開キーと共にハードウェア・エージェントに入力し（ステップ１５０）、ハードウェア・エージェントは固有公開キーと私用キーの対と認証装置証明と製造業者の公開キーをその不揮発性メモリに永久的にプログラムする（ステップ１５５）。しかし、製造業者の代わりに他のエンティティ（たとえば配布業者）の公開キーを使用することもでき、その場合は認証装置証明の変更も必要になることが企図される。この時点で、ハードウェア・エージェントは物理的に固有であり、これで他のハードウェア・エージェントとの通信を安全に確立することができる。
ハードウェア・エージェントを製作した後、それを第４図に示すコンピュータ・システムなどの電子装置に実装する。これは、呼びかけ／応答などの認証手続きとその他の周知の手続きを使用してライセンス供与者とハードウェア・エージェントとの間にセキュリティ保護された通信経路を確立することによって行うことができる。通信経路が安全に確保された後、セキュリティ保護された通信リンクを介して有効なライセンス・トークンをハードウェア・エージェントのフラッシュ・メモリにダウンロードする。ハードウェア・エージェント間で転送するのではなく、ライセンス・トークンが複数のハードウェア・エージェントに組み込まれて「有効」状態または「無効」状態にあり、それによってライセンス・トークンを有効化または無効化することもできることがさらに企図される。
第７Ａ図および第７Ｂ図を参照すると、２つのハードウェア・エージェントの認証の相互遠隔識別の実施形態が示されている。ステップ２００で、第１のハードウェア・エージェントが組み込まれた「未許可の」第１のノード（すなわち現在はライセンス・ソフトウェア・アプリケーションの操作を許可されていないノード）と、ライセンス・ソフトウェア・アプリケーションを操作することを許可された第２のハードウェア・エージェントが組み込まれた許可された第２のノードとの間に通信リンクが確立される。この通信リンクは、モデム、ネットワークなどの任意の従来の通信手段を介して確立することができる。第１のハードウェア・エージェントはその固有認証装置証明を含むメッセージを第２のハードウェア・エージェントに出力する（ステップ２０５）。両方のハードウェア・エージェントの不揮発性メモリに製造業者の公開キー（「ＰＵＫＭ」）がプログラムされているため、第２のハードウェア・エージェントは製造業者の公開キー（「ＰＵＫＭ」）を使用して認証装置証明を復号し、第１のハードウェア・エージェントの公開キーを入手する（ステップ２１０）。その後、ステップ２１５〜２２０で、ステップ２０５〜２１０に記載されているものと同様の操作も行われ、それによって第１のエージェントは第２のハードウェア・エージェントの公開キー（「ＰＵＫ２」）を入手する。
その後、ステップ２２５および２３０で、第２のハードウェア・エージェントが、第１のハードウェア・エージェントの導き出された公開キーを使用して、選定された暗号アルゴリズム（たとえばＲＳＡ）に従って呼びかけメッセージを暗号化し、その呼びかけメッセージを第１のハードウェア・エージェントに送信する。ステップ２３５および２４０で、第１のハードウェア・エージェントが、その私用キー（「ＰＲＫ１」）を使用して呼びかけメッセージを復号し、次に、復号した呼びかけメッセージを第２のハードウェア・エージェントの公開キー（「ＰＵＫ２」）を使用して暗号化することによって応答メッセージを生成し、その応答メッセージを第２のハードウェア・エージェントに送信する。次に、第２のハードウェア・エージェントが、前に送信された製造業者の装置証明の復号によって前に判断したその私用キー（「ＰＵＫ１」）を使用してその応答を復号する（ステップ２４５）。ステップ２５０で、第２のハードウェア・エージェントは元の呼びかけメッセージを、復号した応答メッセージと比較し、同じでない場合は通信を終了する（ステップ２５５）。同じ場合は、ステップ２６０〜２９０でステップ２２５〜２６０と同様の呼びかけ／応答手続きが行われて、第１のハードウェア・エージェントから送信された情報を第２のハードウェア・エージェントが実際に受信していることを検証する。これらのステップ（ステップ２２５〜２９０）が成功裏に完了すると、両方のハードウェア・エージェントが認証されたエージェントであり、両者の間の通信がセキュリティ保護されていることが保証される（ステップ２９５）。
次に第７Ｃ図を参照すると、セキュリティ保護された通信のもとで第２のハードウェア・エージェント内の有効なライセンス・トークンを第１のハードウェア・エージェントに安全に転送するプロセスの実施形態が示されている。安全保護された通信が確立されると、第１のハードウェア・エージェントは第２のハードウェア・エージェントに対して有効なライセンス・トークンを所有しているかどうか照会する（ステップ３００）。第２のハードウェア・エージェントが組み込まれているシステムが有効なライセンス・トークンを持っていない場合（ステップ３０５）、ハードウェア・エージェント間の通信は終了する（ステップ３１０）。しかし、第２のハードウェア・エージェントが組み込まれたシステムが有効なライセンス・トークンを持っている場合は、第１のハードウェア・エージェントにしかるべくメッセージを送信する（ステップ３１５）。
第１のハードウェア・エージェントは、このメッセージを受信すると、第１のハードウェア・エージェントにライセンス・ソフトウェア・アプリケーションの操作を許す有効なライセンス・トークンの転送要求を出す（ステップ３２０）。第２のハードウェア・エージェントは、有効なライセンス・トークンを転送することによって転送要求に応答し、それによってそのライセンス特権を失う（ステップ３２５）。第１のハードウェア・エージェントはその有効なライセンス・トークンを受け取り、そのトークンをその不揮発性メモリに記憶した後、有効なライセンス・トークンを受け取ったというメッセージを第２のハードウェア・エージェントに送信し、そのライセンス・ソフトウェアのコピーを使用可能にすることになる（ステップ３３０）。この時点で、通信が終了する（ステップ３３５）。
ステップ３２０と３２５の間およびステップ３２５と３３０の間に呼びかけ／応答シーケンスを導入することによって、追加のレベルのプロトコル保全性を得ることができることが企図される。これによって、前のライセンス・トークン転送事象の「再生」が防止される。
第１と第２のハードウェア・エージェント間の通信と並行して、各ハードウェア・エージェントはその送信の内容を監査ログとして不揮発性メモリに記憶する。したがって、第２のハードウェア・エージェントがそのコピーを使用不能にした後で第１のハードウェア・エージェントがそのコピーを使用可能にする前に通信が切断された場合、両方のハードウェア・エージェントは通信が再接続された後で監査ログを見直してどのハードウェア・エージェント（ある場合）がライセンス・ソフトウェア・アプリケーションを操作する許可を持っているかを判断することができる。
本明細書に記載の本発明は多くの異なる方法で多くの異なる構成を使用して設計することができる。本発明について様々な実施態様に関して説明したが、当業者なら本発明の精神および範囲から逸脱することなく他の実施態様を考えつくであろう。したがって、本発明は請求の範囲の記載によって判断されるべきである。
【図１】
0004294728.tif 000002
【図２】
0004294728.tif 000003
【図３】
0004294728.tif 000004
【図４】
0004294728.tif 000005
【図５】
0004294728.tif 000006
【図６】
0004294728.tif 000007
【図７Ａ】
0004294728.tif 000008
【図７Ｂ】
0004294728.tif 000009
【図７Ｃ】
0004294728.tif 000010