JP5268609B2 - 暗号処理装置及び演算方法 - Google Patents

暗号処理装置及び演算方法 Download PDF

Info

Publication number
JP5268609B2
JP5268609B2 JP2008313556A JP2008313556A JP5268609B2 JP 5268609 B2 JP5268609 B2 JP 5268609B2 JP 2008313556 A JP2008313556 A JP 2008313556A JP 2008313556 A JP2008313556 A JP 2008313556A JP 5268609 B2 JP5268609 B2 JP 5268609B2
Authority
JP
Japan
Prior art keywords
data
mask data
mask
xor
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008313556A
Other languages
English (en)
Other versions
JP2010141430A (ja
Inventor
浩一 藤崎
淳 新保
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008313556A priority Critical patent/JP5268609B2/ja
Priority to PCT/JP2009/070618 priority patent/WO2010067827A1/ja
Publication of JP2010141430A publication Critical patent/JP2010141430A/ja
Priority to US13/155,889 priority patent/US8817975B2/en
Application granted granted Critical
Publication of JP5268609B2 publication Critical patent/JP5268609B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Description

本発明は、暗号処理装置及び演算方法に関する。
攻撃対象物の内部に格納されている秘密情報を取得する攻撃手法として、該対象物を破壊せずに攻撃を行う「非破壊攻撃」がある。非破壊攻撃には、攻撃対象物を誤動作させることによって、該攻撃対象物から秘密情報に関するデータを取得する「故障利用攻撃」、暗号演算の実行時の消費電力又は漏えい電磁波を測定し、その測定データと攻撃者により推定された演算データとの間の統計解析を行うことによって、該攻撃対象物の秘密情報を推定する差分電力解析攻撃(DPA:Differential Power Analysis)又は差分電磁界解析(DEMA:Differential Electro-Magnetic Analysis)などを含む「サイドチャネル攻撃」などがある。
サイドチャネル攻撃において、攻撃者は、入力データの値及び出力データの値並びに攻撃対象の暗号アルゴリズムの情報を有している必要がある。なぜなら、サイドチャネル攻撃では、その攻撃手順において、演算途中のデータの推定が行われるからである。
具体的には、まず、攻撃者により秘密情報が推定され、次に、その推定された秘密情報を用いて、入力データと暗号アルゴリズムの情報とから、攻撃対象の演算途中のデータが求められる。次に、この推測された演算データと測定された消費電力又は漏曳電磁波との相関を計算し、推定された演算データと消費電力又は漏曳電磁波との間に相関があるかどうかが調べられる。かりに、それらの間に相関が認められた場合は、秘密情報が正しく推定できたことになり、よって、攻撃者が攻撃に成功したことになる。
このようにサイドチャネル攻撃は、攻撃対象の演算途中のデータを正しく推定することができ、かつ、推定された演算データが攻撃対象の測定データとの相関を有する場合に、攻撃に成功する。
そのため、サイドチャネル攻撃に対しては、演算途中のデータを攻撃者が推定できないようにする対策が有効である。このことに着目して、サイドチャネル攻撃への対策方法がいくつか提案されている。その一つにデータマスク法という対策技術がある。データマスク法は、攻撃対象となった装置の暗号演算時のデータを、攻撃者が推定できない値にするために、攻撃者が分らない値(例えば、乱数)を用いて、演算途中のデータをマスクする手法である。データマスク法による対策においては、攻撃対象となる演算途中のデータは乱数などによってマスクされているため、攻撃者は、マスクデータの値が分からないかぎり、その演算途中のデータを正しく推定することができない。そのため、攻撃者が消費電力や漏洩電磁波を測定し、測定データと攻撃者により推定された演算途中のデータとの相関を求めても、攻撃対象の暗号演算時のデータは乱数でマスクされているために、測定されたデータと推定された演算データとの相関はなく、よって、攻撃には成功しない。
ところで、非特許文献1には、FIPS(Federal Information Processing Standards 197)で仕様が定義された共通鍵暗号方式AES(Advanced Encryption Standard)用の演算回路として、暗号演算時に用いるSubBytes(サブバイト)演算回路と復号演算時に用いるInvSubBytes(逆サブバイト)演算回路とを一体化し、切り替え信号によって、SubBytes演算とInvSubBytes演算とを切り替えて使用するようにした演算回路が開示されている。これによって、ハードウェアにより実装したときの回路規模を削減することができる。しかし、非特許文献1に開示された演算回路においては、サイドチャネル攻撃への対策が考慮されていない。
http://www.cqpub.co.jp/dwm/contents/0072/dwm007201511.pdf
従来、非線形演算を含む演算回路で、回路規模の削減と、かつ、サイドチャネル攻撃への対策とを考慮したものは、知られていなかった。
本発明は、上記事情を考慮してなされたもので、非線形演算を含む演算回路の回路規模を削減し、かつ、サイドチャネル攻撃への対策を可能にした暗号処理装置及び演算方法を提供することを目的とする。
本発明は、非線形演算と線形演算とを含む暗号演算及び復号演算を行う暗号処理装置であって、演算対象データを第1の一時マスクデータでマスクした第1のデータを入力し、該第1のデータについて、該第1の一時マスクデータから、第1の線形演算について不変の値である第1の固定マスクデータへの付け替えを行って、該演算対象データを該第1の固定マスクデータでマスクした第2のデータを出力する第1のマスク付替部と、前記第2のデータを入力し、該第2のデータに前記第1の線形演算を施して、前記演算対象データに対して前記第1の線形演算を施した結果である第1の結果データを前記第1の固定マスクデータでマスクした第3のデータを出力する第1の線形演算部と、前記第2のデータ及び前記第3のデータを入力し、暗号演算時には該第2のデータを、復号演算時には該第3のデータをそれぞれ選択して出力する第1の選択部と、暗号演算時には、前記第2のデータを入力し、該第2のデータに非線形演算を施して、前記演算対象データに対して該非線形演算を施した結果を第2の線形演算について不変の値である第2の固定マスクデータでマスクした第4のデータを出力し、復号演算時には、前記第3のデータを入力し、該第3のデータに該非線形演算を施して、前記第1の結果データに対して該非線形演算を施した結果である第2の結果データを前記第2の固定マスクデータでマスクした第5のデータを出力する非線形演算部と、前記第4のデータ又は前記第5のデータを入力し、該第4のデータ又は該第5のデータに前記第2の線形演算を施して、前記非線形演算の結果である第3の結果データに対して該第2の線形演算を施した結果である第4の結果データを前記第2の固定マスクデータでマスクした第6のデータを出力する第2の線形演算部と、前記第5のデータ及び前記第6のデータを入力し、暗号演算時には該第6のデータを、復号演算時には該第5のデータをそれぞれ選択して出力する第2の選択部と、暗号演算時には、前記第6のデータを入力し、該第6のデータについて、前記第2の固定マスクデータから、第2の一時マスクデータへの付け替えを行って、前記第4の結果データを該第2の一時マスクデータでマスクした第7のデータを出力し、復号演算時には、前記第5のデータを入力し、該第5のデータについて、前記第2の固定マスクデータから、該第2の一時マスクデータへの付け替えを行って、前記第2の結果データを該第2の一時マスクデータでマスクした第8のデータを出力する第2のマスク付替部とを備えたことを特徴とする。
本発明によれば、非線形演算を含む演算回路の回路規模を削減し、かつ、サイドチャネル攻撃への対策を可能にすることができる。
以下、図面を参照しながら本発明の実施形態について説明する。
本実施形態では、暗号方式として、共通鍵暗号方式AESを用いる場合を例にとって説明する。
まず、本実施形態に係る暗号処理装置の説明に先立って、従来の暗号処理装置について説明する。
共通鍵暗号方式AESでは、暗号演算時に用いられる3つの基本演算、すなわち、ShiftRows(シフトロー)演算、SubBytes(サブバイト)演算、MixColumns(ミックスカラム)演算と、復号演算時に用いられる3つの基本演算、すなわち、InvShiftRows(逆シフトロー)演算、InvSubBytes(逆サブバイト)演算、nvMixColumns(逆ミックスカラム)演算と、暗号演算時及び復号演算時に用いられる基本演算、すなわち、AddRoundKey(加算ラウンド鍵)が定義されている。
ここで、SubBytes演算とInvSubBytes演算は、いずれも、2のガロア体(GF(2))上の逆元を求める逆元演算と、Affine(アフィン)変換とを組み合わせたものである。すなわち、SubBytes演算では、GF(2)上の逆元演算、アフィン変換の順に演算を行い、InvSubBytes演算では、アフィン変換、GF(2)上の逆元演算の順に演算を行う。なお、アフィン変換は線形演算であり、GF(2)上の逆元演算は非線形演算である。
SubBytes演算におけるGF(2)上の逆元演算と、InvSubBytes演算における逆元演算は同一であることから、SubBytes演算とInvSubBytes演算とで一つの逆元演算部を共用するように実装した演算回路が知られている(非特許文献1参照)。これによって、SubBytes演算とInvSubBytes演算とを別々に実装するよりも、ハードウェアによる実装における回路規模を削減することができる。
図14に、共通鍵暗号方式AESに従う暗号処理装置に用いられるSubBytes演算部とInvSubBytes演算部とを一体化した従来の演算部を示す。
図14において、1001は復号演算時のアフィン変換を行うアフィン変換部、1002は暗号演算時のアフィン変換を行うアフィン変換部、1003は復号演算時と暗号演算時にGF(2)上の逆元演算を行う逆元演算部、1004,1005は復号演算と暗号演算の切り替えを行うためのセレクタである。
暗号演算時には、セレクタ1004,1005はいずれもe側に接続し、逆元演算部1003によるGF(2)上の逆元演算、アフィン変換部1002によるアフィン変換の順に、演算が行われる。
一方、復号演算時には、セレクタ1004,1005はいずれもd側に接続し、アフィン変換部1001によるアフィン変換、逆元演算部1003によるGF(2)上の逆元演算の順に、演算が行われる。
以下、従来の暗号処理装置の問題について説明する。
ここで、サイドチャネル攻撃への対策であるデータマスク法について考える。
前述のようにデータマスク法においては、演算途中のデータは、マスクデータ(例えば、乱数)でマスクされ、マスクデータが付された状態で演算が実行されるので、最終的に正しい演算結果を得るためには、演算データに付されているマスクデータを外す必要がある。
したがって、データマスク法による対策技術を実装するにあたっては、データをマスクしたまま演算を行った後に、容易にマスクデータを取り除くことができるように、回路構成を考慮しなければならない。
そこで重要となるのが、暗号アルゴリズムで用いられている各演算が、線形性と非線形性のいずれを有するかという点である。一般的に暗号アルゴリズムは、線形演算と非線形演算との組み合わせから構成されており、暗号アルゴリズムで定義されている各演算の性質により、データマスク法を実装するときの実装方法が異なってくる。
例えば、線形演算では、データにマスクをかけたまま演算を行ったとしても、その線形性の性質により、演算結果から容易にマスクデータのみ取り除くことができる。
例えば、演算データをd、マスクデータをrとして、排他的論理和演算(xor)によりdをrでマスクするものとすると、マスクを付されたデータはd xor rで表される。このマスク付きデータd xor rを線形演算Fに入力すると、その線形演算の結果は、線形性の性質から次のようになる。
F(d xor r)=F(d) xor F(r) …(1)
従って、線形演算については、その演算結果から、容易にマスクデータを取り除くことができる。すなわち、まず、マスクrに線形演算Fを施して、その結果F(r)を求め、そして、先に求めたF(d xor r)=F(d) xor F(r)と、このF(r)との排他的論理和を求めることで、次のように正しい演算結果F(d)を得ることができる。
(F(d xor r)) xor F(r)=(F(d) xor F(r)) xor F(r)=F(d) xor F(r) xor F(r)=F(d)
このように、線形演算については、入力データにマスクをつけたまま演算を行った場合であっても、その演算結果からマスクによる影響を取り除き、本来求めたい正しい演算結果を、容易に得ることができる。
ところが、非線形演算においては、その非線形性の性質から、上記式(1)に示したような関係が成立しない。
従って、非線形演算については、入力データにマスクデータを付けたまま非線形演算を行った場合、上記のような方法では、その演算結果からマスクデータを取り除くことができない。
共通鍵暗号方式AESで用いる演算のうちで、SubBytes演算及びInvSubBytes演算以外の演算は、いずれも、線形演算である。上記のように、線形演算については、演算対象のデータにマスクデータを付けたまま、当該線形演算を行っても、当該線形演算の演算結果から、マスクデータを簡単に外すことが可能である。
一方、共通鍵暗号方式AESで用いる演算のうちで、非線形演算を含む演算は、SubBytes演算とInvSubBytes演算である。上記のように、GF(2)上の逆元演算が、非線形演算である。そのため、図14のような非線形演算を含む演算回路においては、マスクデータを付けたまま演算を行った場合、正しい演算結果は得られないということになる。しかし、非特許文献1に開示された演算回路においては、サイドチャネル攻撃への対策が考慮されていない(すなわち、サイドチャネル攻撃への対策が実装されていない)。
そこで、本実施形態では、非線形演算について、事前に特定のマスクデータ(後述する固定マスクデータ)に対応した非線形演算を行うための表(テーブル)を作成し、そのテーブルを用いて非線形演算を行う構成を採用するものとする。すなわち、SubBytes演算とInvSubBytes演算に含まれる非線形演算は、GF(2)上の逆元演算であるので、GF(2)上の逆元演算について、特定のマスクデータに対応した非線形演算を行うためのテーブルを予め作成し、このテーブルを用いるものとする。なお、この特定のマスクデータは、秘密の情報であるので、安全に保持されるものとする。
さらに、本実施形態では、SubBytes演算及びInvSubBytes演算以外の線形演算の部分では、乱数などのマスクデータを用いるものとしている。これを実現するために、本実施形態では、SubBytes演算及びInvSubBytes演算の前後で、乱数などのマスクデータと特定のマスクデータとの間の付け替えを行うものとしている。
このような非線形演算への対処によって、演算途中では常にマスクデータを用い、かつ、最終的に所望する正しい演算結果が得られるようにして、データマスク法による対策を実装することを可能にしている。
以下、本実施形態に係る暗号処理装置について更に詳しく説明する。
本実施形態では、共通鍵暗号方式AESに従う暗号処理装置に用いられるSubBytes演算部とInvSubBytes演算部とを一体化した演算部について、サイドチャネル攻撃への対策を実装するために、GF(2)逆元演算が、特定のマスクデータでマスクしたデータを演算対象とするように構成する。
特定のマスクデータに対応するGF(2)逆元演算部は、事前に作成したテーブルで実装することができる。この場合、テーブルは、その作成時に前提とした特定のマスクデータにのみ対応しているため、GF(2)逆元演算に入力するデータを、その特定のマスクデータにより予めマスクしておかなければ、正しい演算結果を得ることができない。
そこで、本実施形態では、ゲート数の増加を抑えて、乱数などのマスクデータを特定のマスクデータに付け替えることを考える。ここでは、暗号系統と復号系統に分れる分岐の前で付け替えを行う構成例について説明する(図1)。なお、その後で、逆元演算の直前で付け替えを行う構成例について説明する(図4)。
図1に、本実施形態に係る、サイドチャネル対策を実装した、SubBytes演算部とInvSubBytes演算部とを一体化した演算部の構成例を示す。
図1において、11は復号演算時のアフィン変換を行うアフィン変換部(第1の線形演算部)、12は暗号演算時のアフィン変換を行うアフィン変換部(第2の線形演算部)、13は復号演算時及び暗号演算時にGF(2)上の逆元演算を行う逆元演算部(非線形演算部)、14,15は復号演算と暗号演算の切り替えを行うためのセレクタ(第1の選択部、第2の選択部)、21〜26は排他的論理輪を行う排他的論理和演算部(XOR演算部)(21,22:第1のマスク付替部、23:第4のマスク付替部、24:第5のマスク付替部、25,26:第2のマスク付替部)である。
暗号演算時には、セレクタ14,15はいずれもe側に接続し、逆元演算部13によるGF(2)上の逆元演算、アフィン変換部102によるアフィン変換の順に、演算が行われる。
一方、復号演算時には、セレクタ14,15はいずれもd側に接続し、アフィン変換部11によるアフィン変換、逆元演算部13によるGF(2)上の逆元演算の順に、演算が行われる。
以下の説明で、m1とm2は、乱数などを用いた、値が変化するマスクデータ(以下、一時マスクデータと呼ぶ。)である。なお、ここでは、m2は、m1と独立した値として説明しているが、m2をm1と同一の値としても良い。この場合には、以下の式で、m2をm1に置き換えれば良い。これらの点は、後述する各構成例についても同様である。
また、以下の説明で、rfx1とrfx2は、値が予め定められたマスクデータ(以下、固定マスクデータと呼ぶ。)である。なお、ここでは、rfx2は、rfx1と独立した値として説明しているが、rfx2をrfx1と同一の値としても良い。この場合には、以下の式で、rfx2をrfx1に置き換えれば良い。これらの点は、後述する各構成例についても同様である。
なお、サイドチャネル攻撃への対策を考えた場合、固定マスクデータ(上記のrfx1やrfx2)は、当該マスクデータ中における0の個数と1の個数とが同じ(或いは、ほぼ同じ)であると好ましい。なぜなら、サイドチャネル攻撃においては、演算途中のデータ中の0の個数と1の個数数との間の相違に基づく演算時の消費電力の相違を利用しており、マスクデータ中の0の個数と1の個数とが異なるほど、当該マスクデータでマスクされたデータ中における0,1の数が偏り、攻撃を受けやすくなる可能性があるからである。この点は、一時マスクデータ(上記のm1やm2)についても同様である。これらは、後述する各構成例についても同様である。
また、以下の説明で、xorは、排他的論理和演算を表し、Affine(x)は、アフィン変換を表す。また、XのGF(2)上の逆元をX−1で表す。
なお、固定マスクデータは、秘密の情報であるので、安全に保持されるものとする。
図2に、図1の演算部の暗号演算時の動作手順の一例を示す。
まず、セレクタ14,15を暗号演算側に切り替える(ステップS1)。
次に、入力されたマスク付きデータについて、一時マスクデータm1から固定マスクデータrfx1への付け替えを行う(ステップS2)。
次に、逆元演算部13が、マスク付きデータについて、逆元演算を行う(ステップS3)。なお、逆元演算の前後で固定マスクデータの付け替えを行う場合には、逆元演算の結果として、固定マスクデータの付け替えが為されたものが、得られる。ここでは、rfx2に付け替えられるものとする。
次に、アフィン変換部12が、アフィン変換を行う(ステップS4)。
次に、アフィン変換結果のマスク付きデータについて、アフィン変換された固定マスクデータからもとの固定マスクデータrfx2へ付け直す(ステップS5)。
そして、そのマスク付きデータについて、固定マスクデータrfx2から一時マスクデータm2への付け替えを行って、これを出力する(ステップS6)。
図3に、図1の演算部の復号演算時の動作手順の一例を示す。
まず、セレクタ14,15を復号演算側に切り替える(ステップS11)。
次に、入力されたマスク付きデータについて、一時マスクデータm3から固定マスクデータrfx1への付け替えを行う(ステップS12)。
次に、アフィン変換部11が、アフィン変換を行う(ステップS13)。
次に、アフィン変換結果のマスク付きデータについて、アフィン変換された固定マスクデータからもとの固定マスクデータrfx1へ付け直す(ステップS14)。
次に、逆元演算部13が、マスク付きデータについて、逆元演算を行う(ステップS15)。なお、上記のように、逆元演算の前後で固定マスクデータの付け替えを行う場合には、逆元演算の結果として、固定マスクデータの付け替えが為されたものが、得られる。ここでは、rfx2に付け替えられるものとする。
そして、逆元演算部13から出力されたマスク付きデータについて、固定マスクデータrfx2から一時マスクデータm4への付け替えを行って、これを出力する(ステップS16)。
次に、暗号演算時の動作について説明する。
図1のSubBytes/InvSubBytes演算部について、SubBytes演算の対象となる本来のデータをd1で表す。図1のSubBytes/InvSubBytes演算部に対する入力は、演算対象となるデータd1を、一時マスクデータ(ここでの一時マスクデータをm1とする。)でマスクした値である。ここで、マスク付加操作には、排他的論理和演算を用いるものとし、マスク削除操作にも、排他的論理和演算を用いるものとする。よって、本例において、図1のSubBytes/InvSubBytes演算部に対する入力は、d1 xor m1となる。
さて、XOR演算部21は、上記一時マスクデータm1と固定マスクデータ(ここでの固定マスクデータをrfx1とする。)とを入力し、それらの排他的論理和m1 xor rfx1を出力する。
XOR演算部22は、上記入力d1 xor m1と、XOR演算部21の出力m1 xor rfx1とを入力し、それらの排他的論理和(d1 xor m1) xor ( m1 xor rfx1)=d1 xor rfx1を出力する。
前述のように、暗号演算時は、XOR演算部22の出力が、セレクタ14を介して、逆元演算部13に与えられる。
ここで、逆元演算部13は、固定マスクデータrfx1に対応して予め作成されたテーブルにより実装することができる。すなわち、逆元演算部13は、固定マスクデータrfx1によりマスクされたデータが入力された場合に、正しい演算結果を与えることができる。
固定マスクデータrfx1に対応した逆元演算部13は、XOR演算部22の出力d1 xor rfx1を入力し、GF(2)上の逆元の演算結果を出力する。ただし、この演算結果は、本来の逆元d1−1ではなく、本来の逆元d1−1を固定マスクデータrfx2でマスクしたものd1−1 xor rfx2とする。
なお、ここでは逆元演算後の固定マスクデータをrfx2としたが、前述のように、rfx2=rfx1としても良い。
アフィン変換部12は、逆元演算部13の出力d1−1 xor rfx2を入力し、そのアフィン変換結果Affine(d1−1 xor rfx2)=Affine(d1−1) xor Affine(rfx2)を出力する。
なお、ここで、式(1)で説明した線形性の性質を利用している(以下も同様である)。
XOR演算部24は、アフィン変換部12の出力Affine(d1−1) xor Affine(rfx2)と、「固定マスクデータと固定マスクデータのアフィン変換結果との排他的論理和rfx2 xor Affine(rfx2)」とを入力し、それらの排他的論理和(Affine(d1−1) xor Affine(rfx2)) xor (rfx2 xor Affine(rfx2))=Affine(d1−1) xor rfx2を出力する。なお、rfx2 xor Affine(rfx2)は、予め求めておくことが可能である。
前述のように、暗号演算時は、XOR演算部24の出力が、セレクタ15を介して、XOR演算部26に与えられる。
XOR演算部25は、固定マスクデータrfx2と、一時マスクデータ(ここでの一時マスクデータをm2とする。)とを入力し、それらの排他的論理和rfx2 xor m2を出力する。
XOR演算部26は、XOR演算部24の出力Affine(d1−1) xor rfx2とXOR演算部25の出力rfx2 xor m2とを入力し、それらの排他的論理和(Affine(d1−1) xor rfx2) xor (rfx2 xor m2)=Affine(d1−1) xor m2を出力する。すなわち、このAffine(d1−1) xor m2が、図1のSubBytes/InvSubBytes演算部の出力となる。すなわち、演算対象となる本来のデータをd1に対するSubBytes演算結果を、一時マスクデータm2でマスクしたものが、得られる。
なお、前述のように、m2=m1としても良い。
次に、復号演算時の動作について説明する。
図1のSubBytes/InvSubBytes演算部について、InvSubBytes演算の対象となる本来のデータをd2で表す。図1のSubBytes/InvSubBytes演算部に対する入力は、演算対象となるデータd2を、一時マスクデータ(ここでの一時マスクデータをm3とする。)でマスクした値である。よって、本例において、図1のSubBytes/InvSubBytes演算部に対する入力は、d2 xor m3となる。
さて、XOR演算部21は、上記一時マスクデータm3と固定マスクデータrfx1とを入力し、それらの排他的論理和m3 xor rfx1を出力する。
XOR演算部22は、上記入力d2 xor m3と、XOR演算部21の出力m3 xor rfx1とを入力し、それらの排他的論理和(d2 xor m3) xor ( m3 xor rfx1)=d2 xor rfx1を出力する。
アフィン変換部11は、XOR演算部22の出力d2 xor rfx1を入力し、そのアフィン変換Affine(d2 xor rfx1)=Affine(d2) xor Affine(rfx1)を出力する。
XOR演算部23は、アフィン変換部11の出力Affine(d2) xor Affine(rfx1)と、「固定マスクデータと固定マスクデータのアフィン変換結果との排他的論理和rfx1 xor Affine(rfx1)」とを入力し、それらの排他的論理和(Affine(d2) xor Affine(rfx1)) xor (rfx1 xor Affine(rfx1))=Affine(d2) xor rfx1を出力する。なお、rfx1 xor Affine(rfx1)は、予め求めておくことが可能である。
前述のように、復号演算時は、XOR演算部23の出力が、セレクタ14を介して、逆元演算部13に与えられる。
固定マスクデータrfx1に対応した逆元演算部13は、XOR演算部23の出力Affine(d2) xor rfx1を入力し、GF(2)上の逆元の演算結果を出力する。ただし、この演算結果は、本来の逆元Affine(d2)−1ではなく、本来の逆元Affine(d2)−1を固定マスクデータrfx2でマスクしたもの(Affine(d2))−1 xor rfx2とする。
前述のように、復号演算時は、逆元演算部13の出力が、セレクタ15を介して、XOR演算部26に与えられる。
XOR演算部25は、固定マスクデータrfx2と、一時マスクデータ(ここでの一時マスクデータをm4とする。)とを入力し、それらの排他的論理和rfx2 xor m4を出力する。
XOR演算部26は、逆元演算部13の出力(Affine(d2))−1 xor rfx2とXOR演算部25の出力rfx2 xor m4とを入力し、それらの排他的論理和((Affine(d2))−1 xor rfx2) xor (rfx2 xor m4)=(Affine(d2))−1 xor m4を出力する。すなわち、この(Affine(d2))−1 xor m4が、図1のSubBytes/InvSubBytes演算部の出力となる。すなわち、演算対象となる本来のデータをd2に対するInvSubBytes演算結果を、一時マスクデータm4でマスクしたものが、得られる。
なお、前述のように、m4=m3としても良い。
続いて、最初のセレクタの後でマスクの付け替えを行うようにした構成例について説明する。
図4に、本実施形態における、サイドチャネル対策を実装した、SubBytes演算部とInvSubBytes演算部を一体化した演算部の他の構成例を示す。なお、図1の構成例と相違する点を中心に説明する。
図4において、31は復号演算時のアフィン変換(図1のアフィン変換部11と同じアフィン変換)を行うアフィン変換部、32は暗号演算時のアフィン変換(図1のアフィン変換部12と同じアフィン変換)を行うアフィン変換部、33は復号演算時/暗号演算時の両方でGF(2)上の逆元演算を行う逆元演算部、34,35は復号演算と暗号演算の切り替えを行うためのセレクタ、41〜46は排他的論理輪を行うXOR演算部、47は復号演算時にマスクデータの演算(アフィン変換部31と同じアフィン変換)に用いるアフィン変換部、48は復号演算と暗号演算でのマスクデータの切り替えを行うためのセレクタである。
暗号演算時には、セレクタ14,15,48はいずれもe側に接続し、復号演算時には、セレクタ14,15,48はいずれもd側に接続する。
まず、暗号演算時の動作について説明する。
図4のSubBytes/InvSubBytes演算部には、図1の例と同様、d1 xor m1が入力される。
さて、XOR演算部41は、図1のXOR演算部21と同様、m1 xor rfx1を出力する。
XOR演算部43は、図1のXOR演算部と同様、d1 xor rfx1を出力し、これが逆元演算部13に与えられる。
以降は、図1の例と同じであり、最終的に、図4のSubBytes/InvSubBytes演算部の出力として、演算対象となる本来のデータをd1に対するSubBytes演算結果を、一時マスクデータm2でマスクしたもの、すなわち、Affine(d1−1) xor m2が、得られる。
次に、復号演算時の動作について説明する。
図4のSubBytes/InvSubBytes演算部には、図1の例と同様、d2 xor m3が入力される。
アフィン変換部11は、上記のd2 xor m3を入力し、そのアフィン変換Affine(d2 xor m3)=Affine(d2) xor Affine(m3)を出力する。
一方、アフィン変換部47は、一時マスクデータm3を入力して、そのアフィン変換結果Affine(m3)を出力し、XOR演算部42は、上記アフィン変換結果Affine(m3)と固定マスクデータrfx1とを入力して、それらの排他的論理和Affine(m3) xor rfx1を出力する。
XOR演算部23は、アフィン変換部11の出力Affine(d2) xor Affine(m3)と、XOR演算部42の出力Affine(m3) xor rfx1とを入力し、それらの排他的論理和(Affine(d2) xor Affine(m3)) xor (Affine(m3) xor rfx1)=Affine(d2) xor rfx1を出力し、これが逆元演算部13に与えられる。
以降は、図1の例と同じであり、最終的に、図4のSubBytes/InvSubBytes演算部の出力として、演算対象となる本来のデータをd2に対するInvSubBytes演算結果を、一時マスクデータm4でマスクしたもの、すなわち、(Affine(d2))−1 xor m4が、得られる。
次に、マスクデータ付け替えの回数を削減することによって、図1,4に比較して、より素子数を削減した構成例について説明する。なお、図1の構成例と相違する点を中心に説明する。
図1のようにアフィン変換部11の前で固定マスクデータへの付替を行う場合は、復号演算時において、固定マスクデータがアフィン変換され、図4のようにセレクタ34の出力において固定マスクデータへの付け替えを行う場合は、復号演算時において、一時マスクデータがアフィン変換される。よって、いずれの場合でも、復号演算時において、アフィン変換された固定マスクデータ又はアフィン変換された一時マスクデータを、固定マスクデータに付け替える処理が必要になる。また、図4の場合には、アフィン変換部31とは別に、一時マスクデータをアフィン変換するためのアフィン変換部47が必要になる。
また、暗号演算時においても、同様に、アフィン変換部12,32で固定マスクデータがアフィン変換されるので、アフィン変換された固定マスクデータを、固定マスクデータに付け替える必要がある。
そこで、本実施形態では、アフィン変換について不変である値を、図1の二つの固定マスクデータ又は図4の一時マスクデータ及び固定マスクデータとして採用するものとする。これによって、当該マスクデータがアフィン変換部について不変であれば、当該マスクデータ付け替えのための排他的論理和部及びアフィン変換部を省くことができる。それらを省くことによって、最大遅延時間を短くすることができ、回路の処理能力を向上することができる。
なお、アフィン変換は、暗号アルゴリズムの仕様によって定められているので、事前にアフィン変換について不変となる値を探し出しておくことが可能である。
ここで、アフィン変換Affineに、マスクされたデータ(データdとマスクrとの排他的論理和)d xor rを入力すると、アフィン変換の線形性の性質から、式(2)が成立する。
Affine(d xor r)=Affine(d) xor Affine(r) …(2)
ここで、マスクrが、次式(3)を満たすものとする。
r=Affine(r) …(3)
式(3)により、式(2)を式(4)に書き換えることができる。
Affine(d xor r)=Affine(d) xor Affine(r)=Affine(d) xor r …(4)
よって、マスクされたデータd xor rをアフィン変換した結果は、データdのアフィン変換結果をマスクrでマスクした値Affine(d) xor rになる。これが求めるべき値であるので、アフィン変換の後に、マスク付け替えのための回路が不要となることが分かる。
以下、上記(3)を満たすマスクデータを用いる場合の構成例について説明する。
図5に、本実施形態における、サイドチャネル対策を実装した、SubBytes演算部とInvSubBytes演算部を一体化した演算部の更に他の構成例を示す。
図5において、51は復号演算時のアフィン変換(図1のアフィン変換部11と同じアフィン変換)を行うアフィン変換部(第1の線形演算部)、52は暗号演算時のアフィン変換(図1のアフィン変換部12と同じアフィン変換)を行うアフィン変換部(第2の線形演算部)、53は復号演算時/暗号演算時の両方でGF(2)上の逆元演算を行う逆元演算部(非線形演算部)、54,55は復号演算と暗号演算の切り替えを行うためのセレクタ(第1の選択部、第2の選択部)、61〜64は排他的論理輪を行うXOR演算部である(61,62:第1のマスク付替部、63,64:第2のマスク付替部)。
なお、暗号演算時には、セレクタ14,15はいずれもe側に接続し、復号演算時には、セレクタ14,15はいずれもd側に接続する点は、図1の場合と同様である。
また、一時マスクデータや固定マスクデータの中における0の個数と1の個数とが同じ(或いは、ほぼ同じ)であると好ましい点は、図1の場合と同様である。
さて、図1の構成例を見ると、XOR演算部23は、アフィン変換部11の出力に対して、「固定マスクデータと固定マスクデータのアフィン変換結果との排他的論理和rfx1 xor Affine(rfx1)」との排他的論理和を取る演算を行っている。これは、アフィン変換部11の出力において、Affine(d2)に付けられているAffine(rfx1)を、rfx1に付け替える操作である。
ここで、rfx1として、アフィン変換(アフィン変換部11,51のアフィン変換)について不変となる値、すなわち、rfx1=Affine(rfx1)を満たすような値を採用することを考える。この場合には、アフィン変換部11の出力は、Affine(d2) xor Affine(rfx1)=Affine(d2) xor rfx1となる。言い換えると、rfx1=Affine(rfx1)の場合、rfx1 xor Affine(rfx1)=0となり、これを一方の入力とするXOR演算部23は、他方の入力をそのまま出力することになる。これは、GF(2)逆元演算の前でのマスクデータ付け替えが不要であり、すなわち、図1のXOR演算部23が不要であることを意味する。
よって、図5の構成例では、固定マスクデータrfx1として、アフィン変換(アフィン変換部12,52のアフィン変換)について不変となる値、すなわち、rfx1=Affine(rfx1)を満たすような値を必ず採用することとして、図1の構成例から、XOR演算部23を省いている。
また、XOR演算部24についても同様で、固定マスクデータrfx2として、rfx2=Affine(rfx2)を満たすような値を必ず採用することとして、図1の構成例から、XOR演算部24を省いている。
図6に、図5の演算部の暗号演算時の動作手順の一例を示す。
まず、セレクタ54,55を暗号演算側に切り替える(ステップS21)。
次に、入力されたマスク付きデータについて、一時マスクデータm1から固定マスクデータrfx1への付け替えを行う(ステップS22)。
次に、逆元演算部53が、マスク付きデータについて、逆元演算を行う(ステップS23)。なお、逆元演算の前後で固定マスクデータの付け替えを行う場合には、逆元演算の結果として、固定マスクデータの付け替えが為されたものが、得られる。ここでは、rfx2に付け替えられるものとする。
次に、アフィン変換部52が、アフィン変換を行う(ステップS24)。なお、ここでは固定マスクデータはアフィン変換によって不変であるので、固定マスクデータの付け替えは不要である。
そして、アフィン変換部52から出力されたマスク付きデータについて、固定マスクデータrfx2から一時マスクデータm2への付け替えを行って、これを出力する(ステップS25)。
図7に、図5の演算部の復号演算時の動作手順の一例を示す。
まず、セレクタ54,55を復号演算側に切り替える(ステップS31)。
次に、入力されたマスク付きデータについて、一時マスクデータm3から固定マスクデータrfx1への付け替えを行う(ステップS32)。
次に、アフィン変換部51が、アフィン変換を行う(ステップS33)。なお、ここでは固定マスクデータはアフィン変換によって不変であるので、固定マスクデータの付け替えは不要である。
次に、逆元演算部53が、マスク付きデータについて、逆元演算を行う(ステップS34)。なお、上記のように、逆元演算の前後で固定マスクデータの付け替えを行う場合には、逆元演算の結果として、固定マスクデータの付け替えが為されたものが、得られる。ここでは、rfx2に付け替えられるものとする。
そして、逆元演算部53から出力されたマスク付きデータについて、固定マスクデータrfx2から一時マスクデータm4への付け替えを行って、これを出力する(ステップS35)。
次に、暗号演算時の動作について説明する。
図5のSubBytes/InvSubBytes演算部に対する入力を、d1 xor m1とする。
XOR演算部61は、上記一時マスクデータm1と固定マスクデータrfx1とを入力し、それらの排他的論理和m1 xor rfx1を出力する。
XOR演算部62は、上記入力d1 xor m1と、XOR演算部61の出力m1 xor rfx1とを入力し、それらの排他的論理和(d1 xor m1) xor ( m1 xor rfx1)=d1 xor rfx1を出力する。
暗号演算時は、XOR演算部62の出力が、セレクタ54を介して、逆元演算部13に与えられる。
逆元演算部53は、XOR演算部62の出力d1 xor rfx1を入力し、逆元演算結果d1−1 xor rfx2を出力する。
なお、ここでは逆元演算後の固定マスクデータをrfx2としたが、前述のように、rfx2=rfx1としても良い。
アフィン変換部52は、逆元演算部53の出力d1−1 xor rfx2を入力し、そのアフィン変換結果Affine(d1−1 xor rfx2)=Affine(d1−1) xor Affine(rfx2)を出力する。
ここで、Affine(rfx2)=rfx2であることから、Affine(d1−1) xor Affine(rfx2)=Affine(d1−1) xor rfx2が得られる。
暗号演算時は、逆元演算部53の出力が、セレクタ55を介して、XOR演算部64に与えられる。
XOR演算部63は、固定マスクデータrfx2と、一時マスクデータm2とを入力し、それらの排他的論理和rfx2 xor m2を出力する。
XOR演算部64は、XOR演算部63の出力Affine(d1−1) xor rfx2とXOR演算部25の出力rfx2 xor m2とを入力し、それらの排他的論理和(Affine(d1−1) xor rfx2) xor (rfx2 xor m2)=Affine(d1−1) xor m2を出力する。すなわち、このAffine(d1−1) xor m2が、図5のSubBytes/InvSubBytes演算部の出力となる。すなわち、演算対象となる本来のデータをd1に対するSubBytes演算結果を、一時マスクデータm2でマスクしたものが、得られる。
なお、前述のように、m2=m1としても良い。
次に、復号演算時の動作について説明する。
図5のSubBytes/InvSubBytes演算部に対する入力を、d2 xor m3となる。
XOR演算部61は、上記一時マスクデータm3と固定マスクデータrfx1とを入力し、それらの排他的論理和m3 xor rfx1を出力する。
XOR演算部62は、上記入力d2 xor m3と、XOR演算部部22の出力m3 xor rfx1とを入力し、それらの排他的論理和(d2 xor m3) xor ( m3 xor rfx1)=d2 xor rfx1を出力する。
アフィン変換部51は、XOR演算部62の出力d2 xor rfx1を入力し、そのアフィン変換Affine(d2 xor rfx1)=Affine(d2) xor Affine(rfx1)を出力する。
ここで、Affine(rfx1)=rfx1であることから、Affine(d2) xor Affine(rfx1)=Affine(d2) xor rfx1が得られる。
復号演算時は、アフィン変換部51の出力が、セレクタ54を介して、逆元演算部53に与えられる。
逆元演算部53は、アフィン変換部51の出力Affine(d2) xor rfx1を入力し、逆元演算結果(Affine(d2))−1 xor rfx2を出力する。
なお、ここでは逆元演算後の固定マスクデータをrfx2としたが、前述のように、rfx2=rfx1としても良い。
復号演算時は、逆元演算部53の出力が、セレクタ55を介して、XOR演算部64に与えられる。
XOR演算部63は、固定マスクデータrfx2と、一時マスクデータ(ここでの一時マスクデータをm4とする。)とを入力し、それらの排他的論理和rfx2 xor m4を出力する。
XOR演算部64は、逆元演算部53の出力(Affine(d2))−1 xor rfx2とXOR演算部63の出力rfx2 xor m4とを入力し、それらの排他的論理和((Affine(d2))−1 xor rfx2) xor (rfx2 xor m4)=(Affine(d2))−1 xor m4を出力する。すなわち、この(Affine(d2))−1 xor m4が、図5のSubBytes/InvSubBytes演算部の出力となる。すなわち、演算対象となる本来のデータをd2に対するInvSubBytes演算結果を、一時マスクデータm4でマスクしたものが、得られる。
なお、前述のように、m4=m3としても良い。
図5に示すように、固定マスクデータとしてアフィン変換について不変の値を用いることによって、ゲート数を削減し、最大遅延時間を短くすることが可能となる。
なお、図5では、第1の固定マスクデータと第2の固定マスクデータの両方についてアフィン変換について不変としたが、第1の固定マスクデータと第2の固定マスクデータのいずれか一方のみをアフィン変換について不変としても良い。この場合には、不変でないとした方について、図1のXOR演算部23又はXOR演算部24と同じ構成にすれば良い。
次に、本実施形態に係る暗号演算装置について説明する。
図8に、本実施形態に係る暗号演算装置の構成例を示す。
図8において、120の部分が、図5で示した本実施形態に係る、SubBytes演算部とInvSubBytes演算部を一体化し、データマスク法を実装したSubBytes/InvSubBytes演算部である。なお、図8において、XOR演算部61及びXOR演算部63は省略している。
すなわち、図8に示された暗号演算装置は、共通鍵暗号方式AESに従う一般的な暗号処理装置において、SubBytes演算回路とInvSubBytes演算回路との部分に、図5で示した本実施形態に係るSubBytes/InvSubBytes演算部120を適用したものである。よって、図8に示された暗号演算装置は、SubBytes/InvSubBytes演算部120以外の部分は、基本的に、従来のものと同じで構わない。
図8において、101は演算途中のデータをマスクするための一時マスクデータを生成するマスクデータ生成部、102はAESのMixColumns演算及びInvMixColumns演算を行うMixColumns/InvMixColumns演算部、103は一つ前の一時マスクデータの値を保持するためのレジスタ、104は排他的論理和演算部、105はセレクタ、106は排他的論理和演算部、107はAESのAddRoundKey演算を行うAddRoundKey演算部、108はAESのShiftRows演算及びInvShiftRows演算を行うShiftRows/InvShiftRows演算部、109はセレクタ、110はAddRoundKey演算部、111はMixColumns/InvMixColumns演算部、112はセレクタ、113は排他的論理和演算部を表す。
セレクタ109,54,55,112は、いずれも、暗号演算時にはe側に接続し、復号演算時にはd側に接続する。
セレクタ105は、開始時にs1側に接続し、次のラウンド以降はs2側に接続し、最終ラウンドではs3側に接続する。
マスクデータ生成部101は、例えば、1ラウンド毎に、一時マスクデータを生成する。
レジスタ103の初期値は、“0”である。
なお、図8の構成例は、図5において、m2=m1としたものである。m2をm1と独立させる場合には、例えば、図8の構成の一部を図9のように修正すればよい。図9において、第1のマスクデータ生成部101は、m1の生成に用い、第2のマスクデータ生成部114は、m2の生成に用いる。また、レジスタ103は第2のマスクデータ生成部114に接続される。また、排他的論理和演算部113は第2のマスクデータ生成部114に接続される。
次に、図8又は図9に比較して、より素子数を削減した構成例について説明する。なお、ここでは、図8又は図9の構成例と相違する点を中心に説明する。
AESの各演算によるマスクデータへの影響を考えると、図5でのアフィン変換と同じように演算後にマスクの値が変るのは、他の演算では、MixColumns演算及びInvMixColumns演算だけである。なぜなら、AddRoundKey演算は、拡大鍵データとの排他的論理和演算であるので、マスクデータは変らない。また、ShiftRows演算は、バイト単位でのデータの並び換えであるので、マスクデータの並び換えを行うだけで良い。データの並び換えは、回路の実装では配線を並び換えるだけよく、特別な回路は必要せずにShiftRows演算後の値を得ることができるため、この演算によるマスクデータへの影響はないと考えることができる。
これに対して、MixColumns演算及びInvMixColumns演算は、演算対象のデータ内において、4バイト単位で演算を行うため、マスクデータの値は変化する。しかし、マスクデータとして、同じ値を4バイト並べたものを考えると、そのようなマスクデータは、MixColumns演算とInvMixColumns演算のいずれによっても、変らない。
すなわち、MixColumns演算においては、演算対象のデータについて、4バイト毎に次式(5)のような計算を行う。
MixColumns(d0、d1、d2、d3)={02}・d0 xor {03}・d1 xor d2 xor d3
…(5)
なお、式(5)の・はガロア体の乗算を示す。ここで、d0、d1、d2、d3がすべて同じ値dsであれば、次式(6)のように計算される。ここで、{03}・dsを{02}・ds xor dsと分割できることを利用している。
MixColumns(ds、ds、ds、ds)
={02}・ds xor {03}・ds xor ds xor ds
={02}・ds xor ({02}・ds xor ds) xor ds xor ds
=ds …(6)
InvMixColumnsの演算も、上記と同様に4バイトのデータが同じであれば、InvMixColumns演算により、演算結果はdsとなる。
従って、MixColumns/InvMixColumns演算について不変であるようなマスクデータ(一時マスクデータ)を必ず用いることによって、図8又は図9の構成から、MixColumns/InvMixColumns演算部102を省くことができる。
図10に、図8の構成から、MixColumns/InvMixColumns演算部102を省いた暗号演算装置の構成例を示す。また、図11に、図9の部分からMixColumns/InvMixColumns演算部102を省いた構成例を示す。
以下、図10の構成例について説明する。
排他的論理和演算部106において、演算対象のデータが、マスクデータ生成部101が生成した一時マスクデータによりマスクされる。その後、AddRoundKey演算部107とShiftRows/InvShiftRows演算部108においては、一時マスクデータは、不変である。次に、SubBytes/InvSubBytes演算部120では、前述したように、一時マスクデータから固定マスクデータへ付け替えた上で演算が行われた後に、固定マスクデータから一時マスクデータへ付け替えて出力が行われるので、一時マスクデータへの影響はない。そして、MixColumns/InvMixColumns演算部111とAddRoundKey演算部107においても、一時マスクデータは、不変である。以上から、図10の構成によっても、正しい演算結果を得ることができることが分る。もちろん、図11の構成についても同様である。
以上のように、4バイト毎に同じマスクデータを用いることで、マスクデータ用のMixColumns/InvMixColumns演算部を削減可能な回路構成とすることができる。
次に、これまでの構成例を少し修正した構成例について説明する。
さて、暗号演算装置に高い処理能力が求められる場合、最大遅延時間は短い方が望ましい。つまり、最大遅延時間を決定するクリティカルパス上にある素子や回路などは少ない方が良く、例えば、データの選択を行うセレクタは、できる限り少なくした方が望ましい。
そこで、AESのShiftRows/InvShiftRows演算とSubBytes/InvSubBytes演算について考える。
ShiftRows演算とInvShiftRows演算では、データの並べ替えの順序が異るため、図10又は図11の構成例では、セレクタ109によって暗号演算時と復号演算時のデータの切り替えを行っている。
そこで、図8〜図11の各構成例それぞれについて、ShiftRows/InvShiftRows演算を、ShiftRows演算とInvShiftRows演算とに分離し、かつ、ShiftRows演算及びInvSubBytes演算を、それぞれ、後段のSubBytes演算用入力及びInvSubBytes演算用入力に接続することで、セレクタ109を削減することができる。
図12に、この場合に利用可能な、サイドチャネル対策を実装した、SubBytes演算部とInvSubBytes演算部を一体化した演算部の構成例を示す。なお、ここでは、図5の構成例と相違する点を中心に説明する。
図12において、71は復号演算時のアフィン変換を行うアフィン変換部(第1の線形演算部)、72は暗号演算時のアフィン変換を行うアフィン変換部(第2の線形演算部)、73は復号演算時/暗号演算時の両方でGF(2)上の逆元演算を行う逆元演算部(非線形演算部)、74,75は復号演算と暗号演算の切り替えを行うためのセレクタ(第1の選択部、第2の選択部)、81〜86は排他的論理輪を行うXOR演算部である(81,82:第1のマスク付替部、83,84:第3のマスク付替部、85,86:第2のマスク付替部)。
図12の構成例は、図5に比較して、入力側が、SubBytes演算用入力(暗号演算時の入力)とInvSubBytes演算用入力(復号演算時の入力)とが、別系統になっている。
図12の演算部の暗号演算時の動作手順の一例は、基本的には、図6と同じである。
まず、セレクタ74,75を暗号演算側に切り替える(ステップS21)。
次に、入力されたマスク付きデータについて、一時マスクデータm1から固定マスクデータrfx2への付け替えを行う(ステップS22)。
次に、逆元演算部73が、マスク付きデータについて、逆元演算を行う(ステップS23)。なお、逆元演算の前後で固定マスクデータの付け替えを行う場合には、逆元演算の結果として、固定マスクデータの付け替えが為されたものが、得られる。ここでは、rfx2に付け替えられるものとする。
次に、アフィン変換部72が、アフィン変換を行う(ステップS24)。なお、ここでは固定マスクデータはアフィン変換によって不変であるので、固定マスクデータの付け替えは不要である。
そして、アフィン変換部72から出力されたマスク付きデータについて、固定マスクデータrfx2から一時マスクデータm2への付け替えを行って、これを出力する(ステップS25)。
図12の演算部の復号演算時の動作手順の一例は、基本的には、図7と同じである。
まず、セレクタ74,75を復号演算側に切り替える(ステップS31)。
次に、入力されたマスク付きデータについて、一時マスクデータm3から固定マスクデータrfx1への付け替えを行う(ステップS32)。ただし、ここでは、rfx1の代わりに、後述するrfx´への付け替えを行う。
次に、アフィン変換部71が、アフィン変換を行う(ステップS33)。なお、ここでは固定マスクデータrfx´はアフィン変換によって、暗号演算時の固定マスクデータrfx1と同じ値に変換されるので、固定マスクデータの付け替えは不要である。
次に、逆元演算部73が、マスク付きデータについて、逆元演算を行う(ステップS34)。なお、上記のように、逆元演算の前後で固定マスクデータの付け替えを行う場合には、逆元演算の結果として、固定マスクデータの付け替えが為されたものが、得られる。ここでは、rfx2に付け替えられるものとする。
そして、逆元演算部73から出力されたマスク付きデータについて、固定マスクデータrfx2から一時マスクデータm4への付け替えを行って、これを出力する(ステップS35)。
次に、暗号演算時の動作について説明する。
図12のSubBytes演算用入力には、他の例と同様、d1 xor m1が入力される。
XOR演算部81は、他の例と同様、m1 xor rfx1を出力する。
XOR演算部82は、他の例と同様、d1 xor rfx1を出力し、これが逆元演算部73に与えられる。
以降は、図5の例と同じであり、最終的に、Affine(d1−1) xor m2が出力される。
次に、復号演算時の動作について説明する。
図12のInvSubBytes演算用入力には、他の例と同様、d2 xor m3が入力される。
XOR演算部83は、一時マスクデータm3と固定マスクデータ(ここではrfx´とする。)とを入力し、それらの排他的論理和m3 xor rfx´を出力する。rfx´については後述する。
XOR演算部84は、上記入力d2 xor m3と、XOR演算部部83の出力m1 xor rfx´とを入力し、それらの排他的論理和(d2 xor m3) xor (m3 xor rfx´)=d2 xor rfx´を出力する。
アフィン変換部11は、XOR演算部84の出力d2 xor rfx´を入力し、そのアフィン変換Affine(d2 xor rfx´)=Affine(d2) xor Affine(rfx´)を出力し、これが逆元演算部73に与えられる。ここで、後述するように、Affine(d2) xor Affine(rfx´)=Affine(d2) xor rfx1となる。
以降は、図5の例と同じであり、最終的に、(Affine(d2))−1 xor m4が出力される。
ここで、上記のrfx´について説明する。
図12の暗号演算系統では、図5の例の場合と同様に、rfx1として、アフィン変換(アフィン変換部11,51,71のアフィン変換)について不変となる値、すなわち、rfx1=Affine(rfx1)を満たすような値を採用するものとしている。
これに対して、図12の復号演算系統では、次式(7)が成立する値を用いて実装することができる。すなわち、rfx´は、そのアフィン変換(アフィン変換部11,51,71のアフィン変換)が、暗号変換時のrfx1を与えるような値である。なお、このとき、rfx´のハミング重みとrfx1のハミング重みとが変わらないことが、サイドチャネル攻撃の対策としては重要である。
rfx1=Affine(rfx´) …(7)
したがって、この場合、上記のように、アフィン変換部11の出力は、Affine(d2) xor Affine(rfx´)=Affine(d2) xor rfx1となる。
なお、この場合に、暗号演算時のrfx1は、アフィン変換部11のアフィン変換について、不変でなくても良い(ただし、不変であっても構わない)。
また、暗号演算時のrfx1が、アフィン変換部11のアフィン変換について不変である場合に、rfx´として、rfx1と同じ値を用いても構わない。
なお、図12において、第2の固定マスクデータを、アフィン変換について不変でないとしても良い。この場合には、図1のXOR演算部24と同じ構成を採用すれば良い。
図13に、図12のSubBytes/InvSubBytes演算部を適用した暗号演算装置の構成例を示す。
図13において、220の部分が、図12で示したSubBytes/InvSubBytes演算部である。なお、図13において、XOR演算部81、XOR演算部83及びXOR演算部85は省略している。
また、図8と比較して、ShiftRows/InvShiftRows演算部108が、ShiftRows演算部208及びInvShiftRows演算部209に置き換えられ、セレクタ109が削除されている。なお、それら以外の部分は、基本的に、従来のものと同じで構わない。
図13においては、排他的論理和演算部84が復号データパスに入るために回路規模は少し増えるが、図8と比較して通過するセレクタの数が減ることにより、クリティカルパスは短くなる。なぜなら、図8では、SubBytes/InvSubBytes演算部120において必ず排他的論理和演算部62を用いてマスクデータの付け替えを行うので、図12のSubBytes/InvSubBytes演算部220において、復号データパスに排他的論理和演算部84が追加されたとしても、そのために最大遅延時間が変わることはなく、全体としては、セレクタの数が減った分、最大遅延時間が短くなるからである。よって、図8に比較して、暗号演算回路の処理能力が高くなる。
なお、図13の構成例は、図8で説明した構成例に修正を施したものであるが、図9〜図1の各構成例それぞれについて同様に修正を施すことが可能である。
なお、この場合にも、4バイト毎に同じマスクデータを用いることで、マスクデータ用のMixColumns/InvMixColumns演算部を削減しても良い。
また、マスクデータ中における0の個数と1の個数とが同じ(或いは、ほぼ同じ)にしても良い。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
本発明の一実施形態に係る演算部の構成例を示す図 同実施形態に係る演算部の暗号演算時の動作手順の一例を示すフローチャート 同号施形態に係る演算部の復号演算時の動作手順の一例を示すフローチャート 同実施形態に係る演算部の構成例を示す図 同実施形態に係る演算部の更に構成例を示す図 同実施形態に係る演算部の暗号演算時の動作手順の他の例を示すフローチャート 同号施形態に係る演算部の復号演算時の動作手順の他の例を示すフローチャート 同実施形態に係る暗号演算装置の構成例を示す図 同実施形態に係る暗号演算装置の他の構成例を示す図 同実施形態に係る暗号演算装置の更に他の構成例を示す図 同実施形態に係る暗号演算装置の更に他の構成例を示す図 同実施形態に係る演算部の更に構成例を示す図 同実施形態に係る暗号演算装置の更に他の構成例を示す図 従来の演算部を示す図
符号の説明
11,12,31,32,47,51,52,71,72…アフィン変換部、13,33,53,73…逆元演算部、14,15,34,35,48,54,55,74,75,105,109…セレクタ、21〜26,41〜46,61〜64,81〜86,104,106,113…排他的論理和演算部、101,114…マスクデータ生成部、102,111…MixColumns/InvMixColumns演算部、103…レジスタ、107,110…AddRoundKey演算部、108…ShiftRows/InvShiftRows演算部、208…ShiftRows演算部、209…InvShiftRows演算部、120,220…SubBytes/InvSubBytes演算部

Claims (16)

  1. 非線形演算と線形演算とを含む暗号演算及び復号演算を行う暗号処理装置であって、
    演算対象データを第1の一時マスクデータでマスクした第1のデータを入力し、該第1のデータについて、該第1の一時マスクデータから、第1の線形演算について不変の値である第1の固定マスクデータへの付け替えを行って、該演算対象データを該第1の固定マスクデータでマスクした第2のデータを出力する第1のマスク付替部と、
    前記第2のデータを入力し、該第2のデータに前記第1の線形演算を施して、前記演算対象データに対して前記第1の線形演算を施した結果である第1の結果データを前記第1の固定マスクデータでマスクした第3のデータを出力する第1の線形演算部と
    号演算時には、前記第2のデータを入力し、該第2のデータに非線形演算を施して、前記演算対象データに対して該非線形演算を施した結果を第2の線形演算について不変の値である第2の固定マスクデータでマスクした第4のデータを出力し、復号演算時には、前記第3のデータを入力し、該第3のデータに該非線形演算を施して、前記第1の結果データに対して該非線形演算を施した結果である第2の結果データを前記第2の固定マスクデータでマスクした第5のデータを出力する非線形演算部と、
    前記第4のデータ又は前記第5のデータを入力し、該第4のデータ又は該第5のデータに前記第2の線形演算を施して、前記非線形演算の結果である第3の結果データに対して該第2の線形演算を施した結果である第4の結果データを前記第2の固定マスクデータでマスクした第6のデータを出力する第2の線形演算部と
    号演算時には、前記第6のデータを入力し、該第6のデータについて、前記第2の固定マスクデータから、第2の一時マスクデータへの付け替えを行って、前記第4の結果データを該第2の一時マスクデータでマスクした第7のデータを出力し、復号演算時には、前記第5のデータを入力し、該第5のデータについて、前記第2の固定マスクデータから、該第2の一時マスクデータへの付け替えを行って、前記第2の結果データを該第2の一時マスクデータでマスクした第8のデータを出力する第2のマスク付替部とを備えたことを特徴とする暗号処理装置。
  2. 前記第2のデータ及び前記第3のデータを入力し、暗号演算時には該第2のデータを、復号演算時には該第3のデータをそれぞれ選択して出力する第1の選択部と、
    前記第5のデータ及び前記第6のデータを入力し、暗号演算時には該第6のデータを、復号演算時には該第5のデータをそれぞれ選択して出力する第2の選択部とを更に備えたことを特徴とする請求項1に記載の暗号処理装置。
  3. 前記第1のデータを入力し、該第1のデータについて、前記第1の一時マスクデータから、前記第1の線形演算部により前記第1の線形演算を施した場合に前記第1の固定マスクデータを与える第3の固定マスクデータへの付け替えを行って、該演算対象データを該第3の固定マスクデータでマスクした第9のデータを出力する第3のマスク付替部を更に備え、
    前記第1の線形演算部は、復号演算時には、前記第9のデータを入力し、該第9のデータに前記第1の線形演算を施して、前記第3のデータを出力することを特徴とする請求項1または2に記載の暗号処理装置。
  4. 前記第1の一時マスクデータと前記第2の一時マスクデータとの一方又は両方について、当該一時マスクデータ中における0の個数と1の個数とを同じ又はほぼ同じにしたことを特徴とする請求項1ないしのいずれか1項に記載の暗号処理装置。
  5. 前記第1の固定マスクデータと前記第2の固定マスクデータとの一方又は両方について、当該固定マスクデータ中における0の個数と1の個数とを同じ又はほぼ同じにしたことを特徴とする請求項1ないしのいずれか1項に記載の暗号処理装置。
  6. 前記第1の一時マスクデータと、前記第2の一時マスクデータとを独立して生成するマスクデータ生成部を更に備えたことを特徴とする請求項1ないしのいずれか1項に記載の暗号処理装置。
  7. 前記第2の一時マスクデータを前記第1の一時マスクデータと同一とし、
    前記暗号処理装置は、前記第1の一時マスクデータを生成するマスクデータ生成部を更に備えたことを特徴とする請求項1ないしのいずれか1項に記載の暗号処理装置。
  8. 前記第1の固定マスクデータと、前記第2の固定マスクデータとを独立したものとしたことを特徴とする請求項1ないしのいずれか1項に記載の暗号処理装置。
  9. 前記第2の固定マスクデータを前記第1の固定マスクデータと同一としたことを特徴とする請求項1ないしのいずれか1項に記載の暗号処理装置。
  10. 前記非線形演算部は、前記第1の固定マスクデータ及び前記第2の固定マスクデータに対応して予め用意されたテーブルを用いて構成されたことを特徴とする請求項1ないしのいずれか1項に記載の暗号処理装置。
  11. 前記線形演算はアフィン変換であり、前記非線形演算はガロア体上の逆元演算であることを特徴とする請求項1ないし10のいずれか1項に記載の暗号処理装置。
  12. 前記暗号処理装置は共通鍵暗号方式AESに従ったものであることを特徴とする請求項1ないし11のいずれか1項に記載の暗号処理装置。
  13. 前記暗号演算は、SubBytes演算であり、前記復号演算は、InvSubBytes演算であることを特徴とする請求項12に記載の暗号処理装置。
  14. 前記一時マスクデータを、MixColumns演算及びInvMixColumns演算について不変の値としたことを特徴とする請求項12または13に記載の暗号処理装置
  15. 非線形演算と線形演算とを含む暗号演算及び復号演算を行う暗号処理装置の演算方法であって、
    前記暗号処理装置の備える第1のマスク付替部が、演算対象データを第1の一時マスクデータでマスクした第1のデータを入力し、該第1のデータについて、該第1の一時マスクデータから、第1の線形演算について不変の値である第1の固定マスクデータへの付け替えを行って、該演算対象データを該第1の固定マスクデータでマスクした第2のデータを出力するステップと、
    前記暗号処理装置の備える第1の線形演算部が、前記第2のデータを入力し、該第2のデータに前記第1の線形演算を施して、前記演算対象データに対して前記第1の線形演算を施した結果である第1の結果データを前記第1の固定マスクデータでマスクした第3のデータを出力するステップと
    記暗号処理装置の備える非線形演算部が、暗号演算時には、前記第2のデータを入力し、該第2のデータに非線形演算を施して、前記演算対象データに対して該非線形演算を施した結果を第2の線形演算について不変の値である第2の固定マスクデータでマスクした第4のデータを出力し、復号演算時には、前記第3のデータを入力し、該第3のデータに該非線形演算を施して、前記第1の結果データに対して該非線形演算を施した結果である第2の結果データを前記第2の固定マスクデータでマスクした第5のデータを出力するステップと、
    前記暗号処理装置の備える第2の線形演算部が、前記第4のデータ又は前記第5のデータを入力し、該第4のデータ又は該第5のデータに前記第2の線形演算を施して、前記非線形演算の結果である第3の結果データに対して該第2の線形演算を施した結果である第4の結果データを前記第2の固定マスクデータでマスクした第6のデータを出力するステップと
    記暗号処理装置の備える第2のマスク付替部が、暗号演算時には、前記第6のデータを入力し、該第6のデータについて、前記第2の固定マスクデータから、第2の一時マスクデータへの付け替えを行って、前記第4の結果データを該第2の一時マスクデータでマスクした第7のデータを出力し、復号演算時には、前記第5のデータを入力し、該第5のデータについて、前記第2の固定マスクデータから、該第2の一時マスクデータへの付け替えを行って、前記第2の結果データを該第2の一時マスクデータでマスクした第8のデータを出力するステップとを有することを特徴とする演算方法。
  16. 前記暗号処理装置の備える第1の選択部が、前記第2のデータ及び前記第3のデータを入力し、暗号演算時には該第2のデータを、復号演算時には該第3のデータをそれぞれ選択して出力するステップと、
    前記暗号処理装置の備える第2の選択部が、前記第5のデータ及び前記第6のデータを入力し、暗号演算時には該第6のデータを、復号演算時には該第5のデータをそれぞれ選択して出力するステップとを更に有することを特徴とする請求項15に記載の演算方法。
JP2008313556A 2008-12-09 2008-12-09 暗号処理装置及び演算方法 Active JP5268609B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2008313556A JP5268609B2 (ja) 2008-12-09 2008-12-09 暗号処理装置及び演算方法
PCT/JP2009/070618 WO2010067827A1 (ja) 2008-12-09 2009-12-09 暗号処理装置及び演算方法
US13/155,889 US8817975B2 (en) 2008-12-09 2011-06-08 Cryptographic processing apparatus and operation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008313556A JP5268609B2 (ja) 2008-12-09 2008-12-09 暗号処理装置及び演算方法

Publications (2)

Publication Number Publication Date
JP2010141430A JP2010141430A (ja) 2010-06-24
JP5268609B2 true JP5268609B2 (ja) 2013-08-21

Family

ID=42242814

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008313556A Active JP5268609B2 (ja) 2008-12-09 2008-12-09 暗号処理装置及び演算方法

Country Status (3)

Country Link
US (1) US8817975B2 (ja)
JP (1) JP5268609B2 (ja)
WO (1) WO2010067827A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011101994A1 (ja) 2010-02-22 2011-08-25 株式会社東芝 暗号化装置
JP5060606B2 (ja) * 2010-09-17 2012-10-31 株式会社東芝 暗号化装置
JP5481455B2 (ja) * 2011-09-27 2014-04-23 株式会社東芝 暗号処理装置
JP2013105100A (ja) * 2011-11-15 2013-05-30 Tokai Rika Co Ltd データ変換装置
JP5897323B2 (ja) * 2011-12-26 2016-03-30 株式会社日立ハイテクノロジーズ 自動分析装置および測定値異常検出方法
JP5711681B2 (ja) * 2012-03-06 2015-05-07 株式会社東芝 暗号処理装置
US10020932B2 (en) * 2015-11-13 2018-07-10 Nxp B.V. Split-and-merge approach to protect against DFA attacks
CN107465645A (zh) * 2016-06-03 2017-12-12 华邦电子股份有限公司 破解装置以及方法
CN107547189A (zh) * 2016-06-28 2018-01-05 埃沙尔公司 免受侧信道分析的保护方法和设备
US10243937B2 (en) * 2016-07-08 2019-03-26 Nxp B.V. Equality check implemented with secret sharing
US11507699B2 (en) * 2019-09-27 2022-11-22 Intel Corporation Processor with private pipeline
US11632231B2 (en) * 2020-03-05 2023-04-18 Novatek Microelectronics Corp. Substitute box, substitute method and apparatus thereof

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4596686B2 (ja) * 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
WO2004070510A2 (en) * 2003-02-06 2004-08-19 Discretix Technologies Ltd. Device and method of manipulating masked data
JP3940714B2 (ja) * 2003-09-25 2007-07-04 株式会社東芝 演算装置、および、暗号・復号演算装置
KR100594265B1 (ko) * 2004-03-16 2006-06-30 삼성전자주식회사 매스킹 방법이 적용된 데이터 암호처리장치, aes암호시스템 및 aes 암호방법.
JP2007189659A (ja) * 2005-12-15 2007-07-26 Toshiba Corp 暗号化装置、暗号化方法及び暗号化プログラム
US7970129B2 (en) * 2007-04-19 2011-06-28 Spansion Llc Selection of a lookup table with data masked with a combination of an additive and multiplicative mask
JP5242560B2 (ja) * 2007-05-30 2013-07-24 パナソニック株式会社 暗号化装置、復号化装置、暗号化方法及び集積回路

Also Published As

Publication number Publication date
US20110268266A1 (en) 2011-11-03
JP2010141430A (ja) 2010-06-24
US8817975B2 (en) 2014-08-26
WO2010067827A1 (ja) 2010-06-17

Similar Documents

Publication Publication Date Title
JP5268609B2 (ja) 暗号処理装置及び演算方法
US10567162B2 (en) Mask S-box, block ciphers algorithm device and corresponding construction process
US9515818B2 (en) Multi-block cryptographic operation
JP5229315B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
JP5711681B2 (ja) 暗号処理装置
JP6406350B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
CN106233660B (zh) 加密处理设备、加密处理方法和程序
JP5364840B2 (ja) 暗号化装置
US8000471B2 (en) Robust cipher design
US11463235B2 (en) Encryption device, encryption method, program, decryption device, and decryption method
US20130243191A1 (en) Encryption key generating apparatus
WO2015146430A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP5327493B1 (ja) 暗号化処理回路及び復号処理回路、その方法並びにそのプログラム
KR102141843B1 (ko) 암호화 방법을 실행하기 위한 장치 및 방법
JP6136325B2 (ja) 暗号処理装置、暗号処理方法およびプログラム
KR101971001B1 (ko) 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치
JP5500277B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
EP2209252B1 (en) Compact hardware implementation of block ciphers with a MISTY structure
WO2015146432A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP6292107B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
WO2013190782A1 (ja) 暗号化処理回路および復号処理回路
JP6371197B2 (ja) 暗号処理装置
JP2014116897A (ja) 暗号化装置、暗号化方法およびプログラム
JP2020134730A (ja) ブロック暗号装置、ブロック暗号方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130322

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130409

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130507

R151 Written notification of patent or utility model registration

Ref document number: 5268609

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151