"コンピュータプログラムが動作してから生成する動的データを利用するプログラムコードのオペランドにオフセット値を基準とする相対位置を記述しておき、前記動的データを格納する物理アドレスとして、前記動的データを格納するためにメモリに設定された作業領域の先頭アドレスに、起動した際に乱数を用いて生成した所定範囲内の前記オフセット値及び前記相対位置を加算した値を利用するように構成されていることを特徴とする携帯装置。動的データの格納位置を変更する方法であって、携帯端末が起動した際、乱数を用いて所定範囲内のオフセット値を生成するステップ、前記携帯端末が、コンピュータプログラムが動作してから生成する動的データを格納する物理アドレスとして、前記動的データを格納するためにメモリに設定された作業領域の先頭アドレスに、前記動的データを利用するプログラムコードのオペランドに記載された相対位置及び前記オフセット値を加算した値を用いるステップを含むことを特徴とする、動的データの格納位置変更方法。そこで、本発明は、レーザ攻撃に対する耐タンパー性を高めるために、機密データの解読の足掛かりとなる誤動作が生じるメモリセルを特定することが困難になる携帯装置を提供することを目的とする。上述した課題を解決する第1の発明は、コンピュータプログラムが動作してから生成する動的データを利用するプログラムコードのオペランドにオフセット値を基準とする相対位置を記述しておき、前記動的データを格納する物理アドレスとして、前記動的データを格納するためにメモリに設定された作業領域の先頭アドレスに、起動した際に乱数を用いて生成した所定範囲内の前記オフセット値及び前記相対位置を加算した値を利用するように構成されていることを特徴とする携帯装置である。なお、第1の発明において携帯装置とは、半導体集積回路ICチップが実装され、高いセキュリティが要求されるシステムで利用されるデバイスを意味し、具体的には、ICカード、USIMまたはUSBキーなどを意味する。更に、上述した課題を解決する第2の発明は、動的データの格納位置を変更する方法であって、携帯端末が起動した際、乱数を用いて所定範囲内のオフセット値を生成するステップ、前記携帯端末が、コンピュータプログラムが動作してから生成する動的データを格納する物理アドレスとして、前記動的データを格納するためにメモリに設定された作業領域の先頭アドレスに、前記動的データを利用するプログラムコードのオペランドに記載された相対位置及び前記オフセット値を加算した値を用いるステップを含むことを特徴とする、動的データの格納位置変更方法である。上述した本発明によれば、動的データを格納する物理アドレスとして、動的データを格納するためにメモリに設定された作業領域の先頭アドレスに、オフセット値及び相対位置を加算した値を利用するように構成することで、携帯装置が再起動される度に、動的データが格納される物理アドレスが変化することになり、機密データの解読の足掛かりとなる誤動作が生じるメモリセルを特定することが困難になる。ここから,本発明の技術分野に係わる当業者が,発明の内容を理解し,発明を実施できる程度に説明する。なお、これから説明する実施形態は、本発明に係る携帯装置をICカードとした実施形態で,本発明の一実施形態にしか過ぎず、本発明は,これから説明する実施形態に限定されることなく、種々の変形や変更が可能である。図1は、本実施形態に係るICカード1を説明する図である。本実施形態に係るICカード1は接触型で、キャッシュカードやクレジットカードと同じ大きさのカード基材に、ICチップ2がモールドされたICモジュール1aが実装されている。なお、図1において、ICカード1を接触型として図示しているが、ICカード1は、図外の端末装置と無線通信する非接触ICカード、または、接触通信と無線通信の2つの通信機能を備えたデュアルインターフェースICカードであってもよい。加えて、ICカード1の形状は問わず、ICカード1はキャッシュカードと同じ形状でなく、ICモジュール1aの近辺を短冊状に切り取った形状をしているSIMSubscriberIdentityModule或いはUSIMであってもよい。図1に図示したように、ICカード1に実装されるICチップ2には、演算機能およびICチップ2の回路やメモリを制御する機能を備えた中央演算装置20CPU:CentralProcessingUnit、外部装置とのデータの入出力に利用されるI/O回路21、揮発性メモリであるランダムアクセスメモリ22RAM:RandomAccessMemory、読み出し専用の不揮発性メモリ23ROM:ReadOnlyMemory、電気的に書換え可能な不揮発性メモリであるEEPROM24EEPROM:ElectricallyErasableProgrammableReadOnlyMemory、DESの暗号演算に特化した回路であるコプロセッサ回路25、乱数を生成する回路であるRNG回路26RandomNumberGeneratorなどが備えられ、CPU20とCPU20以外のメモリ及び回路はデータバス27及びアドレスバス28を介して接続されている。ICチップ2のROM23やEEPROM24には、ICカード1上で動作するコンピュータプログラムとして、オペレーティングシステムやアプリケーションが実装され、ICカード1を再起動させる動作であるリセットがなされ、オペレーティングシステムが起動すると、オペレーティングシステムは、オペレーティングシステムやアプリケーションが動作してから生成する動的データを格納する作業領域をICチップ2のメモリRAM22やEEPROM24に設定した後、RNG回路26を利用して乱数を生成し、外乱数を利用して所定範囲内のオフセット値を生成する。一般的なICカードでは、作業領域内における動的データの格納位置は、コンピュータプログラムの設計段階で決定されるため、リセットしても作業領域内における動的データの格納位置は変わらないが、本実施形態のICカード1では、作業領域のサイズを実際に必要なサイズよりも大きくしておき、ICカード1がリセットされた際、所定範囲内のオフセット値を乱数により生成し、コンピュータプログラムが動作してから生成する動的データを格納する物理アドレスとして、作業領域の先頭アドレスにオフセット値及び相対位置を加算した値を利用するようにすることで、ICカード1がリセットされる毎に、動的データが格納される物理アドレスが変わるようにしている。図2は、動的データのアドレス指定を説明する図である。本実施形態において、動的データを利用するマシン語コードの構造は、動的データを処理する命令が記述されるオペコードと、ICカード1がリセットされる毎に生成されるオフセット値を基準としたときの相対位置が記述されるオペランドから構成され、動的データが格納される物理アドレスは、作業領域の先頭アドレスに、ICカード1がリセットされたときに生成したオフセット値及びオペランドに記述されている相対位置を加算した値になる。よって、ICカード1がリセットされた際に、オペレーティングシステムが、RNG回路26から取得した乱数を利用してオフセット値を生成するようにすれば、ICカード1がリセットされる度に、動的データが格納される物理アドレスが変化することになり、機密データの解読の足掛かりとなる誤動作が生じるメモリセルを特定することが困難になるため、レーザ攻撃に対する耐タンパー性を高めることができるようになる。なお、本実施形態において、オペレーティングシステムなどのコンピュータプログラムが動作してから生成する動的データを格納する作業領域の物理アドレスを変化するようにしているのは、動的データにPINPersonalIdentificationNumberの照合結果など、ICカード1が誤動作を生じ易いデータが数多く含まれるからである。図3は、本発明の効果を説明する図である。図3において、作業領域のサイズを実際に必要なサイズここでは、248バイトよりも8バイトだけ大きくした256バイトとしており、ICカード1がリセットされる毎に乱数を利用して生成されるオフセット値の範囲は、作業領域のサイズの数値ここでは、256から実際に必要なサイズの数値ここでは、246を減算した値から1を減算した値ここでは、7以下の数値ここでは、0~7のいずれかになる。なお、作業領域のサイズの数値から実際に必要なサイズの数値を減算した値から、更に、1を減算するのは、オフセット値が取り得る値に0を含めるためである。図3aは、ICカード1がリセットされる毎に乱数を利用して生成されたオフセット値を0としたときの図で、作業領域の先頭の物理アドレスここでは、0x0000にオフセット値ここでは、0を加算した値は0x0000になるため、0x0000から動的データが格納されることになる。また、図3aでは、0x0000から動的データが格納されることになるため、0x00F8から0x00FFまでには動的データは格納されない。図3bは、オフセット値を2としたときの図で、作業領域の先頭の物理アドレス0x0000にオフセット値ここでは、2を加算した値は0x0002になるため、0x0002から動的データが格納されることなる。また、図3bでは、0x0002から動的データが格納されるため、0x0000及び0x0001、並びに、0x00FAから0x00FFまでには動的データは格納されない。例えば、図3aの状態で、0x0002がレーザ攻撃を受けたとしても、ICカードがリセットされることで、図3bの状態になると、図3aにおいて、0x0002に格納されていた動的データは、図3bにおいて、0x0004に格納されることになるため、攻撃者は同じメモリセルを何度も繰り返しても意味がなくなり、機密データの解読の足掛かりとなる誤動作が生じるメモリセルを特定することが困難になる。"