(57)【要約】  本発明は、サーバ（１８）とクライアント（１４）との間の通信方法（２０）に関する。  本発明によると、サーバとクライアントとは少なくとも一つのセッション延長鍵及び／又はセッション延長鍵に関連した鍵に関連鍵としてアクセスし、セッション延長鍵に基づいてサーバに少なくともクライアントを認証させるための認証データ（２１４）を伴うデータの認証要求をクライアントがサーバへ送信する場合に限り、サーバはクライアントとのオープン通信セッションを終了時間まで延長することを許可し、終了時間は所定の延長時間により完了した通信セッションがオープンとなった時点の時間である。  本発明はまた、対応のクライアント、サーバ、及びシステムにも関する。【選択図】      図２
2014503094.tif 000002
【特許請求の範囲】
【請求項１】
サーバ（１８）とクライアント（１４）との間の通信方法（２０）であって、
前記サーバと前記クライアントとは少なくとも一つのセッション延長鍵及び／又は前記セッション延長鍵に関連した鍵に関連鍵としてアクセスし、前記セッション延長鍵に基づいて前記サーバに少なくとも前記クライアントを認証させるための認証データ（２１４）を伴うデータの認証要求を、前記クライアントが前記サーバへ送信する場合に限り、前記サーバは前記クライアントとのオープン通信セッションを終了時間まで延長することを許可し、前記終了時間は、所定の延長時間により完了した通信セッションがオープンとなった時点の時間であることを特徴とする、通信方法。
【請求項２】
前記サーバによる少なくとも前記クライアントの認証の前に、前記クライアントは前記サーバへ少なくとも一度チャレンジリクエスト（２６）を送信し、前記サーバはチャレンジリクエストへのレスポンスとして前記クライアントへチャレンジ（２８）を送信し、前記サーバ及びクライアントは対応する認証データを作成するために前記チャレンジを使用する、請求項１に記載の方法。
【請求項３】
前記サーバによる少なくとも前記クライアントの認証の前に、前記クライアントおよびサーバは、独立して対応するチャレンジを作成するために、事前に共有した秘密データ及び所定のアルゴリズムを使用する、請求項１に記載の方法。
【請求項４】
前記クライアントおよびサーバは、対応する認証データを作成するために、文脈情報、前記セッション延長鍵又は関連鍵、前記チャレンジ、及び所定のアルゴリズムを使用する、請求項２又は３に記載の方法。
【請求項５】
前記サーバは前記クライアントへスクリプトを送信し（２４）、前記スクリプトは前記チャレンジを受信し、前記スクリプトは認証アプリケーションへチャレンジを送信し（２１０）、前記認証アプリケーションは対応する認証データを作成するために前記チャレンジ、前記セッション延長鍵又は関連鍵、及び所定のアルゴリズムを使用し、そして認証アプリケーションは作成した認証データを前記スクリプトへ送信する（２１２）、請求項２乃至４のいずれか一項に記載の方法。
【請求項６】
トークン（１２）は端末（１４）に接続しており、当該トークンは前記セッション延長鍵及び／又は関連鍵を保存し、前記認証アプリケーションをサポートする、請求項５に記載の方法。
【請求項７】
前記クライアントは、作成した前記認証データに加え、オープン通信セッションの識別子を前記サーバに送信する、請求項１乃至６のいずれか一項に記載の方法。
【請求項８】
少なくとも一つのセッション延長鍵にアクセスし、前記セッション延長鍵に基づいて少なくともクライアントを認証させるための認証データ（２１４）を伴うデータの認証要求を、前記サーバが受信する場合に限り、前記サーバはオープン通信セッションを終了時間まで延長することを許可するよう構成され、前記終了時間は、所定の延長時間により完了した通信セッションがオープンとなった時点の時間であることを特徴とする、クライアント（１４）と通信するためのサーバ。
【請求項９】
少なくとも一つのセッション延長鍵及び／又は前記セッション延長鍵に関連した一つの鍵に関連鍵としてアクセスし、前記セッション延長鍵に基づいて少なくともクライアントを認証させるための認証データ（２１４）を伴うデータの認証要求を、前記クライアントがサーバへ送信する場合に、前記クライアントはオープン通信セッションを終了時間まで延長するよう構成され、前記終了時間は、所定の延長時間により完了した通信セッションがオープンとなった時点の時間であることを特徴とする、サーバ（１８）と通信するためのクライアント（１４）。
【請求項１０】
サーバとクライアントとは少なくとも一つのセッション延長鍵及び／又は前記セッション延長鍵に関連した鍵に関連鍵としてアクセスし、前記セッション延長鍵に基づいて少なくとも前記クライアントを認証させるための認証データ（２１４）を伴うデータの認証要求を、前記サーバが受信する場合に限り、前記サーバはオープン通信セッションを終了時間まで延長することを許可するよう構成され、前記終了時間は、所定の延長時間により完了した通信セッションがオープンとなった時点の時間であることを特徴とする、サーバ（１８）及びクライアント（１４）を有する通信システム（１０）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、サーバとクライアントとの間の通信方法に関する。
また、本発明はクライアントと通信するためのサーバにも係る。
更に、本発明はサーバと通信するためのクライアントにも関する。
最後に、本発明はサーバとクライアントを有する通信システムにも関する。
【背景技術】
【０００２】
（ウェブ）サーバとクライアントの間の通信における既知の方法は、クライアントがサーバへ接続要求を送信し、サーバが要求への応答として（ウェブ）ページをクライアントへ返信することに基いている。クライアントはホストコンピュータにより実行される。一旦サーバへ接続されると、コンピュータのユーザは指定されたボタンを押して、サーバとクライアントとの間のそれまでのオープン（ウェブ）通信セッションを閉じなければならない。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第７，７４８，６０９Ｂ２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、コンピュータのユーザがボタンを押さない場合には、当該オープン通信セッションは閉じられない。従って当該オープン通信セッションは、権限のない、あるいは場合によっては悪意のあるユーザ及び／又はアプリケーションに対して開放されたままの状態となる。
従って、サーバとクライアントとの間の通信を安全な方法で行う必要がある。
【課題を解決するための手段】
【０００５】
本発明は、サーバとクライアントとの間の通信方法を規定することにより、上述の要望を満たすための解決策を提案している。
本発明によると、サーバとクライアントとは少なくとも一つのセッション延長鍵及び／又はセッション延長鍵に関連した一つの鍵に関連鍵としてアクセスし、セッション延長鍵に基づいてサーバに少なくともクライアントを認証させるための認証データを、クライアントがサーバへ送信する場合に限り、サーバはクライアントとのオープン通信セッションを終了時間まで延長することを許可し、終了時間は、所定の延長時間により完了した通信セッションがオープンとなった時点の時間である。
【０００６】
本発明の要点は、クライアントとのオープン通信セッションをサーバが制御することを許可するデータをクライアントからサーバへ送信し、サーバがクライアントを認証した場合には、サーバはセッションを所定の継続期間継続させることを許可することにある。
そうではない場合、つまりサーバがクライアントを認証しない場合には、サーバはクライアントがオープン通信セッションを継続することを禁じる、すなわちセッションを終了させる。
留意すべきなのは、サーバとクライアントとの間で共有され、サーバ及び／又はクライアントが予期された認証データを作成することを可能にする、セッション延長鍵と呼ばれる鍵、またはセッション延長鍵に関連するその他の鍵のうちのどちらかにより、当該認証が可能となる、ということである。
【発明の効果】
【０００７】
本発明の方法により、サーバとクライアントとの間のオープン通信を安全に延長すること、すなわちサーバがクライアントを効率的に認証することが可能となる。
クライアントを実行する、端末であるホストコンピュータ装置のユーザは、関与する必要がない。
【０００８】
具体的には、本発明の方法により、特にクライアントを認証するためのデータをサーバに送信しないことで、自動的にセッションを閉じることが可能となるため、上述の既知の方法とは反対に、端末のユーザはオープン通信セッションを明確に閉じる必要はない。
従って本発明の方法は、関与する必要のないユーザにとって都合がよい。
さらなる態様によると、本発明はクライアントと通信するためのサーバに関する。
【０００９】
本発明によると、サーバは少なくとも一つのセッション延長鍵にアクセスし、セッション延長鍵に基づいて少なくともクライアントを認証させるための認証データを、サーバが受信する場合に限り、サーバはオープン通信セッションを終了時間まで延長することを許可するよう構成され、終了時間は、所定の延長時間により完了した通信セッションがオープンとなった時点の時間である。
その他のさらなる態様によると、本発明はサーバと通信するためのクライアントに関する。
【００１０】
本発明によると、クライアントは少なくとも一つのセッション延長鍵及び／又はセッション延長鍵に関連した一つの鍵に関連鍵としてアクセスし、セッション延長鍵に基づいて少なくともクライアントを認証させるための認証データを、クライアントがサーバへ送信する場合に、クライアントはオープン通信セッションを終了時間まで延長するよう構成され、終了時間は、所定の延長時間により完了した通信セッションがオープンとなった時点の時間である。
【００１１】
その他のさらなる態様によると、本発明はサーバ及びクライアントを有する通信システムに関する。
本発明によると、サーバとクライアントとは少なくとも一つのセッション延長鍵及び／又はセッション延長鍵に関連した一つの鍵に関連鍵としてアクセスし、セッション延長鍵に基づいて少なくともクライアントを認証させるための認証データを、サーバが受信する場合に限り、サーバはオープン通信セッションを終了時間まで延長することを許可するよう構成され、終了時間は、所定の延長時間により完了した通信セッションがオープンとなった時点の時間である。
【００１２】
本発明の追加の特徴および利点は、説明のための非限定的な例として挙げられた、本発明の好適な実施形態の詳細な記述を以下の図面と併せて読むことでより明確に理解されるだろう：
【図面の簡単な説明】
【００１３】
【図１】クライアントである（ウェブ）ブラウザを実行する、端末であるパーソナルコンピュータ（又はＰＣ）、ＰＣに接続しているトークンであるチップカード、及びサーバを有し、サーバとクライアントとの間の通信セッションがオープンとなると、すぐに予期された認証データを作成するためにトークンと連携しながら、サーバとクライアントとの間の安全な通信を行うよう構成された、本発明に係るシステムの例示的な実施形態を示す簡易ダイヤグラムである。
【図２】トークンにより認証データがクライアントを介してサーバへ送信される場合、又は送信されない場合にそれぞれ応じて、クライアントがオープン通信セッションを所定の延長時間継続することをサーバが許可するため、又は許可しないために、図１のシステムのトークン、端末及びサーバの間で交換されるメッセージのフローの例を示す図である。
【発明を実施するための形態】
【００１４】
以下において、カードに塔載されるチップはチップ媒体及びトークンが考えられる。
とはいうものの、チップは異なる形状を有する、その他のいかなる媒体に塔載されていてもよい。
本説明において、保全素子とも呼ばれるトークンは、一方では外部とデータ通信を行うことを目的とし、またもう一方では、トークンが保存するデータの保護等の少なくとも一つのセキュリティ操作を優先的に実行することを目的とした電子物体である。
【００１５】
媒体であるカードに塔載されるチップの代わりに、トークンは、ホストコンピュータ装置のプリント基板（又はＰＣＢ）に、場合によっては取り外し可能な方法ではんだ付けされたチップである、埋設保全素子であってもよい。
カードに塔載される代わりに、トークンは、例えばユニバーサル・シリアル・バス（又はＵＳＢ）型のドングル等、その他の媒体に塔載されていてもよい。
当然ながら、以下に記載の実施形態は例示のみを目的とし、本発明の範囲を減縮するものと考えてはならない。
【００１６】
図１は、ＰＣ１４によって動作するクライアントと、コンピュータによって動作する、サーバ１８とも呼ばれる（ウェブ）サーバとの間の通信を行うためのシステム１０の概略図である。
システム１０は、チップカード１２、端末であるＰＣ１４，及びサーバ１８を含む。
簡潔にするため、以降チップカード１２はトークン１２と呼ぶ。
トークン１２はＰＣ１４に接続している。
【００１７】
端末は、ＰＣであるかわりに、例えば携帯電話、スマートフォン（すなわち携帯情報端末（又はＰＤＡ）機能を有する携帯電話）、セットトップボックス、タブレットコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、ビデオプレーヤ、オーディオプレーヤ、メディアプレーヤ、ゲーム機、ネットブック及び／又はＰＤＡであってもよい。
簡潔にするため、クライアント装置及び端末として、（ウェブ）ブラウザアプリケーションを実行する一つのＰＣ１４と、ＰＣ１４に接続する一つのトークンのみが示されている。
【００１８】
しかしながら、サーバ１８が提供する一つ又は複数のサービスにアクセスするために、クライアント装置である複数のＰＣが、同時又は異なる時にサーバ１８と通信を行ってもよい。
ホストコンピュータ装置であるＰＣ１４は、複数のトークンを備えていてもよい。
ブラウザアプリケーションは、周知のように、Ｍｉｃｒｏｓｏｆｔ  Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（登録商標）又はＭｏｚｉｌｌａ  Ｆｉｒｅｆｏｘ（登録商標）であってよい。
【００１９】
クライアント装置のブラウザアプリケーションは、サーバ１８から、１又は複数の（ウェブ）ページの読み込みを行うクライアントの役割を果たす。
代替的な方法によると、ブラウザアプリケーションの代わりに、クライアントはプロプライエタリアプリケーション、即ち当該アプリケーションの発行者（又は供給者）のみが通常アクセス可能なアプリケーションであってもよい。
サーバ１８により供給されるサービスは、ワールドワイドウェブコンソーシアム（又はＷ３Ｃ）タイプの規則を満たしていてもよい。
【００２０】
ＰＣ１４は、接触又は非接触双方向リンク１５を介して、少なくとも一つの通信ネットワーク１６に接続している。
接触リンクの場合には、ワイヤリンクでもよい。
非接触リンクの場合には、近距離（通常１０ｍまで）での無線接続である、Ｗｉｆｉ（登録商標）またはＢｌｕｅｔｏｏｔｈ（登録商標）型のリンクであってもよい。
ＰＣ１４は、少なくとも一つのマイクロプロセッサ（図示せず）、少なくとも一つのメモリ（図示せず）、及び少なくとも二つの入力／出力（又はＩ／Ｏ）インターフェース（図示せず）を有する。
【００２１】
ＰＣ  Ｉ／Ｏインターフェースは、サーバ１８によって供給されるサービスの利用を望むＰＣユーザとの通信を行うために、好ましくはマンマシンインターフェース（又はＭＭＩ）であるディスプレイ画面１４２及びキーボード１４４を有する。
ＰＣ  Ｉ／Ｏインターフェースは、通信ネットワーク１６を介してサーバ１８とデータ交換を行うための一つのＩ／Ｏインターフェースを有する。
【００２２】
サーバ１８に対して用いられるＰＣ  Ｉ／Ｏインターフェースは、サーバ１８と通信を行うために、ハイパーテキスト転送プロトコル（又はＨＴＴＰ）、ファイル転送プロトコル（又はＦＴＰ）、及び／又はその他のデータ通信プロトコルを使用してもよい。
ＰＣ１４は、カードリーダに挿入されたトークン１２との通信を行えるよう、カードリーダ（図示せず）を備える。
【００２３】
ＰＣ  Ｉ／Ｏインターフェースはまた、トークン１２とのデータ交換を行うために、パーソナルコンピュータ／スマートカード（又はＰＣ／ＳＣ）インターフェース等の一つのＩ／Ｏインターフェースも有する。
ＰＣ１４によって実行されるアプリケーションまたはソフトウェアコンポーネントは、好ましくは応用プロトコルデータ単位（又はＡＰＤＵ）を用いながら、トークン１２によって実行されるアプリケーションまたはソフトウェアコンポーネントと通信を行う。
【００２４】
トークン１２に対して用いられるＰＣ  Ｉ／Ｏインターフェースは、単一ワイヤプロトコル（又はＳＷＰ）、インターネットプロトコル（又はＩＰ）、ＵＳＢプロトコル、ベアラー非依存プロトコル（又はＢＩＰ）、及び／又はその他のデータ通信プロトコルを使用してもよい。
ＰＣメモリは、好ましくはブラウザアプリケーション及びスクリプトエンジンを保存する。
ＰＣメモリは、関連する公開鍵であるセッション延長鍵と呼ばれる鍵に関連する私有鍵を保存していてもよい。
【００２５】
ＰＣマイクロプロセッサは、いずれかの内部のコンポーネントから送信される及び／又はいずれかの内部のコンポーネントへ送信するデータ、並びに、１つのＰＣ  Ｉ／Ｏインターフェースを介していずれかの外部装置から送信される及び／又はいずれかの外部装置へ送信するデータを処理する。
ＰＣマイクロプロセッサは、オペレーティング・システム（又はＯＳ）に加え、特にクライアントであるブラウザアプリケーション、及び、好ましくは、クライアントからアクセス可能なスクリプト解釈プログラムであるスクリプトエンジンを実行する。
【００２６】
ＰＣマイクロプロセッサは、暗号学的ハッシュ値又は（メッセージ）ダイジェストと呼ばれるものである固定長ビット列を作成するために、好ましくは、例えばセキュアハッシュアルゴリズム（又はＳＨＡ）−１などの暗号学的ハッシュ関数を実行する。暗号学的ハッシュ関数により、（チャレンジである）乱数等の、暗号学的ハッシュ関数に入力するデータのサイズを減らすことが可能となる。暗号学的ハッシュ関数からの対応する出力であるダイジェストは、固定長であるため、データ処理手段であるＰＣ１４よりも弱いデータ処理能力を有するエンティティであるトークン１２により使用されてもよい。
【００２７】
ＰＣマイクロプロセッサは好ましくは、フォーマット関数へ入力されるダイジェストをフォーマット化するために、例えばＰＫＣＳ＃１  ｖ２．１に規定のＥｎｃｏｄｉｎｇ  Ｍｅｔｈｏｄｓ  ｆｏｒ  Ｓｉｇｎａｔｕｒｅｓ  ｗｉｔｈ  Ａｐｐｅｎｄｉｘ−  Ｐｒｏｂａｂｉｌｉｓｔｉｃ  Ｓｉｇｎａｔｕｒｅ  Ｓｃｈｅｍｅｓ（又はＥＭＳＡ−ＰＳＳ）などのフォーマット関数を暗号学的ハッシュ関数の後に実行する。フォーマット関数は、トークン１２が認証アプリケーションをサポートする際に、入力データを、トークン１２が解釈可能なフォーマットへエンコードする関数であってもよい。
【００２８】
スクリプトは文字列であり、実行可能データを構成する。スクリプトは、ハイパーテキストマークアップ言語（又はＨＴＭＬ）で書かれたページ等の（ウェブ）ページに埋設されている。スクリプトは、例えばＪａｖａｓｃｒｉｐｔ（登録商標）、ＡｃｔｉｖｅＸ（登録商標）、又はＡｄｏｂｅ（登録商標）型のスクリプトにより構成される。
スクリプトエンジンは、スクリプトの少なくとも一部を動的に、即ちサーバ１８とのオープンな通信の間に、解釈及び実行する。
【００２９】
本発明の興味深い特長によると、ＰＣ１４及び、より正確にはクライアント（アプリケーション）は、サーバ１８とのオープン通信セッションを所定の延長時間の間延長するために、少なくともサーバ１８の許可された通信相手であるクライアントをサーバ１８の前に認証するためのデータをサーバ１８（アプリケーション）に送信するよう構成されている。
【００３０】
通信セッションの延長が初めて許可される際には、当該通信セッションは、所定の延長時間によって一度、一つの延長時間により完了した通信セッションがオープンとなった時間に対応する終了時間まで延長される。
通信セッションの延長が少なくとも初回以外に許可される際には、当該通信セッションは、最後に算出された終了時間から、少なくとも所定の延長時間の間延長される。従ってオープン通信セッションは、クライアントが予期された認証データをサーバ１８へ送信する間、定期的に延長されてもよい。
【００３１】
終了時間が経過するまでの間、クライアントから送信されるいかなるリクエストも、サーバ１８により処理される。
場合によってはＰＣ１４及び／又はトークン１２によって実行されるその他のソフトウェアコンポーネント及び／又はその他のアプリケーションと共に作動するクライアントが、予期された認証データを提出しない場合には、直ちにサーバ１８は最後に算出された終了時間の最後にオープン通信セッションを閉じる。
認証データを作成するために、ＰＣ１４は、好ましくは関連する公開鍵である、セッション延長鍵に関連する私有鍵にアクセスするよう構成されてもよい。
【００３２】
そのほかの実施形態によると、セッション延長鍵は、公開鍵である代わりに秘密鍵である。秘密鍵は、事前にサーバ１８とクライアントにより共有されているか、又はサーバ１８とクライアントにより共有されたその他の秘密データから作成されるかのどちらかであってもよい。秘密鍵は、マザー鍵であってよく、これをもとに、例えば特にhttp://www.di-mgt.com.au/cryptoKDFs.htmlに記載のキー派生関数１（又はＫＤＦ１）などの所定のアルゴリズムによりドーター鍵が作成される。秘密データは、代替的な方法として、例えばＯｐｅｎ  ＡｕＴＨｅｎｔｉｃａｔｉｏｎ（又はＯＡＴＨ）Ｈａｓｈ  ｂａｓｅｄ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ（又はＨＭＡＣ）ｂａｓｅｄ  Ｏｎｅ  Ｔｉｍｅ  Ｐａｓｓｗｏｒｄ（又は  ＨＯＴＰ）アルゴリズム／Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ  Ｒｅｑｕｅｓｔ  Ｆｏｒ  Ｃｏｍｍｅｎｔｓ（又はＩＥＴＦ  ＲＦＣ）４２２６などの発生アルゴリズムへの２つの入力である、カウンタと結合した秘密鍵か、又は例えばＯＡＴＨ  Ｔｉｍｅ  ｂａｓｅｄ  Ｏｎｅ  Ｔｉｍｅ  Ｐａｓｓｗｏｒｄ（又はＴＯＴＰ）アルゴリズムなどの発生アルゴリズムへの２つの入力である、タイムスタンプと結合した秘密鍵のうちいずれかを使用して作成してもよい。
【００３３】
好適な実施形態によると、スクリプトに含まれるトークン１２のための実行可能データをトークン１２へ送信するために、クライアントはサーバ１８が発行したスクリプトの解釈をスクリプトエンジンに行わせ、トークン１２が暗号文、又は暗号計算の結果である認証データを作成することを可能とする。
【００３４】
代替的な方法として、スクリプトに含まれるＰＣ１４のための実行可能データを、ＰＣ１４により実行される認証アプリケーションへ送信するために、クライアントはサーバ１８が発行したスクリプトの解釈をスクリプトエンジンに行わせ、ＰＣ１４が認証データを作成することを可能とする。ＰＣ１４によりサポートされる認証アプリケーションは、ライブラリによって構成されていてもよい。認証アプリケーションが装置のマイクロプロセッサ、即ちＰＣ１４マイクロプロセッサではなくトークン１２マイクロプロセッサによりサポートされている好適な実施形態とは反対に、ＰＣ１４が、認証データの作成を専門に行う認証アプリケーションをサポートする。認証データを作成する前に、ＰＣ１４はサーバ１８と事前に共有している秘密データを用いてチャレンジを作成する、又は作成させるよう構成されていてもよい。秘密データは、例えばＩＥＴＦ  ＲＦＣ  ４２２６のＯＡＴＨ  ＨＯＴＰアルゴリズムなどの発生アルゴリズムへの２つの入力である、カウンタと結合した秘密鍵か、又は例えばＯＡＴＨ  ＴＯＴＰアルゴリズムなどの発生アルゴリズムへの２つの入力である、タイムスタンプと結合した秘密鍵のうちいずれかを使用して作成してもよい。その後チャレンジは対応する認証データを作成するために使用される。
【００３５】
好適な実施形態によると、ＰＣ１４及び、より正確にはクライアントは、オープン通信セッションの時間延長ごとにチャレンジを作成し取得するためのリクエストであるチャレンジリクエストを、サーバ１８へ送信するよう構成されている。好ましくは、スクリプトに含まれるチャレンジリクエストをサーバ１８へ送信するために、クライアントはサーバ１８が発行したスクリプトの解釈をスクリプトエンジンに行わせ、サーバ１８がチャレンジを作成し、作成したチャレンジを返送することを可能とする。
【００３６】
代替的な方法として、スクリプトに含まれる実行可能データをトークン１２及びサーバ１８へ送信するために、クライアントはサーバ１８が発行したスクリプトの解釈をスクリプトエンジンに行わせ、トークン１２及びサーバ１８がそれぞれチャレンジを作成することを可能とする。チャレンジを作成するために、各トークン１２及びサーバ１８は、カウンタ（ＯＡＴＨ  ＨＯＴＰ／ＩＥＴＦ  ＲＦＣ４２２６に規定）又はタイムスタンプ（ＯＡＴＨ  ＴＯＴＰに規定）と結合した秘密鍵等の事前に共有した秘密データ、及びＨａｓｈ  ｂａｓｅｄ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ（又はＨＭＡＣ）ｂａｓｅｄ  ＯＴＰ（又はＨＯＴＰ）等のＯｎ−Ｔｉｍｅ  Ｐａｓｓｗｏｒｄ（又はＯＴＰ）発生アルゴリズムなどの所定のアルゴリズムを使用する。
【００３７】
認証データを作成するために、トークン１２（又はＰＣ１４）及びサーバ１８側は、作成したチャレンジ、セッション延長鍵又は関連鍵、及び所定のアルゴリズムの他に、文脈情報を使用してもよい。
トークン１２は、好ましくは安全な方法で、文脈情報を保存していてもよい。
文脈情報として、ＩＰアドレス及び／又はサーバドメイン名等のサーバ１８の識別子、及び／又はユーザ認証の成功等のユーザチャレンジのような、サーバ１８に関連する情報があってもよい。ユーザ認証は、好ましくはトークン１２により、例えばユーザが入力したデータが、個人識別番号（又はＰＩＮ）及び／又は生体認証プリント等のトークン１２において保存された（及び／又は作成された）データと一致するか検証することで行われる。
【００３８】
好適な実施形態によると、トークン１２は、場合によってはトークン１２又はサーバ１８によって作成されたチャレンジを使用する間に、認証データを作成してスクリプトに供給するよう構成されている。サーバ１８がチャレンジを作成する場合は、作成したチャレンジをさらにトークン１２へ供給する。その後作成された認証データは、トークン１２によりスクリプトを介してサーバ１８へ供給される。
トークン１２はチップを有する。チップは、少なくとも１つのメモリ１２２、トークン１２の外部と通信するための少なくとも１つのＩ／Ｏインターフェース１２４、及びデータを処理する手段である少なくとも１つのマイクロプロセッサ１２６を備え、これらは制御及びデータバス１２３を介して内部で互いにリンクしている。
【００３９】
トークン１２は１又は複数のセキュリティ機能を保存し実行する。
セキュリティ機能は、トークン１２及び／又はサーバ１８へ送信され、管理されるデータ及び／又はアプリケーションにアクセスするために使用されるユーザ認証プロセスを含んでいてもよい。
ユーザを認証するために、トークン１２はＰＩＮを照合するためのアプリケーションを保存していてもよい。ＰＩＮはチップメモリ１２２に安全に保存され、トークン１２のユーザによって入力される。トークン１２は保存されたＰＩＮと入力されたデータとを比較し、入力されたデータが保存されたＰＩＮと一致する場合には、トークン１２を認証するためのアプリケーションなどの動作を許可する。
【００４０】
セキュリティ機能は、優先的に暗号化／暗号解読プロセスを有する。暗号化／暗号解読プロセスは、ＰＣ１４を介してサーバ１８とデータ交換を行うために使用される。いかなるデータも、送信される前に鍵及び暗号化アルゴリズムを用いて暗号化される。
データを暗号化／暗号解読するアルゴリズムは、トークン１２とサーバ１８との間で共有されている。
交換したデータへのアクセスを保護するために、それぞれ、ＰＣ１４を介してサーバ１８へデータを送信する前、及び、ＰＣ１４を介してサーバ１８からデータを受信した後に暗号化／暗号解読プロセスが使用される。
【００４１】
チップメモリ１２２は、不揮発性メモリである、１又は複数のＥＥＰＲＯＭ（‘‘Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ’’の頭文字）、１又は複数のＲＯＭ（‘‘Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ’’の頭文字）、１又は複数のフラッシュメモリ、及び／又は揮発メモリである１又は複数のＲＡＭ（‘‘Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ’’の頭文字）などの、異なるタイプのその他のいかなるメモリにより構成され得る。
チップメモリ１２２は、好ましくは認証データの作成に用いられる私有鍵を保存する。チップメモリ１２２は、私有鍵に関連した、関連する公開鍵であるセッション延長鍵を保存する。
【００４２】
チップメモリ１２２は好ましくは、ＯＳの他に、外部、具体的にはスクリプトを介してサーバ１８からアクセス可能である少なくとも１つの認証アプリケーションアルゴリズムを保存する。認証アプリケーションアルゴリズムは、チップマイクロプロセッサ１２６により実行された際に、認証データを作成し、作成した認証データと場合によってはその他の情報と共に１つ（又は複数）のメッセージを送信することを、ＰＣ１４（より正確にはスクリプトを介してクライアント）へリクエストすることを可能とする。
【００４３】
認証アプリケーションアルゴリズムはＪａｖａ（登録商標）などのオブジェクト指向言語で書かれてもよく、Ｊａｖａで開発された場合にはアプレットとも呼ばれる。かような対応する実施形態によると、チップメモリ１２２はアプレットを解釈及び実行するＪａｖａ仮想マシン（又はＪＶＭ）を保存する。
認証データを作成するために、認証アプリケーションは好ましくは、データ暗号化標準（又はＤＥＳ）、トリプルＤＥＳ又は１０２４以上等の選択した鍵長を用いるＲｉｖｅｓｔ  Ｓｈａｍｉｒ  ａｎｄ  Ａｄｌｅｍａｎ（又はＲＳＡ）などの暗号化アルゴリズムへの２つの入力である、（トークン１２又はサーバ１８のどちらかに作成された）チャレンジ、及び、セッション延長鍵に関連した私有鍵を使用する。結果として生じた暗号文である、かようにして作成された認証データは、チャレンジの署名とも呼ばれる署名されたチャレンジを構成する。
【００４４】
トークン１２がチャレンジに署名し、チャレンジの署名をクライアント（及びより正確にはスクリプト）へ送信することで、確実にトークン１２はＰＣ１４へ有効に接続され、それにより認識される。
トークン１２が認識されなくなるとすぐに、（スクリプトにより）クライアントはそれ以上認証データをサーバ１８へ送信することが出来なくなる。従ってサーバ１８は、好ましくはオープン通信セッションが終了したことを示すメッセージを通信相手へ送信することにより、クライアントとサーバ１８との間のオープン通信セッションを通信相手が継続することを禁止する。
【００４５】
チャレンジは好適な実施形態において、対応する認証データを作成するために用いられる。チャレンジがサーバ１８から提供された場合は、認証データを作成する前にトークン１２がチャレンジを受信する必要がある。従って、クライアントによって発行される対応するチャレンジのリクエストは、終了時間の前に送信されなければならない。その他のチャレンジの更なるリクエストにより延長時間が少なくとも一度更新される場合は、クライアントは延長時間値より少ない時間値でサーバ１８をポーリングする。そのようなポーリングの時間値は、好ましくは延長時間値に等しくてもよい。ポーリングは、推定最大時間を引いた終了時間の前に、チャレンジを取得し、対応する認証データを送信するために行われる。
【００４６】
追加的な情報として、証明書が存在してもよい。証明書は、例えばＸ．５０９型規格に規定の形式に適合していてもよい。証明書は公開鍵であるセッション延長鍵を含む。私有鍵はチップメモリ１２２内に安全に保存されている。私有鍵は証明書の公開鍵に関連する鍵である。
追加的な情報として、文脈情報が存在してもよい。チップメモリ１２２は、クライアントから送信されるメッセージの送信先であるサーバ１８の識別子などの文脈情報を、好ましくは安全な方法で保存する。
【００４７】
チップＩ／Ｏインターフェース１２４は、好ましくはＡＰＤＵを使用する間、ホストコンピュータ、すなわちＰＣ１４とデータを交換するための１つのＩ／Ｏインターフェースを有する。
ＰＣ１４と共にチップＩ／Ｏインターフェース１２４は、ＳＷＰ、ＩＰ、ＵＳＢプロトコル、ＢＩＰ及び／又はその他のデータ通信プロトコルを使用してもよい。
チップＩ／Ｏインターフェース１２４は、その他の外部の各エンティティと通信するために、追加的なＩ／Ｏインターフェースを有していてもよい。
【００４８】
チップマイクロプロセッサ１２６は、いずれかの内部のコンポーネントから送信される及び／又はいずれかの内部のコンポーネントへ送信するデータ、並びに、チップＩ／Ｏインターフェース１２４を介していずれかの外部装置から送信される及び／又はいずれかの外部装置へ送信するデータを処理する。
チップマイクロプロセッサ１２６は、ＯＳに加え、好ましくは、ＰＣ１４からアクセス可能、即ち起動され得る認証アプリケーション、及びより正確にはＰＣ１４により実行されるスクリプトを実行する。
【００４９】
チップマイクロプロセッサ１２６は、ＯＳ及び認証アプリケーションに加え、好ましくはユーザ認証アプリケーションを実行する。
ユーザ認証アプリケーションは、チップマイクロプロセッサ１２６により実行された際に、例えばサーバ１８にログインするためにサーバ１８に接続した後に、少なくとも一度トークンのユーザを認証することを許可する。トークンのユーザ認証では、好ましくはトークンのユーザが、チップメモリ１２２に好ましくは安全な方法で事前に保存されたＰＩＮ及び／又は生体認証プリント等の予期されるデータと一致するデータをＰＣ  ＭＭＩを介して与えられているかを検証する。
【００５０】
サーバ１８はリモート、即ち、イントラネットネットワーク、インターネットネットワーク及び／又は移動無線通信ネットワーク等の、少なくとも一つの通信ネットワークを介してアクセス可能である。
代替手段によると、サーバ１８はローカルである。例えば、サーバ１８はＰＣ１４に埋設されている。
サーバ１８は、サービス提供者である、移動体通信事業者（又はＭＮＯ）、仮想移動体通信事業者（又はＭＶＮＯ）、銀行オペレータ、有線通信ネットワーク事業者、サービス事業者又はサービス事業者の代表者により操作又は管理されてもよい。
【００５１】
サーバ１８は、サーバ１８の外部と通信するための少なくとも１つのＩ／Ｏインターフェース（図示せず）と、データの処理手段である少なくとも１つのマイクロプロセッサ（図示せず）を有し、これらは内部で互いにリンクしている。
サーバ１８は、少なくとも１つのメモリを有していてもよい。
サーバ１８は、好ましくは１又は複数のセキュリティ機能を保存し実行する。セキュリティ機能は、トークン１２及び／又はサーバ１８へ送信されて管理されるデータ及び／又はアプリケーションにアクセスするために使用されるユーザ認証プロセスを実行するリクエストを、ウェブページに埋設されたスクリプトを介してアクセスされるトークンへ送信することを含んでいてもよい。
【００５２】
セキュリティ機能は、優先的に暗号化／暗号解読プロセスを有する。暗号化／暗号解読プロセスは、ＰＣ１４を介してトークン１２とデータ交換を行うために使用される。いかなるデータも、送信される前に鍵及び暗号化アルゴリズムを用いて暗号化される。
データを暗号化／暗号解読するアルゴリズムは、トークン１２とサーバ１８との間で共有されている。
【００５３】
交換したデータへのアクセスを保護するために、それぞれ、ＰＣ１４を介してトークン１２へデータを送信する前、及び、ＰＣ１４を介してトークン１２からデータを受信した後に暗号化／暗号解読プロセスが使用される。
サーバのメモリは好ましくは、ＯＳの他に、サーバ１８マイクロプロセッサからアクセス可能な少なくとも１つの認証アプリケーションアルゴリズムを保存する。認証アプリケーションアルゴリズムは、サーバ１８マイクロプロセッサにより実行された際に、認証データを作成し、受信したデータと作成した認証データとを比較し、そして受信したデータと作成した認証データとの比較結果と共に好ましくは１つ（又は複数）のメッセージを送信することを可能とする。
【００５４】
サーバ１８は好ましくは、双方向リンク１９を介してメモリ１１０に接続している。
メモリ１１０はデータベースを保存する。データベースは、少なくとも各係属中のオープン通信セッションにおける、クライアント１４へ送信された最後のチャレンジの値、セッション延長鍵の値、及び対応する終了時間の値を記録する。
データベースはまた、少なくとも各係属中のオープン通信セッションにおける、好ましくはオープン通信セッションの識別子の値、それにより識別されたオープン通信セッションに関連するチャレンジの値も記録する。
【００５５】
セッション延長鍵は好ましくは、通信相手から受信したデータの照合の前にサーバ１８へ提供される（又はサーバ１８により作成される）。
サーバ１８は優先的に、クライアントを介してトークン１２から受信した証明書を使用する。公開鍵であるセッション延長鍵を有する受信した証明書により、サーバ１８は、トークン１２の私有鍵が、チャレンジの署名である暗号化の結果を作成するために用いられたか否かを決定することが出来る。
【００５６】
セッション延長鍵は、オープン通信セッションにおいてクライアントである通信相手から受信したデータが、サーバ１８により作成された認証データと一致するかを検証するためにサーバ１８によって使用される。
サーバ１８によって受信されたデータとサーバ１８によって作成された参照データである認証データが一致することにより、サーバ１８は通信相手とのオープン通信セッションを延長することが可能となる。
【００５７】
通信相手を認証するために、サーバ１８は、ＤＥＳ、トリプルＤＥＳ又は１０２４以上等の選択した鍵長を用いるＲＳＡなどの、暗号化又は暗号解読アルゴリズムへの入力であるセッション延長鍵を使用する。かようにして作成された認証データは、さらなる通信のためにサーバ１８の通信相手がまた入手し送信する、結果として生じた暗号文を構成する。
サーバ１８は、終了時間が決定するまで通信相手が通信を行うことを許可するために、参照データと一致するデータを通信相手から受信する必要がある。
【００５８】
サーバ１８は、各時間にサーバ１８がクライアントである通信相手を認証する終了時間を作成する間、通信相手が更にデータの交換を行うことを許可（又は禁止）するよう構成されている。クライアントの認証とは、サーバ１８が、通信相手によって送信されたデータが作成された認証データと一致することを検証することを意味する。
終了時間を作成するために、サーバ１８は、好ましくはクライアントがサーバ１８との通信セッションを開始した時間に所定の延長時間を加える。サーバ１８は、好ましくはクライアントがサーバ１８にログインするとすぐに通信セッションタイマを作動させる。
【００５９】
好ましくは、所定の延長時間は短い。このような短い所定の延長時間により、通信相手即ちクライアントは、進歩的な方法によるサーバ１８との通信を継続する許可を受けるために、定期的にサーバ１８の前に認証を行うことを強いられる。
終了時間が経過するまでの間、クライアントから送信されるいかなるリクエストも、サーバ１８により処理される。そうではない場合、つまり終了時間が経過した場合は、サーバ１８はクライアントから送信されるいかなるリクエストの処理も行わない。
【００６０】
サーバ１８が予期する認証データをクライアントが提出しない場合には、直ちにサーバ１８は最後に算出された終了時間の最後にオープン通信セッションを閉じる。
セッションの終了は、予期された認証データが提出されないこと、又は予期しない認証データが提出されたことにより行われてもよい。よって、たとえＰＣユーザがオープン通信セッションを終了するために「ログアウト」ボタンを押し忘れた場合でも、サーバ１８はその後自動的にオープン通信セッションを終了する。これにより通信セッションは停止され、権限のない、あるいは場合によっては悪意のあるいかなるユーザ及び／又はアプリケーション（又はいかなるソフトウェアコンポーネント）に対しても開放されたままの状態となることはない。
【００６１】
サーバ１８がオープン通信セッションの延長を初めて許可する際には、サーバ１８は当該オープン通信セッションを、所定の延長時間により一度、一つの延長時間により完了した通信セッションがオープンとなった時間に対応する終了時間まで延長する。
サーバ１８がオープン通信セッションの延長を少なくとも初回以外に許可する際には、当該オープン通信セッションは、最後に算出された終了時間から、少なくとも所定の延長時間の間延長される。従ってオープン通信セッションは、クライアントが予期された認証データをサーバ１８へ送信する間、更に定期的に延長されてもよい。
【００６２】
図２は、ＰＣ１４とサーバ１８との間のオープン通信セッションの１回の延長時間における、トークン１２、クライアントであるＰＣ１４、及びサーバ１８を含むメッセージフロー２０の例を示す図である。
ＰＣユーザは、トークン１２としてスマートカードを所有すると考えられる。
ＰＣ１４はサーバ１８にアクセスするために、例えばＰＣ  ＭＭＩを介してＰＣユーザによりブラウザの実行が開始された後に、ブラウザを動作させる。
【００６３】
任意には、クライアントがサーバ１８にログインする前にトークン１２がトークンのユーザを認証するために、クライアントがサーバ１８に接続するとすぐに、サーバ１８はブラウザ拡張機能を用いてトークン１２と通信を行う。ＳＣｏｎｎｅｃｔとしても知られ、特に［特許文献１］に記載されているこのような方法により、サーバ１８からトークン１２の機能及びデータにアクセスすることが可能となる。サーバ１８からトークン１２に対してアプリケーションであるブラウザ拡張機能を使用することは、ブラウザに第１に設定されている。ブラウザ拡張機能は、トークン１２と通信するためにスクリプトアプリケーションプログラムインターフェース（又はＡＰＩ）を提供する。そしてサーバ１８からスクリプトが発行され、サーバ１８から提供されたページに埋設されることが可能となる。スクリプトは、サーバ１８から読み込んだページに、（ブラウザ拡張機能ＡＰＩを使用することにより）トークン１２及びサーバ１８と通信するアプリケーションコードをもたらす。
【００６４】
クライアント１４がサーバ１８に接続する際に、サーバ１８はオープン通信セッションの識別子であるクッキーを生成する。クッキーは情報ビット列である。クッキーを作成するために、サーバ１８は乱数生成アルゴリズムを使用してもよい。クッキーは、生成されたクッキーの送信者であるサーバ１８の識別子を含む。サーバ１８はクライアント１４へ生成したクッキーを送信する。クライアント１４は、オープン通信セッションの間にサーバ１８へ何らかのデータを送信する際には、生成されたクッキーを使用しなければならない。さもなければ、サーバはクッキーを提供しない通信相手へのアクセスを拒絶する。クッキーは、サーバ１８の通信相手であるクライアントの認証を許可するための証拠として使用される。
【００６５】
クライアントがサーバ１８へログインするとすぐに、サーバ１８は、オープン通信セッションを延長するためのもう一つのスクリプトをサーバ１８へ要求するスクリプトを含むページを送信する。２つのスクリプトは、ＰＣ１４にサポートされＰＣ１４マイクロプロセッサにより実行される、スクリプトエンジンにより解釈される。
クライアント１４が、オープン通信セッションを延長するためのもう一つのスクリプトをサーバ１８へ要求するスクリプトを受信するとすぐに、クライアントは、オープン通信セッションを延長するためのスクリプトを取得するために、例えば‘‘Ｇｅｔ  ｓｅｓｓｉｏｎ−ｅｘｔｅｎｓｉｏｎ  ｓｃｒｉｐｔ’’等のリクエスト２２をサーバ１８へ送信する。
【００６６】
オープン通信セッションを延長するためのスクリプトを取得することを目的としたリクエスト２２を受信した後に、サーバ１８は通信セッションタイマを開始する。通信セッションタイマはゼロから所定の延長時間値までカウントアップするよう設定される。交互に、通信セッションタイマは所定の延長時間値からカウントダウンするよう設定される。
所定の延長時間値は短い、即ち数分よりも少ない。優先的に、所定の延長時間値は１分よりも少ない。所定の延長時間値は、例えば３０秒に設定される。オープン通信セッションは、延長時間値により通信セッションがオープンとなった時点の時間値から延長される。
その後、サーバ１８はオープン通信セッションを延長するためのスクリプト２４を含むページをクライアント１４へ返送する。
【００６７】
例えば、オープン通信セッションを延長するためのスクリプト２４は以下の通りである：
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script src="sconnect.js"></script>    
<script src="sha1.js"></script>    
<script src="padding.js"></script>    
<script>
// Get SConnect reference
var scardComm = new SConnect.PCSC();
// this function starts the session extension dialog with the server
function extendSession() {
// send challenge request to server
var challengeRequest = new XMLHttpRequest();
challengeRequest.open("GET",
http://www.myserver.com/session/getchallenge"); 
challengeRequest.onreadystatechange = function() { 
if ((challengeRequest.readyState == 4) && (challengeRequest.status == 200)) {
// we have received the challenge from the server, now we need to sign it
// compute the SHA-1 digest of the random
var hashedRandom = Sha1.digest (challengeRequest.response Text);
var paddedHash = encodeHashForSigning(hashedRandom);
// send smart card APDU for signing (RSA-1024 and Key 9C)
var resp = scardComm.exchangeAPDU("00879C887C81858200818180" + paddedHash);
if (resp.statusWord == "9000") {
// we now have the signature, send it to server:
var authRequest = new XMLHttpRequest();
// append authentication data to the HTTP request URL
authRequest.open("GET", "http://www.myserver.com/session/authData?data="+resp.dataOut); 
authRequest.onreadystatechange = function() { 
if ((authRequest.readyState == 4) && (authRequest.status == 200)) { 
// Success!  we extended the session
// Register the next session extension in 30 seconds
setTimeout ( "extendSession()", 30000 );
} 
}
}
} 
}
}
// connect to inserted card
if (scardComm.connect(listReaders(1)[0])) {
// select the card's signing application
scardComm.exchangeAPDU("00A404000BA000000308000010000100");
extendSession();
}
</script>
</head>
<body>
You are logged in
</body>
</html>
【００６８】
オープン通信セッションを延長するスクリプト２４は、ＰＣ１４マイクロプロセッサにより実行される、以下の操作を含んでいてもよい。
−サーバ１８へのチャレンジリクエストの送信
−（サーバ１８から送信された）チャレンジの受信
−ハッシュ化チャレンジの決定
−ハッシュ化チャレンジのフォーマット化
−フォーマット化されたハッシュ化チャレンジへの署名をトークン１２に要求するＡＰＤＵコマンドを、トークン１２へ送信
−（トークン１２から送信された）対応する署名の受信
−対応する署名と共にデータの認証の要求をサーバ１８へ送信
−送信した認証リクエストに関する（サーバ１８から送信された）結果の受信
−結果が成功である場合、即ち、送信した署名の認証がサーバ１８によって作成された予期された認証データと一致する場合にのみ、終了タイマを所定の終了時間値に設定すること、及び
−そのような場合には、上述の操作は終了タイマの終了後に少なくとも一度繰り返されること。
【００６９】
終了タイマはゼロから所定の終了時間値までカウントアップするよう設定される。交互に、終了タイマは所定の終了時間値からゼロまでカウントダウンするよう設定される。
所定の終了時間値は、例えば３０秒のように短い。
上記の操作の前に、トークン１２上で動作する認証アプリケーションを選択する必要があってもよい。
終了時間値の終了の前に、クライアント１４は、例えば‘‘Ｇｅｔ  ｎｅｗ  ｃｈａｌｌｅｎｇｅ’’等のチャレンジを得るためのリクエスト２６をサーバ１８へ送信する。
【００７０】
サーバ１８がチャレンジを得るためのリクエスト２６を受信するとすぐに、サーバ１８はチャレンジとして、例えば乱数を作成する。チャレンジは、代替的には、ＨＭＡＣ−ｂａｓｅｄ  ＯＴＰ等のＯＴＰ発生アルゴリズムの結果であってもよい。
サーバ１８は最後に作成したチャレンジを保存する。サーバ１８はまた、チャレンジがリクエストされた時間を保存してもよい。
サーバ１８は、通信相手がサーバ１８へ対応する認証データを送信することを許可するために、チャレンジを入手するためのリクエスト２６への応答として、最後に作成したチャレンジ２８をクライアント１４へ返送する。
【００７１】
クライアント１４がチャレンジを受信するとすぐに、作成されたチャレンジのサイズを十分に縮小するために、クライアント１４はハッシュ化チャレンジを決定する。このようにして、作成されたチャレンジのサイズを減少することにより、作成されたチャレンジはトークン１２（通常ターミナルコンピュータよりも少ないデータ処理能力を有する）により処理されることが可能となる。その後クライアント１４は、その結果作成されたハッシュ化チャレンジをフォーマット化する。これによりクライアント１４は、フォーマット化された、ハッシュ化チャレンジを取得する。
【００７２】
次に、クライアント１４は、フォーマット化済みのハッシュ化チャレンジへの署名をトークン１２に要求するＡＰＤＵコマンド２１０を、トークン１２へ送信する。
任意には、クライアント１４は、追加的な文脈情報、例えば、ＩＰアドレス、ドメイン名、及び／又はサーバの名前等のサーバ１８の識別子などの、サーバ１８に関連する情報をトークン１２へ送信する。このような追加的な文脈情報の送信は、追加的な文脈情報をチャレンジに関連する情報と連結させることにより行われてもよい。
【００７３】
ＰＣ１４へ接続すると、トークン１２は、暗号化アルゴリズム及びトークン１２に関連する私有鍵を使用しながらフォーマット化済みハッシュ化チャレンジを暗号化することにより、認証データである対応する署名を作成する。署名は、次のウェブサイトhttp://www.rsa.com/rsalabs/node.asp?id=2125に記載のＰＫＣＳ１のような規格に適合していてもよい。
【００７４】
トークン１２は、トークン１２に保存された私有鍵に対応するセッション延長鍵である公開鍵を含む証明書と共に、認証データである作成した署名２１２をクライアント１４へ返送する。
セッション延長鍵は、好ましくは指定された鍵である。その他の実施形態によると、セッション延長鍵はサーバ１８へログインするための鍵である。
【００７５】
代替的な方法として、セッション延長鍵は、公開鍵である代わりに、トークン１２と事前に共有しているか、又は同じデータを使用する間にサーバ１８及びトークン１２により作成された、秘密鍵である。
代替的な方法として、セッション延長鍵と認証データとを同時に提供する代わりに、トークン１２は、認証データを送信する前にクライアント１４を介してセッション延長鍵をサーバ１８へ送信する。セッション延長鍵の送信は、例えばクライアント１４とサーバ１８との間のログイン段階の間に行われてもよい。
【００７６】
その他の実施形態によると、予期された認証データと受信したデータとの照合（サーバ１８により実行される）の前に、トークン１２の代わりに、バックエンドシステムであるその他のサーバがセッション延長鍵をサーバ１８へ提供する。
クライアント１４は、対応する作成された署名及び証明書を受信する。クライアント１４は証明書を保存する。
【００７７】
次に、クライアント１４は、対応する作成された署名及び証明書を伴うデータを認証させるためのリクエスト２１４をサーバ１８へ送信する。
サーバ１８（及びより正確にはサーバ１８により動作する認証アプリケーション）は、対応する作成された署名及び証明書を受信する。サーバ１８は証明書からセッション延長鍵を取り出す。
【００７８】
サーバ１８は、サーバ１８への更なるアクセスを許可又は拒否するために、通信相手から受信した（又は受信しなかった）データが最後に保存した認証データと一致するか否かを分析する。
トークン１２がＰＣ１４に接続していない場合、又はそれ以上接続しない場合は、サーバ１８はクライアント１４を介してトークン１２から何らかのデータを受信することはなく、そこでサーバ１８はオープン通信セッションを自動的に閉じる。オープン通信セッションは停止し、それにより権限のないユーザ及び／又はソフトウェアから攻撃を受けるリスクは減少する。
【００７９】
サーバ１８はセッション延長鍵を使用することにより、通信相手から受信した、チャレンジの署名であるデータを優先的に解読する。サーバ１８は、認証データである作成され保存されたチャレンジと比較するための解読されたデータを取得する。解読したデータが作成したチャレンジである場合は、認証は成功であり、サーバ１８はその他のチャレンジを作成して通信セッションタイマを再始動することで、通信相手とのデータの送受信を続行することを許可する。
【００８０】
認証が成功である場合は、サーバ１８は、少なくとも記録されたデータである最後に作成したチャレンジ及び最後に受信したセッション延長鍵と関連するオープン通信セッションの識別子を、メモリ１１０に保存されたデータベースに保存することを許可する。
そうではない場合、即ち、サーバ１８がいかなるデータも受信しない場合、又は解読したデータが作成したチャレンジではない場合には、通信相手は認証されず、サーバ１８はオープン通信セッションを自動的に閉じてそれ以上の通信相手とのデータ交換を禁止する。
サーバ１８によって実行された比較の結果に基づき、サーバ１８は、好ましくはクライアント１４へ、比較結果、即ち認証が成功であるか、又は失敗であるかのどちらかを含むメッセージ２１６を返送する。
【００８１】
ＰＣユーザがクライアント１４を介してサーバ１８と通信する必要があり、トークン１２が認識されている間は、ＰＣ１４（マイクロプロセッサ）は、上述の操作を繰り返すことによりオープン通信セッションを延長するためのスクリプトを実行する。より正確には、ＰＣ１４は定期的にサーバ１８から新しいチャレンジを要求及び取得し、トークン１２から対応する署名を要求及び取得し、そしてサーバ１８へ署名を送信して対応する成功の認証結果を受信する。各許可された時間延長において、サーバ１８は、最後の終了時間値に所定の延長時間値を加えることでオープン通信セッションの対応する終了時間値を算出する。一方では、クライアント１４とサーバ１８は、チャレンジを取得するためのリクエスト２６及びデータを認証するためのリクエスト２１４と、対応するレスポンス２８及び２１６とを更に通信し、もう一方では、クライアント１４とトークン１２は、トークン１２にフォーマット化済みハッシュ化チャレンジへの署名を要求するコマンド２１０と、対応するレスポンス２１２とを更に通信する。
【００８２】
最後に作成された（サーバ１８側に保存された）オープン通信セッションの終了時間値を一旦受信すると、サーバ１８はクライアント１４から送信されるいかなるリクエストにもそれ以上応答しない。サーバ１８は、オープン通信セッションが終了したことを後に通知するメッセージをクライアント１４へ返送してもよい。通信セッションは、最後の延長時間値に従って終了する。最後の延長時間値は、最初の延長時間値又は更なる延長時間値のどちらかである。
【００８３】
サーバ１８は、オープン通信セッションの間、クライアント１４から送信されたリクエストが、通信セッションタイマが最後に作成された終了時間に達するよりも前に受信されたかを検証する。もしそうである場合には、サーバ１８は受信したリクエストに応答する。
本発明により、クライアント１４とサーバ１８との間のオープン通信セッションの維持をクライアント１４のみに任せる必要がなくなる。実際、予期された認証データがクライアント１４から送信されない場合には、すぐにサーバ１８はオープン通信セッションを自動的に閉じる。
【００８４】
上述の実施形態は、本発明の精神から逸脱せずに様々な変更がなされてもよい。
例えば、第１の実施形態によると、一旦サーバ１８にログインすると、セッション延長スクリプトがサーバ１８から提供された各ページに取り込まれる。しかしながら、このような第１の実施形態は、各ページごとにＰＣ１４とトークン１２との間の通信を確立することを意味し、従って各ページのレンダリングの速度を低下させる。
【００８５】
第２の実施形態によると、一旦サーバ１８にログインすると、セッション延長スクリプトはサーバ１８から読み込まれた１つのページのみに取り込まれ、オープン通信セッションの間オープンの状態となる。このようにポップアップウィンドウとして単一のページを使用することにより、ＰＣ１４とトークン１２との間のデータ通信を最小化することが出来る。ポップアップウィンドウは、押された場合にオープン通信セッションを明確に閉じることを許可する指定された「ログアウト」ボタンを有していてもよい。サーバ１８へのログイン中にポップアップウィンドウを開くために、スクリプトであるｗｉｎｄｏｗ．ｏｐｅｎ（‘‘http://www.myserver.com/extend-session’’，‘‘ｓｅｓｓｉｏｎ−ｗｉｎｄｏｗ’’）を使用してもよい。
【図１】
2014503094.tif 000003
【図２】
2014503094.tif 000004
【国際調査報告】
2014503094.tif 000005
2014503094.tif 000006