(57)【要約】【課題】外部からの攻撃が複数回繰り返し行われる場合であっても、不正にデータが外部に複製されることを防止することが可能なＩＣカード、データ複製制御方法、及びデータ複製制御プログラムを提供する。【解決手段】メモリの所定のアドレスに記憶されたレスポンスデータを所定サイズ毎に通信用バッファに複製し、当該複製毎に複製元のアドレスが正当であるかを判定して複製元のアドレスが正当でないと判定された場合、レスポンスデータの複製を中断する。【選択図】図３
2014126935.tif 000002
【特許請求の範囲】
【請求項１】
外部端末から受信したコマンドに対応した所定の処理を実行するコントローラと、当該処理の結果に基づいて前記外部端末へ出力するためのレスポンスデータを記憶するメモリとを備え、前記レスポンスデータを前記メモリから通信用バッファに複製した後、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力するＩＣカードにおいて、
前記メモリの所定のアドレスに記憶された前記レスポンスデータを所定サイズ毎に前記通信用バッファに複製するデータ複製手段と、
前記所定サイズの複製毎に複製元の前記アドレスが正当であるかを判定する判定手段と、
前記判定手段により前記複製元の前記アドレスが正当でないと判定された場合、前記レスポンスデータの複製を中断する制御手段と、
を備えることを特徴とするＩＣカード。
【請求項２】
外部端末から受信したコマンドに対応した所定の処理を実行するコントローラと、当該処理の結果に基づいて前記外部端末へ出力するためのレスポンスデータを記憶するメモリとを備え、前記レスポンスデータを前記メモリから通信用バッファに複製した後、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力するＩＣカードにおいて、
前記メモリの所定のアドレスに記憶された前記レスポンスデータを所定サイズ毎に前記通信用バッファに複製するデータ複製手段と、
前記所定サイズの複製毎に複製元の前記アドレスが正当であるかを判定する判定手段と、
前記データ複製手段により前記レスポンスデータの複製が完了した場合に、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力する制御手段と、
を備え、
前記制御手段は、前記判定手段により前記複製元の前記アドレスが正当でないと判定された場合にも、前記レスポンスデータの前記所定サイズ毎の複製を継続させ、前記通信用バッファに複製された当該レスポンスデータの前記外部端末への出力を不能にすることを特徴とするＩＣカード。
【請求項３】
請求項１または２に記載のＩＣカードにおいて、
前記レスポンスデータの複製開始前に前記アドレスを示す値を前記メモリに複製するアドレス複製手段を更に備え、
前記判定手段は、前記レスポンスデータの複製元のアドレスを示す値と、前記メモリに複製されたアドレスを示す値とが一致しているかを判定し、一致していない場合、当該アドレスが正当でないと判定することを特徴とするＩＣカード。
【請求項４】
請求項１または２に記載のＩＣカードにおいて、
前記レスポンスデータの複製開始前に前記アドレスを示す値の反転値を前記メモリに複製するアドレス複製手段を更に備え、
前記判定手段は、前記レスポンスデータの複製元のアドレスを示す値と、前記メモリに複製された前記反転値との整合性が取れているか確認し、整合性が取れていない場合、当該アドレスが正当でないと判定することを特徴とするＩＣカード。
【請求項５】
請求項１乃至４の何れか一項に記載のＩＣカードにおいて、
前記制御手段は、前記判定手段により前記複製元の前記アドレスが正当でないと判定された場合、前記レスポンスデータとは異なるダミーデータを前記外部端末へ出力することを特徴とするＩＣカード。
【請求項６】
外部端末から受信したコマンドに対応した所定の処理を実行するコントローラと、当該処理の結果に基づいて前記外部端末へ出力するためのレスポンスデータを記憶するメモリとを備え、前記レスポンスデータを前記メモリから通信用バッファに複製した後、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力するＩＣカードの前記コントローラにより行われるデータ複製制御方法であって、
前記メモリの所定のアドレスに記憶された前記レスポンスデータを所定サイズ毎に前記通信用バッファに複製するステップと、
前記所定サイズの複製毎に複製元の前記アドレスが正当であるかを判定するステップと、
前記複製元の前記アドレスが正当でないと判定された場合、前記レスポンスデータの複製を中断するステップと、
を含むことを特徴とするデータ複製制御方法。
【請求項７】
外部端末から受信したコマンドに対応した所定の処理を実行するコントローラと、当該処理の結果に基づいて前記外部端末へ出力するためのレスポンスデータを記憶するメモリとを備え、前記レスポンスデータを前記メモリから通信用バッファに複製した後、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力するＩＣカードにおける前記コントローラを、
前記メモリの所定のアドレスに記憶された前記レスポンスデータを所定サイズ毎に前記通信用バッファに複製するデータ複製手段、
前記所定サイズの複製毎に複製元の前記アドレスが正当であるかを判定する判定手段、及び、
前記判定手段により前記複製元の前記アドレスが正当でないと判定された場合、前記レスポンスデータの複製を中断する制御手段として機能させることを特徴とするデータ複製制御プログラム。
【請求項８】
外部端末から受信したコマンドに対応した所定の処理を実行するコントローラと、当該処理の結果に基づいて前記外部端末へ出力するためのレスポンスデータを記憶するメモリとを備え、前記レスポンスデータを前記メモリから通信用バッファに複製した後、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力するＩＣカードの前記コントローラにより行われるデータ複製制御方法であって、
前記メモリの所定のアドレスに記憶された前記レスポンスデータを所定サイズ毎に前記通信用バッファに複製するステップと、
前記所定サイズの複製毎に複製元の前記アドレスが正当であるかを判定するステップと、
前記レスポンスデータの複製が完了した場合に、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力するステップと、
を含み、
前記データ複製制御方法は、前記複製元の前記アドレスが正当でないと判定された場合にも、前記レスポンスデータの前記所定サイズ毎の複製を継続させ、前記通信用バッファに複製された当該レスポンスデータの前記外部端末への出力を不能にすることを特徴とするデータ複製制御方法。
【請求項９】
外部端末から受信したコマンドに対応した所定の処理を実行するコントローラと、当該処理の結果に基づいて前記外部端末へ出力するためのレスポンスデータを記憶するメモリとを備え、前記レスポンスデータを前記メモリから通信用バッファに複製した後、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力するＩＣカードにおける前記コントローラを、
前記メモリの所定のアドレスに記憶された前記レスポンスデータを所定サイズ毎に前記通信用バッファに複製するデータ複製手段、
前記所定サイズの複製毎に複製元の前記アドレスが正当であるかを判定する判定手段、及び、
前記データ複製手段により前記レスポンスデータの複製が完了した場合に、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力する制御手段として機能させ、
前記制御手段は、前記判定手段により前記複製元の前記アドレスが正当でないと判定された場合にも、前記レスポンスデータの前記所定サイズ毎の複製を継続させ、前記通信用バッファに複製された当該レスポンスデータの前記外部端末への出力を不能にすることを特徴とするデータ複製制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部端末から受信したコマンドに対応した所定の処理を実行するコントローラと、当該処理の結果に基づいて前記外部端末へ出力するためのレスポンスデータを記憶するメモリとを備え、前記レスポンスデータを前記メモリから通信用バッファに複製した後、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力するＩＣカードの技術に関する。
【背景技術】
【０００２】
セキュリティ性が重要視されるＩＣカードでは、外部からの攻撃などによる不正動作に対する防止手段を備えていなければならない。外部からの攻撃とは、故障解析と呼ばれるＩＣカードに搭載されたＩＣチップに誤動作を起こさせるための手段であり、代表的なものとしてDFA(Differential Fault Analysis)が挙げられる。
【０００３】
ＩＣカードは、外部端末との通信に接触Ｉ／Ｆや非接触Ｉ／Ｆを利用する。外部端末から送信されたコマンドをそれらのＩ／Ｆにて受信し、解釈、実行した後、レスポンスデータを応答する。このレスポンスデータは、ＩＣカード内に保持する値であったり、カード内で演算した結果の値であったりするが、これらのデータをＩＣカードから外部端末へと返送する際、ＩＣカードは当該データを通信用のバッファへと複製（コピー）し、そこからレスポンスデータとして外部端末へ返送する。この時、通信用バッファへの複製時に外部から攻撃を受けると、誤ったアドレスのデータが通信用のバッファへと複製されることになり、本来は出力してはいけないアドレスのデータが出力されてしまう恐れがある。
【０００４】
特許文献１には、外部から不正な攻撃が行なわれた場合に、内部の秘匿したいデータ等を外部へ応答することを防止する技術が開示されている。特許文献１の技術では、ＩＣカードにおいて外部へ応答するための応答データを記憶する応答データエリアを持つメモリから送信バッファに対してデータを転送する前に、当該データの転送元が当該メモリの応答データエリアであることを確認し、この確認の結果、当該データの転送元が当該メモリの応答データエリアである場合は送信バッファへのデータ転送を許可し、そうでない場合は送信バッファへのデータ転送を停止するようになっている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４７１３８７８号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、外部からの攻撃が複数回繰り返し行われる場合、特許文献１の技術では、データの転送元がメモリの応答データエリアであることの確認により送信バッファへのデータ転送が許可された後に、外部からの攻撃が行なわれ、不正にデータが複製される可能性がある。
【０００７】
そこで、本発明は、外部からの攻撃が複数回繰り返し行われる場合であっても、不正にデータが外部に複製されることを防止することが可能なＩＣカード、データ複製制御方法、及びデータ複製制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、請求項１に記載の発明は、外部端末から受信したコマンドに対応した所定の処理を実行するコントローラと、当該処理の結果に基づいて前記外部端末へ出力するためのレスポンスデータを記憶するメモリとを備え、前記レスポンスデータを前記メモリから通信用バッファに複製した後、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力するＩＣカードにおいて、前記メモリの所定のアドレスに記憶された前記レスポンスデータを所定サイズ毎に前記通信用バッファに複製するデータ複製手段と、前記所定サイズの複製毎に複製元の前記アドレスが正当であるかを判定する判定手段と、前記判定手段により前記複製元の前記アドレスが正当でないと判定された場合、前記レスポンスデータの複製を中断する制御手段と、を備えることを特徴とする。
【０００９】
請求項２に記載の発明は、外部端末から受信したコマンドに対応した所定の処理を実行するコントローラと、当該処理の結果に基づいて前記外部端末へ出力するためのレスポンスデータを記憶するメモリとを備え、前記レスポンスデータを前記メモリから通信用バッファに複製した後、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力するＩＣカードにおいて、前記メモリの所定のアドレスに記憶された前記レスポンスデータを所定サイズ毎に前記通信用バッファに複製するデータ複製手段と、前記所定サイズの複製毎に複製元の前記アドレスが正当であるかを判定する判定手段と、前記データ複製手段により前記レスポンスデータの複製が完了した場合に、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力する制御手段と、を備え、前記制御手段は、前記判定手段により前記複製元の前記アドレスが正当でないと判定された場合にも、前記レスポンスデータの前記所定サイズ毎の複製を継続させ、前記通信用バッファに複製された当該レスポンスデータの前記外部端末への出力を不能にすることを特徴とする。
【００１０】
請求項３に記載の発明は、請求項１または２に記載のＩＣカードにおいて、前記レスポンスデータの複製開始前に前記アドレスを示す値を前記メモリに複製するアドレス複製手段を更に備え、前記判定手段は、前記レスポンスデータの複製元のアドレスを示す値と、前記メモリに複製されたアドレスを示す値とが一致しているかを判定し、一致していない場合、当該アドレスが正当でないと判定することを特徴とする。
【００１１】
請求項４に記載の発明は、請求項１または２に記載のＩＣカードにおいて、前記レスポンスデータの複製開始前に前記アドレスを示す値の反転値を前記メモリに複製するアドレス複製手段を更に備え、前記判定手段は、前記レスポンスデータの複製元のアドレスを示す値と、前記メモリに複製された前記反転値との整合性が取れているか確認し、整合性が取れていない場合、当該アドレスが正当でないと判定することを特徴とする。
【００１２】
請求項５に記載の発明は、請求項１乃至４の何れか一項に記載のＩＣカードにおいて、前記制御手段は、前記判定手段により前記複製元の前記アドレスが正当でないと判定された場合、前記レスポンスデータとは異なるダミーデータを前記外部端末へ出力することを特徴とする。
【００１３】
請求項６に記載の発明は、外部端末から受信したコマンドに対応した所定の処理を実行するコントローラと、当該処理の結果に基づいて前記外部端末へ出力するためのレスポンスデータを記憶するメモリとを備え、前記レスポンスデータを前記メモリから通信用バッファに複製した後、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力するＩＣカードの前記コントローラにより行われるデータ複製制御方法であって、前記メモリの所定のアドレスに記憶された前記レスポンスデータを所定サイズ毎に前記通信用バッファに複製するステップと、前記所定サイズの複製毎に複製元の前記アドレスが正当であるかを判定するステップと、前記複製元の前記アドレスが正当でないと判定された場合、前記レスポンスデータの複製を中断するステップと、を含むことを特徴とする。
【００１４】
請求項７に記載のデータ複製制御プログラムの発明は、外部端末から受信したコマンドに対応した所定の処理を実行するコントローラと、当該処理の結果に基づいて前記外部端末へ出力するためのレスポンスデータを記憶するメモリとを備え、前記レスポンスデータを前記メモリから通信用バッファに複製した後、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力するＩＣカードにおける前記コントローラを、前記メモリの所定のアドレスに記憶された前記レスポンスデータを所定サイズ毎に前記通信用バッファに複製するデータ複製手段、前記所定サイズの複製毎に複製元の前記アドレスが正当であるかを判定する判定手段、及び、前記判定手段により前記複製元の前記アドレスが正当でないと判定された場合、前記レスポンスデータの複製を中断する制御手段として機能させることを特徴とする。
【００１５】
請求項８に記載の発明は、外部端末から受信したコマンドに対応した所定の処理を実行するコントローラと、当該処理の結果に基づいて前記外部端末へ出力するためのレスポンスデータを記憶するメモリとを備え、前記レスポンスデータを前記メモリから通信用バッファに複製した後、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力するＩＣカードの前記コントローラにより行われるデータ複製制御方法であって、前記メモリの所定のアドレスに記憶された前記レスポンスデータを所定サイズ毎に前記通信用バッファに複製するステップと、前記所定サイズの複製毎に複製元の前記アドレスが正当であるかを判定するステップと、前記レスポンスデータの複製が完了した場合に、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力するステップと、を含み、前記データ複製制御方法は、前記複製元の前記アドレスが正当でないと判定された場合にも、前記レスポンスデータの前記所定サイズ毎の複製を継続させ、前記通信用バッファに複製された当該レスポンスデータの前記外部端末への出力を不能にすることを特徴とする。
【００１６】
請求項９に記載のデータ複製制御プログラムの発明は、外部端末から受信したコマンドに対応した所定の処理を実行するコントローラと、当該処理の結果に基づいて前記外部端末へ出力するためのレスポンスデータを記憶するメモリとを備え、前記レスポンスデータを前記メモリから通信用バッファに複製した後、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力するＩＣカードにおける前記コントローラを、前記メモリの所定のアドレスに記憶された前記レスポンスデータを所定サイズ毎に前記通信用バッファに複製するデータ複製手段、前記所定サイズの複製毎に複製元の前記アドレスが正当であるかを判定する判定手段、及び、前記データ複製手段により前記レスポンスデータの複製が完了した場合に、当該通信用バッファに複製された前記レスポンスデータを前記外部端末へ出力する制御手段として機能させ、前記制御手段は、前記判定手段により前記複製元の前記アドレスが正当でないと判定された場合にも、前記レスポンスデータの前記所定サイズ毎の複製を継続させ、前記通信用バッファに複製された当該レスポンスデータの前記外部端末への出力を不能にすることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、メモリの所定のアドレスに記憶されたレスポンスデータを所定サイズ毎に通信用バッファに複製し、当該複製毎に複製元のアドレスが正当であるかを判定して複製元のアドレスが正当でないと判定された場合、レスポンスデータの複製を中断するか、または、レスポンスデータの所定サイズ毎の複製を継続させ通信用バッファに複製されたレスポンスデータの外部端末への出力を不能にするように構成したので、外部からの攻撃が複数回繰り返し行われる場合であっても、不正にデータが外部に複製されることを防止することができる。
【図面の簡単な説明】
【００１８】
【図１】ＩＣカード１の概要構成例を示す図である。
【図２】複製元のアドレスsrcが、二重化されたアドレスsrc_dualとして複製される様子を示す概念図である。
【図３】（Ａ）は、データ複製制御方法１における処理を示すフローチャートであり、（Ｂ）は、（Ａ）に示す処理に対応する疑似コードの一例を示す図である。
【図４】（Ａ）は、データ複製制御方法２における処理を示すフローチャートであり、（Ｂ）は、（Ａ）に示す処理による効果を説明するための図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【００２０】
先ず、図１を参照して、本実施形態に係るＩＣカードについて説明する。図１は、ＩＣカード１の概要構成例を示す図である。なお、ＩＣカード１は、キャッシュカード、クレージットカード、社員カード等として使用される。或いは、ＩＣカード１は、スマートフォンや携帯電話機等に組み込まれる。
【００２１】
図１に示すように、ＩＣカード１には、ＩＣチップ１ａが搭載されている。ＩＣチップ１ａは、ＣＰＵ（Central Processing Unit）１１、ＲＡＭ（Random Access Memory）１２、フラッシュメモリ１３、及びＩ／Ｏ回路１４を備えて構成される。なお、フラッシュメモリの代わりにＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory)であっても構わない。
【００２２】
ＣＰＵ１１は、各種プログラムを実行するコントローラであり、本発明のデータ複製制御プログラムにしたがって、外部端末２から受信したコマンドに対応した所定のコマンド処理を実行し、ＲＡＭ１２及びフラッシュメモリ１３に対するデータの読み書き処理を行う。外部端末２は、ＩＣカード１との間で接触または非接触で通信を行うためのリーダーライタを備える。外部端末２の例としてはＡＴＭ、改札機、認証用ゲート等が挙げられる。或いは、ＩＣカード１が携帯端末に搭載される場合、外部端末２には携帯端末の機能を担う制御部が該当する。なお、外部からの攻撃者の外部端末がＩＣカード１の通信相手となる場合もあり、ＩＣカード１は、この場合にも、内部の秘匿したいデータ（本来は出力してはいけないアドレスのデータ）が出力されないように構成される。
【００２３】
ＲＡＭ１２は、データを一時的に記憶する揮発性メモリである。ＲＡＭ１２の所定の記憶領域は、通信用バッファとして使用される。通信用バッファに格納されたデータは、Ｉ／Ｏ回路１４を介して外部端末２へ出力されることになる。
【００２４】
フラッシュメモリ１３は、プログラム（本発明のデータ複製制御プログラムを含む）やデータを格納する不揮発性メモリである。フラッシュメモリ１３には、ＣＰＵ１１によるコマンド処理の結果に基づいて外部端末２へ出力するためのレスポンスデータが記憶される。このレスポンスデータは、例えば、ＩＣチップ１ａ内に保持する値（例えば鍵データ）、またはＩＣチップ１ａ内で演算した結果の値である。
【００２５】
Ｉ／Ｏ回路１４は、外部端末２とのインターフェイスを担う。Ｉ／Ｏ回路１４には、例えばＩＳＯ／ＩＥＣ７８１６によって定められたＣ１〜Ｃ８の８個の端子が設けられている。例えば、Ｃ１端子は電源端子、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子は外部端末２とのデータ通信を行う端子である。
【００２６】
ＣＰＵ１１は、上記コマンド処理において、本発明におけるデータ複製手段として機能することにより、フラッシュメモリ１３の所定のアドレスに記憶されたレスポンスデータ（つまり、コマンド処理の結果に基づいて外部端末２へ出力するためのレスポンスデータ）を所定サイズ毎に通信用バッファに複製（コピー）する複製処理を行う。例えばレスポンスデータの先頭から一定長のバイト毎に複数回に亘って通信用バッファに繰り返し複製される。
【００２７】
また、ＣＰＵ１１は、本発明における判定手段として機能することにより、レスポンスデータの所定サイズの複製毎に複製元のアドレス（フラッシュメモリ１３のアドレス）が正当であるか否かを判定する判定処理を行う。つまり、上記所定サイズ毎の複製が行われる度に複製元のアドレスがチェックされる。このチェック方法としては、アドレス（アドレスを示す値）の二重化（三重化以上でもよい）により検証する方法や、アドレス（アドレスを示す値）の誤り検出符号により検証する方法が挙げられる。
【００２８】
アドレスの二重化により検証する方法では、レスポンスデータの所定サイズの複製開始前に、複製元のアドレスを二重化して保持する。つまり、ＣＰＵ１１は、本発明におけるアドレス複製手段として機能することにより、レスポンスデータの複製開始前に複製元のアドレスをメモリ（例えば、ＲＡＭ１２またはフラッシュメモリ１３に設けられたスタック）に複製することで保持する。このとき保持される値は、「複製元のアドレス」と「複製元のアドレスと同じ値」である。
【００２９】
図２は、複製元のアドレスsrcが、二重化されたアドレスsrc_dualとして複製される様子を示す概念図である。そして、二重化されたアドレスが、レスポンスデータの所定サイズの複製時に比較（srcとsrc_dualとが比較）され、互いのアドレスが一致する場合、複製元のアドレスが正当であると判定するように構成する。一方、互いのアドレスが一致しない場合、当該アドレスが正当でないと判定される。或いは、このとき保持される値は、「複製元のアドレス」と「複製元のアドレスの反転値」であってもよい。この場合、「複製元のアドレス」と「複製元のアドレスの反転値」との整合性が取れていることが、レスポンスデータの所定サイズの複製時に確認され、整合性が取れている場合、複製元のアドレスが正当であると判定するように構成する。一方、整合性が取れていない場合、当該アドレスが正当でないと判定される。例えば、図２において、srcに複製元のアドレス、Src_dualに複製元のアドレスの反転値が格納されていた場合、srcと、src_dualの反転値が一致する場合、複製元のアドレスが正当であると判定される。このように反転値を保持しておくことにより、セキュリティ性を向上させることはできる。メモリは特性として「攻撃を受けると特定の値に変化しやすい」という場合がある。この場合、元の値をそのまま二重化して保持していた場合、両方へ攻撃されてしまうと両方とも同じ値に変化してしまう。しかし、反転値を保持していた場合では、両方へ攻撃されて同じ値になっても攻撃を検知することが可能になる。
【００３０】
一方、アドレスの誤り検出符号により検証する方法では、レスポンスデータの所定サイズの複製開始前に、複製元のアドレスをＣＲＣ（Cyclic Redundancy Check, CRC）演算してＣＲＣの値を保持する。そして、レスポンスデータの所定サイズの複製時に複製元のアドレスをＣＲＣ演算することで得られたＣＲＣの値と、所定サイズの複製前に演算され保持されたＣＲＣの値とが比較され、互いのＣＲＣの値が一致する場合、複製元のアドレスが正当であると判定するように構成する。或いは、アドレスの誤り検出符号により検証する別の方法では、レスポンスデータの所定サイズの複製開始前に複製元のアドレスのチェックサムを演算してチェックサムの値を保持する。そして、レスポンスデータの所定サイズの複製時に複製元のアドレスのチェックサムを演算することで得られた値と、所定サイズの複製前に演算され保持されたチェックサムの値とが比較され、互いのチェックサムの値が一致する場合、複製元のアドレスが正当であると判定するように構成する。
【００３１】
アドレスの二重化により検証する方法とアドレスの誤り検出符号により検証する方法とを比較すると、アドレスの二重化により検証する方法の方が、アドレスの誤り検出符号により検証する方法よりも処理時間を短縮することができる。一方、アドレスの誤り検出符号により検証する方法の方が、アドレスの二重化により検証する方法よりもメモリ容量を抑えることができる。
【００３２】
そして、ＣＰＵ１１は、本発明における制御手段として機能することにより、複製元のアドレスが正当でないと判定されることなく複製が完了した場合に、当該通信用バッファに複製されたレスポンスデータをＩ／Ｏ回路１４を介して外部端末２へ出力する。一方、ＣＰＵ１１は、上記複製処理及び判定処理の途中で、複製元のアドレスが正当でないと判定した場合、レスポンスデータの複製処理を中断する（データ複製制御方法１）。或いは、ＣＰＵ１１は、上記複製処理及び判定処理の途中で、複製元のアドレスが正当でないと判定された場合にも、レスポンスデータの所定サイズ毎の複製を継続させ複製完了した後に以降の処理を中断する（データ複製制御方法２）。データ複製制御方法２の場合、ＣＰＵ１１は、通信用バッファに複製されたレスポンスデータの外部端末２への出力を不能にする。
【００３３】
次に、図３及び図４を参照して、外部端末２からコマンドを受信したときのＣＰＵ１１の処理について説明する。図３（Ａ）は、データ複製制御方法１における処理を示すフローチャートであり、図３（Ｂ）は、図３（Ａ）に示す処理に対応する疑似コードの一例を示す図である。図４（Ａ）は、データ複製制御方法２における処理を示すフローチャートであり、図４（Ｂ）は、図４（Ａ）に示す処理による効果を説明するための図である。なお、図３（Ａ）及び図４（Ａ）は、アドレスの二重化により検証する方法を適用した場合の処理であり、例えばデータの読み出しコマンドを受信した場合に開始される。
【００３４】
先ず、図３（Ａ）に示すデータ複製制御方法１における処理について説明する。図３（Ａ）に示すステップＳ１では、ＣＰＵ１１は、上述したように、複製元のアドレスを二重化して保持する。次いで、ＣＰＵ１１は、複製処理を開始し（ステップＳ２）、レスポンスデータの複製元のアドレスが正当であるか否かを判定する（ステップＳ３）。例えば、ＣＰＵ１１は、レスポンスデータの複製元のアドレスと、ステップＳ１で保持されたアドレスとが一致しているかを判定し、一致している場合、当該アドレスが正当であると判定する（ステップＳ３：ＹＥＳ）。このようにアドレスが正当であると判定された場合、ＣＰＵ１１は、レスポンスデータの一定長を通信用バッファに複製（言い換えれば、通信用バッファに転送）する（ステップＳ４）。
【００３５】
次いで、ＣＰＵ１１は、レスポンスデータの複製が完了したか否かを判定する（ステップＳ５）。そして、レスポンスデータの複製が完了していない場合（ステップＳ５：ＮＯ）、ＣＰＵ１１は、ステップＳ２に戻り、レスポンスデータの一定長毎の複製処理を継続する。一方、レスポンスデータの複製が完了した場合（ステップＳ５：ＹＥＳ）、ＣＰＵ１１は、通信用バッファに複製されたレスポンスデータをＩ／Ｏ回路１４を介して外部端末２へ出力する（ステップＳ６）。
【００３６】
一方、ステップＳ３において、レスポンスデータの複製元のアドレスと、ステップＳ１で保持されたアドレスとが一致していない場合、ＣＰＵ１１は、当該アドレスが正当でないと判定（異常検知）し（ステップＳ３：ＮＯ）、レスポンスデータの複製を中断して動作停止（システム停止）する（ステップＳ７）。つまり、上記アドレスが一致しないことにより異常が検知された場合、外部からの攻撃があったものとみなし、複製処理が中断される。なお、ステップＳ７において、ＣＰＵ１１は、外部端末２へエラーを応答してもよい。また、ステップＳ７において、ＣＰＵ１１は、レスポンスデータとは異なるダミーデータ（固定値または乱数）を外部（例えば、攻撃者の外部端末）へ出力するように構成すれば、当該攻撃者に対して、出力されたデータが内部の秘匿したいデータであるか否かを絞らせないようにすることができる。
【００３７】
以上説明したように、上記データ複製制御方法１によれば、ＣＰＵ１１は、レスポンスデータを所定サイズ毎に通信用バッファに複製する複製処理を行い、所定サイズの複製毎に複製元のアドレスが正当であるかを判定し、当該複製処理の途中で複製元のアドレスが正当でないと判定した場合、当該複製処理を中断するように構成したので、外部からの攻撃が複数回繰り返し行われる場合であっても、内部の秘匿したいデータが外部へ出力されることを防止（データが不正に外部に複製されることを防止）することができる。
【００３８】
次に、図４（Ａ）に示すデータ複製制御方法２における処理について説明する。データ複製制御方法２における処理の前提として、異常が検知されたことを記録する領域（以下、「異常検知フラグ」という）が用意される。図４（Ａ）に示すステップＳ１１では、図３（Ａ）に示すステップＳ１と同様、ＣＰＵ１１は、複製元のアドレスを二重化して保持する。次いで、ＣＰＵ１１は、異常検知フラグをオフに（つまり、リセット）する（ステップＳ１２）。次いで、ＣＰＵ１１は、複製処理を開始し（ステップＳ１３）、図３（Ａ）に示すステップＳ３と同様、レスポンスデータの複製元のアドレスが正当であるか否かを判定する（ステップＳ１４）。そして、上記アドレスが正当であると判定された場合（ステップＳ１４：ＹＥＳ）、図３（Ａ）に示すステップＳ４と同様、ＣＰＵ１１は、レスポンスデータの一定長を通信用バッファに複製する（ステップＳ１５）。一方、上記アドレスが正当でないと判定（異常検知）された場合（ステップＳ１４：ＮＯ）、ＣＰＵ１１は、異常検知フラグをオンに（例えば、異常が検知されたことを記録する領域のデータ“０”を“１”に更新）し（ステップＳ１６）、レスポンスデータの一定長を通信用バッファに複製する（ステップＳ１５）。つまり、ＣＰＵ１１は、複製処理の途中で異常が検知された場合、外部からの攻撃があったものとみなし、異常検知フラグをオンするが、複製処理は継続して実行する。
【００３９】
次いで、ＣＰＵ１１は、レスポンスデータの複製が完了したか否かを判定し（ステップＳ１７）、レスポンスデータの複製が完了していない場合（ステップＳ１７：ＮＯ）、ステップＳ１３に戻り、レスポンスデータの一定長毎の複製処理を継続する。一方、レスポンスデータの複製が完了した場合（ステップＳ１７：ＹＥＳ）、ＣＰＵ１１は、異常検知フラグがオンであるか否かを判定する（ステップＳ１８）。そして、異常検知フラグがオンでないと判定された場合（ステップＳ１８：ＮＯ）、ＣＰＵ１１は、通信用バッファに複製されたレスポンスデータをＩ／Ｏ回路１４を介して外部端末２へ出力する（ステップＳ１９）。一方、異常検知フラグがオンであると判定された場合（ステップＳ１８：ＹＥＳ）、動作停止する（ステップＳ２０）。つまり、データ複製制御方法２では、ＣＰＵ１１は、全ての複製処理が完了した後、異常検知フラグを確認し、オフの場合はそのまま処理を継続してレスポンスデータの出力し、オンになっていた場合は以降の処理を中断することで通信用バッファに複製されたレスポンスデータの外部端末２への出力を不能にする。なお、ステップＳ２０において、ＣＰＵ１１は、外部端末２へエラーを応答してもよい。また、ステップＳ２０において、ＣＰＵ１１は、ステップＳ７と同様、レスポンスデータとは異なるダミーデータ（固定値または乱数）を外部（例えば、攻撃者の外部端末）へ出力するように構成してもよい。
【００４０】
以上説明したように、上記データ複製制御方法２によれば、ＣＰＵ１１は、レスポンスデータを所定サイズ毎に通信用バッファに複製する複製処理を行い、所定サイズの複製毎に複製元のアドレスが正当であるかを判定し、当該複製処理の途中で複製元のアドレスが正当でないと判定した場合、当該複製処理を継続して複製完了した後に以降の処理を中断することで通信用バッファに複製されたレスポンスデータの外部端末２への出力を不能にするように構成したので、外部からの攻撃が複数回繰り返し行われる場合であっても、内部の秘匿したいデータが外部へ出力されることを防止することができる。更に、上記データ複製制御方法２によれば、複製処理の途中で複製元のアドレスが正当でないと判定された場合であっても当該複製処理を継続して複製完了した後に以降の処理を中断するように構成したので、どのタイミングで異常が検知されたかを攻撃者に観測（把握）させないようにすることができる。つまり、図４（Ｂ）に示すように、所定サイズ毎の複製が、１回目から４回目まであったと仮定した場合において、複製２回目で攻撃があったとすると、その攻撃タイミングでは複製が中断されず、複製４回目まで完了した後に動作停止するので、攻撃者は攻撃タイミングが間違っていないかどうかを判断することができない。
【符号の説明】
【００４１】
１  ＩＣカード
１ａ  ＩＣチップ
１１  ＣＰＵ
１２  ＲＡＭ
１３  フラッシュメモリ
１４  Ｉ／Ｏ回路
【図１】
2014126935.tif 000003
【図２】
2014126935.tif 000004
【図３】
2014126935.tif 000005
【図４】
2014126935.tif 000006