(57)【要約】【課題】 サイズの大きい発行データをサイズの小さい複数のデータブロックに分割してＩＣカードに送信する発行方法において、発行システムから送信する前記データブロックが盗み見された場合でも、盗み見された前記データブロックから前記発行データを復元しづらいＩＣカード発行方法を提供する。【解決手段】 ＩＣカード内部にて前記データブロックの送信順序が不規則になるように演算し、ＩＣカードは前記演算した送信順序を示すデータテーブルを発行システムに送信する。発行システムは受信した前記データテーブルに従い、前記データブロックの送信順序が不規則になるようにＩＣカードへ送信する。【選択図】      図５
2005228181.tif 000002
【特許請求の範囲】
【請求項１】
ＩＣカード発行システムが具備するデータ記憶手段に記憶された一枚のＩＣカードに書き込む発行データを、前記発行データのデータサイズよりも小さい複数のデータブロックに分割してＩＣカードに送信し、前記ＩＣカードは受信した前記データブロックをＩＣカードに内蔵しているメモリに書きこむＩＣカード発行方法であって、本発明の方法は、
前記ＩＣカードが前記ＩＣカード発行システムから送信される前記データブロックの送信順序を示す送信順序データを演算するステップと、前記ＩＣカードが前記送信順序データを前記ＩＣカード発行システムに送信するステップと、前記ＩＣカード発行システムが前記送信順序データに従い前記データブロックを送信するステップと、前記ＩＣカードは送信された前記データブロックを前記送信順序データに基き前記メモリの一部の領域に書きこむステップを順に実行する手順を含むことから成るＩＣカード発行方法。
【請求項２】
前記送信順序データの演算は乱数を使用する演算方法であることを特徴とする請求項１に記載のＩＣカード発行方法。
【請求項３】
前記ＩＣカード発行システムから送信されるデータブロックは暗号化されたデータであって、前記メモリに書込まれるデータは前記暗号化されたデータブロックを前記ＩＣカード内部で復号化したデータであることを特徴とした請求項１または請求項２に記載のＩＣカード発行方法。
【請求項４】
ＩＣカード発行システムが具備するデータ記憶手段に記憶された一枚のＩＣカードに書込む発行データを、前記発行データのデータサイズよりも小さい複数のデータブロックに分割してＩＣカードに送信し、送信された前記データブロックをＩＣカードに内蔵しているメモリに書きこむＩＣカード用プログラムであって、本発明のプログラムは、前記ＩＣカード発行システムから送信される前記データブロックの送信順序を示す送信順序データを演算するステップと、前記送信順序データを前記ＩＣカード発行システムに送信するステップと、前記ＩＣカード発行システムから前記送信順序データに従い送信される前記データブロックを受信するステップと、前記送信順序データに基き前記メモリの一部の領域に受信した前記データブロックを書きこむステップを順に実行する手順を含むことから成るＩＣカード用プログラム。
【請求項５】
ＩＣカード発行システムが具備するデータ記憶手段に記憶された一枚のＩＣカードに書込む発行データを、前記発行データのデータサイズよりも小さい複数のデータブロックに分割してＩＣカードに送信し、送信された前記データブロックをＩＣカードに内蔵しているメモリに書きこむＩＣカード用プログラムであって、本発明のプログラムは、前記ＩＣカード発行システムから送信される前記データブロックの送信順序を示す送信順序データを演算するステップと、前記送信順序データを暗号化するかもしくは暗号化せずに前記ＩＣカード発行システムに送信するステップと、前記ＩＣカード発行システムから前記送信順序データに従い送信される暗号化された前記データブロックを受信するステップと、前記暗号化されたデータブロックを復号化するステップと、前記送信順序データに基き前記メモリの一部の領域に前記復号化したデータブロックを書きこむステップを順に実行する手順を含むことから成るＩＣカード用プログラム。
【請求項６】
請求項４または請求項５に記載のＩＣカード用プログラムを記録したこと特徴とするＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クレジットカードサイズのプラスチックカードに半導体集積回路（以下、ＩＣチップと記す）を埋め込んだＩＣカードの発行技術に関し、詳しくは容量の大きいデータを分割してＩＣカードに送信し、ＩＣカードに所定のデータを書込む発行方法に関する。更には、本発明は、前述の発行方法で必要となるＩＣカード用プログラムおよび前記プログラムを実装したＩＣカードにも関する。
【背景技術】
【０００２】
ＩＣカードとは、クレジットカードサイズのプラスチックカードにＩＣチップを埋め込み、前記ＩＣチップのメモリにデータを記録するカードである。近年ＩＣカードはキャッシュカード、クレジットカードまたは電子マネーなどに幅広く応用されている。
【０００３】
従来、ＩＣカードには用途ごとに単一のソフトウェアすなわちアプリケーションを読み出し専用メモリ（Read Only Memory 、以下ＲＯＭと記す）に実装することが主流であったため、一枚のＩＣカードは単一の機能しか持たず、用途ごとにＩＣカードが必要であった。このため、利用者側は複数枚のＩＣカードを常に所持する必要があり大変不便であった。現在は利用者の利便性を向上させるべく、一枚のＩＣカードに複数のアプリケーションを組み込むことができるマルチアプリケーション型ＩＣカードが主流になりつつある。
【０００４】
マルチアプリケーション型ＩＣカードとは、前述の通り、複数のアプリケーションを搭載することができるＩＣカードで、ＩＣチップが備えているＲＯＭに基本処理を行うマルチアプリケーションオペレーティングシステム（Operating System、以下ＯＳと記す）を実装し、同じくＩＣチップが備えている電気的に消去・書き換えができるＲＯＭ、例えばＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memoryの略）に一つまたは複数のアプリケーションを実装する。前記ＥＥＰＲＯＭにアプリケーションを実装することで、利用者は好みに応じて複数のアプリケーションをＩＣカードに搭載でき、ＩＣカード製造後のアプリケーションの追加や不必要なアプリケーションの削除も行なえ、かつアプリケーションの機能拡充も容易になる。
【０００５】
ＥＥＰＲＯＭに書込まれるアプリケーションには、アプリケーションで利用するクレジット番号等のカード番号、カード所持者の氏名等の個人情報が含まれることが多い。当然のことながら、ＩＣカードの発行処理すなわちアプリケーションをＥＥＰＲＯＭに実装する処理においては、前記個人情報が外部に漏洩することは防がねばならず、ＩＣカードを発行する発行システムは、通常、高いセキュリティ管理がなされた特別な環境内に設置されている。
【０００６】
しかし、常に高いセキュリティ環境内に発行システムを設置することは現実的に難しく、この問題を解決するために他人の出願に係る特許文献１においては、ＩＣカードを発行する際、ＩＣカードに書込むデータを暗号化してＩＣカードに伝送し、ＩＣカード内部で復号化することによって、ＩＣカードに書込むデータの内容そのものが外部に漏洩しない発行システムを開示している。
【特許文献１】特開平１−８１０８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ただし前述の従来の手法においては、以下に述べるような解決すべき課題も残っている。
第１の解決すべき課題は、暗号データの復号化に時間を要する点である。プラスチックカードに埋め込まれる都合上、ＩＣカード用ＩＣチップは非常に薄くかつ小さいＩＣチップであるため、ＩＣカード用ＩＣチップの演算速度には限界がある。例えばマルチアプリケーションＩＣカードに搭載するアプリケーションは、アプリケーションの種類によっても異なるが、アプリケーションのデータサイズは数キロバイトから数十キロバイトにも及ぶため、データをすべて復号化する処理時間が問題になる。ＩＣカード製造会社等の大量にＩＣカードを発行し、かつ高いセキュリティを有する環境を備えているような会社においては、ＩＣカードに書込むデータを暗号化しなくとも、ＩＣカードに書込むデータが解読されにくく、かつ処理速度が速い発行システムが望まれている。
【０００８】
また第２の解決すべき課題は、特許文献１においては発行システムからＩＣカードに伝送するデータを暗号化しているが、暗号を解読しようとする暗号解読者が、前記暗号化されたデータとともにカード利用者氏名、カード番号等のカード表面に印字されるデータから暗号化されていないデータ（以下、平文と記す）の一部を入手した場合、前記暗号化されたデータと平文を対応させることが容易な点である。前記暗号化されたデータと平文の一部を複数入手し、それぞれ対応させることができるならば、それは前記暗号解読者が暗号に対する攻撃をしやすくなることを意味する。よって、発行システムからＩＣカードに伝送するデータが暗号化されている場合においても、暗号解読に対する耐タンパー性を向上させる余地がある。
【０００９】
本発明は前述の２つの課題を鑑みて、ＩＣカードに伝送するデータを暗号化しなくてもＩＣカードに書き込むデータの中身が解読されにくく、かつＩＣカードに伝送するデータが暗号化されている場合は暗号解読に対してより高い耐タンパー性を有するＩＣカード発行方法およびＩＣカード用プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
前述の課題を解決するために第１の発明は、ＩＣカード発行システムが具備するデータ記憶手段に記憶された一枚のＩＣカードに書き込む発行データを、前記発行データのデータサイズよりも小さい複数のデータブロックに分割してＩＣカードに送信し、前記ＩＣカードは受信した前記データブロックをＩＣカードに内蔵しているメモリに書きこむＩＣカード発行方法であって、本発明の方法は、前記ＩＣカードが前記ＩＣカード発行システムから送信される前記データブロックの送信順序を示す送信順序データを演算するステップと、前記ＩＣカードが前記送信順序データを前記ＩＣカード発行システムに送信するステップと、前記ＩＣカード発行システムが前記送信順序データに従い前記データブロックを送信するステップと、前記ＩＣカードは送信された前記データブロックを前記送信順序データに基き前記メモリの一部の領域に書きこむステップを順に実行する手順を含むことから成るＩＣカード発行方法である。第１の発明によれば、ＩＣカードへ送信される前記データブロックの送信順序が先頭の前記データブロックから順に送信されないため、万が一、ＩＣカードへ送信されるデータブロックを盗み見されたとしても、盗み見されたデータブロックからＩＣカードに書込まれる発行データすべてを復元することは困難になる。
【００１１】
第２の発明は、前記送信順序データの演算は乱数を使用する演算方法であることを特徴とする第１の発明に記載のＩＣカード発行方法である。前記送信順序データの演算に乱数を用いることで、ＩＣカードへ送信される前記データブロックの送信順序がランダムになる。
【００１２】
第３の発明は、前記ＩＣカード発行システムから送信されるデータブロックは暗号化されたデータであって、前記メモリに書込まれるデータは前記暗号化されたデータブロックを前記ＩＣカード内部で復号化したデータであることを特徴とした第１の発明または第２の発明に記載のＩＣカード発行方法である。ＩＣカードへ送信されるデータが暗号化されていることで、ＩＣカードに送信されるデータから発行データを復元することは困難になり、かつデータブロックの送信順序がＩＣカード毎に異なることで、たとえ平文の一部が入手されたとしても、前記暗号化されたデータと前記平文の一部を対応させることが困難になり、前記暗号化されたデータの解読に対する耐タンパー性が向上する。
【００１３】
前記課題を解決するために第４の発明は、ＩＣカード発行システムが具備するデータ記憶手段に記憶された一枚のＩＣカードに書込む発行データを、前記発行データのデータサイズよりも小さい複数のデータブロックに分割してＩＣカードに送信し、送信された前記データブロックをＩＣカードに内蔵しているメモリに書きこむＩＣカード用プログラムであって、本発明のプログラムは、前記ＩＣカード発行システムから送信される前記データブロックの送信順序を示す送信順序データを演算するステップと、前記送信順序データを前記ＩＣカード発行システムに送信するステップと、前記ＩＣカード発行システムから前記送信順序データに従い送信される前記データブロックを受信するステップと、前記送信順序データに基き前記メモリの一部の領域に受信した前記データブロックを書きこむステップを順に実行する手順を含むことから成るＩＣカード用プログラムである。第４の発明のプログラムをＩＣカードに実装することで、請求項１または請求項２に記載のＩＣカード発行方法を実現できる。
【００１４】
前記課題を解決するために第５の発明は、ＩＣカード発行システムが具備するデータ記憶手段に記憶された一枚のＩＣカードに書込む発行データを、前記発行データのデータサイズよりも小さい複数のデータブロックに分割してＩＣカードに送信し、送信された前記データブロックをＩＣカードに内蔵しているメモリに書きこむＩＣカード用プログラムであって、本発明のプログラムは、前記ＩＣカード発行システムから送信される前記データブロックの送信順序を示す送信順序データを演算するステップと、前記送信順序データを暗号化するかもしくは暗号化せずに前記ＩＣカード発行システムに送信するステップと、前記ＩＣカード発行システムから前記送信順序データに従い送信される暗号化された前記データブロックを受信するステップと、前記暗号化されたデータブロックを復号化するステップと、前記送信順序データに基き前記メモリの一部の領域に前記復号化したデータブロックを書きこむステップを順に実行する手順を含むことから成るＩＣカード用プログラムである。第５の発明のプログラムを前記ＩＣカードに実装することで、第３の発明に記載のＩＣカード発行方法を実現できる。
【００１５】
第６の発明は、第４または第５の発明に記載のＩＣカード用プログラムを記録したこと特徴とするＩＣカードである。前記ＩＣカードとは、接触型ＩＣカード、非接触型ＩＣカードおよび接触インターフェースと非接触インターフェースの両方のインターフェースを備えたデュアルインターフェースＩＣカードを意味する。加えて、ＩＣチップが内蔵されている近辺を短冊形に切り取ったＳＩＭ（Subscriber Identity Module）も含む。
【発明の効果】
【００１６】
上記に述べた本発明によれば、第１の効果は、ＩＣカードに送信する前記データブロックの送信順序はＩＣカード毎に異なるため、前記データブロックを盗み見されたとしても、盗み見された前記データブロックからＩＣカードに書き込まれる発行データそのものを復元することが困難なＩＣカード発行方法を提供でき、加えて第２の効果は、ＩＣカードに送信されるデータが暗号化されている場合には、暗号解読に対してより高いタンパー性を有するＩＣカード発行方法を提供できる。
【発明を実施するための最良の形態】
【００１７】
マルチアプリケーション型ＩＣカードの発行処理、すわなちマルチアプリケーション型ＩＣカードが具備するメモリにアプリケーションを書き込む処理に本発明を適用した実施の形態を、以下に図を参照にしながら詳細に説明する。まず初めに発行システムおよびマルチアプリケーション型ＩＣカードについて説明し、つづいてＩＣカードの発行方法の手順について説明し、つづいて前記ＩＣカードに搭載するプログラムの動作手順について説明し、最後にＩＣカードに送信されるデータが暗号化されている場合の処理について説明する。
【００１８】
＜発行システムおよびマルチアプリケーションＩＣカードの説明＞
図１は発行システム１００の概略図である。発行システム１００は、ＩＣカード２００とデータ通信しＩＣカード２００が具備する書換え可能なメモリにデータを書き込むシステムである。発行システム１００には、ＩＣカード２００に書込むデータを記憶する記憶装置１１０、ＩＣカード２００に書込むデータを基にＩＣカード２００に送信するＡＰＤＵ（Application Protocol Data Unitの略）を生成するＡＰＤＵ生成装置１２０、前記ＡＰＤＵに含まれるデータの一部またはデータすべてをＤＥＳ（Data Encryption Standardの略）を用いて暗号化する暗号装置１３０、ＩＣカード２００とデータ通信しデータの読み書きを行なうリーダライタ１４０を少なくとも備えている。なお図１のＩＣカード２００は、マルチアプリケーション型ＩＣカードである。
【００１９】
なお、本実施の形態においては、ＩＣカード２００をマルチアプリケーション型ＩＣカードとしているが、本発明は何らＩＣカード２００のＯＳ種類に依存するものではない。一つのデータを複数のデータブロックに分割してＩＣカードに送信する場合であれば、例えば単一のアプリケーションを読み出し専用メモリに記録した専用ＯＳにおける発行処理にも適用できるし、データファイルの集合を１つのアプリケーションとしてＩＣカード２００内部の書換え可能メモリに記録するファイル型アプリケーションの発行処理にも適用できる。
【００２０】
図２は、本実施の形態で用いるマルチアプリケーション型ＩＣカードの階層モデル３００である。図１に示すように、一般的にマルチアプリケーション型ＩＣカードの階層モデル３００は、ＩＣチップ３１０、マルチアプリケーションＯＳ３２０およびアプリケーション３３０の３階層構造である。
【００２１】
図３はＩＣチップ３１０の構成図である。ＩＣチップ３１０には、演算機能およびＩＣチップ３１０が具備するデバイスを制御する機能を備えた中央演算装置３１１（Central Processing Unit、以下ＣＰＵと記す）、読み出し専用メモリ３１２（Read Only Memory、以下ROMと記す）、書換え可能なメモリとしてＥＥＰＲＯＭ３１３（Electrically Erasable Programmable Read-Only Memoryの略）、揮発性メモリとしてランダムアクセスメモリ３１４（Random Access Memory、以下ＲＡＭと記す）、乱数を生成する乱数生成回路３１５、ＤＥＳの演算を行う暗号演算回路３１６およびリーダライタ１４０とデータ通信するためのＩ／Ｏ回路３１７を少なくとも備なえている。本発明は、ＩＣチップ３１０の仕様をなんら限定するものではなく、ＩＣカード２００の用途に適した仕様のＩＣチップ３１０を選択することができる。例えばＲＯＭ３１２およびＥＥＰＲＯＭ３１３の容量については限定しないし、書換え可能なメモリは強誘電体メモリまたはフラッシュメモリ等のＥＥＰＲＯＭ以外のメモリであっても構わない。またＩＣチップ３１０はタイマー回路、コプロセッサ回路等の図示していない他のデバイスを備えていても構わない。
【００２２】
マルチアプリケーションＯＳ３２０は、アプリケーション３３０をＥＥＰＲＯＭ３１３に書込む機能、ＥＥＰＲＯＭ３１３に搭載したアプリケーション３３０の削除機能、ならびにＩ／Ｏ回路３１７を制御しリーダライタ１４０とデータ通信する機能等のＩＣカード２００が動作するために必要な基本機能を備えたプログラムで、ＲＯＭ３１２に実装される。
【００２３】
アプリケーション３３０はある用途ために設計されたプログラムであり、マルチアプリケーションＯＳ３２０が対応している中間言語で記述された一つのデータのかたまり（以下、アプリケーションデータと記す）である。ＩＣチップ３１０が具備するＥＥＰＲＯＭ３１３には、利用者が必要とする一つまたは複数のアプリケーションデータが書き込まれる。アプリケーションデータの容量は、アプリケーション３３０の種類によって異なるが数キロバイトから数十キロバイトになる。
【００２４】
＜アプリケーション発行手順の詳細な説明＞
ここから、ＩＣカード２００が具備するＥＥＰＲＯＭ３１３にアプリケーションデータを書き込む処理、すなわちアプリケーション３３０の発行処理の詳細な手順について、本発明を適用した実施の形態を図を参照しながら詳細に説明する。なお上述した通り、アプリケーションデータをＥＥＰＲＯＭ３１３に書き込む機能は、マルチアプリケーションＯＳ３２０の機能である。
【００２５】
図４は、本実施の形態におけるＩＣカード発行手順の概要を説明するための図である。図４（ａ）はＩＣカード発行前の状態を説明するための図である。発行システム１００の記憶装置１１０には少なくとも一つのアプリケーションデータ４００が記憶され、ＩＣカード２００のＥＥＰＲＯＭ３１３領域にはアプリケーションデータ４００を書き込むためのアプリケーション領域５００が設定される。前述した通り、アプリケーションデータ４００のデータサイズは数キロバイトから数十キロバイトになるため、ＩＣカード２００は一度にアプリケーションデータすべてを受信できず、発行システム１００は記憶装置１１０に記憶しているアプリケーションデータ４００をアプリケーションデータ４００のサイズよりも小さいサイズのデータブロック４１０に分割してＩＣカード２００に送信する。図４（ａ）においては説明を分かり易くするために、アプリケーションデータ４００をデータブロック１からデータブロック４までの４つのデータブロック４１０に分割している。
【００２６】
本発明を適用していないＩＣカード発行方法においては、データブロック４１０をデータブロック１からデータブロック４までを順通りにＩＣカード２００に送信し、ＩＣカード２００は受信したデータブロック４１０をＥＥＰＲＯＭ３１３領域の先頭から書込む。この際、特許文献１で開示されている発明に記載されているように、発行システム１００から送信されるデータブロック４１０は暗号化されたデータである場合もある。
【００２７】
これに対して本発明を適用したＩＣカード発行方法は、図４（ａ）から図４（ｅ）に示したように、ＩＣカード２００へ送信するデータブロック４１０の送信順序は不規則である。図４（ａ）に記載しているように、ＩＣカード発行開始時には発行システム１００からＩＣカード２００にアプリケーション発行情報が送信され、ＩＣカード２００はＩＣカード２００内部でデータブロック４１０の送信順序を示す送信順序データを前記アプリケーション発行情報に基き演算し、演算した送信順序データをＲＡＭ３１４に記憶すると共に発行システム１００へ送信する。図４（ａ）においては、前記送信順序はデータブロック４、データブロック３、データブロック１そしてデータブロック２の順で、前記送信順序データは〔０４、０３、０１、０２〕である。発行システム１００は記憶装置１１０に記憶しているデータブロック４１０を受信した送信順序データに従いＩＣカード２００に送信する。図４（ｂ）に図示したように、発行システム１００からＩＣカード３００に最初に送信するデータブロックはデータブロック４で、ＩＣカード２００はデータブロック４をＲＡＭ３１４に記憶している送信順序データに従いアプリケーション領域５００内の所定に位置に書き込み、発行システム１００から次のデータブロック３を受信する。
【００２８】
図４（ｂ）から図４（ｅ）にそれぞれ図示したように、本実施の形態においては、発行システム１００からＩＣカード２００に送信されるデータブロックの送信順序は、先頭のデータブロック１から順番通りに送信する送信順序ではなく、図４（ａ）に記載しているようにＩＣカード２００で演算された送信順序であり、発行システム１００はＩＣカード２００から送信された送信順序データに従いデータブロック４、データブロック３、データブロック１そしてデータブロック２の順に送信する。
【００２９】
ここから、本発明を適用したＩＣカード発行方法のより詳細な手順について、図を参照しながら説明する。図５はＩＣカード発行方法の手順を示した流れ図である。
【００３０】
最初のステップは、発行システム１００がデータブロックの大きさすなわちデータブロックサイズを決定するステップである（ステップＳ１００）。前記データブロックサイズは、リーダライタ１４０に記憶されているＩＣカード２００が一度に受信できる最大受信データ長と、リーダライタ１４０が一度にＩＣカード２００へ送信できる最大送信データ長を比較し、どちらか小さいデータ長を選択する。例えば、ＩＣカード２００が受信できる最大データ長が１２８バイトであり、リーダライタ１４０がＩＣカード２００に送信できる最大データ長が２５６バイトであるならば、データブロックサイズは１２８バイトに決定される。データブロックサイズの決定方法は、発行システム１００とＩＣカード２００の間でデータブロックのデータ通信が正常にできれば、上述の方法ではなくてもよい。データブロックサイズを決定した後、次のステップへ進む。
【００３１】
次のステップは、アプリケーションデータサイズとデータブロックサイズから、発行システム１００がＩＣカード２００へ送信するデータブロックの数（以下、データブロック数と記す）を計算するステップ（ステップＳ１１０）である。データブロック数は、アプリケーションデータサイズをデータブロックサイズで割り算し、余りが生じない場合は商がデータブロック数となり、余りが発生する場合は商に１を加算した値がデータブロック数となる。
【００３２】
次のステップは、発行システム１００が、アプリケーションデータサイズ、データブロックサイズおよびデータブロック数をＩＣカード２００に送信するステップ（ステップＳ１２０）である。ＩＣカード発行開始時に発行システム１００からＩＣカード２００へ送信されるアプリケーション発行開始コマンドにはアプリケーション発行情報が含まれ、前記アプリケーション発行情報には前記３つのデータが少なくとも含まれている。発行システム１００が、前記３つのデータを送信した後、次のステップへ進む。
【００３３】
次のステップは、ＩＣカード２００が前記アプリケーション発行開始コマンドを受信し、前記コマンドのアプリケーション発行情報からアプリケーションサイズ、データブロックサイズおよびデータブロック数を取得し、ＲＡＭ３１４にそれぞれ記憶するステップ（ステップＳ１２１）である。前記３つのデータを取得した後、次のステップへ進む。
【００３４】
次のステップは、ＩＣカード２００が取得したアプリケーションデータサイズと同じサイズのアプリケーション領域をＥＥＰＲＯＭ３１３に設定するステップ（ステップＳ１３０）である。前記アプリケーション領域は、発行システム１００から送信されるデータブロックを書込む領域で、前記アプリケーション領域の先頭アドレスはＥＥＰＲＯＭ３１３のマルチアプリケーションＯＳ３２０が使用できる領域に記録される。ＩＣカード２００は、前記アプリケーションサイズと同じサイズのアプリケーション領域をＥＥＰＲＯＭ３１３に設定できない場合は、発行システム１００に発行不可能であるメッセージを送信し、ＩＣカード発行処理を中止する。ＥＥＰＲＯＭ３１３に前記アプリケーション領域が設定できた場合は、次のステップへ進む。
【００３５】
次のステップは、ＩＣカード２００は受信したデータブロック数からデータブロックの送信順序を示すデータブロックテーブルを生成するステップ（ステップＳ１４０）である。前記データブロックテーブルとは、発行システム１００が送信するデータブロックの送信順序を定めるデータで、詳しくはデータブロック番号が不規則に並べられた順列である。前記データブロック番号とは、アプリケーションデータを複数のデータブロックサイズに分割する際、先頭のデータブロックから順に最終データブロックまでをそれぞれ区別するための番号である。例えば、データブロック番号が３のデータブロックとは、アプリケーションデータの先頭から３番目のデータブロックを意味する。ＩＣカード２００は、ＲＡＭ３１４に記憶されたデータブロック数に基いて、１から前記データブロック数までのデータブロック番号を並び順が不規則になるように演算処理を実行し、演算した不規則なデータブロック番号の順列をＲＡＭ３１４内に展開することで、前記データブロックテーブルを生成する。前記データブロックテーブルの生成手順の一例については、後に記述する。データブロックテーブル生成後、受信したデータブロックの数を示す受信ブロックレジスタもＲＡＭ３１４領域に設け、次のステップへ進む。なお前記受信ブロックレジスタの初期値は００ｈ（ｈは１６進表記を表す）である。
【００３６】
次のステップは、ＩＣカード２００が生成した前記データブロックテーブルを発行システム１００に送信するステップ（ステップＳ１５０）である。前記データブロックテーブルは、前記アプリケーション発行開始コマンドのレスポンスとして、ＩＣカード２００から発行システム１００に送信される。
【００３７】
次のステップは、発行システム１００がＩＣカード２００から送信された前記データブロックテーブルを受信するステップ（ステップＳ１５１）である。発行システム１００は前記データブロックを受信すると、受信したデータブロックテーブルを記憶装置１１０に記憶し、次のステップへ進む。
【００３８】
次のステップは、発行システム１００が、記憶したデータブロックテーブルに記録されている不規則なデータブロック番号の順列に従い、一つのデータブロックをＩＣカード２００へ送信するステップ（ステップＳ１６０）である。例えば、図４においては前記データブロックテーブルに記録されているデータブロック番号の順列は〔０４ｈ、０３ｈ、０１ｈ、０２ｈ〕であり、発行システム１００はアプリケーションデータの先頭から４番目のデータブロックのみを最初にＩＣカード２００に送信する。
【００３９】
次のステップは、ＩＣカード２００が、発行システム１００から送信されたデータブロックを受信するステップ（ステップＳ１６１）である。ＩＣカード２００は、発行システム１００からデータブロックを受信すると、データブロックテーブルから受信したデータブロックに対応するデータブロック番号を取得する。この動作は、データブロックテーブルの記憶開始アドレスに受信ブロックレジスタの値を加算したアドレスに記録されているデータブロック番号を取得することで実現できる。データブロック番号取得後、次のステップへ進む。
【００４０】
次のステップでは、取得したデータブロック番号に基きアプリケーション領域の所定のアドレスに受信したデータブロックを書き込むステップ（ステップＳ１７０）である。例えば、図４において、最初に受信するデータブロックのデータブロック番号は０４であり、最初のデータブロックを受信すると、アプリケーション領域の先頭から４番目のデータブロックの位置に受信したデータブロックを書込む。データブロック番号からデータブロック番号を書込む開始アドレスを計算する式は（１）式で計算できる。
アプリケーションデータの記憶開始アドレス＋（データブロック番号−１）×データブロックサイズ  ・・・・・・・（１）
受信したデータブロックを書込み終了した後は、受信ブロックレジスタを＋１加算し、次のステップへ進む。
【００４１】
次のステップでは、受信したデータブロックが発行システム１００から最後に送信される最終のデータブロックであるか確認するステップ（ステップＳ１８０）である。確認作業は、ＲＡＭ３１４に記憶されている受信ブロックレジスタの値とデータブロック数とを比較することで行ない、値が一致していれば受信したデータブロックは最終のデータブロックと判断し、最終のデータブロックを書込み終了であるメッセージを発行システムに送信した後、発行処理を終了し（ステップＳ１９０）、一致しなければ受信したデータブロックの書込み終了を示すメッセージを発行システム１００に送信し、ステップＳ１６０に戻り次のデータブロックを受信する。
【００４２】
前述のステップＳ１６０以降の手順を繰り返すことで、発行システム１００はＩＣカード２００にすべてのアプリケーションデータを送信し、ＩＣカード２００はデータブロックを受信する毎にアプリケーション領域に書き込むことで、アプリケーションデータすべてをアプリケーション領域に書き込むことができる。例えば図４においては、４番目のデータブロックを送信後、ＩＣカード２００からデータブロックの書込み終了を示すメッセージを受信すると、発行システム１００は、ステップＳ１６０以降の手順で先頭から３番目のデータブロック、先頭から１番目のデータブロックそして最後に先頭から２番目のデータブロックを順にＩＣカード２００へ送信する。
【００４３】
ここで、データブロックテーブルの生成方法の一例について説明する。説明を分かり易くするために、データブロック数は４つにしている。図６はデータブロックテーブルの生成手順の流れ図、図７はデータブロックテーブル内のデータブロック番号を説明するための図である。
【００４４】
最初のステップでは、１からデータブロック数までのデータブロック番号を連番でＲＡＭ３１４に展開する（ステップＳ２００）。データブロックテーブルの記憶開始アドレス（以下、アドレスＳＴＡＲＴ＿ＡＤＤと記す）は、ＣＰＵ３１０に備わったレジスタに記憶される。
【００４５】
次のステップでは、乱数生成器３１５を利用してＩＣカード２００は１バイトの乱数を生成する（ステップＳ２１０）。次にＣＰＵ３１１に備わっている演算機能にて生成した乱数をデータブロック数で割り算し、余りＧを計算する（ステップＳ２２０）。余りＧを計算した後、ＣＰＵ３１１はレジスタに記憶されているＳＴＡＲＴ＿ＡＤＤに余りＧを加算したアドレスＳＴＡＲＴ＿ＡＤＤ＋Ｇを演算し、ＣＰＵ３１１は、アドレスＳＴＡＲＴ＿ＡＤＤに記録されているデータブロック番号と、アドレスＳＴＡＲＴ＿ＡＤＤ＋Ｇに記録されているデータブロック番号を入れ替える処理を行う（ステップＳ２３０）。次のステップでは、ＣＰＵ３１１は、データ入れ替え処理をデータブロック数回実行したか確認する（ステップＳ２４０）。データの入れ替え処理をデータブロック数回実行した場合はデータブロックテーブルを生成する処理を終了し（ステップＳ２５０）、実行していない場合はステップＳ２１０に戻る。
【００４６】
図７は、データブロック数が４つの場合に、上述の手順で入れ替え動作を４回行なったときの、データブロックテーブルに記憶されているデータブロック番号を示した図である。図７（ａ）は入れ替え動作を行なう前のデータブロックテーブル図でる。図７（ｂ）から図７（ｅ）は、それぞれ１回目の入れ替え動作を実行した後のデータブロックテーブル図、２回目の入れ替え動作を実行した後のデータブロックテーブル図、３回目の入れ替え動作を実行した後のデータブロックテーブル図そして４回目の入れ替え動作を実行した後のデータブロックテーブル図である。
【００４７】
図７（ａ）に図示した通り、入れ替え動作を実行する前のデータテーブル６００には、ＲＡＭ３１４領域のアドレスＳＴＡＲＴ＿ＡＤＤを始点として、１から４までのデータブロック番号が連番で展開されている。図７（ｂ）は、１回目のデータ入れ替え処理を行なった後のデータテーブルブロック６００に記録されているデータブロック番号を示した図である。１回目に計算された余りＧは０２ｈであり、アドレスＳＴＡＲＴ＿ＡＤＤに記録されているデータブロック番号すなわち「１」とアドレスＳＴＡＲＴ＿ＡＤＤ＋０２ｈに記録されているデータブロック番号すなわち「３」を入れ替えている。図７（ｅ）は前述の入れ替え動作を４回実行した後のデータブロックテーブル６００である。なお図７（ｃ）と図７（ｄ）においては、余りＧが００ｈであるため、アドレスＳＴＡＲＴ＿ＡＤＤに記録されているデータブロック番号の入れ替え先がアドレスＳＴＡＲＴ＿ＡＤＤ＋００ｈになるので、図７（ｃ）に記載のデータブロック６００と図７（ｄ）とに記載のデータブロックテーブル６００に記録されているデータブロック番号の順列は変更されていない。
【００４８】
また上述の演算手順にて生成する乱数を１バイトにしているのは、通常データブロック数は２５５個（ＦＦｈ）以下であるからである。発行システム１００から受信したデータブロック数が１バイトの値を超える場合、すなわち２５５個以上になる場合は、データブロック数に応じて生成する乱数を１バイトより大きくすればよい。
【００４９】
＜ＩＣカードに実装するプログラムの動作手順の説明＞
次にＩＣカード２００に実装するプログラムの動作手順について、図を参照しながら説明する。図８は前記プログラムの動作手順の流れ図である。
【００５０】
まず最初にＩＣカード２００は、発行システム１００からアプリケーション発行開始コマンドを受信する（ステップＳ３００）。前記コマンドを受信すると、前記コマンドに含まれるアプリケーションデータサイズと同じサイズのアプリケーション領域をＥＥＰＲＯＭ３１３に設定する（ステップＳ３１０）。次に同じく前記コマンドに含まれるデータブロック数と同じ個数のデータブロック番号を不規則な並べた順列であるデータブロックテーブルと受信ブロックレジスタをＲＡＭ３１４に生成する（ステップＳ３２０）。次に生成したデータブロックテーブルを発行システム１００に前記コマンドのレスポンスデータとして送信する（ステップＳ３３０）。データブロックテーブルを送信後、ＩＣカード２００は発行システム１００からデータブロックを受信する（ステップＳ３４０）。データブロックを受信すると、データブロックテーブルから受信したデータブロックに対応するデータブロック番号を取得し（ステップＳ３５０）、取得したデータブロック番号から受信したデータブロックを書込み開始するＥＥＰＲＯＭ３１３のアドレスを算出する（ステップＳ３６０）。次に算出したＥＥＰＲＯＭ３１３のアドレスから受信したデータブロックを書込み、ＲＡＭ３１４に記憶している受信ブロックレジスタの値に＋１を加算する（ステップＳ３７０）。データブロックを書込んだ後、受信ブロックレジスタの値とデータブロック数を比較する（ステップ３８０）。それぞれの値が一致していればＩＣカード発行処理を終了し（ステップＳ３９０）、一致していない場合はステップＳ３４０に戻り、次のデータブロックを受信する。
【００５１】
＜発行システムから送信されるデータが暗号化されている場合について＞
これまで、発行システム１００から送信されるデータブロックは暗号化されていない場合の実施の形態について説明をした。データブロックが暗号化されている場合の実施の形態について説明する。
【００５２】
発行システム１００とＩＣカード２００間で伝送されるデータを暗号化する場合は、発行システム１００の暗号装置１３０とＩＣカード２００内部にはＤＥＳの暗号鍵が機密に記憶される。データを暗号化する際の発行手順は、前述の発行手順に加え、前記暗号鍵を用いた暗号化・復号化のステップが加わる。つまり、発行システム１００はデータブロック等のデータをＩＣカード２００に送信する際、暗号装置１３０にてＡＰＤＵに含まれるデータブロック等のデータを暗号化する。ＩＣカード２００は発行システム１００から前記ＡＰＤＵを受信すると、ＩＣカード２００内部の暗号回路にて受信したＡＰＤＵに含まれる暗号化されたデータを複合化する。具体的には発行手順については、以下に記述する発行システム１００とＩＣカード２００間で伝送されるデータが暗号化されている場合に、ＩＣカード２００に実装するプログラムの動作手順より明らかになる。図９は、発行システム１００とＩＣカード２００間で伝送されるデータを暗号化する場合に、ＩＣカード２００に実装されるプログラム動作の流れ図である。
【００５３】
まず最初にＩＣカード２００は、発行システム１００から、アプリケーション発行開始コマンドを受信する（ステップＳ４００）。前記コマンドを受信すると、前記コマンドに含まれる暗号化されたアプリケーション発行情報を復号化する（ステップＳ４０１）。前記発行情報に含まれるアプリケーションデータサイズと同じサイズのアプリケーション領域をＥＥＰＲＯＭ３１３に設定する（ステップＳ４１０）。次に同じく前記発行情報に含まれるデータブロック数と同じ個数のデータブロック番号を不規則な並べた順列であるデータブロックテーブルと受信ブロックレジスタとをＲＡＭ３１４に生成する（ステップＳ４２０）。次にＩＣカード２００は生成したデータブロックテーブルを暗号回路３１６を用いて暗号化する（ステップＳ４２１）。データブロックテーブルを暗号化した後、ＩＣカード２００は、前記暗号化したデータブロックテーブルを発行システム１００に前記コマンドのレスポンスデータとして送信する（ステップＳ４３０）。暗号化したデータブロックテーブルを送信後、ＩＣカード２００は発行システム１００から暗号化されたデータブロックを受信する（ステップＳ４４０）し、暗号化されたデータブロックを暗号回路３１６を用いて復号化（ステップＳ４４１）する。データブロックテーブルから受信したデータブロックに対応するデータブロック番号を取得した後（ステップＳ４５０）、データブロック番号から受信したデータブロックを書込み開始するＥＥＰＲＯＭ３１３のアドレスを算出する（ステップＳ４６０）。次に算出したＥＥＰＲＯＭ３１３のアドレスに受信したデータブロックを書込み、ＲＡＭ３１４に記憶している前記受信ブロックレジスタの値に＋１を加算する（ステップＳ４７０）。データブロックを書込んだ後、受信ブロックレジスタの値とデータブロック数を比較する（ステップ４８０）。それぞれの値が一致していればＩＣカード発行処理を終了し（ステップＳ４９０）、一致していない場合はステップＳ４４０に戻り、次のデータブロックを受信する。
【００５４】
なお、本発明は何らデータを暗号化する暗号アルゴリズムを限定するものではない。発行システム１００が具備する暗号装置およびＩＣカード２００が具備する暗号演算回路３１６にＤＥＳ暗号アルゴリズム以外の暗号演算機能（例えばＲＳＡ暗号演算機能）を持たせれば、ＤＥＳ暗号アルゴリズム以外の暗号アルゴリズムを利用できる。
【産業上の利用可能性】
【００５５】
本発明はデータ量の多いデータを分割してホストコンピュータから端末に送信する技術に関する発明であり、インターネットのパケット通信等の通信にも適用できる可能性がある。
【図面の簡単な説明】
【００５６】
【図１】発行システム１００の概略図。
【図２】マルチアプリケーションＩＣカードの階層モデル図。
【図３】ＩＣチップの構造図。
【図４】ＩＣカード発行処理の概要説明図。
【図５】ＩＣカード発行処理の動作流れを示した図。
【図６】データブロックテーブルの演算流れを示した図。
【図７】データブロックテーブルの演算説明図。
【図８】ＩＣカード用プログラムの動作流れを示した図。
【図９】データ暗号化時のＩＣカード用プログラムの動作流れを示した図。
【符号の説明】
【００５７】
１００    発行システム１００
１１０    発行システム１００が具備する記憶装置
１２０    発行システム１００が具備するＡＰＵＤ生成装置
１３０    発行システム１００が具備する暗号装置
１４０    発行システム１００が具備するリーダライタ
２００    ＩＣカード
３００    マルチアプリケーション型ＩＣカードの階層モデル
３１０    ＩＣチップ
３１１    ＩＣチップが具備するＣＰＵ
３１２    ＩＣチップが具備するＲＯＭ
３１３    ＩＣチップが具備するＥＥＰＲＯＭ
３１４    ＩＣチップが具備するＲＡＭ
３１５    ＩＣチップが具備する乱数生成器Ｉ／Ｏ回路
３１６    ＩＣチップが具備する暗号演算回路
３１７    ＩＣチップが具備するＩ／Ｏ回路
３２０    マルチアプリケーションＯＳ
３３０    アプリケーション
４００    アプリケーションデータ
４１０    データブロック
５００    アプリケーション領域
６００    データブロックテーブル
【図１】
2005228181.tif 000003
【図２】
2005228181.tif 000004
【図３】
2005228181.tif 000005
【図４】
2005228181.tif 000006
【図５】
2005228181.tif 000007
【図６】
2005228181.tif 000008
【図７】
2005228181.tif 000009
【図８】
2005228181.tif 000010
【図９】
2005228181.tif 000011