(57)【要約】【課題】認証に成功する毎にカウントアップされるカウンタ値に基づいて動的に暗号鍵を生成するＩＣカードに対して，サイドチャネル攻撃に対する耐タンパー性を持たせる。【解決手段】ＩＣカード１は，認証の成功回数をカウントするための成功回数カウンタ１１０と，認証の試行回数をカウントするための試行回数カウンタ１１１を連結させた構成の認証カウンタ１１と，成功回数カウンタ１１０の値に基づく派生鍵を暗号演算により生成するときに用いるマスター鍵１２をＮＶＭ２３に記憶し，ＩＣカード１が備える認証コマンド１０は，試行回数カウンタ１１１の値を繰り返し回数として所定のダミー処理を繰り返し実行する認証遅延処理を実行した後に，成功回数カウンタ１１０の値に基づく派生鍵を用いた認証処理を実行する。【選択図】図２
2018148387.tif 000002
【特許請求の範囲】
【請求項１】
認証の成功回数をカウントするための成功回数カウンタと，認証の試行回数をカウントするための試行回数カウンタと，前記成功回数カウンタの値に基づく派生鍵を暗号演算により生成するときに用いるマスター鍵をＮＶＭに記憶し，前記試行回数カウンタの値をＮＶＭから読み取り，前記試行回数カウンタの値を繰り返し回数として所定のダミー処理を繰り返し行う認証遅延処理を実行した後，ＮＶＭから読み取った前記成功回数カウンタの値を含むデータを前記マスター鍵により暗号演算して生成した派生鍵を用いた認証処理を実行し，前記認証処理に成功すると，前記成功回数カウンタの値のカウントアップと前記試行回数カウンタの値の初期化を行い，前記認証処理に失敗すると，前記試行回数カウンタの値をカウントアップする認証コマンドを備えたことを特徴とするＩＣカード。
【請求項２】
認証の成功回数をカウントするための成功回数カウンタと，認証の試行回数をカウントするための試行回数カウンタと，前記成功回数カウンタの値に基づく派生鍵を暗号演算により生成するときに用いるマスター鍵をＮＶＭに記憶したＩＣカードを動作させるためのコンピュータプログラムであって，前記試行回数カウンタの値をＮＶＭから読み取り，前記試行回数カウンタの値を繰り返し回数として所定のダミー処理を繰り返し行う認証遅延処理を実行した後，ＮＶＭから読み取った前記成功回数カウンタの値を含むデータを前記マスター鍵により暗号演算して生成した派生鍵を用いた認証処理を実行し，前記認証処理に成功すると，前記成功回数カウンタの値のカウントアップと前記試行回数カウンタの値の初期化を行い，前記認証処理に失敗すると，前記試行回数カウンタの値をカウントアップする認証コマンドとしてＩＣカードを動作させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，ＩＣカードに関する発明で，更に詳しくは，サイドチャネル攻撃に対する耐タンパー性をＩＣカードに持たせる技術に関する。
【背景技術】
【０００２】
ＩＣカードが暗号演算処理で用いる暗号鍵を解読する攻撃手法の一つとして，サイドチャネル攻撃がある。サイドチャネル攻撃とは，電流などの物理現象を計測して得られる物理量であるサイドチャネルを観察することにより，ＩＣカードが暗号演算処理で用いる暗号鍵を推定する攻撃手法である。ＩＣカードのサイドチャネルとしては，ＩＣカードの消費電流やＩＣカードの処理時間などが知られており，暗号演算処理に係るＩＣカードの消費電流をサイドチャネルとして観察するサイドチャネル攻撃は電流解析攻撃と称され，暗号演算処理中に係るＩＣカードの処理時間をサイドチャネルとして観察するサイドチャネル攻撃はタイミング解析攻撃と称されている。
【０００３】
サイドチャネル攻撃に対して耐タンパー性をＩＣカードに持たせる手法として，暗号演算処理中または暗号演算処理の前後にダミー処理を挿入する手法が開示されている（例えば，特許文献１）。暗号演算処理の前または暗号演算処理の後にダミー処理を挿入することで，暗号演算処理に似た消費電流をＩＣカードの消費電流に含ませることができ，ＩＣカードの消費電流を攪乱できる。また，暗号演算処理の前または暗号演算処理の後にダミー処理を挿入することで，暗号演算処理に係る時間（動作タイミング）の画一化が行なえる。
【０００４】
一般的に，認証機能を有するＩＣカードでは，認証の再試行回数が定められているため，同じＩＣカードに対してサイドチャネル攻撃を何度も実行できないが，認証に成功する毎にカウントアップされるカウンタ値に基づいて動的に暗号鍵を生成するＩＣカードの場合，認証に成功しない限り，同一のカウンタ値を利用して何度でも暗号鍵を生成できてしまう。
【０００５】
例えば，非特許文献１で規格されたＩＣカードは，相互認証（Mutual authentication）に成功した回数のカウントに用いるカウンタ(Sequence Counter)と静的なマスター鍵（Static Secure Channel Key）をＮＶＭ（Non-volatile memory）に記憶し，相互認証の成功回数とマスター鍵を用いてセッション鍵や認証コードを生成する。このため，相互認証に成功しない限り同じ値のカウンタ値を使用して，セッション鍵や認証コードの生成を何度も試行できるため，ダミー処理を単に認証処理に含ませるだけでは，セッション鍵やその派生元となるマスター鍵が推定される恐れがあった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−２６６１０３号公報
【非特許文献】
【０００７】
【非特許文献１】Global Platform Card Specification Version 2.2
【発明の概要】
【発明が解決しようとする課題】
【０００８】
そこで，本発明は，認証に成功する毎にカウントアップされるカウンタ値に基づいて動的に暗号鍵を生成するＩＣカードにおいて，サイドチャネル攻撃に対する耐タンパー性を高めることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決する本発明は，認証の成功回数をカウントするための成功回数カウンタと，認証の試行回数をカウントするための試行回数カウンタと，前記成功回数カウンタの値に基づく派生鍵を暗号演算により生成するときに用いるマスター鍵をＮＶＭに記憶し，前記試行回数カウンタの値をＮＶＭから読取り，前記試行回数カウンタの値を繰り返し回数として所定のダミー処理を繰り返し行う認証遅延処理を実行した後，ＮＶＭから読み取った前記成功回数カウンタの値を含むデータを前記マスター鍵により暗号演算して生成した派生鍵を用いた認証処理を実行し，前記認証処理に成功すると，前記成功回数カウンタの値のカウントアップと前記試行回数カウンタの値の初期化を行い，前記認証処理に失敗すると，前記試行回数カウンタの値をカウントアップする認証コマンドを備えたことを特徴とするＩＣカードである。なお，本発明では，前記認証コマンドとしてＩＣカードを動作させるためのコンピュータプログラムも請求する。
【発明の効果】
【００１０】
上述した本発明に係るＩＣカードは，サイドチャネル攻撃に対する耐タンパー性を高めるために，前記認証処理を開始する前，前記試行回数カウンタの値を繰り返し回数として所定のダミー処理を繰り返し行う前記認証遅延処理を実行するように構成されている。
【図面の簡単な説明】
【００１１】
【図１】本実施形態に係るＩＣカードのハードウェア構成を説明する図。
【図２】本実施形態に係るＩＣカードのブロック図。
【図３】ＩＣカードが記憶する認証カウンタを説明する図。
【図４】ＩＣカードが備える認証コマンドの動作を説明するフロー図。
【図５】ＩＣカードが備える認証コマンドの動作を説明する捕捉図。
【発明を実施するための形態】
【００１２】
ここから，本発明の好適な実施形態を記載する。なお，以下の記載は本発明の技術的範囲を束縛するものでなく，理解を助けるために記述するものである。
【００１３】
図１は，本実施形態に係るＩＣカード１のハードウェア構成を説明する図である。本実施形態に係るＩＣカード１は，プラスチックなどのカード基材にＩＣチップ２を埋め込んだカード媒体である。図１では，コンタクト端子２ａを介して外部のホスト装置と物理的に接触して通信する接触型としてＩＣカード１を図示しているが，ＩＣカード１は，リーダライタと非接触で通信する非接触型であってもよい。また，図１では，ＩＣカード１の外形は，ISO/IEC 7816のＩＤ−１型であるが， ETSI TS 102 221等で規格化されている小型の形態（Plug-in UICC，Mini-UICC，4FF）でもよい。
【００１４】
図１に図示したように，ＩＣカード１に埋め込まれるＩＣチップ２は，データの入出力を行うＩ／Ｏ２４，各種演算を行うＣＰＵ(Central Processing Unit)２０,一時的にデータを記憶する際に用いるメモリであるＲＡＭ(Random Access Memory)２２,ＩＣカード１が備えるコマンドのプログラムなどを記憶するＲＯＭ（Read-Only Memory）２１に加え，データを記憶する電気的に書き換え可能なメモリであるＮＶＭ２３を備える。
【００１５】
図２は，本実施形態に係るＩＣカード１のブロック図である。図２で図示したように，本実施形態に係るＩＣカード１は，認証処理を実行する認証コマンド１０を備える。例えば，ＩＣカード１が非特許文献１の規格に準拠している場合，セキュアチャネル（Secure Channel）を構築する際に用いられるEXTERNAL AUTHENTICATEコマンドに認証コマンド１０を適用できる。なお，本実施形態では，認証コマンド１０に係るコンピュータプログラムをＲＯＭ２１に実装させているが，認証コマンド１０に係るコンピュータプログラムはＮＶＭ２３に備えさせることもできる。
【００１６】
また，本実施形態に係るＩＣカード１は，認証コマンド１０が利用するデータとして，マスター鍵１２と認証カウンタ１１をＮＶＭ２３に記憶する。ＩＣカード１が非特許文献１の規格に準拠している場合，マスター鍵１２はStatic Secure Channel Keyに該当するＤＥＳ暗号鍵になるが，認証カウンタ１１の構造は非特許文献１のSequence Counterと異なる。
【００１７】
図３は，ＩＣカード１が記憶する認証カウンタ１１を説明する図である。成功回数カウンタ１１０と試行回数カウンタ１１１それぞれを単独のカウンタとして扱う構成でも構わないが，本実施形態では，成功回数カウンタ１１０と試行回数カウンタ１１１を認証カウンタ１１に含ませ，本実施形態に係る認証カウンタ１１は，認証に成功した回数のカウントに用いるカウンタである２バイトの成功回数カウンタ１１０と，認証に試行した回数のカウントに用いるカウンタである２バイトの試行回数カウンタ１１１を連結させた構成になっている。
【００１８】
成功回数カウンタ１１０を用いてカウントする事象（認証の成功回数）と試行回数カウンタ１１１を用いてカウントする事象（認証の試行回数）は異なるが，本実施形態では，成功回数カウンタ１１０の上位バイト，成功回数カウンタ１１０の下位バイト，試行回数カウンタ１１１の上位バイトそして試行回数カウンタ１１１の下位バイトの順に連続してＮＶＭ２３に配置し，成功回数カウンタ１１０を更新する時（例えば，カウントアップする時）も，試行回数カウンタ１１１を更新する時（例えば，カウントアップする時）も認証カウンタ１１が更新されるようにしている。
【００１９】
本実施形態において，認証カウンタ１１の成功回数カウンタ１１０と認証カウンタ１１の試行回数カウンタ１１１それぞれの用途は異なる。成功回数カウンタ１１０の値は，図外のホスト装置がＩＣカード１へ送信する認証コードを認証するための派生鍵の生成に用いられ，認証カウンタ１１に含ませている試行回数カウンタ１１１の値は，後述する認証遅延処理で用いられる。
【００２０】
図４は，ＩＣカード１が備える認証コマンド１０の動作を説明するフロー図で，図５は，ＩＣカード１が備える認証コマンド１０の動作を説明する捕捉図である。
【００２１】
ＩＣカード１は備える認証コマンド１０は，認証コマンド１０のコマンドＡＰＤＵ（Application Protocol Data Unit）を図外のホスト装置から受信すると起動し，認証コマンド１０は，この時点でＮＶＭ２３に記憶されている認証カウンタ１１を読み取る処理を実行する（Ｓ１）。図５（ａ）で図示したように，認証コマンド１０が，ＮＶＭ２３に記憶されている認証カウンタ１１を読み取ると，ＮＶＭ２３に記憶されている認証カウンタ１１が，ＩＣチップ２の揮発性メモリ（ここでは，ＲＡＭ２２）にコピーされる。
【００２２】
次に，認証コマンド１０は，ＲＡＭ２２に格納した認証カウンタ１１に含まれる試行回数カウンタ１１１の値を確認する（Ｓ２）。具体的に，認証コマンド１０は，ＮＶＭ２３から読み取った認証カウンタ１１の下位２バイトが「０ｘ００００（０ｘは１６進表記を意味する）」と一致するか確認する。
【００２３】
認証コマンド１０は，ＮＶＭ２３から読み取った試行回数カウンタ１１１の値が「０ｘ００００」でなければ，試行回数カウンタ１１１の値を繰り返し回数として所定のダミー処理を繰り返して行う認証遅延処理（Ｓ３）を実行する。例えば，試行回数カウンタ１１１の値が「０ｘ０００１」ならば，認証遅延処理（Ｓ３）で実行されるダミー処理の回数は１回になる。また，試行回数カウンタ１１１の値が「０ｘ０００Ｆ」ならば，認証遅延処理（Ｓ３）で実行されるダミー処理の回数は１５回になる。
【００２４】
試行回数カウンタ１１１の値が「０ｘ００００」の場合は試行回数カウンタ１１１の値を確認（Ｓ２）した後，または，試行回数カウンタ１１１の値が「０ｘ００００」でない場合は認証遅延処理（Ｓ３）を実行した後，認証コマンド１０は，ＲＡＭ２２に格納している試行回数カウンタ１１１の値とマスター鍵１２を用いた認証処理（Ｓ４）を実行する。
【００２５】
ＩＣカード１の認証コマンド１０は，認証処理（Ｓ４）において，成功回数カウンタ１１０の値とマスター鍵１２を少なくとも用いて派生鍵を生成する処理と，派生鍵を用いて認証コマンド１０のコマンドＡＰＤＵに含まれる認証コードを認証する処理を実行する。例えば，ＩＣカード１が非特許文献１の規格に準拠している場合，ＩＣカード１は，成功回数カウンタ１１０の値を含む派生データ（Derivation Data）をマスター鍵１２であるStatic Secure Channel Keyにより暗号化することで派生鍵となるセッション鍵を生成する。また，ＩＣカード１が非特許文献１の規格に準拠している場合，ＩＣカード１は，派生鍵となるセッション鍵を利用して，EXTERNAL AUTHENTICATEコマンドのコマンドＡＰＤＵに含まれる認証コード（Host cryptogram）などを認証する。
【００２６】
認証コマンド１０は，認証処理（Ｓ４）の結果に応じて処理を分岐する（Ｓ５）。認証処理（Ｓ４）に成功した場合，認証コマンド１０は，ＮＶＭ２３に記憶されている認証カウンタ１１に含まれる成功回数カウンタ１１０の値をカウントアップ（一つだけインクリメント）し，更に，この認証カウンタ１１に含まれる試行回数カウンタ１１１の値を初期化する処理（Ｓ６ａ）を実行して，図４の手順は終了する。
【００２７】
図５（ｂ）で図示したように，処理（Ｓ６ａ）において，認証コマンド１０は，ＲＡＭ２２に格納している認証カウンタ１１に含まれる成功回数カウンタ１１０の値を一つだけインクリメントし，更に，この認証カウンタ１１に含まれる試行回数カウンタ１１１の値を初期値（例えば，０ｘ００００ｈ）に書き換えた後，ＲＡＭ２２に格納している更新後の認証カウンタ１１の値をＮＶＭ２３の認証カウンタ１１に上書きする。
【００２８】
また，Ｓ５において，認証コードの認証に失敗した場合，認証コマンド１０は，ＮＶＭ２３に記憶されている認証カウンタ１１に含まれる試行回数カウンタ１１１の値を一つだけインクリメントする処理（Ｓ６ｂ）を実行して，図４の手順は終了する。
【００２９】
図５（ｃ）で図示したように，処理（Ｓ６ｂ）において，認証コマンド１０は，ＲＡＭ２２に格納している認証カウンタ１１に含まれる成功回数カウンタ１１０の値は変更せずこの認証カウンタ１１に含まれる試行回数カウンタ１１１の値を一つだけインクリメントした後，ＲＡＭ２２に格納している更新後の認証カウンタ１１の値をＮＶＭ２３の認証カウンタ１１に上書きする。
【００３０】
これまで説明したように，本実施形態に係るＩＣカード１は，認証処理（Ｓ４）を実行する前に，認証処理（Ｓ４）に失敗する毎にカウントアップされる試行回数カウンタ１１１の値を繰り返し回数としてダミー処理を繰り返して行う認証遅延処理（Ｓ３）を実行するように構成されている。ＩＣカード１のＮＶＭ２３に記憶されているマスター鍵１２等を推定するために，サイドチャネル攻撃が繰り返して実行された場合，基本的にはサイドチャネル攻撃が繰り返して実行される毎に認証処理（Ｓ４）に失敗するため，サイドチャネル攻撃が繰り返して実行された回数に応じて認証コマンド１０の処理時間は長くなり，マスター鍵１２等の推定は困難になる。なお，認証遅延処理（Ｓ３）で認証コマンド１０が実行するダミー処理の内容は任意に決定できるが，暗号処理中に係るＩＣカード１の消費電流の攪乱を目的とすると，ダミー処理，暗号演算を実行する処理とすることが望ましい。また，認証処理（Ｓ４）の成功または認証処理（Ｓ４）の失敗に係わらず認証カウンタ１１は更新されるため，ＩＣカード１の消費電流を観察しても認証の成功を推定できなくする効果も得られる。
【符号の説明】
【００３１】
１    ＩＣカード
１０  認証コマンド
１１  認証カウンタ
１１０  成功回数カウンタ
１１１  試行回数カウンタ
１２  マスター鍵
２３  ＮＶＭ
【図１】
2018148387.tif 000003
【図２】
2018148387.tif 000004
【図３】
2018148387.tif 000005
【図４】
2018148387.tif 000006
【図５】
2018148387.tif 000007