(57)【要約】【課題】発行後状態のＩＣカードへの書き込みが不可能な機能を備えた、ＩＣカード及びプログラム書き込み方法を提供することを目的とする。【解決手段】制御部４がデータメモリ部２内のデータ値に基づいてＩＣカードの発行後状態または発行前状態を判定し、発行前状態である場合にのみ制御部４がデータメモリ部２へプログラムを書き込む。【選択図】  図１
2004310681.tif 000002
【特許請求の範囲】
【請求項１】
書換え可能なメモリと当該メモリへ書き込みを制御する制御部とを備えたＩＣカードであって、
前記制御部が、前記メモリ内のデータ値に基づいて前記ＩＣカードが発行前状態であるか発行後状態であるかを判定し、
前記制御部が、前記発行前状態である場合にのみ前記メモリへプログラムを書き込む
ことを特徴とするＩＣカード。
【請求項２】
前記書換え可能なメモリが前記プログラムを書き込むプログラム領域と、前記発行後状態に移行した後にデータが書き込まれるデータ領域と、前記メモリを管理する情報が書き込まれるシステム領域とを有し、
前記制御部が、前記システム領域のデータ値から所定の演算過程により算出できるチェックデータに基づいて前記発行前状態または前記発行後状態を判定する
ことを特徴とする請求項１に記載のＩＣカード。
【請求項３】
前記制御部が、前記メモリへのプログラムの書き込み時に、当該プログラムの書き込みを指示するプログラム書き込み装置から認証情報を受付けて、その認証情報に基づいて当該書き込みの認証を行ない、前記認証が成功した場合にのみ前記メモリへ前記プログラムを書き込む
ことを特徴とする請求項１に記載のＩＣカード。
【請求項４】
前記書き込んだプログラムの起動可能または不可能のいずれかを表す起動可否情報を前記システム領域に記憶することを特徴とする請求項２に記載のＩＣカード。
【請求項５】
前記書き込んだプログラムを起動する起動アドレスの位置を表す起動アドレス情報を前記システム領域に記憶することを特徴とする請求項２に記載のＩＣカード。
【請求項６】
前記データ領域へ書き込まれるデータのデータ書き込み完了状態またはデータ書き込み未完了状態のいずれかを表すデータ書き込み状態識別情報を前記システム領域に記憶し、
前記制御部が、前記プログラムの起動時に前記データ書き込み状態識別情報と前記起動可否情報とを確認し、
前記制御部が、前記データ書き込み状態識別情報がデータ書き込み完了状態を示しておりかつ、前記起動可否情報が起動可能であることを示している場合にのみ前記起動アドレスより前記プログラムを起動する
ことを特徴とする請求項５に記載のＩＣカード。
【請求項７】
前記制御部が、データ書き込み完了コマンドの受信に基づいて、前記データ書き込み状態識別情報の示す前記データ書き込み未完了状態を前記データ書き込み完了状態へと書き換えることを特徴とする請求項６に記載のＩＣカード。
【請求項８】
予め前記起動アドレスに格納されるべきデータが規定されており、
前記制御部が、前記プログラムを実行する際に前記起動アドレスに記載されているデータが前記予め規定されている起動アドレスに格納されるべきデータと同一であるか否かを確認し、
前記制御部が、前記起動アドレスに格納されているデータが前記予め規定されている起動アドレスに格納されるべきデータと同一である場合にのみ前記起動アドレスまたは前記起動アドレスの後ろのアドレスのいずれかより前記プログラムを起動する
ことを特徴とする請求項６に記載のＩＣカード。
【請求項９】
書換え可能なメモリと当該メモリへ書き込みを制御する制御部とを備えたＩＣカードにおける前記メモリへのプログラム書き込み方法であって、
前記制御部が、前記メモリ内のデータ値に基づいて前記ＩＣカードが発行前状態であるか発行後状態であるかを判定し、
前記制御部が、前記発行前状態である場合にのみ前記メモリへプログラムを書き込む
ことを特徴とするプログラム書き込み方法。
【請求項１０】
前記書換え可能なメモリが前記プログラムを書き込むプログラム領域と、前記発行後状態に移行した後にデータが書き込まれるデータ領域と、前記メモリを管理する情報が書き込まれるシステム領域との領域をを有する前記ＩＣカードにおけるプログラム書き込み方法であって、
前記制御部が、前記システム領域のデータ値から所定の演算過程により算出できるチェックデータに基づいて前記発行前状態または前記発行後状態を判定する
ことを特徴とする請求項９に記載のプログラム書き込み方法。
【請求項１１】
前記制御部が、前記メモリへのプログラムの書き込み時に、当該プログラムの書き込みを指示するプログラム書き込み装置から認証情報を受付けて、その認証情報に基づいて当該書き込みの認証を行ない、前記認証が成功した場合にのみ前記メモリへ前記プログラムを書き込む
ことを特徴とする請求項１０に記載のプログラム書き込み方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ＩＣカードの技術に係り、特にＩＣカード発行時のＩＣカードへのプログラム書き込み方法に関するものである。
【０００２】
【従来の技術】
従来のＩＣカードは、書き込み可能なメモリ部に追加のプログラムを書き込むことにより、書き込み不可能なメモリ部に予め記録されているプログラムの処理の追加処理や修正処理または、追加のアプリケーションの処理を組み込むことができる。そしてこの追加のプログラムの書き込み可能なメモリ部への書き込みを、書き込み回数や、書き込みの指示をするユーザ（権限者）の認証などを用いて制限している。そして、従来のＩＣカードでは書き込み可能なメモリ部に上述の追加のプログラムだけでなく、ＩＣカードを利用するカード利用者の個人情報やＩＣカード内の処理に利用する情報なども記憶している。尚、書き込み可能なメモリ部に記録されている各種情報は、当該書き込み可能なメモリ部がフォーマットされた後に、そのフォーマットにより分割されたメモリ部内の特定の領域にそれぞれ書き込まれる（例えば、特許文献１参照。）。ここで、書き込み可能なメモリ部がフォーマットされた状態のＩＣカードを発行後状態のＩＣカードと呼び、書き込み可能なメモリ部がフォーマットされていない状態のＩＣカードを発行前状態のＩＣカードと呼ぶ。尚、ＩＣカードはフォーマットされた後に、例えば、ＩＣカードをクレジットカードとして配布するクレジットカード会社などへ発行される。そして、クレジットカード会社がクレジットカード利用者の個人情報やクレジットカード番号などの情報をＩＣカードへ書き込む。
【０００３】
【特許文献１】
特公平４−１７４７７号公報
【０００４】
【発明が解決しようとする課題】
しかしながら、上述のＩＣカードは、書き込み可能なメモリ部がフォーマットされた後（発行後状態）でも、上述の回数の制限や認証による制限に基づいて追加や修正のためのプログラムを当該書き込み可能なメモリ部へ再書き込みすることができてしまう。これにより、不正なプログラムも書き込み可能となるので、発行後のプログラムの書き込みを許可してしまうことはセキュリティ上好ましくない。
そこでこの発明は、発行後状態のＩＣカードへのプログラムの書き込みを不可能とする機能を備えた、ＩＣカード及びプログラム書き込み方法を提供することを目的としている。
【０００５】
【課題を解決するための手段】
本発明は、上述の課題を解決すべくなされたもので、書換え可能なメモリと当該メモリへ書き込みを制御する制御部とを備えたＩＣカードであって、前記制御部が、前記メモリ内のデータ値に基づいて前記ＩＣカードが発行前状態であるか発行後状態であるかを判定し、前記制御部が、前記発行前状態である場合にのみ前記メモリへプログラムを書き込むことを特徴とするＩＣカードである。
【０００６】
上述の構成によれば、本発明は、制御部がメモリ内のデータ値に基づいてＩＣカードが発行前状態であるか発行後状態であるかを判定し、発行前状態である場合にのみメモリへプログラムを書き込む。これにより、発行後状態となったＩＣカードへの不正なプログラムの書き込みを制限することができる。
【０００７】
また本発明は、上述のＩＣカードにおいて、前記書換え可能なメモリが前記プログラムを書き込むプログラム領域と、前記発行後状態に移行した後にデータが書き込まれるデータ領域と、前記メモリを管理する情報が書き込まれるシステム領域とを有し、前記制御部が、前記システム領域のデータ値から所定の演算過程により算出できるチェックデータに基づいて前記発行前状態または前記発行後状態を判定することを特徴とする。
【０００８】
また本発明は、上述のＩＣカードにおいて、前記制御部が、前記メモリへのプログラムの書き込み時に、当該プログラムの書き込みを指示するプログラム書き込み装置から認証情報を受付けて、その認証情報に基づいて当該書き込みの認証を行ない、前記認証が成功した場合にのみ前記メモリへ前記プログラムを書き込むことを特徴とする。
【０００９】
また本発明は、上述のＩＣカードにおいて、前記書き込んだプログラムの起動可能または不可能のいずれかを表す起動可否情報を前記システム領域に記憶することを特徴とする。
【００１０】
また本発明は、上述のＩＣカードにおいて、前記書き込んだプログラムを起動する起動アドレスの位置を表す起動アドレス情報を前記システム領域に記憶することを特徴とする。
【００１１】
また本発明は、上述のＩＣカードにおいて、前記データ領域へ書き込まれるデータのデータ書き込み完了状態またはデータ書き込み未完了状態のいずれかを表すデータ書き込み状態識別情報を前記システム領域に記憶し、前記制御部が、前記プログラムの起動時に前記データ書き込み状態識別情報と前記起動可否情報とを確認し、前記制御部が、前記データ書き込み状態識別情報がデータ書き込み完了状態を示しておりかつ、前記起動可否情報が起動可能であることを示している場合にのみ前記起動アドレスより前記プログラムを起動することを特徴とする。
【００１２】
また本発明は、上述のＩＣカードにおいて、前記制御部が、データ書き込み完了コマンドの受信に基づいて、前記データ書き込み状態識別情報の示す前記データ書き込み未完了状態を前記データ書き込み完了状態へと書き換えることを特徴とする。
【００１３】
また本発明は、上述のＩＣカードにおいて、予め前記起動アドレスに格納されるべきデータが規定されており、前記制御部が、前記プログラムを実行する際に前記起動アドレスに記載されているデータが前記予め規定されている起動アドレスに格納されるべきデータと同一であるか否かを確認し、前記制御部が、前記起動アドレスに格納されているデータが前記予め規定されている起動アドレスに格納されるべきデータと同一である場合にのみ前記起動アドレスまたは前記起動アドレスの後ろのアドレスのいずれかより前記プログラムを起動することを特徴とする。
【００１４】
また本発明は、書換え可能なメモリと当該メモリへ書き込みを制御する制御部とを備えたＩＣカードにおける前記メモリへのプログラム書き込み方法であって、前記制御部が、前記メモリ内のデータ値に基づいて前記ＩＣカードが発行前状態であるか発行後状態であるかを判定し、前記制御部が、前記発行前状態である場合にのみ前記メモリへプログラムを書き込むことを特徴とするプログラム書き込み方法である。
【００１５】
また本発明は、前記書換え可能なメモリが前記プログラムを書き込むプログラム領域と、前記発行後状態の時に情報が書き込まれるデータ領域と、前記発行前状態の時に情報が書き込まれるシステム領域との領域を有する前記ＩＣカードにおける前記プログラム書き込み方法であって、前記制御部が、前記システム領域のデータ値から算出できるチェックデータと所定の値とに基づいて前記発行前状態または前記発行後状態を判定することを特徴とする。
【００１６】
また本発明は、前記プログラム書き込み方法において、前記制御部が、前記メモリへのプログラムの書き込み時に、当該プログラムの書き込みを指示するプログラム書き込み装置から認証情報を受付けて、その認証情報に基づいて当該書き込みの認証を行ない、前記認証が成功した場合にのみ前記メモリへ前記プログラムを書き込むことを特徴とする。
【００１７】
【発明の実施の形態】
以下、本発明の一実施形態によるＩＣカードを図面を参照して説明する。
図１は、この発明の一実施形態によるＩＣカードの構成を示す概略ブロック図である。この図において、符号１はＩＣカードである。また２は情報の書き込み及び書換えができるデータメモリ部である。データメモリ部２は例えばＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）などであり、記録された情報の消去と書き込みを繰り返し行うことができるメモリである。また３はＩＣカード１を制御するためのプログラムが予め記録されおり、他の情報の書き込みが不可能なプログラムメモリ部である。プログラムメモリ部３は例えばＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの読み出し専用メモリである。また４はＩＣカード１の処理を制御する制御部である。また５は外部装置と情報を送受信する送受信部である。尚、送受信部５における情報の送受信方法は、電気的に外部装置と接触した状態で情報を送受信する方法や、電波を用いることにより当該送受信部５に備えられたアンテナを介して情報を外部装置と送受信する方法などがあり、符号（ａ）のＩＣカードは送受信部５が接触式である場合を示しており、また（ｂ）のＩＣカードは送受信部５が非接触式である場合を示している。なお、外部装置との情報の送受信の方法は従来より公知である。またＩＣカード１は外部装置より電源の供給を受ける。そして当該電源は送受信部５が受け付けて制御部４へ送出する。
【００１８】
次に、データメモリ部２のメモリ領域について説明する。図２はデータメモリ部２のメモリ領域を分割した際の状態を示す図である。ここで、データメモリ部２はＩＣカード１が製造されてプログラムが書き込まれた後にメモリ領域が分割される。尚、メモリ領域は図２が示すように、プログラム領域とデータ領域とシステム領域とに分割される。そして、制御部４がこのプログラム領域とデータ領域とシステム領域とにデータメモリ部２のメモリ領域を分割する処理をフォーマット（論理フォーマット）という。
【００１９】
ここでプログラム領域とはプログラムメモリ部３に予め記録されているプログラムの修正のためのプログラムや追加のためのプログラムや、アプリケーションプログラムなどが新たに記録される領域である。またデータ領域とはＩＣカード１を使用する利用者の個人情報やＩＣカード１のカード番号などの各種情報が記録される領域である。この各種情報はＩＣカードが発行後状態の時にＩＣカードに書き込まれる。尚、データ領域には、例えばＩＣカードをクレジットカードとして配布するクレジット会社から配布された後に書き込まれる領域もある。
またシステム領域とはＩＣカードが発行前状態の際に、プログラム領域に記録されているプログラムを起動するために制御部４が参照する情報や、データメモリのメモリ領域を管理する情報などが記録される領域である。そして、図２に示すようにデータメモリ部２のメモリ領域は、アドレスＡＤ００からアドレスＡＤ０１の前までのアドレスをシステム領域、アドレスＡＤ０１からアドレスＡＤ０２の前までのアドレスをデータ領域、アドレスＡＤ０２以降のアドレスをプログラム領域としてフォーマットされている。尚、システム領域やデータ領域やプログラム領域のアドレスによる位置関係は上述の位置関係に限らず、入れ替わっても良い。
【００２０】
次に、システム領域に記録される情報について説明する。図３はシステム領域のデータ構成を示す図である。
システム領域において、システム領域ＩＤはシステム領域が始まることを示す情報である。またアクセス条件はデータ領域への情報の書き込みの許可または不許可の何れかを表す情報である。またデータエリアアドレスはデータ領域が始まる最初のアドレスを表す情報である。また起動データ（起動可否情報）はプログラム領域に記録されているプログラムを起動して良いか否かを表す情報である。また起動アドレス（起動アドレス情報）はプログラム領域が始まる最初のアドレスを表す情報である。またメモリ状態識別データ（データ書き込み状態識別情報）はＩＣカードの配布前にデータ領域へ書き込まれる各種情報の書き込みが完了したか否かを表す情報である。またチェックデータは、システム領域におけるチェックデータの記録領域以外の全データ値を所定の方法により演算して導き出した情報であり、このチェックデータの情報によりシステム領域に記録されている情報が正しいか否かをチェックを行なう。
【００２１】
次に、システム領域のメモリ状態識別データについて説明する。図４はメモリ状態識別データの構成を示す図である。メモリ状態識別データはシステム領域内の８ビットの情報である。そして、メモリ状態識別データの８ビットのアドレスをｂ１〜ｂ８で表すと、ｂ１＝０であるときはデータメモリ部２の各領域が分割されていない状態（未フォーマット状態）を示している。またｂ２＝１であるときはデータメモリ部２の各領域が分割されている状態（フォーマット状態）を示している。またｂ２＝０であるときはデータ領域への各種情報の書き込みが未完了であることを示している。またｂ２＝１であるときはデータ領域への各種情報の書き込みが完了したことを示している。
【００２２】
次に、データメモリ部２にプログラムや各種情報が書き込まれる際の処理について図５を用いて説明する。図５はデータメモリ部２の状態の遷移を示す図である。
まず、ＩＣカード１の製造が完了した直後のデータメモリ部２は初期データが記録されている（１）。尚、この初期データは例えば、データメモリ部２のメモリ領域のアドレス全てが１６進数の「ＦＦ」となるデータであったり、または、メモリ領域のアドレス全てが１６進数の「００」となるデータである。
【００２３】
次に、後述する処理によりＩＣカード１のデータメモリ部２へプログラムの書き込みが行なわれる。尚、ＩＣカード１へのプログラムの書き込みの指示は、プログラムの書き込みを行うプログラム書き込み装置が行なう。ここで、プログラム書き込み装置はプログラムの書き込みの処理を開始する前に、プログラム書き込み装置を操作するユーザの認証を行なう。そして、プログラム書き込み装置がデータメモリ部２へ書きこむプログラムの書き込みの処理を開始する。
【００２４】
プログラム書き込み装置はプログラムの書き込みの処理を開始すると、まず、プログラム書き込みコマンドをＩＣカード１に送信する。すると、当該プログラム書き込みコマンドをＩＣカード１の送受信部５が受信して制御部４に転送する。次に、制御部４がプログラムメモリ部３に記録されているプログラムに基づいてデータメモリ部２のシステム領域のチェックデータを後述する所定の演算により算出する。この時、ＩＣカード１はＩＣカード製造工場における製造後なので、データメモリ部２のメモリ領域が分割されてシステム領域が作成されていない。しかし、制御部４が処理に用いるプログラムメモリ部３内に記録されているプログラムには予めデータメモリ部２のメモリ領域に作成されるシステム領域のアドレスの範囲が記録されているので、これにより、制御部４は当該プログラムメモリ部３に記録されているプログラムに基づいて、作成されていないシステム領域のアドレスの範囲におけるチェックデータの演算することができる。
尚、チェックデータの演算は様々な方式があるが、本実施形態においては、例えば、システム領域内におけるチェックデータの記憶領域以外の全データの合計を算出し、その合計の下位８ビットを反転させた値をチェックデータとする。
【００２５】
今、制御部４がチェックデータを演算するにあたり、例えば、データメモリ部２にはメモリ領域内の全てのアドレスが１６進数の「ＦＦ」の値となる初期データが記録されているとする。この場合、システム領域内のアドレスも全て１６進数の「ＦＦ」の値となっている。そして、チェックデータ記憶領域が８ビットである場合には、チェックデータの記憶領域の値は「ＦＦ」となっている。そして当該チェックデータの演算は上述の演算方式により行なわれるが、システム領域におけるチェックデータの記憶領域以外の領域を、上述の演算方式によって「ＦＦ」の値が得られないようなアドレス範囲に設定しておく。例えばシステム領域が１２８バイトとしておけば、そのうちのチェックデータの領域が１バイト分であるとき、チェックデータを算出する為のアドレス範囲は１２７バイトである。このアドレス範囲１２７バイトが全て「ＦＦ」の初期データが記録されているので、「ＦＦ×１２７バイト＝ＦＦ×７Ｆ＝７Ｅ８１」となり、また「７Ｅ８１」の下位８ビットは「１００００００１」となるので、この値を反転しても１６進数の「ＦＦ」とはならない。このようにシステム領域の範囲を設定することにより、演算の結果がチェックデータの記憶領域の値「ＦＦ」と不一致となる。そしてチェックデータの演算結果がチェックデータの記憶領域の値「ＦＦ」と不一致である場合には発行前状態であると判定する処理を制御部４にさせることにより、制御部４はシステム領域が発行前状態であると判定できる。また、発行前状態である場合にはプログラム領域にプログラムが書き込めると判断する処理を制御部４に実行させる。そして制御部４は、ＩＣカード１が発行前状態であると判定した場合には、発行前状態である旨の情報を送受信部５に転送し、送受信部５がその情報をプログラム書き込み装置に送信する。
【００２６】
次に、ＩＣカード１が発行前状態である旨の情報を受け付けたプログラム書き込み装置はＩＣカード１のデータメモリ部２へ書きこむ為のプログラムを送信する。すると、ＩＣカード１の送受信部５がプログラムを受信して、制御部４に転送し、制御部４が転送を受けたプログラムを、プログラム書き込みコマンドで指定されたアドレス（プログラム領域）に書きこむ。尚、制御部４がプログラムをデータメモリ部２に書きこむ時点では、データメモリ部２のメモリ領域はフォーマットされていないが、プログラムメモリ部３に予め記録されているプログラムにプログラム領域のアドレスが記録されており、この情報に基づいて制御部４がプログラムを書きこむ。（２）はプログラムが書き込まれた状態を示す図である。ここで、制御部４はプログラムを正常に書き込んだ場合には、書き込みが正常に終了した旨の情報を書き込み装置に送信するよう送受信部５に指示し、ＩＣカード１が発行後状態であると判定した場合には、エラー情報を送信するよう送受信部５に指示する。
なお、プログラム書き込みコマンドは、プログラムとそのプログラムを書き込む先頭のアドレスをデータとして含んでいる。
【００２７】
次に、プログラムが書きこまれると、制御部４はフォーマットコマンドを実行して、データメモリ部２のメモリ領域をフォーマットし、プログラムが書きこまれた領域のプログラム領域と、システム領域と、データ領域とに分割する。尚、制御部４はデータメモリ部２のメモリ領域をフォーマットした後に、メモリ状態識別データのアドレスｂ１を０から１に変更する。また、制御部４はプログラムを書き込んだ後、プログラムを書き込んだ先頭のアドレスの情報をシステム領域の起動アドレスの領域に記録し、システム領域内起動データを起動可能を表す情報に変更する。そして、制御部４はシステム領域のチェックデータを記憶する領域以外の全データ値に基づいて演算を行いチェックデータを算出し、チェックデータの記憶領域に当該チェックデータを書きこむ。（３）はデータメモリ部２がフォーマットされた状態を示す図である。そして、データメモリ部２がフォーマットされた後、例えばＩＣカードをクレジットカードとして配布するクレジットカード会社などに発行される。
【００２８】
次にフォーマットが終了した発行後状態のＩＣカード１には、各種情報が記録される。この各種情報とは例えばクレジットカードであれば、クレジットカード番号や決済用口座番号やクレジットカード利用者の名前などの個人情報である。そして、これらの各種情報が書きこまれる前に、各種情報を書きこむ専用の情報書き込み装置がデータメモリ部２のデータ領域にファイルを生成するためのファイル生成コマンドをＩＣカード１へ送信する。すると送受信部５が当該ファイル生成コマンドを受信して制御部４に転送する。そして制御部４がファイル生成コマンドを実行し、データ領域を分割してファイルを作成する。（４）はデータ領域を分割してファイルを生成した状態を示す図である。
【００２９】
次に、制御部４がデータ書き込みコマンドを実行して、データ領域内の各ファイルに各種情報を書きこむ。（５）は各ファイルへ各種情報を書き込んだ状態を示す図である。そして、各種情報の書き込みが完了すると、情報書き込み装置が書き込み完了を示すデータ書き込み完了コマンド（データ書き込み完了情報）をＩＣカード１に送信する。そして、ＩＣカード１の送受信部５がデータ書き込み完了コマンドを受信する。そして制御部４がそのデータ書き込み完了コマンドの送受信部５から転送を受けて実行し、データメモリ部２のシステム領域におけるメモリ状態識別データのアドレスｂ２を０から１に変更する。これにより、ＩＣカード１への各種情報の書きこみが完了し、ＩＣカード１が、例えば、クレジットカードとして完成する。（６）は各種情報の書き込みが完了した状態を示す図である。そして、ＩＣカードがクレジットカードの利用者などに配布される。
【００３０】
次に、外部装置からの電源を供給された時のＩＣカード１の処理について説明する。図６はＩＣカード１が初期応答を出力する際の処理を示す図である。
まず、外部装置から電源の供給を受けるとプログラムメモリ部３で記憶するプログラムが起動する（ステップＳ１）。次に、制御部４はシステム領域のチェェックデータを演算し、システム領域におけるチェックデータの記憶領域に記録されている値と同一かどうかを確認して、当該チェックデータの記憶領域に記録されている値が正しいかどうかを確認する（ステップＳ２）そして、制御部４がシステム領域におけるメモリ状態識別データと起動データとを読み込み、メモリ状態識別データが各種情報の書き込み完了を表しているかどうかを確認する（ステップＳ３）。そしてメモリ状態識別データが各種情報の書き込み完了を表している場合には、制御部４はシステム領域に記録されている起動データを読み取る（ステップＳ４）。尚、起動データが「０１」を示す場合にはプログラム領域に記録されているプログラムの起動可能を表し、起動データが「００」を示す場合にはプログラム領域に記録されているプログラムの起動不可能を表している。そして制御部４はステップＳ４で読み取った起動データが「０１」であるか否かを確認する（ステップＳ５）。ステップＳ５において起動データが「０１」である場合には、制御部４はシステム領域に記録されている起動アドレスを読み取る（ステップＳ６）。
【００３１】
次に、制御部はステップＳ６で読み取った起動アドレスに格納されているデータをプログラム領域から読み取る（ステップＳ７）。次に制御部４はステップＳ７で読み取った起動アドレスに格納されているデータがプログラムメモリ部３に記録されているプログラム内で規定されているプログラム開始データであるか否かを確認する（ステップＳ８）。そしてステップＳ８においてプログラム開始データであると確認できた場合には、制御部４はデータメモリ部２のプログラムメモリ領域における起動アドレスよりプログラムを起動する（ステップＳ９）。尚、起動アドレスがステップＳ８においてプログラムメモリ部３に記録されているプログラム内で規定されているプログラム開始データであるか否かを確認する為だけのデータである場合には、当該起動アドレスの次のアドレスからプログラムを読み込むようにしても良い。例えば、制御部４がプログラムをプログラム領域に記録した際にプログラム領域の先頭アドレス（“ＡＤ０２”）からプログラムを記録した場合、制御部４は“ＡＤ０２”の情報をシステム領域の起動アドレスのデータとして記録することになる。そして、予めプログラムメモリ部３のプログラム内で規定されているプログラム開始データが“８０”である場合には、制御部４は“ＡＤ０２”のアドレスのデータが“８０”であるかどうかを確認し、同一である場合には、“ＡＤ０２”の後ろのアドレスからプログラムを起動する。
【００３２】
そして制御部４はステップＳ９で起動したメモリ領域に記録されているプログラムに基づいて初期応答データを送受信部５に転送し、送受信部５が初期応答データを外部装置に送信する（ステップＳ１０）。尚、ステップＳ８においてプログラム開始データであると確認できない場合には、プログラムメモリ部３に記録されているプログラムに基づいて初期応答データを出力する（ステップＳ１１）。またステップＳ３において演算結果のチェックデータがシステム領域におけるチェックデータの記憶領域に記録されている値と同一でない場合、またステップＳ５において起動データが「００」を示す場合にはプログラムメモリ部３に記録されているプログラムに基づいて初期応答データを出力する。尚初期応答データとはＩＣカード１が外部装置と情報を通信するための通信方式を示すデータである。そして、外部装置はＩＣカード１から受信した初期応答データに基づいて通信方式を把握して情報をＩＣカード１へ送信する。
【００３３】
次に、ＩＣカード１における外部装置からの命令データの受信に基づいた処理について説明する。図７は外部装置からの命令データに基づくＩＣカード１の処理を示す図である。
図４のステップＳ１０で初期応答データを外部装置へ送信した後、制御部４は命令データを受信したかどうかを判断する（ステップＳ１２）。そして、制御部４は命令データを受信すると、当該命令データがデータメモリ部２へのプログラムの書き込み命令であるか否かを確認する（ステップＳ１３）。
【００３４】
次に制御部４は、命令データがプログラムの書き込み命令である場合には、システム領域のチェックデータを演算しＩＣカード１が発行前状態であるか否かを確認する（ステップＳ１４）。ここで演算結果のチェックデータが、システム領域におけるチェックデータの記憶領域に記録されている値と同一でない場合には、制御部４はＩＣカード１が発行前状態であると判断し、データメモリ部２のプログラム領域へ外部装置より受信したプログラムを書き込む（ステップＳ１５）。そして、制御部４はプログラムの書き込みが終了した旨を示す出力データを生成する（ステップＳ１６）。そして送受信部５が当該出力データを外部装置へ送信する（ステップＳ１７）。
【００３５】
尚、ステップＳ１３において命令データがプログラムの書き込み命令でないと判断した場合には、制御部４その命令データが示す処理を行なう（ステップＳ１８）。また、ステップＳ１４において演算したチェックデータがシステム領域におけるチェックデータの記憶領域に記録されている値と同一である場合には、制御部４はＩＣカード１が発行後状態であると判断し、エラーデータを示す出力データを生成する（ステップＳ１９）。
【００３６】
また、制御部４は上述の処理においてはステップＳ１３において命令データがプログラムの書き込み命令であるか否かを確認してからステップＳ１４においてチェックデータを演算しているが、ステップＳ１２でプログラムの書き込み命令を示す命令データを受信した後に、ステップＳ１４の処理を行なってチェックデータを演算してＩＣカード１が発行後状態であると判断できた場合には、ステップＳ１２で受信したプログラムの書き込み命令を示す命令データを破棄するようにしても良い。
また、ステップＳ１５においてプログラムを書き込む前に、外部装置を操作するユーザの認証をしてからプログラムを書き込む処理を行うようにしても良い。また、上述のＩＣカード１の制御部４は、プログラムメモリ部３で記憶しているプログラムを読み取って、そのプログラムを実行する事により上述の処理を行なっている。
【００３７】
【発明の効果】
以上説明したように、この発明によれば、制御部がメモリ内のデータ値に基づいてＩＣカードが発行前状態であるか発行後状態であるかを判定し、発行前状態である場合にのみメモリへプログラムを書き込む。これにより、発行後状態となったＩＣカードへの不正なプログラムの書き込みを制限することができる。
また、本発明によれば、制御部がシステム領域のデータ値から所定の演算過程により算出できるチェックデータに基づいて発行前状態または発行後状態を判定する。これにより、チェックデータによって発行前状態と判定した場合にのみプログラムを書き込むことができるようになる。
【００３８】
また、本発明によれば、制御部がメモリへのプログラムの書き込み時に、当該プログラムの書き込みを指示するプログラム書き込み装置から認証情報を受付けて、その認証情報に基づいて当該書き込みの認証を行ない、認証が成功した場合にのみ前記メモリへ前記プログラムを書き込む。これにより、不正なユーザによるプログラムの書き込みを防ぐことができる。
【００３９】
また、本発明によれば、書き込んだプログラムの起動可能または不可能のいずれかを表す起動可否情報を前記システム領域に記憶する。これにより起動可否情報が起動可能な場合にのみ書き込んだプログラムの起動を処理することができる。
【００４０】
また、本発明によれば、書き込んだプログラムを起動する起動アドレスの位置を表す起動アドレス情報を前記システム領域に記憶する。これにより当該起動アドレスを制御部が読み込んでそのアドレスからのプログラムの起動を制御部が行なうことができる。
【００４１】
また、本発明によれば、データ領域に書き込まれるデータのデータ書き込み完了状態またはデータ書き込み未完了状態のいずれかを表すデータ書き込み状態識別情報をシステム領域に記憶し、制御部がプログラムの起動時にデータ書き込み状態識別情報と起動可否情報とを確認し、データ書き込み状態識別情報がデータ書き込み完了状態を示しておりかつ、起動可否情報が起動可能であることを示している場合にのみ起動アドレスよりプログラムを起動する。これにより、データ書き込み状態識別情報がデータ書き込み完了状態を表し、また起動可否情報が起動可能状態を表している場合にのみ、書き込んだプログラムを起動することができる。
【００４２】
また、本発明によれば、制御部がデータ書き込み完了情報の受信に基づいて、データ書き込み状態識別情報の示すデータ書き込み未完了状態をデータ書き込み完了状態へと書き換えることを特徴とする。これにより、データ書き込み完了情報を完了状態へと書き換えた後のデータの書き込みを禁止することができる。
【００４３】
また、本発明によれば、予め前記起動アドレスに格納されるべきデータが規定されており、前記制御部が、前記プログラムを実行する際に前記起動アドレスに記載されているデータが前記予め規定されている起動アドレスに格納されるべきデータと同一であるか否かを確認し、前記制御部が、前記起動アドレスに格納されているデータが前記予め規定されている起動アドレスに格納されるべきデータと同一である場合にのみ前記起動アドレスまたは前記起動アドレスの後ろのアドレスのいずれかより前記プログラムを起動する。これにより、制御部は書き込まれたプログラムが正常かどうかを確認した後に当該プログラムの起動を行なうことができる。
【図面の簡単な説明】
【図１】ＩＣカードの構成を示す概略ブロック図である。
【図２】データメモリ部２のメモリ領域を分割した際の状態を示す図である。
【図３】システム領域のデータ構成を示す図である。
【図４】メモリ状態識別データの構成を示す図である。
【図５】データメモリ部２の状態の遷移を示す図である。
【図６】ＩＣカードが初期応答を出力する際の処理を示す図である。
【図７】外部装置からの命令データに基づくＩＣカードの処理を示す図である。
【符号の説明】
１  ＩＣカード
２  データメモリ部
３  プログラムメモリ部
４  制御部
５  送受信部
【図１】
2004310681.tif 000003
【図２】
2004310681.tif 000004
【図３】
2004310681.tif 000005
【図４】
2004310681.tif 000006
【図５】
2004310681.tif 000007
【図６】
2004310681.tif 000008
【図７】
2004310681.tif 000009