特許第5979750号(P5979750)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社東海理化電機製作所の特許一覧 ▶ 独立行政法人産業技術総合研究所の特許一覧

特許5979750サイドチャネル評価装置及びサイドチャネル評価方法
<>
  • 特許5979750-サイドチャネル評価装置及びサイドチャネル評価方法 図000016
  • 特許5979750-サイドチャネル評価装置及びサイドチャネル評価方法 図000017
  • 特許5979750-サイドチャネル評価装置及びサイドチャネル評価方法 図000018
  • 特許5979750-サイドチャネル評価装置及びサイドチャネル評価方法 図000019
  • 特許5979750-サイドチャネル評価装置及びサイドチャネル評価方法 図000020
  • 特許5979750-サイドチャネル評価装置及びサイドチャネル評価方法 図000021
  • 特許5979750-サイドチャネル評価装置及びサイドチャネル評価方法 図000022
  • 特許5979750-サイドチャネル評価装置及びサイドチャネル評価方法 図000023
  • 特許5979750-サイドチャネル評価装置及びサイドチャネル評価方法 図000024
  • 特許5979750-サイドチャネル評価装置及びサイドチャネル評価方法 図000025
  • 特許5979750-サイドチャネル評価装置及びサイドチャネル評価方法 図000026
  • 特許5979750-サイドチャネル評価装置及びサイドチャネル評価方法 図000027
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5979750
(24)【登録日】2016年8月5日
(45)【発行日】2016年8月31日
(54)【発明の名称】サイドチャネル評価装置及びサイドチャネル評価方法
(51)【国際特許分類】
   H04L 9/10 20060101AFI20160818BHJP
   H04L 9/08 20060101ALI20160818BHJP
【FI】
   H04L9/00 621A
   H04L9/00 601A
