(57)【特許請求の範囲】
【請求項１】
コンピュータプログラムが動作してから生成する動的データを利用するプログラムコードのオペランドにオフセット値を基準とする相対位置を記述しておき、前記動的データを格納する物理アドレスとして、前記動的データを格納するためにメモリに設定された作業領域の先頭アドレスに、起動した際に乱数を用いて生成した所定範囲内の前記オフセット値及び前記相対位置を加算した値を利用し，前記動的データを格納する物理アドレスが乱数により変更するように構成されていることを特徴とする携帯装置。
【請求項２】
動的データの格納位置を変更する方法であって、携帯端末が起動した際、乱数を用いて所定範囲内のオフセット値を生成するステップ、前記携帯端末が、コンピュータプログラムが動作してから生成する動的データを格納する物理アドレスとして、前記動的データを格納するためにメモリに設定された作業領域の先頭アドレスに、前記動的データを利用するプログラムコードのオペランドに記載された相対位置及び前記オフセット値を加算した値を用いるステップを含み，前記動的データを格納する物理アドレスが乱数により変更するようにしたことを特徴とする、動的データの格納位置変更方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣカードなどの携帯装置に対する攻撃法の一つであるレーザ攻撃に対する耐タンパー性を高めるための技術に関する。
【背景技術】
【０００２】
近年、金融用途で利用されるＩＣカードなど、機密データ（例えば、暗号鍵）を格納した携帯装置への攻撃法が数多く研究されている。
【０００３】
携帯装置に対する攻撃法としては、電力消費量を観測することで、携帯装置に格納されたＤＥＳの秘密鍵を解読するＤＰＡ攻撃（Differential Power Analysis）が有名であるが、携帯装置に対する攻撃法はＤＰＡ攻撃に限らず、ＤＰＡ攻撃以外の攻撃として、携帯装置に実装されたＩＣチップにレーザを照射してＩＣチップに誤動作を誘発し、この誤動作を足掛かりとして機密データを解読するレーザ攻撃がある。
【０００４】
レーザ攻撃においては、レーザを照射したことによって、機密データの解読の足掛かりとなる誤動作が発生するメモリセルを特定し、特定したメモリセルにレーザを照射することが必要になるため、一つのメモリセルのサイズ程度の照射径のレーザが必要になるので、レーザ攻撃は理論的には可能であるが実効性は低く、レーザ攻撃の対策は不要と考えられていたが、近年、照射径の非常に小さいレーザが開発され、レーザの照射精度も向上したことに伴い、取り分けＩＣカードの分野では、レーザ攻撃の対策が必要とされるようになった。
【０００５】
レーザ攻撃に対する耐タンパー性を高める発明も既に開示され、レーザ攻撃に対する耐タンパー性を高める手法として、エラーコードを利用してデータの変化を検知する手法（例えば、特許文献１）、光の照射を検知可能なセンサ回路を用いてレーザの照射を検知する手法（例えば、特許文献２）などが開示されている。
【０００６】
しかしながら、これらの発明は、レーザが照射されたことを検知することに主眼を置いた発明で、機密データの解読の足掛かりとなる誤動作が生じるメモリセルの特定を妨げることに主眼を置いた発明ではない。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５-４５７６０号公報
【特許文献２】特開２０１０-２７９００３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
そこで、本発明は、レーザ攻撃に対する耐タンパー性を高めるために、機密データの解読の足掛かりとなる誤動作が生じるメモリセルを特定することが困難になる携帯装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決する第１の発明は、コンピュータプログラムが動作してから生成する動的データを利用するプログラムコードのオペランドにオフセット値を基準とする相対位置を記述しておき、前記動的データを格納する物理アドレスとして、前記動的データを格納するためにメモリに設定された作業領域の先頭アドレスに、起動した際に乱数を用いて生成した所定範囲内の前記オフセット値及び前記相対位置を加算した値を利用し，前記動的データを格納する物理アドレスが乱数により変更するように構成されていることを特徴とする携帯装置である。
【００１０】
なお、第１の発明において携帯装置とは、半導体集積回路（ＩＣチップ）が実装され、高いセキュリティが要求されるシステムで利用されるデバイスを意味し、具体的には、ＩＣカード、ＵＳＩＭまたはＵＳＢキーなどを意味する。
【００１１】
更に、上述した課題を解決する第２の発明は、動的データの格納位置を変更する方法であって、携帯端末が起動した際、乱数を用いて所定範囲内のオフセット値を生成するステップ、前記携帯端末が、コンピュータプログラムが動作してから生成する動的データを格納する物理アドレスとして、前記動的データを格納するためにメモリに設定された作業領域の先頭アドレスに、前記動的データを利用するプログラムコードのオペランドに記載された相対位置及び前記オフセット値を加算した値を用いるステップを含み，前記動的データを格納する物理アドレスが乱数により変更するようにしたことを特徴とする、動的データの格納位置変更方法である。
【発明の効果】
【００１２】
上述した本発明によれば、動的データを格納する物理アドレスとして、動的データを格納するためにメモリに設定された作業領域の先頭アドレスに、オフセット値及び相対位置を加算した値を利用するように構成することで、携帯装置が再起動される度に、動的データが格納される物理アドレスが変化することになり、機密データの解読の足掛かりとなる誤動作が生じるメモリセルを特定することが困難になる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態に係るＩＣカードを説明する図。
【図２】動的データのアドレス指定を説明する図。
【図３】本発明の効果を説明する図。
【発明を実施するための形態】
【００１４】
ここから，本発明の技術分野に係わる当業者が，発明の内容を理解し，発明を実施できる程度に説明する。なお、これから説明する実施形態は、本発明に係る携帯装置をＩＣカードとした実施形態で，本発明の一実施形態にしか過ぎず、本発明は，これから説明する実施形態に限定されることなく、種々の変形や変更が可能である。
【００１５】
図１は、本実施形態に係るＩＣカード１を説明する図である。本実施形態に係るＩＣカード１は接触型で、キャッシュカードやクレジットカードと同じ大きさのカード基材に、ＩＣチップ２がモールドされたＩＣモジュール１ａが実装されている。
【００１６】
なお、図１において、ＩＣカード１を接触型として図示しているが、ＩＣカード１は、図外の端末装置と無線通信する非接触ＩＣカード、または、接触通信と無線通信の２つの通信機能を備えたデュアルインターフェースＩＣカードであってもよい。
【００１７】
加えて、ＩＣカード１の形状は問わず、ＩＣカード１はキャッシュカードと同じ形状でなく、ＩＣモジュール１ａの近辺を短冊状に切り取った形状をしているＳＩＭ（Subscriber Identity Module）或いはＵＳＩＭ(Universal Subscriber Identity Module)であってもよい。
【００１８】
図１に図示したように、ＩＣカード１に実装されるＩＣチップ２には、演算機能およびＩＣチップ２の回路やメモリを制御する機能を備えた中央演算装置２０（CPU：Central Processing Unit）、外部装置とのデータの入出力に利用されるＩ／Ｏ回路２１、揮発性メモリであるランダムアクセスメモリ２２（RAM：Random Access Memory）、読み出し専用の不揮発性メモリ２３（ROＭ：Read Only Memory）、電気的に書換え可能な不揮発性メモリであるＥＥＰＲＯＭ２４（EEPROM：Electrically Erasable Programmable Read-Only Memory）、ＤＥＳの暗号演算に特化した回路であるコプロセッサ回路２５、乱数を生成する回路であるＲＮＧ回路２６（Random Number Generator）などが備えられ、ＣＰＵ２０とＣＰＵ２０以外のメモリ及び回路はデータバス２７及びアドレスバス２８を介して接続されている。
【００１９】
ＩＣチップ２のＲＯＭ２３やＥＥＰＲＯＭ２４には、ＩＣカード１上で動作するコンピュータプログラムとして、オペレーティングシステムやアプリケーションが実装され、ＩＣカード１を再起動させる動作であるリセットがなされ、オペレーティングシステムが起動すると、オペレーティングシステムは、オペレーティングシステムやアプリケーションが動作してから生成する動的データを格納する作業領域をＩＣチップ２のメモリ（ＲＡＭ２２やＥＥＰＲＯＭ２４）に設定した後、ＲＮＧ回路２６を利用して乱数を生成し、外乱数を利用して所定範囲内のオフセット値を生成する。
【００２０】
一般的なＩＣカードでは、作業領域内における動的データの格納位置は、コンピュータプログラムの設計段階で決定されるため、リセットしても作業領域内における動的データの格納位置は変わらないが、本実施形態のＩＣカード１では、作業領域のサイズを実際に必要なサイズよりも大きくしておき、ＩＣカード１がリセットされた際、所定範囲内のオフセット値を乱数により生成し、コンピュータプログラムが動作してから生成する動的データを格納する物理アドレスとして、作業領域の先頭アドレスにオフセット値及び相対位置を加算した値を利用するようにすることで、ＩＣカード１がリセットされる毎に、動的データが格納される物理アドレスが変わるようにしている。
【００２１】
図２は、動的データのアドレス指定を説明する図である。本実施形態において、動的データを利用するマシン語コードの構造は、動的データを処理する命令が記述されるオペコードと、ＩＣカード１がリセットされる毎に生成されるオフセット値を基準としたときの相対位置が記述されるオペランドから構成され、動的データが格納される物理アドレスは、作業領域の先頭アドレスに、ＩＣカード１がリセットされたときに生成したオフセット値及びオペランドに記述されている相対位置を加算した値になる。
【００２２】
よって、ＩＣカード１がリセットされた際に、オペレーティングシステムが、ＲＮＧ回路２６から取得した乱数を利用してオフセット値を生成するようにすれば、ＩＣカード１がリセットされる度に、動的データが格納される物理アドレスが変化することになり、機密データの解読の足掛かりとなる誤動作が生じるメモリセルを特定することが困難になるため、レーザ攻撃に対する耐タンパー性を高めることができるようになる。
【００２３】
なお、本実施形態において、オペレーティングシステムなどのコンピュータプログラムが動作してから生成する動的データを格納する作業領域の物理アドレスを変化するようにしているのは、動的データにＰＩＮ（Personal Identification Number）の照合結果など、ＩＣカード１が誤動作を生じ易いデータが数多く含まれるからである。
【００２４】
図３は、本発明の効果を説明する図である。図３において、作業領域のサイズを実際に必要なサイズ（ここでは、２４８バイト）よりも８バイトだけ大きくした２５６バイトとしており、ＩＣカード１がリセットされる毎に乱数を利用して生成されるオフセット値の範囲は、作業領域のサイズの数値（ここでは、２５６）から実際に必要なサイズの数値（ここでは、２４６）を減算した値から「１」を減算した値（ここでは、７）以下の数値（ここでは、０〜７のいずれか）になる。なお、作業領域のサイズの数値から実際に必要なサイズの数値を減算した値から、更に、「１」を減算するのは、オフセット値が取り得る値に「０」を含めるためである。
【００２５】
図３（ａ）は、ＩＣカード１がリセットされる毎に乱数を利用して生成されたオフセット値を「０」としたときの図で、作業領域の先頭の物理アドレス（ここでは、０ｘ００００）にオフセット値（ここでは、「０」）を加算した値は０ｘ００００になるため、０ｘ００００から動的データが格納されることになる。また、図３（ａ）では、０ｘ００００から動的データが格納されることになるため、０ｘ００F８から０ｘ００ＦＦまでには動的データは格納されない。
【００２６】
図３（ｂ）は、オフセット値を「２」としたときの図で、作業領域の先頭の物理アドレス（０ｘ００００）にオフセット値（ここでは、「２」）を加算した値は０ｘ０００２になるため、０ｘ０００２から動的データが格納されることなる。また、図３（ｂ）では、０ｘ０００２から動的データが格納されるため、０ｘ００００及び０ｘ０００１、並びに、０ｘ００ＦＡから０ｘ００ＦＦまでには動的データは格納されない。
【００２７】
例えば、図３（ａ）の状態で、０ｘ０００２がレーザ攻撃を受けたとしても、ＩＣカードがリセットされることで、図３（ｂ）の状態になると、図３（ａ）において、０ｘ０００２に格納されていた動的データは、図３（ｂ）において、０ｘ０００４に格納されることになるため、攻撃者は同じメモリセルを何度も繰り返しても意味がなくなり、機密データの解読の足掛かりとなる誤動作が生じるメモリセルを特定することが困難になる。
【符号の説明】
【００２８】
１    ＩＣカード
２    ＩＣチップ
【図１】
0005724387.tif 000002
【図２】
0005724387.tif 000003
【図３】
0005724387.tif 000004