以下、本発明の実施の形態について、図を用いて説明する。
実施の形態1.
図1は、本実施の形態に係る暗号処理装置10の構成を示すブロック図である。
図1において、暗号処理装置10は、データ入力部11、データ変換部12、鍵加算部13、データ暗号部14、データ補正部15、データ出力部16を備える。データ暗号部14は、拡大鍵生成部21を有する。各部の動作については後述する。
暗号処理装置10は、処理装置51、記憶装置52、入力装置53、出力装置54等のハードウェアを備える。ハードウェアは暗号処理装置10の各部によって利用される。例えば、処理装置51は、暗号処理装置10の各部でデータや情報の演算、加工、読み取り、書き込み等を行うために利用される。記憶装置52は、そのデータや情報を記憶するために利用される。また、入力装置53は、そのデータや情報を入力するために、出力装置54は、そのデータや情報を出力するために利用される。
図2は、暗号処理装置10のハードウェア構成の一例を示す図である。
図2において、暗号処理装置10は、コンピュータであり、LCD71(Liquid・Crystal・Display)、キーボード72(K/B)、マウス73、FDD74(Flexible・Disk・Drive)、CDD75(Compact・Disc・Drive)、プリンタ76といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。LCD71の代わりに、CRT(Cathode・Ray・Tube)、あるいは、その他の表示装置が用いられてもよい。マウス73の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。
暗号処理装置10は、プログラムを実行するCPU81(Central・Processing・Unit)を備えている。CPU81は、処理装置51の一例である。CPU81は、バス82を介してROM83(Read・Only・Memory)、RAM84(Random・Access・Memory)、通信ボード85、LCD71、キーボード72、マウス73、FDD74、CDD75、プリンタ76、HDD90(Hard・Disk・Drive)と接続され、これらのハードウェアデバイスを制御する。HDD90の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ又はその他の記憶媒体が用いられてもよい。
RAM84は、揮発性メモリの一例である。ROM83、FDD74、CDD75、HDD90は、不揮発性メモリの一例である。これらは、記憶装置52の一例である。通信ボード85、キーボード72、マウス73、FDD74、CDD75は、入力装置53の一例である。また、通信ボード85、LCD71、プリンタ76は、出力装置54の一例である。
通信ボード85は、LAN(Local・Area・Network)等に接続されている。通信ボード85は、LANに限らず、IP−VPN(Internet・Protocol・Virtual・Private・Network)、広域LAN、ATM(Asynchronous・Transfer・Mode)ネットワークといったWAN(Wide・Area・Network)、あるいは、インターネットに接続されていても構わない。LAN、WAN、インターネットは、ネットワークの一例である。
HDD90には、オペレーティングシステム91(OS)、ウィンドウシステム92、プログラム群93、ファイル群94が記憶されている。プログラム群93のプログラムは、CPU81、オペレーティングシステム91、ウィンドウシステム92により実行される。プログラム群93には、本実施の形態の説明において「〜部」として説明する機能を実行するプログラムが含まれている。プログラムは、CPU81により読み出され実行される。ファイル群94には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ID(識別子)」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として含まれている。「〜ファイル」や「〜データベース」や「〜テーブル」は、RAM84やHDD90等の記憶媒体に記憶される。RAM84やHDD90等の記憶媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してCPU81によりメインメモリやキャッシュメモリに読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU81の処理(動作)に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU81の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
本実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、RAM84等のメモリ、FDD74のフレキシブルディスク(FD)、CDD75のコンパクトディスク(CD)、HDD90の磁気ディスク、光ディスク、DVD(Digital・Versatile・Disc)、あるいは、その他の記録媒体に記録される。また、データや信号は、バス82、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ROM83に記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、DVD等の記録媒体に記憶される。プログラムはCPU81により読み出され、CPU81により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
図3に暗号処理装置10の各部により実行される処理を示す。本実施の形態ではAESを例に示すが、本実施の形態の原理はDES(Data・Encryption・Standard)等の他の暗号にも適用可能である。また、図3は、鍵長128ビット、平文−暗号文128ビットを例に示すが、本実施の形態の原理はこれらのビット長が異なっても適用可能である。
図3において、暗号鍵101は、暗号鍵格納処理102によって、2倍のビット長の格納暗号鍵115として記憶装置52の記憶領域に蓄積される。格納暗号鍵115は暗号処理時に呼び出され、鍵初期変換処理103によって拡大鍵105に変換される。拡大鍵生成処理104は、拡大鍵105から拡大鍵106を生成する。以降、必要なサイズだけ拡大鍵生成処理104を繰り返し、拡大鍵107を得る。
平文108は初期変換処理109により変換された後、拡大鍵加算処理110にて拡大鍵105と加算され、その出力は非線形変換処理111に入力される。非線形変換処理111の出力は拡大鍵加算処理112にて拡大鍵106と加算される。以降、必要な回数だけ非線形変換処理111、拡大鍵加算処理112を繰り返す。最後の拡大鍵加算処理112の出力は最終変換処理113に入力され、暗号文114となる。
初期変換処理109、鍵初期変換処理103では、入力(平文108、格納暗号鍵115)に対して設計者が任意に指定できる線形変換及び定数マスクによる初期変換が行われる。最終変換処理113では、線形変換及び定数マスクの補正処理が行われる。
初期変換処理109、鍵初期変換処理103では、入力をx、線形変換をf(x)、定数マスクをmとした場合、IT(x)=f(x)+mを出力する。ここで、“+”は排他的論理和演算の演算子である(以降、同様とする)。初期変換処理109、鍵初期変換処理103において、平文108と格納暗号鍵115にかける線形変換は同一のものを用い、以下の条件を満たすものとする。初期変換処理109及び鍵初期変換処理103はテーブル参照のみで実現する。
(1)全単射である。
(2)排他的論理和演算に対して加法性が成立する。排他的論理和演算に対する加法性とは、関数f(x)について、f(a+b)=f(a)+f(b)を満たす性質である。
また、平文108に施す定数マスクと格納暗号鍵115に施す定数マスクは以下の条件を満たすよう設計する。
(1)0以外とする。
(2)平文108に施す定数マスクと格納暗号鍵115に施す定数マスクは互いに異なる。
最終変換処理113では、入力をx、線形変換をf(x)、補正マスクをm”とした場合、FT(x)=f−1(x+m”)を出力する。ここで、f−1(x)はf(x)の逆変換である(以降、同様とする)。最終変換処理113はテーブル参照のみで実現する。
拡大鍵生成処理104、非線形変換処理111は、線形変換及び定数マスクによる影響を考慮しながら実装する。具体的には、以下の条件を満たすように設計する。
(1)本来の処理における中間入力をxt、中間出力をyt=S(xt)とする。補正した処理における中間入力をxc=f(xt)+m、中間出力をyc=f(yt)+m’=S’(xc)とした場合、数式1となるようにS’(xc)を設計する。ただし、m、m’は設計者が決める定数である。また、数式1の計算は1回のテーブル参照で実行する。
数式1:
S’(xc)=f(S(f−1(xc+m)))+m’
(2)x1c=f(x1t)+mとx2c=f(x2t)+mとの排他的論理和x1c+x2cを求める場合、数式2に従って計算する。ただし、m”’=f(m)+m”とする。
数式2:
x1c+x2c=FT((IT(x1c+m”’))+IT(x2c))
(3)鍵初期変換処理103の実装において、テーブル参照をする場合、参照するアドレスバス及びデータバスのハミング重みが一定となるように実装する。具体的には格納暗号鍵115を4ビット以下の単位で分割し、各々を、以下の条件を満たすように8ビットに拡大する。
(ア)単射である。
(イ)ハミング重みが一定である。
拡大した8ビットデータに対してテーブル参照を行い、テーブル出力を演算して所定の出力を得る。このときに参照するテーブルとしては上記ビット拡大処理に対応したテーブルを用意する。
以下、図1及び図3を用いて、暗号処理装置10の各部の動作を説明する。
データ入力手順:データ入力部11は、入力装置53により入力データx(平文108)と暗号鍵データk(暗号鍵101)とを入力する。
データ変換手順:データ変換部12は、データ入力部11により入力された入力データxに対し、所定の線形変換処理を含む入力変換処理(初期変換処理109)を処理装置51により実行して入力変換データx’を生成する。また、データ変換部12は、データ入力部11により入力された暗号鍵データkに対し、上記所定の線形変換処理を含む鍵変換処理(暗号鍵格納処理102、鍵初期変換処理103)を処理装置51により実行して鍵変換データk’(拡大鍵105)を生成する。
鍵加算手順:鍵加算部13は、データ変換部12により生成された入力変換データx’と鍵変換データk’とを加算(拡大鍵加算処理110)して中間データi’を生成する。
データ暗号手順:データ暗号部14は、鍵加算部13により生成された中間データi’に対し、修正暗号処理(拡大鍵生成処理104、非線形変換処理111、拡大鍵加算処理112)を処理装置51により実行して暗号変換データe’を生成する。修正暗号処理は、AESの暗号処理(所定の暗号処理の一例)を中間データi’に対して実行可能にしたものである。具体的には、修正暗号処理は、AESの暗号処理に含まれる非線形変換処理の前に上記所定の線形変換処理の逆変換処理を付加するとともに当該非線形変換処理の後に上記所定の線形変換処理を付加したものである。
データ補正手順:データ補正部15は、データ暗号部14により生成された暗号変換データe’に対し、上記所定の線形変換処理の逆変換処理を含む補正処理(最終変換処理113)を処理装置51により実行して暗号データe(暗号文114)を生成する。この暗号データeは、入力データxに対し、暗号鍵データkを用いて、単にAESの暗号処理を実行した結果と同じものになる。
データ出力手順:データ出力部16は、データ補正部15により生成された暗号データeを出力装置54により出力する。
以下では、図3に示した各処理の詳細について説明する。
図4に初期変換処理109の構成を示す。データ変換部12は、入力201(入力データx)を8ビットずつに分解し、各々初期変換テーブルA202又は初期変換テーブルB203に入力する。データ変換部12は、8つの初期変換テーブルA202及び8つの初期変換テーブルB203から8ビットのテーブル出力を得て、結果を結合し、出力204(入力変換データx’)とする。なお、8つの初期変換テーブルA202はいずれも同一のテーブルである。8つの初期変換テーブルB203はいずれも同一のテーブルである。初期変換テーブルA202と初期変換テーブルB203とは異なってもよい。初期変換テーブルA202や初期変換テーブルB203は、例えば配列として記憶装置52に記憶されており、プログラムの実行時に処理装置51によって参照される。
このように、本実施の形態では、データ変換部12により実行される入力変換処理(初期変換処理109)は、入力データxを入力とし、入力変換データx’を出力とするテーブル(初期変換テーブルA202、初期変換テーブルB203)として実装している(1つのテーブルでもよいし、本実施の形態のようにデータを分割して処理する場合には複数のテーブルでもよい)。これにより、データ変換部12は、上記入力変換処理をテーブル参照のみにより実行することができるため、電力解析に対する耐性が向上する。
図5に初期変換テーブルA202及び初期変換テーブルB203の構成を示す。各初期変換テーブルの数値は事前計算しておき、テーブル参照で実現する。両者の構成は同一であるが、内部パラメータは異なる。初期変換テーブルA202で実現される処理では、入力301が半分ずつに分解され、各々に対し、線形変換処理A302、線形変換処理B303が施される。初期変換テーブルB203で実現される処理では、入力304が半分ずつに分解され、各々に対し、線形変換処理C305、線形変換処理D306が施される。前述したように、線形変換処理A302、線形変換処理B303、線形変換処理C305、線形変換処理D306は以下の条件を満たす任意の処理であり、設計者が指定する。関数f(x)の例としては、ガロア体上のアフィン変換、ガロア拡大体上の定数倍算、ガロア拡大体上の2n乗算がある。nは1以上の整数である。
(1)全単射である。
(2)排他的論理和演算に対して加法性が成立する。加法性とは関数f(x)に対してf(a+b)=f(a)+f(b)を満たす性質である。
初期変換テーブルA202で実現される処理では、線形変換処理A302、線形変換処理B303の出力が結合され、定数307との排他的論理和が施され、その結果が出力308となる。初期変換テーブルB203で実現される処理では、線形変換処理C305、線形変換処理D306の出力が結合され、定数309との排他的論理和が施され、その結果が出力310となる。定数307,309は設計者が任意に設定する。
このように、本実施の形態では、前述した所定の線形変換処理(線形変換処理A302、線形変換処理B303、線形変換処理C305、線形変換処理D306)は、上記(1)及び(2)の条件を満たすものである。即ち、上記所定の線形変換処理の対象となるデータをp、上記所定の線形変換処理の結果を関数f(p)で表すとき、f(p)は、全単射であり、かつ、f(a+b)=f(a)+f(b)(a,bは任意のデータである)を満たす。
なお、本実施の形態の変形例として、データ変換部12が、初期変換テーブルA202や初期変換テーブルB203で実現される処理の一部あるいは全部を、テーブル参照ではなく処理装置51により直接実行する(線形変換処理や排他的論理和の演算処理等を実際に実行する)ようにすることも可能である。
図6に拡大鍵加算処理110,112の構成を示す。鍵加算部13(拡大鍵加算処理110の場合)又はデータ暗号部14(拡大鍵加算処理112の場合)は、入力401(拡大鍵加算処理110の場合、入力変換データx’)と拡大鍵402(拡大鍵加算処理110の場合、鍵変換データk’)をビットごとの排他的論理和で加算し、出力403(拡大鍵加算処理110の場合、中間データi’)を得る。
図7に非線形変換処理111の構成を示す。データ暗号部14は、入力501(例えば、中間データi’)を8ビットごとに分解し、ShiftRow処理によってバイト単位で位置を入れ替える。ShiftRowはAESに準拠する。データ暗号部14は、入れ替え処理を行ったデータを非線形変換テーブルA502、非線形変換テーブルB503、非線形変換テーブルC504、非線形変換テーブルD505に入力する。データ暗号部14は、1つの非線形変換テーブルA502、1つの非線形変換テーブルB503、1つの非線形変換テーブルC504、1つの非線形変換テーブルD505の出力を排他的論理和する。即ち、データ暗号部14は、16個の非線形変換テーブルの出力を4つずつ排他的論理和する。データ暗号部14は、排他的論理和結果を結合して出力506を得る。なお、4つの非線形変換テーブルA502はいずれも同一のテーブルである。4つの非線形変換テーブルB503はいずれも同一のテーブルである。4つの非線形変換テーブルC504はいずれも同一のテーブルである。4つの非線形変換テーブルD505はいずれも同一のテーブルである。非線形変換テーブルA502、非線形変換テーブルB503、非線形変換テーブルC504、非線形変換テーブルD505は異なるテーブルである。非線形変換テーブルA502、非線形変換テーブルB503、非線形変換テーブルC504、非線形変換テーブルD505は、例えば配列として記憶装置52に記憶されており、プログラムの実行時に処理装置51によって参照される。
図8に非線形変換テーブルA502、非線形変換テーブルB503、非線形変換テーブルC504、非線形変換テーブルD505の構成を示す。各非線形変換テーブルの数値は事前計算しておき、テーブル参照で実現する。非線形変換テーブルA502で実現される処理では、入力601に対し、線形逆変換処理E602が施され、その出力がT−Table3に入力される。T−Table処理はAESに準拠する(T−Table0〜3については、例えば、非特許文献1参照)。T−Table3の32ビット出力は4つに分解され、それぞれに対して、上位から順に線形変換処理M603、線形変換処理N604、線形変換処理K605、線形変換処理L606が施される。それらの出力は結合され、32ビットの出力607となる。非線形変換テーブルB503で実現される処理では、入力608に対し、線形逆変換処理F609が施され、その出力がT−Table2に入力される。T−Table2の32ビット出力は4つに分解され、それぞれに対して、上位から順に線形変換処理I610、線形変換処理J611、線形変換処理G612、線形変換処理H613が施される。それらの出力は結合され、32ビットの出力614となる。非線形変換テーブルC504で実現される処理では、入力615に対し、線形逆変換処理E602が施され、その出力がT−Table1に入力される。T−Table1の32ビット出力は4つに分解され、それぞれに対して、上位から順に線形変換処理K605、線形変換処理L606、線形変換処理M603、線形変換処理N604が施される。それらの出力は結合され、32ビットの出力616となる。非線形変換テーブルD505で実現される処理では、入力617に対し、線形逆変換処理F609が施され、その出力がT−Table0に入力される。T−Table0の32ビット出力は4つに分解され、それぞれに対して、上位から順に線形変換処理G612、線形変換処理H613、線形変換処理I610、線形変換処理J611が施される。それらの出力は結合され、32ビットの出力618となる。
なお、本実施の形態の変形例として、データ暗号部14が、非線形変換テーブルA502、非線形変換テーブルB503、非線形変換テーブルC504、非線形変換テーブルD505で実現される処理の一部あるいは全部を、テーブル参照ではなく処理装置51により直接実行する(線形変換処理、線形逆変換処理、T−Table処理、排他的論理和の演算処理等を実際に実行する)ようにすることも可能である。
図9に線形逆変換処理E602及び線形逆変換処理F609の構成を示す。線形逆変換処理E602と線形逆変換処理F609はパラメータが異なるが、構成は同じである。線形逆変換処理E602では、入力701が定数702と排他的論理和される。線形逆変換処理F609では、入力703が定数704と排他的論理和される。定数702は数式3から、定数704は数式4から求める。ここで、||はデータの連接を示す(以降、同様とする)。なお、定数307,309は、図5に示したものである。定数1309〜1312については、後で図16に示す。
数式3:
定数702=定数307+(定数1309||定数1310)
数式4:
定数704=定数309+(定数1311||定数1312)
線形逆変換処理E602では、排他的論理和の結果が4ビットずつに分解され、各々に対して、上位から順に線形逆変換処理A705、線形逆変換処理B706が施される。線形逆変換処理A705は、図5に示した初期変換テーブルA202における線形変換処理A302の逆変換処理である。同様に線形逆変換処理B706は、初期変換テーブルA202における線形変換処理B303の逆変換処理である。線形逆変換処理E602では、線形逆変換処理A705、線形逆変換処理B706の出力が結合され、出力707となる。線形逆変換処理F609では、排他的論理和の結果が4ビットずつに分解され、各々に対して、上位から順に線形逆変換処理C708、線形逆変換処理D709が施される。線形逆変換処理C708は、図5に示した初期変換テーブルB203における線形変換処理C305の逆変換処理である。同様に線形逆変換処理D709は、初期変換テーブルB203における線形変換処理D306の逆変換処理である。線形逆変換処理F609では、線形逆変換処理C708、線形逆変換処理D709の出力が結合され、出力710となる。
図10及び図11に線形変換処理G612、線形変換処理H613、線形変換処理I610、線形変換処理J611、線形変換処理K605、線形変換処理L606、線形変換処理M603、線形変換処理N604の構成を示す。各線形変換処理はパラメータが異なるが、構成は同じである。線形変換処理G612、線形変換処理H613、線形変換処理I610、線形変換処理J611、線形変換処理K605、線形変換処理L606、線形変換処理M603、線形変換処理N604では、それぞれの入力801〜808が、4ビットずつに分解され、各々に対して、上位から順に線形変換処理A302、線形変換処理B303、あるいは、上位から順に線形変換処理C305、線形変換処理D306が施される。線形変換処理A302、線形変換処理B303、線形変換処理C305、線形変換処理D306は、図5に示したものである。線形変換処理A302、線形変換処理B303、線形変換処理C305、線形変換処理D306の出力は結合され、結合された結果が定数809〜816と排他的論理和され、出力817〜824となる。定数809〜816は以下の条件を満たす範囲で設計者が決定する。
(1)各定数のハミング重みは0以外である。
(2)定数809,811,813,815について、任意の2つを選んだ場合、それらの排他的論理和を求めた結果のハミング重みは0以外である。
(3)定数809,811,813,815について、任意の3つを選んだ場合、それらの排他的論理和を求めた結果のハミング重みは0以外である。
(4)定数809,811,813,815について、全ての排他的論理和を求めた結果は定数307と一致する。
(5)定数810,812,814,816について、任意の2つを選んだ場合、それらの排他的論理和を求めた結果のハミング重みは0以外である。
(6)定数810,812,814,816について、任意の3つを選んだ場合、それらの排他的論理和を求めた結果のハミング重みは0以外である。
(7)定数810,812,814,816について、全ての排他的論理和を求めた結果は定数309と一致する。
図12に最終変換処理113の構成を示す。データ補正部15は、入力901(暗号変換データe’)を8ビットずつに分解し、各々最終変換テーブルA902又は最終変換テーブルB903に入力する。データ補正部15は、8つの最終変換テーブルA902及び8つの最終変換テーブルB903から8ビットのテーブル出力を得て、結果を結合し、出力904(暗号データe)とする。なお、8つの最終変換テーブルA902はいずれも同一のテーブルである。8つの最終変換テーブルB903はいずれも同一のテーブルである。最終変換テーブルA902と最終変換テーブルB903とは異なってもよい。最終変換テーブルA902や最終変換テーブルB903は、例えば配列として記憶装置52に記憶されており、プログラムの実行時に処理装置51によって参照される。
このように、本実施の形態では、データ補正部15により実行される補正処理(最終変換処理113)は、暗号変換データe’を入力とし、暗号データeを出力とするテーブル(最終変換テーブルA902、最終変換テーブルB903)として実装している(1つのテーブルでもよいし、本実施の形態のようにデータを分割して処理する場合には複数のテーブルでもよい)。これにより、データ補正部15は、上記補正処理をテーブル参照のみにより実行することができるため、電力解析に対する耐性が向上する。
図13に最終変換テーブルA902及び最終変換テーブルB903の構成を示す。各最終変換テーブルの数値は事前計算しておき、テーブル参照で実現する。両者の構成は同一であるが、内部パラメータは異なる。最終変換テーブルA902で実現される処理では、入力1001が定数702と排他的論理和され、排他的論理和の結果が半分ずつに分解され、各々に対し、線形逆変換処理A705、線形逆変換処理B706が施される。定数702、線形逆変換処理A705、線形逆変換処理B706は、図9に示したものである。線形逆変換処理A705、線形逆変換処理B706の結果は結合され、出力1002となる。最終変換テーブルB903で実現される処理では、入力1003が定数704と排他的論理和され、排他的論理和の結果が半分ずつに分解され、各々に対し、線形逆変換処理C708、線形逆変換処理D709が施される。定数704、線形逆変換処理C708、線形逆変換処理D709は、図9に示したものである。線形逆変換処理C708、線形逆変換処理D709の結果は結合され、出力1004となる。
なお、本実施の形態の変形例として、データ補正部15が、最終変換テーブルA902や最終変換テーブルB903で実現される処理の一部あるいは全部を、テーブル参照ではなく処理装置51により直接実行する(排他的論理和の演算処理や線形逆変換処理等を実際に実行する)ようにすることも可能である。
図14に暗号鍵格納処理102の構成を示す。データ変換部12は、暗号鍵101(暗号鍵データk)を4ビットずつに分解し、各々ビット拡大処理A1101、ビット拡大処理B1102、ビット拡大処理C1103、ビット拡大処理D1104に入力する。ビット拡大処理A1101、ビット拡大処理B1102、ビット拡大処理C1103、ビット拡大処理D1104は以下の条件を満たす任意の処理であり、設計者が指定する。データ変換部12は、ビット拡大処理A1101、ビット拡大処理B1102、ビット拡大処理C1103、ビット拡大処理D1104の出力を結合して格納暗号鍵115を得る。
(1)単射である。
(2)出力のハミング重みが出力ビット長の半分である。
8つのビット拡大処理A1101はいずれも同一の処理である。8つのビット拡大処理B1102はいずれも同一の処理である。8つのビット拡大処理C1103はいずれも同一の処理である。8つのビット拡大処理D1104はいずれも同一の処理である。ビット拡大処理A1101、ビット拡大処理B1102、ビット拡大処理C1103、ビット拡大処理D1104は異なってもよい。
図15に鍵初期変換処理103の構成を示す。データ変換部12は、格納暗号鍵115を分割し、各々鍵初期変換テーブルA1201、鍵初期変換テーブルB1202、鍵初期変換テーブルC1203、鍵初期変換テーブルD1204に入力する。データ変換部12は、各鍵初期変換テーブルの出力を、対応する定数(0xf0又は0x0f)によりマスクする。データ変換部12は、マスクした鍵初期変換テーブルA1201の出力と、マスクした鍵初期変換テーブルB1202の出力を排他的論理和で加算する。即ち、データ変換部12は、鍵初期変換テーブルA1201の出力の上位4ビットと、マスクした鍵初期変換テーブルB1202の出力の下位4ビットとを結合する。同様に、データ変換部12は、マスクした鍵初期変換テーブルC1203の出力と、マスクした鍵初期変換テーブルD1204の出力を排他的論理和で加算する。即ち、データ変換部12は、鍵初期変換テーブルC1203の出力の上位4ビットと、マスクした鍵初期変換テーブルD1204の出力の下位4ビットとを結合する。データ変換部12は、加算した結果を連結して拡大鍵105として出力する。8つの鍵初期変換テーブルA1201はいずれも同一のテーブルである。8つの鍵初期変換テーブルB1202はいずれも同一のテーブルである。8つの鍵初期変換テーブルC1203はいずれも同一のテーブルである。8つの鍵初期変換テーブルD1204はいずれも同一のテーブルである。鍵初期変換テーブルA1201、鍵初期変換テーブルB1202、鍵初期変換テーブルC1203、鍵初期変換テーブルD1204は異なってもよい。鍵初期変換テーブルA1201、鍵初期変換テーブルB1202、鍵初期変換テーブルC1203、鍵初期変換テーブルD1204は、例えば配列として記憶装置52に記憶されており、プログラムの実行時に処理装置51によって参照される。なお、各鍵初期変換テーブルは、絶対アドレス空間上でテーブルの先頭アドレスの下位nビットが0となるように配置する。ここで、nはテーブル入力のビット長である。MMU(Memory・Management・Unit)を搭載するプロセッサ(処理装置51)の場合は、必ずしもこのような位置に配置しなくてもよい。
このように、本実施の形態では、データ変換部12により実行される鍵変換処理(暗号鍵格納処理102、鍵初期変換処理103)は、その主要部分をテーブル(鍵初期変換テーブルA1201、鍵初期変換テーブルB1202、鍵初期変換テーブルC1203、鍵初期変換テーブルD1204)として実装しているため(1つのテーブルでもよいし、本実施の形態のようにデータを分割して処理する場合には複数のテーブルでもよい)、電力解析に対する耐性が向上する。なお、上記鍵変換処理は、暗号鍵データkを入力とし、鍵変換データk’を出力とするテーブルとして実装してもよい。この場合、データ変換部12は、上記鍵変換処理をテーブル参照のみにより実行することができるため、電力解析に対する耐性がさらに向上する。
図16に鍵初期変換テーブルA1201、鍵初期変換テーブルB1202、鍵初期変換テーブルC1203、鍵初期変換テーブルD1204の構成を示す。各鍵初期変換テーブルの数値は事前計算しておき、テーブル参照で実現する。鍵初期変換テーブルA1201で実現される処理では、入力1301がビット縮小処理A1302によって4ビットに縮小される。鍵初期変換テーブルB1202で実現される処理では、入力1303がビット縮小処理B1304によって4ビットに縮小される。鍵初期変換テーブルC1203で実現される処理では、入力1305がビット縮小処理C1306によって4ビットに縮小される。鍵初期変換テーブルD1204で実現される処理では、入力1307がビット縮小処理D1308によって4ビットに縮小される。ビット縮小処理A1302は図14に示した暗号鍵格納処理102に含まれるビット拡大処理A1101の逆変換処理である。同様に、ビット縮小処理B1304は暗号鍵格納処理102に含まれるビット拡大処理B1102の逆変換処理、ビット縮小処理C1306は暗号鍵格納処理102に含まれるビット拡大処理C1103の逆変換処理、ビット縮小処理D1308は暗号鍵格納処理102に含まれるビット拡大処理D1104の逆変換処理である。鍵初期変換テーブルA1201、鍵初期変換テーブルB1202、鍵初期変換テーブルC1203、鍵初期変換テーブルD1204で実現される処理では、ビット縮小処理されたデータそれぞれが線形変換処理A302、線形変換処理B303、線形変換処理C305、線形変換処理D306に入力される。線形変換処理A302、線形変換処理B303、線形変換処理C305、線形変換処理D306は、図5に示したものである。線形変換処理A302、線形変換処理B303、線形変換処理C305、線形変換処理D306の出力は、定数1309〜1312と排他的論理和され、ビット成型処理1313〜1316に入力される。定数1309〜1312は以下の条件を満たす範囲で設計者が指定する。
(1)(定数1309||定数1310)≠定数307
(2)(定数1311||定数1312)≠定数309
ビット成型処理1313では、入力が上位ビットに、乱数が下位ビットに割り当てられ、出力ビットのハミング重みが出力ビット長の半分になるような出力が生成される。ビット成型処理1315はビット成型処理1313と同様である。ビット成型処理1314では、入力が下位ビットに、乱数が上位ビットに割り当てられ、出力ビットのハミング重みが出力ビット長の半分になるような出力が生成される。ビット成型処理1316はビット成型処理1314と同様である。乱数生成処理1317〜1320では、出力ビットのハミング重みが出力ビット長の半分になるような乱数が生成される。入力判定処理1321では、入力1301がビット拡大処理A1101の出力と一致するか否かが判定され、一致していればビット成型処理1313の出力が、そうでなければ乱数生成処理1317の出力が出力1322となる。同様に、入力判定処理1323では、入力1303がビット拡大処理B1102の出力と一致するか否かが判定され、一致していればビット成型処理1314の出力が、そうでなければ乱数生成処理1318の出力が出力1324となる。入力判定処理1325では、入力1305がビット拡大処理C1103の出力と一致するか否かが判定され、一致していればビット成型処理1315の出力が、そうでなければ乱数生成処理1319の出力が出力1326となる。入力判定処理1327では、入力1307がビット拡大処理D1104の出力と一致するか否かが判定され、一致していればビット成型処理1316の出力が、そうでなければ乱数生成処理1320の出力が出力1328となる。
このように、本実施の形態では、データ変換部12は、暗号鍵データkを分割した複数のデータのそれぞれに対し、データ長を拡大する拡大処理(ビット拡大処理A1101、ビット拡大処理B1102、ビット拡大処理C1103、ビット拡大処理D1104)を実行し、それぞれの拡大処理の結果を結合して格納暗号鍵データsを生成する。それぞれの拡大処理の対象となるデータをq、それぞれの拡大処理の結果を関数g(q)と表すとき、g(q)は、単射であり、かつ、ハミング重みが一定となる。そして、データ変換部12は、生成した格納暗号鍵データsを分割した複数のデータのそれぞれに対し、前述した鍵変換処理を修正した修正鍵変換処理を、テーブル参照のみにより実行する。修正鍵変換処理は、上記鍵変換処理において、前述した所定の線形変換処理の前にそれぞれの拡大処理の逆変換処理(ビット縮小処理A1302、ビット縮小処理B1304、ビット縮小処理C1306、ビット縮小処理D1308)が付加されたものである。これにより、テーブル参照をする際に、参照するアドレスバス及びデータバスのハミング重みが一定となるため、電力解析に対する耐性が向上する。
また、本実施の形態では、前述した入力変換処理(初期変換処理109)が、前述した所定の線形変換処理(線形変換処理A302、線形変換処理B303、線形変換処理C305、線形変換処理D306)の後に、上記所定の線形変換処理の結果に定数データm1(定数307,309)を加算する入力マスク処理(排他的論理和演算処理)を含む。それとともに、前述した鍵変換処理(暗号鍵格納処理102、鍵初期変換処理103)が、上記所定の線形変換処理の後に、上記所定の線形変換処理の結果に定数データm2(定数1309〜1312)を加算する鍵マスク処理(排他的論理和演算処理)を含む。上記定数データm1と上記定数データm2とは、いずれも0以外であり、かつ、互いに異なる値をもつ。これにより、データに対し、定数マスクのかかった状態で暗号処理を実行することができるため、電力解析に対する耐性が向上する。
図17に拡大鍵生成処理104の構成を示す。拡大鍵生成処理104はAESの鍵スケジュールに準拠する。データ暗号部14の拡大鍵生成部21は、入力である拡大鍵1401を32ビットずつのデータDa,Db,Dc,Ddに分割する。拡大鍵生成部21は、データDdを定数1402と排他的論理和した後、8ビットずつ分割し、バイト単位で巡回シフトする。拡大鍵生成部21は、定数1402を数式5で求める。なお、定数307,309は、図5に示したものである。
数式5:
定数1402=(定数307||定数309||定数307||定数309)
拡大鍵生成部21は、各々の8ビットデータを非線形変換テーブルB503、非線形変換テーブルC504、非線形変換テーブルD505、非線形変換テーブルA502に入力する。非線形変換テーブルB503、非線形変換テーブルC504、非線形変換テーブルD505、非線形変換テーブルA502は、図8に示したものである。拡大鍵生成部21は、各非線形変換テーブルの出力をマスクし、マスクしたデータと定数1403とデータDaとの排他的論理和を計算する。拡大鍵生成部21は、それらの排他的論理和結果を拡大鍵1404の上位32ビットのデータDeとする。また、拡大鍵生成部21は、データDeの値を変換処理1405で変換する。
一方、拡大鍵生成部21は、データDbを変換処理1405で変換し、定数1406と排他的論理和する。拡大鍵生成部21は、その排他的論理和結果と変換処理1405で変換されたデータDeとの排他的論理和を計算し、その計算結果を逆変換処理1407に入力する。拡大鍵生成部21は、この逆変換処理1407の出力を拡大鍵1404の次の32ビットのデータDfとする。また、拡大鍵生成部21は、データDfの値を変換処理1405で変換する。同様に、拡大鍵生成部21は、データDcを変換処理1405で変換し、定数1406と排他的論理和する。拡大鍵生成部21は、その排他的論理和結果と変換処理1405で変換されたデータDfとの排他的論理和を計算し、その計算結果を逆変換処理1407に入力する。拡大鍵生成部21は、この逆変換処理1407の出力を拡大鍵1404の次の32ビットのデータDgとする。また、拡大鍵生成部21は、データDgの値を変換処理1405で変換する。同様に、拡大鍵生成部21は、データDdを変換処理1405で変換し、定数1406と排他的論理和する。拡大鍵生成部21は、その排他的論理和結果と変換処理1405で変換されたデータDgとの排他的論理和を計算し、その計算結果を逆変換処理1407に入力する。拡大鍵生成部21は、この逆変換処理1407の出力を拡大鍵1404の下位32ビットのデータDhとする。拡大鍵生成部21は、定数1406を数式6で決定する。定数1406は事前に計算しておく。数式6で、Fa(x)は入力xに対する線形変換処理A302の出力とする。同様に、Fb(x)は入力xに対する線形変換処理B303の出力、Fc(x)は入力xに対する線形変換処理C305の出力、Fd(x)は入力xに対する線形変換処理D306の出力とする。なお、定数702,704は、図9に示したものである。また、定数1309〜1312は、図16に示したものである。
数式6:
TM1=(Fa(定数1309)||Fb(定数1310))+定数702
TM2=(Fa(定数1311)||Fb(定数1312))+定数704
定数1406=(TM1||TM2||TM1||TM2)
図18に拡大鍵生成部21が定数1403を導出するための構成を示す。定数1403は事前に計算しておく。図18において、拡大鍵生成部21は、RConを4ビットずつに分割し、各々を線形変換処理A302、線形変換処理B303、線形変換処理C305、線形変換処理D306により変換する。線形変換処理A302、線形変換処理B303、線形変換処理C305、線形変換処理D306は、図5に示したものである。RConはAESの仕様に準拠する。拡大鍵生成部21は、各線形変換処理の出力を連接し、連接結果と補正係数1501との排他的論理和を求め、結果を定数1403とする。拡大鍵生成部21は、補正係数1501を数式7で求める。なお、定数811は、図10に示したものである。また、定数814は、図11に示したものである。
数式7:
補正係数1501=(定数811||定数814||定数811||定数814)
図19に変換処理1405の構成を示す。拡大鍵生成部21は、32ビットの入力1601を8ビットずつ分割し、各々初期変換テーブルA202、初期変換テーブルB203に入力する。初期変換テーブルA202、初期変換テーブルB203は、図5に示したものである。拡大鍵生成部21は、各初期変換テーブルの出力を結合し、出力1602を得る。
図20に逆変換処理1407の構成を示す。拡大鍵生成部21は、32ビットの入力1701を8ビットずつ分割し、各々最終変換テーブルA902、最終変換テーブルB903に入力する。最終変換テーブルA902、最終変換テーブルB903は、図13に示したものである。拡大鍵生成部21は、各最終変換テーブルの出力を結合し、出力1702を得る。
このように、本実施の形態では、データ暗号部14の拡大鍵生成部21は、データ変換部12により生成された鍵変換データk’に対し、AESの鍵スケジュール処理(所定の鍵スケジュール処理の一例)を所定のラウンド数実行して、ラウンドごとに拡大鍵データr’を生成する。データ暗号部14は、ラウンドごとに拡大鍵生成部21により生成された拡大鍵データr’を用いて前述した修正暗号処理を実行する。このとき、データ暗号部14は、最後のラウンドにて暗号変換データe’を生成することになる。拡大鍵生成部21は、AESの鍵スケジューリング処理にて、同じ定数データmが加算されたデータc,d(1つの例としては、データDa,Db)に対し、関数fm(c+m,d+m)=c+d+mを計算する場合(上記例において、データDa,DbからデータDfを計算する場合)、まず、c+m,d+mのそれぞれに対し、前述した入力変換処理(変換処理1405)を実行して中間データc’,d’(上記例では、変換処理1405が施されたデータDe,Db)を生成する。そして、拡大鍵生成部21は、生成した中間データc’,d’のいずれか一方(上記例において、図17に示したものと同様に、変換処理1405が施されたデータDbとする)に予め定められた定数データm’(定数1406)を加算する。拡大鍵生成部21は、さらに、当該中間データc’,d’の他方を加算し、その結果に対し、前述した補正処理(逆変換処理1407)を実行してfm(上記例では、データDf)を算出する。これにより、線形変換処理が施され、さらに、定数マスクがかけられたデータを対象に、AES等の暗号処理を実行することが可能となる。
以上説明したように、本実施の形態における暗号処理装置10は、入力(平文108)と暗号鍵101とをそれぞれ設計者が設計した変換処理により変換し、変換した入力及び暗号鍵に対して暗号処理を実行し、暗号処理結果に補正処理を加えて、所望の暗号文114を得ることを特徴とする。
上記暗号処理装置10は、上記変換処理に、以下の条件(1)、(2)を満たす線形変換と、条件(3)、(4)を満たす定数マスクによる排他的論理和処理を用いることを特徴とする。
(1)全単射である。
(2)排他的論理和演算に対して加法性が成立する。排他的論理和演算に対する加法性とは、関数f(x)について、f(a+b)=f(a)+f(b)を満たす性質である。
(3)0以外とする。
(4)入力に施す定数マスクと暗号鍵101に施す定数マスクは互いに異なる。
上記暗号処理装置10は、上記変換処理及び上記補正処理をテーブル参照のみで実現することを特徴とする。
上記暗号処理は、上記変換処理による影響を考慮し、所定の出力を得られるよう修正され、かつ、以下の計算要素のみで構成される(一部のビットマスク処理を除く)ことを特徴とする。
(1)テーブル参照
(2)転置処理
(3)排他的論理和
上記暗号処理装置10は、同一の定数マスクmのかかっている2つのデータa+m,b+mに対し、以下の関数fmを計算するにあたり、各々のデータa+m,b+mに上記変換処理を施し、予め求めておいた補正用定数を、上記変換処理を施したデータのいずれか一方に排他的論理和し、その結果に上記変換処理を施した他方のデータとの排他的論理和を求め、その結果に、上記変換処理に対する補正処理を行うことで関数fmを計算することを特徴とする。
fm(a+m,b+m)=a+b+m
上記暗号処理装置10は、暗号鍵101の変換処理を行うにあたり、暗号鍵101のデータを一定のサイズに分割し、分割されたデータに対し、以下の条件(1)、(2)を満たすように拡大処理を施し、上記拡大処理されたデータを連接して格納することを特徴とする。
(1)単射である。
(2)出力のハミング重みが一定である。
上記暗号処理装置10は、拡大され格納された暗号鍵(格納暗号鍵115)を呼び出し、変換処理を施し、上記変換処理の出力を処理することで、変換された拡大鍵105を得ることを特徴とする。
なお、上記暗号処理装置10によって生成された暗号文114を復号する復号処理装置として、上記暗号処理装置10と同様の構成を有するものを用いることができる。即ち、上記暗号処理装置10は復号処理装置として用いることもできる。
以下、本実施の形態が奏する効果について説明する。
本実施の形態では、初期変換処理109の出力から最終変換処理113の入力までと、鍵初期変換処理103の出力以降の拡大鍵を含む中間変数の値は、設計者が秘匿した線形関数及び定数マスクによって秘匿されるため、攻撃者はその値を推定できない。よって、本来の暗号処理から推定される中間変数と実際の電力消費との相関をなくすことができるため、電力解析への耐性が上がる。
また、本実施の形態では、暗号鍵101を、暗号鍵格納処理102を通して、格納暗号鍵115として記憶装置52に格納することにより、鍵初期変換処理103におけるテーブル参照において、参照するアドレスのハミング重みを、暗号鍵101の値によらず一定にすることができる。よって、当該テーブル参照演算において、アドレス参照時のハミング重みの違いによる電力消費との相関を減らすことができる。また、テーブル出力のハミング重みも一定にすることができるため、テーブルデータ取得時のハミング重みの違いによる電力消費との相関を減らすことができる。
さらに、本実施の形態では、同一の定数マスクのかかっている2つのデータの排他的論理和を求めるにあたり、各々のデータに変換処理1405を施し、予め求めておいた補正用の定数1406を、変換処理1405を施したデータのいずれか一方に排他的論理和し、その結果に他方の変換処理1405を施したデータとの排他的論理和を求め、その結果に、変換処理1405に対する補正処理として逆変換処理1407を行っている。このことで、演算中の中間変数には、常に線形変換処理と定数マスクがかかった状態となる。線形変換処理には加法性の条件があるため、線形変換処理の入力が0である場合、出力は必ず0となる。このような入力の場合、定数マスクがかからないと、入力が0の場合に攻撃者が推定できてしまうが、本実施の形態では、常に線形変換処理と定数マスクがかかった状態となるため、このような入力に対しても、攻撃者は値を推定できない。
実施の形態2.
本実施の形態について、主に実施の形態1との差異を説明する。
実施の形態1では、4つの鍵初期変換テーブル(図16に示した鍵初期変換テーブルA1201、鍵初期変換テーブルB1202、鍵初期変換テーブルC1203、鍵初期変換テーブルD1204)を用意したが、本実施の形態では、これらを1つのテーブルで実装する手法を採用する。実施の形態1との違いは、暗号鍵格納処理102、及び、鍵初期変換処理103である。
図21に本実施の形態における暗号鍵格納処理102の構成を示す。構成は図14と同じである。ビット拡大処理A1801、ビット拡大処理B1802、ビット拡大処理C1803、ビット拡大処理D1804は以下の条件を満たす任意の処理であり、設計者が指定する。
(1)単射である。
(2)出力のハミング重みが出力ビット長の半分である。
(3)異なる2つのビット拡大処理について、同一入力に対する出力が互いに異なる。
上記条件を満たすビット拡大処理として、例えば、ハミング重みが出力ビット長の半分となる数を求め、数の小さい順から、入力ビットが示す空間ずつ割り当てる方法がある。入力4ビット、出力8ビットのビット拡大処理を4種類用意する場合(即ち、ビット拡大処理A1101、ビット拡大処理B1102、ビット拡大処理C1103、ビット拡大処理D1104が異なる種類であるとする場合)、入力に割り当てるために必要な数の個数は24×4=64である(入力値は24通りであり、それぞれの値について4通りの異なる出力値が必要となるからである)。一方、8ビットデータのうちハミング重みが4となる数の個数は8C4=70となるため、割り当ては可能である。
図22に本実施の形態における鍵初期変換処理103の構成を示す。構成はほぼ図15と同じである。図15との違いは、鍵初期変換テーブルE1901が1種類しかない(全て同じである)ことである。
このように、本実施の形態では、データ変換部12は、それぞれの修正鍵変換処理を同じテーブル参照のみにより実行する。1つの拡大処理の対象となるデータをq1、当該1つの拡大処理の結果を関数g1(q1)、他の拡大処理の対象となるデータをq2、当該他の拡大処理の結果を関数g2(q2)と表すとき、g1(q1),g2(q2)は、q1=q2の場合にg1(q1)≠g2(q2)を満たす。これにより、参照するテーブルが1種類であっても、実施の形態1と同様の効果が得られる。
図23に鍵初期変換テーブルE1901の構成を示す。鍵初期変換テーブルE1901の数値は事前計算しておき、テーブル参照で実現する。鍵初期変換テーブルE1901で実現される処理では、入力2001がビット縮小処理A2002、ビット縮小処理B2003、ビット縮小処理C2004、ビット縮小処理D2005によって4ビットに縮小される。ビット縮小処理A2002は図21に示した暗号鍵格納処理102に含まれるビット拡大処理A1801の逆変換処理である。同様に、ビット縮小処理B2003は暗号鍵格納処理102に含まれるビット拡大処理B1802の逆変換処理、ビット縮小処理C2004は暗号鍵格納処理102に含まれるビット拡大処理C1803の逆変換処理、ビット縮小処理D2005は暗号鍵格納処理102に含まれるビット拡大処理D1804の逆変換処理である。鍵初期変換テーブルE1901で実現される処理では、ビット縮小処理されたデータそれぞれが線形変換処理A302、線形変換処理B303、線形変換処理C305、線形変換処理D306に入力される。線形変換処理A302、線形変換処理B303、線形変換処理C305、線形変換処理D306は、図5に示したものである。線形変換処理A302、線形変換処理B303、線形変換処理C305、線形変換処理D306の出力は、定数1309〜1312と排他的論理和され、ビット成型処理1313〜1316に入力される。定数1309〜1312、ビット成型処理1313〜1316は、図16に示したものと同じである。
乱数生成処理2006では、出力ビットのハミング重みが出力ビット長の半分になるような乱数が生成される。入力判定処理2007では、入力2001がビット拡大処理A1801の出力と一致していればビット成型処理1313の出力が、ビット拡大処理B1802の出力と一致していればビット成型処理1314の出力が、ビット拡大処理C1803の出力と一致していればビット成型処理1315の出力が、ビット拡大処理D1804の出力と一致していればビット成型処理1316の出力が、いずれにも合致しない場合は乱数生成処理2006の出力が出力2008となる。
以上説明したように、本実施の形態における暗号処理装置10は、実施の形態1と同様に、暗号鍵101の変換処理を行うにあたり、暗号鍵101のデータを一定のサイズに分割し、分割されたデータに対し、以下の条件(1)、(2)を満たすように拡大処理を施し、上記拡大処理されたデータを連接して格納するが、このとき、任意の複数の拡大処理において、同一入力に対する出力が互いに異なることを特徴とする。
(1)単射である。
(2)出力のハミング重みが一定である。
以下、本実施の形態が奏する効果について説明する。
実施の形態1では、鍵初期変換テーブルとして4つのテーブルをもつ必要があるが、本実施の形態では1つですむ。よって、実装サイズを小さくできる。
実施の形態3.
本実施の形態について、主に実施の形態1との差異を説明する。
実施の形態1では、拡大鍵生成処理104において、2回の変換処理1405の後に排他的論理和を行い、逆変換処理1407を行うことで拡大鍵を生成する手法を示した。この場合、1回の拡大鍵生成処理104において、合計40回のテーブル参照を行うことになる。本実施の形態では、これを28回のテーブル参照で実現する方法を採用する。実施の形態1との違いは、拡大鍵生成処理104である。
図24に本実施の形態における拡大鍵生成処理104の構成を示す。拡大鍵1404のデータDf,Dg,Dhがそれぞれ鍵加算処理2101で生成される点以外は、図17と同じである。
図25に鍵加算処理2101の構成を示す。拡大鍵生成部21は、2つの32ビットの入力A2201、入力B2202をそれぞれ4ビットずつ区切る。拡大鍵生成部21は、区切った入力A2201の4ビットデータを、入力B2202の同じ位置の4ビットデータと連接する。拡大鍵生成部21は、連接した8ビットデータを鍵加算テーブルA2203又は鍵加算テーブルB2204に入力する。拡大鍵生成部21は、2つの鍵加算テーブルA2203又は鍵加算テーブルB2204の出力にビットマスクをかけたデータ同士を排他的論理和する。拡大鍵生成部21は、排他的論理和の結果を連接し、32ビットの出力2205とする。
図26に鍵加算テーブルA2203及び鍵加算テーブルB2204の構成を示す。各鍵加算テーブルの数値は事前計算しておき、テーブル参照によって実現する。鍵加算テーブルA2203で実現される処理では、8ビットの入力2301が4ビットずつに分割され、排他的論理和される。排他的論理和された結果は、同じデータを連接されて8ビットデータとなり、その8ビットデータと定数2302との排他的論理が求められ、その結果が出力2303となる。同様に、鍵加算テーブルB2204で実現される処理では、8ビットの入力2304が4ビットずつに分割され、排他的論理和される。排他的論理和された結果は、同じデータを連接されて8ビットデータとなり、その8ビットデータと定数2305との排他的論理が求められ、その結果が出力2306となる。定数2302は数式8、定数2305は数式9で計算する。なお、定数1309〜1312は、図16に示したものである。
数式8:
定数2302=(定数1309||定数1310)
数式9:
定数2404=(定数1311||定数1312)
このように、本実施の形態では、拡大鍵生成部21は、AESの鍵スケジューリング処理にて、同じ定数データmが加算されたデータc,d(1つの例としては、データDa,Db)に対し、関数fm(c+m,d+m)=c+d+mを計算する場合(上記例において、データDa,DbからデータDfを計算する場合)、まず、c+m,d+mのそれぞれをn分割する(nはn>1であり、例えば8である)。そして、拡大鍵生成部21は、分割したn個のデータci+mi,di+miについて(i=1,・・・,n)、ci+mi,di+miをテーブル参照により計算し、その結果を結合してfm(上記例では、データDf)を算出する。
以上説明したように、本実施の形態における暗号処理装置10は、実施の形態1と同様の特徴に加えて、同一の定数マスクmのかかっている2つのデータa+m,b+mに対し、以下の関数fmを計算するにあたり、上記2つのデータをn分割し、分割された各データai+mi,bi+mi(1≦i≦n)について、ai+bi+miをテーブル参照で計算し、計算結果を結合して関数fmを計算することを特徴とする。
fm(a+m,b+m)=a+b+m
以下、本実施の形態が奏する効果について説明する。
実施の形態1では、1回の拡大鍵生成処理104において、合計40回のテーブル参照を行うことになるが、本実施の形態では、これを28回のテーブル参照で実現することによって高速な処理が実現できる。
実施の形態4.
本実施の形態について、主に実施の形態1との差異を説明する。
実施の形態1では、暗号鍵101を、暗号鍵格納処理102を通して、格納暗号鍵115として格納することにより、鍵初期変換処理103におけるテーブル参照において、参照するアドレスのハミング重みを、暗号鍵101の値によらず一定にし、アドレス参照時のハミング重みの違いによる電力消費との相関を減らした。本実施の形態では、暗号鍵格納処理102を通さずに、鍵初期変換処理103を直接行う手法を採用する。
図27に実施の形態4における暗号処理装置10の各部により実行される処理を示す。実施の形態1との違いは、暗号鍵101が鍵初期変換処理103に直接入っている点である。
以下では、初期変換処理109、非線形変換処理111、最終変換処理113について、実施の形態1との差異を説明した後、本実施の形態における鍵初期変換処理103の構成を説明する。また、拡大鍵生成処理104について、実施の形態1との差異を説明する。
初期変換処理109の構成は、図4に示した実施の形態1のものと同様であるが、実施の形態1とはテーブルの内容が異なる。
図28に本実施の形態における初期変換テーブルA202及び初期変換テーブルB203の構成を示す。実施の形態1と同様に、各初期変換テーブルの数値は事前計算しておき、テーブル参照で実現する。初期変換テーブルA202で実現される処理では、入力301に対し、線形変換処理A302が施される。初期変換テーブルB203で実現される処理では、入力304に対し、線形変換処理B303が施される。線形変換処理A302、線形変換処理B303は、実施の形態1と同様の条件を満たす任意の処理である。初期変換テーブルA202で実現される処理では、線形変換処理A302の出力に定数307との排他的論理和が施され、その結果が出力308となる。初期変換テーブルB203で実現される処理では、線形変換処理B303の出力に定数309との排他的論理和が施され、その結果が出力310となる。実施の形態1と同様に、定数307,309は設計者が任意に設定する。
非線形変換処理111の構成は、図7に示した実施の形態1のものと同様であるが、実施の形態1とはテーブルの内容が異なる。具体的には、図8に示した構成において、線形逆変換処理E602、線形逆変換処理F609が異なる。また、線形変換処理G612、線形変換処理H613、線形変換処理I610、線形変換処理J611、線形変換処理K605、線形変換処理L606、線形変換処理M603、線形変換処理N604も異なる。
図29に線形逆変換処理E602及び線形逆変換処理F609の構成を示す。線形逆変換処理E602では、入力701が定数702と排他的論理和される。線形逆変換処理F609では、入力703が定数704と排他的論理和される。定数702は数式10から、定数704は数式11から求める。なお、定数307,309は、図28に示したものである。定数1309,1310については、後で図33に示す。
数式10:
定数702=定数307+定数1309
数式11:
定数704=定数309+定数1310
線形逆変換処理E602では、排他的論理和の結果に対して線形逆変換処理A705が施される。線形逆変換処理A705は、図28に示した初期変換テーブルA202における線形変換処理A302の逆変換処理である。線形逆変換処理E602では、線形逆変換処理A705の出力が出力707となる。線形逆変換処理F609では、排他的論理和の結果に対して線形逆変換処理B706が施される。線形逆変換処理B706は、図28に示した初期変換テーブルB203における線形変換処理B303の逆変換処理である。線形逆変換処理F609では、線形逆変換処理B706の出力が出力710となる。
図30に線形変換処理G612、線形変換処理H613、線形変換処理I610、線形変換処理J611、線形変換処理K605、線形変換処理L606、線形変換処理M603、線形変換処理N604の構成を示す。線形変換処理G612、線形変換処理H613、線形変換処理I610、線形変換処理J611、線形変換処理K605、線形変換処理L606、線形変換処理M603、線形変換処理N604では、それぞれの入力801〜808に対して、線形変換処理A302、あるいは、線形変換処理B303が施される。線形変換処理A302、線形変換処理B303は、図28に示したものである。線形変換処理A302、線形変換処理B303の出力は定数809〜816と排他的論理和され、出力817〜824となる。実施の形態1と同様に、定数809〜816は以下の条件を満たす範囲で設計者が決定する。
(1)各定数のハミング重みは0以外である。
(2)定数809,811,813,815について、任意の2つを選んだ場合、それらの排他的論理和を求めた結果のハミング重みは0以外である。
(3)定数809,811,813,815について、任意の3つを選んだ場合、それらの排他的論理和を求めた結果のハミング重みは0以外である。
(4)定数809,811,813,815について、全ての排他的論理和を求めた結果は定数307と一致する。
(5)定数810,812,814,816について、任意の2つを選んだ場合、それらの排他的論理和を求めた結果のハミング重みは0以外である。
(6)定数810,812,814,816について、任意の3つを選んだ場合、それらの排他的論理和を求めた結果のハミング重みは0以外である。
(7)定数810,812,814,816について、全ての排他的論理和を求めた結果は定数309と一致する。
最終変換処理113の構成は、図12に示した実施の形態1のものと同様であるが、実施の形態1とはテーブルの内容が異なる。
図31に最終変換テーブルA902及び最終変換テーブルB903の構成を示す。実施の形態1と同様に、各最終変換テーブルの数値は事前計算しておき、テーブル参照で実現する。最終変換テーブルA902で実現される処理では、入力1001が定数702と排他的論理和され、排他的論理和の結果に対し、線形逆変換処理A705が施される。定数702、線形逆変換処理A705は、図29に示したものである。線形逆変換処理A705の結果は出力1002となる。最終変換テーブルB903で実現される処理では、入力1003が定数704と排他的論理和され、排他的論理和の結果に対し、線形逆変換処理B706が施される。定数704、線形逆変換処理B706は、図29に示したものである。線形逆変換処理B706の結果は出力1004となる。
図32に鍵初期変換処理103の構成を示す。データ変換部12は、暗号鍵101を8ビットずつに分割し、各々鍵初期変換テーブルA1201、鍵初期変換テーブルB1202に入力する。データ変換部12は、各鍵初期変換テーブルの出力を連接し、拡大鍵105として出力する。実施の形態1と同様に、8つの鍵初期変換テーブルA1201はいずれも同一のテーブルである。8つの鍵初期変換テーブルB1202はいずれも同一のテーブルである。鍵初期変換テーブルA1201、鍵初期変換テーブルB1202は異なってもよい。鍵初期変換テーブルA1201、鍵初期変換テーブルB1202は、例えば配列として記憶装置52に記憶されており、プログラムの実行時に処理装置51によって参照される。
図33に鍵初期変換テーブルA1201、鍵初期変換テーブルB1202の構成を示す。実施の形態1と同様に、各鍵初期変換テーブルの数値は事前計算しておき、テーブル参照で実現する。鍵初期変換テーブルA1201で実現される処理では、入力1301が線形変換処理A302に入力される。鍵初期変換テーブルB1202で実現される処理では、入力1303が線形変換処理B303に入力される。線形変換処理A302、線形変換処理B303は、図28に示したものである。線形変換処理A302、線形変換処理B303の出力は、定数1309,1310と排他的論理和され、それぞれの結果が出力1322,1324となる。定数1309,1310は以下の条件を満たす範囲で設計者が指定する。
(1)定数1309≠定数307
(2)定数1310≠定数309
拡大鍵生成処理104の構成は、図17に示した実施の形態1のものと同様であるが、実施の形態1とは定数1403,1406が異なる。なお、実施の形態1と同様に、拡大鍵生成部21は、定数1402を数式12で求める。定数307,309は、図28に示したものである。
数式12:
定数1402=(定数307||定数309||定数307||定数309)
拡大鍵生成部21は、定数1406を数式13で決定する。実施の形態1と同様に、定数1406は事前に計算しておく。数式13で、Fa(x)は入力xに対する線形変換処理A302の出力とする。同様に、Fb(x)は入力xに対する線形変換処理B303の出力とする。なお、定数702,704は、図29に示したものである。また、定数1309,1310は、図33に示したものである。
数式13:
TM1=Fa(定数1309)+定数702
TM2=Fb(定数1310)+定数704
定数1406=(TM1||TM2||TM1||TM2)
図34に拡大鍵生成部21が定数1403を導出するための構成を示す。実施の形態1と同様に、定数1403は事前に計算しておく。図34において、拡大鍵生成部21は、RConを8ビットずつに分割し、各々を線形変換処理A302、線形変換処理B303により変換する。線形変換処理A302、線形変換処理B303は、図28に示したものである。RConはAESの仕様に準拠する。拡大鍵生成部21は、各線形変換処理の出力を連接し、連接結果と補正係数1501との排他的論理和を求め、結果を定数1403とする。実施の形態1と同様に、拡大鍵生成部21は、補正係数1501を数式14で求める。なお、定数811,814は、図30に示したものである。
数式14:
補正係数1501=(定数811||定数814||定数811||定数814)
ここで、拡大鍵生成処理104の構成は、図24に示した実施の形態3のものと同様であってもよい。この場合、実施の形態3とは定数1403が異なる。なお、実施の形態3と同様に、拡大鍵生成部21は、定数1402を上記数式12で求める。定数1403を導出するための構成については、図34を用いて説明した通りである。
以下、本実施の形態が奏する効果について説明する。
実施の形態1では、アドレス参照時のハミング重みの違いによる電力消費との相関を減らすために、暗号鍵格納処理102と鍵初期変換処理103でテーブル参照を多用するため、処理速度が低下する虞がある。これに対し、本実施の形態4は、テーブル参照の回数を減らすことで、処理の高速化が図れる。
以上、本発明の実施の形態について説明したが、これらのうち、2つ以上の実施の形態を組み合わせて実施しても構わない。あるいは、これらのうち、1つの実施の形態を部分的に実施しても構わない。あるいは、これらのうち、2つ以上の実施の形態を部分的に組み合わせて実施しても構わない。