(57)【要約】  本発明は，通信チャンネルを介して通信する第１のユニットおよび第２のユニットという少なくとも２つの通信ユニット間の暗号化された送信または認証のための通信セッションの同期のための方法および仕組みに関する。各ユニットは，セッションカウンタ（Ｘ，Ｙ）を備える。本方法は，ハンドシェイク手順を備え，それにより，セッションカウンタの同期が，前記通信ユニット間で連続的に通信される署名によって取得される。
2007506392.tif 000002
【特許請求の範囲】
【請求項１】
通信チャンネルを介して，それぞれがセッションカウンタ（Ｘ，Ｙ）を備える第１のユニットおよび第２のユニット（Ａ，Ｂ）という少なくとも２つの通信ユニット間の暗号化された送信または認証のための通信セッションの同期のための方法であって，前記方法は，ハンドシェイク手順を備え，それにより，セッションカウンタの同期が，前記通信ユニット間（Ａ，Ｂ）で連続的に通信される署名（Ｓ，Ｒ）によって取得されるデータ通信機密保護の方法。
【請求項２】
鍵は，オンラインまたはオフラインにおいて，鍵についての情報を提供することなく，物理的に分離された場所において同一に，かつ，同期して生成される請求項１記載のデータ通信機密保護の方法。
【請求項３】
前記各ユニットは，同期のための鍵（Ｋ０）である共通の「シード」で開始される請求項１または２記載のデータ通信機密保護の方法。
【請求項４】
前記共通鍵は，最初のステップにおいてのみ使用され，いつでも置き換え可能である請求項３記載のデータ通信機密保護の方法。
【請求項５】
ａ．第１のユニット（Ａ）が，前記第１のユニットの身元（Ａ’）と，現在のセッションカウンタ（Ｘ）と，第１の署名（Ｓ）とを前記第２のユニット（Ｂ）へ送ることによって，通信を初期化するステップと，
ｂ．前記第２のユニット（Ｂ）によって前記データを受信するステップと，
ｃ．前記署名を検査して，同期を行うステップと，
ｄ．前記第２のユニット（Ｂ）が，前記第１の署名（Ｓ）を取り出して，その身元（Ｂ’）と，第２のセッションカウンタ（Ｙ）と，前記第１の署名とを送るステップと，
ｅ．前記第１のユニット（Ａ）によって前記第２のユニット（Ｂ）からの前記第１の署名を検査するステップと，
ｆ．前記第１のユニット（Ａ）によって同期を行うステップと，
ｇ．前記両ユニットが同期している場合には，前記第１のユニット（Ａ）によって暗号化のための新規鍵を取得するステップと，
ｈ．新規署名（Ｒ）を前記第１のユニット（Ａ）によって生成して，それを前記第２のユニット（Ｂ）へ提供するステップと，
ｉ．前記第２のユニット（Ｂ）によって前記第２の署名（Ｒ）を検査するステップと，
ｊ．前記第２の署名の肯定的な検査に応じて，前記第２のユニットによって新規鍵を生成するステップとを含む請求項１記載のデータ通信機密保護の方法。
【請求項６】
前記第１のユニット（Ａ）は，データを暗号化して，前記ステップｈの後にデータを送信する請求項５記載のデータ通信機密保護の方法。
【請求項７】
前記第２のユニット（Ｂ）は，前記ステップｊの後に前記第１のユニット（Ａ）から受信したデータを復号化する請求項５記載のデータ通信機密保護の方法。
【請求項８】
前記署名は，任意のサイズのハッシュ値として生成される請求項１〜７のいずれか１項記載のデータ通信機密保護の方法。
【請求項９】
前記署名は，アルゴリズムＳＨＡ−１，ＳＨＡ−２５６  ＭＤ５などのうちの１つまたはいくつかを使用して生成される請求項８記載のデータ通信機密保護の方法。
【請求項１０】
どのユニット（ＡまたはＢ）が最も高い指標の鍵を有するかについて合意して，この鍵を次のセッション鍵を計算するための基礎として使用することによって，決してこの鍵を再利用しない請求項１〜９のいずれか１項記載のデータ通信機密保護の方法。
【請求項１１】
通信チャンネルを介して通信する少なくとも２つの通信ユニット（Ａ，Ｂ）を備える通信ネットワークであって，前記各ユニットは，第１のユニットおよび第２のユニットという前記少なくとも２つの通信ユニット間の暗号化された送信または認証のための通信セッションの同期のための手段を備え，前記各ユニットは，署名および同期手順が前記通信ユニット間で連続的に通信される署名によって生じるハンドシェイク手順のための手段を備えることを特徴とする通信ネットワーク。
【請求項１２】
前記手段は，非操作領域（４１０）と，アプリケーションコードメモリ（４２０）と，処理ユニット（４３０）と，セッション鍵を記憶するためのメモリとを備える請求項１１記載のネットワーク。
【請求項１３】
前記手段は，スマートカード（４００），ソフトウェアアプリケーション，ＵＳＢドングル（５７０），ブルートゥースユニット（５８０），ＲＦユニット（５８０），ＷＬＡＮ，またはバイオメトリックユニット（５８０）からなる請求項１２記載のネットワーク。
【請求項１４】
前記ソフトウェアアプリケーションは，鍵エンジンおよびレジスタを含む暗号化されたデータセットを備える請求項１３記載のネットワーク。
【請求項１５】
前記手段は，１つ以上の鍵発生器を扱い，そのような鍵発生器のそれぞれは，別個の通信チャンネルとして機能する請求項１１記載のネットワーク。
【請求項１６】
それぞれがセッションカウンタ（Ｘ，Ｙ）を備える第１のユニットおよび第２のユニットという少なくとも２つの通信ユニット（Ａ，Ｂ）間の暗号化された送信または認証のための通信セッションの同期のためのシステム内にインストールされたいくつかの同期鍵発生器エンジンへの共通アクセスポイントとして使用可能な同期鍵発生器（ＳＫＧ）管理の仕組み（６００）であって，前記仕組みは，ある種類のＳＫＧユニット（６２０ａ〜６２０ｆ）を有する少なくとも１つの通信インターフェース（６１０ａ〜６１０ｃ）を備え，前記各ユニットは，ハンドシェイク手順を開始するための手段を備え，それにより，セッションカウンタの同期が，前記通信ユニット間で連続的に通信される署名によって取得されるデータ通信機密保護の仕組み。
【請求項１７】
アプリケーションが，デバイスドライバをロードすることによって前記仕組みを使用する請求項１６記載のデータ通信機密保護の仕組み。
【請求項１８】
マネージャの仕組みは，異なる種類のユニットを表す多数のモジュールを管理する請求項１６記載のデータ通信機密保護の仕組み。
【請求項１９】
前記各ＳＫＧユニット（６２０ａ〜６２０ｆ）は鍵発生器を含む請求項１６記載のデータ通信機密保護の仕組み。
【請求項２０】
ユニットが，スマートカード，ＵＳＢドングル，ディスク上のファイル，またはデータベーステーブルもしくは他のメモリによる装置のうちの１つである請求項１６記載のデータ通信機密保護の仕組み。
【請求項２１】
ユニットが，
‐前記ユニットをフォーマット，ログイン／ログアウト，ロックするための機能を含むアクセスインターフェース（７１０），
‐割り当て，開始，生成，および同期などの鍵発生器を扱う機能を含むＳＫＧインターフェース（７２０），
‐アプリケーションのために使用されるレジストリを実施して，ＳＫＧユニット内の構成および他の種類の永続データを安全に記憶および取り出すレジストリインターフェース（７３０），
‐生成された鍵をデータブロックの暗号化および復号化の際に使用し，かつ暗号として安全な乱数を生成するための機能を提供する暗号インターフェース（７４０），
という異なるインターフェースを備える請求項２０記載のデータ通信機密保護の仕組み。
【請求項２２】
前記ＳＫＧユニットは，アクセスインターフェースとＳＫＧインターフェースとに対応する請求項２０記載のデータ通信機密保護の仕組み。
【請求項２３】
‐前記第１のユニット（Ａ）からの開始という第１の主要ステップと，
‐前記第２のノード（Ｂ）による検査という第２の主要ステップと，
‐前記第１のノード（Ａ）による検査という第３の主要ステップと，
‐前記第２のユニット（Ｂ）における同期の完了という第４の主要ステップとを含む，暗号化された送信または認証のための通信セッションを請求項１６〜２２のいずれか１項記載の仕組みを使用して同期させるデータ通信機密保護の方法。
【請求項２４】
前記第１の主要ステップは，
ａ．第１の鍵発生器の身元（ＳＩＤ）を第１のユニット（Ａ）によって規定するステップと，
ｂ．前記第１のユニット（Ａ）によって第１の署名（Ｓ）を生成するステップと，
ｃ．前記第１のユニットによって前記鍵発生器の身元および前記第１の署名（Ｓ）を前記第２のユニット（Ｂ）へ送信するステップとをさらに含む請求項２３記載のデータ通信機密保護の方法。
【請求項２５】
前記鍵発生器の身元は，ユニットレジストリまたはローカルデータベースに保存される請求項２３記載のデータ通信機密保護の方法。
【請求項２６】
前記第２の主要ステップは，
‐前記第２のユニット（Ｂ）によって前記鍵発生器の身元と前記第１の署名（Ｓ）とを受信するステップと，
‐前記第１の鍵発生器識別子（ＳＩＤ‐Ｂ）で初期化された鍵発生器（ＳＩＤ‐Ａ）を前記第２のユニット（Ｂ）によって見つけるステップと，
‐前記第１の署名を検査するステップと，
‐検査が失敗した場合に，同期を中止して，その初期状態に復帰するステップと，
‐検査が成功した場合に，前記第２のユニットの鍵発生器を同期させるステップと，
‐前記第２のユニット（Ｂ）によって第１の署名を生成して，それを第２の鍵発生器識別子（ＳＩＤ）と共に前記第１のユニット（Ａ）へ送信するステップとをさらに含む請求項２４記載のデータ通信機密保護の方法。
【請求項２７】
前記ステップｂにおいて，すべての既知のモジュールおよびユニットは，一致する鍵発生器識別子（ＳＩＤ‐Ａ）が見つかるまで前記第２のユニットによって調査される請求項２６記載のデータ通信機密保護の方法。
【請求項２８】
前記ステップｂにおいて，ＳＫＧマネージャインターフェース内で身元を見つけるための関数が呼び出されて，結果がキャッシュされて，セッション中のすべてのさらなる呼び出しへの参照として使用される請求項２６記載のデータ通信機密保護の方法。
【請求項２９】
特定の遠隔の身元（ＳＩＤ‐Ｂ）に結合される鍵発生器のためのローカルユニットを検索するステップをさらに含む請求項２８記載のデータ通信機密保護の方法。
【請求項３０】
前記第３の主要ステップは，
ａ．前記ＳＩＤとユニット（Ｂ）で生成された前記第２の署名とを前記第１のユニットによって受信するステップと，
ｂ．前記第１のユニットによってその鍵発生器を検査して，検査が成功すれば同期させるステップと，
ｃ．前記第１のユニットによって次のセッション鍵を生成するステップと，
ｄ．前記第１のユニットによって第２の署名（Ｒ）を生成するステップと，
ｅ．結果を前記第２のユニット（Ｂ）へ送信するステップとをさらに含む請求項２３記載のデータ通信機密保護の方法。
【請求項３１】
前記ステップｅにおいて，前記第１のユニット（Ａ）は，前記セッション鍵の使用を開始して，暗号化されたデータを送る請求項３０記載のデータ通信機密保護の方法。
【請求項３２】
前記第４の主要ステップは，
‐前記第２のユニットによって前記第２の署名（Ｒ）を受信するステップと，
‐前記第２の署名を検査するステップと，
‐前記鍵発生器から次の鍵を取得して，それを前記セッション鍵として使用するステップと，
‐前記セッション鍵を暗号化のために使用するステップとをさらに含む請求項２３記載のデータ通信機密保護の方法。
【請求項３３】
‐開始手順において，前記各ユニットにおいて使用される共通の元の値を取得するステップと，
‐前記通信ユニット間で連続的に通信される署名によって同期が取得されるハンドシェイク手順と，
‐他のユニットとは独立して，前記各ユニットにおける前記元の値（シード）と，現在の鍵と，セッションカウント値に基づいて鍵を生成して，セッションカウンタの数値を増加させるステップと，
‐そのように生成された前記鍵を，後続の暗号化された送信または認証動作に使用するステップとを含む，危険な通信チャンネルを介して，少なくとも２つの通信ユニット間の暗号化された送信または認証のための通信セッションの同期のためのデータ通信機密保護の方法。
【請求項３４】
前記元の値は，動的で交換可能な方法で前記ユニットのうちの少なくとも１つに保存され，好ましくはすべての前記ユニットに保存される請求項３２記載のデータ通信機密保護の方法。
【請求項３５】
前記カウント値は，前記各ユニット内のカウンタにおいて生成され，前記カウント値の同期は前記カウンタの同期を含む請求項３２または３３記載のデータ通信機密保護の方法。
【請求項３６】
前記カウンタの前記最初の同期に続いて，前記ユニットは，必要な場合に限り，補助的な同期ステップを実行する請求項３４記載のデータ通信機密保護の方法。
【請求項３７】
通信チャンネルを介して，それぞれがセッションカウンタ（Ｘ，Ｙ）を備える第１のユニットおよび第２のユニットという少なくとも２つの通信ユニット間の暗号化された送信または認証のための通信セッションの同期のためのコンピュータプログラムであって，前記コンピュータプログラムは，ハンドシェイク手順のための命令の組を備え，セッションカウンタの同期のための命令セットの組は，前記通信ユニット間の連続的に通信される署名によって取得されるコンピュータプログラム。
【請求項３８】
通信チャンネルを介して，それぞれがセッションカウンタ（Ｘ，Ｙ）を備える第１のユニットおよび第２のユニットという少なくとも２つの通信ユニット間の暗号化された送信または認証のための通信セッションの同期のためのシステムにおいて使用されるメモリであって，前記メモリは，ハンドシェイク手順のためのデータ構造を備え，セッションカウンタの同期のためのデータ構造は，前記通信ユニット間の連続的に通信される署名によって取得されるメモリ。
【請求項３９】
通信チャンネルを介して，それぞれがセッションカウンタ（Ｘ，Ｙ）を備える第１のユニットおよび第２のユニットという少なくとも２つの通信ユニット間の暗号化された送信または認証のための通信セッションの同期のためのアプリケーションプログラムインターフェース（ＡＰＩ）を記憶するコンピュータプログラム読み取り可能な媒体であって，前記コンピュータプログラム読み取り可能な媒体は，ハンドシェイク手順のための命令の組を備え，セッションカウンタの同期のための命令セットの組は，前記通信ユニット間の連続的に通信される署名によって取得される，コンピュータプログラム読み取り可能な媒体。
【請求項４０】
ネットワーク装置が，通信チャンネルを介して，暗号化された送信または認証のための通信セッションを，それぞれがセッションカウンタ（Ｘ，Ｙ）を備える第２の装置と同期させるための方法であって，前記方法は，前記通信装置間の連続的に通信される署名によって取得されるセッションカウンタの同期のためのハンドシェイク手順を備えるデータ通信機密保護の方法。
【請求項４１】
ｋ．第１のユニット（Ａ）が，前記第１のユニットの身元（Ａ’）と，現在のセッションカウンタ（Ｘ）と，第１の署名（Ｓ）とを前記第２のユニット（Ｂ）へ送ることによって，通信を初期化するステップと，
ｌ．前記第２のユニット（Ｂ）によって前記データを受信するステップと，
ｍ．前記署名を検査して，同期を行うステップと，
ｎ．前記第２のユニット（Ｂ）が，前記第１の署名（Ｓ）を取り出して，その身元（Ｂ’）と，第２のセッションカウンタ（Ｙ）と，前記第１の署名とを送るステップと，
ｏ．前記第１のユニット（Ａ）によって前記第２のユニット（Ｂ）からの前記第１の署名を検査するステップと，
ｐ．前記第１のユニット（Ａ）によって同期を行うステップと，
ｑ．前記両ユニットが同期している場合には，前記第１のユニット（Ａ）によって暗号化のための新規鍵を取得するステップと，
ｒ．新規署名（Ｒ）を前記第１のユニット（Ａ）によって生成し，それを前記第２のユニット（Ｂ）へ提供するステップと，
ｓ．前記第２のユニット（Ｂ）によって前記第２の署名（Ｒ）を検査するステップと，
ｔ．前記第２の署名の肯定的な検査に応じて，前記第２のユニットによって新規鍵を生成するステップとをさらに含む請求項３９記載のデータ通信機密保護の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，一般的なデータ通信内の同期および認証手順に関する。
【背景技術】
【０００２】
通常，公衆電話線，データネットワーク，無線通信操作などの危険な通信チャンネルを介して，安全な暗号化された通信を達成するのは困難である。従来の暗号化アルゴリズムは，秘密または公開鍵という形態の鍵をユニット間で送信する必要がある。しかしながら，そのような鍵の送信は，実用上の問題を生じさせる。鍵は別個の安全なチャンネル上で送信されてもよいが，この解決策は，不便で費用が高く，かつ，時間がかかる。代わりに，鍵は危険なチャンネルを介して送信され，その後，暗号化されたメッセージが当該チャンネル上を送信されることになっていてもよい。しかしながら，この手順は，機密保護上の危険性を伴う。また，ＲＳＡシステムなどのいわゆるオープン鍵（open key）を有する暗号化システムを使用する場合において，鍵の送信は，暗号化された送信が十分に安全であることを保証するためには，より大きく複雑な鍵および暗号化アルゴリズムが必要となることを意味し，当然ながら，ますます不便でコストが高くなる。
【０００３】
危険な通信チャンネルを介してユニットを安全に検査，いわゆる認証を行うためには，同様の問題が生じる。そのような認証は，固有の鍵に基づくデータのユニット間送信に基づく。例えば，送信または受信されたメッセージに基づいてチェックサムを暗号化するために鍵を使用してもよい。この場合にも，ユニット間の鍵送信の場合に他の暗号化送信において見出されるのと同様の問題が生じる。
【０００４】
同期鍵発生器（ＳＫＧ）は，物理的に分離された場所において，例えば１６０ビットの鍵を，当該鍵に関するいかなる情報を送ることなく，同期して生成する方法である。このようにして，通信当事者の認証，または暗号化による機密情報の交換の場合に，高水準の機密保護が達成される。この手法は，通信当事者が明確な，いわゆる「閉じた環境」に適している。そのような環境は，例えば，会社とその現場スタッフ，銀行とその顧客，仮想私設ネットワーク（ＶＰＮ’ｓ）などである。
【０００５】
国際公開第０１／７４００７号（参照によって本願に包含される）は，危険な通信チャンネルを介する少なくとも２つのユニット間の暗号化された送信または認証のための方法およびシステムを開示している。本方法は，開始手順において，各ユニットにて使用される共通の元の値を取得するステップと；各ユニットにおける計数値を同期させるステップと；他のユニットとは独立して，各ユニットにおいて，元の値と計数値とに基づいて鍵を生成するステップと；そのように生成された鍵を後続の暗号化された送信または認証動作において使用するステップとを含む。
【０００６】
ＳＫＧは，ソフトウェアまたはハードウェアまたはその２つの組合せとして実施されることができる。ＳＫＧは，１６０ビットの対称鍵を使用することができる。通信設定に関する第３の信頼できる検査部分は必要ない。ＳＫＧは，様々な形態のハードウェア装置におけるソフトウェア，またはソフトウェアのみのソリューションとして実施されることができる。ハードウェアによる実施は，最も高い水準の機密保護を提供する。ソフトウェアというものの性質およびその「ハッキング可能性（hackability）」のため，ソフトウェアのみのソリューションは，クライアントノード位置においては推奨されない。しかしながら，サーバソフトウェアは，別の方法で保護されて，安全な環境と看做されることがある。                         
【０００７】
ＳＫＧは，低帯域幅が要求され，機密保護性が高く，ハンドヘルド無線機器（例えば，ＰＤＡ），携帯電話，および従来のコンピュータ関連機器に適している。非常に有望な他の関連分野は，テレマティック，自動車無線通信（ブルートゥース），ＷＬＡＮ（無線ローカルエリアネットワーク）である。
【０００８】
国際公開第０３／０２６１９８号は，それぞれがセッション鍵を有する副シーケンスの組として暗号化された送信のシーケンスに関する。送信装置は，新規セッション鍵のそれぞれがいつ有効になるかを判断して，この予定された新規鍵開始時間を受信装置へ送信する。好ましい一実施形態において，送信装置は，新規鍵準備コマンドを受信装置へ送信して，受信装置が新規セッション鍵を計算するのに十分な準備時間を提供する。新規鍵のそれぞれは，カウンタ指標と，送信装置および受信装置間の最初の鍵交換セッション中に決定された鍵の組とのハッシュ関数を使用して作成される。カウンタ指標は，各予定された新規鍵開始時間で増分され，新規セッション鍵を生成する。
【０００９】
米国特許第６，３７７，６９２号において，同一の更新周期内で異なる時間に更新される２つの鍵が，電子署名用の署名鍵（主鍵および補助鍵）として準備され，各鍵の更新周期は，例えば３つの期間に分割される。第１および更新後の最後の期間は，補助鍵のために使用され，中間の期間は，主要鍵のために使用され，電子署名は，主要鍵で行われる。電子署名は，２つの確認鍵のいずれかによって確認され，当該２つの確認鍵は，署名鍵として使用された当該２つの鍵を更新するのと同期して更新される。これにより，電子署名の発行を停止する必要も，サービスの提供を署名鍵の更新に伴って制限する必要もなくなる。
【００１０】
米国特許出願公開第２００２０１１０２４５号によれば，光通信システムにおけるノード間の機密保護鍵の同期は，送信点では後続の情報ブロックを暗号化するのに新規鍵が使用されており，受信点では後続の情報ブロックを復号化するのに当該新規鍵が使用されていることを示すバンド外信号を使用して維持される。８ビットから１０ビットの符号化手法において未使用のコードの群から，新規鍵への切り換えコードが選択される。新規鍵への切り換えコードは，情報ブロック間で十分な間隔を空けるために使用されるアイドルコードに取って代わることができる。新規鍵への切り換えコードの受信は，送信点において後続の情報ブロックを暗号化するのに当該新規鍵が使用されていることを示し，受信点において後続の情報ブロックを復号化するために当該新規鍵への切り換えを引き起こす。
【００１１】
米国特許出願公開第２００３０００３８９６号は，暗号システムを同期させるための方法を含む実施形態を開示している。一実施形態において，当該方法は，無線通信システムにおける接続確立処理の一部として送信される既存の制御データを使用する。一実施形態において，発信および着信呼両方の設定中に基地局および遠隔ユニット間で通常送られるメッセージを解析して，テレフォニーデータの送信の開始を示す特定の制御メッセージを検出する。このメッセージの検出は，暗号化／復号化が開始できる点を示し，暗号システムを同期させるために使用される。暗号システムを同期させることは，有鍵自動鍵（Keyed autokey「ＫＥＫ」）暗号システムにおけるＲＣ４状態空間を生成することを伴う。一実施形態において，無線通信プロトコルに従って，低中間アクセスチャンネル（Lower Medium Access Channel 「ＬＭＡＣ」）メッセージが使用される。これは，テレフォニーデータを暗号化および復号化する同一の関連制御チャンネル（Associated Control Channel「ＡＣＣ」）処理を通じてＬＭＡＣメッセージが渡されるので都合がよい。
【００１２】
国際公開第０２／４７３１９号によれば，通信システムは，通信チャンネルの一端において，連続した暗号を生成するための第１の暗号発生器であって，乱数のシーケンスを生成するための第１の乱数発生器を含み，連続した暗号の各暗号は，乱数のシーケンスの各連続部分に基づき，連続した情報量を暗号化してチャンネルの他端へ送信する対称暗号器とを含み，各情報量は，連続した暗号のうちの各１つを使用して暗号化される。チャンネルの他端において，システムは，第１の暗号発生器に同期して第１の暗号発生器と同一の連続した暗号を生成するための第２の暗号発生器であって，第１の乱数発生器と同一の乱数のシーケンスを生成するための第２の乱数発生器を含む第２の暗号発生器と，チャンネルの一端から受信した暗号化された連続した情報量を復号化するための対称復号器とを含み，各情報量は，チャンネルの一端で暗号器によって暗号化するのに使用された連続した暗号のうちの同一の暗号の各１つを使用して復号化される。
【００１３】
上述の文献はすべて，本発明の技術分野に関連する安全なデータの通信のための様々な方法を開示している。これらは，例えば，ハッシュアルゴリズム，同期鍵発生器，署名による取り組み，対称鍵，および同期一般の使用などの最先端技術の例を示す。しかしながら，どの先行技術文献も，本発明のすべての特徴に完全に一致するものではない。
【００１４】
本発明の簡単な説明
本発明の趣旨は，同期および認証を実質的に同時に行う効率的な方法を提示することである。さらなる目的は，使用した実際の鍵についての情報を送る必要のない，安全な通信である。
【００１５】
よって，本発明の目的は，完全に同期したノードを保証すると同時に認証を行う同期方法を提供することである。
【００１６】
Ｂ２Ｂ，ＶＰＮ，テレマティック，インターネットトンネリングなどのような「閉じた環境」のための高い機密保護レベルの認証および暗号化を維持するためには，システムＳＫＧが理想的である。その小型かつ低帯域幅の要件が，ＰＤＡ，テレコム，ＷＡＰ，無線通信（ブルートゥース）ユニット，ＷＬＡＮなどにとって理想的である。この種の応用に非常に適しているということは，それに限定されるものではなく，当然ながら，従来のインターネット機密保護のための使用のような，より広い観点の応用においても使用可能である。
【００１７】
このような理由のため，通信チャンネルを介して，それぞれがセッションカウンタを備える第１のユニットおよび第２のユニットという少なくとも２つの通信ユニット間の暗号化された送信または認証のための通信セッションの同期のための方法が提供される。本方法は，ハンドシェイク手順を備え，それにより，セッションカウンタの同期が，通信ユニット間で連続的に通信される署名によって取得される。
【００１８】
最も好ましくは，鍵は，鍵についての情報を提供することなく，物理的に分離された場所において同一に，かつ，同期して生成され，よってオンラインまたはオフライン同期が可能となる。はじめに，各ユニットは，同期のための鍵である共通の「シード」で開始される。共通鍵は，最初のステップにおいてのみ使用され，例えば壊れたら，いつでも置き換え可能である。
【００１９】
本方法は，ａ．第１のユニットが，第１のユニットの身元と，現在のセッションカウンタと，第１の署名とを第２のユニットへ送ることによって，通信を初期化するステップと，ｂ．第２のユニットによってデータを受信するステップと，ｃ．署名を検査して，同期を行うステップと，ｄ．第２のユニットが，第１の署名を取り出して，その身元と，第２のセッションカウンタと，第１の署名とを送るステップと，ｅ．第１のユニットによって第２のユニットからの第１の署名を検査するステップと，ｆ．第１のユニットによって同期を行うステップと，ｇ．両ユニットが同期している場合には，第１のユニットによって暗号化のための新規鍵を取得するステップと，ｈ．新規署名を第１のユニットによって生成して，それを第２のユニットへ提供するステップと，ｉ．第２のユニットによって第２の署名を検査するステップと，ｇ．第２の署名の肯定的な検査に応じて，第２のユニットによって新規鍵を生成するステップとをさらに含む。
【００２０】
好ましくは，第１のユニット（Ａ）は，データを暗号化して，ステップｈの後にデータを送信し，第２のユニット（Ｂ）は，ステップｊの後に第１のユニット（Ａ）から受信したデータを復号化する。
【００２１】
好ましくは，署名は，任意のサイズのハッシュ値として生成されるが，これに限定されるものではない。署名は，アルゴリズムＳＨＡ−１，ＳＨＡ−２５６  ＭＤ５などのうちの１つまたはいくつかを使用して生成される。どのユニットが最も高い指標の鍵を有するかについて合意して，この鍵を次のセッション鍵を計算するための基礎として使用することによって，決してこの鍵を再利用しない。
【００２２】
また，本発明は，通信チャンネルを介して通信する少なくとも２つの通信ユニットを備える通信ネットワークに関し，各ユニットは，第１のユニットおよび第２のユニットという少なくとも２つの通信ユニット間の暗号化された送信または認証のための通信セッションの同期のための手段を備える。各ユニットは，署名および同期手順が通信ユニット間で連続的に通信される署名によって生じるハンドシェイク手順のための手段を備える。
【００２３】
当該手段は，非操作領域と，アプリケーションコードメモリと，処理ユニットと，セッション鍵を記憶するためのメモリとを備えてもよい。当該手段は，スマートカード，ソフトウェアアプリケーション，ＵＳＢドングル，ブルートゥースユニット，ＲＦユニット，ＷＬＡＮ，またはバイオメトリックユニットからなる。最も好ましくは，ソフトウェアアプリケーションは，鍵エンジンおよびレジスタを含む暗号化されたデータセットを備える。
【００２４】
さらに，当該手段は，１つ以上の鍵発生器を扱うように編成され，そのような発生器のそれぞれは，別個の通信チャンネルとして機能する。
【００２５】
また，本発明は，第１のユニットおよび第２のユニットという少なくとも２つの通信ユニット間の暗号化された送信または認証のための通信セッションの同期のためのシステム内にインストールされたいくつかの同期鍵発生器エンジンへの共通アクセスポイントとして使用可能な同期鍵発生器（ＳＫＧ）管理の仕組みに関し，各ユニットは，セッションカウンタを備え，当該仕組みは，ある種類のＳＫＧユニットを有する少なくとも１つの通信インターフェースを備える。各ユニットは，ハンドシェイク手順を開始するための手段を備え，それにより，セッションカウンタの同期が，通信ユニット間で連続的に通信される署名によって取得される。
【００２６】
好ましくは，アプリケーションが，デバイスドライバをロードすることによって当該仕組みを使用する。マネージャの仕組みは，異なる種類のユニットを表す多数のモジュールを管理する。各ＳＫＧユニットは，鍵発生器を含む。好ましくは，ユニットが，スマートカード，ＵＳＢドングル，ディスク上のファイル，またはデータベーステーブルもしくは他のメモリによる装置のうちの１つである。
【００２７】
好ましくは，ユニットが，ユニットをフォーマット，ログイン／ログアウト，ロックするための機能を含むアクセスインターフェース（７１０）と，割り当て，開始，生成，および同期などの鍵発生器を扱う機能を含むＳＫＧインターフェース（７２０）と，アプリケーションのために使用されるレジストリを実施して，ＳＫＧユニット内の構成および他の種類の永続データを安全に記憶し，取り出すレジストリインターフェース（７３０）と，生成された鍵をデータブロックの暗号化および復号化の際に使用し，かつ暗号として安全な乱数を生成するための機能を提供する暗号インターフェース（７４０）という異なるインターフェースを備える。ＳＫＧユニットは，アクセスインターフェースとＳＫＧインターフェースとに対応する。
【００２８】
さらに，本発明は，仕組みを使用して，暗号化された送信または認証のための通信セッションを同期させる方法に関し，第１のユニットからの開始という第１の主要ステップと，第２のノードによる検査という第２の主要ステップと，第１のノードによる検査という第３の主要ステップと，第２のユニットにおける同期の完了という第４の主要ステップとを含む。
【００２９】
第１の主要ステップは，第１の鍵発生器の身元（ＳＩＤ）を第１のユニットによって規定するステップと，第１のユニットによって第１の署名を生成するステップと，第１のユニットによって鍵発生器の身元および第１の署名を第２のユニットへ送信するステップとをさらに含む。
【００３０】
好ましくは，鍵発生器の身元は，ユニットレジストリまたはローカルデータベースに保存される。
【００３１】
第２の主要ステップは，第２のユニットによって鍵発生器の身元と第１の署名（Ｓ）とを受信するステップと，第１の鍵発生器識別子で初期化された鍵発生器を第２のユニットによって見つけるステップと，第１の署名を検査するステップと，検査が失敗した場合に，同期を中止して，その初期状態に復帰するステップと，検査が成功した場合に，第２のユニットの鍵発生器を同期させるステップと，第２のユニットによって第１の署名を生成して，それを第２の鍵発生器識別子と共に第１のユニットへ送信するステップとをさらに含む。
【００３２】
上記ステップにおいて，すべての既知のモジュールおよびユニットは，一致する鍵発生器識別子が見つかるまで第２のユニットによって調査され，ＳＫＧマネージャインターフェース内で身元を見つけるための関数が呼び出されて，結果がキャッシュされて，セッション中のすべてのさらなる呼び出しへの参照として使用される。
【００３３】
本方法は，特定の遠隔の身元に結合される鍵発生器のためのローカルユニットを検索するステップをさらに含む。
【００３４】
第３の主要ステップは，ａ．ＳＩＤとユニットで生成された第２の署名とを第１のユニットによって受信するステップと，ｂ．第１のユニットによってその鍵発生器を検査して，検査が成功すれば同期させるステップと，ｃ．第１のユニットによって次のセッション鍵を生成するステップと，ｄ．第１のユニットによって第２の署名を生成するステップと，ｅ．結果を第２のユニットへ送信するステップとをさらに含む。
【００３５】
ステップｅにおいて，第１のユニットは，セッション鍵の使用を開始して，暗号化されたデータを送る。
【００３６】
第４の主要ステップは，第２のユニットによって第２の署名を受信するステップと，第２の署名を検査するステップと，鍵発生器から次の鍵を取得して，それをセッション鍵として使用するステップと，セッション鍵を暗号化のために使用するステップとをさらに含む。
【００３７】
また，本発明は，危険な通信チャンネルを介して，少なくとも２つの通信ユニット間の暗号化された送信または認証のための通信セッションの同期のための方法に関し，開始手順において，各ユニットにおいて使用される共通の元の値を取得するステップと，通信ユニット間で連続的に通信される署名によって同期が取得されるハンドシェイク手順と，他のユニットとは独立して，各ユニットにおける元の値（シード）と，現在の鍵と，セッションカウント値に基づいて鍵を生成して，セッションカウンタの数値を増加させるステップと，そのように生成された鍵を，後続の暗号化された送信または認証動作に使用するステップとを含む。本実施形態によれば，元の値は，動的で交換可能な方法でユニットのうちの少なくとも１つに保存され，好ましくはすべてのユニットに保存される。カウント値は，各ユニット内のカウンタにおいて生成され，カウント値の同期はカウンタの同期を伴う。カウンタの最初の同期に引き続いて，ユニットは，必要な場合に限り，補助的な同期ステップを実行する。
【００３８】
また，本発明は，通信チャンネルを介して，第１のユニットおよび第２のユニットという少なくとも２つのユニット間の暗号化された送信または認証のための通信セッションの同期のためのコンピュータプログラムに関し，各ユニットは，セッションカウンタを備え，コンピュータプログラムは，ハンドシェイク手順のための命令の組を備え，セッションカウンタの同期のための命令セットの組は，通信ユニット間の連続的に通信される署名によって取得される。
【００３９】
本発明の他の態様は，通信チャンネルを介して，第１のユニットおよび第２のユニットという少なくとも２つの通信ユニット間の暗号化された送信または認証のための通信セッションの同期のためのシステムにおいて使用されるメモリに関し，各ユニットは，セッションカウンタを備え，メモリは，ハンドシェイク手順のためのデータ構造を備え，セッションカウンタの同期のためのデータ構造は，通信ユニット間の連続的に通信される署名によって取得される。
【００４０】
さらに，本発明は，通信チャンネルを介して，第１のユニットおよび第２のユニットという少なくとも２つの通信ユニット間の暗号化された送信または認証のための通信セッションの同期のためのアプリケーションプログラムインターフェース（ＡＰＩ）を記憶するコンピュータプログラム読み取り可能な媒体に関し，各ユニットは，セッションカウンタを備え，コンピュータプログラム読み取り可能な媒体は，ハンドシェイク手順のための命令の組を備え，セッションカウンタの同期のための命令セットの組は，通信ユニット間の連続的に通信される署名によって取得される。
【００４１】
また，本発明は，ネットワーク装置が，通信チャンネルを介して，暗号化された送信または認証のための通信セッションを第２の装置と同期させるための方法に関し，各装置は，セッションカウンタを備え，当該方法は，通信装置間の連続的に通信される署名によって取得されるセッションカウンタの同期のためのハンドシェイク手順を備える。
【００４２】
以下に，図面に示された多数の実施形態例を参照して本発明を説明する。
【発明を実施するための最良の形態】
【００４３】
従来，何らかのクロックを使用して，クロックが常に同期していなければならないことがわかっている２つの独立したノードを同期させることが通常である。このような問題での不都合を回避するために，本発明は，「ハンドシェイク」方法を提供する。新規の通信セッションの各開始は，通信当事者が期待通りの者である（正しい署名）こと，および，各側で同一の鍵が作成されることを検査するための本発明に係るハンドシェイク処理を示す。すべてのパラメータが正しければ，使用する新規の鍵が作成され，そうでなければ，通信は実行されない。
【００４４】
本発明によれば，鍵は，ＳＨＡ‐１およびＦＩＰＳ１８０‐１などの広く受け入れられ，かつ試験された安全なハッシュアルゴリズムでアルゴリズム的に生成されて，システムにおける最高の機密保護を保証する。
【００４５】
図１は，２つのノードＡおよびＢ間の鍵トランザクションフローを示す。ノードは，ｎが整数である鍵０〜ｎを生成し，生成された鍵で暗号化されたデータを送信する。通信セッションが開始されると，両側の鍵発生器が同期していること，すなわち，同一の鍵を生成することを確実にしなければならない。
【００４６】
ＳＫＧが唯一の鍵発生器および鍵ハンドラであるため，あらゆる種類の暗号化方法を使用することができる。鍵は，本明細書においてＧｅｔ  Ｋｅｙと呼ばれるコマンドを介して，例えばＡＰＩへ要求される。
【００４７】
図２は，例えばノードＡが通信を開始する場合に同期をどのように行うかを示す。ＳＫＧは，本発明に係る同期のための共通鍵（シード）である。このシード（Ｋ０）は，最初のみに使用され，いつでも置き換えられることができるが，例えばハードウェアアクセス制限により，第三者からはアクセスできない。
【００４８】
本発明に係る同期は，署名を使用して，セッションカウンタＸおよびＹの同期を保証する方法である。Ａ’およびＢ’は，各側のＳＩＤ（固有の識別子）である。関数Ｓ（ＫＡＢ）およびＲ（Ｋ）は，後述の署名発生器関数である。
【００４９】
同期処理の目的は，ＡまたはＢのどちらの側が最も高い指標の鍵を有するかについて合意して，この鍵を次のセッション鍵を計算するための基礎として使用することによって，決してこの鍵を再利用しないことを保証することである。図２において：
‐Ａは，ハッシュ値「Ｓ」に連接されたＡの鍵指標「Ｘ」に連接されたＡの身元「Ａ’」からなるメッセージ［Ａ’ＸＳ（Ｋ×Ａ’Ｂ’）］を生成する。Ｓ値は，鍵「Ｋｘ」をＡの身元「Ａ’」とＢの身元「Ｂ’」とに連接された指標Ｘでハッシュすることによって計算される。当該メッセージは，Ｂに送信される。
‐Ｂは，当該メッセージを受信し，その鍵指標Ｙを受信したＸと比較する。ＸがＹより大きければ，Ｂは，指標Ｘまで鍵を生成して同期させる必要があることを知る。ＸがＹ以下であれば，Ｂは，Ａが指標Ｙまで鍵を生成しなければならないことを知る。Ｓ値は，Ｂによって計算でき，送信されたＳ値と比較される。ある鍵についてＡおよびＢのみが正しいＳ値を生成できるため，Ｓ値同士が等しければ，Ｂは，Ａの現在の鍵指標がＸという主張を信頼できる。そうでなければ，同期処理は中止されて，Ｂはその元の第１の鍵Ｋｙに戻る。
‐今度は，Ｂは，ＸがＹより大きかった場合に指標Ｘまで鍵を生成し，それによってＹがＸ以上であることを確立する。ハッシュ値「Ｓ」に連接されたＢの鍵指標「Ｙ」に連接されたＢの身元「Ｂ’」からなるメッセージ［Ｂ’ＹＳ（ＫｙＢ’Ａ’）］が作成される。Ｓ値は，鍵「Ｋｙ」をＢの身元「Ｂ’」とＡの身元「Ａ’」とに連接された指標Ｙでハッシュすることによって計算される。このメッセージは，Ａに返信される。
‐Ａは，当該メッセージを受信し，その鍵指標Ｘを受信したＹと比較する。Ａの鍵指標ＸがＹより小さければ，Ａは，指標Ｙまで鍵を生成して，ＸがＹと等しい鍵指標を確立しなければならない。これは，受信されたＳ値と生成されたＳ値とを比較する場合にのみ行われて，鍵指標ＹにあるというＢの主張が正しいことを証明する。
‐この時点で，ＡおよびＢは，同一の鍵指標にある。Ａは，次の鍵（指標Ｘは１増分されているＫｘ）を生成することができ，この鍵は，セッション鍵として使用されることになっている。新規に生成された鍵をハッシュすることによってＲ値が計算されて，（必要に応じて，関数Ｃｋｘ（Ｄ０）を使用して新規の鍵で暗号化された第１のペイロードＤ０と共に）Ｂへ送信される。メッセージ［Ｒ（Ｋｘ）Ｃｋｘ（Ｄ０）］がＢへ送信される。
‐ＢはＲ値を受信し，次の鍵を生成し，そのＲ値を計算する。Ｒ値同士を比較して同一である場合には，Ｂは，この状態（鍵指標）をその鍵発生器に保持して，これで第１のペイロードを復号化できる。Ｒ値同士が異なる場合には，エラーがあり，処理全体が中止されて，Ｂはその元の第１の鍵Ｋｙに復帰する。
【００５０】
以下は，本発明の同期方法を開示する図３と共に示す一例である。
‐Ａの側は，その身元Ａ’（ＳＩＤ），現在のセッションカウンタＸ，およびＳ署名をＢへ送ることによって通信を初期化する。Ｓ署名は，ＡＰＩ内にＧｅｔＳＳｉｇ（）を呼び出すことによって計算される。
‐Ｂの側は，データを受信し，ＶｅｒＳＳｉｇ（）を呼び出して，図２に記載の同期を行う。
‐また，Ｂの側は，ＧｅｔＳＳｉｇ（）を呼び出して，その身元Ｂ’，セッションカウンタＹ，およびＳ署名を送る。
‐Ａの側は，ＢからのＳ署名を検査し，Ａは，ＶｅｒＳＳｉｇ（）を呼び出して同期を行う。
‐Ａは，ＡとＢとが同期していることを知り，ＧｅｔＮｅｘｔＫｅｙ（）を呼び出して，次の鍵を暗号化のために取得する。
‐Ａの側は，（次の鍵を取得するための呼び出しの後）ＧｅｔＲｓｉｇ（）を呼び出して，この署名をＢへ送る。これでＡはデータを暗号化して送信できる。
‐Ｂは，ＶｅｒＲＳｉｇ（）を呼び出すことによって，この署名をそのＫｙ＋１でチェックし，一致すれば，Ｂは，ＧｅｔＮｅｘｔＫｅｙ（）を呼び出す。
‐これで，Ｂは，ＡおよびＢが同期していることを知り，データを復号化できる。
【００５１】
上述の関数は，好ましくはＡＰＩ鍵発生器内で規定されることができるが，それに限られるものではなく，以下のような機能性を有する：
ＧｅｔＳＳｉｇ（）：Ｓ署名を取り出す。
鍵発生器を識別するＳＩＤと，Ｘ‖Ｓ（ＫＸＡＢ）を含むバッファへのポインタとをパラメータとして取る。
ＶｅｒＳＳｉｇ（）：Ｓ署名を検査する。
鍵発生器に結合されるＳＩＤと，Ｙ‖Ｓ（ＫＹＡＢ）を含むバッファへのポインタとを取る。
ＧｅｔＲＳｉｇ（）：Ｒ署名を取り出す。
鍵発生器を識別するＳＩＤと，Ｒ（ＫＸＡＢ）を含むバッファへのポインタとを取る。
ＶｅｒＲｓｉｇ（）：Ｒ署名を検査する。
鍵発生器に結合されるＳＩＤと，Ｒ（ＫＹ＋１ＢＡ）を含むバッファへのポインタとを取る。
ＧｅｔＮｅｘｔＫｅｙ（）：鍵発生器から，取得したＳＩＤで次の鍵を取り出す
鍵発生器を識別するＳＩＤと，次の鍵への参照とを取る。
【００５２】
署名関数パラメータをハッシュすることにより，署名を作成する。例えば，異なる内部データをハッシュして，メッセージまたはデータファイルの凝縮された表現を計算するために，アルゴリズムＳＨＡ‐１が使用される。たとえばＳＨＡ‐２５６，ＭＤ５，およびそれに類似の他のアルゴリズムを使用することもできる。
【００５３】
スマートカードシリコンなどの他の既存のハードウェア設計において実施されるＳＫＧには，いくつかの構成要素が必要である。
【００５４】
このような環境の一例は，アトメル社（ATMEL）のスマートカード用ＡＴ９０ＳＣシリコンであり，例えば安全な「チャット」の目的のために，認証および暗号化方法としてＳＫＧを実施できる。
【００５５】
図４は，本発明が実施されるスマートカード４００のような一例を示す。スマートカードは，非操作領域４１０と，アプリケーションコードメモリ４２０と，処理ユニット４３０と，セッション鍵を記憶するためのメモリ４４０とを備える。処理ユニットは，メモリユニットの機能およびコードメモリおよび通信を制御する。当該スマートカードおよびその機能ユニットは一例として挙げたものであり，他の形態および応用が生じてもよいことは当然である。スマートカード内でＳＫＧを使用することにより，既存の環境に統合する能力が促進される。ＳＫＧをスマートカード環境において実施するには，プロセッサカーネルについての開発プラットフォームと，実際のスマートカードについてのプログラミングツールとが必要である。スマートカードは，不揮発性メモリ（Ｅ２ＰＲＯＭ／Ｆｌａｓｈ）が搭載されていなければならない。このメモリのサイズによって，鍵をいくつ生成できるかという限度が決まる。最高の機密保護のためには，機密保護性の高い極秘のスマートカード（ＥＡＬ  ４＋）を使用するのが望ましい。
【００５６】
一例によれば，図５に示すように，安全な通信は，現場のクライアント５１０ａ〜５１０ｄと，それらの会社５２０との間で，例えば，先に説明したようなＳＫＧスマートカード５３０をクライアントノードで使用し，かつＳＫＧアプリケーション５４０を会社ノードにおいて使用することによって達成できる。通信は，例えばインターネット５６０または他の通信ネットワークを通じて行われる。会社ノードにおいてアプリケーションを使用することによって，莫大な数のクライアントを扱うことが可能である。クライアントの側において，ＳＫＧは：
・ソフトウェア
・ＵＳＢドングル（任意のＵＳＢメモリ鍵）５７０
・ブルートゥースユニット５８０
・ＲＦユニット（５８０）
・ＷＬＡＮユニット
・ＲＦＩＤ
・バイオメトリックユニット（５８０）
としても実施できる。
【００５７】
すべてのユニットは，モジュールドライバを介してそのアプリケーションと通信できる。これらのドライバは，ユニット専用に開発できる。ソフトウェアユニット，スマートカードユニット，およびＵＳＢドングルユニットは，既に市販されている。
【００５８】
鍵エンジンおよびレジスタを含む強固に暗号化されたファイルは，ソフトウェアモジュールを表すことができる。これはサーバ側において最も一般的であり，クライアントにおいても使用できる。
【００５９】
ＵＳＢドングル５７０は，フラッシュメモリ，または，スマートカードに非常に類似しているがＵＳＢインターフェースを有する，より強力なユニットのいずれかである。利点は，当該ユニット専用のリーダを使用する必要がないことである。なぜなら，ＵＳＢは，ほとんどのコンピュータにおいて共通の標準だからである。
【００６０】
ブルートゥース領域は，適切な機密保護を受けやすい。ブルートゥースを機密保護レベルの高い情報搬送体とするために，鍵処理を扱うべくＳＫＧを容易に調整できる。
【００６１】
８０２．１１，８０２．１１ｂなどに従ったＷＬＡＮも，適切な機密保護を受けやすい。鍵処理を扱うようにＳＫＧを容易に調整できる。
【００６２】
ＲＦ装置は，幅広い分野において頻繁に使用されるが，ほとんどは，通過システムにおける識別タグとして使用される。問題点の１つは，タグ識別子はいつも同一に見える静的鍵であるということである。ＳＫＧを実施することによって，タグを，人がゲートを通る度に新規鍵を生成するＳＫＧのためのトリガとすることができる。
【００６３】
バイオメトリックユニットは，ユーザを識別するのに非常に適しており，そのようなものとして，ＳＫＧ手法に付加価値を与えることができる。しかしながら，独立型として，ＲＦが有するのと同じ問題を受けやすい。すなわち，いつも同じ個人情報（１つの指紋）である。人が自身の身元確認を行う度に指紋によってＳＫＧが新規鍵を生成するようにすることで，最高レベルの機密保護を達成する。
【００６４】
１つ以上の鍵発生器を扱うようにＳＫＧを構成することによって，そのような発生器のそれぞれは，別個の通信チャンネルとして機能することになる。よって，単一のＳＫＧ装置をいくつかの通信目的／アプリケーションのために使用することができる。例えば，１枚のスマートカードを，通過システム，コンピュータログイン，銀行振替などのために使用することができ，各アプリケーションは，それぞれ独自のＳＫＧチャンネルを使用する。スマートカードなどの１つのＳＫＧ装置のみを使用することによって，ユーザは，ＰＩＮコードなどの１つの識別表示のみを使用して，自身の身元確認を１つの装置に対してのみ行えばよい。
【００６５】
さらに，ＳＫＧが可能な装置は，いくつかのユーザビリティ層を有することができ，例えば，ユーザがＰＩＮコードを変更できる１つのユーザレベルと，マルチチャンネルの設定などが管理される１つの管理レベルとを有する。各層は，暗号化されたログインルーチンによって保護され得る。
【００６６】
図６は，システムにインストールされたすべてのＳＫＧエンジンへの共通アクセスポイントとして使用できるＳＫＧマネージャ（ＳＫＧＭ）６００を示す。そのモジュール６１０ａ〜６１０ｃおよびＳＫＧＭの副オブジェクトによって，ＳＫＧエンジンが規定される。モジュールは，ある種類のＳＫＧユニット６２０ａ〜６２０ｆを有する通信インターフェースを備える。これらのエンジンにアクセスしたいすべてのアプリケーションは，ＳＫＧマネージャを使用することができ，その後，ＳＫＧマネージャは，リソースを管理する。
【００６７】
最も好ましい実施形態において，アプリケーションは，例えば，暗黙的または明示的にダイナミックリンクライブラリ（ＤＬＬ）またはデバイスドライバをロードすることによって，ＳＫＧＭを使用することができる。添付のヘッダファイルには，ＤＬＬを使用するのに必要な定義および宣言が含まれる。
【００６８】
ＳＫＧＭは，コンピュータユニット上のシステムＳＫＧの一実施である。マネージャは，多数のモジュールを管理しており，当該モジュールは，異なる種類のユニットを表す。ＳＫＧユニットにおいて，鍵発生器が常駐する。ユニットは，スマートカード，ＵＳＢドングル，ディスク上のファイル，データベーステーブルなど，異なる性質のものである。ユニット７００は，図７に示すように，４つの異なるインターフェース（機能のグループ化）を有する。
・アクセスインターフェース７１０は，ユニットをフォーマット，ログイン／アウト，ロックするなどのための機能を含む。
・ＳＫＧインターフェース７２０は，割り当て，初期化，生成，および同期などの鍵発生器を扱うすべての機能を含む。
・レジストリインターフェース７３０は，アプリケーションのために使用される小さなレジストリを実施して，ＳＫＧユニット内の構成および他の種類の永続データを安全に記憶および取り出す。
・暗号インターフェース７４０は，生成された鍵をデータブロックの暗号化および復号化の際に使用し，かつ暗号として安全な乱数を生成するための機能を提供する。
【００６９】
ＳＫＧユニットは，４つのインターフェースのすべてに対応する必要はなく，対応するインターフェースについて問い合わせる方法はある。しかしながら，アクセスインターフェースおよびＳＫＧインターフェースは，常に存在しなければならない。
【００７０】
以下において，図１および８を参照する。
通信セッションが開始されると，両側の鍵発生器は，同期しなければならない。すなわち，同一の鍵を生成することになる。
【００７１】
これを達成するために，ＳＫＧマネージャのＳＫＧインターフェースは，いくつかの有用なＡＰＩ呼び出しを生じさせる。２つの鍵発生器の安全な同期を行うために，本発明に係る同期方法が行われる。
【００７２】
各ノードＡおよびＢ（図１）は，他のノードとの通信のために特に付与された鍵発生器識別子（ＳＩＤ）を有する。
【００７３】
ノードＡが同期を開始することを決定したと仮定する。
【００７４】
ステップ１：ノードＡからの開始（図８）
ノードＡにおけるアプリケーションは，ノードＢとの通信のために使用する鍵発生器の身元（ＳＩＤ）を知らなければならない。これは，ユニットレジストリまたは何らかの他のローカルデータベースに保存されていてもよい。ノードＡがどの鍵発生器識別子（ＳＩＤ）を使用するかを知っている場合には，関数ＧｅｔＳＳｉｇ（）を呼び出すことによって固有の署名（Ｓ署名）を生成する。これで，データは，使用中のアプリケーションプロトコルで転送される準備が整う。ノードＡは，ＳＩＤおよび（バンプカウントを含む）Ｓ署名をノードＢへ送信する。
【００７５】
ステップ２：ノードＢにおける検査
ノードＢにおけるアプリケーションは，ＳＩＤおよびノードＡにおいて生成されたＳ署名を受信する。ノードＢの観点からすると，ノードＡからの鍵発生器識別子（ＳＩＤ）はＳＩＤ‐Ｂである。ノードＢは，ＳＩＤ‐Ｂで初期化される自身の固有の鍵発生器（ＳＩＤ‐Ａ）を見つける必要があり，（ＡＰＩ）関数ＧｅｔＳｉｄＡＦｒｏｍＳｉｄＢ（）を呼び出す。一致するＳＩＤＡが見つかるまで，すべての既知のモジュールおよびユニットを調べなければならない。代替方法は，関数ＦｉｎｄＲｅｍｏｔｅＳｉｄをＳＫＧＭインターフェース内にキャッシュすることである。優れた設計の役割は，この動作からの結果をキャッシュすることである。なぜならば，戻されたＳｉｄ‐Ａは，セッション中のすべてのさらなるＡＰＩ呼び出しに対する参照として使用されることになるからである。これで，ノードＢは，関数ＶｅｒＳＳｉｇ（）を，ノードＡから受信されたＳ署名で呼び出す。ＧｅｔＳｉｄＡＦｒｏｍＳｉｄＢ（）またはＶｅｒＳＳｉｇ（）が失敗する場合には，同期は中止されなければならず，ノードＢは最初の状態に戻る。同期が不可能であることをノードアルファが通知されるべきかかどうかの決定は，アプリケーション次第である。ＶｅｒＳＳｉｇ（）に対して呼び出しが成功した後，ノードＢは，正確なバンプカウント値と，その鍵発生器は同期していることとを知っている。しかしながら，ノードＡは，このセッションでどの鍵を使うべきかを知らず，ノードＢはＡが同期しているかどうかを知らない。ノードＢは，ＧｅｔＳＳｉｇ（）を呼び出して，自身の専用の鍵発生器識別子（ＳＩＤ）を結果と共にノードＡへ送る。
【００７６】
ＦｉｎｄＲｅｍｏｔｅＳｉｄは，ある関数においてはＳＩｄＢとも呼ばれる特定の遠隔ＳＩＤと結合された鍵発生器のローカルユニットを検索する。鍵発生器およびそれが常駐するユニットのローカルＳＩＤは，見つかれば戻される。
【００７７】
ステップ３：ノードＡにおける検査
ノードＡにおけるアプリケーションは，ＳＩＤおよびノードＢにおいて生成されたＳ署名を受信する。関数ＶｅｒＳＳｉｇ（）を呼び出すことによって，ノードＡは，検査がＯＫだった場合には，その鍵発生器を同期させる。これで，ノードＡは，ＡおよびＢが両方とも同期していることを知る。関数ＧｅｔＮｅｘｔＫｅｙ（）を呼び出すことによって次のセッション鍵を生成するのが安全である。これから，ノードＡは，ノードＡが同期していることをノードＢに対して証明しなければならない。ノードＡは，関数ＧｅｔＲＳｉｇ（）を呼び出して，その結果をノードＢへ送る。ノードＡにおけるアプリケーションがセッション鍵の使用を開始して，暗号化されたデータを送ることも可能である。
【００７８】
ステップ４：ノードＢにおける同期の完了
ノードＢにおけるアプリケーションは，Ｒ署名を受信し，それを関数ＶｅｒＲＳｉｇ（）へ渡す。この関数は，ノードＢに対して，ノードＡが同期されており，ノードＡが正しい次の鍵を作成したことを証明する。ノードＢは，鍵発生器から次の鍵を取得して，それをセッション鍵として使用すべきであると知る。ノードＢは，関数ＧｅｔＮｅｘｔＫｅｙ（）を呼び出して，セッション鍵を暗号化のために使用する。
【００７９】
図９は，本発明を使用した好ましい一実施形態を示し，危険な通信チャンネルを介して２つのユニット間の安全な暗号化された送信／認証のためのシステムに関する。通信チャンネルは，データが送信され得る任意のチャンネルであってもよく，より特定的には，チャンネルは静的で，かつ無線であってもよい。そのような各ユニットは，鍵生成ユニット９００を備える。鍵生成ユニットは，メモリ９１０を備え，いわゆるシードという同一の元の値ＳＩＤが，好ましくは動的／固定的および入れ替え可能／交換可能な方法で記憶されている。元の値の記憶は，ユニットの導入開始に関連して生じさせるのが好ましく，安全なチャンネルを介して生じさせれば好都合である。しかしながら，場合によっては，元の値を物理的に送信する必要はなく，代わりに，当該ユニットのユーザが自分で事前に合意した値を入力してもよい。加えて，必要な場合には元の値を交換してもよいが，代わりに，鍵生成ユニットの全存続期間中，同一の元の値を使用する。この場合，元の値は，ダイナミックメモリに記憶させる必要はなく，代わりに，永久メモリを使用してもよい。
【００８０】
加えて，鍵生成ユニットは，生成された鍵の数を表すカウンタＸを備える。
【００８１】
同一の元の値がメモリ９１０に記憶されており，カウンタが同期して同一のカウント値を伝達する限りは，いくつかの鍵生成ユニットにおいて，同一の鍵が互いに独立して生成されてもよい。
【００８２】
その後，ユニット間の暗号化または認証目的のためにこれらの鍵を使用してもよい。
【００８３】
さらに，鍵生成ユニットは，同期しているかどうかを検知するように適応されており，同期していない場合には，この同期を実施するように適応されているのが好ましい。検知は，鍵の生成の前に行われる特定の同期試験によって行われてもよい。
【００８４】
しかしながら，代わりに，異なる鍵が使用される場合に同期の必要性が確認されて，その後のみに同期リセットが行われてもよい。同期は，例えばユニット間のカウント値を交換することによって行われてもよい。
【００８５】
計算ユニットは，元の値（シード）と，現在の鍵と，カウント値を入力パラメータとしてハッシュする計算アルゴリズムＦを備える。その後，カウント値は，数値が増加，すなわち，カウント＝カウント＋１となる。この計算アルゴリズムは，計算ユニットのハードウェアで実施されるのが好ましく，代わりに，動的ではない不変のメモリに記憶される。計算アルゴリズムは，１６０ビットの鍵を生成するのが好ましいが，他の長さの鍵も考えられるのは当然である。したがって，新規鍵を生成するための命令が鍵発生器に与えられる度に，新規擬似ランダムの１６０ビット語が生成され，これは，「シード」およびカウント値に基づいて計算される。
【００８６】
鍵生成ユニット９００は，通信ユニットと鍵生成ユニットとの間の通信を可能にする役割を果たすインターフェース部９１２をさらに備える。好ましくは，この通信には，鍵を生成するための命令を鍵生成ユニットに対して発行することと，そのように生成された鍵を通信ユニットに対して発行することとが含まれる。
【００８７】
好都合なことに，鍵生成ユニットは，ハードウェアで実施され，集積回路の形式で実行され，それにより，改ざんするのがより困難となっている。その後，この回路は，あらゆる種類の通信ユニットに追加され，当該通信ユニットと共に使用されてもよい。例えば，本発明に係る鍵生成ユニットは，いわゆるスマートカードといった充電可能なカードと共に使用することができ，また，携帯または据え置き型コンピュータ，携帯電話，電子カレンダー，および同様の通信可能な電子機器内で使用することができる。
【００８８】
しかしながら，鍵生成ユニットを例えば従来のコンピュータにおいてソフトウェアで実施すること，および既存のメモリなどを使用することも同様に可能である。この代替案は，据え置き型ユニット，特に中央ユニットとして使用されるユニットにおける実施にとって特に好都合である。
【００８９】
本発明に係る鍵生成ユニットは，二地点間，すなわち，２つのユニット間もしくは中央ユニット，サーバ，またはいくつかのユーザやクライアント間の通信または認証のいずれかのために使用されてもよい。そのような中央ユニットは，好ましくは複数の異なる鍵生成ユニットを備え，各クライアントにつき１つが中央ユニットと通信を行う。代わりに，鍵ユニットは，いくつかの異なる元の値を備えてもよく，その場合に，鍵を生成するための鍵生成ユニットへのコマンドは，どの元の値を使用すべきかに関する情報も備える。中央ユニットと通信するいくつかのユニットが同一の鍵生成ユニットを有することも同様に可能で，それにより，中央ユニット内の同一の鍵生成ユニットと通信することが可能である。
【００９０】
いくつかの他のユニットと通信するように適応された中央ユニットの場合，中央ユニットは，鍵生成ユニットのソフトウェアによる実施のための手段を好ましくは備え，クライアントは，ハードウェアが実施された手段を有する。例えば，クライアントは，スマートカードまたは携帯電話，コンピュータなどであってもよい。よって，本発明のシステムは，銀行とその顧客間，会社とその従業員間，会社とその系列会社間などで使用されてもよい。加えて，本システムは，インターネットなどを介してホームページにアクセスすることを制御するために使用されてもよく，例えばそのスマートカードを当該目的のために提供された読み取り器に接続することによって使用されてもよく，このようにして，例えばブルートゥースまたはＷＬＡＮを介した無線で通信する電子機器に対するアクセスを制御することもできるようになる。
【００９１】
また，中央ユニットではないユニットは，いくつかの別個のチャンネルを介した通信のために，いくつかの元の値を，同一の鍵生成装置または別個のユニットに備えてもよい。このように，ユニットをいくつかの異なる中央ユニットとの通信のために使用してもよい。例えば，いくつかの異なる銀行または他の施設との通信のためにスマートカードを使用してもよい。
【００９２】
以下に，図９のシステムの支援を得た暗号化された送信または認証を説明する。第１のステップにおいて，今後の相互通信用のユニットが開始され，その処理において，ユニットには，同一の元の値が与えられて，好ましくは同期も行われる。これで，システムは使用の準備ができ，開始後の任意の期間の経過後に生じるであろう後の時間に，ユニット同士は，危険な通信チャンネルを介して相互接続され，ユニットのうちの少なくとも１つが自身を相手に知らせる。次のステップにおいて，他のユニットは，与えられた身元が既知であるかどうか，対応する鍵生成回路を有するかどうか，すなわち，上記の鍵生成回路であり，対応する元の値を有するかどうかを判断する。そうである場合には，処理は次のステップに進み，そうではない場合には，処理は中断される。
【００９３】
その後，ユニットは，暗号化された送信または認証を行うことに同意し，それにより，各ユニットは，各鍵生成ユニットにおいて鍵を別個に計算する。これが生じる前に，各鍵生成ユニット内のカウンタが同期しているかどうかを調査するための同期試験が行われていてもよい。その場合には，処理は直接次のステップへ進み，そうではない場合には，前述の実施形態（図３および８）と共に説明したような同期ステップが最初に実行されて，ユニット間の同期がリセットされる。
【００９４】
その後，計算された鍵を使用して，暗号化された送信または認証が実行される。しかしながら，暗号化された送信および認証が同じ処理で同時に生じてもよいことは当然である。暗号化および認証は，既知のＤＥＳおよびＲＣ６などのような鍵を使用する実質的に任意の暗号化アルゴリズムの支援を得て行われてもよい。
【００９５】
本発明は，認証，すなわち，通信しているユニットがそれだと主張するものであることを検査するために使用されてもよいと共に，暗号化された送信目的のための鍵生成のために使用されてもよい。しかしながら，スマートカード，電話などの本発明に関連して使用されるユニットは，ユニットのユーザが正しいユーザであることを保証するため，すなわち，ユーザおよび通信ユニット間の認証のために配置された手段が備えられていれば好都合であろう。そのような認証は，コードの入力，指紋の識別などの支援を得て行われてもよい。
【００９６】
上述のシステムおよび方法は，いくつかの変更態様が可能である。例えば，本方法および本システムは，使用される暗号化および認証方法に依存せず，鍵を生成するための単純で安全な方法で使用されてもよく，その結果，この種の最も知られている方法と共に使用されてもよい。加えて，鍵生成ユニットは，ハードウェアで実施されるのが好ましく，そうすれば鍵生成処理をユーザに対して完全に隠すこととなる。しかしながら，鍵生成ユニットを一般のコンピュータまたは処理ユニットにおいてソフトウェアで実施することも可能である。加えて，本システムのユニットは，実施的に任意の通信電子ユニットであってもよい。鍵生成ユニットのためのカウント値を生成するために使用されるカウンタは，経時変化するカウント値を生成するのであれば，あらゆる種類のものであってもよい。１つまたはいくつかのユニットにおいてカウンタを省略することも同様に可能であり，この場合には，カウンタを同期させるステップは，各鍵生成動作の前にユニット間のカウント値を交換すること，すなわちカウント値を同期させることを伴うステップに取って代わられる。そのような他の明らかな変更態様は，添付の請求項に規定されているので，本発明の保護の範囲内であると看做されるべきである。
【００９７】
本発明は，図示および説明した実施形態に限定されない。必要，需要，および機能要件により，添付の請求項の範囲内において変形または代替実施形態が生じ得る。
【図面の簡単な説明】
【００９８】
【図１】本発明を実施する通信ネットワークにおける２つのノード間の同期を示す図，
【図２】図１のノード間のメッセージ送信の模式図，
【図３】図１のノードＡおよびＢにおける同期ステップ，
【図４】本発明の教示を使用するスマートカードのブロック図，
【図５】本発明を実施する他の通信ネットワーク，
【図６】本発明に係る管理システムの階層ブロック図，
【図７】本発明を実施するインターフェースユニットのブロック図，
【図８】管理システムに関連する図１のノードＡおよびＢにおける同期ステップ。
【図１】
2007506392.tif 000003
【図２】
2007506392.tif 000004
【図３】
2007506392.tif 000005
【図４】
2007506392.tif 000006
【図５】
2007506392.tif 000007
【図６】
2007506392.tif 000008
【図７】
2007506392.tif 000009
【図８】
2007506392.tif 000010
【図９】
2007506392.tif 000011
【国際調査報告】
2007506392.tif 000012
2007506392.tif 000013
2007506392.tif 000014