【請求項の数】4
【全頁数】18
(21)【出願番号】特願2012-144041(P2012-144041)
(22)【出願日】2012年6月27日
(65)【公開番号】特開2014-7705(P2014-7705A)
(43)【公開日】2014年1月16日
【審査請求日】2014年12月12日
【前置審査】
(73)【特許権者】
【識別番号】000003551
【氏名又は名称】株式会社東海理化電機製作所
(73)【特許権者】
【識別番号】301021533
【氏名又は名称】国立研究開発法人産業技術総合研究所
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(72)【発明者】
【氏名】岸本 耕平
(72)【発明者】
【氏名】河村 大輔
(72)【発明者】
【氏名】岩下 明暁
(72)【発明者】
【氏名】水野 善之
(72)【発明者】
【氏名】古原 和邦
【審査官】 打出 義尚
(56)【参考文献】
【文献】 国際公開第2011/071063(WO,A1)
【文献】 DI NATALE, G., FLOTTES, M.-L., ROUZEYRE, B.,An Integrated Validation Environment for Differential Power Analysis,Electronic Design, Test and Applications, 2008. DELTA 2008. 4th IEEE International Symposium on,2008年,pp. 527-532
【文献】 SUZUKI, D., SAEKI, M., SHIMIZU, K., MATSUMOTO, T,How to Decide Selection Functions for Power Analysis: From the Viewpoint of Hardware Architecture of Block Ciphers,IEICE TRANSACTIONS on Fundamentals of Electronics, Communications and Computer Sciences,2011年 1月 1日,Vol.E94-A, No.1,pp. 200-210
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/10
H04L 9/08
(57)【特許請求の範囲】
【請求項1】
暗号装置の不正解読に対する耐性を評価するサイドチャネル評価装置において、
前記暗号装置から漏洩するサイドチャネル情報を入力するサイドチャネル情報入力部と、
前記暗号装置で取り扱う暗号データを入力する暗号データ入力部と、
前記サイドチャネル情報の計算に用いる選択関数を複数登録した選択関数データベースから、評価を行う前記選択関数を選び出し、暗号鍵の一部である部分鍵と、前記暗号データ入力部で入力した前記暗号データとを用いて、前記選択関数により計算上のサイドチャネル情報を求める演算部と、
前記サイドチャネル情報入力部で入力した前記サイドチャネル情報と、前記選択関数により求めた選択関数出力との相関を計算する相関計算部と、
前記相関計算部が求めた相関係数と閾値とを比較し、その比較結果を出力する比較出力部とを備え、
前記部分鍵が指定サイズ未満の選択関数のみを抽出して前記選択関数データベースに登録しておき、これら選択関数でのみ耐性評価を実施する
ことを特徴とするサイドチャネル評価装置。
【請求項2】
想定される全ての前記選択関数を抽出し、その全選択関数の中から前記部分鍵が指定サイズ未満の選択関数を抽出し、抽出した当該選択関数を、評価時に使用する関数として前記選択関数データベースに登録する
ことを特徴とする請求項1に記載のサイドチャネル評価装置。
【請求項3】
前記全選択関数の抽出は、
前記暗号装置にガロア体上のべき乗変換が使用されている場合、当該べき乗変換の入出力ビット列を同一ビット数の線形マスク値(「0」を除く)でマスクした値の奇数パリティビットを、計算上のサイドチャネル情報として出力する選択関数を含む
ことを特徴とする請求項2に記載のサイドチャネル評価装置。
【請求項4】
暗号装置から漏洩するサイドチャネル情報の計算に用いる選択関数を複数登録した選択関数データベースから、評価を行う前記選択関数を演算部が選び出し、暗号鍵の一部である部分鍵と、前記暗号装置で取り扱う暗号データを入力する暗号データ入力部で入力した当該暗号データとを用いて、前記演算部が前記選択関数により計算上のサイドチャネル情報を求め、前記暗号装置から漏洩するサイドチャネル情報を入力するサイドチャネル情報入力部で入力した実測のサイドチャネル情報と、前記選択関数により求めた選択関数出力との相関を相関計算部により計算し、求めた相関係数と閾値とを比較した比較結果を比較出力部から出力することにより、前記暗号装置の不正解読に対する耐性を評価するサイドチャネル評価方法において、
前記部分鍵が指定サイズ未満の選択関数のみ抽出して前記選択関数データベースに登録しておき、これら選択関数でのみ耐性評価を実施する
ことを特徴とするサイドチャネル評価方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、集積回路のサイドチャネル攻撃に対する耐性を評価するサイドチャネル評価装置及びサイドチャネル評価方法に関する。
【背景技術】
【0002】
従来、暗号処理機能を搭載したLSI(Large Scale Integration)等の集積回路において、暗号回路が動作する際に発生するサイドチャネル情報を解析し、秘密情報(例えば暗号鍵等)を不正に盗み出すサイドチャネル攻撃が周知である。このような背景から、暗号処理機能を有する組み込み機器で使用するLSIには、サイドチャネル攻撃に対して充分な耐性を持つことが求められている。
【0003】
サイドチャネル攻撃に対する耐性評価としては、例えば特許文献1に示すようなサイドチャネル評価装置を用いた方式が存在する。このサイドチャネル評価装置では、例えば平文、暗号文、暗号鍵等を入力として暗号化の中間データのハミング重みやハミング距離等を出力する選択関数に着目し、特定の選択関数に対して、暗号鍵を解読する解析を行う。そして、この選択関数出力とサイドチャネル情報との間に相関があるか否かを解析し、サイドチャネル攻撃に対する脆弱性を確認する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】国際公開2009/099089号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、特許文献1は、特定の選択関数に対して暗号鍵を解読する解析を行い、選択関数ごとに暗号鍵の解読可否を評価する技術である。このため、どの選択関数を用いるかは評価時に適切に設定する必要がある。しかし、例えばLSIに内在する脆弱性が未知の場合には、全ての脆弱性候補、つまり全選択関数で評価を行う必要が生じ、この場合は膨大な計算が必要になるので、評価時間が長期間に亘ることとなり、実施は実際のところ困難である実情があった。
【0006】
本発明の目的は、暗号装置の不正解読に対する耐性評価にかかる時間を短時間化することができるサイドチャネル評価装置及びサイドチャネル評価方法を提供することにある。
【課題を解決するための手段】
【0007】
前記問題点を解決するために、本発明では、暗号装置の不正解読に対する耐性を評価するサイドチャネル評価装置において、前記暗号装置から漏洩するサイドチャネル情報を入力するサイドチャネル情報入力部と、前記暗号装置で取り扱う暗号データを入力する暗号データ入力部と、前記サイドチャネル情報の計算に用いる選択関数を複数登録した選択関数データベースから、評価を行う前記選択関数を選び出し、暗号鍵の一部である部分鍵と、前記暗号データ入力部で入力した前記暗号データとを用いて、前記選択関数により計算上のサイドチャネル情報を求める演算部と、前記サイドチャネル情報入力部で入力した前記サイドチャネル情報と、求めた選択関数出力との相関を計算する相関計算部と、前記相関計算部が求めた相関係数と閾値とを比較し、その比較結果を出力する比較出力部とを備え、前記部分鍵が指定サイズ未満の選択関数のみを抽出して前記選択関数データベースに登録しておき、これら選択関数でのみ耐性評価を実施することを要旨とする。
【0008】
本発明の構成によれば、演算部は、選択関数データベースを参照して選択関数を選び出し、暗号鍵の一部である部分鍵と、暗号データ入力部で入力した暗号データとを、選び出した選択関数に入力する。このとき、選択関数は、暗号データ及び部分鍵を入力として計算を行い、この計算結果として選択関数出力を相関計算部に出力する。相関計算部は、入力した選択関数出力と、サイドチャネル情報入力部で入力したサイドチャネル情報との相関を計算する。比較出力部は、相関関数とその閾値とを比較し、相関関数が閾値以上のとき、この交換関数を暗号鍵が不正解読される可能性のある関数として出力する。以上の評価を、選択関数データベース内の各選択関数において実施する。
【0009】
また、本構成の場合、評価時に用いる選択関数を、部分鍵が指定サイズ未満の選択関数に絞り込んだので、評価時に計算しなくてはならない選択関数の数が少なく済む。このように、評価を行う選択関数を制限すれば、その分、評価にかかる時間を短く抑えることが可能となる。
【0010】
本発明では、想定される全ての前記選択関数を抽出し、その全選択関数の中から前記部分鍵が指定サイズ未満の選択関数を抽出し、抽出した当該選択関数を、評価時に使用する関数として前記選択関数データベースに登録することを要旨とする。この構成によれば、想定される全選択関数を確認し、その中から評価に必要な選択関数を抽出する。よって、使用対象とする選択関数を、好適に選び出すことが可能となる。
【0011】
本発明では、前記全選択関数の抽出は、前記暗号装置にガロア体上のべき乗変換が使用されている場合、当該べき乗変換の入出力ビット列を同一ビット数の線形マスク値(「0」を除く)でマスクした値の奇数パリティビットを、計算上のサイドチャネル情報として出力する選択関数を含むことを要旨とする。この構成によれば、非線形回路を有する暗号装置の場合、非線形回路の遷移確率の偏りを利用した選択関数が存在するが、この選択関数も精度よく抽出することが可能となる。
【0012】
本発明では、暗号装置から漏洩するサイドチャネル情報の計算に用いる選択関数を複数登録した選択関数データベースから、評価を行う前記選択関数を演算部が選び出し、暗号鍵の一部である部分鍵と、前記暗号装置で取り扱う暗号データを入力する暗号データ入力部で入力した当該暗号データとを用いて、前記演算部が前記選択関数により計算上のサイドチャネル情報を求め、前記暗号装置から漏洩するサイドチャネル情報を入力するサイドチャネル情報入力部で入力した実測のサイドチャネル情報と、前記選択関数により求めた選択関数出力との相関を相関計算部により計算し、求めた相関係数と閾値とを比較した比較結果を比較出力部から出力することにより、前記暗号装置の不正解読に対する耐性を評価するサイドチャネル評価方法において、前記部分鍵が指定サイズ未満の選択関数のみ抽出して前記選択関数データベースに登録しておき、これら選択関数でのみ耐性評価を実施することを要旨とする。
【発明の効果】
【0013】
本発明によれば、暗号装置の不正解読に対する耐性評価にかかる時間を短時間化することができる。
【図面の簡単な説明】
【0014】
図1】一実施形態のAES−128の中間値記号の定義を示す説明図。
図2】ループ型構造の暗号装置の概要図。
図3】サイドチャネル評価装置の構成図。
図4】SubBytes変換の概要を示すモデル図。
図5】別のGF(256)上で逆元演算を行うSubBytes変換の概要を示すモデル図。
図6】AES−128における選択関数の種類と数を示す表。
図7】部分鍵の推測バイト数と計算可能な中間値バイトとの関係を示す表。
図8】ラウンド関数入力2値間のハミング距離を導出するときの概念図。
図9】ラウンド関数入力とSubBytes変換出力との間のハミング距離を導出するときの概念図。
図10】中間値2値のハミング距離を計算するときの概念図。
図11】計算量削減後のAES−128における選択関数の種類と数を示す表。
図12】サイドチャネル攻撃に対する耐性評価時に実行されるフローチャート。
【発明を実施するための形態】
【0015】
以下、本発明のサイドチャネル評価装置及びサイドチャネル評価方法を、解析手法としてCPA(Correlation Power Analysis:相関電力解析)に具体化した一実施形態を図1図12に従って説明する。CPAは、暗号機能が動作する際の内部データ値に依存して消費電力値が変動する脆弱性(依存関係)を抽出する解析手法である。
【0016】
[AES(Advanced Encryption Standard)の概要]
図1に示すように、暗号のブロックサイズが128ビットのAES(以降、AES−128と記す)は、SubBytes(バイト毎の非線形変換)と、ShiftRows(バイト単位の入れ替え)と、MixColumns(4バイト単位の線形変換)と、AddRoundKey(ラウンド鍵との排他的論理和)との4種類の変換で構成されるラウンド関数による変換を、10ラウンド繰り返すことで、平文を暗号文に変換する。但し、1ラウンド目のラウンド関数変換前にもAddRoundKeyが行われ、10ラウンド目のラウンド関数ではMixColumns変換を行わない。AddRoundKeyで用いるラウンド鍵は128ビットの秘密鍵から計算される値であり、この計算を行う関数は一般的に鍵スケジューラと呼ばれている。
【0017】
本例の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]とする。
【0018】
[CPAの概要]
一般的な論理回路の場合、LSIにおけるレジスタの遷移ハミング距離と消費電力との間には、線形相関があることが多い。遷移ハミング距離は、レジスタの値がある値に切り替わる際に、レジスタがビット反転した数に相当する。CPAは、推測した遷移ハミング距離と消費電力との間のピアソン相関計数の大きさで、推測の正しさを判断する解析手法である。
【0019】
図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出力を表す。
【0020】
【数1】
従って、例えば暗号文が入手可能であると仮定すると、K[160]の値(秘密鍵の値)を推測することで、レジスタ1バイト分の遷移ハミング距離の推測値が計算できる。このハミング距離の計算を行う関数は、一般的に選択関数と呼ばれている。K[160]の推測値をパラメータ「k」で表したとき、本例における選択関数の出力Hは次式(2)で表される。なお、式(2)中のHD(A,B)はAとBとの間のハミング距離を計算する関数とし、HW(A)はハミング重みを計算する関数とする。
【0021】
【数2】
ここで、N回の暗号処理時の暗号文と消費電力とを測定したとき、n番目のサンプルにおける暗号文バイトC[0]を式(2)に入力した際に得られる出力をHk,nとする。同様に、n番目のサンプルにおける消費電力値をWとする。このとき、次式(3)で計算されるピアソン相関係数ρが最大値となる推測値「k」が、K[160]の真の値である可能性が高い。
【0022】
【数3】
式(3)の消費電力Wは、レジスタの値が遷移する際の消費電力値としている。従って、解析対象とする電力消費が発生する時刻が既知であることを仮定している。しかし、レジスタの値が遷移する時刻の特定が困難な場合には、時間波形Wt,nで解析を行うことで、計算量の増加と引き換えに、この条件を緩和することができる。この場合、評価値であるピアソン相関係数ρは、次式(4)により計算される。
【0023】
【数4】
[選択関数の説明]
前述のCPAの例では、ループ型構造に起因した選択関数を用いて説明した。このように、例えばLSI設計者が自ら設計したLSIを評価する場合など、予めLSIの実装情報を知っていれば、この実装情報を用いることで適切な選択関数を選ぶことができる。従って、実装情報が入手可能な条件下では、解析が成立する可能性のある選択関数のみをピックアップして評価すればよい。
【0024】
一方、実装情報がない場合には、適切な選択関数を選ぶことができないので、安全性を評価するためには、全ての選択関数で解析が成立しないことを確認しなくてはならない。この選択関数の種類をhとし、このhに推測部分鍵kを入力したときのnサンプル目の出力をHh,k,nとする。このとき、式(5)で計算されるρ(h,k)や、式(6)で導出されるρ(h,k,t)は、全てのhにおいて評価する必要がある。部分鍵kは、選択関数ごとに鍵値が異なり、評価対象となる選択関数に応じてバイト数も異なる。
【0025】
【数5】
【0026】
【数6】
[サイドチャネル評価装置の構成]
本例の場合、評価処理時の計算量削減として、真の部分鍵kを「既知の値」と仮定して、式(5)や式(6)のパラメータ「k」を固定値化した条件下で評価を実施する。この条件下での評価関数は、次式(7),(8)となる。これら式からも分かるように、パラメータ「k」をなくした分、式(5),(6)と比較して、計算量を削減できることが分かる。
【0027】
【数7】
【0028】
【数8】
図3に、サイドチャネル評価装置1の構成を示す。LSI等の暗号装置2には、暗号装置2が入出力する各種データを測定する測定部3が接続されている。測定部3は、暗号装置2が入出力する暗号データDenを取得するとともに、暗号装置2から漏洩するサイドチャネル情報Dscを測定する。暗号データDenには、例えば平文、暗号文等がある。また、サイドチャネル情報Dscには、例えば消費電力、漏洩電磁波、音、温度等がある。測定部3は、取得した暗号データDen及びサイドチャネル情報Dscをサイドチャネル評価装置1に出力する。
【0029】
サイドチャネル評価装置1には、測定部3からサイドチャネル情報Dscを入力するサイドチャネル情報入力部4と、測定部3から暗号データDenを入力する暗号データ入力部5と、暗号装置2から真の暗号鍵Ktrを入力する暗号鍵入力部6とが設けられている。本例の場合、安全性評価を行う作業者は評価対象の暗号鍵を知っていると仮定しているので、暗号装置2に書き込まれた真の暗号鍵Ktrの値を暗号鍵入力部6に入力することが可能である。なお、暗号鍵入力部6が演算部に相当する。
【0030】
サイドチャネル評価装置1には、使用する選択関数を選択する選択関数制御部7と、各選択関数に必要な部分鍵kを計算する部分鍵計算部8と、評価時に使用する選択関数が複数格納された選択関数データベース9とが設けられている。選択関数制御部7は、選択関数データベース9を参照して、その時々に必要とする選択関数を選び出す。部分鍵計算部8は、真の暗号鍵Ktrを基に部分鍵kを計算し、評価中の選択関数に必要な部分鍵kを適宜出力する。選択関数データベース9には、評価時に必要とされる選択関数が全て登録されている。なお、選択関数制御部7及び部分鍵計算部8が演算部に相当する。
【0031】
選択関数制御部7により選ばれた選択関数は、暗号データDen及び部分鍵kを入力とし、暗号化の中間データのハミング重みやハミング距離を計算して出力する。選択関数の計算は、選択関数が指定される度に実行される。
【0032】
サイドチャネル評価装置1には、サイドチャネル情報Dsc及び選択関数出力Hとの相関を計算する相関計算部10と、相関計算部10が計算した相関係数(相関値)ρと閾値ρkとを比較する比較部11と、相関係数ρが閾値ρk以上となる選択関数を出力する出力部12とが設けられている。相関計算部10は、サイドチャネル情報入力部4からサイドチャネル情報Dscを入力し、これと選択関数出力とを比較することにより相関係数ρを計算する。相関係数ρが閾値ρk以上の場合、この相関係数ρが出力された選択関数は秘密情報の解析に利用される可能性があるので、この選択関数を出力部12により出力して作業者に通知する。なお、比較部11及び出力部12が比較出力部に相当する。
【0033】
サイドチャネル評価装置1には、脆弱性評価の評価レベルを作業者が自由に切り替え設定可能とする評価レベル設定部13が設けられている。評価レベル設定部13により評価レベルが「高い側」に設定されると、選択関数データベース9から選択関数が多く選択されて、評価が実行される。一方、評価レベル設定部13により評価レベルが「低い側」に設定されると、選択関数データベース9から選び出される選択関数が少なく設定されて、評価が簡素化される。
【0034】
[選択関数の種類の考察]
ここでは、想定されるAES−128の選択関数について考察する。
(I)レジスタの遷移ハミング距離モデルに基づく選択関数
本節では、[CPAの概要]の節で挙げた例での選択関数と同様に、レジスタの遷移ハミング距離と消費電力との間に線形相関があると仮定する消費電力モデルを用いた選択関数を検討する。このモデルでは、レジスタの遷移前後のデータ2値により、消費電力を推定する。[CPAの概要]の節で挙げた例の場合、R10[0]とC[0]がこの2値に相当する。
【0035】
このモデルに基づく選択関数は、レジスタにどのような値が保持されるかによって決定される。即ち、保持され得る中間値全てを考えることで、全ての選択関数を抽出できる。AES−128は、バイト単位で演算を行うため、レジスタに保持される値もバイト単位で検討することが妥当である。本節では、図1で定義した暗号化中間値バイトRi[j],Si[j],Mi[j]及び平文バイトP[j]、暗号バイトC[j]のいずれかがレジスタに保持されるものと仮定する。
【0036】
(I−1)平文・暗号文バイトを含む選択関数
平文バイトP[j]や暗号文バイトC[j]のバイト間のハミング距離を出力する選択関数では、式(3)のパラメータ「k」の要素がないため、暗号鍵解析には使えない。しかし、これらのバイトと暗号化中間値バイトRi[j],Si[j],Mi[j]とのハミング距離は、[CPAの概要]の節で挙げた例のように解析に用いることができる。
【0037】
(I−2)平文・暗号文バイトを含まない選択関数
暗号化中間値バイトRi[j],Si[j],Mi[j]のうち、2値のハミング距離を出力する選択関数も解析に用いることができる。
【0038】
(I−3)レジスタのゼロクリアを考慮した選択関数
レジスタ遷移前後のデータは必ずしも暗号化データとは限らず、例えばマイクロコンピュータ等では遷移毎にゼロクリアが行われる場合が考えられる。この場合のレジスタの遷移ハミング距離は、暗号データ1値のハミング重みと一致する。なお、この場合、データのハミング重みとも分類可能だが、本項ではこの場合もレジスタの遷移ハミング距離モデルと分類する。
【0039】
(I−4)異なる暗号処理のハミング距離選択関数
レジスタ値が遷移する際、その前後の値は必ずしも同一の暗号処理時のものとは限らない。例えば、レジスタの値が平文Aを暗号化する際の中間値データから、平文Bを暗号化する際の中間値データに遷移する場合も考えられる。このような平文Aと平文Bとの関係は、実装方法に依存して様々な場合が存在し、例えば「連続して暗号化を行う2つの平文データ」である場合等が挙げられる。
【0040】
この場合の選択関数として、異なる種類の中間値データの間のハミング距離(例えば、平文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]とのハミング距離を出力とする選択関数も存在する。
【0041】
また、同じ種類の中間値データ(例えば、平文Aから計算したS1[5]と平文Bから計算したS1[5]とは異なる値である)のハミング距離を出力とする選択関数も、解析が成立する可能性がある。
【0042】
(II)非線形回路の遷移確率の偏りを利用した選択関数
Iで挙げた選択関数の他に、非線形回路の出力遷移確率の偏りを利用した選択関数も存在する。例えば、非線形回路である2入力AND回路にランダムな値を順次入力したとき、出力が遷移する確率は平均3/8である。ここで、この出力値のある時刻の値が「1」である場合に限定すると、前後の時刻と出力値とが異なる確率、つまり出力遷移確率は3/4となる。また、「0」である場合には、出力遷移確率は1/4となる。従って、出力値で消費電力を分類した場合に、その平均値の間に差分が生じる。この偏りは、ある時刻の入力1ビットで分類した場合にも生じ、同様な平均消費電力差分を生じる。
【0043】
AES−128のデータ変換仕様において、非線形回路が用いられる可能性があるのはSubBytes変換のみである。このSubBytes変換はバイト単位での全単射変換であり、図4に示すようにガロア体GF(256)上の逆元変換とaffine変換とで構成される。affine変換は線形変換であるため、逆元変換部のみが非線形変換を行う。従って、この逆元変換の入出力ビット値は非線形回路の入出力に接続されている可能性が高く、これらビットを出力とする選択関数では、解析が成立する可能性があると考えられる。
【0044】
このGF(256)上の逆元変換は、図5に示すように線形写像δ(及び逆写像δ−1)を用いて別のGF(256)上の逆元変換とすることができる。このとき、特定のGF(256)は小規模な回路で逆元変換を構成できることが知られており、この性質を利用したSubBytes変換回路が知られている。従って、逆元変換の入出力ビットは、実装方法に依存して変化する。
【0045】
特定のGF(256)への線形写像は複数種類存在し、さらに前述のような回路規模削減が可能なGF(256)は数多く存在する。従って、SubBytes回路の実装時には、これらのGF(256)上で逆元演算回路を構成する可能性を考慮すべきである。しかし、解析時に全ての線形写像を考慮する場合、線形写像の数だけ選択関数が増加することになってしまう。そこで、本節では、逆元変換回路の入出力ビット値を選択関数とするとき、そのビット位置までは考慮する必要が無いことに着目し、選択関数の総数を検討した。
【0046】
任意の線形写像で変換した各ビットは、1バイトの線形マスク値をΓとしてΓ≠0の255値でマスクした値の奇数パリティビット255値のいずれかと必ず一致する。例えば、式(11)の左側のδで写像したときの逆元変換への入力のMSBは、Γ=A0(HEX)でマスクしたときのパリティと一致し、同様にLSBはΓ=43(HEX)のときと同値である。このように、真の逆元変換回路への入力8ビットは、必ずこの255種の選択関数出力に含まれる。さらに、逆元変換回路内部において線形変換が行われる実装の場合、この線形変換も考慮できる。
【0047】
同様に、逆元変換の出力をSubBytes出力バイトから計算する場合には、affine変換において行われるベクトル加算の逆変換、つまり63(HEX)との排他的論理和を行った上で、同様に線形マスク値でマスクしたときのパリティを計算する。これらの選択関数は次式(9)〜(11)で表される。
【0048】
【数9】
【0049】
【数10】
【0050】
【数11】
(III)ZV−DPAを解析手法とする選択関数
SubBytes変換への入力バイトが「00(HEX)」の場合とそれ以外とを分類する解析ZV−DPA (Zero Value Diffetential Power Analysis)が周知である。逆元変換への入力バイトが「00(HEX)」である場合、「00(HEX)」は、どのGF(256)上においても逆元が「00(HEX)」であり、内部論理回路の入出力ビットも全て「0」となることから、特異な電力消費挙動となる。Zero Value DPAの選択関数は、逆元変換を行うGF(256)に依存せず、次式(12)で表される。
【0051】
【数12】
図6に、(I)〜(III)で抽出した選択関数の種類を示す。これら全ての選択関数について、式(7)や式(8)の評価式で計算した際に、相関を生じる選択関数が存在しないLSIは電力解析攻撃に対して充分な耐性があると言える。なお、[選択関数の種類の考察]の章で述べた内容が全選択関数抽出ステップに相当する。
【0052】
[計算量削減の検討]
(I)はじめに
[CPAの概要]の節で挙げた例で用いた選択関数は、ラウンド鍵の一部(即ち、部分鍵k)であるK[160]の1バイトのみ推測し、その推測候補毎に計算したピアソン相関係数ρを比較した。即ち、解析に必要な計算量は、1バイト(2個)の鍵候補毎にピアソン相関係数ρを導出する計算量となる。一方で、鍵候補の数、つまり部分鍵kのサイズは選択関数毎に異なる。例えば、選択関数に入力する部分鍵kのサイズが5バイトの場合には、240個の鍵候補毎に計算が必要である。従って、図6の表で示す全ての選択関数に対して、[CPAの概要]の節で挙げた例で述べたものと同じ解析を試みることは現実的に困難である。
【0053】
(II)部分鍵サイズによる選択関数の分類
本節では、図6の表で挙げたAES−128における全ての選択関数を、評価すべき選択関数と選択対象外とすることが可能な選択関数とに分類することを検討する。
【0054】
(II−1)評価すべき選択関数の条件定義
攻撃者が不正解読を試みる場合、部分鍵kの候補毎に相関関数を計算する必要があるため、部分鍵サイズが大きくなると攻撃は困難になり、16バイトの部分鍵kを推測する場合は、暗号鍵の全数探索の方が効率の良い攻撃方法となる。そこで、本節では、16バイト以上の部分鍵kを必要とする選択関数を、評価対象から除外する場合を例として説明する。
【0055】
(II−2)暗号化中間値バイト及び部分鍵サイズについて
選択関数に入力する部分鍵kは、暗号化中間値バイトを計算するために必要となる。そこで、まず各中間値バイトを導出するために必要な部分鍵kの推測バイト数を探索した。図7に、その結果を示す。同図に示されるように、部分鍵kの推測バイト数が「0」のときは、計算可能な中間値バイトとして、単に実測のP[j]及びC[j]のみ計算可能であり、部分鍵kの推測バイト数が変わるに連れて、計算可能な中間値バイトが切り換わることが分かる。
【0056】
(II−3)評価すべきレジスタのハミング距離モデルに基づく選択関数の探索
本節では、[選択関数の種類の考察]で説明したレジスタのハミング距離モデルに基づく選択関数のうち、部分鍵サイズが16バイト未満のものを探索する。
【0057】
まず、[選択関数の種類の考察]の(I−3)で説明した特定1値の中間値バイトのハミング重みを出力とする選択関数から探索する。この種類の選択関数における部分鍵サイズは、選択関数によってハミング重みを計算する中間値を導出するために必要な部分鍵kの推測バイト数と一致する。従って、図7の表から、11種類の中間値が計算可能なことが分かり、それぞれのバイト位置(j=0〜15)を考慮すると、「176」種の選択関数が、評価すべき選択関数であることが分かる。
【0058】
続いて、[選択関数の種類の考察]の(I−1)及び(I−2)で説明した同一平文を暗号化する際の暗号化データ間のハミング距離を出力とする選択関数の場合を探索する。この場合、暗号化データ2値の両方を導出するために必要な部分鍵kの推測バイト数で選択関数を分類する必要がある。例えば、図8に示すように、R10[11]とR10[15]とのハミング距離を導出する場合、K[175]を推測部分鍵バイトとして暗号文バイトC[15]からR10[11]を計算し、K[163]を推測部分鍵バイトとして暗号文バイトC[3]からR10[15]を計算する。即ち、各々の中間値を計算する際の部分鍵kの推測バイト数の合計となる。
【0059】
一方、S10[15]とR10[15]とのハミング距離を導出する場合を考える。この場合、図9に示すように、K[163]を推測部分鍵バイトとしてS10[15]を計算し、さらにそのS10[15]の逆SubBytesへ間を行うことでR10[15]が計算できる。即ち、各々の中間値を計算する際の部分鍵kの推測バイト数が、そのまま合計となる。
【0060】
以上のように、中間値2値のハミング距離を計算する場合には、その組み合わせに応じて必要となる部分鍵kの推測バイト数が変動する。また、この他にも鍵スケジューラの特性に依存した要因も存在する。例えば、S10[1]とM9[13]とのハミング距離を求める場合における部分鍵kの推測バイト数は、図10に示すように、K[157],K[169],K[173]の3バイトである。
【0061】
この3バイトの部分鍵バイト間には、鍵スケジューラの仕様上、次式(13)で示す関係があるため、実質的な部分鍵kの推測バイト数は2バイトと考えることができる。
【0062】
【数13】
以上の検討結果を考慮して、部分鍵kの推測バイト数が16バイト未満となるAES−128の中間値の組み合わせを探索したところ、20447組が見つかった。従って、特定2値のハミング距離を出力とする選択関数は、「20447」種である。
【0063】
最後に、[選択関数の種類の考察]の(I−4)の選択関数の場合を考える。これは、[選択関数の種類の考察]の(I−4)と同様の方法を用いて、20447×2+176=「41070」種と計算できる。
【0064】
(II−4)評価すべき非線形回路の遷移確率の偏りを利用した選択関数の探索
本項では、[選択関数の種類の考察]の(II)で説明した非線形回路の遷移確率の偏りを利用した選択関数のうち、部分鍵サイズが16バイト未満のものを探索する。この種類の選択関数の部分鍵サイズは、Ri[j],Si[j]の各バイトを導出するために必要な部分鍵サイズと等しいため、図7の表により、i=1,2,9,10の場合の選択関数が、評価すべき選択関数である。従って、これら選択関数の数は、Ri[j]及びSi[j]のうち、i=1,2,9,10を満たす数の総和とΓの候補数255の積であり、「32640」種である。
【0065】
(II−5)評価すべきZV−DPAの選択関数の探索
本項では、[選択関数の種類の考察]の(III)で説明したZV−DPAの選択関数のうち、部分鍵サイズが16バイト未満のものを探索する。この種類の選択関数の部分鍵サイズは、Si[j]の各バイトを導出するために必要な部分鍵サイズと等しいため、図7の表により、i=1,2,9,10の場合の選択関数が、評価すべき選択関数である。従って、これら選択関数の数は、Ri[j]及びSi[j]のうち、i=1,2,9,10を満たす数の総和であり、「64」種である。
【0066】
(II−6)評価すべき選択関数の数
本節の(II−1)〜(II−5)の検討で抽出したAES−128における評価すべき選択関数の種類及び数を図11に示す。同図に示される「94397」種の選択関数は、図6に示される種類の選択関数の総数より少なくなっていることが確認され、計算負荷が削減されたと言える。本例の場合、本節の(II−1)〜(II−5)の検討で抽出された選択関数が選択関数データベース9に登録されている。なお、[計算量削減の検討]の章で述べた内容が使用選択関数抽出ステップに相当する。
【0067】
次に、本例のサイドチャネル評価装置1の動作を、図12のフローチャートを用いて説明する。
ステップ101において、サイドチャネル情報入力部4は、測定部3が測定した実測のサイドチャネル情報Dscを、測定部3から入力する。
【0068】
ステップ102において、暗号データ入力部5は、測定部3が測定した暗号データDenを、測定部3から入力する。
ステップ103において、暗号鍵入力部6は、暗号装置2に書き込まれた真の暗号鍵Ktrを、暗号装置2から入力する。即ち、サイドチャネル攻撃に対する安全性評価を行う作業者は暗号装置2の暗号鍵を知っていると仮定しているので、この暗号鍵を暗号装置2からサイドチャネル評価装置1に入力する。暗号鍵入力部6は、取得した真の暗号鍵Ktrを部分鍵計算部8に出力する。
【0069】
ステップ104において、部分鍵計算部8は、暗号鍵入力部6から入力した真の暗号鍵Ktrを基に、各選択関数に必要な部分鍵kを計算する。部分鍵計算部8は、選択関数データベース9を参照することにより、選択関数データベース9内にある選択関数を把握し、これら選択関数に必要な部分鍵kをまとめて計算しておく。部分鍵kのビット数、つまり部分鍵kのサイズは、各選択関数に応じて異なる。
【0070】
ステップ105において、選択関数制御部7は、選択関数データベース9を参照することにより、評価を行う選択関数を選択する。なお、選択関数の評価の順番や、どの選択関数を選び出すのかは、評価レベル設定部13で選択されたレベルに応じて決まる。この評価レベルには、各選択関数に応じて異なる部分鍵kのサイズや、[選択関数の種類の考察]の節で挙げた選択関数の種類が用いられる。また、選択関数制御部7は、選択した選択関数に必要な部分鍵kを、部分鍵計算部8から抽出して選択関数に入力する。
【0071】
ステップ106において、選択関数制御部7は、暗号データ入力部5で入力した暗号データDenと、選択関数制御部7により指定された部分鍵kとを用い、選び出した選択関数(計算方法)で計算を実行する。この計算結果である選択関数出力Hは、相関計算部10に入力される。
【0072】
ステップ107において、相関計算部10は、サイドチャネル情報入力部4で入力したサイドチャネル情報と、選択関数の計算結果である選択関数出力Hとの間の相関を計算する。相関計算部10は、計算した相関係数ρを比較部11に出力する。
【0073】
ステップ108において、比較部11は、相関計算部10から取得した相関係数ρと閾値ρkとを比較する。このとき、相関係数ρが閾値ρk以上であるならば、この相関係数ρを導き出した選択関数は、秘密情報の解析に利用される可能性がある。よって、比較部11は、相関係数ρが閾値ρk以上となると、この相関係数ρを計算した選択関数を出力部12に通知する。
【0074】
ステップ109において、出力部12は、比較部11から通知を受けた選択関数をディスプレイに表示するなどして、秘密情報の解析に利用される可能性のある選択関数をユーザに通知する。これにより、作業者は、秘密情報の解析に利用されるおそれのある選択関数が何であるのかが分かる。
【0075】
ステップ110において、選択関数制御部7は、選択関数データベース9内の全ての選択関数で評価が終了したか否かを判断する。このとき、未評価の選択関数が存在すれば、ステップ105に戻って他の選択関数の評価を同様に行い、全ての選択関数の評価が終了していれば、処理を終了する。
【0076】
本実施形態の構成によれば、以下に記載の効果を得ることができる。
(1)AES−128の全選択関数のうち、部分鍵kが16バイト以上の選択関数は攻撃が困難な関数として評価対象から除外し、部分鍵kが16バイト未満の選択関数を、評価を行うべき選択関数として設定する。このため、評価時に用いる選択関数を絞り込んだので、評価時に計算しなくてはならない選択関数の数が少なく済む。このように、評価を行う選択関数を制限すれば、その分、安全性評価にかかる時間を短く抑えることができる。
【0077】
(2)[選択関数の種類の考察]の節の(I)〜(III)で説明したように、AES−128において確認すべき全選択関数を抽出し、その中から部分鍵kが16バイト未満の選択関数を、評価を行うべき選択関数として抽出する。よって、選択関数の抽出を行うにあたり、AES−128で想定し得る全選択関数を確認するようにしたので、使用対象とする選択関数を、好適に選び出すことができる。
【0078】
(3)部分鍵kが16バイト以上の選択関数は、暗号鍵の全数探索の方が効率の良い攻撃方法となるので、攻撃に対して耐性の高い関数であると言える。よって、安全性評価を行うにあたり、部分鍵kが16バイト以上の選択関数を評価対象から除外するようにしても、評価の精度という点において何ら問題はない。
【0079】
(4)暗号装置2に非線形回路が備わる場合、非線形回路の出力遷移確率の偏りを利用した選択関数も存在する。この場合、[選択関数の種類の考察]の節の(II)で説明したように、式(9)〜(11)を用いて計算を行えば、この選択関数も精度よく抽出することができる。
【0080】
(5)ガロア体上のべき乗変換とaffine変換を用いる暗号アルゴリズムであれば、非線形回路の遷移確率の偏りを利用した選択関数による評価が有効である。例えば、AESのSubBytesと同等の変換として、共通鍵暗号アルゴリズムCamelliaにおけるS1変換が挙げられる。このS1変換の入力ビット列S1inに対してベクトルC5の加算と線形変換とを行う。Affine変換を施したものが、べき乗変換の入力ビットである。即ち、次式(14)で表される選択関数が好適である。
【0081】
【数14】
なお、実施形態はこれまでに述べた構成に限らず、以下の態様に変更してもよい。
【0082】
・選択関数の絞り込みの閾値は、16バイトに限らず、評価精度を確保できるのであれば、これ以外の値を採用してもよい。
・選択関数の絞り込みの閾値は、固定値に限らず、例えば評価レベル設定部13等を用いて切り替えることが可能な可変値としてもよい。
【0083】
・部分鍵計算部8は、必要とする部分鍵kを一度に計算することに限らず、例えば評価を行う選択関数が選択される度に、都度計算を実施する形式をとってもよい。
・サイドチャネル情報Dscは、暗号装置2から漏洩する情報であれば、種々のものが採用可能である。
【0084】
・暗号データDenは、選択関数の入力となり得るデータであれば、種々のものが採用可能である。
・真の暗号鍵Ktrのビット数は、他の値に適宜変更してもよい。
【0085】
・暗号の種類は、AESに代えて、DES(Data Encryption Standard)等の他の暗号方式を採用してもよい。
・選択関数は、実測したサイドチャネル情報Dscとの相関を求めることができる出力を出せるものであれば、種々の関数が採用可能である。
【0086】
・安全性評価のレベル設定は、例えば使用する選択関数を作業者自らが1つひとつ適宜選択する方式でもよい。また、評価レベルを高〜低レベルの間で多段階(複数の選択関数群)に設定可能とし、選択されたレベル毎に、使用される選択関数が設定されてもよい。
【0087】
・サイドチャネル評価装置1は、測定部3を一体に組み込んだ装置でもよい。
・選択関数データベース9に書き込まれる選択関数は、適宜変更することが可能である。
【0088】
・AESは、暗号鍵サイズが196ビットや256ビットのものを採用してもよい。
・解析手法は、MIA(Mutual Information Analysis:相互情報量解析)や、EMA(ElectroMannetic Analysis:電磁波解析)等を採用することも可能である。
【0089】
・サイドチャネル評価装置1は、例えば特定の選択関数に対して暗号鍵の候補毎に暗号鍵を解析する解析を行い、解読できたか否かを評価する装置でもよい。この場合、暗号鍵候補毎に相関を計算し、最大の相関を示す暗号鍵を出力する。このように、サイドチャネル評価装置1は、種々のシステム構成のものが採用可能である。
【0090】
次に、上記実施形態及び別例から把握できる技術的思想について、それらの効果とともに以下に追記する。
(イ)暗号装置から漏洩するサイドチャネル情報の計算に用いる選択関数を複数登録した選択関数データベースから、評価を行う前記選択関数を演算部が選び出し、暗号鍵の一部である部分鍵と、前記暗号装置で取り扱う暗号データを入力する暗号データ入力部で入力した当該暗号データとを用いて、前記演算部が前記選択関数により計算上のサイドチャネル情報を求め、前記暗号装置から漏洩するサイドチャネル情報を入力するサイドチャネル情報入力部で入力した実測のサイドチャネル情報と、前記選択関数により求めた選択関数出力との相関を相関計算部により計算し、前記相関計算部が求めた相関係数と閾値とを比較した比較結果を比較出力部から出力することにより、前記暗号装置の不正解読に対する耐性を評価するサイドチャネル評価プログラムにおいて、前記部分鍵が指定サイズ未満の選択関数のみ抽出して前記選択関数データベースに登録しておき、これら選択関数でのみ実施される耐性評価をコンピュータに実行させることを特徴とするサイドチャネル評価プログラム。
【符号の説明】
【0091】
1…サイドチャネル評価装置、2…暗号装置、4…サイドチャネル情報入力部、5…暗号データ入力部、6…演算部を構成する暗号鍵入力部、7…演算部を構成する選択関数制御部、8…演算部を構成する部分鍵計算部、9…選択関数データベース、10…相関計算部、11…比較出力部を構成する比較部、12…比較出力部を構成する出力部、Dsc…サイドチャネル情報、Den…暗号データ、Ktr…暗号鍵、k…部分鍵、H…選択関数出力、ρ…ピアソン相関係数、ρk…閾値、δ…線形写像。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12