(57)【要約】【課題】従来技術の難点を克服することができるデータ保護システムおよび方法を提供すること。【解決手段】認証システムは、PINを用いてアクセスすることができるトークン(1)に基づくものであり、保護するデータへのアクセスを、認証する、または拒否することができるように構成されており、トークンが有する記憶装置は、英数字の情報項目(I1〜IN)およびこれらの情報項目の間に置かれたランダムな英数字のデータ項目(RBx、y)を含んでいる配列(100)と、配列におけるそれぞれの位置において各情報項目に対するアクセスを可能にするように、配列の中の情報項目(I1〜IN)の配置に関する情報および各ランダムデータ項目のバイトでのサイズに関する情報を含んでいる暗号化されたタイプのシール方式ベクトル(SS)とを記憶する。【選択図】図3
2013251897.tif 000002
【特許請求の範囲】
【請求項１】
保護される情報に対するアクセスを認証するための認証システムであって、個人識別番号によってアクセス可能な非公開記憶エリア(4a)を含む記憶装置(4)を有するハードウェアのトークン(1)を備え、前記非公開記憶エリア(4a)が、
-  数値および/または英数字および/または英字のタイプの複数の第1の情報項目(I1〜IN)と、
-  それぞれがそれぞれのサイズを有する、数値および/または英数字および/または英字のタイプの複数の第1のランダムデータ項目(RBx、y)とを記憶し、
前記第1の情報項目(I1〜IN)および前記第1のランダムデータ項目(RBx、y)が少なくとも1つの読込み順序を有し、それぞれの第1の情報項目(I1〜IN)が、前記第1のランダムデータ項目(RBx、y)のうちの1つによって、前記読込み順序で、連続した第1の情報項目(I1〜IN)から分離されるように、配列(100)の中に配置されており、
前記非公開記憶エリア(4a)が、前記配列(100)の第1の情報項目(I1〜IN)のそれぞれに対するアクセスを許可するために、前記配列(100)の中に、前記第1の情報項目(I1〜IN)の第1の相対的配置情報およびそれぞれの第1のランダムデータ項目(RBx、y)の第1のサイズ情報を含んでいる暗号化されたタイプの第1のシール方式ベクトル(SS)をさらに記憶し、前記認証システムが、
-  前記個人識別番号の挿入を、前記非公開記憶エリア(4a)へのアクセスの条件とし、
-  前記第1のシール方式ベクトルを解読して、前記配列(100)の中の、前記第1の情報項目(I1〜IN)の前記第1の相対的配置情報と、それぞれの第1のランダムデータ項目(RBx、y)の前記第1のサイズ情報とを取得し、
-  前記取得した第1の相対的配置情報と前記配列(100)の中の前記第1の情報項目(I1〜IN)の配置の間の対応、および、前記取得した第1のサイズ情報と前記配列(100)の中の前記第1のランダムデータ項目の前記サイズの間の対応をチェックし、
-  前記取得した第1の相対的配置情報と前記配列(100)の中の前記第1の情報項目(I1〜IN)の配置の間、および前記取得した前記第1のサイズ情報と前記第1のランダムデータ項目(RBx、y)のそれぞれのサイズの間の、前記対応のチェックの結果に基づいて、前記保護される情報に対するアクセスを認証する、または拒否するようにさらに構成される認証システム。
【請求項２】
前記認証が拒否された場合には、
-  前記第1の情報項目(I1〜IN)の第2の相対的配置情報および第2のランダムデータ項目(RBx、y)の第2のサイズ情報を含む、暗号化されたタイプの第2のシール方式ベクトルを生成し、
-  前記配列(100)の中の前記第1の情報項目(I1〜IN)を、前記第2の相対的配置情報に基づいて、それぞれの第1の情報項目(I1〜IN)が、連続した第1の情報項目(I1〜IN)から、前記第2のサイズ情報に一致するサイズを有するそれぞれの第2のランダムデータ項目(RBx、y)によって前記読込み順序で分離されるように配置し、
-  保護される前記情報にアクセスするための前記認証のさらなる授与を、前記第1のシール方式ベクトルを解読して、前記第1の相対的配置情報および前記第1のサイズ情報を取得し、前記取得した第1の相対的配置情報と前記配列(100)の中の前記第1の情報項目(I1〜IN)の配置の間の対応、および、前記取得した第1のサイズ情報と前記配列(100)の中の前記第1のランダムデータ項目の前記サイズの間の対応をチェックすることにかけるようにさらに構成される請求項1に記載の認証システム。
【請求項３】
前記認証が拒否された場合には、
-  それぞれの数値、英数字、または英字の値(J1〜JN)をそれぞれ有する第2の情報項目(I1〜IN)を取得し、
-  それぞれが、それぞれの数値、英数字、または英字の値、およびそれぞれのサイズを有する複数の第2のランダムデータ項目(RBx、y)を生成し、
-  前記の第2の情報項目(I1〜IN)の第2の相対的配置情報および前記第2のランダムデータ項目(RBx、y)の第2のサイズ情報を含む、暗号化されたタイプの第2のシール方式ベクトル(SS)を生成し、
-  前記配列(100)の中の前記第2の情報項目(I1〜IN)を、前記第2の相対的配置情報に基づいて、それぞれの第2の情報項目(I1〜IN)が、連続した第2の情報項目(I1〜IN)から、前記第2のサイズ情報に一致するサイズを有するそれぞれの第2のランダムデータ項目(RBx、y)によって前記読込み順序で分離されるように配置し、
-  保護される前記情報にアクセスするための前記認証のさらなる授与を、前記第2のシール方式ベクトルを解読して、前記第2の相対的配置情報および前記第2のサイズ情報を取得し、前記取得した第2の相対的配置情報と前記配列(100)の中の前記第2の情報項目(I1〜IN)の配置の間の対応、および、前記取得した第2のサイズ情報と前記配列(100)の中の前記第2のランダムデータの前記サイズの間の対応をチェックすることにかけるようにさらに構成されている請求項1に記載の認証システム。
【請求項４】
前記第1の情報項目(I1〜IN)が、固定タイプのデータおよび/または可変タイプのデータを含む請求項1から3のいずれか一項に記載の認証システム。
【請求項５】
前記第1の情報項目(I1〜IN)の第1の相対的配置情報が、前記第1のシール方式ベクトル(SS)の中で、ランダムな順序で互いの後に続く、請求項1から4のいずれか一項に記載の認証システム。
【請求項６】
前記第1の情報項目(I1〜IN)の前記第1の相対的配置情報項目が互いの後に続く前記ランダムな順序が、前記第1の情報項目(I1〜IN)の前記第1の相対的配置情報のランダムな回数の置換によって達成される請求項5に記載の認証システム。
【請求項７】
前記置換を遂行するステップが、
(i)前記第1の情報項目(I1〜IN)の中で選択された1つの初期情報項目の位置と前記第1の情報項目(I1〜IN)の別の位置を交換するステップと、
(ii)前記第1の情報項目(I1〜IN)の中で選択された2つ以上の情報項目の位置を交換するステップであって、これらの位置が、前記配列(100)の中で、前記交換操作(i)に先立って前記初期情報項目が割り当てられた位置の後にあるステップとを含む請求項6に記載の認証システム。
【請求項８】
前記第1の情報項目(I1〜IN)の数がN個であり、前記交換操作(i)がB回遂行され、BはN!・(N+1)!の除数でないように無作為に選択された数である請求項7に記載の認証システム。
【請求項９】
前記交換操作(i)および(ii)がM回繰り返され、MがNより大きい整数値である請求項8に記載の認証システム。
【請求項１０】
前記第2のシール方式ベクトルを生成するように、前記第1のシール方式ベクトル(SS)の前記第1の情報項目(I1〜IN)の前記第1の相対的配置情報の1回または複数回の置換を遂行するように構成された請求項1から9のいずれか一項に記載の認証システム。
【請求項１１】
暗号化アルゴリズムによって生成された第1の暗号キー(kS)を用いて前記配列(100)を暗号化するようにさらに構成されている請求項1から10のいずれか一項に記載の認証システム。
【請求項１２】
前記第1の暗号キー(kS)が、前記記憶装置(4)の前記非公開記憶エリア(4a)に記憶される請求項11に記載の認証システム。
【請求項１３】
前記第1および第2のシール方式ベクトル(SS)が、暗号化アルゴリズムによって生成されたそれぞれの第2の暗号キー(kV)によって暗号化される請求項1から12のいずれか一項に記載の認証システム。
【請求項１４】
前記第2の暗号キー(kV)が、前記記憶装置(4)の前記非公開記憶エリア(4a)に記憶される請求項13に記載の認証システム。
【請求項１５】
前記ハードウェアトークン(1)が予期されたハードウェアトークンに一致するかどうかチェックするようにさらに構成されている請求項1から14のいずれか一項に記載の認証システム。
【請求項１６】
前記配列(100)の中の前記第1の相対的配置情報と、前記第1の情報項目(I1〜IN)の配置の間の一致をチェックするステップが、前記配列(100)の中の前記第1の情報項目(I1〜IN)の値(J1〜JN)のそれぞれの期待値との整合性と、それぞれの第1の情報項目(I1〜IN)のサイズと、その第1の情報項目(I1〜IN)に対して予期されたサイズ間の一致との少なくとも1つを確認するステップを含む請求項1から15のいずれか一項に記載の認証システム。
【請求項１７】
前記ハードウェアトークンの製造番号が、予期された製造番号に一致するかどうかチェックするのに、前記非公開記憶エリア(4a)へのアクセスを条件とするようにさらに構成されている請求項1から16のいずれか一項に記載の認証システム。
【請求項１８】
保護される情報に対するアクセスを認証するための認証方法であって、
-  数値および/または英数字および/または英字のタイプの複数の第1の情報項目(I1〜IN)を取得するステップと、
-  それぞれがそれぞれのサイズを有する、数値および/または英数字および/または英字のタイプの複数の第1のランダムデータ項目(RBx、y)を生成するステップと、
-  前記第1の情報項目(I1〜IN)および前記第1のランダムデータ項目(RBx、y)が少なくとも1つの読込み順序を有し、それぞれの第1の情報項目(I1〜IN)が、前記第1のランダムデータ項目(RBx、y)のうちの1つによって、前記読込み順序で、連続した第1の情報項目(I1〜IN)から分離されるように、配列(100)の中で配置されるステップと、
-  前記配列(100)の第1の情報項目(I1〜IN)のそれぞれに対するアクセスを許可するために、前記配列(100)の中に、前記第1の情報項目(I1〜IN)の第1の相対的配置情報およびそれぞれの第1のランダムデータ項目(RBx、y)の第1のサイズ情報を含む、暗号化されたタイプの第1のシール方式ベクトル(SS)を生成するステップと、
-  (i)個人識別番号を入力し、(ii)前記第1のシール方式ベクトルを解読して、前記第1の相対的配置情報および前記第1のサイズ情報を取得し、(iii)前記取得した第1の相対的配置情報と前記配列(100)の中の前記第1の情報項目(I1〜IN)の配置の間の対応、および、前記取得した第1のサイズ情報と前記配列(100)の中の前記第1のランダムデータ項目の前記サイズの間の対応をチェックするように保護される前記情報にアクセスするのに、認証の授与を条件とするステップと、
-  前記一致のチェックが肯定的であれば前記認証を授与するステップとを含む方法。
【請求項１９】
前記認証が拒否された場合には、
-  前記第1の情報項目(I1〜IN)の第2の相対的配置情報および前記第2のランダムデータ項目(RBx、y)の第2のサイズ情報を含む、暗号化されたタイプの第2のシール方式ベクトルを生成するステップと、
-  前記配列(100)の中の前記第1の情報項目(I1〜IN)を、前記第2の相対的配置情報に基づいて、それぞれの第1の情報項目(I1〜IN)が、連続した第1の情報項目(I1〜IN)から、前記第2のサイズ情報に一致するサイズを有するそれぞれの第2のランダムデータ項目(RBx、y)によって前記読込み順序で分離されるように配置するステップと、
-  保護される前記情報にアクセスするための前記認証のさらなる授与を、前記第1のシール方式ベクトルを解読して、前記第1の相対的配置情報および前記第1のサイズ情報を取得し、前記取得した第1の相対的配置情報と前記配列(100)の中の前記第1の情報項目(I1〜IN)の配置の間の対応、および、前記取得した第1のサイズ情報と前記配列(100)の中の前記第1のランダムデータ項目の前記サイズの間の対応をチェックすることにかけるステップとをさらに含む請求項18に記載の認証方法。
【請求項２０】
前記認証が拒否された場合には、
-  数値および/または英数字および/または英字のタイプの第2の情報項目(I1〜IN)を取得するステップと、
-  それぞれがそれぞれのサイズを有する、数値および/または英数字および/または英字のタイプの複数の第2のランダムデータ項目(RBx、y)を生成するステップと、
-  前記第2の情報項目(I1〜IN)の第2の相対的配置情報および前記第2のランダムデータ項目(RBx、y)の第2のサイズ情報を含んでいる、暗号化されたタイプの第2のシール方式ベクトルを生成するステップと、
-  前記配列(100)の中の前記第2の情報項目(I1〜IN)を、前記第2の相対的配置情報に基づいて、それぞれの第2の情報項目(I1〜IN)が、連続した第2の情報項目(I1〜IN)から、前記第2のサイズ情報に一致するサイズを有するそれぞれの第2のランダムデータ項目(RBx、y)によって前記読込み順序で分離されるように配置するステップと、
-  保護される前記情報にアクセスするのに、前記認証のさらなる授与を、前記第2のシール方式ベクトルを解読して、前記第2の相対的配置情報および前記第2のサイズ情報を取得し、前記取得した第2の相対的配置情報と前記配列(100)の中の前記第2の情報項目(I1〜IN)の配置の間の対応、および、前記取得した第2のサイズ情報と前記配列(100)の中の前記第2のランダムデータ項目の前記サイズの間の対応をチェックすることにかけるステップをさらに含む請求項18に記載の認証方法。
【請求項２１】
前記複数の第1の情報項目(I1〜IN)を取得するステップが、固定タイプのデータおよび/または可変タイプのデータを取得するステップを含む請求項18〜20のいずれか一項に記載の認証方法。
【請求項２２】
前記第1のシール方式ベクトル(SS)を生成するステップが、前記第1の情報項目(I1〜IN)の前記第1の相対的配置情報をランダムな順序に配置するステップを含む請求項18〜21のいずれか一項に記載の認証方法。
【請求項２３】
前記第1の情報項目(I1〜IN)の前記第1の相対的配置情報をランダムな順序に配置するステップが、前記第1の情報項目(I1〜IN)の前記第1の相対的配置情報に対するランダムな回数の置換を遂行するステップを含む請求項22に記載の認証方法。
【請求項２４】
前記置換を遂行するステップが、
(i)前記第1の情報項目(I1〜IN)の中で選択された1つの初期情報項目の位置と前記第1の情報項目(I1〜IN)の別の位置を交換するステップと、
(ii)前記第1の情報項目(I1〜IN)の中で選択された2つ以上の情報項目の位置を交換するステップであって、これらの位置が、前記配列(100)の中で、前記交換するステップ(i)に先立って前記初期情報項目が割り当てられた位置の後にあるステップとを含む請求項23に記載の認証方法。
【請求項２５】
前記第1の情報項目(I1〜IN)の数がN個であり、前記交換するステップ(i)がB回遂行され、BはN!・(N+1)!の除数でないように無作為に選択された数である請求項24に記載の認証方法。
【請求項２６】
前記前記交換するステップ(i)および(ii)がM回繰り返され、MがNより大きい整数値である請求項25に記載の認証方法。
【請求項２７】
前記第1の相対的配置情報のランダムな順序付けを生成するように、前記第1のシール方式ベクトル(SS)の前記第1の情報項目(I1〜IN)の前記第1の相対的配置情報の置換を、ランダムな回数だけ遂行するステップをさらに含む請求項18〜26のいずれか一項に記載の認証方法。
【請求項２８】
暗号化アルゴリズムによって生成された第1の暗号キー(kS)を用いて前記配列(100)を暗号化するステップをさらに含む請求項18〜27のいずれか一項に記載の認証方法。
【請求項２９】
前記第1のシール方式ベクトル(SS)が、暗号化アルゴリズムによって生成された第2の暗号キー(kV)を用いて暗号化される請求項18〜28のいずれか一項に記載の認証方法。
【請求項３０】
前記第2のシール方式ベクトル(SS)が、暗号化アルゴリズムによって生成された第3の暗号キー(kV)を用いて暗号化される請求項19または20に記載の認証方法。
【請求項３１】
前記配列(100)の中の前記第1の取得された相対的配置情報と、前記第1の情報項目(I1〜IN)の配置の間の一致をチェックするステップが、前記配列(100)の中の前記第1の情報項目(I1〜IN)の値(J1〜JN)のそれぞれの期待値との整合性と、それぞれの第1の情報項目(I1〜IN)のサイズと、その第1の情報項目(I1〜IN)に対して予期されたサイズの間の一致との少なくとも1つを確認するステップを含む請求項18〜30のいずれか一項に記載の認証方法。
【請求項３２】
実行されたとき、処理手段(1、6)を、請求項18〜31のいずれか一項による方法を遂行するように構成するように設計された、前記処理手段にロード可能なコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報データを保護するシステムおよび方法に関し、具体的には、情報データにアクセスするための認証をチェックして授与するシステムおよび方法に関する。
【背景技術】
【０００２】
既知のデータ保護方法、具体的には、保護された情報に対するアクセスを認証する方法、および/または使用するのにライセンスが必要なコンピュータプログラム(ソフトウェア)の実行を許可する方法がある。
【０００３】
既知の方法は、ユーザに未知であって、当のソフトウェアを使用するためのライセンスを購入することにより入手可能なキーの使用を企図する。この方法には、このキーの不正な複製が可能であるため、このキーについて知っている無許可のユーザがソフトウェアを使用できてしまう、という難点がある。
【０００４】
他の方法は、ユーザに未知のアルゴリズムに基づいて、一般に数値のフォーマットでパスワードを生成することができるトークンと称される装置の使用を企図する。一般に、2因子認証方式では、このパスワードは、複製が容易でないように、時間(例えば時間、日付など)とともに変化するパラメータに左右される値に加えて、ユーザが選択する既知の部分(個人識別番号、またはより簡単にはPINとして知られている)を想定する。この方法には、誰もがその時間を知っていて、ユーザが、通常は、覚えておくのが簡単なPINを選択する(実際には、PINは、ユーザの生年月日、子供の名前などが選択されることが多い)、という難点がある。このタイプの方式によって与えられた保護を、大幅に弱めるさまざまなタイプの既知の攻撃がある。
【０００５】
他の既知の方法は、ソフトウェアの全ての部分をトークンに記憶するステップを含むが、このやり方は、これらの部分にアクセスし、コンパイルして、次いで実行する必要があるという事実に関連して、ソフトウェアの実行速度に影響を及ぼす。その結果、チェックが実行されるのは、通常、ソフトウェアの起動段階のみであって、ソフトウェアが使用される期間のすべてではない。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、従来技術の難点を克服することができるデータ保護システムおよび方法を提供することである。
【課題を解決するための手段】
【０００７】
より詳細には、この認証システムは、PINを用いてアクセスすることができるトークンに基づくものであり、保護する情報へのアクセスを、認証する、または拒否するように構成されており、トークンが有する記憶装置は、数値情報項目および/または英数字の情報項目および/または英字情報項目を含む配列、ならびに同配列を読み出す順序における直接連続した情報項目の間に挟まれたランダムな数値データおよび/または英数字のデータおよび/または英字データと、配列におけるそれぞれの位置において各情報項目に対するアクセスを可能にするように、配列の中の情報項目の配置に関する情報および各ランダムデータ項目のサイズ(一般的にはバイトで表される)に関する情報を含んでいる暗号化されたシール方式ベクトル(またはシール方式配列)とを記憶する。認証システムは、正確なPIN入力に対して、トークンにアクセスし、シール方式ベクトルを解読し、シール方式ベクトルから、情報項目の配置情報および各ランダムデータ項目が占める空間についての情報を取得し、取得した配置情報と配列の中の情報項目の有効な配置の間の対応、および取得したサイズ情報とランダムデータの有効サイズの間の対応をチェックし、以前のチェックの結果に基づいて保護される情報に対するアクセスを認証する、または拒否するように構成されている。
【０００８】
本発明によれば、添付の特許請求の範囲に定義されるように、データ保護システムおよび方法が提供される。
【０００９】
次に、本発明のよりよい理解のために、いくつかの好ましい実施形態を、純粋に非限定的な例によって、添付図面を参照しながら説明する。
【図面の簡単な説明】
【００１０】
【図１】認証キーを生成するための装置、すなわちトークンを示す概略図である。
【図２】図1のトークンに動作可能に接続するのに適切な、それ自体が既知のタイプのコンピュータを示す図である。
【図３】本発明の一実施形態によるデータ保護方法のステップを示す流れ図である。
【図４】図3の方法のステップ10および12によって符号化された複数のデータ項目/情報項目を備える配列を示す図である。
【図５】図4の配列を別の図表形式によって示す図である。
【図６】図3の方法のサブステップを示す流れ図である。
【図７】図3の方法のさらなるサブステップを示す流れ図である。
【図８】本発明によるデータ保護方法のさらなるステップを示す流れ図である。
【発明を実施するための形態】
【００１１】
本説明は、データを保護するシステムおよび方法に関し、具体的には、電子データを暗号で書く、または暗号化するシステムおよび方法に関する。
【００１２】
より詳細には、本発明によって提供される保護のレベルは、例えば数値フォーマット、英字フォーマットまたは英数字のフォーマットで、疑似ランダムの認証コードを生成することができる認証装置すなわちトークンを含む物理レベルと、コンピュータプログラムによって遂行される暗号化のステップを含むソフトウェアレベルとからなる。
【００１３】
図1に参照数字1で概略的に示されている認証トークンは、ユーザーリクエストに対して、特定のアルゴリズムに従って疑似ランダムの認証コードを生成することができる既知のタイプのマイクロプロセッサ2を備え、これは、例えば認証トークン1の製造番号、現在の日付値、認証トークン1の内部のクロックによって定義された時間値または他の因子など、複数の因子を考慮に入れることができる。この値は、ハードウェアによって時間ベースのアルゴリズムで生成され、様々なトークン製造業者間で異なり得る。一般に、疑似ランダムの認証コードがトークンによって生成される様子は開示されておらず、各トークンサプライヤは所有権付きアルゴリズムを採用する。本発明によるこの方法は、この認証コードを生成する方法には無関係であるため、本明細書でこの方法をさらに説明することはない。
【００１４】
認証トークン1は、例えばフラッシュ型メモリといった、マイクロプロセッサ2に接続されている記憶装置4も備える。
【００１５】
認証コードを生成するためのプログラムは、認証トークン1の記憶装置4に、具体的には、キーワードまたはPIN(個人識別番号)によってアクセス可能な機密データを記憶するのに使用される、記憶装置4の非公開エリア4aに存在する。記憶装置4の公開エリア4bは、公開性の非機密情報の認証を記憶することができる。
【００１６】
PINは自動的に生成され、エンドユーザに利用可能ではない。インストールの際に、またはソフトウェアを最初に実行するとき、ユーザは、PINの利用のロックを解除する、自分が好むパスワードを選択するように促されて、ハッシュ(すなわちデータベースにおける、非可逆の、または「困難さを伴う」可逆の動作結果)を保存する。
【００１７】
記憶装置4の非公開エリア4aは、隠されたタイプ(ユーザが、その存在に気づかない)、またはユーザに見えるが、アクセスはキーワードまたはパスワードによって保護されているタイプであり得る。このパスワードは、サプライヤよって生成されたシードレコードおよびトークン管理者(セキュリティ管理者として知られている)の認証を有することを条件として、変更することができ、この認証は、一般的には変更可能で上書き不可能な、別のパスワードによって保護されており、同パスワードは、所定の値に設定されて、安全な記憶位置に保存されている。
【００１８】
記憶装置4の非公開エリア4aは、以下でよりよく説明されるように、暗号化の方法のステップ中に用いられる複数のデータおよび/または情報を記憶するのに用いることができる。
【００１９】
一実施形態では、認証トークン1は、コンピュータ6(図2)に接続され得て、その結果、認証トークン1とコンピュータ6の間で情報を交換することができる。例えば、認証トークン1は、コンピュータ6への接続のために、USBポートを装備することができるであろう。
【００２０】
以下で、無許可のユーザがプレインテキストに含まれる情報にアクセスするのを防止するために符号化することが望まれるプレインテキストが参照される。
【００２１】
図3を参照すると、本発明の一実施形態による暗号化方法のステップを含む流れ図が示されている。
【００２２】
本発明によれば、自由裁量で選択され、ランダム方式によって暗号化されている、複数のデータおよび情報を含む「シール」が生成される。このシールの暗号解読および読取りは、1つまたは複数のさらなるアクティビティを認証する、または拒否するのに必須のことである。
【００２３】
好ましい用途によれば、このシールの暗号解読および読取りは、ソフトウェアプログラムの実行を認証する、またはこのソフトウェアプログラムの使用ライセンスを取得するのに必須のことである。したがって、本発明のこの方法による暗号化ステップが目的とするのは、実行されるソフトウェアプログラムの暗号化ではなく、このソフトウェアプログラムを実行する認証を取得するのに、その読取りが必須となる暗号化されたシールの生成である。
【００２４】
図3によるこの方法は、プレインテキストからシールが生成されて、記憶装置4の非公開エリア4aに書き込まれる、初期設定ステップ(ステップ10および12)と、さらなる保護レベルを保証するために、ステップ10および12において生成されたシールを暗号化するのに、既知のタイプの暗号化の方法(例えばRSA、AES、DESまたは他のものから選択された既知の方法)が用いられる暗号化ステップ(ステップ14および16)とを含む。
【００２５】
シールは、データおよび/または、以下でよりよく説明されるように、このデータを配列に配置するプレインテキストを構成する情報に基づいて生成される。それに加えて、シールの、ビットで表されるサイズは、ステップ14および16で用いられる暗号化アルゴリズムに適合し(例えば128ビット、196ビット、もしくは256ビットの長さ、または他のいくらかのサイズ)、また、ランダムデータで満たされる十分な「空き」スペースを残すものである。
【００２６】
プレインテキストは、複数のデータ、および/または固定タイプの情報(値または情報量が経時的に変化しないもの)、および/または可変タイプの情報(別々の瞬間で考えると値または情報量が同一でないもの)を含むことができる。固定データには、例えば、数字、英字および/または英数字の形式の所定の識別コード、あるいは、例えば、ソフトウェアの商品名またはコード名、ソフトウェアメーカの名前、ソフトウェアのカレントユーザに関する進行性のライセンス番号、カスタマ名および/または識別コード、初期設定日、トークンの製造番号、(複数のモジュールから成るソフトウェアの場合)作動させるべきソフトウェアモジュールおよび関連するライセンスのパスワード/コードならびに他の任意選択のデータのうち1つまたは複数などといった他のいくつかのフォーマットが含まれる。
【００２７】
可変データには、例えば、現在の日付、現在の時間、または所定の状態または計画されていない状態に基づいて可変値をとることができる他のデータに関する値が含まれる。
【００２８】
可変フィールドに関して、それらの内容の正確さが「予約によって」チェックされる。換言すれば、ソフトウエアコンポーネントは、時間t0に書き込まれた時間値を与えられると、「x」秒の経過後に、時間値が時間t0+xであることをチェックする(数百ミリ秒程度の公差をプラスまたはマイナスする)。値t0は、日付/時間の値が書き込まれた瞬間であり、「x」は、ソフトウェアによって、自由に選択された一様分布に従って、瞬間的に、かつランダムに求められた可変のオフセットであり、その限界は、通常、数十秒/数十分程度の最小値と最大値の間に規定されている。
【００２９】
以後の説明では、固定または可変の各データ項目は単一の「項目」と見なされ、参照I1、I2、I3、...、INによって示される。このタイプのI1〜INの複数N個の項目が、N個の項目I1〜INを含む組(ベクトルIの形で構成されている)を形成する。
I={I1、I2、I3、I4、I5、...、IN}
【００３０】
前述のように、本発明の用途の1つは、ソフトウェアプログラムの実行を認証する、もしくは拒否すること、またはこのソフトウェアプログラムの使用ライセンスを得ることである。この場合、ベクトルIのコピーが、ソフトウェアプログラムのユーザがアクセスできないやり方で、ソフトウェアプログラムに保存される。
【００３１】
それらのデジタルフォーマット形式(論理値「1」または「0」を有する一連のビット)で考えると、N個の項目I1〜INの組の各項目I1〜INが、複数のビットおよび/またはバイトとして測定可能な、それ自体の長さL(i)を有し、1バイトは8ビットのグループである。この場合、「i」は、1からNの値をとり、したがって、L(1)はベクトルIの1番目の項目の長さであり、L(2)はベクトルIの2番目の項目の長さであり、以下同様に、L(N)はベクトルIのN番目(最後)の項目の長さである。
【００３２】
さらに、各項目I1〜INは、そのそれ自体の値J(i)、すなわちJ1〜JNを有する。例えば、項目I1〜INが日付であると、この項目の値J(i)は、例えば日/月/年フォーマットの実際の日付である。項目I1〜INがソフトウェアメーカの名前であると、その項目の値J(i)は製造業者の名前であり、以下同様である。したがって、各項目I1〜INについて、値J(i)は、差別なく数値、英数字または英字の値を有する。
【００３３】
前述の項目I1〜INは、行x（x=x1、x2、...、xR）のそれぞれの列y（y=y1、y2、...、yC）に対する交点によって定義される複数M個のフィールドを有する配列100に構成される。配列100は、図4に図を用いて表されている。N個の項目I1〜INそれぞれが、配列100のそれぞれのフィールド(x、y)を占める。配列100は、M=xR・yCに等しくNより大きい複数のフィールドを有する。具体的には、Mの値は、項目I1〜INが、互いに直接連続しないそれぞれのフィールド(x、y)に記憶され、また、選択された暗号化アルゴリズムをサポートするように選択される。換言すれば、フィールドは、配列100の行に沿って直接続き、項目I1〜INを含んでいるフィールドは、項目I1〜INの別のものは含まない。
【００３４】
すべての項目I1〜INが配列100に書き込まれると、配列100の残された空のフィールド(x、y)は、既知のタイプの乱数発生器によってランダムに生成されたバイトで満たされる。このように、各項目I1〜INは、1つまたは複数のランダムバイトにより、他の項目I1〜INから分離される。
【００３５】
図4では、ランダムバイトはRBx、yで示されており、添え字x、yは、ランダムバイトが書き込まれているフィールドの、対応する行xの値および対応する列yの値をとる。例えば1つまたは複数のランダムバイトRB1、1は、第1の行x=x1および第1の列y=y1によって識別されるフィールドに記憶される。同様に、1つまたは複数のランダムバイトRB2、2は、第2の行x=x2および第2の列y=y2によって識別されるフィールドに記憶される。
【００３６】
常に図4を参照して、項目I1は、第1の行x=x1および第2の列y=y2に対応するフィールドを占め、I11、2として示され、同様に、項目I2は第2の行x=x2および第1の列y=y1に対応するフィールドを占め、I22、1として示され、以下同様である。
【００３７】
図3に示され得るように、(行x1〜xRに沿った系列で考えたとき)項目I1〜INのそれぞれの間と、配列100の最初の項目I1の前と、配列100の最後の項目INの後とに、ランダムバイトRBx、yが挿入される。換言すれば、この実施形態によると、配列100の最初のフィールドおよび配列100の最後のフィールドの両方が、ランダムバイトRBx、yを含む。
【００３８】
各項目I1〜INの長さと、それぞれの一連のランダムバイトRBx、yの長さとは、バイトで表された任意の長さを有し得ることが明らかである。配列100のフィールドx、yは、互いに異なるものであり、別々のバイト数を含むことができる。この状況は、図5の図表による例として示されており、ランダムバイトはハッチングラインで満たされたフィールドで図示され、項目I1〜INはブランクフィールドで図示されている。
【００３９】
一実施形態では、配列100の各フィールド(x、y)は、M個以下の識別番号によって明白に識別され、逆の場合も同じである。配列100の各フィールドに対する識別番号の対応は、例えば配列100を各行xに沿って漸進的に渡ることにより遂行され、その結果、番号「1」がフィールド(x=1、y=1)に対応し、番号「2」がフィールド(x=1、y=2)に対応し、以下同様であって、番号「M」がフィールド(x=xR、y=yC)に対応する。任意の他の対応が可能であることも明らかである。
【００４０】
図3に戻って、ステップ10には、配列100に項目I1〜INを挿入する必要のある相互の順番を識別するN個の整数値の組VIを定義するステップが含まれる。この順番は、例えば配列100の最初のフィールドから始まって各行xを渡るものと考えられる。しかし、任意の他の順番を選択することができる。
【００４１】
図4に示されるように、各項目I1〜INは、一連のランダムバイトRBx、yを含んでいる配列100のフィールド(x、y)により、他の項目I1〜INから分離される。このために、図3のステップ10において、N+1個の乱数の組VRBが生成され、これらの数のそれぞれにより、項目I1〜INのセパレータとして配列100に挿入する必要のある、それぞれの系列RBx、yのバイトで表された長さが識別される。
【００４２】
したがって、組VI(ベクトル)が、項目I1〜INを配列100に挿入する順番を識別し、組VRB(ベクトル)が、1つの項目I1〜IN-1と次の項目I2〜INの間に(配列100の最初と最後にも)挿入する必要のある各ブロックRBx、yの長さを識別する。ベクトルVIおよびVRBは、次の形式(シール方式ベクトルSSに示された数値は、可能な実施形態の例であり、限定するものではない)を有するシール方式ベクトルSSに保存される
SS={VI;  VRB}={1、2、3、4、...;  23、4、46、5、11、...}。
【００４３】
このように、シール方式ベクトルSSがない状態では、配列100を単純に読み取っても、配列100に含まれている情報を回復するのが容易ではない(すなわち、プレインテキストを直接突き止めること、またはむしろ項目I1〜INを直接突き止めることは不可能である)。
【００４４】
ベクトルVIは、N個のフィールドを備え(したがって各フィールドが単一の値を含んでいる場合にはN個の値を含み)、ベクトルVRBは、N+1個のフィールドを備え(各フィールドが1つの値のみを含んでいる場合には結果的にN+1個の値を含み)、したがって、シール方式ベクトルは2N+1個の値を含み、SS(N+1)の値は、配列100の最初の項目I1に先行するバイト数であり、SS(N+2)の値は、配列100の第1の項目I1と第2の項目I2の間のバイト数であり、SS(N+3)の値は、配列100の第2の項目I2と第3の項目I3の間のバイト数であり、以下同様である。SS(2N+1)の値は、最後の項目INの後に配列100に追加されたバイト数である。
【００４５】
前述のように、組VI(ベクトル)を定義するステップは、配列100に項目I1〜INを相互に挿入する順番のN個の識別番号を定義するステップと等価である。ベクトルVIを形成するN個の値は、配列100のそれぞれのフィールドを識別するのではなく、例えば配列100の各行xに沿った系列で考えたとき、配列100に項目I1〜INを挿入する順番を表すことに留意されたい。ここまでに説明されたものと同様に、ベクトルVIは、実例として次のようなタイプである
VI={1、2、3、4、...}。
ベクトルVIは、配列100の中に、第1の項目として項目I1を挿入し(VI(1)={l}およびI(1)=I1であるので、I(VI(1))={I1})、配列100の中に、第2の項目として項目I2を挿入し(VI(2)={2}およびI(2)=I2であるので、I(VI(2))={I2})、配列100の中に、第3の項目として項目I3を挿入し(VI(3)={3}およびI(3)=I3であるので、I(VI(3))={I3})、配列100の中に、第4の項目として項目I4を挿入し(VI(4)={4}およびI(4)=I4であるので、I(VI(4))={I4})、ベクトルIのN個すべての項目I1〜INに関して以下同様にする、といったやり方に解釈される。
【００４６】
常に定性的な例として、それぞれの数がそれぞれのブロックRBx、yの長さを識別するN+l個の乱数の組を定義するステップにより、次のタイプのベクトルVRBが生成される
VRB={23、4、46、5、11、...}。
【００４７】
ベクトルVRBは、23個のランダムバイトを、配列100の、ベクトルVIによって定義される最初の項目の直前に(この例では項目I1の前に)挿入し、4個のランダムバイトを、配列100の、ベクトルVIによって定義される最初の項目の直後に(この例では項目I1の後に)挿入し、46個のランダムバイトを、配列100の、ベクトルVIによって定義される第2の項目の直後に(この例では項目I2の後に)挿入し、5個のランダムバイトを、配列100の、ベクトルVIによって定義される第3の項目の直後に(この例では項目I3の後に)挿入し、11個のランダムバイトを、配列100の、ベクトルVIによって定義される第4の項目の直後に(この例では項目I4の後に)挿入する、といったやり方に解釈される。
【００４８】
配列100の項目I1〜INを配列する操作(すなわち、ベクトルVIを生成する、図3のステップ10および12)および/またはベクトルVRBの生成は、一定間隔で、かつ/または特別な所定のイベントに続いて、何回も遂行することができ、配列100の周期的な更新が可能になる。シール方式ベクトルSSも、対応するやり方で更新される。具体的には、I1〜INのN個の項目が与えられると、これらは、配列100の開始する順番が再来する前にN!回の置換が可能である。これは、ベクトルVIによって定義される項目I1〜INの順序が、最初の順序に戻る前にN!回変更され得ることを意味する。
【００４９】
実際には、1とMの間の値を有する2つの第1の整数「A」および「B」を選択して、
(1)ベクトルVIの第1の値の位置をベクトルVIの第2の値の位置と置換する(2つの位置は、任意に、または2つの別々のカウンタを用いることによって選択される)ステップ、および
(2)ベクトルVIのそれぞれの1つまたは複数の値の位置とベクトルVIの1つまたは複数の値の位置を交換するステップであって、これらの位置が、前のポイント(1)で言及された第1の値が元来含まれていた位置の後にあるステップ、といった操作がA回遂行されるようにシャッフル関数が遂行される。
【００５０】
置換するステップ(1)は、あらかじめ設定することができないやり方で順序づけられた値を含んでいるベクトルVIを生成するように、「B」個の別々の値に対して「B」回遂行される。
【００５１】
Bの値は、BがN!・(N+1)!の除数にならないように、無作為に選択される。このように、2つの数BとN!・(N+1)!は相互素数(mutual  primes)であり、それらが完全には割り切れないという事実を利用して、何回かの繰返しの後に再び同一の値に戻るのが防止される。
【００５２】
より詳細には、置換する操作(1)は、ベクトルVIのそれぞれの位置に含まれる数値に対する置換を遂行するステップを含む。前述のように、ベクトルVIは実際には整数のベクトルであって、各整数は、それぞれの項目I1〜IN  (または、むしろそれぞれの項目I1〜INに関連した値J1〜JN)が挿入される、配列100における位置を記述する。したがって、置換するステップは、
(a)-ベクトルVIのそれぞれの第1のフィールドに含まれている第1の数値(例えば数「1」を含んでいるVI(1))を選択するステップと、
(b)-ベクトルVIの、第1のフィールドとは別の、それぞれの第2のフィールドに含まれている第2の数値を選択するステップと、
(c)-第1のフィールドに含まれていた第1の数値と、第2のフィールドに含まれていた第2の数値とを互いと交換するステップとを含む。
【００５３】
この置換するステップは、(d)-ステップ(a)〜(c)を繰り返す任意選択のステップも含む。
【００５４】
図6および図7は、前述のステップ(a)〜(d)をより詳細に示す流れ図である。
【００５５】
図6を参照すると、ステップ20において、図6の方法の最初の繰返しであると想定される。ベクトルVIは、例えばVI={1、2、3、4}といったタイプである。変数pは、この例では、ベクトルVIのフィールドを識別する指数であり、1から(N-1)の値をとることができて、この場合(N-1)=4である。VI(p)=VI(N-1)=VI(3)={3}であるベクトルVIの最後から2番目の位置が選択される。
【００５６】
次いで、ステップ22において、ベクトルVIの最後のフィールドが選択され、すなわちVI(p+1)=VI(N)=VI(4)={4}である。
【００５７】
その後、ステップ24において、フィールドVI(N-1)とVI(N)に含まれていた値が互いと比較される。VI(N-1)がVI(N)未満であると、次いで、ステップ26において、前述のステップ(a)による第1の項目としてVI(N-1)が選択される。
【００５８】
そうでなければ、ステップ28において値pが1単位だけ減らされ、ステップ29で、ベクトルVIの始まりに達したかどうかチェックされる。pの現在の値が0であると、次いでベクトルVIが終了され、あらゆる可能な置換が行なわれる(この方法は終了する)。pが1以上であれば、ステップ30でVI(p)が選択され、ステップ32でVI(p+1)が選択される。次いで、処理は、VI(p)をVI(p+1)と比較するためにステップ24に戻る。
【００５９】
以前の例を続けて、ベクトルVI={1、2、3、4}と想定すれば、VI(N-1)<VI(N)であるので、ステップ24はステップ26に至る。
【００６０】
ステップ28〜32は遂行されず、したがって、前述のステップ(a)の第1の数値として値VI(N-1)=3が選択される。
【００６１】
次いで、処理は、前述のステップ(b)による第2の数値の選択へ進む。図7を参照すると、ステップ36において、図7の方法の最初の繰返しにおけるベクトルVIの最後の値(すなわちVI(N))が選択される。図7の方法によれば、ベクトルVIにインデックスを付けるのに指数qが用いられる。したがって、ステップ36ではq=Nとなる。
【００６２】
次いで、ステップ38において、図6のステップ26で選択された値VI(p)が現在の値VI(q)と比較される。VI(q)>VI(p)であると、次いで、ステップ40において、フィールドVI(p)に含まれていた値がフィールドVI(q)に含まれていた値と交換される。この場合、常にベクトルVI={1、2、3、4}と考えて、ステップ40はベクトルVI={1、2、4、3}を生成する。
【００６３】
ステップ38の比較が、VI(q)<VI(p)と判明すると、次いで、ステップ42において、値qが1単位だけ減らされる。ステップ43において、qの現在の値がpの現在の値より大きいかどうかチェックされる。真であれば、処理は、VI(p)とVI(q)の間の新規の比較のためにステップ38に戻る。偽であれば、この方法は終了する。
【００６４】
次いで、処理は、前述の「交換する」ステップに進む。このステップの間、ベクトルVIのp'番目の位置に続くN-pの位置に含まれている数値が、それぞれ(N-p)/2の値の2つのサブグループに細分される。次いで、(N-p)/2の値の2つのサブグループの位置が交換される。N-pが奇数である場合には、N-p+1フィールドを考慮する、または別のグループを選択することができる。
【００６５】
図7のステップ40の後に生成されたベクトルVI、すなわちVI={1、2、4、3}に戻ると、指数pの値は3であり、交換ステップは無効である。
【００６６】
図6および図7のステップ20〜32を再び繰り返すこと(第2の繰返し)により、得られる新規のベクトルVIは、次の形態を有する
VI={1、3、4、2}。
次いで、交換ステップを遂行して、次のVI(2)を得る
VI(2)={1、3、2、4}。
図6および図7のステップ20〜32を再び繰り返すこと(第3の繰返し)により、得られるベクトルVIは、次の形態を有する
VI(3)={1、3、4、2}。
この場合、ベクトルVI={1、3、2、4}は、交換ステップによって変更されない。
【００６７】
図6および図7のステップ20〜32を再び繰り返すこと(第4の繰返し)により、得られるベクトルVIは、次の形態を有する
VI={1、4、3、2}。
【００６８】
次いで、交換ステップを遂行して、次のVI(4)を得る
VI(4)={1、4、2、3}。
【００６９】
処理はこのように継続し、ベクトルVIに含まれている数値の可能な置換をすべて達成する。
【００７０】
最初に生成するとき、配列100の項目I1〜INの順番をランダムにするために、あらかじめ設定することができないベクトルVIの、各数値の順番を生成するように、図6〜図7のこの方法のステップおよび交換ステップの繰返しを「A」回(Aは乱数)遂行することができる。
【００７１】
別の実施形態によれば、図6〜図7のこの方法のステップのそれぞれの繰返しが「B」回遂行されてから、交換ステップが遂行される。
【００７２】
それぞれのブロックRBx、yのバイトで表された長さをそれぞれが識別するN+1個の乱数の組(ベクトル)VRBを定義するステップは、
(1)配列100の項目I1〜INの第1の項目の前に、少なくとも1つの(バイトで表された任意のサイズ/長さの)ブロックRBx、yが挿入されること、
(2)項目I1〜INの連続した2つの項目を互いから分離するように、配列100の各行xに沿って、項目I1〜INの連続した2つの項目の間に、少なくとも1つの(バイトで表された任意のサイズ/長さの)ブロックRBx、yが挿入されること、
(3)配列100の項目I1〜INの最後の項目後に、少なくとも1つの(バイトで表された任意のサイズ/長さの)ブロックRBx、yが挿入されること、
(4)各ブロックRBx、yのバイトで表された長さの確率分布が均一であること、
(5)すべてのブロックRBx、yのバイトで表された長さの和SRBは、配列100が完全に満たされる(すなわちΣiL(i)+SRB=M)ものであること、といった要件の少なくとも1つに適合する。
本発明の一実施形態によれば、それぞれのブロックRBx、yの長さは、これら(1)〜(5)の要件のすべてに適合する。
【００７３】
図3の流れ図に戻って、ステップ14で、ステップ10および12によって生成された配列100が、図1の認証トークン1によってランダムに生成されたキーkSを用いて暗号化される。キーkSは、選択された暗号化アルゴリズムに依拠して、標準方式によって生成され得る。例として説明されたケースでは、キーkSの生成を扱うのはトークンである。したがって、キーkSを用いる暗号化ステップはこの標準的なルーチンを起動する(したがって、それ自体は本発明の対象ではない)。例えば、AESの暗号化の方法では、キーは、暗号化することができるデータの最小ブロックと同程度の長さ(一般的には32バイト)であり、ユーザが選択することができる、または無作為なやり方で生成しておいた初期化ベクトルから生成される。
【００７４】
それに加えて、配列100は、例えばRSAなどの非対称な暗号化アルゴリズム、AES(高度暗号化標準)などのブロックベースの暗号化アルゴリズム、DES(データ通信用暗号化標準)アルゴリズム、または文献で知られているその他の暗号化アルゴリズムといった、既知のタイプの暗号化の方法を用いて暗号化される。前述の暗号化アルゴリズムRSA、AESおよびDESは、文献に知られており、関連する暗号化ステップは、簡潔さのためにここでは明示されない。キーkSの生成も、前述のように、文献で知られている方法によって遂行される。
【００７５】
以下で「C_data」として示される暗号化された配列(または、一般には暗号文オブジェクト)が、図3のステップ14の結果として得られる。
【００７６】
キーのkSおよび暗号文オブジェクトC_dataの両方が、認証トークン1の記憶装置4の非公開エリア4aに記憶される。
【００７７】
配列100の暗号化を参照しながら説明されたのと同様に、配列100用の読取りキーを表すシール方式ベクトルSSも、図1の認証トークン1によって無作為に生成されたそれぞれのキーkVによって暗号化される(ステップ14)。キーkVの生成は、自由に選択された既知の方法により、キーkSの生成と似たやり方で行なわれる。例えば、AESアルゴリズムを再び参照して、このキーkVは、キーkS向けに用いられた初期化ベクトルとは異なる初期化ベクトルによって生成される。
【００７８】
ベクトルSSも、配列100と同様に、既知のアルゴリズムを用いて暗号化される。例えば、AES暗号化アルゴリズムを用いることができるであろう。それにもかかわらず、他のアルゴリズムを用いることができることが明らかである。
【００７９】
キーkVおよび暗号化されたシール方式ベクトルSS(以下では「C_scheme」としても示される)の両方が、認証トークン1の記憶装置4の非公開エリア4aに保存される。暗号文オブジェクトC_dataは、情報(項目I1〜IN)を保持する「シール」を構成し、これを知ることは、保護することが望まれるデータおよび/または情報へのさらなるアクセスを可能にする必要条件である。例えば、本発明の好ましい用途の参照を継続して、このシールの暗号解読および読取りは、ソフトウェアプログラムの実行を認証する、またはこのソフトウェアプログラムの使用ライセンスを取得するのに必須のことである。前述のように、項目I1〜INを含んでいるベクトルIのコピーが、ソフトウェアプログラムのユーザがアクセスできないやり方で、ソフトウェアプログラムに保存される。配列100に読み込まれた項目I1〜INと、ソフトウェアプログラムに保存されたベクトルIの項目I1〜INを比較することにより、配列100の(シール方式SSを用いる)正確な読取りの確認が遂行される。
【００８０】
このさらなるデータ/情報/ソフトウェアプログラムに対するアクセスを認証するために、図8による方法のステップが遂行される。
【００８１】
第1に、ステップ50において、認証トークン1が予期された認証トークン1に一致するかどうか確立するためにチェックされる。
【００８２】
このチェックは、使用する認証トークン1のモデルおよび/または製造番号が、予期されたものに一致し、かつ適合しているかどうか、チェックすることにより遂行することができる。
【００８３】
ステップ50のチェックが肯定的な結果をもたらした場合には、次いで、ステップ52で、シールが一体化されているか、または変更されているかどうか確認するために、記憶装置4の非公開エリア4aがアクセスされる。前述のように、記憶装置4の非公開エリア4aに対するアクセスは、PINを用いて行なわれ、このPINは、ライセンスの初期設定ステップにおいて生成されたものであり、いかなる攻撃の試みも無効にする、または著しく困難にするために、十分な長さ(例えば127キャラクタ)の1組の印字可能英字(英数字に符号を加えたもの)から成る。実際、連続した試みによってこのPINを推測しようとする場合には、試みの失敗が所定の回数を上回ると、トークンは回復不可能なやり方で固定され、唯一のロック解除可能者であるソフトウェアメーカへのコンタクトが強制される。
【００８４】
一実施形態によれば、(a)ユーザが、保護されるソフトウェアを起動しようとすると、ソフトウェアが、トークンおよび個人パスワードを挿入するようにユーザに促すステップと、(b)ユーザが、前のポイント(a)で要求された自分の個人パスワードを与えるステップと、(c)保護されるソフトウェアが、本発明の一部分ではないそれ自体の方法を用いて、ユーザの個人パスワードが正確であることをチェックする(例えばハッシュ関数が用いられる場合、ソフトウェアは、ハッシュを計算して、それを、例えば以前にファイル、データベース、サーバなどに記憶されたハッシュと照合する)ステップと、(d)前のポイント(c)のチェックが合格であると、保護されるソフトウェアが、本発明のこの方法のステップにより、ユーザのライセンスに対応するPINを用いて、トークンとの通信を開き、関連するチェックを遂行するステップとが遂行される。
【００８５】
次いで、ステップ54で、キーkSおよびkVを用いて、暗号文オブジェクトC_dataおよび暗号化されたシール方式SSのC_schemeが、図3のステップ14および16によって用いられた暗号化アルゴリズムを用いて、既知のやり方で解読される。次いで、シール方式SSによって識別される配列100の項目I1〜INの位置と配列100の項目I1〜INの有効な位置の間の整合性がチェックされる。
【００８６】
最初のチェックでは、シール方式SSに指定された位置を読み取ることにより、例えば、
(i)フィールドの濃度と、(ii)フィールドの長さと、(iii)フィールドのタイプ(数、英字列、日付など)と、(iv)固定フィールドのコンテンツ(例えばソフトウェアメーカの名前)と、(v)ソフトウェアと、シールに指定されたソフトウェア名の間の整合性と、(vi)シールを含んでいるハードウェアに応答指令信号を送ることによって得られたハードウェア関する情報(例えばトークンチップの製造番号)とシールの中に記入された同等なデータの間の整合性とのパラメータの、1つまたは複数をチェックすることにより、配列100から読み取ったコンテンツは、保護することが望まれるソフトウェアプログラムに含まれているベクトルIの項目I1〜INと整合性があることが確認される。特に、この最後のポイント(vi)は、悪意のある人物が、同一モデルの別のトークンの中に非公開記憶エリア4aのコンテンツを(チップを破壊することなく)完全にコピーすることに成功したとしても、データに対するアクセスは、ハードウェア(トークン)のその特定の部分に関連させられているので、なお拒否されるはずであることを意味する。
【００８７】
この方法は、このステップで、可変情報の読取りも提供する。非限定的な例として、この情報は、ライセンス番号、クライアントの名前、現在のシールが生成された日付/時間、ライセンスによって活性化されたモジュール(該当する場合)の1つまたは複数を含む。
【００８８】
ステップ55で、保護されるデータ/情報に対するアクセスが拒否されると、図8のこの方法は終了する。
【００８９】
ステップ56で、保護されるデータ/情報に対するアクセスが許可されると、次いで、新規のシール方式ベクトルSSは無作為に生成され、こうして生成された新規のシール方式ベクトルSSに基づいて、配列100に類似の新規の配列が生成される。一実施形態では、新規の配列には、新規の順番に配置され、別のバイト数を有するブロックRBx、yによって分離された、配列100の同一の項目I1〜INが含まれる。あるいは、別の実施形態によれば、新規の配列は、配列100の項目I1〜INとは別の項目I1(a)〜IN'(a)を含み、項目I1(a)〜IN'(a)の数N'も、項目I1〜INの数Nとは異なり得る。さらなる実施形態によれば、新規の配列は、配列100の項目I1〜INと部分的に共通で(例えば固定フィールドが同一であり得る)、部分的に異なる(例えば可変フィールドが異なり得る)、項目I1(a)〜IN'(a)を含む。このように、新規のシールが生成される。
【００９０】
新規のシールを生成するのに用いられるデータフィールドは、既に本明細書で説明された元のシールと同一のものである。日付/時間のデータは、新規のシールの生成中にソフトウェアが実行しているローカルのコンピュータ装置によって供給される。この方式は、この方式がそれ自体を見つける現在の置換から進化するように構成されている。ランダムバイト(RBx、y)のための予備のスペースが、無作為なやり方で(前述の基準と同じものを用いて)再び割り付けられる。
【００９１】
図8のステップ56によってシールが進化する度に、ここでは簡潔さのために説明されない図3ステップ14〜16による暗号化のステップも遂行される。
【００９２】
次いで、特定のあらかじめ設定された期間またはランダムな期間の後に、ステップ54を参照しながら説明されたように、現在のシール方式SSと現在の配列の間の整合性が再びチェックされる。
【００９３】
ステップ54により、許容できると考えられる結果、すなわち、現在の配列の項目I1(a)〜IN'(a)の配置が、現在のシール方式SSによって識別される配置と整合性があり、ブロックRBx、yのバイトで表されたサイズが、現在のシール方式SSによって指定されたサイズと整合性がある、との結果をもたらされるまで、ステップ54〜56が継続的に繰り返される。
【００９４】
ステップ54により、出力(ベクトルSSと配列100間の一致)として肯定的な結果がもたらされると、次いで、使用されているトークンが有効であると見なされ、後続のデータおよび/または情報にアクセスするための認証(例えば、ソフトウェアプログラムを実行するための認証、またはこのソフトウェアプログラムを使用するためのライセンスを得るための認証)が取得される。
【００９５】
この瞬間から、ソフトウェアの現行の使用セッションを通じて、チェックされるのは、トークンのハードウェアが以前に確認されたそれ自体の識別情報を伴って応答し続けていることのみである。
【００９６】
それにもかかわらず、前述の詳細なチェックは、ソフトウェアを利用するために重要であると考えられる機能(または製造業者がより大きな価値があると見なす機能)を用いることを要求するユーザのイベントに基づいて、ソフトウェアによって再び起動され得る。
【００９７】
トークンが切り離されている場合には、この状況が検出され、同一のトークン(「同一の」は、その特定の製造番号を有するものを意図している)を再挿入することが必要とされ、一旦挿入されると、チェックアウトプロシージャ全体の再初期化を伴う。
【００９８】
そうでなければ、トークンが挿入されない場合、またはトークンが別の製造番号を有する場合には、ソフトウェアの実行が異常終了される(セッションが1つのトークンを用いて1度起動されることを意味し、別のトークンを用いて続行することは、この別のトークンが有効なライセンスを含んでいたとしても不可能である)。
【００９９】
本発明によるシステムおよび方法の利点は明白である。
【０１００】
情報項目I1〜INを含んでいるベクトルの順序の選択については、いわゆる語彙の置換の概念(Teinhaus-Johnson-Trotterアルゴリズムによって達成可能)に従って、1度に対の位置を交換することにより、N個の項目の可能な置換をすべて渡るたった1つのやり方が存在するという(数学的に立証可能な)事実が利用される。この方法は、計算上効率的であり、ハミルトン経路を形成する、すなわち仮想permutahedronの各頂点をすべて1回だけ通る。この場合、permutahedronは、各頂点が、残りの頂点上に存在するその他の組合せとは別の情報項目I1〜INの可能な組合せを含んでいる仮想の立体である。
【０１０１】
このシーケンスを渡るやり方は、特別な基準に従って選択され、実際、項目の数(N!・(N+1)!である)の整数除数でないように選択された複数のステップだけシーケンスに沿ってジャンプすることにより、元のシーケンスが固有のハミルトン閉路で生成されることが保証される。基本的に、このシーケンスは非循環ループ(acyclic  loop)になる。このように、いわゆる知識システムの証明が定義され、トークンが「知識」(すなわち、換言すればシール)のホルダである。
【０１０２】
ソフトウエアコンポーネントは、テストデータ/情報を保持する一般的な有効なトークン上に存在するライセンス(したがって、「証明」または「証拠」としての働きをする)の真実性を証明するシールの健全性をチェックするように構成される。
【０１０３】
したがって、上記のことを考慮に入れ、また、
-  暗号化システムが、最初のシールを初期設定する機能、シールを開く機能、およびシールを検証する機能を含む、
-  ライセンスのコンテンツを変更することなく、メッセージの残りのランダム要素に関する配置を変更するランダム方式により、シールの形態が毎回変更される、
-  完全性基準が満たされる、すなわち、ライセンスに採用される方式の如何を問わず、それぞれの初期のシールおよび後続のシールの確認に成功する、
-  シールが正しい形式でなければ(例えば連続した2つのチェックの間で偽造されれば)、シールが容認される確率がゼロであるため、完全な健全性基準が満たされる、といったことから、このシステムの各確認は非相互通信型のゼロ知識証明タイプであり、発展的コミットメント方式を用いることが明記されるべきである。
結論として、セキュリティの明白な向上は別として、
(i)たとえデータの伝送が必要であっても、ライセンス情報のセキュリティが、(ライセンスが公開されていないので)ライセンスを有効にするのに必要な、ソフトウェアとハードウェアとの間のデータ交換において損なわれることがなく、
(ii)同時に、同一のソフトウェアで複数の装置上の複数のフローティングライセンスを管理する可能性が保たれる(すなわち複数の装置および複数のユーザが存在して、各ユーザが好みの装置で作業することができる最も一般的な状況である)、といった利点が得られる。
【０１０４】
PINの使用に関して、最初の初期化で、対象のコードは非常に長く(例えば128キャラクタ)自動的に生成され、ユーザには開示されないが、ソフトウェアによって、自動的に、ユーザに意識されることなく低レベルで用いられる。このようにして、トークン自体を、試みが所定の回数(例えば3回または4回)失敗した後に自動的にロックするように構成し得ることを考慮に入れて、コンテンツにアクセスしたい無許可のユーザによる、トークンの非公開エリアへのアクセスの確率が最小限になる。
【０１０５】
さらに、本発明によれば、
(1)チップに不正開封防止装置が付いている、または、むしろ、チップを物理的に抽出しようとすると、その中に保存されている情報が、実質的に回復不可能になり、失われる/破壊される、認証トークン1へのアクセスを必要とする物理レベルと、
(2)ソフトウェアの製造業者によって設定されたパスワードによってのみアクセス可能な、記憶装置の、ユーザには見えない非公開記憶エリア4aと、
(3)記憶装置の非公開エリア4aが発見される、および/またはそのアクセスパスワードが知られる場合に、情報のさらなる保護を可能にする暗号のレベルと、
(4)この方式または配列を単純に読み取っても、この方式によって配置されたデータを容易には回復できないように、この方式から生成された項目I1〜INを相互に配置する方式と、
(5)アクセスまたは暗号解読の試みが、配列に記憶されたデータにもたらす変化が最小限のものであっても、シールの失効を起動するように、整合性を確認する機構と、
(6)複数の装置に、ソフトウェアをインストールして、ライセンスを含んでいるトークンが挿入された装置しか使用可能にしないフローティングライセンスを遂行する可能性との、さまざまなレベルの保護が提供される。例えば、インストールされた装置が10台あっても、トークンは3つしかない、といったことがあり得る。
【０１０６】
最後に、添付の特許請求の範囲に定義された本発明の保護の範囲から逸脱することなく、本明細書で説明され、図示された本発明を、修正し、かつ変更し得ることが明らかである。
【０１０７】
例えば、記憶装置4の非公開エリア4aは、同時に複数のソフトウェアおよびユーザを管理するように、前述のように、生成された複数のシールを格納することができる。
【符号の説明】
【０１０８】
1  認証トークン
2  マイクロプロセッサ
4  記憶装置
4a  非公開記憶エリア
4b  公開記憶エリア
6  コンピュータ
【図１】
2013251897.tif 000003
【図２】
2013251897.tif 000004
【図３】
2013251897.tif 000005
【図４】
2013251897.tif 000006
【図５】
2013251897.tif 000007
【図６】
2013251897.tif 000008
【図７】
2013251897.tif 000009
【図８】
2013251897.tif 000010
【外国語明細書】
2013251897000001.pdf