(57)【要約】【課題】不正な暗号解析を防止しつつ、暗号演算を伴う処理において実行速度の低下を抑制することが可能な電子情報記憶装置、ＩＣカード、演算決定方法、及び演算決定プログラムを提供する。【解決手段】外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信するＩＣカード１は、受信されたコマンドに応じた処理中に暗号演算を実行するときに、ダミー演算の実行条件に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか１つを決定する。【選択図】図３
2018157367.tif 000002
【特許請求の範囲】
【請求項１】
外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信する電子情報記憶装置であって、
前記コマンドに応じた処理中に暗号演算を実行するときに、前記暗号演算に対応する偽装演算の実行条件に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか１つを決定する決定手段を備えることを特徴とする電子情報記憶装置。
【請求項２】
前記決定手段は、前記偽装演算の実行条件として前記コマンドの種別または前記暗号演算の種別に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか１つを決定することを特徴とする請求項１に記載の電子情報記憶装置。
【請求項３】
前記決定手段は、リトライ回数に制限がない前記暗号演算が実行される場合、前記偽装演算を伴う前記暗号演算の実行を決定することを特徴とする請求項２に記載の電子情報記憶装置。
【請求項４】
前記決定手段は、ソフトウェアで実装された前記暗号演算が実行される場合、前記偽装演算を伴う前記暗号演算の実行を決定することを特徴とする請求項２に記載の電子情報記憶装置。
【請求項５】
前記決定手段は、前記偽装演算の実行条件として前記暗号演算の実行履歴に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか１つを決定することを特徴とする請求項１に記載の電子情報記憶装置。
【請求項６】
前記決定手段は、前記暗号演算の実行回数が閾値以上である場合、前記偽装演算を伴う前記暗号演算の実行を決定することを特徴とする請求項５に記載の電子情報記憶装置。
【請求項７】
前記偽装演算は、前記暗号演算と同一の暗号アルゴリズムであり、且つ前記暗号演算で用いられる鍵と同一のハミングウエイトを有する鍵を用いることを特徴とする請求項１乃至６の何れか一項に記載の電子情報記憶装置。
【請求項８】
外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信するＩＣカードであって、
前記コマンドに応じた処理中に暗号演算を実行するときに、前記暗号演算に対応する偽装演算の実行条件に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか１つを決定する決定手段を備えることを特徴とするＩＣカード。
【請求項９】
外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信する電子情報記憶装置が備えるプロセッサにより実行される制御方法であって、
前記コマンドに応じた処理中に暗号演算を実行するときに、前記暗号演算に対応する偽装演算の実行条件に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか１つを決定することを特徴とする演算決定方法。
【請求項１０】
外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信する電子情報記憶装置が備えるプロセッサに、
前記コマンドに応じた処理中に暗号演算を実行するときに、前記暗号演算に対応する偽装演算の実行条件に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか１つを決定するように機能させることを特徴とする演算決定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号演算機能を備えるセキュリティデバイスの技術に関する。
【背景技術】
【０００２】
ＩＣカードを代表とするセキュリティデバイスには、暗号演算機能が備わっている。暗号演算機能は、秘密情報の暗号化や、認証や署名などに利用されるが、この時、暗号演算時の消費電力などを測定して、秘密情報や暗号鍵を取得する攻撃手法が確認されている。例えば、差分電力解析（ＤＰＡ：Differential Power Analysis）手法では、既知の入力もしくは出力値に対応する消費電流、電磁放射、実行時間などを多数回測定し、統計的解析を行うことで秘密鍵情報を推定する。より多くの暗号演算時の消費電流等が測定されてしまうと、不正な暗号解析の成功確率は高くなってしまう。
【０００３】
このような攻撃手法への対策として、真の鍵を用いた真の暗号演算（正規演算）と、いわゆるダミー鍵（真の鍵に似せて偽装した鍵）を用いたダミー演算とをランダムな順番で実行することで、サイドチャネルリークと秘密鍵との間の相関を小さくする対策が知られている。さらに、特許文献１には、秘密鍵と同一のハミングウエイトを有する複数のダミー鍵を生成し、秘密鍵と複数のダミー鍵とを用いて暗号処理を行うことで、暗号演算とダミー演算との間でサイドチャネルリークが類似した波形を示すように暗号処理を行うことができる技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１２６０７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、暗号演算は処理全体の実行時間に占める割合が大きいため、一回の暗号演算についてダミー演算が一回実行されると、実行速度の低下により利便性が損なわれる。上述したような従来の技術では、暗号演算ごとにダミー演算の要否を判断していないため、ダミー演算の必要性が低い場合においても、ダミー演算が実行されてしまい、実行速度が低下するという問題がある。
【０００６】
本発明は、このような問題等を鑑みてなされたものであり、不正な暗号解析を防止しつつ、暗号演算を伴う処理において実行速度の低下を抑制することが可能な電子情報記憶装置、ＩＣカード、演算決定方法、及び演算決定プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、請求項１に記載の発明は、外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信する電子情報記憶装置であって、前記コマンドに応じた処理中に暗号演算を実行するときに、前記暗号演算に対応する偽装演算の実行条件に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか１つを決定する決定手段を備えることを特徴とする。
【０００８】
請求項２に記載の発明は、請求項１に記載の電子情報記憶装置において、前記決定手段は、前記偽装演算の実行条件として前記コマンドの種別または前記暗号演算の種別に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか１つを決定することを特徴とする。
【０００９】
請求項３に記載の発明は、請求項２に記載の電子情報記憶装置において、前記決定手段は、リトライ回数に制限がない前記暗号演算が実行される場合、前記偽装演算を伴う前記暗号演算の実行を決定することを特徴とする。
【００１０】
請求項４に記載の発明は、請求項２に記載の電子情報記憶装置において、前記決定手段は、ソフトウェアで実装された前記暗号演算が実行される場合、前記偽装演算を伴う前記暗号演算の実行を決定することを特徴とする。
【００１１】
請求項５に記載の発明は、請求項１に記載の電子情報記憶装置において、前記決定手段は、前記偽装演算の実行条件として前記暗号演算の実行履歴に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか１つを決定することを特徴とする。
【００１２】
請求項６に記載の発明は、請求項５に記載の電子情報記憶装置において、前記決定手段は、前記暗号演算の実行回数が閾値以上である場合、前記偽装演算を伴う前記暗号演算の実行を決定することを特徴とする。
【００１３】
請求項７に記載の発明は、請求項１乃至６の何れか一項に記載の電子情報記憶装置において、前記偽装演算は、前記暗号演算と同一の暗号アルゴリズムであり、且つ前記暗号演算で用いられる鍵と同一のハミングウエイトを有する鍵を用いることを特徴とする。
【００１４】
請求項８に記載の発明は、外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信するＩＣカードであって、前記コマンドに応じた処理中に暗号演算を実行するときに、前記暗号演算に対応する偽装演算の実行条件に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか１つを決定する決定手段を備えることを特徴とする。
【００１５】
請求項９に記載の発明は、外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信する電子情報記憶装置が備えるプロセッサにより実行される制御方法であって、前記コマンドに応じた処理中に暗号演算を実行するときに、前記暗号演算に対応する偽装演算の実行条件に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか１つを決定することを特徴とする。
【００１６】
請求項１０に記載の発明は、外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信する電子情報記憶装置が備えるプロセッサに、前記コマンドに応じた処理中に暗号演算を実行するときに、前記暗号演算に対応する偽装演算の実行条件に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか１つを決定するように機能させることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、不正な暗号解析を防止しつつ、暗号演算を伴う処理において実行速度の低下を抑制することができる。
【図面の簡単な説明】
【００１８】
【図１】ＩＣカード１の概要構成例を示す図である。
【図２】コマンドごとのダミー演算の要否の一例を示す図である。
【図３】実施例１におけるＣＰＵ１０の処理の一例を示すフローチャートである。
【図４】コマンドに含まれるオプションの値ごとのダミー演算の要否の一例を示す図である。
【図５】実施例２におけるＣＰＵ１０の処理の一例を示すフローチャートである。
【図６】暗号アルゴリズムごとのダミー演算の要否の一例を示す図である。
【図７】実施例３におけるＣＰＵ１０の処理の一例を示すフローチャートである。
【図８】実行回数の範囲ごとのダミー演算の要否の一例を示す図である。
【図９】実施例４におけるＣＰＵ１０の処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【００２０】
先ず、図１を参照して、ＩＣカード１の概要構成及び機能について説明する。図１は、ＩＣカード１の概要構成例を示す図である。図１に示すように、ＩＣカード１に搭載されるＩＣチップ１ａは、ＣＰＵ（Central Processing Unit）１０、ＲＯＭ（Read Only Memory）１１、ＲＡＭ（Random Access Memory）１２、不揮発性メモリ１３、Ｉ／Ｏ回路１４、及び暗号演算部１５等を備えて構成される。ＩＣチップ１ａは、本発明の電子情報記憶装置の一例である。
【００２１】
なお、ＩＣカード１は、キャッシュカード、クレジットカード、社員カード等として使用される。或いは、ＩＣカード１は、スマートフォンや携帯電話機等の端末装置に組み込まれてもよい。或いは、ＩＣチップ１ａは、例えばeUICC（Embedded Universal Integrated Circuit Card）として、端末装置から容易に取り外しや取り換えができないように端末装置と一体的に搭載されてもよい。
【００２２】
ＣＰＵ１０は、ＲＯＭ１１または不揮発性メモリ１３に記憶された各種プログラムを実行するプロセッサ（コンピュータ）である。ＲＡＭ１２は、作業用メモリとして利用される。不揮発性メモリ１３には、例えばフラッシュメモリが適用される。不揮発性メモリ１３には、各種プログラム及びデータが記憶される。各種プログラムには、オペレーティングシステム、アプリケーションプログラム、及び本発明の演算決定プログラム等が含まれる。ＣＰＵ１０は、本発明の演算決定プログラムに従って、本発明の決定手段として機能する。不揮発性メモリ１３に記憶される各種プログラム及びデータの一部は、ＲＯＭ１１に記憶されてもよい。なお、不揮発性メモリ１３は、「Electrically Erasable Programmable Read-Only Memory」であってもよい。
【００２３】
また、不揮発性メモリ１３に記憶されるデータは、例えば、ISO7816で規定されるＭＦ（Master File）、ＤＦ(Dedicated File)、及びＥＦ(Elementary File)などから構成される階層構造を有する複数のファイルに格納される。ＭＦは、ファイル構成において最上位に位置し、ＭＦの下位階層にはＤＦ及びＥＦが位置する。ＤＦは、例えばアプリケーションプログラムごとに設けられる。ＥＦは、例えば、ＤＦに格納されるアプリケーションプログラムで使用される複数のデータを格納するレコードファイルである。また、ＥＦは、ＩＥＦ（内部基礎ファイル）とＷＥＦ（作業用基礎ファイル）に分けられる。ＩＥＦには、例えば、暗号鍵が格納される。
【００２４】
Ｉ／Ｏ回路１４は、外部装置２とのインターフェイスを担う。接触式のＩＣチップ１ａの場合、Ｉ／Ｏ回路１４には、例えば、ISO7816で規定されるＣ１〜Ｃ８の８個の端子が備えられている。例えば、Ｃ１端子は電源端子、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子は外部装置２との間で通信を行うための端子である。一方、非接触式のＩＣチップ１ａの場合、Ｉ／Ｏ回路１４には、例えば、アンテナ、及び変復調回路が備えられている。なお、外部装置２の例としては、ＩＣカード発行機、ＡＴＭ、改札機、認証用ゲート等が挙げられる。或いは、ＩＣチップ１ａが端末装置に組み込まれる場合、外部装置２には端末装置の機能を担う制御部が該当する。
【００２５】
暗号演算部１５は、ＣＰＵ１０からの演算指令に応じて、鍵レジスタ（図示せず）に保持された鍵（以下、「暗号鍵」という）及び所定の暗号アルゴリズムを用いて暗号演算を実行する。また、暗号演算部１５は、ＣＰＵ１０からの演算指令に応じて、ダミー鍵レジスタ（図示せず）に保持されたダミー鍵及び上記暗号アルゴリズムを用いてダミー演算を実行する。ここで、ダミー鍵は、例えば、暗号演算で用いられる暗号鍵と同一のバイト長であり、かつ、同一のハミングウエイトを有する鍵である。また、ダミー演算は、例えば、暗号演算に対応する偽装演算であり、当該暗号演算と同一の暗号アルゴリズムを採用する。ダミー演算は、暗号演算の直前、暗号演算の直後、または暗号演算の途中に挿入されるが、本実施形態では、当該ダミー演算の必要性が高い処理に限定して挿入（例えば、暗号解析を防ぐ必要のある処理に限定して挿入）することにより、電力解析等による不正な暗号解析を防止しつつ、暗号演算及びダミー演算を伴う処理において実行速度の低下を抑制する。
【００２６】
また、暗号演算及びダミー演算に用いられる暗号アルゴリズムの種別（言い換えれば、暗号演算の種別）として、ＲＳＡ（Rivest Shamir Adleman）、ＡＥＳ（Advanced Encryption Standard）、ＤＥＳ（Data Encryption Standard）、及び３ＤＥＳ等が挙げられる。暗号演算部１５には、これらの複数の暗号アルゴリズムが実装される。例えば、ＲＳＡ、ＤＥＳ、及び３ＤＥＳはハードウェアで実装（電子回路により構成）、ＡＥＳはソフトウェアで実装（プログラムコードにより構成）される。なお、暗号演算部１５には、上記複数の暗号プログラムのうち、何れか１つの暗号アルゴリズムが実装されてもよい。
【００２７】
ＣＰＵ１０は、外部装置２からＩ／Ｏ回路１４を介してコマンドを受信すると、当該コマンドに応じた処理を行って当該処理の結果を示すレスポンスをＩ／Ｏ回路１４を介して当該外部装置２へ送信する。ここで、コマンドは、例えばISO7816-3で定義されるＡＰＤＵ（Application Protocol Data Unit）により構成される。ＡＰＤＵは、少なくとも、ＣＬＡ、ＩＮＳ、Ｐ１及びＰ２から構成される。ここで、ＣＬＡはコマンドクラス（命令クラス）を示し、ＩＮＳはコマンドコード（命令コード）を示す。ＩＮＳによりコマンドの種別が特定される。コマンドの種別として、“READ BINARY”，“WRITE BINARY”，“UPDATE BINARY”，“SELECT FILE”，“VERIFY”，“EXTERNAL AUTHENTICATE”，“INTERNAL AUTHENTICATE”，“COMPUTE DIGITAL SIGNATURE”等が挙げられる。また、Ｐ１及びＰ２はコマンドパラメータ（命令パラメータ）を示す。Ｐ１及びＰ２は、コマンドのオプションであり、例えばＰ１により、例えば暗号鍵の種別（つまり、暗号演算の種別）を指定することができる。なお、ＡＰＤＵは、ＣＬＡ、ＩＮＳ、Ｐ１及びＰ２に加えて、Ｌｅ、Ｌｃ及びＤａｔａの少なくとも何れか１つを含んで構成される場合もある。ここで、Ｌｅはレスポンスの最大長（最大サイズ）を示し、ＬｃはＤａｔａの長さを示し、ＤａｔａはＩＣカード１で用いられる可変長のデータを示す。
【００２８】
本実施形態では、受信されたコマンドに応じた処理中に暗号演算が行われる場合、ＣＰＵ１０は、当該暗号演算を実行するときに（例えば、当該暗号演算を実行する直前、または直後に）、当該暗号演算に対応するダミー演算の実行条件に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか１つを決定する。言い換えれば、当該処理中に当該ダミー演算を挿入するか否かが判定される。ここで、ダミー演算の実行条件は、例えば演算決定プログラム上で予め規定される。ダミー演算の実行条件の例として、コマンドの種別、暗号演算の種別（つまり、当該暗号演算に用いられる暗号アルゴリズムの種別）、または、暗号演算の実行履歴（暗号演算の実行回数を含む）などが挙げられる。なお、暗号演算の実行履歴は、不揮発性メモリ１３に保存される。
【００２９】
例えば、ＣＰＵ１０は、上記コマンドに含まれるＩＮＳが示すコマンドの種別に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか１つを決定する。また、例えば、ＣＰＵ１０は、上記コマンドに含まれるＰ１が示す暗号鍵の種別（言い換えれば、暗号演算の種別）に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか１つを決定する。なお、コマンドに応じた処理中に実行される暗号演算の種別は、ＩＣチップ１ａ内で予め設定されてもよい。この場合、ＣＰＵ１０は、予め設定された暗号演算の種別に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか１つを決定する。また、暗号演算の種別は、当該暗号演算により用いられる暗号鍵の長さ（鍵長）により特定されてもよい。つまり、この場合、ＣＰＵ１０は、暗号演算により用いられる暗号鍵の長さに基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか１つを決定することになる。
【００３０】
そして、ＣＰＵ１０は、上記決定にしたがって、暗号演算（つまり、ダミー演算を伴う暗号演算、または、ダミー演算を伴わない暗号演算）を実行させる演算指令を暗号演算部１５へ出力し、当該演算指令に応じて暗号演算部１５により演算された結果を暗号演算部１５から取得する。なお、ソフトウェアで実装された暗号演算が実行される場合、ＣＰＵ１０が暗号演算プログラムにしたがって、ダミー演算を伴う暗号演算、または、ダミー演算を伴わない暗号演算を実行してもよい。
【００３１】
次に、ＩＣカード１の動作について、実施例１〜実施例４に分けて説明する。
【００３２】
（実施例１）
先ず、図２及び図３を参照して、実施例１におけるＩＣカード１の動作について説明する。実施例１は、コマンドの種別に基づいてダミー演算を挿入するか否かを判定する例である。図２は、コマンドごとのダミー演算の要否の一例を示す図である。図３は、実施例１におけるＣＰＵ１０の処理の一例を示すフローチャートである。
【００３３】
図２の例によれば、暗号演算が利用されるコマンドは、“WRITE BINARY”（セキュアメッセージあり）、“EXTERNAL AUTHENTICATE”及び“INTERNAL AUTHENTICATE”である。ここで、“EXTERNAL AUTHENTICATE”に応じた処理では、リトライカウンタによる回数制限がある（つまり、リトライ回数に制限がある）ため、攻撃者が繰り返し攻撃を行うことは難しく、不正な暗号解析のための大量のサンプルを得ることは難しい。従って、“EXTERNAL AUTHENTICATE”に応じた処理中にダミー演算の必要がない。また、“WRITE BINARY”（セキュアメッセージあり）に応じた処理では、シーケンスカウンタによるセッション鍵の変更があるため、攻撃者が繰り返し攻撃を行うことは難しく、不正な暗号解析のための大量のサンプルを得ることは難しい。従って、“WRITE BINARY”（セキュアメッセージあり）に応じた処理中にダミー演算の必要がない。一方、“INTERNAL AUTHENTICATE”に応じた処理では、リトライ回数に制限がないため、攻撃者が繰り返し攻撃を行うことができ、不正な暗号解析のための大量のサンプルを得ることが可能である。従って、“INTERNAL AUTHENTICATE”に応じた処理中にダミー演算の必要がある。以上より、攻撃に対する対策の必要がない（必要性が低い）処理に与えるパフォーマンスへの影響を抑えることが可能となる。図３に示す処理は、このような観点に基づく処理である。
【００３４】
図３に示す処理は、外部装置２からのコマンドが受信された場合に開始される。ＣＰＵ１０は、受信されたコマンドに応じた処理を開始する（ステップＳ１）。次いで、ＣＰＵ１０は、受信されたコマンドに応じた処理に暗号演算がある否かを判定する（ステップＳ２）。ＣＰＵ１０は、暗号演算があると判定した場合（ステップＳ２：ＹＥＳ）、ステップ３へ進む。一方、ＣＰＵ１０は、暗号演算がないと判定した場合（ステップＳ２：ＮＯ）、ステップＳ８へ進む。  
【００３５】
ステップＳ３では、ＣＰＵ１０は、受信されたコマンドが“INTERNAL AUTHENTICATE”であるか否かを判定（例えば、コマンドに含まれるＩＮＳにより判定）する。ＣＰＵ１０は、コマンドが“INTERNAL AUTHENTICATE”であると判定した場合（ステップＳ３：ＹＥＳ）、ダミー演算を伴う暗号演算の実行を決定する（ステップＳ４）。つまり、ＣＰＵ１０は、リトライ回数に制限がない暗号演算が実行される場合、ダミー演算を伴う暗号演算の実行を決定する。次いで、ＣＰＵ１０は、ダミー演算を伴う暗号演算を実行させる演算指令を暗号演算部１５へ出力し、当該演算指令に応じて暗号演算部１５により演算された結果を暗号演算部１５から取得し（ステップＳ５）、ステップＳ８へ進む。
【００３６】
一方、ＣＰＵ１０は、コマンドが“INTERNAL AUTHENTICATE”でないと判定した場合（ステップＳ３：ＮＯ）、ダミー演算を伴わない暗号演算の実行を決定する（ステップＳ６）。次いで、ＣＰＵ１０は、ダミー演算を伴わない暗号演算を実行させる演算指令を暗号演算部１５へ出力し、当該演算指令に応じて暗号演算部１５により演算された結果を暗号演算部１５から取得し（ステップＳ７）、ステップＳ８へ進む。
【００３７】
ステップＳ８では、ＣＰＵ１０は、残りの処理を行って上記コマンドに応じた処理の結果を示すレスポンスをＩ／Ｏ回路１４を介して当該外部装置２へ送信する。
【００３８】
このように、実施例１によれば、ＣＰＵ１０は、コマンドの種別に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか１つを決定するように構成したので、不正な暗号解析を防止しつつ、暗号演算を伴う処理において実行速度の低下を抑制することができる。
【００３９】
（実施例２）
次に、図４及び図５を参照して、実施例２におけるＩＣカード１の動作について説明する。実施例２は、コマンドに含まれるオプション（Ｐ１）が示す暗号鍵の種別（言い換えれば、暗号演算の種別）に基づいてダミー演算を挿入するか否かを判定する例であり、特定の暗号演算コマンド“COMPUTE CIPHER”を想定する。この暗号演算コマンドにより、Ｐ１の値を用いて、利用するＩＥＦ（暗号鍵を格納）を切り替えることができる。実施例２では、実施例１とは異なり、同一コマンドでも、オプション（セキュアメッセージを含む）に応じてダミー演算を挿入するか否かが決定される。図４は、コマンドに含まれるオプションの値ごとのダミー演算の要否の一例を示す図である。図５は、実施例２におけるＣＰＵ１０の処理の一例を示すフローチャートである。
【００４０】
図４の例によれば、Ｐ１＝0x00、及びＰ１＝0x02の場合は、リトライカウンタによる回数制限がある（つまり、リトライ回数に制限がある）ため、攻撃者が繰り返し攻撃を行うことは難しく、不正な暗号解析のための大量のサンプルを得ることは難しい。従って、Ｐ１＝0x00、及びＰ１＝0x02の場合は、“COMPUTE CIPHER”に応じた処理中にダミー演算の必要がない。一方、Ｐ１＝0x01の場合は、リトライ回数に制限がないため、攻撃者が繰り返し攻撃を行うことができ、不正な暗号解析のための大量のサンプルを得ることが可能である。従って、Ｐ１＝0x01の場合は、“COMPUTE CIPHER”に応じた処理中にダミー演算の必要がある。図５に示す処理は、このような観点に基づく処理である。
【００４１】
図５に示す処理は、外部装置２からのコマンドが受信された場合に開始される。ＣＰＵ１０は、受信されたコマンドに応じた処理を開始する（ステップＳ１１）。次いで、ＣＰＵ１０は、受信されたコマンドが“COMPUTE CIPHER”であるか否かを判定する（ステップＳ１２）。ＣＰＵ１０は、コマンドが“COMPUTE CIPHER”であると判定した場合（ステップＳ１２：ＹＥＳ）、ステップＳ１３へ進む。一方、ＣＰＵ１０は、コマンドが“COMPUTE CIPHER”でないと判定した場合（ステップＳ１２：ＮＯ）、ステップＳ１８へ進む。
【００４２】
ステップＳ１３では、ＣＰＵ１０は、受信されたコマンドに含まれるオプション（Ｐ１）が“0x01”であるか否かを判定する。ＣＰＵ１０は、オプション（Ｐ１）が“0x01”であると判定した場合（ステップＳ１３：ＹＥＳ）、ダミー演算を伴う暗号演算の実行を決定する（ステップＳ１４）。つまり、ＣＰＵ１０は、リトライ回数に制限がない暗号演算が実行される場合、ダミー演算を伴う暗号演算の実行を決定する。次いで、ＣＰＵ１０は、ダミー演算を伴う暗号演算を実行させる演算指令を暗号演算部１５へ出力し、当該演算指令に応じて暗号演算部１５により演算された結果を暗号演算部１５から取得し（ステップＳ１５）、ステップＳ１８へ進む。
【００４３】
一方、ＣＰＵ１０は、オプション（Ｐ１）が“0x01”でないと判定した場合（ステップＳ１３：ＮＯ）、ダミー演算を伴わない暗号演算の実行を決定する（ステップＳ１６）。次いで、ＣＰＵ１０は、ダミー演算を伴わない暗号演算を実行させる演算指令を暗号演算部１５へ出力し、当該演算指令に応じて暗号演算部１５により演算された結果を暗号演算部１５から取得し（ステップＳ１７）、ステップＳ１８へ進む。
【００４４】
ステップＳ１８では、ＣＰＵ１０は、残りの処理を行って上記コマンドに応じた処理の結果を示すレスポンスをＩ／Ｏ回路１４を介して当該外部装置２へ送信する。
【００４５】
このように、実施例２によれば、ＣＰＵ１０は、暗号演算の種別（コマンド中のオプション）に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか１つを決定するように構成したので、不正な暗号解析を防止しつつ、暗号演算を伴う処理において実行速度の低下を抑制することができる。
【００４６】
（実施例３）
次に、図６及び図７を参照して、実施例３におけるＩＣカード１の動作について説明する。実施例３は、暗号アルゴリズム（暗号演算）の実装形態（実装形態は暗号アルゴリズムの種別に依存）に基づいてダミー演算を挿入するか否かを判定する例であり、ＩＣカード１には、ＲＳＡ、ＡＥＳ、ＤＥＳ、及び３ＤＥＳが実装されていることを想定する。実施例３では、コマンドによらず、暗号アルゴリズムに応じてダミー演算を挿入するか否かが決定される。図６は、暗号アルゴリズムごとのダミー演算の要否の一例を示す図である。図７は、実施例３におけるＣＰＵ１０の処理の一例を示すフローチャートである。
【００４７】
図６の例によれば、ＲＳＡ、ＤＥＳ、及び３ＤＥＳは、それぞれ、ハードウェアで実装されており、サイドチャネル対策が施されているため、コマンドに応じた処理中にダミー演算の必要がない。一方、ＡＥＳは、ソフトウェアで実装されており、サイドチャネル対策は実施されているが、ハードウェアのものと比較すると脆弱であることがわかっているため、コマンドに応じた処理中にダミー演算の必要がある。図７に示す処理は、このような観点に基づく処理である。
【００４８】
図７に示す処理は、外部装置２からのコマンドが受信された場合に開始される。ＣＰＵ１０は、受信されたコマンドに応じた処理を開始する（ステップＳ２１）。次いで、ＣＰＵ１０は、受信されたコマンドに応じた処理に暗号演算がある否かを判定する（ステップＳ２２）。ＣＰＵ１０は、暗号演算があると判定した場合（ステップＳ２２：ＹＥＳ）、ステップ２３へ進む。一方、ＣＰＵ１０は、暗号演算がないと判定した場合（ステップＳ２２：ＮＯ）、ステップＳ２８へ進む。  
【００４９】
ステップＳ２３では、ＣＰＵ１０は、暗号演算に用いられる暗号アルゴリズムがＡＥＳであるか否かを判定する。なお、暗号アルゴリズムの種別（暗号演算の種別）は、例えば、コマンドごとに（または、イシュアごとに）ＩＣチップ１ａ内で予め設定される。ＣＰＵ１０は、暗号アルゴリズムがＡＥＳであると判定した場合（ステップＳ２３：ＹＥＳ）、ダミー演算を伴う暗号演算の実行を決定する（ステップＳ２４）。つまり、ＣＰＵ１０は、ソフトウェアで実装された暗号演算が実行される場合、ダミー演算を伴う暗号演算の実行を決定する。次いで、ＣＰＵ１０は、ダミー演算を伴う暗号演算を実行させる演算指令を暗号演算部１５へ出力し、当該演算指令に応じて暗号演算部１５により演算された結果を暗号演算部１５から取得し（ステップＳ２５）、ステップＳ２８へ進む。
【００５０】
一方、ＣＰＵ１０は、暗号アルゴリズムがＡＥＳでないと判定した場合（ステップＳ２３：ＮＯ）、ダミー演算を伴わない暗号演算の実行を決定する（ステップＳ２６）。次いで、ＣＰＵ１０は、ダミー演算を伴わない暗号演算を実行させる演算指令を暗号演算部１５へ出力し、当該演算指令に応じて暗号演算部１５により演算された結果を暗号演算部１５から取得し（ステップＳ２７）、ステップＳ２８へ進む。
【００５１】
ステップＳ２８では、ＣＰＵ１０は、残りの処理を行って上記コマンドに応じた処理の結果を示すレスポンスをＩ／Ｏ回路１４を介して当該外部装置２へ送信する。
【００５２】
このように、実施例３によれば、ＣＰＵ１０は、暗号演算の種別（実装形態）に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか１つを決定するように構成したので、不正な暗号解析を防止しつつ、暗号演算を伴う処理において実行速度の低下を抑制することができる。
【００５３】
（実施例４）
次に、図８及び図９を参照して、実施例４におけるＩＣカード１の動作について説明する。実施例４は、暗号演算の実行履歴に基づいてダミー演算を挿入するか否かを判定する例であり、暗号演算が実行される度に実行回数がインクリメントされて記憶されることを想定する。図８は、実行回数の範囲ごとのダミー演算の要否の一例を示す図である。図９は、実施例４におけるＣＰＵ１０の処理の一例を示すフローチャートである。
【００５４】
図８の例によれば、暗号演算の実行回数が１００００回未満の場合は、不正な暗号解析に十分なサンプルを得ることは難しいため、コマンドに応じた処理中にダミー演算の必要がない。一方、暗号演算の実行回数が１００００回以上の場合は、不正な暗号解析に十分なサンプルを得ることが可能なため、コマンドに応じた処理中にダミー演算の必要がある。図９に示す処理は、このような観点に基づく処理である。
【００５５】
図９に示す処理は、外部装置２からのコマンドが受信された場合に開始される。ＣＰＵ１０は、受信されたコマンドに応じた処理を開始する（ステップＳ３１）。次いで、ＣＰＵ１０は、受信されたコマンドに応じた処理に暗号演算がある否かを判定する（ステップＳ３２）。ＣＰＵ１０は、暗号演算があると判定した場合（ステップＳ３２：ＹＥＳ）、ステップ３３へ進む。一方、ＣＰＵ１０は、暗号演算がないと判定した場合（ステップＳ３２：ＮＯ）、ステップＳ３８へ進む。
【００５６】
ステップＳ３３では、ＣＰＵ１０は、暗号演算の実行回数が閾値（例えば、１００００）以上であるか否かを判定する。ＣＰＵ１０は、暗号演算の実行回数が閾値以上であると判定した場合（ステップＳ３３：ＹＥＳ）、ダミー演算を伴う暗号演算の実行を決定する（ステップＳ３４）。次いで、ＣＰＵ１０は、ダミー演算を伴う暗号演算を実行させる演算指令を暗号演算部１５へ出力し、当該演算指令に応じて暗号演算部１５により演算された結果を暗号演算部１５から取得し（ステップＳ３５）、ステップＳ３８へ進む。
【００５７】
一方、ＣＰＵ１０は、暗号演算の実行回数が閾値以上でないと判定した場合（ステップＳ３３：ＮＯ）、ダミー演算を伴わない暗号演算の実行を決定する（ステップＳ３６）。次いで、ＣＰＵ１０は、ダミー演算を伴わない暗号演算を実行させる演算指令を暗号演算部１５へ出力し、当該演算指令に応じて暗号演算部１５により演算された結果を暗号演算部１５から取得し（ステップＳ３７）、ステップＳ３８へ進む。
【００５８】
ステップＳ３８では、ＣＰＵ１０は、残りの処理を行って上記コマンドに応じた処理の結果を示すレスポンスをＩ／Ｏ回路１４を介して当該外部装置２へ送信する。
【００５９】
このように、実施例４によれば、ＣＰＵ１０は、暗号演算の実行履歴に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか１つを決定するように構成したので、不正な暗号解析を防止しつつ、暗号演算を伴う処理において実行速度の低下を抑制することができる。
【００６０】
以上説明したように、上記実施形態によれば、ＩＣカード１は、受信されたコマンドに応じた処理中に暗号演算を実行するときに、ダミー演算の実行条件に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか１つを決定するように構成したので、不正な暗号解析を防止しつつ、暗号演算を伴う処理において実行速度の低下を抑制することができる。また、上記実施形態によれば、挿入されるダミー演算の実行回数を増減することができるので、求められるセキュリティ性と利便性のバランスを調節することが可能となる。
【符号の説明】
【００６１】
１  ＩＣカード
１ａ  ＩＣチップ
１０  ＣＰＵ
１１  ＲＯＭ
１２  ＲＡＭ
１３  不揮発性メモリ
１４  Ｉ／Ｏ回路
１５  暗号演算部
【図１】
2018157367.tif 000003
【図２】
2018157367.tif 000004
【図３】
2018157367.tif 000005
【図４】
2018157367.tif 000006
【図５】
2018157367.tif 000007
【図６】
2018157367.tif 000008
【図７】
2018157367.tif 000009
【図８】
2018157367.tif 000010
【図９】
2018157367.tif 000011