EternalWindows
スマートカード / スマートカードの役割

スマートカードとは、クレジットカードと同じ大きさを持つプラスチック製のカードであり、 ICチップを内蔵していることから国内ではICカードと呼ばれることもあります。 スマートカードのICチップには、CPUやOS、EEPROM(書き換え可能なメモリ)などが含まれており、 外部のシステムから送られてきた命令を実行できると共に、その命令結果を保存するようなこともできます。 このような点に注目して、現在では公共や金融など幅広い面でスマートカードは利用されており、 社員証のような身分証明書もスマートカードとして発行される傾向があります。 こうした事例から分るように、スマートカードの使い方を覚えることは、 単なるアプリケーション開発の規模に留まりません。 高度なソリューションを構築する場合において、 携帯性や利便性に優れるスマートカードは大いに活躍できます。

スマートカードを利用するには、何よりもまずスマートカードを入手する必要があります。 基本的にこれは、スマートカードを販売している企業のHPから購入の申請を行いますが、 販売されているカードにはいくつかの仕様があり、 どのようなカードを選択すればよいのか悩むものです。 いくつかの重要なキーワードとして次のようなものが挙げられるため、 これらがカードの仕様に記述されているかどうかを確認するとよいかもしれません。

キーワード 意味
PC/SC対応 WinSCard APIを通じてカードへアクセスできることを意味する。 カード内のファイルを読み取ったり、独自のファイルを作成したい場合はWinSCard APIを利用する。
CAPI対応 CryptoAPIを通じてカードへアクセスできることを意味する。 公開鍵/秘密鍵の鍵ペアをカードに保存したい場合はCryptoAPIを利用する。
ISO 7816-4準拠またはJICSAP仕様準拠 カードに送信するコマンドが、国際規格のISO 7816-4または国内仕様のJICSAPに準拠していることを意味する。 つまり、メーカー独自のコマンドではなく、規格化されたコマンドをカードは理解することができる。 JICSAP仕様はISO 7816-4を基に策定されているため、 JICSAP仕様の準拠はISO 7816-4の準拠とほぼ同じ意味である。 JICSAP仕様の最新バージョンは、2.0である。

当然ながら、これらのキーワードが記述されていなくても実際には対応されていることもありますし、 現在のスマートカードならばすべてのキーワードに対応している物も多いといえます。 この他の重要な要素として、 通信インターフェース(接触型か非接触型)やOS(ネイティブ型かアプリケーションの 追加可能なプラットフォーム型)がありますが、 これらについては最終的に達したい目的によって選択することになるでしょう。

実際にスマートカードを利用するためには、どれくらいの用意が必要となるのでしょうか。 たとえば、カードだけを購入しても、カードリーダがなければカードと通信できませんから、 カードリーダも購入しておくべきといえます。 幸いにも、下記サイトのように必要なもの一式を販売しているベンダーもあるため、 こうした開発キットを購入すれば、過不足について心配することもないと思われます。

http://www.athena-scs.co.jp/st_kit.html

このサイトで販売されている開発キットには、カードやカードリーダの他にCryptoAPIのCSPも含まれているため、 アプリケーションはCryptoAPIを通じてカードにアクセスすることができるようになります。 また、必要なドライバは別途ダウンロードすることができます。 なお、アプリケーションがWinSCard APIを通じてカードにコマンドを送りたいような場合は、 ISO 7816またはJICSAP 2.0のコマンドの仕様を理解しておく必要があるため、 このような仕様書も購入する必要があります。 JICSAP 2.0の仕様書は、下記のサイトにて販売されています。

http://www.jicsap.com/iccard_jicsap_shiyou.html

この仕様書は4部構成に分れており、第3部にコマンドについての詳しい説明があります。 そのため、基本的には第3部を購入するだけで十分といえます。 また、この第3部を購入すると付属書も添付されるため、 こちらについても目を通すことになります。 筆者は、本章の説明及びプログラムの作成にあたって、 上記したキットと仕様書を利用しましたが、 これらを利用していない場合でも、主として適用可能な情報を記述しています。 ただし、カードの中に独自のファイルを作成するまでは至っていないため、 その点ご理解願います。

スマートカードログオンについて

スマートカードを利用したソリューションの1つとして、Windowsへのログオンというものがありますが、 これには注意しておかなければならない点があります。 それは、スマートカードログオン可能とされているスマートカードを購入しても、 実際にはログオンできない場合があるという点です。 一般的な意味でのスマートカードログオンというのは、 Windows XPやVistaなどのクライアントOSからWindows 2003や2008といったサーバーOSへのログオンを意味しており、 サーバーOSが存在しないことには、クライアントOSにカードリーダを接続しても何も起きることはありません。 また、クライアントがサーバーにログオンするという関係上、 クライアントは予めサーバーが構築したドメインに参加している必要があります。 さらに、サーバーはクライアントが利用するためのスマートカードの設定を、 サーバー上のサービスを通じて行っている必要があります。

サーバーやドメインといった存在を考慮せず、単純にクライアントOSにログオンするためには、 クライアントOSのログオンコンポーネント(GINAなど)を独自に書き換える必要があります。 もし、このようなコンポーネントがスマートカードと共に販売されていれば、 スマートカードによるログオンは問題なく行えるはずです。 逆に、このようなコンポーネントが提供されていない場合は、 サーバーを利用したログオンであると考えられるため、 サーバーを用意しておくと共にその使い方についても習熟している必要があります。 スマートカードログオンという記述を見かけた場合、 それがどのように実現されているのかを十分に確認しておくべきといえます。



戻る