今や,ICカードはあらゆる分野で利用されている。セキュリティの分野では,公開鍵などを保存するハードウエア・トークンとしての利用が進んでいる。用途が広がるにつれて,ICカードにはセンシティブな情報が保存されるようになってきている。そのような情報を守るために,ICカードにはさまざまなセキュリティ機能が備わっている。そこで今回の記事では,ICカードが備えるセキュリティ機能の概要を解説したい。

「接触型カード」や「非接触型カード」

 まずは,ICカードの概要をざっと見てみよう。

 ICカードには,「接触型カード」,「非接触型カード」,さらにそれらを組み合わせた「ハイブリッド・カード」や「2Wayアクセス・カード」がある。ハイブリッド・カードには,接触型用ICと非接触型用ICチップがそれぞれ独立して1枚のカードに搭載されている。それに対して2Wayアクセス・カードでは,接触型と非接触型の2つのインタフェースで1つのICチップを共有する。

 接触型カードの具体例としては,クレジット・カードをはじめとする金融カードが挙げられる。非接触型カードとしては,JR東日本のSuicaなどの交通カードが代表的だ。住民基本台帳カードは,非接触型として使われるが,実際には2Wayアクセス・カードである。

 非接触型カードは,その有効範囲で,「密着型(~2mm)」「近接型(~10cm)」「近傍型(~70cm)」「マイクロ波型(~数m)」に分けられる。

 ICカードの規格は,国際標準規格(ISO)として定められている。例えば,接触型カードは「ISO/IEC 7816」シリーズ,非接触型の近接型カードは「ISO/IEC 14443」シリーズ,近傍型カードは「ISO/IEC 15693」シリーズ――である。

 ICカードのプラット・ホームとしては,カード・ベンダー独自のネイティブOSや,マルチアプリケーションに対応したJavaカード,MULTOSカードがある。ICカードのメモリー容量は,8Kバイト,16Kバイト,32Kバイトなどが主流だが,1Mバイトの大容量ICカードも開発されている。

 国内のICカード関連の標準規格としては,「日本ICカードシステム利用促進協議会(JICSAP)」により,国際標準規格に準拠した実装仕様書「JICSAP ICカード仕様」が制定されている。同仕様書の最新版は,2001年7月に発行された「JICSAP ICカード仕様 V2.0(以下,「JICSAP2.0」と呼ぶ)」である。最近では,「JICSAP2.0」を実装したICカードが数多く商品化されている。

 これまでの仕様では,接触型カードだけを対象としていたが,「JICSAP2.0」では接触型カードに加え,非接触の近接型ICカードにも対応している。また,電子商取引や電子文書交換における電子印鑑(署名)を実現するためのセキュリティ機能に関する仕様が盛り込まれている。

「セキュアメッセージング」と「セキュリティ関連コマンド」

 それでは次に,ICカードに実装されているセキュリティ機能を紹介しよう。

 まず,現在利用されているICカードには,「耐タンパ機能」「暗証番号(PIN)によるアクセス制御」「暗号処理」「秘密鍵保護」といった,ハードウエア・トークンとしての使用に耐えるためのセキュリティ機能を備えている。さらに最近では,「マルチアプリケーション・ファイアウオール」や「セキュア・ダウンローディング」などが実装されているカードも多い。

 そして,JICSAP2.0に準拠したICカードでは,「セキュアメッセージング」と「セキュリティ関連コマンド」が実装および強化されている。これらについては,少し詳しく説明しよう。

 ICカードの基本動作は,次のようになる。まず,外部装置からICカードへコマンド(指令)が送られる。ICカード内ではそのコマンドが処理され,ICカードから外部装置にレスポンス(応答)として処理結果を返す。このとき,外部装置とICカードでやり取りされるデータ(コマンドやレスポンス)を「APDU」という。

 セキュアメッセージングとは,このAPDUをセキュアに通信できるようにする,暗号化と認証の機能である。APDUを暗号化して盗聴を防ぐとともに,APDU にメッセージ認証コードを付加して,APDU の完全性と送信者の正当性を確認する。つまり,SSL(Secure Sockets Layer)と似たような仕組みで,外部装置とICカード間のセキュアな通信を実現する。

 このとき使用する暗号アルゴリズムの種類や暗号化用の鍵,認証用の鍵などは,「セキュリティ環境」と呼ばれる定義情報として,カード内に設定されている。セキュリティ環境という概念は,JICSAP2.0で初めて取り入れられた。セキュリティ環境は適宜変更できるので,用途や環境に応じて,セキュリティの強度などを自由に変更できる。

 「セキュリティ関連コマンド」は,PKI(公開鍵認証基盤)で利用するためのセキュリティ機能である。署名の検証や鍵生成といったコマンド(命令)群で構成される。この機能により,ユーザー認証や電子文書への署名などがICカードを利用して実現できる。

 このような機能を備えているICカードは,JICSAP2.0が規定される前にも存在した。しかし,これまではJICSAPの仕様書では規定されておらず,ベンダーが独自に仕様を定めて実装していた。JICSAP2.0で初めて,国際標準規格(ISO/IEC 7816-8および9)に準拠する形で,仕様に盛り込まれた。

 セキュリティ関連コマンドには,次のようなものがある。

  • MANAGE SECURITY ENVIRONMENT
       セキュリティ環境を設定する
  • COMPUTE DIGITAL SIGNATURE
       データに署名を行う
  • VERIFY DIGITAL SIGNATURE
       署名を検証する
  • VERIFY CERTIFICATE
       証明書を検証する
  • GENERATE PUBLIC KEY PAIR
       署名用や公開鍵暗号用の鍵ペアをカード内で生成し公開鍵を出力する
  • GET SESSION KEY
       セッション鍵を生成する

 なお,セキュリティ関連コマンドで使用する暗号や署名などのアルゴリズム,暗号化や署名の鍵は,セキュアメッセージングと同様に,セキュリティ環境として設定される。

 JICSAP2.0には含まれていないが,2004年3月には「ISO/IEC 7816-11:ICカード-生体認証法による個人の確認」の規格が発行された。これにより,ICカードとバイオメトリクスを連携させる認証システムの開発が進むだろう。今後も,用途が広がるにつれて,ICカードのセキュリティ仕様や機能は充実していくと考えられる。


大谷 俊一 (OHTANI Toshikazu) ootaniアットマークmxe.nes.nec.co.jp
NECソフト株式会社 MCシステム事業部セキュリティ部


 IT Proセキュリティ・サイトが提供する「今週のSecurity Check [一般編]」は,セキュリティ全般の話題(技術,製品,トレンド,ノウハウ)を取り上げる週刊コラムです。システム・インテグレーションやソフト開発を手がける「NECソフト株式会社」の,セキュリティに精通したスタッフの方を執筆陣に迎え,分かりやすく解説していただきます。