JP6798157B2 - 電子情報記憶媒体、異常検知方法、及び異常検知プログラム - Google Patents

電子情報記憶媒体、異常検知方法、及び異常検知プログラム Download PDF

Info

Publication number
JP6798157B2
JP6798157B2 JP2016125669A JP2016125669A JP6798157B2 JP 6798157 B2 JP6798157 B2 JP 6798157B2 JP 2016125669 A JP2016125669 A JP 2016125669A JP 2016125669 A JP2016125669 A JP 2016125669A JP 6798157 B2 JP6798157 B2 JP 6798157B2
Authority
JP
Japan
Prior art keywords
data area
data
area
variable
fixed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016125669A
Other languages
English (en)
Other versions
JP2017228222A (ja
Inventor
歩 小林
歩 小林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dai Nippon Printing Co Ltd
Original Assignee
Dai Nippon Printing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dai Nippon Printing Co Ltd filed Critical Dai Nippon Printing Co Ltd
Priority to JP2016125669A priority Critical patent/JP6798157B2/ja
Publication of JP2017228222A publication Critical patent/JP2017228222A/ja
Application granted granted Critical
Publication of JP6798157B2 publication Critical patent/JP6798157B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

ICチップ等の電子情報記憶媒体の技術分野に関する。
近年のICカードは、Oracle社が規格したJava(登録商標) Cardに対応しているものが多い。Java Cardは、Javaで記述されたアプリケーションを、Gloval Platformの規格に定められたINSTALLコマンドによってICカードにダウンロードし、ICカード上で動作させるためのOS機構である。
Javaというプログラム言語は、ハードウェアの依存性を吸収するために、C言語といったコンパイルによって機械語に変換されるものと異なり、コンパイラによって中間言語と呼ばれる実行形式(以下、「バイトコード」という)に変換され、Virtual Machine(「VM]という)上にて動作する。バイトコードとは、算術や分岐といった命令を含んだデータ列である。
Javaでは、各バイトコードが取り扱うデータ領域をスタック形式でメモリ上に確保しながら処理が行われる。このような機構はスタックマシンと呼ばれ、スタック形式で確保されるデータ領域が正常に動作することが求められる。
Javaで記述されたアプリケーションは、アプリケーション内で宣言したデータを保持して、そのデータを用いて処理を行う。ここで、図1及び図2を用いてJavaで記述されたアプリケーションのメソッドの呼び出し時におけるメモリ上のスタック領域について説明する。図1は、メソッド1、メソッド2、メソッド3の呼び出しの例である。図2は、図1のメソッド呼び出し時におけるスタック領域500の一例を示す概念図である。
図1に示すアプリケーションでは、まず、メソッド1が呼び出され、次いで、メソッド1からメソッド2が呼び出され(この場合、メソッド1は呼び出し元のメソッドであり、メソッド2は呼び出し先のメソッドである)、次いで、メソッド2からメソッド3が呼び出されて処理が終了する。図2はメソッド3までが呼び出された際のスタック領域500の一例を示している。
メソッド1が呼び出されると、メソッド1のローカル変数領域501aとオペランドスタック領域501bがスタック領域500に確保(Push)されるとともに、メソッド1の制御情報領域501cがスタック領域500に確保(Push)される。
ローカル変数領域は、メソッドで宣言されたデータを保持する領域であり、オペランドスタック領域はメソッドが実行される際に使用される作業領域(例えば、メソッドの呼び出し(コール)時に設定される引数や、メソッドで処理された結果として返される戻り値が書き込まれる)である。すなわち、ローカル変数領域とオペランドスタック領域はメソッドが実行されることによりデータが書き換えられる。一方、制御情報領域には、メソッドの戻りアドレス、現在呼び出しているメソッドに対応するスタックの位置を特定するためのアドレス(又はオフセット)、現在呼び出しているメソッドに対応する制御情報の位置を特定するためのアドレス(又はオフセット)等が書き込まれるが、メソッドが実行されることによりデータは書き換えられることはない。
次いで、メソッド1からメソッド2が呼び出されると、メソッド2のローカル変数領域502aとオペランドスタック領域502bがスタック領域500に確保(Push)されるとともに、メソッド2の制御情報領域502cがスタック領域500に確保(Push)される。メソッド2からメソッド3が呼び出される場合も同様である。メソッド3が終了すると、OSはメソッド3の制御情報領域503cに格納されている戻りアドレスを取り出し(Pop)、メソッド3に関連するデータ領域(ローカル変数領域503a、オペランドスタック領域503b及び制御情報領域503c)を開放する。OSは取り出した戻りアドレスからメソッド3を呼び出した際に中断したメソッド2の処理を再開させる。このように、実行中のメソッドが他のメソッドを呼び出す度にスタック領域500に呼び出し先のメソッドに関連するデータ領域(ローカル変数領域、オペランドスタック領域及び制御情報領域)が確保され、メソッドの実行が完了すると当該メソッドに関連するデータ領域が開放される。
このように、メソッドを実行する上で必要なデータ領域がスタック領域500に確保されるため、ハードウェアの故障、又は外的な要因(電磁波、レーザー等)によってスタック領域500に確保されたデータ領域のデータが意図しない値に変更した場合、アプリケーションは意図しない動作を行ってしまう。その場合、セキュリティ上の問題や安全性の問題などが発生するため、異常を検知する仕組みが必要となる。
そこで、容易に考えられる仕組みは、アプリケーションが自身のデータに対して、CRC(Cyclic Redundancy Check)やデータの二重化といった冗長性を持たせ、頻繁にチェックすることにより異常を検知する仕組みである。ただし、アプリケーション側からはプログラムの実行中に処理を行えるデータ領域に制限がある。すなわち、アプリケーションはメソッドの戻りアドレス等が格納される制御情報領域に関与することはできないし、実行中のメソッド以外のメソッドが使用するローカル変数領域やオペランドスタック領域についても関与することができない。
そうした中、特許文献1には、OS(Operating System)側から対策する方法として、実行環境の二重化する方法が開示されている。
また、特許文献2には、異常処理関数のアドレスをスタックにPushしておいて、所定のタイミングでPopした値をチェックし、Pushした値でなければ異常と判断する方法が開示されている。これはフォルトインジェクションといった攻撃に対するセキュリティ上の対策を目的としており、対策を実施することによる大きな速度低下を回避することが可能である。
特表2006−522968号公報 特許4644820号公報
しかしながら、特許文献1に開示された実行環境の二重化はメモリリソースやCPU(Central Processing Unit)への負荷が大きく、高性能なCPUや大量なメモリリソースのある環境では有効だが、組み込み機器のような環境では現実的な方法ではない。
また、特許文献2に開示された方法では、スタック領域に異常検知用のデータ(関数アドレス)を紛れ込ませる方法を取っているため、異常検知用のデータにアドレス空間上近辺の領域の異常しか検出できない問題を抱えている。具体的には、32bitのCPUで関数アドレスが4バイトに対して、スタックの領域が1024バイト程度であった場合、その比率は0.4%程度である。戻りアドレスといった、重要なデータがスタック領域に所定のタイミングでプッシュされていることが分かっている前提で、そのデータの改ざんを検知するという局所的な場面では有効ではあるが、逆に防げない領域の方が大きい。
そこで、本発明は、簡易な手法で、スタック領域に確保されたプログラム(メソッド)に関連するデータ領域の異常を検知することができる電子情報記憶媒体等を提供することを目的とする。
上記課題を解決するために、請求項1に記載の発明は、プログラムを実行する仮想マシンと、前記仮想マシンが実行中であるプログラム又は前記仮想マシンが実行を中断しているプログラムに関連するデータ領域をスタック形式で確保する記憶部と、を備え、前記データ領域が、実行中であるプログラムによって書き換えられる可変データ領域と、実行中であるプログラムによって書き換えられない固定データ領域を含む電子情報記憶媒体であって、前記仮想マシンは、実行するプログラムの切り替えを行う際に、切り替え先であるプログラムに関連する前記可変データ領域よりも前に前記スタック形式で確保された前記可変データ領域について所定の処理によって可変データ領域用異常チェックデータを作成する可変データ領域用異常チェックデータ作成手段と、実行するプログラムの切り替えを行う際に、前記切り替え先であるプログラムに関連する前記固定データ領域を含む前記スタック形式で確保された全ての前記固定データ領域について所定の処理によって固定データ領域用異常チェックデータを作成する固定データ領域用異常チェックデータ作成手段と、前記切り替えが行われた後、更に実行するプログラムの切り替えを行う際に、切り替え元であるプログラムに関連する前記可変データ領域よりも前に前記スタック形式で確保された前記可変データ領域について、所定の処理によって前記可変データ領域用異常チェックデータと比較するための可変データ領域用比較用データを作成する可変データ領域用比較用データ作成手段と、前記切り替えが行われた後、更に実行するプログラムの切り替えを行う際に、切り替え元であるプログラムに関連する固定データ領域を含む前記スタック形式で確保された全ての固定データ領域について、所定の処理によって前記固定データ領域用異常チェックデータと比較するための固定データ領域用比較用データを作成する固定データ領域用比較用データ作成手段と、前記可変データ領域用比較用データ作成手段が可変データ領域用比較用データを作成した場合に、当該可変データ領域用比較用データと同じ前記可変データ領域について先に作成された可変データ領域用異常チェックデータと、当該可変データ領域用比較用データとが一致するか否かを判定する可変データ領域判定手段と、前記固定データ領域用比較用データ作成手段が固定データ領域用比較用データを作成した場合に、当該固定データ領域用比較用データと同じ前記固定データ領域について先に作成された固定データ領域用異常チェックデータと、当該固定データ領域用比較用データとが一致するか否かを判定する固定データ領域判定手段と、前記可変データ領域判定手段により可変データ領域用異常チェックデータと可変データ領域用比較用データが一致しないと判定された場合、又は、前記固定データ領域判定手段により固定データ領域用異常チェックデータと固定データ領域用比較用データが一致しないと判定された場合に、異常を検知する異常検知手段、として動作することを特徴とする。
請求項2に記載の発明は、請求項1に記載の電子情報記憶媒体であって、前記記憶部は、前記可変データ領域用異常チェックデータを記憶する可変データ領域用異常チェックデータ記憶領域と、前記固定データ領域用異常チェックデータを記憶する固定データ領域用異常チェックデータ記憶領域と、を有し、前記可変データ領域用異常チェックデータ記憶領域は、前記可変データ領域用異常チェックデータ作成手段が前記可変データ領域用異常チェックデータを作成した場合に当該可変データ領域用異常チェックデータにより更新され、前記固定データ領域用異常チェックデータ記憶領域は、前記固定データ領域用異常チェックデータ作成手段が前記固定データ領域用異常チェックデータを作成した場合に当該固定データ領域用異常チェックデータにより更新されることを特徴とする。
請求項3に記載の発明は、請求項1又は2に記載の電子情報記憶媒体であって、前記可変データ領域は、前記プログラムで宣言されたデータを保持する領域と、前記プログラムが実行される際に使用される領域と、を含み、前記固定データ領域は、前記プログラムの戻りアドレスを保持する領域を含む、ことを特徴とする。
請求項4に記載の発明は、プログラムを実行する仮想マシンと、前記仮想マシンが実行中であるプログラム又は前記仮想マシンが実行を中断しているプログラムに関連するデータ領域をスタック形式で確保する記憶部と、を備え、前記データ領域が、実行中であるプログラムによって書き換えられる可変データ領域と、実行中であるプログラムによって書き換えられない固定データ領域を含む電子情報記憶媒体における異常検知方法であって、前記仮想マシンが、実行するプログラムの切り替えを行う際に、切り替え先であるプログラムに関連する前記可変データ領域よりも前に前記スタック形式で確保された前記可変データ領域について、所定の処理によって可変データ領域用異常チェックデータを作成する可変データ領域用異常チェックデータ作成工程と、前記仮想マシンが、実行するプログラムの切り替えを行う際に、前記切り替え先であるプログラムに関連する前記固定データ領域を含む前記スタック形式で確保された全ての前記固定データ領域について、所定の処理によって固定データ領域用異常チェックデータを作成する固定データ領域用異常チェックデータ作成工程と、前記仮想マシンが、前記切り替えが行われた後、更に実行するプログラムの切り替えを行う際に、切り替え元であるプログラムに関連する前記可変データ領域よりも前に前記スタック形式で確保された前記可変データ領域について、所定の処理によって前記可変データ領域用異常チェックデータと比較するための可変データ領域用比較用データを作成する可変データ領域用比較用データ作成工程と、前記仮想マシンが、前記切り替えが行われた後、更に実行するプログラムの切り替えを行う際に、切り替え元であるプログラムに関連する固定データ領域を含む前記スタック形式で確保された全ての固定データ領域について、所定の処理によって前記固定データ領域用異常チェックデータと比較するための固定データ領域用比較用データを作成する固定データ領域用比較用データ作成工程と、前記仮想マシンが、前記可変データ領域用比較用データ作成工程で可変データ領域用比較用データを作成した場合に、当該可変データ領域用比較用データと同じ前記可変データ領域について先に作成された可変データ領域用異常チェックデータと、当該可変データ領域用比較用データとが一致するか否かを判定する可変データ領域判定工程と、前記仮想マシンが、前記固定データ領域用比較用データ作成工程で固定データ領域用比較用データを作成した場合に、当該固定データ領域用比較用データと同じ前記固定データ領域について先に作成された固定データ領域用異常チェックデータと、当該固定データ領域用比較用データとが一致するか否かを判定する固定データ領域判定工程と、前記仮想マシンが、前記可変データ領域判定工程で可変データ領域用異常チェックデータと可変データ領域用比較用データが一致しないと判定された場合、又は、前記固定データ領域判定工程で固定データ領域用異常チェックデータと固定データ領域用比較用データが一致しないと判定された場合に、異常を検知する異常検知工程と、を含むことを特徴とする。
請求項5に記載の発明は、プログラムを実行する仮想マシンと、前記仮想マシンが実行中であるプログラム又は前記仮想マシンが実行を中断しているプログラムに関連するデータ領域をスタック形式で確保する記憶部と、を備え、前記データ領域が、実行中であるプログラムによって書き換えられる可変データ領域と、実行中であるプログラムによって書き換えられない固定データ領域を含む電子情報記憶媒体における前記仮想マシンを、実行するプログラムの切り替えを行う際に、切り替え先であるプログラムに関連する前記可変データ領域よりも前に前記スタック形式で確保された前記可変データ領域について、所定の処理によって可変データ領域用異常チェックデータを作成する可変データ領域用異常チェックデータ作成手段、実行するプログラムの切り替えを行う際に、前記切り替え先であるプログラムに関連する前記固定データ領域を含む前記スタック形式で確保された全ての前記固定データ領域について、所定の処理によって固定データ領域用異常チェックデータを作成する固定データ領域用異常チェックデータ作成手段、前記切り替えが行われた後、更に実行するプログラムの切り替えを行う際に、切り替え元であるプログラムに関連する前記可変データ領域よりも前に前記スタック形式で確保された前記可変データ領域について、所定の処理によって前記可変データ領域用異常チェックデータと比較するための可変データ領域用比較用データを作成する可変データ領域用比較用データ作成手段、前記切り替えが行われた後、更に実行するプログラムの切り替えを行う際に、切り替え元であるプログラムに関連する固定データ領域を含む前記スタック形式で確保された全ての固定データ領域について、所定の処理によって前記固定データ領域用異常チェックデータと比較するための固定データ領域用比較用データを作成する固定データ領域用比較用データ作成手段、前記可変データ領域用比較用データ作成手段が可変データ領域用比較用データを作成した場合に、当該可変データ領域用比較用データと同じ前記可変データ領域について先に作成された可変データ領域用異常チェックデータと、当該可変データ領域用比較用データとが一致するか否かを判定する可変データ領域判定手段、前記固定データ領域用比較用データ作成手段が固定データ領域用比較用データを作成した場合に、当該固定データ領域用比較用データと同じ前記固定データ領域について先に作成された固定データ領域用異常チェックデータと、当該固定データ領域用比較用データとが一致するか否かを判定する固定データ領域判定手段、前記可変データ領域判定手段により可変データ領域用異常チェックデータと可変データ領域用比較用データが一致しないと判定された場合、又は、前記固定データ領域判定手段により固定データ領域用異常チェックデータと固定データ領域用比較用データが一致しないと判定された場合に、異常を検知する異常検知手段として機能させることを特徴とする。
本発明によれば、スタック形式で確保されているプログラムに関連するデータ領域のうち異常を検知したい領域について、実行するプログラムの開始時に所定の処理により異常チェックデータを作成し、プログラムの終了時に所定の処理により比較用データを作成して比較するといった簡易な手法で、当該領域の異常を検知することができる。
アプリケーションによるメソッドの呼び出し時のコード例を示す図である。 メソッド呼び出し時におけるスタック領域の一例を示す概念図である。 (A)は、ICチップ1aのハードウェア構成例を示す図であり、(B)は、ICチップ1aの機能ブロック例を示す図である。 CPU10による制御情報領域処理の一例を示すフローチャートである。 CPU10による可変データ領域処理(Push)の一例を示すフローチャートである。 CPU10による可変データ領域処理(Pop)の一例を示すフローチャートである。
以下、図面を参照して本発明の実施形態について詳細に説明する。まず、図3等を参照して、ICカード1に搭載されたICチップ1aの概要構成及び機能について説明する。図3(A)は、ICチップ1aのハードウェア構成例を示す図であり、図3(B)は、ICチップ1aの機能ブロック例を示す図である。なお、ICカード1は、キャッシュカード、クレジットカード、電子マネーカード、社員カード等として使用される。或いは、ICカード1は、スマートフォンや携帯電話機等の通信機器に組み込まれる。また、本発明である電子情報記憶媒体はICカード1やICチップ1aを含むものであり、この電子情報記憶媒体は通信機器の回路基板上に直接組み込んで構成するようにしてもよい。
図3(A)に示すように、ICチップ1aは、CPU10、ROM(Read Only Memory)11、データを一時的に記憶するための揮発性メモリであるRAM(Random Access Memory)12、不揮発性メモリであるフラッシュメモリ13(記憶部の一例)、及びI/O回路14を備えて構成される。なお、フラッシュメモリの代わりに「Electrically Erasable Programmable Read-Only Memory」であっても構わない。I/O回路14は、外部端末2とのインターフェイスを担う。これにより、ICチップ1aは、ICリーダ・ライタを備える外部端末2との間で接触又は非接触で通信を行うことができる。接触式のICチップ1aの場合、I/O回路14には、例えば、C1〜C8の8個の端子が備えられている。例えば、C1端子は電源端子(ICチップ1aへ電源供給する端子)、C2端子はリセット端子、C3端子はクロック端子、C5端子はグランド端子、C7端子は外部端末2との間で通信を行うための端子である。一方、非接触式のICチップ1aの場合、I/O回路14には、例えば、アンテナ、及び変復調回路が備えられている。なお、外部端末2の例としては、ICカード発行機、ATM、改札機、認証用ゲート等が挙げられる。或いは、ICチップ1aが通信機器に組み込まれる場合、外部端末2には通信機器の機能を担う制御部が該当する。
CPU10は、コンピュータの一例であり、図3(B)に示すハードウェアとして、フラッシュメモリ13に記憶された各種プログラムを実行する演算装置である。各種プログラムには、仮想マシンプログラム、Java等のプログラム言語で記述されるアプリケーションが含まれる。OS、及び仮想マシンプログラムは、複数のネイティブコード(実行コード群)で記述される。OSは、ICチップ1aの動作を直接コントロールするソフトウェアである。OS、及び仮想マシンプログラムは、ROM11に記憶されてもよい。
仮想マシンプログラムは、CPU10を仮想マシン(実行部の一例)として機能させるプログラムである。OS上で動作する仮想マシンは、ソースコードとネイティブコードとの間の中間コードであるバイトコードを解釈、実行する。プログラマーにより作成されたアプリケーションには、ソースコードが例えば実行順に記述される。そして、このようなアプリケーションは、コンパイラによって仮想マシンの実行形式に変換(つまり、ソースコードからバイトコードに変換)され、インストール(フラッシュメモリ13に記憶)されることになる。このため、フラッシュメモリ13に記憶されているアプリケーションは、複数の命令それぞれを示すバイトコードを例えば実行順に記述する。
仮想マシンは、アプリケーションに記述されたバイトコードを実行順に取得し、該取得したバイトコードを解釈して当該バイトコードが示す命令を実行する。当該命令の実行による処理を、バイトコード処理という。バイトコード処理の内容は、仮想マシンプログラムに規定されている。また、仮想マシンは、アプリケーションに記述された複数のバイトコードのうち、次に実行するべきバイトコードの位置(アプリケーションにおける位置)を特定可能な特定情報を指し示すプログラムカウンタを備える。ここで、特定情報の例として、バイトコードのアドレス(バイトコードが記憶されたフラッシュメモリ13におけるアドレス)、バイトコードのオフセット、バイトコードのラベル値が挙げられる。例えば、公知のComputed gotoアルゴリズムでは、GNU C対応の拡張機能であるlabel as valueにより、ラベル値としてのアドレスに直接ジャンプすることができる。
また、RAM12は、図2を用いて上述したように、仮想マシンにより使用されるスタック領域500を有する。つまり、RAM12全体のメモリ領域のうち一部がスタック領域500として割り当てられる。スタック領域500は、後入れ先出しの構造を有し、仮想マシンによる命令の実行において用いられるデータ領域を一時的に記憶する。より具体的に、スタック領域500には、仮想マシンによるメソッドの呼び出しに伴いデータ領域がフレーム単位で確保され(スタック領域500の先頭にプッシュされて積み上げられる)、メソッドの終了により、当該データ領域はフレーム単位で開放される(スタック領域500の先頭からポップされる)構造になっている。上述したように、データ領域には、メソッドに関連するローカル変数領域、オペランドスタック領域、制御情報領域がある。
また、フラッシュメモリ13には、異常検知プログラムが記憶される。異常検知プログラムは、仮想メモリを、本発明における異常チェックデータ作成手段、比較用データ作成手段、判定手段、及び異常検知手段として機能させる。具体的には、仮想マシンは、異常検知プログラムにより、実行するメソッド(「プログラム」の一例)の切り替えを行う際に、RAM12にスタック形式で確保されているメソッドに関連するローカル変数領域、オペランドスタック領域、制御情報領域の少なくとも一部についてCRC(Cyclic Redundancy Check)による誤り検出符号算出処理(「所定の処理」の一例)によってCRC誤り検出符号(「異常チェックデータ」の一例)を作成し、切り替えが行われた後、更に実行するメソッドの切り替えを行う際に、先にCRC誤り検出符号を作成した領域について、誤り検出符号算出処理によってCRC誤り検出符号(「比較用データ」の一例)を作成する。
すなわち、仮想マシンは、メソッドの切り替え時((呼び出し(Push)時、戻り(Pop)時)に、スタック領域500の一部の領域についてCRC誤り検出符号を用いて異常を検知する。一部の領域とは、実行中のメソッド(「カレントメソッド」という場合がある)のローカル変数領域(「可変データ領域」の一例)及びオペランドスタック領域(「可変データ領域」の一例)を除いた領域であり、具体的には、実行中のメソッドの制御情報領域、実行を中断しているメソッドのローカル変数領域、オペランドスタック領域及び制御情報領域である。より具体的には、図2の例においてメソッド3が実行中であれば、メソッド3のローカル変数領域503a及びメソッド3のオペランドスタック領域503bを除いた領域(メソッド1のローカル変数領域501a、オペランドスタック領域501b、制御情報領域501c、メソッド2のローカル変数領域502a、オペランドスタック領域502b、制御情報領域502c、メソッド3の制御情報領域503c)である。なお、実行中のメソッドのローカル変数領域及びオペランドスタック領域は、実行中のメソッドによる書き換えが行われる領域であり、また、アプリケーションで異常検知の対策が可能であるため、CRC誤り検出符号による異常検知を行わない。
また、仮想マシンは、異常を検知した場合、異常時処理を行う。この異常時処理により、例えば、異常が検知されたこと示す応答が外部端末2へ出力され、ICチップ1aの動作が停止される。このような対策(構成)は、仮想マシンに実装(つまり、仮想マシンプログラム内に組み込む)できるため、ICチップ1aに後からインストールされるアプリケーション側での対策が不要となる。
次に、図4−図6を参照して、ICチップ1aの動作について説明する。図4は、メソッドの切り替え時における制御情報領域に関する処理(制御情報領域処理)の一例を示すフローチャートである。図5は、メソッドの呼び出し(Push)時における可変データ領域(ローカル変数領域及びオペランドスタック領域)に関する処理(可変データ領域処理(Push))の一例を示すフローチャートである。図6は、メソッドの戻り(Pop)時における可変データ領域(ローカル変数領域及びオペランドスタック領域)に関する処理(可変データ領域処理(Pop))の一例を示すフローチャートである。
まず、図4に示す制御情報領域処理について説明する。なお、図4に示す制御情報領域処理は、メソッドが呼び出された場合や、メソッドの処理が完了し、呼び出し元のメソッドに戻る場合に実行される。
CPU10は、スタック領域500に確保されている制御情報領域があるか否かを判定する(ステップS101)。このとき、CPU10は、スタック領域500に確保されている制御情報領域がない(例えば、図1の例でメソッド1が呼び出されたケースである)と判定した場合(ステップS101:NO)、ステップS105の処理に移行する。
一方、CPU10は、スタック領域500に確保されている制御情報領域がある(例えば、図1の例でメソッド2やメソッド3が呼び出されたケースである)と判定した場合(ステップS101:YES)、誤り検出符号算出処理により、最初のメソッドからカレントメソッド(メソッド2からメソッド3が呼び出された場合、カレントメソッドはメソッド2)の制御情報領域までのCRC誤り検出符号を算出する(ステップS102)。例えば、メソッド2からメソッド3が呼び出された場合であれば、メソッド1及びメソッド2の制御情報領域501c、502cについてCRC誤り検出符号を算出する。
次に、CPU10は、RAM12のCRC保持領域(制御情報)に保持しているCRC誤り検出符号(後述するステップS107で算出される)と、ステップS102の処理で算出したCRC誤り検出符号が一致するか否かを判定する(ステップS103)。このとき、CPU10は、CRC誤り検出符号が一致しないと判定した場合には(ステップS103:NO)、異常時処理を実行し(ステップS104)、当該フローチャートに示す処理を終了する。一方、CPU10は、CRC誤り検出符号が一致すると判定した場合には(ステップS103:YES)、ステップS105の処理に移行する。
次に、CPU10は、スタック領域500に新たに呼び出されたメソッドの制御情報領域を確保し(ステップS105)、内容を更新する(ステップS106)。例えば、メソッド2からメソッド3が呼び出された場合であれば、メソッド3の制御情報領域503cを確保し、戻りアドレスや一つ前に呼び出されたメソッド(すなわちメソッド2)のオペランドスタックのアドレス又はオフセット等を記述し更新する。
次に、CPU10は、誤り検出符号算出処理により、更新した制御情報領域までのCRC誤り検出符号を算出し(ステップS107)、算出したCRC誤り検出符号により、RAM12のCRC保持領域(制御情報)に保持しているCRC誤り検出符号を更新し(ステップS108)、当該フローチャートに示す処理を終了する。例えば、メソッド2からメソッド3が呼び出された場合であれば、メソッド1からメソッド3までの制御情報領域501c、502c、503cについてCRC誤り検出符号を算出して、RAM12のCRC保持領域(制御情報)に保持しているCRC誤り検出符号を更新する。
次に、図5に示す可変データ領域処理(Push)について説明する。なお、図5に示す可変データ領域処理(Push)は、メソッドが呼び出された場合に実行される。
CPU10は、スタック領域500に確保されている可変データ領域(ローカル変数領域及びオペランドスタック領域)があるか否かを判定する(ステップS131)。このとき、CPU10は、スタック領域500に確保されている可変データ領域がない(例えば、図1の例でメソッド1が呼び出されたケースである)と判定した場合(ステップS131:NO)、呼び出されたメソッドについて可変データ領域をスタック領域500に確保し(カレントメソッドを呼び出されたメソッドに変更し)(ステップS138)、当該フローチャートに示す処理を終了する。
一方、CPU10は、スタック領域500に確保されている可変データ領域がある(例えば、図1の例でメソッド2やメソッド3が呼び出されたケースである)と判定した場合(ステップS131:YES)、スタック領域500に確保されている可変データ領域は一つ(ローカル変数領域及びオペランドスタック領域の組合せで一つの可変データ領域と数えるものとする)か否かを判定する(ステップS132)。
このとき、CPU10は、スタック領域500に確保されている可変データ領域が一つである(例えば、図1の例でメソッド2が呼び出されたケースである)場合には(ステップS132:YES)と判定した場合には、ステップS136の処理に移行する。
一方、CPU10は、スタック領域500に確保されている可変データ領域が一つではないと判定した場合には(ステップS132:NO)、次いで、誤り検出符号算出処理により、カレントメソッドの一つ前のメソッドまでの可変データ領域についてCRC誤り検出符号を算出する(ステップS133)。例えば、メソッド2からメソッド3が呼び出された場合であれば、カレントメソッドであるメソッド2の一つ前のメソッド1の可変データ領域(ローカル変数領域501a、オペランドスタック領域501b)についてCRC誤り検出符号を算出する。
次に、CPU10は、RAM12のCRC保持領域(可変データ)に保持しているCRC誤り検出符号(後述するステップS136又は図6のステップS155の処理で算出される)と、ステップS133の処理で算出したCRC誤り検出符号が一致するか否かを判定する(ステップS134)。このとき、CPU10は、CRC誤り検出符号が一致しないと判定した場合には(ステップS134:NO)、異常時処理を実行し(ステップS135)、当該フローチャートに示す処理を終了する。一方、CPU10は、CRC誤り検出符号が一致すると判定した場合には(ステップS134:YES)、ステップS136の処理に移行する。
次に、CPU10は、スタック領域500におけるカレントメソッドまでの可変データ領域についてCRC誤り検出符号を算出し(ステップS136)、算出したCRC誤り検出符号により、RAM12のCRC保持領域(可変データ)に保持しているCRC誤り検出符号を更新する(ステップS137)。例えば、メソッド2からメソッド3が呼び出された場合であれば、カレントメソッドはメソッド2であるので、メソッド1からメソッド2までの可変データ領域についてCRC誤り検出符号して、RAM12に保持しているCRC誤り検出符号を更新する。
次に、CPU10は、スタック領域500に新たに呼び出されたメソッドの可変データ領域を確保し(カレントメソッドを呼び出されたメソッドに変更し)(ステップS138)、当該フローチャートに示す処理を終了する。
次に、図6に示す可変データ領域処理(Pop)について説明する。なお、図6に示す可変データ領域処理(Pop)は、メソッドの処理が完了し、呼び出し元のメソッドに戻る場合に実行される。
まず、CPU10は、スタック領域500における呼び出し元のメソッドの可変データ領域を開放する(カレントメソッドを呼び出し元のメソッドに変更する)(ステップS151)。例えば、メソッド3が終了し、呼び出し元のメソッド2に戻る場合であれば、メソッド3の可変データ領域を開放し、カレントメソッドをメソッド2に変更する。
次に、CPU10は、誤り検出符号算出処理により、カレントメソッドまでの可変データ領域についてCRC誤り検出符号を算出する(ステップS152)。例えば、カレントメソッドがメソッド2である場合、メソッド1及びメソッド2の可変データ領域(ローカル変数領域501a、オペランドスタック領域501b、ローカル変数領域502a、オペランドスタック領域502b)についてCRC誤り検出符号を算出する。
次に、CPU10は、RAM12のCRC保持領域(可変データ)に保持しているCRC誤り検出符号(後述するステップS155又は図5のステップS136の処理で算出される)と、ステップS152の処理で算出したCRC誤り検出符号が一致するか否かを判定する(ステップS153)。このとき、CPU10は、CRC誤り検出符号が一致しないと判定した場合には(ステップS153:NO)、異常時処理を実行し(ステップS154)、当該フローチャートに示す処理を終了する。一方、CPU10は、CRC誤り検出符号が一致すると判定した場合には(ステップS153:YES)、ステップS155の処理に移行する。
次に、CPU10は、誤り検出符号算出処理により、スタック領域500におけるカレントメソッドの一つ前までの可変データ領域についてCRC誤り検出符号を算出し(ステップS155)、算出したCRC誤り検出符号により、RAM12のCRC保持領域(可変データ)に保持しているCRC誤り検出符号を更新し(ステップS156)、当該フローチャートに示す処理を終了する。例えば、メソッド3を終了してメソッド2に戻る場合であれば、ステップS151の処理によりカレントメソッドがメソッド2となるので、メソッド1までの可変データ領域についてCRC誤り検出符号して、RAM12に保持しているCRC誤り検出符号を更新する。なお、メソッド2を終了してメソッド1に戻る場合は、メソッド1より前のメソッドが存在しないので、CRC誤り検出符号を算出せずに、RAM12のCRC保持領域(可変データ)を初期化する。
以上説明したように、上記実施形態によれば、仮想マシン(「異常チェックデータ作成手段」、「比較用データ作成手段」、「判定手段」、「異常検知手段」の一例)は、実行するメソッド(「プログラム」の一例)の切り替えを行う際に、フラッシュメモリ13(「記憶部」の一例)にスタック形式で確保されているメソッドのローカル変数領域、オペランドスタック領域、制御情報領域の少なくとも一部について誤り検出符号算出処理によってCRC誤り検出符号(「異常チェックデータ」の一例)を算出し、当該切り替えが行われた後、更に実行するメソッドの切り替えを行う際に、先にCRC誤り検出符号を算出した部分について、誤り検出符号算出処理によってCRC誤り検出符号(「比較用データ」の一例)を算出し、両CRC誤り検出符号が一致するか否かを判定して、判定において一致しないと判定した場合に異常を検知する。
したがって、上記実施形態によれば、スタック形式で確保されているメソッドに関連するデータ領域のうち異常を検知したい領域について、実行するメソッドの開始時に誤り検出符号算出処理によりCRC誤り検出符号を作成し、当該メソッドの終了時に誤り検出符号算出処理によりCRC誤り検出符号を作成して比較するといった簡易な手法で、当該領域の異常を検知することができる。
また、上記実施形態において、仮想マシンは、実行するメソッドの切り替えを行う際に、切り替え先であるメソッドに関連する可変データ領域よりも前にスタック領域500に確保された可変データ領域についてCRC誤り検出符号を作成し、また、実行するメソッドの切り替えを行う際に、切り替え元であるメソッドに関連する可変データ領域よりも前にスタック領域500に確保された可変データ領域について作成された前記CRC誤り検出符号と比較するためのCRC誤り検出符号を作成する。これにより、新たに実行されるメソッド以外のスタック領域500に確保された可変データ領域について異常を検知することができる。
更に、上記実施形態においては、仮想マシンは、実行するメソッドの切り替えを行う際に、切り替え先であるメソッドに関連する制御情報領域(「固定データ領域」の一例)を含むスタック領域500に確保された全ての制御情報領域についてCRC誤り検出符号を作成し、また、実行するメソッドの切り替えを行う際に、切り替え元であるメソッドに関連する制御情報領域を含むスタック領域500に確保された全ての制御情報領域についてCRC誤り検出符号を作成する。これにより、新たに実行されるメソッドを含めスタック領域500に確保された全ての制御情報領域について異常を検知することができる。
なお、上記実施形態においては、本発明の電子情報記憶媒体の一例としてICチップ1aを例にとって説明したが、本発明は、組込み型のマイクロチップ等に対して適用することもできる。
また、上記実施形態においては、異常を検知するためにCRC誤り検出符号を用いることとしたが、他の誤り検出符号を用いることとしてもよい。
1 ICカード
2 外部端末
1a ICチップ
10 CPU
11 ROM
12 RAM
13 フラッシュメモリ
14 I/O回路

Claims (5)

  1. プログラムを実行する仮想マシンと、前記仮想マシンが実行中であるプログラム又は前記仮想マシンが実行を中断しているプログラムに関連するデータ領域をスタック形式で確保する記憶部と、を備え、前記データ領域が、実行中であるプログラムによって書き換えられる可変データ領域と、実行中であるプログラムによって書き換えられない固定データ領域を含む電子情報記憶媒体であって、
    前記仮想マシンは、
    実行するプログラムの切り替えを行う際に、切り替え先であるプログラムに関連する前記可変データ領域よりも前に前記スタック形式で確保された前記可変データ領域について所定の処理によって可変データ領域用異常チェックデータを作成する可変データ領域用異常チェックデータ作成手段と、
    実行するプログラムの切り替えを行う際に、前記切り替え先であるプログラムに関連する前記固定データ領域を含む前記スタック形式で確保された全ての前記固定データ領域について所定の処理によって固定データ領域用異常チェックデータを作成する固定データ領域用異常チェックデータ作成手段と、
    前記切り替えが行われた後、更に実行するプログラムの切り替えを行う際に、切り替え元であるプログラムに関連する前記可変データ領域よりも前に前記スタック形式で確保された前記可変データ領域について、所定の処理によって前記可変データ領域用異常チェックデータと比較するための可変データ領域用比較用データを作成する可変データ領域用比較用データ作成手段と、
    前記切り替えが行われた後、更に実行するプログラムの切り替えを行う際に、切り替え元であるプログラムに関連する固定データ領域を含む前記スタック形式で確保された全ての固定データ領域について、所定の処理によって前記固定データ領域用異常チェックデータと比較するための固定データ領域用比較用データを作成する固定データ領域用比較用データ作成手段と、
    前記可変データ領域用比較用データ作成手段が可変データ領域用比較用データを作成した場合に、当該可変データ領域用比較用データと同じ前記可変データ領域について先に作成された可変データ領域用異常チェックデータと、当該可変データ領域用比較用データとが一致するか否かを判定する可変データ領域判定手段と、
    前記固定データ領域用比較用データ作成手段が固定データ領域用比較用データを作成した場合に、当該固定データ領域用比較用データと同じ前記固定データ領域について先に作成された固定データ領域用異常チェックデータと、当該固定データ領域用比較用データとが一致するか否かを判定する固定データ領域判定手段と、
    前記可変データ領域判定手段により可変データ領域用異常チェックデータと可変データ領域用比較用データが一致しないと判定された場合、又は、前記固定データ領域判定手段により固定データ領域用異常チェックデータと固定データ領域用比較用データが一致しないと判定された場合に、異常を検知する異常検知手段
    として動作することを特徴とする電子情報記憶媒体。
  2. 請求項1に記載の電子情報記憶媒体であって、
    前記記憶部は、前記可変データ領域用異常チェックデータを記憶する可変データ領域用異常チェックデータ記憶領域と、前記固定データ領域用異常チェックデータを記憶する固定データ領域用異常チェックデータ記憶領域と、を有し、
    前記可変データ領域用異常チェックデータ記憶領域は、前記可変データ領域用異常チェックデータ作成手段が前記可変データ領域用異常チェックデータを作成した場合に当該可変データ領域用異常チェックデータにより更新され、
    前記固定データ領域用異常チェックデータ記憶領域は、前記固定データ領域用異常チェックデータ作成手段が前記固定データ領域用異常チェックデータを作成した場合に当該固定データ領域用異常チェックデータにより更新されることを特徴とする電子情報記憶媒体。
  3. 請求項1又は2に記載の電子情報記憶媒体であって、
    前記可変データ領域は、前記プログラムで宣言されたデータを保持する領域と、前記プログラムが実行される際に使用される領域と、を含み、
    前記固定データ領域は、前記プログラムの戻りアドレスを保持する領域を含む、ことを特徴とする電子情報記憶媒体。
  4. プログラムを実行する仮想マシンと、前記仮想マシンが実行中であるプログラム又は前記仮想マシンが実行を中断しているプログラムに関連するデータ領域をスタック形式で確保する記憶部と、を備え、前記データ領域が、実行中であるプログラムによって書き換えられる可変データ領域と、実行中であるプログラムによって書き換えられない固定データ領域を含む電子情報記憶媒体における異常検知方法であって、
    前記仮想マシンが、実行するプログラムの切り替えを行う際に、切り替え先であるプログラムに関連する前記可変データ領域よりも前に前記スタック形式で確保された前記可変データ領域について、所定の処理によって可変データ領域用異常チェックデータを作成する可変データ領域用異常チェックデータ作成工程と、
    前記仮想マシンが、実行するプログラムの切り替えを行う際に、前記切り替え先であるプログラムに関連する前記固定データ領域を含む前記スタック形式で確保された全ての前記固定データ領域について、所定の処理によって固定データ領域用異常チェックデータを作成する固定データ領域用異常チェックデータ作成工程と、
    前記仮想マシンが、前記切り替えが行われた後、更に実行するプログラムの切り替えを行う際に、切り替え元であるプログラムに関連する前記可変データ領域よりも前に前記スタック形式で確保された前記可変データ領域について、所定の処理によって前記可変データ領域用異常チェックデータと比較するための可変データ領域用比較用データを作成する可変データ領域用比較用データ作成工程と、
    前記仮想マシンが、前記切り替えが行われた後、更に実行するプログラムの切り替えを行う際に、切り替え元であるプログラムに関連する固定データ領域を含む前記スタック形式で確保された全ての固定データ領域について、所定の処理によって前記固定データ領域用異常チェックデータと比較するための固定データ領域用比較用データを作成する固定データ領域用比較用データ作成工程と、
    前記仮想マシンが、前記可変データ領域用比較用データ作成工程で可変データ領域用比較用データを作成した場合に、当該可変データ領域用比較用データと同じ前記可変データ領域について先に作成された可変データ領域用異常チェックデータと、当該可変データ領域用比較用データとが一致するか否かを判定する可変データ領域判定工程と、
    前記仮想マシンが、前記固定データ領域用比較用データ作成工程で固定データ領域用比較用データを作成した場合に、当該固定データ領域用比較用データと同じ前記固定データ領域について先に作成された固定データ領域用異常チェックデータと、当該固定データ領域用比較用データとが一致するか否かを判定する固定データ領域判定工程と、
    前記仮想マシンが、前記可変データ領域判定工程で可変データ領域用異常チェックデータと可変データ領域用比較用データが一致しないと判定された場合、又は、前記固定データ領域判定工程で固定データ領域用異常チェックデータと固定データ領域用比較用データが一致しないと判定された場合に、異常を検知する異常検知工程と、
    を含むことを特徴とする異常検知方法。
  5. プログラムを実行する仮想マシンと、前記仮想マシンが実行中であるプログラム又は前記仮想マシンが実行を中断しているプログラムに関連するデータ領域をスタック形式で確保する記憶部と、を備え、前記データ領域が、実行中であるプログラムによって書き換えられる可変データ領域と、実行中であるプログラムによって書き換えられない固定データ領域を含む電子情報記憶媒体における前記仮想マシンを、
    実行するプログラムの切り替えを行う際に、切り替え先であるプログラムに関連する前記可変データ領域よりも前に前記スタック形式で確保された前記可変データ領域について、所定の処理によって可変データ領域用異常チェックデータを作成する可変データ領域用異常チェックデータ作成手段、
    実行するプログラムの切り替えを行う際に、前記切り替え先であるプログラムに関連する前記固定データ領域を含む前記スタック形式で確保された全ての前記固定データ領域について、所定の処理によって固定データ領域用異常チェックデータを作成する固定データ領域用異常チェックデータ作成手段、
    前記切り替えが行われた後、更に実行するプログラムの切り替えを行う際に、切り替え元であるプログラムに関連する前記可変データ領域よりも前に前記スタック形式で確保された前記可変データ領域について、所定の処理によって前記可変データ領域用異常チェックデータと比較するための可変データ領域用比較用データを作成する可変データ領域用比較用データ作成手段、
    前記切り替えが行われた後、更に実行するプログラムの切り替えを行う際に、切り替え元であるプログラムに関連する固定データ領域を含む前記スタック形式で確保された全ての固定データ領域について、所定の処理によって前記固定データ領域用異常チェックデータと比較するための固定データ領域用比較用データを作成する固定データ領域用比較用データ作成手段、
    前記可変データ領域用比較用データ作成手段が可変データ領域用比較用データを作成した場合に、当該可変データ領域用比較用データと同じ前記可変データ領域について先に作成された可変データ領域用異常チェックデータと、当該可変データ領域用比較用データとが一致するか否かを判定する可変データ領域判定手段、
    前記固定データ領域用比較用データ作成手段が固定データ領域用比較用データを作成した場合に、当該固定データ領域用比較用データと同じ前記固定データ領域について先に作成された固定データ領域用異常チェックデータと、当該固定データ領域用比較用データとが一致するか否かを判定する固定データ領域判定手段、
    前記可変データ領域判定手段により可変データ領域用異常チェックデータと可変データ領域用比較用データが一致しないと判定された場合、又は、前記固定データ領域判定手段により固定データ領域用異常チェックデータと固定データ領域用比較用データが一致しないと判定された場合に、異常を検知する異常検知手段
    として機能させることを特徴とする異常検知プログラム。
JP2016125669A 2016-06-24 2016-06-24 電子情報記憶媒体、異常検知方法、及び異常検知プログラム Active JP6798157B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016125669A JP6798157B2 (ja) 2016-06-24 2016-06-24 電子情報記憶媒体、異常検知方法、及び異常検知プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016125669A JP6798157B2 (ja) 2016-06-24 2016-06-24 電子情報記憶媒体、異常検知方法、及び異常検知プログラム

Publications (2)

Publication Number Publication Date
JP2017228222A JP2017228222A (ja) 2017-12-28
JP6798157B2 true JP6798157B2 (ja) 2020-12-09

Family

ID=60891792

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016125669A Active JP6798157B2 (ja) 2016-06-24 2016-06-24 電子情報記憶媒体、異常検知方法、及び異常検知プログラム

Country Status (1)

Country Link
JP (1) JP6798157B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6905190B2 (ja) * 2017-09-01 2021-07-21 富士通株式会社 情報処理装置およびスタック破壊検出プログラム
CN112379656A (zh) * 2020-10-09 2021-02-19 爱普(福建)科技有限公司 工业系统异常数据的检测的处理方法、装置、设备和介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2857473B1 (fr) * 2003-07-11 2005-09-16 Oberthur Card Syst Sa Procede de securisation de l'execution d'un programme informatique, notamment dans une carte a microcircuit
JP5039728B2 (ja) * 2009-02-24 2012-10-03 三菱重工業株式会社 コンピュータメモリにおけるスタック領域のデータの保護方法

Also Published As

Publication number Publication date
JP2017228222A (ja) 2017-12-28

Similar Documents

Publication Publication Date Title
US9483283B1 (en) Enhanced code callback
CN104111848B (zh) 一种基于异步检查点的多线程软件动态升级方法
EP2519908B1 (en) Jcvm bytecode execution protection against fault attacks
JP2007517299A (ja) 実行トレースプリントを検証することによるプログラム実行整合性の制御方法
JP2009288908A (ja) メモリの内容を改竄する故障攻撃の検知方法、セキュリティデバイス及びコンピュータプログラム
US7797682B2 (en) Controlled execution of a program used for a virtual machine on a portable data carrier
CN109240720A (zh) 一种安卓系统的固件升级方法及一种存储设备
US7991953B2 (en) Method of verifying pseudo-code loaded in an embedded system, in particular a smart card
JP6798157B2 (ja) 電子情報記憶媒体、異常検知方法、及び異常検知プログラム
US20060242700A1 (en) Method for making secure execution of a computer programme, in particular in a smart card
US8819449B2 (en) Event counter in a system adapted to the JavaCard language
JP5050893B2 (ja) Icカードへの攻撃検知方法、icカードおよびicカード用プログラム
US10579457B1 (en) Processor for achieving flow integrity and a method of providing notice of a fault in control flow
JP6769265B2 (ja) 電子情報記憶媒体、icカード、データ異常確認方法、及びデータ異常確認プログラム
CN105573814A (zh) 一种java卡局部变量字节码采用芯片硬件解析执行的方法
US8458790B2 (en) Defending smart cards against attacks by redundant processing
JP7284002B2 (ja) 半導体装置、制御方法およびプログラム
JP6424633B2 (ja) 電子情報記憶媒体、異常検知方法、及びプログラム
US9483641B2 (en) Method and device for the performance of a function by a microcircuit
US9513933B2 (en) Method of interruption of meta language program code execution
JP6175882B2 (ja) 情報記憶媒体、icカード、バイトコード実行方法
JP6136541B2 (ja) 情報記憶媒体及びバイトコード実行方法
JP7247638B2 (ja) 電子情報記憶媒体、icカード、改竄チェック方法、及びプログラム
JP6447219B2 (ja) 電子情報記憶媒体、アプリケーション置換方法、プログラム、及びicカード
JP6119345B2 (ja) Icチップ、icカード、検証処理方法、及び検証処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190425

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200331

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200528

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201020

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201102

R150 Certificate of patent or registration of utility model

Ref document number: 6798157

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150