(57)【要約】【課題】プログラムに含まれるモジュールの実行結果を多重化法によって検証でき，更に，携帯型記憶媒体のＮＶＭにプログラムをロードした後であっても，モジュールを多重化できる携帯型記憶媒体を提供する。【解決手段】携帯型記憶媒体１のＮＶＭ１０には，プログラム実行ファイル１００と多重化モジュール実行ファイル１０１が格納されている。オペレーティングシステム２の正当性検証部２０は，プログラム３に含まれる実行モジュール３０が実行されると（Ｓ１），この実行モジュール３０に対応する多重化モジュール実行ファイル１０１がＮＶＭ１０に格納されているか確認し（Ｓ３），この多重化モジュール実行ファイル１０１に記述されたコードを実行することで多重モジュール４を実行する（Ｓ４）。そして，正当性検証部２０は，実行モジュール３０の実行結果と多重モジュール４の実行結果が一致することを検証する（Ｓ６）。【選択図】図４
2015022608.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一つの実行モジュールを有するプログラムを記憶した実行ファイルと，多重化する前記実行モジュールを示すメタ情報が付加され，メタ情報で示される前記実行モジュールが用いるデータを引き継いでこの前記実行モジュールと同じ処理を実行する多重化モジュールを記憶した実行ファイルを不揮発性メモリに格納し，前記プログラムが有する一つの前記実行モジュールが実行されると，前記メタ情報を利用して，実行された前記実行モジュールに対応する前記多重化モジュールの実行ファイルが不揮発性メモリに実装されているか確認し，この前記多重化モジュールの実行ファイルが不揮発性メモリに実装されている場合，この前記多重化モジュールを実行し，実行された前記実行モジュールの実行結果と実行した前記多重化モジュールの実行結果が一致するか検証する正当性検証部がオペレーティングシステムに備えられていることを特徴とする携帯型記憶媒体。
【請求項２】
前記プログラムのコードを含むロードコマンドを受信すると，前記プログラムのコードを不揮発性メモリに書き込むことで前記プログラムの実行ファイルを不揮発性メモリに格納し，前記多重化モジュールが対応する前記実行モジュールを示す実行モジュール特定情報と前記メタ情報を含むロードコマンドを受信すると，前記実行モジュール特定情報で示される前記実行モジュールのコードを前記多重化モジュールのコードとして前記不揮発性メモリに書き込み，更に，前記メタ情報を不揮発性メモリに書き込むことで前記多重化モジュールの実行ファイルを不揮発性メモリに格納するロード部を備えたことを特徴とする，請求項１に記載した携帯型記憶媒体。
【請求項３】
前記ロード部は，前記多重化モジュールのコードと前記メタ情報を含むロードコマンドを受信すると，前記多重化モジュールのコードと前記メタ情報を前記不揮発性メモリに書き込むことを特徴とする，請求項２に記載した携帯型記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，金融用途で利用されるＩＣカードや移動体通信で利用されるＵＳＩＭを代表とする携帯型記憶媒体に関し，更に詳しくは，携帯型記憶媒体の不揮発性メモリに格納されたプログラムの正当性を検証する技術に関する。
【背景技術】
【０００２】
金融用途で利用されるＩＣカードや移動体通信で利用されるＵＳＩＭを代表とする携帯型記憶媒体には、携帯型記憶媒体の不揮発性メモリ（以下，「ＮＶＭ」と記す。ＮＶＭは，  Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙの略）にプログラムをロードする機能を有するものがあり，その代表として，ＪＡＶＡ（登録商標）等のプラットホーム型オペレーティングシステムを搭載したＩＣカードがある。
【０００３】
携帯型記憶媒体のＮＶＭにロードされたプログラムは実行コードまたは中間コードの形式で携帯型記憶媒体のＮＶＭに書き込まれ，携帯型記憶媒体のＣＰＵは，そのコードを読み出して実行する。
【０００４】
この時，携帯型記憶媒体のＮＶＭに発生したメモリエラーや外部からの故障攻撃によって，不揮発性メモリにロードしたプログラムが改竄された状態になると、プログラムを実行した時に携帯型記憶媒体が意図しない動作をし、セキュリティ的に重大な問題を引き起こす危険性がある。
【０００５】
携帯型記憶媒体のＮＶＭにロードしたプログラムの正当性を検証する発明として，チェックコードを用いる発明が特許文献１で開示されている。
【０００６】
しかし、チェックコードを用いてプログラムの正当性を検証する場合，チェックコードを検証するタイミング以外でプログラムが改竄されてしまった場合、プログラムが改竄されたことを検知できない問題がある。また，プログラムのプログラム長が長い場合、チェックコードの演算時間が長くなってしまう問題もある。
【０００７】
携帯型記憶媒体のＮＶＭにロードされたプログラムは複数の実行モジュールを含むように構成されるため，携帯型記憶媒体のＮＶＭにロードされたプログラムの実行モジュールを実行した際，この実行モジュールの実行結果の正当性を検証できれば，プログラムの改竄を検知できる。
【０００８】
実行モジュールの実行結果の正当性を検証する手法として，特許文献２おいて，同一の処理を同一のデータに対して複数回行い，複数の処理結果が一致するか確認する多重化法が記載されており，同一の処理を同一のデータに対して２回行うことを二重化法と呼ぶ時がある。
【０００９】
携帯型記憶媒体のＮＶＭにロードするプログラムに含まれるモジュール全てを多重化できればよいが，全ての実行モジュールを多重化するために必要なメモリ容量は大きくなってしまうため，多重化する実行モジュールは一部の実行モジュールに限定される。
【００１０】
多重化する実行モジュールは設計時に決めることもできるが，携帯型記憶媒体の運用段階において，設計当初は想定していない実行モジュールも多重化したいケースもあるため，携帯型記憶媒体のＮＶＭにプログラムをロードした後であっても，実行モジュールを多重化できることが望ましい。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００４−２１３４７８号公報
【特許文献２】特開平１０−１５４９７６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
そこで，本発明は，携帯型記憶媒体のＮＶＭにロードするプログラムに含まれるモジュールの実行結果を多重化法によって検証でき，更に，携帯型記憶媒体のＮＶＭにプログラムをロードした後であっても，モジュールを多重化できる携帯型記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決する第１の発明は，少なくとも一つの実行モジュールを有するプログラムを記憶した実行ファイルと，多重化する前記実行モジュールを示すメタ情報が付加され，メタ情報で示される前記実行モジュールが用いるデータを引き継いでこの前記実行モジュールと同じ処理を実行する多重化モジュールを記憶した実行ファイルを不揮発性メモリに格納し，前記プログラムが有する一つの前記実行モジュールが実行されると，前記メタ情報を利用して，実行された前記実行モジュールに対応する前記多重化モジュールの実行ファイルが不揮発性メモリに実装されているか確認し，この前記多重化モジュールの実行ファイルが不揮発性メモリに実装されている場合，この前記多重化モジュールを実行し，実行された前記実行モジュールの実行結果と実行した前記多重化モジュールの実行結果が一致するか検証する正当性検証部がオペレーティングシステムに備えられていることを特徴とする携帯型記憶媒体である。
【００１４】
更に，第２の発明は，第１の発明に記載した携帯型記憶媒体であって，前記プログラムの実行ファイルと前記多重化ファイルの実行ファイルをＮＶＭにロードできるように，前記プログラムのコードを含むロードコマンドを受信すると，前記プログラムのコードを不揮発性メモリに書き込むことで前記プログラムの実行ファイルを不揮発性メモリに格納し，前記多重化モジュールが対応する前記実行モジュールを示す実行モジュール特定情報と前記メタ情報を含むロードコマンドを受信すると，前記実行モジュール特定情報で示される前記実行モジュールのコードを前記多重化モジュールのコードとして前記不揮発性メモリに書き込み，更に，前記メタ情報を不揮発性メモリに書き込むことで前記多重化モジュールの実行ファイルを不揮発性メモリに格納するロード部を備えたことを特徴とする。
【００１５】
更に，第３の発明は，第２の発明に記載した携帯型記憶媒体であって，前記実行モジュール特定情報以外にも対応が取れるように，前記ロード部は，前記多重化モジュールのコードと前記メタ情報を含むロードコマンドを受信すると，前記多重化モジュールのコードと前記メタ情報を前記不揮発性メモリに書き込むことを特徴とする。
【発明の効果】
【００１６】
上述した本発明によれば，携帯型記憶媒体のＮＶＭにロードするプログラムに含まれる実行モジュールを実行した後に，この実行モジュールに対応する多重化モジュールを実行し，実行モジュールの実行結果と多重化モジュールの実行結果を照合することで，実行モジュールの実行結果を多重化法によって検証できる。更に，実行ファイルは，プログラムをロードした後であってもロードできるため，実行ファイルの形式で多重化モジュールを携帯型記憶媒体のＮＶＭに格納することで，プログラムをロードした後であっても，所定の実行モジュールを多重化できるようになる。
【図面の簡単な説明】
【００１７】
【図１】本実施形態にかかる携帯型記憶媒体を説明する図。
【図２】携帯型記憶媒体のメモリの内容を説明する図。
【図３】携帯型記憶媒体に実装されるソフトウェアを説明する図。
【図４】実行モジュールの実行結果の正当性を検証する動作を説明する図。
【図５】プログラム実行ファイルと同時に多重化モジュール実行ファイルをＮＶＭにロードする際の動作を説明する図。
【図６】プログラム実行ファイルをＮＶＭにロードした後に，多重化モジュール実行ファイルをＮＶＭにロードする際の動作を説明する図。
【発明を実施するための形態】
【００１８】
ここから，本発明の好適な実施形態を記載する。なお，以下の記載は本発明の範囲を束縛するものでなく，理解を助けるために記述するものである。
【００１９】
図１は，本実施形態にかかる携帯型記憶媒体１を説明する図で，図２は，携帯型記憶媒体１のメモリの内容を説明する図で，図３は，携帯型記憶媒体１に実装されるソフトウェアを説明する図である。
【００２０】
本実施形態にかかる携帯型記憶媒体１は，中央演算装置であるＣＰＵ１２，揮発性のメモリであるＲＡＭ１３，読み出し専用のメモリであるＲＯＭ１１，電気的に書き換え可能なＮＶＭ１０，外部装置と通信するためのインターフェース回路１４が実装された電子媒体で，セキュリティが要求されるホストシステムと協働して動作する。
【００２１】
図１では，本実施形態にかかる携帯型記憶媒体１を金融用途等で用いられるＩＣカードとして図示しているが，携帯型記憶媒体１の他形態としては，移動体通信端末に装着するＳＩＭやＵＩＣＣ，移動体通信端末に実装されるエンベットＳＩＭ等，様々な形態を想定できる。
【００２２】
図２に図示したように，携帯型記憶媒体１のＲＯＭ１１には，プログラム３の実行を管理する機能を有するオペレーティングシステム２が実装され，携帯型記憶媒体１のＮＶＭ１０には，オペレーティングシステム２上で動作するプログラム３のコードを記憶したプログラム実行ファイル１００と，プログラム３が有する実行モジュール３０を多重化するための多重化モジュール４のコードを記憶した多重化モジュール実行ファイル１０１が格納され，多重化モジュール実行ファイル１０１には，多重化する実行モジュール３０を少なくとも示すメタ情報１０２が付加されている。
【００２３】
図３に図示したように，携帯型記憶媒体１は，ソフトウェアとして，オペレーティングシステム２と，プログラム３と，プログラム３が有する実行モジュール３０を多重化するための多重化モジュール４が実装される。
【００２４】
携帯型記憶媒体１に実装されるプログラム３は複数の実行モジュール３０を有する。図３では，プログラム３が有する実行モジュール３０として，データ等の選択に用いる選択モジュール３０ａ，データをＮＶＭ１０等から読み出す読み出しモジュール３０ｂ，ユーザ等の認証に用いる認証モジュール３０ｃ，データをＮＶＭ１０に書き込む書き込みモジュール３０ｄおよび認証モジュール３０ｃの実行結果に基づいて携帯型記憶媒体１の状態を遷移させる状態遷移モジュール３０ｅを図示している。
【００２５】
携帯型記憶媒体１に実装される多重化モジュール４は，メタ情報１０２で示される実行モジュール３０が用いるデータを引き継いでこの実行モジュール３０と同じ処理を実行するモジュールである。多重化モジュール４は，多重化する実行モジュール３０毎に実装され，図３では，認証モジュール３０ａと状態遷移モジュール３０ｅを多重化するため，認証モジュール３０ａの多重化モジュール４ａと状態遷移モジュール３０ｅの多重化モジュール４ｂが実装されている。
【００２６】
多重化する実行モジュール３０に対応する多重化モジュール４の数は多重化数に依存する。例えば，認証モジュール３０ａを二重化する際は，認証モジュール３０ａに対応する多重化モジュール４ａは一つになり，認証モジュール３０ａを三重化する際は，認証モジュール３０ａに対応する多重化モジュール４ａは二つになる。
【００２７】
携帯型記憶媒体１に実装されるオペレーティングシステム２は，携帯型記憶媒体１のリソース（ＲＡＭ１３やＮＶＭ１０等）にアクセスできる環境をオペレーティングシステム２上で動作するプログラム３に提供し，プログラム３の実行を管理する機能を有し，本実施形態のオペレーティングシステム２は，オペレーティングシステム２上で動作するプログラム３の実行を管理するプログラム実行管理部２２と，プログラム３が有する実行モジュール３０を実行すると，この実行モジュール３０の実行結果の正当性を検証する正当性検証部２０と，プログラム３と多重化モジュール４をＮＶＭ１０にロードするロード部２１を有している。
【００２８】
携帯型記憶媒体１のオペレーティングシステム２が有するプログラム実行管理部２２は，オペレーティングシステム２上で起動したプログラム３に携帯型記憶媒体１のリソースを割り当てた後，プログラム実行ファイル１００に記述されたコードを順に読み出して実行する手段である。
【００２９】
携帯型記憶媒体１のオペレーティングシステム２が有する正当性検証部２０は，プログラム実行管理部２２から呼び出されて起動し，プログラム３が有する一つの実行モジュール３０が実行されると，この実行モジュール３０の実行結果の正当性を検証する動作を行う。
【００３０】
図４は，実行モジュール３０の実行結果の正当性を検証する動作を説明する図である。オペレーティングシステム２のプログラム実行管理部２２は，プログラム３から読み出したコードが実行モジュール３０を呼び出すコードの場合，このコードで示される実行モジュール３０を実行し（Ｓ１），実行モジュール３０の実行結果をＲＡＭ１３に格納した後（Ｓ２），実行した実行モジュール３０を特定する情報を引き渡して正当性検証部２０を呼び出す。
【００３１】
オペレーティングシステム２の正当性検証部２０は，プログラム実行管理部２２から呼び出されると，多重化モジュール実行ファイル１０１に付加されているメタ情報１０２を参照して，プログラム実行管理部２２から引き渡された情報に対応する多重化モジュール実行ファイル１０１，すなわち，プログラム実行管理部２２が実行した実行モジュール３０に対応する多重化モジュール実行ファイル１０１がＮＶＭ１０に実装されているか確認する（Ｓ３）。
【００３２】
プログラム実行管理部２２が実行した実行モジュール３０に対応する多重化モジュール実行ファイル１０１がＮＶＭ１０に実装されていない場合，正当性検証部２０は，プログラム実行管理部２２に処理を戻して，この手順は終了する。
【００３３】
また，プログラム実行管理部２２が実行した実行モジュール３０に対応する多重化モジュール実行ファイル１０１がＮＶＭ１０に実装されている場合，正当性検証部２０は，この多重化モジュール実行ファイル１０１に記述されているコードを実行することで，プログラム実行管理部２２が実行した実行モジュール３０に対応する多重化モジュール４を実行し（Ｓ４），プログラム実行管理部２２が実行した実行モジュール３０の実行結果とはアドレスを変えて，多重化モジュール４の実行結果をＲＡＭ１３に格納する（Ｓ５）。
【００３４】
なお，オペレーティングシステム２の正当性検証部２０が実行する多重化モジュール４の数は，プログラム実行管理部２２が実行した実行モジュール３０の多重化数に依存する。例えば，この実行モジュール３０が二重化されている場合，この実行モジュール３０に対応する多重化モジュール４は一つになるため，正当性検証部２０が多重化モジュール４を実行する回数は一回になり，多重化モジュール４の実行結果は一つになる。また，この実行モジュール３０が三重化されている場合，この実行モジュール３０に対応する多重化モジュール４は二つになるため，正当性検証部２０が多重化モジュール４を実行する回数は二回になり，多重化モジュール４の実行結果は二つになる。
【００３５】
プログラム実行管理部２２が実行した実行モジュール３０に対応する多重化モジュール４を実行すると，正当性検証部２０は，プログラム実行管理部２２が実行した実行モジュール３０の実行結果と，多重化モジュール４の実行結果が全て一致するか確認する（Ｓ６）。
【００３６】
実行結果が全て一致する場合，正当性検証部２０は，プログラム実行管理部２２に処理を戻して，この手順は終了する。また，実行結果が全て一致しない場合，正当性検証部２０は，所定のエラー処理を実行し（Ｓ７），この手順は終了する。
【００３７】
このように，携帯型記憶媒体１のＮＶＭ１０に，プログラム実行ファイル１００とは別に多重化モジュール実行ファイル１０１を格納させ，プログラム３が有する実行モジュール３０を実行した後に，この実行モジュール３０に対応する多重化モジュール４を実行し，処理結果が全て同一であるか検証することで，この実行モジュール３０の実行結果の正当性を携帯型記憶媒体１側で検証できるようになる。
【００３８】
具体的には，携帯型記憶媒体１のＮＶＭ１０に発生したメモリエラーや外部からの故障攻撃によって，プログラム３のコードが改竄された状態になったとしても、多重化モジュール４のコードは改竄された状態にならないため，プログラム３が有する実行モジュール３０の処理結果と，実行モジュール３０に対応する多重化モジュール４の処理結果は同一でなくなるため，何らかの原因でＮＶＭ１０に異常があると携帯型記憶媒体１側で判断できる。
【００３９】
本実施形態に係る携帯型記憶媒体１のオペレーティングシステム２が有するロード部２１は，プログラム実行ファイル１００と多重化モジュール実行ファイル１０１をＮＶＭ１０にロードする手段である。
【００４０】
本実施形態では，プログラム３が有する実行モジュール３０を多重化する多重化モジュール４は，実行ファイルの形式でＮＶＭ１０に実装するため，多重化モジュール実行ファイル１０１をＮＶＭ１０にロードするタイミングは，プログラム実行ファイル１００のロードと同時でもよく，また，プログラム実行ファイル１００をロードした後でもよい。
【００４１】
ここから，オペレーティングシステム２が有するロード部２１の動作について説明する。図５は，プログラム実行ファイル１００と同時に多重化モジュール実行ファイル１０１をＮＶＭ１０にロードする際の動作を説明する図である。
【００４２】
プログラム実行ファイル１００と同時に多重化モジュール実行ファイル１０１をＮＶＭ１０にロードする際、携帯型記憶媒体１と協働するシステムは図外の発行システムになり，発行システムから携帯型記憶媒体１に対して，プログラム実行ファイル１００と多重化モジュール実行ファイル１０１をＮＶＭ１０にロードするロードコマンドが送信される（Ｓ１０）。
【００４３】
このロードコマンドには，プログラム実行ファイル１００に係るデータとして，プログラム３のコードが含まれる。更に，このロードコマンドには，多重化モジュール実行ファイル１０１に係るデータとして，メタ情報１０２に加え，実行モジュール特定情報または多重化モジュール４のコードのいずれかが含まれる。ここで，実行モジュール特定情報とは，多重化モジュール４に対応する実行モジュール３０を示す情報で，例えば，実行モジュール３０のアドレスや実行モジュール３０の名称である。
【００４４】
オペレーティングシステム２のロード部２１は，プログラム実行ファイル１００と多重化モジュール実行ファイル１０１をＮＶＭ１０にロードするロードコマンドを受信すると，まず，このロードコマンドに含まれるプログラム３のコードをＮＶＭ１０に書き込むことで，プログラム実行ファイル１００をＮＶＭ１０に格納する（Ｓ１１）。
【００４５】
次に，オペレーティングシステム２のロード部２１は，このロードコマンドに含まれる多重化モジュール実行ファイル１０１に係るデータを確認し（Ｓ１２），多重化モジュール実行ファイル１０１に係るデータが実行モジュール特定情報であれば，実行モジュール特定情報で示される実行モジュール３０のコードをプログラム実行ファイル１００から特定し，特定した実行モジュール３０のコードを多重化モジュール４のコードとしてＮＶＭ１０に書き込み，更に，メタ情報１０２をＮＶＭ１０に書き込むことで，メタ情報１０２を付加した多重化モジュール実行ファイル１０１をＮＶＭ１０に格納して（Ｓ１３），この手順を終了する。
【００４６】
また，オペレーティングシステム２のロード部２１は，多重化モジュール実行ファイル１０１に係るデータが多重化モジュール４のコードであれば，多重化モジュール４のコードとメタ情報１０２をＮＶＭ１０に書き込むことで，メタ情報１０２を付加した多重化モジュール実行ファイル１０１をＮＶＭ１０に格納して（Ｓ１３），この手順を終了する。
【００４７】
図６は，プログラム実行ファイル１００をＮＶＭ１０にロードした後に，多重化モジュール実行ファイル１０１をＮＶＭ１０にロードする際の動作を説明する図である。
【００４８】
プログラム３をＮＶＭ１０にロードする際、発行システムから携帯型記憶媒体１に対して，まず，プログラム実行ファイル１００をＮＶＭ１０にロードするためのロードコマンドが送信される（Ｓ２０）。このロードコマンドには，プログラム３のコードが含まれ，オペレーティングシステム２のロード部２１は，プログラム３のコードをＮＶＭ１０に書き込むことで，プログラム実行ファイル１００がＮＶＭ１０に格納される（Ｓ２１）。
【００４９】
次に，ホストシステムから携帯型記憶媒体１に対して，多重化モジュール実行ファイル１０１をＮＶＭ１０にロードするためのロードコマンドが送信される（Ｓ２２）。上述しているように，このロードコマンドには，メタ情報１０２に加え，実行モジュール特定情報または多重化モジュール４のコードのいずれかが含まれる。
【００５０】
そして，オペレーティングシステム２のロード部２１は，多重化モジュール実行ファイル１０１に係るデータを確認し（Ｓ２３），多重化モジュール４のデータが実行モジュール特定情報であれば，実行モジュール特定情報で示される実行モジュール３０のコードをプログラム実行ファイル１００から特定し，特定した実行モジュール３０のコードを多重化モジュール４のコードとしてＮＶＭ１０に書き込み，更に，メタ情報１０２をＮＶＭ１０に書き込むことで，メタ情報１０２を付加した多重化モジュール実行ファイル１０１をＮＶＭ１０に格納して（Ｓ２４），この手順を終了する。
【００５１】
また，オペレーティングシステム２のロード部２１は，ロードコマンドに含まれる多重化モジュール４のデータが多重化モジュール４のコードであれば，多重化モジュール４のコードとメタ情報１０２をＮＶＭ１０に書き込むことで，メタ情報１０２を付加した多重化モジュール実行ファイル１０１をＮＶＭ１０に格納して（Ｓ２５），この手順を終了する。
【符号の説明】
【００５２】
１    携帯型記憶媒体
１０  ＮＶＭ
１１  ＲＯＭ
１３  ＲＡＭ
１００  プログラム実行ファイル
１０１  多重化モジュール実行ファイル
１０２  メタ情報
２    オペレーティングシステム
２０  正当性検証部
２１  ロード部
２２  プログラム実行管理部
３    プログラム
３０  実行モジュール
４    多重化モジュール
【図１】
2015022608.tif 000003
【図２】
2015022608.tif 000004
【図３】
2015022608.tif 000005
【図４】
2015022608.tif 000006
【図５】
2015022608.tif 000007
【図６】
2015022608.tif 000008