(57)【要約】【課題】暗号装置の不正解読に対する耐性評価にかかる時間を短時間化することができるサイドチャネル評価装置及びサイドチャネル評価方法を提供する。【解決手段】サイドチャネル評価装置１の選択関数データベース９には、脆弱性評価時の計算に用いる選択関数が複数登録されている。選択関数データベース９内の選択関数は、実装情報が入手できないという条件下で確認すべきAES−128の全選択関数のうち、部分鍵ｋが１６バイト未満の選択関数である。部分鍵ｋが１６バイト未満の選択関数を評価時の使用関数とするのは、部分鍵ｋが１６バイト以上の選択関数は暗号鍵の全数探索の方が効率の良い攻撃方法となるので、攻撃に対して耐性の高い関数であると言え、１６バイト未満の選択関数で評価を行えば、それで足りるからである。【選択図】図３
2014007705.tif 000002
【特許請求の範囲】
【請求項１】
暗号装置の不正解読に対する耐性を評価するサイドチャネル評価装置において、
前記暗号装置から漏洩するサイドチャネル情報を入力するサイドチャネル情報入力部と、
前記暗号装置で取り扱う暗号データを入力する暗号データ入力部と、
前記サイドチャネル情報の計算に用いる選択関数を複数登録した選択関数データベースから、評価を行う前記選択関数を選び出し、暗号鍵の一部である部分鍵と、前記暗号データ入力部で入力した前記暗号データとを用いて、前記選択関数により計算上のサイドチャネル情報を求める演算部と、
前記サイドチャネル情報入力部で入力した前記サイドチャネル情報と、前記選択関数により求めた選択関数出力との相関を計算する相関計算部と、
前記相関計算部が求めた相関係数と閾値とを比較し、その比較結果を出力する比較出力部とを備え、
前記部分鍵が指定サイズ未満の選択関数のみを抽出して前記選択関数データベースに登録しておき、これら選択関数でのみ耐性評価を実施する
ことを特徴とするサイドチャネル評価装置。
【請求項２】
想定される全ての前記選択関数を抽出し、その全選択関数の中から前記部分鍵が指定サイズ未満の選択関数を抽出し、抽出した当該選択関数を、評価時に使用する関数として前記選択関数データベースに登録する
ことを特徴とする請求項１に記載のサイドチャネル評価装置。
【請求項３】
前記全選択関数の抽出は、
前記暗号装置にガロア体上のべき乗変換が使用されている場合、当該べき乗変換の入出力ビット列を同一ビット数の線形マスク値（「０」を除く）でマスクした値の奇数パリティビットを、計算上のサイドチャネル情報として出力する選択関数を含む
ことを特徴とする請求項２に記載のサイドチャネル評価装置。
【請求項４】
暗号装置から漏洩するサイドチャネル情報の計算に用いる選択関数を複数登録した選択関数データベースから、評価を行う前記選択関数を選び出し、暗号鍵の一部である部分鍵と、暗号データ入力部で入力した暗号データとを用いて、前記選択関数により計算上のサイドチャネル情報を求め、サイドチャネル情報入力部で入力した実測のサイドチャネル情報と、前記選択関数により求めた選択関数出力との相関を計算し、求めた相関係数と閾値とを比較することにより、前記暗号装置の不正解読に対する耐性を評価するサイドチャネル評価方法において、
評価時に確認の対象となる全選択関数を抽出する全選択関数抽出ステップと、
前記全選択関数の中から、指定サイズ未満の選択関数を、前記不正解読に対する耐性の評価に使用する関数として抽出する使用選択関数抽出ステップと
を備えたことを特徴とするサイドチャネル評価方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路のサイドチャネル攻撃に対する耐性を評価するサイドチャネル評価装置及びサイドチャネル評価方法に関する。
【背景技術】
【０００２】
従来、暗号処理機能を搭載したLSI（Large Scale Integration）等の集積回路において、暗号回路が動作する際に発生するサイドチャネル情報を解析し、秘密情報（例えば暗号鍵等）を不正に盗み出すサイドチャネル攻撃が周知である。このような背景から、暗号処理機能を有する組み込み機器で使用するLSIには、サイドチャネル攻撃に対して充分な耐性を持つことが求められている。
【０００３】
サイドチャネル攻撃に対する耐性評価としては、例えば特許文献１に示すようなサイドチャネル評価装置を用いた方式が存在する。このサイドチャネル評価装置では、例えば平文、暗号文、暗号鍵等を入力として暗号化の中間データのハミング重みやハミング距離等を出力する選択関数に着目し、特定の選択関数に対して、暗号鍵を解読する解析を行う。そして、この選択関数出力とサイドチャネル情報との間に相関があるか否かを解析し、サイドチャネル攻撃に対する脆弱性を確認する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開２００９／０９９０８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、特許文献１は、特定の選択関数に対して暗号鍵を解読する解析を行い、選択関数ごとに暗号鍵の解読可否を評価する技術である。このため、どの選択関数を用いるかは評価時に適切に設定する必要がある。しかし、例えばLSIに内在する脆弱性が未知の場合には、全ての脆弱性候補、つまり全選択関数で評価を行う必要が生じ、この場合は膨大な計算が必要になるので、評価時間が長期間に亘ることとなり、実施は実際のところ困難である実情があった。
【０００６】
本発明の目的は、暗号装置の不正解読に対する耐性評価にかかる時間を短時間化することができるサイドチャネル評価装置及びサイドチャネル評価方法を提供することにある。
【課題を解決するための手段】
【０００７】
前記問題点を解決するために、本発明では、暗号装置の不正解読に対する耐性を評価するサイドチャネル評価装置において、前記暗号装置から漏洩するサイドチャネル情報を入力するサイドチャネル情報入力部と、前記暗号装置で取り扱う暗号データを入力する暗号データ入力部と、前記サイドチャネル情報の計算に用いる選択関数を複数登録した選択関数データベースから、評価を行う前記選択関数を選び出し、暗号鍵の一部である部分鍵と、前記暗号データ入力部で入力した前記暗号データとを用いて、前記選択関数により計算上のサイドチャネル情報を求める演算部と、前記サイドチャネル情報入力部で入力した前記サイドチャネル情報と、求めた選択関数出力との相関を計算する相関計算部と、前記相関計算部が求めた相関係数と閾値とを比較し、その比較結果を出力する比較出力部とを備え、前記部分鍵が指定サイズ未満の選択関数のみを抽出して前記選択関数データベースに登録しておき、これら選択関数でのみ耐性評価を実施することを要旨とする。
【０００８】
本発明の構成によれば、演算部は、選択関数データベースを参照して選択関数を選び出し、暗号鍵の一部である部分鍵と、暗号データ入力部で入力した暗号データとを、選び出した選択関数に入力する。このとき、選択関数は、暗号データ及び部分鍵を入力として計算を行い、この計算結果として選択関数出力を相関計算部に出力する。相関計算部は、入力した選択関数出力と、サイドチャネル情報入力部で入力したサイドチャネル情報との相関を計算する。比較出力部は、相関関数とその閾値とを比較し、相関関数が閾値以上のとき、この交換関数を暗号鍵が不正解読される可能性のある関数として出力する。以上の評価を、選択関数データベース内の各選択関数において実施する。
【０００９】
また、本構成の場合、評価時に用いる選択関数を、部分鍵が指定サイズ未満の選択関数に絞り込んだので、評価時に計算しなくてはならない選択関数の数が少なく済む。このように、評価を行う選択関数を制限すれば、その分、評価にかかる時間を短く抑えることが可能となる。
【００１０】
本発明では、想定される全ての前記選択関数を抽出し、その全選択関数の中から前記部分鍵が指定サイズ未満の選択関数を抽出し、抽出した当該選択関数を、評価時に使用する関数として前記選択関数データベースに登録することを要旨とする。この構成によれば、想定される全選択関数を確認し、その中から評価に必要な選択関数を抽出する。よって、使用対象とする選択関数を、好適に選び出すことが可能となる。
【００１１】
本発明では、前記全選択関数の抽出は、前記暗号装置にガロア体上のべき乗変換が使用されている場合、当該べき乗変換の入出力ビット列を同一ビット数の線形マスク値（「０」を除く）でマスクした値の奇数パリティビットを、計算上のサイドチャネル情報として出力する選択関数を含むことを要旨とする。この構成によれば、非線形回路を有する暗号装置の場合、非線形回路の遷移確率の偏りを利用した選択関数が存在するが、この選択関数も精度よく抽出することが可能となる。
【００１２】
本発明では、暗号装置から漏洩するサイドチャネル情報の計算に用いる選択関数を複数登録した選択関数データベースから、評価を行う前記選択関数を選び出し、暗号鍵の一部である部分鍵と、暗号データ入力部で入力した暗号データとを用いて、前記選択関数により計算上のサイドチャネル情報を求め、サイドチャネル情報入力部で入力した実測のサイドチャネル情報と、前記選択関数により求めた選択関数出力との相関を計算し、前記相関計算部が求めた相関係数と閾値とを比較することにより、前記暗号装置の不正解読に対する耐性を評価するサイドチャネル評価方法において、評価時に確認の対象となる全選択関数を抽出する全選択関数抽出ステップと、前記全選択関数の中から、指定サイズ未満の選択関数を、前記不正解読に対する耐性の評価に使用する関数として抽出する使用選択関数抽出ステップとを備えたことを要旨とする。
【発明の効果】
【００１３】
本発明によれば、暗号装置の不正解読に対する耐性評価にかかる時間を短時間化することができる。
【図面の簡単な説明】
【００１４】
【図１】一実施形態のAES−128の中間値記号の定義を示す説明図。
【図２】ループ型構造の暗号装置の概要図。
【図３】サイドチャネル評価装置の構成図。
【図４】SubBytes変換の概要を示すモデル図。
【図５】別のGF(256)上で逆元演算を行うSubBytes変換の概要を示すモデル図。
【図６】AES−128における選択関数の種類と数を示す表。
【図７】部分鍵の推測バイト数と計算可能な中間値バイトとの関係を示す表。
【図８】ラウンド関数入力２値間のハミング距離を導出するときの概念図。
【図９】ラウンド関数入力とSubBytes変換出力との間のハミング距離を導出するときの概念図。
【図１０】中間値２値のハミング距離を計算するときの概念図。
【図１１】計算量削減後のAES−128における選択関数の種類と数を示す表。
【図１２】サイドチャネル攻撃に対する耐性評価時に実行されるフローチャート。
【発明を実施するための形態】
【００１５】
以下、本発明のサイドチャネル評価装置及びサイドチャネル評価方法を、解析手法としてCPA（Correlation Power Analysis：相関電力解析）に具体化した一実施形態を図１〜図１２に従って説明する。CPAは、暗号機能が動作する際の内部データ値に依存して消費電力値が変動する脆弱性（依存関係）を抽出する解析手法である。
【００１６】
［AES（Advanced Encryption Standard）の概要］
図１に示すように、暗号のブロックサイズが128ビットのAES（以降、AES−128と記す）は、SubBytes（バイト毎の非線形変換）と、ShiftRows（バイト単位の入れ替え）と、MixColumns（４バイト単位の線形変換）と、AddRoundKey（ラウンド鍵との排他的論理和）との４種類の変換で構成されるラウンド関数による変換を、１０ラウンド繰り返すことで、平文を暗号文に変換する。但し、１ラウンド目のラウンド関数変換前にもAddRoundKeyが行われ、１０ラウンド目のラウンド関数ではMixColumns変換を行わない。AddRoundKeyで用いるラウンド鍵は128ビットの秘密鍵から計算される値であり、この計算を行う関数は一般的に鍵スケジューラと呼ばれている。
【００１７】
本例のCPAの場合、暗号化の途中で生成される中間値、つまりラウンド関数内部の変換処理入出力データに着目して解析を行う。この各中間値データは、図１に示すように定義される。例えば、平文バイトをＰ[ｊ]として、ｊ＝０をMSB側バイトとし、ｊ＝１５をLSB側バイトとする。同様に暗号文をＣ[ｊ]とし、ｉラウンド目のラウンド関数への入力をＲｉ[ｊ]とする。ここで、ラウンド数ｉはｉ＝１〜１０とする。このｉラウンド目のラウンド関数内で行われるSubBytes変換出力バイトをＳｉ[ｊ]とする。ShiftRows変換出力は、SubBytes変換出力のバイト順序が入れ替わるのみで値は変わらない。Ｓｉ[ｊ]と同様に、MixColumns変換出力バイトをＭｉ[ｊ]とする。但し、１０ラウンド目ではMixColumnsが行われないため、Ｍ10[ｊ]は存在しない。また、暗号化初期に行われるAddRoundKeyで用いる16バイトの鍵（秘密鍵と等価）をＫ[0]〜Ｋ[15]とし、１ラウンド目のAddRoundKeyで用いるラウンド鍵をＫ[16]〜Ｋ[31]とし、同様にｉラウンド目のラウンド鍵のｊバイト目をＫ[16・ｉ＋ｊ]とする。
【００１８】
［CPAの概要］
一般的な論理回路の場合、LSIにおけるレジスタの遷移ハミング距離と消費電力との間には、線形相関があることが多い。遷移ハミング距離は、レジスタの値がある値に切り替わる際に、レジスタがビット反転した数に相当する。CPAは、推測した遷移ハミング距離と消費電力との間のピアソン相関計数の大きさで、推測の正しさを判断する解析手法である。
【００１９】
図２にCPAの解析例を示す。同図に示すように、ループ型構造で実装されたAES−128の最終段において、レジスタは中間データＲ10[ｊ]から暗号文Ｃ[ｊ]に遷移する。このＲ10[ｊ]の最上位バイトＲ10[0]は、暗号文バイトＣ[0]とラウンド鍵バイトＫ[160]とを用いて、次式(1)により計算可能である。なお、式(1)中の「Ｓ−１」は逆SubBytes変換を表し、「円中に＋の記号」はXOR処理を表し、「２：１」はセレクタの２入力１出力を表す。
【００２０】
【数１】
2014007705.tif 000003
従って、例えば暗号文が入手可能であると仮定すると、Ｋ[160]の値（秘密鍵の値）を推測することで、レジスタ１バイト分の遷移ハミング距離の推測値が計算できる。このハミング距離の計算を行う関数は、一般的に選択関数と呼ばれている。Ｋ[160]の推測値をパラメータ「ｋ」で表したとき、本例における選択関数の出力Ｈｋは次式(2)で表される。なお、式(2)中のHD(A，B)はAとBとの間のハミング距離を計算する関数とし、HW(A)はハミング重みを計算する関数とする。
【００２１】
【数２】
2014007705.tif 000004
ここで、Ｎ回の暗号処理時の暗号文と消費電力とを測定したとき、ｎ番目のサンプルにおける暗号文バイトＣ[0]を式(2)に入力した際に得られる出力をＨk,nとする。同様に、ｎ番目のサンプルにおける消費電力値をＷｎとする。このとき、次式(3)で計算されるピアソン相関係数ρが最大値となる推測値「ｋ」が、Ｋ[160]の真の値である可能性が高い。
【００２２】
【数３】
2014007705.tif 000005
式(3)の消費電力Ｗｎは、レジスタの値が遷移する際の消費電力値としている。従って、解析対象とする電力消費が発生する時刻が既知であることを仮定している。しかし、レジスタの値が遷移する時刻の特定が困難な場合には、時間波形Ｗt,nで解析を行うことで、計算量の増加と引き換えに、この条件を緩和することができる。この場合、評価値であるピアソン相関係数ρは、次式(4)により計算される。
【００２３】
【数４】
2014007705.tif 000006
[選択関数の説明]
前述のCPAの例では、ループ型構造に起因した選択関数を用いて説明した。このように、例えばLSI設計者が自ら設計したLSIを評価する場合など、予めLSIの実装情報を知っていれば、この実装情報を用いることで適切な選択関数を選ぶことができる。従って、実装情報が入手可能な条件下では、解析が成立する可能性のある選択関数のみをピックアップして評価すればよい。
【００２４】
一方、実装情報がない場合には、適切な選択関数を選ぶことができないので、安全性を評価するためには、全ての選択関数で解析が成立しないことを確認しなくてはならない。この選択関数の種類をｈとし、このｈに推測部分鍵ｋを入力したときのｎサンプル目の出力をＨh,k,nとする。このとき、式(5)で計算されるρ(h，k)や、式(6)で導出されるρ(h，k，t)は、全てのｈにおいて評価する必要がある。部分鍵ｋは、選択関数ごとに鍵値が異なり、評価対象となる選択関数に応じてバイト数も異なる。
【００２５】
【数５】
2014007705.tif 000007
【００２６】
【数６】
2014007705.tif 000008
[サイドチャネル評価装置の構成]
本例の場合、評価処理時の計算量削減として、真の部分鍵ｋ＊を「既知の値」と仮定して、式(5)や式(6)のパラメータ「ｋ」を固定値化した条件下で評価を実施する。この条件下での評価関数は、次式(7)，(8)となる。これら式からも分かるように、パラメータ「ｋ」をなくした分、式(5)，(6)と比較して、計算量を削減できることが分かる。
【００２７】
【数７】
2014007705.tif 000009
【００２８】
【数８】
2014007705.tif 000010
図３に、サイドチャネル評価装置１の構成を示す。LSI等の暗号装置２には、暗号装置２が入出力する各種データを測定する測定部３が接続されている。測定部３は、暗号装置２が入出力する暗号データＤenを取得するとともに、暗号装置２から漏洩するサイドチャネル情報Ｄscを測定する。暗号データＤenには、例えば平文、暗号文等がある。また、サイドチャネル情報Ｄscには、例えば消費電力、漏洩電磁波、音、温度等がある。測定部３は、取得した暗号データＤen及びサイドチャネル情報Ｄscをサイドチャネル評価装置１に出力する。
【００２９】
サイドチャネル評価装置１には、測定部３からサイドチャネル情報Ｄscを入力するサイドチャネル情報入力部４と、測定部３から暗号データＤenを入力する暗号データ入力部５と、暗号装置２から真の暗号鍵Ｋtrを入力する暗号鍵入力部６とが設けられている。本例の場合、安全性評価を行う作業者は評価対象の暗号鍵を知っていると仮定しているので、暗号装置２に書き込まれた真の暗号鍵Ｋtrの値を暗号鍵入力部６に入力することが可能である。なお、暗号鍵入力部６が演算部に相当する。
【００３０】
サイドチャネル評価装置１には、使用する選択関数を選択する選択関数制御部７と、各選択関数に必要な部分鍵ｋを計算する部分鍵計算部８と、評価時に使用する選択関数が複数格納された選択関数データベース９とが設けられている。選択関数制御部７は、選択関数データベース９を参照して、その時々に必要とする選択関数を選び出す。部分鍵計算部８は、真の暗号鍵Ｋtrを基に部分鍵ｋを計算し、評価中の選択関数に必要な部分鍵ｋを適宜出力する。選択関数データベース９には、評価時に必要とされる選択関数が全て登録されている。なお、選択関数制御部７及び部分鍵計算部８が演算部に相当する。
【００３１】
選択関数制御部７により選ばれた選択関数は、暗号データＤen及び部分鍵ｋを入力とし、暗号化の中間データのハミング重みやハミング距離を計算して出力する。選択関数の計算は、選択関数が指定される度に実行される。
【００３２】
サイドチャネル評価装置１には、サイドチャネル情報Ｄsc及び選択関数出力Ｈｋとの相関を計算する相関計算部１０と、相関計算部１０が計算した相関係数（相関値）ρと閾値ρｋとを比較する比較部１１と、相関係数ρが閾値ρｋ以上となる選択関数を出力する出力部１２とが設けられている。相関計算部１０は、サイドチャネル情報入力部４からサイドチャネル情報Ｄscを入力し、これと選択関数出力とを比較することにより相関係数ρを計算する。相関係数ρが閾値ρｋ以上の場合、この相関係数ρが出力された選択関数は秘密情報の解析に利用される可能性があるので、この選択関数を出力部１２により出力して作業者に通知する。なお、比較部１１及び出力部１２が比較出力部に相当する。
【００３３】
サイドチャネル評価装置１には、脆弱性評価の評価レベルを作業者が自由に切り替え設定可能とする評価レベル設定部１３が設けられている。評価レベル設定部１３により評価レベルが「高い側」に設定されると、選択関数データベース９から選択関数が多く選択されて、評価が実行される。一方、評価レベル設定部１３により評価レベルが「低い側」に設定されると、選択関数データベース９から選び出される選択関数が少なく設定されて、評価が簡素化される。
【００３４】
[選択関数の種類の考察]
ここでは、想定されるAES−128の選択関数について考察する。
（I）レジスタの遷移ハミング距離モデルに基づく選択関数
本節では、［CPAの概要］の節で挙げた例での選択関数と同様に、レジスタの遷移ハミング距離と消費電力との間に線形相関があると仮定する消費電力モデルを用いた選択関数を検討する。このモデルでは、レジスタの遷移前後のデータ２値により、消費電力を推定する。［CPAの概要］の節で挙げた例の場合、Ｒ10[0]とＣ[0]がこの２値に相当する。
【００３５】
このモデルに基づく選択関数は、レジスタにどのような値が保持されるかによって決定される。即ち、保持され得る中間値全てを考えることで、全ての選択関数を抽出できる。AES−128は、バイト単位で演算を行うため、レジスタに保持される値もバイト単位で検討することが妥当である。本節では、図１で定義した暗号化中間値バイトＲｉ[ｊ]，Ｓｉ[ｊ]，Ｍｉ[ｊ]及び平文バイトＰ[ｊ]、暗号バイトＣ[ｊ]のいずれかがレジスタに保持されるものと仮定する。
【００３６】
（I−１）平文・暗号文バイトを含む選択関数
平文バイトＰ[ｊ]や暗号文バイトＣ[ｊ]のバイト間のハミング距離を出力する選択関数では、式(3)のパラメータ「ｋ」の要素がないため、暗号鍵解析には使えない。しかし、これらのバイトと暗号化中間値バイトＲｉ[ｊ]，Ｓｉ[ｊ]，Ｍｉ[ｊ]とのハミング距離は、［CPAの概要］の節で挙げた例のように解析に用いることができる。
【００３７】
（I−２）平文・暗号文バイトを含まない選択関数
暗号化中間値バイトＲｉ[ｊ]，Ｓｉ[ｊ]，Ｍｉ[ｊ]のうち、２値のハミング距離を出力する選択関数も解析に用いることができる。
【００３８】
（I−３）レジスタのゼロクリアを考慮した選択関数
レジスタ遷移前後のデータは必ずしも暗号化データとは限らず、例えばマイクロコンピュータ等では遷移毎にゼロクリアが行われる場合が考えられる。この場合のレジスタの遷移ハミング距離は、暗号データ１値のハミング重みと一致する。なお、この場合、データのハミング重みとも分類可能だが、本項ではこの場合もレジスタの遷移ハミング距離モデルと分類する。
【００３９】
（I−４）異なる暗号処理のハミング距離選択関数
レジスタ値が遷移する際、その前後の値は必ずしも同一の暗号処理時のものとは限らない。例えば、レジスタの値が平文Ａを暗号化する際の中間値データから、平文Ｂを暗号化する際の中間値データに遷移する場合も考えられる。このような平文Ａと平文Ｂとの関係は、実装方法に依存して様々な場合が存在し、例えば「連続して暗号化を行う２つの平文データ」である場合等が挙げられる。
【００４０】
この場合の選択関数として、異なる種類の中間値データの間のハミング距離（例えば、平文Ａから計算したＳ１[５]と、平文Ｂから計算したＳ１[９]との間のハミング距離等）を出力とする選択関数が存在する。（I−２）のように同一の平文から計算する場合のＳ１[５]とＳ１[９]とのハミング距離は１通りである。しかし、異なる平文を考慮する場合、平文Ａから計算したＳ１[５]と平文Ｂから計算したＳ１[９]とに加え、平文Ａから計算したＳ１[９]と平文Ｂから計算したＳ１[５]とのハミング距離を出力とする選択関数も存在する。
【００４１】
また、同じ種類の中間値データ（例えば、平文Ａから計算したＳ１[５]と平文Ｂから計算したＳ１[５]とは異なる値である）のハミング距離を出力とする選択関数も、解析が成立する可能性がある。
【００４２】
（II）非線形回路の遷移確率の偏りを利用した選択関数
Iで挙げた選択関数の他に、非線形回路の出力遷移確率の偏りを利用した選択関数も存在する。例えば、非線形回路である２入力AND回路にランダムな値を順次入力したとき、出力が遷移する確率は平均3／8である。ここで、この出力値のある時刻の値が「１」である場合に限定すると、前後の時刻と出力値とが異なる確率、つまり出力遷移確率は3／4となる。また、「０」である場合には、出力遷移確率は1／4となる。従って、出力値で消費電力を分類した場合に、その平均値の間に差分が生じる。この偏りは、ある時刻の入力１ビットで分類した場合にも生じ、同様な平均消費電力差分を生じる。
【００４３】
AES−128のデータ変換仕様において、非線形回路が用いられる可能性があるのはSubBytes変換のみである。このSubBytes変換はバイト単位での全単射変換であり、図４に示すようにガロア体GF(256)上の逆元変換とaffine変換とで構成される。affine変換は線形変換であるため、逆元変換部のみが非線形変換を行う。従って、この逆元変換の入出力ビット値は非線形回路の入出力に接続されている可能性が高く、これらビットを出力とする選択関数では、解析が成立する可能性があると考えられる。
【００４４】
このGF(256)上の逆元変換は、図５に示すように線形写像δ（及び逆写像δ−１）を用いて別のGF(256)上の逆元変換とすることができる。このとき、特定のGF(256)は小規模な回路で逆元変換を構成できることが知られており、この性質を利用したSubBytes変換回路が知られている。従って、逆元変換の入出力ビットは、実装方法に依存して変化する。
【００４５】
特定のGF(256)への線形写像は複数種類存在し、さらに前述のような回路規模削減が可能なGF(256)は数多く存在する。従って、SubBytes回路の実装時には、これらのGF(256)上で逆元演算回路を構成する可能性を考慮すべきである。しかし、解析時に全ての線形写像を考慮する場合、線形写像の数だけ選択関数が増加することになってしまう。そこで、本節では、逆元変換回路の入出力ビット値を選択関数とするとき、そのビット位置までは考慮する必要が無いことに着目し、選択関数の総数を検討した。
【００４６】
任意の線形写像で変換した各ビットは、１バイトの線形マスク値をΓとしてΓ≠０の255値でマスクした値の奇数パリティビット255値のいずれかと必ず一致する。例えば、式(11)の左側のδで写像したときの逆元変換への入力のMSBは、Γ＝A0(HEX)でマスクしたときのパリティと一致し、同様にLSBはΓ＝43(HEX)のときと同値である。このように、真の逆元変換回路への入力８ビットは、必ずこの255種の選択関数出力に含まれる。さらに、逆元変換回路内部において線形変換が行われる実装の場合、この線形変換も考慮できる。
【００４７】
同様に、逆元変換の出力をSubBytes出力バイトから計算する場合には、affine変換において行われるベクトル加算の逆変換、つまり63(HEX)との排他的論理和を行った上で、同様に線形マスク値でマスクしたときのパリティを計算する。これらの選択関数は次式(9)〜(11)で表される。
【００４８】
【数９】
2014007705.tif 000011
【００４９】
【数１０】
2014007705.tif 000012
【００５０】
【数１１】
2014007705.tif 000013
（III）ZV−DPAを解析手法とする選択関数
SubBytes変換への入力バイトが「00(HEX)」の場合とそれ以外とを分類する解析ZV−DPA (Zero Value Diffetential Power Analysis)が周知である。逆元変換への入力バイトが「00(HEX)」である場合、「00(HEX)」は、どのGF(256)上においても逆元が「00(HEX)」であり、内部論理回路の入出力ビットも全て「０」となることから、特異な電力消費挙動となる。Zero Value DPAの選択関数は、逆元変換を行うGF(256)に依存せず、次式(12)で表される。
【００５１】
【数１２】
2014007705.tif 000014
図６に、（I）〜（III）で抽出した選択関数の種類を示す。これら全ての選択関数について、式(7)や式(8)の評価式で計算した際に、相関を生じる選択関数が存在しないLSIは電力解析攻撃に対して充分な耐性があると言える。なお、[選択関数の種類の考察]の章で述べた内容が全選択関数抽出ステップに相当する。
【００５２】
［計算量削減の検討］
（I）はじめに
［CPAの概要］の節で挙げた例で用いた選択関数は、ラウンド鍵の一部（即ち、部分鍵ｋ）であるＫ[160]の１バイトのみ推測し、その推測候補毎に計算したピアソン相関係数ρを比較した。即ち、解析に必要な計算量は、１バイト（２８個）の鍵候補毎にピアソン相関係数ρを導出する計算量となる。一方で、鍵候補の数、つまり部分鍵ｋのサイズは選択関数毎に異なる。例えば、選択関数に入力する部分鍵ｋのサイズが５バイトの場合には、２４０個の鍵候補毎に計算が必要である。従って、図６の表で示す全ての選択関数に対して、［CPAの概要］の節で挙げた例で述べたものと同じ解析を試みることは現実的に困難である。
【００５３】
（II）部分鍵サイズによる選択関数の分類
本節では、図６の表で挙げたAES−128における全ての選択関数を、評価すべき選択関数と選択対象外とすることが可能な選択関数とに分類することを検討する。
【００５４】
（II−１）評価すべき選択関数の条件定義
攻撃者が不正解読を試みる場合、部分鍵ｋの候補毎に相関関数を計算する必要があるため、部分鍵サイズが大きくなると攻撃は困難になり、16バイトの部分鍵ｋを推測する場合は、暗号鍵の全数探索の方が効率の良い攻撃方法となる。そこで、本節では、16バイト以上の部分鍵ｋを必要とする選択関数を、評価対象から除外する場合を例として説明する。
【００５５】
（II−２）暗号化中間値バイト及び部分鍵サイズについて
選択関数に入力する部分鍵ｋは、暗号化中間値バイトを計算するために必要となる。そこで、まず各中間値バイトを導出するために必要な部分鍵ｋの推測バイト数を探索した。図７に、その結果を示す。同図に示されるように、部分鍵ｋの推測バイト数が「０」のときは、計算可能な中間値バイトとして、単に実測のＰ[ｊ]及びＣ[ｊ]のみ計算可能であり、部分鍵ｋの推測バイト数が変わるに連れて、計算可能な中間値バイトが切り換わることが分かる。
【００５６】
（II−３）評価すべきレジスタのハミング距離モデルに基づく選択関数の探索
本節では、[選択関数の種類の考察]で説明したレジスタのハミング距離モデルに基づく選択関数のうち、部分鍵サイズが16バイト未満のものを探索する。
【００５７】
まず、［選択関数の種類の考察］の（I−３）で説明した特定１値の中間値バイトのハミング重みを出力とする選択関数から探索する。この種類の選択関数における部分鍵サイズは、選択関数によってハミング重みを計算する中間値を導出するために必要な部分鍵ｋの推測バイト数と一致する。従って、図７の表から、11種類の中間値が計算可能なことが分かり、それぞれのバイト位置（ｊ＝0〜15）を考慮すると、「176」種の選択関数が、評価すべき選択関数であることが分かる。
【００５８】
続いて、［選択関数の種類の考察］の（I−１）及び（I−２）で説明した同一平文を暗号化する際の暗号化データ間のハミング距離を出力とする選択関数の場合を探索する。この場合、暗号化データ２値の両方を導出するために必要な部分鍵ｋの推測バイト数で選択関数を分類する必要がある。例えば、図８に示すように、Ｒ10[11]とＲ10[15]とのハミング距離を導出する場合、Ｋ[175]を推測部分鍵バイトとして暗号文バイトＣ[15]からＲ10[11]を計算し、Ｋ[163]を推測部分鍵バイトとして暗号文バイトＣ[3]からＲ10[15]を計算する。即ち、各々の中間値を計算する際の部分鍵ｋの推測バイト数の合計となる。
【００５９】
一方、Ｓ10[15]とＲ10[15]とのハミング距離を導出する場合を考える。この場合、図９に示すように、Ｋ[163]を推測部分鍵バイトとしてＳ10[15]を計算し、さらにそのＳ10[15]の逆SubBytesへ間を行うことでＲ10[15]が計算できる。即ち、各々の中間値を計算する際の部分鍵ｋの推測バイト数が、そのまま合計となる。
【００６０】
以上のように、中間値２値のハミング距離を計算する場合には、その組み合わせに応じて必要となる部分鍵ｋの推測バイト数が変動する。また、この他にも鍵スケジューラの特性に依存した要因も存在する。例えば、Ｓ10[1]とＭ9[13]とのハミング距離を求める場合における部分鍵ｋの推測バイト数は、図１０に示すように、Ｋ[157]，Ｋ[169]，Ｋ[173]の３バイトである。
【００６１】
この３バイトの部分鍵バイト間には、鍵スケジューラの仕様上、次式(13)で示す関係があるため、実質的な部分鍵ｋの推測バイト数は２バイトと考えることができる。
【００６２】
【数１３】
2014007705.tif 000015
以上の検討結果を考慮して、部分鍵ｋの推測バイト数が１６バイト未満となるAES−128の中間値の組み合わせを探索したところ、20447組が見つかった。従って、特定２値のハミング距離を出力とする選択関数は、「20447」種である。
【００６３】
最後に、［選択関数の種類の考察］の（I−４）の選択関数の場合を考える。これは、［選択関数の種類の考察］の（I−４）と同様の方法を用いて、20447×2＋176＝「41070」種と計算できる。
【００６４】
（II−４）評価すべき非線形回路の遷移確率の偏りを利用した選択関数の探索
本項では、［選択関数の種類の考察］の（II）で説明した非線形回路の遷移確率の偏りを利用した選択関数のうち、部分鍵サイズが１６バイト未満のものを探索する。この種類の選択関数の部分鍵サイズは、Ｒｉ[ｊ]，Ｓｉ[ｊ]の各バイトを導出するために必要な部分鍵サイズと等しいため、図７の表により、ｉ＝1，2，9，10の場合の選択関数が、評価すべき選択関数である。従って、これら選択関数の数は、Ｒｉ[ｊ]及びＳｉ[ｊ]のうち、ｉ＝1，2，9，10を満たす数の総和とΓの候補数255の積であり、「32640」種である。
【００６５】
（II−５）評価すべきZV−DPAの選択関数の探索
本項では、［選択関数の種類の考察］の（III）で説明したZV−DPAの選択関数のうち、部分鍵サイズが１６バイト未満のものを探索する。この種類の選択関数の部分鍵サイズは、Ｓｉ[ｊ]の各バイトを導出するために必要な部分鍵サイズと等しいため、図７の表により、ｉ＝1，2，9，10の場合の選択関数が、評価すべき選択関数である。従って、これら選択関数の数は、Ｒｉ[ｊ]及びＳｉ[ｊ]のうち、ｉ＝1，2，9，10を満たす数の総和であり、「64」種である。
【００６６】
（II−６）評価すべき選択関数の数
本節の（II−１）〜（II−５）の検討で抽出したAES−128における評価すべき選択関数の種類及び数を図１１に示す。同図に示される「94397」種の選択関数は、図６に示される種類の選択関数の総数より少なくなっていることが確認され、計算負荷が削減されたと言える。本例の場合、本節の（II−１）〜（II−５）の検討で抽出された選択関数が選択関数データベース９に登録されている。なお、［計算量削減の検討］の章で述べた内容が使用選択関数抽出ステップに相当する。
【００６７】
次に、本例のサイドチャネル評価装置１の動作を、図１２のフローチャートを用いて説明する。
ステップ１０１において、サイドチャネル情報入力部４は、測定部３が測定した実測のサイドチャネル情報Ｄscを、測定部３から入力する。
【００６８】
ステップ１０２において、暗号データ入力部５は、測定部３が測定した暗号データＤenを、測定部３から入力する。
ステップ１０３において、暗号鍵入力部６は、暗号装置２に書き込まれた真の暗号鍵Ｋtrを、暗号装置２から入力する。即ち、サイドチャネル攻撃に対する安全性評価を行う作業者は暗号装置２の暗号鍵を知っていると仮定しているので、この暗号鍵を暗号装置２からサイドチャネル評価装置１に入力する。暗号鍵入力部６は、取得した真の暗号鍵Ｋtrを部分鍵計算部８に出力する。
【００６９】
ステップ１０４において、部分鍵計算部８は、暗号鍵入力部６から入力した真の暗号鍵Ｋtrを基に、各選択関数に必要な部分鍵ｋを計算する。部分鍵計算部８は、選択関数データベース９を参照することにより、選択関数データベース９内にある選択関数を把握し、これら選択関数に必要な部分鍵ｋをまとめて計算しておく。部分鍵ｋのビット数、つまり部分鍵ｋのサイズは、各選択関数に応じて異なる。
【００７０】
ステップ１０５において、選択関数制御部７は、選択関数データベース９を参照することにより、評価を行う選択関数を選択する。なお、選択関数の評価の順番や、どの選択関数を選び出すのかは、評価レベル設定部１３で選択されたレベルに応じて決まる。この評価レベルには、各選択関数に応じて異なる部分鍵ｋのサイズや、［選択関数の種類の考察］の節で挙げた選択関数の種類が用いられる。また、選択関数制御部７は、選択した選択関数に必要な部分鍵ｋを、部分鍵計算部８から抽出して選択関数に入力する。
【００７１】
ステップ１０６において、選択関数制御部７は、暗号データ入力部５で入力した暗号データＤenと、選択関数制御部７により指定された部分鍵ｋとを用い、選び出した選択関数（計算方法）で計算を実行する。この計算結果である選択関数出力Ｈｋは、相関計算部１０に入力される。
【００７２】
ステップ１０７において、相関計算部１０は、サイドチャネル情報入力部４で入力したサイドチャネル情報と、選択関数の計算結果である選択関数出力Ｈｋとの間の相関を計算する。相関計算部１０は、計算した相関係数ρを比較部１１に出力する。
【００７３】
ステップ１０８において、比較部１１は、相関計算部１０から取得した相関係数ρと閾値ρｋとを比較する。このとき、相関係数ρが閾値ρｋ以上であるならば、この相関係数ρを導き出した選択関数は、秘密情報の解析に利用される可能性がある。よって、比較部１１は、相関係数ρが閾値ρｋ以上となると、この相関係数ρを計算した選択関数を出力部１２に通知する。
【００７４】
ステップ１０９において、出力部１２は、比較部１１から通知を受けた選択関数をディスプレイに表示するなどして、秘密情報の解析に利用される可能性のある選択関数をユーザに通知する。これにより、作業者は、秘密情報の解析に利用されるおそれのある選択関数が何であるのかが分かる。
【００７５】
ステップ１１０において、選択関数制御部７は、選択関数データベース９内の全ての選択関数で評価が終了したか否かを判断する。このとき、未評価の選択関数が存在すれば、ステップ１０５に戻って他の選択関数の評価を同様に行い、全ての選択関数の評価が終了していれば、処理を終了する。
【００７６】
本実施形態の構成によれば、以下に記載の効果を得ることができる。
（１）AES−128の全選択関数のうち、部分鍵ｋが１６バイト以上の選択関数は攻撃が困難な関数として評価対象から除外し、部分鍵ｋが１６バイト未満の選択関数を、評価を行うべき選択関数として設定する。このため、評価時に用いる選択関数を絞り込んだので、評価時に計算しなくてはならない選択関数の数が少なく済む。このように、評価を行う選択関数を制限すれば、その分、安全性評価にかかる時間を短く抑えることができる。
【００７７】
（２）［選択関数の種類の考察］の節の（I）〜（III）で説明したように、AES−128において確認すべき全選択関数を抽出し、その中から部分鍵ｋが１６バイト未満の選択関数を、評価を行うべき選択関数として抽出する。よって、選択関数の抽出を行うにあたり、AES−128で想定し得る全選択関数を確認するようにしたので、使用対象とする選択関数を、好適に選び出すことができる。
【００７８】
（３）部分鍵ｋが１６バイト以上の選択関数は、暗号鍵の全数探索の方が効率の良い攻撃方法となるので、攻撃に対して耐性の高い関数であると言える。よって、安全性評価を行うにあたり、部分鍵ｋが１６バイト以上の選択関数を評価対象から除外するようにしても、評価の精度という点において何ら問題はない。
【００７９】
（４）暗号装置２に非線形回路が備わる場合、非線形回路の出力遷移確率の偏りを利用した選択関数も存在する。この場合、［選択関数の種類の考察］の節の（II）で説明したように、式(9)〜(11)を用いて計算を行えば、この選択関数も精度よく抽出することができる。
【００８０】
（５）ガロア体上のべき乗変換とaffine変換を用いる暗号アルゴリズムであれば、非線形回路の遷移確率の偏りを利用した選択関数による評価が有効である。例えば、AESのSubBytesと同等の変換として、共通鍵暗号アルゴリズムCamelliaにおけるＳ１変換が挙げられる。このＳ１変換の入力ビット列Ｓ１inに対してベクトルＣ５の加算と線形変換とを行う。Affine変換を施したものが、べき乗変換の入力ビットである。即ち、次式(14)で表される選択関数が好適である。
【００８１】
【数１４】
2014007705.tif 000016
なお、実施形態はこれまでに述べた構成に限らず、以下の態様に変更してもよい。
【００８２】
・選択関数の絞り込みの閾値は、１６バイトに限らず、評価精度を確保できるのであれば、これ以外の値を採用してもよい。
・選択関数の絞り込みの閾値は、固定値に限らず、例えば評価レベル設定部１３等を用いて切り替えることが可能な可変値としてもよい。
【００８３】
・部分鍵計算部８は、必要とする部分鍵ｋを一度に計算することに限らず、例えば評価を行う選択関数が選択される度に、都度計算を実施する形式をとってもよい。
・サイドチャネル情報Ｄscは、暗号装置２から漏洩する情報であれば、種々のものが採用可能である。
【００８４】
・暗号データＤenは、選択関数の入力となり得るデータであれば、種々のものが採用可能である。
・真の暗号鍵Ｋtrのビット数は、他の値に適宜変更してもよい。
【００８５】
・暗号の種類は、AESに代えて、DES（Data Encryption Standard）等の他の暗号方式を採用してもよい。
・選択関数は、実測したサイドチャネル情報Ｄscとの相関を求めることができる出力を出せるものであれば、種々の関数が採用可能である。
【００８６】
・安全性評価のレベル設定は、例えば使用する選択関数を作業者自らが１つひとつ適宜選択する方式でもよい。また、評価レベルを高〜低レベルの間で多段階（複数の選択関数群）に設定可能とし、選択されたレベル毎に、使用される選択関数が設定されてもよい。
【００８７】
・サイドチャネル評価装置１は、測定部３を一体に組み込んだ装置でもよい。
・選択関数データベース９に書き込まれる選択関数は、適宜変更することが可能である。
【００８８】
・AESは、暗号鍵サイズが196ビットや256ビットのものを採用してもよい。
・解析手法は、MIA(Mutual Information Analysis：相互情報量解析)や、EMA(ElectroMannetic Analysis：電磁波解析)等を採用することも可能である。
【００８９】
・サイドチャネル評価装置１は、例えば特定の選択関数に対して暗号鍵の候補毎に暗号鍵を解析する解析を行い、解読できたか否かを評価する装置でもよい。この場合、暗号鍵候補毎に相関を計算し、最大の相関を示す暗号鍵を出力する。このように、サイドチャネル評価装置１は、種々のシステム構成のものが採用可能である。
【００９０】
次に、上記実施形態及び別例から把握できる技術的思想について、それらの効果とともに以下に追記する。
（イ）暗号装置から漏洩するサイドチャネル情報の計算に用いる選択関数を複数登録した選択関数データベースから、評価を行う前記選択関数を選び出し、暗号鍵の一部である部分鍵と、暗号データ入力部で入力した暗号データとを用いて、前記選択関数により計算上のサイドチャネル情報を求め、サイドチャネル情報入力部で入力した実測のサイドチャネル情報と、前記選択関数により求めた選択関数出力との相関を計算し、前記相関計算部が求めた相関係数と閾値とを比較することにより、前記暗号装置の不正解読に対する耐性を評価するサイドチャネル評価プログラムにおいて、評価時に確認の対象となる全選択関数を抽出する全選択関数抽出ステップと、前記全選択関数の中から、指定サイズ未満の選択関数を、前記不正解読に対する耐性の評価に使用する関数として抽出する使用選択関数抽出ステップとをコンピュータに実行させることを特徴とするサイドチャネル評価プログラム。
【符号の説明】
【００９１】
１…サイドチャネル評価装置、２…暗号装置、４…サイドチャネル情報入力部、５…暗号データ入力部、６…演算部を構成する暗号鍵入力部、７…演算部を構成する選択関数制御部、８…演算部を構成する部分鍵計算部、９…選択関数データベース、１０…相関計算部、１１…比較出力部を構成する比較部、１２…比較出力部を構成する出力部、Ｄsc…サイドチャネル情報、Ｄen…暗号データ、Ｋtr…暗号鍵、ｋ…部分鍵、Ｈｋ…選択関数出力、ρ…ピアソン相関係数、ρｋ…閾値、δ…線形写像。
【図１】
2014007705.tif 000017
【図２】
2014007705.tif 000018
【図３】
2014007705.tif 000019
【図４】
2014007705.tif 000020
【図５】
2014007705.tif 000021
【図６】
2014007705.tif 000022
【図７】
2014007705.tif 000023
【図８】
2014007705.tif 000024
【図９】
2014007705.tif 000025
【図１０】
2014007705.tif 000026
【図１１】
2014007705.tif 000027
【図１２】
2014007705.tif 000028