EternalWindows
スマートカード / PKCS #15

カードに存在するファイルを誰もが削除や変更できることは、セキュリティ的に問題があります。 このため、多くの場合はPINによる照合を終えてからでないと、 このようなコマンドの実行は失敗することになっています。 PINとは、カードを発行された者が知る一定の長さを持った値であり、 デフォルトのPINはドキュメントなどによって予め伝えられていると思われます。 PINによる照合を行うというのは、PINを格納するIEFに対して照合を行うコマンドを送信することであり、 正しいPINを指定した場合は、セキュリティ操作が行えるようになります。

実際にPINの照合を行うとなった場合、ある1つの問題が浮上します。 それは、PINを格納するIEFがファイル構造上のどこに存在するか分からないという点です。 カードに最初から存在するファイルは一部を除いて、カードベンダー固有の ファイル識別子(またはDF名)が付けられており、 さらにそれがどのDFの下に作成されているのかは、基本的に利用者には公開されていません。 つまり、目的のIEFを捜し求めるのはそう簡単なことではありません。

上記のようなカード固有のファイル構造を標準化する規格として、 PKCS #15(現在はISO 7816-15)があります。 この規格に対応したカードには、PKCS #15用のDFが予め作成されており、 そこにはカードのファイル構造の仕様を記述したファイルが格納されています。 つまり、自由に設計されたファイル構造を理解するための仕様を、 特定のDF直下に用意しておく規格がPKCS #15ということになります。 PKCS #15に対応したカードのファイル構造は、次のようになっていると思われます。

上図は、MFの直下にEF.DIRとDF.CIAが存在し、 DF.CIAの直下にEF.CIAINFOとEF.ODが存在することを表しています。 各種ファイルの役割は、次のようになります(括弧内はファイル識別子)。

ファイルまたはオブジェクト 意味
EF.DIR(0x2f00) カード内に存在するDFの名前が格納されているEF。 このファイルの存在はISO 7816-4で規定され、オプションである。
DF.CIA CIA(Cryptographic Information Application)のDF。 PKCS #15のディレクトリと考えてよい。
EF.CIAInfo(0x5032) CIAのバージョンやカードフラグ、セキュリティ環境などを格納するDO-WEF。
EF.OD(0x5031) 暗号情報オブジェクトを格納するDO-WEF。
暗号情報オブジェクト CIO(Cryptographic Information Object)とも呼ばれ、実際のデータへのパスを含むデータオブジェクト。 暗号情報オブジェクトには、PINを格納するEF.AOD、秘密鍵を格納するEF.PrKD、公開鍵を格納するEF.PuKD、 証明書を格納するEF.CDなどが存在する。

手順としては、まずEF.DIRを選択し、DF.CIAのDF名を取得します。 その後、DF.CIAを選択し、EF.ODに格納される暗号情報オブジェクトを取得するべく、 GET DATAコマンドを実行することになるでしょう。 ただし、実際には個々のデータオブジェクトのタグを特定できないと思われるため、 筆者の環境ではIEFへのパスを維持するデータオブジェクトを判断することができませんでした。 また、EF.DIRが存在しない場合は、DF.CIAそのものを捜すことも難しいと思われます。

EF.ODに格納される暗号情報オブジェクトが、アプリケーション向けに提供されていること忘れてはいけません。 暗号情報オブジェクトは、実際のデータへのパスを格納するだけであり、 暗号情報オブジェクトを変更したり削除したりしても、実際のデータに影響が及ぶことはありません。 カード間の相互運用性を高めるために、アプリケーションは暗号情報オブジェクトを 通じて目的の情報を取得するようにし、カードのファイル構造に依存したコードはさけるべきといえます。


戻る