(57)【要約】【課題】暗号装置の不正解読に対する耐性評価にかかる時間を短時間化することができるサイドチャネル評価装置及びサイドチャネル評価方法を提供する。【解決手段】暗号装置２の安全性評価を行う作業者は暗号装置２の暗号鍵を知っているものと仮定し、真の暗号鍵Ｋtrをサイドチャネル評価装置１の暗号鍵入力部６に入力する。部分鍵計算部８は、真の暗号鍵Ｋtrから、各選択関数に必要な部分鍵ｋを計算する。選択関数制御部７は、評価を行う選択関数を選択関数データベース９から選択し、選び出した選択関数に部分鍵ｋと実測した暗号データＤenとを入力して計算を実行させる。相関計算部１０は、実測したサイドチャネル情報Ｄscと選択関数出力Ｈｋとの相関を計算する。このとき、相関係数ρが閾値ρｋ以上となれば、この選択関数が出力部１２から出力される。以上の評価を、選択関数データベース９内の各選択関数で実行する。【選択図】図３
2014006484.tif 000002
【特許請求の範囲】
【請求項１】
暗号装置の不正解読に対する耐性を評価するサイドチャネル評価装置において、
前記暗号装置から漏洩するサイドチャネル情報を入力するサイドチャネル情報入力部と、
前記暗号装置で取り扱う暗号データを入力する暗号データ入力部と、
前記暗号装置に書き込まれた真の暗号鍵を入力する暗号鍵入力部と、
前記サイドチャネル情報の計算に用いる選択関数に必要な部分鍵を、前記真の暗号鍵から計算する部分鍵計算部と、
複数の前記選択関数が登録された選択関数データベースを参照することにより、前記評価に必要な選択関数を選択し、当該選択関数により計算上のサイドチャネル情報を求める選択関数制御部と、
前記サイドチャネル情報入力部で入力した前記サイドチャネル情報と、前記選択関数により求めた選択関数出力との相関を計算する相関計算部と、
前記相関計算部が求めた相関係数と閾値とを比較し、その比較結果を出力する比較出力部と
を備えたことを特徴とするサイドチャネル評価装置。
【請求項２】
評価を行う前記選択関数を選択可能とすることにより、前記評価のレベルを設定変更することが可能な評価レベル設定部を備え、
前記選択関数制御部は、前記データベースから前記評価のレベルに応じた特定の選択関数のみを選択する
ことを特徴とする請求項１に記載のサイドチャネル評価装置。
【請求項３】
前記評価のレベルは、前記選択関数に入力する部分鍵サイズである
ことを特徴とする請求項２に記載のサイドチャネル評価装置。
【請求項４】
前記評価のレベルは、前記選択関数の種類である
ことを特徴とする請求項２に記載のサイドチャネル評価装置。
【請求項５】
暗号装置の不正解読に対する耐性を評価するサイドチャネル評価方法において、
前記暗号装置から漏洩するサイドチャネル情報を入力するサイドチャネル情報入力ステップと、
前記暗号装置で取り扱う暗号データを入力する暗号データ入力ステップと、
前記暗号装置に書き込まれた真の暗号鍵を入力する暗号鍵入力ステップと、
前記サイドチャネル情報を計算する選択関数に必要な部分鍵を、前記真の暗号鍵から計算する部分鍵計算ステップと、
複数の前記選択関数が登録された選択関数データベースを参照することにより、前記評価に必要な選択関数を選択し、当該選択関数により計算上のサイドチャネル情報を求める選択関数制御ステップと、
前記サイドチャネル情報入力ステップで入力した前記サイドチャネル情報と、前記選択関数により求めた選択関数出力との相関を計算する相関計算ステップと、
前記相関計算ステップで求めた相関係数と閾値とを比較し、その比較結果を出力する比較出力ステップと
を備えたことを特徴とするサイドチャネル評価方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路のサイドチャネル攻撃に対する耐性を評価するサイドチャネル評価装置及びサイドチャネル評価方法に関する。
【背景技術】
【０００２】
従来、暗号処理機能を搭載したLSI（Large Scale Integration）等の集積回路において、暗号回路が動作する際に発生するサイドチャネル情報を解析し、秘密情報（例えば暗号鍵等）を不正に盗み出すサイドチャネル攻撃が周知である。このような背景から、暗号処理機能を有する組み込み機器で利用するLSIには、サイドチャネル攻撃に対して充分な耐性を持つことが求められている。
【０００３】
サイドチャネル攻撃に対する耐性評価としては、例えば特許文献１に示すようなサイドチャネル評価装置を用いた方式が存在する。このサイドチャネル評価装置では、例えば平文、暗号文、暗号鍵等を入力として暗号化の中間データのハミング重みやハミング距離等を出力する選択関数に着目し、特定の選択関数に対して、暗号鍵を解読する解析を行う。そして、この選択関数出力とサイドチャネル情報との間に相関があるか否かを解析し、サイドチャネル攻撃に対する脆弱性を確認する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開２００９／０９９０８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、特許文献１は、暗号鍵の候補ごとに相関を計算し、最大の相関を示す暗号鍵候補を、不正解読される可能性のある疑わしい鍵として出力する。よって、特許文献１は、特定の選択関数に対し、複数の暗号鍵を代入してサイドチャネル攻撃に対する脆弱性を確認しなくてはならないので、複数の暗号鍵を確認する分、評価時間が相対的に長くなってしまう問題があった。
【０００６】
本発明の目的は、暗号装置の不正解読に対する耐性評価にかかる時間を短時間化することができるサイドチャネル評価装置及びサイドチャネル評価方法を提供することにある。
【課題を解決するための手段】
【０００７】
前記問題点を解決するために、本発明では、暗号装置の不正解読に対する耐性を評価するサイドチャネル評価装置において、前記暗号装置から漏洩するサイドチャネル情報を入力するサイドチャネル情報入力部と、前記暗号装置で取り扱う暗号データを入力する暗号データ入力部と、前記暗号装置に書き込まれた真の暗号鍵を入力する暗号鍵入力部と、前記サイドチャネル情報の計算に用いる選択関数に必要な部分鍵を、前記真の暗号鍵から計算する部分鍵計算部と、複数の前記選択関数が登録された選択関数データベースを参照することにより、前記評価に必要な選択関数を選択し、当該選択関数により計算上のサイドチャネル情報を求める選択関数制御部と、前記サイドチャネル情報入力部で入力した前記サイドチャネル情報と、前記選択関数により求めた選択関数出力との相関を計算する相関計算部と、前記相関計算部が求めた相関係数と閾値とを比較し、その比較結果を出力する比較出力部とを備えたことを要旨とする。
【０００８】
本発明の構成によれば、選択関数制御部は、選択関数データベースを参照して、評価を行う選択関数を選択する。部分鍵計算部は、選択された選択関数に応じた部分鍵を選択関数に入力する。選択関数は、暗号データ入力部で入力した暗号データと部分鍵とを入力とし、計算結果として選択関数出力を相関計算部に出力する。相関計算部は、入力した選択関数出力と、サイドチャネル情報入力部で入力したサイドチャネル情報との相関を計算する。比較出力部は、相関関数とその閾値とを比較し、相関関数が閾値以上のとき、この相関関数を暗号鍵が不正解読される可能性のある関数として出力する。以上の評価を、選択関数データベース内の各選択関数において実施する。
【０００９】
また、本構成の場合、安全性の評価を行う作業者は暗号装置の暗号鍵を知っているものと仮定し、暗号装置に書き込まれた真の暗号鍵をサイドチャネル評価装置に入力する。そして、この真の暗号鍵から部分鍵を計算して、耐性評価の安全性を確認する。このため、評価時に入力対象となる暗号鍵が１つで済むので、安全性の評価に際しては、使用しなければならない暗号鍵が１パターンで固定される。よって、暗号鍵を複数推測して評価を行う作業をとらずに済むので、その分、評価にかかる時間を短縮することが可能となる。
【００１０】
本発明では、評価を行う前記選択関数を選択可能とすることにより、前記評価のレベルを設定変更することが可能な評価レベル設定部を備え、前記選択関数制御部は、前記データベースから前記評価のレベルに応じた特定の選択関数のみを選択することを要旨とする。この構成によれば、暗号装置の不正解読に対する耐性評価のレベルを自由に替えることが可能となる。よって、例えば評価対象となる暗号装置によっては不要となる選択関数を除外するなど、状況に応じて、その都度必要とするレベルで耐性評価を行うことが可能となる。
【００１１】
本発明では、前記評価のレベルは、前記選択関数に入力する部分鍵サイズであることを要旨とする。この構成によれば、評価を行う選択関数を絞り込んだので、耐性評価にかかる時間の短時間化に効果が高くなる。
【００１２】
本発明では、前記評価のレベルは、前記選択関数の種類であることを要旨とする。この構成によれば、評価を行う選択関数を絞り込んだので、耐性評価にかかる時間の短時間化に効果が高くなる。
【００１３】
本発明では、暗号装置の不正解読に対する耐性を評価するサイドチャネル評価方法において、前記暗号装置から漏洩するサイドチャネル情報を入力するサイドチャネル情報入力ステップと、前記暗号装置で取り扱う暗号データを入力する暗号データ入力ステップと、前記暗号装置に書き込まれた真の暗号鍵を入力する暗号鍵入力ステップと、前記サイドチャネル情報を計算する選択関数に必要な部分鍵を、前記真の暗号鍵から計算する部分鍵計算ステップと、複数の前記選択関数が登録された選択関数データベースを参照することにより、前記評価に必要な選択関数を選択し、当該選択関数により計算上のサイドチャネル情報を求める選択関数制御ステップと、前記サイドチャネル情報入力ステップで入力した前記サイドチャネル情報と、前記選択関数により求めた選択関数出力との相関を計算する相関計算ステップと、前記相関計算ステップで求めた相関係数と閾値とを比較し、その比較結果を出力する比較出力ステップとを備えたことを要旨とする。
【発明の効果】
【００１４】
本発明によれば、暗号装置の不正解読に対する耐性評価にかかる時間を短時間化することができる。
【図面の簡単な説明】
【００１５】
【図１】一実施形態のAES−128の中間値記号の定義を示す説明図。
【図２】ループ型構造の暗号装置の概要図。
【図３】サイドチャネル評価装置の構成図。
【図４】SubBytes変換の概要を示すモデル図。
【図５】別のGF(256)上で逆元演算を行うSubBytes変換の概要を示すモデル図。
【図６】AES−128における選択関数の種類と数を示す表。
【図７】サイドチャネル攻撃に対する耐性評価時に実行されるフローチャート。
【発明を実施するための形態】
【００１６】
以下、本発明のサイドチャネル評価装置及びサイドチャネル評価方法を、解析手法としてCPA（Correlation Power Analysis：相関電力解析）に具体化した一実施形態を図１〜図７に従って説明する。CPAは、暗号機能が動作する際の内部データ値に依存して消費電力値が変動する脆弱性（依存関係）を抽出する解析手法である。
【００１７】
［AES（Advanced Encryption Standard）の概要］
図１に示すように、暗号アルゴリズムの一種としてAESがある。AESは、ブロックサイズが128ビット、暗号鍵サイズが128／196／256ビットの３種類から選択可能である。本例では、暗号鍵サイズが128ビットのもののみを対象とし、以降、AES−128と記す。
【００１８】
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処理を表し、「２：１」はセレクタの２入力１出力を表す。
【００２２】
【数１】
2014006484.tif 000003
従って、例えば暗号文が入手可能であると仮定すると、Ｋ[160]の値（秘密鍵の値）を推測することで、レジスタ１バイト分の遷移ハミング距離の推測値が計算できる。このハミング距離の計算を行う関数は、一般的に選択関数と呼ばれている。Ｋ[160]の推測値をパラメータ「ｋ」で表したとき、本例における選択関数の出力Ｈｋは次式(2)で表される。なお、式(2)中のHD(A，B)はAとBとの間のハミング距離を計算する関数とし、HW(A)はハミング重みを計算する関数とする。
【００２３】
【数２】
2014006484.tif 000004
ここで、Ｎ回の暗号処理時の暗号文と消費電力とを測定したとき、ｎ番目のサンプルにおける暗号文バイトＣ[0]を式(2)に入力した際に得られる出力をＨk,nとする。同様に、ｎ番目のサンプルにおける消費電力値をＷｎとする。このとき、次式(3)で計算されるピアソン相関係数ρが最大値となる推測値「ｋ」が、Ｋ[160]の真の値である可能性が高い。
【００２４】
【数３】
2014006484.tif 000005
式(3)の消費電力Ｗｎは、レジスタの値が遷移する際の消費電力値としている。従って、解析対象とする電力消費が発生する時刻が既知であることを仮定している。しかし、レジスタの値が遷移する時刻の特定が困難な場合には、時間波形Ｗt,nで解析を行うことで、計算量の増加と引き換えに、この条件を緩和することができる。この場合、評価値であるピアソン相関係数ρは、次式(4)により計算される。
【００２５】
【数４】
2014006484.tif 000006
[選択関数の説明]
前述のCPAの例では、ループ型構造に起因した選択関数を用いて説明した。このように、例えばLSI設計者が自ら設計したLSIを評価する場合など、予めLSIの実装情報を知っていれば、この実装情報を用いることで適切な選択関数を選ぶことができる。従って、実装情報が入手可能な条件下では、解析が成立する可能性のある選択関数のみをピックアップして評価すればよい。
【００２６】
一方、実装情報がない場合には、適切な選択関数を選ぶことができないので、安全性を評価するためには、全ての選択関数で解析が成立しないことを確認しなくてはならない。この選択関数の種類をｈとし、このｈに推測部分鍵ｋを入力したときのｎサンプル目の出力をＨh,k,nとする。部分鍵ｋは、選択関数ごとに鍵値が異なり、評価対象となる選択関数に応じてバイト数も異なる。このとき、式(5)で計算されるρ(h，k)や、式(6)で導出されるρ(h，k，t)は、全てのｈにおいて評価する必要がある。即ち、実装情報がない場合には、評価に必要な計算量が多量になることが分かる。
【００２７】
【数５】
2014006484.tif 000007
【００２８】
【数６】
2014006484.tif 000008
[サイドチャネル評価装置の構成]
本例の場合、評価処理時の計算量削減として、真の部分鍵ｋ＊を「既知の値」と仮定して、式(5)や式(6)のパラメータ「ｋ」を固定値化した条件下で評価を実施する。この条件下での評価関数は、次式(7)，(8)となる。これら式からも分かるように、パラメータ「ｋ」をなくした分、式(5)，(6)と比較して、計算量を削減できることが分かる。
【００２９】
【数７】
2014006484.tif 000009
【００３０】
【数８】
2014006484.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)で表される。
【００５０】
【数９】
2014006484.tif 000011
【００５１】
【数１０】
2014006484.tif 000012
【００５２】
【数１１】
2014006484.tif 000013
（III）ZV−DPA(Zero Value DPA)を解析手法とする選択関数
SubBytes変換への入力バイトが「00(HEX)」の場合とそれ以外とを分類する解析Zero Value DPAが周知である。逆元変換への入力バイトが「00(HEX)」である場合、「00(HEX)」は、どのGF(256)上においても逆元が「00(HEX)」であり、内部論理回路の入出力ビットも全て「０」となることから、特異な電力消費挙動となる。Zero Value DPAの選択関数は、逆元変換を行うGF(256)に依存せず、次式(12)で表される。
【００５３】
【数１２】
2014006484.tif 000014
図６に、（I）〜（III）で抽出した選択関数の種類を示す。これら全ての選択関数について、式(7)や式(8)の評価式で計算した際に、相関を生じる選択関数が存在しないLSIは電力解析攻撃に対して充分な耐性があると言える。本例の場合、（I）〜（III）で抽出した選択関数が選択関数データベース９に登録されている。なお、これら全ての選択関数が選択関数データベース９に登録される必要はなく、所定のものが適宜選択されて登録されてもよく、或いは前述以外の種類の選択関数が登録されてもよい。
【００５４】
次に、本例のサイドチャネル評価装置１の動作を、図７のフローチャートを用いて説明する。
ステップ１０１において、サイドチャネル情報入力部４は、測定部３が測定した実測のサイドチャネル情報Ｄscを、測定部３から入力する（サイドチャネル情報入力ステップ）。
【００５５】
ステップ１０２において、暗号データ入力部５は、測定部３が測定した暗号データＤenを、測定部３から入力する（暗号データ入力ステップ）。
ステップ１０３において、暗号鍵入力部６は、暗号装置２に書き込まれた真の暗号鍵Ｋtrを、暗号装置２から入力する（暗号鍵入力ステップ）。即ち、サイドチャネル攻撃に対する安全性評価を行う作業者は暗号装置２の暗号鍵を知っていると仮定しているので、この暗号鍵を暗号装置２からサイドチャネル評価装置１に入力する。暗号鍵入力部６は、取得した真の暗号鍵Ｋtrを部分鍵計算部８に出力する。
【００５６】
ステップ１０４において、部分鍵計算部８は、暗号鍵入力部６から入力した真の暗号鍵Ｋtrを基に、各選択関数に必要な部分鍵ｋを計算する（部分鍵計算ステップ）。部分鍵計算部８は、選択関数データベース９を参照することにより、選択関数データベース９内にある選択関数を把握し、これら選択関数に必要な部分鍵ｋをまとめて計算しておく。部分鍵ｋのビット数、つまり部分鍵ｋのサイズは、各選択関数に応じて異なる。
【００５７】
ステップ１０５において、選択関数制御部７は、選択関数データベース９を参照することにより、評価を行う選択関数を選択する（選択関数制御ステップ）。なお、選択関数の評価の順番や、どの選択関数を選び出すのかは、評価レベル設定部１３で選択されたレベルに応じて決まる。この評価レベルには、各選択関数に応じて異なる部分鍵ｋのサイズや、［選択関数の種類の考察］の節で挙げた選択関数の種類が用いられる。また、選択関数制御部７は、選択した選択関数に必要な部分鍵ｋを、部分鍵計算部８から抽出して選択関数に入力する。
【００５８】
ステップ１０６において、選択関数制御部７は、暗号データ入力部５で入力した暗号データＤenと、選択関数制御部７により指定された部分鍵ｋとを用い、選び出した選択関数（計算方法）で計算を実行する（選択関数制御ステップ）。この計算結果である選択関数出力Ｈｋは、相関計算部１０に入力される。
【００５９】
ステップ１０７において、相関計算部１０は、サイドチャネル情報入力部４で入力したサイドチャネル情報と、選択関数の計算結果である選択関数出力Ｈｋとの間の相関を計算する（相関計算ステップ）。相関計算部１０は、計算した相関係数ρを比較部１１に出力する。
【００６０】
ステップ１０８において、比較部１１は、相関計算部１０から取得した相関係数ρと閾値ρｋとを比較する（比較出力ステップ）。このとき、相関係数ρが閾値ρｋ以上であるならば、この相関係数ρを導き出した選択関数は、秘密情報の解析に利用される可能性がある。よって、比較部１１は、相関係数ρが閾値ρｋ以上となると、この相関係数ρを計算した選択関数を出力部１２に通知する。
【００６１】
ステップ１０９において、出力部１２は、比較部１１から通知を受けた選択関数をディスプレイに表示するなどして、秘密情報の解析に利用される可能性のある選択関数をユーザに通知する（比較出力ステップ）。これにより、作業者は、秘密情報の解析に利用されるおそれのある選択関数が何であるのかが分かる。
【００６２】
ステップ１１０において、選択関数制御部７は、選択関数データベース９内の全ての選択関数で評価が終了したか否かを判断する。このとき、未評価の選択関数が存在すれば、ステップ１０５に戻って他の選択関数の評価を同様に行い、全ての選択関数の評価が終了していれば、処理を終了する。
【００６３】
本実施形態の構成によれば、以下に記載の効果を得ることができる。
（１）サイドチャネル情報Ｄscに対する暗号装置２の脆弱性評価を行うにあたり、安全性評価を行う作業者は暗号装置２の真の暗号鍵Ｋtrを知っているものと仮定し、この真の暗号鍵Ｋtrから部分鍵ｋを計算して、暗号装置２のサイドチャネル攻撃に対する耐性を評価する。このため、評価時に入力対象となる暗号鍵が１つで済むので、安全性評価の作業時、使用しなければならない暗号鍵が１パターンで固定される。よって、暗号鍵を複数推測して評価を行う作業をとらずに済むので、その分、安全性評価にかかる時間を短縮することができる。
【００６４】
（２）サイドチャネル評価装置１に評価レベル設定部１３を設けたので、耐性評価のレベルを自由に切り替えることができる。よって、例えば評価対象とする暗号装置２によっては不要となる選択関数を除外するなど、状況に応じて、その都度必要とするレベルで耐性評価を行うことができる。
【００６５】
（３）耐性の評価レベルを部分鍵ｋのサイズで設定可能とした場合、評価を行う選択関数の有効無効を、部分鍵ｋのサイズにより切り替えることができる。また、耐性の評価レベルを選択関数の種類により設定可能とした場合、評価を行う選択関数の有効無効を、選択関数の種類により切り替えることができる。このように、評価レベルを設定する際にも、種々の方式で設定することができるようになる。
【００６６】
（４）選択関数は、種類によって必要となる部分鍵のサイズが異なる関数である。本例の場合、このような選択関数を評価する場合であっても、耐性評価を短時間で行うことができる。
【００６７】
なお、実施形態はこれまでに述べた構成に限らず、以下の態様に変更してもよい。
・部分鍵計算部８は、必要とする部分鍵ｋを一度に計算することに限らず、例えば評価を行う選択関数が選択される度に、都度計算を実施する形式をとってもよい。
【００６８】
・サイドチャネル情報Ｄscは、暗号装置２から漏洩する情報であれば、種々のものが採用可能である。
・暗号データＤenは、選択関数の入力となり得るデータであれば、種々のものが採用可能である。
【００６９】
・真の暗号鍵Ｋtrのビット数は、他の値に適宜変更してもよい。
・暗号の種類は、AESに代えて、DES（Data Encryption Standard）等の他の暗号方式を採用してもよい。
【００７０】
・選択関数は、実測したサイドチャネル情報Ｄscとの相関を求めることができる出力を出せるものであれば、種々の関数が採用可能である。
・安全性評価のレベル設定は、例えば使用する選択関数を作業者自らが１つひとつ適宜選択する方式でもよい。また、評価レベルを高〜低レベルの間で多段階（複数の選択関数群）に設定可能とし、選択されたレベル毎に、使用される選択関数が設定されてもよい。
【００７１】
・サイドチャネル評価装置１は、測定部３を一体に組み込んだ装置でもよい。
・選択関数データベース９に書き込まれる選択関数は、適宜変更することが可能である。
【００７２】
・AESは、暗号鍵サイズが196ビットや256ビットのものを採用してもよい。
・解析手法は、MIA(Mutual Information Analysis：相互情報量解析)や、EMA(ElectroMannetic Analysis：電磁波解析)等を採用することも可能である。
【００７３】
次に、上記実施形態及び別例から把握できる技術的思想について、それらの効果とともに以下に追記する。
（イ）暗号装置の不正解読に対する耐性を評価するサイドチャネル評価プログラムにおいて、前記暗号装置から漏洩するサイドチャネル情報を入力させるサイドチャネル情報入力ステップと、前記暗号装置で取り扱う暗号データを入力させる暗号データ入力ステップと、前記暗号装置に書き込まれた真の暗号鍵を入力させる暗号鍵入力ステップと、前記サイドチャネル情報を計算する選択関数に必要な部分鍵を、前記真の暗号鍵から計算する部分鍵計算ステップと、複数の前記選択関数が登録された選択関数データベースを参照することにより、前記評価に必要な選択関数を選択し、当該選択関数により計算上のサイドチャネル情報を求める選択関数制御ステップと、前記サイドチャネル情報入力部で入力した前記サイドチャネル情報と、前記選択関数により求めた選択関数出力との相関を計算する相関計算ステップと、前記相関計算部が求めた相関係数と閾値とを比較し、その比較結果を出力する比較出力ステップとをコンピュータに実行させることを特徴とするサイドチャネル評価プログラム。
【符号の説明】
【００７４】
１…サイドチャネル評価装置、２…暗号装置、４…サイドチャネル情報入力部、５…暗号データ入力部、６…暗号鍵入力部、７…選択関数制御部、８…部分鍵計算部、９…選択関数データベース、１０…相関計算部、１１…比較出力部を構成する比較部、１２…比較出力部を構成する出力部、１３…評価レベル設定部、Ｄsc…サイドチャネル情報、Ｄen…暗号データ、ｋ…部分鍵、Ｋtr…真の暗号鍵、Ｈｋ…選択関数出力、ρ…ピアソン相関係数、ρｋ…閾値。
【図１】
2014006484.tif 000015
【図２】
2014006484.tif 000016
【図３】
2014006484.tif 000017
【図４】
2014006484.tif 000018
【図５】
2014006484.tif 000019
【図６】
2014006484.tif 000020
【図７】
2014006484.tif 000021