【文献】
駒野雄一 他,耐タンパー暗号モジュールの安全性評価を効率化する組込み型相関電力解析,東芝レビュー,株式会社東芝,2011年11月 1日,第66巻 第11号,p.31-34
【文献】
Hutter, M. et al.,Test Apparatus for Side-Channel ResistanceCompliance Testing,Non-Invasive Attack Testing Workshop,2011年10月 6日,[2015年月14日検索],URL,http://csrc.nist.gov/news_events/non-invasive-attack-testing-workshop/papers/index.html
【文献】
Goodwill, G. et al.,A testing methodology for sidechannelresistance validation,Non-Invasive Attack Testing Workshop ,2011年10月 6日,[2015年7月14日検索],URL,http://csrc.nist.gov/news_events/non-invasive-attack-testing-workshop/papers/index.html
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0016】
以下、本発明のサイドチャネル評価装置及びサイドチャネル評価方法を、解析手法としてCPA(Correlation Power Analysis:相関電力解析)に具体化した一実施形態を
図1〜
図7に従って説明する。CPAは、暗号機能が動作する際の内部データ値に依存して消費電力値が変動する脆弱性(依存関係)を抽出する解析手法である。
【0017】
[AES(Advanced Encryption Standard)の概要]
図1に示すように、暗号アルゴリズムの一種としてAESがある。AESは、ブロックサイズが128ビット、暗号鍵サイズが128/196/256ビットの3種類から選択可能である。本例では、暗号鍵サイズが128ビットのもののみを対象とし、以降、AES−128と記す。
【0018】
AES−128は、SubBytes(バイト毎の非線形変換)と、ShiftRows(バイト単位の入れ替え)と、MixColumns(4バイト単位の線形変換)と、AddRoundKey(ラウンド鍵との排他的論理和)との4種類の変換で構成されるラウンド関数による変換を、10ラウンド繰り返すことで、平文を暗号文に変換する。但し、1ラウンド目のラウンド関数変換前にもAddRoundKeyが行われ、10ラウンド目のラウンド関数ではMixColumns変換を行わない。AddRoundKeyで用いるラウンド鍵は128ビットの秘密鍵から計算される値であり、この計算を行う関数は一般的に鍵スケジューラと呼ばれている。
【0019】
本例のCPAの場合、暗号化の途中で生成される中間値、つまりラウンド関数内部の変換処理入出力データに着目して解析を行う。この各中間値データは、
図1に示すように定義される。例えば、平文バイトをP[j]として、j=0をMSB側バイトとし、j=15をLSB側バイトとする。同様に暗号文をC[j]とし、iラウンド目のラウンド関数への入力をRi[j]とする。ここで、ラウンド数iはi=1〜10とする。このiラウンド目のラウンド関数内で行われるSubBytes変換出力バイトをSi[j]とする。ShiftRows変換出力は、SubBytes変換出力のバイト順序が入れ替わるのみで値は変わらない。Si[j]と同様に、MixColumns変換出力バイトをMi[j]とする。但し、10ラウンド目ではMixColumnsが行われないため、M10[j]は存在しない。また、暗号化初期に行われるAddRoundKeyで用いる16バイトの鍵(秘密鍵と等価)をK[0]〜K[15]とし、1ラウンド目のAddRoundKeyで用いるラウンド鍵をK[16]〜K[31]とし、同様にiラウンド目のラウンド鍵のjバイト目をK[16・i+j]とする。
【0020】
[CPAの概要]
一般的な論理回路の場合、LSIにおけるレジスタの遷移ハミング距離と消費電力との間には、線形相関があることが多い。遷移ハミング距離は、レジスタの値がある値に切り替わる際に、レジスタがビット反転した数に相当する。CPAは、推測した遷移ハミング距離と消費電力との間のピアソン相関計数の大きさで、推測の正しさを判断する解析手法である。
【0021】
図2にCPAの解析例を示す。同図に示すように、ループ型構造で実装されたAES−128の最終段において、レジスタは中間データR10[j]から暗号文C[j]に遷移する。このR10[j]の最上位バイトR10[0]は、暗号文バイトC[0]とラウンド鍵バイトK[160]とを用いて、次式(1)により計算可能である。なお、式(1)中の「S
−1」は逆SubBytes変換を表し、「円中に+の記号」はXOR処理を表し、「2:1」はセレクタの2入力1出力を表す。
【0022】
【数1】
従って、例えば暗号文が入手可能であると仮定すると、K[160]の値(秘密鍵の値)を推測することで、レジスタ1バイト分の遷移ハミング距離の推測値が計算できる。このハミング距離の計算を行う関数は、一般的に選択関数と呼ばれている。K[160]の推測値をパラメータ「k」で表したとき、本例における選択関数の出力H
kは次式(2)で表される。なお、式(2)中のHD(A,B)はAとBとの間のハミング距離を計算する関数とし、HW(A)はハミング重みを計算する関数とする。
【0023】
【数2】
ここで、N回の暗号処理時の暗号文と消費電力とを測定したとき、n番目のサンプルにおける暗号文バイトC[0]を式(2)に入力した際に得られる出力をH
k,nとする。同様に、n番目のサンプルにおける消費電力値をW
nとする。このとき、次式(3)で計算されるピアソン相関係数ρが最大値となる推測値「k」が、K[160]の真の値である可能性が高い。
【0024】
【数3】
式(3)の消費電力W
nは、レジスタの値が遷移する際の消費電力値としている。従って、解析対象とする電力消費が発生する時刻が既知であることを仮定している。しかし、レジスタの値が遷移する時刻の特定が困難な場合には、時間波形W
t,nで解析を行うことで、計算量の増加と引き換えに、この条件を緩和することができる。この場合、評価値であるピアソン相関係数ρは、次式(4)により計算される。
【0025】
【数4】
[選択関数の説明]
前述のCPAの例では、ループ型構造に起因した選択関数を用いて説明した。このように、例えばLSI設計者が自ら設計したLSIを評価する場合など、予めLSIの実装情報を知っていれば、この実装情報を用いることで適切な選択関数を選ぶことができる。従って、実装情報が入手可能な条件下では、解析が成立する可能性のある選択関数のみをピックアップして評価すればよい。
【0026】
一方、実装情報がない場合には、適切な選択関数を選ぶことができないので、安全性を評価するためには、全ての選択関数で解析が成立しないことを確認しなくてはならない。この選択関数の種類をhとし、このhに推測部分鍵kを入力したときのnサンプル目の出力をH
h,k,nとする。部分鍵kは、選択関数ごとに鍵値が異なり、評価対象となる選択関数に応じてバイト数も異なる。このとき、式(5)で計算されるρ(h,k)や、式(6)で導出されるρ(h,k,t)は、全てのhにおいて評価する必要がある。即ち、実装情報がない場合には、評価に必要な計算量が多量になることが分かる。
【0028】
【数6】
[サイドチャネル評価装置の構成]
本例の場合、評価処理時の計算量削減として、真の部分鍵k
*を「既知の値」と仮定して、式(5)や式(6)のパラメータ「k」を固定値化した条件下で評価を実施する。この条件下での評価関数は、次式(7),(8)となる。これら式からも分かるように、パラメータ「k」をなくした分、式(5),(6)と比較して、計算量を削減できることが分かる。
【0030】
【数8】
図3に、サイドチャネル評価装置1の構成を示す。LSI等の暗号装置2には、暗号装置2が入出力する各種データを測定する測定部3が接続されている。測定部3は、暗号装置2が入出力する暗号データDenを取得するとともに、暗号装置2から漏洩するサイドチャネル情報Dscを測定する。暗号データDenには、例えば平文、暗号文等がある。また、サイドチャネル情報Dscには、例えば消費電力、漏洩電磁波、音、温度等がある。測定部3は、取得した暗号データDen及びサイドチャネル情報Dscをサイドチャネル評価装置1に出力する。
【0031】
サイドチャネル評価装置1には、測定部3からサイドチャネル情報Dscを入力するサイドチャネル情報入力部4と、測定部3から暗号データDenを入力する暗号データ入力部5と、暗号装置2から真の暗号鍵Ktrを入力する暗号鍵入力部6とが設けられている。本例の場合、安全性評価を行う作業者は評価対象の暗号鍵を知っていると仮定しているので、暗号装置2に書き込まれた真の暗号鍵Ktrの値を暗号鍵入力部6に入力することが可能である。
【0032】
サイドチャネル評価装置1には、使用する選択関数を選択する選択関数制御部7と、各選択関数に必要な部分鍵kを計算する部分鍵計算部8と、評価時に使用する選択関数が複数格納された選択関数データベース9とが設けられている。選択関数制御部7は、選択関数データベース9を参照して、その時々に必要とする選択関数を選び出す。部分鍵計算部8は、真の暗号鍵Ktrを基に部分鍵kを計算し、評価中の選択関数に必要な部分鍵kを適宜出力する。選択関数データベース9には、評価時に必要とされる選択関数が全て登録されている。
【0033】
選択関数制御部7により選ばれた選択関数は、暗号データDen及び部分鍵kを入力とし、暗号化の中間データのハミング重みやハミング距離を計算して出力する。選択関数の計算は、選択関数が指定される度に実行される。
【0034】
サイドチャネル評価装置1には、サイドチャネル情報Dsc及び選択関数出力H
kとの相関を計算する相関計算部10と、相関計算部10が計算した相関係数(相関値)ρと閾値ρkとを比較する比較部11と、相関係数ρが閾値ρk以上となる選択関数を出力する出力部12とが設けられている。相関計算部10は、サイドチャネル情報入力部4からサイドチャネル情報Dscを入力し、これと選択関数出力とを比較することにより相関係数ρを計算する。相関係数ρが閾値ρk以上の場合、この相関係数ρが出力された選択関数は秘密情報の解析に利用される可能性があるので、この選択関数を出力部12により出力して作業者に通知する。なお、比較部11及び出力部12が比較出力部に相当する。
【0035】
サイドチャネル評価装置1には、脆弱性評価の評価レベルを作業者が自由に切り替え設定可能とする評価レベル設定部13が設けられている。評価レベル設定部13により評価レベルが「高い側」に設定されると、選択関数データベース9から選択関数が多く選択されて、評価が実行される。一方、評価レベル設定部13により評価レベルが「低い側」に設定されると、選択関数データベース9から選び出される選択関数が少なく設定されて、評価が簡素化される。
【0036】
[選択関数の種類の考察]
ここでは、想定されるAES−128の選択関数について考察する。
(I)レジスタの遷移ハミング距離モデルに基づく選択関数
本節では、[CPAの概要]の節で挙げた例での選択関数と同様に、レジスタの遷移ハミング距離と消費電力との間に線形相関があると仮定する消費電力モデルを用いた選択関数を検討する。このモデルでは、レジスタの遷移前後のデータ2値により、消費電力を推定する。[CPAの概要]の節で挙げた例の場合、R10[0]とC[0]がこの2値に相当する。
【0037】
このモデルに基づく選択関数は、レジスタにどのような値が保持されるかによって決定される。即ち、保持され得る中間値全てを考えることで、全ての選択関数を抽出できる。AES−128は、バイト単位で演算を行うため、レジスタに保持される値もバイト単位で検討することが妥当である。本節では、
図1で定義した暗号化中間値バイトRi[j],Si[j],Mi[j]及び平文バイトP[j]、暗号バイトC[j]のいずれかがレジスタに保持されるものと仮定する。
【0038】
(I−1)平文・暗号文バイトを含む選択関数
平文バイトP[j]や暗号文バイトC[j]のバイト間のハミング距離を出力する選択関数では、式(3)のパラメータ「k」の要素がないため、暗号鍵解析には使えない。しかし、これらのバイトと暗号化中間値バイトRi[j],Si[j],Mi[j]とのハミング距離は、[CPAの概要]の節で挙げた例のように解析に用いることができる。
【0039】
(I−2)平文・暗号文バイトを含まない選択関数
暗号化中間値バイトRi[j],Si[j],Mi[j]のうち、2値のハミング距離を出力する選択関数も解析に用いることができる。
【0040】
(I−3)レジスタのゼロクリアを考慮した選択関数
レジスタ遷移前後のデータは必ずしも暗号化データとは限らず、例えばマイクロコンピュータ等では遷移毎にゼロクリアが行われる場合が考えられる。この場合のレジスタの遷移ハミング距離は、暗号データ1値のハミング重みと一致する。なお、この場合、データのハミング重みとも分類可能だが、本項ではこの場合もレジスタの遷移ハミング距離モデルと分類する。
【0041】
(I−4)異なる暗号処理のハミング距離選択関数
レジスタ値が遷移する際、その前後の値は必ずしも同一の暗号処理時のものとは限らない。例えば、レジスタの値が平文Aを暗号化する際の中間値データから、平文Bを暗号化する際の中間値データに遷移する場合も考えられる。このような平文Aと平文Bとの関係は、実装方法に依存して様々な場合が存在し、例えば「連続して暗号化を行う2つの平文データ」である場合等が挙げられる。
【0042】
この場合の選択関数として、異なる種類の中間値データの間のハミング距離(例えば、平文Aから計算したS1[5]と、平文Bから計算したS1[9]との間のハミング距離等)を出力とする選択関数が存在する。(I−2)のように同一の平文から計算する場合のS1[5]とS1[9]とのハミング距離は1通りである。しかし、異なる平文を考慮する場合、平文Aから計算したS1[5]と平文Bから計算したS1[9]とに加え、平文Aから計算したS1[9]と平文Bから計算したS1[5]とのハミング距離を出力とする選択関数も存在する。
【0043】
また、同じ種類の中間値データ(例えば、平文Aから計算したS1[5]と平文Bから計算したS1[5]とは異なる値である)のハミング距離を出力とする選択関数も、解析が成立する可能性がある。
【0044】
(II)非線形回路の遷移確率の偏りを利用した選択関数
Iで挙げた選択関数の他に、非線形回路の出力遷移確率の偏りを利用した選択関数も存在する。例えば、非線形回路である2入力AND回路にランダムな値を順次入力したとき、出力が遷移する確率は平均3/8である。ここで、この出力値のある時刻の値が「1」である場合に限定すると、前後の時刻と出力値とが異なる確率、つまり出力遷移確率は3/4となる。また、「0」である場合には、出力遷移確率は1/4となる。従って、出力値で消費電力を分類した場合に、その平均値の間に差分が生じる。この偏りは、ある時刻の入力1ビットで分類した場合にも生じ、同様な平均消費電力差分を生じる。
【0045】
AES−128のデータ変換仕様において、非線形回路が用いられる可能性があるのはSubBytes変換のみである。このSubBytes変換はバイト単位での全単射変換であり、
図4に示すようにガロア体GF(256)上の逆元変換とaffine変換とで構成される。affine変換は線形変換であるため、逆元変換部のみが非線形変換を行う。従って、この逆元変換の入出力ビット値は非線形回路の入出力に接続されている可能性が高く、これらビットを出力とする選択関数では、解析が成立する可能性があると考えられる。
【0046】
このGF(256)上の逆元変換は、
図5に示すように線形写像δ(及び逆写像δ
−1)を用いて別のGF(256)上の逆元変換とすることができる。このとき、特定のGF(256)は小規模な回路で逆元変換を構成できることが知られており、この性質を利用したSubBytes変換回路が知られている。従って、逆元変換の入出力ビットは、実装方法に依存して変化する。
【0047】
特定のGF(256)への線形写像は複数種類存在し、さらに前述のような回路規模削減が可能なGF(256)は数多く存在する。従って、SubBytes回路の実装時には、これらのGF(256)上で逆元演算回路を構成する可能性を考慮すべきである。しかし、解析時に全ての線形写像を考慮する場合、線形写像の数だけ選択関数が増加することになってしまう。そこで、本節では、逆元変換回路の入出力ビット値を選択関数とするとき、そのビット位置までは考慮する必要が無いことに着目し、選択関数の総数を検討した。
【0048】
任意の線形写像で変換した各ビットは、1バイトの線形マスク値をΓとしてΓ≠0の255値でマスクした値の奇数パリティビット255値のいずれかと必ず一致する。例えば、式(11)の左側のδで写像したときの逆元変換への入力のMSBは、Γ=A0(HEX)でマスクしたときのパリティと一致し、同様にLSBはΓ=43(HEX)のときと同値である。このように、真の逆元変換回路への入力8ビットは、必ずこの255種の選択関数出力に含まれる。さらに、逆元変換回路内部において線形変換が行われる実装の場合、この線形変換も考慮できる。
【0049】
同様に、逆元変換の出力をSubBytes出力バイトから計算する場合には、affine変換において行われるベクトル加算の逆変換、つまり63(HEX)との排他的論理和を行った上で、同様に線形マスク値でマスクしたときのパリティを計算する。これらの選択関数は次式(9)〜(11)で表される。
【0052】
【数11】
(III)ZV−DPA(Zero Value DPA)を解析手法とする選択関数
SubBytes変換への入力バイトが「00(HEX)」の場合とそれ以外とを分類する解析Zero Value DPAが周知である。逆元変換への入力バイトが「00(HEX)」である場合、「00(HEX)」は、どのGF(256)上においても逆元が「00(HEX)」であり、内部論理回路の入出力ビットも全て「0」となることから、特異な電力消費挙動となる。Zero Value DPAの選択関数は、逆元変換を行うGF(256)に依存せず、次式(12)で表される。
【0053】
【数12】
図6に、(I)〜(III)で抽出した選択関数の種類を示す。これら全ての選択関数について、式(7)や式(8)の評価式で計算した際に、相関を生じる選択関数が存在しないLSIは電力解析攻撃に対して充分な耐性があると言える。本例の場合、(I)〜(III)で抽出した選択関数が選択関数データベース9に登録されている。なお、これら全ての選択関数が選択関数データベース9に登録される必要はなく、所定のものが適宜選択されて登録されてもよく、或いは前述以外の種類の選択関数が登録されてもよい。
【0054】
次に、本例のサイドチャネル評価装置1の動作を、
図7のフローチャートを用いて説明する。
ステップ101において、サイドチャネル情報入力部4は、測定部3が測定した実測のサイドチャネル情報Dscを、測定部3から入力する(サイドチャネル情報入力ステップ)。
【0055】
ステップ102において、暗号データ入力部5は、測定部3が測定した暗号データDenを、測定部3から入力する(暗号データ入力ステップ)。
ステップ103において、暗号鍵入力部6は、暗号装置2に書き込まれた真の暗号鍵Ktrを、暗号装置2から入力する(暗号鍵入力ステップ)。即ち、サイドチャネル攻撃に対する安全性評価を行う作業者は暗号装置2の暗号鍵を知っていると仮定しているので、この暗号鍵を暗号装置2からサイドチャネル評価装置1に入力する。暗号鍵入力部6は、取得した真の暗号鍵Ktrを部分鍵計算部8に出力する。
【0056】
ステップ104において、部分鍵計算部8は、暗号鍵入力部6から入力した真の暗号鍵Ktrを基に、各選択関数に必要な部分鍵kを計算する(部分鍵計算ステップ)。部分鍵計算部8は、選択関数データベース9を参照することにより、選択関数データベース9内にある選択関数を把握し、これら選択関数に必要な部分鍵kをまとめて計算しておく。部分鍵kのビット数、つまり部分鍵kのサイズは、各選択関数に応じて異なる。
【0057】
ステップ105において、選択関数制御部7は、選択関数データベース9を参照することにより、評価を行う選択関数を選択する(選択関数制御ステップ)。なお、選択関数の評価の順番や、どの選択関数を選び出すのかは、評価レベル設定部13で選択されたレベルに応じて決まる。この評価レベルには、各選択関数に応じて異なる部分鍵kのサイズや、[選択関数の種類の考察]の節で挙げた選択関数の種類が用いられる。また、選択関数制御部7は、選択した選択関数に必要な部分鍵kを、部分鍵計算部8から抽出して選択関数に入力する。
【0058】
ステップ106において、選択関数制御部7は、暗号データ入力部5で入力した暗号データDenと、選択関数制御部7により指定された部分鍵kとを用い、選び出した選択関数(計算方法)で計算を実行する(選択関数制御ステップ)。この計算結果である選択関数出力H
kは、相関計算部10に入力される。
【0059】
ステップ107において、相関計算部10は、サイドチャネル情報入力部4で入力したサイドチャネル情報と、選択関数の計算結果である選択関数出力H
kとの間の相関を計算する(相関計算ステップ)。相関計算部10は、計算した相関係数ρを比較部11に出力する。
【0060】
ステップ108において、比較部11は、相関計算部10から取得した相関係数ρと閾値ρkとを比較する(比較出力ステップ)。このとき、相関係数ρが閾値ρk以上であるならば、この相関係数ρを導き出した選択関数は、秘密情報の解析に利用される可能性がある。よって、比較部11は、相関係数ρが閾値ρk以上となると、この相関係数ρを計算した選択関数を出力部12に通知する。
【0061】
ステップ109において、出力部12は、比較部11から通知を受けた選択関数をディスプレイに表示するなどして、秘密情報の解析に利用される可能性のある選択関数をユーザに通知する(比較出力ステップ)。これにより、作業者は、秘密情報の解析に利用されるおそれのある選択関数が何であるのかが分かる。
【0062】
ステップ110において、選択関数制御部7は、選択関数データベース9内の全ての選択関数で評価が終了したか否かを判断する。このとき、未評価の選択関数が存在すれば、ステップ105に戻って他の選択関数の評価を同様に行い、全ての選択関数の評価が終了していれば、処理を終了する。
【0063】
本実施形態の構成によれば、以下に記載の効果を得ることができる。
(1)サイドチャネル情報Dscに対する暗号装置2の脆弱性評価を行うにあたり、安全性評価を行う作業者は暗号装置2の真の暗号鍵Ktrを知っているものと仮定し、この真の暗号鍵Ktrから部分鍵kを計算して、暗号装置2のサイドチャネル攻撃に対する耐性を評価する。このため、評価時に入力対象となる暗号鍵が1つで済むので、安全性評価の作業時、使用しなければならない暗号鍵が1パターンで固定される。よって、暗号鍵を複数推測して評価を行う作業をとらずに済むので、その分、安全性評価にかかる時間を短縮することができる。
【0064】
(2)サイドチャネル評価装置1に評価レベル設定部13を設けたので、耐性評価のレベルを自由に切り替えることができる。よって、例えば評価対象とする暗号装置2によっては不要となる選択関数を除外するなど、状況に応じて、その都度必要とするレベルで耐性評価を行うことができる。
【0065】
(3)耐性の評価レベルを部分鍵kのサイズで設定可能とした場合、評価を行う選択関数の有効無効を、部分鍵kのサイズにより切り替えることができる。また、耐性の評価レベルを選択関数の種類により設定可能とした場合、評価を行う選択関数の有効無効を、選択関数の種類により切り替えることができる。このように、評価レベルを設定する際にも、種々の方式で設定することができるようになる。
【0066】
(4)選択関数は、種類によって必要となる部分鍵のサイズが異なる関数である。本例の場合、このような選択関数を評価する場合であっても、耐性評価を短時間で行うことができる。
【0067】
なお、実施形態はこれまでに述べた構成に限らず、以下の態様に変更してもよい。
・部分鍵計算部8は、必要とする部分鍵kを一度に計算することに限らず、例えば評価を行う選択関数が選択される度に、都度計算を実施する形式をとってもよい。
【0068】
・サイドチャネル情報Dscは、暗号装置2から漏洩する情報であれば、種々のものが採用可能である。
・暗号データDenは、選択関数の入力となり得るデータであれば、種々のものが採用可能である。
【0069】
・真の暗号鍵Ktrのビット数は、他の値に適宜変更してもよい。
・暗号の種類は、AESに代えて、DES(Data Encryption Standard)等の他の暗号方式を採用してもよい。
【0070】
・選択関数は、実測したサイドチャネル情報Dscとの相関を求めることができる出力を出せるものであれば、種々の関数が採用可能である。
・安全性評価のレベル設定は、例えば使用する選択関数を作業者自らが1つひとつ適宜選択する方式でもよい。また、評価レベルを高〜低レベルの間で多段階(複数の選択関数群)に設定可能とし、選択されたレベル毎に、使用される選択関数が設定されてもよい。
【0071】
・サイドチャネル評価装置1は、測定部3を一体に組み込んだ装置でもよい。
・選択関数データベース9に書き込まれる選択関数は、適宜変更することが可能である。
【0072】
・AESは、暗号鍵サイズが196ビットや256ビットのものを採用してもよい。
・解析手法は、MIA(Mutual Information Analysis:相互情報量解析)や、EMA(ElectroMannetic Analysis:電磁波解析)等を採用することも可能である。
【0073】
次に、上記実施形態及び別例から把握できる技術的思想について、それらの効果とともに以下に追記する。
(イ)暗号装置の不正解読に対する耐性を評価するサイドチャネル評価プログラムにおいて、前記暗号装置から漏洩するサイドチャネル情報を入力させるサイドチャネル情報入力ステップと、前記暗号装置で取り扱う暗号データを入力させる暗号データ入力ステップと、前記暗号装置に書き込まれた真の暗号鍵を入力させる暗号鍵入力ステップと、前記サイドチャネル情報を計算する選択関数に必要な部分鍵を、前記真の暗号鍵から計算する部分鍵計算ステップと、複数の前記選択関数が登録された選択関数データベースを参照することにより、前記評価に必要な選択関数を選択し、当該選択関数により計算上のサイドチャネル情報を求める選択関数制御ステップと、前記サイドチャネル情報入力部で入力した前記サイドチャネル情報と、前記選択関数により求めた選択関数出力との相関を計算する相関計算ステップと、前記相関計算部が求めた相関係数と閾値とを比較し、その比較結果を出力する比較出力ステップとをコンピュータに実行させることを特徴とするサイドチャネル評価プログラム。