IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 大日本印刷株式会社の特許一覧

特開2025-151808電子情報記憶媒体、ICチップ、ICカード、初期応答データ出力方法、及びプログラム
<>
  • 特開-電子情報記憶媒体、ICチップ、ICカード、初期応答データ出力方法、及びプログラム 図1
  • 特開-電子情報記憶媒体、ICチップ、ICカード、初期応答データ出力方法、及びプログラム 図2
  • 特開-電子情報記憶媒体、ICチップ、ICカード、初期応答データ出力方法、及びプログラム 図3
  • 特開-電子情報記憶媒体、ICチップ、ICカード、初期応答データ出力方法、及びプログラム 図4
  • 特開-電子情報記憶媒体、ICチップ、ICカード、初期応答データ出力方法、及びプログラム 図5
  • 特開-電子情報記憶媒体、ICチップ、ICカード、初期応答データ出力方法、及びプログラム 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025151808
(43)【公開日】2025-10-09
(54)【発明の名称】電子情報記憶媒体、ICチップ、ICカード、初期応答データ出力方法、及びプログラム
(51)【国際特許分類】
   G06K 19/073 20060101AFI20251002BHJP
【FI】
G06K19/073 009
【審査請求】未請求
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2024053398
(22)【出願日】2024-03-28
(71)【出願人】
【識別番号】000002897
【氏名又は名称】大日本印刷株式会社
(74)【代理人】
【識別番号】110000958
【氏名又は名称】弁理士法人インテクト国際特許事務所
(74)【代理人】
【識別番号】100120189
【弁理士】
【氏名又は名称】奥 和幸
(72)【発明者】
【氏名】高田 憲一
(72)【発明者】
【氏名】木下 靖夫
(72)【発明者】
【氏名】高橋 憲介
(72)【発明者】
【氏名】嘉瀬 悠太
(57)【要約】
【課題】外部からの攻撃が検知された場合の対応動作によって攻撃者を攪乱させることが可能な電子情報記憶媒体、ICチップ、ICカード、初期応答データ出力方法及びプログラムを提供する。
【解決手段】ICチップ1は、外部からの攻撃が検知された際のリセット処理において正規の初期応答データと、非正規の初期応答データとのうち、何れか1つを所定の出力アルゴリズムにしたがって出力する。
【選択図】図3
【特許請求の範囲】
【請求項1】
外部からの攻撃を検知することが可能な電子情報記憶媒体であって、
前記攻撃が検知された際のリセット処理において出力される正規の初期応答データを記憶する記憶手段と、
前記リセット処理において前記正規の初期応答データと、前記正規の初期応答データとは異なる非正規の初期応答データとのうち、何れか1つを所定の出力アルゴリズムにしたがって出力する出力制御手段と、
を備えることを特徴とする電子情報記憶媒体。
【請求項2】
前記出力制御手段は、前記正規の初期応答データよりも低い確率で前記非正規の初期応答データを出力することを特徴とする請求項1に記載の電子情報記憶媒体。
【請求項3】
乱数を生成する乱数生成手段を更に備え、
前記出力アルゴリズムは、前記乱数生成手段により生成された乱数に基づいて初期応答データを出力するためのアルゴリズムであり、
前記出力制御手段は、前記乱数に基づいて、前記正規の初期応答データと、前記非正規の初期応答データとのうち、何れか1つを出力することを特徴とする請求項1に記載の電子情報記憶媒体。
【請求項4】
前記初期応答データが出力された回数を保持するカウンタを更に備え、
前記出力アルゴリズムは、前記カウンタの値に基づいて初期応答データを出力するためのアルゴリズムであり、
前記出力制御手段は、前記カウンタの値に基づいて、前記正規の初期応答データと、前記非正規の初期応答データとのうち、何れか1つを出力することを特徴とする請求項1に記載の電子情報記憶媒体。
【請求項5】
前記記憶手段は、前記正規の初期応答データとともに、前記非正規の初期応答データを予め記憶することを特徴とする請求項1乃至4の何れか一項に記載の電子情報記憶媒体。
【請求項6】
前記非正規の初期応答データは、前記正規の初期応答データに基づいて生成されることを特徴とする請求項1乃至4の何れか一項に記載の電子情報記憶媒体。
【請求項7】
前記正規の初期応答データのデータフォーマットと、前記非正規の初期応答データのデータとデータフォーマットとは同一であり、
前記正規の初期応答データ中の所定バイト目の値と、前記非正規の初期応答データ中の前記所定バイト目の値とが互いに異なることを特徴とする請求項1乃至4の何れか一項に記載の電子情報記憶媒体。
【請求項8】
前記所定バイト目の値は、乱数に基づいて算出された値であることを特徴とする請求項7に記載の電子情報記憶媒体。
【請求項9】
前記出力制御手段は、前記乱数に基づいて、前記正規の初期応答データと、互いに異なる複数の前記非正規の初期応答データとのうち、何れか1つを出力することを特徴とする請求項3に記載の電子情報記憶媒体。
【請求項10】
前記正規の初期応答データのデータフォーマットと、前記複数の前記非正規の初期応答データのデータとデータフォーマットとは同一であり、
前記正規の初期応答データ中の所定バイト目の値と、前記複数の前記非正規の初期応答データ中のそれぞれの前記所定バイト目の値とが互いに異なり、且つ前記複数の前記非正規の初期応答データ中のそれぞれの前記所定バイト目の値が互いに異なることを特徴とする請求項9に記載の電子情報記憶媒体。
【請求項11】
外部からの攻撃を検知することが可能なICチップであって、
前記攻撃が検知された際のリセット処理において出力される正規の初期応答データを記憶する記憶手段と、
前記リセット処理において前記正規の初期応答データと、前記正規の初期応答データとは異なる非正規の初期応答データとのうち、何れか1つを所定の出力アルゴリズムにしたがって出力する出力制御手段と、
を備えることを特徴とするICチップ。
【請求項12】
外部からの攻撃を検知することが可能なICカードであって、
前記攻撃が検知された際のリセット処理において出力される正規の初期応答データを記憶する記憶手段と、
前記リセット処理において前記正規の初期応答データと、前記正規の初期応答データとは異なる非正規の初期応答データとのうち、何れか1つを所定の出力アルゴリズムにしたがって出力する出力制御手段と、
を備えることを特徴とするICカード。
【請求項13】
外部からの攻撃を検知することが可能な電子情報記憶媒体により実行される初期応答データ出力方法であって、
前記攻撃が検知された際のリセット処理において出力される正規の初期応答データを記憶手段に記憶するステップと、
前記リセット処理において前記正規の初期応答データと、前記正規の初期応答データとは異なる非正規の初期応答データとのうち、何れか1つを所定の出力アルゴリズムにしたがって出力するステップと、
を含むことを特徴とする初期応答データ出力方法。
【請求項14】
外部からの攻撃を検知することが可能な電子情報記憶媒体に含まれるコンピュータに、
前記攻撃が検知された際のリセット処理において出力される正規の初期応答データを記憶手段に記憶するステップと、
前記リセット処理において前記正規の初期応答データと、前記正規の初期応答データとは異なる非正規の初期応答データとのうち、何れか1つを所定の出力アルゴリズムにしたがって出力するステップと、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、外部からの攻撃を検知することが可能なIC(Integrated Circuit)カード等の技術分野に関する。
【背景技術】
【0002】
クレジットカードなどのICカードは、内部に秘密情報を保持していながら、攻撃者が直接触ることができるという特徴を持つ。その特徴によりサイバー攻撃とは異なるフォールトインジェクション攻撃(パータベーションアタックともいう)と呼ばれる手法が知られている。フォールトインジェクション攻撃では、攻撃者がICカード上の異なる箇所に異なるタイミングで電磁波やレーザーを繰り返し照射することで誤動作を誘発し脆弱な箇所を特定する。特許文献1には、外部からの攻撃による異常が検知された際に割り込み処理(エラー処理やロギング処理)を実行し、その後、リセット処理を実行するICカードが開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2022-67721号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来のICカードでは、外部からの攻撃が検知された場合の対応動作によって攻撃者を攪乱することはできなかった。
【0005】
そこで、本発明は、このような点を課題の一例として鑑みてなされたものであり、外部からの攻撃が検知された場合の対応動作によって攻撃者を攪乱させることが可能な電子情報記憶媒体、ICチップ、ICカード、初期応答データ出力方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記課題を解決するために、請求項1に記載の発明は、外部からの攻撃を検知することが可能な電子情報記憶媒体であって、前記攻撃が検知された際のリセット処理において出力される正規の初期応答データを記憶する記憶手段と、前記リセット処理において前記正規の初期応答データと、前記正規の初期応答データとは異なる非正規の初期応答データとのうち、何れか1つを所定の出力アルゴリズムにしたがって出力する出力制御手段と、を備えることを特徴とする。
【0007】
請求項2に記載の発明は、請求項1に記載の電子情報記憶媒体において、前記出力制御手段は、前記正規の初期応答データよりも低い確率で前記非正規の初期応答データを出力することを特徴とする。
【0008】
請求項3に記載の発明は、請求項1に記載の電子情報記憶媒体において、乱数を生成する乱数生成手段を更に備え、前記出力アルゴリズムは、前記乱数生成手段により生成された乱数に基づいて初期応答データを出力するためのアルゴリズムであり、前記出力制御手段は、前記乱数に基づいて、前記正規の初期応答データと、前記非正規の初期応答データとのうち、何れか1つを出力することを特徴とする。
【0009】
請求項4に記載の発明は、請求項1に記載の電子情報記憶媒体において、前記初期応答データが出力された回数を保持するカウンタを更に備え、前記出力アルゴリズムは、前記カウンタの値に基づいて初期応答データを出力するためのアルゴリズムであり、前記出力制御手段は、前記カウンタの値に基づいて、前記正規の初期応答データと、前記非正規の初期応答データとのうち、何れか1つを出力することを特徴とする。
【0010】
請求項5に記載の発明は、請求項1乃至4の何れか一項に記載の電子情報記憶媒体において、前記記憶手段は、前記正規の初期応答データとともに、前記非正規の初期応答データを予め記憶することを特徴とする。
【0011】
請求項6に記載の発明は、請求項1乃至4の何れか一項に記載の電子情報記憶媒体において、前記非正規の初期応答データは、前記正規の初期応答データに基づいて生成されることを特徴とする。
【0012】
請求項7に記載の発明は、請求項1乃至4の何れか一項に記載の電子情報記憶媒体において、前記正規の初期応答データのデータフォーマットと、前記非正規の初期応答データのデータとデータフォーマットとは同一であり、前記正規の初期応答データ中の所定バイト目の値と、前記非正規の初期応答データ中の前記所定バイト目の値とが互いに異なることを特徴とする。
【0013】
請求項8に記載の発明は、請求項7に記載の電子情報記憶媒体において、前記所定バイト目の値は、乱数に基づいて算出された値であることを特徴とする。
【0014】
請求項9に記載の発明は、請求項3に記載の電子情報記憶媒体において、前記出力制御手段は、前記乱数に基づいて、前記正規の初期応答データと、互いに異なる複数の前記非正規の初期応答データとのうち、何れか1つを出力することを特徴とする。
【0015】
請求項10に記載の発明は、請求項9に記載の電子情報記憶媒体において、前記正規の初期応答データのデータフォーマットと、前記複数の前記非正規の初期応答データのデータとデータフォーマットとは同一であり、前記正規の初期応答データ中の所定バイト目の値と、前記複数の前記非正規の初期応答データ中のそれぞれの前記所定バイト目の値とが互いに異なり、且つ前記複数の前記非正規の初期応答データ中のそれぞれの前記所定バイト目の値が互いに異なることを特徴とする。
【0016】
請求項11に記載の発明は、外部からの攻撃を検知することが可能なICチップであって、前記攻撃が検知された際のリセット処理において出力される正規の初期応答データを記憶する記憶手段と、前記リセット処理において前記正規の初期応答データと、前記正規の初期応答データとは異なる非正規の初期応答データとのうち、何れか1つを所定の出力アルゴリズムにしたがって出力する出力制御手段と、を備えることを特徴とする。
【0017】
請求項12に記載の発明は、外部からの攻撃を検知することが可能なICカードであって、前記攻撃が検知された際のリセット処理において出力される正規の初期応答データを記憶する記憶手段と、前記リセット処理において前記正規の初期応答データと、前記正規の初期応答データとは異なる非正規の初期応答データとのうち、何れか1つを所定の出力アルゴリズムにしたがって出力する出力制御手段と、を備えることを特徴とする。
【0018】
請求項13に記載の発明は、外部からの攻撃を検知することが可能な電子情報記憶媒体により実行される初期応答データ出力方法であって、前記攻撃が検知された際のリセット処理において出力される正規の初期応答データを記憶手段に記憶するステップと、前記リセット処理において前記正規の初期応答データと、前記正規の初期応答データとは異なる非正規の初期応答データとのうち、何れか1つを所定の出力アルゴリズムにしたがって出力するステップと、を含むことを特徴とする。
【0019】
請求項14に記載の発明は、外部からの攻撃を検知することが可能な電子情報記憶媒体に含まれるコンピュータに、前記攻撃が検知された際のリセット処理において出力される正規の初期応答データを記憶手段に記憶するステップと、前記リセット処理において前記正規の初期応答データと、前記正規の初期応答データとは異なる非正規の初期応答データとのうち、何れか1つを所定の出力アルゴリズムにしたがって出力するステップと、を実行させることを特徴とする。
【発明の効果】
【0020】
本発明によれば、外部からの攻撃が検知された場合の対応動作によって攻撃者を攪乱させることができる。
【図面の簡単な説明】
【0021】
図1】ICチップ1のハードウェア構成例を示す図である。
図2】正規の初期応答データ及び非正規の初期応答データの一例を示す図である。
図3】実施例1におけるICチップ1のCPU16により実行されるリセット処理の一例を示すフローチャートである。
図4】実施例2におけるICチップ1のCPU16により実行されるリセット処理の一例を示すフローチャートである。
図5】実施例3におけるICチップ1のCPU16により実行されるリセット処理の一例を示すフローチャートである。
図6】実施例4におけるICチップ1のCPU16により実行されるリセット処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0022】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【0023】
[1.ICチップ1の構成及び機能]
先ず、図1を参照して、本実施形態に係るICチップ1の構成及び機能について説明する。ICチップ1は、外部からの攻撃(例えば、フォールトインジェクション攻撃)を検知することが可能な電子情報記憶媒体の一例である。ICチップ1は、例えば、クレジットカード、キャッシュカード、またはマイナンバーカードなどのICカード、または、スマートフォンなどのモバイルデバイスに搭載される。スマートフォンなどのモバイルデバイスの場合、ICチップ1は、モバイルデバイスに着脱可能な小型ICカードに搭載されてもよいし、eUICC(Embedded Universal Integrated Circuit Card)としてモバイルデバイスから容易に取り外しや取り換えができないように組み込み基板上に搭載されてもよい。なお、ICカードやモバイルデバイスには非接触通信で用いられるアンテナが備えられる。
【0024】
図1は、ICチップ1のハードウェア構成例を示す図である。ICチップ1は、図1に示すように、I/O回路11、RAM(Random Access Memory)12、NVM(Nonvolatile Memory)13(記憶手段の一例)、ROM(Read Only Memory)14、攻撃検知部15、及びCPU(Central Processing Unit)16(コンピュータの一例)等を備える。I/O回路11は、外部装置2(リーダライタを含む)との間のインターフェースを担う。ICチップ1と外部装置2との間の通信は、非接触通信であってもよいし、接触通信であってもよい。非接触通信の場合、例えばICカードまたはモバイルデバイスに搭載されたアンテナ(図示せず)を介してICチップ1と外部装置2との間で、例えばISO/IEC 14443に準拠する通信が行われる。なお、外部装置2の例として、店舗等に設置された取引端末(例えば、決済端末)等が挙げられる。ただし、外部装置2は、攻撃を行う攻撃者の端末の場合もありうる。
【0025】
NVM13には、例えばフラッシュメモリが適用される。NVM13は、「Electrically Erasable Programmable Read-Only Memory」であってもよい。NVM13またはROM14には、OS(Operating System)、リセットプログラム(本発明のプログラムを含む)、及びアプリケーション等の各種プログラム等が記憶される。ここで、リセットプログラムは、ICチップ1の起動時にリセット処理(初期化処理)を実行するためのプログラムであり、初期応答データを出力する所定の出力アルゴリズムが規定されている。なお、リセットプログラムは、OSに組み込まれてもよい。
【0026】
また、NVM13には、上記リセット処理において出力される正規の初期応答データが予め記憶される。さらに、NVM13は、初期応答データが出力された回数を保持するカウンタ(例えば、所定回数まで保持可能なカウンタ)としても利用されてもよい。初期応答データには、例えば、ICチップ1が対応可能な通信速度などの通信パラメータを示す要素データが複数含まれる。接触通信の場合、上記リセット処理は、外部装置2からのリセットがI/O回路11を介して受信されることでCPU16により実行される。かかるリセット処理において、例えばISO/IEC 7816-3に規定されるように、正規の初期応答データを含む初期応答(例えばATR(Answer to Reset))が外部装置2へ送信される。
【0027】
一方、非接触通信の場合、上記リセット処理は、外部装置2からのリクエストコマンド(例えばREQA(Request Command Type A)、またはREQB(Request Command Type B)など)がI/O回路11を介して受信されることでCPU16により実行される。かかるリセット処理において、例えばISO/IEC 14443-3に規定されるように、正規の初期応答データを含む初期応答(例えば、ATQA(Answer To reQuest for PICC A)、ATS(Answer To Select)、またはATQB(Answer To reQuest for PICC B))が外部装置2へ送信される。なお、上記リセット処理は、外部からの攻撃によって誘発される場合もある。
【0028】
攻撃検知部15は、外部からの攻撃を検知する。例えば、攻撃検知部15は、ICチップ1内で伝送される信号の状態や、メモリ(例えば、RAM12やNVM13)内のデータの状態を監視しており、これらの状態の異常を検出することにより当該攻撃を検知する。なお、外部からの攻撃の検知方法については公知の技術を適用することができる。攻撃検知部15により攻撃が検知されると、セキュリティリセットが発生する。
【0029】
CPU16は、NVM13に記憶されたリセットプログラムを実行することで、本発明における出力制御手段、及び乱数生成手段等として機能する。より具体的には、CPU16は、セキュリティリセットが発生した(つまり、外部からの攻撃が検知された)際のリセット処理において正規の初期応答データと、当該正規の初期応答データとは異なる非正規(ダミー)の初期応答データとのうち、何れか1つを所定の出力アルゴリズムにしたがって出力する。ここで、非正規の初期応答データは、正規の初期応答データとともに、NVM13に予め記憶されてもよいし、正規の初期応答データに基づいて生成されてもよい。前者の場合、互いに異なる複数の非正規の初期応答データがNVM13に予め記憶(つまり、予め数種類を用意)されてもよい。後者の場合、乱数を用いて、非正規の初期応答データがその都度生成されてもよい。
【0030】
図2は、正規の初期応答データ及び非正規の初期応答データの一例を示す図である。図2の例では、1つの正規の初期応答データD1と、3つの非正規の初期応答データD2~D4とが示されており、これらの初期応答データD1~D4のデータフォーマット(例えば、初期応答データの長さ、及び初期応答データ内の要素データの並び)は同一であり、初期応答データD1~D4中の所定バイト目の値が互いに異なるようになっている。図2の例では、正規の初期応答データD1中の10バイト目の値が“00(h)”であり、非正規の初期応答データD2中の10バイト目の値が“01(h)”であり、非正規の初期応答データD3中の10バイト目の値が“FF(h)”であり、非正規の初期応答データD4中の10バイト目の値が“nn(h)”である((h)は16進数であることを示す)。ここで、非正規の初期応答データD4中の“nn(h)”は、CPU16により生成された乱数(例えば、擬似ランダム関数を用いて生成された疑似乱数)に基づいて算出された値が設定されるとよい。なお、非正規の初期応答データ中の所定バイト目以外のバイト目の値は正規の初期応答データの当該バイト目の値が用いられるとよい。また、非正規の初期応答データ中の何バイト目(図2の例では、10バイト目)の値を正規の初期応答データと異ならせるかは特に限定されない。
【0031】
また、上記出力アルゴリズムは、例えば、CPU16により生成された乱数に基づいて初期応答データを出力するためのアルゴリズムであるとよい。この場合、CPU16は、乱数を生成し、当該生成された乱数に基づいて、正規の初期応答データと、非正規の初期応答データとのうち、何れか1つを出力(例えば、外部装置2へ送信)する。これにより、正規の初期応答データをランダムの変更頻度で変更(例えば、数バイト変更)することができる。或いは、上記出力アルゴリズムは、上述したカウンタの値に基づいて初期応答データを出力するためのアルゴリズムであってもよい。この場合、CPU16は、当該カウンタの値に基づいて、正規の初期応答データと、非正規の初期応答データとのうち、何れか1つを出力する。これにより、正規の初期応答データを一定回数ごとの変更頻度で変更(例えば、数バイト変更)することができる。いずれのアルゴリズムであっても、CPU16は、正規の初期応答データよりも低い確率で非正規の初期応答データを出力することが望ましい。例えば、正規の初期応答データが出力される確率が997/1000~999/1000になるように設定されるとともに、非正規の初期応答データが出力される確率が3/1000~1/1000に設定されるとよい。
【0032】

