(57)【要約】【課題】ソフトウェアの不正使用を防止するための処理を高速に行うことができるハードウェアプロテクトキー及び情報処理システムを提供する。【解決手段】ソフトウェアの使用権限を規定するドングルデータを記憶した第１記憶部１３ａと、第１記憶部１３ａに記憶されたドングルデータを暗号化するためのデータテーブルを記憶する第２記憶部１３ｂと、外部から暗号鍵を受信する受信部１１と、受信部１１で受信された暗号鍵に基づいて第２記憶部１３ｂに記憶されているデータテーブルを参照することにより第１記憶部１３ａに記憶されているドングルデータを読み出して暗号化する暗号化部１２と、暗号化部１２で暗号化されたドングルデータを外部に送信する送信部１１とを備えている。【選択図】      図１
2005050160.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの使用権限を規定するドングルデータを記憶した第１記憶部と、
前記第１記憶部に記憶されたドングルデータを暗号化するためのデータテーブルを記憶する第２記憶部と、
外部から暗号鍵を受信する受信部と、
前記受信部で受信された暗号鍵に基づいて前記第２記憶部に記憶されているデータテーブルを参照することにより前記第１記憶部に記憶されているドングルデータを読み出して暗号化する暗号化部と、
前記暗号化部で暗号化されたドングルデータを外部に送信する送信部と、
を備えることを特徴とするハードウェアプロテクトキー。
【請求項２】
暗号鍵を生成する暗号鍵生成部を更に備え、
前記送信部は、前記暗号鍵生成部で生成された暗号鍵を外部に送信し、
前記受信部は、前記送信部から送信された暗号鍵に応答して外部から送られてくる暗号データを受信し、
前記暗号化部は、前記受信部で受信された暗号データを復号化し、ドングルデータとして前記第１記憶部に記憶することを特徴とする請求項１記載のハードウェアプロテクトキー。
【請求項３】
前記第２記憶部に記憶されているデータテーブルは、カオス理論に基づいて生成された疑似乱数テーブルからなり、
前記暗号化部は、前記ドングルデータの暗号化及び前記暗号データの復号化をカオスブロック暗号アルゴリズムを用いて行うことを特徴とする請求項１又は請求項２記載のハードウェアプロテクトキー。
【請求項４】
情報処理装置とハードウェアプロテクトキーとを備え、
前記情報処理装置は、
暗号鍵を生成する暗号鍵生成部を備え、
前記ハードウェアプロテクトキーは、
ソフトウェアの使用権限を規定するドングルデータを記憶した第１記憶部と、
前記第１記憶部に記憶されたドングルデータを暗号化するためのデータテーブルを記憶する第２記憶部と、
前記情報処理装置の暗号鍵生成部で生成された暗号鍵を受信する受信部と、
前記受信部で受信された暗号鍵に基づいて前記第２記憶部に記憶されているデータテーブルを参照することにより前記第１記憶部に記憶されているドングルデータを読み出して暗号化する暗号化部と、
前記暗号化部で暗号化されたドングルデータを前記情報処理装置に送信する送信部と、
を備えることを特徴とする情報処理システム。
【請求項５】
前記情報処理装置は、
暗号鍵に基づいて暗号データを生成する暗号データ生成部を備え、
前記ハードウェアプロテクトキーは、
暗号鍵を生成する暗号鍵生成部を備え、
前記送信部は、前記暗号鍵生成部で生成された暗号鍵を前記情報処理装置に送信し、
前記受信部は、前記送信部から送信された暗号鍵に応答して前記情報処理装置の暗号データ生成部で生成された暗号データを受信し、
前記暗号化部は、前記受信部で受信された暗号データを復号化し、ドングルデータとして前記第１記憶部に記憶することを特徴とする請求項４記載の情報処理システム。
【請求項６】
前記ハードウェアプロテクトキーの第２記憶部に記憶されているデータテーブルは、カオス理論に基づいて生成された疑似乱数テーブルからなり、
前記ハードウェアプロテクトキーの暗号化部は、前記ドングルデータの暗号化及び前記暗号データの復号化をカオスブロック暗号アルゴリズムを用いて行うことを特徴とする請求項４又は請求項５記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアプロテクトキー及び情報処理システムに関し、特にハードウェアプロテクトキーの入出力データの秘匿性を高める技術に関する。
【背景技術】
【０００２】
近年、ソフトウェアの不正コピーを防止するために、「ドングル（dongle）」と呼ばれるハードウェアプロテクトキーが使用されている。このドングルは、パーソナルコンピュータの入出力ポートにコネクタを介して装着される。ドングルが同梱されたソフトウェア（以下、本明細書では「特定ソフトウェア」という）は、このドングルをパーソナルコンピュータに接続しないと使用することができず、この特定ソフトウェアを他のコンピュータにコピーしてもドングルを接続しない限り該特定ソフトウェアは起動しない。
【０００３】
このようなドングルは、その内部に、ドングルにユニークに付されたシリアルナンバの他に、ソフトウェア製品のプロダクトＩＤ、法人向けのソフトウェア製品に付与されるカンパニーＩＤ等といった該特定ソフトウェアの使用権限を判断するための情報（以下、本明細書では「ドングルデータ」という）が記憶されている。
【０００４】
そして、パーソナルコンピュータは、ドングルが装着されると、該ドングルからドングルデータを読み出し、読み出されたドングルデータに基づいて特定ソフトウェアの使用可否を判断する。そして、使用可であることが判断された場合に、当該ドングルに関連付けられた特定ソフトウェアのコピーや起動が可能になる。
【０００５】
このようなドングルが装着されたパーソナルコンピュータでは、パーソナルコンピュータと周辺機器との間のデータの送受は、暗号化して行われる。即ち、パーソナルコンピュータは、ドングルが装着されると、ドングルからキー情報を読み出し、パーソナルコンピュータ側に有する、例えばカオスストリーム暗号アルゴリズムを用いてキー情報から暗号鍵を生成し、生成された暗号鍵を用いて平文データを暗号化して、周辺機器に送信している。
【０００６】
なお、暗号化の技術としては、カオスブロック暗号アルゴリズムを用いたディジタルブロック暗号が知られている（例えば、特許文献１参照）。ディジタルブロック暗号では、カオスのタイムシリーズから取り出した整数列又は乱数により生成した整数列を暗号鍵、暗号表、復元表としてディジタルブロックの検索により暗号化復元が行われる。また、暗号鍵の照合を行う機能も付加し、これらを工業用汎用ＣＰＵワンチップにインストールする。このデジタルブロック暗号を用いれば、情報通信において、ユーザは暗号や暗号鍵の管理を意識せずに通信システムの頑健性を向上させることができる。
【０００７】
また、前述した従来技術の関連技術として例えば特許文献２、特許文献３が知られている。
【特許文献１】特開２０００-１５１５８０号公報
【特許文献２】特開２００１-１７５４６８号公報
【特許文献３】特開２００２-１１６８３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述したドングルが装着されたパーソナルコンピュータと周辺機器との間におけるデータの送受は暗号化して行われるが、パーソナルコンピュータとドングルとの間におけるドングルデータの送受は平文データで（暗号化しないで）行われている。従って、パーソナルコンピュータ上のドングルデータが第三者によって容易に閲覧されてしまうという事態が発生し、ソフトウェアの不正コピーや不正起動といった不正使用を防止できないという問題がある。
【０００９】
また、不正使用を防止するために行われる処理によってパフォーマンスが低下するのを可能な限り防止したいという要望がある。
【００１０】
本発明の第１の課題は、ソフトウェアの不正使用を堅固に防止できるハードウェアプロテクトキー及び情報処理システムを提供することにある。
【００１１】
また、本発明の第２の課題は、ソフトウェアの不正使用を防止するための処理を高速に行うことができるハードウェアプロテクトキー及び情報処理システムを提供することにある。
【課題を解決するための手段】
【００１２】
第１の発明のハードウェアプロテクトキーは、ソフトウェアの使用権限を規定するドングルデータを記憶した第１記憶部と、第１記憶部に記憶されたドングルデータを暗号化するためのデータテーブルを記憶する第２記憶部と、外部から暗号鍵を受信する受信部と、受信部で受信された暗号鍵に基づいて第２記憶部に記憶されているデータテーブルを参照することにより第１記憶部に記憶されているドングルデータを読み出して暗号化する暗号化部と、暗号化部で暗号化されたドングルデータを外部に送信する送信部とを備えることを特徴とする。
【００１３】
また、第２の発明のハードウェアプロテクトキーは、暗号鍵を生成する暗号鍵生成部を備え、送信部は、暗号鍵生成部で生成された暗号鍵を外部に送信し、受信部は、送信部から送信された暗号鍵に応答して外部から送られてくる暗号データを受信し、暗号化部は、受信部で受信された暗号データを復号化し、ドングルデータとして第１記憶部に記憶することを特徴とする。
【００１４】
また、第３の発明のハードウェアプロテクトキーでは、第２記憶部に記憶されているデータテーブルは、カオス理論に基づいて生成された疑似乱数テーブルからなり、暗号化部は、ドングルデータの暗号化及び暗号データの復号化をカオスブロック暗号アルゴリズムを用いて行うことを特徴とする。
【００１５】
また、第４の発明の情報処理システムは、情報処理装置とハードウェアプロテクトキーとを備え、情報処理装置は、暗号鍵を生成する暗号鍵生成部を備え、ハードウェアプロテクトキーは、ソフトウェアの使用権限を規定するドングルデータを記憶した第１記憶部と、第１記憶部に記憶されたドングルデータを暗号化するためのデータテーブルを記憶する第２記憶部と、情報処理装置の暗号鍵生成部で生成された暗号鍵を受信する受信部と、受信部で受信された暗号鍵に基づいて第２記憶部に記憶されているデータテーブルを参照することにより第１記憶部に記憶されているドングルデータを読み出して暗号化する暗号化部と、暗号化部で暗号化されたドングルデータを情報処理装置に送信する送信部とを備えることを特徴とする。
【００１６】
また、第５の発明の情報処理システムでは、情報処理装置は、暗号鍵に基づいて暗号データを生成する暗号データ生成部を備え、ハードウェアプロテクトキーは、暗号鍵を生成する暗号鍵生成部を備え、送信部は、暗号鍵生成部で生成された暗号鍵を情報処理装置に送信し、受信部は、送信部から送信された暗号鍵に応答して情報処理装置の暗号データ生成部で生成された暗号データを受信し、暗号化部は、受信部で受信された暗号データを復号化し、ドングルデータとして第１記憶部に記憶することを特徴とする。
【００１７】
また、第６の発明の情報処理システムでは、ハードウェアプロテクトキーの第２記憶部に記憶されているデータテーブルは、カオス理論に基づいて生成された疑似乱数テーブルからなり、ハードウェアプロテクトキーの暗号化部は、ドングルデータの暗号化及び暗号データの復号化をカオスブロック暗号アルゴリズムを用いて行うことを特徴とする。
【発明の効果】
【００１８】
第１の発明のハードウェアプロテクトキーによれば、内部に記憶されているドングルデータは暗号化されて外部に送信されるので、第三者が外部でドングルデータを閲覧することが困難になり、ドングルデータの漏洩に起因するソフトウェアの不正使用を堅固に防止できる。
【００１９】
第２の発明のハードウェアプロテクトキーによれば、外部に送信した暗号鍵に基づいて暗号化された暗号データを外部から受信し、復号化してドングルデータとして記憶するように構成したので、第三者が外部から送られてくるドングルデータを閲覧することが困難になり、ドングルデータの漏洩に起因するソフトウェアの不正使用を堅固に防止できる。
【００２０】
第３の発明のハードウェアプロテクトキーによれば、データテーブルをカオス理論に基づいて生成された疑似乱数テーブルで構成し、ドングルデータの暗号化及び暗号データの復号化をカオスブロック暗号アルゴリズムを用いて行うように構成したので、カオスストリーム暗号アルゴリズムのように疑似乱数を計算する時間が不要になり、高速にドングルデータの暗号化及び復号化を行うことができる。
【００２１】
第４の発明の情報処理システムによれば、ハードウェアプロテクトキーの内部に記憶しているドングルデータは暗号化されて情報処理装置に送信されるので、第三者が情報処理装置上でドングルデータを閲覧することが困難になり、ドングルデータの漏洩に起因するソフトウェアの不正使用を堅固に防止できる。
【００２２】
第５の発明の情報処理システムによれば、情報処理装置に送信した暗号鍵に基づいて情報処理装置で暗号化された暗号データを受信し、復号化してドングルデータとして記憶するように構成したので、第三者が情報処理装置から送られてくるドングルデータを閲覧することが困難になり、ドングルデータの漏洩に起因するソフトウェアの不正使用を堅固に防止できる。
【００２３】
第６の発明の情報処理システムによれば、データテーブルをカオス理論に基づいて生成された疑似乱数テーブルで構成し、ドングルデータの暗号化及び暗号データの復号化をカオスブロック暗号アルゴリズムを用いて行うように構成したので、カオスストリーム暗号アルゴリズムのように疑似乱数を計算する時間が不要になり、高速にドングルデータの暗号化及び復号化を行うことができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施例を図面を参照しながら詳細に説明する。
【実施例】
【００２５】
図１は本発明の実施例に係る情報処理システムの構成を示すブロック図である。この情報処理システムは、パーソナルコンピュータ２と、このパーソナルコンピュータ２に着脱自在に構成されたハードウェアプロテクトキー（ドングル）１とを備えている。パーソナルコンピュータ２は、本発明の情報処理装置に対応する。なお、本発明の情報処理装置としては、パーソナルコンピュータ２に限らず、携帯電話、ＰＤＡ等の携帯端末、サーバコンピュータ、ワークステーション、その他の情報処理装置を用いても良い。
【００２６】
この実施例では、パーソナルコンピュータ２とハードウェアプロテクトキー１とは、ＵＳＢインタフェースにより接続されている。なお、パーソナルコンピュータ２とハードウェアプロテクトキー１との間のインタフェースは、ＵＳＢインタフェースに限らず、パラレルインタフェース、シリアルインタフェース、その他のインタフェースを用いても良い。
【００２７】
ハードウェアプロテクトキー１は、特定ソフトウェアに同梱されて携帯可能に構成されており、個人が所有する。ハードウェアプロテクトキー１には、ＵＳＢコネクタ１０が設けられている。ＵＳＢコネクタ１０がパーソナルコンピュータ２に設けられたＵＳＢコネクタ２０に嵌合されることにより、ハードウェアプロテクトキー１とパーソナルコンピュータ２とが電気的に接続され、両者間で相互にデータ通信が行えるようになっている。
【００２８】
ハードウェアプロテクトキー１は、入出力部１１、ＵＳＢコントローラ１２、メモリ１３及びキーワード発生器１４から構成されている。
【００２９】
入出力部１１は、本発明の送信部及び受信部に対応する。この入出力部１１は、ＵＳＢインタフェース回路から構成されており、パーソナルコンピュータ２との間で行われるデータ転送を制御する。即ち、入出力部１１は、パーソナルコンピュータ２からＵＳＢコネクタ１０を介して送られてきたデータを受信してＵＳＢコントローラ１２に送ると共に、ＵＳＢコントローラ１２から送られてきたデータをＵＳＢコネクタ１０を介してパーソナルコンピュータ２に送る制御を行う。
【００３０】
ＵＳＢコントローラ１２は、例えばＣＰＵから構成されており、本発明の暗号化部に対応する。ＵＳＢコントローラ１２の詳細は、後にフローチャートを参照して説明するが、ドングルデータの暗号化及び復号化等を行う。
【００３１】
メモリ１３は、例えばＥＥＰＲＯＭから構成されている。このメモリ１３は、図２に示すように、ドングルデータを記憶する第１記憶部１３ａとデータテーブルを記憶する第２記憶部１３ｂとから構成されている。
【００３２】
第１記憶部１３ａに記憶されたドングルデータは、シリアルＮｏ．、カンパニーＩＤ、日付回数制限データ及びプロダクトＩＤから構成されている。シリアルＮｏ．は、特定ソフトウェアに対応してハードウェアプロテクトキー１にユニークに付された番号及び／又は記号である。カンパニーＩＤは、法人向けの特定ソフトウェアに付与される法人の識別子である。日付回数制限データは、特定ソフトウェアの使用を日付又は使用回数等によって制限するためのデータであり、特定ソフトウェアによって任意に定められる。プロダクトＩＤは、特定ソフトウェアに付される識別子である。
【００３３】
第２記憶部１３ｂに記憶されたデータテーブルは、カオス理論に基づいて作成された疑似乱数テーブルである。このデータテーブルは、例えば図３（Ｃ）に示すように、８バイト（行）×８バイト（列）のカオス系列の擬似乱数から構成されている。乱数は不規則に発生し、カオスの時系列波形も不規則な振る舞いをする。この性質を利用し、カオスの時系列波形を用いて、カオス系列の擬似乱数を発生させ、データテーブルとして使用している。
【００３４】
カオスの時系列波形を生成し且つカオスの性質をもつ基本モデルである式の一つに、ロジスティック写像の式がある。このロジスティック写像の式は、式（１）に示すような漸化式で表される。
【００３５】
ｘ（ｔ＋１）＝４ｘ（ｔ）｛１−ｘ（ｔ）｝
ｘ（ｔ）＝ｘ（ｔ＋１）  ・・・（１）
ここで、ｘ（ｔ）をｘ（ｔ＋１）に移していくので、写像と呼ぶ。ｔは離散時間であり、ｘ（ｔ）は前述したカオス関数に相当している。式（１）に初期値ｘ（０）を与え、離散時間ｔを０から一定時間Δｔ毎に（離散的）例えば１００まで変化させると、図４に示すように、ロジスティック写像カオスの時系列波形、すなわち、タイムシリーズ｛ｘ（ｔ）−ｔ｝が得られる。図４において、一定時間Δｔ毎のｘ（ｔ）の値がプロットされている。
【００３６】
このロジスティック写像の式は、値が増加／減少を繰り返す時系列波形であり、初期値ｘ（０）のわずかな変化で時系列波形の様子が大きく変化する。すなわち、ロジスティック写像の式は、初期値ｘ（０）に敏感に依存する。このため、初期値ｘ（０）を変えることにより、複数種類のカオス系列の擬似乱数を発生させることができ、これによって、複数種類のデータテーブルを作製できる。
【００３７】
また、ロジスティック写像の式は、入出力特性が非線形であり、非線形な振る舞いをする。さらに、ｘ（ｔ）は、同じ値を２度と取らず、不可逆性がある。このため、ｘ（ｔ）の値を単純に予測できないため、秘匿性を高くすることができる。
【００３８】
このメモリ１３に記憶されているドングルデータ及びデータテーブルは、ＵＳＢコントローラ１２から読み出される。また、メモリ１３に記憶されているドングルデータ及びデータテーブルは、ＵＳＢコントローラ１２によって書き換えられる。
【００３９】
なお、この実施例では、メモリ１３は、ＵＳＢコントローラ１２と別体に構成されているが、メモリ１３として、ＵＳＢコントローラ１２を構成するＣＰＵの内蔵メモリを用いることができる。
【００４０】
キーワード発生器１４は、図３（Ｂ）に示すように、８バイトのデータ列からなるキーワードを生成する。このキーワードは、本発明の暗号鍵に対応する。キーワードを構成する８バイトは、それぞれ異なる値（０〜７の何れかの値）を有する。キーワード発生器１４は、８個の値をランダムに並べ替えてキーワードを生成し、ＵＳＢコントローラ１２に送る。
【００４１】
パーソナルコンピュータ２は、ハードウェアプロテクトキー１が装着され、且つ該ハードウェアプロテクトキー１の内部のドングルデータが正当性を有する場合にのみ特定ソフトウェアを起動し、また、その特定ソフトウェアをインストール（コピーを含む）する。
【００４２】
パーソナルコンピュータ２は、入出力部２１、ＣＰＵ２２及びメモリ２３から構成されている。パーソナルコンピュータ２には、各種のデータ等を入力する入力部３及びデータを画面上に表示する表示部４が接続されている。
【００４３】
入出力部２１は、ＵＳＢインタフェース回路から構成されており、ハードウェアプロテクトキー１との間で行われるデータ転送を制御する。即ち、入出力部２１は、ハードウェアプロテクトキー１からＵＳＢコネクタ２０を介して送られてきたデータを受信してＣＰＵ２２に送ると共に、ＣＰＵ２２から送られてくるデータをＵＳＢコネクタ２０を介してハードウェアプロテクトキー１に送る制御を行う。
【００４４】
ＣＰＵ２２の詳細は、後にフローチャートを参照して説明するが、ドングルデータの暗号化及び復号化、特定ソフトウェアの起動等を行う。
【００４５】
メモリ２３は、上述したハードウェアプロテクトキー１内のデータテーブルと同じデータテーブルを記憶する。また、メモリ２３は、入力部３から入力された個人のパスワードや各種のデータ等を記憶する。
【００４６】
次に、このように構成されたハードウェアプロテクトキー１とパーソナルコンピュータ２とからなる情報処理システムの動作を説明する。
【００４７】
まず、パーソナルコンピュータ２がハードウェアプロテクトキー１に記憶されているドングルデータを読み出す場合の動作を説明する。
【００４８】
図５はドングルデータの読み出し動作の概要を示すシーケンス図である。パーソナルコンピュータ２の特定ソフトウェアには、該特定ソフトウェアに同梱されたハードウェアプロテクトキー１のメモリ１３に格納されているデータテーブルと同じデータテーブルが含まれている。
【００４９】
まず、パーソナルコンピュータ２は、キーワードを生成し、このキーワードをハードウェアプロテクトキー１に送る。パーソナルコンピュータ２で生成されるキーワードは、上述したハードウェアプロテクトキー１内のキーワード発生器１４で生成されるキーワードと同様に、８バイトのデータ列から構成されている。
【００５０】
ハードウェアプロテクトキー１は、パーソナルコンピュータ２からキーワードを受信すると、メモリ１３からドングルデータを読み出す。そして、読み出したドングルデータを暗号化し、暗号データとしてパーソナルコンピュータ２に送る。暗号化の方法の詳細は後述する。
【００５１】
パーソナルコンピュータ２は、ハードウェアプロテクトキー１から受信した暗号データを復号化し、ドングルデータを再生する。そして、再生されたドングルデータを用いて特定ソフトウェアの起動やインストールの可否を判断し、許可されていることを判断した場合に、その特定ソフトウェアの起動やインストールを行う。
【００５２】
次に、以上説明したドングルデータの読み出し動作を行う場合のパーソナルコンピュータ２及びハードウェアプロテクトキー１の各々の詳細な動作を、図６及び図７に示すフローチャートを参照しながら説明する。
【００５３】
まず、パーソナルコンピュータ２の動作の詳細を、図６に示すフローチャートを参照しながら説明する。
【００５４】
パーソナルコンピュータ２は、まず、キーワードを生成する（ステップＳ１０）。即ち、パーソナルコンピュータ２のＣＰＵ２２は、上述したハードウェアプロテクトキー１内のキーワード発生器１４で生成されるキーワードと同様の、８バイトのデータ列から成るキーワードを生成する。そして、生成されたキーワードを入出力部２１及びＵＳＢコネクタ２０を経由してハードウェアプロテクトキー１に送る（ステップＳ１１）。その後、パーソナルコンピュータ２は、ハードウェアプロテクトキー１から暗号データが受信されるのを待って待機状態に入る（ステップＳ１２）。
【００５５】
この待機状態で、ハードウェアプロテクトキー１からＵＳＢコネクタ２０及び入出力部２１を経由して暗号データが受信されると、ＣＰＵ２２は、復号化処理を実行する（ステップＳ１３）。この復号化処理は、後に説明する暗号化の手順と逆の手順（詳細は後述）を実行することにより行われる。この復号化処理により、シリアルＮｏ．、カンパニーＩＤ、日付回数制限データ及びプロダクトＩＤからなるドングルデータが再生される。
【００５６】
次に、ドングルデータ中のシリアルＮｏ．は正当であるかどうかが調べられる（ステップＳ１４）。具体的には、ＣＰＵ２２は、特定ソフトウェアに含まれているシリアルＮｏ．とドングルデータ中のシリアルＮｏ．とが一致するかどうかを調べる。
【００５７】
ステップＳ１４で正当でないことが判断されると、ハードウェアプロテクトキー１の所有者は当該特定ソフトウェアを使用する権限を有しないものと判断し、エラーメッセージを出力する（ステップＳ１９）。以上の動作により、特定ソフトウェアは、正当なハードウェアプロテクトキー１を有しない者の不正な使用から保護される。
【００５８】
ステップＳ１４で、正当であることが判断されると、次に、ドングルデータ中のカンパニーＩＤは正当であるかどうかが調べられる（ステップＳ１５）。具体的には、ＣＰＵ２２は、特定ソフトウェアに含まれているカンパニーＩＤとドングルデータ中のカンパニーＩＤとが一致するかどうかを調べる。ステップＳ１５で正当でないことが判断されると、ハードウェアプロテクトキー１の所有者は当該特定ソフトウェアを使用する権限を有しないものと判断し、エラーメッセージを出力する（ステップＳ１９）。
【００５９】
ステップＳ１５で、正当であることが判断されると、次に、ドングルデータ中の日付回数制限は正当であるかどうかが調べられる（ステップＳ１６）。具体的には、ＣＰＵ２２は、特定ソフトウェアの使用が、ドングルデータ中の日付回数制限データにより指定されている使用可能日付の範囲内であるかどうか及び使用可能回数の範囲内であるかどうかを調べる。
【００６０】
ステップＳ１６で正当でないことが判断されると、ハードウェアプロテクトキー１の所有者は当該特定ソフトウェアを使用する権限を有しないものと判断し、エラーメッセージを出力する（ステップＳ１９）。なお、この実施例では、日付及び回数による使用制限を行うように構成しているが、これらの何れか一方、又はこれら以外の他の使用制限を加えるように構成しても良い。
【００６１】
ステップＳ１６で、正当であることが判断されると、次に、ドングルデータ中のプロダクトＩＤは正当であるかどうかが調べられる（ステップＳ１７）。具体的には、ＣＰＵ２２は、特定ソフトウェアに含まれているプロダクトＩＤとドングルデータ中のプロダクトＩＤとが一致するかどうかを調べる。ステップＳ１６で正当でないことが判断されると、ハードウェアプロテクトキー１の所有者は当該特定ソフトウェアを使用する権限を有しないものと判断し、エラーメッセージを出力する（ステップＳ１９）。
【００６２】
ステップＳ１６で、正当であることが判断されると、ＣＰＵ２２は、ハードウェアプロテクトキー１の所有者は当該特定ソフトウェアを使用する権限を有するものと判断し、特定ソフトウェアの起動又はインストールを実行する（ステップＳ１８）。以上により、ドングルデータの読み出し動作におけるパーソナルコンピュータ２の動作は終了し、特定ソフトウェアは、正当なハードウェアプロテクトキー１を有する者のみが使用可能になる。
【００６３】
なお、この実施例では、シリアルＮｏ．、カンパニーＩＤ、日付回数制限データ及びプロダクトＩＤの全てが正当である場合にのみ特定ソフトウェアを使用できるように構成したが、特定ソフトウェアの提供者の要請に応じて、これらの中の幾つか（少なくとも１つ以上）が正当であれば、特定ソフトウェアを使用できるように構成しても良いる。
【００６４】
次に、ハードウェアプロテクトキー１の動作の詳細を、図７に示すフローチャートを参照しながら説明する。
【００６５】
ハードウェアプロテクトキー１は、キーワードが受信されたかどうかを調べながら待機している（ステップＳ２０）。具体的には、ハードウェアプロテクトキー１のＵＳＢコントローラ１２は、パーソナルコンピュータ２からＵＳＢコネクタ１０及び入出力部１０を経由してキーワードが送られてきたかどうかを調べながら待機している。
【００６６】
この待機状態で、キーワードが受信されると、次に、ドングルデータの読み出しが行われる（ステップＳ２１）。即ち、ＵＳＢコントローラ１２は、メモリ１３からドングルデータを読み出し、図示しない作業バッファに格納する。
【００６７】
次に、暗号化処理が行われる（ステップＳ２２）。この暗号化処理の詳細を、図８に示すフローチャートを参照しながら説明する。暗号化処理では、まず、作業バッファに格納されているドングルデータの先頭から３ビットを抽出し、抽出された３ビットを入力コードとする（ステップＳ３０）。次に、キーワード検索が行われる（ステップＳ３１）。具体的には、入力コードに対応する値がキーワードの中の何段目に存在するかが調べられる。図３に示した例では、入力コードが「０１１」であるとすると、入力コードに対応する値「３」がキーワード中の５段目にあることが認識される。
【００６８】
次いで、データテーブルから暗号コードが取り出される（ステップＳ３２）。即ち、ステップＳ３１で認識された段数（行）にある複数の暗号コードの中から任意の１つが取り出される。図３に示した例では、データテーブルの５段目の行の「３４」、「１０」、・・・といった８個の暗号コードの中から任意の１つ、例えば「４９」が取り出される。
【００６９】
次に、ステップＳ３２で取り出された暗号コードが図示しない送信バッファに格納される（ステップＳ３３）。次に、全てのデータ（ドングルデータ）に対する処理が完了したかどうかが調べられる（ステップＳ３４）。そして、完了していないことが判断されると、シーケンスはステップＳ３０に戻り、以下、上述した処理が繰り返し実行される。
【００７０】
ステップＳ３０〜Ｓ３４の繰り返し実行の過程で、ステップＳ３４において、全てのデータに対する処理が完了したことが判断されると、暗号化処理ルーチンからリターンする。この時点で、複数の暗号コードからなる暗号データが送信バッファに格納されている。
【００７１】
以上の暗号化処理が完了すると、図７に示すように、次に、暗号データの送信が行われる（ステップＳ２３）。即ち、ＵＳＢコントローラ１２は、暗号化処理によって送信バッファ中に得られた暗号コードを入出力部１１及びＵＳＢコネクタ１０を経由してパーソナルコンピュータ２に送信する。以上により、ドングルデータの読み出し動作におけるハードウェアプロテクトキー１の動作は終了する。
【００７２】
次に、パーソナルコンピュータ２からハードウェアプロテクトキー１にドングルデータを書き込む場合の動作を説明する。
【００７３】
図９はドングルデータの書き込み動作の概要を示すシーケンス図である。パーソナルコンピュータ２の特定ソフトウェアには、該特定ソフトウェアに同梱されたハードウェアプロテクトキー１のメモリ１３に格納されているデータテーブルと同じデータテーブルが含まれている。
【００７４】
まず、パーソナルコンピュータ２は、書き込み要求をハードウェアプロテクトキー１に送信する。ハードウェアプロテクトキー１は、この書き込み要求に応答してキーワードを生成し、パーソナルコンピュータ２に送る。
【００７５】
パーソナルコンピュータ２は、ハードウェアプロテクトキー１からキーワードを受信すると、メモリ２３から書込データを読み出す。そして、読み出した書込データを暗号化し、暗号データとしてハードウェアプロテクトキー１に送る。このパーソナルコンピュータ２における暗号化は、上述したハードウェアプロテクトキー１と同様の方法で行われる。
【００７６】
ハードウェアプロテクトキー１は、パーソナルコンピュータ２から受信した暗号データを復号化し、書込データを再生する。そして、再生された書込データを、ドングルデータとしてメモリ１３に書き込む。
【００７７】
以上説明したドングルデータの書き込み動作を行う場合のパーソナルコンピュータ２及びハードウェアプロテクトキー１の各々の詳細な動作を、図１０及び図１１に示すフローチャートを参照しながら説明する。
【００７８】
まず、パーソナルコンピュータ２の動作の詳細を、図１０に示すフローチャートを参照しながら説明する。
【００７９】
パーソナルコンピュータ２は、ドングルデータをハードウェアプロテクトキー１に書き込む必要が生じると、まず、書き込み要求をハードウェアプロテクトキー１に送信する（ステップＳ４０）。即ち、パーソナルコンピュータ２のＣＰＵ２２は、書き込み要求コマンドを生成し、入出力部２１及びＵＳＢコネクタ２０を経由してハードウェアプロテクトキー１に送る。その後、パーソナルコンピュータは、ハードウェアプロテクトキー１からキーワードが受信するのを待って待機状態に入る（ステップＳ４１）。
【００８０】
この待機状態で、ハードウェアプロテクトキー１からＵＳＢコネクタ２０及び入出力部２１を経由してキーワードが受信されると、ＣＰＵ２２は、メモリ２３に格納されているドングルデータを読み出し、ドングルデータの暗号化処理を実行する（ステップＳ４２）。この暗号化処理は、図８に示した手順により行われる。次に、暗号化処理により得られた暗号データがハードウェアプロテクトキー１に送信される（ステップＳ４３）。以上により、ドングルデータの書き込み動作におけるパーソナルコンピュータ２の処理は終了する。
【００８１】
次に、ハードウェアプロテクトキー１の動作の詳細を、図１１に示すフローチャートを参照しながら説明する。
【００８２】
ハードウェアプロテクトキー１は、書き込み要求が受信されたかどうかを調べながら待機状態にある（ステップＳ５０）。具体的には、ハードウェアプロテクトキー１のＵＳＢコントローラ１２は、パーソナルコンピュータ２からＵＳＢコネクタ１０及び入出力部１０を経由して書き込み要求コマンドが送られてきたかどうかを調べながら待機している。
【００８３】
この待機状態で、書き込み要求が受信されると、次に、キーワード生成が行われる（ステップＳ５１）。具体的には、ＵＳＢコントローラ１２は、キーワード発生器１４からキーワードを読み出し、図示しない作業バッファに格納する。次に、キーワード送信が行われる（ステップＳ５２）。即ち、ＵＳＢコントローラ１２は、ステップＳ５１で作業バッファに格納されたキーワードを、入出力部１１及びＵＳＢコネクタ１０を経由してパーソナルコンピュータ２に送る。
【００８４】
その後、ハードウェアプロテクトキー１は、暗号データを受信したかどうかを調べながら待機する（ステップＳ５３）。この待機状態で、暗号データが受信されたことが判断されると、その暗号データを受信バッファに格納した後に復号化処理が実行される（ステップＳ５４）。この復号化処理の詳細を、図１２に示すフローチャートを参照しながら説明する。
【００８５】
復号化処理では、まず、受信バッファに格納されている暗号データの先頭の暗号コードが取り出される（ステップＳ６０）。次に、暗号コードのデータテーブル上における存在位置の検出が行われる（ステップＳ６１）。具体的には、暗号コードがデータテーブルの何段目に存在するかが調べられる。図３に示した例では、暗号コードが「４９」であるとすると、暗号コード「４９」はデータテーブルの５段目に存在することが認識される。
【００８６】
次に、キーワード検索が行われる（ステップＳ６２）。具体的には、データテーブル上の暗号コードが存在する位置に対応するキーワードの位置に格納されている値が取得される。図３に示した例では、暗号コード「４９」が５段目に存在するので、キーワードの５段目に存在する値「３」が取得される。
【００８７】
次に、取得されたキーワードの値が３ビットのデータに変換される（ステップＳ６３）。図３に示した例では、値「３」が３ビットのデータ「０１１」に変換される。次に、ステップＳ６３で得られた３ビットのデータが作業バッファに格納される（ステップＳ６４）。この格納は、既に格納されたデータ（初回は格納されたデータは存在しない）に３ビットのデータを順次連結する方法で行われる。図３に示した例では、「０１１」が作業バッファに格納される。
【００８８】
次に、全ての暗号コードに対する処理が完了したかどうかが調べられる（ステップＳ６５）。そして、完了していないことが判断されると、シーケンスはステップＳ６０に戻り、以下、上述した処理が繰り返し実行される。
【００８９】
ステップＳ６０〜Ｓ６５の繰り返し実行の過程で、ステップＳ６５において、全ての暗号コードに対する処理が完了したことが判断されると、この復号化処理ルーチンからリターンする。この時点で、暗号コード復号されたドングルデータが作業バッファに格納されている。
【００９０】
以上の復号化処理が完了すると、図１１に示すように、次に、ドングルデータの書き込みが行われる（ステップＳ５５）。即ち、ＵＳＢコントローラ１２は、復号化処理によって作業バッファ中に得られたドングルコードをメモリ１３の第１記憶部１３ａに書き込む。以上により、ドングルデータの書き込み動作におけるハードウェアプロテクトキー１の動作は終了する。
【００９１】
以上説明したように、本発明の実施例に係る情報処理システムによれば、ハードウェアプロテクトキー１は、その内部に記憶しているドングルデータを暗号化してパーソナルコンピュータ２に送信すると共に、パーソナルコンピュータ２に送信したキーワードに基づいて暗号化された暗号データをパーソナルコンピュータ２から受信し、復号化してドングルデータとしてメモリ１３に記憶するように構成したので、第三者がパーソナルコンピュータ２上でドングルデータを閲覧することが困難になり、ドングルデータの漏洩に起因するソフトウェアの不正使用を堅固に防止できる。
【００９２】
また、メモリ１３に格納するデータテーブルをカオス理論に基づいて生成された疑似乱数テーブルで構成し、ドングルデータの暗号化及び暗号データの復号化をカオスブロック暗号アルゴリズムを用いて行うように構成したので、カオスストリーム暗号アルゴリズムのように疑似乱数を計算する時間が不要になり、高速にドングルデータの暗号化及び復号化を行うことができる。
【００９３】
なお、上述した実施例では、メモリ１３に格納されるデータテーブルは、８バイト（行）×８バイト（列）のカオス系列の擬似乱数から構成したが、行及び列の数は任意である。例えば、データテーブルは、１６バイト（行）×１６バイト（列）のカオス系列の擬似乱数から構成しても良い。この場合、キーワードは１６バイトから構成され、この１６バイトは、それぞれ異なる値（０〜１５）を有する。また、入力コードは４ビットのコードになる。
【００９４】
また、上述した実施例では、メモリ１３内のドングルデータの読み出し及び書き込みについて説明したが、更に、メモリ１３内のデータテーブルの読み出し及び書き込みを行うように構成しても良い。この場合、ＵＳＢコントローラ１２の内部の図示しないＲＯＭに格納されているデフォルトデータテーブルを使用して暗号化及び復号化が行われる。デフォルトデータテーブルは、メモリ１３に格納されているデータテーブルと同様に、カオス理論に基づいて生成された疑似乱数テーブルからなり、暗号化及び復号化は、カオスブロック暗号アルゴリズムを用いて行われる。
【図面の簡単な説明】
【００９５】
【図１】本発明の実施例に係る情報処理システムの構成を示すブロック図である。
【図２】本発明の実施例に係る情報処理システムのハードウェアプロテクトキーに含まれるメモリの構成を示す図である。
【図３】本発明の実施例に係る情報処理システムで使用されるカオスブロック暗号を説明するための図である。
【図４】本発明の実施例に係る情報処理システムで使用されるデータテーブルを作成するためのロジスティック写像カオスの時系列波形を示す図である。
【図５】本発明の実施例に係る情報処理システムにおけるドングルデータの読み出しを説明するためのシーケンス図である。
【図６】本発明の実施例に係る情報処理システムにおけるドングルデータの読み出し時のパーソナルコンピュータの動作を説明するためのフローチャートである。
【図７】本発明の実施例に係る情報処理システムにおけるドングルデータの読み出し時のハードウェアプロテクトキーの動作を説明するためのフローチャートである。
【図８】本発明の実施例に係る情報処理システムにおける暗号化処理を説明するためのフローチャートである。
【図９】本発明の実施例に係る情報処理システムにおけるドングルデータの書き込みを説明するためのシーケンス図である。
【図１０】本発明の実施例に係る情報処理システムにおけるドングルデータの書き込み時のパーソナルコンピュータの動作を説明するためのフローチャートである。
【図１１】本発明の実施例に係る情報処理システムにおけるドングルデータの書き込み時のハードウェアプロテクトキーの動作を説明するためのフローチャートである。
【図１２】本発明の実施例に係る情報処理システムにおける復号化処理を説明するためのフローチャートである。
【符号の説明】
【００９６】
１  ハードウェアプロテクトキー
２  パーソナルコンピュータ
３  入力部
４  表示部
１０、２０  ＵＳＢコネクタ
１１、２１  入出力部
１２  ＵＳＢコントローラ
１３、２３  メモリ
１３ａ  第１記憶部
１３ｂ  第２記憶部
１４  キーワード発生器
２２  ＣＰＵ
【図１】
2005050160.tif 000003
【図２】
2005050160.tif 000004
【図３】
2005050160.tif 000005
【図４】
2005050160.tif 000006
【図５】
2005050160.tif 000007
【図６】
2005050160.tif 000008
【図７】
2005050160.tif 000009
【図８】
2005050160.tif 000010
【図９】
2005050160.tif 000011
【図１０】
2005050160.tif 000012
【図１１】
2005050160.tif 000013
【図１２】
2005050160.tif 000014