JP2018157367A - 電子情報記憶装置、icカード、演算決定方法、及び演算決定プログラム - Google Patents

電子情報記憶装置、icカード、演算決定方法、及び演算決定プログラム Download PDF

Info

Publication number
JP2018157367A
JP2018157367A JP2017052390A JP2017052390A JP2018157367A JP 2018157367 A JP2018157367 A JP 2018157367A JP 2017052390 A JP2017052390 A JP 2017052390A JP 2017052390 A JP2017052390 A JP 2017052390A JP 2018157367 A JP2018157367 A JP 2018157367A
Authority
JP
Japan
Prior art keywords
cryptographic
execution
impersonation
command
dummy
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017052390A
Other languages
English (en)
Other versions
JP6950861B2 (ja
Inventor
正剛 福永
Masatake Fukunaga
正剛 福永
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dai Nippon Printing Co Ltd
Original Assignee
Dai Nippon Printing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dai Nippon Printing Co Ltd filed Critical Dai Nippon Printing Co Ltd
Priority to JP2017052390A priority Critical patent/JP6950861B2/ja
Publication of JP2018157367A publication Critical patent/JP2018157367A/ja
Application granted granted Critical
Publication of JP6950861B2 publication Critical patent/JP6950861B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】不正な暗号解析を防止しつつ、暗号演算を伴う処理において実行速度の低下を抑制することが可能な電子情報記憶装置、ICカード、演算決定方法、及び演算決定プログラムを提供する。【解決手段】外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信するICカード1は、受信されたコマンドに応じた処理中に暗号演算を実行するときに、ダミー演算の実行条件に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか1つを決定する。【選択図】図3

Description

本発明は、暗号演算機能を備えるセキュリティデバイスの技術に関する。
ICカードを代表とするセキュリティデバイスには、暗号演算機能が備わっている。暗号演算機能は、秘密情報の暗号化や、認証や署名などに利用されるが、この時、暗号演算時の消費電力などを測定して、秘密情報や暗号鍵を取得する攻撃手法が確認されている。例えば、差分電力解析(DPA:Differential Power Analysis)手法では、既知の入力もしくは出力値に対応する消費電流、電磁放射、実行時間などを多数回測定し、統計的解析を行うことで秘密鍵情報を推定する。より多くの暗号演算時の消費電流等が測定されてしまうと、不正な暗号解析の成功確率は高くなってしまう。
このような攻撃手法への対策として、真の鍵を用いた真の暗号演算(正規演算)と、いわゆるダミー鍵(真の鍵に似せて偽装した鍵)を用いたダミー演算とをランダムな順番で実行することで、サイドチャネルリークと秘密鍵との間の相関を小さくする対策が知られている。さらに、特許文献1には、秘密鍵と同一のハミングウエイトを有する複数のダミー鍵を生成し、秘密鍵と複数のダミー鍵とを用いて暗号処理を行うことで、暗号演算とダミー演算との間でサイドチャネルリークが類似した波形を示すように暗号処理を行うことができる技術が開示されている。
特開2013−126078号公報
しかしながら、暗号演算は処理全体の実行時間に占める割合が大きいため、一回の暗号演算についてダミー演算が一回実行されると、実行速度の低下により利便性が損なわれる。上述したような従来の技術では、暗号演算ごとにダミー演算の要否を判断していないため、ダミー演算の必要性が低い場合においても、ダミー演算が実行されてしまい、実行速度が低下するという問題がある。
本発明は、このような問題等を鑑みてなされたものであり、不正な暗号解析を防止しつつ、暗号演算を伴う処理において実行速度の低下を抑制することが可能な電子情報記憶装置、ICカード、演算決定方法、及び演算決定プログラムを提供することを目的とする。
上記課題を解決するために、請求項1に記載の発明は、外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信する電子情報記憶装置であって、前記コマンドに応じた処理中に暗号演算を実行するときに、前記暗号演算に対応する偽装演算の実行条件に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか1つを決定する決定手段を備えることを特徴とする。
請求項2に記載の発明は、請求項1に記載の電子情報記憶装置において、前記決定手段は、前記偽装演算の実行条件として前記コマンドの種別または前記暗号演算の種別に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか1つを決定することを特徴とする。
請求項3に記載の発明は、請求項2に記載の電子情報記憶装置において、前記決定手段は、リトライ回数に制限がない前記暗号演算が実行される場合、前記偽装演算を伴う前記暗号演算の実行を決定することを特徴とする。
請求項4に記載の発明は、請求項2に記載の電子情報記憶装置において、前記決定手段は、ソフトウェアで実装された前記暗号演算が実行される場合、前記偽装演算を伴う前記暗号演算の実行を決定することを特徴とする。
請求項5に記載の発明は、請求項1に記載の電子情報記憶装置において、前記決定手段は、前記偽装演算の実行条件として前記暗号演算の実行履歴に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか1つを決定することを特徴とする。
請求項6に記載の発明は、請求項5に記載の電子情報記憶装置において、前記決定手段は、前記暗号演算の実行回数が閾値以上である場合、前記偽装演算を伴う前記暗号演算の実行を決定することを特徴とする。
請求項7に記載の発明は、請求項1乃至6の何れか一項に記載の電子情報記憶装置において、前記偽装演算は、前記暗号演算と同一の暗号アルゴリズムであり、且つ前記暗号演算で用いられる鍵と同一のハミングウエイトを有する鍵を用いることを特徴とする。
請求項8に記載の発明は、外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信するICカードであって、前記コマンドに応じた処理中に暗号演算を実行するときに、前記暗号演算に対応する偽装演算の実行条件に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか1つを決定する決定手段を備えることを特徴とする。
請求項9に記載の発明は、外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信する電子情報記憶装置が備えるプロセッサにより実行される制御方法であって、前記コマンドに応じた処理中に暗号演算を実行するときに、前記暗号演算に対応する偽装演算の実行条件に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか1つを決定することを特徴とする。
請求項10に記載の発明は、外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信する電子情報記憶装置が備えるプロセッサに、前記コマンドに応じた処理中に暗号演算を実行するときに、前記暗号演算に対応する偽装演算の実行条件に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか1つを決定するように機能させることを特徴とする。
本発明によれば、不正な暗号解析を防止しつつ、暗号演算を伴う処理において実行速度の低下を抑制することができる。
ICカード1の概要構成例を示す図である。 コマンドごとのダミー演算の要否の一例を示す図である。 実施例1におけるCPU10の処理の一例を示すフローチャートである。 コマンドに含まれるオプションの値ごとのダミー演算の要否の一例を示す図である。 実施例2におけるCPU10の処理の一例を示すフローチャートである。 暗号アルゴリズムごとのダミー演算の要否の一例を示す図である。 実施例3におけるCPU10の処理の一例を示すフローチャートである。 実行回数の範囲ごとのダミー演算の要否の一例を示す図である。 実施例4におけるCPU10の処理の一例を示すフローチャートである。
以下、図面を参照して本発明の実施形態について詳細に説明する。
先ず、図1を参照して、ICカード1の概要構成及び機能について説明する。図1は、ICカード1の概要構成例を示す図である。図1に示すように、ICカード1に搭載されるICチップ1aは、CPU(Central Processing Unit)10、ROM(Read Only Memory)11、RAM(Random Access Memory)12、不揮発性メモリ13、I/O回路14、及び暗号演算部15等を備えて構成される。ICチップ1aは、本発明の電子情報記憶装置の一例である。
なお、ICカード1は、キャッシュカード、クレジットカード、社員カード等として使用される。或いは、ICカード1は、スマートフォンや携帯電話機等の端末装置に組み込まれてもよい。或いは、ICチップ1aは、例えばeUICC(Embedded Universal Integrated Circuit Card)として、端末装置から容易に取り外しや取り換えができないように端末装置と一体的に搭載されてもよい。
CPU10は、ROM11または不揮発性メモリ13に記憶された各種プログラムを実行するプロセッサ(コンピュータ)である。RAM12は、作業用メモリとして利用される。不揮発性メモリ13には、例えばフラッシュメモリが適用される。不揮発性メモリ13には、各種プログラム及びデータが記憶される。各種プログラムには、オペレーティングシステム、アプリケーションプログラム、及び本発明の演算決定プログラム等が含まれる。CPU10は、本発明の演算決定プログラムに従って、本発明の決定手段として機能する。不揮発性メモリ13に記憶される各種プログラム及びデータの一部は、ROM11に記憶されてもよい。なお、不揮発性メモリ13は、「Electrically Erasable Programmable Read-Only Memory」であってもよい。
また、不揮発性メモリ13に記憶されるデータは、例えば、ISO7816で規定されるMF(Master File)、DF(Dedicated File)、及びEF(Elementary File)などから構成される階層構造を有する複数のファイルに格納される。MFは、ファイル構成において最上位に位置し、MFの下位階層にはDF及びEFが位置する。DFは、例えばアプリケーションプログラムごとに設けられる。EFは、例えば、DFに格納されるアプリケーションプログラムで使用される複数のデータを格納するレコードファイルである。また、EFは、IEF(内部基礎ファイル)とWEF(作業用基礎ファイル)に分けられる。IEFには、例えば、暗号鍵が格納される。
I/O回路14は、外部装置2とのインターフェイスを担う。接触式のICチップ1aの場合、I/O回路14には、例えば、ISO7816で規定されるC1〜C8の8個の端子が備えられている。例えば、C1端子は電源端子、C2端子はリセット端子、C3端子はクロック端子、C5端子はグランド端子、C7端子は外部装置2との間で通信を行うための端子である。一方、非接触式のICチップ1aの場合、I/O回路14には、例えば、アンテナ、及び変復調回路が備えられている。なお、外部装置2の例としては、ICカード発行機、ATM、改札機、認証用ゲート等が挙げられる。或いは、ICチップ1aが端末装置に組み込まれる場合、外部装置2には端末装置の機能を担う制御部が該当する。
暗号演算部15は、CPU10からの演算指令に応じて、鍵レジスタ(図示せず)に保持された鍵(以下、「暗号鍵」という)及び所定の暗号アルゴリズムを用いて暗号演算を実行する。また、暗号演算部15は、CPU10からの演算指令に応じて、ダミー鍵レジスタ(図示せず)に保持されたダミー鍵及び上記暗号アルゴリズムを用いてダミー演算を実行する。ここで、ダミー鍵は、例えば、暗号演算で用いられる暗号鍵と同一のバイト長であり、かつ、同一のハミングウエイトを有する鍵である。また、ダミー演算は、例えば、暗号演算に対応する偽装演算であり、当該暗号演算と同一の暗号アルゴリズムを採用する。ダミー演算は、暗号演算の直前、暗号演算の直後、または暗号演算の途中に挿入されるが、本実施形態では、当該ダミー演算の必要性が高い処理に限定して挿入(例えば、暗号解析を防ぐ必要のある処理に限定して挿入)することにより、電力解析等による不正な暗号解析を防止しつつ、暗号演算及びダミー演算を伴う処理において実行速度の低下を抑制する。
また、暗号演算及びダミー演算に用いられる暗号アルゴリズムの種別(言い換えれば、暗号演算の種別)として、RSA(Rivest Shamir Adleman)、AES(Advanced Encryption Standard)、DES(Data Encryption Standard)、及び3DES等が挙げられる。暗号演算部15には、これらの複数の暗号アルゴリズムが実装される。例えば、RSA、DES、及び3DESはハードウェアで実装(電子回路により構成)、AESはソフトウェアで実装(プログラムコードにより構成)される。なお、暗号演算部15には、上記複数の暗号プログラムのうち、何れか1つの暗号アルゴリズムが実装されてもよい。
CPU10は、外部装置2からI/O回路14を介してコマンドを受信すると、当該コマンドに応じた処理を行って当該処理の結果を示すレスポンスをI/O回路14を介して当該外部装置2へ送信する。ここで、コマンドは、例えばISO7816-3で定義されるAPDU(Application Protocol Data Unit)により構成される。APDUは、少なくとも、CLA、INS、P1及びP2から構成される。ここで、CLAはコマンドクラス(命令クラス)を示し、INSはコマンドコード(命令コード)を示す。INSによりコマンドの種別が特定される。コマンドの種別として、“READ BINARY”,“WRITE BINARY”,“UPDATE BINARY”,“SELECT FILE”,“VERIFY”,“EXTERNAL AUTHENTICATE”,“INTERNAL AUTHENTICATE”,“COMPUTE DIGITAL SIGNATURE”等が挙げられる。また、P1及びP2はコマンドパラメータ(命令パラメータ)を示す。P1及びP2は、コマンドのオプションであり、例えばP1により、例えば暗号鍵の種別(つまり、暗号演算の種別)を指定することができる。なお、APDUは、CLA、INS、P1及びP2に加えて、Le、Lc及びDataの少なくとも何れか1つを含んで構成される場合もある。ここで、Leはレスポンスの最大長(最大サイズ)を示し、LcはDataの長さを示し、DataはICカード1で用いられる可変長のデータを示す。
本実施形態では、受信されたコマンドに応じた処理中に暗号演算が行われる場合、CPU10は、当該暗号演算を実行するときに(例えば、当該暗号演算を実行する直前、または直後に)、当該暗号演算に対応するダミー演算の実行条件に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか1つを決定する。言い換えれば、当該処理中に当該ダミー演算を挿入するか否かが判定される。ここで、ダミー演算の実行条件は、例えば演算決定プログラム上で予め規定される。ダミー演算の実行条件の例として、コマンドの種別、暗号演算の種別(つまり、当該暗号演算に用いられる暗号アルゴリズムの種別)、または、暗号演算の実行履歴(暗号演算の実行回数を含む)などが挙げられる。なお、暗号演算の実行履歴は、不揮発性メモリ13に保存される。
例えば、CPU10は、上記コマンドに含まれるINSが示すコマンドの種別に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか1つを決定する。また、例えば、CPU10は、上記コマンドに含まれるP1が示す暗号鍵の種別(言い換えれば、暗号演算の種別)に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか1つを決定する。なお、コマンドに応じた処理中に実行される暗号演算の種別は、ICチップ1a内で予め設定されてもよい。この場合、CPU10は、予め設定された暗号演算の種別に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか1つを決定する。また、暗号演算の種別は、当該暗号演算により用いられる暗号鍵の長さ(鍵長)により特定されてもよい。つまり、この場合、CPU10は、暗号演算により用いられる暗号鍵の長さに基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか1つを決定することになる。
そして、CPU10は、上記決定にしたがって、暗号演算(つまり、ダミー演算を伴う暗号演算、または、ダミー演算を伴わない暗号演算)を実行させる演算指令を暗号演算部15へ出力し、当該演算指令に応じて暗号演算部15により演算された結果を暗号演算部15から取得する。なお、ソフトウェアで実装された暗号演算が実行される場合、CPU10が暗号演算プログラムにしたがって、ダミー演算を伴う暗号演算、または、ダミー演算を伴わない暗号演算を実行してもよい。
次に、ICカード1の動作について、実施例1〜実施例4に分けて説明する。
(実施例1)
先ず、図2及び図3を参照して、実施例1におけるICカード1の動作について説明する。実施例1は、コマンドの種別に基づいてダミー演算を挿入するか否かを判定する例である。図2は、コマンドごとのダミー演算の要否の一例を示す図である。図3は、実施例1におけるCPU10の処理の一例を示すフローチャートである。
図2の例によれば、暗号演算が利用されるコマンドは、“WRITE BINARY”(セキュアメッセージあり)、“EXTERNAL AUTHENTICATE”及び“INTERNAL AUTHENTICATE”である。ここで、“EXTERNAL AUTHENTICATE”に応じた処理では、リトライカウンタによる回数制限がある(つまり、リトライ回数に制限がある)ため、攻撃者が繰り返し攻撃を行うことは難しく、不正な暗号解析のための大量のサンプルを得ることは難しい。従って、“EXTERNAL AUTHENTICATE”に応じた処理中にダミー演算の必要がない。また、“WRITE BINARY”(セキュアメッセージあり)に応じた処理では、シーケンスカウンタによるセッション鍵の変更があるため、攻撃者が繰り返し攻撃を行うことは難しく、不正な暗号解析のための大量のサンプルを得ることは難しい。従って、“WRITE BINARY”(セキュアメッセージあり)に応じた処理中にダミー演算の必要がない。一方、“INTERNAL AUTHENTICATE”に応じた処理では、リトライ回数に制限がないため、攻撃者が繰り返し攻撃を行うことができ、不正な暗号解析のための大量のサンプルを得ることが可能である。従って、“INTERNAL AUTHENTICATE”に応じた処理中にダミー演算の必要がある。以上より、攻撃に対する対策の必要がない(必要性が低い)処理に与えるパフォーマンスへの影響を抑えることが可能となる。図3に示す処理は、このような観点に基づく処理である。
図3に示す処理は、外部装置2からのコマンドが受信された場合に開始される。CPU10は、受信されたコマンドに応じた処理を開始する(ステップS1)。次いで、CPU10は、受信されたコマンドに応じた処理に暗号演算がある否かを判定する(ステップS2)。CPU10は、暗号演算があると判定した場合(ステップS2:YES)、ステップ3へ進む。一方、CPU10は、暗号演算がないと判定した場合(ステップS2:NO)、ステップS8へ進む。
ステップS3では、CPU10は、受信されたコマンドが“INTERNAL AUTHENTICATE”であるか否かを判定(例えば、コマンドに含まれるINSにより判定)する。CPU10は、コマンドが“INTERNAL AUTHENTICATE”であると判定した場合(ステップS3:YES)、ダミー演算を伴う暗号演算の実行を決定する(ステップS4)。つまり、CPU10は、リトライ回数に制限がない暗号演算が実行される場合、ダミー演算を伴う暗号演算の実行を決定する。次いで、CPU10は、ダミー演算を伴う暗号演算を実行させる演算指令を暗号演算部15へ出力し、当該演算指令に応じて暗号演算部15により演算された結果を暗号演算部15から取得し(ステップS5)、ステップS8へ進む。
一方、CPU10は、コマンドが“INTERNAL AUTHENTICATE”でないと判定した場合(ステップS3:NO)、ダミー演算を伴わない暗号演算の実行を決定する(ステップS6)。次いで、CPU10は、ダミー演算を伴わない暗号演算を実行させる演算指令を暗号演算部15へ出力し、当該演算指令に応じて暗号演算部15により演算された結果を暗号演算部15から取得し(ステップS7)、ステップS8へ進む。
ステップS8では、CPU10は、残りの処理を行って上記コマンドに応じた処理の結果を示すレスポンスをI/O回路14を介して当該外部装置2へ送信する。
このように、実施例1によれば、CPU10は、コマンドの種別に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか1つを決定するように構成したので、不正な暗号解析を防止しつつ、暗号演算を伴う処理において実行速度の低下を抑制することができる。
(実施例2)
次に、図4及び図5を参照して、実施例2におけるICカード1の動作について説明する。実施例2は、コマンドに含まれるオプション(P1)が示す暗号鍵の種別(言い換えれば、暗号演算の種別)に基づいてダミー演算を挿入するか否かを判定する例であり、特定の暗号演算コマンド“COMPUTE CIPHER”を想定する。この暗号演算コマンドにより、P1の値を用いて、利用するIEF(暗号鍵を格納)を切り替えることができる。実施例2では、実施例1とは異なり、同一コマンドでも、オプション(セキュアメッセージを含む)に応じてダミー演算を挿入するか否かが決定される。図4は、コマンドに含まれるオプションの値ごとのダミー演算の要否の一例を示す図である。図5は、実施例2におけるCPU10の処理の一例を示すフローチャートである。
図4の例によれば、P1=0x00、及びP1=0x02の場合は、リトライカウンタによる回数制限がある(つまり、リトライ回数に制限がある)ため、攻撃者が繰り返し攻撃を行うことは難しく、不正な暗号解析のための大量のサンプルを得ることは難しい。従って、P1=0x00、及びP1=0x02の場合は、“COMPUTE CIPHER”に応じた処理中にダミー演算の必要がない。一方、P1=0x01の場合は、リトライ回数に制限がないため、攻撃者が繰り返し攻撃を行うことができ、不正な暗号解析のための大量のサンプルを得ることが可能である。従って、P1=0x01の場合は、“COMPUTE CIPHER”に応じた処理中にダミー演算の必要がある。図5に示す処理は、このような観点に基づく処理である。
図5に示す処理は、外部装置2からのコマンドが受信された場合に開始される。CPU10は、受信されたコマンドに応じた処理を開始する(ステップS11)。次いで、CPU10は、受信されたコマンドが“COMPUTE CIPHER”であるか否かを判定する(ステップS12)。CPU10は、コマンドが“COMPUTE CIPHER”であると判定した場合(ステップS12:YES)、ステップS13へ進む。一方、CPU10は、コマンドが“COMPUTE CIPHER”でないと判定した場合(ステップS12:NO)、ステップS18へ進む。
ステップS13では、CPU10は、受信されたコマンドに含まれるオプション(P1)が“0x01”であるか否かを判定する。CPU10は、オプション(P1)が“0x01”であると判定した場合(ステップS13:YES)、ダミー演算を伴う暗号演算の実行を決定する(ステップS14)。つまり、CPU10は、リトライ回数に制限がない暗号演算が実行される場合、ダミー演算を伴う暗号演算の実行を決定する。次いで、CPU10は、ダミー演算を伴う暗号演算を実行させる演算指令を暗号演算部15へ出力し、当該演算指令に応じて暗号演算部15により演算された結果を暗号演算部15から取得し(ステップS15)、ステップS18へ進む。
一方、CPU10は、オプション(P1)が“0x01”でないと判定した場合(ステップS13:NO)、ダミー演算を伴わない暗号演算の実行を決定する(ステップS16)。次いで、CPU10は、ダミー演算を伴わない暗号演算を実行させる演算指令を暗号演算部15へ出力し、当該演算指令に応じて暗号演算部15により演算された結果を暗号演算部15から取得し(ステップS17)、ステップS18へ進む。
ステップS18では、CPU10は、残りの処理を行って上記コマンドに応じた処理の結果を示すレスポンスをI/O回路14を介して当該外部装置2へ送信する。
このように、実施例2によれば、CPU10は、暗号演算の種別(コマンド中のオプション)に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか1つを決定するように構成したので、不正な暗号解析を防止しつつ、暗号演算を伴う処理において実行速度の低下を抑制することができる。
(実施例3)
次に、図6及び図7を参照して、実施例3におけるICカード1の動作について説明する。実施例3は、暗号アルゴリズム(暗号演算)の実装形態(実装形態は暗号アルゴリズムの種別に依存)に基づいてダミー演算を挿入するか否かを判定する例であり、ICカード1には、RSA、AES、DES、及び3DESが実装されていることを想定する。実施例3では、コマンドによらず、暗号アルゴリズムに応じてダミー演算を挿入するか否かが決定される。図6は、暗号アルゴリズムごとのダミー演算の要否の一例を示す図である。図7は、実施例3におけるCPU10の処理の一例を示すフローチャートである。
図6の例によれば、RSA、DES、及び3DESは、それぞれ、ハードウェアで実装されており、サイドチャネル対策が施されているため、コマンドに応じた処理中にダミー演算の必要がない。一方、AESは、ソフトウェアで実装されており、サイドチャネル対策は実施されているが、ハードウェアのものと比較すると脆弱であることがわかっているため、コマンドに応じた処理中にダミー演算の必要がある。図7に示す処理は、このような観点に基づく処理である。
図7に示す処理は、外部装置2からのコマンドが受信された場合に開始される。CPU10は、受信されたコマンドに応じた処理を開始する(ステップS21)。次いで、CPU10は、受信されたコマンドに応じた処理に暗号演算がある否かを判定する(ステップS22)。CPU10は、暗号演算があると判定した場合(ステップS22:YES)、ステップ23へ進む。一方、CPU10は、暗号演算がないと判定した場合(ステップS22:NO)、ステップS28へ進む。
ステップS23では、CPU10は、暗号演算に用いられる暗号アルゴリズムがAESであるか否かを判定する。なお、暗号アルゴリズムの種別(暗号演算の種別)は、例えば、コマンドごとに(または、イシュアごとに)ICチップ1a内で予め設定される。CPU10は、暗号アルゴリズムがAESであると判定した場合(ステップS23:YES)、ダミー演算を伴う暗号演算の実行を決定する(ステップS24)。つまり、CPU10は、ソフトウェアで実装された暗号演算が実行される場合、ダミー演算を伴う暗号演算の実行を決定する。次いで、CPU10は、ダミー演算を伴う暗号演算を実行させる演算指令を暗号演算部15へ出力し、当該演算指令に応じて暗号演算部15により演算された結果を暗号演算部15から取得し(ステップS25)、ステップS28へ進む。
一方、CPU10は、暗号アルゴリズムがAESでないと判定した場合(ステップS23:NO)、ダミー演算を伴わない暗号演算の実行を決定する(ステップS26)。次いで、CPU10は、ダミー演算を伴わない暗号演算を実行させる演算指令を暗号演算部15へ出力し、当該演算指令に応じて暗号演算部15により演算された結果を暗号演算部15から取得し(ステップS27)、ステップS28へ進む。
ステップS28では、CPU10は、残りの処理を行って上記コマンドに応じた処理の結果を示すレスポンスをI/O回路14を介して当該外部装置2へ送信する。
このように、実施例3によれば、CPU10は、暗号演算の種別(実装形態)に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか1つを決定するように構成したので、不正な暗号解析を防止しつつ、暗号演算を伴う処理において実行速度の低下を抑制することができる。
(実施例4)
次に、図8及び図9を参照して、実施例4におけるICカード1の動作について説明する。実施例4は、暗号演算の実行履歴に基づいてダミー演算を挿入するか否かを判定する例であり、暗号演算が実行される度に実行回数がインクリメントされて記憶されることを想定する。図8は、実行回数の範囲ごとのダミー演算の要否の一例を示す図である。図9は、実施例4におけるCPU10の処理の一例を示すフローチャートである。
図8の例によれば、暗号演算の実行回数が10000回未満の場合は、不正な暗号解析に十分なサンプルを得ることは難しいため、コマンドに応じた処理中にダミー演算の必要がない。一方、暗号演算の実行回数が10000回以上の場合は、不正な暗号解析に十分なサンプルを得ることが可能なため、コマンドに応じた処理中にダミー演算の必要がある。図9に示す処理は、このような観点に基づく処理である。
図9に示す処理は、外部装置2からのコマンドが受信された場合に開始される。CPU10は、受信されたコマンドに応じた処理を開始する(ステップS31)。次いで、CPU10は、受信されたコマンドに応じた処理に暗号演算がある否かを判定する(ステップS32)。CPU10は、暗号演算があると判定した場合(ステップS32:YES)、ステップ33へ進む。一方、CPU10は、暗号演算がないと判定した場合(ステップS32:NO)、ステップS38へ進む。
ステップS33では、CPU10は、暗号演算の実行回数が閾値(例えば、10000)以上であるか否かを判定する。CPU10は、暗号演算の実行回数が閾値以上であると判定した場合(ステップS33:YES)、ダミー演算を伴う暗号演算の実行を決定する(ステップS34)。次いで、CPU10は、ダミー演算を伴う暗号演算を実行させる演算指令を暗号演算部15へ出力し、当該演算指令に応じて暗号演算部15により演算された結果を暗号演算部15から取得し(ステップS35)、ステップS38へ進む。
一方、CPU10は、暗号演算の実行回数が閾値以上でないと判定した場合(ステップS33:NO)、ダミー演算を伴わない暗号演算の実行を決定する(ステップS36)。次いで、CPU10は、ダミー演算を伴わない暗号演算を実行させる演算指令を暗号演算部15へ出力し、当該演算指令に応じて暗号演算部15により演算された結果を暗号演算部15から取得し(ステップS37)、ステップS38へ進む。
ステップS38では、CPU10は、残りの処理を行って上記コマンドに応じた処理の結果を示すレスポンスをI/O回路14を介して当該外部装置2へ送信する。
このように、実施例4によれば、CPU10は、暗号演算の実行履歴に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか1つを決定するように構成したので、不正な暗号解析を防止しつつ、暗号演算を伴う処理において実行速度の低下を抑制することができる。
以上説明したように、上記実施形態によれば、ICカード1は、受信されたコマンドに応じた処理中に暗号演算を実行するときに、ダミー演算の実行条件に基づいて、ダミー演算を伴う暗号演算の実行と、ダミー演算を伴わない暗号演算の実行とのうち何れか1つを決定するように構成したので、不正な暗号解析を防止しつつ、暗号演算を伴う処理において実行速度の低下を抑制することができる。また、上記実施形態によれば、挿入されるダミー演算の実行回数を増減することができるので、求められるセキュリティ性と利便性のバランスを調節することが可能となる。
1 ICカード
1a ICチップ
10 CPU
11 ROM
12 RAM
13 不揮発性メモリ
14 I/O回路
15 暗号演算部

Claims (10)

  1. 外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信する電子情報記憶装置であって、
    前記コマンドに応じた処理中に暗号演算を実行するときに、前記暗号演算に対応する偽装演算の実行条件に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか1つを決定する決定手段を備えることを特徴とする電子情報記憶装置。
  2. 前記決定手段は、前記偽装演算の実行条件として前記コマンドの種別または前記暗号演算の種別に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか1つを決定することを特徴とする請求項1に記載の電子情報記憶装置。
  3. 前記決定手段は、リトライ回数に制限がない前記暗号演算が実行される場合、前記偽装演算を伴う前記暗号演算の実行を決定することを特徴とする請求項2に記載の電子情報記憶装置。
  4. 前記決定手段は、ソフトウェアで実装された前記暗号演算が実行される場合、前記偽装演算を伴う前記暗号演算の実行を決定することを特徴とする請求項2に記載の電子情報記憶装置。
  5. 前記決定手段は、前記偽装演算の実行条件として前記暗号演算の実行履歴に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか1つを決定することを特徴とする請求項1に記載の電子情報記憶装置。
  6. 前記決定手段は、前記暗号演算の実行回数が閾値以上である場合、前記偽装演算を伴う前記暗号演算の実行を決定することを特徴とする請求項5に記載の電子情報記憶装置。
  7. 前記偽装演算は、前記暗号演算と同一の暗号アルゴリズムであり、且つ前記暗号演算で用いられる鍵と同一のハミングウエイトを有する鍵を用いることを特徴とする請求項1乃至6の何れか一項に記載の電子情報記憶装置。
  8. 外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信するICカードであって、
    前記コマンドに応じた処理中に暗号演算を実行するときに、前記暗号演算に対応する偽装演算の実行条件に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか1つを決定する決定手段を備えることを特徴とするICカード。
  9. 外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信する電子情報記憶装置が備えるプロセッサにより実行される制御方法であって、
    前記コマンドに応じた処理中に暗号演算を実行するときに、前記暗号演算に対応する偽装演算の実行条件に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか1つを決定することを特徴とする演算決定方法。
  10. 外部装置から受信したコマンドに応じた処理を行って当該処理の結果を示すレスポンスを当該外部装置へ送信する電子情報記憶装置が備えるプロセッサに、
    前記コマンドに応じた処理中に暗号演算を実行するときに、前記暗号演算に対応する偽装演算の実行条件に基づいて、前記偽装演算を伴う前記暗号演算の実行と、前記偽装演算を伴わない前記暗号演算の実行とのうち何れか1つを決定するように機能させることを特徴とする演算決定プログラム。
JP2017052390A 2017-03-17 2017-03-17 電子情報記憶装置、icカード、演算決定方法、及び演算決定プログラム Active JP6950861B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017052390A JP6950861B2 (ja) 2017-03-17 2017-03-17 電子情報記憶装置、icカード、演算決定方法、及び演算決定プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017052390A JP6950861B2 (ja) 2017-03-17 2017-03-17 電子情報記憶装置、icカード、演算決定方法、及び演算決定プログラム

Publications (2)

Publication Number Publication Date
JP2018157367A true JP2018157367A (ja) 2018-10-04
JP6950861B2 JP6950861B2 (ja) 2021-10-13

Family

ID=63716791

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017052390A Active JP6950861B2 (ja) 2017-03-17 2017-03-17 電子情報記憶装置、icカード、演算決定方法、及び演算決定プログラム

Country Status (1)

Country Link
JP (1) JP6950861B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006174274A (ja) * 2004-12-17 2006-06-29 Toshiba Corp 暗号演算回路と、該暗号演算回路を有する情報処理装置及びicカード
JP2013126078A (ja) * 2011-12-14 2013-06-24 Renesas Electronics Corp 暗号処理装置、暗号処理方法、プログラム
JP2013157761A (ja) * 2012-01-30 2013-08-15 Renesas Electronics Corp 半導体装置及び演算処理方法
JP2016085520A (ja) * 2014-10-23 2016-05-19 株式会社東芝 携帯可能電子装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006174274A (ja) * 2004-12-17 2006-06-29 Toshiba Corp 暗号演算回路と、該暗号演算回路を有する情報処理装置及びicカード
JP2013126078A (ja) * 2011-12-14 2013-06-24 Renesas Electronics Corp 暗号処理装置、暗号処理方法、プログラム
JP2013157761A (ja) * 2012-01-30 2013-08-15 Renesas Electronics Corp 半導体装置及び演算処理方法
JP2016085520A (ja) * 2014-10-23 2016-05-19 株式会社東芝 携帯可能電子装置

Also Published As

Publication number Publication date
JP6950861B2 (ja) 2021-10-13

Similar Documents

Publication Publication Date Title
US7194633B2 (en) Device and method with reduced information leakage
TWI524275B (zh) 儲存裝置及操作一儲存裝置之方法
US10678920B2 (en) Electronic device and protection method
EP1505470A2 (en) Terminal application generation apparatus and application authentication method
US9734091B2 (en) Remote load and update card emulation support
KR20170098730A (ko) 부채널 분석으로부터 회로를 보호하는 방법
EP3224758B1 (en) Key derivation in smart card operating system
TW201633207A (zh) 裝置金鑰保護
CN102096841B (zh) 安装有计算机代码的集成电路和系统
RU2579990C2 (ru) Защита от пассивного сниффинга
CN109299944B (zh) 一种交易过程中的数据加密方法、系统及终端
CN106529271A (zh) 一种终端及其绑定校验方法
KR102519828B1 (ko) 회로 칩 및 그 동작 방법
JP6950861B2 (ja) 電子情報記憶装置、icカード、演算決定方法、及び演算決定プログラム
KR20210132730A (ko) 메모리를 블록 체인의 블록으로 사용하는 방법
US9912471B2 (en) Method for operating a portable data carrier, and such a portable data carrier
EP2000936A1 (en) Electronic token comprising several microprocessors and method of managing command execution on several microprocessors
US11151338B2 (en) Securing a transaction by means of a smart card and smart card
JP2013118473A (ja) Icカード、携帯可能電子装置、及びicカードの制御プログラム
EP3842976A1 (en) Method and a corresponding system for securely accessing at least one feature of a chip
JP2018113504A (ja) セキュアエレメント、uimカード、認証方法、及び認証プログラム
JP2010136066A (ja) 情報処理装置および方法、並びにプログラム
EP3460702A1 (en) Method to detect an attack by fault injection on a sensitive operation
US20100042851A1 (en) Method for Securely Handling Data During the Running of Cryptographic Algorithms on Embedded Systems
JP7487837B1 (ja) 電子情報記憶媒体、icチップ、icカード、鍵データ格納方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200129

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210322

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210825

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210907

R150 Certificate of patent or registration of utility model

Ref document number: 6950861

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150