説明

ICチップ用データ書き込み装置及びデータ書き込み方法

【課題】キャッシングするシステムを、バーチャルマシンが組み込まれたマルチアプリケーションICカードに採用した場合であっても、リトライカウンタの減算を処理前に行う方式におけるセキュリティ上の問題を無くし、ICカードのセキュリティ(安全性)を担保しつつ、処理を高速化することが可能なICチップ用データ書き込み装置及びデータ書き込み方法を提供する。
【解決手段】本発明は、バーチャルマシンと、バーチャルマシンから命令を受けて指定されたデータを処理する処理部と、前記処理部によって処理されたデータを一時的に蓄積するキャッシュメモリと、前記処理部からの書き込み指令に応じて前記キャッシュメモリから出力されたデータを書き込む不揮発性メモリと、を備えたICチップ用データ書き込み装置であって、前記処理部は、秘密情報に関する演算を処理する場合には、前記演算を実行する前にキャッシュメモリに蓄積されたデータを不揮発性メモリに書き込む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、IC(Integrated Circuit)カードに搭載されるICチップに関し、特に、ICチップにおける不揮発性メモリにデータを書き込む技術に関する。
【背景技術】
【0002】
従来から、ICチップにおける不揮発性メモリ(例えば、EEPROM)へのデータの書き込み処理速度が、ICチップ全体の処理速度のボトルネックになっていることが知られている。このため、当該不揮発生メモリへの書き込み処理をキャッシングするシステムが知られている(例えば、特許文献1及び特許文献2参照)。不揮発性メモリへの書き込み処理1回の速度は、書き込むデータ容量に関係なく一定であり、容量の小さいデータの書き込みを複数回実行するのではなく、ある程度書き込むデータ容量をまとめることで、不揮発性メモリへの書き込み回数を減らして処理を速くすることができる。
【0003】
ところで、一般に、セキュリティを確保するための処理、例えばパスワード等の認証に係る比較処理では、内部に記憶された内部データと外部から入力された外部データとが比較され、一致した場合に認証成功として次の処理へ移行するようになっているが、一致しない場合には認証失敗として、予め設定されたリトライ回数(制限回数)に達するまで、当該比較処理のリトライが行われるようになっている。ここで、リトライ回数は、「リトライが可能な回数」でもよいし、或いは「リトライ済み回数」でもよい。
【0004】
上記比較処理がリトライされる回数は、例えば、当該リトライが行われる度に1減算されるリトライカウンタにより管理されるようになっており、当該リトライカウンタの値は不揮発性メモリに記憶される。また、通常、当該リトライカウンタの減算は、上記比較処理前に行われる方式になっている。これは、リトライカウンタの減算を比較処理後に行う方式では、当該比較処理後、不揮発性メモリにリトライカウンタの値が書き込まれるまでの間に電源供給が絶たれた場合に、当該比較処理において認証失敗してもリトライカウンタは減らず、何度でも比較処理が実行可能となってしまうからである。
【0005】
また、従来、ICチップにおける不揮発性メモリ(例えば、EEPROM)のデータ容量は非常に小さい容量(例えば、数Kバイト)であったため、アプリケーションの追加/削除が不可能なNativeICカードが主流であった。しかし、例えば、特許文献3に開示されるように、近年の半導体技術の進歩によって、現在は、数十Kバイトから100Kバイトを超える不揮発性メモリの容量を有するICチップがリリースされていることもあり、JAVA(登録商標)に代表される高級言語の解釈機能を備えたバーチャルマシンが組み込まれ、アプリケーションの追加/削除が可能なマルチアプリケーションICカードが普及しつつある。
【特許文献1】特開2001−147855号公報
【特許文献2】特開2007−034434号公報
【特許文献3】特開2007−206765号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、キャッシングするシステムを、上述したバーチャルマシンが組み込まれたマルチアプリケーションICカードに採用した場合、リトライカウンタの減算を比較処理前に行う方式において、プログラムが意図しない動作をするため、セキュリティ上の問題が発生する。例えば、キャッシュから不揮発性メモリにデータがライトバック(Write back)される前に電源供給が絶たれると、認証失敗時において不揮発性メモリにおけるリトライカウンタの値が減らないという問題が生じる。このことは、上記比較処理ばかりでなく、セキュリティを確保するためのその他の処理においても同様である。
【0007】
そこで、本発明は、このような問題等に鑑みてなされたものであり、キャッシングするシステムを、バーチャルマシンが組み込まれたマルチアプリケーションICカードに採用した場合であっても、リトライカウンタの減算を処理前に行う方式におけるセキュリティ上の問題を無くし、ICカードのセキュリティ(安全性)を担保しつつ、処理を高速化することが可能なICチップ用データ書き込み装置及びデータ書き込み方法を提供することを課題とする。
【課題を解決するための手段】
【0008】
上記課題を解決するために、請求項1に記載の発明は、バーチャルマシンと、バーチャルマシンから命令を受けて指定されたデータを処理する処理部と、前記処理部によって処理されたデータを一時的に蓄積するキャッシュメモリと、前記処理部からの書き込み指令に応じて前記キャッシュメモリから出力されたデータを書き込む不揮発性メモリと、を備えたICチップ用データ書き込み装置であって、前記処理部は、秘密情報に関する演算を処理する場合には、前記演算を実行する前にキャッシュメモリに蓄積されたデータを不揮発性メモリに書き込むことを特徴とする。
【0009】
請求項2に記載の発明は、請求項1に記載のICチップ用データ書き込み装置であって、前記秘密情報に関する演算の処理は、セキュリティを確保するための比較処理又は暗号処理を行う演算処理であることを特徴とする。
【0010】
請求項3に記載の発明は、バーチャルマシンと、バーチャルマシンから命令を受けて指定されたデータを処理する処理部と、前記処理部によって処理されたデータを一時的に蓄積するキャッシュメモリと、前記処理部からの書き込み指令に応じて前記キャッシュメモリから出力されたデータを書き込む不揮発性メモリと、を備えたICチップ用データ書き込み装置におけるデータ書き込み方法であって、前記処理部は、秘密情報に関する演算を処理する場合には、前記演算を実行する前にキャッシュメモリに蓄積されたデータを不揮発性メモリに書き込むことを特徴とする。
【発明の効果】
【0011】
本発明によれば、処理部は、秘密情報に関する演算を処理する場合には、演算を実行する前にキャッシュメモリに蓄積されたデータを不揮発性メモリに書き込むように構成したので、キャッシングするシステムを、バーチャルマシンが組み込まれたマルチアプリケーションICカードに採用した場合であっても、セキュリティ上の問題を無くし、ICカードのセキュリティを担保しつつ、処理を高速化することができる。
【発明を実施するための最良の形態】
【0012】
以下、図面を参照して本発明の最良の実施形態について詳細に説明する。以下に説明する実施形態は、キャッシュカード、クレジットカード、会員カード、社員カード、又は学生カード等として用いられるICカードに搭載される(埋め込まれる)ICチップに対して本発明を適用した場合の実施の形態である。
【0013】
先ず、本発明の一実施形態に係るICチップの構成及び機能について、図1を用いて説明する。
【0014】
図1は、本実施形態に係るICチップのハードウェア構成例を示す図である。
【0015】
図1に示すように、ICチップ1は、演算機能を有するCPU(Central Processing Unit)11、プログラム及びデータが記憶されたROM(Read Only Memory)12、作業用のRAM(Random Access Memory)13、不揮発性メモリ(例えば、EEPROM(Electrically Erasable and Programmable Read Only Memory))14、及び外部機器とデータ通信するためのI/O回路16等を備えて構成されている。そして、RAM13の所定の記憶領域に、不揮発生メモリ14への書き込み処理をキャッシングするためのキャッシュメモリ15が割り当てられている。なお、I/O回路16を介した外部機器とのデータ通信は、接触方式と非接触方式の何れの方式であっても良い。
【0016】
図2は、図1に示すハードウェアを前提にしたソフトウェア構成例を示す図である。
【0017】
図2に示すように、OS11d上でアプリケーション11a及びVM(バーチャルマシン,仮想計算機ともいう)11bが動作するようになっている。VM11bはプログラム言語を逐一機械語に変換して実行するインタープリタである。
【0018】
アプリケーション11aは、例えばJAVA(登録商標)等のプログラム言語で記述され、VM11bは、アプリケーション11aからの命令に応じた処理を受け、書き込み処理部(書き込み制御機関である処理部)11c(処理部の一例)に書き込み命令を出す処理を実行するようになっている。書き込み処理部11cは、VM11bから命令を受けて指定されたデータを処理するようになっている。
【0019】
また、キャッシュメモリ15は、書き込み処理部(書き込み制御機関である処理部)11cによって処理されたデータを一時的に蓄積し、不揮発性メモリ14は、VM11bからの書き込み(以下、「ライトバック」という)指令に応じてキャッシュメモリ15から出力されたデータを書き込むようになっている。これは、不揮発性メモリ14より書き込み速度が速いキャッシュメモリ15により、ある程度書き込むデータ容量をまとめることで、不揮発性メモリ14への書き込み回数を減らして処理を速くする趣旨である。
【0020】
なお、本実施形態においては、書き込み処理部11cが、秘密情報に関する演算の処理として、セキュリティを確保するための比較処理を実行する場合を例にとるものとするが、これに限定されるものではなく、例えば暗号処理等を行う演算処理であっても良い。ここで、上記秘密情報とは、例えばPIN(Personal identification number)や鍵などに関する情報を意味する。
【0021】
そして、書き込み処理部11cは、VM11bからの命令に応じて、例えばパスワード等の認証に係る比較処理を実行する場合には、当該演算を実行する前にキャッシュメモリ15に蓄積されたデータ(例えば、当該比較処理の残りのリトライ回数(処理回数に関する情報の一例)を不揮発性メモリ14に書き込む(ライトバック)ようになっている。これにより、比較処理が行われ認証失敗したにも関わらず、電源供給断によりリトライカウンタの値が減らないことを防止することができ、何度でも比較処理が実行可能となることを回避することができる。
【0022】
なお、当該比較処理においては、例えば、外部機器からI/O回路16を介して入力されたパスワードと、予めICチップ1内(例えば、不揮発性メモリ14)に記憶されているパスワードが比較され、双方が一致の場合、認証成功として処理され、双方が不一致の場合、認証失敗として処理されることになる。
【0023】
図3は、比較処理が成功したときの動作例を示すシーケンス図である。
【0024】
先ず、図3の動作例では、先ず、比較処理が開始されると、アプリケーション11aがリトライカウンタを1減らす命令をVM11bに対して与える(ステップS1)。当該VM11bは、この命令に応じてリトライカウンタ(リトライ回数を規定)を1減らす指令をキャッシュメモリ15に与え(ステップS2)、リトライカウンタの値を「N」(Nは自然数)→「N−1」にさせる(つまり、比較処理の残りのリトライ回数を蓄積させる)。
【0025】
次に、アプリケーション11aが比較処理を実行する命令をVM11bに対して与える(ステップS3)。当該VM11b(書き込み処理部11c)は、この命令に応じてキャッシュメモリ15に対してライトバック指令をキャッシュメモリ15に与え、キャッシュメモリ15に蓄積されているリトライカウンタの値(残りのリトライ回数)を含むデータを不揮発性メモリ14にライトバックさせる(ステップS4)。こうして、キャッシュメモリ15に蓄積されたリトライカウンタの値が不揮発性メモリ14に書き込まれることになる。
【0026】
その後、VM11bは、比較処理を実行する(ステップS5)。仮に、当該比較処理後に、キャッシュメモリ15に蓄積されているリトライカウンタの値を不揮発性メモリ14にライトバックさせるように構成した場合、認証失敗に係る比較処理後に電源供給が断たれると、不揮発性メモリ14ではリトライカウンタの値が減らず、電源復旧により何度でも比較処理が可能(故意に電源断が実行されることによる)になってしまう。上記実施形態では、当該比較処理前のタイミングで、キャッシュメモリ15に蓄積されているリトライカウンタの値を不揮発性メモリ14にライトバックさせているので、認証失敗に係る比較処理後に電源供給が断たれても、リトライカウンタの値が減らないことを防止することができ、何度でも比較処理が実行可能となることを回避することができる。
【0027】
上記ステップS5における比較処理において、認証成功した場合、アプリケーション11aがリトライカウンタの初期化命令をVM11bに対して与える(ステップS6)。当該VM11b(書き込み処理部11c)は、この命令に応じてキャッシュメモリ15に対してリトライカウンタの初期化指令をキャッシュメモリ15に与え(ステップS7)、リトライカウンタの値を初期化させる。
【0028】
そして、アプリケーションの終了等により、VM11b(書き込み処理部11c)は、キャッシュメモリ15に対してライトバック指令をキャッシュメモリ15に与え、キャッシュメモリ15に蓄積されているリトライカウンタの値を含むデータを不揮発性メモリ14にライトバックさせる(ステップS8)。
【0029】
一方、図4は、比較処理が失敗したときの動作例を示すシーケンス図であり、この場合、ステップS10〜S14までの処理は、図3のステップS1〜S5と同様であるが、図3のステップS6以降に相当する処理は行われない。
【0030】
以上説明したように、上記実施形態によれば、VM11bと、VM11bから命令を受けて指定されたデータを処理する書き込み処理部11cと、書き込み処理部11cによって処理されたデータを一時的に蓄積するキャッシュメモリ15と、書き込み処理部11cからの書き込み指令に応じてキャッシュメモリ15から出力されたデータを書き込む不揮発性メモリ14と、を備え、書き込み処理部11cは、例えばセキュリティを確保するための比較処理等の秘密情報に関する演算を処理する場合には、当該演算を実行する前にキャッシュメモリ15に蓄積されたデータを不揮発性メモリ14に書き込むように構成したので、リトライカウンタの減算を処理前に行う方式を、バーチャルマシンが組み込まれたマルチアプリケーションICカードに採用した場合であっても、セキュリティ上の問題を無くし、ICカードのセキュリティ(安全性)を担保しつつ、処理を高速化することができる。
【図面の簡単な説明】
【0031】
【図1】本実施形態に係るICチップのハードウェア構成例を示す図である。
【図2】図1に示すハードウェアを前提にしたソフトウェア構成例を示す図である。
【図3】比較処理が成功したときの動作例を示すシーケンス図である。
【図4】比較処理が失敗したときの動作例を示すシーケンス図である。
【符号の説明】
【0032】
1 ICチップ
11 CPU
11a アプリケーション
11b VM
11c 書き込み処理部
11d OS
12 ROM
13 RAM
14 不揮発性メモリ
15 キャッシュメモリ
16 I/O回路

【特許請求の範囲】
【請求項1】
バーチャルマシンと、バーチャルマシンから命令を受けて指定されたデータを処理する処理部と、前記処理部によって処理されたデータを一時的に蓄積するキャッシュメモリと、前記処理部からの書き込み指令に応じて前記キャッシュメモリから出力されたデータを書き込む不揮発性メモリと、を備えたICチップ用データ書き込み装置であって、
前記処理部は、秘密情報に関する演算を処理する場合には、前記演算を実行する前にキャッシュメモリに蓄積されたデータを不揮発性メモリに書き込むことを特徴とするICチップ用データ書き込み装置。
【請求項2】
請求項1に記載のICチップ用データ書き込み装置であって、
前記秘密情報に関する演算の処理は、セキュリティを確保するための比較処理又は暗号処理を行う演算処理であることを特徴とするICチップ用データ書き込み装置。
【請求項3】
バーチャルマシンと、バーチャルマシンから命令を受けて指定されたデータを処理する処理部と、前記処理部によって処理されたデータを一時的に蓄積するキャッシュメモリと、前記処理部からの書き込み指令に応じて前記キャッシュメモリから出力されたデータを書き込む不揮発性メモリと、を備えたICチップ用データ書き込み装置におけるデータ書き込み方法であって、
前記処理部は、秘密情報に関する演算を処理する場合には、前記演算を実行する前にキャッシュメモリに蓄積されたデータを不揮発性メモリに書き込むことを特徴とするデータ書き込み方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2009−251818(P2009−251818A)
【公開日】平成21年10月29日(2009.10.29)
【国際特許分類】
【出願番号】特願2008−97433(P2008−97433)
【出願日】平成20年4月3日(2008.4.3)
【出願人】(000002897)大日本印刷株式会社 (14,506)
【Fターム(参考)】