[2.ICチップ1の動作]
次に、ICチップ1の動作について、実施例1~実施例4に分けて説明する。なお、実施例1及び2は、乱数に基づいて初期応答データを出力するためのアルゴリズムが適用される場合の動作例である。一方、実施例3及び4は、カウンタの値に基づいて初期応答データを出力するためのアルゴリズムが適用される場合の動作例である。
【0033】
(実施例1)
先ず、図3を参照して、実施例1におけるICチップ1の動作について説明する。図3は、実施例1におけるICチップ1のCPU16により実行されるリセット処理の一例を示すフローチャートである。図3に示す処理は、上述したようにリセットやリクエストコマンドが受信されることにより、または外部からの攻撃により、ICチップ1が起動した際に開始される。
【0034】
図3に示す処理が開始されると、CPU16は、例えば図2に示す正規の初期応答データD1をNVM13から取得する(ステップS1)。次いで、CPU16は、直前に攻撃検知部15により攻撃が検知されたことに応じてセキュリティリセットが発生したか否かを判定する(ステップS2)。セキュリティリセットが発生していないと判定された場合(ステップS2:NO)、ステップS1で取得された正規の初期応答データD1を含む初期応答がICチップ1外へ出力され(ステップS3)、外部装置2からのコマンド待ちとなる。
【0035】
一方、セキュリティリセットが発生したと判定された場合(ステップS2:NO)、CPU16は、乱数(例えば1000以上かつ所定値以下の乱数)を生成し、当該乱数を変数aに代入する(ステップS4)。次いで、CPU16は、当該乱数を示す変数aを例えば1000で割った余り(0~999の何れかの値)を変数bに代入する(ステップS5)。ここで、1000は予め設定された値であり、この値以外の値であってもよい。次いで、CPU16は、当該余りを示す変数bが例えば998または999であるか否かを判定する(ステップS6)。ここで、998及び999は予め設定された値であり、これらの値以外であってもよい。また、998と999のうち何れか一方の値のみが判定されてもよい。変数bが998または999であると判定された場合(ステップS6:YES)、処理はステップS7へ進む。一方、変数bが998と999との何れでもないと判定された場合(ステップS6:NO)、処理はステップS9へ進む。
【0036】
ステップS7では、CPU16は、例えば図2に示す非正規の初期応答データD2を取得する。例えば、非正規の初期応答データD2は、NVM13から取得される。或いは、非正規の初期応答データD2は、正規の初期応答データD1に基づいて生成されることで取得されてもよい。この場合、非正規の初期応答データD2は、例えば、正規の初期応答データD1の所定バイト目の値(例えば00(h))が所定値(例えば01(h))に変換されることにより生成される。次いで、CPU16は、ステップS7で取得された非正規の初期応答データD2を含む初期応答をI/O回路11を介してICチップ1外へ出力し(ステップS8)、処理を終了する。
【0037】
ステップS9では、CPU16は、上記余りを示す変数bが例えば997であるか否かを判定する。ここで、997は予め設定された値であり、この値以外の値であってもよい。変数bが997でないと判定された場合(ステップS9:NO)、ステップS1で取得された正規の初期応答データD1を含む初期応答がICチップ1外へ出力され(ステップS10)、処理が終了する。一方、変数bが997であると判定された場合(ステップS9:YES)、例えば図2に示す非正規の初期応答データD3が取得される(ステップS11)。なお、非正規の初期応答データD3の取得方法は、非正規の初期応答データD2の取得方法と同様である。次いで、CPU16は、ステップS11で取得された非正規の初期応答データD3を含む初期応答をI/O回路11を介してICチップ1外へ出力し(ステップS12)、処理を終了する。
【0038】
(実施例2)
次に、図4を参照して、実施例2におけるICチップ1の動作について説明する。図4は、実施例2におけるICチップ1のCPU16により実行されるリセット処理の一例を示すフローチャートである。図4に示す処理は、図3に示す処理と同様に開始される。なお、図4に示すステップS21~S25の処理は、図3に示すステップS1~S5の処理と同様である。
【0039】
ステップS26では、CPU16は、乱数(例えば256以上かつ所定値以下の乱数)を生成し、当該乱数を変数rに代入する。次いで、CPU16は、当該乱数を示す変数rを例えば256で割った余り(0~255の何れかの値)をnn(h)(つまり、00(h)~FF(h)の何れかの値)に設定する(ステップS27)。ここで、256は予め設定された値であり、この値以外の値であってもよい。
【0040】
次いで、CPU16は、上記余りを示す変数bが例えば999であるか否かを判定する(ステップS28)。ここで、999は予め設定された値であり、この値以外の値であってもよい。変数bが999でないと判定された場合(ステップS28:NO)、ステップS21で取得された正規の初期応答データD1を含む初期応答がICチップ1外へ出力され(ステップS29)、処理が終了する。一方、変数bが999であると判定された場合(ステップS28:YES)、処理はステップS30へ進む。
【0041】
ステップS30では、CPU16は、ステップS21で取得された正規の初期応答データD1と、ステップS27で設定されたnn(h)とに基づいて、例えば図2に示す非正規の初期応答データD4を取得する。つまり、正規の初期応答データD1中の10バイト目の値がnn(h)に変換された非正規の初期応答データD4が生成される。なお、nn(h)が00(h)となる場合、正規の初期応答データD1と非正規の初期応答データD4とは同一となるが問題はない。次いで、CPU16は、ステップS30で取得された非正規の初期応答データD4を含む初期応答をI/O回路11を介してICチップ1外へ出力し(ステップS31)、処理を終了する。
【0042】
(実施例3)
次に、図5を参照して、実施例3におけるICチップ1の動作について説明する。図5は、実施例3におけるICチップ1のCPU16により実行されるリセット処理の一例を示すフローチャートである。カウンタは、0から999まで保持可能であり、初期応答がICチップ1外へ出力される度に1インクリメントされ、999を超えると0に戻る(リセットされる)ように構成されているものとする。図5に示す処理は、図3に示す処理と同様に開始される。なお、図5に示すステップS41~S43の処理は、図3に示すステップS1~S3の処理と同様である。
【0043】
ステップS44では、CPU16は、カウンタの値が例えば100または101であるか否かを判定する。ここで、100及び101は予め設定された値であり、これらの値以外の値であってもよい。また、100と101のうち何れか一方の値のみが判定されてもよい。カウンタの値が100または101であると判定された場合(ステップS44:YES)、処理はステップS45へ進む。一方、カウンタの値が100と101との何れでもないと判定された場合(ステップS44:NO)、処理はステップS47へ進む。
【0044】
ステップS45では、CPU16は、例えば図2に示す非正規の初期応答データD2を取得する(上記ステップS7の処理と同様)。次いで、CPU16は、ステップS45で取得された非正規の初期応答データD2を含む初期応答をI/O回路11を介してICチップ1外へ出力し(ステップS46)、処理を終了する。
【0045】
ステップS47では、CPU16は、カウンタの値が例えば600であるか否かを判定する。ここで、600は予め設定された値であり、この値以外の値であってもよい。カウンタの値が600でないと判定された場合(ステップS47:NO)、ステップS41で取得された正規の初期応答データD1を含む初期応答がICチップ1外へ出力され(ステップS48)、処理が終了する。一方、カウンタの値が600であると判定された場合(ステップS47:YES)、例えば図2に示す非正規の初期応答データD3が取得される(ステップS49)。次いで、CPU16は、ステップS48で取得された非正規の初期応答データD3を含む初期応答をI/O回路11を介してICチップ1外へ出力し(ステップS50)、処理を終了する。
【0046】
(実施例4)
次に、図6を参照して、実施例4におけるICチップ1の動作について説明する。図6は、実施例4におけるICチップ1のCPU16により実行されるリセット処理の一例を示すフローチャートである。実施例4においても、実施例3と同様のカウンタが適用されるものとする。図6に示す処理は、図3に示す処理と同様に開始される。なお、図6に示すステップS51~S53の処理は、図3に示すステップS1~S3の処理と同様である。
【0047】
ステップS54では、CPU16は、乱数を生成し、当該乱数を変数rに代入する(上記ステップS26の処理と同様)。次いで、CPU16は、当該乱数を示す変数rを例えば256で割った余りをnn(h)に設定する(ステップS55)。ここで、256は予め設定された値であり、この値以外の値であってもよい。
【0048】
次いで、CPU16は、カウンタの値が例えば600であるか否かを判定する(ステップS56)。ここで、600は予め設定された値であり、この値以外の値であってもよい。カウンタの値が600でないと判定された場合(ステップS56:NO)、ステップS51で取得された正規の初期応答データD1を含む初期応答がICチップ1外へ出力され(ステップS57)、処理が終了する。一方、カウンタの値が600であると判定された場合(ステップS56:YES)、処理はステップS58へ進む。
【0049】
ステップS58では、CPU16は、ステップS51で取得された正規の初期応答データD1と、ステップS55で設定されたnn(h)とに基づいて、例えば図2に示す非正規の初期応答データD4を取得する(上記ステップS30と同様)。次いで、CPU16は、ステップS58で取得された非正規の初期応答データD4を含む初期応答をI/O回路11を介してICチップ1外へ出力し(ステップS59)、処理を終了する。
【0050】
以上説明したように、上記実施形態によれば、ICチップ1は、外部からの攻撃が検知された際のリセット処理において正規の初期応答データと、非正規の初期応答データとのうち、何れか1つを所定の出力アルゴリズムにしたがって出力するように構成したので、当該攻撃が検知された場合の対応動作によって攻撃者を攪乱させることができる。すなわち、上記実施形態によれば、セキュリティリセットがかかった際の最初の通信にバリエーションを持たせる(例えば、非正規の初期応答データを低頻度で出力する)ことで、攻撃者に対して、非正規の初期応答データが出力された際のICチップ1上の箇所やタイミングに脆弱な処理があると勘違い(つまり、攻撃者はICチップ1に何等かの影響を与えて攻撃に成功したと推定)させることができ、これにより、例えば当該箇所を重点的に攻撃させ(当該箇所に攻撃を集中させ)、攻撃を失敗し続けさせることが可能となる。
【符号の説明】
【0051】
1 ICチップ
11 I/O回路
12 RAM
13 NVM
14 ROM
15 攻撃検知部
16 CPU
図1
図2
図3
図4
図5
図6