(57)【要約】【課題】ＳＣＡの対策に対して、ＩＣチップ等の情報記憶媒体に書き込まれるプログラムの保護を、処理が複雑化しない構成で効率良く行うことが可能な書込装置、書込方法、書込処理プログラム、及び情報記憶媒体を提供する。【解決手段】本発明の書込装置は、所定のプログラムを構成する複数の実行コードの情報記憶媒体のメモリにおける配列であってデフォルト設定された配列を並び替え、前記配列が並び替えられた前記複数の実行コードを前記情報記憶媒体のメモリに書き込ませる。【選択図】図２
2015038723.tif 000002
【特許請求の範囲】
【請求項１】
所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体に情報を書き込む書込装置であって、
前記複数の実行コードの前記情報記憶媒体のメモリにおける配列であってデフォルト設定された配列を並び替える並替手段と、
前記並替手段により前記配列が並び替えられた前記複数の実行コードを前記情報記憶媒体のメモリに書き込ませる書き込み制御手段と、
を備えることを特徴とする書込装置。
【請求項２】
前記実行コードを識別する識別情報と、前記実行コードが書き込まれる前記メモリにおけるアドレスを示すアドレス情報との対応関係を前記実行コードごとに示す参照テーブルであって、前記並替手段により前記配列が並び替えられた後の前記対応関係を示す前記参照テーブルを生成する生成手段と、
前記生成手段により生成された参照テーブルを前記情報記憶媒体へ送信する送信手段と、
を備えることを特徴とする請求項１に記載の書込装置。
【請求項３】
所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体であって、前記複数の実行コードのうち少なくとも何れか一つの実行コードが少なくとも２重化された前記複数の実行コードをメモリに記憶した前記情報記憶媒体に情報を書き込む書込装置であって、
前記実行コードを識別する識別情報と、前記実行コードが書き込まれる前記メモリにおけるアドレスを示すアドレス情報との対応関係を前記実行コードごとに示す参照テーブルであって、前記少なくとも２重化された実行コードについてはこれらの実行コードのうちから選択される何れか一つの実行コードを識別する識別情報と、当該実行コードが記憶された前記メモリにおけるアドレスを示すアドレス情報との対応関係を示す参照テーブルを生成する生成手段と、
前記生成手段により生成された参照テーブルを前記情報記憶媒体へ送信する送信手段と、
を備えることを特徴とする書込装置。
【請求項４】
所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体であって、
メモリと、
前記複数の実行コードの前記メモリにおける配列であってデフォルト設定された配列が並び替えられた前記複数の実行コードを書込装置から取得して前記メモリに書き込む書込手段と、
前記実行コードを識別する識別情報と、前記実行コードが書き込まれる前記メモリにおけるアドレスを示すアドレス情報との対応関係を前記実行コードごとに示す参照テーブルであって、前記配列が並び替えられた後の前記対応関係を示す前記参照テーブルを生成する生成手段と、
を備えることを特徴とする情報記憶媒体。
【請求項５】
所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体であって、
前記複数の実行コードを記憶するメモリと、
前記メモリに記憶されている前記複数の実行コードの当該メモリにおける配列を並び替える並替手段と、
前記並替手段により前記配列が並び替えられた前記複数の実行コードを前記メモリに書き込む書込手段と、
前記実行コードを識別する識別情報と、前記実行コードが書き込まれる前記メモリにおけるアドレスを示すアドレス情報との対応関係を前記実行コードごとに示す参照テーブルであって、前記配列が並び替えられた後の前記対応関係を示す前記参照テーブルを生成する生成手段と、
を備えることを特徴とする情報記憶媒体。
【請求項６】
所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体であって、
前記複数の実行コードのうち少なくとも何れか一つの実行コードが少なくとも２重化された前記複数の実行コードを記憶するメモリと、
前記実行コードを識別する識別情報と、前記実行コードが書き込まれる前記メモリにおけるアドレスを示すアドレス情報との対応関係を前記実行コードごとに示す参照テーブルであって、前記少なくとも２重化された実行コードについてはこれらの実行コードのうちから選択される何れか一つの実行コードを識別する識別情報と、当該実行コードが書き込まれる前記メモリにおけるアドレスを示すアドレス情報との対応関係を示す参照テーブルを生成する生成手段と、
を備えることを特徴とする情報記憶媒体。
【請求項７】
所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体に情報を書き込むコンピュータにより実行される情報記憶媒体の書込方法であって、
前記複数の実行コードの前記情報記憶媒体のメモリにおける配列であってデフォルト設定された配列を並び替える並替ステップと、
前記並替ステップにより前記配列が並び替えられた前記複数の実行コードを前記情報記憶媒体のメモリに書き込ませる書き込み制御ステップと、
を含むことを特徴とする書込方法。
【請求項８】
所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体であって、前記複数の実行コードのうち少なくとも何れか一つの実行コードが少なくとも２重化された前記複数の実行コードをメモリに記憶した前記情報記憶媒体に情報を書き込むコンピュータにより実行される書込方法であって、
前記実行コードを識別する識別情報と、前記実行コードが書き込まれる前記メモリにおけるアドレスを示すアドレス情報との対応関係を前記実行コードごとに示す参照テーブルであって、前記少なくとも２重化された実行コードについてはこれらの実行コードのうちから選択される何れか一つの実行コードを識別する識別情報と、当該実行コードが記憶された前記メモリにおけるアドレスを示すアドレス情報との対応関係を示す参照テーブルを生成する生成ステップと、
前記生成ステップにより生成された参照テーブルを前記情報記憶媒体へ送信する送信ステップと、
を含むことを特徴とする書込方法。
【請求項９】
所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体に情報を書き込むコンピュータを、
前記複数の実行コードの前記情報記憶媒体のメモリにおける配列であってデフォルト設定された配列を並び替える並替手段と、
前記並替手段により前記配列が並び替えられた前記複数の実行コードを前記情報記憶媒体のメモリに書き込ませる書き込み制御手段として機能させることを特徴とする書込処理プログラム。
【請求項１０】
所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体であって、前記複数の実行コードのうち少なくとも何れか一つの実行コードが少なくとも２重化された前記複数の実行コードをメモリに記憶した前記情報記憶媒体に情報を書き込むコンピュータを、
前記実行コードを識別する識別情報と、前記実行コードが書き込まれる前記メモリにおけるアドレスを示すアドレス情報との対応関係を前記実行コードごとに示す参照テーブルであって、前記少なくとも２重化された実行コードについてはこれらの実行コードのうちから選択される何れか一つの実行コードを識別する識別情報と、当該実行コードが記憶された前記メモリにおけるアドレスを示すアドレス情報との対応関係を示す参照テーブルを生成する生成手段と、
前記生成手段により生成された参照テーブルを前記情報記憶媒体へ送信する送信手段として機能させることを特徴とする書込処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定のプログラムを構成する複数の実行コードを実行可能なＩＣチップ等の情報記憶媒体が備えるメモリに前記プログラムを書き込ませる装置等の技術に関する。
【背景技術】
【０００２】
従来から、例えばＩＣカードに搭載されるＩＣチップでは、Java（登録商標）Cardに対応しているものが多い。Java（登録商標）といったプログラム言語は、ハードウェアの依存性を吸収するために、Ｃ言語のようにコンパイルによってソースコードからネイティブコード（機械語）に変換されるものと異なり、コンパイラによって中間言語と呼ばれる実行形式である中間コード（バイトコード）に変換される。中間コードとは、算術や分岐といった命令を含んだデータ列である。この中間コードは、仮想マシン（Virtual Machine
）により解釈及び実行される。このような仮想マシンを備えるＩＣチップでは、仮想マシンの命令解釈部を、各命令（中間コード）の実装（実行コード）の先頭番地（つまり、メモリにおける先頭アドレス）の配列で実現していることが多い。また、現存するＩＣチップの多くがプログラム（命令解釈部を含む実行コード）をＲＯＭに記録している（半導体製造工程中に実行コードの配置が確定する）が、最近では、ＲＯＭ容量を減らし、フラッシュメモリ等の不揮発性メモリを大容量化したＩＣチップも多く、前述のようなプログラムを不揮発メモリに記録するＩＣチップが増えている（半導体ベンダから出荷された後に実行コードとその配置が確定する）。
【０００３】
ところで、ＩＣチップの消費電力や放射電磁界などの変化を解析することで、ＩＣチップ内部の処理や内部にしかない秘密情報を推測する攻撃手法として、ＳＣＡ（Side Channel Analysis)が広く知られている。中でも、入手しやすいサンプルカードのサイドチャネル情報を解析してその特徴を事前に学習しておき、同じＩＣチップを採用した流通カード（例えば、クレジットカード）などから秘密情報を類推する攻撃手法が注目されている。これは、学習（攻撃準備）に用いたサンプルカードと流通カードのそれぞれから得られるサイドチャネル情報が酷似していることに起因する。このようなＳＣＡの対策に関連する技術として、暗号処理動作の間に予測不能な電力量を計算することで電力消費の測定にノイズを導入する暗号処理装置が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第７５９９４８８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載された暗号処理装置では、処理が複雑化し、回路規模が増大してしまうという問題がある。また、特許文献１に記載された暗号処理装置では、ＳＣＡの対策に対して、ＩＣチップ等の情報記憶媒体に書き込まれるプログラム自体の保護に着目されていない。
【０００６】
本発明は、ＳＣＡの対策に対して、ＩＣチップ等の情報記憶媒体に書き込まれるプログラムの保護を、処理が複雑化しない構成で効率良く行うことが可能な書込装置、書込方法、書込処理プログラム、及び情報記憶媒体を提供することを課題とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、請求項１に記載の発明は、所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体に情報を書き込む書込装置であって、前記複数の実行コードの前記情報記憶媒体のメモリにおける配列であってデフォルト設定された配列を並び替える並替手段と、前記並替手段により前記配列が並び替えられた前記複数の実行コードを前記情報記憶媒体のメモリに書き込ませる書き込み制御手段と、を備えることを特徴とする。
【０００８】
請求項２に記載の発明は、請求項１に記載の書込装置において、前記実行コードを識別する識別情報と、前記実行コードが書き込まれる前記メモリにおけるアドレスを示すアドレス情報との対応関係を前記実行コードごとに示す参照テーブルであって、前記並替手段により前記配列が並び替えられた後の前記対応関係を示す前記参照テーブルを生成する生成手段と、前記生成手段により生成された参照テーブルを前記情報記憶媒体へ送信する送信手段と、を備えることを特徴とする。
【０００９】
請求項３に記載の発明は、所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体であって、前記複数の実行コードのうち少なくとも何れか一つの実行コードが少なくとも２重化された前記複数の実行コードをメモリに記憶した前記情報記憶媒体に情報を書き込む書込装置であって、前記実行コードを識別する識別情報と、前記実行コードが書き込まれる前記メモリにおけるアドレスを示すアドレス情報との対応関係を前記実行コードごとに示す参照テーブルであって、前記少なくとも２重化された実行コードについてはこれらの実行コードのうちから選択される何れか一つの実行コードを識別する識別情報と、当該実行コードが記憶された前記メモリにおけるアドレスを示すアドレス情報との対応関係を示す参照テーブルを生成する生成手段と、前記生成手段により生成された参照テーブルを前記情報記憶媒体へ送信する送信手段と、を備えることを特徴とする。
【００１０】
請求項４に記載の発明は、所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体であって、メモリと、前記複数の実行コードの前記メモリにおける配列であってデフォルト設定された配列が並び替えられた前記複数の実行コードを書込装置から取得して前記メモリに書き込む書込手段と、前記実行コードを識別する識別情報と、前記実行コードが書き込まれる前記メモリにおけるアドレスを示すアドレス情報との対応関係を前記実行コードごとに示す参照テーブルであって、前記配列が並び替えられた後の前記対応関係を示す前記参照テーブルを生成する生成手段と、を備えることを特徴とする。
【００１１】
請求項５に記載の発明は、所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体であって、前記複数の実行コードを記憶するメモリと、前記メモリに記憶されている前記複数の実行コードの当該メモリにおける配列を並び替える並替手段と、前記並替手段により前記配列が並び替えられた前記複数の実行コードを前記メモリに書き込む書込手段と、前記実行コードを識別する識別情報と、前記実行コードが書き込まれる前記メモリにおけるアドレスを示すアドレス情報との対応関係を前記実行コードごとに示す参照テーブルであって、前記配列が並び替えられた後の前記対応関係を示す前記参照テーブルを生成する生成手段と、を備えることを特徴とする。
【００１２】
請求項６に記載の発明は、所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体であって、前記複数の実行コードのうち少なくとも何れか一つの実行コードが少なくとも２重化された前記複数の実行コードを記憶するメモリと、前記実行コードを識別する識別情報と、前記実行コードが書き込まれる前記メモリにおけるアドレスを示すアドレス情報との対応関係を前記実行コードごとに示す参照テーブルであって、前記少なくとも２重化された実行コードについてはこれらの実行コードのうちから選択される何れか一つの実行コードを識別する識別情報と、当該実行コードが書き込まれる前記メモリにおけるアドレスを示すアドレス情報との対応関係を示す参照テーブルを生成する生成手段と、を備えることを特徴とする。
【００１３】
請求項７に記載の発明は、所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体に情報を書き込むコンピュータにより実行される情報記憶媒体の書込方法であって、前記複数の実行コードの前記情報記憶媒体のメモリにおける配列であってデフォルト設定された配列を並び替える並替ステップと、前記並替ステップにより前記配列が並び替えられた前記複数の実行コードを前記情報記憶媒体のメモリに書き込ませる書き込み制御ステップと、を含むことを特徴とする。
【００１４】
請求項８に記載の発明は、所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体であって、前記複数の実行コードのうち少なくとも何れか一つの実行コードが少なくとも２重化された前記複数の実行コードをメモリに記憶した前記情報記憶媒体に情報を書き込むコンピュータにより実行される書込方法であって、前記実行コードを識別する識別情報と、前記実行コードが書き込まれる前記メモリにおけるアドレスを示すアドレス情報との対応関係を前記実行コードごとに示す参照テーブルであって、前記少なくとも２重化された実行コードについてはこれらの実行コードのうちから選択される何れか一つの実行コードを識別する識別情報と、当該実行コードが記憶された前記メモリにおけるアドレスを示すアドレス情報との対応関係を示す参照テーブルを生成する生成ステップと、前記生成ステップにより生成された参照テーブルを前記情報記憶媒体へ送信する送信ステップと、を含むことを特徴とする。
【００１５】
請求項９に記載の発明は、所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体に情報を書き込むコンピュータを、前記複数の実行コードの前記情報記憶媒体のメモリにおける配列であってデフォルト設定された配列を並び替える並替手段と、前記並替手段により前記配列が並び替えられた前記複数の実行コードを前記情報記憶媒体のメモリに書き込ませる書き込み制御手段として機能させることを特徴とする。
【００１６】
請求項１０に記載の発明は、所定のプログラムを構成する複数の実行コードを実行可能な情報記憶媒体であって、前記複数の実行コードのうち少なくとも何れか一つの実行コードが少なくとも２重化された前記複数の実行コードをメモリに記憶した前記情報記憶媒体に情報を書き込むコンピュータを、前記実行コードを識別する識別情報と、前記実行コードが書き込まれる前記メモリにおけるアドレスを示すアドレス情報との対応関係を前記実行コードごとに示す参照テーブルであって、前記少なくとも２重化された実行コードについてはこれらの実行コードのうちから選択される何れか一つの実行コードを識別する識別情報と、当該実行コードが記憶された前記メモリにおけるアドレスを示すアドレス情報との対応関係を示す参照テーブルを生成する生成手段と、前記生成手段により生成された参照テーブルを前記情報記憶媒体へ送信する送信手段として機能させることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、ＩＣチップ等の情報記憶媒体に書き込まれるプログラムの保護を、処理が複雑化しない構成で効率良く行うことができる。
【図面の簡単な説明】
【００１８】
【図１】ＩＣカード発行システムＳの概要構成例を示す図である。
【図２】（Ａ），（Ｂ）は、ＩＣカード発行機２における制御部２１の処理例を示すフローチャートである。
【図３】（Ａ）は、サンプルカードと、実施例１の処理で発行されたＩＣカード１の参照テーブル及び実装配列を示す図であり、（Ｂ）は、サンプルカードと、実施例２の処理で発行されたＩＣカード１の参照テーブル及び実装配列を示す図である。（Ｃ）は、２重化された実行コード“ＡＤＤ”（０１と０２）の内容の一例を示す図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、ＩＣカード発行システムに対して本発明を適用した場合の実施の形態である。なお、本明細書で「発行」とは、ＩＣチップ等の情報記憶媒体に所定の情報（プログラムやデータなど）を書き込むことを意味する。
【００２０】
先ず、図１を参照して、本実施形態に係るＩＣカード発行システムの構成及び機能概要について説明する。図１は、ＩＣカード発行システムＳの概要構成例を示す図である。図１に示すように、ＩＣカード発行システムＳは、発行対象のＩＣカード１と、ＩＣカード発行機２とを備える。
【００２１】
ＩＣカード１には、図１に示すように、ＩＣチップ１ａが搭載されている。なお、ＩＣカード１は、キャッシュカード、クレジットカード、社員カード等として使用される。或いは、ＩＣカード１は、スマートフォンや携帯電話機等の通信機器に組み込まれる。ＩＣチップ１ａは本発明における情報記憶媒体を構成するが、このＩＣチップ１ａは通信機器の回路基板上に直接組み込んで構成するようにしてもよい。
【００２２】
ＩＣチップ１ａは、ＣＰＵ（Central Processing Unit）１０、ＲＡＭ（Random AccessMemory）１１、ＲＯＭ（Read Only Memory）１２、不揮発性メモリ１３、及びＩ／Ｏ回路１４を備えて構成され、所定のプログラムを構成する複数の実行コードを実行可能になっている。不揮発性メモリ１３には、例えばフラッシュメモリが適用される。不揮発性メモリ１３は、「Electrically Erasable Programmable Read-Only Memory」であっても構わない。Ｉ／Ｏ回路１４は、ＩＣカード発行機２とのインターフェイスを担う。Ｉ／Ｏ回路１４には、例えばＩＳＯ／ＩＥＣ７８１６によって定められたＣ１〜Ｃ８の８個の端子が設けられている。例えば、Ｃ１端子は電源端子、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子はＩＣカード発行機２などの外部端末とのデータ通信を行う端子である。
【００２３】
ＣＰＵ１０は、ＲＯＭ１２、不揮発性メモリ１３またはＲＡＭ１１に記憶された各種プログラムを実行する演算装置である。各種プログラムには、ＯＳ（Operating System）、仮想マシン、およびアプリケーションプログラムが含まれ、アプリケーションプログラムは後述のように仮想マシンを介して実行される。ＯＳ、及び仮想マシンは、複数の実行コード（実行コード群）で記述される。ＯＳは、ＩＣチップ１ａの動作を直接コントロールするソフトウェアである。仮想マシンは、Java（登録商標）等のプログラム言語で記述されるアプリケーションプログラムのソースコードをコンパイルすることで得られる中間コードを解釈、実行する。本実施形態のアプリケーションプログラムは、例えば、ＩＣカード１の発行処理後にＩＣチップ１ａにインストールされるアプリケーションプログラムである。このようなアプリケーションプログラムは、ソースコードと実行コードとの間に位置する複数の中間コードによって構成され、不揮発性メモリ１３における所定のアドレスに書き込まれる。中間コードは、これに対応する実行コードを識別する識別情報（インデックス）である。例えば、中間コード“０３”は、実行コード“ＡＤＤ”（加算）を示す。また、中間コード“０４”は、実行コード“ＭＯＶ”（データ書き込み）を示す。また、中間コード“０５”は、実行コード“ＳＵＢ”（減算）を示す。仮想マシンは、中間コードの解釈及び実行にあたり、中間コードと、実行コードが書き込まれる不揮発性メモリ１３におけるアドレス（例えば、実行コードの先頭アドレス）を示すアドレス情報との対応関係を実行コードごとに示す参照テーブルを参照する。これにより特定されたアドレスに記憶されている実行コードがＣＰＵ１０により実行されることになる。つまり、この参照テーブルは、不揮発性メモリ１３に書き込まれた実行コードが実行される際に参照される。この参照テーブルは、ＩＣカード発行機１が生成する場合と、ＩＣチップ１ａが生成する場合とがある。
【００２４】
ＩＣカード発行機２は、ＣＰＵ、ＲＡＭ、及び不揮発性メモリ等から構成される制御部２１、ハードディスクドライブ等から構成される記憶部２２、及びＩＣカード１との間でリーダライタを介して通信を行うための通信部２３等を備えて構成される。ＩＣカード発行機２は、本発明の書込装置の一例である。記憶部２２には、ＯＳ、及び本発明の書込処理プログラムが記憶される。制御部２１は、本発明の書込処理プログラムを実行することにより、本発明における並替手段、書き込み制御手段、生成手段、及び送信手段として機能し、ＩＣカード１の製造工程中に、ＩＣカード１を発行する発行処理を行うようになっている。記憶部２２には、ＩＣカード１に書き込ませるプログラムが記憶されている。
【００２５】
図２（Ａ），（Ｂ）は、ＩＣカード発行機２における制御部２１の処理例を示すフローチャートである。図２（Ａ）は、実施例１の処理を示し、図２（Ｂ）は、実施例２の処理を示す。なお、図２（Ａ），（Ｂ）に示す処理は、ＩＣカード１の製造工程中の発行処理時に実行される。
【００２６】
（実施例１）
実施例１は、ＲＯＭ１２の記憶容量が少なく、不揮発性メモリ１３の記憶容量が多いＩＣカード１に適用する場合に有効な実施例である。実施例１の処理では、図２（Ａ）に示すように、制御部２１は、ＩＣチップ１ａの不揮発性メモリ１３に書き込ませるプログラムを記憶部２２から取得する（ステップＳ１）。
【００２７】
次いで、制御部２１は、取得したプログラムを構成する複数の実行コードの不揮発性メモリ１３における配列であってデフォルト設定された配列（実装配列）を、例えば乱数またはＩＣチップ１ａに固有の情報に基づいて並び替える（ステップＳ２）。例えば、ＩＣチップ１ａが解釈及び実行するコード（例えば、コンパイラやリンカにより生成された文字や数値の塊で中間コードの実装の境目を識別できる状態）を入力とし、乱数、製造履歴、ＩＣチップ１ａの識別情報などを基に中間コードに対応する実行コードの配列が並び替えられる。これにより、製造工程中の発行処理時に、中間コードの実装（実行コード）の配列が、同一の用途に利用される（同一のプログラムを含むデータが書き込まれる）ＩＣチップ１ａごとに変更される。なお、同一の用途に利用される全てのＩＣチップ１ａで個別化できるように、ＩＣチップ１ａの識別情報や製造履歴を基に個別化することが望ましいが、サンプルカードと流通カード（市場で使用されるカード）とで２通りだけを区別してもよい。
【００２８】
次いで、制御部２１は、ステップＳ２において配列が並べ替えられた後の上記対応関係を示す参照テーブルを生成する（ステップＳ３）。つまり、ステップＳ２における並び替えに沿って参照テーブルが生成される。
【００２９】
次いで、制御部２１は、ステップＳ２で配列が並び替えられた複数の実行コードを含むプログラムと、ステップＳ３で生成された参照テーブルとをＩＣチップ１ａへ送信し、当該複数の実行コードを不揮発性メモリ１３に書き込ませる（ステップＳ４）。こうして不揮発性メモリ１３に参照テーブル及びプログラムが記憶されたＩＣチップ１ａを搭載するＩＣカード１が、流通カードとして生成されることになる。
【００３０】
図３（Ａ）は、サンプルカードと、実施例１の処理で発行されたＩＣカード１の参照テーブル及び実装配列を示す図である。図３（Ａ）に示すように、双方の参照テーブルにおける中間コードの並び順は同一であるが、中間コードに対応付けられているアドレス情報（この例では、実行コードの先頭アドレス）が異なっている。つまり、サンプルカードと、実施例１の処理で発行されたＩＣカード１とで、不揮発性メモリ１３に書き込まれた実行コードの配列が異なっている。これにより、参照テーブルが参照されて実行コードが不揮発性メモリ１３から読み出されるときの消費電力の出方を変えることができる。例えば、同じ実行コード“ＡＤＤ”でも、8000番地と8026番地に配置されている場合では番地のハミング重み（二進数で１を示すビットの数であり、8000は1で8026は4となる）が異なるため、アドレスバスに起因する消費電力に差が生じる。つまり、同じ実行コード“ＡＤＤ”を実行しているにもかかわらず、ＩＣチップごとに消費電力値を異ならせることができる。そのため、ＳＣＡにおいて学習に使われた使ったサンプルカードと、実施例１の処理で発行されたＩＣカード１のそれぞれのサイドチャネル情報の相関を減らすことができる。また、実施例１の構成によれば、ＩＣチップ１ａ内部の処理には特別な追加要素がなく、従来どおりの「中間コードに対応した実装の先頭番地を記録した参照テーブルを参照する」だけでよい。つまり、ＩＣカード発行機２側で対処することで上記効果を得ることができる。
【００３１】
なお、実施例１の変形例として、上記参照コードの生成は、ＩＣチップ１ａ側で行われるように構成してもよい。この場合、ＩＣチップ１ａは、複数の実行コードの不揮発性メモリ１３における配列であってデフォルト設定された配列が、例えば乱数またはＩＣチップ１ａに固有の情報に基づいて並び替えられた複数の実行コードを含むプログラムをＩＣカード発行機２から取得して不揮発性メモリ１３に書き込む。そして、ＩＣチップ１ａは、ＩＣカード発行機２により当該実行コードの配列が並び替えられた後の上記対応関係を示す参照テーブルを生成する。
【００３２】
また、実施例１の変形例として、実行コードの配列の並び替えもＩＣチップ１ａ側で行われるように構成してもよい。この場合、ＩＣチップ１ａは、例えばコンパイル時に確定した順番で実行コードを不揮発性メモリ１３の例えばバックアップ領域に書き込む。次いで、ＩＣチップ１ａは、不揮発性メモリ１３に記憶されている複数の実行コードの当該不揮発性メモリ１３における配列を、例えば乱数またはＩＣチップ１ａに固有の情報に基づいて並び替える。次いで、ＩＣチップ１ａは、配列が並び替えられた複数の実行コードを不揮発性メモリ１３の例えばバックアップ領域から正規の領域に並び替えた配列で書き込む（つまり、移し替える）。そして、ＩＣチップ１ａは、ＩＣチップ１ａにより当該実行コードの配列が並び替えられた後の上記対応関係を示す参照テーブルを生成する。
【００３３】
（実施例２）
実施例２は、不揮発性メモリ１３の記憶容量が少なく、特に、ＩＣカード発行機２では実装の並びを変えられないＲＯＭに実行コードを記憶するＩＣカード１に適用する場合に有効な実施例である。この場合、ＩＣチップ１ａのＲＯＭ１２には、複数の実行コードのうち少なくとも何れか一つの実行コードが少なくとも２重化（３重化以上であってもよい）された複数の実行コードが記憶されているものとする。実施例２の処理では、図２（Ｂ）に示すように、制御部２１は、上述した参照テーブルにおいて、少なくとも２重化された実行コードについてはこれらの実行コードのうちから選択される何れか一つの実行コードを識別する中間コードと、当該実行コードが記憶されたＲＯＭ１２におけるアドレスを示すアドレス情報との対応関係を示す参照テーブルを生成する（ステップＳ１１）。ここで、少なくとも２重化された実行コードのうち、どの実行コードを選択するかは、例えば乱数によって決められる。そして、制御部２１は、ステップＳ１１で生成された参照テーブルをＩＣチップ１ａへ送信する（ステップＳ１２）。
【００３４】
図３（Ｂ）は、サンプルカードと、実施例２の処理で発行されたＩＣカード１の参照テーブル及び実装配列を示す図である。図３（Ｂ）に示すように、双方の参照テーブルにおける中間コードの並び順は同一であるが、中間コードに対応付けられているアドレス情報（この例では、実行コードの先頭アドレス）が異なっている。つまり、サンプルカードと、実施例２の処理で発行されたＩＣカード１とで、２重化された実行コードのうち、選択された実行コードが異なっている。これにより、実施例１と同様、参照テーブルが参照されて実行コードがＲＯＭ１２から読み出されるときの消費電力の出方を変えることができる。また、実施例２の構成によれば、ＩＣチップ１ａ内部の処理には特別な追加要素がなく、従来どおりの「中間コードに対応した実装の先頭番地を記録した参照テーブルを参照する」だけでよい。つまり、ＩＣカード発行機２側で対処することで上記効果を得ることができる。また、実装の並びを変えられないＲＯＭに実行コードを記憶する場合であっても、実行コードがＲＯＭから読み出されるときの消費電力の出方をＩＣカード１ごと変えることができる。
【００３５】
なお、実施例２の変形例として、上記参照コードの生成は、ＩＣチップ１ａ側で行われるように構成してもよい。この場合、ＩＣチップ１ａは、上述した参照テーブルにおいて、少なくとも２重化された実行コードについてはこれらの実行コードのうちから選択される何れか一つの実行コードを識別する中間コードと、当該実行コードが記憶されたＲＯＭ１２におけるアドレスを示すアドレス情報との対応関係を示す参照テーブルを生成する。また、このように同じ処理がされる実行コードを少なくとも２重化する場合において、実行コードの順番や利用されるレジスタを変更するように構成してもよい。図３（Ｃ）は、２重化された実行コード“ＡＤＤ”（０１と０２）の内容の一例を示す図である。図３（Ｃ）に示すＡＤＤ０１では、先ず0003番地のデータをレジスタR0に移し、その後に0058番地のデータをレジスタR1に移し、その後に、レジスタR0とR1のデータを加算させる手順になっている。一方、図３（Ｃ）に示すＡＤＤ０２では、先ず0058番地のデータをレジスタR1に移し、その後に0003番地のデータをレジスタR0に移し、その後に、レジスタR0とR1のデータを加算させる手順になっている。このようにＡＤＤ０１とＡＤＤ０２の処理結果は同一となるが、アドレスからの読み出し順序を異ならせることで、実行コードがＲＯＭ１２から読み出されるときの消費電力の出方の傾向を更に変えることができる。
【００３６】
以上説明したように、上記実施形態によれば、ＩＣチップ１ａに書き込まれる複数の実行コードの配列を並び替えたり、或いは、当該実行コードを少なくとも２重化して何れかの実行コードを選択させるように構成したので、当該実行コードが不揮発性メモリ１３から読み出されるときの消費電力の出方を変えさせることができ、ＩＣチップ１ａに書き込まれるプログラムの保護を、処理が複雑化しない構成で効率良く行うことができる。
【符号の説明】
【００３７】
１  ＩＣカード
２  ＩＣカード発行機
１ａ  ＩＣチップ
１０  ＣＰＵ
１１  ＲＡＭ
１２  ＲＯＭ
１３  不揮発性メモリ
１４  Ｉ／Ｏ回路
【図１】
2015038723.tif 000003
【図２】
2015038723.tif 000004
【図３】
2015038723.tif 000005