(57)【要約】【課題】キャッシングするシステムを、バーチャルマシンが組み込まれたマルチアプリケーションＩＣカードに採用した場合であっても、リトライカウンタの減算を処理前に行う方式におけるセキュリティ上の問題を無くし、ＩＣカードのセキュリティ（安全性）を担保しつつ、処理を高速化することが可能なＩＣチップ用データ書き込み装置及びデータ書き込み方法を提供する。【解決手段】本発明は、バーチャルマシンと、バーチャルマシンから命令を受けて指定されたデータを処理する処理部と、前記処理部によって処理されたデータを一時的に蓄積するキャッシュメモリと、前記処理部からの書き込み指令に応じて前記キャッシュメモリから出力されたデータを書き込む不揮発性メモリと、を備えたＩＣチップ用データ書き込み装置であって、前記処理部は、秘密情報に関する演算を処理する場合には、前記演算を実行する前にキャッシュメモリに蓄積されたデータを不揮発性メモリに書き込む。【選択図】図３
2009251818.tif 000002
【特許請求の範囲】
【請求項１】
バーチャルマシンと、バーチャルマシンから命令を受けて指定されたデータを処理する処理部と、前記処理部によって処理されたデータを一時的に蓄積するキャッシュメモリと、前記処理部からの書き込み指令に応じて前記キャッシュメモリから出力されたデータを書き込む不揮発性メモリと、を備えたＩＣチップ用データ書き込み装置であって、
前記処理部は、秘密情報に関する演算を処理する場合には、前記演算を実行する前にキャッシュメモリに蓄積されたデータを不揮発性メモリに書き込むことを特徴とするＩＣチップ用データ書き込み装置。
【請求項２】
請求項１に記載のＩＣチップ用データ書き込み装置であって、
前記秘密情報に関する演算の処理は、セキュリティを確保するための比較処理又は暗号処理を行う演算処理であることを特徴とするＩＣチップ用データ書き込み装置。
【請求項３】
バーチャルマシンと、バーチャルマシンから命令を受けて指定されたデータを処理する処理部と、前記処理部によって処理されたデータを一時的に蓄積するキャッシュメモリと、前記処理部からの書き込み指令に応じて前記キャッシュメモリから出力されたデータを書き込む不揮発性メモリと、を備えたＩＣチップ用データ書き込み装置におけるデータ書き込み方法であって、
前記処理部は、秘密情報に関する演算を処理する場合には、前記演算を実行する前にキャッシュメモリに蓄積されたデータを不揮発性メモリに書き込むことを特徴とするデータ書き込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣ（Integrated Circuit）カードに搭載されるＩＣチップに関し、特に、ＩＣチップにおける不揮発性メモリにデータを書き込む技術に関する。
【背景技術】
【０００２】
従来から、ＩＣチップにおける不揮発性メモリ（例えば、ＥＥＰＲＯＭ）へのデータの書き込み処理速度が、ＩＣチップ全体の処理速度のボトルネックになっていることが知られている。このため、当該不揮発生メモリへの書き込み処理をキャッシングするシステムが知られている（例えば、特許文献１及び特許文献２参照）。不揮発性メモリへの書き込み処理１回の速度は、書き込むデータ容量に関係なく一定であり、容量の小さいデータの書き込みを複数回実行するのではなく、ある程度書き込むデータ容量をまとめることで、不揮発性メモリへの書き込み回数を減らして処理を速くすることができる。
【０００３】
ところで、一般に、セキュリティを確保するための処理、例えばパスワード等の認証に係る比較処理では、内部に記憶された内部データと外部から入力された外部データとが比較され、一致した場合に認証成功として次の処理へ移行するようになっているが、一致しない場合には認証失敗として、予め設定されたリトライ回数（制限回数）に達するまで、当該比較処理のリトライが行われるようになっている。ここで、リトライ回数は、「リトライが可能な回数」でもよいし、或いは「リトライ済み回数」でもよい。
【０００４】
上記比較処理がリトライされる回数は、例えば、当該リトライが行われる度に１減算されるリトライカウンタにより管理されるようになっており、当該リトライカウンタの値は不揮発性メモリに記憶される。また、通常、当該リトライカウンタの減算は、上記比較処理前に行われる方式になっている。これは、リトライカウンタの減算を比較処理後に行う方式では、当該比較処理後、不揮発性メモリにリトライカウンタの値が書き込まれるまでの間に電源供給が絶たれた場合に、当該比較処理において認証失敗してもリトライカウンタは減らず、何度でも比較処理が実行可能となってしまうからである。
【０００５】
また、従来、ＩＣチップにおける不揮発性メモリ（例えば、ＥＥＰＲＯＭ）のデータ容量は非常に小さい容量（例えば、数Ｋバイト）であったため、アプリケーションの追加／削除が不可能なＮａｔｉｖｅＩＣカードが主流であった。しかし、例えば、特許文献３に開示されるように、近年の半導体技術の進歩によって、現在は、数十Ｋバイトから１００Ｋバイトを超える不揮発性メモリの容量を有するＩＣチップがリリースされていることもあり、ＪＡＶＡ（登録商標）に代表される高級言語の解釈機能を備えたバーチャルマシンが組み込まれ、アプリケーションの追加／削除が可能なマルチアプリケーションＩＣカードが普及しつつある。
【特許文献１】特開２００１−１４７８５５号公報
【特許文献２】特開２００７−０３４４３４号公報
【特許文献３】特開２００７−２０６７６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、キャッシングするシステムを、上述したバーチャルマシンが組み込まれたマルチアプリケーションＩＣカードに採用した場合、リトライカウンタの減算を比較処理前に行う方式において、プログラムが意図しない動作をするため、セキュリティ上の問題が発生する。例えば、キャッシュから不揮発性メモリにデータがライトバック（Write back）される前に電源供給が絶たれると、認証失敗時において不揮発性メモリにおけるリトライカウンタの値が減らないという問題が生じる。このことは、上記比較処理ばかりでなく、セキュリティを確保するためのその他の処理においても同様である。
【０００７】
そこで、本発明は、このような問題等に鑑みてなされたものであり、キャッシングするシステムを、バーチャルマシンが組み込まれたマルチアプリケーションＩＣカードに採用した場合であっても、リトライカウンタの減算を処理前に行う方式におけるセキュリティ上の問題を無くし、ＩＣカードのセキュリティ（安全性）を担保しつつ、処理を高速化することが可能なＩＣチップ用データ書き込み装置及びデータ書き込み方法を提供することを課題とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、請求項１に記載の発明は、バーチャルマシンと、バーチャルマシンから命令を受けて指定されたデータを処理する処理部と、前記処理部によって処理されたデータを一時的に蓄積するキャッシュメモリと、前記処理部からの書き込み指令に応じて前記キャッシュメモリから出力されたデータを書き込む不揮発性メモリと、を備えたＩＣチップ用データ書き込み装置であって、前記処理部は、秘密情報に関する演算を処理する場合には、前記演算を実行する前にキャッシュメモリに蓄積されたデータを不揮発性メモリに書き込むことを特徴とする。
【０００９】
請求項２に記載の発明は、請求項１に記載のＩＣチップ用データ書き込み装置であって、前記秘密情報に関する演算の処理は、セキュリティを確保するための比較処理又は暗号処理を行う演算処理であることを特徴とする。
【００１０】
請求項３に記載の発明は、バーチャルマシンと、バーチャルマシンから命令を受けて指定されたデータを処理する処理部と、前記処理部によって処理されたデータを一時的に蓄積するキャッシュメモリと、前記処理部からの書き込み指令に応じて前記キャッシュメモリから出力されたデータを書き込む不揮発性メモリと、を備えたＩＣチップ用データ書き込み装置におけるデータ書き込み方法であって、前記処理部は、秘密情報に関する演算を処理する場合には、前記演算を実行する前にキャッシュメモリに蓄積されたデータを不揮発性メモリに書き込むことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、処理部は、秘密情報に関する演算を処理する場合には、演算を実行する前にキャッシュメモリに蓄積されたデータを不揮発性メモリに書き込むように構成したので、キャッシングするシステムを、バーチャルマシンが組み込まれたマルチアプリケーションＩＣカードに採用した場合であっても、セキュリティ上の問題を無くし、ＩＣカードのセキュリティを担保しつつ、処理を高速化することができる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照して本発明の最良の実施形態について詳細に説明する。以下に説明する実施形態は、キャッシュカード、クレジットカード、会員カード、社員カード、又は学生カード等として用いられるＩＣカードに搭載される（埋め込まれる）ＩＣチップに対して本発明を適用した場合の実施の形態である。
【００１３】
先ず、本発明の一実施形態に係るＩＣチップの構成及び機能について、図１を用いて説明する。
【００１４】
図１は、本実施形態に係るＩＣチップのハードウェア構成例を示す図である。
【００１５】
図１に示すように、ＩＣチップ１は、演算機能を有するＣＰＵ（Central Processing Unit）１１、プログラム及びデータが記憶されたＲＯＭ（Read Only Memory）１２、作業用のＲＡＭ（Random Access Memory）１３、不揮発性メモリ（例えば、ＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory））１４、及び外部機器とデータ通信するためのＩ／Ｏ回路１６等を備えて構成されている。そして、ＲＡＭ１３の所定の記憶領域に、不揮発生メモリ１４への書き込み処理をキャッシングするためのキャッシュメモリ１５が割り当てられている。なお、Ｉ／Ｏ回路１６を介した外部機器とのデータ通信は、接触方式と非接触方式の何れの方式であっても良い。
【００１６】
図２は、図１に示すハードウェアを前提にしたソフトウェア構成例を示す図である。
【００１７】
図２に示すように、ＯＳ１１ｄ上でアプリケーション１１ａ及びＶＭ（バーチャルマシン，仮想計算機ともいう）１１ｂが動作するようになっている。ＶＭ１１ｂはプログラム言語を逐一機械語に変換して実行するインタープリタである。
【００１８】
アプリケーション１１ａは、例えばＪＡＶＡ（登録商標）等のプログラム言語で記述され、ＶＭ１１ｂは、アプリケーション１１ａからの命令に応じた処理を受け、書き込み処理部（書き込み制御機関である処理部）１１ｃ（処理部の一例）に書き込み命令を出す処理を実行するようになっている。書き込み処理部１１ｃは、ＶＭ１１ｂから命令を受けて指定されたデータを処理するようになっている。
【００１９】
また、キャッシュメモリ１５は、書き込み処理部（書き込み制御機関である処理部）１１ｃによって処理されたデータを一時的に蓄積し、不揮発性メモリ１４は、ＶＭ１１ｂからの書き込み（以下、「ライトバック」という）指令に応じてキャッシュメモリ１５から出力されたデータを書き込むようになっている。これは、不揮発性メモリ１４より書き込み速度が速いキャッシュメモリ１５により、ある程度書き込むデータ容量をまとめることで、不揮発性メモリ１４への書き込み回数を減らして処理を速くする趣旨である。
【００２０】
なお、本実施形態においては、書き込み処理部１１ｃが、秘密情報に関する演算の処理として、セキュリティを確保するための比較処理を実行する場合を例にとるものとするが、これに限定されるものではなく、例えば暗号処理等を行う演算処理であっても良い。ここで、上記秘密情報とは、例えばＰＩＮ（Personal identification number)や鍵などに関する情報を意味する。
【００２１】
そして、書き込み処理部１１ｃは、ＶＭ１１ｂからの命令に応じて、例えばパスワード等の認証に係る比較処理を実行する場合には、当該演算を実行する前にキャッシュメモリ１５に蓄積されたデータ（例えば、当該比較処理の残りのリトライ回数（処理回数に関する情報の一例）を不揮発性メモリ１４に書き込む（ライトバック）ようになっている。これにより、比較処理が行われ認証失敗したにも関わらず、電源供給断によりリトライカウンタの値が減らないことを防止することができ、何度でも比較処理が実行可能となることを回避することができる。
【００２２】
なお、当該比較処理においては、例えば、外部機器からＩ／Ｏ回路１６を介して入力されたパスワードと、予めＩＣチップ１内（例えば、不揮発性メモリ１４）に記憶されているパスワードが比較され、双方が一致の場合、認証成功として処理され、双方が不一致の場合、認証失敗として処理されることになる。
【００２３】
図３は、比較処理が成功したときの動作例を示すシーケンス図である。
【００２４】
先ず、図３の動作例では、先ず、比較処理が開始されると、アプリケーション１１ａがリトライカウンタを１減らす命令をＶＭ１１ｂに対して与える（ステップＳ１）。当該ＶＭ１１ｂは、この命令に応じてリトライカウンタ（リトライ回数を規定）を１減らす指令をキャッシュメモリ１５に与え（ステップＳ２）、リトライカウンタの値を「Ｎ」（Ｎは自然数）→「Ｎ−１」にさせる（つまり、比較処理の残りのリトライ回数を蓄積させる）。
【００２５】
次に、アプリケーション１１ａが比較処理を実行する命令をＶＭ１１ｂに対して与える（ステップＳ３）。当該ＶＭ１１ｂ（書き込み処理部１１ｃ）は、この命令に応じてキャッシュメモリ１５に対してライトバック指令をキャッシュメモリ１５に与え、キャッシュメモリ１５に蓄積されているリトライカウンタの値（残りのリトライ回数）を含むデータを不揮発性メモリ１４にライトバックさせる（ステップＳ４）。こうして、キャッシュメモリ１５に蓄積されたリトライカウンタの値が不揮発性メモリ１４に書き込まれることになる。
【００２６】
その後、ＶＭ１１ｂは、比較処理を実行する（ステップＳ５）。仮に、当該比較処理後に、キャッシュメモリ１５に蓄積されているリトライカウンタの値を不揮発性メモリ１４にライトバックさせるように構成した場合、認証失敗に係る比較処理後に電源供給が断たれると、不揮発性メモリ１４ではリトライカウンタの値が減らず、電源復旧により何度でも比較処理が可能（故意に電源断が実行されることによる）になってしまう。上記実施形態では、当該比較処理前のタイミングで、キャッシュメモリ１５に蓄積されているリトライカウンタの値を不揮発性メモリ１４にライトバックさせているので、認証失敗に係る比較処理後に電源供給が断たれても、リトライカウンタの値が減らないことを防止することができ、何度でも比較処理が実行可能となることを回避することができる。
【００２７】
上記ステップＳ５における比較処理において、認証成功した場合、アプリケーション１１ａがリトライカウンタの初期化命令をＶＭ１１ｂに対して与える（ステップＳ６）。当該ＶＭ１１ｂ（書き込み処理部１１ｃ）は、この命令に応じてキャッシュメモリ１５に対してリトライカウンタの初期化指令をキャッシュメモリ１５に与え（ステップＳ７）、リトライカウンタの値を初期化させる。
【００２８】
そして、アプリケーションの終了等により、ＶＭ１１ｂ（書き込み処理部１１ｃ）は、キャッシュメモリ１５に対してライトバック指令をキャッシュメモリ１５に与え、キャッシュメモリ１５に蓄積されているリトライカウンタの値を含むデータを不揮発性メモリ１４にライトバックさせる（ステップＳ８）。
【００２９】
一方、図４は、比較処理が失敗したときの動作例を示すシーケンス図であり、この場合、ステップＳ１０〜Ｓ１４までの処理は、図３のステップＳ１〜Ｓ５と同様であるが、図３のステップＳ６以降に相当する処理は行われない。
【００３０】
以上説明したように、上記実施形態によれば、ＶＭ１１ｂと、ＶＭ１１ｂから命令を受けて指定されたデータを処理する書き込み処理部１１ｃと、書き込み処理部１１ｃによって処理されたデータを一時的に蓄積するキャッシュメモリ１５と、書き込み処理部１１ｃからの書き込み指令に応じてキャッシュメモリ１５から出力されたデータを書き込む不揮発性メモリ１４と、を備え、書き込み処理部１１ｃは、例えばセキュリティを確保するための比較処理等の秘密情報に関する演算を処理する場合には、当該演算を実行する前にキャッシュメモリ１５に蓄積されたデータを不揮発性メモリ１４に書き込むように構成したので、リトライカウンタの減算を処理前に行う方式を、バーチャルマシンが組み込まれたマルチアプリケーションＩＣカードに採用した場合であっても、セキュリティ上の問題を無くし、ＩＣカードのセキュリティ（安全性）を担保しつつ、処理を高速化することができる。
【図面の簡単な説明】
【００３１】
【図１】本実施形態に係るＩＣチップのハードウェア構成例を示す図である。
【図２】図１に示すハードウェアを前提にしたソフトウェア構成例を示す図である。
【図３】比較処理が成功したときの動作例を示すシーケンス図である。
【図４】比較処理が失敗したときの動作例を示すシーケンス図である。
【符号の説明】
【００３２】
１  ＩＣチップ
１１  ＣＰＵ
１１ａ  アプリケーション
１１ｂ  ＶＭ
１１ｃ  書き込み処理部
１１ｄ  ＯＳ
１２  ＲＯＭ
１３  ＲＡＭ
１４  不揮発性メモリ
１５  キャッシュメモリ
１６  Ｉ／Ｏ回路
【図１】
2009251818.tif 000003
【図２】
2009251818.tif 000004
【図３】
2009251818.tif 000005
【図４】
2009251818.tif 000006