JP6371197B2 - 暗号処理装置 - Google Patents

暗号処理装置 Download PDF

Info

Publication number
JP6371197B2
JP6371197B2 JP2014222783A JP2014222783A JP6371197B2 JP 6371197 B2 JP6371197 B2 JP 6371197B2 JP 2014222783 A JP2014222783 A JP 2014222783A JP 2014222783 A JP2014222783 A JP 2014222783A JP 6371197 B2 JP6371197 B2 JP 6371197B2
Authority
JP
Japan
Prior art keywords
value
mask
candidates
exclusive
cryptographic processing
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
JP2014222783A
Other languages
English (en)
Other versions
JP2016090710A (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.)
Tokai Rika Co Ltd
Original Assignee
Tokai Rika Co Ltd
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 Tokai Rika Co Ltd filed Critical Tokai Rika Co Ltd
Priority to JP2014222783A priority Critical patent/JP6371197B2/ja
Publication of JP2016090710A publication Critical patent/JP2016090710A/ja
Application granted granted Critical
Publication of JP6371197B2 publication Critical patent/JP6371197B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、暗号処理装置に関する。
AES(Advanced Encryption Standard)などの共通鍵暗号の変換を行う暗号処理装置では、ASICなどの専用ハードウェアや、ソフトウェアプログラムとして実装される(例えば、非特許文献1参照)。
共通鍵暗号の変換を実装する際には、非線形変換あるいは線形変換である小規模の変換を順番に行っていくので様々な中間値を生じる。
暗号処理を行う際の消費電力は、これら中間値の値に依存しており、この中間値と消費電力との間の依存関係から暗号鍵を抽出するサイドチャネルアタック(SCA:Side Channel Attacks)が報告されている(例えば、非特許文献2参照)。この依存関係は、中間値のハミング重みや、ハミング距離などを用いて効果的に抽出することができる(例えば、非特許文献3参照)。
このSCAの対策として、内部生成した乱数との演算を行った状態で暗号化の変換を行うマスキング対策技術が知られている。この演算には、暗号処理との親和性の高さから、乱数値との排他的論理和を行う加算マスクを用いる場合が多い。以降では、乱数値を「マスク値」と記し、またマスク値との排他的論理和を行うことを「マスクする」と記す。
マスクする乱数値の乱数性が十分であれば、暗号化の変換過程で生じる中間値と消費電力との依存関係が無くなり、SCAによる暗号鍵解読を困難にすることができる。例えば、マスキング対策技術の実現方法の1つとして、入出力データをマスクしたまま非線形変換を行うテーブルを事前計算しておき、暗号化毎に利用するテーブルをランダムに切り替える方法がある。このようなマスク付非線形変換テーブルを用いる場合、そのテーブル数を削減するために入出力データをマスクする乱数値の候補を限定する必要がある。この候補を限定した乱数値は、所定の秘匿性を満たす集合となるように選択される(例えば、特許文献1参照)。
National Institute of Standards and Technology (NIST), "FIPS PUB 197:Advanced Encryption Standard (AES), Nov.26,2001." P. C. Kocher, J. Jaffe, and B. Jun, Differential Power Analysis, Crypto '99, Lecture Notes in Computer Science, Vol. 1666(1999), pp.388-397. E. Brier, C. Clavier, and F. Olivier, "Correlation Power Analysis with a Leakage Model," CHES, pp.16-29, 2004.
特開2000−66585号公報
しかし、非線形変換に引き続き行われる線形変換を行う際に、マスク値の集合が変化して、所定の秘匿性を満たさない集合になる可能性がある。特に線形変換としてガロア体上の定数倍を行った場合に異なる集合へと変化する。
本発明は、こうした実情に鑑みてなされたものであり、その目的は、線形変換におけるマスク値の変化による秘匿性の低下を防ぐことができる暗号処理装置を提供することにある。
以下、上記課題を解決するための手段及びその作用効果について説明する。
上記課題を解決する暗号処理装置は、候補を限定したマスク値で中間値を秘匿したまま暗号処理を行う暗号処理装置であって、前記候補を限定したマスク値に応じて事前計算したテーブルを用いるテーブル変換によって非線形変換を行い、前記非線形変換の後にガロア体上の定数倍演算によって線形変換を行い、前記ガロア体上の定数倍演算の前段では限定しない候補からランダムに選択したマスク値で中間値を秘匿し、前記ガロア体上の定数倍演算の後段では前記候補を限定したマスク値の中からランダムに選択した値で中間値を再び秘匿し、前記候補を限定したマスク値の集合は、全てのビットが1である符号語を含む線形符号であることをその要旨としている。
上記構成によれば、ガロア体上の定数倍演算の前段におけるマスク値は候補が限定されていないため、ガロア体上の定数倍演算の後段でも候補が限定されていないマスク値でマスクされることとなる。よって、線形変換におけるマスク値変化による秘匿性の低下を防ぐことができる。
上記暗号処理装置について、候補を限定したマスク値で中間値を秘匿したまま暗号処理を行う暗号処理装置であって、入力平文に対して前記限定した候補の中からランダムに選択した値との排他的論理和演算を行い、前記排他的論理和の後にテーブル変換によって非線形変換を行い、前記非線形変換の後にガロア体上の定数倍演算によって線形変換を行い、前記ガロア体上の定数倍演算の前段では限定しない候補からランダムに選択したマスク値で中間値を秘匿し、前記ガロア体上の定数倍演算の後段では前記候補を限定したマスク値の中からランダムに選択した値で中間値を再び秘匿し、前記ガロア体上の定数倍演算において2のべき乗倍のみを計算して、その結果から必要なもののみ前記排他的論理和を行い、前記候補を限定したマスク値の集合は、全てのビットが1である符号語を含む線形符号であることをその要旨としている。
上記構成によれば、ガロア体上の定数倍演算の前段におけるマスク値は候補が限定されていないため、ガロア体上の定数倍演算の後段でも候補が限定されていないマスク値でマスクされることとなる。よって、線形変換におけるマスク値変化による秘匿性の低下を防ぐことができる。また、2のべき乗倍(2倍、4倍、8倍、…)のみを計算して、その結果から必要なもののみの排他的論理和を行うことでマスク値が求められる。このため、線形変換において定数倍演算として9倍、11倍、13倍、14倍のそれぞれを独立で計算するよりも処理効率を向上させることができる。
上記暗号処理装置について、候補を限定したマスク値で中間値を秘匿したまま暗号処理を行う暗号処理装置であって、入力平文に対して前記限定した候補の中からランダムに選択した値との排他的論理和演算を行い、前記排他的論理和の後にテーブル変換によって非線形変換を行い、前記非線形変換の後にガロア体上の定数倍演算によって線形変換を行い、前記ガロア体上の定数倍演算の前段では限定しない候補からランダムに選択したマスク値で中間値を秘匿し、前記ガロア体上の定数倍演算の後段では前記候補を限定したマスク値の中からランダムに選択した値で中間値を再び秘匿し、前記限定しない候補からランダムに選択したマスク値は暗号化毎に1値のみ生成して、前記ガロア体上の定数倍演算の一部または全てで同一の値を使用し、前記候補を限定したマスク値の集合は、全てのビットが1である符号語を含む線形符号であることが好ましい。
上記構成によれば、ガロア体上の定数倍演算の前段におけるマスク値は候補が限定されていないため、ガロア体上の定数倍演算の後段でも候補が限定されていないマスク値でマスクされることとなる。よって、線形変換におけるマスク値変化による秘匿性の低下を防ぐことができる。また、暗号化毎に生成した1値のみをマスク値として、ガロア体上の定数倍演算の一部または全てで同一の値を使用する。このため、全て異なる値を使用するよりも処理効率を向上させることができる。
本発明によれば、線形変換におけるマスク値の変化による秘匿性の低下を防ぐことができる。
AESの暗号処理を示すフローチャート。 AESのうち1ラウンドを示す図。 第1の実施形態の暗号処理装置による暗号化を示す図。 第1の実施形態の暗号処理装置によるS−boxを示す図。 第1の実施形態の暗号処理装置によるMCにおける2倍演算を示す図。 第1の実施形態の暗号処理装置によるMCにおける3倍演算を示す図。 第1の実施形態の暗号処理装置によるMCの1バイトを示す図。 第2の実施形態の暗号処理装置によるMCにおける2のべき乗倍を示す図。 第3の実施形態の暗号処理装置によるMCにおける2倍演算を示す図。
(第1の実施形態)
以下、図1〜図7を参照して、暗号処理装置の第1の実施形態について説明する。以下では、AES(Advance Encryption Standard)を用いる暗号処理装置への適用例として説明する。なお、適用可能な暗号処理装置はAESを用いる暗号処理装置に限定されるものではなく、暗号処理において乗算を用いた線形処理を行う暗号処理装置に広く適用可能である。
(AESの概要)
図1及び図2に示されるように、暗号処理装置は、AES暗号方式を用いる。AESでは、まず1バイト単位での非線形な変換を行うSubBytes(以降、SBと表す)という処理を行う。続いて、1バイト単位で順序の入れ替えを行うShiftRows(以降、SRと表す)という処理を行う。続いて、4バイト単位で線形な変換を行うMixColumns(以降、MCと表す)という処理を行う。続いて、暗号鍵から生成される秘密データ(拡大鍵)との排他的論理和を行うAddRoundKey(以降、AKと表す)という処理を行う。すなわち、AESでは、これらの4つの処理(SB、SR、MC、AK)を繰り返し行う。
繰り返しの順番は、まず初めに平文データに対してAKを行い、続いてSB、SR、MC、AKの順序を1ラウンドとして規定回数繰り返し、さらにSB、SR、AKを行った結果を暗号文として出力する。
AESでは、暗号鍵のサイズとして16バイト(128ビット)、24バイト(192ビット)、32バイト(256ビット)のいずれかから選択可能である。そして、それぞれの暗号鍵のサイズに対して前記1ラウンドの繰り返しの規定回数が規定されている。すなわち、暗号鍵のサイズが16バイトでは10ラウンド、暗号鍵のサイズが24バイトでは12ラウンド、暗号鍵のサイズが32バイトでは14ラウンドと規定されている。
AKで用いる秘密データは、図示しない鍵スケジュール部において暗号鍵を入力として出力される複数個の副鍵のことであり、拡大鍵と呼ばれる。
AESで行われるSB、SR、MC、AKのうち、SBのみ非線形変換であって、SR、MC、AKは線形変換である。SBにおける1バイト単位の変換は、S−boxと呼ばれる。
S−boxは、非特許文献1の仕様で規定されており、例えば入力バイトXが「00」ならば出力バイトYは「63」、入力バイトXが「01」ならば出力バイトYは「7C」を出力する。以降では、このS−boxをY=S[X]と表す。
また、MCは、中間値を4バイト毎に分割し、式(1)に示す行列演算を、多項式G(x)=x+x+x+x+1を法としたガロア体上の演算で行う。ガロア体は、有限個の元からなる体であって、四則演算が閉じている有限集合のことである。
ここで、式(1)中の記号x〜xはそれぞれ入力の1バイトを表す。また、y〜yは出力の1バイトを表す。
Figure 0006371197
MCでは、入力バイトの2倍や3倍のガロア体上の定数倍演算が含まれる。ここで、MCでは式(2)の関係がある。
Figure 0006371197
すなわち、マスクで秘匿したままのデータに対してそのままMCを行うことでマスクによって秘匿された出力が得られる。また、出力時のマスクは、入力時のマスクに対してMCを行ったものとなる。
以下では、AESのうち、特に暗号化のみを行う暗号処理装置を例として説明する。
(事前準備)
マスク値の候補(マスク候補値Ms)を、式(3)に示す4候補に限定した場合について説明する。マスク候補値Msは、全てのビットが1である符号語(ここではFF)を含む線形符号である。
Figure 0006371197
これらのマスク候補値Msは、いくつかの候補を抽出して排他的論理和を計算した結果が必ず候補値となること、かつ各マスク候補値Msの反転値もまた候補値となることを条件として選択している。すなわち、マスク候補値Msは、線形符号であるため、いくつかの候補を抽出して排他的論理和を計算した結果が必ず候補値となる。また、マスク候補値Msは、全てのビットが1である符号語を含む線形符号であるため、各マスク候補値Msの反転値もまた候補値となる。
この条件下では、マスクされた1バイトデータの1値のハミング重みや、マスクされた1バイトデータの2値のハミング距離の期待値が、マスク前のデータに依存せず4となる。このため、統計的な解析を行う差分電力解析(DPA:Differential Power Analysis)や相関電力解析(CPA:Correlation Power Analysis)といった解析が困難となる。
式(4)〜(6)に示すように、S−boxを4つのマスク付テーブルS′1〜S′4として事前計算する。ここで、これらマスク付テーブルS′1〜S′4は、候補を限定したマスク値に応じて事前計算されたテーブルである。
Figure 0006371197
例えば、36でマスクされたデータをS−boxする場合には、テーブルS′2を使って変換すると、S−boxした上でFFをマスクしたデータが得られる。
(暗号化手順)
まず初めに、図3に示されるように、平文データP(0)〜P(15)とマスク候補値Msからランダムに選択したマスク値Mask(0)〜Mask(15)との排他的論理和を計算する。続いて、計算したものと拡大鍵バイトK(0)〜K(15)との排他的論理和を計算して、結果M(0)〜M(15)を出力する。
このとき、平文データP(0)〜P(15)は、16バイトの平文データをバイト単位で表したものであり、平文データP(0)を最上位バイト(MSB:Most Significant Byte)側とする。
次に、図4に示されるように、各中間値バイトのマスク値Mask(0)〜Mask(15)の値に応じて、参照するテーブルを決定する。すなわち、マスク値Mask(i)の値に応じて使うテーブルを選択する。また、使ったテーブルに応じてマスク値Mask′(i)の値が決まる。ここで、iは16バイトの各バイトを示し、i=0〜15である。
例えば、式(8)であれば、結果M(0)を入力バイトとして、テーブルS′2を用いて変換する。
Figure 0006371197
この結果をM′(0)とすると、この中間値M′(0)はテーブルS′2の定義から、マスク値FFでマスクされたものとなる。この新たなマスク値をMask′(0)とする。他のバイトも同様に変換を行う。
SBに続いて、SRとMCとを行う。MCの出力バイトを、M″(0)〜M″(15)と表し、それぞれのバイトのマスク値をMask″(0)〜Mask″(15)と表す。出力バイトM″(0)、M″(1)、M″(2)、M″(3)の4バイトは、SRにより入力バイトM′(0)、M′(5)、M′(10)、M′(15)を用いて計算する。
(比較例)
式(2)の関係から、マスクされた出力バイトM″(0)とそのマスク値Mask″(0)とは、それぞれ式(9)及び式(10)によって計算される。
Figure 0006371197
ここで、式(10)の計算過程では、入力バイトM′(0)の2倍演算の結果である2M′(0)の中間値と入力バイトM′(5)の3倍演算の結果である3M′(5)の中間値とを計算する必要がある。この入力バイトM′(0)の2倍演算の結果である2M′(0)のマスク値は、2Mask′(0)で計算され、その集合Ms′は式(11)となる。
Figure 0006371197
集合Ms′からランダムに選択した値でマスクされた1バイトデータの1値のハミング重みは、マスク前のデータ値に依存して変動するため、統計的な解析を行う差分電力解析(DPA)や相関電力解析(CPA)といった解析が成立する恐れがある。
(実施例)
暗号処理装置は、マスク値Mask′(0)でマスクされたMCの入力バイトM′(0)に対してガロア体上の2倍演算を下記手順で行う。
図5に示されるように、まず、暗号処理装置は、ランダムな1バイト値Rd(0)を生成する(ステップS1)。このランダムな1バイト値Rd(0)は、候補を限定しない値である(00,01,02,…,FE,FF)の候補からランダムに選択した値である。
次に、暗号処理装置は、入力バイトM′(0)とランダムな1バイト値Rd(0)との排他的論理和を計算する(ステップS2)。ここで、入力バイトM′(0)のマスク値Mask′(0)は、候補が限定されたマスク値であって、(00,36,C9,FF)のいずれかの値である。また、ステップS2の結果A2のマスク値は、ランダムな1バイト値Rd(0)とマスク値Mask′(0)とを排他的論理和した値(Rd(0)(+)Mask′(0))である。この排他的論理和した値(Rd(0)(+)Mask′(0))は、候補を限定しない値(00,01,02,…,FE,FF)のいずれかと、候補が限定された値(00,36,C9,FF)のいずれかとの排他的論理和である。この結果は、(00,01,02,…,FE,FF)のいずれかとなり、すなわち候補を限定しない値(ランダムな1バイト値)となる。なお、「(+)」は、排他的論理和を示している。
続いて、暗号処理装置は、ステップS2の結果A2とマスク値Mask′(0)との排他的論理和を計算する(ステップS3)。ここで、ステップS3の結果A3のマスク値は、ランダムな1バイト値Rd(0)である。
暗号処理装置は、ステップS3の結果A3に対して、ガロア体上の2倍演算を行う(ステップS4)。ここで、ステップS4の結果A4のマスク値は、ランダムな1バイト値Rd(0)をガロア体上の2倍演算した値(2・Rd(0))である。
暗号処理装置は、ステップS4の結果A4と集合Msからランダムに選んだ値Mask′_d(0)との排他的論理和を計算する(ステップS5)。ここで、ステップS5の結果A5のマスク値(2・Rd(0)(+)Mask′_d(0))は、ステップS2の結果A2のマスク値と同様に、ランダムな1バイト値である。
暗号処理装置は、ランダムな1バイト値Rd(0)に対して、ガロア体上の2倍演算する(ステップS6)。
暗号処理装置は、ステップS5の結果A5とステップS6の結果A6との排他的論理和を計算する(ステップS7)。ここで、ステップS7の結果A7のマスク値は、候補が限定されたマスク値Mask′_d(0)である。この候補が限定されたマスク値Mask′_d(0)は、(00,36,C9,FF)のいずれかである。ステップS7で得られた結果A7を2M′(0)とする。
この手順で得られる結果2M′(0)は、マスク値Mask′_d(0)でマスクされた値となる。またこの計算過程では、中間値を秘匿するマスク値が、候補が限定されたマスク値Mask′(0)と、候補を限定しないマスク値Mask′_d(0)とのいずれかであって、偏りのある集合となることはない。
同様に、マスク値Mask′(5)でマスクされたMCの入力バイトM′(5)に対してガロア体上の3倍演算を下記手順で行う。
図6に示されるように、まず、暗号処理装置は、ランダムな1バイト値Rt(5)を生成する(ステップS11)。このランダムな1バイト値Rt(5)は、候補を限定しない値である(00,01,02,…,FE,FF)の候補からランダムに選択した値である。
次に、暗号処理装置は、入力バイトM′(5)とランダムな1バイト値Rt(5)との排他的論理和を計算する(ステップS12)。ここで、入力バイトM′(5)のマスク値は、候補が限定されたマスク値Rt(5)とマスク値Mask′(5)とを排他的論理和した値(Rt(5)(+)Mask′(5))である。この排他的論理和した値(Rt(5)(+)Mask′(5))は、ステップS2の結果A2のマスク値と同様に、候補を限定しない値(ランダムな1バイト値)となる。
暗号処理装置は、ステップS12の結果A12とMask′(5)との排他的論理和を計算する(ステップS13)。ここで、ステップS13の結果A13のマスク値は、ランダムな1バイト値Rt(5)である。
暗号処理装置は、ステップS13の結果A13に対して、ガロア体上の3倍演算を行う(ステップS14)。ここで、ステップS13の結果A13のマスク値は、ランダムな1バイト値Rt(5)をガロア体上の3倍演算した値(3・Rt(5))である。
暗号処理装置は、ステップS14の結果A14と集合Msからランダムに選んだ値Mask′_t(5)との排他的論理和を計算する(ステップS15)。ここで、ステップS15の結果A15のマスク値(3・Rt(5)(+)Mask′_t(5))は、ランダムな1バイト値である。
暗号処理装置は、ランダムな1バイト値Rt(5)に対して、ガロア体上の3倍演算する(ステップS16)。
暗号処理装置は、ステップS15の結果A15とステップS16の結果A16との排他的論理和を計算する(ステップS17)。ここで、ステップS17の結果A17のマスク値は、候補が限定されたマスク値Mask′_t(5)である。この候補が限定されたマスク値Mask′_t(5)は、(00,36,C9,FF)のいずれかである。ステップS17の結果A17を3M′(5)とする。
この手順で得られる結果3M′(5)は、マスク値Mask′_t(5)でマスクされた値となる。またこの計算過程では、中間値を秘匿するマスク値が、候補が限定されたマスク値Mask′(5)と、候補を限定しないマスク値Mask′_t(5)とのいずれかであって、偏りのある集合となることはない。
図7に示されるように、暗号処理装置は、計算した結果である入力バイト2M′(0)、3M′(5)を用いて、MCの出力のうちの1バイトである出力バイトM″(0)を式(12)にて計算する。また、暗号処理装置は、出力バイトM″(0)のマスク値であるMask″(0)を式(13)にて計算する。
Figure 0006371197
暗号処理装置は、マスク値Mask′_d(0)、Mask′_t(5)、Mask′(10)、Mask′(15)は全て集合Msの要素である。集合Msは線形符号となるように選択したので、式(12)の計算過程でのマスク値の変化もまた必ず集合Msの要素である。
従って、差分電力解析(DPA)や相関電力解析(CPA)といった解析を困難とすることができる。
以上では、入力バイトM′(0)の2倍演算と入力バイトM′(5)の3倍演算とを例として説明したが、SBの出力の任意の各バイトM′(i)に対して、同様の手順で2倍、3倍を計算し、MCの出力を計算することができる。残りの処理は、AK、SB、SR、MCで構成されているため、同様の手順を繰り返し、最終的な出力の前にマスクを外すことで、AESの処理を完了することができる。
以上説明したように、第1の実施形態によれば、以下の効果を奏することができる。
(1)ガロア体上の定数倍演算の前段におけるマスク値は候補が限定されていない。このため、ガロア体上の定数倍演算の後段でも候補が限定されていないマスク値でマスクされることとなる。よって、線形変換におけるマスク値変化による秘匿性の低下を防ぐことができる。
(第2の実施形態)
以下、図8を参照して、暗号処理装置の第2の実施形態について説明する。この実施形態の暗号化装置は、2のべき乗倍のみを計算して、その結果から必要なもののみの排他的論理和を計算する点が上記第1の実施形態と異なっている。以下、第1の実施形態との相違点のみを説明する。
第1の実施形態では、MCにおける2倍演算と3倍演算とのマスクを、それぞれ独立で行うようにした。しかしながら、AESの復号化を行う場合には、9倍、11倍、13倍、14倍を行う必要があり、それぞれを独立で行うことで処理効率が低下する可能性がある。
ところで、ガロア体上の定数倍は線形変換であり、式(14)の関係がある。
Figure 0006371197
そこで、ガロア体上の任意の定数倍を行いたい場合には、2のべき乗倍(2倍、4倍、8倍・・・)のみを計算して、その結果から必要なもののみの排他的論理和を計算すれば求められる。
図8に示されるように、暗号処理装置は、入力バイトM′(0)とランダムな1バイト値R(0)との排他的論理和を計算する(ステップS21)。ここで、入力バイトM′(0)のマスク値は、Mask′(0)である。
暗号処理装置は、ステップS21の結果とマスク値Mask′(0)との排他的論理和を計算する(ステップS22)。暗号処理装置は、ステップS22の結果に対して2倍演算する(ステップS23)。
暗号処理装置は、ステップS23の結果と、集合Msからランダムに選択されたマスク値Mask′_d(0)との排他的論理和を計算する(ステップS24)。暗号処理装置は、ランダムな1バイト値R(0)に対して2倍演算する(ステップS25)。暗号処理装置は、ステップS24の結果とステップS25の結果との排他的論理和を計算する(ステップS26)。ここで、ステップS26の結果2M′(0)のマスク値は、Mask′_d(0)である。
暗号処理装置は、ステップS23の結果に対して2倍演算する(ステップS27)。暗号処理装置は、ステップS27の結果と、集合Msからランダムに選択されたマスク値Mask′_q(0)との排他的論理和を計算する(ステップS28)。
暗号処理装置は、ステップS25の結果に対して2倍演算する(ステップS29)。暗号処理装置は、ステップS28の結果とステップS29の結果との排他的論理和を計算する(ステップS30)。ここで、ステップS30の結果4M′(0)のマスク値は、Mask′_q(0)である。
暗号処理装置は、ステップS27の結果に対して2倍演算する(ステップS31)。暗号処理装置は、ステップS31の結果と、集合Msからランダムに選択されたマスク値Mask′_o(0)との排他的論理和を計算する(ステップS32)。
暗号処理装置は、ステップS29に対して2倍演算する(ステップS33)。暗号処理装置は、ステップS32の結果とステップS33の結果との排他的論理和を計算する(ステップS34)。ここで、ステップS34の結果8M′(0)のマスク値は、Mask′_o(0)である。
以上説明したように、第2の実施形態によれば、第1の実施形態の効果に加えて、以下の効果を奏することができる。
(2)2のべき乗倍(2倍、4倍、8倍、…)のみを計算して、その結果から必要なもののみの排他的論理和を行うことでマスク値が求められる。このため、MCにおいて9倍、11倍、13倍、14倍のそれぞれを独立で計算するよりも処理効率を向上させることができる。
(第3の実施形態)
以下、図9を参照して、暗号処理装置の第3の実施形態について説明する。この実施形態の暗号化装置は、ガロア体の定数倍演算時にランダムな値の生成を1度だけに限定し、このランダムな値を他でも再利用する点が上記第1の実施形態と異なっている。以下、第1の実施形態との相違点のみを説明する。
第1の実施形態では、ガロア体の定数倍演算を行うバイト毎に乱数を生成した。しかしながら、第3の実施形態は、ガロア体の定数倍演算時にランダムな値の生成を1度だけに限定し、このランダムな値を他でも再利用する。
平文データからSBの出力M′(0)〜M′(15)と、そのマスク値Mask′(0)〜Mask′(15)を生成する過程は、第1の実施例と同じである。
図9に示されるように、暗号処理装置は、MCに含まれるガロア体の2倍演算を行うにあたって、ランダムな1バイト値Rを生成する(ステップS41)。
暗号処理装置は、SBの出力M′(0)〜M′(15)それぞれと、ランダムな1バイト値Rとの排他的論理和を計算する(ステップS42−0,S42−1,S42−2,…)。暗号処理装置は、ステップS42の各バイトの結果に対して、ガロア体上の2倍演算を行う(ステップS43−0,S43−1,S43−2,…)。
暗号処理装置は、ステップS43の各バイトの結果と、バイト毎に独立に集合Msから選択したマスク値Mask′_d(0)〜Mask′_d(15)との排他的論理和を計算する(ステップS44−0,S44−1,S44−2,…)。
暗号処理装置は、マスク値Mask′(0)〜Mask′(15)とランダムな1バイト値Rとの排他的論理和をそれぞれ計算する(ステップS45−0,S45−1,S45−2,…)。暗号処理装置は、ステップS45の結果に対してガロア体上の2倍演算を行う(ステップS46−0,S46−1,S46−2,…)。
暗号処理装置は、ステップS44の各バイトの結果と、ステップS46の各バイトの結果との排他的論理和を計算する(ステップS47)。ステップS47の結果を、2M′(0)〜2M′(15)とする。
上記手順で計算した結果2M′(0)〜2M′(15)は、それぞれステップS44で使用したマスク値Mask′_d(0)〜Mask′_d(15)によって秘匿された値となる。
このように、ランダムな1バイト値の生成をランダムな1バイト値Rだけに限定することができる。このため、ソフトウェアで乱数を生成する場合等の乱数生成負荷が高い場合に、全体の処理負荷を軽減することができる。
以上説明したように、第3の実施形態によれば、第1の実施形態の効果に加え、以下の効果を奏することができる。
(3)暗号化毎に生成した1値のみをマスク値として、ガロア体上の定数倍演算の全てで同一の値(R)を使用する。このため、全て異なる値を使用するよりも処理効率を向上させることができる。
なお、上記実施形態は、これを適宜変更した以下の形態にて実施することもができる。
・上記各実施形態では、マスク値の候補を4値としたが、これらに限らずすべてのビットが1である符号語を含む線形符号であれば、4値よりも大きい2の累乗数である、8,16,32,64,128,256でも良い。なお、上記各実施形態で示したAESの場合は、8値、16値、64値、128値のものが採用可能である。
・上記第3の実施形態では、ランダムな1バイト値Rの共有範囲を全MCで共通とした。しかしながら、ランダムな1バイト値Rの共有範囲を特定の数バイトに限定することも可能である。
K…拡大鍵、M(i)…入力、M′(i)…出力(結果)又は入力、Mask(i),Mask′(i)…マスク値、R…ランダムな1バイト値。

