(57)【特許請求の範囲】
【請求項１】
ブラウザを介してスマートカードリソースマネージャを有するホストコンピュータに接続されたスマートカードへのアクセスをユーザに提供する少なくとも１つのブラウザアドオンを実行する機能を有するブラウザ内から、中央処理ユニットとランダムアクセスメモリとを有するホストコンピュータ上で実行可能なクライアント側アプリケーション拡張プログラムであって、
ブラウザ拡張プログラムが、中央処理ユニットにスマートカード上のデータにアクセスするように指示する命令を含み、
命令が、第１のスレッドにおいて動作し、さらに、
ホストコンピュータに、少なくとも１つのブラウザアドオンを実行させてブラウザ拡張プログラムの関数を呼び出させるブラウザプラットフォーム独立アプリケーションプログラムインタフェースであって、スマートカード上のデータにアクセスするための少なくとも１つの関数を提供するアプリケーションプログラムインタフェースを備えるブラウザプラットフォーム独立インタフェースモジュールと、
ブラウザプラットフォーム独立インタフェースモジュールと、スマートカード上のデータにアクセスし関数呼び出しをスマートカードリソースマネージャに対応する呼び出しに変換するための少なくとも１つの関数に対する呼び出しをホストコンピュータに受信させるように動作可能な関数処理モジュールを有するスマートカードリソースマネージャとに接続されたブラウザプラットフォーム依存ラッパモジュールとを含み、
ブラウザプラットフォーム依存ラッパモジュールは、スマートカードリソースマネージャに送信されたコマンドに応答してスマートカードから受ける応答に応じてホストコンピュータを動作可能にさせるコールバック関数を含み、
スマートカードリソースマネージャに対する関数呼び出しが、関数呼び出しの実行のための新たなスレッドをホストコンピュータに生成させ、スマートカードリソースマネージャに送信されたコマンドの実行が終了したときに、コールバック関数において、ホストコンピュータに対して制御を第１のスレッドに戻すように指示する、クライアント側アプリケーション拡張プログラム。
【請求項２】
ブラウザプラットフォーム独立インタフェースモジュールおよびブラウザプラットフォーム依存ラッパモジュールが、ホストコンピュータによりブラウザにロードされる命令を含む、請求項１に記載のクライアント側アプリケーション拡張プログラム。
【請求項３】
ブラウザプラットフォーム依存ラッパモジュールが、スマートカードにアクセスするためにプラットフォーム固有のスマートカードリソースマネージャ関数をホストコンピュータに呼び出させるブラウザプラットフォーム依存命令を含む、請求項１に記載のクライアント側アプリケーション拡張プログラム。
【請求項４】
ブラウザプラットフォーム依存ラッパモジュールが、スマートカードリソースマネージャにより送信されたスマートカードのイベントをホストコンピュータに検出させる、請求項１に記載のクライアント側アプリケーション拡張プログラム。
【請求項５】
ブラウザプラットフォーム独立ラッパモジュールが、ブラウザプラットフォーム依存ラッパモジュールを介してスマートカードリソースマネージャにより送信されたスマートカードのイベントをホストコンピュータに受信させる、請求項４に記載のクライアント側アプリケーション拡張プログラム。
【請求項６】
スマートカードのイベントが、カード挿入、カード取り外し、トランザクション開始、トランザクション終了を含む、請求項５に記載のクライアント側アプリケーション拡張プログラム。
【請求項７】
関数呼び出しが、スマートカードへのメッセージ送信およびスマートカードからの対応する応答の受信を含む、請求項１に記載のクライアント側アプリケーション拡張プログラム。
【請求項８】
ブラウザ拡張プログラムが、ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることをホストコンピュータに検出させ、ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることの検出に対し、ジャバスクリプトとスマートカードとの間の対話に関するユーザの承認または非承認をホストコンピュータに取得させ、ユーザの承認に対し、対話を続行することをホストコンピュータに許可させ、ユーザの非承認に対し、対話を続行することをホストコンピュータに拒否させる指示をさらに含む、請求項１に記載のクライアント側アプリケーション拡張プログラム。
【請求項９】
ブラウザ拡張プログラムが、ユーザの承認に対し、スマートカードとの対話が許可されたウェブサイトのリストに当該ウェブサイトをホストコンピュータに追加させる指示をさらに含む、請求項８に記載のクライアント側アプリケーション拡張プログラム。
【請求項１０】
ブラウザ拡張プログラムが、スマートカードとの対話が許可されたウェブサイトの、スマートカードとの対話が許可されたウェブサイトのリストからウェブサイトを削除するコードを包含するリストをホストコンピュータに管理させる指示をさらに含む、請求項８に記載のクライアント側アプリケーション拡張プログラム。
【請求項１１】
ブラウザ拡張プログラムが、ユーザの拒否に対し、スマートカードとの対話が許可されていないウェブサイトのリストに当該ウェブサイトをホストコンピュータに追加させる指示をさらに含む、請求項８に記載のクライアント側アプリケーション拡張プログラム。
【請求項１２】
ブラウザ拡張プログラムが、スマートカードとの対話が許可されていないウェブサイトの、スマートカードとの対話が許可されていないウェブサイトのリストからウェブサイトを削除するコードを包含するリストをホストコンピュータに管理させる指示をさらに含む、請求項１１に記載のクライアント側アプリケーション拡張プログラム。
【請求項１３】
ブラウザ拡張プログラムが、ジャバスクリプトとスマートカードとの間の対話に関する承認または非承認を表示することをユーザに許容するユーザ対話ウィンドウをホストコンピュータに表示させる指示をさらに含む、請求項８に記載のクライアント側アプリケーション拡張プログラム。
【請求項１４】
ホストコンピュータに接続されたスマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法であって、ホストコンピュータは、中央処理ユニットおよびランダムアクセスメモリと、スマートカードリソースマネージャと、少なくとも１つのブラウザアドオンを実行する機能を有するブラウザとを有し、
ホストコンピュータによって、スマートカード上のデータへの、スマートカードリソースマネージャを介するアクセスを要求するブラウザアプリケーションを実行することと、
ホストコンピュータによって、ブラウザアプリケーションによる要求に応答して、スマートカード上のデータにアクセスすることと、
ホストコンピュータによって、スマートカードリソースマネージャインタフェースブラウザ拡張プログラムに対するアクセス呼び出しを行うための少なくとも１つのメソッドを提供するインタフェースオブジェクトを、スクリプトモジュールからインスタンス化することと、
ホストコンピュータによって、第１のスレッドにおいて、インタフェースオブジェクトのメソッドにおける呼び出しを行うことと、
ホストコンピュータによって、インタフェースオブジェクトのメソッドにおける呼び出しの受信に応答して、関数呼び出しの実行のための新たなスレッドにおいて、スマートカードリソースマネージャインタフェースブラウザ拡張プログラムにおける呼び出しを行い、スマートカードリソースマネージャに送信されたコマンドの実行が終了したときに、スマートカードリソースマネージャに送信されたコマンドに応答してスマートカードから受ける応答に応じるように動作可能なコールバック関数において、ホストコンピュータに対して制御を第１のスレッドに戻すように指示することと、
ホストコンピュータによって、インタフェースオブジェクトのメソッドにおける呼び出しの受信に応答して、スマートカードリソースマネージャインタフェースブラウザ拡張プログラムにおける呼び出しを行い、スマートカードリソースマネージャインタフェースブラウザ拡張プログラムにおける呼び出しの受信に応答して、スマートカードリソースマネージャインタフェースブラウザ拡張プログラムからスマートカードリソースマネージャに呼び出しを行い、スマートカードリソースマネージャからの応答を受信した場合に、スマートカードリソースマネージャからの応答を示す結果をブラウザウィンドウに表示することで、ブラウザを介してスマートカードデータへのユーザアクセスを提供すること
を含む、スマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法。
【請求項１５】
スマートカードリソースマネージャインタフェースブラウザ拡張プログラムが、スマートカードにアクセスするためのプラットフォーム固有のスマートカードリソースマネージャ関数をホストコンピュータに呼び出させるブラウザプラットフォーム依存命令を含む、請求項１４に記載のスマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法。
【請求項１６】
スマートカードリソースマネージャインタフェースブラウザ拡張プログラムにより、スマートカードリソースマネージャにより送信されたスマートカードイベントをホストコンピュータに検出させることをさらに含み、当該イベントの検出に応答して、ホストコンピュータが、ブラウザアプリケーションとスマートカードへの通信チャネルの確立とを実行する、請求項１４に記載のスマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法。
【請求項１７】
インタフェースオブジェクトが、スマートカードリソースマネージャインタフェースブラウザ拡張プログラムを使用してスマートカードリソースマネージャにより送信されたスマートカードイベントをホストコンピュータに受信させる、請求項１６に記載のスマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法。
【請求項１８】
スマートカードイベントが、カード挿入、カード取り外し、トランザクション開始、トランザクション終了を含む、請求項１７に記載のスマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法。
【請求項１９】
メソッドにおける呼び出しが、スマートカードへのメッセージ送信およびスマートカードからの対応する応答の受信を含み、スマートカードからの応答を受信した場合に、ホストコンピュータによって、メソッドにおける呼び出しを行う、請求項１４に記載のスマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法。
【請求項２０】
ブラウザ拡張プログラムが、
ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることをホストコンピュータに検出させ、
ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることの検出に応答して、ジャバスクリプトとスマートカードとの間の対話に関するユーザの承認または非承認をホストコンピュータに取得させ、
ユーザの承認に対し、対話を続行することをホストコンピュータに許可させ、
ユーザの非承認に対し、対話を続行することをホストコンピュータに拒否させることをさらに含む、請求項１４に記載のスマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法。
【請求項２１】
ホストコンピュータによって、ユーザの承認に対し、スマートカードとの対話が許可されたウェブサイトのリストに当該ウェブサイトを追加することをさらに含む、請求項２０に記載のスマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法。
【請求項２２】
ホストコンピュータによって、スマートカードとの対話が許可されたウェブサイトのリストを、スマートカードとの対話が許可されたウェブサイトのリストからウェブサイトを選択的に削除することを含んで管理することをさらに含む、請求項２１に記載のスマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法。
【請求項２３】
ホストコンピュータによって、ユーザの拒否に対し、スマートカードとの対話が許可されていないウェブサイトのリストに当該ウェブサイトを追加することをさらに含む、請求項２０に記載のスマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法。
【請求項２４】
ホストコンピュータによって、スマートカードとの対話が許可されていないウェブサイトのリストを、スマートカードとの対話が許可されていないウェブサイトのリストからウェブサイトを削除することを含んで管理することをさらに含む、請求項２３に記載のスマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法。
【請求項２５】
ホストコンピュータによって、ジャバスクリプトとスマートカードとの間の対話に関する承認または非承認を表示することをユーザに許容するユーザ対話ウィンドウを表示することをさらに含む、請求項２０に記載のスマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法。
【請求項２６】
スマートカードに接続されたホストコンピュータにより実行可能な命令が記憶されており、ホストコンピュータをスマートカードにアクセス可能にする命令を有するスマートカードリソースマネージャがロードされている、クライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体であって、
ホストコンピュータにロードされるときに、命令が、
各々がブラウザプラットフォーム独立インタフェースモジュールと、スマートカード上のデータにアクセスし、関数呼び出しをスマートカードリソースマネージャに対応する呼び出しに変換するための少なくとも１つの関数に対する呼び出しをホストコンピュータに受信させるように動作可能な関数処理モジュールを有するスマートカードリソースマネージャとに対するインタフェースを有する少なくとも１つのブラウザプラットフォーム依存ラッパモジュールと、
ホストコンピュータに、少なくとも１つのブラウザアドオンを実行させてブラウザ拡張プログラムの関数を呼び出させ、スマートカード上のデータにアクセスさせるための少なくとも１つの関数を提供するブラウザプラットフォーム独立アプリケーションプログラムインタフェースを備えるブラウザプラットフォーム独立インタフェースモジュールとを含み、
ブラウザプラットフォーム依存ラッパモジュールは、スマートカードリソースマネージャに送信されたコマンドに応答してスマートカードから受ける応答に応じてホストコンピュータを動作可能にさせるコールバック関数を含み、
スマートカードリソースマネージャに対する関数呼び出しが、関数呼び出しの実行のための新たなスレッドをホストコンピュータに生成させ、スマートカードリソースマネージャに送信されたコマンドの実行が終了したときに、コールバック関数において、ホストコンピュータに対して制御を第１のスレッドに戻すように指示する、コンピュータ読み取り可能記憶媒体。
【請求項２７】
ブラウザプラットフォーム独立インタフェースモジュールおよびブラウザプラットフォーム依存ラッパモジュールが、ホストコンピュータによりブラウザにロードされる命令を含む、請求項２６に記載のクライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体。
【請求項２８】
ブラウザプラットフォーム依存ラッパモジュールが、スマートカードにアクセスするためにプラットフォーム固有のスマートカードリソースマネージャ関数をホストコンピュータに呼び出させるブラウザプラットフォーム依存命令を含む、請求項２６に記載のクライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体。
【請求項２９】
ブラウザプラットフォーム依存ラッパモジュールが、スマートカードリソースマネージャにより送信されたスマートカードのイベントをホストコンピュータに検出させる、請求項２６に記載のクライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体。
【請求項３０】
ブラウザプラットフォーム独立ラッパモジュールが、ブラウザプラットフォーム依存ラッパモジュールを介してスマートカードリソースマネージャにより送信されたスマートカードのイベントをホストコンピュータに受信させる、請求項２９に記載のクライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体。
【請求項３１】
スマートカードのイベントが、カード挿入、カード取り外し、トランザクション開始、トランザクション終了を含む、請求項３０に記載のクライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体。
【請求項３２】
関数呼び出しが、スマートカードへのメッセージ送信およびスマートカードからの対応する応答の受信を含む、請求項２６に記載のクライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体。
【請求項３３】
ブラウザ拡張プログラムが、ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることをホストコンピュータに検出させ、ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることの検出に対し、ジャバスクリプトとスマートカードとの間の対話に関するユーザの承認または非承認をホストコンピュータに取得させ、ユーザの承認に対し、対話を続行することをホストコンピュータに許可させ、ユーザの非承認に対し、対話を続行することをホストコンピュータに拒否させる指示をさらに含む、請求項２６に記載のクライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体。
【請求項３４】
ブラウザ拡張プログラムが、ユーザの承認に対し、スマートカードとの対話が許可されたウェブサイトのリストに当該ウェブサイトをホストコンピュータに追加させる指示をさらに含む、請求項３３に記載のクライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体。
【請求項３５】
ブラウザ拡張プログラムが、スマートカードとの対話が許可されたウェブサイトの、スマートカードとの対話が許可されたウェブサイトのリストからウェブサイトを削除するコードを包含するリストをホストコンピュータに管理させる指示をさらに含む、請求項３４に記載のクライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体。
【請求項３６】
ブラウザ拡張プログラムが、ユーザの拒否に対し、スマートカードとの対話が許可されていないウェブサイトのリストに当該ウェブサイトをホストコンピュータに追加させる指示をさらに含む、請求項３３に記載のクライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体。
【請求項３７】
ブラウザ拡張プログラムが、スマートカードとの対話が許可されていないウェブサイトの、スマートカードとの対話が許可されていないウェブサイトのリストからウェブサイトを削除するコードを包含するリストをホストコンピュータに管理させる指示をさらに含む、請求項３６に記載のクライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体。
【請求項３８】
ブラウザ拡張プログラムが、ジャバスクリプトとスマートカードとの間の対話に関する承認または非承認を表示することをユーザに許容するユーザ対話ウィンドウをホストコンピュータに表示させる指示をさらに含む、請求項３３に記載のクライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体。
【請求項３９】
ブラウザを介してスマートカードリソースマネージャを有するホストコンピュータに接続されたスマートカードへのアクセスをユーザに提供する少なくとも１つのブラウザアドオンを実行する機能を有するブラウザ内から、中央処理ユニットとランダムアクセスメモリとを有するホストコンピュータ上で実行可能なクライアント側アプリケーション拡張プログラムであって、
ブラウザ拡張プログラムが、中央処理ユニットに対し、第１のスレッドにおいて実行可能なスマートカード上のデータにアクセスするように指示する命令を含み、
命令が、
ホストコンピュータに、少なくとも１つのブラウザアドオンを実行してブラウザ拡張プログラムの関数を呼び出させるブラウザプラットフォーム独立アプリケーションプログラムインタフェースであって、スマートカード上のデータにアクセスするための少なくとも１つの関数を提供するアプリケーションプログラムインタフェースを備えるブラウザプラットフォーム独立インタフェースモジュールと、
ブラウザプラットフォーム独立インタフェースモジュールと、スマートカード上のデータにアクセスし関数呼び出しをスマートカードリソースマネージャに対応する呼び出しに変換するための少なくとも１つの関数に対する呼び出しをホストコンピュータに受信させるように動作可能な関数処理モジュールを有するスマートカードリソースマネージャとに接続されたブラウザプラットフォーム依存ラッパモジュールと、
ホストコンピュータに、スマートカードリソースマネージャの指示を実行させて、スマートカードとの通信接続を確立させるように動作可能な接続モジュールとを含み、
ブラウザプラットフォーム依存ラッパモジュールは、スマートカードリソースマネージャに送信されたコマンドに応答してスマートカードから受ける応答に応じてホストコンピュータを動作可能にさせるコールバック関数を含み、
接続モジュールの実行により、スマートカードに対する接続を確立するスマートカードリソースマネージャの指示の実行のための新たなスレッドをホストコンピュータに生成させ、スマートカードに対する接続を確立するスマートカードリソースマネージャの指示の実行が終了したときに、コールバック関数において、ホストコンピュータに対して制御を第１のスレッドに戻すように指示する、クライアント側アプリケーション拡張プログラム。
【請求項４０】
ホストコンピュータに接続されたスマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法であって、ホストコンピュータは、中央処理ユニットおよびランダムアクセスメモリと、スマートカードリソースマネージャと、少なくとも１つのブラウザアドオンを実行する機能を有するブラウザとを有し、
ホストコンピュータによって、スマートカード上のデータへの、スマートカードリソースマネージャを介するアクセスを要求するブラウザアプリケーションを実行することと、
ホストコンピュータによって、ブラウザアプリケーションによる要求に応答して、スマートカード上のデータに、アクセスすることと、
ホストコンピュータによって、スクリプトモジュールから、スマートカードリソースマネージャインタフェースブラウザ拡張プログラムに対するアクセス呼び出しを行うための少なくとも１つの方法を提供するインタフェースオブジェクトをインスタンス化することと、
ホストコンピュータによって、インタフェースオブジェクトのメソッド上で、第１のスレッドにおける呼び出しを行い、スマートカード上のデータにアクセスすることと、
ホストコンピュータによって、スマートカード上のデータにアクセスする、インタフェースオブジェクトのメソッド上の呼び出しの受信に応答して、スマートカードリソースマネージャインタフェースブラウザ拡張プログラムにおける呼び出しを行うことと、
ホストコンピュータによって、スマートカードリソースマネージャインタフェースブラウザ拡張プログラムにおける呼び出しの受信に応答して、関数呼び出しの実行のための新たなスレッドを生成し、スマートカードリソースマネージャに送信されたコマンドの実行が終了したときに、スマートカードリソースマネージャに送信されたコマンドに対してスマートカードから受ける応答に対して動作可能なコールバック関数において、ホストコンピュータに対して制御を第１のスレッドに戻すように指示することにより、スマートカードリソースマネージャインタフェースブラウザ拡張プログラムからスマートカードリソースマネージャに呼び出しを行うことと、
ホストコンピュータによって、スマートカードリソースマネージャからの応答を受信することと、
ホストコンピュータによって、スマートカードリソースマネージャからの応答を示す結果をブラウザウィンドウに表示することで、ブラウザを介してスマートカードデータへのユーザアクセスを提供することと
を含む、方法。
【請求項４１】
スマートカードに接続されたホストコンピュータにより実行可能な命令が記憶されており、ホストコンピュータをスマートカードにアクセス可能にする命令を有するスマートカードリソースマネージャがロードされている、クライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体であって、ホストコンピュータにロードされるときに、命令が、
各々がブラウザプラットフォーム独立インタフェースモジュールと、スマートカード上のデータにアクセスし、関数呼び出しをスマートカードリソースマネージャに対応する呼び出しに変換するための少なくとも１つの関数に対する呼び出しをホストコンピュータに受信させるように動作可能な関数処理モジュールを有するスマートカードリソースマネージャとに対するインタフェースを有する少なくとも１つのブラウザプラットフォーム依存ラッパモジュールと、
ホストコンピュータに、少なくとも１つのブラウザアドオンを実行させてブラウザ拡張プログラムの関数を呼び出させ、スマートカード上のデータにアクセスさせるための少なくとも１つの関数を提供するブラウザプラットフォーム独立アプリケーションプログラムインタフェースを備えるブラウザプラットフォーム独立インタフェースモジュールと、
ホストコンピュータに、スマートカードリソースマネージャの命令を実行させて、スマートカードとの通信接続を確立させるように動作可能な接続モジュールとを含み、
ブラウザプラットフォーム依存ラッパモジュールは、スマートカードリソースマネージャに送信されたコマンドに応答してスマートカードから受ける応答に応じてホストコンピュータを動作可能にさせるコールバック関数を含み、
ホストコンピュータがスマートカードにアクセスすることを可能にする命令は、第１のスレッドにおいて実行可能であり、
接続モジュールの実行により、スマートカードに対する接続を確立するスマートカードリソースマネージャの命令の実行のための新たなスレッドをホストコンピュータに生成させ、スマートカードに対する接続を確立するスマートカードリソースマネージャの指示の実行が終了したときに、コールバック関数において、ホストコンピュータに対して制御を第１のスレッドに戻すように指示する、コンピュータ読み取り可能記憶媒体。
【請求項４２】
ブラウザを介してスマートカードリソースマネージャを有するホストコンピュータに接続されたスマートカードへのアクセスをユーザに提供する少なくとも１つのブラウザアドオンを実行する機能を有するブラウザ内から、中央処理ユニットとランダムアクセスメモリとを有するホストコンピュータ上で実行可能なクライアント側アプリケーション拡張プログラムであって、ブラウザ拡張プログラムが、
中央処理ユニットにスマートカード上のデータにアクセスするように指示する命令を含み、
命令が、
ホストコンピュータに、少なくとも１つのブラウザアドオンを実行させてブラウザ拡張プログラムの関数を呼び出させるブラウザプラットフォーム独立アプリケーションプログラムインタフェースであって、スマートカード上のデータにアクセスするための少なくとも１つの関数を提供するアプリケーションプログラムインタフェースを備えるブラウザプラットフォーム独立インタフェースモジュールと、
ブラウザプラットフォーム独立インタフェースモジュールと、スマートカード上のデータにアクセスし関数呼び出しをスマートカードリソースマネージャに対応する呼び出しに変換するための少なくとも１つの関数に対する呼び出しをホストコンピュータに受信させるように動作可能な関数処理モジュールを有するスマートカードリソースマネージャとに接続されたブラウザプラットフォーム依存ラッパモジュールと、
ホストコンピュータに接続されたスマートカードに対応する適切なスマートカードドライバブラウザ拡張プログラムを取得するためのオンデマンドドライバモジュールであって、ホストコンピュータに、スマートカードからの識別ストリングを取得させてスマートカードドライバサーバに識別ストリングを送信させ、スマートカードドライバサーバから、スマートカード用のドライバが利用可能であるかを示す第１の応答を取得させる命令を含むオンデマンドドライバモジュールと
を含み、
スマートカード用のドライバが利用可能であるかを示す応答が、スマートカードドライバサーバからのさらなる識別コマンドを含む場合に、スマートカードにさらなる識別コマンドを実行するようにホストコンピュータに指示させる命令と、さらなる識別コマンドに対するスマートカードからの応答をホストコンピュータに受信させる命令と、スマートカードからの応答をスマートカードドライバサーバに、ホストコンピュータに送信させる命令と、スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージを含むスマートカードドライバサーバからの第２の応答をホストコンピュータに受信させる命令と
を含む、クライアント側アプリケーション拡張プログラム。
【請求項４３】
第１の応答が、スマートカードに対応するドライバブラウザアドインを含む、請求項４２に記載のクライアント側アプリケーション拡張プログラム。
【請求項４４】
第１の応答が、スマートカードが最終的に識別不可能であることを示す表示と、スマートカードが実行するコマンドとを含み、スマートカードからの期待応答が最終的にカードの識別を決定するものである、請求項４２に記載のクライアント側アプリケーション拡張プログラム。
【請求項４５】
スマートカードドライバブラウザ拡張プログラムが受信されまたはスマートカードドライバサーバからの応答メッセージがスマートカードがサポートされていないというメッセージで応答するまで、スマートカードの応答を送信するステップと、スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージを含むスマートカードドライバサーバからの応答を受信するステップと
をホストコンピュータに繰り返させる命令をさらに含む、請求項４２に記載のクライアント側アプリケーション拡張プログラム。
【請求項４６】
ホストコンピュータに接続されたスマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法であって、ホストコンピュータは、中央処理ユニットおよびランダムアクセスメモリと、スマートカードリソースマネージャと、少なくとも１つのブラウザアドオンを実行する機能を有するブラウザとを有し、
ホストコンピュータによって、スマートカード上のデータへの、スマートカードリソースマネージャを介するアクセスを要求するブラウザアプリケーションを実行することと、
ホストコンピュータによって、ブラウザアプリケーションによる要求に応答して、スマートカード上のデータにアクセスすることと、
ホストコンピュータによって、スクリプトモジュールから、スマートカードリソースマネージャインタフェースブラウザ拡張プログラムに対するアクセス呼び出しを行うための少なくとも１つの方法を提供するインタフェースオブジェクトをインスタンス化することと、
ホストコンピュータによって、インタフェースオブジェクトのメソッドにおける呼び出しを行うことと、
ホストコンピュータによって、インタフェースオブジェクトのメソッドにおける呼び出しの受信に応答して、スマートカードリソースマネージャインタフェースブラウザ拡張プログラムにおける呼び出しを行うことと、
ホストコンピュータによって、スマートカードリソースマネージャインタフェースブラウザ拡張プログラムにおける呼び出しの受信に応答して、スマートカードリソースマネージャインタフェースブラウザ拡張プログラムからスマートカードリソースマネージャに呼び出しを行うことと、
ホストコンピュータによって、スマートカードリソースマネージャからの応答を受信することと、
ホストコンピュータによって、スマートカードリソースマネージャからの応答を示す結果をブラウザウィンドウに表示し、それによりブラウザを介してスマートカードデータへのユーザアクセスを提供することと、
ホストコンピュータによって、スマートカードから識別ストリングを取得し、スマートカードドライバサーバに識別ストリングを送信することと、
ホストコンピュータによって、スマートカードドライバサーバから、スマートカード用のドライバが利用可能であるかを示す第１の応答を取得することと、
ホストコンピュータによって、スマートカード用のドライバが利用可能であるかを示す応答がスマートカードドライバサーバからのさらなる識別コマンドを含むことに応答して、スマートカードにさらなる識別コマンドを実行するように指示する命令を実行することと、
ホストコンピュータによって、スマートカードからのさらなる識別コマンドに対する応答を受信することと、
ホストコンピュータによって、スマートカードドライバサーバに対し、スマートカードからの応答を送信することと、
ホストコンピュータによって、スマートカードドライバサーバから、スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージを含む第２の応答を受信することと
を含む、スマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法。
【請求項４７】
第１の応答が、スマートカードに対応するドライバブラウザアドインを含む、請求項４６に記載のスマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法。
【請求項４８】
第１の応答が、スマートカードが最終的に識別不可能であることを示す表示と、スマートカードが実行するコマンドとを含み、スマートカードからの期待応答が最終的にカードの識別を決定するものである、請求項４６に記載のスマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法。
【請求項４９】
ホストコンピュータによって、スマートカードドライバブラウザ拡張プログラムが受信されまたはスマートカードドライバサーバからの応答メッセージがスマートカードがサポートされていないとのメッセージで応答するまで、スマートカードの応答を送信するステップと、スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージのいずれかを含むスマートカードドライバサーバからの応答を受信するステップとを繰り返すことをさらに含む、請求項４６に記載のスマートカードに記憶されたデータにアクセスするブラウザを使用する、コンピュータシステムの動作方法。
【請求項５０】
スマートカードに接続されたホストコンピュータにより実行可能な命令が記憶されており、ホストコンピュータをスマートカードにアクセス可能にする命令を有するスマートカードリソースマネージャがロードされている、クライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体であって、ホストコンピュータにロードされるときに、命令が、
各々がブラウザプラットフォーム独立インタフェースモジュールと、スマートカード上のデータにアクセスし、関数呼び出しをスマートカードリソースマネージャに対応する呼び出しに変換するための少なくとも１つの関数に対する呼び出しをホストコンピュータに受信させるように動作可能な関数処理モジュールを有するスマートカードリソースマネージャとに対するインタフェースを有する少なくとも１つのブラウザプラットフォーム依存ラッパモジュールと、
ホストコンピュータに、少なくとも１つのブラウザアドオンを実行させてブラウザ拡張プログラムの関数を呼び出させ、スマートカード上のデータにアクセスさせるための少なくとも１つの関数を提供するブラウザプラットフォーム独立アプリケーションプログラムインタフェースを備えるブラウザプラットフォーム独立インタフェースモジュールと、
ホストコンピュータに接続されたスマートカードに対応する適切なスマートカードドライバブラウザ拡張プログラムを取得するためのオンデマンドドライバモジュールであって、ホストコンピュータに、スマートカードからの識別ストリングを取得させてスマートカードドライバサーバに識別ストリングを送信させ、スマートカードドライバサーバから、スマートカード用のドライバが利用可能であるかを示す第１の応答を取得させる命令を含むオンデマンドドライバモジュールと
を提供する命令を含み、
スマートカード用のドライバが利用可能であるかを示す応答が、スマートカードドライバサーバからのさらなる識別コマンドを含む場合に、スマートカードにさらなる識別コマンドを実行するようにホストコンピュータに指示させる命令と、さらなる識別コマンドに対するスマートカードからの応答をホストコンピュータに受信させる命令と、スマートカードからの応答をスマートカードドライバサーバに、ホストコンピュータに送信させる命令と、スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージを含むスマートカードドライバサーバからの第２の応答をホストコンピュータに受信させる命令とを含む、
クライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体。
【請求項５１】
第１の応答が、スマートカードに対応するドライバブラウザアドインを含む、請求項５０に記載のクライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体。
【請求項５２】
第１の応答が、スマートカードが最終的に識別不可能であることを示す表示と、スマートカードが実行するコマンドとを含み、スマートカードからの期待応答が最終的にカードの識別を決定するものである、請求項５０に記載のクライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体。
【請求項５３】
オンデマンドドライバモジュールが、
スマートカード用のドライバが利用可能であるかを示す応答が、スマートカードドライバサーバからのさらなる識別コマンドを含む場合に、
スマートカードにさらなる識別コマンドを実行するようにホストコンピュータに指示させる命令と、
さらなる識別コマンドに対するスマートカードからの応答をホストコンピュータに受信させる命令と、
スマートカードからの応答をスマートカードドライバサーバに、ホストコンピュータに送信させる命令と、
スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージを含むスマートカードドライバサーバからの第２の応答をホストコンピュータに受信させる命令と
を含む、請求項５０に記載のクライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体。
【請求項５４】
スマートカードドライバブラウザ拡張プログラムが受信されまたはスマートカードドライバサーバからの応答メッセージがスマートカードがサポートされていないとのメッセージで応答するまで、スマートカードの応答を送信するステップと、スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージのいずれかを含むスマートカードドライバサーバからの応答を受信するステップとをホストコンピュータに繰り返させる命令をさらに含む、請求項５３に記載のクライアント／サーバ関係のサーバとしてアクセス可能なコンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、スマートカードへのアプリケーションプログラムのアクセスに関し、より詳細には、ウェブブラウザで実行するユーザアプリケーションがスマートカードの機能およびデータにアクセスできるシステムおよび方法に関する。
【背景技術】
【０００２】
スマートカードは、入出力装置がない小型の安全なパーソナルコンピュータである。スマートカード用の典型的なアプリケーションは、プライベートデータを記憶するユーザ認証を含み、電子財布として使用する。これらのアプリケーションや他のアプリケーションでは、スマートカードと対話する通常モードは、スマートカードが接続されるホストコンピュータ上で実行するホストアプリケーションからのモードである。
【０００３】
スマートカードベースの公開鍵基盤の機能へのホストアプリケーションのアクセスは、例えば、典型的には、アプリケーションプログラムから呼び出し可能なアプリケーションプログラムインタフェースを提供するミドルウェアをインストールすることで達成される。次に、ミドルウェアは、典型的にはある形態のリーダを介してスマートカードのハードウェアとの対話を実行する。一般に利用可能なアーキテクチャは、ＰＣ／ＳＣワークグループからのＰＣ／ＳＣ仕様に基づく。図１は、ＰＣ／ＳＣ仕様の実装のハイレベルのブロック図である。ホストコンピュータ１０３上で実行するスマートカード認識アプリケーション１０１は、ホストコンピュータミドルウェア１０５とスマートカードリソースマネージャ１０７を介してスマートカード１０４のａからｄにアクセスする。スマートカードリソースマネージャ１０７は、次に、ホストコンピュータ１０３が接続されている種々のカードリーダ１１１ａから１１１ｄのドライバ１０９ａから１０９ｄと対話する。
【０００４】
このアーキテクチャには、スマートカードのデプロイメントに関して複数の問題がある。これらの問題は、ミドルウェアコンポーネントをホストコンピュータにロードし、ミドルウェアコンポーネントに対して更新を行わなければならないという要件があることである。これは、スマートカードがウェブベースのアプリケーションと共に使用される時には特に望ましくない要件となる。
【０００５】
ますます、ウェブアプリケーションは一般的になってきたので、インターネット経由で利用可能なデータやサービスへのプラットフォーム独立のアクセスが可能である。例えば、オンライン映画レンタルやウェブベースの電子メールアプリケーションなどのウェブサービスが非常に普及してきた。ウェブ接続されたコンピュータをほぼユビキタスにデプロイメントし、ウェブベースのアプリケーションを幅広く適用する利点の１つは、このような解決策によりユーザがユーザ自身のコンピュータに対する仮想範囲から抜け出せることにある。例えば、ＧｏｏｇｌｅのＧメールなどのウェブベースの電子メールサービスを使用して、これらのサービスの加入者はウェブに接続されている任意のコンピュータから電子メールにアクセスできる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ここで、ウェブベース環境にスマートカードを追加することを考察する。ユーザが、例えば、パスワード、アカウント情報またはデジタル証明などを記憶するため、または特定のセキュリティ機能、例えば、暗号化サービスを実行するためのスマートカードを有し、ユーザがユーザ所有のコンピュータ以外のコンピュータ上でウェブベースのあるトランザクションを実行しながら、スマートカードを使用するのを望む場合、ユーザはユーザが使用したい特定のホストコンピュータ１０３上にホストコンピュータミドルウェア１０５と、場合により、適切なＩＦＤドライバ１０９をインストールしなければならなくなる。ホストコンピュータの所有者は、ミドルウェアソフトウェアをインストールするのに十分なユーザ権限を許可しなかった可能性がある。さらに、所有者は、このようなミドルウェアソフトウェアがコンピュータにインストールされるのを望まない可能性がある、または当該コンピュータがパブリックコンピュータである場合、例えば空港の売店や図書館にあるコンピュータである場合、ミドルウェアコンポーネントをインストールする権限を与えられている人でも利用できない可能性もある。この問題は、ユーザがスマートカードを使用する妨げになる。それは、セキュリティソリューションのスマートカードは、機密保持が特に高重要度である環境を条件とするからである。同様に、ミドルウェアを更新する際にも、類似の問題がある。
【０００７】
さらに問題なのは、ウェブブラウザがミドルウェアに対するインタフェースを暴露する方法である。人気のあるウェブブラウザ、例えば、Ｆｉｒｅｆｏｘ、Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒは、ミドルウェアに対するさまざまなインタフェースを備えるので、このようなミドルウェアに依存するウェブアプリケーションは、ウェブブラウザ認識アプリケーションである必要がある。つまり、ウェブアプリケーションは、各ウェブブラウザに固有に開発されなければならない、またはどのウェブブラウザが使用中であるか、どのウェブブラウザが適切なミドルウェアに対応する機能があるのかを判断するための内部チェックを行わなければならない。
【０００８】
これらの問題は、非常に不利である。ウェブは、広く使用されている多くのタイプのトランザクションの仮想市場となっているが、同時に、プライベートアカウントの不正使用、個人情報窃盗、プライベートデータの窃盗などのセキュリティ問題を招く傾向がある。スマートカードは、このような問題に対処するのに理想的に適している。例えば、スマートカードは、ユーザの証明書を安全に記憶するのに使用され、ログインプロセスに不可欠なコンポーネントとして使用されて、二要素認証を行うことができる。しかしながら、ユーザがウェブサービスにアクセスする際に使用したいホストコンピュータにミドルウェアをインストールしなければならないことで、スマートカードを上述のように使用する際に効果的に使用するのを妨げてしまう。
【課題を解決するための手段】
【０００９】
スマートカードは、有利には、暗号化サービスと共に使用されてもよい。このようなスマートカードはユーザの秘密鍵およびデジタル証明を記憶するのに使用される場合がある。さらに、スマートカードは、例えば、メッセージを暗号化する、メッセージを復号化する、ユーザのログインを行う、ユーザの秘密鍵を使用して文書にデジタル署名するなどの暗号化操作を実行するのに使用される場合もある。スマートカードのデプロイメントに関する上述の問題は、暗号装置としてスマートカードを使用する際にはさらに大きな問題となる。
【００１０】
ハードウェアのトークンおよびソフトウェアセキュリティ装置もさまざまなインタフェースを有し、さまざまなプロトコルを使用するので、業界は、ハードウェアの区別なしに、証明書を記憶し証明書にアクセスする、データに署名する、またはデータを暗号化するなど暗号化機能にアクセスするための仕様書の作成に取り組んできた。このハードウェアの区別のなく暗号化機能にアクセスするのに、競合する２つの主な標準規格、Ｃｒｙｐｔｏ  ＡＰＩ（ＣＡＰＩ）とＰＫＣＳ＃１１とがある。これら２つの標準規格は、さまざまなオペレーティングシステムのプラットフォームやウェブブラウザに広く関連付けられている。ＣＡＰＩはＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ（Ｒｅｄｍｏｎｄ、Ｗａｓｈｉｎｇｔｏｎ）のＷｉｎｄｏｗｓ（登録商標）のオペレーティングシステムで使用される標準規格で、Ｗｉｎｄｏｗｓ（登録商標）のオペレーティングシステムの標準的な機能として提供されている。これは、ＭｉｃｒｏｓｏｆｔのＩｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒに対して実装される暗号化規格である。ＲＳＡ  Ｌａｂｏｒａｔｏｒｉｅｓにより開発されたＰＫＣＳ＃１１は、複数のデスクトップのオペレーティングシステムで利用可能であり、Ｍｏｚｉｌｌａ  ＦｏｕｎｄａｔｉｏｎのＦｉｒｅｆｏｘウェブブラウザ経由でネイティブに利用できる。これら２つのアプローチには、類似点も相違点もある。
【００１１】
スマートカードを使用して暗号化サービスを提供する従来のアプローチでは、開発者が、電子メールクライアントやデスクトップログインまたはＶｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ（ＶＰＮ）などの他のアプリケーションにプラグインとしてインストールされるＣＡＰＩかＰＫＣＳ＃１１かのいずれかのためのホストモジュールを開発するものであった。これらのモジュールは、基本のオペレーティングシステム設定の一部ではない。
【００１２】
上述の内容から、ウェブアプリケーションがスマートカードにアクセスするための改良方法が必要であることは明らかである。
【図面の簡単な説明】
【００１３】
【図１】ＰＣ／ＳＣ仕様の実装のハイレベルのブロック図である。
【図２】図１のスマートカードのアーキテクチャのハイレベルのブロック図である。
【図３】ウェブブラウザアプリケーションがスマートカードと対話する一実施形態を示すブロック図である。
【図４】スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラムが２つの部分、スマートカードリソースマネージャラッパウェブブラウザ拡張機能とスマートカードアプリケーションインタフェーススクリプトモジュールとに分割される、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラムの一実施形態を示すブロック図である。
【図５】ユーザがウェブページの実行を試みようとする可能性のあるネットワークの概略図である。
【図６】スマートカードと通信するためのＳＣｏｎｎｅｃｔ．ＰＣＳＣクラスのインスタンス化およびその使用を示すブロック図である。
【図７】ユーザがスマートカードの使用が必要なウェブアプリケーションの実行を試みる時のメッセージフローを示すタイミングシーケンス図である。
【図８】スマートカードに対して非同期コマンドを作成する時に発生するメッセージフローおよびそのタイミングを示すタイミングシーケンス図である。
【図９ａ】リモートコンピュータシステムで実行するリモートサーバからカード固有ドライバを取得するためのシーケンスを示すタイミングシーケンス図である。
【図９ｂ】リモートコンピュータシステムで実行するリモートサーバからカード固有ドライバを取得するためのシーケンスを示すタイミングシーケンス図である。
【図１０】プロセスフローを示すタイミングシーケンス図である。
【図１１】ユーザがウェブサイトからダウンロードされたジャバスクリプトを使用してスマートカードと対話するウェブサイトを承認または非承認することができるユーザダイアログウィンドウの一例を示す図である。
【図１２】ユーザがウェブサイトからダウンロードされたジャバスクリプトを使用してスマートカードと対話することが許可された、または許可されていないウェブサイトのリストを管理することができるユーザダイアログウィンドウの一例を示す図である。
【図１３】ウェブサイトからダウンロードされたジャバスクリプトを使用してウェブサイトにスマートカードと対話することを許可または許可しないプロセスフローを示すタイミングシーケンス図である。
【発明を実施するための形態】
【００１４】
以下の詳細な説明では、例として本発明が実施可能な特定の実施形態を示す添付の図面を参照する。これらの実施形態は、当業者が本発明を実施することができるように十分詳細に説明されている。本発明の種々の実施形態は、異なるけれども、必ずしも互いに排他的であるとは限らないことは理解されたい。例えば、１つの実施形態に関して本明細書で説明される特定の機能、構造、または特性は、本発明の精神および範囲から逸脱せずに、他の実施形態の中で実装されてもよい。さらに、各々の開示された実施形態の中の個々の要素の配置や構成は、本発明の精神および範囲から逸脱せずに、変更してもよいことは理解されたい。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではなく、本発明の範囲は添付の請求項によってのみ定義され、請求項が適用される全ての範囲の等価物と共に適切に解釈されるべきである。図面内では、複数の図にわたって同じ符号は同じまたは類似の機能性を指すものである。
【００１５】
本発明の一実施形態では、ウェブブラウザの拡張機能は、ほとんどのコンピュータで見られるウェブブラウザアプリケーションとスマートカードリソースマネージャ（ＰＣ／ＳＣ）との間のインタフェースを提供する。ウェブブラウザ拡張機能は、ウェブブラウザアプリケーションをスマートカードリソースマネージャから隔離する。さらに、ウェブブラウザ拡張機能は、スマートカードリソースマネージャを介して、ウェブブラウザアプリケーションと、ウェブブラウザがその中のウェブブラウザ拡張機能を実行中であるホストコンピュータ１０３に接続されたスマートカードとの間の通信パイプを提供する。
【００１６】
図３は、ウェブブラウザアプリケーションＡ３００ａがスマートカードＡ１０４ａと対話する一実施形態を示すブロック図である。先行技術の例では、各々のタイプのスマートカード１０４はスマートカードのタイプに固有のドライバを使用する。図３の実施形態では、好適な実施形態では、そのカード固有ドライバはスクリプトモジュール３０１として実装されている。カード固有ドライバ３０１がまだロードされていない場合、図９に関連して以下で説明するように、例えば、オンデマンドのＪａｖａ（登録商標）Ｓｃｒｉｐｔとして知られている技術を使用してロードされる。
【００１７】
カード固有ドライバ３０１は、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム３０３を介してスマートカード１０４ａと通信する。スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム３０３は、スマートカードリソースマネージャ１０７上でラッパとして機能するウェブブラウザスクリプト、例えば、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔスクリプトと組み合わされたウェブブラウザ拡張機能である。
【００１８】
スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム３０３は、ウェブアプリケーションが標準的なスマートカード１０４と通信できるようにする接続技術を提供する。ホスト（ＰＣ）アプリケーションは、ホストオペレーティングシステム内のＰＣ／ＳＣと呼ばれる専用の通信層を介してスマートカード１０４に接続する。同様に、スマートカード１０４と通信できるウェブページまたはアプリケーションのコンポーネントは、組み込みスクリプト、典型的にはＪａｖａ（登録商標）Ｓｃｒｉｐｔである。ウェブブラウザに直接組み込まれるか、またはプラグインを介して間接的に組み込まれない限り、ウェブページ内のスクリプトはホストマシンのハードウェアと通信できない。スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム３０３は、このような機能性を提供する従来のウェブブラウザの技術を使用する標準的なホスト通信フレームワークを使用して、ホストがウェブブラウザでウェブページを表示する際にこのウェブページ内のＪａｖａ（登録商標）Ｓｃｒｉｐｔとスマートカード１０４との間の通信チャネルを可能にする。スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム３０３は、ウェブアプリケーションにスマートカードの接続性を提供するこの技術を梃子にして開発者の習熟曲線を最小化するように、ウェブブラウザ独立型であり、従来のスマートカード通信ＡＰＩを提供する。概念的には、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム３０３は、ＡＪＡＸウェブアプリケーション開発を可能にするＸｍｌＨｔｔｐＲｅｑｕｅｓｔオブジェクトと同様の振る舞いの接続性を提供する。ＸｍｌＨｔｔｐＲｅｑｕｅｓｔはＪａｖａ（登録商標）Ｓｃｒｉｐｔとサーバとの間の接続性を提供するが、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム３０３はアプリケーションＪａｖａ（登録商標）Ｓｃｒｉｐｔ、すなわち、ウェブブラウザアプリケーション１０１とスマートカード１０４との間の接続性を提供する。
【００１９】
図４は、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム３０３が２つの部分、スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１とスマートカードアプリケーションインタフェーススクリプトモジュール４０３とに分割される、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム３０３の一実施形態を示すブロック図である。
【００２０】
スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１は、ウェブブラウザのデフォルト機能を強化して、ＰＣ／ＳＣ実装のチャネルを作成するプログラムである。各ウェブブラウザ２０３（例えば、Ｍｏｚｉｌｌａ  ＦｏｕｎｄａｔｉｏｎのＦｉｒｅｆｏｘ、ＭｉｃｒｏｓｏｆｔのＩｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ、Ａｐｐｌｅ  Ｉｎｃ．，（Ｃｕｐｅｒｔｉｎｏ、Ｃａｌｉｆｏｒｎｉａ）のＳａｆａｒｉ、Ｏｐｅｒａ  Ｓｏｆｔｗａｒｅ  ＡＳＡ（Ｏｓｌｏ、Ｎｏｒｗａｙ）のＯｐｅｒａ）は、自身の所定の拡張機能作成手段を有する。したがって、対応するスマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１は、各々のサポートされたウェブブラウザに使用可能である。拡張機能は、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔを介してアクセス可能である。
【００２１】
上述したように、ウェブブラウザには拡張機能を書き込むさまざまな方法があり、場合によっては、対話するさまざまな方法がある。開発者に製造環境を提供するために、開発者から全てのウェブブラウザ依存コードを隠すライブラリスクリプトは、スマートカードアプリケーションインタフェーススクリプトモジュール４０３を介して利用可能になる。スマートカードアプリケーションインタフェーススクリプトモジュール４０３は、ウェブブラウザが書き込まれる拡張機能を除外して対話する一意の方法からアプリケーションプログラム１０１を隔離するＰＣ／ＳＣ層に対するオブジェクト指向インタフェースを提供する。
【００２２】
表１は、スマートカード１０４にアクセスするウェブブラウザアプリケーション１０１の一例である。表１の例では、
【表１】
0005534520.tif 000002
表１  スマートカードリソースマネージャラッパ．ｊｓを使用する基本のウェブアプリケーション用のコード
【００２３】
表１のコードは、スクリプト（Ｊａｖａ（登録商標）Ｓｃｒｉｐｔ）を実行する基本のウェブページであり、ＡＰＤＵを送信することによりスマートカードと通信する。表１のコードは、スマートカードアプリケーションインタフェーススクリプトモジュール４０３をロードすることから始まる（この例では、スマートカードアプリケーションインタフェーススクリプトモジュール４０３は、ＳＣｏｎｎｅｃｔ．ｊｓと呼ばれる）。アプリケーションインタフェースモジュール４０３、すなわち、以下のステートメント
【表２】
0005534520.tif 000003
によるウェブページの開始時に含められるｓｃｏｎｎｅｃｔ．ｊｓスクリプトライブラリは、ウェブブラウザ依存のコードを処理する。したがって、ウェブ開発者はスマートカードとの対話ロジックに自由に焦点を合わせることができる。
【００２４】
スマートカードアプリケーションインタフェーススクリプトモジュール４０３は、ウェブブラウザのセッションにすでにロードされているか、またはユーザが対話するリモートサーバサイトからロードされる場合がある。
【００２５】
アプリケーションプログラム３００は、典型的には、ＳＣｏｎｎｅｃｔ．ＰＣＳＣクラスのオブジェクトを作成することから始まる。オブジェクトを作成するコンストラクタ（コンストラクタは、オブジェクトが作成される時に実行されるクラス内の特定の命令ブロックである）は、ウェブブラウザ固有のスマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１がインストールされている場合はそのインスタンスを作成する。インストールされていない場合、コンストラクタは、Ｓｙｓｔｅｍ．ＢｒｏｗｓｅｒＥｘｔｅｎｓｉｏｎＮｏｔＩｎｓｔａｌｌｅｄＥｘｃｅｐｔｉｏｎをスローする。オブジェクトの作成がうまくいくと、スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１内のｅｓｔａｂｌｉｓｈＣｏｎｔｅｘｔ（ＰＣ／ＡＣ  ＡＰＩのＳＣａｒｄＥｓｔａｂｌｉｓｈＣｏｎｔｅｘｔに相当する）に対する呼び出しを終了する。以下の行は、ＳＣｏｎｎｅｃｔ．ＰＣＳＣクラスのオブジェクトの作成の方法を示す。
【表３】
0005534520.tif 000004
【００２６】
一方、Ｓｙｓｔｅｍ．ＢｒｏｗｓｅｒＥｘｔｅｎｓｉｏｎＮｏｔＩｎｓｔａｌｌｅｄＥｘｃｅｐｔｉｏｎが＜ｓｃｒｉｐｔ．．．＞のコマンドによってスローされる場合、ウェブアプリケーションを実行するユーザはリモートサーバからスマートカードリソースマネージャラッパ．ｊｓ３０３をインストールするようにインバイトされる。
【００２７】
したがって、呼び出し
【表４】
0005534520.tif 000005
は、新規オブジェクト−ｐｃｓｃを作成する。ｐｃｓｃオブジェクトは、ウェブブラウザアプリケーションプログラム３００から呼び出し可能なメソッドを有する。これらのメソッドは、スマートカードアプリケーションインタフェーススクリプトモジュール４０３内に対応する部分があり、またスマートカードリソースマネージャ（ＰＣ／ＳＣ）１０７内に対応する関数がある。したがって、スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１は、ウェブブラウザアプリケーションプログラム３００により呼び出し可能なスマートカードリソースマネージャ（ＰＣ／ＳＣ）１０７に対するオブジェクト指向インタフェースを提供する。
【００２８】
図５は、ユーザ５０１がウェブページの実行を試みるネットワークの概略図である。ユーザ５０１は、ホストコンピュータ１０３上でウィンドウ５０３を表示するウェブブラウザ２０３を操作している。ユーザは、おそらくネットワーク５０９を介してある形式のオンライントランザクションを実行するためにリモートコンピュータシステム５０７上で実行するリモートウェブサーバ５０５と対話することを望む。トランザクションを保証するために、ユーザ５０１はインタフェースデバイス１１１を介してホストコンピュータ１０３に接続されたスマートカード１０４を使用する。
【００２９】
ウェブブラウザのセッションの一部として、スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１がすでにインストールされていてもよい。１つの代替の実施形態では、スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１はウェブブラウザ２０３にインストールされていない。スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１がすでにインストールされている場合は、ユーザはスマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１をインストールするように指示されない。一方、スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１がインストールされていない場合は、ユーザ５０１はリモートサーバシステム５１３上で実行するサーバ（例えば、ｗｗｗ．ｓｃｏｎｎｅｃｔ．ｃｏｍ）５１１からスマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１をロードするようにインバイトされる。あるいは、ユーザ５０１により実行されているウェブページのプロバイダが、プロバイダにより操作されるウェブサイトからスマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１を提供してもよい。
【００３０】
ホストコンピュータ１０３は、それに取り付けられた多くのスマートカードリーダ１１１を有することができるので、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム３０３は、ｌｉｓｔＲｅａｄｅｒｓ（ｒｅａｄｅｒｓＷｉｔｈＣａｒｄ）関数を使用して、リーダをリストアップする方法を提供する。引数値「ｔｒｕｅ」を指定することで、スマートカードが挿入されているこれらのリーダのみをリストアップし、それ以外の全てのリーダの名前が返される。
【表５】
0005534520.tif 000006
【００３１】
ｐｃｓｃオブジェクトのｌｉｓｔＲｅａｄｅｒｓメソッドにおけるこの呼び出しは、スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１内の対応する関数、例えば、スマートカードリソースマネージャ（ＰＣ／ＳＣ）１０７のＳＣａｒｄＬｉｓｔＣａｒｄｓ（）関数を呼び出すＰＣＳＣ−ＳＣａｒｄＬｉｓｔＲｅａｄｅｒｓと呼ばれる関数における呼び出しを発生させる。
【００３２】
次のステップは、名前、接続モード（共有、専用、または相互）、プロトコル識別子（Ｔ０またはＴ１）を指定するリーダ１１１に接続することである。ｔｒｕｅの返り値は、作成が成功したことを示す。
【表６】
0005534520.tif 000007
【００３３】
この時点で、ウェブブラウザ２０３はリーダに、またリーダを介してスマートカード１０１にコマンドを送信できる状態にあり、リーダへの接続がうまくなされたことになる。一実施形態では、コマンドはＩＳＯ−７８１６ＡＰＤＵ形式で送信される。ＰＣ／ＳＣでは、これはＳＣａｒｄＴｒａｎｓｍｉｔ  ＡＰＩを使用して行われる。一実施形態では、スマートカードリソースマネージャラッパ拡張機能３０３は、この送信を行うためにＡＰＩ  ｔｒａｎｓｍｉｔ（ｃｏｍｍａｎｄ）を提供する。
【表７】
0005534520.tif 000008
【００３４】
スマートカード１０４との典型的な対話では、応答は状態語および状態データである。状態語は、ほとんどの場合、意味がホストアプリケーションによって解釈可能な２バイト値であるが、特定の状態語はＩＳＯ７８１６−４によって標準化され、指定される。
【表８】
0005534520.tif 000009
【００３５】
１つの状態語は、６１ＸＸである。ＸＸは、ＧｅｔＲｅｓｐｏｎｓｅコマンド（００Ｃ０００００ＸＸ）を使用してホストアプリケーションにより取り出されるバイト数を表わす。取り出し動作のシーケンスはＧｅｔＲｅｓｐｏｎｓｅコマンドを使用して応答データを取り出さなければならないことが多いので、一実施形態は、全てのデータが取り出されるまでＧｅｔＲｅｓｐｏｎｓｅコマンドのシーケンスを実行するためのｅｘｃｈａｎｇｅＡＰＤＵメソッドを含む。
【表９】
0005534520.tif 000010
【００３６】
最後に、アプリケーション１０１はリーダ１１１を外し、ＳＣｏｎｎｅｃｔ．ＰＣＳＣクラスのｄｉｓｐｏｓｅメソッドを呼び出すことによってリソースを解除する。ＰＣ／ＳＣでは、（ＳＣａｒｄＤｉｓｃｏｎｎｅｃｔ  ＡＰＩを使用して）スマートカードを外す時に、外す前にスマートカードに取り込まれるアクションを指定する配置モードが指定することができる。これらのアクションの例は、ＬｅａｖｅＣａｒｄ、ＲｅｓｅｔＣａｒｄ、ＵｎｐｏｗｅｒＣａｒｄ、ＥｊｅｃｔＣａｒｄである。ｄｉｓｃｏｎｎｅｃｔ関数が使用されない場合、ｄｉｓｐｏｓｅメソッドがＬｅａｖｅＣａｒｄアクションを使用してスマートカードを外す。
【表１０】
0005534520.tif 000011
【００３７】
図６は、スマートカードと通信するためのＳＣｏｎｎｅｃｔ．ＰＣＳＣクラスのインスタンス化およびその使用を示すブロック図である。ウェブブラウザアプリケーションが「ｐｃｓｃ＝ｎｅｗ  ＳＣｏｎｎｅｃｔ．ＰＣＳＣ」命令を実行する時、ＳＣｏｎｎｅｃｔ．ＰＣＳＣクラスのインスタンス６０１がインスタンス化される。オブジェクト６０１は、少なくとも１つの引数を有するメソッドｔｒａｎｓｍｉｔ６０３を含む。典型的には、これは、ＳＣｏｎｎｅｃｔ．ＰＣＳＣクラスからの継承によるものである。引数は、スマートカード１０４に送信されるべきＡＰＤＵメッセージである。
【００３８】
ウェブブラウザアプリケーション３００は、ＰＣＳＣオブジェクト６０１のｔｒａｎｓｍｉｔ（）メソッド６０３における呼び出しである少なくとも１つの命令６０５を含んでもよく、その命令の実行はｐｃｓｃオブジェクト６０１、スマートカード１０４に送信されるべき特定のＡＰＤＵ引数を有するメッセージ６０１のｔｒａｎｓｍｉｔメソッドにおける呼び出しを発生させる。
【００３９】
ＳＣｏｎｎｅｃｔ．ＰＣＳＣクラス定義は、ｔｒａｎｓｍｉｔメソッドがＰＣＳＣ＿ｔｒａｎｓｍｉｔ関数に対する呼び出しの命令６０９を発生させることを提供する。ＰＣＳＣ＿ｔｒａｎｓｍｉｔ関数は、スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１の関数である。したがって、ＰＣＳＣ＿ｔｒａｎｓｍｉｔ関数に対する関数呼び出しの命令６０９の実行は、スマートカード１０４に送信されているＡＰＤＵを伝える関数呼び出し６１１を発生させる。
【００４０】
スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１のＰＣＳＣ＿ｔｒａｎｓｍｉｔ関数の実装は、スマートカードリソースマネージャ（ＰＣ／ＳＣ）１０７のＳＣａｒｄＴｒａｎｓｍｉｔ関数を呼び出す命令６１３を含む。その命令の実行は、スマートカードリソースマネージャ（ＰＣ／ＳＣ）１０７に対応する関数呼び出し６１５を発生させる。
【００４１】
スマートカードリソースマネージャ（ＰＣ／ＳＣ）１０７のＳＣａｒｄＴｒａｎｓｍｉｔ関数は、その引数リストを使用して受信されたＡＰＤＵのスマートカード１０４への送信を発生させる。
【００４２】
スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１がインストールされている場合、スマートカードリソースマネージャ１０７により検出されたスマートカード挿入イベントはスマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１に送信される。スマートカード１０４の挿入の検出時に、またはユーザ５０１が認証されていないスマートカード１０４の使用を試みる時に、ユーザ５０１は自身の認証を成功させる必要がある。したがって、スマートカードリソースマネージャラッパ拡張機能３０３が呼び出しているウェブブラウザアプリケーション３００にスマートカード１０４が挿入されたことを伝えて、ウェブブラウザアプリケーション３００がスマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１内の関数の呼び出しを試みる時に、スマートカード１０４またはスマートカードリソースマネージャ（ＰＣ／ＳＣ）１０７は、ユーザが認証された、または認証されていないという表示を返す。この最後のイベントでは、ウェブブラウザアプリケーション３００はログイン画面を表示して、ユーザ５０１にスマートカード１０４に対してログインするメカニズムを提供することができる。
【００４３】
図７は、ユーザ５０１がスマートカード１０４の使用が必要なウェブアプリケーションの実行を試みる時のメッセージフローを示すタイミングシーケンス図である。ユーザ５０１はウェブブラウザ２０３をホストコンピュータ１０３上で実行する。ユーザ５０１がリモートサーバ５０５上のウェブアプリケーションへのアクセスを試みる（ステップ７０１）。ウェブアプリケーションに対応するウェブページがウェブブラウザ２０３に送信される。ウェブアプリケーションは、スマートカードリソースマネージャラッパ拡張機能３０３のスクリプトに対する呼び出しを含む。スマートカードリソースマネージャラッパ拡張機能３０３がウェブブラウザ２０３にインストールされている場合（ステップ７０５）、スマートカード１０４との通信が開始する（ステップ７０７）。
【００４４】
一方、スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１がインストールされていない場合、ユーザ５０１はスマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１を（必要に応じて）ダウンロードし、インストールするように指示される（ステップ７０８）。これは、典型的には、ユーザ５０１に、サーバ５１１からのスマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１の要求を発生させるリンクにクリックさせることで行われ、サーバ５１１からスマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１がロードされ得る（ステップ７０９）。それに応答して、サーバ５１１はスマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１を返し（ステップ７１１）、スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１がウェブブラウザ２０３にロードされる（ステップ７１３）。スマートカード１０４との通信が発生する（ステップ７０７）。
【００４５】
ウェブブラウザアプリケーションは、典型的には、１つのスレッドで実行する。スレッドは、他のスレッドと並行して実行できる命令の１つのシーケンスであるが、その中の命令は互いに連続した命令である。典型的には、スマートカード１０４との対話は、比較的時間がかかる。この遅延のために、アプリケーションの命令が１つのスレッドで実行している時に、スマートカード１０４に接続するコマンドか、スマートカード１０４に発行されたコマンドのいずれかが、ウェブブラウザ２０３のセッションがロックされたようになる不快なユーザ５０１体験につながる可能性がある。より改善されたアプローチは、ユーザ５０１がウェブページと対話を続けることができるようにする、またはある状態情報、例えば、状態進捗バーを表示できるようにすることである。
【００４６】
一実施形態では、スマートカード１０４に接続する操作またはスマートカード１０４と通信するコマンドは、非同期的に行われる。表ＩＩは、スマートカード１０４に対するコマンドの非同期的な送信を示すコードセグメントである。
【表１１】
0005534520.tif 000012
表ＩＩ  スマートカードコマンドの非同期的な実行のコード
【００４７】
非同期コマンドの作成を行うために、スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１は、スマートカードリソースマネージャ（ＰＣ／ＳＣ）１０７によるコマンドの実行の終了時にコールバックを提供する関数を含む。したがって、スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１は、ａｓｙｎｃ＿ｔｒａｎｓｍｉｔ関数を提供する。その第１の引数はホストコンピュータ１０３からの送信のためのＡＰＤＵパケットであり、第２の引数はコマンドから返される時に呼び出される関数である。「コールバック」関数は、典型的には、スマートカード１０４またはスマートカードリソースマネージャ（ＰＣ／ＳＣ）１０７によるコマンドの実行から得られた結果に従って取り込まれるいくつかのアクションを指定する。
【００４８】
図８は、スマートカード１０４に対して非同期コマンドを作成する時に発生するメッセージフローおよびそのタイミングを示すタイミングシーケンス図である。この例では、アプリケーション１０１を表ＩＩのコードと見なす。ホストコンピュータ１０３はＲｕｎＤｅｍｏ関数を実行している（位置８０１）。ホストコンピュータ１０３がｐｃｓｃ．ａｓｙｎｃ＿ｔｒａｎｓｍｉｔ関数に出会うと、ホストコンピュータ１０３はスマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１に制御を転送する（遷移８０３）。ｐｃｓｃ．ａｓｙｎｃ＿ｔｒａｎｓｍｉｔ関数が、新規スレッドでｔｒａｎｓｍｉｔ（）呼び出し８０５をスマートカードリソースマネージャ１０７に発行する。アプリケーション１０１は、呼び出しの後、実行を継続する（８０７）。ｐｃｓｃ．ａｓｙｎｃ＿ｔｒａｎｓｍｉｔに対する呼び出しにより生じた新規スレッドで、スマートカードリソースマネージャ１０７はｉｆｄ１１１（図示せず）に、最終的にはスマートカード１０４にコマンドを送信する（ステップ８０９）。これらの対話はスマートカードリソースマネージャ１０７とスマートカード１０４との間で発生するが、アプリケーション１０１は元のスレッドで実行を継続する（８１１）。
【００４９】
接続を試みた後のある時点で、スマートカード１０４は応答し（８１３）、スマートカードリソースマネージャ１０７は、スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１のａｓｙｎｃ＿ｔｒａｎｓｍｉｔ（）関数に対する返り値を使用してアプリケーション１０１に状態を返す（ステップ８１５および８１７）。「コールバック」関数が第２のスレッドからの返り値で呼び出されることを指定するａｓｙｎｃ＿ｔｒａｎｓｍｉｔ（）関数に対する第２の引数により、ホストコンピュータ１０３はアプリケーション１０１のｃａｌｌｂａｃｋ（）関数に制御を転送する（ステップ８１９）。
【００５０】
非常に似た非同期的メカニズムがスマートカード１０４への接続を確立する際に採用される場合がある。主な違いは接続するためのメカニズムであるという点であるので、異なるコマンドが使用される。
【００５１】
上述したように、特定のスマートカード１０４のカード固有ドライバ３０１がまだインストールされていない場合、新しいスマートカード１０４を検出する際にスマートカードリソースマネージャラッパ拡張機能３０３はリモートサーバから取得されたカード固有ドライバ３０１を実行させる。図９ａおよび図９ｂは、リモートコンピュータシステム５１３で実行するリモートサーバ５１１からカード固有ドライバ３０１を取得するためのシーケンスを示すタイミングシーケンス図である。カード固有ドライバ３０１がロードされていない場合、リモートサーバ５１１が当該カードに利用可能なカード固有ドライバ３０１を有するのであれば、リモートサーバ５１１から正確なカード固有ドライバ３０１をダウンロードするためにブートストラップスクリプト９００が実行される。
【００５２】
スマートカード１０４は、物理的にホストコンピュータ１０３に接続される（ステップ９０１）。これがスマートカードリソースマネージャ１０７により検出されたスマートカード挿入イベントをトリガする（ステップ９０３）。スマートカードリソースマネージャ（ＰＣ／ＳＣ）１０７は、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム３０３がイベントループを使用してカードの挿入と取り外しを監視することができるように、ＡＰＩおよびイベントを提供する。スマートカードリソースマネージャ１０７は、スマートカード１０４がリセット応答（ＡＴＲ）を行う要求を送信する（９０５）。スマートカード１０４はＡＴＲに応答して（９０７）、ＡＴＲはウェブブラウザ２０３、詳細には、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム３０３に送信される（ステップ９０９）。
【００５３】
スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム３０３が適切なカード固有ドライバ３０１がすでにロードされていると判断することができる場合（ステップ９１１）、ウェブブラウザ２０３はカードとの通信を始めることができる（ステップ９１３）。そうでなければ、ＡＴＲがリモートサーバ５１１に送信される。リモートサーバ５１１がＡＴＲからスマートカード１０４を識別可能であるか否かを判断する（ステップ９１７）。多くの場合、スマートカード１０４のタイプは、ｈｉｓｔｏｒｉｃａｌ  ｂｙｔｅｓとして知られているＡＴＲのフィールドから識別できる。スマートカード１０４のタイプがＡＴＲから判断可能である場合、カード固有ドライバ３０１がホストコンピュータ１０３に返送される（ステップ９１９）。
【００５４】
サーバ５１１がＡＴＲからスマートカード１０４を識別できない場合、リモートサーバ５１１はホストコンピュータ１０３にスマートカード１０４がＡＴＲから一意に識別されなかったことを示すメッセージを返送する（メッセージ９２１）。メッセージ９２１では、リモートサーバ５１１はスマートカード１０４が実行するためのコマンドを含む。コマンドは、スマートカード１０４の機能を公開するコマンドであるように選択される。例えば、スマートカード１０４がＪａｖａ（登録商標）Ｃａｒｄであるか否かを検査するために、コマンドはスマートカード１０４に対するｇｅｔＳｔａｔｕｓ（）要求とすることができ、このコマンドに応答して、スマートカード１０４はサポートされるアプリケーションのアプリケーション識別子（ＡＩＤ）を返すことによってスマートカード１０４がサポートするアプリケーションを識別する。ネイティブなスマートカード１０４では、コマンドは、検査される特定のネイティブなスマートカード１０４によりサポートされていることがわかっている動作とするができる。この場合、期待返り値は、動作から得られる期待結果であり、例えば、Ｇｅｍａｌｔｏ  Ｉｎｃ．の（Ａｕｓｔｉｎ、Ｔｅｘａｓ）Ｇｅｍａｌｔｏ  ．ＮＥＴカードでは、スマートカード１０４がｍｓｃｍと呼ばれるサービスをサポートしている場合、検査コマンドを問い合わせることができる。
【００５５】
ブートストラップスクリプト９００がコマンドを受信し、コマンドをスマートカードリソースマネージャ１０７に転送する（ステップ９２３）。次に、スマートカードリソースマネージャ１０７はコマンドをスマートカード１０４に転送する（ステップ９２５）。スマートカード１０４がコマンドを実行し（ステップ９２７）、結果を返す（ステップ９２９）。次に、結果はブートストラップスクリプト９００に転送され（ステップ９３１）、リモートサーバ５１１に転送される（ステップ９３３）。リモートサーバ５１１は、結果からスマートカード１０４が認識されたカードであるか否か、サポートされるドライバを有するか否かを判断する（ステップ９３５）。リモートサーバ５１１が、スマートカード１０４はサーバ５１１が検査しているスマートカード１０４として応答したと判断する場合、サーバ５１１はカード固有ドライバ３０１をホストコンピュータ１０３に返送する（ステップ９３７）。一実施形態では、ホストコンピュータ１０３に返送されるものは、カード固有ドライバ３０１をダウンロードするリンクである。
【００５６】
一方、スマートカード１０４から返された結果が検査されるスマートカード１０４の期待結果と一致しない場合、サーバ５１１は別のスマートカード１０４を試すことができる（ステップ９３９）。検査するスマートカード１０４がそれ以上ある場合、リモートサーバ５１１はスマートカード１０４により実行される別のコマンドと共にメッセージを返す（ステップ９２１）。しかしながら、検査するスマートカード１０４がそれ以上ない場合、すなわちサーバ５１１がカード固有ドライバ３０１を有するスマートカード１０４が全て検査されてしまっている場合、スマートカード１０４がサポートされていないということを示すエラーメッセージがホストコンピュータ１０３に返される（メッセージ９４１）。
【００５７】
（上述したように）スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１をダウンロードするのに同じサーバ５１１が使用されているが、これは説明のための単なる例にすぎないことに留意すべきである。カード固有ドライバ３０１およびスマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１は、全く関係のないリモートサーバからロードされてもよい。
【００５８】
上述したように、暗号化サービスはスマートカード１０４の多くの重要なアプリケーションのうちの１つである。従来の暗号化ソリューションは、２つの互換性のない競合するシステムであるＰＫＣＳ＃１１とＣＡＰＩとを有するレガシーのために、実装が非常に煩雑であった。従来は、スマートカードアプリケーションの開発者は、ＰＫＣＳ＃１１とＣＡＰＩとのためのホストモジュールを書き込み、デプロイしていた。上述したように、このことはいくつもの望ましくない結果につながった。
【００５９】
スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム３０３（例えば、上述のようにスマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１とスマートカードアプリケーションインタフェーススクリプトモジュール４０３との組み合わせ）、ブートストラップスクリプト９００、関連するプロセスフローを使用する上述した技術を使用することによって、アプリケーションの開発者は、ホストコンピュータ１０３の暗号化ミドルウェアに依存して、それに苦しむことから開放することができる。
【００６０】
スマートカード１０４がＰＫＣＳ＃１１機能を有するシナリオを考えると、開発者はスマートカード１０４がこれらの暗号化機能を使用して電子メールメッセージにデジタル署名するのに使用されるアプリケーションを開発することを望む。この場合、特定のアプリケーション１０１は、暗号化機能に直接アクセスするために（ブートストラップスクリプト９００を使用してロードされた）カード固有ドライバ３０１を介してスマートカードリソースマネージャラッパ拡張機能３０３上で開発される。
【００６１】
図１０は、プロセスフローを示すタイミングシーケンス図である。
【００６２】
このウェブアプリケーションのコンテキストでのこの実装のワークフローは、以下の通りである。ユーザ５０１のアリスが自分のスマートカード１０４に記憶されたＰＧＰ鍵を使用して電子メールメッセージに署名することを望むとする。
アリスは、Ｓｅｃｕｒｅ  Ｓｏｃｉｅｔｙ’ｓ  ＳＭａｉｌ１５１（すなわち、リモートウェブサーバ上で実行するアプリケーション）にアクセスし（ステップ１５３）、たとえば、Ｆｉｒｅｆｏｘウェブブラウザ２０３を使用してメッセージ１５５がそのウェブインターフェースを介する。
アリスが自分のスマートカード１０４に記憶された自分のＰＧＰ鍵を使用して署名したいとの電子メールを書き込んだ（ステップ１５７）。彼女は電子メール署名アイコン／ボタンをクリックする（ステップ１５９）。Ｆｉｒｅｆｏｘウェブブラウザ２０３がＳＣｏｎｎｅｃｔ可能でない場合、すなわち、スマートカードリソースマネージャラッパウェブブラウザ拡張機能４０１がインストールされていない場合、彼女はそれをインストールするように指示される。
（例えば、ＳＭａｉｌサーバ５０５からダウンロードされた（ステップ１６１））ブートストラップＪａｖａ（登録商標）Ｓｃｒｉｐｔ９００が、彼女のスマートカード１０４のＡＴＲのメッセージ１６３、１６５を判断し、（ＡＪＡＸを使用して）ＳＭａｉｌサーバ１５１に返信する（ステップ１６７）。
ＳＭａｉｌサーバ１５１はデータベースを調べて、スマートカード１０４用の対応するスマートカード固有ＰＫＣＳ＃１１  Ｊａｖａ（登録商標）Ｓｃｒｉｐｔモジュール（すなわち、本明細書内で使用される用語では、カード固有ドライバ３０１）を判断し、それを前の要求に応答して返信する（ステップ１６９）。
カード固有ドライバ３０１がダウンロードされると、カード固有ドライバ３０１は（スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム３０３を使用して）スマートカード１０４と通信を開始する。安全な通信は、必ず暗号化されたメッセージがサーバ５１１からスマートカード１０４に送信されることによって保証される。
（今、ウェブブラウザ２０３で実行中の）カード固有ドライバ３０１が、アリスのスマートカード１０４または他のログインプロシージャに対して認証を行うようにＰＩＮエントリダイアログボックスを使用してアリスに指示する（ステップ１７１）。
認証が成功すれば、アリスのスマートカードから適切な証明書が選択される（ステップ１７３）。スマートカード１０４が多くの証明書を含む場合には、それらの証明書が表示され、アリスはそのうちの１つを選択するように指示される。
証明書が選択された後、アリスのメールのコンテンツに署名するためにカード固有ドライバ３０１と、例えば、ＡＳＰ．ＮＥＴハンドラとが、スマートカードとデータを交換する（ステップ１７５）。これらの通信は、上述したようにスマートカード１０４にデータを送信するためにスマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム３０３に呼び出しを配置することによって行われる。
署名は、ＰＧＰ仕様に従って、スマートカード１０４によりラップされる（ステップ１７７）。
署名されたメッセージは、ウェブブラウザに返信され（ステップ１７９）、ウェブブラウザによってウェブメールアプリケーション１５１に返信される（ステップ１８１）。
【００６３】
代替の実施形態では、ホストコンピュータ１０３上で実行しスマートカード１０４が接続されているアプリケーション．ｊｓジャバスクリプト１０１によって、スマートカード１０４へのアクセスが試みられると、ジャバスクリプト１０１とスマートカード１０４との間の提案された対話をユーザが認証することを望むか否かに関してクエリが行われる。１つの動作のシナリオでは、ウェブサイト５０５は、ユーザを騙すことによって秘密のユーザ情報を取得するために、またはスマートカード１０４に対するサービス攻撃を拒絶するために、悪意を持って設計されたものである場合がある。サービス攻撃を拒絶する場合、アプリケーション．ｊｓジャバスクリプト１０１は、例えば、スマートカード１０４に不正確なログイン証明書を繰り返し提示するように設計されたものである場合がある。ほとんどのスマートカード１０４は、不正確なログインでの試行が許される数が制限されている。この制限数を超えた場合、スマートカード１０４は、例えば、カード発行者からロックされ、高レベルの介入なしに使用できなくなる。
【００６４】
図１１は、ウェブブラウザ拡張機能４０１がスマートカード１０４へのアクセスの試みを検出する時にユーザに表示されるユーザダイアログウィンドウの一例を示す図であり、ダイアログ２４１を示す図である。ユーザがアプリケーション．ｊｓジャバスクリプト１０１とスマートカード１０４との間の対話を承認したい場合、ウェブサイトのｕｒｌ（またはウェブサイトを識別する何か他の適切な装置）が承認リストに追加される。ユーザがアクセスを拒否する場合、ウェブサイトは非承認リストに追加される。このリストは、ウェブブラウザの所定の機構（例えば、クッキー）によって管理される。
【００６５】
図１２は、スマートカード１０４との対話を許可された／許可されないウェブサイトの承認非承認リストを編集するためにユーザに表示されるユーザダイアログウィンドウ２４３の一例を示す図である。一実施形態では、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム３０３のインストールにより、例えば、ウェブブラウザ「ツール」メニューの下のダイアログウィンドウ２４３を表示するために、ウェブブラウザメニュー内にメニューアイテムを追加することができる。
【００６６】
図１２は、スマートカード１０４と対話するアプリケーションジャバスクリプトの権利を許可または許可しない承認非承認リストの使用を示すタイミングシーケンス図である。ユーザがウェブサイト（例えば、ｈｔｔｐ：／／ｗｗｗ．ｅｖｉｌｗｅｂ．ｃｏｍ）にアクセスした。そのウェブサイトが、アプリケーションジャバスクリプト１０１ｘを更新することによってスマートカード１０４に攻撃しようとする。アプリケーションジャバスクリプト１０１ｘがスマートカード１０４との対話を要求すると（メッセージ２５３）、ウェブブラウザ拡張機能４０１は、ジャバスクリプトの元のウェブサイトが認証リスト内にあるか否かを判断する（ステップ２５５）。
【００６７】
ウェブサイトが承認リスト内にある場合、表示（例えば、「ＡＣＣ」）がウェブブラウザ拡張機能４０１からジャバスクリプト１０１ｘに送信される（メッセージ２５７）、対話が開始され得る（ステップ２５９）。
【００６８】
ウェブサイトが承認リスト内にない場合、ウェブブラウザ拡張機能４０１はそのウェブサイトが非承認リスト内にあるか否かを判断する（ステップ２６１）。ウェブサイトが非承認リスト内にある場合、（例えば、「ＮＡＣＣ」）を示すメッセージがウェブブラウザ拡張機能４０１からジャバスクリプト１０１ｘに送信される（メッセージ２６３）。
【００６９】
ウェブサイトがいずれのリスト内にもない場合、そのウェブサイトは続行が許可されるか否かをユーザが決定するためのダイアログウィンドウ２４１（図１１）が表示される（ステップ２６５）。
【００７０】
ウェブサイトのアクセスを許可するか否かのユーザ決定が得られる（ステップ２６７）。ユーザがスマートカード１０４との対話のためにウェブサイトを承認した場合、（ステップ２６９）、対話の承認を示すメッセージ（例えば、「ＡＣＣ」）がジャバスクリプト１０１ｘに送信され（メッセージ２７１）、対話が開始され得る（ステップ２５９）。任意で、例えば、ダイアログウィンドウ２４１の中の決定が記憶されることを示すチェックボックスをユーザがクリックした場合、ウェブサイトは承認リストに追加される（ステップ２７３）。
【００７１】
ユーザがスマートカード１０４と対話するウェブサイトの権利を拒否した場合（ステップ２６９）、対話の非承認を示すメッセージ（例えば、「ＮＡＣＣ」）がジャバスクリプト１０１ｘに送信される（メッセージ２７５）。任意で、例えば、ダイアログウィンドウ２４１の中の決定が記憶されることを示すチェックボックスをユーザがクリックした場合、ウェブサイトは非承認リストに追加される（ステップ２７７）。
【００７２】
上述の内容から、本明細書内で説明された技術は、スマートカードをウェブアプリケーションのコンテキストでスムーズに使用する有効な機構を提供するものであることは明らかである。従来は、ホストアプリケーションとスマートカードとの間の通信に必要であった煩雑なミドルウェア層は、ウェブブラウザ拡張機能をウェブブラウザにロードすることによって、またカード固有ドライバウェブブラウザ拡張機能をウェブブラウザにオンデマンドでロードすることで避けられる。これらの動的にロードされた拡張機能により、スマートカードの利用にとっては、ウェブアプリケーションがスマートカードと対話するためのウェブブラウザ固有またはプラットフォーム固有の要件を認識しなくても、ウェブアプリケーションと共にスマートカードにより提供される多くの強力なアプリケーション、例えば、暗号化が可能になる。
【００７３】
本発明の特定の実施形態を説明して図示したが、本発明は説明し図示したようなコンポーネントの特定の形態または配置に限定されるものではない。本発明は、請求項によってのみ限定される。
【図１】
0005534520.tif 000013
【図２】
0005534520.tif 000014
【図３】
0005534520.tif 000015
【図４】
0005534520.tif 000016
【図５】
0005534520.tif 000017
【図６】
0005534520.tif 000018
【図７】
0005534520.tif 000019
【図８】
0005534520.tif 000020
【図９ａ】
0005534520.tif 000021
【図９ｂ】
0005534520.tif 000022
【図１０】
0005534520.tif 000023
【図１１】
0005534520.tif 000024
【図１２】
0005534520.tif 000025
【図１３】
0005534520.tif 000026