(57)【要約】【課題】使用中であっても追加の実行コードの完全性を検証することができるＩＣカード及びＩＣカードプログラムを提供する。【解決手段】ＩＣカード１０は、実行コードｃ１を記憶するＲＯＭ１４と、追加の実行コードｃ２を記憶するＥＥＰＲＯＭ１５と、実行コードｃ１及び追加の実行コードｃ２を実行するＣＰＵ１２などとを備え、ＥＥＰＲＯＭ１５は、追加の実行コードｃ２の少なくとも一部を用いてあらかじめ外部で算出されたチェックコードｃ３を記憶しており、ＣＰＵ１２は、追加の実行コードｃ２の実行命令を受信した場合に、外部と同様の方式でチェックコードｃ４を算出し、その算出したチェックコードｃ４とＥＥＰＲＯＭ１５に記憶されているチェックコードｃ３とを比較し、比較結果が一致している場合には、追加の実行コードｃ２を実行し、一致していない場合には、追加の実行コードｃ２を実行しない。【選択図】図２
2006350738.tif 000002
【特許請求の範囲】
【請求項１】
実行コードを記憶するメモリと、
追加の実行コードを記憶する書き換え可能なメモリと、
前記実行コード及び前記追加の実行コードを実行するＣＰＵと、
を備えるＩＣカードであって、
前記書き換え可能なメモリは、前記追加の実行コードの少なくとも一部を用いてあらかじめ外部で算出されたチェックコードを記憶しており、
前記ＣＰＵは、所定の条件を満たした場合に、外部と同様の方式でチェックコードを算出し、その算出したチェックコードと前記書き換え可能なメモリに記憶されているチェックコードとを比較し、比較結果が一致している場合には、前記追加の実行コードを実行し、一致していない場合には、前記追加の実行コードを実行しないこと、
を特徴とするＩＣカード。
【請求項２】
請求項１に記載のＩＣカードにおいて、
前記所定の条件は、前記追加の実行コードの実行命令を受信した場合であること、
を特徴とするＩＣカード。
【請求項３】
請求項１又は請求項２に記載のＩＣカードにおいて、
前記チェックコードは、前記実行コードの少なくとも一部を含めて算出されること、
を特徴とするＩＣカード。
【請求項４】
請求項１から請求項３までのいずれか１項に記載のＩＣカードにおいて、
前記書き換え可能なメモリは、固有情報を記憶しており、
前記チェックコードは、前記固有情報の少なくとも一部を含めて算出されること、
を特徴とするＩＣカード。
【請求項５】
請求項１から請求項４までのいずれか１項に記載のＩＣカードにおいて、
前記ＣＰＵが前記追加の実行コードを実行しない場合に、その旨を外部に通知する通知手段を備えること、
を特徴とするＩＣカード。
【請求項６】
実行コードを記憶するメモリと、
追加の実行コード、及び、前記追加の実行コードの少なくとも一部を用いてあらかじめ外部で算出されたチェックコードを記憶する書き換え可能なメモリと、
前記実行コード及び前記追加の実行コードを実行するＣＰＵと、
を備えるＩＣカードのＣＰＵに実行させるＩＣカードプログラムであって、
所定の条件を満たすか否かを判断する条件判断手順と、
前記条件判断手段が所定の条件を満たすと判断した場合に、外部と同様の方式でチェックコードを算出する算出手順と、
前記算出手順で算出したチェックコードと前記書き換え可能なメモリに記憶されているチェックコードとを比較する比較手順と、
前記比較手順の比較結果が一致している場合に、前記追加の実行コードを実行し、一致していない場合に、前記追加の実行コードを実行しない実行可否手順と、
を備えるＩＣカードプログラム。
【請求項７】
請求項６に記載のＩＣカードプログラムにおいて、
前記実行可否手順が前記追加の実行コードを実行しない場合に、その旨を外部に通知する通知手順を備えること、
を特徴とするＩＣカードプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリに追加の実行コードをロードして使用するＩＣカード及びＩＣカードプログラムに関するものである。
【背景技術】
【０００２】
従来、この種のＩＣカード（スマートカード）は、内部に搭載されているＥＥＰＲＯＭやフラッシュメモリなどの書き換え可能なメモリに、追加の実行コードをロードして使用することがある。
この場合、正しい実行コードがロードされたこと（実行コードの完全性）を確認するために、チェックコードを使用していた（例えば、特許文献１）。チェックコードは、実行コードの一部又は全部を所定の関数で処理して出力したコードである。
【０００３】
図５及び図６は、従来の実行コードの完全性を検証する方法を示す図である。
実行コードの完全性を検証する方法は２つあり、１つ目の方法は、図５に示すように、外部で算出したチェックコードｃ３をＩＣカード２０内にロードし、外部と同様の方式で算出したチェックコードｃ４をＩＣカードの内部で検証する方法である。
２つ目の方法は、図６に示すように、ＩＣカード２０が内部で算出したチェックコードｃ４を外部に送信し、外部でロードの成功／失敗を検証する方法である。
【０００４】
しかし、いずれの方法で検証した場合であっても、ロードされた追加の実行コードｃ２は、使用中の意図しない衝撃や熱などによって破損する可能性があり、一旦、ＩＣカードを出荷した後には、追加の実行コードｃ２の完全性が検証できない状況にあった。
【特許文献１】特開２００４−３４８３７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の課題は、使用中であっても追加の実行コードの完全性を検証することができるＩＣカード及びＩＣカードプログラムを提供することである。
【課題を解決するための手段】
【０００６】
前記課題を解決するために、請求項１の発明は、実行コードを記憶するメモリと、追加の実行コードを記憶する書き換え可能なメモリと、前記実行コード及び前記追加の実行コードを実行するＣＰＵと、を備えるＩＣカードであって、前記書き換え可能なメモリは、前記追加の実行コードの少なくとも一部を用いてあらかじめ外部で算出されたチェックコードを記憶しており、前記ＣＰＵは、所定の条件を満たした場合に、外部と同様の方式でチェックコードを算出し、その算出したチェックコードと前記書き換え可能なメモリに記憶されているチェックコードとを比較し、比較結果が一致している場合には、前記追加の実行コードを実行し、一致していない場合には、前記追加の実行コードを実行しないこと、を特徴とするＩＣカードである。
請求項２の発明は、請求項１に記載のＩＣカードにおいて、前記所定の条件は、前記追加の実行コードの実行命令を受信した場合であること、を特徴とするＩＣカードである。
請求項３の発明は、請求項１又は請求項２に記載のＩＣカードにおいて、前記チェックコードは、前記実行コードの少なくとも一部を含めて算出されること、を特徴とするＩＣカードである。
請求項４の発明は、請求項１から請求項３までのいずれか１項に記載のＩＣカードにおいて、前記書き換え可能なメモリは、固有情報を記憶しており、前記チェックコードは、前記固有情報の少なくとも一部を含めて算出されること、を特徴とするＩＣカードである。
請求項５の発明は、請求項１から請求項４までのいずれか１項に記載のＩＣカードにおいて、前記ＣＰＵが前記追加の実行コードを実行しない場合に、その旨を外部に通知する通知手段を備えること、を特徴とするＩＣカードである。
請求項６の発明は、実行コードを記憶するメモリと、追加の実行コード、及び、前記追加の実行コードの少なくとも一部を用いてあらかじめ外部で算出されたチェックコードを記憶する書き換え可能なメモリと、前記実行コード及び前記追加の実行コードを実行するＣＰＵと、を備えるＩＣカードのＣＰＵに実行させるＩＣカードプログラムであって、所定の条件を満たすか否かを判断する条件判断手順と、前記条件判断手段が所定の条件を満たすと判断した場合に、外部と同様の方式でチェックコードを算出する算出手順と、前記算出手順で算出したチェックコードと前記書き換え可能なメモリに記憶されているチェックコードとを比較する比較手順と、前記比較手順の比較結果が一致している場合に、前記追加の実行コードを実行し、一致していない場合に、前記追加の実行コードを実行しない実行可否手順と、を備えるＩＣカードプログラムである。
請求項７の発明は、請求項６に記載のＩＣカードプログラムにおいて、前記実行可否手順が前記追加の実行コードを実行しない場合に、その旨を外部に通知する通知手順を備えること、を特徴とするＩＣカードプログラムである。
【発明の効果】
【０００７】
本発明によれば、書き換え可能なメモリに、あらかじめ外部で算出したチェックコードを記憶しておくことによって、使用中であっても追加の実行コードの完全性を検証することができる。
また、追加の実行コードの実行命令を受信した場合に、チェックコードを比較するので、追加の実行コードを実行する度に、追加の実行コードの完全性を検証することができ、その完全性を維持することができる。
【０００８】
さらに、実行コードと追加の実行コードとを組み合わせてチェックコードを算出するので、完全性をより高めることができる。
さらにまた、固有情報を含めてチェックコードを算出するので、完全性をより高めつつ、セキュリティレベルも向上させることができる。
【０００９】
一方、追加の実行コードを実行しない旨を外部に通知する通知手段を備えるので、不具合があっても、その原因を特定しやすい。
【発明を実施するための最良の形態】
【００１０】
本発明は、使用中であっても追加の実行コードの完全性を検証することができるＩＣカード及びＩＣカードプログラムを提供するという目的を、ＥＥＰＲＯＭに追加の実行コードとともにチェックコードを記憶することにより実現する。
【実施例１】
【００１１】
以下、図面等を参照して、本発明の実施例について、さらに詳しく説明する。
図１は、本発明によるＩＣカードの実施例１を示すブロック図である。
実施例１のＩＣカード１０は、通信部１１と、ＣＰＵ１２と、ＲＡＭ１３と、ＲＯＭ１４と、ＥＥＰＲＯＭ１５などとを備える。
【００１２】
通信部１１は、巻き線コイルなどのアンテナと、変調回路及び復調回路などのインターフェースとなるＩ／Ｏインターフェースなどとを備え、非接触式で外部装置２０と通信を行い、ＣＰＵ１２及び外部装置２０間の通信を媒介する部分である。
【００１３】
ＣＰＵ１２は、ＩＣカード１０を統括制御する中央処理装置であって、四則演算や論理演算など算術的な処理を行なう演算装置を備え、通信部１１を介して外部装置２０から受信するコマンドに応じて、ＲＯＭ１４及びＥＥＰＲＯＭ１５に記憶されている実行コード（プログラム）や追加の実行コードを実行する部分である。
【００１４】
ＲＡＭ１３は、揮発性メモリであり、ＣＰＵ１２が処理を行う作業領域や、外部装置２０とデータをやり取りするための送受信用のバッファなどとして使用される。
ＲＯＭ１４は、不揮発性の読み出し専用のメモリであり、実行コードや、チェックコードを算出するための関数、各種パラメータなどが記憶されている。
【００１５】
ＥＥＰＲＯＭ１５は、随時書き換え可能な不揮発性のメモリであり、追加の実行コードやチェックコードなどが記憶されている。
チェックコードは、追加の実行コードを用いてあらかじめ外部で算出された２〜４バイト程度のコードである。チェックコードの算出方法は、例えば、追加の実行コードのデータを先頭から加算していく方法や、追加の実行コードのデータをハッシュ値に変換する方法などがある。
【００１６】
一方、外部装置２０は、ＩＣカード１０と非接触式で通信する装置であり、ＩＣカード１０に対して電源やクロックなどを供給し、コマンドを送信する。
【００１７】
次に、図２及び図３を参照しながら、ＩＣカード１０の動作を説明する。
図２は、本発明によるＩＣカードの各メモリなどを示す構成図であり、図３は、本発明によるＩＣカードの動作を示すフローチャートである。
図２（Ａ）に示すように、初期状態のＩＣカード１０のＲＯＭ１４には、実行コードｃ１が記憶されている。
まず、書き込み装置を用いて追加の実行コードｃ２をＩＣカード１０のＥＥＰＲＯＭ１５にロードする。その際に、チェックコードｃ３も同様にロードする。
【００１８】
追加の実行コードｃ２をロードする際には、追加の実行コードｃ２が破損していないかを確認するために、ＣＰＵ１２がチェックコードｃ４を算出し、その算出したチェックコードｃ４とロードされたチェックコードｃ３とが一致した場合のみ、追加の実行コードｃ２のロードを許可する（図２（Ｂ）参照）。
【００１９】
そして、この状態でＩＣカード１０は出荷され、生活者に使用される。
図３のステップ１１０（以下、「ステップ」を「Ｓ」という。）において、ＩＣカード１０は、コマンド受信待ち状態である。
外部装置２０からコマンドを受信すると（Ｓ１２０）、その受信したコマンドの解釈を行う（Ｓ１３０）。
ＩＣカード１０は、追加の実行コードｃ２を実行させるコマンドか否かを判断し（Ｓ１４０：条件判断手順）、追加の実行コードｃ２を実行させない場合は、実行コードｃ１を実行し（Ｓ１５０）、コマンド受信待ち（Ｓ１１０）に戻る。
【００２０】
追加の実行コードｃ２を実行させる場合（所定の条件を満たした場合：追加の実行コードの実行命令を受信した場合）は、ＣＰＵ１２が外部と同様の方式でチェックコードｃ４を算出し（Ｓ１６０：算出手順）、その算出したチェックコードｃ４とＥＥＰＲＯＭ１５に記憶されているチェックコードｃ３とを比較し（Ｓ１７０：比較手順）、比較結果が一致している場合には、追加の実行コードｃ２を実行し（Ｓ１８０：実行可否手順）、コマンド受信待ち（Ｓ１１０）に戻る。
【００２１】
一方、ＩＣカード１０のＥＥＰＲＯＭ１５に追加の実行コードｃ２をロードした状態（図２（Ｃ）参照）では問題が無かったが、使用中に、追加の実行コードｃ２が破損してしまった場合は（図２（Ｄ）参照）、格納されているチェックコードｃ３と算出したチェックコードｃ４とが一致しない。
そこで、この場合は、追加の実行コードｃ２を実行せずに、なにも動作しない無応答の状態となる（Ｓ１９０：実行可否手順）。ここで、無応答の状態とは、プログラム上で無限ループに飛ばすようにしたり、新たなフラグを立てて電源を切断しても永久に使用できなくしたりすることである。
【００２２】
このように、実施例１のＩＣカード１０によれば、ＥＥＰＲＯＭ１５に、外部で算出したチェックコードｃ３を記憶しておくことによって、使用中であっても、追加の実行コードｃ２の完全性を検証することができ、正しくない追加の実行コードｃ２を実行しないようにすることができる。
また、追加の実行コードｃ２の実行命令を受信した場合に、チェックコードを比較するので、追加の実行コードｃ２を実行する度に、追加の実行コードｃ２の完全性を検証することができ、その完全性を維持することができる。
【実施例２】
【００２３】
図４は、本発明によるＩＣカードの実施例２を示すブロック図である。
なお、前述した実施例１と同様な機能を果たす部分には、同一の符号又は末尾に統一した符号を付して、重複する説明や図面を適宜省略する。
実施例２のＩＣカード１０Ａは、実施例１のものと比較して、チェックコードの算出方法が異なる。
実施例１では、追加の実行コードｃ２からチェックコードを算出していたが、実施例２では、実行コードｃ１と追加の実行コードｃ２とを組み合わせて、チェックコードを算出している。
【００２４】
チェックコードの算出方法としては、例えば、（１）実行コードｃ１と追加の実行コードｃ２とを並べたデータからハッシュ値を算出してもよいし、（２）実行コードｃ１のデータからハッシュ値を算出し、追加の実行コードｃ２のデータからハッシュ値を算出し、それらを加算した値を用いてもよいし、（３）実行コードｃ１のデータの一部又は全部と、追加の実行コードｃ２のデータの一部又は全部とを所定の関数で処理することによって算出してもよい。
【００２５】
そして、ＩＣカード１０Ａ内で算出されたチェックコードと、追加の実行コードｃ２の後端に付加されたチェックコードｃ３とを比較し、比較結果が一致していた場合には、追加の実行コードｃ２を実行する。
【００２６】
このように、実施例２のＩＣカード１０Ａによれば、実行コードｃ１と追加の実行コードｃ２とを組み合わせてチェックコードを算出しているので、「追加の実行コードが破壊されていないこと」かつ「正式な実行コードが搭載されたＩＣカードに追加の実行コードが追加されたこと」が判断できるため、完全性のみならず信頼性も向上させることができる。
【００２７】
（変形例）
以上説明した実施例に限定されることなく、種々の変形や変更が可能であって、それらも本発明の均等の範囲内である。
（１）例えば、ＥＥＰＲＯＭ１５が固有情報（カード固有の番号、会員番号など）を記憶している場合には、その固有情報の少なくとも一部を含めて、チェックコードを算出するようにしてもよい。このようにすれば、追加の実行コードｃ２の完全性をより高めつつ、セキュリティレベルも向上させることができる。
（２）ＣＰＵ１２が追加の実行コードｃ２を実行しない場合には、無応答の状態になる例で説明したが、無応答の状態になる前に、「追加の実行コードに異常があること」を外部に通知するようにしてもよい（通知手段、通知手順）。このようにすれば、不具合があっても、その原因を特定しやすく、追加の実行コードｃ２の破壊状況を簡単に把握することができる。
【００２８】
（３）追加の実行コードｃ２の実行命令を受信した場合に、チェックコードをチェックする例で説明したが、例えば、起動時や、５回に１回だけチェックするようにして、ＩＣカード側の処理を軽減させてもよい。
（４）ＥＥＰＲＯＭ１５は、フラッシュメモリなどの他の不揮発性メモリであってもよい。
（５）ＩＣカードに限定されることなく、演算機能を持ち、追加の実行コードを外部からロードして動作させる可般記憶媒体に有効である。
【００２９】
（６）実行コードは、読み出し専用のメモリ（ＲＯＭ１４）に記憶する例で説明したが、フラッシュメモリやＦｅＲＡＭ（ＦＲＡＭ：ラムトロン・インターナショナル・コーポレーションの登録商標）などの書き換え可能なメモリに初期プログラムを記憶させてもよい。
（７）通信部１１は、非接触式で通信を行う例で説明したが、接触端子などを用いて接触式で通信を行ってもよい。
【図面の簡単な説明】
【００３０】
【図１】本発明によるＩＣカードの実施例１を示すブロック図である。
【図２】本発明によるＩＣカードの各メモリなどを示す構成図である。
【図３】本発明によるＩＣカードの動作を示すフローチャートである。
【図４】本発明によるＩＣカードの実施例２を示すブロック図である。
【図５】従来の実行コードの完全性を検証する方法を示す図である。
【図６】従来の実行コードの完全性を検証する方法を示す図である。
【符号の説明】
【００３１】
１０、１０Ａ  ＩＣカード
１１  通信部
１２  ＣＰＵ
１２ａ  演算装置
１３  ＲＡＭ
１４  ＲＯＭ
１５  ＥＥＰＲＯＭ
ｃ１  実行コード
ｃ２  追加の実行コード
ｃ３  チェックコード
ｃ４  チェックコード
【図１】
2006350738.tif 000003
【図２】
2006350738.tif 000004
【図３】
2006350738.tif 000005
【図４】
2006350738.tif 000006
【図５】
2006350738.tif 000007
【図６】
2006350738.tif 000008