スマートカードにブラウザベースでアクセスするシステムおよび方法
ウェブブラウザを介してスマートカードリソースマネージャを有するホストコンピュータに接続されたスマートカードへのアクセスをユーザに提供する少なくとも1つのブラウザアドオンを実行する機能を有するウェブブラウザ内から、ホストコンピュータ上で実行可能なクライアント側アプリケーション拡張機能を提供する。ウェブブラウザ拡張機能は、ウェブブラウザプラットフォーム独立インタフェースモジュール、およびそのウェブブラウザプラットフォーム独立インタフェースモジュールと、スマートカード上のデータにアクセスし、関数呼び出しをスマートカードリソースマネージャに対応する呼び出しに変換するための少なくとも1つの関数に対する呼び出しを受信するように動作可能なモジュールを処理する関数を有するスマートカードリソースマネージャとに接続されたウェブブラウザプラットフォーム依存ラッパモジュールを介して、中央処理ユニットにスマートカード上のデータにアクセスするように指示する命令を有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、スマートカードへのアプリケーションプログラムのアクセスに関し、より詳細には、ウェブブラウザで実行するユーザアプリケーションがスマートカードの機能およびデータにアクセスできるシステムおよび方法に関する。
【背景技術】
【0002】
スマートカードは、入出力装置がない小型の安全なパーソナルコンピュータである。スマートカード用の典型的なアプリケーションは、プライベートデータを記憶するユーザ認証を含み、電子財布として使用する。これらのアプリケーションや他のアプリケーションでは、スマートカードと対話する通常モードは、スマートカードが接続されるホストコンピュータ上で実行するホストアプリケーションからのモードである。
【0003】
スマートカードベースの公開鍵基盤の機能へのホストアプリケーションのアクセスは、例えば、典型的には、アプリケーションプログラムから呼び出し可能なアプリケーションプログラムインタフェースを提供するミドルウェアをインストールすることで達成される。次に、ミドルウェアは、典型的にはある形態のリーダを介してスマートカードのハードウェアとの対話を実行する。一般に利用可能なアーキテクチャは、PC/SCワークグループからのPC/SC仕様に基づく。図1は、PC/SC仕様の実装のハイレベルのブロック図である。ホストコンピュータ103上で実行するスマートカード認識アプリケーション101は、ホストコンピュータミドルウェア105とスマートカードリソースマネージャ107を介してスマートカード104のaからdにアクセスする。スマートカードリソースマネージャ107は、次に、ホストコンピュータ103が接続されている種々のカードリーダ111aから111dのドライバ109aから109dと対話する。
【0004】
このアーキテクチャには、スマートカードのデプロイメントに関して複数の問題がある。これらの問題は、ミドルウェアコンポーネントをホストコンピュータにロードし、ミドルウェアコンポーネントに対して更新を行わなければならないという要件があることである。これは、スマートカードがウェブベースのアプリケーションと共に使用される時には特に望ましくない要件となる。
【0005】
ますます、ウェブアプリケーションは一般的になってきたので、インターネット経由で利用可能なデータやサービスへのプラットフォーム独立のアクセスが可能である。例えば、オンライン映画レンタルやウェブベースの電子メールアプリケーションなどのウェブサービスが非常に普及してきた。ウェブ接続されたコンピュータをほぼユビキタスにデプロイメントし、ウェブベースのアプリケーションを幅広く適用する利点の1つは、このような解決策によりユーザがユーザ自身のコンピュータに対する仮想範囲から抜け出せることにある。例えば、GoogleのGメールなどのウェブベースの電子メールサービスを使用して、これらのサービスの加入者はウェブに接続されている任意のコンピュータから電子メールにアクセスできる。
【発明の概要】
【発明が解決しようとする課題】
【0006】
ここで、ウェブベース環境にスマートカードを追加することを考察する。ユーザが、例えば、パスワード、アカウント情報またはデジタル証明などを記憶するため、または特定のセキュリティ機能、例えば、暗号化サービスを実行するためのスマートカードを有し、ユーザがユーザ所有のコンピュータ以外のコンピュータ上でウェブベースのあるトランザクションを実行しながら、スマートカードを使用するのを望む場合、ユーザはユーザが使用したい特定のホストコンピュータ103上にホストコンピュータミドルウェア105と、場合により、適切なIFDドライバ109をインストールしなければならなくなる。ホストコンピュータの所有者は、ミドルウェアソフトウェアをインストールするのに十分なユーザ権限を許可しなかった可能性がある。さらに、所有者は、このようなミドルウェアソフトウェアがコンピュータにインストールされるのを望まない可能性がある、または当該コンピュータがパブリックコンピュータである場合、例えば空港の売店や図書館にあるコンピュータである場合、ミドルウェアコンポーネントをインストールする権限を与えられている人でも利用できない可能性もある。この問題は、ユーザがスマートカードを使用する妨げになる。それは、セキュリティソリューションのスマートカードは、機密保持が特に高重要度である環境を条件とするからである。同様に、ミドルウェアを更新する際にも、類似の問題がある。
【0007】
さらに問題なのは、ウェブブラウザがミドルウェアに対するインタフェースを暴露する方法である。人気のあるウェブブラウザ、例えば、Firefox、Internet Explorerは、ミドルウェアに対するさまざまなインタフェースを備えるので、このようなミドルウェアに依存するウェブアプリケーションは、ウェブブラウザ認識アプリケーションである必要がある。つまり、ウェブアプリケーションは、各ウェブブラウザに固有に開発されなければならない、またはどのウェブブラウザが使用中であるか、どのウェブブラウザが適切なミドルウェアに対応する機能があるのかを判断するための内部チェックを行わなければならない。
【0008】
これらの問題は、非常に不利である。ウェブは、広く使用されている多くのタイプのトランザクションの仮想市場となっているが、同時に、プライベートアカウントの不正使用、個人情報窃盗、プライベートデータの窃盗などのセキュリティ問題を招く傾向がある。スマートカードは、このような問題に対処するのに理想的に適している。例えば、スマートカードは、ユーザの証明書を安全に記憶するのに使用され、ログインプロセスに不可欠なコンポーネントとして使用されて、二要素認証を行うことができる。しかしながら、ユーザがウェブサービスにアクセスする際に使用したいホストコンピュータにミドルウェアをインストールしなければならないことで、スマートカードを上述のように使用する際に効果的に使用するのを妨げてしまう。
【課題を解決するための手段】
【0009】
スマートカードは、有利には、暗号化サービスと共に使用されてもよい。このようなスマートカードはユーザの秘密鍵およびデジタル証明を記憶するのに使用される場合がある。さらに、スマートカードは、例えば、メッセージを暗号化する、メッセージを復号化する、ユーザのログインを行う、ユーザの秘密鍵を使用して文書にデジタル署名するなどの暗号化操作を実行するのに使用される場合もある。スマートカードのデプロイメントに関する上述の問題は、暗号装置としてスマートカードを使用する際にはさらに大きな問題となる。
【0010】
ハードウェアのトークンおよびソフトウェアセキュリティ装置もさまざまなインタフェースを有し、さまざまなプロトコルを使用するので、業界は、ハードウェアの区別なしに、証明書を記憶し証明書にアクセスする、データに署名する、またはデータを暗号化するなど暗号化機能にアクセスするための仕様書の作成に取り組んできた。このハードウェアの区別のなく暗号化機能にアクセスするのに、競合する2つの主な標準規格、Crypto API(CAPI)とPKCS#11とがある。これら2つの標準規格は、さまざまなオペレーティングシステムのプラットフォームやウェブブラウザに広く関連付けられている。CAPIはMicrosoft Corporation(Redmond、Washington)のWindows(登録商標)のオペレーティングシステムで使用される標準規格で、Windows(登録商標)のオペレーティングシステムの標準的な機能として提供されている。これは、MicrosoftのInternet Explorerに対して実装される暗号化規格である。RSA Laboratoriesにより開発されたPKCS#11は、複数のデスクトップのオペレーティングシステムで利用可能であり、Mozilla FoundationのFirefoxウェブブラウザ経由でネイティブに利用できる。これら2つのアプローチには、類似点も相違点もある。
【0011】
スマートカードを使用して暗号化サービスを提供する従来のアプローチでは、開発者が、電子メールクライアントやデスクトップログインまたはVirtual Private Network(VPN)などの他のアプリケーションにプラグインとしてインストールされるCAPIかPKCS#11かのいずれかのためのホストモジュールを開発するものであった。これらのモジュールは、基本のオペレーティングシステム設定の一部ではない。
【0012】
上述の内容から、ウェブアプリケーションがスマートカードにアクセスするための改良方法が必要であることは明らかである。
【図面の簡単な説明】
【0013】
【図1】PC/SC仕様の実装のハイレベルのブロック図である。
【図2】図1のスマートカードのアーキテクチャのハイレベルのブロック図である。
【図3】ウェブブラウザアプリケーションがスマートカードと対話する一実施形態を示すブロック図である。
【図4】スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラムが2つの部分、スマートカードリソースマネージャラッパウェブブラウザ拡張機能とスマートカードアプリケーションインタフェーススクリプトモジュールとに分割される、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラムの一実施形態を示すブロック図である。
【図5】ユーザがウェブページの実行を試みようとする可能性のあるネットワークの概略図である。
【図6】スマートカードと通信するためのSConnect.PCSCクラスのインスタンス化およびその使用を示すブロック図である。
【図7】ユーザがスマートカードの使用が必要なウェブアプリケーションの実行を試みる時のメッセージフローを示すタイミングシーケンス図である。
【図8】スマートカードに対して非同期コマンドを作成する時に発生するメッセージフローおよびそのタイミングを示すタイミングシーケンス図である。
【図9a】リモートコンピュータシステムで実行するリモートサーバからカード固有ドライバを取得するためのシーケンスを示すタイミングシーケンス図である。
【図9b】リモートコンピュータシステムで実行するリモートサーバからカード固有ドライバを取得するためのシーケンスを示すタイミングシーケンス図である。
【図10】プロセスフローを示すタイミングシーケンス図である。
【図11】ユーザがウェブサイトからダウンロードされたジャバスクリプトを使用してスマートカードと対話するウェブサイトを承認または非承認することができるユーザダイアログウィンドウの一例を示す図である。
【図12】ユーザがウェブサイトからダウンロードされたジャバスクリプトを使用してスマートカードと対話することが許可された、または許可されていないウェブサイトのリストを管理することができるユーザダイアログウィンドウの一例を示す図である。
【図13】ウェブサイトからダウンロードされたジャバスクリプトを使用してウェブサイトにスマートカードと対話することを許可または許可しないプロセスフローを示すタイミングシーケンス図である。
【発明を実施するための形態】
【0014】
以下の詳細な説明では、例として本発明が実施可能な特定の実施形態を示す添付の図面を参照する。これらの実施形態は、当業者が本発明を実施することができるように十分詳細に説明されている。本発明の種々の実施形態は、異なるけれども、必ずしも互いに排他的であるとは限らないことは理解されたい。例えば、1つの実施形態に関して本明細書で説明される特定の機能、構造、または特性は、本発明の精神および範囲から逸脱せずに、他の実施形態の中で実装されてもよい。さらに、各々の開示された実施形態の中の個々の要素の配置や構成は、本発明の精神および範囲から逸脱せずに、変更してもよいことは理解されたい。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではなく、本発明の範囲は添付の請求項によってのみ定義され、請求項が適用される全ての範囲の等価物と共に適切に解釈されるべきである。図面内では、複数の図にわたって同じ符号は同じまたは類似の機能性を指すものである。
【0015】
本発明の一実施形態では、ウェブブラウザの拡張機能は、ほとんどのコンピュータで見られるウェブブラウザアプリケーションとスマートカードリソースマネージャ(PC/SC)との間のインタフェースを提供する。ウェブブラウザ拡張機能は、ウェブブラウザアプリケーションをスマートカードリソースマネージャから隔離する。さらに、ウェブブラウザ拡張機能は、スマートカードリソースマネージャを介して、ウェブブラウザアプリケーションと、ウェブブラウザがその中のウェブブラウザ拡張機能を実行中であるホストコンピュータ103に接続されたスマートカードとの間の通信パイプを提供する。
【0016】
図3は、ウェブブラウザアプリケーションA300aがスマートカードA104aと対話する一実施形態を示すブロック図である。先行技術の例では、各々のタイプのスマートカード104はスマートカードのタイプに固有のドライバを使用する。図3の実施形態では、好適な実施形態では、そのカード固有ドライバはスクリプトモジュール301として実装されている。カード固有ドライバ301がまだロードされていない場合、図9に関連して以下で説明するように、例えば、オンデマンドのJava(登録商標)Scriptとして知られている技術を使用してロードされる。
【0017】
カード固有ドライバ301は、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303を介してスマートカード104aと通信する。スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303は、スマートカードリソースマネージャ107上でラッパとして機能するウェブブラウザスクリプト、例えば、Java(登録商標)Scriptスクリプトと組み合わされたウェブブラウザ拡張機能である。
【0018】
スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303は、ウェブアプリケーションが標準的なスマートカード104と通信できるようにする接続技術を提供する。ホスト(PC)アプリケーションは、ホストオペレーティングシステム内のPC/SCと呼ばれる専用の通信層を介してスマートカード104に接続する。同様に、スマートカード104と通信できるウェブページまたはアプリケーションのコンポーネントは、組み込みスクリプト、典型的にはJava(登録商標)Scriptである。ウェブブラウザに直接組み込まれるか、またはプラグインを介して間接的に組み込まれない限り、ウェブページ内のスクリプトはホストマシンのハードウェアと通信できない。スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303は、このような機能性を提供する従来のウェブブラウザの技術を使用する標準的なホスト通信フレームワークを使用して、ホストがウェブブラウザでウェブページを表示する際にこのウェブページ内のJava(登録商標)Scriptとスマートカード104との間の通信チャネルを可能にする。スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303は、ウェブアプリケーションにスマートカードの接続性を提供するこの技術を梃子にして開発者の習熟曲線を最小化するように、ウェブブラウザ独立型であり、従来のスマートカード通信APIを提供する。概念的には、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303は、AJAXウェブアプリケーション開発を可能にするXmlHttpRequestオブジェクトと同様の振る舞いの接続性を提供する。XmlHttpRequestはJava(登録商標)Scriptとサーバとの間の接続性を提供するが、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303はアプリケーションJava(登録商標)Script、すなわち、ウェブブラウザアプリケーション101とスマートカード104との間の接続性を提供する。
【0019】
図4は、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303が2つの部分、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401とスマートカードアプリケーションインタフェーススクリプトモジュール403とに分割される、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303の一実施形態を示すブロック図である。
【0020】
スマートカードリソースマネージャラッパウェブブラウザ拡張機能401は、ウェブブラウザのデフォルト機能を強化して、PC/SC実装のチャネルを作成するプログラムである。各ウェブブラウザ203(例えば、Mozilla FoundationのFirefox、MicrosoftのInternet Explorer、Apple Inc.,(Cupertino、California)のSafari、Opera Software ASA(Oslo、Norway)のOpera)は、自身の所定の拡張機能作成手段を有する。したがって、対応するスマートカードリソースマネージャラッパウェブブラウザ拡張機能401は、各々のサポートされたウェブブラウザに使用可能である。拡張機能は、Java(登録商標)Scriptを介してアクセス可能である。
【0021】
上述したように、ウェブブラウザには拡張機能を書き込むさまざまな方法があり、場合によっては、対話するさまざまな方法がある。開発者に製造環境を提供するために、開発者から全てのウェブブラウザ依存コードを隠すライブラリスクリプトは、スマートカードアプリケーションインタフェーススクリプトモジュール403を介して利用可能になる。スマートカードアプリケーションインタフェーススクリプトモジュール403は、ウェブブラウザが書き込まれる拡張機能を除外して対話する一意の方法からアプリケーションプログラム101を隔離するPC/SC層に対するオブジェクト指向インタフェースを提供する。
【0022】
表1は、スマートカード104にアクセスするウェブブラウザアプリケーション101の一例である。表1の例では、
【表1】
表1 スマートカードリソースマネージャラッパ.jsを使用する基本のウェブアプリケーション用のコード
【0023】
表1のコードは、スクリプト(Java(登録商標)Script)を実行する基本のウェブページであり、APDUを送信することによりスマートカードと通信する。表1のコードは、スマートカードアプリケーションインタフェーススクリプトモジュール403をロードすることから始まる(この例では、スマートカードアプリケーションインタフェーススクリプトモジュール403は、SConnect.jsと呼ばれる)。アプリケーションインタフェースモジュール403、すなわち、以下のステートメント
【表2】
によるウェブページの開始時に含められるsconnect.jsスクリプトライブラリは、ウェブブラウザ依存のコードを処理する。したがって、ウェブ開発者はスマートカードとの対話ロジックに自由に焦点を合わせることができる。
【0024】
スマートカードアプリケーションインタフェーススクリプトモジュール403は、ウェブブラウザのセッションにすでにロードされているか、またはユーザが対話するリモートサーバサイトからロードされる場合がある。
【0025】
アプリケーションプログラム300は、典型的には、SConnect.PCSCクラスのオブジェクトを作成することから始まる。オブジェクトを作成するコンストラクタ(コンストラクタは、オブジェクトが作成される時に実行されるクラス内の特定の命令ブロックである)は、ウェブブラウザ固有のスマートカードリソースマネージャラッパウェブブラウザ拡張機能401がインストールされている場合はそのインスタンスを作成する。インストールされていない場合、コンストラクタは、System.BrowserExtensionNotInstalledExceptionをスローする。オブジェクトの作成がうまくいくと、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401内のestablishContext(PC/AC APIのSCardEstablishContextに相当する)に対する呼び出しを終了する。以下の行は、SConnect.PCSCクラスのオブジェクトの作成の方法を示す。
【表3】
【0026】
一方、System.BrowserExtensionNotInstalledExceptionが<script...>のコマンドによってスローされる場合、ウェブアプリケーションを実行するユーザはリモートサーバからスマートカードリソースマネージャラッパ.js303をインストールするようにインバイトされる。
【0027】
したがって、呼び出し
【表4】
は、新規オブジェクト−pcscを作成する。pcscオブジェクトは、ウェブブラウザアプリケーションプログラム300から呼び出し可能なメソッドを有する。これらのメソッドは、スマートカードアプリケーションインタフェーススクリプトモジュール403内に対応する部分があり、またスマートカードリソースマネージャ(PC/SC)107内に対応する関数がある。したがって、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401は、ウェブブラウザアプリケーションプログラム300により呼び出し可能なスマートカードリソースマネージャ(PC/SC)107に対するオブジェクト指向インタフェースを提供する。
【0028】
図5は、ユーザ501がウェブページの実行を試みるネットワークの概略図である。ユーザ501は、ホストコンピュータ103上でウィンドウ503を表示するウェブブラウザ203を操作している。ユーザは、おそらくネットワーク509を介してある形式のオンライントランザクションを実行するためにリモートコンピュータシステム507上で実行するリモートウェブサーバ505と対話することを望む。トランザクションを保証するために、ユーザ501はインタフェースデバイス111を介してホストコンピュータ103に接続されたスマートカード104を使用する。
【0029】
ウェブブラウザのセッションの一部として、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401がすでにインストールされていてもよい。1つの代替の実施形態では、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401はウェブブラウザ203にインストールされていない。スマートカードリソースマネージャラッパウェブブラウザ拡張機能401がすでにインストールされている場合は、ユーザはスマートカードリソースマネージャラッパウェブブラウザ拡張機能401をインストールするように指示されない。一方、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401がインストールされていない場合は、ユーザ501はリモートサーバシステム513上で実行するサーバ(例えば、www.sconnect.com)511からスマートカードリソースマネージャラッパウェブブラウザ拡張機能401をロードするようにインバイトされる。あるいは、ユーザ501により実行されているウェブページのプロバイダが、プロバイダにより操作されるウェブサイトからスマートカードリソースマネージャラッパウェブブラウザ拡張機能401を提供してもよい。
【0030】
ホストコンピュータ103は、それに取り付けられた多くのスマートカードリーダ111を有することができるので、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303は、listReaders(readersWithCard)関数を使用して、リーダをリストアップする方法を提供する。引数値「true」を指定することで、スマートカードが挿入されているこれらのリーダのみをリストアップし、それ以外の全てのリーダの名前が返される。
【表5】
【0031】
pcscオブジェクトのlistReadersメソッドにおけるこの呼び出しは、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401内の対応する関数、例えば、スマートカードリソースマネージャ(PC/SC)107のSCardListCards()関数を呼び出すPCSC−SCardListReadersと呼ばれる関数における呼び出しを発生させる。
【0032】
次のステップは、名前、接続モード(共有、専用、または相互)、プロトコル識別子(T0またはT1)を指定するリーダ111に接続することである。trueの返り値は、作成が成功したことを示す。
【表6】
【0033】
この時点で、ウェブブラウザ203はリーダに、またリーダを介してスマートカード101にコマンドを送信できる状態にあり、リーダへの接続がうまくなされたことになる。一実施形態では、コマンドはISO−7816APDU形式で送信される。PC/SCでは、これはSCardTransmit APIを使用して行われる。一実施形態では、スマートカードリソースマネージャラッパ拡張機能303は、この送信を行うためにAPI transmit(command)を提供する。
【表7】
【0034】
スマートカード104との典型的な対話では、応答は状態語および状態データである。状態語は、ほとんどの場合、意味がホストアプリケーションによって解釈可能な2バイト値であるが、特定の状態語はISO7816−4によって標準化され、指定される。
【表8】
【0035】
1つの状態語は、61XXである。XXは、GetResponseコマンド(00C00000XX)を使用してホストアプリケーションにより取り出されるバイト数を表わす。取り出し動作のシーケンスはGetResponseコマンドを使用して応答データを取り出さなければならないことが多いので、一実施形態は、全てのデータが取り出されるまでGetResponseコマンドのシーケンスを実行するためのexchangeAPDUメソッドを含む。
【表9】
【0036】
最後に、アプリケーション101はリーダ111を外し、SConnect.PCSCクラスのdisposeメソッドを呼び出すことによってリソースを解除する。PC/SCでは、(SCardDisconnect APIを使用して)スマートカードを外す時に、外す前にスマートカードに取り込まれるアクションを指定する配置モードが指定することができる。これらのアクションの例は、LeaveCard、ResetCard、UnpowerCard、EjectCardである。disconnect関数が使用されない場合、disposeメソッドがLeaveCardアクションを使用してスマートカードを外す。
【表10】
【0037】
図6は、スマートカードと通信するためのSConnect.PCSCクラスのインスタンス化およびその使用を示すブロック図である。ウェブブラウザアプリケーションが「pcsc=new SConnect.PCSC」命令を実行する時、SConnect.PCSCクラスのインスタンス601がインスタンス化される。オブジェクト601は、少なくとも1つの引数を有するメソッドtransmit603を含む。典型的には、これは、SConnect.PCSCクラスからの継承によるものである。引数は、スマートカード104に送信されるべきAPDUメッセージである。
【0038】
ウェブブラウザアプリケーション300は、PCSCオブジェクト601のtransmit()メソッド603における呼び出しである少なくとも1つの命令605を含んでもよく、その命令の実行はpcscオブジェクト601、スマートカード104に送信されるべき特定のAPDU引数を有するメッセージ601のtransmitメソッドにおける呼び出しを発生させる。
【0039】
SConnect.PCSCクラス定義は、transmitメソッドがPCSC_transmit関数に対する呼び出しの命令609を発生させることを提供する。PCSC_transmit関数は、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401の関数である。したがって、PCSC_transmit関数に対する関数呼び出しの命令609の実行は、スマートカード104に送信されているAPDUを伝える関数呼び出し611を発生させる。
【0040】
スマートカードリソースマネージャラッパウェブブラウザ拡張機能401のPCSC_transmit関数の実装は、スマートカードリソースマネージャ(PC/SC)107のSCardTransmit関数を呼び出す命令613を含む。その命令の実行は、スマートカードリソースマネージャ(PC/SC)107に対応する関数呼び出し615を発生させる。
【0041】
スマートカードリソースマネージャ(PC/SC)107のSCardTransmit関数は、その引数リストを使用して受信されたAPDUのスマートカード104への送信を発生させる。
【0042】
スマートカードリソースマネージャラッパウェブブラウザ拡張機能401がインストールされている場合、スマートカードリソースマネージャ107により検出されたスマートカード挿入イベントはスマートカードリソースマネージャラッパウェブブラウザ拡張機能401に送信される。スマートカード104の挿入の検出時に、またはユーザ501が認証されていないスマートカード104の使用を試みる時に、ユーザ501は自身の認証を成功させる必要がある。したがって、スマートカードリソースマネージャラッパ拡張機能303が呼び出しているウェブブラウザアプリケーション300にスマートカード104が挿入されたことを伝えて、ウェブブラウザアプリケーション300がスマートカードリソースマネージャラッパウェブブラウザ拡張機能401内の関数の呼び出しを試みる時に、スマートカード104またはスマートカードリソースマネージャ(PC/SC)107は、ユーザが認証された、または認証されていないという表示を返す。この最後のイベントでは、ウェブブラウザアプリケーション300はログイン画面を表示して、ユーザ501にスマートカード104に対してログインするメカニズムを提供することができる。
【0043】
図7は、ユーザ501がスマートカード104の使用が必要なウェブアプリケーションの実行を試みる時のメッセージフローを示すタイミングシーケンス図である。ユーザ501はウェブブラウザ203をホストコンピュータ103上で実行する。ユーザ501がリモートサーバ505上のウェブアプリケーションへのアクセスを試みる(ステップ701)。ウェブアプリケーションに対応するウェブページがウェブブラウザ203に送信される。ウェブアプリケーションは、スマートカードリソースマネージャラッパ拡張機能303のスクリプトに対する呼び出しを含む。スマートカードリソースマネージャラッパ拡張機能303がウェブブラウザ203にインストールされている場合(ステップ705)、スマートカード104との通信が開始する(ステップ707)。
【0044】
一方、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401がインストールされていない場合、ユーザ501はスマートカードリソースマネージャラッパウェブブラウザ拡張機能401を(必要に応じて)ダウンロードし、インストールするように指示される(ステップ708)。これは、典型的には、ユーザ501に、サーバ511からのスマートカードリソースマネージャラッパウェブブラウザ拡張機能401の要求を発生させるリンクにクリックさせることで行われ、サーバ511からスマートカードリソースマネージャラッパウェブブラウザ拡張機能401がロードされ得る(ステップ709)。それに応答して、サーバ511はスマートカードリソースマネージャラッパウェブブラウザ拡張機能401を返し(ステップ711)、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401がウェブブラウザ203にロードされる(ステップ713)。スマートカード104との通信が発生する(ステップ707)。
【0045】
ウェブブラウザアプリケーションは、典型的には、1つのスレッドで実行する。スレッドは、他のスレッドと並行して実行できる命令の1つのシーケンスであるが、その中の命令は互いに連続した命令である。典型的には、スマートカード104との対話は、比較的時間がかかる。この遅延のために、アプリケーションの命令が1つのスレッドで実行している時に、スマートカード104に接続するコマンドか、スマートカード104に発行されたコマンドのいずれかが、ウェブブラウザ203のセッションがロックされたようになる不快なユーザ501体験につながる可能性がある。より改善されたアプローチは、ユーザ501がウェブページと対話を続けることができるようにする、またはある状態情報、例えば、状態進捗バーを表示できるようにすることである。
【0046】
一実施形態では、スマートカード104に接続する操作またはスマートカード104と通信するコマンドは、非同期的に行われる。表IIは、スマートカード104に対するコマンドの非同期的な送信を示すコードセグメントである。
【表11】
表II スマートカードコマンドの非同期的な実行のコード
【0047】
非同期コマンドの作成を行うために、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401は、スマートカードリソースマネージャ(PC/SC)107によるコマンドの実行の終了時にコールバックを提供する関数を含む。したがって、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401は、async_transmit関数を提供する。その第1の引数はホストコンピュータ103からの送信のためのAPDUパケットであり、第2の引数はコマンドから返される時に呼び出される関数である。「コールバック」関数は、典型的には、スマートカード104またはスマートカードリソースマネージャ(PC/SC)107によるコマンドの実行から得られた結果に従って取り込まれるいくつかのアクションを指定する。
【0048】
図8は、スマートカード104に対して非同期コマンドを作成する時に発生するメッセージフローおよびそのタイミングを示すタイミングシーケンス図である。この例では、アプリケーション101を表IIのコードと見なす。ホストコンピュータ103はRunDemo関数を実行している(位置801)。ホストコンピュータ103がpcsc.async_transmit関数に出会うと、ホストコンピュータ103はスマートカードリソースマネージャラッパウェブブラウザ拡張機能401に制御を転送する(遷移803)。pcsc.async_transmit関数が、新規スレッドでtransmit()呼び出し805をスマートカードリソースマネージャ107に発行する。アプリケーション101は、呼び出しの後、実行を継続する(807)。pcsc.async_transmitに対する呼び出しにより生じた新規スレッドで、スマートカードリソースマネージャ107はifd111(図示せず)に、最終的にはスマートカード104にコマンドを送信する(ステップ809)。これらの対話はスマートカードリソースマネージャ107とスマートカード104との間で発生するが、アプリケーション101は元のスレッドで実行を継続する(811)。
【0049】
接続を試みた後のある時点で、スマートカード104は応答し(813)、スマートカードリソースマネージャ107は、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401のasync_transmit()関数に対する返り値を使用してアプリケーション101に状態を返す(ステップ815および817)。「コールバック」関数が第2のスレッドからの返り値で呼び出されることを指定するasync_transmit()関数に対する第2の引数により、ホストコンピュータ103はアプリケーション101のcallback()関数に制御を転送する(ステップ819)。
【0050】
非常に似た非同期的メカニズムがスマートカード104への接続を確立する際に採用される場合がある。主な違いは接続するためのメカニズムであるという点であるので、異なるコマンドが使用される。
【0051】
上述したように、特定のスマートカード104のカード固有ドライバ301がまだインストールされていない場合、新しいスマートカード104を検出する際にスマートカードリソースマネージャラッパ拡張機能303はリモートサーバから取得されたカード固有ドライバ301を実行させる。図9aおよび図9bは、リモートコンピュータシステム513で実行するリモートサーバ511からカード固有ドライバ301を取得するためのシーケンスを示すタイミングシーケンス図である。カード固有ドライバ301がロードされていない場合、リモートサーバ511が当該カードに利用可能なカード固有ドライバ301を有するのであれば、リモートサーバ511から正確なカード固有ドライバ301をダウンロードするためにブートストラップスクリプト900が実行される。
【0052】
スマートカード104は、物理的にホストコンピュータ103に接続される(ステップ901)。これがスマートカードリソースマネージャ107により検出されたスマートカード挿入イベントをトリガする(ステップ903)。スマートカードリソースマネージャ(PC/SC)107は、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303がイベントループを使用してカードの挿入と取り外しを監視することができるように、APIおよびイベントを提供する。スマートカードリソースマネージャ107は、スマートカード104がリセット応答(ATR)を行う要求を送信する(905)。スマートカード104はATRに応答して(907)、ATRはウェブブラウザ203、詳細には、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303に送信される(ステップ909)。
【0053】
スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303が適切なカード固有ドライバ301がすでにロードされていると判断することができる場合(ステップ911)、ウェブブラウザ203はカードとの通信を始めることができる(ステップ913)。そうでなければ、ATRがリモートサーバ511に送信される。リモートサーバ511がATRからスマートカード104を識別可能であるか否かを判断する(ステップ917)。多くの場合、スマートカード104のタイプは、historical bytesとして知られているATRのフィールドから識別できる。スマートカード104のタイプがATRから判断可能である場合、カード固有ドライバ301がホストコンピュータ103に返送される(ステップ919)。
【0054】
サーバ511がATRからスマートカード104を識別できない場合、リモートサーバ511はホストコンピュータ103にスマートカード104がATRから一意に識別されなかったことを示すメッセージを返送する(メッセージ921)。メッセージ921では、リモートサーバ511はスマートカード104が実行するためのコマンドを含む。コマンドは、スマートカード104の機能を公開するコマンドであるように選択される。例えば、スマートカード104がJava(登録商標)Cardであるか否かを検査するために、コマンドはスマートカード104に対するgetStatus()要求とすることができ、このコマンドに応答して、スマートカード104はサポートされるアプリケーションのアプリケーション識別子(AID)を返すことによってスマートカード104がサポートするアプリケーションを識別する。ネイティブなスマートカード104では、コマンドは、検査される特定のネイティブなスマートカード104によりサポートされていることがわかっている動作とするができる。この場合、期待返り値は、動作から得られる期待結果であり、例えば、Gemalto Inc.の(Austin、Texas)Gemalto .NETカードでは、スマートカード104がmscmと呼ばれるサービスをサポートしている場合、検査コマンドを問い合わせることができる。
【0055】
ブートストラップスクリプト900がコマンドを受信し、コマンドをスマートカードリソースマネージャ107に転送する(ステップ923)。次に、スマートカードリソースマネージャ107はコマンドをスマートカード104に転送する(ステップ925)。スマートカード104がコマンドを実行し(ステップ927)、結果を返す(ステップ929)。次に、結果はブートストラップスクリプト900に転送され(ステップ931)、リモートサーバ511に転送される(ステップ933)。リモートサーバ511は、結果からスマートカード104が認識されたカードであるか否か、サポートされるドライバを有するか否かを判断する(ステップ935)。リモートサーバ511が、スマートカード104はサーバ511が検査しているスマートカード104として応答したと判断する場合、サーバ511はカード固有ドライバ301をホストコンピュータ103に返送する(ステップ937)。一実施形態では、ホストコンピュータ103に返送されるものは、カード固有ドライバ301をダウンロードするリンクである。
【0056】
一方、スマートカード104から返された結果が検査されるスマートカード104の期待結果と一致しない場合、サーバ511は別のスマートカード104を試すことができる(ステップ939)。検査するスマートカード104がそれ以上ある場合、リモートサーバ511はスマートカード104により実行される別のコマンドと共にメッセージを返す(ステップ921)。しかしながら、検査するスマートカード104がそれ以上ない場合、すなわちサーバ511がカード固有ドライバ301を有するスマートカード104が全て検査されてしまっている場合、スマートカード104がサポートされていないということを示すエラーメッセージがホストコンピュータ103に返される(メッセージ941)。
【0057】
(上述したように)スマートカードリソースマネージャラッパウェブブラウザ拡張機能401をダウンロードするのに同じサーバ511が使用されているが、これは説明のための単なる例にすぎないことに留意すべきである。カード固有ドライバ301およびスマートカードリソースマネージャラッパウェブブラウザ拡張機能401は、全く関係のないリモートサーバからロードされてもよい。
【0058】
上述したように、暗号化サービスはスマートカード104の多くの重要なアプリケーションのうちの1つである。従来の暗号化ソリューションは、2つの互換性のない競合するシステムであるPKCS#11とCAPIとを有するレガシーのために、実装が非常に煩雑であった。従来は、スマートカードアプリケーションの開発者は、PKCS#11とCAPIとのためのホストモジュールを書き込み、デプロイしていた。上述したように、このことはいくつもの望ましくない結果につながった。
【0059】
スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303(例えば、上述のようにスマートカードリソースマネージャラッパウェブブラウザ拡張機能401とスマートカードアプリケーションインタフェーススクリプトモジュール403との組み合わせ)、ブートストラップスクリプト900、関連するプロセスフローを使用する上述した技術を使用することによって、アプリケーションの開発者は、ホストコンピュータ103の暗号化ミドルウェアに依存して、それに苦しむことから開放することができる。
【0060】
スマートカード104がPKCS#11機能を有するシナリオを考えると、開発者はスマートカード104がこれらの暗号化機能を使用して電子メールメッセージにデジタル署名するのに使用されるアプリケーションを開発することを望む。この場合、特定のアプリケーション101は、暗号化機能に直接アクセスするために(ブートストラップスクリプト900を使用してロードされた)カード固有ドライバ301を介してスマートカードリソースマネージャラッパ拡張機能303上で開発される。
【0061】
図10は、プロセスフローを示すタイミングシーケンス図である。
【0062】
このウェブアプリケーションのコンテキストでのこの実装のワークフローは、以下の通りである。ユーザ501のアリスが自分のスマートカード104に記憶されたPGP鍵を使用して電子メールメッセージに署名することを望むとする。
アリスは、Secure Society’s SMail151(すなわち、リモートウェブサーバ上で実行するアプリケーション)にアクセスし(ステップ153)、たとえば、Firefoxウェブブラウザ203を使用してメッセージ155がそのウェブインターフェースを介する。
アリスが自分のスマートカード104に記憶された自分のPGP鍵を使用して署名したいとの電子メールを書き込んだ(ステップ157)。彼女は電子メール署名アイコン/ボタンをクリックする(ステップ159)。Firefoxウェブブラウザ203がSConnect可能でない場合、すなわち、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401がインストールされていない場合、彼女はそれをインストールするように指示される。
(例えば、SMailサーバ505からダウンロードされた(ステップ161))ブートストラップJava(登録商標)Script900が、彼女のスマートカード104のATRのメッセージ163、165を判断し、(AJAXを使用して)SMailサーバ151に返信する(ステップ167)。
SMailサーバ151はデータベースを調べて、スマートカード104用の対応するスマートカード固有PKCS#11 Java(登録商標)Scriptモジュール(すなわち、本明細書内で使用される用語では、カード固有ドライバ301)を判断し、それを前の要求に応答して返信する(ステップ169)。
カード固有ドライバ301がダウンロードされると、カード固有ドライバ301は(スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303を使用して)スマートカード104と通信を開始する。安全な通信は、必ず暗号化されたメッセージがサーバ511からスマートカード104に送信されることによって保証される。
(今、ウェブブラウザ203で実行中の)カード固有ドライバ301が、アリスのスマートカード104または他のログインプロシージャに対して認証を行うようにPINエントリダイアログボックスを使用してアリスに指示する(ステップ171)。
認証が成功すれば、アリスのスマートカードから適切な証明書が選択される(ステップ173)。スマートカード104が多くの証明書を含む場合には、それらの証明書が表示され、アリスはそのうちの1つを選択するように指示される。
証明書が選択された後、アリスのメールのコンテンツに署名するためにカード固有ドライバ301と、例えば、ASP.NETハンドラとが、スマートカードとデータを交換する(ステップ175)。これらの通信は、上述したようにスマートカード104にデータを送信するためにスマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303に呼び出しを配置することによって行われる。
署名は、PGP仕様に従って、スマートカード104によりラップされる(ステップ177)。
署名されたメッセージは、ウェブブラウザに返信され(ステップ179)、ウェブブラウザによってウェブメールアプリケーション151に返信される(ステップ181)。
【0063】
代替の実施形態では、ホストコンピュータ103上で実行しスマートカード104が接続されているアプリケーション.jsジャバスクリプト101によって、スマートカード104へのアクセスが試みられると、ジャバスクリプト101とスマートカード104との間の提案された対話をユーザが認証することを望むか否かに関してクエリが行われる。1つの動作のシナリオでは、ウェブサイト505は、ユーザを騙すことによって秘密のユーザ情報を取得するために、またはスマートカード104に対するサービス攻撃を拒絶するために、悪意を持って設計されたものである場合がある。サービス攻撃を拒絶する場合、アプリケーション.jsジャバスクリプト101は、例えば、スマートカード104に不正確なログイン証明書を繰り返し提示するように設計されたものである場合がある。ほとんどのスマートカード104は、不正確なログインでの試行が許される数が制限されている。この制限数を超えた場合、スマートカード104は、例えば、カード発行者からロックされ、高レベルの介入なしに使用できなくなる。
【0064】
図11は、ウェブブラウザ拡張機能401がスマートカード104へのアクセスの試みを検出する時にユーザに表示されるユーザダイアログウィンドウの一例を示す図であり、ダイアログ241を示す図である。ユーザがアプリケーション.jsジャバスクリプト101とスマートカード104との間の対話を承認したい場合、ウェブサイトのurl(またはウェブサイトを識別する何か他の適切な装置)が承認リストに追加される。ユーザがアクセスを拒否する場合、ウェブサイトは非承認リストに追加される。このリストは、ウェブブラウザの所定の機構(例えば、クッキー)によって管理される。
【0065】
図12は、スマートカード104との対話を許可された/許可されないウェブサイトの承認非承認リストを編集するためにユーザに表示されるユーザダイアログウィンドウ243の一例を示す図である。一実施形態では、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303のインストールにより、例えば、ウェブブラウザ「ツール」メニューの下のダイアログウィンドウ243を表示するために、ウェブブラウザメニュー内にメニューアイテムを追加することができる。
【0066】
図12は、スマートカード104と対話するアプリケーションジャバスクリプトの権利を許可または許可しない承認非承認リストの使用を示すタイミングシーケンス図である。ユーザがウェブサイト(例えば、http://www.evilweb.com)にアクセスした。そのウェブサイトが、アプリケーションジャバスクリプト101xを更新することによってスマートカード104に攻撃しようとする。アプリケーションジャバスクリプト101xがスマートカード104との対話を要求すると(メッセージ253)、ウェブブラウザ拡張機能401は、ジャバスクリプトの元のウェブサイトが認証リスト内にあるか否かを判断する(ステップ255)。
【0067】
ウェブサイトが承認リスト内にある場合、表示(例えば、「ACC」)がウェブブラウザ拡張機能401からジャバスクリプト101xに送信される(メッセージ257)、対話が開始され得る(ステップ259)。
【0068】
ウェブサイトが承認リスト内にない場合、ウェブブラウザ拡張機能401はそのウェブサイトが非承認リスト内にあるか否かを判断する(ステップ261)。ウェブサイトが非承認リスト内にある場合、(例えば、「NACC」)を示すメッセージがウェブブラウザ拡張機能401からジャバスクリプト101xに送信される(メッセージ263)。
【0069】
ウェブサイトがいずれのリスト内にもない場合、そのウェブサイトは続行が許可されるか否かをユーザが決定するためのダイアログウィンドウ241(図11)が表示される(ステップ265)。
【0070】
ウェブサイトのアクセスを許可するか否かのユーザ決定が得られる(ステップ267)。ユーザがスマートカード104との対話のためにウェブサイトを承認した場合、(ステップ269)、対話の承認を示すメッセージ(例えば、「ACC」)がジャバスクリプト101xに送信され(メッセージ271)、対話が開始され得る(ステップ259)。任意で、例えば、ダイアログウィンドウ241の中の決定が記憶されることを示すチェックボックスをユーザがクリックした場合、ウェブサイトは承認リストに追加される(ステップ273)。
【0071】
ユーザがスマートカード104と対話するウェブサイトの権利を拒否した場合(ステップ269)、対話の非承認を示すメッセージ(例えば、「NACC」)がジャバスクリプト101xに送信される(メッセージ275)。任意で、例えば、ダイアログウィンドウ241の中の決定が記憶されることを示すチェックボックスをユーザがクリックした場合、ウェブサイトは非承認リストに追加される(ステップ277)。
【0072】
上述の内容から、本明細書内で説明された技術は、スマートカードをウェブアプリケーションのコンテキストでスムーズに使用する有効な機構を提供するものであることは明らかである。従来は、ホストアプリケーションとスマートカードとの間の通信に必要であった煩雑なミドルウェア層は、ウェブブラウザ拡張機能をウェブブラウザにロードすることによって、またカード固有ドライバウェブブラウザ拡張機能をウェブブラウザにオンデマンドでロードすることで避けられる。これらの動的にロードされた拡張機能により、スマートカードの利用にとっては、ウェブアプリケーションがスマートカードと対話するためのウェブブラウザ固有またはプラットフォーム固有の要件を認識しなくても、ウェブアプリケーションと共にスマートカードにより提供される多くの強力なアプリケーション、例えば、暗号化が可能になる。
【0073】
本発明の特定の実施形態を説明して図示したが、本発明は説明し図示したようなコンポーネントの特定の形態または配置に限定されるものではない。本発明は、請求項によってのみ限定される。
【技術分野】
【0001】
本発明は、概して、スマートカードへのアプリケーションプログラムのアクセスに関し、より詳細には、ウェブブラウザで実行するユーザアプリケーションがスマートカードの機能およびデータにアクセスできるシステムおよび方法に関する。
【背景技術】
【0002】
スマートカードは、入出力装置がない小型の安全なパーソナルコンピュータである。スマートカード用の典型的なアプリケーションは、プライベートデータを記憶するユーザ認証を含み、電子財布として使用する。これらのアプリケーションや他のアプリケーションでは、スマートカードと対話する通常モードは、スマートカードが接続されるホストコンピュータ上で実行するホストアプリケーションからのモードである。
【0003】
スマートカードベースの公開鍵基盤の機能へのホストアプリケーションのアクセスは、例えば、典型的には、アプリケーションプログラムから呼び出し可能なアプリケーションプログラムインタフェースを提供するミドルウェアをインストールすることで達成される。次に、ミドルウェアは、典型的にはある形態のリーダを介してスマートカードのハードウェアとの対話を実行する。一般に利用可能なアーキテクチャは、PC/SCワークグループからのPC/SC仕様に基づく。図1は、PC/SC仕様の実装のハイレベルのブロック図である。ホストコンピュータ103上で実行するスマートカード認識アプリケーション101は、ホストコンピュータミドルウェア105とスマートカードリソースマネージャ107を介してスマートカード104のaからdにアクセスする。スマートカードリソースマネージャ107は、次に、ホストコンピュータ103が接続されている種々のカードリーダ111aから111dのドライバ109aから109dと対話する。
【0004】
このアーキテクチャには、スマートカードのデプロイメントに関して複数の問題がある。これらの問題は、ミドルウェアコンポーネントをホストコンピュータにロードし、ミドルウェアコンポーネントに対して更新を行わなければならないという要件があることである。これは、スマートカードがウェブベースのアプリケーションと共に使用される時には特に望ましくない要件となる。
【0005】
ますます、ウェブアプリケーションは一般的になってきたので、インターネット経由で利用可能なデータやサービスへのプラットフォーム独立のアクセスが可能である。例えば、オンライン映画レンタルやウェブベースの電子メールアプリケーションなどのウェブサービスが非常に普及してきた。ウェブ接続されたコンピュータをほぼユビキタスにデプロイメントし、ウェブベースのアプリケーションを幅広く適用する利点の1つは、このような解決策によりユーザがユーザ自身のコンピュータに対する仮想範囲から抜け出せることにある。例えば、GoogleのGメールなどのウェブベースの電子メールサービスを使用して、これらのサービスの加入者はウェブに接続されている任意のコンピュータから電子メールにアクセスできる。
【発明の概要】
【発明が解決しようとする課題】
【0006】
ここで、ウェブベース環境にスマートカードを追加することを考察する。ユーザが、例えば、パスワード、アカウント情報またはデジタル証明などを記憶するため、または特定のセキュリティ機能、例えば、暗号化サービスを実行するためのスマートカードを有し、ユーザがユーザ所有のコンピュータ以外のコンピュータ上でウェブベースのあるトランザクションを実行しながら、スマートカードを使用するのを望む場合、ユーザはユーザが使用したい特定のホストコンピュータ103上にホストコンピュータミドルウェア105と、場合により、適切なIFDドライバ109をインストールしなければならなくなる。ホストコンピュータの所有者は、ミドルウェアソフトウェアをインストールするのに十分なユーザ権限を許可しなかった可能性がある。さらに、所有者は、このようなミドルウェアソフトウェアがコンピュータにインストールされるのを望まない可能性がある、または当該コンピュータがパブリックコンピュータである場合、例えば空港の売店や図書館にあるコンピュータである場合、ミドルウェアコンポーネントをインストールする権限を与えられている人でも利用できない可能性もある。この問題は、ユーザがスマートカードを使用する妨げになる。それは、セキュリティソリューションのスマートカードは、機密保持が特に高重要度である環境を条件とするからである。同様に、ミドルウェアを更新する際にも、類似の問題がある。
【0007】
さらに問題なのは、ウェブブラウザがミドルウェアに対するインタフェースを暴露する方法である。人気のあるウェブブラウザ、例えば、Firefox、Internet Explorerは、ミドルウェアに対するさまざまなインタフェースを備えるので、このようなミドルウェアに依存するウェブアプリケーションは、ウェブブラウザ認識アプリケーションである必要がある。つまり、ウェブアプリケーションは、各ウェブブラウザに固有に開発されなければならない、またはどのウェブブラウザが使用中であるか、どのウェブブラウザが適切なミドルウェアに対応する機能があるのかを判断するための内部チェックを行わなければならない。
【0008】
これらの問題は、非常に不利である。ウェブは、広く使用されている多くのタイプのトランザクションの仮想市場となっているが、同時に、プライベートアカウントの不正使用、個人情報窃盗、プライベートデータの窃盗などのセキュリティ問題を招く傾向がある。スマートカードは、このような問題に対処するのに理想的に適している。例えば、スマートカードは、ユーザの証明書を安全に記憶するのに使用され、ログインプロセスに不可欠なコンポーネントとして使用されて、二要素認証を行うことができる。しかしながら、ユーザがウェブサービスにアクセスする際に使用したいホストコンピュータにミドルウェアをインストールしなければならないことで、スマートカードを上述のように使用する際に効果的に使用するのを妨げてしまう。
【課題を解決するための手段】
【0009】
スマートカードは、有利には、暗号化サービスと共に使用されてもよい。このようなスマートカードはユーザの秘密鍵およびデジタル証明を記憶するのに使用される場合がある。さらに、スマートカードは、例えば、メッセージを暗号化する、メッセージを復号化する、ユーザのログインを行う、ユーザの秘密鍵を使用して文書にデジタル署名するなどの暗号化操作を実行するのに使用される場合もある。スマートカードのデプロイメントに関する上述の問題は、暗号装置としてスマートカードを使用する際にはさらに大きな問題となる。
【0010】
ハードウェアのトークンおよびソフトウェアセキュリティ装置もさまざまなインタフェースを有し、さまざまなプロトコルを使用するので、業界は、ハードウェアの区別なしに、証明書を記憶し証明書にアクセスする、データに署名する、またはデータを暗号化するなど暗号化機能にアクセスするための仕様書の作成に取り組んできた。このハードウェアの区別のなく暗号化機能にアクセスするのに、競合する2つの主な標準規格、Crypto API(CAPI)とPKCS#11とがある。これら2つの標準規格は、さまざまなオペレーティングシステムのプラットフォームやウェブブラウザに広く関連付けられている。CAPIはMicrosoft Corporation(Redmond、Washington)のWindows(登録商標)のオペレーティングシステムで使用される標準規格で、Windows(登録商標)のオペレーティングシステムの標準的な機能として提供されている。これは、MicrosoftのInternet Explorerに対して実装される暗号化規格である。RSA Laboratoriesにより開発されたPKCS#11は、複数のデスクトップのオペレーティングシステムで利用可能であり、Mozilla FoundationのFirefoxウェブブラウザ経由でネイティブに利用できる。これら2つのアプローチには、類似点も相違点もある。
【0011】
スマートカードを使用して暗号化サービスを提供する従来のアプローチでは、開発者が、電子メールクライアントやデスクトップログインまたはVirtual Private Network(VPN)などの他のアプリケーションにプラグインとしてインストールされるCAPIかPKCS#11かのいずれかのためのホストモジュールを開発するものであった。これらのモジュールは、基本のオペレーティングシステム設定の一部ではない。
【0012】
上述の内容から、ウェブアプリケーションがスマートカードにアクセスするための改良方法が必要であることは明らかである。
【図面の簡単な説明】
【0013】
【図1】PC/SC仕様の実装のハイレベルのブロック図である。
【図2】図1のスマートカードのアーキテクチャのハイレベルのブロック図である。
【図3】ウェブブラウザアプリケーションがスマートカードと対話する一実施形態を示すブロック図である。
【図4】スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラムが2つの部分、スマートカードリソースマネージャラッパウェブブラウザ拡張機能とスマートカードアプリケーションインタフェーススクリプトモジュールとに分割される、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラムの一実施形態を示すブロック図である。
【図5】ユーザがウェブページの実行を試みようとする可能性のあるネットワークの概略図である。
【図6】スマートカードと通信するためのSConnect.PCSCクラスのインスタンス化およびその使用を示すブロック図である。
【図7】ユーザがスマートカードの使用が必要なウェブアプリケーションの実行を試みる時のメッセージフローを示すタイミングシーケンス図である。
【図8】スマートカードに対して非同期コマンドを作成する時に発生するメッセージフローおよびそのタイミングを示すタイミングシーケンス図である。
【図9a】リモートコンピュータシステムで実行するリモートサーバからカード固有ドライバを取得するためのシーケンスを示すタイミングシーケンス図である。
【図9b】リモートコンピュータシステムで実行するリモートサーバからカード固有ドライバを取得するためのシーケンスを示すタイミングシーケンス図である。
【図10】プロセスフローを示すタイミングシーケンス図である。
【図11】ユーザがウェブサイトからダウンロードされたジャバスクリプトを使用してスマートカードと対話するウェブサイトを承認または非承認することができるユーザダイアログウィンドウの一例を示す図である。
【図12】ユーザがウェブサイトからダウンロードされたジャバスクリプトを使用してスマートカードと対話することが許可された、または許可されていないウェブサイトのリストを管理することができるユーザダイアログウィンドウの一例を示す図である。
【図13】ウェブサイトからダウンロードされたジャバスクリプトを使用してウェブサイトにスマートカードと対話することを許可または許可しないプロセスフローを示すタイミングシーケンス図である。
【発明を実施するための形態】
【0014】
以下の詳細な説明では、例として本発明が実施可能な特定の実施形態を示す添付の図面を参照する。これらの実施形態は、当業者が本発明を実施することができるように十分詳細に説明されている。本発明の種々の実施形態は、異なるけれども、必ずしも互いに排他的であるとは限らないことは理解されたい。例えば、1つの実施形態に関して本明細書で説明される特定の機能、構造、または特性は、本発明の精神および範囲から逸脱せずに、他の実施形態の中で実装されてもよい。さらに、各々の開示された実施形態の中の個々の要素の配置や構成は、本発明の精神および範囲から逸脱せずに、変更してもよいことは理解されたい。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではなく、本発明の範囲は添付の請求項によってのみ定義され、請求項が適用される全ての範囲の等価物と共に適切に解釈されるべきである。図面内では、複数の図にわたって同じ符号は同じまたは類似の機能性を指すものである。
【0015】
本発明の一実施形態では、ウェブブラウザの拡張機能は、ほとんどのコンピュータで見られるウェブブラウザアプリケーションとスマートカードリソースマネージャ(PC/SC)との間のインタフェースを提供する。ウェブブラウザ拡張機能は、ウェブブラウザアプリケーションをスマートカードリソースマネージャから隔離する。さらに、ウェブブラウザ拡張機能は、スマートカードリソースマネージャを介して、ウェブブラウザアプリケーションと、ウェブブラウザがその中のウェブブラウザ拡張機能を実行中であるホストコンピュータ103に接続されたスマートカードとの間の通信パイプを提供する。
【0016】
図3は、ウェブブラウザアプリケーションA300aがスマートカードA104aと対話する一実施形態を示すブロック図である。先行技術の例では、各々のタイプのスマートカード104はスマートカードのタイプに固有のドライバを使用する。図3の実施形態では、好適な実施形態では、そのカード固有ドライバはスクリプトモジュール301として実装されている。カード固有ドライバ301がまだロードされていない場合、図9に関連して以下で説明するように、例えば、オンデマンドのJava(登録商標)Scriptとして知られている技術を使用してロードされる。
【0017】
カード固有ドライバ301は、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303を介してスマートカード104aと通信する。スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303は、スマートカードリソースマネージャ107上でラッパとして機能するウェブブラウザスクリプト、例えば、Java(登録商標)Scriptスクリプトと組み合わされたウェブブラウザ拡張機能である。
【0018】
スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303は、ウェブアプリケーションが標準的なスマートカード104と通信できるようにする接続技術を提供する。ホスト(PC)アプリケーションは、ホストオペレーティングシステム内のPC/SCと呼ばれる専用の通信層を介してスマートカード104に接続する。同様に、スマートカード104と通信できるウェブページまたはアプリケーションのコンポーネントは、組み込みスクリプト、典型的にはJava(登録商標)Scriptである。ウェブブラウザに直接組み込まれるか、またはプラグインを介して間接的に組み込まれない限り、ウェブページ内のスクリプトはホストマシンのハードウェアと通信できない。スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303は、このような機能性を提供する従来のウェブブラウザの技術を使用する標準的なホスト通信フレームワークを使用して、ホストがウェブブラウザでウェブページを表示する際にこのウェブページ内のJava(登録商標)Scriptとスマートカード104との間の通信チャネルを可能にする。スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303は、ウェブアプリケーションにスマートカードの接続性を提供するこの技術を梃子にして開発者の習熟曲線を最小化するように、ウェブブラウザ独立型であり、従来のスマートカード通信APIを提供する。概念的には、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303は、AJAXウェブアプリケーション開発を可能にするXmlHttpRequestオブジェクトと同様の振る舞いの接続性を提供する。XmlHttpRequestはJava(登録商標)Scriptとサーバとの間の接続性を提供するが、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303はアプリケーションJava(登録商標)Script、すなわち、ウェブブラウザアプリケーション101とスマートカード104との間の接続性を提供する。
【0019】
図4は、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303が2つの部分、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401とスマートカードアプリケーションインタフェーススクリプトモジュール403とに分割される、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303の一実施形態を示すブロック図である。
【0020】
スマートカードリソースマネージャラッパウェブブラウザ拡張機能401は、ウェブブラウザのデフォルト機能を強化して、PC/SC実装のチャネルを作成するプログラムである。各ウェブブラウザ203(例えば、Mozilla FoundationのFirefox、MicrosoftのInternet Explorer、Apple Inc.,(Cupertino、California)のSafari、Opera Software ASA(Oslo、Norway)のOpera)は、自身の所定の拡張機能作成手段を有する。したがって、対応するスマートカードリソースマネージャラッパウェブブラウザ拡張機能401は、各々のサポートされたウェブブラウザに使用可能である。拡張機能は、Java(登録商標)Scriptを介してアクセス可能である。
【0021】
上述したように、ウェブブラウザには拡張機能を書き込むさまざまな方法があり、場合によっては、対話するさまざまな方法がある。開発者に製造環境を提供するために、開発者から全てのウェブブラウザ依存コードを隠すライブラリスクリプトは、スマートカードアプリケーションインタフェーススクリプトモジュール403を介して利用可能になる。スマートカードアプリケーションインタフェーススクリプトモジュール403は、ウェブブラウザが書き込まれる拡張機能を除外して対話する一意の方法からアプリケーションプログラム101を隔離するPC/SC層に対するオブジェクト指向インタフェースを提供する。
【0022】
表1は、スマートカード104にアクセスするウェブブラウザアプリケーション101の一例である。表1の例では、
【表1】
表1 スマートカードリソースマネージャラッパ.jsを使用する基本のウェブアプリケーション用のコード
【0023】
表1のコードは、スクリプト(Java(登録商標)Script)を実行する基本のウェブページであり、APDUを送信することによりスマートカードと通信する。表1のコードは、スマートカードアプリケーションインタフェーススクリプトモジュール403をロードすることから始まる(この例では、スマートカードアプリケーションインタフェーススクリプトモジュール403は、SConnect.jsと呼ばれる)。アプリケーションインタフェースモジュール403、すなわち、以下のステートメント
【表2】
によるウェブページの開始時に含められるsconnect.jsスクリプトライブラリは、ウェブブラウザ依存のコードを処理する。したがって、ウェブ開発者はスマートカードとの対話ロジックに自由に焦点を合わせることができる。
【0024】
スマートカードアプリケーションインタフェーススクリプトモジュール403は、ウェブブラウザのセッションにすでにロードされているか、またはユーザが対話するリモートサーバサイトからロードされる場合がある。
【0025】
アプリケーションプログラム300は、典型的には、SConnect.PCSCクラスのオブジェクトを作成することから始まる。オブジェクトを作成するコンストラクタ(コンストラクタは、オブジェクトが作成される時に実行されるクラス内の特定の命令ブロックである)は、ウェブブラウザ固有のスマートカードリソースマネージャラッパウェブブラウザ拡張機能401がインストールされている場合はそのインスタンスを作成する。インストールされていない場合、コンストラクタは、System.BrowserExtensionNotInstalledExceptionをスローする。オブジェクトの作成がうまくいくと、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401内のestablishContext(PC/AC APIのSCardEstablishContextに相当する)に対する呼び出しを終了する。以下の行は、SConnect.PCSCクラスのオブジェクトの作成の方法を示す。
【表3】
【0026】
一方、System.BrowserExtensionNotInstalledExceptionが<script...>のコマンドによってスローされる場合、ウェブアプリケーションを実行するユーザはリモートサーバからスマートカードリソースマネージャラッパ.js303をインストールするようにインバイトされる。
【0027】
したがって、呼び出し
【表4】
は、新規オブジェクト−pcscを作成する。pcscオブジェクトは、ウェブブラウザアプリケーションプログラム300から呼び出し可能なメソッドを有する。これらのメソッドは、スマートカードアプリケーションインタフェーススクリプトモジュール403内に対応する部分があり、またスマートカードリソースマネージャ(PC/SC)107内に対応する関数がある。したがって、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401は、ウェブブラウザアプリケーションプログラム300により呼び出し可能なスマートカードリソースマネージャ(PC/SC)107に対するオブジェクト指向インタフェースを提供する。
【0028】
図5は、ユーザ501がウェブページの実行を試みるネットワークの概略図である。ユーザ501は、ホストコンピュータ103上でウィンドウ503を表示するウェブブラウザ203を操作している。ユーザは、おそらくネットワーク509を介してある形式のオンライントランザクションを実行するためにリモートコンピュータシステム507上で実行するリモートウェブサーバ505と対話することを望む。トランザクションを保証するために、ユーザ501はインタフェースデバイス111を介してホストコンピュータ103に接続されたスマートカード104を使用する。
【0029】
ウェブブラウザのセッションの一部として、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401がすでにインストールされていてもよい。1つの代替の実施形態では、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401はウェブブラウザ203にインストールされていない。スマートカードリソースマネージャラッパウェブブラウザ拡張機能401がすでにインストールされている場合は、ユーザはスマートカードリソースマネージャラッパウェブブラウザ拡張機能401をインストールするように指示されない。一方、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401がインストールされていない場合は、ユーザ501はリモートサーバシステム513上で実行するサーバ(例えば、www.sconnect.com)511からスマートカードリソースマネージャラッパウェブブラウザ拡張機能401をロードするようにインバイトされる。あるいは、ユーザ501により実行されているウェブページのプロバイダが、プロバイダにより操作されるウェブサイトからスマートカードリソースマネージャラッパウェブブラウザ拡張機能401を提供してもよい。
【0030】
ホストコンピュータ103は、それに取り付けられた多くのスマートカードリーダ111を有することができるので、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303は、listReaders(readersWithCard)関数を使用して、リーダをリストアップする方法を提供する。引数値「true」を指定することで、スマートカードが挿入されているこれらのリーダのみをリストアップし、それ以外の全てのリーダの名前が返される。
【表5】
【0031】
pcscオブジェクトのlistReadersメソッドにおけるこの呼び出しは、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401内の対応する関数、例えば、スマートカードリソースマネージャ(PC/SC)107のSCardListCards()関数を呼び出すPCSC−SCardListReadersと呼ばれる関数における呼び出しを発生させる。
【0032】
次のステップは、名前、接続モード(共有、専用、または相互)、プロトコル識別子(T0またはT1)を指定するリーダ111に接続することである。trueの返り値は、作成が成功したことを示す。
【表6】
【0033】
この時点で、ウェブブラウザ203はリーダに、またリーダを介してスマートカード101にコマンドを送信できる状態にあり、リーダへの接続がうまくなされたことになる。一実施形態では、コマンドはISO−7816APDU形式で送信される。PC/SCでは、これはSCardTransmit APIを使用して行われる。一実施形態では、スマートカードリソースマネージャラッパ拡張機能303は、この送信を行うためにAPI transmit(command)を提供する。
【表7】
【0034】
スマートカード104との典型的な対話では、応答は状態語および状態データである。状態語は、ほとんどの場合、意味がホストアプリケーションによって解釈可能な2バイト値であるが、特定の状態語はISO7816−4によって標準化され、指定される。
【表8】
【0035】
1つの状態語は、61XXである。XXは、GetResponseコマンド(00C00000XX)を使用してホストアプリケーションにより取り出されるバイト数を表わす。取り出し動作のシーケンスはGetResponseコマンドを使用して応答データを取り出さなければならないことが多いので、一実施形態は、全てのデータが取り出されるまでGetResponseコマンドのシーケンスを実行するためのexchangeAPDUメソッドを含む。
【表9】
【0036】
最後に、アプリケーション101はリーダ111を外し、SConnect.PCSCクラスのdisposeメソッドを呼び出すことによってリソースを解除する。PC/SCでは、(SCardDisconnect APIを使用して)スマートカードを外す時に、外す前にスマートカードに取り込まれるアクションを指定する配置モードが指定することができる。これらのアクションの例は、LeaveCard、ResetCard、UnpowerCard、EjectCardである。disconnect関数が使用されない場合、disposeメソッドがLeaveCardアクションを使用してスマートカードを外す。
【表10】
【0037】
図6は、スマートカードと通信するためのSConnect.PCSCクラスのインスタンス化およびその使用を示すブロック図である。ウェブブラウザアプリケーションが「pcsc=new SConnect.PCSC」命令を実行する時、SConnect.PCSCクラスのインスタンス601がインスタンス化される。オブジェクト601は、少なくとも1つの引数を有するメソッドtransmit603を含む。典型的には、これは、SConnect.PCSCクラスからの継承によるものである。引数は、スマートカード104に送信されるべきAPDUメッセージである。
【0038】
ウェブブラウザアプリケーション300は、PCSCオブジェクト601のtransmit()メソッド603における呼び出しである少なくとも1つの命令605を含んでもよく、その命令の実行はpcscオブジェクト601、スマートカード104に送信されるべき特定のAPDU引数を有するメッセージ601のtransmitメソッドにおける呼び出しを発生させる。
【0039】
SConnect.PCSCクラス定義は、transmitメソッドがPCSC_transmit関数に対する呼び出しの命令609を発生させることを提供する。PCSC_transmit関数は、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401の関数である。したがって、PCSC_transmit関数に対する関数呼び出しの命令609の実行は、スマートカード104に送信されているAPDUを伝える関数呼び出し611を発生させる。
【0040】
スマートカードリソースマネージャラッパウェブブラウザ拡張機能401のPCSC_transmit関数の実装は、スマートカードリソースマネージャ(PC/SC)107のSCardTransmit関数を呼び出す命令613を含む。その命令の実行は、スマートカードリソースマネージャ(PC/SC)107に対応する関数呼び出し615を発生させる。
【0041】
スマートカードリソースマネージャ(PC/SC)107のSCardTransmit関数は、その引数リストを使用して受信されたAPDUのスマートカード104への送信を発生させる。
【0042】
スマートカードリソースマネージャラッパウェブブラウザ拡張機能401がインストールされている場合、スマートカードリソースマネージャ107により検出されたスマートカード挿入イベントはスマートカードリソースマネージャラッパウェブブラウザ拡張機能401に送信される。スマートカード104の挿入の検出時に、またはユーザ501が認証されていないスマートカード104の使用を試みる時に、ユーザ501は自身の認証を成功させる必要がある。したがって、スマートカードリソースマネージャラッパ拡張機能303が呼び出しているウェブブラウザアプリケーション300にスマートカード104が挿入されたことを伝えて、ウェブブラウザアプリケーション300がスマートカードリソースマネージャラッパウェブブラウザ拡張機能401内の関数の呼び出しを試みる時に、スマートカード104またはスマートカードリソースマネージャ(PC/SC)107は、ユーザが認証された、または認証されていないという表示を返す。この最後のイベントでは、ウェブブラウザアプリケーション300はログイン画面を表示して、ユーザ501にスマートカード104に対してログインするメカニズムを提供することができる。
【0043】
図7は、ユーザ501がスマートカード104の使用が必要なウェブアプリケーションの実行を試みる時のメッセージフローを示すタイミングシーケンス図である。ユーザ501はウェブブラウザ203をホストコンピュータ103上で実行する。ユーザ501がリモートサーバ505上のウェブアプリケーションへのアクセスを試みる(ステップ701)。ウェブアプリケーションに対応するウェブページがウェブブラウザ203に送信される。ウェブアプリケーションは、スマートカードリソースマネージャラッパ拡張機能303のスクリプトに対する呼び出しを含む。スマートカードリソースマネージャラッパ拡張機能303がウェブブラウザ203にインストールされている場合(ステップ705)、スマートカード104との通信が開始する(ステップ707)。
【0044】
一方、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401がインストールされていない場合、ユーザ501はスマートカードリソースマネージャラッパウェブブラウザ拡張機能401を(必要に応じて)ダウンロードし、インストールするように指示される(ステップ708)。これは、典型的には、ユーザ501に、サーバ511からのスマートカードリソースマネージャラッパウェブブラウザ拡張機能401の要求を発生させるリンクにクリックさせることで行われ、サーバ511からスマートカードリソースマネージャラッパウェブブラウザ拡張機能401がロードされ得る(ステップ709)。それに応答して、サーバ511はスマートカードリソースマネージャラッパウェブブラウザ拡張機能401を返し(ステップ711)、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401がウェブブラウザ203にロードされる(ステップ713)。スマートカード104との通信が発生する(ステップ707)。
【0045】
ウェブブラウザアプリケーションは、典型的には、1つのスレッドで実行する。スレッドは、他のスレッドと並行して実行できる命令の1つのシーケンスであるが、その中の命令は互いに連続した命令である。典型的には、スマートカード104との対話は、比較的時間がかかる。この遅延のために、アプリケーションの命令が1つのスレッドで実行している時に、スマートカード104に接続するコマンドか、スマートカード104に発行されたコマンドのいずれかが、ウェブブラウザ203のセッションがロックされたようになる不快なユーザ501体験につながる可能性がある。より改善されたアプローチは、ユーザ501がウェブページと対話を続けることができるようにする、またはある状態情報、例えば、状態進捗バーを表示できるようにすることである。
【0046】
一実施形態では、スマートカード104に接続する操作またはスマートカード104と通信するコマンドは、非同期的に行われる。表IIは、スマートカード104に対するコマンドの非同期的な送信を示すコードセグメントである。
【表11】
表II スマートカードコマンドの非同期的な実行のコード
【0047】
非同期コマンドの作成を行うために、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401は、スマートカードリソースマネージャ(PC/SC)107によるコマンドの実行の終了時にコールバックを提供する関数を含む。したがって、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401は、async_transmit関数を提供する。その第1の引数はホストコンピュータ103からの送信のためのAPDUパケットであり、第2の引数はコマンドから返される時に呼び出される関数である。「コールバック」関数は、典型的には、スマートカード104またはスマートカードリソースマネージャ(PC/SC)107によるコマンドの実行から得られた結果に従って取り込まれるいくつかのアクションを指定する。
【0048】
図8は、スマートカード104に対して非同期コマンドを作成する時に発生するメッセージフローおよびそのタイミングを示すタイミングシーケンス図である。この例では、アプリケーション101を表IIのコードと見なす。ホストコンピュータ103はRunDemo関数を実行している(位置801)。ホストコンピュータ103がpcsc.async_transmit関数に出会うと、ホストコンピュータ103はスマートカードリソースマネージャラッパウェブブラウザ拡張機能401に制御を転送する(遷移803)。pcsc.async_transmit関数が、新規スレッドでtransmit()呼び出し805をスマートカードリソースマネージャ107に発行する。アプリケーション101は、呼び出しの後、実行を継続する(807)。pcsc.async_transmitに対する呼び出しにより生じた新規スレッドで、スマートカードリソースマネージャ107はifd111(図示せず)に、最終的にはスマートカード104にコマンドを送信する(ステップ809)。これらの対話はスマートカードリソースマネージャ107とスマートカード104との間で発生するが、アプリケーション101は元のスレッドで実行を継続する(811)。
【0049】
接続を試みた後のある時点で、スマートカード104は応答し(813)、スマートカードリソースマネージャ107は、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401のasync_transmit()関数に対する返り値を使用してアプリケーション101に状態を返す(ステップ815および817)。「コールバック」関数が第2のスレッドからの返り値で呼び出されることを指定するasync_transmit()関数に対する第2の引数により、ホストコンピュータ103はアプリケーション101のcallback()関数に制御を転送する(ステップ819)。
【0050】
非常に似た非同期的メカニズムがスマートカード104への接続を確立する際に採用される場合がある。主な違いは接続するためのメカニズムであるという点であるので、異なるコマンドが使用される。
【0051】
上述したように、特定のスマートカード104のカード固有ドライバ301がまだインストールされていない場合、新しいスマートカード104を検出する際にスマートカードリソースマネージャラッパ拡張機能303はリモートサーバから取得されたカード固有ドライバ301を実行させる。図9aおよび図9bは、リモートコンピュータシステム513で実行するリモートサーバ511からカード固有ドライバ301を取得するためのシーケンスを示すタイミングシーケンス図である。カード固有ドライバ301がロードされていない場合、リモートサーバ511が当該カードに利用可能なカード固有ドライバ301を有するのであれば、リモートサーバ511から正確なカード固有ドライバ301をダウンロードするためにブートストラップスクリプト900が実行される。
【0052】
スマートカード104は、物理的にホストコンピュータ103に接続される(ステップ901)。これがスマートカードリソースマネージャ107により検出されたスマートカード挿入イベントをトリガする(ステップ903)。スマートカードリソースマネージャ(PC/SC)107は、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303がイベントループを使用してカードの挿入と取り外しを監視することができるように、APIおよびイベントを提供する。スマートカードリソースマネージャ107は、スマートカード104がリセット応答(ATR)を行う要求を送信する(905)。スマートカード104はATRに応答して(907)、ATRはウェブブラウザ203、詳細には、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303に送信される(ステップ909)。
【0053】
スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303が適切なカード固有ドライバ301がすでにロードされていると判断することができる場合(ステップ911)、ウェブブラウザ203はカードとの通信を始めることができる(ステップ913)。そうでなければ、ATRがリモートサーバ511に送信される。リモートサーバ511がATRからスマートカード104を識別可能であるか否かを判断する(ステップ917)。多くの場合、スマートカード104のタイプは、historical bytesとして知られているATRのフィールドから識別できる。スマートカード104のタイプがATRから判断可能である場合、カード固有ドライバ301がホストコンピュータ103に返送される(ステップ919)。
【0054】
サーバ511がATRからスマートカード104を識別できない場合、リモートサーバ511はホストコンピュータ103にスマートカード104がATRから一意に識別されなかったことを示すメッセージを返送する(メッセージ921)。メッセージ921では、リモートサーバ511はスマートカード104が実行するためのコマンドを含む。コマンドは、スマートカード104の機能を公開するコマンドであるように選択される。例えば、スマートカード104がJava(登録商標)Cardであるか否かを検査するために、コマンドはスマートカード104に対するgetStatus()要求とすることができ、このコマンドに応答して、スマートカード104はサポートされるアプリケーションのアプリケーション識別子(AID)を返すことによってスマートカード104がサポートするアプリケーションを識別する。ネイティブなスマートカード104では、コマンドは、検査される特定のネイティブなスマートカード104によりサポートされていることがわかっている動作とするができる。この場合、期待返り値は、動作から得られる期待結果であり、例えば、Gemalto Inc.の(Austin、Texas)Gemalto .NETカードでは、スマートカード104がmscmと呼ばれるサービスをサポートしている場合、検査コマンドを問い合わせることができる。
【0055】
ブートストラップスクリプト900がコマンドを受信し、コマンドをスマートカードリソースマネージャ107に転送する(ステップ923)。次に、スマートカードリソースマネージャ107はコマンドをスマートカード104に転送する(ステップ925)。スマートカード104がコマンドを実行し(ステップ927)、結果を返す(ステップ929)。次に、結果はブートストラップスクリプト900に転送され(ステップ931)、リモートサーバ511に転送される(ステップ933)。リモートサーバ511は、結果からスマートカード104が認識されたカードであるか否か、サポートされるドライバを有するか否かを判断する(ステップ935)。リモートサーバ511が、スマートカード104はサーバ511が検査しているスマートカード104として応答したと判断する場合、サーバ511はカード固有ドライバ301をホストコンピュータ103に返送する(ステップ937)。一実施形態では、ホストコンピュータ103に返送されるものは、カード固有ドライバ301をダウンロードするリンクである。
【0056】
一方、スマートカード104から返された結果が検査されるスマートカード104の期待結果と一致しない場合、サーバ511は別のスマートカード104を試すことができる(ステップ939)。検査するスマートカード104がそれ以上ある場合、リモートサーバ511はスマートカード104により実行される別のコマンドと共にメッセージを返す(ステップ921)。しかしながら、検査するスマートカード104がそれ以上ない場合、すなわちサーバ511がカード固有ドライバ301を有するスマートカード104が全て検査されてしまっている場合、スマートカード104がサポートされていないということを示すエラーメッセージがホストコンピュータ103に返される(メッセージ941)。
【0057】
(上述したように)スマートカードリソースマネージャラッパウェブブラウザ拡張機能401をダウンロードするのに同じサーバ511が使用されているが、これは説明のための単なる例にすぎないことに留意すべきである。カード固有ドライバ301およびスマートカードリソースマネージャラッパウェブブラウザ拡張機能401は、全く関係のないリモートサーバからロードされてもよい。
【0058】
上述したように、暗号化サービスはスマートカード104の多くの重要なアプリケーションのうちの1つである。従来の暗号化ソリューションは、2つの互換性のない競合するシステムであるPKCS#11とCAPIとを有するレガシーのために、実装が非常に煩雑であった。従来は、スマートカードアプリケーションの開発者は、PKCS#11とCAPIとのためのホストモジュールを書き込み、デプロイしていた。上述したように、このことはいくつもの望ましくない結果につながった。
【0059】
スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303(例えば、上述のようにスマートカードリソースマネージャラッパウェブブラウザ拡張機能401とスマートカードアプリケーションインタフェーススクリプトモジュール403との組み合わせ)、ブートストラップスクリプト900、関連するプロセスフローを使用する上述した技術を使用することによって、アプリケーションの開発者は、ホストコンピュータ103の暗号化ミドルウェアに依存して、それに苦しむことから開放することができる。
【0060】
スマートカード104がPKCS#11機能を有するシナリオを考えると、開発者はスマートカード104がこれらの暗号化機能を使用して電子メールメッセージにデジタル署名するのに使用されるアプリケーションを開発することを望む。この場合、特定のアプリケーション101は、暗号化機能に直接アクセスするために(ブートストラップスクリプト900を使用してロードされた)カード固有ドライバ301を介してスマートカードリソースマネージャラッパ拡張機能303上で開発される。
【0061】
図10は、プロセスフローを示すタイミングシーケンス図である。
【0062】
このウェブアプリケーションのコンテキストでのこの実装のワークフローは、以下の通りである。ユーザ501のアリスが自分のスマートカード104に記憶されたPGP鍵を使用して電子メールメッセージに署名することを望むとする。
アリスは、Secure Society’s SMail151(すなわち、リモートウェブサーバ上で実行するアプリケーション)にアクセスし(ステップ153)、たとえば、Firefoxウェブブラウザ203を使用してメッセージ155がそのウェブインターフェースを介する。
アリスが自分のスマートカード104に記憶された自分のPGP鍵を使用して署名したいとの電子メールを書き込んだ(ステップ157)。彼女は電子メール署名アイコン/ボタンをクリックする(ステップ159)。Firefoxウェブブラウザ203がSConnect可能でない場合、すなわち、スマートカードリソースマネージャラッパウェブブラウザ拡張機能401がインストールされていない場合、彼女はそれをインストールするように指示される。
(例えば、SMailサーバ505からダウンロードされた(ステップ161))ブートストラップJava(登録商標)Script900が、彼女のスマートカード104のATRのメッセージ163、165を判断し、(AJAXを使用して)SMailサーバ151に返信する(ステップ167)。
SMailサーバ151はデータベースを調べて、スマートカード104用の対応するスマートカード固有PKCS#11 Java(登録商標)Scriptモジュール(すなわち、本明細書内で使用される用語では、カード固有ドライバ301)を判断し、それを前の要求に応答して返信する(ステップ169)。
カード固有ドライバ301がダウンロードされると、カード固有ドライバ301は(スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303を使用して)スマートカード104と通信を開始する。安全な通信は、必ず暗号化されたメッセージがサーバ511からスマートカード104に送信されることによって保証される。
(今、ウェブブラウザ203で実行中の)カード固有ドライバ301が、アリスのスマートカード104または他のログインプロシージャに対して認証を行うようにPINエントリダイアログボックスを使用してアリスに指示する(ステップ171)。
認証が成功すれば、アリスのスマートカードから適切な証明書が選択される(ステップ173)。スマートカード104が多くの証明書を含む場合には、それらの証明書が表示され、アリスはそのうちの1つを選択するように指示される。
証明書が選択された後、アリスのメールのコンテンツに署名するためにカード固有ドライバ301と、例えば、ASP.NETハンドラとが、スマートカードとデータを交換する(ステップ175)。これらの通信は、上述したようにスマートカード104にデータを送信するためにスマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303に呼び出しを配置することによって行われる。
署名は、PGP仕様に従って、スマートカード104によりラップされる(ステップ177)。
署名されたメッセージは、ウェブブラウザに返信され(ステップ179)、ウェブブラウザによってウェブメールアプリケーション151に返信される(ステップ181)。
【0063】
代替の実施形態では、ホストコンピュータ103上で実行しスマートカード104が接続されているアプリケーション.jsジャバスクリプト101によって、スマートカード104へのアクセスが試みられると、ジャバスクリプト101とスマートカード104との間の提案された対話をユーザが認証することを望むか否かに関してクエリが行われる。1つの動作のシナリオでは、ウェブサイト505は、ユーザを騙すことによって秘密のユーザ情報を取得するために、またはスマートカード104に対するサービス攻撃を拒絶するために、悪意を持って設計されたものである場合がある。サービス攻撃を拒絶する場合、アプリケーション.jsジャバスクリプト101は、例えば、スマートカード104に不正確なログイン証明書を繰り返し提示するように設計されたものである場合がある。ほとんどのスマートカード104は、不正確なログインでの試行が許される数が制限されている。この制限数を超えた場合、スマートカード104は、例えば、カード発行者からロックされ、高レベルの介入なしに使用できなくなる。
【0064】
図11は、ウェブブラウザ拡張機能401がスマートカード104へのアクセスの試みを検出する時にユーザに表示されるユーザダイアログウィンドウの一例を示す図であり、ダイアログ241を示す図である。ユーザがアプリケーション.jsジャバスクリプト101とスマートカード104との間の対話を承認したい場合、ウェブサイトのurl(またはウェブサイトを識別する何か他の適切な装置)が承認リストに追加される。ユーザがアクセスを拒否する場合、ウェブサイトは非承認リストに追加される。このリストは、ウェブブラウザの所定の機構(例えば、クッキー)によって管理される。
【0065】
図12は、スマートカード104との対話を許可された/許可されないウェブサイトの承認非承認リストを編集するためにユーザに表示されるユーザダイアログウィンドウ243の一例を示す図である。一実施形態では、スマートカードリソースマネージャウェブブラウザアプリケーションインタフェースプログラム303のインストールにより、例えば、ウェブブラウザ「ツール」メニューの下のダイアログウィンドウ243を表示するために、ウェブブラウザメニュー内にメニューアイテムを追加することができる。
【0066】
図12は、スマートカード104と対話するアプリケーションジャバスクリプトの権利を許可または許可しない承認非承認リストの使用を示すタイミングシーケンス図である。ユーザがウェブサイト(例えば、http://www.evilweb.com)にアクセスした。そのウェブサイトが、アプリケーションジャバスクリプト101xを更新することによってスマートカード104に攻撃しようとする。アプリケーションジャバスクリプト101xがスマートカード104との対話を要求すると(メッセージ253)、ウェブブラウザ拡張機能401は、ジャバスクリプトの元のウェブサイトが認証リスト内にあるか否かを判断する(ステップ255)。
【0067】
ウェブサイトが承認リスト内にある場合、表示(例えば、「ACC」)がウェブブラウザ拡張機能401からジャバスクリプト101xに送信される(メッセージ257)、対話が開始され得る(ステップ259)。
【0068】
ウェブサイトが承認リスト内にない場合、ウェブブラウザ拡張機能401はそのウェブサイトが非承認リスト内にあるか否かを判断する(ステップ261)。ウェブサイトが非承認リスト内にある場合、(例えば、「NACC」)を示すメッセージがウェブブラウザ拡張機能401からジャバスクリプト101xに送信される(メッセージ263)。
【0069】
ウェブサイトがいずれのリスト内にもない場合、そのウェブサイトは続行が許可されるか否かをユーザが決定するためのダイアログウィンドウ241(図11)が表示される(ステップ265)。
【0070】
ウェブサイトのアクセスを許可するか否かのユーザ決定が得られる(ステップ267)。ユーザがスマートカード104との対話のためにウェブサイトを承認した場合、(ステップ269)、対話の承認を示すメッセージ(例えば、「ACC」)がジャバスクリプト101xに送信され(メッセージ271)、対話が開始され得る(ステップ259)。任意で、例えば、ダイアログウィンドウ241の中の決定が記憶されることを示すチェックボックスをユーザがクリックした場合、ウェブサイトは承認リストに追加される(ステップ273)。
【0071】
ユーザがスマートカード104と対話するウェブサイトの権利を拒否した場合(ステップ269)、対話の非承認を示すメッセージ(例えば、「NACC」)がジャバスクリプト101xに送信される(メッセージ275)。任意で、例えば、ダイアログウィンドウ241の中の決定が記憶されることを示すチェックボックスをユーザがクリックした場合、ウェブサイトは非承認リストに追加される(ステップ277)。
【0072】
上述の内容から、本明細書内で説明された技術は、スマートカードをウェブアプリケーションのコンテキストでスムーズに使用する有効な機構を提供するものであることは明らかである。従来は、ホストアプリケーションとスマートカードとの間の通信に必要であった煩雑なミドルウェア層は、ウェブブラウザ拡張機能をウェブブラウザにロードすることによって、またカード固有ドライバウェブブラウザ拡張機能をウェブブラウザにオンデマンドでロードすることで避けられる。これらの動的にロードされた拡張機能により、スマートカードの利用にとっては、ウェブアプリケーションがスマートカードと対話するためのウェブブラウザ固有またはプラットフォーム固有の要件を認識しなくても、ウェブアプリケーションと共にスマートカードにより提供される多くの強力なアプリケーション、例えば、暗号化が可能になる。
【0073】
本発明の特定の実施形態を説明して図示したが、本発明は説明し図示したようなコンポーネントの特定の形態または配置に限定されるものではない。本発明は、請求項によってのみ限定される。
【特許請求の範囲】
【請求項1】
ブラウザを介してスマートカードリソースマネージャを有するホストコンピュータに接続されたスマートカードへのアクセスをユーザに提供する少なくとも1つのブラウザアドオンを実行する機能を有するブラウザ内から、中央処理ユニットとランダムアクセスメモリとを有するホストコンピュータ上で実行可能なクライアント側アプリケーション拡張機能であって、ブラウザ拡張機能が、
中央処理ユニットにスマートカード上のデータにアクセスするように指示する命令を含み、命令が、
ホストコンピュータが少なくとも1つのブラウザアドオンを実行してブラウザ拡張機能を呼び出すことができるようにするブラウザプラットフォーム独立アプリケーションプログラムインタフェースであって、スマートカード上のデータにアクセスするための少なくとも1つの関数を提供するアプリケーションプログラムインタフェースを備えるブラウザプラットフォーム独立インタフェースモジュールと、
ブラウザプラットフォーム独立インタフェースモジュールと、スマートカード上のデータにアクセスし関数呼び出しをスマートカードリソースマネージャに対応する呼び出しに変換するための少なくとも1つの関数に対する呼び出しを受信するように動作可能なモジュールを処理する関数を有するスマートカードリソースマネージャとに接続されたブラウザプラットフォーム依存ラッパモジュールとを含む、クライアント側アプリケーション拡張機能。
【請求項2】
ブラウザプラットフォーム独立インタフェースモジュールおよびブラウザプラットフォーム依存ラッパモジュールが、ホストコンピュータによりブラウザにロードされる命令を含む、請求項1に記載のクライアント側アプリケーション拡張機能。
【請求項3】
ブラウザプラットフォーム依存ラッパモジュールが、スマートカードにアクセスするためにプラットフォーム固有スマートカードリソースマネージャの関数を呼び出すようにホストコンピュータにより実行可能なブラウザプラットフォーム依存命令を含む、請求項1に記載のクライアント側アプリケーション拡張機能。
【請求項4】
ブラウザプラットフォーム依存ラッパモジュールが、スマートカードリソースマネージャにより送信されたスマートカードのイベントを検出する、請求項1に記載のクライアント側アプリケーション拡張機能。
【請求項5】
ブラウザプラットフォーム独立ラッパモジュールが、ブラウザプラットフォーム依存ラッパモジュールを介してスマートカードリソースマネージャにより送信されたスマートカードのイベントを受信する、請求項4に記載のクライアント側アプリケーション拡張機能。
【請求項6】
スマートカードのイベントが、カード挿入、カード取り外し、トランザクション開始、トランザクション終了を含む、請求項5に記載のクライアント側アプリケーション拡張機能。
【請求項7】
関数呼び出しが、スマートカードへのメッセージ送信およびスマートカードからの対応する応答の受信を含む、請求項1に記載のクライアント側アプリケーション拡張機能。
【請求項8】
ホストコンピュータに接続されたスマートカードに対応する適切なスマートカードドライバブラウザ拡張機能を取得するためのオンデマンドドライバモジュールをさらに含み、オンデマンドドライバモジュールがホストコンピュータに、
スマートカードからの識別ストリングを取得させてスマートカードドライバサーバに識別ストリングを送信させ、
スマートカードドライバサーバから、スマートカード用のドライバが利用可能であるか否かを示す第1の応答を取得させる命令を含む、請求項1に記載のクライアント側アプリケーション拡張機能。
【請求項9】
第1の応答が、スマートカードに対応するドライバブラウザアドインを含む、請求項8に記載のクライアント側アプリケーション拡張機能。
【請求項10】
第1の応答が、スマートカードが最終的に識別不可能であることを示す表示とスマートカードが実行するコマンドとを含み、スマートカードからの期待応答が最終的にカードの識別を決定するものである、請求項8に記載のクライアント側アプリケーション拡張機能。
【請求項11】
オンデマンドドライバモジュールが、
スマートカード用のドライバが利用可能であるか否かを示す応答がさらに、スマートカードドライバサーバからのさらなる識別コマンドを含む場合、
スマートカードにさらなる識別コマンドを実行するように指示する命令と、
さらなる識別コマンドに対するスマートカードからの応答を受信する命令と、
スマートカードからの応答をスマートカードドライバサーバに送信する命令と、
スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージを含むスマートカードドライバサーバからの第2の応答を受信する命令とを含む、請求項8に記載のクライアント側アプリケーション拡張機能。
【請求項12】
スマートカードドライバブラウザ拡張機能が受信されるまで、またはスマートカードドライバサーバからの応答メッセージがスマートカードがサポートされていないというメッセージで応答するまで、スマートカードの応答を送信するステップと、スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージを含むスマートカードドライバサーバからの応答を受信するステップとをホストコンピュータに繰り返させる命令をさらに含む、請求項11に記載のクライアント側アプリケーション拡張機能。
【請求項13】
中央処理ユニットにスマートカード上のデータにアクセスするように指示する命令が、さらに第1のスレッドでホストコンピュータ上で実行し、
スマートカードリソースマネージャに送信されたコマンドに応答して、スマートカードから受信された応答に応じて操作可能なコールバック関数をさらに含み、
スマートカードリソースマネージャに対する関数呼び出しが、関数呼び出しを実行するための新規スレッドを生成して、スマートカードリソースマネージャに送信されたコマンドの実行が終了した時にコールバック関数で第1のスレッドに制御を返すようにホストコンピュータに指示する、請求項1に記載のクライアント側アプリケーション拡張機能。
【請求項14】
中央処理ユニットにスマートカード上のデータにアクセスするように指示する命令が、さらに第1のスレッドでホストコンピュータ上で実行し、
スマートカードへの通信接続を確立するために、ホストコンピュータにスマートカードリソースマネージャの命令を実行させるように動作可能な接続モジュールと、
スマートカードリソースマネージャに送信されたコマンドに応答して、スマートカードから受信された応答に応じて操作可能なコールバック関数とを含み、
接続モジュールの実行がスマートカードへの接続を確立するためにスマートカードリソースマネージャの命令を実行するための新規スレッドを生成して、スマートカードへの接続を確立するためにスマートカードリソースマネージャの命令の実行が終了した時にコールバック関数で第1のスレッドに制御を返すようにホストコンピュータに指示する、請求項1に記載のクライアント側アプリケーション拡張機能。
【請求項15】
ブラウザ拡張機能が、
ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることを検出する命令と、
ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることを検出すると、それに応答して、ジャバスクリプトとスマートカードとの間の対話に対するユーザの承認または非承認を取得する命令と、
ユーザの承認に応答して、対話の開始を許可する命令と、
ユーザの非承認に応答して、対話の開始を許可しない命令とをさらに含む、請求項1に記載のクライアント側アプリケーション拡張機能。
【請求項16】
ブラウザ拡張機能が、
ユーザの承認に応答して、スマートカードとの対話が許可されたウェブサイトリストにウェブサイトを追加する命令をさらに含む、請求項15に記載のクライアント側アプリケーション拡張機能。
【請求項17】
ブラウザ拡張機能が、
スマートカードとの対話が許可されたウェブサイトリストからウェブサイトを削除するコードを含む、スマートカードとの対話が許可されたウェブサイトリストを管理する命令をさらに含む、請求項15に記載のクライアント側アプリケーション拡張機能。
【請求項18】
ブラウザ拡張機能が、
ユーザの非承認に応答して、スマートカードとの対話が許可されていないウェブサイトリストにウェブサイトを追加する命令をさらに含む、請求項15に記載のクライアント側アプリケーション拡張機能。
【請求項19】
ブラウザ拡張機能が、
スマートカードとの対話が許可されていないウェブサイトリストからウェブサイトを削除するコードを含む、スマートカードとの対話が許可されていないウェブサイトリストを管理する命令をさらに含む、請求項18に記載のクライアント側アプリケーション拡張機能。
【請求項20】
ブラウザ拡張機能が、
ユーザがジャバスクリプトとスマートカードとの間の対話の承認または非承認を示すことができるユーザ対話ウィンドウを表示する命令をさらに含む、請求項15に記載のクライアント側アプリケーション拡張機能。
【請求項21】
中央処理ユニットとランダムアクセスメモリとを有するホストコンピュータおよびスマートカードリソースマネージャに接続されたスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法であって、ブラウザが、
スマートカードリソースマネージャを介して、スマートカード上のデータに対するブラウザアプリケーション要求アクセスを実行することと、
ブラウザアプリケーションによる要求に応答して、スマートカード上のデータにアクセスすることと、
スクリプトモジュールから、スマートカードリソースマネージャインタフェースブラウザ拡張機能に対するアクセス呼び出しを行うための少なくとも1つの方法を提供するインタフェースオブジェクトをインスタンス化することと、
インタフェースオブジェクトのメソッドにおける呼び出しを行うことと、
インタフェースオブジェクトのメソッドにおける呼び出しを受信すると、それに応答して、スマートカードリソースマネージャインタフェースブラウザ拡張機能における呼び出しを行うことと、
スマートカードリソースマネージャインタフェースブラウザ拡張機能における呼び出しを受信すると、それに応答して、スマートカードリソースマネージャインタフェースブラウザ拡張機能からスマートカードリソースマネージャに呼び出しを行うことと、
スマートカードリソースマネージャからの応答を受信することと、
スマートカードリソースマネージャからの応答を示す結果をブラウザウィンドウ内に表示し、それによりブラウザを介してスマートカードデータにユーザがアクセスできることを含む、少なくとも1つのブラウザアドオンを実行する機能を有する方法。
【請求項22】
スマートカードリソースマネージャインタフェースブラウザ拡張機能が、スマートカードにアクセスするためのプラットフォーム固有スマートカードリソースマネージャの関数を呼び出す、ホストコンピュータにより実行可能なブラウザプラットフォーム依存命令を含む、請求項21に記載のホストコンピュータに接続されたスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項23】
スマートカードリソースマネージャインタフェースブラウザ拡張機能により、スマートカードリソースマネージャにより送信されたスマートカードイベントを検出することをさらに含む、請求項21に記載のホストコンピュータに接続されたスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項24】
インタフェースオブジェクトが、スマートカードリソースマネージャインタフェースブラウザ拡張機能を使用してスマートカードリソースマネージャにより送信されたスマートカードイベントを受信する、請求項23に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項25】
スマートカードイベントが、カード挿入、カード取り外し、トランザクション開始、トランザクション終了を含む、請求項24に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項26】
方法呼び出しが、スマートカードへのメッセージ送信およびスマートカードからの対応する応答の受信を含む、請求項21に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項27】
スマートカードから識別ストリングを取得し、スマートカードドライバサーバに識別ストリングを送信することと、
スマートカードドライバサーバから、スマートカード用のドライバが利用可能であるか否かを示す第1の応答を取得することとをさらに含む、請求項21に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項28】
第1の応答が、スマートカードに対応するドライバブラウザアドインを含む、請求項27に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項29】
第1の応答が、スマートカードが最終的に識別不可能であることを示す表示とスマートカードが実行するコマンドとを含み、スマートカードからの期待応答が最終的にカードの識別を決定するものである、請求項27に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項30】
スマートカード用のドライバが利用可能であるか否かを示す応答がスマートカードドライバサーバからのさらなる識別コマンドを含むのに応答して、スマートカードにさらなる識別コマンドを実行するように指示する命令を実行することと、
スマートカードからのさらなる識別コマンドに対する応答を受信することと、
スマートカードからスマートカードドライバサーバに応答を送信することと、
スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージを含むスマートカードドライバサーバから第2の応答を受信することとを含む、請求項27に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項31】
スマートカードドライバブラウザ拡張機能が受信されるまで、またはスマートカードドライバサーバからの応答メッセージがスマートカードがサポートされていないとのメッセージで応答するまで、スマートカードの応答を送信するステップと、スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージのいずれかを含むスマートカードドライバサーバからの応答を受信するステップとを繰り返すことをさらに含む、請求項30に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項32】
第1のスレッドでスマートカード上のデータにアクセスする方法における呼び出しを実行することと、
スマートカードリソースマネージャに対する関数呼び出しを実行することとを含み、この関数呼び出しの実行が関数呼び出しを実行するための新規スレッドを生成して、スマートカードリソースマネージャに送信されたコマンドの実行が終了した時に特定のコールバック関数で第1のスレッドに制御を返すようにホストコンピュータに指示し、コールバック関数が、スマートカードリソースマネージャに送信されたコマンドに応答して、スマートカードから受信された応答に応じて操作可能である、請求項21に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項33】
第1のスレッドでスマートカード上のデータにアクセスする方法における呼び出しを実行することと、
スマートカードとの接続を確立するために、スマートカードリソースマネージャに対する関数呼び出しを実行することと、
スマートカードとの接続を確立するために関数呼び出しに応答して、関数呼び出しを実行するための新規スレッドを生成し、スマートカードへの接続を確立するためのコマンドの実行が終了した時に特定のコールバック関数で第1のスレッドに制御を返すようにホストコンピュータに指示することとを含み、コールバック関数が、スマートカードへの接続を確立するためのコマンドに応答して、スマートカードマネージャから受信された応答に応じて操作可能である、
請求項21に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項34】
ブラウザ拡張機能が、
ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることを検出することと、
ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることを検出すると、それに応答して、ジャバスクリプトとスマートカードとの間の対話に対するユーザの承認または非承認を取得することと、
ユーザの承認に応答して、対話の開始を許可することと、
ユーザの非承認に応答して、対話の開始を許可しないこととをさらに含む、請求項21に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項35】
ユーザの認証に応答して、スマートカードとの対話が許可されたウェブサイトリストにウェブサイトを追加することを含む、請求項34に記載のコンピュータシステムを操作する方法。
【請求項36】
スマートカードとの対話が許可されたウェブサイトリストからウェブサイトを選択的に削除することを含む、スマートカードとの対話が許可されたウェブサイトリストを管理することをさらに含む、請求項35に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項37】
ユーザの非認証に応答して、スマートカードとの対話が許可されていないウェブサイトリストにウェブサイトを追加することを含む、請求項34に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項38】
スマートカードとの対話が許可されていないウェブサイトリストからウェブサイトを削除することを含む、スマートカードとの対話が許可されていないウェブサイトリストを管理することをさらに含む、請求項37に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項39】
ユーザがジャバスクリプトとスマートカードとの間の対話の承認または非承認を示すことができるユーザ対話ウィンドウを表示することをさらに含む、請求項34に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項40】
スマートカードに接続されたホストコンピュータにより実行可能な命令が記憶されており、ホストコンピュータをスマートカードにアクセス可能にする命令を有するスマートカードリソースマネージャがロードされている、クライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体であって、ホストコンピュータにロードされる時に、命令が、
各々がブラウザプラットフォーム独立インタフェースモジュールと、スマートカード上のデータにアクセスし、関数呼び出しをスマートカードリソースマネージャに対応する呼び出しに変換するための少なくとも1つの関数に対する呼び出しを受信するように動作可能なモジュールを処理する関数を有するスマートカードリソースマネージャとに対するインタフェースを有する少なくとも1つのブラウザプラットフォーム依存ラッパモジュールと、
ホストコンピュータが少なくとも1つのブラウザアドオンを実行してブラウザ拡張機能を呼び出すことができるようにするブラウザプラットフォーム独立アプリケーションプログラムインタフェースであって、スマートカード上のデータにアクセスするための少なくとも1つの関数を提供するアプリケーションプログラムインタフェースを備えるブラウザプラットフォーム独立インタフェースモジュールとを提供する命令とを含む、コンピュータ記憶媒体。
【請求項41】
ブラウザプラットフォーム独立インタフェースモジュールおよびブラウザプラットフォーム依存ラッパモジュールが、ホストコンピュータによりブラウザにロードされる命令を含む、請求項40に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項42】
ブラウザプラットフォーム依存ラッパモジュールが、スマートカードにアクセスするためにプラットフォーム固有スマートカードリソースマネージャの関数を呼び出すようにホストコンピュータにより実行可能なブラウザプラットフォーム依存命令を含む、請求項40に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項43】
ブラウザプラットフォーム依存ラッパモジュールが、スマートカードリソースマネージャにより送信されたスマートカードのイベントを検出する、請求項40に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項44】
ブラウザプラットフォーム独立ラッパモジュールが、ブラウザプラットフォーム依存ラッパモジュールを介してスマートカードリソースマネージャにより送信されたスマートカードのイベントを受信する、請求項43に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項45】
スマートカードのイベントが、カード挿入、カード取り外し、トランザクション開始、トランザクション終了を含む、請求項44に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項46】
関数呼び出しが、スマートカードへのメッセージ送信およびスマートカードからの対応する応答の受信を含む、請求項40に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項47】
ホストコンピュータに接続されたスマートカードに対応する適切なスマートカードドライバブラウザ拡張機能を取得するためのオンデマンドドライバモジュールをさらに含み、オンデマンドドライバモジュールがホストコンピュータに、
スマートカードからの識別ストリングを取得させてスマートカードドライバサーバに識別ストリングを送信させ、
スマートカードドライバサーバから、スマートカード用のドライバが利用可能であるか否かを示す第1の応答を取得させる命令を含む、請求項40に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項48】
第1の応答が、スマートカードに対応するドライバブラウザアドインを含む、請求項47に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項49】
第1の応答が、スマートカードが最終的に識別不可能であることを示す表示とスマートカードが実行するコマンドとを含み、スマートカードからの期待応答が最終的にカードの識別を決定するものである、請求項47に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項50】
オンデマンドドライバモジュールが、
スマートカード用のドライバが利用可能であるか否かを示す応答がさらに、スマートカードドライバサーバからのさらなる識別コマンドを含む場合に、
スマートカードにさらなる識別コマンドを実行するように指示する命令と、
さらなる識別コマンドに対するスマートカードからの応答を受信する命令と、
スマートカードからの応答をスマートカードドライバサーバに送信する命令と、
スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージを含むスマートカードドライバサーバからの第2の応答を受信する命令とを含む、請求項47に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項51】
スマートカードドライバブラウザ拡張機能が受信されるまで、またはスマートカードドライバサーバからの応答メッセージがスマートカードがサポートされていないというメッセージで応答するまで、スマートカードの応答を送信するステップと、スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージを含むスマートカードドライバサーバからの応答を受信するステップとをホストコンピュータに繰り返させる命令をさらに含む、請求項50に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項52】
中央処理ユニットにスマートカード上のデータにアクセスするように指示する命令が、さらに第1のスレッドでホストコンピュータ上で実行し、
スマートカードリソースマネージャに送信されたコマンドに応答して、スマートカードから受信された応答に応じて操作可能なコールバック関数をさらに含み、
スマートカードリソースマネージャに対する関数呼び出しが、関数呼び出しを実行するための新規スレッドを生成して、スマートカードリソースマネージャに送信されたコマンドの実行が終了した時にコールバック関数で第1のスレッドに制御を返すようにホストコンピュータに指示する、請求項40に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項53】
中央処理ユニットにスマートカード上のデータにアクセスするように指示する命令が、さらに第1のスレッドでホストコンピュータ上で実行し、
スマートカードへの通信接続を確立するために、ホストコンピュータにスマートカードリソースマネージャの命令を実行させるように動作可能な接続モジュールと、
スマートカードリソースマネージャに送信されたコマンドに応答して、スマートカードから受信された応答に応じて操作可能なコールバック関数とを含み、
接続モジュールの実行がスマートカードへの接続を確立するためにスマートカードリソースマネージャの命令を実行するための新規スレッドを生成して、スマートカードへの接続を確立するためにスマートカードリソースマネージャの命令の実行が終了した時にコールバック関数で第1のスレッドに制御を返すようにホストコンピュータに指示する、請求項40に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項54】
ブラウザ拡張機能が、
ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることを検出する命令と、
ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることを検出すると、それに応答して、ジャバスクリプトとスマートカードとの間の対話に対するユーザの承認または非承認を取得する命令と、
ユーザの承認に応答して、対話の開始を許可する命令と、
ユーザの非承認に応答して、対話の開始を許可しない命令とをさらに含む、請求項40に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項55】
ブラウザ拡張機能が、
ユーザの承認に応答して、スマートカードとの対話が許可されたウェブサイトリストにウェブサイトを追加する命令をさらに含む、請求項54に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項56】
ブラウザ拡張機能が、
スマートカードとの対話が許可されたウェブサイトリストからウェブサイトを削除するコードを含む、スマートカードとの対話が許可されたウェブサイトリストを管理する命令をさらに含む、請求項55に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項57】
ブラウザ拡張機能が、
ユーザの非承認に応答して、スマートカードとの対話が許可されていないウェブサイトリストにウェブサイトを追加する命令をさらに含む、請求項54に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項58】
ブラウザ拡張機能が、
スマートカードとの対話が許可されていないウェブサイトリストからウェブサイトを削除するコードを含む、スマートカードとの対話が許可されていないウェブサイトリストを管理する命令をさらに含む、請求項57に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項59】
ブラウザ拡張機能が、
ユーザがジャバスクリプトとスマートカードとの間の対話の承認または非承認を示すことができるユーザ対話ウィンドウを表示する命令をさらに含む、請求項54に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項1】
ブラウザを介してスマートカードリソースマネージャを有するホストコンピュータに接続されたスマートカードへのアクセスをユーザに提供する少なくとも1つのブラウザアドオンを実行する機能を有するブラウザ内から、中央処理ユニットとランダムアクセスメモリとを有するホストコンピュータ上で実行可能なクライアント側アプリケーション拡張機能であって、ブラウザ拡張機能が、
中央処理ユニットにスマートカード上のデータにアクセスするように指示する命令を含み、命令が、
ホストコンピュータが少なくとも1つのブラウザアドオンを実行してブラウザ拡張機能を呼び出すことができるようにするブラウザプラットフォーム独立アプリケーションプログラムインタフェースであって、スマートカード上のデータにアクセスするための少なくとも1つの関数を提供するアプリケーションプログラムインタフェースを備えるブラウザプラットフォーム独立インタフェースモジュールと、
ブラウザプラットフォーム独立インタフェースモジュールと、スマートカード上のデータにアクセスし関数呼び出しをスマートカードリソースマネージャに対応する呼び出しに変換するための少なくとも1つの関数に対する呼び出しを受信するように動作可能なモジュールを処理する関数を有するスマートカードリソースマネージャとに接続されたブラウザプラットフォーム依存ラッパモジュールとを含む、クライアント側アプリケーション拡張機能。
【請求項2】
ブラウザプラットフォーム独立インタフェースモジュールおよびブラウザプラットフォーム依存ラッパモジュールが、ホストコンピュータによりブラウザにロードされる命令を含む、請求項1に記載のクライアント側アプリケーション拡張機能。
【請求項3】
ブラウザプラットフォーム依存ラッパモジュールが、スマートカードにアクセスするためにプラットフォーム固有スマートカードリソースマネージャの関数を呼び出すようにホストコンピュータにより実行可能なブラウザプラットフォーム依存命令を含む、請求項1に記載のクライアント側アプリケーション拡張機能。
【請求項4】
ブラウザプラットフォーム依存ラッパモジュールが、スマートカードリソースマネージャにより送信されたスマートカードのイベントを検出する、請求項1に記載のクライアント側アプリケーション拡張機能。
【請求項5】
ブラウザプラットフォーム独立ラッパモジュールが、ブラウザプラットフォーム依存ラッパモジュールを介してスマートカードリソースマネージャにより送信されたスマートカードのイベントを受信する、請求項4に記載のクライアント側アプリケーション拡張機能。
【請求項6】
スマートカードのイベントが、カード挿入、カード取り外し、トランザクション開始、トランザクション終了を含む、請求項5に記載のクライアント側アプリケーション拡張機能。
【請求項7】
関数呼び出しが、スマートカードへのメッセージ送信およびスマートカードからの対応する応答の受信を含む、請求項1に記載のクライアント側アプリケーション拡張機能。
【請求項8】
ホストコンピュータに接続されたスマートカードに対応する適切なスマートカードドライバブラウザ拡張機能を取得するためのオンデマンドドライバモジュールをさらに含み、オンデマンドドライバモジュールがホストコンピュータに、
スマートカードからの識別ストリングを取得させてスマートカードドライバサーバに識別ストリングを送信させ、
スマートカードドライバサーバから、スマートカード用のドライバが利用可能であるか否かを示す第1の応答を取得させる命令を含む、請求項1に記載のクライアント側アプリケーション拡張機能。
【請求項9】
第1の応答が、スマートカードに対応するドライバブラウザアドインを含む、請求項8に記載のクライアント側アプリケーション拡張機能。
【請求項10】
第1の応答が、スマートカードが最終的に識別不可能であることを示す表示とスマートカードが実行するコマンドとを含み、スマートカードからの期待応答が最終的にカードの識別を決定するものである、請求項8に記載のクライアント側アプリケーション拡張機能。
【請求項11】
オンデマンドドライバモジュールが、
スマートカード用のドライバが利用可能であるか否かを示す応答がさらに、スマートカードドライバサーバからのさらなる識別コマンドを含む場合、
スマートカードにさらなる識別コマンドを実行するように指示する命令と、
さらなる識別コマンドに対するスマートカードからの応答を受信する命令と、
スマートカードからの応答をスマートカードドライバサーバに送信する命令と、
スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージを含むスマートカードドライバサーバからの第2の応答を受信する命令とを含む、請求項8に記載のクライアント側アプリケーション拡張機能。
【請求項12】
スマートカードドライバブラウザ拡張機能が受信されるまで、またはスマートカードドライバサーバからの応答メッセージがスマートカードがサポートされていないというメッセージで応答するまで、スマートカードの応答を送信するステップと、スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージを含むスマートカードドライバサーバからの応答を受信するステップとをホストコンピュータに繰り返させる命令をさらに含む、請求項11に記載のクライアント側アプリケーション拡張機能。
【請求項13】
中央処理ユニットにスマートカード上のデータにアクセスするように指示する命令が、さらに第1のスレッドでホストコンピュータ上で実行し、
スマートカードリソースマネージャに送信されたコマンドに応答して、スマートカードから受信された応答に応じて操作可能なコールバック関数をさらに含み、
スマートカードリソースマネージャに対する関数呼び出しが、関数呼び出しを実行するための新規スレッドを生成して、スマートカードリソースマネージャに送信されたコマンドの実行が終了した時にコールバック関数で第1のスレッドに制御を返すようにホストコンピュータに指示する、請求項1に記載のクライアント側アプリケーション拡張機能。
【請求項14】
中央処理ユニットにスマートカード上のデータにアクセスするように指示する命令が、さらに第1のスレッドでホストコンピュータ上で実行し、
スマートカードへの通信接続を確立するために、ホストコンピュータにスマートカードリソースマネージャの命令を実行させるように動作可能な接続モジュールと、
スマートカードリソースマネージャに送信されたコマンドに応答して、スマートカードから受信された応答に応じて操作可能なコールバック関数とを含み、
接続モジュールの実行がスマートカードへの接続を確立するためにスマートカードリソースマネージャの命令を実行するための新規スレッドを生成して、スマートカードへの接続を確立するためにスマートカードリソースマネージャの命令の実行が終了した時にコールバック関数で第1のスレッドに制御を返すようにホストコンピュータに指示する、請求項1に記載のクライアント側アプリケーション拡張機能。
【請求項15】
ブラウザ拡張機能が、
ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることを検出する命令と、
ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることを検出すると、それに応答して、ジャバスクリプトとスマートカードとの間の対話に対するユーザの承認または非承認を取得する命令と、
ユーザの承認に応答して、対話の開始を許可する命令と、
ユーザの非承認に応答して、対話の開始を許可しない命令とをさらに含む、請求項1に記載のクライアント側アプリケーション拡張機能。
【請求項16】
ブラウザ拡張機能が、
ユーザの承認に応答して、スマートカードとの対話が許可されたウェブサイトリストにウェブサイトを追加する命令をさらに含む、請求項15に記載のクライアント側アプリケーション拡張機能。
【請求項17】
ブラウザ拡張機能が、
スマートカードとの対話が許可されたウェブサイトリストからウェブサイトを削除するコードを含む、スマートカードとの対話が許可されたウェブサイトリストを管理する命令をさらに含む、請求項15に記載のクライアント側アプリケーション拡張機能。
【請求項18】
ブラウザ拡張機能が、
ユーザの非承認に応答して、スマートカードとの対話が許可されていないウェブサイトリストにウェブサイトを追加する命令をさらに含む、請求項15に記載のクライアント側アプリケーション拡張機能。
【請求項19】
ブラウザ拡張機能が、
スマートカードとの対話が許可されていないウェブサイトリストからウェブサイトを削除するコードを含む、スマートカードとの対話が許可されていないウェブサイトリストを管理する命令をさらに含む、請求項18に記載のクライアント側アプリケーション拡張機能。
【請求項20】
ブラウザ拡張機能が、
ユーザがジャバスクリプトとスマートカードとの間の対話の承認または非承認を示すことができるユーザ対話ウィンドウを表示する命令をさらに含む、請求項15に記載のクライアント側アプリケーション拡張機能。
【請求項21】
中央処理ユニットとランダムアクセスメモリとを有するホストコンピュータおよびスマートカードリソースマネージャに接続されたスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法であって、ブラウザが、
スマートカードリソースマネージャを介して、スマートカード上のデータに対するブラウザアプリケーション要求アクセスを実行することと、
ブラウザアプリケーションによる要求に応答して、スマートカード上のデータにアクセスすることと、
スクリプトモジュールから、スマートカードリソースマネージャインタフェースブラウザ拡張機能に対するアクセス呼び出しを行うための少なくとも1つの方法を提供するインタフェースオブジェクトをインスタンス化することと、
インタフェースオブジェクトのメソッドにおける呼び出しを行うことと、
インタフェースオブジェクトのメソッドにおける呼び出しを受信すると、それに応答して、スマートカードリソースマネージャインタフェースブラウザ拡張機能における呼び出しを行うことと、
スマートカードリソースマネージャインタフェースブラウザ拡張機能における呼び出しを受信すると、それに応答して、スマートカードリソースマネージャインタフェースブラウザ拡張機能からスマートカードリソースマネージャに呼び出しを行うことと、
スマートカードリソースマネージャからの応答を受信することと、
スマートカードリソースマネージャからの応答を示す結果をブラウザウィンドウ内に表示し、それによりブラウザを介してスマートカードデータにユーザがアクセスできることを含む、少なくとも1つのブラウザアドオンを実行する機能を有する方法。
【請求項22】
スマートカードリソースマネージャインタフェースブラウザ拡張機能が、スマートカードにアクセスするためのプラットフォーム固有スマートカードリソースマネージャの関数を呼び出す、ホストコンピュータにより実行可能なブラウザプラットフォーム依存命令を含む、請求項21に記載のホストコンピュータに接続されたスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項23】
スマートカードリソースマネージャインタフェースブラウザ拡張機能により、スマートカードリソースマネージャにより送信されたスマートカードイベントを検出することをさらに含む、請求項21に記載のホストコンピュータに接続されたスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項24】
インタフェースオブジェクトが、スマートカードリソースマネージャインタフェースブラウザ拡張機能を使用してスマートカードリソースマネージャにより送信されたスマートカードイベントを受信する、請求項23に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項25】
スマートカードイベントが、カード挿入、カード取り外し、トランザクション開始、トランザクション終了を含む、請求項24に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項26】
方法呼び出しが、スマートカードへのメッセージ送信およびスマートカードからの対応する応答の受信を含む、請求項21に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項27】
スマートカードから識別ストリングを取得し、スマートカードドライバサーバに識別ストリングを送信することと、
スマートカードドライバサーバから、スマートカード用のドライバが利用可能であるか否かを示す第1の応答を取得することとをさらに含む、請求項21に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項28】
第1の応答が、スマートカードに対応するドライバブラウザアドインを含む、請求項27に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項29】
第1の応答が、スマートカードが最終的に識別不可能であることを示す表示とスマートカードが実行するコマンドとを含み、スマートカードからの期待応答が最終的にカードの識別を決定するものである、請求項27に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項30】
スマートカード用のドライバが利用可能であるか否かを示す応答がスマートカードドライバサーバからのさらなる識別コマンドを含むのに応答して、スマートカードにさらなる識別コマンドを実行するように指示する命令を実行することと、
スマートカードからのさらなる識別コマンドに対する応答を受信することと、
スマートカードからスマートカードドライバサーバに応答を送信することと、
スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージを含むスマートカードドライバサーバから第2の応答を受信することとを含む、請求項27に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項31】
スマートカードドライバブラウザ拡張機能が受信されるまで、またはスマートカードドライバサーバからの応答メッセージがスマートカードがサポートされていないとのメッセージで応答するまで、スマートカードの応答を送信するステップと、スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージのいずれかを含むスマートカードドライバサーバからの応答を受信するステップとを繰り返すことをさらに含む、請求項30に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項32】
第1のスレッドでスマートカード上のデータにアクセスする方法における呼び出しを実行することと、
スマートカードリソースマネージャに対する関数呼び出しを実行することとを含み、この関数呼び出しの実行が関数呼び出しを実行するための新規スレッドを生成して、スマートカードリソースマネージャに送信されたコマンドの実行が終了した時に特定のコールバック関数で第1のスレッドに制御を返すようにホストコンピュータに指示し、コールバック関数が、スマートカードリソースマネージャに送信されたコマンドに応答して、スマートカードから受信された応答に応じて操作可能である、請求項21に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項33】
第1のスレッドでスマートカード上のデータにアクセスする方法における呼び出しを実行することと、
スマートカードとの接続を確立するために、スマートカードリソースマネージャに対する関数呼び出しを実行することと、
スマートカードとの接続を確立するために関数呼び出しに応答して、関数呼び出しを実行するための新規スレッドを生成し、スマートカードへの接続を確立するためのコマンドの実行が終了した時に特定のコールバック関数で第1のスレッドに制御を返すようにホストコンピュータに指示することとを含み、コールバック関数が、スマートカードへの接続を確立するためのコマンドに応答して、スマートカードマネージャから受信された応答に応じて操作可能である、
請求項21に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項34】
ブラウザ拡張機能が、
ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることを検出することと、
ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることを検出すると、それに応答して、ジャバスクリプトとスマートカードとの間の対話に対するユーザの承認または非承認を取得することと、
ユーザの承認に応答して、対話の開始を許可することと、
ユーザの非承認に応答して、対話の開始を許可しないこととをさらに含む、請求項21に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項35】
ユーザの認証に応答して、スマートカードとの対話が許可されたウェブサイトリストにウェブサイトを追加することを含む、請求項34に記載のコンピュータシステムを操作する方法。
【請求項36】
スマートカードとの対話が許可されたウェブサイトリストからウェブサイトを選択的に削除することを含む、スマートカードとの対話が許可されたウェブサイトリストを管理することをさらに含む、請求項35に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項37】
ユーザの非認証に応答して、スマートカードとの対話が許可されていないウェブサイトリストにウェブサイトを追加することを含む、請求項34に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項38】
スマートカードとの対話が許可されていないウェブサイトリストからウェブサイトを削除することを含む、スマートカードとの対話が許可されていないウェブサイトリストを管理することをさらに含む、請求項37に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項39】
ユーザがジャバスクリプトとスマートカードとの間の対話の承認または非承認を示すことができるユーザ対話ウィンドウを表示することをさらに含む、請求項34に記載のスマートカード内に記憶されたデータにアクセスするブラウザを使用するためにコンピュータシステムを操作する方法。
【請求項40】
スマートカードに接続されたホストコンピュータにより実行可能な命令が記憶されており、ホストコンピュータをスマートカードにアクセス可能にする命令を有するスマートカードリソースマネージャがロードされている、クライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体であって、ホストコンピュータにロードされる時に、命令が、
各々がブラウザプラットフォーム独立インタフェースモジュールと、スマートカード上のデータにアクセスし、関数呼び出しをスマートカードリソースマネージャに対応する呼び出しに変換するための少なくとも1つの関数に対する呼び出しを受信するように動作可能なモジュールを処理する関数を有するスマートカードリソースマネージャとに対するインタフェースを有する少なくとも1つのブラウザプラットフォーム依存ラッパモジュールと、
ホストコンピュータが少なくとも1つのブラウザアドオンを実行してブラウザ拡張機能を呼び出すことができるようにするブラウザプラットフォーム独立アプリケーションプログラムインタフェースであって、スマートカード上のデータにアクセスするための少なくとも1つの関数を提供するアプリケーションプログラムインタフェースを備えるブラウザプラットフォーム独立インタフェースモジュールとを提供する命令とを含む、コンピュータ記憶媒体。
【請求項41】
ブラウザプラットフォーム独立インタフェースモジュールおよびブラウザプラットフォーム依存ラッパモジュールが、ホストコンピュータによりブラウザにロードされる命令を含む、請求項40に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項42】
ブラウザプラットフォーム依存ラッパモジュールが、スマートカードにアクセスするためにプラットフォーム固有スマートカードリソースマネージャの関数を呼び出すようにホストコンピュータにより実行可能なブラウザプラットフォーム依存命令を含む、請求項40に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項43】
ブラウザプラットフォーム依存ラッパモジュールが、スマートカードリソースマネージャにより送信されたスマートカードのイベントを検出する、請求項40に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項44】
ブラウザプラットフォーム独立ラッパモジュールが、ブラウザプラットフォーム依存ラッパモジュールを介してスマートカードリソースマネージャにより送信されたスマートカードのイベントを受信する、請求項43に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項45】
スマートカードのイベントが、カード挿入、カード取り外し、トランザクション開始、トランザクション終了を含む、請求項44に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項46】
関数呼び出しが、スマートカードへのメッセージ送信およびスマートカードからの対応する応答の受信を含む、請求項40に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項47】
ホストコンピュータに接続されたスマートカードに対応する適切なスマートカードドライバブラウザ拡張機能を取得するためのオンデマンドドライバモジュールをさらに含み、オンデマンドドライバモジュールがホストコンピュータに、
スマートカードからの識別ストリングを取得させてスマートカードドライバサーバに識別ストリングを送信させ、
スマートカードドライバサーバから、スマートカード用のドライバが利用可能であるか否かを示す第1の応答を取得させる命令を含む、請求項40に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項48】
第1の応答が、スマートカードに対応するドライバブラウザアドインを含む、請求項47に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項49】
第1の応答が、スマートカードが最終的に識別不可能であることを示す表示とスマートカードが実行するコマンドとを含み、スマートカードからの期待応答が最終的にカードの識別を決定するものである、請求項47に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項50】
オンデマンドドライバモジュールが、
スマートカード用のドライバが利用可能であるか否かを示す応答がさらに、スマートカードドライバサーバからのさらなる識別コマンドを含む場合に、
スマートカードにさらなる識別コマンドを実行するように指示する命令と、
さらなる識別コマンドに対するスマートカードからの応答を受信する命令と、
スマートカードからの応答をスマートカードドライバサーバに送信する命令と、
スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージを含むスマートカードドライバサーバからの第2の応答を受信する命令とを含む、請求項47に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項51】
スマートカードドライバブラウザ拡張機能が受信されるまで、またはスマートカードドライバサーバからの応答メッセージがスマートカードがサポートされていないというメッセージで応答するまで、スマートカードの応答を送信するステップと、スマートカード用のドライバまたはスマートカードを識別するためにスマートカードにより実行されるさらなるコマンドを有する応答メッセージを含むスマートカードドライバサーバからの応答を受信するステップとをホストコンピュータに繰り返させる命令をさらに含む、請求項50に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項52】
中央処理ユニットにスマートカード上のデータにアクセスするように指示する命令が、さらに第1のスレッドでホストコンピュータ上で実行し、
スマートカードリソースマネージャに送信されたコマンドに応答して、スマートカードから受信された応答に応じて操作可能なコールバック関数をさらに含み、
スマートカードリソースマネージャに対する関数呼び出しが、関数呼び出しを実行するための新規スレッドを生成して、スマートカードリソースマネージャに送信されたコマンドの実行が終了した時にコールバック関数で第1のスレッドに制御を返すようにホストコンピュータに指示する、請求項40に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項53】
中央処理ユニットにスマートカード上のデータにアクセスするように指示する命令が、さらに第1のスレッドでホストコンピュータ上で実行し、
スマートカードへの通信接続を確立するために、ホストコンピュータにスマートカードリソースマネージャの命令を実行させるように動作可能な接続モジュールと、
スマートカードリソースマネージャに送信されたコマンドに応答して、スマートカードから受信された応答に応じて操作可能なコールバック関数とを含み、
接続モジュールの実行がスマートカードへの接続を確立するためにスマートカードリソースマネージャの命令を実行するための新規スレッドを生成して、スマートカードへの接続を確立するためにスマートカードリソースマネージャの命令の実行が終了した時にコールバック関数で第1のスレッドに制御を返すようにホストコンピュータに指示する、請求項40に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項54】
ブラウザ拡張機能が、
ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることを検出する命令と、
ウェブサイトからダウンロードされたジャバスクリプトがスマートカードとの対話を試みていることを検出すると、それに応答して、ジャバスクリプトとスマートカードとの間の対話に対するユーザの承認または非承認を取得する命令と、
ユーザの承認に応答して、対話の開始を許可する命令と、
ユーザの非承認に応答して、対話の開始を許可しない命令とをさらに含む、請求項40に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項55】
ブラウザ拡張機能が、
ユーザの承認に応答して、スマートカードとの対話が許可されたウェブサイトリストにウェブサイトを追加する命令をさらに含む、請求項54に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項56】
ブラウザ拡張機能が、
スマートカードとの対話が許可されたウェブサイトリストからウェブサイトを削除するコードを含む、スマートカードとの対話が許可されたウェブサイトリストを管理する命令をさらに含む、請求項55に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項57】
ブラウザ拡張機能が、
ユーザの非承認に応答して、スマートカードとの対話が許可されていないウェブサイトリストにウェブサイトを追加する命令をさらに含む、請求項54に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項58】
ブラウザ拡張機能が、
スマートカードとの対話が許可されていないウェブサイトリストからウェブサイトを削除するコードを含む、スマートカードとの対話が許可されていないウェブサイトリストを管理する命令をさらに含む、請求項57に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【請求項59】
ブラウザ拡張機能が、
ユーザがジャバスクリプトとスマートカードとの間の対話の承認または非承認を示すことができるユーザ対話ウィンドウを表示する命令をさらに含む、請求項54に記載のクライアント/サーバ関係のサーバとしてアクセス可能なコンピュータ記憶媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9a】
【図9b】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9a】
【図9b】
【図10】
【図11】
【図12】
【図13】
【公表番号】特表2010−537340(P2010−537340A)
【公表日】平成22年12月2日(2010.12.2)
【国際特許分類】
【出願番号】特願2010−522349(P2010−522349)
【出願日】平成20年8月26日(2008.8.26)
【国際出願番号】PCT/EP2008/061163
【国際公開番号】WO2009/027409
【国際公開日】平成21年3月5日(2009.3.5)
【出願人】(508361405)
【Fターム(参考)】
【公表日】平成22年12月2日(2010.12.2)
【国際特許分類】
【出願日】平成20年8月26日(2008.8.26)
【国際出願番号】PCT/EP2008/061163
【国際公開番号】WO2009/027409
【国際公開日】平成21年3月5日(2009.3.5)
【出願人】(508361405)
【Fターム(参考)】
[ Back to top ]