(57)【要約】【課題】共通鍵暗号処理において、秘密鍵の解読防止のために必要な処理時間および回路規模を削減する。【解決手段】第１の経路選択手段１０２−１は、乱数発生手段１０１が発生した乱数の値に応じて、複数の拡大鍵マスク値をランダムに並べ替え、拡大鍵演算手段１０３は、並べ替えられた複数の拡大鍵マスク値と、拡大鍵を表すデータ列と、入力データ列との排他的論理和を生成する。第２の経路選択手段１０２−２は、乱数の値に応じて第１の経路選択手段１０２−１とは逆の並べ替えを行うことで、排他的論理和のデータ列を並べ替え、非線形変換手段１０４は、並べ替えられたデータ列の非線形変換を行って、複数の非線形変換マスク値によりマスクされたデータ列を出力する。第３の経路選択手段１０２−３は、乱数の値に応じて第１の経路選択手段１０２−１と同じ並べ替えを行うことで、マスクされたデータ列を並べ替える。【選択図】図１
2008131108.tif 000002
【特許請求の範囲】
【請求項１】
共通鍵暗号の暗号処理を行う暗号化装置であって、
乱数を発生する乱数発生手段と、
前記乱数の値に応じて、拡大鍵をマスクするための複数の拡大鍵マスク値からなるデータ列をランダムに並べ替えて出力する第１の経路選択手段と、
前記第１の経路選択手段から出力される複数の拡大鍵マスク値と、前記拡大鍵を表すデータ列と、入力データ列との排他的論理和を生成する拡大鍵演算手段と、
前記乱数の値に応じて前記第１の経路選択手段とは逆の並べ替えを行うことで、前記排他的論理和のデータ列を並べ替えて出力する第２の経路選択手段と、
前記第２の経路選択手段から出力されるデータ列の非線形変換を行って、複数の非線形変換マスク値によりマスクされたデータ列を出力する非線形変換手段と、
前記乱数の値に応じて前記第１の経路選択手段と同じ並べ替えを行うことで、前記非線形変換手段から出力されるデータ列を並べ替えて出力する第３の経路選択手段と
を備えることを特徴とする暗号化装置。
【請求項２】
前記非線形変換手段から出力されるデータ列は、前記第２の経路選択手段から出力されるデータ列と前記複数の拡大鍵マスク値の排他的論理和をマスクなし非線形変換テーブルにより変換した結果と、前記複数の非線形変換マスク値との排他的論理和を表すことを特徴とする請求項１記載の暗号化装置。
【請求項３】
前記第１の経路選択手段、第２の経路選択手段、および第３の経路選択手段の各々は複数の切替手段を含み、各切替手段は、第１および第２の入力部と第１および第２の出力部を有し、前記乱数の値に応じて、該第１の入力部に入力されたデータを該第１の出力部から出力し、該第２の入力部に入力されたデータを該第２の出力部から出力する第１の切替動作と、該第１の入力部に入力されたデータを該第２の出力部から出力し、該第２の入力部に入力されたデータを該第１の出力部から出力する第２の切替動作の一方を行うことを特徴とする請求項１または２記載の暗号化装置。
【請求項４】
前記乱数の値に応じて前記第１の経路選択手段と同じ並べ替えを行うことで、平文をマスクするための複数の平文マスク値からなるデータ列を並べ替えて出力する第４の経路選択手段と、
前記第４の経路選択手段から出力される複数の平文マスク値と、前記平文を表すデータ列との排他的論理和を生成し、前記入力データ列として前記拡大鍵演算手段に出力する平文演算手段と、
前記第３の経路選択手段から出力されるデータ列に対して、シフトロウ処理およびミクスコラム処理を行う第１の処理手段と、
前記第１の処理手段の処理結果と、該第１の処理手段の処理結果に対するマスクを解除するためのデータ列と、複数の新たなマスク値との排他的論理和を生成するマスク演算手段とをさらに備え、
前記非線形変換手段から出力されるデータ列は、前記第２の経路選択手段から出力されるデータ列と前記複数の拡大鍵マスク値と前記複数の平文マスク値の排他的論理和をマスクなし非線形変換テーブルにより変換した結果と、前記複数の非線形変換マスク値との排他的論理和を表し、前記マスク演算手段から出力される排他的論理和のデータ列が前記入力データ列として前記拡大鍵演算手段にフィードバックされ、０番目からＮ−２番目までのＮ−１個の拡大鍵のそれぞれについて、前記第１の経路選択手段、拡大鍵演算手段、第２の経路選択手段、非線形変換手段、第３の経路選択手段、第１の処理手段、およびマスク演算手段によるループ処理が繰り返されることを特徴とする請求項１記載の暗号化装置。
【請求項５】
共通鍵暗号の暗号処理を行う暗号化方法であって、
乱数を発生し、
前記乱数の値に応じて、拡大鍵をマスクするための複数の拡大鍵マスク値からなるデータ列をランダムに並べ替え、
並べ替えられた複数の拡大鍵マスク値と、前記拡大鍵を表すデータ列と、入力データ列との排他的論理和を生成し、
前記乱数の値に応じて前記複数の拡大鍵マスク値とは逆の並べ替えを行うことで、前記排他的論理和のデータ列を並べ替え、
並べ替えられたデータ列の非線形変換を行って、複数の非線形変換マスク値によりマスクされたデータ列を生成し、
前記乱数の値に応じて前記複数の拡大鍵マスク値と同じ並べ替えを行うことで、前記マスクされたデータ列を並べ替える
ことを特徴とする暗号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共通鍵暗号処理に係り、電力解析攻撃と呼ばれる方法による解読を防止する対策を施した暗号化装置に関する。
【背景技術】
【０００２】
暗号方式は、公開鍵暗号方式と共通鍵暗号方式に大別される。公開鍵暗号方式とは、暗号化と復号で異なる鍵を用いる方式であり、暗号化を行うための鍵（公開鍵）を一般に公開する代わりに、暗号文を復号するための鍵（秘密鍵）を受信者のみの秘密情報とすることで安全性を保つ方式である。これに対して、共通鍵暗号方式とは、暗号化と復号で同一の鍵（秘密鍵）を用いる方式であり、この秘密鍵を送信者と受信者以外の第三者にわからない情報とすることで安全性を保つ方式である。
【０００３】
暗号の分野における技術の１つに、解読技術と呼ばれるものがある。解読技術とは、秘密鍵等の秘密情報を暗号文等の入手可能な情報から推定する技術のことであり、様々な方法が存在する。その中で最近注目されている技術に、電力解析攻撃と呼ばれる方法がある。
【０００４】
電力解析攻撃とは、１９９８年にPaul Kocherによって考案された方法で、スマートカード等の組み込み機器に搭載された暗号プロセッサに様々な入力データを与えたときの電力消費データを収集・解析することで、暗号プロセッサ内部の鍵情報を推定する方法である。電力解析攻撃を用いることで、公開鍵暗号、秘密鍵暗号共に暗号プロセッサから秘密鍵を推定できることが知られている。
【０００５】
電力解析攻撃には、単純電力解析（Single Power Analysis，以下ではＳＰＡと記す）および電力差分攻撃（Differential Power Analysis，以下ではＤＰＡと記す）の２種類が存在する。
【０００６】
ＳＰＡは、暗号プロセッサにおける単一の電力消費データの特徴から秘密鍵の推定を行う方式であり、ＤＰＡは、多数の電力消費データの差分を解析することで秘密鍵の推定を行う方式である。一般に、ＤＰＡの方がＳＰＡより強力であるといわれている。
【０００７】
ＳＰＡまたはＤＰＡを用いた代表的な解読技術としては、次のような論文が発表されている。ＲＳＡ等の公開鍵暗号に対するＤＰＡを用いた解読法については、下記の非特許文献１にて述べられている。また、共通鍵暗号方式において、現在標準として利用されているＤＥＳ（Data Encryption Standards ）に対するＳＰＡおよびＤＰＡを用いた解読法については、非特許文献２にて述べられている。ＤＥＳの他に、次世代で標準として利用されると思われる共通鍵暗号方式であるRijndaelについても、非特許文献３にてＤＰＡを用いた解読の可能性が指摘されている。
【０００８】
以上から、電力解析攻撃の中でもＤＰＡを用いた解読技術は特に有効な方法として注目されており、様々な解読法が研究されている。また、解読技術のみならずＤＰＡによる解読を防ぐための対策技術も発展しており、解読技術と同様に重要な技術として注目されている。
【０００９】
図１５は、共通鍵暗号処理の一般的な構成を示している。一般的に、共通鍵暗号処理は拡大鍵生成１５０１とラウンド処理１５０２の２つの処理から構成される。拡大鍵生成１５０１では、入力された秘密鍵から複数の拡大鍵と呼ばれるデータ（拡大鍵０，拡大鍵１
，．．．，拡大鍵Ｎ）が生成され、ラウンド処理１５０２に対して出力される。これらの拡大鍵と平文をラウンド処理１５０２に入力することで、暗号化のための変換が行われ、暗号文が出力される。
【００１０】
代表的な共通鍵暗号のアルゴリズムとして、ＡＥＳ（Advanced Encryption Standards ）が知られており、米国のＮＩＳＴ（National Institute of Standards and Technology）の標準ＦＩＰＳ１９７（Federal Information Processing Standards Publication 197）として公開されている（例えば、下記の非特許文献４を参照）。
【００１１】
図１６は、ＡＥＳの構成を示している。ＡＥＳは、１２８ビットを暗号化の単位とするアルゴリズムである。すなわち、１２８ビットの平文から１２８ビットの暗号文を生成する。秘密鍵は、１２８ビット、１９２ビット、または２５６ビットの３種類から選択することができる。
【００１２】
まず、拡大鍵生成１６０１を実行することで、秘密鍵からＮ＋１個の１２８ビット拡大鍵が生成される。ＡＥＳのラウンド処理１６０２は、ＲｏｕｎｄＫｅｙ（ラウンドキー）１６１１、Ｓｕｂｂｙｔｅ（サブバイト）１６１２、ＳｈｉｆｔＲｏｗ（シフトロウ）１６１３、およびＭｉｘＣｏｌｕｍｎ（ミクスコラム）１６１４の４種類の処理から構成され、これらのうち、ＲｏｕｎｄＫｅｙ１６１１において拡大鍵が使用される。ラウンド処理１６０２に平文が入力されると、ＲｏｕｎｄＫｅｙ１６１１、Ｓｕｂｂｙｔｅ１６１２、ＳｈｉｆｔＲｏｗ１６１３、およびＭｉｘＣｏｌｕｍｎ１６１４の処理が、この順序でＮ−１回繰り返される。
【００１３】
次に、ＲｏｕｎｄＫｅｙ１６１５、Ｓｕｂｂｙｔｅ１６１６、ＳｈｉｆｔＲｏｗ１６１７、およびＲｏｕｎｄＫｅｙ１６１８の処理が実行され、暗号文が出力される。繰り返し回数Ｎは、秘密鍵のビット長によって異なり、１２８ビットの場合はＮ＝１０、１９２ビットの場合はＮ＝１２、２５６ビットの場合はＮ＝１４である。
【００１４】
ＲｏｕｎｄＫｅｙ処理では、図１７に示すように、１２８ビットの入力データと１２８ビットの拡大鍵の排他的論理和（ＸＯＲ）が計算され、出力データとして出力される。Ｓｕｂｂｙｔｅ処理では、図１８に示すように、１６個の同じ非線形変換テーブル（Ｓｂｏｘ）１８０１−１〜１８０１−１６により、１２８ビットの入力データが１２８ビットの出力データに変換される。
【００１５】
ＳｈｉｆｔＲｏｗ処理では、図１９に示すように、１６個の８ビットデータｘj （ｊ＝０，１，．．．，１５）からなる入力データＸが、次式により、１６個の８ビットデータｙi （ｉ＝０，１，．．．，１５）からなる出力データＹに変換される。
ｙi ＝ｘj ，ｊ＝１３ｉ−４（ｍｏｄ  １６）      （１）
（１）式において、（ｍｏｄ  １６）は、１６を法とする剰余演算を表している。
【００１６】
ＭｉｘＣｏｌｕｍｎ処理では、図２０に示すように、１６個の８ビットデータｘj （ｊ＝０，１，．．．，１５）からなる入力データから、１６個の８ビットデータｙj からなる出力データが生成される。このとき、４個の乗算器２００１−１〜２００１−４を用いて次式のような乗算が実行される。
【００１７】
【数１】
2008131108.tif 000003
【００１８】
（２）式は、図２０のＭｉｘｃｏｌｕｍｎ処理に含まれる４つの乗算器２００１−１〜２００１−４のそれぞれが演算する計算処理を表している。
次に、ＤＰＡによる秘密鍵解読方法について説明する。ＤＰＡは、図１５のラウンド処理１５０２に関する消費電力を測定することで、秘密鍵を解読する方法である。以下では、ＤＰＡを用いて解読を行うことができる共通鍵暗号処理の構成について、ＡＥＳに限定せずに説明を行う。
【００１９】
一般的な共通鍵暗号処理では、図２１の拡大鍵ＸＯＲ処理、図２２の線形変換処理、図２３の非線形変換処理の３つを組み合わせてラウンド処理を構成し、ラウンド処理が複数回繰り返し実行される。
【００２０】
拡大鍵ＸＯＲ処理は、図２１に示すように、入力データＸと拡大鍵ＫのＸＯＲの演算結果Ｚを出力する処理である。線形変換処理は、図２２に示すように、入力データＸに対して、Ｚ＝Ｌ（Ｘ）を満たすＺを出力する処理である。ＸＯＲ演算を
2008131108.tif 000004
と記すことにすると、Ｌは、任意のＸおよびＹに関して次式を満たすような線形変換を表している。
【００２１】
【数２】
2008131108.tif 000005
【００２２】
具体的には、図１９のＳｈｉｆｔＲｏｗ処理のようなビット置換処理や、図２０のＭｉｘＣｏｌｕｍｎ処理のような行列演算等がＬに該当する。
非線形変換処理は、図２３に示すように、入力データＸに対してＺ＝Ｗ（Ｘ）を満たすＺを出力する処理である。このとき、Ｗは、任意のＸおよびＹに関して次式を満たさない非線形変換を表している。
【００２３】
【数３】
2008131108.tif 000006
【００２４】
具体的には、Ｓｂｏｘと呼ばれる非線型変換テーブル索引でＷを実現する場合が多い。この場合、入力データＸをＸ＝ｘ0 x1 ．．．xu-1 のようにｕ個に分割し、Ｓｂｏｘを表すｗj （ｊ＝０，１，．．．，ｕ−１）を用いてｚj ＝ｗj （ｘj ）で表されるｚj を計算し、再びＺ＝ｚ0 ｚ1 ．．．ｚu-1 のように結合して、得られたデータＺを出力する。
【００２５】
次に、上記処理を組み合わせた共通鍵暗号処理に対する、ＤＰＡを用いた解読法につい
て説明する。ここでは、最も簡単な例として、図２１と図２３の処理を組み合わせた図２４のような処理に対して、ＤＰＡを用いることで拡大鍵Ｋを解読できることを示す。なお、図２４の処理は、ＡＥＳにおけるＲｏｕｎｄＫｅｙ処理（図１７）とＳｕｂｂｙｔｅ処理（図１８）を組み合わせた処理と等価である。
【００２６】
図２４の構成において、ｗj の入出力に関係するビットのみを取り出した構成を図２５に示す。図２５において、ｍj は平文等の既知の値、ｋj は未知の値、ｗj は既知のＳｂｏｘを表すものと仮定する。この仮定の下で、ＤＰＡにより拡大鍵ｋj を推定できることを示す。
【００２７】
ＤＰＡは、電力消費データの測定と、電力差分データを用いた拡大鍵の解析という２段階から構成される。電力消費データの測定において、ある平文を与えたときに暗号プロセッサが消費する電力消費データは、オシロスコープ等を用いれば、図２６示すような電力消費曲線として測定される。平文の値を様々に変えながらこのような測定を繰り返し、十分な回数の測定データが得られた時点で測定を終了する。この一連の測定で得られた電力消費曲線の集合をＧとする。
【００２８】
次に、電力消費曲線を用いた拡大鍵の解析について説明する。まず、暗号処理内部で用いられている拡大鍵ｋj について、ｋj ＝ｋ’j であるという仮定を立てる。ｍj とｗj は既知のため、このｋ’j の仮定に基づき、集合Ｇは、以下のＧ0 （ｋ’ j ）およびＧ1
（ｋ’ j ）の２種類の集合に分類できる。
【００２９】
【数４】
2008131108.tif 000007
【００３０】
そして、以下に示す電力差分曲線ＤＧ（ｋ’ j ）を作成する。
ＤＧ（ｋ’ j ）＝（集合Ｇ1 に属する電力消費曲線の平均）
−（集合Ｇ0 に属する電力消費曲線の平均）      （７）
もしこの仮定が正しい、すなわち、ｋ’j ＝ｋj であるとすると、電力差分曲線ＤＧ（ｋ’ j ）には、図２７に示すようなスパイクが現われる。もしこの仮定が誤り、すなわちｋ’j ≠ｋj であるとすると、図２８に示すように、ＤＧ（ｋ’ j ）はスパイクが現れない平坦な曲線となる。よって、仮定したｋ’j から図２７のような電力差分曲線が得られれば、拡大鍵ｋj を解読できたことになる。
【００３１】
このようなｋj の解読を各ｊについて行えば、最終的に、図２４における拡大鍵Ｋを解読することができる。この解読を、拡大鍵０，拡大鍵１，．．．，拡大鍵Ｎについて繰り返すことで、秘密鍵を解読することができる。なお、ＡＥＳの場合、アルゴリズムの性質上、拡大鍵の先頭の値がそのまま秘密鍵の値であるため、秘密鍵が１２８ビットならば拡大鍵０を、秘密鍵が１９２ビットもしくは２５６ビットならば拡大鍵０と拡大鍵１を解読すれば、秘密鍵全体を解読することができる。
【００３２】
次に、ｋ’j ＝ｋj のときに電力差分曲線ＤＧ（ｋ’ j ）にスパイクが現れる理由について説明する。ｋ’j ＝ｋj の場合、（５）式および（６）式に従ってＧ0 （ｋ’ j ）およびＧ1 （ｋ’ j ）の分類を行うことで、ｚj に関して次式が成立する。
（Ｇ1 に属するｚj の平均ハミングウェイト）
−（Ｇ0 に属するｚj の平均ハミングウェイト）＝１      （８）
【００３３】
一方、ｋ’j ≠ｋj の場合、（８）式は成立せず、ランダムな分類を行うことになるので、次式が成立する。
（Ｇ1 に属するｚj の平均ハミングウェイト）
−（Ｇ0 に属するｚj の平均ハミングウェイト）＝０      （９）
ここで、ハミングウェイトとは、ある値をビット列で表現したときに、そのビット列に含まれるビット値‘１’の個数のことであり、例えば、ビット値（１１０１）2 のハミングウェイトは３である。
【００３４】
（８）式が成立する場合は、Ｇ1 （ｋ’ j ）とＧ0 （ｋ’ j ）の間でのロード値ｚj の平均ハミングウェイトに差が生じるが、（９）式が成立する場合は、Ｇ1 （ｋ’ j ）とＧ0 （ｋ’ j ）の間でのロード値ｚj の平均ハミングウェイトに差が生じない。
【００３５】
一般的に、消費電力はデータ値のハミングウェイトに比例すると考えられており、このことが正しいことを示した実験結果が、下記の非特許文献５にて示されている。したがって、ｋ’j ＝ｋj である場合、（８）式が満たされることで消費電力の差が電力差分曲線上のスパイクという形になって現れるが、（９）式の場合はスパイクが現れず、平坦な曲線となる。
【００３６】
以上では、最も簡単な図２４の構成に対するＤＰＡについて述べたが、このような解読法は、図２２のような線形変換を挿入しても有効であることが判明している。
図２９は、図２４を一般化した構成を示しており、拡大鍵ＸＯＲ処理の前後に２つの線形変換処理Ｌ1 およびＬ2 が挿入されている。例えば、入力をそのまま出力する関数をＬ1 とし、ビット転置置換関数をＬ2 とし、ＳＣ２０００のＢ関数と呼ばれるＳｂｏｘをｗj とすると、図２９はＳＣ２０００と等価な構成を表している。
【００３７】
なお、ＳＣ２０００の仕様については、下記の非特許文献６に示されている。Ｌ2 はビット置換関数であるので、図２９の処理は、ｗj の入出力に関係するビットのみを取り出した構成を考えることで、図２５と同一の処理に変換できる。したがって、前述と同様のＤＰＡを用いることで、拡大鍵Ｋを解読することができる。
【００３８】
以上の方法では、非線形処理中のＳｂｏｘ出力に注目してＤＰＡを適用しているが、その他にも、入力ｍj と鍵ｋj のＸＯＲ演算直後の値（拡大鍵ＸＯＲ処理の出力値）やＳｂｏｘへの入力値ｘj の値に注目してＤＰＡを適用する方法が知られている（例えば、下記の非特許文献７を参照）。
【００３９】
以上の記述を整理すると、次の条件を満たす場合にＤＰＡにより秘密鍵Ｋが推定される。
ＤＰＡ−１：入力Ｍが既知かつ制御可能、鍵Ｋが未知で固定、Ｓｂｏｘのｗj の変換が既知の場合、図３０のＡの部分（Ｓｂｏｘのｗj の出力）の電力消費曲線を測定することで、秘密鍵Ｋを推定可能である。
【００４０】
ＤＰＡ−２：入力Ｍが既知かつ制御可能、鍵Ｋが未知で固定の場合、図３０のＢの部分（拡大鍵ＸＯＲ処理の出力値の書き出し）の電力消費曲線を測定することで、秘密鍵Ｋを推定可能である。
【００４１】
ＤＰＡ−３：入力Ｍが既知かつ制御可能、鍵Ｋが未知で固定の場合、図１５のＣの部分（Ｓｂｏｘのｗj を索引するための入力値のロード）の電力消費曲線を測定することで、秘密鍵Ｋを推定可能である。
【００４２】
これらのＤＰＡ攻撃条件については、下記の特許文献１にも記載されている。
ＤＰＡを行うための消費電力測定法としては、２種類の方法が知られている。１つは、図３１に示すように、スマートカード３１０１の表面に抵抗３１０２を接続し、オシロスコープ３１０３により、抵抗３１０２の両端の電圧を測定する方法である。もう１つは、図３２に示すように、スマートカード３１０１の表面に、オシロスコープ３１０３に接続された電磁波プローブ３２０１を設置し、スマートカード３１０１から漏洩する電磁波を測定することで、消費電力を測定する方法である。
【００４３】
図３１の方法は、カード表面に抵抗を取り付けるだけでよいため、攻撃者の手間が少ないというメリットがある。ただし、カード全体の消費電力を測定するため、暗号処理とは関係のない消費電力も測定されてしまうというデメリットがある。
【００４４】
図３２の方法は、カードの消費電力を部分的に測定することができるため、測定精度が高いというメリットがある。例えば、スマートカード３１０１がＣＰＵ（中央処理装置）、ＲＡＭ（random access memory）、ＲＯＭ（read only memory）、演算器、および暗号プロセッサから構成される場合、電磁波プローブ３２０１を暗号プロセッサの近くに設置することで、ＣＰＵ、ＲＡＭ、ＲＯＭ、および演算器の消費電力成分を低く抑えながら、暗号処理に関する消費電力を重点的に測定することができる。電磁波の強度は、電流発生源からの距離の２乗に反比例するため、電磁波プローブ３２０１を電流発生源に近づけるほど電磁波が強くなるためである。
【００４５】
電磁波プローブ３２０１を設置する場所を慎重に選択することで、例えば、図１５における拡大鍵生成１５０１の消費電力を測定することなく、ラウンド処理１５０２のみの消費電力を測定することも可能であり、非常に精度の高いＤＰＡを実行することができる。デメリットは、電磁波プローブ３２０１の最適な設置場所を発見するために、電力測定実験を何回も繰り返すため、時間的なコストが大きいという点である。
【００４６】
次に、図３３から図３５までを参照しながら、従来のＤＰＡ対策法について説明する。ＤＰＡ対策法としては、スマートカード内にノイズ発生器を置く等の、電力消費量の測定精度を落とす方法と、暗号処理に対策を施し消費電力をランダム化する方法が存在する。前者は容易に実施可能であるが、例えば、図３２に示した電力測定法を用いることで解読が可能になるため、根本的な対策とはならない。これに対して、後者は、実施は容易でないが根本的な対策となる。
【００４７】
消費電力をランダム化する方法の代表的なものとして、マスク法（以下では、「従来例１」と記す）と呼ばれる方法が知られている（例えば、下記の非特許文献８を参照）。ＤＰＡ対策なしの暗号処理において計算されるデータをＭとすると、従来例１のＤＰＡ対策法では、データＭを計算する代わりに、次式で表されるデータＭ’およびＲを計算することで、暗号処理が行われる。
【００４８】
【数５】
2008131108.tif 000008
【００４９】
ただし、Ｒは乱数であり、暗号処理を実行する度に発生させる値である。この方法によれば、暗号処理のデータＭにランダムな値ＲをＸＯＲ演算することで、データＭがマスク
される。データがランダム化されることで消費電力もランダム化されるため、ＤＰＡに対して安全な処理を実現することができる。以下では、Ｒのように、ＤＰＡ対策なしのデータに対してＸＯＲ演算される値を、マスク値と呼ぶ。
【００５０】
この方法では、乱数Ｒの値に応じて、ラウンド処理の各段階でＭ’およびＲの２つのデータに対する演算をそれぞれ実行する必要があるため、データＭを直接計算する場合と比較して、処理時間が２倍以上になるという問題がある。
【００５１】
問題１：暗号処理の計算を２重化して行う必要があるため、処理時間が２倍以上となる。
この問題を解消するための方法が、上述した特許文献１に開示されている（以下では、「従来例２」と記す）。従来例１ではマスク値をランダムに生成しているのに対して、従来例２では、事前に計算された複数の固定値の中から、乱数によって１つを選択し、その値をマスク値として用いる。選択されたマスク値をＲx と表記すると、従来例２では、次式を満たすデータＭ’ x およびＲx が計算される。
【００５２】
【数６】
2008131108.tif 000009
【００５３】
Ｒx は事前に計算された値であるため、Ｍ’ x およびＲx の両方を計算する必要はなく、Ｍ’ x のみを計算すればよい。したがって、従来例２は、従来例１のように計算を２重化する必要はなく、高速な処理を実現することができる。
【００５４】
従来例２のＤＰＡ対策法を用いることで、図２４に示したＤＰＡ対策なしの暗号処理は、図３３に示すような暗号処理に置き換えられる。図３３は、図２４の処理を、ＡＥＳにおけるＲｏｕｎｄＫｅｙ処理とＳｕｂｂｙｔｅ処理の組み合わせとみなした場合の構成を示している。
【００５５】
図３３において、セレクタ３３０１−ｊおよび３３０６−ｊ（ｊ＝０，１，．．．，１５）（ｑ−１  ＭＵＸ）は、ｑ個の入力データの中から乱数ｊに応じて１つを選択し、出力する。デマルチプレクサ３３０４−ｊ（ｊ＝０，１，．．．，１５）（ｑ−１  ＤＥＭＵＸ）は、ｑ個の出力先の中から乱数ｊに応じて選択した出力先に、入力されたデータを出力する。
【００５６】
ＸＯＲ演算器３３０２−ｊは、８ビットごとに分割された拡大鍵Ｋ0 〜Ｋ15のうちＫj と、セレクタ３３０１−ｊにより定数ｃ0 〜ｃq-1 から選択された値のＸＯＲを計算することで、Ｋj をマスクする。ＸＯＲ演算器３３０３−ｊは、マスクされた拡大鍵と入力データのＸＯＲを計算する。
【００５７】
次に、ＸＯＲ演算器３３０３−ｊの演算結果に対して、Ｓｂｏｘ回路３３０５−ｊによる非線形変換処理が行われる。この処理では、乱数ｊに応じてｑ個のＳｂｏｘ（Ｓ’0 ［ｘ］〜Ｓ’q-1 ［ｘ］）の中から１つが選択され、そのＳｂｏｘを用いて入力データが変換される。この選択に使用される乱数ｊは、拡大鍵Ｋj のマスク値の選択に使用された乱数ｊと同じである。
【００５８】
Ｓ’0 ［ｘ］〜Ｓ’q-1 ［ｘ］は、それぞれ異なる定数ｄ0 〜ｄq-1 でマスクされている。すなわち、ＤＰＡ対策なしのＳｂｏｘをＳ［ｘ］とすると、Ｓ’i ［ｘ］（ｉ＝０，１，．．．，ｑ−１）は、次式のように表される。
【００５９】
【数７】
2008131108.tif 000010
【００６０】
Ｓｂｏｘ回路３３０５−ｊの入力側にデマルチプレクサ３３０４−ｊがあり、出力側にセレクタ３３０６−ｊがあるため、ｑ個のＳｂｏｘのうち拡大鍵ＸＯＲ演算の信号が伝達するのは１つだけである。ｑ個のＳｂｏｘの論理はそれぞれ異なるため、電力特性もそれぞれ異なる。このため、乱数によりこれらのうちの１つを選択することで、消費電力がランダム化され、ＤＰＡに対して安全な処理を実現することができる。
【００６１】
また、この方法は、図１５におけるラウンド処理１５０２に関する消費電力を直接的にランダム化するため、図３１および図３２に示した電力測定法の両方に対して安全な処理を実現することができる。ただし、図３３の構成は、ＤＰＡ対策なしのｑ倍のＳｂｏｘを必要とする。一般的に、Ｓｂｏｘの回路面積は非常に大きいため、図３３のＤＰＡ対策法には次のような問題がある。
【００６２】
問題２：ＤＰＡ対策なしのｑ倍のＳｂｏｘを必要とするため、回路面積が大きくなる。
この問題を解消する方法として、下記の特許文献２に記されたＤＰＡ対策法が知られている（以下では、「従来例３」と記す）。この方法は、図１５における拡大鍵生成１５０１の消費電力をランダム化する方法である。このメカニズムを説明するために、ＤＰＡ対策なしのＡＥＳにおける拡大鍵生成について説明する。
【００６３】
ＡＥＳにおける拡大鍵生成では、ラウンド処理と同様にＳｕｂｂｙｔｅ処理が実行されるが、この場合は、図３４に示すように、３２ビット単位によるＳｕｂｂｙｔｅ処理が実行される。従来例３では、図３４のＳｕｂｂｙｔｅ処理の消費電力をランダム化するために、図３５に示すような回路を用いる。
【００６４】
図３５の回路は、４つのＳｂｏｘ（Ｓ0 〜Ｓ3 ）と、乱数に応じて入力データＸの経路を選択する経路選択回路３５０１および３５０２から構成される。経路選択回路３５０１には、乱数とともに、３２ビットデータＸが４つの８ビットデータｘ0 〜ｘ3 に分割されて入力される。経路選択回路３５０１への入力時には、データがｘ0 ，ｘ1 ，ｘ2 ，ｘ3 の順番に並んでいるが、出力時にはこの順番が乱数に応じてランダムに並べ替えられる。図３５の例では、最上位ビットから見て、ｘ1 ，ｘ3 ，ｘ0 ，ｘ2 の順番に並べ替えられる。
【００６５】
データの順序が入れ替えられた後は、これらのデータに対してそれぞれＳ0 〜Ｓ3 で表されるＳｂｏｘ処理が行われる。これらのＳｂｏｘは、論理的にはＤＰＡ対策なしのＳｂｏｘと同じであるが、物理的に異なる形態で実装されるため、消費電力特性はそれぞれ異なる。例えば、Ｓ0 は論理回路で実装され、Ｓ1 はＳＲＡＭ（Static Random Access Memory ）で実装され、Ｓ2 はＭａｓｋ  ＲＯＭで実装され、Ｓ3 はＦＬＡＳＨ  ＲＯＭで実装される。
【００６６】
つまり、データｘj （ｊ＝０，１，２，３）を処理するＳｂｏｘがＳ0 〜Ｓ3 の中からランダムに選択されることで、消費電力がランダムに変化するため、ＤＰＡに対する安全性を向上させることができる。Ｓｂｏｘによる計算が終わった後は、経路選択回路３５０２によるデータ順序の入れ替えを行い、Ｓｂｏｘへの入力時にランダム化されたデータの順序を元に戻す。
【００６７】
この構成のメリットは、図３４のＤＰＡ対策なしの構成と比較してＳｂｏｘの個数が増えないため、回路面積の利用効率に優れていることである。図３３に示した従来例２の方
法では、ｑ個のＳｂｏｘのうちの１つしか暗号処理に使用されないのに対して、従来例３の方法では、経路選択回路の作用により、すべてのＳｂｏｘが暗号処理に使用されることになる。したがって、従来例３は従来例２が有している問題２を解決することができる。
【特許文献１】特開２００２−３６６０２９号公報
【特許文献２】特表２００５−５２７８５３号公報
【非特許文献１】Thomas S. Messerges, Ezzy A. Dabbish and Robert H. Sloan, “Power Analysis Attacks of Modular Exponentiation in Smartcards,” Cryptographic Hardware and Embedded Systems (CHES’99), Springer-Verlag, pp. 144-157, 1999.
【非特許文献２】Paul Kocher, Joshua Jaffe, and Benjamin Jun, “Differential Power Analysis,” in proceedings of Advances in Cryptology-CRYPTO’99, Springer-Verlag, pp. 388-397, 1999.
【非特許文献３】S. Chari, C. Jutla, J. R. Rao, P. Rohatgi, “An Cautionary Note Regarding Evaluation of AES Candidates on Smart-Cards,” Second Advanced Encryption Standard Candidate Conference, February 1999.
【非特許文献４】“Federal Information Processing Standards Publication 197”、［online］、［平成１８年１０月２日検索］、インターネット＜ＵＲＬ： http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf＞
【非特許文献５】T. S. Messerges, Ezzy A. Dabbish and Robert H. Sloan, “Investigations of Power Attacks on Smartcards,” Proceedings of USENIX Workshop on Smartcard Technology, May 1999.
【非特許文献６】Takeshi Shimoyama, Hitoshi Yanami, Kazuhiro Yokoyama, Masahiko Takenaka, Kouichi Itoh, Jun Yajima, Naoya Torii and Hidema Tanaka, “The Block Cipher SC2000,” Fast Software Encryption (FSE 2001), pp. 312-327, LNCS vol. 2355, 2002.
【非特許文献７】M. Akkar, R. Bevan, P. Dischamp and D. Moyart, “Power Analysis, What Is Now Possible...,” ASIACRYPT 2000, pp. 489-502, 2000.
【非特許文献８】Thomas S. Messerges, “Securing the AES Finalists Against Power Analysis Attacks,” in proceedings of Fast Software Encryption Workshop 2000, Springer-Verlag, pp. 150-164, 2001.
【発明の開示】
【発明が解決しようとする課題】
【００６８】
上述した従来例３のＤＰＡ対策法は、以下で述べる２つの新たな問題を有している。最初の問題は、次の通りである。
問題３：従来例３は、拡大鍵生成の消費電力のみをランダム化する方法であるため、ＤＰＡに対する安全性が低い。すなわち、図３１に示した方法により、スマートカード全体の消費電力を測定するＤＰＡを防ぐことはできるが、図３２に示した方法により、スマートカードの一部の回路の消費電力を測定するＤＰＡに対しては、安全ではない。
【００６９】
前述した通り、ＤＰＡは、図１５におけるラウンド処理１５０２の消費電力を測定することで、秘密鍵の解読を行う方法である。これに対して、従来例３は、拡大鍵生成１５０１の消費電力をランダム化できるが、ラウンド処理１５０２の消費電力をランダム化することはできない。
【００７０】
したがって、スマートカード全体の消費電力を測定するＤＰＡに対しては安全である。しかし、スマートカードの一部の回路の消費電力を測定するＤＰＡの場合、ラウンド処理１５０２の消費電力のみを測定することが可能であるため、安全ではない。
【００７１】
従来例３は、さらに次のような問題を有する。
問題４：従来例３の経路選択回路は、セレクタ回路やデマルチプレクサ回路の他に、入
力された乱数から選択信号を生成する回路を必要とするため、回路規模が大きくなる。
【００７２】
この問題を説明するために、従来例３の経路選択回路の構成例を図３６に示す。図３６は、上述した特許文献２の図１１に示された構成を示している。この構成は、選択信号生成回路３６０１および経路選択回路３６０２、３６０３からなる。選択信号生成回路３６０１は、乱数デコーダ３６１１およびインバータ回路３６１２を含み、経路選択回路３６０２は、セレクタ（４−１  ＭＵＸ）３６２１−１〜３６２１−４を含み、経路選択回路３６０３は、４入力１出力のセレクタ３６２２−１〜３６２２−４を含む。
【００７３】
不図示の乱数発生回路により９ビットの乱数が生成され、この乱数が乱数デコーダ３６１１に入力されると、乱数デコーダ３６１１から８ビットの信号が出力される。この８ビット信号は、経路選択回路３６０２に選択信号として入力される。経路選択回路３６０２のセレクタ３６２１−１〜３６２１−４のそれぞれに対して、２ビットの選択信号が割り当てられ、各セレクタ３６２１−ｊ（ｊ＝０，１，２，３）は、この選択信号に応じて入力信号ｘ0 〜ｘ3 の中から１つを選択し、出力する。
【００７４】
図３６の例では、セレクタ３６２１−１、３６２１−２、３６２１−３、および３６２１−４が、それぞれｘ1 、ｘ3 、ｘ0 、およびｘ2 を選択する。この選択動作は、４つのセレクタの間で出力信号が重複しないように行われる。なぜなら、出力信号が重複して、例えば、セレクタ３６２１−１、３６２１−２、３６２１−３、および３６２１−４が、それぞれｘ0 、ｘ3 、ｘ0 、およびｘ2 を選択した場合、ｘ1 に関するＳｂｏｘ処理が実行されないため、正常な暗号化結果を得ることができないからである。
【００７５】
例えば、図３６の４つのセレクタのうち、セレクタ３６２１−１によって入力信号ｘ1 が選択されているが、その他のセレクタ３６２１−２〜３６２１−４が入力信号ｘ1 を選択することはない。
【００７６】
乱数に応じてランダムな選択信号を生成しながら、ｘ0 〜ｘ3 に関する重複を避けることができるのは、乱数デコーダ３６１１が果たす機能によるものである。さらに、乱数デコーダ３６１１は、ランダムな選択信号に関する統計的な偏りを防ぐ役割も果たす。すなわち、ｘj を処理するＳｂｏｘが、Ｓ0 〜Ｓ3 の中からそれぞれ等しい確率１／４で選択されるようにすることで、統計的な偏りが抑えられ、ＤＰＡに対して安全な処理が実現される。
【００７７】
ｘ1 、ｘ3 、ｘ0 、およびｘ2 に対してそれぞれＳ1 、Ｓ2 、Ｓ3 、およびＳ4 によるＳｂｏｘ処理が行われた結果、信号ｚ1 、ｚ3 、ｚ0 、およびｚ2 が生成され、経路選択回路３６０３に入力される。
【００７８】
インバータ回路３６１２は、乱数デコーダ３６１１から出力された８ビット信号を反転し、得られた信号を選択信号として経路選択回路３６０３に出力する。この選択信号は、経路選択回路３６０２によってランダムに順序が入れ替えられた信号を元の順序に戻すための選択信号である。すなわち、信号ｚ1 、ｚ3 、ｚ0 、ｚ2 をｚ0 、ｚ1 、ｚ2 、ｚ3 の順番に戻すような選択信号が生成される。
【００７９】
インバータ回路３６１２により生成された８ビットの選択信号は、経路選択回路３６０３のセレクタ３６２２−１〜３６２２−４に２ビットずつ入力される。これにより、セレクタ３６２２−１、３６２２−２、３６２２−３、および３６２２−４は、それぞれｚ0 、ｚ1 、ｚ2 、およびｚ3 を選択する。
【００８０】
図３６の構成を用いることで、Ｓｂｏｘの個数を増やさずに消費電力をランダム化する
ことができる。一方で、ＤＰＡに対して安全な処理を実現するために、乱数を直接経路選択回路３６０２および３６０３に入力することができず、乱数デコーダ３６１１とインバータ回路３６１２からなる選択信号生成回路３６０１を必要とする。その結果、上述した問題４が生じる。
【００８１】
問題１によれば、従来例１は処理時間が２倍となること、問題２によれば、従来例２はＳｂｏｘがｑ倍必要であること、問題３によれば、従来例３はラウンド処理の消費電力をランダム化できないため、図３２に示したＤＰＡに対して弱いこと、問題４によれば、従来例３は選択信号生成回路を必要とする、ということが明らかになった。そこで、以下では、これらの問題を同時に解消する方法について考察する。
【００８２】
図３７は、３２ビットデータを対象として、従来例２と従来例３を単純に組み合わせた暗号化回路の構成を示している。この暗号化回路は、ＸＯＲ演算器３７０１−０〜３７０１−３、３７０２−０〜３７０２−３、セレクタ３７０３−０〜３７０３−３、選択信号生成回路３７０４、経路選択回路３７０５、３７０６、および４つのＳｂｏｘ（Ｓ0 〜Ｓ3 ）を備える。選択信号生成回路３７０４は、インバータ回路３７１１および乱数デコーダ３７１２を含む。
【００８３】
ＸＯＲ演算器３７０１−ｊ、３７０２−ｊおよびセレクタ３７０３−ｊ（ｊ＝０，１，２，３）の動作は、図３３のＸＯＲ演算器３３０２−ｊ、３３０３−ｊおよびセレクタ３３０１−ｊの動作と同様であり、選択信号生成回路３７０４、経路選択回路３７０５、３７０６、およびＳ0 〜Ｓ3 の動作は、図３６の選択信号生成回路３６０１、経路選択回路３６０２、３６０３、およびＳ0 〜Ｓ3 の動作と同様である。
【００８４】
この暗号化回路には、３２ビットデータＭが４つの８ビットデータｍ0 〜ｍ3 に分割されて入力され、８ビットの拡大鍵Ｋ0 〜Ｋ3 と乱数ｒ0 〜ｒ3 、ｒも入力される。ｘj はｍj とＫj のＸＯＲを表し、ＤＰＡ対策なしのＳｂｏｘをＳとすると、Ｓj ［ｘ］＝Ｓ［ｘ］である。また、ｃrjは、定数ｃ0 〜ｃ3 の中から乱数ｒj により選択されたマスク値を表している。
【００８５】
この構成では、問題３を解決するために、ＡＥＳのラウンド処理におけるＲｏｕｎｄＫｅｙ処理とＳｕｂｂｙｔｅ処理に対してそれぞれ消費電力のランダム化を行っている。ＲｏｕｎｄＫｅｙ処理に対する消費電力のランダム化は、従来例２の方法を用いており、Ｓｕｂｂｙｔｅ処理に対する消費電力のランダム化は、従来例３の方法を用いている。ＡＥＳのＳｕｂｂｙｔｅ処理に対して従来例３の方法を用いることで、問題２も解決される。
【００８６】
ただし、この構成には、マスク法のデータ処理条件を満たさないという問題がある。図３３に示した従来例２の説明で既に述べた通り、マスク法のデータ処理条件は、計算されるデータＴ’が、乱数によって選択されるマスク値Ｒx を用いて、次式で表されることである。
【００８７】
【数８】
2008131108.tif 000011
【００８８】
このＲx がＴおよびＴ’に依存せず、乱数によってのみ決定される値であれば、すべてのＡＥＳ暗号処理が終了した後に、次式により簡単にＴ’を元の値Ｔに戻すことができる。
【００８９】
【数９】
2008131108.tif 000012
【００９０】
Ｒx がＴおよびＴ’に依存する場合は、ＲｘをＴ’に応じて動的に計算する必要がある。この計算を実行するには計算の２重化が必要となるため、従来例２が本来解消するはずであった問題１を解決することができない。
【００９１】
図３７の構成がマスク法のデータ処理条件を満たさない理由は、ＲｏｕｎｄＫｅｙ処理においては、乱数で選択した定数によるマスク処理を行っているにもかかわらず、Ｓｕｂｂｙｔｅ処理では、マスクされていないＳｂｏｘを用いているためである。例えば、入力データの最上位８ビットｍ0 に対してＲｏｕｎｄＫｅｙ処理が行われることで、
2008131108.tif 000013
が出力される。ただし、
2008131108.tif 000014
である。
【００９２】
この後、乱数ｒに応じてデータ順序を入れ替える経路選択回路３７０５を経由して、データ
2008131108.tif 000015
【００９３】
に対してＳ2 によるＳｂｏｘ処理が行われ、
2008131108.tif 000016
が出力される。その後、経路選択回路３７０６により、
2008131108.tif 000017
は再び最上位８ビットの位置に戻され、データが出力される。このとき、
2008131108.tif 000018
【００９４】
は、マスク法のデータ処理条件を満たさない。なぜなら、
2008131108.tif 000019
において、
2008131108.tif 000020
であるが、Ｓは非線形変換関数であるため、
2008131108.tif 000021
の関係は満たされず、Ｒx ＝Ｓ［ｃr0］が成立しないからである。つまり、Ｒx は乱数ｒ0 のみによって決定される値ではなく、データ値ｘ0 の影響を受けて変化する値であるということになる。
【００９５】
この問題を解決するための構成を図３８に示す。図３８は、従来例３をＡＥＳのラウンド処理におけるＳｕｂｂｙｔｅ処理に対して適用した構成を示している。ＲｏｕｎｄＫｅｙ処理は、ＤＰＡ対策なしの場合と同じ処理である。
【００９６】
図３７の構成とは異なり、ＲｏｕｎｄＫｅｙ処理においてｃrjによるマスクが付かないため、入力データｍ0 〜ｍ3 に対してそれぞれ出力データＳ［ｘ0 ］〜Ｓ［ｘ3 ］が得られる。したがって、
2008131108.tif 000022
におけるＲx＝０の場合と等価な処理を実現できる。
【００９７】
ただし、この構成の場合、Ｓｕｂｂｙｔｅ処理の消費電力をランダム化することはできるが、ＲｏｕｎｄＫｅｙ処理の消費電力をランダム化することはできない。すなわち、図３０のＣおよびＡで示されるＳｂｏｘの入力および出力の消費電力をランダム化することはできるが、Ｂで示されるＸＯＲ演算の出力の消費電力をランダム化することはできない。したがって、ＤＰＡ−２として述べたような脆弱性があるため、ＤＰＡに対する安全性を実現することができない。
【００９８】
このように、従来例２および従来例３をＡＥＳのラウンド処理に単純に適用しただけでは、上記問題１〜問題４をすべて解決したＤＰＡ対策を実現することができない。
本発明の課題は、共通鍵暗号処理において、ＤＰＡのような電力解析攻撃に対する対策を施し、問題１〜問題４をできる限り解決可能な暗号化装置を提供することである。
【課題を解決するための手段】
【００９９】
図１は、本発明の暗号化装置の原理図である。図１の暗号化装置は、乱数発生手段１０１、第１の経路選択手段１０２−１、第２の経路選択手段１０２−２、第３の経路選択手段１０２−３、拡大鍵演算手段１０３、および非線形変換手段１０４を備え、共通鍵暗号の暗号処理を行う。
【０１００】
乱数発生手段１０１は、乱数を発生する。第１の経路選択手段１０２−１は、乱数の値に応じて、拡大鍵をマスクするための複数の拡大鍵マスク値からなるデータ列をランダムに並べ替えて出力する。拡大鍵演算手段１０３は、第１の経路選択手段１０２−１から出力される複数の拡大鍵マスク値と、拡大鍵を表すデータ列と、入力データ列との排他的論理和を生成する。
【０１０１】
第２の経路選択手段１０２−２は、乱数の値に応じて第１の経路選択手段１０２−１とは逆の並べ替えを行うことで、排他的論理和のデータ列を並べ替えて出力する。非線形変換手段１０４は、第２の経路選択手段１０２−２から出力されるデータ列の非線形変換を行って、複数の非線形変換マスク値によりマスクされたデータ列を出力する。第３の経路選択手段１０２−３は、乱数の値に応じて第１の経路選択手段１０２−１と同じ並べ替えを行うことで、非線形変換手段１０４から出力されるデータ列を並べ替えて出力する。
【０１０２】
第２の経路選択手段１０２−２が第１の経路選択手段１０２−１とは逆の並べ替えを行うため、非線形変換手段１０４に入力されるデータ列においては、第１の経路選択手段１０２−１に入力された複数の拡大鍵マスク値の順序が保存されている。したがって、これらの拡大鍵マスク値の影響をあらかじめ考慮に入れた、マスク付き非線形変換テーブルを非線形変換手段１０４に設定しておくことが可能になる。
【０１０３】
このとき、（１３）式のＲx がＴおよびＴ’に依存せず、乱数によってのみ決定される値になるように、マスク付き非線形変換テーブルを調整すれば、マスク法のデータ処理条件が満たされ、問題１を解決することができる。
【０１０４】
このようなマスク付き非線形変換テーブルを用いた場合、非線形変換手段１０４から出力されるデータ列は、第２の経路選択手段１０２−２から出力されるデータ列と上記複数の拡大鍵マスク値の排他的論理和を、マスクなしの非線形変換テーブルにより変換した結果と、上記複数の非線形変換マスク値との排他的論理和を表すデータ列になる。
【０１０５】
また、第３の経路選択手段１０２−２が第１の経路選択手段１０２−１と同じ並べ替え、すなわち、第２の経路選択手段１０２−１とは逆の並べ替えを行うため、第３の経路選択手段１０２−２から出力されるデータ列においては、拡大鍵演算手段１０３に入力された入力データ列の順序が保存されている。このため、図３３に示したような大規模なＳｂｏｘ回路を用いる必要がなく、問題２を解決することができる。
【０１０６】
また、拡大鍵演算手段１０３の出力と非線形変換手段１０４の出力が共にマスク値によりマスクされているため、問題３を解決することができる。さらに、第１の経路選択手段１０２−１、第２の経路選択手段１０２−２、および第３の経路選択手段１０２−３は、乱数発生手段１０１からの乱数により直接制御されるため、選択信号生成回路が不要となり、問題４を解決することができる。
【０１０７】
乱数発生手段１０１は、例えば、後述する図９の乱数発生器９０１に対応し、第１の経路選択手段１０２−１、第２の経路選択手段１０２−２、および第３の経路選択手段１０２−３は、例えば、後述する図２の経路選択回路２０３、２０４、および２０５にそれぞれ対応する。拡大鍵演算手段１０３は、例えば、ＸＯＲ演算器２０１および２０２に対応し、非線形変換手段１０４は、例えば、４つのマスク付きＳｂｏｘ（Ｓ’0 〜Ｓ’3 ）に対応する。
【発明の効果】
【０１０８】
本発明によれば、代表的な共通鍵暗号アルゴリズムであるＡＥＳを始めとした暗号処理における秘密鍵の解読が困難になり、スマートカード等の組み込み機器の安全性を高めることができる。
【発明を実施するための最良の形態】
【０１０９】
以下、図面を参照しながら、本発明を実施するための最良の形態を詳細に説明する。
図２は、ＡＥＳのラウンド処理におけるＲｏｕｎｄＫｅｙ処理およびＳｕｂｂｙｔｅ処
理に対して、本発明のＤＰＡ対策を適用した暗号化回路の構成例を示している。この暗号化回路は、ＸＯＲ演算器２０１、２０２、経路選択回路２０３、２０４、２０５、および４つのマスク付きＳｂｏｘ（Ｓ’0 〜Ｓ’3 ）を備える。
【０１１０】
Ｓ’0 〜Ｓ’3 は、従来例１と同様に、ＤＰＡ対策なしのＳｂｏｘ（Ｓ）、それぞれ異なる定数ｃj 、ｄj （ｊ＝０，１，２，３）に対して、次式を満たす。
【０１１１】
【数１０】
2008131108.tif 000023
（１５）式より、次式が成り立つ。
【数１１】
2008131108.tif 000024
【０１１２】
それぞれ異なる定数ｃj 、ｄj をマスク値として用いることで、４個のマスク付きＳｂｏｘの論理をそれぞれ異ならせることができ、消費電力のランダム化が実現される。
経路選択回路２０３は、ＲｏｕｎｄＫｅｙ処理の消費電力をランダム化するために用いられ、経路選択回路２０４および経路選択回路２０５は、Ｓｕｂｂｙｔｅ処理におけるＳｂｏｘ処理の消費電力をランダム化するために用いられる。３つの経路選択回路２０３〜２０５にはそれぞれ同一の乱数が入力され、入力された乱数がそのまま選択信号として用いられる。この乱数は、４ビットもしくは６ビットであるが、乱数のビット長は構成によって異なる。
【０１１３】
次に、図２の暗号化回路の動作について説明する。この暗号化回路には、３２ビットデータＭおよび３２ビットの拡大鍵Ｋが入力される。３２ビットデータＭを４つの８ビットデータｍ0 〜ｍ3 で表し、拡大鍵Ｋを４つの８ビット拡大鍵Ｋ0 〜Ｋ3 で表すと、ｘj はｍj とＫj のＸＯＲを表している。
【０１１４】
まず、経路選択回路２０３に乱数と４つの８ビットマスク値ｃ0 〜ｃ3 が入力されると、乱数に応じてマスク値の順序がランダムに入れ替えられる。図２の例では、ｃ0 ，ｃ1 ，ｃ2 ，ｃ3 がｃ2 ，ｃ0 ，ｃ3 ，ｃ1 の順番に並べ替えられて、ＸＯＲ演算器２０１に出力される。ＸＯＲ演算器２０１は、これらのマスク値と拡大鍵ＫのＸＯＲをＸＯＲ演算器２０２に出力し、ＸＯＲ演算器２０２は、ＸＯＲ演算器２０１の出力とデータＭのＸＯＲを出力する。
【０１１５】
次に、ＸＯＲ演算器２０２の出力データに対して、経路選択回路２０４によりデータ順序の入れ替えが行われる。経路選択回路２０４は、入力された乱数に応じてデータの順序をランダムに入れ替え、Ｓ’0 〜Ｓ’3 に出力する。ただし、Ｓ’0 〜Ｓ’3 には、それぞれマスク値ｃ0 〜ｃ3 によりマスクされたデータが入力される。図２の例では、ＸＯＲ演算器２０２の出力データ
2008131108.tif 000025
が
2008131108.tif 000026
の順番に並べ替えられて、Ｓ’0 ，Ｓ’1 ，Ｓ’2 ，Ｓ’3 にそれぞれ入力される。
【０１１６】
この順番が保証されるのは、経路選択回路２０４が経路選択回路２０３の逆変換を実行する回路になっているためである。経路選択回路２０４がこのような変換を行うことで、経路選択回路２０３により入れ替えられたマスク値ｃ0 〜ｃ3 に関するデータ順序が、Ｓｂｏｘへのデータ入力時にはｃ0 ，ｃ1 ，ｃ2 ，ｃ3 の順序に戻ることになる。
【０１１７】
次に、Ｓ’0 ，Ｓ’1 ，Ｓ’2 ，Ｓ’3 によるＳｂｏｘ処理の結果、それぞれマスク値ｄ0 ，ｄ1 ，ｄ2 ，ｄ3 によりマスクされたデータが出力される。図２の例では、Ｓ’0 ，Ｓ’1 ，Ｓ’2 ，Ｓ’3 から、それぞれデータ
2008131108.tif 000027
が出力される。
【０１１８】
これらのデータに対して、経路選択回路２０５を用いた順序のランダム化を行うことで、ｘ0 〜ｘ3 に関するデータ順序が本来の順序であるｘ0 ，ｘ1 ，ｘ2 ，ｘ3 の順序に戻され、代わりにこれらのデータに付加されるマスク値の順序がランダム化される。図２の例では、経路選択回路２０５から、並べ替えられたデータ
2008131108.tif 000028
が出力される。
【０１１９】
これらの一連の処理は、マスク法のデータ処理条件を満たすため、上記問題１を解決することができる。また、必要なＳｂｏｘの個数がＤＰＡ対策なしの場合と同じ４個でよく、従来例１のようにｑ倍のＳｂｏｘが必要ではないため、問題２を解決することができる。また、ラウンド処理におけるＲｏｕｎｄＫｅｙ処理とＳｕｂｂｙｔｅ処理の両方の消費電力がランダム化されるため、問題３を解決することができる。さらに、乱数を直接経路選択回路２０３〜２０５に入力することができ、選択信号生成回路を用いる必要がないため、問題４を解決することができる。
【０１２０】
以上により、図２に示した暗号化回路の構成は、従来の問題１〜問題４をすべて解決することができる。なお、問題４を解決するための経路選択回路２０３〜２０５の構成としては、複数の構成が考えられる。そこで、それぞれの構成について、図３から図８までを参照しながら説明する。
【０１２１】
図３は、図２の経路選択回路２０４および２０５の第１の構成を示している。経路選択回路３０１および３０２は、経路選択回路２０４および２０５にそれぞれ対応している。なお、経路選択回路２０３は、経路選択回路２０５と同じ構成である。経路選択回路３０１は、２入力２出力の切替回路（２−２  ＭＵＸ）３１１〜３１４から構成され、経路選択回路３０２は、２入力２出力の切替回路３２１〜３２４から構成される。
【０１２２】
切替回路３１１〜３１４および３２１〜３２４は、図４に示すように、２つの８ビット入力部Ｉ0 およびＩ1 と、２つの８ビット出力部Ｏ0 およびＯ1 を有し、選択信号ｒに応じて、２種類のスイッチングを行う。
【０１２３】
１つはｒ＝０の場合であり、Ｏ0 ＝Ｉ0 ，Ｏ1 ＝Ｉ1 のスイッチングを行う。もう１つはｒ＝１の場合であり、Ｏ0 ＝Ｉ1 ，Ｏ1 ＝Ｉ0 のスイッチングを行う。すなわち、選択信号ｒが０か１かに応じて、入力データをそのまま出力するか、交差させてから出力するかを選択する。このような切替回路を用いて経路選択回路３０１および３０２を構成することで、外部から入力された乱数をそのまま選択信号として用いることができる。
【０１２４】
図４の切替回路を用いた経路選択回路３０１および３０２の動作について説明する。経路選択回路３０１には、４つの８ビットデータｘ0 ，ｘ1 ，ｘ2 ，ｘ3 が入力され、経路選択回路３０２からは、４つの８ビットデータｚ0 ，ｚ1 ，ｚ2 ，ｚ3 が出力される。
【０１２５】
経路選択回路３０１は、図３に示す通り、切替回路３１１および３１２を並列に並べた１段目の回路と、切替回路３１３および３１４を並列に並べた２段目の回路からなる。入力データは最上位からｘ0 ，ｘ1 ，ｘ2 ，ｘ3 の順に並んでおり、ｘ0 およびｘ1 はそれぞれ切替回路３１１のＩ0 およびＩ1 に入力され、ｘ2 およびｘ3 はそれぞれ切替回路３１２のＩ0 およびＩ1 に入力される。
【０１２６】
切替回路３１１のＯ0 およびＯ1 は、それぞれ切替回路３１３のＩ0 および切替回路３１４のＩ0 に接続され、切替回路３１２のＯ0 およびＯ1 は、それぞれ切替回路３１３のＩ1 および切替回路３１４のＩ1 に接続されている。出力データは、最上位から切替回路３１３のＯ0 、Ｏ1 および切替回路３１４のＯ0 、Ｏ1 の順に出力される。
【０１２７】
経路選択回路３０２の構成についても、経路選択回路３０１と同様である。経路選択回路３０２の出力データは、最上位からｚ0 ，ｚ1 ，ｚ2 ，ｚ3 の順に並んでおり、ｚ0 およびｚ1 はそれぞれ切替回路３２３のＯ0 およびＯ1 から出力され、ｚ2 およびｚ3 はそれぞれ切替回路３２４のＯ0 およびＯ1 から出力される。
【０１２８】
経路選択回路３０１および３０２に対しては、外部から４つの１ビット乱数ｒ0 ，ｒ1 ，ｒ2 ，ｒ3 が入力され、それぞれの切替回路に対して乱数が１ビットずつ選択信号として入力される。ただし、経路選択回路３０２に対しては、経路選択回路３０１に入力される乱数が、１段目と２段目の間で逆転して入力される。
【０１２９】
したがって、切替回路３１１、３１２、３１３、および３１４には、それぞれ乱数ｒ0 ，ｒ1 ，ｒ2 ，ｒ3 が入力され、切替回路３２１、３２２、３２３、および３２４には、それぞれ乱数ｒ1 ，ｒ3 ，ｒ0 ，ｒ2 が入力される。
【０１３０】
経路選択回路３０１は、乱数ｒ0 〜ｒ3 に応じてデータｘ0 〜ｘ3 の順序をランダム化し、Ｓ’0 〜Ｓ’3 に出力する。Ｓ’0 〜Ｓ’3 は、ランダム化されたデータの非線形変換処理を行い、経路選択回路３０２は、乱数ｒ0 〜ｒ3 に応じて変換後のデータの順序をランダム化される前の状態に戻す。
【０１３１】
このとき、経路選択回路３０１に入力された各データｘj の出力先は、乱数ｒ0 〜ｒ3 の中の２ビットの値に応じて、Ｓ’0 〜Ｓ’3 の中からランダムに選択される。
例えば、ｘ0 については、まず、乱数ｒ0 の値に応じて切替回路３１１のＯ0 またはＯ1 から出力される。Ｏ0 から出力された場合、ｘ0 はＳ’0 およびＳ’1 に接続されている切替回路３１３に入力され、さらに乱数ｒ1 の値に応じてＳ’0 またはＳ’1 に出力される。ｘ0 が切替回路３１１のＯ1 から出力された場合、ｘ0 はＳ’2 およびＳ’3 に接続されている切替回路３１４に入力され、さらに乱数ｒ3 の値に応じてＳ’2 またはＳ’3 に出力される。
【０１３２】
つまり、最初の１ビット乱数ｒ0 によって、ｘ0 の出力先がＳ’0 〜Ｓ’3 の左半分（Ｓ’0 およびＳ’1 ）もしくは右半分（Ｓ’2 およびＳ’3 ）からランダムに選択され、次の１ビット乱数ｒ1 によって、さらに左半分（Ｓ’0 またはＳ’2 ）もしくは右半分（Ｓ’1 またはＳ’3 ）からランダムに選択される。
【０１３３】
Ｓｂｏｘ処理が完了した後は、経路選択回路３０１とは、１段目と２段目が逆転した構
成の経路選択回路３０２による変換を行うことで、データがランダム化される前の順序に戻され、ｚ0 〜ｚ3 が出力される。
【０１３４】
図３の構成を用いることで、４つの出力先Ｓ’0 〜Ｓ’3 を２ビットの乱数に応じて選択することができるため、乱数に偏りがない限り、ｘ0 の出力先がＳ’0 〜Ｓ’3 の中から均等に選択され、ＤＰＡに対して高い安全性を実現できる。
【０１３５】
また、図３６に示した従来例３の構成では、４つの切替回路が同じデータを選択することがないように、入力された乱数から選択信号生成回路を介して選択信号を生成する必要があるのに対して、図３の構成では、２入力２出力の切替回路を用いているため、いかなる選択信号に対しても切替回路の出力データが重複することがない。したがって、乱数から選択信号を生成するための回路が不要となる。
【０１３６】
さらに、図３の構成は、図３６と比較すると、経路選択回路の面積を２／３に削減することができる。図３６の経路選択回路３６０２および３６０３は、４個のセレクタ（４−１  ＭＵＸ）から構成されており、各セレクタは、図５に示すように、３個の２入力マルチプレクサ回路（２−１  ＭＵＸ）から構成される。これに対して、図３の経路選択回路３０１および３０２は、４個の切替回路（２−２  ＭＵＸ）から構成されており、各切替回路は、図６に示すように、２個の２入力マルチプレクサ回路から構成される。
【０１３７】
したがって、図３６の経路選択回路３６０２および３６０３を構成するには、１２個の２入力マルチプレクサ回路が必要となるのに対して、図３の経路選択回路３０１および３０２を構成するには、８個の２入力マルチプレクサ回路で済むことになる。
【０１３８】
以上のように、２入力２出力の切替回路を基本単位として経路選択回路を構成することで、入力データがＳ’0 〜Ｓ’3 に対して均等に配分されるため、ＤＰＡに対して安全な暗号処理を実現することができ、かつ、選択信号生成回路が不要になるため、問題４を解決することができる。
【０１３９】
ところで、図３の経路選択回路３０１および３０２は、４ビットの乱数ｒ0 〜ｒ3 に応じてデータ順序のランダム化を行うため、２4 ＝１６通りの並べ替えを行うことができる。この数は、４つのデータの並べ替えの総当りパターン数である４！＝１×２×３×４＝２４通りより少ない。並べ替えの総数が多いほど消費電力がランダムに変化するパターンが多くなるので、変化パターンの予測が困難になり、より一層安全性を高めることができる。そこで、乱数に応じて２４通りの全パターンの並べ替えを行うことが望ましい。
【０１４０】
図７は、２４通りの並べ替えを行うことが可能な、図２の経路選択回路２０４および２０５の第２の構成を示している。経路選択回路７０１および７０２は、経路選択回路２０４および２０５にそれぞれ対応している。なお、経路選択回路２０３は、経路選択回路２０５と同じ構成である。経路選択回路７０１は、２入力２出力の切替回路（２−２  ＭＵＸ）７１１〜７１６から構成され、経路選択回路７０２は、２入力２出力の切替回路７２１〜７２６から構成される。切替回路７１１〜７１６および７２１〜７２６の動作は、図４と同様である。
【０１４１】
経路選択回路７０１には、４つの８ビットデータｘ0 ，ｘ1 ，ｘ2 ，ｘ3 が入力され、経路選択回路７０２からは、４つの８ビットデータｚ0 ，ｚ1 ，ｚ2 ，ｚ3 が出力される。
【０１４２】
経路選択回路７０１は、図７に示す通り、切替回路７１１および７１２を並列に並べた１段目の回路と、切替回路７１３および７１４を並列に並べた２段目の回路と、切替回路
７１５および７１６を並列に並べた３段目の回路からなる。入力データは最上位からｘ0 ，ｘ1 ，ｘ2 ，ｘ3 の順に並んでおり、ｘ0 およびｘ1 はそれぞれ切替回路７１１のＩ0 およびＩ1 に入力され、ｘ2 およびｘ3 はそれぞれ切替回路７１２のＩ0 およびＩ1 に入力される。
【０１４３】
切替回路７１１のＯ0 およびＯ1 は、それぞれ切替回路７１３のＩ0 および切替回路７１４のＩ0 に接続され、切替回路７１２のＯ0 およびＯ1 は、それぞれ切替回路７１３のＩ1 および切替回路７１４のＩ1 に接続されている。切替回路７１３のＯ0 およびＯ1 は、それぞれ切替回路７１６のＩ1 および切替回路７１５のＩ0 に接続され、切替回路７１４のＯ0 およびＯ1 は、それぞれ切替回路７１５のＩ1 および切替回路７１６のＩ0 に接続されている。出力データは、最上位から切替回路７１５のＯ0 、Ｏ1 および切替回路７１６のＯ0 、Ｏ1 の順に出力される。
【０１４４】
経路選択回路７０２は、切替回路７２１および７２２を並列に並べた１段目の回路と、切替回路７２３および７２４を並列に並べた２段目の回路と、切替回路７２５および７２６を並列に並べた３段目の回路からなる。Ｓ’0 およびＳ’1 から出力されたデータは、それぞれ切替回路７２１のＩ0 およびＩ1 に入力され、Ｓ’2 およびＳ’3 から出力されたデータは、それぞれ切替回路７２２のＩ0 およびＩ1 に入力される。
【０１４５】
切替回路７２１のＯ0 およびＯ1 は、それぞれ切替回路７２３のＩ1 および切替回路７２４のＩ0 に接続され、切替回路７２２のＯ0 およびＯ1 は、それぞれ切替回路７２４のＩ1 および切替回路７２３のＩ0 に接続されている。切替回路７２３のＯ0 およびＯ1 は、それぞれ切替回路７２５のＩ0 および切替回路７２６のＩ0 に接続され、切替回路７２４のＯ0 およびＯ1 は、それぞれ切替回路７２５のＩ1 および切替回路７２６のＩ1 に接続されている。
【０１４６】
出力データは、最上位からｚ0 ，ｚ1 ，ｚ2 ，ｚ3 の順に並んでおり、ｚ0 およびｚ1 はそれぞれ切替回路７２５のＯ0 およびＯ1 から出力され、ｚ2 およびｚ3 はそれぞれ切替回路７２６のＯ0 およびＯ1 から出力される。
【０１４７】
経路選択回路７０１および７０２に対しては、外部から４つの１ビット乱数ｒ0 ，ｒ1 ，ｒ2 ，ｒ3 ，ｒ4 ，ｒ5 が入力され、それぞれの切替回路に対して乱数が１ビットずつ選択信号として入力される。ただし、経路選択回路７０２に対しては、経路選択回路７０１に入力される乱数が、１段目と３段目の間で逆転して入力される。
【０１４８】
したがって、切替回路７１１、７１２、７１３、７１４、７１５、および７１６には、それぞれ乱数ｒ0 ，ｒ1 ，ｒ2 ，ｒ3 ，ｒ4 ，ｒ5 が入力され、切替回路７２１、７２２、７２３、７２４、７２５、および７２６には、それぞれ乱数ｒ2 ，ｒ5 ，ｒ1 ，ｒ4 ，ｒ0 ，ｒ3 が入力される。
【０１４９】
経路選択回路７０１は、乱数ｒ0 〜ｒ5 に応じてデータｘ0 〜ｘ3 の順序をランダム化し、Ｓ’0 〜Ｓ’3 に出力する。Ｓ’0 〜Ｓ’3 は、ランダム化されたデータの非線形変換処理を行い、経路選択回路７０２は、乱数ｒ0 〜ｒ5 に応じて変換後のデータの順序をランダム化される前の状態に戻す。
【０１５０】
この過程において、乱数ｒ0 〜ｒ5 と、経路選択回路７０１の出力データ順序の対応関係を、図８に示す。例えば、ｒ0 ｜ｒ1 ｜ｒ2 ｜ｒ3 ｜ｒ4 ｜ｒ5 ＝００００００の場合、データｘ0 ，ｘ1 ，ｘ2 ，ｘ3 が並べ替えられた結果、Ｓ’0 ，Ｓ’1 ，Ｓ’2 ，Ｓ’3 に対してそれぞれｘ2 ，ｘ1 ，ｘ3 ，ｘ0 が出力される。
【０１５１】
図８の対応関係より、ｘj はＳ’0 〜Ｓ’3 に対してそれぞれ確率１／４で出力されるため、乱数に対して均等な分布が得られ、ＤＰＡに対して安全な処理を実現することができる。また、データｘ0 〜ｘ3 の並べ替えのパターンは２４通り存在するため、図３に示した構成よりさらに高い安全性を実現することができる。
【０１５２】
回路規模については、図３６の従来例３と図７の構成を比較した場合、図７の構成では選択信号生成回路が不要になる。ただし、図３の構成とは異なり、経路選択回路７０１および７０２の回路規模は、従来例３と同一である。図３６の経路選択回路３６０２および３６０３には４個のセレクタが含まれており、図７の経路選択回路７０１および７０２には６個の切替回路が含まれている。ここで、セレクタと切替回路の回路規模の比率は、図５と図６より３：２であることから、経路選択回路全体の比率は、４×３：６×２＝１２：１２となり、両者の回路規模は同一であるとの結論が導かれる。
【０１５３】
次に、図９から図１３までを参照しながら、図２の暗号化回路を利用したＡＥＳのラウンド処理回路について説明する。
図９は、このようなラウンド処理回路の構成例を示している。このラウンド処理回路は、乱数発生器９０１、分割回路９０２〜９０５、結合回路９０６、ＸＯＲ演算器９０７、９０９、９１０、９２１、９２３、９２４、９３０、９３１、９３５、経路選択回路９０８、９１１、９１２、９１４、９１５、９１８、９２２、９２５、９２７、９２９、９３３、９３４、Ｓｂｏｘ回路９１３、９２６、ＳｈｉｆｔＲｏｗ回路９１６、９１９、９２８、９３２、およびＭｉｘＣｏｌｕｍｎ回路９１７、９２０を備え、１２８ビットの平文Ｍと、Ｎ＋１個の１２８ビット拡大鍵ＥＫi （ｉ＝０，１，．．，Ｎ）を入力として、１２８ビットの暗号文Ｅを出力する。
【０１５４】
ＡＥＳのラウンド処理は、アルゴリズム的には１２８ビット単位の処理を実行するが、実装上では１２８ビットをｂビットごとに分割して処理することにより、必要な回路面積を削減した形態が一般的に用いられる。ｂ＝３２，６４，１２８がよく用いられる値である。
【０１５５】
このようなビット分割は、分割回路９０２〜９０５により行われ、これらの回路により、１２８ビットの平文Ｍと１２８ビットの拡大鍵ＥＫi がｂビット単位に分割された上で、ラウンド処理が実行される。そして、ラウンド処理が完了した後は、結合回路９０６により、データが１２８ビットに戻され、暗号文Ｅとして出力される。
【０１５６】
このラウンド処理においては、それぞれ異なる定数マスク値ＦＭｉｎh 、ＦＭi,h 、ｃh 、ｄh （ｉ＝０，１，．．．，Ｎ，ｈ＝０，１，．．．，ｑ−１）と、次式で表されるマスクされたＳｂｏｘ（Ｓ’h ）と、複数の経路選択回路を用いた処理が行われる。
【０１５７】
【数１２】
2008131108.tif 000029
【０１５８】
Ｎは、ラウンド処理における繰り返し回数、ｑは、定数マスク値およびＳｂｏｘの個数を表す。Ｓｂｏｘ回路９１３および９２６は、それぞれｑ個のＳｂｏｘ（Ｓ’0 〜Ｓ’q-1 ）から構成される。ｂ＝３２の場合ｑ＝４、ｂ＝６４の場合ｑ＝８、ｂ＝１２８の場合ｑ＝１６である。また、マスク値は、次式の条件を満たすものとする。
【０１５９】
【数１３】
2008131108.tif 000030
【０１６０】
ｂ＝３２の場合、経路選択回路９０８、９１１、９１２、９１４、９１５、９１８、９２２、９２５、９２７、９２９、９３３、および９３４は、図３または図７に示した構成により実現できる。この場合、経路選択回路９１２および９２５の構成は、図３の経路選択回路３０１または図７の経路選択回路７０２と同じであり、経路選択回路９１４および９２７の構成は、図３の経路選択回路３０２または図７の経路選択回路７０２と同じである。なお、経路選択回路９０８、９１１、９１５、９１８、９２２、９２９、９３３、および９３４の構成は、経路選択回路９１４と同じである。
【０１６１】
ｂ＝６４，１２８の場合、図３または図７に示した構成を複数組み合わせた構成が必要となる。この場合の構成については、後述することにする。
以下では、図９のラウンド処理回路の動作について説明する。乱数発生器９０１は、４×（ｂ／３２）ビットもしくは６×（ｂ／３２）ビットの乱数を生成し、すべての経路選択回路９０８、９１１、９１２、９１４、９１５、９１８、９２２、９２５、９２７、９２９、９３３、および９３４に出力する。経路選択回路９０８、９１１、９１５、９１８、９２２、９２９、９３３、および９３４は、この乱数を選択信号として用いて、ランダムなマスク値を生成する。
【０１６２】
分割回路９０２は、入力された平文Ｍをｂビット単位で分割し、ＸＯＲ演算器９０７に出力する。経路選択回路９０８は、乱数に応じてマスク値ＦＭｉｎ0 〜ＦＭｉｎq-1 の順序をランダム化し、ＸＯＲ演算器９０７に出力する。ＸＯＲ演算器９０７は、分割回路９０２の出力と経路選択回路９０８の出力のＸＯＲを出力することで、ＦＭｉｎ0 〜ＦＭｉｎq-1 によるマスク処理を行う。
【０１６３】
次に、ＲｏｕｎｄＫｅｙ処理が行われる。この処理では、分割回路９０３は、拡大鍵ＥＫi をｂビット単位で分割し、ＸＯＲ演算器９０９に出力する。経路選択回路９１１は、乱数に応じてマスク値ＦＭi,0 〜ＦＭi,q-1 の順序をランダム化し、ＸＯＲ演算器９０９に出力する。ＸＯＲ演算器９０９は、分割回路９０３の出力と経路選択回路９１１の出力のＸＯＲを出力することで、ＦＭi,0 〜ＦＭi,q-1 によるマスク処理を行う。そして、ＸＯＲ演算器９１０は、ＸＯＲ演算器９０７の出力とＸＯＲ演算器９０９の出力のＸＯＲを出力する。
【０１６４】
得られたＲｏｕｎｄＫｅｙ処理の結果に対して、次に、Ｓｕｂｂｙｔｅ処理が行われる。この処理では、経路選択回路９１２は、乱数に応じてデータの順序をランダム化し、Ｓｂｏｘ回路９１３に出力する。Ｓ’0 〜Ｓ’q-1 は、マスクされたＳｂｏｘ処理により得られたデータを出力し、経路選択回路９１４は、乱数に応じてそのデータの順序を入れ替えて出力する。
【０１６５】
得られたＳｕｂｂｙｔｅ処理の結果に対して、ＳｈｉｆｔＲｏｗ回路９１９がＳｈｉｆｔＲｏｗ処理を行い、さらに、ＭｉｘＣｏｌｕｍｎ回路９２０がＭｉｘＣｏｌｕｍｎ処理を行って、得られたデータをＸＯＲ演算器９２１に出力する。
【０１６６】
経路選択回路９１５は、乱数に応じてマスク値ｄ0 〜ｄq-1 の順序をランダム化し、ＳｈｉｆｔＲｏｗ回路９１６に出力する。この出力に対して、ＳｈｉｆｔＲｏｗ回路９１６がＳｈｉｆｔＲｏｗ処理を行い、さらに、ＭｉｘＣｏｌｕｍｎ回路９１７がＭｉｘＣｏｌｕｍｎ処理を行って、得られたデータをＸＯＲ演算器９２１に出力する。経路選択回路９１８は、乱数に応じてマスク値ＦＭｉｎ0 〜ＦＭｉｎq-1 の順序をランダム化し、ＸＯＲ演算器９２１に出力する。
【０１６７】
３入力のＸＯＲ演算器９２１は、ＭｉｘＣｏｌｕｍｎ回路９１７の出力、ＭｉｘＣｏｌｕｍｎ回路９２０の出力、および経路選択回路９１８の出力のＸＯＲを出力する。このＸ
ＯＲ演算が必要な理由は、Ｓｂｏｘ回路９１３におけるマスク値の制約によるものである。つまり、Ｓ’0 〜Ｓ’q-1 の入力に対するマスク値は、定数ｃ0 〜ｃq-1 の順序をランダム化した値であり、出力に対するマスク値は、定数ｄ0 〜ｄq-1 の順序をランダム化した値である、という制約である。
【０１６８】
ＭｉｘＣｏｌｕｍｎ回路９１７の出力は、Ｓ’0 〜Ｓ’q-1 の出力に対するマスクを一時的に無効化し、経路選択回路９１８の出力は、新しいマスク値を与える機能を果たす。したがって、ＸＯＲ演算器９２１の出力に対するマスク値は、ＦＭｉｎ0 〜ＦＭｉｎq-1 の順序をランダム化した値である。
【０１６９】
ＸＯＲ演算器９２１の出力は、不図示の切替回路により、ＸＯＲ演算器９１０の入力にフィードバックされ、ＸＯＲ演算器９１０の出力においては、マスク値が
2008131108.tif 000031
の順序をランダム化した値となる。（１８）式より、これはｃ0 〜ｃq-1 の順序をランダム化した値と等しいことになる。また、（１８）式は、ＸＯＲ演算器９２１からＸＯＲ演算器９１０へのフィードバック後のマスク値のみならず、ＸＯＲ演算器９０７からＸＯＲ演算器９１０に出力されたデータのマスク値（ｉ＝０）も同様に、ｃ0 〜ｃq-1 の順序をランダム化した値と等しくなることを示している。
【０１７０】
こうして、ＲｏｕｎｄＫｅｙ、Ｓｕｂｂｙｔｅ、ＳｈｉｆｔＲｏｗ、およびＭｉｘＣｏｌｕｍｎからなる一連のループ処理が、ｉ＝０〜Ｎ−２についてＮ−１回繰り返された後、最終処理としてＲｏｕｎｄＫｅｙ、Ｓｕｂｂｙｔｅ、ＳｈｉｆｔＲｏｗ、およびＲｏｕｎｄＫｅｙの順に処理が行われる。
【０１７１】
最初のＲｏｕｎｄＫｅｙ処理では、分割回路９０４は、拡大鍵ＥＫN-1 をｂビット単位で分割し、ＸＯＲ演算器９２３に出力する。経路選択回路９２２は、乱数に応じてマスク値ＦＭN-1,0 〜ＦＭN-1,q-1 の順序をランダム化し、ＸＯＲ演算器９２３に出力する。ＸＯＲ演算器９２３は、分割回路９０４の出力と経路選択回路９２２の出力のＸＯＲを出力することで、ＦＭN-1,0 〜ＦＭN-1,q-1 によるマスク処理を行う。そして、ＸＯＲ演算器９２４は、ｉ＝Ｎ−２のループにおけるＸＯＲ演算器９２１の出力と、ＸＯＲ演算器９２３の出力のＸＯＲを出力する。
【０１７２】
得られたＲｏｕｎｄＫｅｙ処理の結果に対して、次に、Ｓｕｂｂｙｔｅ処理が行われる。この処理では、経路選択回路９２５は、乱数に応じてデータの順序をランダム化し、Ｓｂｏｘ回路９２６に出力する。Ｓ’0 〜Ｓ’q-1 は、マスクされたＳｂｏｘ処理により得られたデータを出力し、経路選択回路９２７は、乱数に応じてそのデータの順序を入れ替えて出力する。
【０１７３】
得られたＳｕｂｂｙｔｅ処理の結果に対して、ＳｈｉｆｔＲｏｗ回路９２８がＳｈｉｆｔＲｏｗ処理を行い、得られたデータをＸＯＲ演算器９３１に出力する。
次のＲｏｕｎｄＫｅｙ処理では、分割回路９０５は、拡大鍵ＥＫN をｂビット単位で分割し、ＸＯＲ演算器９３０に出力する。経路選択回路９２９は、乱数に応じてマスク値ＦＭN,0 〜ＦＭN,q-1 の順序をランダム化し、ＸＯＲ演算器９３０に出力する。ＸＯＲ演算器９３０は、分割回路９０５の出力と経路選択回路９２９の出力のＸＯＲを出力することで、ＦＭN,0 〜ＦＭN,q-1 によるマスク処理を行う。そして、ＸＯＲ演算器９３１は、ＳｈｉｆｔＲｏｗ回路９２８の出力とＸＯＲ演算器９３０の出力のＸＯＲを出力する。
【０１７４】
経路選択回路９３３は、乱数に応じてマスク値ｄ0 〜ｄq-1 の順序をランダム化し、Ｓ
ｈｉｆｔＲｏｗ回路９３２に出力する。この出力に対して、ＳｈｉｆｔＲｏｗ回路９３２がＳｈｉｆｔＲｏｗ処理を行って、得られたデータをＸＯＲ演算器９３５に出力する。経路選択回路９３４は、乱数に応じてマスク値ＦＭN,0 〜ＦＭN,q-1 の順序をランダム化し、ＸＯＲ演算器９３５に出力する。
【０１７５】
３入力のＸＯＲ演算器９３５は、ＸＯＲ演算器９３１の出力、ＳｈｉｆｔＲｏｗ回路９３２の出力、および経路選択回路９３４の出力のＸＯＲを出力する。ＳｈｉｆｔＲｏｗ回路９３２の出力は、Ｓ’0 〜Ｓ’q-1 の出力に対するマスクを無効化するために用いられ、経路選択回路９３４の出力は、経路選択回路９２９によるマスクを無効化するために用いられる。ＸＯＲ演算器９３５によりこれらのマスクが無効化されることで、データに対するマスクが解除され、ＤＰＡ対策なしの場合と同じ処理結果が得られる。
【０１７６】
結合回路９０６は、ｂビット単位で得られた１２８／ｂ個の処理結果を結合して、１２８ビットの暗号文Ｅを出力する。
以上が図９のラウンド処理回路の基本的な動作であるが、経路選択回路の具体的な構成は、処理単位であるビット数ｂの値によって異なる。ｂ＝３２の場合は、上述したように、図３または図７に示した構成を用いることができる。ｂ＝６４またはｂ＝１２８の場合は、例えば、図１０に示すような構成を用いることができる。
【０１７７】
図１０は、ｂ＝３２の場合の経路選択回路をＰ個並列に並べた構成を示している。この場合、Ｐ＝ｂ／３２であり、３２ビット経路選択回路１００１−１〜１００１−Ｐは、ｂビットのデータを乱数に応じてランダムに並べ替えることができる。必要な乱数のビット長は、図３の３２ビット経路選択回路を用いた場合は４×（ｂ／３２）ビットとなり、図７の３２ビット経路選択回路を用いた場合は６×（ｂ／３２）ビットとなる。
【０１７８】
図１０の構成において消費電力がランダム化されるパターンの数は、３２ビット経路選択回路として図３の回路を用いた場合は１６(b/32)通りである。すなわち、ｂ＝６４の場合、１６2 ＝２５６通りとなり、ｂ＝１２８の場合、１６4 ＝６５５３６通りとなる。このパターン数は、２入力２出力の切替回路を追加することでさらに増加させることができ、より一層安全性を高めることができる。
【０１７９】
例えば、ｂ＝６４，１２８の場合は、図１１および１２に示すように、切替回路を１個追加することでパターン数が２倍となる。ただし、切替回路用の選択信号として、乱数を１ビット余分に入力する必要がある。
【０１８０】
ｂ＝６４の経路選択回路は、図１１に示すように、２入力２出力の切替回路１１０１と３２ビット経路選択回路１１０２−１および１１０２−２からなる。切替回路１１０１は、２つの３２ビット入力部Ｉ0 およびＩ1 と、２つの３２ビット出力部Ｏ0 およびＯ1 を有し、１ビットの乱数が０の場合、Ｏ0 ＝Ｉ0 ，Ｏ1 ＝Ｉ1 のスイッチングを行い、その乱数が１の場合、Ｏ0 ＝Ｉ1 ，Ｏ1 ＝Ｉ0 のスイッチングを行う。Ｏ0 およびＯ1 からの出力データは、それぞれ経路選択回路１１０２−１および１１０２−２に出力される。これにより、パターン数は、２５６×２＝５１２通りとなる。
【０１８１】
ｂ＝１２８の経路選択回路は、図１２に示すように、２入力２出力の切替回路１２０１と３２ビット経路選択回路１１０２−１〜１１０２−４からなる。切替回路１２０１は、２つの６４ビット入力部Ｉ0 およびＩ1 と、２つの６４ビット出力部Ｏ0 およびＯ1 を有し、１ビットの乱数が０の場合、Ｏ0 ＝Ｉ0 ，Ｏ1 ＝Ｉ1 のスイッチングを行い、その乱数が１の場合、Ｏ0 ＝Ｉ1 ，Ｏ1 ＝Ｉ0 のスイッチングを行う。
【０１８２】
Ｏ0 からの出力データは、経路選択回路１２０２−１および１２０２−２に出力され、
Ｏ1 からの出力データは、経路選択回路１２０２−３および１２０２−４に出力される。これにより、パターン数は、６５５３６×２＝１３１０７２通りとなる。
【０１８３】
さらに、ｂ＝１２８の場合は、図１３に示すように、切替回路を４個追加することでパターン数が１６倍となる。ただし、切替回路用の選択信号として、乱数を４ビット余分に入力する必要がある。
【０１８４】
図１３の経路選択回路は、２入力２出力の切替回路１３０１−１〜１３０１−４と、３２ビット経路選択回路１３０２−１〜１３０２−４からなる。切替回路１３０１−１〜１３０１−４の動作は、図１１の切替回路１１０１と同様である。１段目に並列に並んだ切替回路１３０１−１および１３０１−２は、１２８ビットの入力データを受け取り、２段目に並列に並んだ切替回路１３０１−３および１３０１−４は、１２８ビットのデータを経路選択回路１３０２−１〜１３０２−４に出力する。
【０１８５】
入力データは最上位から切替回路１３０１−１のＩ0 、Ｉ1 および切替回路１３０１−２のＩ0 、Ｉ1 の順に並んでいる。切替回路１３０１−１のＯ0 およびＯ1 は、それぞれ切替回路１３０１−３のＩ0 および切替回路１３０１−４のＩ0 に接続され、切替回路１３０１−２のＯ0 およびＯ1 は、それぞれ切替回路１３０１−３のＩ1 および切替回路１３０１−４のＩ1 に接続されている。出力データは、最上位から切替回路１３０１−３のＯ0 、Ｏ1 および切替回路１３０１−４のＯ0 、Ｏ1 の順に出力される。
【０１８６】
切替回路１３０１−３のＯ0 およびＯ1 からの出力データは、それぞれ経路選択回路１３０２−１および１３０２−２に出力され、切替回路１３０１−４のＯ0 およびＯ1 からの出力データは、それぞれ経路選択回路１３０２−３および１３０２−４に出力される。これにより、パターン数は、６５５３６×１６＝１０４８５７６通りとなる。
【０１８７】
以上がＡＥＳのラウンド処理回路に関する説明であるが、本発明の技術はＡＥＳに限定されずに、その他の共通鍵ブロック暗号アルゴリズムに応用可能である。対象となる共通鍵ブロック暗号アルゴリズムは、ＤＰＡ対策なしの場合に、図２４または図２９に示したような構成を有し、かつ、すべての非線形変換テーブルｗ0 〜ｗu-1 が同一の非線形変換を行うようなアルゴリズムである。
【０１８８】
この条件に該当するアルゴリズムとしては、ＡＥＳの他に、ＳＣ２０００が挙げられる。なぜなら、ＳＣ２０００の暗号処理の最初の部分において、Ｉ関数とＢ関数が連続する構成が、図２９の構成においてすべての非線形変換テーブルｗ0 〜ｗu-1 が同一である場合と等価な構成であるからである。
【０１８９】
図１４は、前述した従来例１〜３と、図３、７、および１０〜１３に示した本発明の構成の効果を比較した結果を示している。図３、７、および１０〜１３に示した経路選択回路を用いることで、従来例１〜３が解決することができなかった問題１〜４のすべてを解決することができる。
【０１９０】
（付記１）共通鍵暗号の暗号処理を行う暗号化装置であって、
乱数を発生する乱数発生手段と、
前記乱数の値に応じて、拡大鍵をマスクするための複数の拡大鍵マスク値からなるデータ列をランダムに並べ替えて出力する第１の経路選択手段と、
前記第１の経路選択手段から出力される複数の拡大鍵マスク値と、前記拡大鍵を表すデータ列と、入力データ列との排他的論理和を生成する拡大鍵演算手段と、
前記乱数の値に応じて前記第１の経路選択手段とは逆の並べ替えを行うことで、前記排他的論理和のデータ列を並べ替えて出力する第２の経路選択手段と、
前記第２の経路選択手段から出力されるデータ列の非線形変換を行って、複数の非線形変換マスク値によりマスクされたデータ列を出力する非線形変換手段と、
前記乱数の値に応じて前記第１の経路選択手段と同じ並べ替えを行うことで、前記非線形変換手段から出力されるデータ列を並べ替えて出力する第３の経路選択手段と
を備えることを特徴とする暗号化装置。
（付記２）前記非線形変換手段から出力されるデータ列は、前記第２の経路選択手段から出力されるデータ列と前記複数の拡大鍵マスク値の排他的論理和をマスクなし非線形変換テーブルにより変換した結果と、前記複数の非線形変換マスク値との排他的論理和を表すことを特徴とする付記１記載の暗号化装置。
（付記３）前記複数の拡大鍵マスク値はそれぞれ異なる値であり、前記複数の非線形変換マスク値はそれぞれ異なる値であることを特徴とする付記２記載の暗号化装置。
（付記４）前記第１の経路選択手段、第２の経路選択手段、および第３の経路選択手段の各々は複数の切替手段を含み、各切替手段は、第１および第２の入力部と第１および第２の出力部を有し、前記乱数の値に応じて、該第１の入力部に入力されたデータを該第１の出力部から出力し、該第２の入力部に入力されたデータを該第２の出力部から出力する第１の切替動作と、該第１の入力部に入力されたデータを該第２の出力部から出力し、該第２の入力部に入力されたデータを該第１の出力部から出力する第２の切替動作の一方を行うことを特徴とする付記１、２、または３記載の暗号化装置。
（付記５）前記乱数は４個の値からなり、前記複数の切替手段は、該乱数の４個の値のそれぞれに応じて動作する第１、第２、第３、および第４の切替手段からなり、該第１の切替手段の第１および第２の出力部は、該第３の切替手段の第１の入力部および該第４の切替手段の第１の入力部にそれぞれ接続され、該第２の切替手段の第１および第２の出力部は、該第３の切替手段の第２の入力部および該第４の切替手段の第２の入力部にそれぞれ接続され、該第１の切替手段の第１および第２の入力部と該第２の切替手段の第１および第２の入力部に４個のデータがそれぞれ入力され、該第３の切替手段の第１および第２の出力部と該第４の切替手段の第１および第２の出力部から４個のデータがそれぞれ出力されることを特徴とする付記４記載の暗号化装置。
（付記６）前記乱数は６個の値からなり、
前記第１および第３の経路選択手段に含まれる複数の切替手段は、前記乱数の６個の値のそれぞれに応じて動作する第１、第２、第３、第４、第５、および第６の切替手段からなり、該第１の切替手段の第１および第２の出力部は、該第３の切替手段の第１の入力部および該第４の切替手段の第１の入力部にそれぞれ接続され、該第２の切替手段の第１および第２の出力部は、該第３の切替手段の第２の入力部および該第４の切替手段の第２の入力部にそれぞれ接続され、該第３の切替手段の第１および第２の出力部は、該第６の切替手段の第２の入力部および該第５の切替手段の第１の入力部にそれぞれ接続され、該第４の切替手段の第１および第２の出力部は、該第５の切替手段の第２の入力部および該第６の切替手段の第１の入力部にそれぞれ接続され、該第１の切替手段の第１および第２の入力部と該第２の切替手段の第１および第２の入力部に４個のデータがそれぞれ入力され、該第５の切替手段の第１および第２の出力部と該第６の切替手段の第１および第２の出力部から４個のデータがそれぞれ出力され、
前記第２の経路選択手段に含まれる複数の切替手段は、前記乱数の６個の値のそれぞれに応じて動作する第７、第８、第９、第１０、第１１、および第１２の切替手段からなり、該第７の切替手段の第１および第２の出力部は、該第９の切替手段の第２の入力部および該第１０の切替手段の第１の入力部にそれぞれ接続され、該第８の切替手段の第１および第２の出力部は、該第１０の切替手段の第２の入力部および該第９の切替手段の第１の入力部にそれぞれ接続され、該第９の切替手段の第１および第２の出力部は、該第１１の切替手段の第１の入力部および該第１２の切替手段の第１の入力部にそれぞれ接続され、該第１０の切替手段の第１および第２の出力部は、該第１１の切替手段の第２の入力部および該第１２の切替手段の第２の入力部にそれぞれ接続され、該第７の切替手段の第１および第２の入力部と該第８の切替手段の第１および第２の入力部に４個のデータがそれぞ
れ入力され、該第１１の切替手段の第１および第２の出力部と該第１２の切替手段の第１および第２の出力部から４個のデータがそれぞれ出力されることを特徴とする付記４記載の暗号化装置。
（付記７）前記乱数の値に応じて前記第１の経路選択手段と同じ並べ替えを行うことで、平文をマスクするための複数の平文マスク値からなるデータ列を並べ替えて出力する第４の経路選択手段と、
前記第４の経路選択手段から出力される複数の平文マスク値と、前記平文を表すデータ列との排他的論理和を生成し、前記入力データ列として前記拡大鍵演算手段に出力する平文演算手段と、
前記第３の経路選択手段から出力されるデータ列に対して、シフトロウ処理およびミクスコラム処理を行う第１の処理手段と、
前記第１の処理手段の処理結果と、該第１の処理手段の処理結果に対するマスクを解除するためのデータ列と、複数の新たなマスク値との排他的論理和を生成するマスク演算手段とをさらに備え、
前記非線形変換手段から出力されるデータ列は、前記第２の経路選択手段から出力されるデータ列と前記複数の拡大鍵マスク値と前記複数の平文マスク値の排他的論理和をマスクなし非線形変換テーブルにより変換した結果と、前記複数の非線形変換マスク値との排他的論理和を表し、前記マスク演算手段から出力される排他的論理和のデータ列が前記入力データ列として前記拡大鍵演算手段にフィードバックされ、０番目からＮ−２番目までのＮ−１個の拡大鍵のそれぞれについて、前記第１の経路選択手段、拡大鍵演算手段、第２の経路選択手段、非線形変換手段、第３の経路選択手段、第１の処理手段、およびマスク演算手段によるループ処理が繰り返されることを特徴とする付記１記載の暗号化装置。（付記８）前記複数の拡大鍵マスク値はそれぞれ異なる値であり、前記複数の平文マスク値はそれぞれ異なる値であり、前記複数の非線形変換マスク値はそれぞれ異なる値であることを特徴とする付記７記載の暗号化装置。
（付記９）前記乱数の値に応じて前記第１の経路選択手段と同じ並べ替えを行うことで、前記複数の平文マスク値からなるデータ列を並べ替え、得られたデータ列を前記複数の新たなマスク値として、前記マスク演算手段に出力する第５の経路選択手段をさらに備えることを特徴とする付記７または８記載の暗号化装置。
（付記１０）前記乱数の値に応じて前記第１の経路選択手段と同じ並べ替えを行うことで、前記複数の非線形変換マスク値からなるデータ列を並べ替えて出力する第６の経路選択手段と、
前記第６の経路選択手段から出力されるデータ列に対して、シフトロウ処理およびミクスコラム処理を行い、得られた処理結果を前記マスクを解除するためのデータ列として、前記マスク演算手段に出力する第２の処理手段とをさらに備えることを特徴とする付記７、８、または９記載の暗号化装置。
（付記１１）前記乱数の値に応じて前記第１の経路選択手段と同じ並べ替えを行うことで、Ｎ−１番目の拡大鍵をマスクするための複数の拡大鍵マスク値からなるデータ列を並べ替えて出力する第７の経路選択手段と、
前記第７の経路選択手段から出力される複数の拡大鍵マスク値と、前記Ｎ−１番目の拡大鍵を表すデータ列と、前記Ｎ−２番目の拡大鍵を用いたループ処理において前記マスク演算手段から出力される排他的論理和のデータ列との排他的論理和を生成する第１の演算手段と、
前記乱数の値に応じて前記第１の経路選択手段とは逆の並べ替えを行うことで、前記第１の演算手段から出力される排他的論理和のデータ列を並べ替えて出力する第８の経路選択手段と、
前記第８の経路選択手段から出力されるデータ列の非線形変換を行って、前記複数の非線形変換マスク値によりマスクされたデータ列を出力する後段の非線形変換手段と、
前記乱数の値に応じて前記第１の経路選択手段と同じ並べ替えを行うことで、前記後段の非線形変換手段から出力されるデータ列を並べ替えて出力する第９の経路選択手段と、
前記第９の経路選択手段から出力されるデータ列に対してシフトロウ処理を行う第３の処理手段と、
前記乱数の値に応じて前記第１の経路選択手段と同じ並べ替えを行うことで、Ｎ番目の拡大鍵をマスクするための複数の拡大鍵マスク値からなるデータ列を並べ替えて出力する第１０の経路選択手段と、
前記第１０の経路選択手段から出力される複数の拡大鍵マスク値と、前記Ｎ番目の拡大鍵を表すデータ列と、前記第３の処理手段の処理結果との排他的論理和を生成する第２の演算手段と、
前記第２の演算手段から出力される排他的論理和のデータ列と、前記第３の処理手段の処理結果に対するマスクを解除するためのデータ列と、前記Ｎ番目の拡大鍵に対するマスクを解除するためのデータ列との排他的論理和を生成し、暗号文として出力する第３の演算手段とをさらに備え、
前記後段の非線形変換手段から出力されるデータ列は、前記第８の経路選択手段から出力されるデータ列と、前記Ｎ−１番目の拡大鍵をマスクするための複数の拡大鍵マスク値と、前記複数の平文マスク値の排他的論理和を前記マスクなし非線形変換テーブルにより変換した結果と、前記複数の非線形変換マスク値との排他的論理和を表すことを特徴とする付記７、８、９、または１０記載の暗号化装置。
（付記１２）前記乱数の値に応じて前記第１の経路選択手段と同じ並べ替えを行うことで、前記Ｎ番目の拡大鍵をマスクするための複数の拡大鍵マスク値からなるデータ列を並べ替え、得られたデータ列を前記Ｎ番目の拡大鍵に対するマスクを解除するためのデータ列として、前記第３の演算手段に出力する第１１の経路選択手段をさらに備えることを特徴とする付記１１記載の暗号化装置。
（付記１３）前記乱数の値に応じて前記第１の経路選択手段と同じ並べ替えを行うことで、前記複数の非線形変換マスク値からなるデータ列を並べ替えて出力する第１２の経路選択手段と、
前記第１２の経路選択手段から出力されるデータ列に対してシフトロウ処理を行い、得られた処理結果を前記第３の処理手段の処理結果に対するマスクを解除するためのデータ列として、前記第３の演算手段に出力する第４の処理手段とをさらに備えることを特徴とする付記１１または１２記載の暗号化装置。
（付記１４）前記第１の経路選択手段、第２の経路選択手段、第３の経路選択手段、第４の経路選択手段、第７の経路選択手段、第８の経路選択手段、第９の経路選択手段、および第１０の経路選択手段の各々は１つ以上の単位データ列経路選択手段を含み、該単位データ列経路選択手段は複数の切替手段を含み、各切替手段は、第１および第２の入力部と第１および第２の出力部を有し、前記乱数の値に応じて、該第１の入力部に入力されたデータを該第１の出力部から出力し、該第２の入力部に入力されたデータを該第２の出力部から出力する第１の切替動作と、該第１の入力部に入力されたデータを該第２の出力部から出力し、該第２の入力部に入力されたデータを該第１の出力部から出力する第２の切替動作の一方を行うことを特徴とする付記１１記載の暗号化装置。
（付記１５）前記１つ以上の単位データ列経路選択手段のそれぞれに対して、前記乱数を構成する複数の値のうち異なる４個の値が入力され、前記複数の切替手段は、該乱数の４個の値のそれぞれに応じて動作する第１、第２、第３、および第４の切替手段からなり、該第１の切替手段の第１および第２の出力部は、該第３の切替手段の第１の入力部および該第４の切替手段の第１の入力部にそれぞれ接続され、該第２の切替手段の第１および第２の出力部は、該第３の切替手段の第２の入力部および該第４の切替手段の第２の入力部にそれぞれ接続され、該第１の切替手段の第１および第２の入力部と該第２の切替手段の第１および第２の入力部に４個のデータがそれぞれ入力され、該第３の切替手段の第１および第２の出力部と該第４の切替手段の第１および第２の出力部から４個のデータがそれぞれ出力されることを特徴とする付記１４記載の暗号化装置。
（付記１６）前記１つ以上の単位データ列経路選択手段のそれぞれに対して、前記乱数を構成する複数の値のうち異なる６個の値が入力され、
前記第１、第３、第４、第７、第９、および第１０の経路選択手段に含まれる複数の切替手段は、前記乱数の６個の値のそれぞれに応じて動作する第１、第２、第３、第４、第５、および第６の切替手段からなり、該第１の切替手段の第１および第２の出力部は、該第３の切替手段の第１の入力部および該第４の切替手段の第１の入力部にそれぞれ接続され、該第２の切替手段の第１および第２の出力部は、該第３の切替手段の第２の入力部および該第４の切替手段の第２の入力部にそれぞれ接続され、該第３の切替手段の第１および第２の出力部は、該第６の切替手段の第２の入力部および該第５の切替手段の第１の入力部にそれぞれ接続され、該第４の切替手段の第１および第２の出力部は、該第５の切替手段の第２の入力部および該第６の切替手段の第１の入力部にそれぞれ接続され、該第１の切替手段の第１および第２の入力部と該第２の切替手段の第１および第２の入力部に４個のデータがそれぞれ入力され、該第５の切替手段の第１および第２の出力部と該第６の切替手段の第１および第２の出力部から４個のデータがそれぞれ出力され、
前記第２および第８の経路選択手段に含まれる複数の切替手段は、前記乱数の６個の値のそれぞれに応じて動作する第７、第８、第９、第１０、第１１、および第１２の切替手段からなり、該第７の切替手段の第１および第２の出力部は、該第９の切替手段の第２の入力部および該第１０の切替手段の第１の入力部にそれぞれ接続され、該第８の切替手段の第１および第２の出力部は、該第１０の切替手段の第２の入力部および該第９の切替手段の第１の入力部にそれぞれ接続され、該第９の切替手段の第１および第２の出力部は、該第１１の切替手段の第１の入力部および該第１２の切替手段の第１の入力部にそれぞれ接続され、該第１０の切替手段の第１および第２の出力部は、該第１１の切替手段の第２の入力部および該第１２の切替手段の第２の入力部にそれぞれ接続され、該第７の切替手段の第１および第２の入力部と該第８の切替手段の第１および第２の入力部に４個のデータがそれぞれ入力され、該第１１の切替手段の第１および第２の出力部と該第１２の切替手段の第１および第２の出力部から４個のデータがそれぞれ出力されることを特徴とする付記１４記載の暗号化装置。
（付記１７）前記第１の経路選択手段、第２の経路選択手段、第３の経路選択手段、第４の経路選択手段、第７の経路選択手段、第８の経路選択手段、第９の経路選択手段、および第１０の経路選択手段の各々は、複数の単位データ列経路選択手段と、該複数の単位データ列経路選択手段に入力されるデータ列を、１つ以上の単位データ列からなる２つの部分に分割し、前記乱数を構成する複数の値のうちの１つに応じて該２つの部分の順序を入れ替えて、該複数の単位データ列経路選択手段に出力する切替手段とからなることを特徴とする付記１４、１５、または１６記載の暗号化装置。
（付記１８）前記第１の経路選択手段、第２の経路選択手段、第３の経路選択手段、第４の経路選択手段、第７の経路選択手段、第８の経路選択手段、第９の経路選択手段、および第１０の経路選択手段の各々は、４つの単位データ列経路選択手段と、該４つの単位データ列経路選択手段に入力されるデータ列を４つの単位データ列に分割し、前記乱数を構成する複数の値のうちの一部に応じて該４つの単位データ列の順序を入れ替えて、該４つの単位データ列経路選択手段に出力する切替手段とからなることを特徴とする付記１４、１５、または１６記載の暗号化装置。
（付記１９）共通鍵暗号の暗号処理を行う暗号化方法であって、
乱数を発生し、
前記乱数の値に応じて、拡大鍵をマスクするための複数の拡大鍵マスク値からなるデータ列をランダムに並べ替え、
並べ替えられた複数の拡大鍵マスク値と、前記拡大鍵を表すデータ列と、入力データ列との排他的論理和を生成し、
前記乱数の値に応じて前記複数の拡大鍵マスク値とは逆の並べ替えを行うことで、前記排他的論理和のデータ列を並べ替え、
並べ替えられたデータ列の非線形変換を行って、複数の非線形変換マスク値によりマスクされたデータ列を生成し、
前記乱数の値に応じて前記複数の拡大鍵マスク値と同じ並べ替えを行うことで、前記マ
スクされたデータ列を並べ替える
ことを特徴とする暗号化方法。
【図面の簡単な説明】
【０１９１】
【図１】本発明の暗号化装置の原理図である。
【図２】本発明の暗号化回路の構成図である。
【図３】経路選択回路の第一の構成を表す図である。
【図４】切り替え回路を表す図である。
【図５】セレクタの構成図である。
【図６】切替回路の構成図である。
【図７】経路選択回路の第２の構成を示す図である。
【図８】経路選択回路の第２の構成の出力データ順序を示す図である。
【図９】本発明のＡＥＳラウンド処理回路の構成図である。
【図１０】経路選択回路の第３の構成を示す図である。
【図１１】経路選択回路の第４の構成を示す図である。
【図１２】経路選択回路の第５の構成を示す図である。
【図１３】経路選択回路の第６の構成を示す図である。
【図１４】本発明の効果を示す図である。
【図１５】共通鍵暗号処理の一般的な構成を示す図である。
【図１６】ＡＥＳの構成を示す図である。
【図１７】ＡＥＳにおけるＲｏｕｎｄＫｅｙ処理を示す図である。
【図１８】ＡＥＳにおけるＳｕｂｂｙｔｅ処理を示す図である。
【図１９】ＡＥＳにおけるＳｈｉｆｔＲｏｗ処理を示す図である。
【図２０】ＡＥＳにおけるＭｉｘＣｏｌｕｍｎ処理を示す図である。
【図２１】拡大鍵ＸＯＲ処理を示す図である。
【図２２】線形変換処理を示す図である。
【図２３】非線形変換処理を示す図である。
【図２４】拡大鍵ＸＯＲ処理と非線形変換処理を組み合わせた処理を示す図である。
【図２５】ｗj に関する処理を示す図である。
【図２６】電力消費曲線を示す図である。
【図２７】第１の電力差分曲線を示す図である。
【図２８】第２の電力差分曲線を示す図である。
【図２９】拡大鍵ＸＯＲ処理と線形変換処理と非線形変換処理を組み合わせた処理を示す図である。
【図３０】電力測定の測定箇所を示す図である。
【図３１】第１の電力測定法を示す図である。
【図３２】第２の電力測定法を示す図である。
【図３３】マスク値をランダムに選択する構成を示す図である。
【図３４】拡大鍵生成におけるＳｕｂｂｙｔｅ処理を示す図である。
【図３５】Ｓｕｂｂｙｔｅ処理の消費電力をランダム化する方法を示す図である。
【図３６】従来の経路選択回路を示す図である。
【図３７】第１の仮想的な暗号化回路の構成図である。
【図３８】第２の仮想的な暗号化回路の構成図である。
【符号の説明】
【０１９２】
１０１  乱数発生手段
１０２−１  第１の経路選択手段
１０２−２  第２の経路選択手段
１０２−３  第３の経路選択手段
１０３  拡大鍵演算手段
１０４  非線形変換手段
２０１、２０２、９０７、９０９、９１０、９２１、９２３、９２４、９３０、９３１、９３５、３３０２−０、３３０２−１５、３３０３−０、３３０３−１５、３７０１−０、３７０１−１、３７０１−２、３７０１−３、３７０２−０、３７０２−１、３７０２−２、３７０２−３  ＸＯＲ演算器
２０３、２０４、２０５、３０１、３０２、７０１、７０２、９０８、９１１、９１２、９１４、９１５、９１８、９２２、９２５、９２７、９２９、９３３、９３４、１００１−１、１００１−２、１００１−Ｐ、１１０２−１、１１０２−２、１２０２−１、１２０２−２、１２０２−３、１２０２−４、１３０２−１、１３０２−２、１３０２−３、１３０２−４、３５０１、３５０２、３６０２、３６０３、３７０５、３７０６  経路選択回路
３１１、３１２、３１３、３１４、３２１、３２２、３２３、３２４、７１１、７１２、７１３、７１４、７１５、７１６、７２１、７２２、７２３、７２４、７２５、７２６、１１０１、１２０１、１３０１−１、１３０１−２、１３０１−３、１３０１−４  切替回路
９０１  乱数発生器
９０２、９０３、９０４、９０５  分割回路
９０６  結合回路
９１３、９２６、３３０５−０、３３０５−１５  Ｓｂｏｘ回路
９１６、９１９、９２８、９３２  ＳｈｉｆｔＲｏｗ回路
９１７、９２０  ＭｉｘＣｏｌｕｍｎ回路
１５０１、１６０１  拡大鍵生成
１５０２、１６０２  ラウンド処理
１６１１  ＲｏｕｎｄＫｅｙ
１６１２  Ｓｕｂｂｙｔｅ
１６１３  ＳｈｉｆｔＲｏｗ
１６１４  ＭｉｘＣｏｌｕｍｎ
１８０１−１、１８０１−２、１８０１−１６、Ｓ、Ｓ0 、Ｓ1 、Ｓ2 、Ｓ3 、Ｓ’0 、Ｓ’1 、Ｓ’2 、Ｓ’3 、Ｓ’q-1 、ｗ0 、ｗ1 、ｗu-1 、ｗj   Ｓｂｏｘ
２００１−１、２００１−４
３１０１  スマートカード
３１０２  抵抗
３１０３  オシロスコープ
３２０１  電磁波プローブ
３３０１−０、３３０１−１５、３３０６−０、３３０６−１５、３６２１−１、３６２１−２、３６２１−３、３６２１−４、３６２２−１、３６２２−２、３６２２−３、３６２２−４、３７０３−０、３７０３−１、３７０３−２、３７０３−３  セレクタ
３３０４−０、３３０４−１５  デマルチプレクサ
３６０１、３７０４  選択信号生成回路
３６１１、３７１２  乱数デコーダ
３６１２、３７１１  インバータ回路
【図１】
2008131108.tif 000032
【図２】
2008131108.tif 000033
【図３】
2008131108.tif 000034
【図４】
2008131108.tif 000035
【図５】
2008131108.tif 000036
【図６】
2008131108.tif 000037
【図７】
2008131108.tif 000038
【図８】
2008131108.tif 000039
【図９】
2008131108.tif 000040
【図１０】
2008131108.tif 000041
【図１１】
2008131108.tif 000042
【図１２】
2008131108.tif 000043
【図１３】
2008131108.tif 000044
【図１４】
2008131108.tif 000045
【図１５】
2008131108.tif 000046
【図１６】
2008131108.tif 000047
【図１７】
2008131108.tif 000048
【図１８】
2008131108.tif 000049
【図１９】
2008131108.tif 000050
【図２０】
2008131108.tif 000051
【図２１】
2008131108.tif 000052
【図２２】
2008131108.tif 000053
【図２３】
2008131108.tif 000054
【図２４】
2008131108.tif 000055
【図２５】
2008131108.tif 000056
【図２６】
2008131108.tif 000057
【図２７】
2008131108.tif 000058
【図２８】
2008131108.tif 000059
【図２９】
2008131108.tif 000060
【図３０】
2008131108.tif 000061
【図３１】
2008131108.tif 000062
【図３２】
2008131108.tif 000063
【図３３】
2008131108.tif 000064
【図３４】
2008131108.tif 000065
【図３５】
2008131108.tif 000066
【図３６】
2008131108.tif 000067
【図３７】
2008131108.tif 000068
【図３８】
2008131108.tif 000069