Claims (3)

  1. 候補を限定したマスク値で中間値を秘匿したまま暗号処理を行う暗号処理装置であって、
    前記候補を限定したマスク値に応じて事前計算したテーブルを用いるテーブル変換によって非線形変換を行い、前記非線形変換の後にガロア体上の定数倍演算によって線形変換を行い、
    前記ガロア体上の定数倍演算の前段では限定しない候補からランダムに選択したマスク値で中間値を秘匿した後に、マスク値との排他的論理和演算を行い
    前記ガロア体上の定数倍演算の後段では前記候補を限定したマスク値の中からランダムに選択した値で中間値を再び秘匿した後に、限定しない候補からランダムに選択したマスク値に対してガロア体上の定数倍演算を行った結果との排他的論理和演算を行い
    前記候補を限定したマスク値の集合は、全てのビットが1である符号語を含む線形符号であり、
    マスク値の候補は、いくつかの候補を抽出して排他的論理和演算を行った結果が必ず候補となること、かつ、各マスク値の候補の反転値もマスク値の候補となることを条件として選択す
    ことを特徴とする暗号処理装置。
  2. 候補を限定したマスク値で中間値を秘匿したまま暗号処理を行う暗号処理装置であって、
    入力平文に対して前記限定した候補の中からランダムに選択した値との排他的論理和演算を行い、前記排他的論理和の後にテーブル変換によって非線形変換を行い、前記非線形変換の後にガロア体上の定数倍演算によって線形変換を行い、
    前記ガロア体上の定数倍演算の前段では限定しない候補からランダムに選択したマスク値で中間値を秘匿した後に、マスク値との排他的論理和演算を行い
    前記ガロア体上の定数倍演算の後段では前記候補を限定したマスク値の中からランダムに選択した値で中間値を再び秘匿した後に、限定しない候補からランダムに選択したマスク値に対してガロア体上の定数倍演算を行った結果との排他的論理和演算を行い
    前記ガロア体上の定数倍演算において2のべき乗倍のみを計算して、その結果から必要なもののみ排他的論理和を行い、
    前記候補を限定したマスク値の集合は、全てのビットが1である符号語を含む線形符号であり、
    マスク値の候補は、いくつかの候補を抽出して排他的論理和演算を行った結果が必ず候補となること、かつ、各マスク値の候補の反転値も候補となることを条件として選択す
    ことを特徴とする暗号処理装置。
  3. 候補を限定したマスク値で中間値を秘匿したまま暗号処理を行う暗号処理装置であって、
    入力平文に対して前記限定した候補の中からランダムに選択した値との排他的論理和演算を行い、前記排他的論理和の後にテーブル変換によって非線形変換を行い、前記非線形変換の後にガロア体上の定数倍演算によって線形変換を行い、
    前記ガロア体上の定数倍演算の前段では限定しない候補からランダムに選択したマスク値で中間値を秘匿し、
    前記ガロア体上の定数倍演算の後段では前記候補を限定したマスク値の中からランダムに選択した値で中間値を再び秘匿し、マスク値と限定しない候補からランダムに選択したマスク値との排他的論理和演算を行い、さらに、ガロア体上の定数倍演算を行った結果との排他的論理和演算を行い、
    前記限定しない候補からランダムに選択したマスク値は暗号化毎に1値のみ生成して、前記ガロア体上の定数倍演算の一部または全てで同一の値を使用し、
    前記候補を限定したマスク値の集合は、全てのビットが1である符号語を含む線形符号であり、
    マスク値の候補は、いくつかの候補を抽出して排他的論理和演算を行った結果が必ず候補となること、かつ、各マスク値の候補の反転値も候補となることを条件として選択す
    ことを特徴とする暗号処理装置。
