(57)【要約】      （修正有）【課題】プログラムカウンタ上にレーザが照射されても，セキュリティ的に問題となる誤動作を防止できるセキュリティトークンを提供する。【解決手段】セキュリティトークン１は，処理ルーチン１２を実行開始する際，処理ルーチン１２に係る処理に要する時間をタイムアウト時間としてタイマー１０４に設定し，タイマー１０４を起動させた後，処理ルーチン１２に係る処理全てが終了すると，タイマー１０４を停止させ，タイマー１０４のタイマー割り込みが発生すると，エラー処理が実行するように構成されている。【選択図】図１
2015082233.tif 000002
【特許請求の範囲】
【請求項１】
一連の処理を実行するコンピュータプログラムである処理ルーチンを実行開始すると，前記処理ルーチンに係る処理に要する時間をタイムアウト時間としてタイマーに設定し，タイマーを起動させた後，前記処理ルーチンに係る処理を実行し，前記処理ルーチンに係る全ての処理が終了するとタイマーを停止し，タイマー割り込みが発生すると，エラー処理を実行するように構成したことを特徴とするセキュリティトークン。
【請求項２】
分岐命令を含む前記処理ルーチンの場合，前記処理ルーチンを実行開始すると，分岐前までの処理に要する時間をタイムアウト時間としてタイマーに設定し，分岐命令によって分岐すると，分岐後の処理に要する時をタイムアウト時間としてタイマーに再設定するように構成したことを特徴とする，請求項１に記載したセキュリティトークン。
【請求項３】
前記エラー処理はＣＰＵを停止する処理であることを特徴とする，請求項１または請求項２に記載したセキュリティトークン。
【請求項４】
セキュリティトークンが，一連の処理を実行するコンピュータプログラムである処理ルーチンを開始すると，前記処理ルーチンに係る処理に要する時間をタイムアウト時間としてタイマーに設定し，タイマーを起動させた後，前記処理ルーチンに係る処理を実行し，前記処理ルーチンに係る全ての処理が終了するとタイマーを停止する処理ルーチン実行工程と，前記セキュリティトークンが，タイマー割り込みが発生すると，エラー処理を実行するタイマー割り込み工程を含むことを特徴とする処理ルーチンの実行方法。
【請求項５】
前記セキュリティトークンは，前記処理ルーチン実行工程において，分岐命令を含む前記処理ルーチンの場合，前記処理ルーチンを開始すると，分岐前までの処理に要する時間をタイムアウト時間としてタイマーに設定し，分岐命令によって分岐すると，分岐後の処理に要する時間をタイムアウト時間としてタイマーに再設定することを特徴とする，請求項４に記載した処理ルーチンの実行方法。
【請求項６】
前記セキュリティトークンは，前記タイマー割り込み工程において，前記エラー処理としてＣＰＵを停止する処理を実行することを特徴とする，請求項４または請求項５に記載した処理ルーチンの実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，電子マネーやＩＤカードなどの用途で利用される物理的なデバイスであるセキュリティトークンに関し，更に詳しくは，レーザを用いた攻撃法であるレーザ攻撃法によるセキュリティトークンの誤動作を防止する技術に関する。
【背景技術】
【０００２】
ＩＣカードに代表されるセキュリティトークンは，金融決済やログイン管理など高いセキュリティが要求されるサービスで利用され，セキュリティトークンには，クレジット情報や暗号鍵情報など，セキュリティトークンが利用されるサービスに対応した機密情報が記憶される。
【０００３】
一方で，セキュリティトークンを不正に使用するための様々な攻撃法も考案されており，セキュリティトークンに対する脅威は高まっている。セキュリティトークンに対する攻撃法としては，（１）不正なプログラムをＩＣカードにロードすることによって，セキュリティトークンのセキュリティ機能を無効化する攻撃法，（２）消費電力などのサイドチャネルを解析することによって，セキュリティトークン内の機密情報を不正に解読する攻撃法が知られている。
【０００４】
このような攻撃法に対する対策は攻撃法によって異なり，例えば，（１）に係る攻撃法に対する対策として， チェックコードを用いて，ＩＣカードにロードしたプログラムの正当性を検証する発明が特許文献１で開示されている。また，（２）に係る攻撃法に対する対策として，共通鍵暗号に係る情報の漏洩を防止することを目的とし，共通鍵暗号の演算時に生成される中間情報をマスクする発明が特許文献２で開示されている。
【０００５】
これらの攻撃法に加え，近年では，レーザ照射技術の発展に伴い，レーザを照射してセキュリティデバイスの誤動作を誘発させるレーザ攻撃法が考案されている。レーザ攻撃法に対する対策としては，セキュリティデバイスが処理を実行する際に，処理に用いるデータの正当性を検証する手法が一般的である。
【０００６】
例えば，特許文献３では，レーザ攻撃法に対する対策として，ＩＣカードの状態を示すフラグを格納するビット列のデータ（例えば，セキュリティに係る処理の実行結果等を反映させるセキュリティステータス）が，予め，ＩＣカードに記憶されている値以外の場合，このデータが異常であると判定することが記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−２１３４７８号公報
【特許文献２】特開２００２−３６６０２９号公報
【特許文献３】特許第５０１９２１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら，レーザが照射される箇所は，セキュリティデバイスの処理に用いるデータ（例えば，セキュリティステータス）が格納されている箇所に限らず，セキュリティトークンに実装されたＣＰＵが有するレジスタの一つで，次に実行する命令を示すプログラムカウンタ上にレーザが照射されることも想定できる。
【０００９】
プログラムカウンタ上にレーザが照射されてプログラムカウンタの値が変化すると，次に実行する命令が変わり，本来とは異なる手順で処理が実行されるため，プログラムカウンタ上にレーザが照射されるとセキュリティトークンは誤動作してしまう。例えば，プログラムカウンタ上にレーザが照射され，セキュリティトークンの内部状態をチェックする処理が実行されないと、セキュリティトークンの内部状態をチェックすることなく他の処理が実行されてしまう危険性がある。
【００１０】
そこで，本発明は，セキュリティトークンに実装されたＣＰＵのプログラムカウンタ上にレーザが照射されても，セキュリティ的に問題となる誤動作を防止できるセキュリティトークン，および，セキュリティトークンに実装する処理ルーチンの実行方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決する第１の発明は，一連の処理を実行するコンピュータプログラムである処理ルーチンを実行開始すると，前記処理ルーチンに係る処理に要する時間をタイムアウト時間としてタイマーに設定し，タイマーを起動させた後，前記処理ルーチンに係る処理を実行し，前記処理ルーチンに係る全ての処理が終了するとタイマーを停止し，タイマー割り込みが発生すると，エラー処理を実行するように構成したことを特徴とするセキュリティトークンである。第１の発明によれば，前記処理ルーチンを実行開始してからの時間が前記処理ルーチンに係る処理に要する時間を超えても，前記処理ルーチンに係る全ての処理が終了しない場合，前記処理ルーチンに係る処理が正常な手順で実施されていないと判断できるため，前記処理ルーチンを実行開始してからの時間が前記処理ルーチンに係る処理に要する時間を超えた時に前記エラー処理を実行すれば，前記処理ルーチンに係る処理に要する時間を大幅に超えて前記セキュリティトークンは動作しないため，セキュリティ的に問題となる前記セキュリティトークンの誤動作を防止できる。
【００１２】
更に，第２の発明は，第１の発明に記載したセキュリティトークンにおいて，分岐命令を含む前記処理ルーチンの場合，前記処理ルーチンを実行開始すると，分岐前までの処理に要する時間をタイムアウト時間としてタイマーに設定し，分岐命令によって分岐すると，分岐後の処理に要する時をタイムアウト時間としてタイマーに再設定するように構成したことを特徴とする。分岐命令を含む前記処理ルーチンの場合，分岐命令によってその後の処理が変更になり，処理に要する時間も変更になるため，第２の発明のように，前記処理ルーチンを開始した時と分岐命令を用いて処理を分岐した時に，タイマーにタイムアウト時間を設定することが必要になる。
【００１３】
更に，第３の発明は，第１の発明または第２の発明に記載したセキュリティトークンにおいて，前記エラー処理はＣＰＵを停止する処理であることを特徴とする。前記処理ルーチンを実行開始してからの時間が前記処理ルーチンに係る処理に要する時間を超えた時に実行する前記エラー処理としては，前記セキュリティトークンの動作が停止する処理が望ましく，この処理としては，前記セキュリティトークンのＣＰＵを停止する処理が好適である。
【００１４】
更に，第４の発明は，一連の処理を実行するコンピュータプログラムである処理ルーチンの実行方法であって，セキュリティトークンが，前記処理ルーチンを開始すると，前記処理ルーチンに係る処理に要する時間をタイムアウト時間としてタイマーに設定し，タイマーを起動させた後，前記処理ルーチンに係る処理を実行し，前記処理ルーチンに係る全ての処理が終了するとタイマーを停止する処理ルーチン実行工程と，前記セキュリティトークンが，タイマー割り込みが発生すると，エラー処理を実行するタイマー割り込み工程を含むことを特徴とする。
【００１５】
更に，第５の発明は，第４の発明に記載した処理ルーチンの実行方法において，前記セキュリティトークンは，前記処理ルーチン実行工程において，分岐命令を含む前記処理ルーチンの場合，前記処理ルーチンを開始すると，分岐前までの処理に要する時間をタイムアウト時間としてタイマーに設定し，分岐命令によって分岐すると，分岐後の処理に要する時間をタイムアウト時間としてタイマーに再設定することを特徴とする。
【００１６】
更に，第６の発明は，第４の発明または第５の発明に記載した処理ルーチンの実行方法において，前記セキュリティトークンは，前記タイマー割り込み工程において，前記エラー処理としてＣＰＵを停止する処理を実行することを特徴とする。
【００１７】
第４の発明から第６の発明によれば，第１の発明から第３の発明と同様の効果が得られる。
【発明の効果】
【００１８】
このように，本発明によれば，セキュリティトークンに実装されたＣＰＵのプログラムカウンタ上にレーザが照射されても，セキュリティ的に問題となる誤動作を防止できるセキュリティトークンおよび処理モジュールの実行方法を提供できる。
【図面の簡単な説明】
【００１９】
【図１】本実施形態に係るセキュリティトークンの概略を示すブロック図。
【図２】セキュリティトークンの形態を説明する図。
【図３】分岐命令を含まない処理ルーチンの動作を説明する図。
【図４】タイマー割り込み処理ルーチンの動作を説明する図。
【図５】分岐命令を含む処理ルーチンの動作を説明する図。
【発明を実施するための形態】
【００２０】
ここから，本発明の好適な実施形態を記載する。なお，以下の記載は本発明の範囲を束縛するものでなく，理解を助けるために記述するものである。
【００２１】
図１は，本実施形態に係るセキュリティトークン１の概略を示すブロック図で，図２は，セキュリティトークン１の形態を説明する図である。
【００２２】
セキュリティトークン１は，電子マネーやＩＤカードなど，高いセキュリティが要求される用途で用いられる物理的なデバイスで，図１に図示したように，セキュリティトークン１は，セキュリティトークン１に対応した装置とのデータ通信に用いるインターフェース１１とＩＣチップ１０を備えている。また，セキュリティトークン１が備えるＩＣチップ１０は，中央演算装置であるＣＰＵ１００，揮発性のメモリであるＲＡＭ１０２，読み出し専用のメモリであるＲＯＭ１０１，電気的に書き換え可能なＮＶＭ１０３（Ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ），時間を計測する回路であるタイマー１０４を有する。なお，セキュリティトークン１は，図１に図示した回路等以外に，ＩＣチップ１０が動作するために必要な回路（例えば，暗号などの特定の演算機能に特化したコプロセッサ，Ｉ／Ｏ回路など）を有している。
【００２３】
図２に図示したように，このような，セキュリティトークン１の形態としては，金融用途等で用いられる接触型ＩＣカード２ａ（図２（ａ）），移動体通信端末に装着するＵＩＣＣ２ｂ（図２（ｂ）），パーソナルコンピュータと接続して利用するＵＳＢキー２ｃ（図２（ｃ））などの形態が想定できる。
【００２４】
セキュリティトークン１に実装されるインターフェース１１は，セキュリティトークン１の形態によって異なり，例えば，接触型ＩＣカード２ａやＵＩＣＣ２ｂは，インターフェース１１としてコンタクト端子を備える。また，ＵＳＢキー２ｃは，インターフェース１１として雄型のＵＳＢポートを備える。
【００２５】
また，セキュリティトークン１が備えるＩＣチップ１０のメモリ（ＲＯＭ１０１やＮＶＭ１０３）には，セキュリティトークン１の用途に合わせたコンピュータプログラムが記憶され，このコンピュータプログラムには，一連の処理を実行することで所定の機能を提供する様々な処理ルーチン１２が含まれる。
【００２６】
セキュリティトークン１において，処理ルーチン１２が実行されている時に，ＩＣチップ１０のＣＰＵ１００が有するプログラムカウンタにレーザが照射されると，プログラムカウンタの値が変化し，セキュリティトークン１が実行している処理ルーチン１２の手順が不正に変更されてしまう危険性がある。
【００２７】
この問題を解決するため，セキュリティトークン１は，処理ルーチン１２が本来行うべき処理を開始してからの時間が，処理ルーチン１２が本来行うべき処理の実行時間を参考にして予め決定されたタイムアウト時間を超えると，正しい手順で処理ルーチン１２が実行していないと判定し，エラー処理を実行するように構成されている。
【００２８】
具体的に，セキュリティトークン１では，処理ルーチン１２が本来行うべき処理を開始してからの時間の計測にＩＣチップ１０のタイマー１０４を用い，処理ルーチン１２が本来行うべき処理を開始してからの時間がタイムアウト時間を超えた否かの判定にタイマー１０４のタイマー割り込みを用い，タイマー割り込みが発生した時に実行するタイマー割り込み処理ルーチン１３に異常時の処理を記述することで，上述の内容を実現している。
【００２９】
ここから，セキュリティトークン１に実装された処理ルーチン１２の動作について説明する。図３は，分岐命令を含まない処理ルーチン１２の動作を説明する図で，図３で図示した各ステップはＩＣチップ１０のＣＰＵ１００が実行する処理である。
【００３０】
図３において，最初に実行されるステップＳ１は，処理ルーチン１２に設定されているタイムアウト時間をタイマー１０４に設定する処理である。このステップＳ１において，タイマー１０４に設定するタイムアウト時間は，処理ルーチン１２が本来行うべき処理の実行時間に基づく時間になり，処理ルーチン１２が本来行うべき処理の実行時間はＩＣチップ１０のシミュレータを用いて予め計測することができる。なお，タイマー１０４に設定する値はタイムアウト時間そのものでなくともよい。例えば，カウントアップで割り込みがかかるタイマー１０４の場合，カウントアップまでの時間がタイムアウト時間になるように，タイマー１０４の値を設定することになる。
【００３１】
次に実行されるステップＳ２は，タイマー１０４を起動させる処理で，タイマー１０４は起動すると時間の計測を開始する。次に実行されるステップＳ３は，処理ルーチン１２が本来行うべき処理である処理１になる。次に実行されるステップＳ４は，タイマー１０４を停止させた後，タイマー１０４を初期化する処理で，このステップＳ４が終了すると，図３で図示した手順は終了する。
【００３２】
図４は，タイマー割り込み処理ルーチン１３の動作を説明する図で，図４で図示した各ステップはＩＣチップ１０のＣＰＵ１００が実行する処理である。最初のステップＳ１０は，タイマー１０４が起動してからの時間がタイムアウト時間を過ぎると，タイマー割り込みが発生して，タイマー割り込み処理ルーチン１３が起動する処理である。次に実行されるステップＳ１１はエラー処理で，エラー処理が実行すると，図４の手順は終了する。なお，エラー処理の内容は任意でよいが，セキュリティトークン１の動作を停止させる処理として，ＣＰＵ１００を停止させる処理が望ましい。
【００３３】
図５は，分岐命令を含む処理ルーチン１２の動作を説明する図で，図５で図示した各ステップはＩＣチップ１０のＣＰＵ１００が実行する処理である。
【００３４】
分岐命令を含む処理ルーチン１２の場合，分岐命令によってその後の処理が変更になるため，処理ルーチン１２を開始した時および分岐命令を用いて処理を分岐した時に，タイマー１０４にタイムアウト時間を設定する処理が必要になる。
【００３５】
図５において，最初に実行されるステップＳ２０は，分岐前までに処理ルーチン１２が本来行うべき処理に係るタイムアウト時間をＩＣチップ１０のタイマー１０４に設定する処理である。ここでは，分岐前までに処理ルーチン１２が本来行うべき処理はＳ２２の本処理１０とＳ２３の本処理１１になり，このステップＳ２０でタイマー１０４に設定するタイムアウト時間は，Ｓ２２の本処理１０とＳ２３の本処理１１に要する時間になる。
【００３６】
次に実行されるステップＳ２１は，タイマー１０４を起動させる処理で，タイマー１０４は起動すると時間の計測を開始する。次に実行されるステップＳ２２は，分岐前までに処理ルーチン１２が本来行うべき処理の一つである本処理１０になる。次に実行されるステップＳ２３は，分岐前までに処理ルーチン１２が本来行うべき処理の一つで，本処理１０の結果に応じて処理を分岐させる本処理１１になる。
【００３７】
本処理１１でＹＥＳが選択される場合に実行されるステップ２４ａは，分岐後に処理ルーチン１２が本来行うべき処理に係るタイムアウト時間をタイマー１０４に再設定する処理である。ここでは，分岐後に処理ルーチン１２が本来行うべき処理はＳ２６ａの本処理１２とＳ２７ａの本処理１３になり，このステップＳ２４ａでタイマー１０４に設定するタイムアウト時間は，Ｓ２６ａの本処理１２とＳ２７ａの本処理１３に要する時間になる。
【００３８】
次に実行されるステップＳ２５ａは，セキュリティトークン１がタイマー１０４を起動させる処理で，タイマー１０４は起動すると時間の計測を開始する。
【００３９】
次に実行されるステップＳ２６ａは，本処理１１でＹＥＳが選択された場合，処理ルーチン１２が本来行うべき処理である処理１２で，次に実行されるステップＳ２７ａは，本処理１１でＹＥＳが選択された場合，処理ルーチン１２が本来行うべき処理である処理１３になる。
【００４０】
次に実行されるステップＳ２８は，タイマー１０４を停止させ，タイマー１０４を初期化する処理で，このステップＳ２８が終了すると，図５で図示した手順は終了する。
【００４１】
処理１１でＮＯが選択される場合に実行されるステップＳ２４ｂは，分岐後に処理ルーチン１２が本来行うべき処理に係るタイムアウト時間をタイマー１０４に再設定する処理である。ここでは，分岐後に処理ルーチン１２が本来行うべき処理はＳ２６ｂの本処理１４になり，このステップＳ２４ｂでタイマー１０４に設定するタイムアウト時間は，Ｓ２６ｂの本処理１４に要する時間になる。
【００４２】
次に実行されるステップＳ２５ｂは，セキュリティトークン１がタイマー１０４を起動させる処理で，タイマー１０４は起動すると時間の計測を開始する。
【００４３】
次に実行されるステップＳ２６ｂは，本処理１１でＮＯが選択された場合，処理ルーチン１２が本来行うべき処理である本処理１４になる。
【００４４】
タイマー割り込みが発生することなく本処理１４が終了した場合に，次に実行されるステップは，タイマー１０４を停止させ，タイマー１０４を初期化する処理で，このステップが終了すると，図５で図示した手順は終了する。
【００４５】
なお，図５で図示した手順においてもタイマー割り込みが発生すると，タイマー割り込み処理ルーチン１３が実行され，図４で説明した手順が実行されることになる。なお，図５では，ステップＳ２０でタイマー１０４に設定したタイムアウト時間を過ぎても，Ｓ２２の本処理１０とＳ２３の本処理１１全てが終了しなかった場合，ステップＳ２４ａでタイマー１０４に設定したタイムアウト時間を過ぎても，Ｓ２６ａの本処理１２とＳ２７ａの本処理１３全てが終了しなかった場合，また，ステップＳ２４ｂでタイマー１０４に設定したタイムアウト時間を過ぎても，Ｓ２６ｂの本処理１４全てが終了しなかった場合にタイマー割り込みが発生することになる。各本処理については、任意の処理が適用できるが鍵生成処理など高いセキュリティ性を求められる処理について適用すると、より有効である。
【００４６】
上述したように，第１の発明によれば，処理ルーチン１２を実行開始してからの時間が処理ルーチン１２に係る処理に要する時間を超え，タイマー１０４のタイマー割り込みが発生すると，エラー処理が実行されるため，処理ルーチン１２に係る処理に要する時間を大幅に超えてセキュリティトークン１は動作せず，セキュリティ的に問題となるセキュリティトークン１の誤動作を防止できる。
【符号の説明】
【００４７】
１    セキュリティトークン
１０  ＩＣチップ
１００  ＣＰＵ
１０１  ＲＯＭ
１０２  ＲＡＭ
１０３  ＮＶＭ
１０４  タイマー
１１  インターフェース
１２  処理ルーチン
【図１】
2015082233.tif 000003
【図２】
2015082233.tif 000004
【図３】
2015082233.tif 000005
【図４】
2015082233.tif 000006
【図５】
2015082233.tif 000007