JP2014222783A 2014-10-31 2014-10-31 暗号処理装置 Active JP6371197B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014222783A JP6371197B2 (ja) 2014-10-31 2014-10-31 暗号処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014222783A JP6371197B2 (ja) 2014-10-31 2014-10-31 暗号処理装置

Publications (2)

Publication Number Publication Date
JP2016090710A JP2016090710A (ja) 2016-05-23
JP6371197B2 true JP6371197B2 (ja) 2018-08-08

Family

ID=56016165

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014222783A Active JP6371197B2 (ja) 2014-10-31 2014-10-31 暗号処理装置

Country Status (1)

Country Link
JP (1) JP6371197B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3600454B2 (ja) * 1998-08-20 2004-12-15 株式会社東芝 暗号化・復号装置、暗号化・復号方法、およびそのプログラム記憶媒体
JP2008233683A (ja) * 2007-03-22 2008-10-02 Toshiba Corp 暗号処理装置及びプログラム
JP2009175196A (ja) * 2008-01-21 2009-08-06 Toshiba Corp 暗号化装置及び復号装置
JP5202350B2 (ja) * 2009-01-16 2013-06-05 三菱電機株式会社 暗号処理装置及び暗号処理方法及び暗号処理プログラム
JP5612007B2 (ja) * 2012-03-15 2014-10-22 株式会社東芝 暗号化鍵生成装置

Also Published As

Publication number Publication date
JP2016090710A (ja) 2016-05-23

Similar Documents

Publication Publication Date Title
JP5229315B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
De Mulder et al. Cryptanalysis of the Xiao–Lai white-box AES implementation
Kazymyrov et al. A method for generation of high-nonlinear s-boxes based on gradient descent
JP5711681B2 (ja) 暗号処理装置
US20070140478A1 (en) Encryption apparatus and encryption method
RU2449482C2 (ru) Устройство обработки шифрования, способ обработки шифрования и компьютерная программа
Lee et al. A masked white-box cryptographic implementation for protecting against differential computation analysis
JP5268609B2 (ja) 暗号処理装置及び演算方法
RU2603550C2 (ru) Устройство обработки данных, способ обработки данных и программа
WO2015146431A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
KR101586811B1 (ko) Hight 부채널 분석에 대응하기 위한 장치 및 방법
US8675866B2 (en) Multiplicative splits to protect cipher keys
US9565018B2 (en) Protecting cryptographic operations using conjugacy class functions
EP3467808A1 (en) Encryption device, encryption method, decryption device, and decryption method
JP2015191106A (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
US20130243191A1 (en) Encryption key generating apparatus
KR101506499B1 (ko) 마스킹이 적용된 seed를 이용한 암호화 방법
Ara et al. Dynamic key dependent S-Box for symmetric encryption for IoT devices
WO2015146430A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
KR101362675B1 (ko) 저전력 암호화 장치 및 방법
Carlet Correlation-immune Boolean functions for leakage squeezing and rotating S-box masking against side channel attacks
JP6371197B2 (ja) 暗号処理装置
US20100128870A1 (en) Pseudo-random number generation device, program, and method for stream encoding
JP6089668B2 (ja) 暗号化処理回路及び復号処理回路とその方法並びにそのプログラム
JP5500277B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170524

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180315

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180424

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180620

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: 20180703

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180712

R150 Certificate of patent or registration of utility model

Ref document number: 6371197

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150