JP2014119512A - 暗号化処理回路及び復号処理回路とその方法並びにそのプログラム - Google Patents

暗号化処理回路及び復号処理回路とその方法並びにそのプログラム Download PDF

Info

Publication number
JP2014119512A
JP2014119512A JP2012272789A JP2012272789A JP2014119512A JP 2014119512 A JP2014119512 A JP 2014119512A JP 2012272789 A JP2012272789 A JP 2012272789A JP 2012272789 A JP2012272789 A JP 2012272789A JP 2014119512 A JP2014119512 A JP 2014119512A
Authority
JP
Japan
Prior art keywords
unit
permutation
exclusive
output
slice
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.)
Granted
Application number
JP2012272789A
Other languages
English (en)
Other versions
JP6089668B2 (ja
Inventor
Tetsutaka Yamashita
哲孝 山下
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2012272789A priority Critical patent/JP6089668B2/ja
Publication of JP2014119512A publication Critical patent/JP2014119512A/ja
Application granted granted Critical
Publication of JP6089668B2 publication Critical patent/JP6089668B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】暗号処理における冗長部を削減可能とし、マスク値の記憶領域を削減可能とする。
【解決手段】第1の排他的論理和演算部は平文とマスク値との排他的論理和をとり、非線形変換部は複数の非線形変換用のテーブルへの入力に対してマスクをかけ前記テーブルに従った非線形変換を行い前記非線形変換した値に対して出力側のマスクをかけた値を出力し、線形変換部は非線形変換部から出力された複数の値に対して線形変換を施し、第1のパーミュテーション部は線形変換部の出力の並び替えを行い、第2の排他的論理和演算部は、ラウンド処理終了後の前記第1のパーミュテーション部の出力とアンマスク値との排他的論理和をとり、第2のパーミュテーション部は第2の排他的論理和演算部の出力を並び替えた結果を暗号文として出力する。
【選択図】図2

Description

本発明は、暗号化処理回路及び復号処理回路とその方法並びにそのプログラムに関し、特に、耐タンパー性を考慮した暗号化処理回路及び復号処理回路、その方法並びにそのプログラムに関する。
情報の電子データ化が進む中で、情報の保護、秘匿な通信において、暗号はかかせない技術となっている。暗号はその安全性を保つために、鍵等の秘密情報が容易に推測できないようにする必要がある。鍵の全数探索や数学的に解読を行う線形解読や差分解読等といった暗号解析方法が知られている。しかし、この種の暗号解析方法により、現実的な時間で解析を行うことは不可能な状況といえる。
その一方で、携帯端末などの暗号機能を実装した装置(暗号モジュール)において、攻撃者が処理時間や消費電力、漏洩電磁波などのサイドチャネル情報を精密に測定できるとの仮定の下で、サイドチャネル情報から秘匿情報の取得を試みるサイドチャネル攻撃とその対策が大きな研究テーマとなっている。
サイドチャネル攻撃として、暗号モジュールの消費電力を測定し、消費電力から鍵等の秘密情報を解析する電力解析攻撃がある。その中でも、複数の消費電力波形に統計処理を行うことで解析を行う、差分電力解析が特に強力な攻撃法とされている(非特許文献1)。
暗号モジュールにおいて、論理ゲートの遷移確率に偏りが生じる場合に、データ列の中で1となるビットの数(ハミング重み)と消費電力との間には相関があるとされている(非特許文献2)。また、予め規定された暗号化処理を所定回数実行して暗号文を生成する場合、暗号化処理前後でのレジスタのビット遷移(ハミング距離)と消費電力とに相関があるとされている(非特許文献3)。そのため、ハミング重みやハミング距離に着目することで、秘密鍵が解析できてしまう、という問題がある。
ハミング重みやハミング距離に着目した攻撃への対策手法の例として、マスキング手法が提案されている(非特許文献4)。マスキング手法では、入力値と鍵を用いて演算する際に、マスク値という乱数を入力値と鍵とともに演算する。さらに、マスク値によってマスキングされた中間値を用いてラウンド処理を行う。ラウンド処理中の非線形変換は、例えば変換テーブルを用いて行われる。非線形変換に用いるテーブルは、マスク値が変わるたびに生成される。非線形変換に用いるテーブルは、中間値にマスクがかかった値を入力とし、元の中間値を非線形変換した値にマスクをかけ直した値が出力される。中間値にマスクがかかっているため、消費電力と中間値の相関が低下する。そのため、ハミング重みなどから、秘密鍵の解析ができなくなり、安全性が高くなる。
特許文献1には、乱数によるマスキング手法の問題を解決する方法として、固定値マスク法が開示されている。固定値マスク法では、予め2つ以上の固定値をマスクとして用意する。次に、各マスクと組となるマスク付テーブルを用意する。このマスク付テーブルは、中間値に組となるマスク値がかかった値を入力とし、元の中間値を非線形変換した値に組となるマスク値をかけ直した値を出力とする。そして、暗号処理開始時に、乱数にしたがってマスクとテーブルの組を選択し、選択したマスクとテーブルを用いて暗号処理を実施する。暗号処理のたびに乱数をふり直すことで、マスク値が切り替わる。固定値としてマスク値とテーブルを用意することで、非特許文献4の手法で問題となった、処理速度の低下と、RAM(Random Access Memory)領域の増大という問題を解決することができる。
非特許文献5には、AES(Advanced Encryption Standard)における対策手法としてRotating Sboxes Masking(RSM)法が提案されている。RSM法では、固定値マスク法と同様に、複数のマスク値とマスク付のテーブル(SBOX)を用意する。暗号処理時には、これら複数のマスク値及びテーブルを並列に使用することになる。RSMでは、入力データ列をテーブルでの処理前にシフトすることで、使用するマスク値とテーブルをローテートする。テーブルでの処理後に、マスク付の出力データ列が出力される。この出力結果のデータ列を逆シフトすることで、元のデータ位置にマスク付データ列を戻す。使用するテーブルをローテートすることで、データの各バイトにかかるマスク値を入れ替えることができる。また、未使用となるマスク値とテーブルを出さないことから、冗長部分の削減を可能としている。
なお、本件に関連して出願人側で行った先行技術文献サーチの結果サーチされた特許文献2には、共通鍵暗号処理において、秘密鍵の解読防止のために必要な処理時間及び回路規模を削減するための構成として、第1の経路選択手段は、乱数発生手段が発生した乱数の値に応じて、複数の拡大鍵マスク値をランダムに並べ替え、拡大鍵演算手段は、並べ替えられた複数の拡大鍵マスク値と、拡大鍵を表すデータ列と、入力データ列との排他的論理和を生成し、第2の経路選択手段は、乱数の値に応じて第1の経路選択手段とは逆の並べ替えを行うことで、排他的論理和のデータ列を並べ替え、非線形変換手段104は、並べ替えられたデータ列の非線形変換を行って、複数の非線形変換マスク値によりマスクされたデータ列を出力し、第3の経路選択手段は、乱数の値に応じて第1の経路選択手段と同じ並べ替えを行うことで、マスクされたデータ列を並べ替える暗号化装置が開示されている。また、特許文献3には、DES(Data Encryption Standard)など複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置において、F関数部に対してラウンド遷移時に乱数を入力し、その後、レジスタに格納された中間データを出力して演算処理を実行する構成とし、ラウンド遷移時には乱数に基づくSボックス出力が発生し、また、レジスタ接続パスにおける電流又は電位変動が発生し、これらは各ラウンドにおいて適用される秘密情報としてのセッション鍵(ラウンド鍵)の構成ビット情報と無関係な電流又は電位変動となり、DPA(Differential Power Analysis)攻撃による秘密情報の解析が不可能な高いセキュリティレベルの暗号処理装置が開示されている。
特開2002−366029号公報(特許第4596686号公報) 特開2008−131108号公報 特開2006−019872号公報
以下に関連技術の分析を与える。
非特許文献4に開示された乱数によるマスキング手法では、マスク値(乱数)が変わるたびに、非線形変換に用いるテーブルを再計算する必要がある。このため、処理速度の低下、及び、必要な記憶容量(RAM(Random Access Memory)領域)の増大、という問題がある。
特許文献1の手法では、複数のマスク値とテーブルをマスク値の数だけ用意しておく必要があるため、マスク値とテーブルを保存するためのROM(Read Only Memory)領域が必要となる。また、複数のマスク値とテーブルの組の中からいずれか1つを選択する構成のため、選択されなかったマスク値とテーブルは、暗号処理時には冗長部分となる。
非特許文献5に開示されたRSM法では、マスクを保存するために、多くのROM領域を必要とする、という問題がある。RSM法では、テーブル処理後に、線形処理(ShiftRows, MixColumns, AddRoundKey)を行う。そして、それらの処理の後に、線形処理で変化したマスクを解除(アンマスク)する。さらに次のラウンド処理で使用するマスク値を改めてかけ直す作業(リマスク)が必要となる。当該アンマスク及びリマスクのためのマスク値を、ROMに記憶しておく必要がある。マスク値は、シフト幅の種類分用意する必要がある。また、暗号処理の開始時に平文にかけるマスク値と、終了時に暗号文を得るために、出力結果からマスクを解除するためのアンマスク値が必要となる。これらマスク値及びアンマスク値もシフト幅の種類分用意する必要があり、これらを記憶しておくためのROM領域が大きくなる。
したがって、本発明は、上記問題点に鑑みて創案されたものであって、その目的は、暗号処理における冗長部を削減可能とし、マスク値の記憶領域を削減可能とする暗号化処理回路及び復号処理回路と、その方法並びにそのプログラムを提供することを目的とする。
本発明によれば、平文とマスク値との排他的論理和をとる第1の排他的論理和演算部と、
入力値を複数に分割した値をそれぞれ非線形変換する複数のテーブルを含む非線形変換部と、
前記非線形変換部の前記複数のテーブルから出力された複数の値に対して線形変換を施す線形変換部と、
前記線形変換部の出力とラウンド鍵とを加算する鍵加算部と、
前記鍵加算部の出力の並び替えを行う第1のパーミュテーション部と、
を備え、
初回のラウンド処理では、前記非線形変換部には、前記第1の排他的論理和演算部の出力が入力され、2回目以降のラウンド処理では前記非線形変換部には、前回のラウンド処理での前記第1のパーミュテーション部の出力が入力され、
前記非線形変換部において、前記テーブルは、前記テーブルへの入力に対して入力側のマスク値と排他的論理和をとった値を用いて前記テーブルに従った非線形変換を行い、前記非線形変換した値に対して出力側のマスク値と排他的論理和をとった値を出力し、
前記非線形変換部、前記線形変換部、前記鍵加算部、及び、前記第1のパーミュテーション部によるラウンド処理が規定回数行われ、
前記規定回数のラウンド処理終了後の前記第1のパーミュテーション部の出力とアンマスク値との排他的論理和をとる第2の排他的論理和演算部と、
前記第2の排他的論理和演算部の出力を並び替え暗号文として出力する第2のパーミュテーション部と、を備えた暗号化処理回路が提供される。
本発明によれば、データ処理装置による暗号化処理方法であって、
平文とマスク値との排他的論理和をとる第1の排他的論理和工程と、
入力値を複数に分割した値をそれぞれ複数のテーブルを用いて非線形変換するにあたり、前記テーブルへの入力に対して入力側のマスクと排他的論理和をとった値を用いて、前記テーブルに従った非線形変換を行い、前記非線形変換した値に対して、出力側のマスク値と排他的論理和をとった値を出力する非線形変換工程と、
前記非線形変換工程から出力された複数の値に対して線形変換を施す線形変換工程と、
前記線形変換された値とラウンド鍵とを加算する鍵加算工程と、
前記鍵加算工程による加算結果の並び替えを行う第1のパーミュテーション工程と、
を含み、
初回のラウンド処理では、前記非線形変換工程には、前記第1の排他的論理和工程の演算結果が入力され、2回目以降のラウンド処理では、前記非線形変換工程には、前回のラウンド処理における前記第1のパーミュテーション工程の出力が入力され、
前記非線形変換工程、前記線形変換工程、前記鍵加算工程、前記第1のパーミュテーション工程によるラウンド処理が規定回数行われ、
前記規定回数のラウンド処理終了後の前記第1のパーミュテーション工程の出力とアンマスク値との排他的論理和をとる第2の排他的論理和工程と、
前記第2の排他的論理和工程の演算結果を並び替え暗号文として出力する第2のパーミュテーション工程と、をさらに含む暗号化処理方法が提供される。
本発明によれば、データ処理装置に暗号化処理を実行させるプログラムであって、
平文とマスク値との排他的論理和をとる第1の排他的論理和処理と、
入力値を複数に分割した値をそれぞれ複数のテーブルを用いて非線形変換するにあたり、前記テーブルへの入力に対して入力側のマスクと排他的論理和をとった値を用いて、前記テーブルに従った非線形変換を行い、前記非線形変換した値に対して、出力側のマスク値と排他的論理和をとった値を出力する非線形変換処理と、
前記非線形変換処理から出力された複数の値に対して線形変換を施す線形変換処理と、
前記線形変換された値とラウンド鍵とを加算する鍵加算処理と、
前記鍵加算処理による加算結果の並び替えを行う第1のパーミュテーション処理と、
を含み、
初回のラウンド処理では、前記非線形変換処理には、前記第1の排他的論理和処理の演算結果が入力され、2回目以降のラウンド処理では、前記非線形変換処理には、前回のラウンド処理における前記第1のパーミュテーション処理の出力が入力され、
前記非線形変換処理、前記線形変換処理、前記鍵加算処理、前記第1のパーミュテーション処理からなるラウンド処理が規定回数行われ、
前記規定回数のラウンド処理終了後における前記第1のパーミュテーション処理の出力とアンマスク値との排他的論理和をとる第2の排他的論理和処理と、
前記第2の排他的論理和処理の演算結果を並び替え暗号文として出力する第2のパーミュテーション処理と、を含む暗号化処理プログラムが提供される。本発明によれば、該暗号化処理プログラムを記録したコンピュータ読み出し可能な媒体(例えば半導体メモリ、磁気/光ディスク等)が提供される。
本発明によれば、暗号文を入力して並び替える第1のパーミュテーション部と、
前記第1のパーミュテーション部の出力とアンマスク値との排他的論理和をとる第1の排他的論理和演算部と、
入力値の並び替えを行う第2のパーミュテーション部と、
前記第2のパーミュテーション部の出力とラウンド鍵とを加算する鍵加算部と、
前記鍵加算部の出力に線形変換を施す線形変換部と、
前記線形変換部の出力を入力とし、入力値を複数に分割した値をそれぞれ入力し非線形変換する複数のテーブルを含む非線形変換部と、
を備え、
前記非線形変換部において、前記テーブルは、前記テーブルへの入力に対して入力側のマスク値と排他的論理和をとった値を用いて、前記テーブルに従った非線形変換を行い、前記非線形変換した値に対して出力側のマスク値と排他的論理和をとった値を出力し、
初回のラウンド処理では、前記第2のパーミュテーション部には、前記第1の排他的論理和演算部の出力が入力され、2回目以降ラウンド処理では、前記第2のパーミュテーション部には、前回のラウンド処理における前記非線形変換部の出力が入力され、
前記第2のパーミュテーション部、前記鍵加算部、前記線形変換部、及び前記非線形変換部によるラウンド処理が規定回数行われ、
前記規定回数のラウンド処理終了後の前記非線形変換部の出力とマスク値との排他的論理和をとり、排他的論理和演算結果を平文として出力する第2の排他的論理和演算部を備えた復号処理回路が提供される。
本発明によれば、データ処理装置による復号処理方法であって、
暗号文を入力して並び替える第1のパーミュテーション工程と、
前記第1のパーミュテーション工程の出力とアンマスク値との排他的論理和をとる第1の排他的論理和工程と、
入力値の並び替えを行う第2のパーミュテーション工程と、
前記第2のパーミュテーション工程の出力とラウンド鍵とを加算する鍵加算工程と、
前記鍵加算工程の出力に線形変換を施す線形変換工程と、
前記線形変換工程の出力を入力とし、入力値を複数に分割した値をそれぞれ入力し非線形変換する複数のテーブルを含む非線形変換工程と、
を含み、
前記非線形変換工程において、前記テーブルは、前記テーブルへの入力に対して入力側のマスク値と排他的論理和をとった値を用いて、前記テーブルに従った非線形変換を行い、前記非線形変換した値に対して出力側のマスク値と排他的論理和をとった値を出力し、
初回のラウンド処理では、前記第2のパーミュテーション工程には、前記第1の排他的論理和工程の出力が入力され、2回目以降ラウンド処理では、前記第2のパーミュテーション工程には、前回のラウンド処理における前記非線形変換工程の出力が入力され、
前記第2のパーミュテーション工程、前記鍵加算工程、前記線形変換工程、及び前記非線形変換工程によるラウンド処理が規定回数行われ、
前記規定回数のラウンド処理終了後の前記非線形変換工程の出力とマスク値との排他的論理和をとり排他的論理和演算結果を、平文として出力する第2の排他的論理和工程を含む復号処理方法が提供される。
本発明によれば、データ処理装置による復号処理を実行させるプログラムであって、
暗号文を入力して並び替える第1のパーミュテーション処理と、
前記第1のパーミュテーション処理の出力とアンマスク値との排他的論理和をとる第1の排他的論理和処理と、
入力値の並び替えを行う第2のパーミュテーション処理と、
前記第2のパーミュテーション処理の出力とラウンド鍵とを加算する鍵加算処理と、
前記鍵加算処理の出力に線形変換を施す線形変換処理と、
前記線形変換処理の出力を入力とし、入力値を複数に分割した値をそれぞれ入力し非線形変換する複数のテーブルを含む非線形変換処理と、
を含み、
前記非線形変換処理において、前記テーブルは、前記テーブルへの入力に対して入力側のマスク値と排他的論理和をとった値を用いて、前記テーブルに従った非線形変換を行い、前記非線形変換した値に対して出力側のマスク値と排他的論理和をとった値を出力し、
初回のラウンド処理では、前記第2のパーミュテーション処理には、前記第1の排他的論理和処理の出力が入力され、2回目以降ラウンド処理では、前記第2のパーミュテーション処理には、前回のラウンド処理における前記非線形変換処理の出力が入力され、
前記第2のパーミュテーション処理、前記鍵加算処理、前記線形変換処理、及び前記非線形変換処理によるラウンド処理が規定回数行われ、
前記規定回数のラウンド処理終了後の前記非線形変換処理の出力とマスク値との排他的論理和をとり、排他的論理和演算結果を、平文として出力する第2の排他的論理和処理と、を含む復号処理プログラムが提供される。本発明によれば、該復号処理プログラムを記録したコンピュータ読み出し可能な媒体(例えば半導体メモリ、磁気/光ディスク等)が提供される。
本発明によれば、暗号処理時における冗長部を削減可能とし、マスク値の記憶領域を削減可能としている。
本発明の第1の実施形態に係る暗号化処理回路の構成を例示する図である。 本発明の第1の実施形態に係る暗号化部の構成を例示する図である。 本発明の第1の実施形態に係る非線形変換部の構成を例示する図である。 本発明の第1の実施形態に係る非線形変換テーブルを排他的論理和と非線形変換テーブルで置換した図である。 本発明の第1の実施形態に係る鍵加算部の構成を例示する図である。 本発明の第1の実施形態に係る暗号化処理回路の鍵生成部がパーミュテーション機能を備えた構成を例示する図である。 本発明の第1の実施形態に係る鍵加算部の前にパーミュテーション部を設置したときの、暗号化部の構成を例示する図である。 本発明の第1の実施形態の動作を説明するためのフローチャートである。 AESに対して、4バイト巡回シフトによる並び替えを行った場合の結果である。 第1の比較例の暗号化部の構成を例示する図である。 第2の比較例(RSM法)の暗号化部の構成を例示する図である。 本発明の第2の実施形態に係る、暗号化部の構成を例示する図である。 本発明の第2の実施形態に係る、鍵加算部の前にパーミュテーション部を設置したときの、暗号化部の構成を例示する図である。 本発明の第2の実施形態の動作を説明するためのフローチャートである。 本発明の実施例1に係る暗号化部の構成を例示する図である。 本発明の実施例1の動作を説明するためのフローチャートである。 本発明の実施例1に係る、R=0のときのデータ遷移の例を示す図(その1)である。 本発明の実施例1に係る、R=0のときのデータ遷移の例を示す図(その2)である。 本発明の実施例1に係る、R=0のときのデータ遷移の例を示す図(その3)である。 本発明の実施例1に係る、R=0のときのデータ遷移の例を示す図(その4)である。 本発明の実施例1に係る、R=1のときのデータ遷移の例を示す図(その1)である。 本発明の実施例1に係る、R=1のときのデータ遷移の例を示す図(その2)である。 本発明の実施例1に係る、R=1のときのデータ遷移の例を示す図(その3)である。 本発明の実施例1に係る、R=1のときのデータ遷移の例を示す図(その4)である。 本発明の実施例1に係る、R=2のときのデータ遷移の例を示す図(その1)である。 本発明の実施例1に係る、R=2のときのデータ遷移の例を示す図(その2)である。 本発明の実施例1に係る、R=2のときのデータ遷移の例を示す図(その3)である。 本発明の実施例1に係る、R=2のときのデータ遷移の例を示す図(その4)である。 本発明の実施例1に係る、R=3のときのデータ遷移の例を示す図(その1)である。 本発明の実施例1に係る、R=3のときのデータ遷移の例を示す図(その2)である。 本発明の実施例1に係る、R=3のときのデータ遷移の例を示す図(その3)である。 本発明の実施例1に係る、R=3のときのデータ遷移の例を示す図(その4)である。 AESのときのデータ遷移の例を示す図(その1)である。 AESのときのデータ遷移の例を示す図(その2)である。 AESのときのデータ遷移の例を示す図(その3)である。 AESのときのデータ遷移の例を示す図(その4)である。 AES暗号化回路の暗号化部の構成を例示する図である。 3D暗号の暗号化回路の暗号化部の構成を例示する図である。 3D暗号のフローチャートである。 本発明の実施例2に係る、暗号化部の構成を例示する図である。 本発明の実施例2に係る、暗号化部の構成を例示する図である。(2つの非線形変換部) 本発明の実施例2の動作を説明するためのフローチャートである。
本発明の第1の形態によれば、暗号鍵を用いて平文を複数のラウンドで暗号化する暗号化処理回路は、第1、第2の排他的論理和演算部(1101、1102)と、非線形変換部(1200)と、線形変換部(1300)、鍵加算部(1400)、第1、第2のパーミュテーション部(1501、1502)を備える。第1の排他的論理和演算部(110)は平文とマスク値(Mp)との排他的論理和をとり、平文にマスクをかける。
非線形変換部(1200)は、複数のテーブル(マスク付き非線形変換テーブル)(S1〜Sn)を備えている。各々のテーブル(S1〜Sn)(1201〜1204)において、入力側と出力側でそれぞれマスク値をかける。前記テーブル(S1〜Sn)の入力に対して入力側のマスク(Ma=m1a〜mna)をかけることでマスク前の値に変換し、前記第2のマスク前の値を用いてテーブル(S1〜Sn)に従った非線形変換を行う。テーブル(S1〜Sn)の出力に対して出力側のマスク(Mb=m1b〜mnb)をかけた値を出力する。
初回のラウンド処理では、前記非線形変換部(1200)には、第1の排他的論理和演算部(1101)の演算結果が入力される。2回目以降のラウンド処理では、前記非線形変換部には、前回のラウンド処理での前記第1のパーミュテーション部(1501)の出力が入力される。
線形変換部(1300)は、非線形変換部(1200)の複数のテーブル(S1〜Sn)から出力される複数の値を入力し、線形変換をとる。鍵加算部(1400)は、線形変換部(1300)の出力とラウンド鍵(Ki)とを加算する(排他的論理和をとる)。第1のパーミュテーション部(1501)は、鍵加算部(1400)の出力を入力してデータ列の並び替えを行う。
前記非線形変換部(1200)、前記線形変換部(1300)、前記鍵加算部(1400)、及び、前記第1のパーミュテーション部(1501)によるラウンド処理が、規定回数行われる(例えばAES-128、AES-192、AES-256のラウンド処理回数は10回、12回、14回)。第2の排他的論理和演算部(1102)は、ラウンド処理終了後のデータ列とアンマスク値(Mc)との排他的論理和をとる。第2のパーミュテーション部(1502)は、ラウンド処理終了後のデータ列とアンマスク値(Mc)との排他的論理和の出力結果の並び替えを行い、並び替えた結果を暗号文として出力する。入力側マスク(Ma)は、出力側マスク(Mb)を、前記線形変換部(1300)、前記第1のパーミュテーション部(1501)で変換した値である。
第1のパーミュテーション部(1501)で行うデータ列の並び替えは、任意のデータ列(x)を、非線形変換部(1200)で非線形変換し(S(x))、さらに線形変換部(1300)で線形変換した結果(L(S(x)))を、第1のパーミュテーション部(1501)で並び替えた結果R1(=P(L(S(x))))と、同じデータ列(x)を第1のパーミュテーション部(1501)で並び替えた結果(P(x))を、非線形変換部(1200)で非線形変換し(S(Px))、さらに前記線形変換部(1300)で線形変換した結果R2(=L(S(P(x))))において、R1=R2となるような並び替えを行う。
本発明の第2の形態によれば、暗号鍵を用いて平文を複数のラウンドで暗号化する暗号化処理回路は、第1、第2の排他的論理和演算部(1101、1102)と、非線形変換部(1200)と、線形変換部(1300)、鍵加算部(1400)、及び第1乃至第3のパーミュテーション部(1501、1502、1504)と、を備える。第3のパーミュテーション部(1504)は平文の並び替えを行う。排他的論理和演算部(1101)は、第3のパーミュテーション部(1504)の出力である平文を並び替えたものとマスク値(Mp)との排他的論理和をとり、並び替えた平文にマスクをかける。非線形変換部(1200)は、複数のテーブル(マスク付き非線形変換テーブル)(S1〜Sn)を備えている。各々のテーブル(S1〜Sn)(1201〜1204)において、入力側と出力側でマスク値をかける。前記テーブル(S1〜Sn)の入力に対して入力側のマスク(m1a〜mna)をかけることでマスク前の値に変換し、前記マスク前の値を用いてテーブル(S1〜Sn)に従った非線形変換を行う。テーブル(S1〜Sn)の出力に対して出力側のマスク(m1b〜mnb)をかけた値を出力する。初回のラウンド処理では、前記非線形変換部(1200)には、第1の排他的論理和演算部(1101)の演算結果が入力される。2回目以降のラウンド処理では、前記非線形変換部には、前回のラウンド処理での前記第1のパーミュテーション部(1501)の出力が入力される。
前記線形変換部(1300)は、非線形変換部(1200)の複数のテーブル(S1〜Sn)から出力された複数の値に対して、線形変換をとる。鍵加算部(1400)は、線形変換部(1300)の出力とラウンド鍵(Ki)とを加算する(排他的論理和をとる)。第1のパーミュテーション部(1501)は、入力されたデータ列の並び替えを行う。前記非線形変換部(1200)、前記線形変換部(1300)、前記鍵加算部(1400)、及び、前記第1のパーミュテーション部(1501)によるラウンド処理が規定回数行われる。第2の排他的論理和演算部(1102)は、ラウンド処理終了後のデータ列とアンマスク値(Mc)との排他的論理和をとる。さらに第2のパーミュテーション部(1502)は、ラウンド処理終了後のデータ列とアンマスク値(Mc)との排他的論理和の出力結果を並び替え、並び替えた結果を暗号文として出力する。入力側マスク(Ma)は出力側マスク(Mb)を前記線形変換部(1300)及び前記第1のパーミュテーション部(1501)で変換した値である。前記第1のパーミュテーション部(1501)で行う並び替えは、任意のデータ列を、前記非線形変換部(1200)で非線形変換し、さらに前記線形変換部(1300)で線形変換した結果を前記第1のパーミュテーション部(1501)で並び替えた第1の結果(R1)と、同じデータ列を前記第1のパーミュテーション部(1501)で並び替えた結果を、前記非線形変換部(1200)で非線形変換し、さらに前記線形変換部(1300)で線形変換した第2の結果(R2)に関して、R1=R2となるような並び替えである。
本発明の上記形態によれば、非線形変換部において、マスク付の非線形変換テーブルを具備することで、マスクを変えるためにテーブルの再計算を行う必要性がなくなり、処理速度の低下と、記憶領域(RAM領域)の増大を抑制する。さらに、非線形変換部において、異なるマスクを持つテーブルを具備し、さらにパーミュテーションによりテーブルに入力されるデータを入れ替えることで、ラウンド処理ごとにデータの各部分にかかるマスクを入れ替える。未使用となるマスク値とテーブルを出さないことで、ROM領域及び回路規模を削減することができる。
非線形変換部のマスク付の非線形変換テーブルにおける入力側マスク値(Ma)と出力側のマスク値(Mb)の関係を規定しておき、さらに、パーミュテーションに条件付けを行う。こうすることで、本発明によれば、ラウンドごとのアンマスクやリマスクといったマスクの作業が不要となり、作業用のマスク値をROM等の記憶装置に記憶しておくことを要しなくしている。また、データを並び替えたままで処理をすすめることができるため、平文用のマスク値と暗号文用のアンマスク値を複数用意することを不要としている。
このように、本発明によれば、回路規模及びROM領域を削減しつつ、ハミング重みやハミング距離に基づくサイドチャネル攻撃による解析を困難にし、暗号モジュールの安全性を高めることができる。以下、図面を参照していくつかの実施形態を説明する。
(第1の実施形態)
図1は、本発明の第1の実施形態の暗号化処理回路の構成を示す図である。本実施形態の暗号化処理回路は、暗号化部1000と鍵生成部2000を含む。
図2は、図1の暗号化部1000の構成を示す図である。図2を参照すると、暗号化部1000は、排他的論理和演算部1101、1102と、非線形変換部1200と、線形変換部1300、鍵加算部1400、及び、パーミュテーション部1501、1502を備えている。本明細書では、各変換部での演算として以下のような表記を用いる。
非線形変換:S(・)、
線形変換:L(・)、
パーミュテーション:P(・)。
図1を参照すると、暗号化部1000は、入力された平文と、鍵生成部2000から受け取るラウンド鍵(Ki)をもとに、データを暗号化し、暗号文を出力する。
暗号化部1000では、図2を参照すると、初めに排他的論理和演算部1101において、マスクMpと平文との排他的論理和をとる。
次に、規定ラウンド数だけ、非線形変換部1200、線形変換部1300、鍵加算部1400、パーミュテーション部1501でラウンド処理を繰り返す。
ラウンド処理終了後、排他的論理和演算部1102で、アンマスクMcとラウンド処理の出力結果(パーミュテーション部1501の出力)の排他的論理和をとる。
最後に、パーミュテーション部1502で、ラウンド処理中に並び替えられたデータを正規のデータ位置に並び替えを行い、暗号文を出力する。
排他的論理和演算部1101及び1102は、2つの入力の排他的論理和(bitwise XOR)を演算し、演算結果を出力する。排他的論理和演算部1101は平文とマスクMpとの排他的論理和を演算する。排他的論理和演算部1102はラウンド処理の結果とアンマスクMcとの排他的論理和を演算する。
非線形変換部1200は、入力値(X)を非線形変換し、変換結果(Y)を出力する。
図3は、図1の非線形変換部1200の構成を示す図である。図3を参照すると、非線形変換部1200は、n個の非線形変換テーブル(S1〜Sn)1201〜1204を備えている。n個の非線形変換テーブル1201〜1204へは入力値Xのうちの一部のデータx1〜xnがそれぞれ入力され、各非線形変換テーブルで非線形変換が行われる。データの一部の取り出し方としては、ビット単位、バイト単位、及び、任意のデータ長で分割され、データXは、全部でn個のデータx1〜xnに分割される。x1〜xnは互いに重ならず、x1〜xnのビット列(あるいはバイト列等)を結合(連結)することでXとなる。特に制限されないが、例えばXが32ビットのとき、例えば4ビット単位にx1はXの0〜3ビット、x2はXの4〜7ビット、・・・、x8はXの29〜31ビット等に分割する。
非線形変換テーブル1201〜1204の変換結果としてn個の出力値y1〜ynが出力される。なお、非線形変換テーブル1201〜1204は、後述するように、テーブルの入力と出力にマスク演算を施すものであり、マスク付き非線形変換テーブルともいう。n個の出力値y1〜ynを結合したものが非線形変換部1200の出力値Yとなる。
図4は、図3のn個の非線形変換テーブル(S1〜Sn)1201〜1204の構成を示す図である。図4を参照すると、非線形変換テーブル1201は、入力側のマスクm1aと、出力側のマスクmiと、排他的論理和演算部1211と、ルックアップテーブル方式の非線形変換テーブル(S1)1221と、排他的論理和演算部1215を備えている。同様に、他の非線形変換テーブル1202〜1204は、入力側のマスクm2a〜mnaと、出力側のマスクm2b〜mnbと、排他的論理和演算部1212〜1218、ルックアップテーブル方式の非線形変換テーブル(S2〜Sn)1222〜1224と、排他的論理和演算部1216〜1218を備えている。マスクm1a〜mnaのビット幅は、データx1〜xnビット幅と等しい。
非線形変換テーブル(S1)1201内において、排他的論理和演算部1211は、入力値x1と入力側のマスクm1aとの排他的論理和x1(XOR)m1aをとる。なお、マスク値との排他的論理和をとることを、マスクをかけるともいう。
非線形変換テーブル(S1)1221は、排他的論理和x1(XOR)m1aを入力し、該入力に非線形変換を施した変換結果S(x1(XOR)m1a)を出力する。
排他的論理和演算部1215は、非線形変換テーブル(S1)1221から出力された変換結果S(x1(XOR)m1a)と、出力側のマスクm1bとの排他的論理和S(x1(XOR)m1a) (XOR) m1bをとり、演算結果をy1として出力する。このように、非線形変換テーブル(S1)1201は、入力値x1をy1へ変換して出力する。他の非線形変換テーブル(S2〜Sn)1202〜1204も、S1と同様に、x2〜xnのそれぞれに対して排他的論理和、非線形変換、排他的論理和の3つの演算を行い、それぞれy2〜ynを出力する。マスクmib〜mnbは、非線形変換テーブル(S)の出力のビット幅と等しい(例えばマスクm1a〜mnaのビット幅と等しくしてもよい)。
入力側の各マスクm1a〜mnaを結合したものをMa
出力側の各マスクm1b〜mnbを結合したものをMb
とする。
非線形変換テーブル1201をメモリ装置へ実装する場合には、入力x1に対して、出力y1=S(x1(XOR)m1a) (XOR) m1bを出力する。前述したように、図3のS1〜Snの各々は、排他的論理和演算、非線形変換、排他的論理和演算を行う。
再び図2を参照すると、線形変換部1300は、非線形変換部1200から出力された出力値(Y)を入力し、出力値(Y)を線形変換して変換結果(Z)を出力する。線形変換の関数をLとした場合、
Z=L(Y)
となる。
鍵加算部1400は、図1の鍵生成部2000から出力されたラウンド鍵(Ki)と、線形変換部1300の出力(Z)との排他的論理和Q=Z(XOR)Ki(iは現在のラウンド数を示す)を演算する。なお、排他的論理和演算Z(XOR)KiはZとKiの加算である。
図5は、図2の鍵加算部1400の構成を例示する図である。図5を参照すると、鍵加算部1400は、複数の排他的論理和演算部1411〜1414を備えている。排他的論理和演算部1411は、ラウンド鍵Kiの一部であるki1と入力値Zの一部であるz1との排他的論理和 z1(XOR)ki1を演算し、演算結果(加算結果)をq1として出力する。他の排他的論理和演算部1412〜1414も同様に、ラウンド鍵Kiの一部kij(j=2〜n)と入力値Zの一部zj(j=2〜n)との排他的論理和 zj(XOR)kijを演算し演算結果をqj(j=2〜n)として出力する。
図2のパーミュテーション部1501は、鍵加算部1400の出力(Q)を並び替え、並び替えた結果をP(Q)として出力する。並び替えは、ビット単位、バイト単位、及び任意のデータ長単位での並び替えがある。パーミュテーション部1501での並び替えの結果P(Q)は、規定ラウンド回数のラウンド処理が繰り返されるまで、非線形変換部1200へ帰還入力され、次のラウンド処理が行われる。ラウンド処理を規定回数分繰り返した場合、ラウンド処理を終了し、パーミュテーション部1501の出力P(Q)は、排他的論理和演算部1102にてアンマスク値Mcとの排他的論理和P(Q)(XOR)Mcが演算される。
パーミュテーション部1502は、排他的論理和演算部1102の出力を並び替え、並び替えた結果を暗号文として出力する。パーミュテーション部1502での並び替えは、ビット単位、バイト単位、あるいは、任意のデータ長単位で行われる。
図1の鍵生成部2000は、入力された秘密鍵をもとに、暗号化部1000で使用するラウンド鍵(Ki)を生成する。このラウンド鍵(Ki)は図2の鍵加算部1400に入力される。
なお、図2において、パーミュテーション部1501によるデータの並び替えが行われるため、本来ラウンド鍵Kiを加算すべき箇所が、線形変換部1300から得られるZでずれてしまう。そのため、ラウンド鍵Kiに対しても並び替えを行う必要がある。特に制限されないが、ラウンド鍵Kiを並び替える手法として、例えば、以下の手法が挙げられる。
(A)鍵生成部で予め並び替えたラウンド鍵を生成する。
(B)鍵生成部では、何も操作しないラウンド鍵を生成し、暗号化部の鍵加算部で鍵を加算する前に、別途設けられたパーミュテーション部(図7の1503)で並び替える。
図6は、上記(A)の手法を説明する図である。図6を参照すると、パーミュテーション付き鍵生成部2001は、予め並び替えたラウンド鍵を生成し、暗号化部1000に供給する。
図7は、上記(B)の手法を説明する図である。図7を参照すると、パーミュテーション部1503は、図1の鍵生成部2000からのラウンド鍵Kiを並び替えた上で、鍵加算部1400に供給する。
図8は、第1の実施形態の動作を説明するフローチャートである。図8と、図1乃至図7を参照して、本実施形態の動作を説明する。
はじめに、平文及び秘密鍵を暗号化処理回路へ入力し、平文は図1の暗号化部1000、秘密鍵は図1の鍵生成部2000へ入力される(ステップA1)。
図2の排他的論理和演算部1101で、平文とマスクMpとの排他的論理和が演算される。この排他的論理和演算(加算演算)により、平文にマスクをかける(ステップA2)。
マスク処理後、ラウンド処理として、ステップA3〜A7が行われる。まず、図2の非線形変換部1200で、排他的論理和演算部1101の出力値を非線形変換し、非線形変換出力(Y)を出力する(ステップA3)。非線形変換部1200では、排他的論理和演算部1101の出力値がn個に分割されx1〜xnが、非線形変換テーブル(S1〜Sn)1201〜1204へと入力される。これら、非線形変換テーブルはマスク付の非線形変換テーブルとなっている。図3の非線形変換テーブル(S1)1201の出力結果は、x1とm1a との排他的論理和を演算し、演算結果を非線形変換S(・)によって非線形変換し、非線形変換した結果とm1bとの排他的論理和をとった結果となる。
ここで、ステップA2で平文にかけたマスク値Mpと、m1a〜mnaを結合(concatenate)したマスク値Ma(=m1a||m2a||・・・||mna;ただし、||は連結(連接)を示す)とが一致する場合、図4の排他的論理和演算部1211〜1214において、MpとMaが相殺されることになる。このため、図4の非線形変換テーブル(S)1221〜1224は、それぞれ、元の平文に対して非線形変換を行うこととなる。そして、図4の排他的論理和演算部1215〜1218で、元の平文を非線形変換した結果に、m1b 〜mnbを連結したマスクMb(=m1b||m2b||・・・||mnb)をかけることとなる。
図2の線形変換部1300では、非線形変換部1200の出力値(Y)に対して線形変換を行い、変換結果(Z)を出力する(ステップA4)。
鍵加算部1400では、線形変換部1300の出力(Z)と、鍵生成部2000から送られてきたラウンド鍵(Ki)との排他的論理和を演算し、演算結果(Q)を出力する(ステップA5)。なお、最初のラウンドでは、これまでの処理(すなわち、鍵加算部1400に到るまでの処理)で、パーミュテーション部1501を通過していないため、ラウンド鍵(Ki)に対する並び替えは不要である。
パーミュテーション部1501では、鍵加算部1400の出力(Q)を並び替え、並び替えた結果(P(Q))を出力する(ステップA6)。
パーミュテーション部1501での並び替え演算後、規定ラウンド回数、ラウンド処理を繰り返したか否か(ラウンド処理終了)の判定を行う(ステップA7)。該判定の結果、ラウンド処理が規定回数分終わっていない場合には、ステップA3に戻り、再び、ラウンド処理を繰り返す。一方、ラウンド処理が規定回数分終了した場合には、ステップA8へ進む。
ラウンド処理を繰り返す場合、まず、非線形変換部1200で、パーミュテーション部1501で並び替えを行った結果(P(Q))に対して、非線形変換が行われる(ステップA3)。1ラウンド目と異なり、2ラウンド目以降は、パーミュテーション部1501の出力(P(Q))が非線形変換部1200の入力値となる。パーミュテーション部1501の出力(P(Q))も、入力値(X)をn個(x1〜xn)に分割したのと同様、n個に分割し、pq1〜pqnとする。特に制限されないが、例えばP(Q)が32ビットのとき、4ビット単位にpq1はP(Q)の0〜3ビット、pq2はP(Q)の4〜7ビット、・・・、pq8はP(Q)の29〜31ビット等に分割する。
pq1〜pqnが各非線形変換テーブル(S1〜Sn)1201〜1204(図2)にそれぞれ入力され、マスク付きの非線形変換処理が行われる。
例えば図2の非線形変換テーブル(S1)1201では、pq1とm1a との排他的論理和pq1(XOR)m1a を演算し、演算結果を、非線形変換S(・)によって非線形変換し(演算結果pq1(XOR)m1a をテーブルに入力し、該テーブルから非線形変換した結果が読み出される)、非線形変換した結果S(pq1(XOR)m1a)とm1bとの排他的論理和をとった結果S(pq1(XOR)m1a)(XOR)m1bとなる。なお、各非線形変換テーブル(S1〜Sn)1201〜1204の各テーブルの要素数は、n個に分割されたデータpq1〜pqnの各ビットサイズをLとして、0〜2L−1である。
ここで、1ラウンド目のステップA3でかけたマスクMbが、線形変換部1300とパーミュテーション部1501で変換された結果をMb’とする。m1a〜mnaを結合した入力側のマスクMaが、Mb’と一致する場合、図4の排他的論理和演算部1211〜1214において、Mb’とMaが相殺されることになる(一致する値同士の排他的論理和をとると、0となる)。このため、マスクMaが、Mb’と一致する場合、図4の非線形変換1221〜1224は、元の平文(マスクをかける前の値)に対して、非線形変換を行うことと等価となる。そして、図4の排他的論理和演算部1215〜1218で、元の平文を非線形変換した結果に、マスクMbをかけることとなる。
したがって、本実施形態においては、ステップA3でかけたマスクMbを、線形変換部1300及びパーミュテーション部1501で変換した結果Mb’を入力側のマスクMaとして、Ma、Mbを含めた非線形変換テーブル(S1〜Sn)1201〜1204を実装する。こうすることで、ラウンド処理中に、線形変換部1300での線形処理等で変化してしまったマスクを一旦解除して改めてマスクをかけ直す作業(処理)を不要としている。
線形変換部1300では、非線形変換部1200の出力(Y)に対して線形変換を行い、変換結果(Z)を出力する(ステップA4)。
鍵加算部1400では、線形変換部1300の出力(Z)と鍵生成部2000から送られてきたラウンド鍵(Ki)との排他的論理和を演算し、演算結果(Q)を出力する(ステップA5)。
2ラウンド目以降では、ステップA6でデータの並び替えが行われているため、これまで行われてきたステップA6での並び替え分だけ、ラウンド鍵(Ki)に対して並び替えを行う。
ラウンド鍵Kiの並び替えは、図6に示したように、パーミュテーション付鍵生成部2001で行うか、あるいは、図7に示したように、パーミュテーション部1503で行う。例えば、2ラウンド目では、1ラウンド目のステップA6を1回通過しているため、ラウンド鍵Kiに1回分の並び替えを行う。3ラウンド目では、すでに1ラウンド、2ラウンド目のステップA6を2回通過しているため、ラウンド鍵Kiに対して、2回分の並び替えを行う。
例えば、周期的に並び替えが行われている場合には、並び替えが行われないこともある。また、並び替えの回数を減らすこともできる。例えば、4回周期で元の位置に戻る並び替えの場合、5ラウンド目にはラウンド鍵Kiの並び替えは行われない。また、6ラウンド目では、1回分の並び替えで、5回分の並び替えと同じ結果となる。
パーミュテーション部1501では、鍵加算部1400の出力(Q)の並び替えを行い、並び替え結果(P(Q))を出力する(ステップA6)。
ラウンド処理が規定回数行われた場合、ステップA7からステップA8へと進む。
ラウンド処理終了後、排他的論理和演算部1102では、ラウンド処理の結果であるパーミュテーション部1501の出力(P(Q))と、アンマスクMcとの排他的論理和を演算し、演算結果C’ = P(Q)(XOR)Mcを出力する(ステップA8)。このアンマスクMcとの排他的論理和は、P(Q)にかかっているマスクを解除し、本来の暗号文Cを並び替えただけの結果C’を得るものである。
ラウンド処理の結果であるパーミュテーション部1501での並び替え結果(P(Q))にかかるマスクは、ステップA3でかけられたマスクMbを、線形変換部1300及びパーミュテーション部1501で変換した値Mb’である。したがって、排他的論理和演算部1102で、P(Q)と、Mc=Mb’との排他的論理和の演算をすることで、本来の暗号文Cを並び替えただけの結果C’を得ることができる。
なお、暗号アルゴリズムによっては、最後のラウンドでは処理の内容が変わることがある。その場合は、最後のラウンドで、マスクMbに対して行われた線形処理及びパーミュテーション処理だけをMbに適用した値をアンマスク値Mcとして用いる。
例えば、AESでは最後のラウンドでは、線形変換の1つであるMixColumnsが行われない。そのため、それ以外の演算である、ShiftRowsとパーミュテーションのみマスク値Mbに適用した結果が、アンマスク値Mcとなる。
次に、パーミュテーション部1502では、排他的論理和の結果C’に対して並び替えを行い、暗号文Cを得る(ステップA9)。
パーミュテーション部1502では、これまで行われてきた全ての並び替えを逆に行い、C’を本来の位置に戻す。周期的に元の位置に戻る並び替えの場合、さらに並び替えを行い、元の位置に戻すようにしてもよい。
例えば、4回周期で元の位置に戻る並び替えを考える。ここで、暗号化処理(ラウンド処理)を、15ラウンドで行う場合、パーミュテーション部1501を15回通過している。そのため、パーミュテーション部1502では、1回並び替えを行えば、元の位置に戻る。
最後に暗号文Cを出力し終了となる(ステップA10)。
本実施形態で用いるマスク値として、
・最初のマスクMp、
・最後のアンマスクMc、
・非線形変換テーブルの入力側のマスクMa、
・非線形変換テーブルの出力側のマスクMb、
がある。各マスク値の関係について説明する。
最初のマスクMpと非線形変換テーブルの入力側のマスクMaは同じものを用いる。
非線形変換テーブルの出力側のマスクMbが、線形変換部1300及びパーミュテーション部1501で変換された結果を、次のラウンドの非線形変換テーブルの入力側のマスクMaとする。
最後のアンマスクMcは、非線形変換テーブルの出力側のマスクMbが最後のラウンドの線形変換部1300及びパーミュテーション部1501で変換された結果とする。
最後のラウンドも、それ以前のラウンドと同じ処理をする場合には、
Mp=Ma=Mc
となり、これらは、Mbを線形変換部1300及びパーミュテーション部1501で変換された結果と等しい。このため、ユーザは、任意の値をMbに設定し、それに合わせて、マスク値Ma、アンマスク値Mcは、自動的に設定される。
また、マスク値Maを、ユーザが任意に設定するようにしてもよい。その場合、Maに対して、パーミュテーション部1501の並び替えの逆演算を行い、さらに線形変換部1300の処理の逆変換を行うことで、非線形変換テーブルの出力側のマスクMb(最初のラウンドのマスクMb)を得ることができる。
次に、本実施形態で行うパーミュテーションについて説明する。図2のパーミュテーション部1502、図7のパーミュテーション部1503は、図2、図7におけるパーミュテーション部1501での処理に応じて処理内容が決まる。
パーミュテーション部1502は、例えば、規定ラウンド回数分のラウンド処理で、パーミュテーション部1501で行われてきた全ての並び替えを逆に行うことで、本来の位置に暗号文を戻す。
図7のパーミュテーション部1503は、ラウンド処理において、パーミュテーション部1501にて行われてきた全ての並び替え処理を、ラウンド鍵(Ki)に対して行い、線形処理部1300の出力(Z)とラウンド鍵(Ki)とのデータ位置の整合をとる。
パーミュテーション部1501は、次のラウンドで使用する非線形処理テーブルを切り替えるために、データ(ビット列)を並び替える。並び替えることで、使用する非線形処理テーブルが切り替わる。その結果、各データにかかるマスクも変化することになる。並び替えについては、最終結果となる暗号文が変わらないように並び替える必要がある。このため、本実施形態では、あるデータXに対して、ラウンド処理(非線形処理 S(・)、線形処理 L(・)、鍵加算処理(KiとのXOR)、及びパーミュテーション P(・))を行う場合、鍵加算処理に対して、パーミュテーションを行い、非線形処理及び線形処理を行った結果(=L[S(P(X(XOR)Ki))])と、鍵加算処理(X(XOR)Ki)に対して先に非線形処理及び線形処理を行い、その結果に、パーミュテーションを行った結果(=P[L(S(X(XOR)Ki))])が一致するような、並び替えをパーミュテーション部1501で行う。
L[S(P(X(XOR)Ki))] = P[L(S(X(XOR)Ki))]
例えば、AESに適用した場合、パーミュテーション部1501では、4バイトシフトによるデータの並び替えを用いることができる。図9にAESに対して、4バイト巡回シフトによる並び替えを行った場合の結果を示す。
図9(A)には、Xに対して、ラウンド鍵Kiとの鍵加算処理(AddRoundKey)X(XOR)Ki、非線形変換(シフトバイト:SubBytes)S(X(XOR)Ki)、シフト行(Shift Rows)、線形変換(ミックスカラム(混合列):MixColumns)L(S(X(XOR)Ki)))、パーミュテーション処理P[L(S(X(XOR)Ki))]が示されている。
なお、SubBytes変換は、変換対象データをルックアップテーブルS-Box(substitution-box)を参照して変換する。例えば16進の59をSubBytes変換すると、上位ビットの5の行、9の列でS-boxの要素の値を取り出す。ShiftRows変換は、行毎にシフトする。シフト量が行によって異なり、例えば1行目では0バイト、2行目では1バイト左シフト、3行目では2バイト左シフト、4行目では3バイト左シフトされる。パーミュテーション処理では列を巡回シフトする。すなわち、元の4列1、2、3、4(1列1バイトであり、4列4バイト)を、右方向に1列(1バイト)分、巡回シフトしてそれぞれ列2、3、4、1に並び替える。
図9(B)には、Xに対して、ラウンド鍵Kiとの鍵加算処理(AddRoundKey)X(XOR)Ki、パーミュテーション(P(X(XOR)Ki))、非線形変換(SubBytes)S(P(X(XOR)Ki))、シフト行(Shift Row)、線形変換(MixColumns)L[S(P(X(XOR)Ki))]が示されている。図9(A)の最終結果P[L(S(X(XOR)Ki))]、図9(B)の最終結果L[S(P(X(XOR)Ki))]は一致していることがわかる。
したがって、パーミュテーション部1501で並び替えを行って、ラウンド処理を行ったとしても、最後に逆の並び替え処理を行えば、本来の暗号文を取り出すことが可能となる。
ここで、本実施形態を、図10に示した比較例(マスキングを行わない暗号化処理回路)と比較する。
図10の回路に対して、図7に示した本実施形態では、排他的論理和演算部1101、1102と、パーミュテーション部1501、1502、1503が追加されている。
図10の非線形処理部1600は、本実施形態と異なり、マスクが入出力に反映されない非線形変換テーブルとされる。図10の非線形変換部1600と、図7の非線形変換部1200において、非線形変換テーブルをメモリに実装した場合には、処理時間、回路規模ともに違いはない。
処理時間については、最初に、排他的論理和演算、最後に排他的論理和演算と、パーミュテーション処理、ラウンド処理中は、鍵とデータのパーミュテーションが1回ずつ、の処理時間が追加される。このうち、特に、パーミュテーション処理が、本実施形態での処理時間の増加分にあたることになる。
排他的論理和演算部1101、1102、パーミュテーション部1501、1502、1503、マスク値を保存するROM領域が、図10の回路構成に追加される。ただし、ROM領域については、MaとMbの2種類だけ用意すればよい。
このため、平文や暗号文のデータ長をTとした場合、2T分のROM領域がマスクの記憶領域として必要となる。
ここで、非特許文献5に開示されたRSM法と比較する。図11に、RSM法による暗号処理回路の構成例を示す。図11のRSM法の回路と、図7の本実施形態との違いは、図11では、非線形変換部1700と、MMS j+1加算部1800を備えているが、パーミュテーション部がない点である。RSM法では、マスクを切り替えるために、非線形変換部1700にバレルシフト1701、1702を用いている。一度データをシフトすることで、マスク付の非線形変換テーブルS1〜Sn のうち、どれを使用するかを切り替えることができる。いずれかの非線形変換テーブルで処理した後、バレルシフト1702で、元の位置にもどす。MMS j+1加算部1800は、マスク付の非線形変換テーブルでかけられたマスクが、線形変換部1300の変換で変化してしまった分をキャンセルし、改めて次のラウンドで使用するマスク値に更新する。
処理時間について比較する。図11の比較例(RSM法)の回路と比較して、本実施形態は、最初に排他的論理和、最後に排他的論理和と並び替え、ラウンド処理中は鍵とデータのパーミュテーションが1回ずつ、の処理時間が追加される。
一方、図11の比較例の回路では、最初と最後に排他的論理和が1回ずつ、ラウンド処理中はバレルシフトが2回と排他的論理和が1回行われる。
バレルシフトとパーミュテーションを、同等の処理時間とした場合、本実施形態では、パーミュテーション1回分、RSM法では、排他的論理和がラウンド数の分多いことになる。
本実施形態においては、鍵とデータそれぞれにパーミュテーションを行うことになるため、次のラウンド鍵を前のラウンドのときに並行して用意するなどで、処理時間を短縮することも可能である。
次に、図11のRSM法の回路規模について比較する。まず、図11の比較例(RSM法)では、2つの排他的論理和演算部1101、1102と、MMS j+1加算部1800、2つのバレルシフトが、図10の比較例の回路と比較して増加している。
本実施形態では、排他的論理和演算部1101、1102と、パーミュテーション部1501〜1503が追加されている。
そのため、バレルシフトとパーミュテーションを同等の規模と考えた場合には、本実施形態のほうが、パーミュテーション1つ分、回路規模が大きいことになる。
次に、ROM領域について比較する。
RSM法では、バレルシフトで何バイトシフトするかによって、最初のマスクMjや途中のMMS j+1加算部1800で使用するマスクMMS j+1、最後のアンマスクMSj+nが変わってくる。
そのため、シフト幅のパターンだけ、マスク値をROMに記憶しておく必要ある。例えば、AES128の場合、シフト幅のパターンが0〜15バイトの16パターンとすると、マスクの数は、3つのマスクで16個必要となり、ROM領域は、
T*16*3(T=16バイト)
分必要となる。
本実施形態では、マスクの記憶領域は2T分ですむため、RSM法と比べて、24分の1ですむことになる。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。図12は、本発明の第2の実施形態の構成を示す図である。図12を参照すると、図2の前記第1の実施形態の排他的論理和演算部1101の前に、パーミュテーション部1504が追加され、乱数発生器1900を備えている。乱数発生器1900で生成された乱数(R)はパーミュテーション部1504、1502に入力される。図12において、パーミュテーション部1504では、乱数発生器1900から出力される乱数を受け、入力された平文に対して並び替え処理(乱数に対応した並び替え回数)を行い、並び替えた平文を排他的論理和演算部1101へと出力する。また、パーミュテーション部1502は、乱数発生器1900から出力される乱数を受け、排他的論理和演算部1102の出力の並び替え処理を行い、暗号文として出力する。
図13は、第2の実施形態において、前記第1の実施形態の図7に対応する構成を例示する図である。図13を参照すると、図7の排他的論理和演算部1101の前にパーミュテーション部1504が追加され、乱数発生器1900を備えている。図13において、パーミュテーション部1504は、乱数発生器1900から出力される乱数を受け、入力された平文に対して並び替え処理(乱数に対応した並び替え回数)を行い、並び替えた平文を排他的論理和演算部1101へと出力する。パーミュテーション部1502は、乱数発生器1900から出力される乱数を受け、排他的論理和演算部1102の出力の並び替え処理を行い、暗号文として出力する。パーミュテーション部1503にも、乱数発生器1900から出力される乱数が入力される(乱数発生器1900からの乱数はパーミュテーション部1502〜1504に共通に入力される)。パーミュテーション部1503では、パーミュテーション部1501と、パーミュテーション部1504での並び替えに対応させてラウンド鍵Kiの並び替えを行い、並び替えたラウンド鍵を鍵加算部1400に供給する。
図14は、第2の実施形態の動作を説明するフローチャートである。前記第1の実施形態の説明で参照した図8の動作と、図14の動作の相違点は、図14では、マスク加算ステップA2の前に、ステップA11が追加されたことと、ステップA5とA9が変更されたことである。
はじめに、平文及び秘密鍵を暗号化処理回路へ入力し、平文は暗号化部1000、秘密鍵は鍵生成部2000へ入力される(ステップA1)。
次に、パーミュテーション部1504で平文の並び替えが行われる(ステップA11)。なお、このステップA11において、パーミュテーション部1504で並び替える回数は、ランダムに決定される。並び替える回数をランダムにすることで、最初に、非線形変換部1200で使用されるマスクがランダムになり、以降のラウンドにおいても、どのマスクが適用されるか、その順番に変化が生じる。パーミュテーション部1504に入力される並び替え回数Rは、乱数発生器1900で生成される。乱数生成器1900として、LFSR(Linear Feedback Shift Register)を利用するものや、一方向性関数を利用するもの、カオス系列を利用するもの、予めROMなどに記憶しておいた乱数を読みだすもの等、公知のものが用いられる。
図14において、ステップA2からA4は、図8のステップA2からA4と同じ処理を行うため、説明は省略する。
鍵加算部1400では、線形変換部1300の出力Zと鍵生成部2000から送られてきたラウンド鍵Kiとの排他的論理和を演算し、演算結果Qを出力する(ステップA5-1)。前記第1の実施形態と異なり、本実施形態では、1ラウンド目からデータの並び替えが行われている。
そのため、1ラウンド目ではステップA11で行われた並び替えと同じ並び替えをラウンド鍵Kiに対して行う。
2ラウンド目以降は、ステップA11で行われた並び替えに加え、これまで行われてきたステップA6での並び替え分だけ、ラウンド鍵Kiにも並び替えを行う。
なお、ラウンド鍵Kiの並び替えの処理は、ステップA11で行われた平文の並び替えに合わせて変える必要がある。
ステップA6からA8は、図8の前記第1の実施形態と同じ処理であるため、説明は省略する。
パーミュテーション部1502では、排他的論理和の結果C’に対して並び替えを行い、暗号文Cを得る(ステップA9-1)。パーミュテーション部1502では、ステップA11で行われた並び替えに加え、ステップA6で行われてきた全ての並び替えを逆に行い、C’を本来の位置に戻す。パーミュテーション部1502では、ステップA11でパーミュテーション部1504が行う並び替えに対応する乱数Rを乱数発生器1900から受け取り、パーミュテーション部1502では、ステップA11で行われた並び替えに対応させて、処並び替え処理を変える。
周期的に元の位置に戻る並び替えの場合、さらに、並び替えを行い元の位置に戻すようにしてもよい。例えば、4回周期で元の位置に戻る並び替えとして、暗号化処理を10ラウンドで行う場合、パーミュテーション部1501を10回通過している。もし、ステップA11で、1回分の並び替えを行っていた場合には、合計で11回分の並び替えが行われることになる。そのため、パーミュテーション部1502では、1回並び替えを行えば、全体で12回の並び替えが行われ、元の位置に戻ることになる。
パーミュテーション部1502は、暗号文Cを出力し終了となる(ステップA10)。
本実施形態では、ステップA11においてパーミュテーション部1504が何回並び替えを行ったかによって後段のステップA5-1、A9-1の処理が変わることになる。そのため、ステップA11のときの並び替えの回数R、もしくは、合計の並び替えの回数を記憶しておき、その情報を、ステップA5-1の鍵加算部1300の処理、A9-1のパーミュテーション部1504の処理で用いる。
(実施例1)
図13を参照して説明した第2の実施形態の一具体例として、128ビットAES(AES128)を用いるときの暗号化処理回路を説明する。
図15は、実施例1の暗号化処理回路の暗号化部の構成を示す図である。暗号化部は、マスクとの排他的論理和3101及び3102、マスク付SBOXを16個備える非線形変換部3200、図13の線形変換部1300に対応する行シフト(ShiftRows)3301と列混合(MixColumns)3302、ラウンド鍵を排他的論理和で加算するラウンド鍵加算(AddRoundKey)3400、3401、パーミュテーション部3501〜3504、とを備えている。
AES128では、ラウンド処理の前に鍵加算を行う必要があるため、鍵加算用の排他的論理和3401を追加している。また、線形処理部としてはShiftRowsとMixColumnsが用いられる。そのため、ShiftRows3301とMixColumns3302を線形処理部として設けている。なお、最終ラウンドではMixColumns3302での処理は行われないため、MixColumnsを回避するための経路を設けている。
AES128でのパーミュテーションとして、4バイトの巡回シフトを採用する。図9で示したように、AES128では、4バイトの巡回シフトによる並び替えを行って暗号化処理を行っても、最後に、逆並び替えを行えば、本来の暗号文を得ることができるためである。
最初のパーミュテーション部3504では、乱数Rにしたがって4バイト単位の巡回シフトを行う。乱数Rがとりうる値はR={0,1,2,3}のいずれかとし、R*4バイト分の巡回シフトを行う。
なお、AESに適用可能なパーミュテーションとしては、4バイト巡回シフト以外にも存在する。例として、1〜4バイトを1列目、5〜8バイト目を2列目と4バイト単位で列を構成し、各列の内部で同じ巡回シフトを行う方法がある。この並び替えを行った例を以下に示す。
Figure 2014119512
Figure 2014119512
非線形変換部3200の各非線形変換テーブルS1〜S16は1バイト単位で処理を行う。
本実施例で用いるマスク値(16バイト)は以下の通りとする。なお、数値は16進法で表記している。
SBOX入力側マスク Ma = {d7 30 50 e6 9b 2c bd 42 24 c7 8a b9 68 db 67 1d}
SBOX出力側マスク Mb = {48 6a 74 71 7d 88 e2 19 f2 b4 fe 1e c7 56 68 76}
初期加算のマスク Mp = Ma = {d7 30 50 e6 9b 2c bd 42 24 c7 8a b9 68 db 67 1d}
最後のアンマスク Mc = {c7 6a e2 1e 48 88 fe 76 7d b4 68 71 f2 56 74 19}
これらのマスクのうち、MpとMcは、図示されないROMに記憶される。
一方、MaとMbは、非線形変換部3200のSBOX(S1〜S16)3201〜3216に事前に反映しておく。元のSBOXの関数をS(x)とした場合、反映後のSBOX Sn(x)は以下で与えられる。
Sn(x)=S(x(XOR)ma) (XOR) mb
ここで、ma、mbはMaとMbの中のある1バイト分のマスク値を示す。
マスク値の関係として、MaはMbに、ShiftRows, Mixcolumnsで演算した後、パーミュレーション(4バイト巡回シフト)をしたものとなる。
MpはMaと等価である。
Mcは、MbにShiftRows、パーミュテーション(4バイト巡回シフト)をしたものとなる。
図16は、図15の実施例1の動作を説明するフローチャートである。図15、図16を参照して、実施例1の動作を説明する。
はじめに、平文及び秘密鍵を暗号化処理回路へ入力し、平文は暗号化部1000、秘密鍵は鍵生成部2000へ入力される(ステップB1)。
パーミュテーション部3504で乱数Rの分だけ、4バイト巡回シフトを、平文に対して行う(ステップB11)。
排他的論理和3101で、平文とマスクMpとの排他的論理和が演算される。この演算により、平文にマスクがかかる(ステップB2)。
次に、AddRoundKey3401で、平文とマスクMpとの排他的論理和に対して、鍵生成部2000で生成されたラウンド鍵(秘密鍵)との排他的論理和を演算する(ステップB5-1)。このとき、ラウンド鍵はパーミュテーション部3503において、乱数Rの分だけ4バイト巡回シフトされている。
マスク処理後、ラウンド処理としてステップB3〜B7が行われる。
まず、非線形変換部3200で、ステップB2の出力値を非線形変換し、Yを出力する(ステップB3)。非線形変換部3200の内部では、ステップB2の出力値を1バイトごとに分割し、バイトごとにマスク付SBOX (S1〜S16)3201〜3216で非線形変換を行う。
ShiftRows3301では、非線形変換部3200の出力に対して、ShiftRows演算を行う(ステップB4-1)。
MixColumns3302では、ShiftRows3301の出力に対して、MixColumns演算を行う(ステップB4-2)。
AddRoundKey3400では、MixColumnsの演算結果と、鍵生成部2000で生成されたラウンド鍵をさらにパーミュテーション部3503において4バイト巡回シフトを数回行ったものとの排他的論理和を演算する(ステップB5-2)。
パーミュテーション部3503で4バイト巡回シフトを行う回数Rotは、Rと、現在のラウンド数i(i=1〜10)から以下のように計算される。
Rot = (R + i -1 ) % 4 (%は剰余)
パーミュテーション3501では、AddRoundKey3400の演算結果を4バイト巡回シフトする(ステップB6)。
パーミュテーション3501での演算後、現在のラウンドが9ラウンド目(次が最終ラウンド)かどうかを判断する(ステップB7)。次が最終ラウンドではない場合、ステップB3に戻りラウンド処理を繰り返す。一方、次が最終ラウンドの場合、ステップB3-1へ進む。
10ラウンド目では、MixColumnsの演算がスキップされる。そのため、非線形処理(ステップB3-1)、ShiftRows(ステップB4-1)、AddRoundKey(ステップB5-2)、パーミュテーション(ステップB6)が1〜9ラウンド目と同様に行われる。ここでラウンド処理が終了となる。
続いて、排他的論理和演算部3102では、ラウンド処理の結果とアンマスクMcとの排他的論理和を演算する(ステップB8)。
次に、パーミュテーション3502では、ラウンド処理の結果とアンマスクMcとの排他的論理和に対して、数回の4バイト巡回シフトを行う(ステップB9-1)。
ステップB9-1での巡回シフトの回数 IRotは、最初のR及び10ラウンド分の4バイト巡回シフトされたデータを元の位置に戻すものとなり、次のように計算される。
IRot = 4 - {(R+10) % 4}
最後に、パーミュテーション3502の巡回シフトの結果を暗号文として出力して終了する(ステップB10)。
本実施例を適用したときのデータの遷移を、図17〜図35に示す。図17〜図20は、R=0のときの遷移を示す図である(図17:ラウンド0−2、図18:ラウンド3−5、図19:ラウンド6−8、図20:ラウンド9、10、Output)。Outputは、ラウンド処理を規定回数繰り返した後のパーミュテーション部1501の出力とアンマスクMcとの排他的論理和をとり、排他的論理和演算結果をパーミュテーション部1502で並び替える処理からなる。図21〜図24は、R=1のときの遷移を示す図である(図21:ラウンド0−2、図22:ラウンド3−5、図23:ラウンド6−8、図24:ラウンド9、10、Output)。図25〜図28は、R=2のときの遷移を示す図である(図25:ラウンド0−2、図26:ラウンド3−5、図27:ラウンド6−8、図28:ラウンド9、10、Output)。図29〜図32は、R=3のときの遷移を示す図である(図29:ラウンド0−2、図30:ラウンド3−5、図31:ラウンド6−8、図32:ラウンド9、10、Output)。また比較例のAES128におけるデータ遷移を、図33〜図36に示す。図37に、比較例のAESの暗号化部の回路構成を示す。
図17〜図36では、以下のデータに対して処理を行っている。
平文={32 43 f6 a8 88 5a 30 8d 31 31 98 a2 e0 37 07 34}
秘密鍵={2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c}
暗号文={ 39 25 84 1d 02 dc 09 fb dc 11 85 97 19 6a 0b 32}
SBOX入力側マスク Ma = {d7 30 50 e6 9b 2c bd 42 24 c7 8a b9 68 db 67 1d}
SBOX出力側マスク Mb = {48 6a 74 71 7d 88 e2 19 f2 b4 fe 1e c7 56 68 76}
初期加算のマスク Mp = Ma = {d7 30 50 e6 9b 2c bd 42 24 c7 8a b9 68 db 67 1d}
最後のアンマスク Mc = {c7 6a e2 1e 48 88 fe 76 7d b4 68 71 f2 56 74 19}
なお、1ラウンド目から10ラウンド目のAfter AddInputMask、After SubBytes、After AddOutputMask、InputMask、OutputMaskは、データの遷移を示すために記載されているが、実際の処理では、Start of Roundの値が、図15の非線形変換部3200に入力されたら、After AddOutputMaskの値のみが出力される。そのため、After AddInputMask、After SubBytes、After InputMask、OutputMaskの値は、非線形変換部3200の変換処理では現れない。
(実施例2)
暗号として3D暗号を用いるときの暗号化処理回路を実施例2として説明する。
はじめに、3D暗号を用いるときの暗号化処理回路の一般的な構成例を説明する。3D暗号とは、AESの暗号化処理を利用したアルゴリズム構造を持ち、AESが4x4の16バイト(128ビット)を処理単位としているのに対し、3D暗号では4x4x4の64バイト(512ビット)の3次元ブロックを処理単位としている。また、このブロックに対してAES的処理と3次元的ラウンド関数が追加されている(非特許文献6参照)。3D暗号で扱われるデータ形式を次に示す。
Figure 2014119512
3D暗号では4x4x4の64バイト(512ビット)の3次元ブロックが1データブロックとなる。16バイト区切りで1スライスとし、1から16バイト目が1スライス目、17から32バイト目が2スライス目、33から48バイト目が3スライス目、49から64バイト目が4スライス目となる。
図23は、3D暗号の暗号化回路の構成(参考例)を示す図である。3D暗号の暗号化回路は、非線形変換部4600、拡散関数部(θ)4301、最大距離分離行列演算部(π)4302、ラウンド鍵加算部(AddRoundKey)4400、4401を備えている。
非線形変換部4600は、入力値Xを非線形変換し、変換結果を出力値Yとして出力する。非線形変換部4600は、64個の非線形変換テーブル(γ)4601〜4664で構成される。非線形変換テーブル(γ)4601〜4664では、AESのSBOX(Substitution Box)と同様の非線形変換を行う。
拡散関数部(θ)4301では、非線形変換部4600の出力値Yに対して拡散処理を行い、処理結果を最大距離分離行列演算部(π)4302へ出力する。拡散関数部(θ)4301は、拡散関数θ1又はθ2にしたがって拡散処理を行う。なお、奇数ラウンドでは、θ1による拡散を行い、偶数ラウンドではθ2による拡散を行う。
θ1は、各スライスの中でShiftRowsを行う処理となる。θ2は、各スライスの1列目の4バイトを4列あわせたものを4x4の行列とし、その行列に対して、ShiftRowsを行う。Xに対してθ1及びθ2を適用した場合の例を下に示す。
Figure 2014119512
Figure 2014119512
最大距離分離行列演算部(π)4302では、拡散関数部(θ)4301の処理結果の各スライスと、4x4の最大距離分離行列(MDS)との積を計算する。最大距離分離行列演算部(π)4302で行われる計算の例として、Xの第1スライスとの計算を示す。
Figure 2014119512
なお、MDS内の要素は16進数となる。ラウンド鍵加算部(AddRoundKey)4400、4401は最大距離分離行列演算部(π)4302の処理結果と512ビットのラウンド鍵との排他的論理和を演算し、演算結果を出力する。
図39は、図38の参考例の動作を説明するフローチャートである。図38、図39を参照して、参考例の動作を説明する。
はじめに、平文及び秘密鍵を暗号化処理回路へ入力し、平文は暗号化部1000、秘密鍵は鍵生成部2000へ入力される(ステップC1)。
ラウンド鍵加算部(AddRoundKey)4401で、平文とラウンド鍵Kiとの排他的論理和を演算する(ステップC2)。
排他的論理和後、ラウンド処理としてステップC3〜C7が行われる。
まず、非線形変換部4600で、ラウンド鍵加算部(AddRoundKey)4400又は4401の出力結果の非線形変換を行う(ステップC3)。非線形変換部4600の内部では、非線形変換部4600への入力値を1バイトごとに分割し、非線形変換テーブル(γ)4601〜4664で非線形変換を行う。
拡散関数部(θ)4301では、奇数ラウンド目であるか否かを判断する(ステップC4)。
奇数ラウンド目の場合、非線形変換部4200の出力に対して拡散関数θ1で拡散処理を行う(ステップC5-1)。
偶数ラウンド目の場合、非線形変換部4200の出力に対して拡散関数θ2で拡散処理を行う(ステップC5-2)。
最大距離分離行列演算部(π)4302では、拡散関数部(θ)4301の出力とMDS行列πとの演算を行う(ステップC6)。
ラウンド鍵加算部(AddRoundKey)4400では、最大距離分離行列演算部(π)4302の演算結果と、鍵生成部2000で生成されたラウンド鍵との排他的論理和を演算する(ステップC2)。
ラウンド鍵加算部(AddRoundKey)4400での演算後、現在のラウンドが、21ラウンド目(次が最終ラウンド)であるか否かを判断する(ステップC7)。
次が最終ラウンドではない場合には、ステップC3に戻りラウンド処理を繰り返す。次が最終ラウンドの場合、ステップC3-1へ進む。
22ラウンド目では、MDS行列πとの演算がスキップされる。そのため、非線形処理(ステップC3)、拡散処理θ2(ステップC5-2)、ラウンド鍵加算部(AddRoundKey)400での処理(ステップC2)が行われる。ここでラウンド処理が終了となる。
最後に、ラウンド鍵加算部(AddRoundKey)4400の結果を暗号文として出力して終了する(ステップC8)。
以上の3D暗号の暗号化処理回路へ本発明を適用した実施例2を示す。図40は、実施例2の暗号化部の構成を示す図である。図38の3D暗号の暗号化部の回路構成との相違点は、マスク演算用の排他的論理和演算部4101、4102とパーミュテーション部4501〜4504が追加された点と、図38の非線形変換部4600の代わりに、マスク付の非線形変換テーブル(γ1〜γ64)4201〜4264を備える非線形変換部4200を備えている点である。
排他的論理和演算部4101、4102では、それぞれマスクMpとアンマスクMcとの排他的論理和を演算する。
パーミュテーション部4501〜4504では、入力されたデータの並び替えを行う。
非線形変換部4200は入力されたデータの非線形変換を行う。非線形変換部4200は64個のマスク付非線形変換テーブル(γ1〜γ64)4201〜4264を備える。非線形変換部4200では、入力値を1バイトずつ64個のデータに分割し、それぞれ非線形変換テーブル(γ1〜γ64)4201〜4264でマスク付きの非線形変換処理を行う。
非線形変換テーブル(γ1)4201では、1バイトの入力値とマスクm1aを排他的論理和で演算した値に対して、非線形変換テーブルγで非線形変換を行い、非線形変換した結果にマスクm1bを排他的論理和した値を出力値としてとる。
実施例2のマスク値について説明する。3D暗号では奇数ラウンドと偶数ラウンドで拡散処理が変わるため、対策が必要となる。
第1の対策は、奇数ラウンドと偶数ラウンドで非線形変換部を切り替える方法である。この対策をとったときの暗号化部1000の構成例を図41に示す。マスク値の組み合わせとして2通り用意し、それにあわせて、2つの非線形変換部420Aと420Bを備えている。第1、第2の非線形変換部420A、420Bの出力値は、セレクタ4270で選択される。奇数ラウンド時には、第1の非線形変換部420Aの出力値が、偶数ラウンド時には、第2の非線形変換部420Bの出力値が選択される。
マスク値の設定では、第1の非線形選択部420Aの出力側マスクMb-A、第2の非線形選択部4201Bの出力側マスク Mb-Bは任意に設定できる。
第1の非線形選択部420Aの入力側マスクMa-Aは、直前の偶数ラウンドでMb-Bに対して、θ2、π、及びパーミュテーションが行われたものとする。
これにより、偶数ラウンド中に演算が行われたMb-Bを、次の奇数ラウンドの第1の非線形選択部420Aにて相殺することができる。
一方、第2の非線形変換部420Bの入力側マスクMa-Bは、直前の偶数ラウンドでMb-Aに対してθ1、π、及びパーミュテーションが行われたものとする。
これにより、奇数ラウンド中に演算が行われたMb-Aを、次の偶数ラウンドの第2の非線形選択部420Bにて相殺することができる。
また、最初のマスクMpは、1ラウンド目は第1の非線形選択部420Aが選択されるため、Ma-Aと等しくなる。
一方、Mcは、最後の22ラウンド目には、πとの行列演算が行われないため、Mb-Bに対して、θ2とパーミュテーションが行われた値となる。
こちらの対策では、非線形選択部を2つ用意する必要があるが、64種類のマスク値を設定することが可能となる。
2番目の対策は、出力側のマスクMbに対してθ1とθ2のどちらの演算が行われても、結果が等しくなるように、マスクを設定するものである。設定の仕方として、まず第1スライスにあたる1〜16バイト目の出力側マスクMb1に任意の値を設定する。次に、1〜16バイト目の入力側マスクMa1を求める。ここでは、Ma1はMb1に対してθ1とπ、及びパーミュテーションを行ったものとする。このMa1とMb1を基本として、他の3スライスのマスクを設定する。
まず、第2スライスの17〜32バイト目の入力側マスクMa2と出力側マスクMb2は、それぞれMa1、Mb1を12バイト巡回シフトしたものとする。
第3スライスの33〜48バイト目の入力側マスクMa3と出力側マスクMb3は、それぞれMa1、Mb1を8バイト巡回シフトしたものとする。
さらに、第4スライスの49〜64バイト目の入力側マスクMa4と出力側マスクMb4は、それぞれMa1、Mb1を4バイト巡回シフトしたものとする。
以上の方法で設定した入力側マスクMaを以下に示す。
Figure 2014119512
このように設定することで、1つの非線形処理部を備えるだけで、ラウンド処理を繰り返すことができる。2つ目の対策では、非線形処理部は1つですむが、マスク値は16種類のみ設定可能である。
次に、実施例2における、パーミュテーションについて説明する。
3D暗号に適用可能なパーミュテーションとして、各スライス内(16バイトごと)の4バイト巡回シフトがあげられる。Xに対して、各スライス内(16バイトごと)の4バイト巡回シフトを行った例P(X)を示す。以降の説明ではこの並び替えを実施するものとする。
Figure 2014119512
なお、別のパーミュテーションとしては、スライスごとシフトしてしまう方法がある。これは、16バイト単位で巡回シフトすることと等しい。
もう1つのパーミュテーションとして、1〜4バイトを1列目、5〜8バイト目を2列目と4バイト単位で列を構成し、各列の内部で同じ巡回シフトを行う方法がある。
図42は、実施例2の動作を説明するフローチャートである。図39の比較例との相違点は、ステップC9、C10、及び、ステップC11〜13が追加された点と、図39のステップC3、C3−1が、マスク付非線形変換(ステップC3−2,3−3)に変更された点である。
はじめに、平文及び秘密鍵を暗号化処理回路へ入力し、平文は暗号化部1000、秘密鍵は鍵生成部2000へ入力される(ステップC1)。
パーミュテーション部4504で、各スライス内での4バイト巡回シフトをR回行う(ステップC9)。
排他的論理和演算部4101で、並び替えられた平文とマスクMpとの排他的論理和を演算する(ステップC10)。
ラウンド鍵加算部(AddRoundKey)4401で、排他的論理和演算部4101の演算結果と鍵生成部2000で生成されたラウンド鍵との排他的論理和を演算する。(ステップC2)。このとき、ラウンド鍵はパーミュテーション部4503において、乱数Rの分だけ各スライス内で4バイト巡回シフトされている。
ラウンド鍵との排他的論理和後、ラウンド処理としてステップC3〜C7が行われる。
まず、非線形変換部4200で、ラウンド鍵加算部(AddRoundKey)4401又はパーミュテーション4501の出力結果の非線形変換を行う(ステップC3-2)。
非線形変換部4200の内部では、入力値を1バイトごとに分割し、マスク付非線形変換テーブル(γ1〜γ64)4201〜4264で非線形変換を行う。
拡散関数部(θ)4301では、奇数ラウンド目であるか否かを判断する(ステップC4)。
奇数ラウンド目である場合、非線形変換部4200の出力に対して拡散関数θ1で拡散処理を行う(ステップC5-1)。
偶数ラウンド目である場合、非線形変換部4200の出力に対して拡散関数θ2で拡散処理を行う(ステップC5-2)。
最大距離分離行列演算部(π)4302では、拡散関数部(θ)4301の出力とMDS行列πとの演算を行う(ステップC6)。
ラウンド鍵加算部(AddRoundKey)4400では、最大距離分離行列演算部(π)4302の演算結果と、鍵生成部2000で生成されたラウンド鍵との排他的論理和を演算する(ステップC2)。
パーミュテーション部4503で各スライス内の4バイト巡回シフトを行う回数 Rotは、Rと、現在のラウンド数i(i=1〜10)を使って次のように計算される。
Rot = (R + i -1 ) % 4 (%は剰余)
パーミュテーション4501では、ラウンド鍵加算部(AddRoundKey)4400の出力結果に対してスライス内での4バイト巡回シフトを行う(ステップC11)。
パーミュテーション4501での並び替え後、現在のラウンドが21ラウンド目(次が最終ラウンド)であるか否かを判断する(ステップC7)。
次が最終ラウンドではない場合、ステップC3-2に戻りラウンド処理を繰り返す。次が最終ラウンドの場合、ステップC3-3へ進む。
22ラウンド目では、MDS行列πとの演算がスキップされる。そのため、非線形処理(ステップC3-2)、拡散処理θ2(ステップC5-2)、ラウンド鍵加算(AddRoundKey)(ステップC2)、パーミュテーション(ステップC11)が行われる。ここでラウンド処理が終了となる。
続いて、排他的論理和演算部4102では、ラウンド処理の結果とアンマスクMcとの排他的論理和を演算する(ステップC12)。
次に、パーミュテーション4502では、ラウンド処理の結果とアンマスクMcとの排他的論理和に対して、数回の各スライス内での4バイト巡回シフトを実施する(ステップC13)。
ステップC13での巡回シフトの回数 IRotは、最初のR及び22ラウンド分の4バイト巡回シフトされたデータを元の位置に戻すものとなり、次のように計算される。
IRot = 4 - {(R+22) % 4}
最後に、パーミュテーション4502の結果を暗号文として出力して終了する(ステップC8)。
なお、上記実施形態1、2、実施例1、2の各暗号化処理回路は、ハードウェア、ソフトウェア又はこれらの組合わせにより実現することができる。また、上記の暗号化処理回路その他の装置等により行なわれる暗号化処理方法も、ハードウェア、ソフトウェア又はこれらに組合わせにより実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば、光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
上記の実施形態及び実施例では、暗号化処理回路について説明したが、本発明を適用して、復号処理回路(すなわち、暗号解読処理回路)も、暗号化処理回路と同様な構成とすることができる。復号処理とは、暗号化処理とは逆に、暗号文を平文に戻す処理のことである。この場合、「暗号化」は、「復号」に置き換わる。
例えば、図1において、「暗号化部1000」は「復号部1000」に置き換わる。図1において、暗号化部1000を復号部とした場合、「暗号文」を入力とし、「平文」を出力とする。また、図2の暗号化部は、復号部に置き換わる。以下、図2の暗号化部を復号部とした場合を説明する。図2において、入力である暗号文は、図の右側から入力され、図2の左側の平文が復号結果として出力される。前記実施形態1で暗号化された暗号文は、復号部に入力され、復号部におけるパーミュテーション部1502において並び替えが行われる。復号部におけるパーミュテーション部1502での並び替えは、暗号化部での並び替えとは逆とされる。復号部における排他的論理和演算部1102でアンマスク値Mcとの排他的論理和がとられる。排他的論理和演算結果は、n個に分割され、パーミュテーション部1501で並び替えが行われる。復号部におけるパーミュテーション部1501での並び替えは、暗号化部での並び替えとは逆とされる。鍵加算部1400で、ラウンド鍵Kiとの加算(等価的に減算)が行われ、演算結果を線形変換部1300で線形変換する。復号部における線形変換部1300は、暗号化部における線形変換L(・)に対して逆変換L-1(・)となる。線形変換部1300で逆変換した結果を、非線形変換部1200のテーブル(S1〜Sn)に入力する。復号部におけるテーブル(S1〜Sn)は、暗号化部におけるテーブル(S1〜Sn)と入力と出力が逆となる(暗号化部におけるテーブルの出力を入力(テーブルインデックス)とし、暗号化部におけるテーブルの入力を、テーブルインデックスに対応する出力値とする)。また、復号部におけるテーブル(S1〜Sn)では、暗号化部におけるテーブルの出力側のマスクMbを入力側のマスクとし、暗号化部におけるテーブルの入力側のマスクMaを入力側のマスクとする。復号部において、規定回数のラウンド処理が繰り返されると、非線形変換部1200のテーブル(S1〜Sn)のn個の出力値を結合した値に対して、排他的論理和演算部1101でマスク値Mpと排他的論理和をとった値が平文として出力される。また復号処理における動作は、例えば図8のフローチャートの終了A10を開始とし、ステップA10〜A2に逆順に実行することで、ステップA2の結果、平文が出力される。図12、図13を参照して説明した第2の実施形態の暗号化部についても、上記と同様にして、復号部が構成される(ただし、暗号化部におけるパーミュテーション部1504の並び換え回数である乱数(R)の値と、同一の並び換え回数が、復号部におけるパーミュテーション部1504に設定されるように構成される)。
なお、以下では、サーチされた特許文献2と前記した実施形態との対比(相違点)について概説する。特許文献2(特開2008−131108号)においては、第1の経路選択手段によってマスク値の順番を入れ替えた後、第2の経路選択手段によってマスク値の位置を元に戻すことで、非線形変換手段でマスク付きのまま処理を行うことを可能としており、第1、第2の経路選択手段を用いる必要がある。前記実施形態では、パーミュテーション処理を行う箇所は2〜4箇所存在するが、それらのパーミュテーション処理は、マスク値の位置を元に戻すことを目的とするものではない。パーミュテーション部1501は、次のラウンドで使用する非線形処理テーブルを切り替えるために、データを並び替える。パーミュテーション部1502は、これまでパーミュテーション部1501で行われてきた全ての並び替えを逆に行う等して、本来の位置に暗号文を戻す。パーミュテーション部1502は、最後の出力結果を得るために並び替えを行うものであり、マスク値の位置を元に戻して、非線形変換を行うためではない。また、パーミュテーション部1503は、これまでのラウンド処理でパーミュテーション部にて行われてきた全ての並び替え処理をラウンド鍵Kiに対して行う。これは、線形処理部1300の出力Zとラウンド鍵Kiとのデータ位置の整合をとるためである。さらにパーミュテーション部1504は、入力された平文に対して並び替え処理を行うものである。このように、特許文献2の「経路選択回路204が、経路選択回路203の逆変換を実行するため、Sboxへのデータ入力時にはデータ順序が戻る」に対応する要素は存在しない。
上記した実施形態、実施例の少なくとも一部は以下のように付記される(ただし、以下に制限されない)。
(付記1)
暗号鍵を用いて平文を複数のラウンドで暗号化する暗号化処理回路であって、
暗号化処理回路は、第1、第2の排他的論理和演算部と、非線形変換部と、線形変換部、第1、第2のパーミュテーション部と、を備え、
前記第1の排他的論理和演算部は、平文とマスク値との排他的論理和をとり、
前記非線形変換部は、複数のテーブルを備え、
前記テーブルの入力及び出力にそれぞれマスク値をかけ、
前記テーブルの入力に対して、入力側のマスクをかけることで、マスク前の値に変換し、前記マスク前の値を用いて前記テーブルに従った非線形変換を行い、
前記非線形変換した値に対して、出力側のマスクをかけた値を出力し、
前記線形変換部は、入力された複数の値に対して、線形変換をとり、入力は前記非線形変換部の出力と結合されており、
前記第1のパーミュテーション部は、入力されたデータ列の並び替えを行い、入力は前記線形変換部の出力と結合されており、
前記第2の排他的論理和演算部は、ラウンド処理終了後のデータ列とアンマスク値との排他的論理和をとり、
前記第2のパーミュテーション部は、ラウンド処理終了後のデータ列とアンマスク値との排他的論理和の出力結果の並び替えを行い、並び替えた結果を暗号文として出力すること、を特徴とする、暗号化処理回路。
(付記2)
前記入力側マスク値と前記出力側マスク値は固定値であり、前記入力側マスクは、前記出力側マスクを前記線形変換部、及び、前記第1のパーミュテーション部で変換した値であることを特徴とする付記1に記載の暗号化処理回路。
(付記3)
前記第1のパーミュテーション部で行う並び替えは、任意のデータ列を、前記非線形変換部で非線形変換し、さらに前記線形変換部で線形変換した結果を前記第1のパーミュテーション部で並び替えた第1の結果と、
同じデータ列を前記第1のパーミュテーション部で並び替えた結果を前記非線形変換部で非線形変換し、さらに前記線形変換部で線形変換した第2の結果と、が互いに等しくとなるような並び替えを行うことを特徴とする付記1又は2に記載の暗号化処理回路。
(付記4)
第3のパーミュテーション部を備え、前記第3のパーミュテーション部は、平文の並び替えを行い、前記前記第3のパーミュテーション部で並び替えた平文を前記第1の排他的論理和演算部に入力することを特徴とする付記1乃至3のいずれか一に記載の暗号化処理回路。
(付記5)
暗号化アルゴリズムとしてAESを対象とし、前記第1のパーミュテーション部では、4の倍数のバイトの巡回シフトによって並び替えを行い、
前記第2のパーミュテーション部では、4の倍数のバイトでの巡回シフトによって暗号文を出力することを特徴とする付記1乃至3のいずれか一に暗号化処理回路。
(付記6)
暗号化アルゴリズムとしてAESを対象とし、
前記第1のパーミュテーション部では、4の倍数のバイトでの巡回シフトによって並び替えを行い、
前記第2のパーミュテーション部では、4の倍数のバイトでの巡回シフトによって暗号文を出力し、
前記第3のパーミュテーション部では、4の倍数のバイトでの巡回シフトによって平文の並び替えを行うことを特徴とする付記4記載の暗号化処理回路。
(付記7)
暗号化アルゴリズムとしてAESを対象とし、
前記第1のパーミュテーション部では、4バイトごとに列を構成し、各列の中で同じ巡回シフトによって並び替えを行い、
前記第2のパーミュテーション部では、4バイトごとに列を構成し、各列の中で同じ巡回シフトによって暗号文を出力することを特徴とする付記1乃至3のいずれか一に記載の暗号化処理回路。
(付記8)
暗号化アルゴリズムとしてAESを対象とし、
前記第1のパーミュテーション部では、4バイトごとに列を構成し、各列の中で同じ巡回シフトによって並び替えを行い、
前記第2のパーミュテーション部では、4バイトごとに列を構成し、各列の中で同じ巡回シフトによって暗号文を出力し、
前記第3のパーミュテーション部では、4バイトごとに列を構成し、各列の中で同じ巡回シフトによって平文の並び替えを行うことを特徴とする付記4に記載の暗号化処理回路。
(付記9)
暗号化アルゴリズムとして3D暗号を対象とし、
第1のスライスにかかるマスクに対して、第2のスライスにかかるマスクは前記第1のスライスにかかるマスクを12バイト巡回シフトした値であり、
第3のスライスにかかるマスクは前記第1のスライスにかかるマスクを8バイト巡回シフトした値であり、
第4のスライスにかかるマスクは前記第1のスライスにかかるマスクを4バイト巡回シフトした値であることを特徴とする付記1乃至4のいずれか一に記載の暗号化処理回路。
(付記10)
暗号化アルゴリズムとして3D暗号を対象とし、
前記第1のパーミュテーション部では、第1のスライスの中で4の倍数のバイトでの巡回シフトによって並び替えを行い、
第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
前記第2のパーミュテーション部では、第1のスライスの中で4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果を結合したものを暗号文とする、ことを特徴とする付記1乃至3、9のいずれか一に記載の暗号化処理回路。
(付記11)
暗号化アルゴリズムとして3D暗号を対象とし、
前記第1のパーミュテーション部では、第1のスライスの中で4の倍数のバイトでの巡回シフトによって並び替えを行い、
第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
前記第2のパーミュテーション部では、第1のスライスの中で4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果を結合したものを暗号文とすること、
前記第3のパーミュテーション部では、第1のスライスの中で4の倍数のバイトでの巡回シフトによって平文を並び替え、
第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって平文を並び替え、
第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって平文を並び替え、
第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって平文を並び替えることを特徴とする付記4又は9に記載の暗号化処理回路。
(付記12)
平文とマスク値との排他的論理和をとる第1の排他的論理和演算部と、
入力値を複数に分割した値をそれぞれ非線形変換する複数のテーブルを含む非線形変換部と、
前記非線形変換部の前記複数のテーブルから出力された複数の値に対して線形変換を施す線形変換部と、
前記線形変換部の出力とラウンド鍵とを加算する鍵加算部と、
前記鍵加算部の出力の並び替えを行う第1のパーミュテーション部と、
を備え、
初回のラウンド処理では、前記非線形変換部には、前記第1の排他的論理和演算部の出力が入力され、2回目以降のラウンド処理では前記非線形変換部には、前回のラウンド処理での前記第1のパーミュテーション部の出力が入力され、
前記非線形変換部において、前記テーブルは、前記テーブルへの入力に対して入力側のマスク値と排他的論理和をとった値を用いて前記テーブルに従った非線形変換を行い、前記非線形変換した値に対して出力側のマスク値と排他的論理和をとった値を出力し、
前記非線形変換部、前記線形変換部、前記鍵加算部、及び、前記第1のパーミュテーション部によるラウンド処理が規定回数行われ、
前記規定回数のラウンド処理終了後の前記第1のパーミュテーション部の出力とアンマスク値との排他的論理和をとる第2の排他的論理和演算部と、
前記第2の排他的論理和演算部の出力を並び替え暗号文として出力する第2のパーミュテーション部と、
を備えたことを特徴とする暗号化処理回路。
(付記13)
前記非線形変換部において、前記テーブルの入力に対して、入力側のマスクをかけることで、マスク前の値に変換し、前記マスク前の値を用いて前記テーブルに従った非線形変換を行うことを特徴とする付記12記載の暗号化処理回路。
(付記14)
前記入力側のマスク値は、前記出力側のマスク値を、前記線形変換部と前記第1のパーミュテーション部で変換した値であることを特徴とする付記12又は13記載の暗号化処理回路。
(付記15)
前記平文の並び替えを行う第3のパーミュテーション部をさらに備え、
前記第1の排他的論理和演算部は、前記第3のパーミュテーション部の出力とマスク値との排他的論理和をとることを特徴とする付記12乃至14のいずれか一に記載の暗号化処理回路。
(付記16)
前記第1のパーミュテーション部での並び替えに対応して前記ラウンド鍵の並び替えを行い、前記鍵加算部に供給する第4のパーミュテーション部を備えたことを特徴とする付記12乃至15のいずれか一に記載の暗号化処理回路。
(付記17)
データ処理装置による暗号化処理方法であって、
平文とマスク値との排他的論理和をとる第1の排他的論理和工程と、
入力値を複数に分割した値をそれぞれ複数のテーブルを用いて非線形変換するにあたり、前記テーブルへの入力に対して入力側のマスクと排他的論理和をとった値を用いて、前記テーブルに従った非線形変換を行い、前記非線形変換した値に対して、出力側のマスク値と排他的論理和をとった値を出力する非線形変換工程と、
前記非線形変換工程から出力された複数の値に対して線形変換を施す線形変換工程と、
前記線形変換された値とラウンド鍵とを加算する鍵加算工程と、
前記鍵加算工程による加算結果の並び替えを行う第1のパーミュテーション工程と、
を含み、
初回のラウンド処理では、前記非線形変換工程には、前記第1の排他的論理和工程の演算結果が入力され、2回目以降のラウンド処理では、前記非線形変換工程には、前回のラウンド処理における前記第1のパーミュテーション工程の出力が入力され、
前記非線形変換工程、前記線形変換工程、前記鍵加算工程、前記第1のパーミュテーション工程によるラウンド処理が規定回数行われ、
前記規定回数のラウンド処理終了後の前記第1のパーミュテーション工程の出力とアンマスク値との排他的論理和をとる第2の排他的論理和工程と、
前記第2の排他的論理和工程の演算結果を並び替え暗号文として出力する第2のパーミュテーション工程と、
をさらに含むことを特徴とする暗号化処理方法。
(付記18)
前記非線形変換工程において、前記テーブルの入力に対して、入力側のマスクをかけることで、マスク前の値に変換し、前記マスク前の値を用いて前記テーブルに従った非線形変換を行うことを特徴とする付記17記載の暗号化処理方法。
(付記19)
前記入力側のマスク値は、前記出力側のマスク値を、前記線形変換工程と前記第1のパーミュテーション工程で変換した値であることを特徴とする付記17又は18記載の暗号化処理方法。
(付記20)
前記第1のパーミュテーション工程での並び替えに対応して前記ラウンド鍵の並び替えを行い、前記鍵加算工程に供給する第4のパーミュテーション工程を含むことを特徴とする付記17乃至19のいずれか一に記載の暗号化処理方法。
(付記21)
前記第1のパーミュテーション工程は、
前記非線形変換工程で非線形変換し、前記線形変換工程で線形変換した結果を、前記第1のパーミュテーション工程で並び替えた結果と、
前記第1のパーミュテーション工程で並び替えた結果を、前記非線形変換工程で非線形変換し、前記線形変換工程で線形変換した結果と、
が互いに一致するような並び替えを行う、ことを特徴とする付記17乃至20のいずれか一に記載の暗号化処理方法。
(付記22)
前記平文の並び替えを行う第3のパーミュテーション工程をさらに備え、
前記第1の排他的論理和工程は、前記第3のパーミュテーション工程の出力とマスク値との排他的論理和をとることを特徴とする付記17乃至21のいずれか一に記載の暗号化処理方法。
(付記23)
暗号化アルゴリズムとしてAES(Advanced Encryption Standard)を対象とし、
前記第1のパーミュテーション工程は、4の倍数のバイトの巡回シフトによって並び替えを行い、
前記第2のパーミュテーション工程は、4の倍数のバイトでの巡回シフトによって暗号文を出力する、ことを特徴とする、付記17乃至21のいずれか一に記載の暗号化処理方法。
(付記24)
暗号化アルゴリズムとしてAES(Advanced Encryption Standard)を対象とし、
前記第1及び第3のパーミュテーション工程は、4の倍数のバイトでの巡回シフトによって並び替えを行い、
前記第2のパーミュテーション工程は、4の倍数のバイトでの巡回シフトによって暗号文を出力する、ことを特徴とする付記22記載の暗号化処理方法。
(付記25)
暗号化アルゴリズムとしてAES(Advanced Encryption Standard)を対象とし、
前記第1のパーミュテーション工程は、4バイトごとに列を構成し各列の中で同じ巡回シフトによって並び替えを行い、
前記第2のパーミュテーション工程は、4バイトごとに列を構成し各列の中で同じ巡回シフトによって暗号文を出力する、ことを特徴とする、付記17乃至21のいずれか一に記載の暗号化処理方法
(付記26)
暗号化アルゴリズムとしてAES(Advanced Encryption Standard)を対象とし、
前記第1及び第3のパーミュテーション工程は、4バイトごとに列を構成し各列の中で同じ巡回シフトによって並び替えを行い、
前記第2のパーミュテーション工程は、4バイトごとに列を構成し各列の中で同じ巡回シフトによって暗号文を出力する、ことを特徴とする、付記22記載の暗号化処理方法。
(付記27)
暗号化アルゴリズムとして3D暗号を対象とし、
入力側マスクは出力側マスクを、前記線形変換処理及び前記第1のパーミュテーション処理で変換した値であり、
第1のスライスにかかるマスクに対して、
第2のスライスにかかるマスクは、前記第1のスライスにかかるマスクを12バイト巡回シフトした値であり、
第3のスライスにかかるマスクは、前記第1のスライスにかかるマスクを8バイト巡回シフトした値であり、
第4のスライスにかかるマスクは、前記第1のスライスにかかるマスクを4バイト巡回シフトした値である、ことを特徴とする付記17乃至21のいずれか一に記載の暗号化処理方法。
(付記28)
暗号化アルゴリズムとして3D暗号を対象とし、
前記第1のパーミュテーション工程では、
第1のスライスの中で4の倍数のバイトでの巡回シフトによって並び替えを行い、
第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
前記第2のパーミュテーション工程では、
第1のスライスの中で、4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
を結合したものを暗号文とする、ことを特徴とする付記17乃至21のいずれか一に記載の暗号化処理方法。
(付記29)
暗号化アルゴリズムとして3D暗号を対象とし、
前記第1のパーミュテーション工程では、
第1のスライスの中で4の倍数のバイトでの巡回シフトによって並び替えを行い、
第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
前記第2のパーミュテーション工程では、
第1のスライスの中で4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果を結合したものを暗号文とすること、
前記第3のパーミュテーション工程では、
第1のスライスの中で4の倍数のバイトでの巡回シフトによって平文を並び替え、
第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって平文を並び替え、
第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって平文を並び替え、
第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって平文を並び替える、ことを特徴とする、付記22記載の暗号化処理方法。
(付記30)
データ処理装置に暗号化処理を実行させるプログラムであって、
平文とマスク値との排他的論理和をとる第1の排他的論理和処理と、
入力値を複数に分割した値をそれぞれ複数のテーブルを用いて非線形変換するにあたり、前記テーブルへの入力に対して入力側のマスクと排他的論理和をとった値を用いて、前記テーブルに従った非線形変換を行い、前記非線形変換した値に対して、出力側のマスク値と排他的論理和をとった値を出力する非線形変換処理と、
前記非線形変換処理から出力された複数の値に対して線形変換を施す線形変換処理と、
前記線形変換された値とラウンド鍵とを加算する鍵加算処理と、
前記鍵加算処理による加算結果の並び替えを行う第1のパーミュテーション処理と、
を含み、
初回のラウンド処理では、前記非線形変換処理には、前記第1の排他的論理和処理の演算結果が入力され、2回目以降のラウンド処理では、前記非線形変換工程には、前回のラウンド処理における前記第1のパーミュテーション工程の出力が入力され、前記非線形変換処理、前記線形変換処理、前記鍵加算処理、前記第1のパーミュテーション処理のラウンド処理が規定回数行われ、
前記規定回数のラウンド処理終了後における前記第1のパーミュテーション処理の出力とアンマスク値との排他的論理和をとる第2の排他的論理和処理と、
前記第2の排他的論理和処理の演算結果を並び替え暗号文として出力する第2のパーミュテーション処理と、
を含む、ことを特徴とするプログラム。
(付記31)
前記非線形変換処理において、前記テーブルの入力に対して、入力側のマスクをかけることで、マスク前の値に変換し、前記マスク前の値を用いて前記テーブルに従った非線形変換を行うことを特徴とする付記30記載のプログラム。
(付記32)
前記入力側のマスク値は、前記出力側のマスク値を、前記線形変換処理と前記第1のパーミュテーション処理で変換した値であることを特徴とする付記30又は31記載のプログラム。
(付記33)
前記第1のパーミュテーション処理での並び替えに対応して前記ラウンド鍵の並び替えを行い、前記鍵加算処理に供給する第4のパーミュテーション処理を含むことを特徴とする付記30乃至32のいずれか一に記載のプログラム。
(付記34)
前記第1のパーミュテーション処理は、
前記非線形変換処理で非線形変換し、前記線形変換処理で線形変換した結果を、前記第1のパーミュテーション処理で並び替えた結果と、
前記第1のパーミュテーション処理で並び替えた結果を、前記非線形変換処理で非線形変換し、前記線形変換処理で線形変換した結果と、
が互いに一致するような並び替えを行う、ことを特徴とする付記30乃至33のいずれか一に記載のプログラム。
(付記35)
前記平文の並び替えを行う第3のパーミュテーション処理をさらに備え、
前記第1の排他的論理和処理は、前記第3のパーミュテーション処理の出力とマスク値との排他的論理和をとることを特徴とする付記30乃至34いずれか一に記載のプログラム。
(付記36)
暗号化アルゴリズムとしてAES(Advanced Encryption Standard)を対象とし、
前記第1のパーミュテーション処理は、4の倍数のバイトの巡回シフトによって並び替えを行い、
前記第2のパーミュテーション処理は、4の倍数のバイトでの巡回シフトによって暗号文を出力する、ことを特徴とする、付記30乃至34のいずれか一に記載のプログラム。
(付記37)
暗号化アルゴリズムとしてAES(Advanced Encryption Standard)を対象とし、
前記第1及び第3のパーミュテーション処理は、4の倍数のバイトでの巡回シフトによって並び替えを行い、
前記第2のパーミュテーション処理は、4の倍数のバイトでの巡回シフトによって暗号文を出力する、ことを特徴とする付記35記載のプログラム。
(付記38)
暗号化アルゴリズムとしてAES(Advanced Encryption Standard)を対象とし、
前記第1のパーミュテーション処理は、4バイトごとに列を構成し各列の中で同じ巡回シフトによって並び替えを行い、
前記第2のパーミュテーション処理は、4バイトごとに列を構成し各列の中で同じ巡回シフトによって暗号文を出力する、ことを特徴とする、付記30乃至34のいずれか一に記載のプログラム。
(付記39)
暗号化アルゴリズムとしてAES(Advanced Encryption Standard)を対象とし、
前記第1及び第3のパーミュテーション処理は、4バイトごとに列を構成し各列の中で同じ巡回シフトによって並び替えを行い、
前記第2のパーミュテーション処理は、4バイトごとに列を構成し各列の中で同じ巡回シフトによって暗号文を出力する、ことを特徴とする、付記35記載のプログラム。
(付記40)
暗号化アルゴリズムとして3D暗号を対象とし、
第1のスライスにかかるマスクに対して、
第2のスライスにかかるマスクは、前記第1のスライスにかかるマスクを12バイト巡回シフトした値であり、
第3のスライスにかかるマスクは、前記第1のスライスにかかるマスクを8バイト巡回シフトした値であり、
第4のスライスにかかるマスクは、前記第1のスライスにかかるマスクを4バイト巡回シフトした値である、ことを特徴とする付記30乃至34のいずれか一に記載のプログラム。
(付記41)
暗号化アルゴリズムとして3D暗号を対象とし、
前記第1のパーミュテーション処理では、
第1のスライスの中で4の倍数のバイトでの巡回シフトによって並び替えを行い、
第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
前記第2のパーミュテーション処理では、
第1のスライスの中で、4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、を結合したものを暗号文とする、ことを特徴とする付記30乃至34のいずれか一に記載のプログラム。
(付記42)
暗号化アルゴリズムとして3D暗号を対象とし、
前記第1のパーミュテーション処理では、
第1のスライスの中で4の倍数のバイトでの巡回シフトによって並び替えを行い、
第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
前記第2のパーミュテーション処理では、
第1のスライスの中で4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果を結合したものを暗号文とすること、
前記第3のパーミュテーション処理では、
第1のスライスの中で4の倍数のバイトでの巡回シフトによって平文を並び替え、
第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって平文を並び替え、
第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって平文を並び替え、
第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって平文を並び替える、ことを特徴とする、付記35記載のプログラム。
(付記43)
暗号文を入力して並び替える第1のパーミュテーション部と、
前記第1のパーミュテーション部の出力とアンマスク値との排他的論理和をとる第1の排他的論理和演算部と、
入力値の並び替えを行う第2のパーミュテーション部と、
前記第2のパーミュテーション部の出力とラウンド鍵とを加算する鍵加算部と、
前記鍵加算部の出力に線形変換を施す線形変換部と、
前記線形変換部の出力を複数に分割した値をそれぞれ入力し非線形変換する複数のテーブルを含む非線形変換部と、
を備え、
前記非線形変換部において、前記テーブルは、前記テーブルへの入力に対して入力側のマスク値と排他的論理和をとった値を用いて、前記テーブルに従った非線形変換を行い、前記非線形変換した値に対して出力側のマスク値と排他的論理和をとった値を出力し、
初回のラウンド処理では、前記第2のパーミュテーション部には、前記第1の排他的論理和演算部の出力が入力され、2回目以降ラウンド処理では、前記第2のパーミュテーション部には、前回のラウンド処理における前記非線形変換部の出力が入力され、
前記第2のパーミュテーション部、前記鍵加算部、前記線形変換部、及び前記非線形変換部によるラウンド処理が規定回数行われ、
前記規定回数のラウンド処理終了後の前記非線形変換部の出力とマスク値との排他的論理和をとり、排他的論理和演算結果を平文として出力する第2の排他的論理和演算部と、を備えたことを特徴とする復号処理回路。
(付記44)
前記暗号文は、付記1の暗号化処理回路で暗号化されたものであり、
前記第1のパーミュテーション部、前記第2のパーミュテーション部、前記線形変換部、前記非線形変換部は、それぞれ、付記1の暗号化処理回路の前記第2のパーミュテーション部、前記第1のパーミュテーション部、前記線形変換部、前記非線形変換部と逆の並び換え/変換を行う、ことを特徴とする付記43記載の復号処理回路。
(付記45)
データ処理装置による復号処理方法であって、
暗号文を入力して並び替える第1のパーミュテーション工程と、
前記第1のパーミュテーション工程の出力とアンマスク値との排他的論理和をとる第1の排他的論理和工程と、
入力値の並び替えを行う第2のパーミュテーション工程と、
前記第2のパーミュテーション工程の出力とラウンド鍵とを加算する鍵加算工程と、
前記鍵加算工程の出力に線形変換を施す線形変換工程と、
前記線形変換工程の出力を複数に分割した値をそれぞれ入力し非線形変換する複数のテーブルを含む非線形変換工程と、
を含み、
前記非線形変換工程において、前記テーブルは、前記テーブルへの入力に対して入力側のマスク値と排他的論理和をとった値を用いて、前記テーブルに従った非線形変換を行い、前記非線形変換した値に対して出力側のマスク値と排他的論理和をとった値を出力し、
初回のラウンド工程では、前記第2のパーミュテーション工程には、前記第1の排他的論理和工程の出力が入力され、2回目以降ラウンド工程では、前記第2のパーミュテーション工程には、前回のラウンド処理における前記非線形変換工程の出力が入力され、
前記第2のパーミュテーション工程、前記鍵加算工程、前記線形変換工程、及び前記非線形変換工程によるラウンド処理が規定回数行われ、
前記規定回数のラウンド処理終了後の前記非線形変換工程の出力とマスク値との排他的論理和をとり、排他的論理和演算結果を、平文として出力する第2の排他的論理和工程と、を含むことを特徴とする復号処理方法。
(付記46)
前記暗号文は、付記16の暗号化処理回路で暗号化されたものであり、
前記第1のパーミュテーション工程、前記第2のパーミュテーション工程、前記線形変換工程、前記非線形変換工程は、それぞれ、付記16の暗号化処理回路の前記第2のパーミュテーション工程、前記第1のパーミュテーション工程、前記線形変換工程、前記非線形変換工程と逆の並び換え/変換を行う、ことを特徴とする付記43記載の復号処理回路。
(付記47)
データ処理装置による復号処理を実行させるプログラムであって、
暗号文を入力して並び替える第1のパーミュテーション処理と、
前記第1のパーミュテーション処理の出力とアンマスク値との排他的論理和をとる第1の排他的論理和処理と、
入力値の並び替えを行う第2のパーミュテーション処理と、
前記第2のパーミュテーション処理の出力とラウンド鍵とを加算する鍵加算処理と、
前記鍵加算処理の出力に線形変換を施す線形変換処理と、
前記線形変換処理の出力を複数に分割した値をそれぞれ入力し非線形変換する複数のテーブルを含む非線形変換処理と、
を含み、
前記非線形変換処理において、前記テーブルは、前記テーブルへの入力に対して入力側のマスク値と排他的論理和をとった値を用いて、前記テーブルに従った非線形変換を行い、前記非線形変換した値に対して出力側のマスク値と排他的論理和をとった値を出力し、
初回のラウンド処理では、前記第2のパーミュテーション処理には、前記第1の排他的論理和処理の出力が入力され、2回目以降ラウンド処理では、前記第2のパーミュテーション処理には、前回のラウンド処理における前記非線形変換処理の出力が入力され、
前記第2のパーミュテーション処理、前記鍵加算処理、前記線形変換処理、及び前記非線形変換処理によるラウンド処理が規定回数行われ、
前記規定回数のラウンド処理終了後の前記非線形変換処理の出力とマスク値との排他的論理和をとり排他的論理和演算結果を平文として出力する第2の排他的論理和処理と、を含むことを特徴とするプログラム。
(付記48)
前記暗号文は、付記30のプログラムを前記データ処理装置で実行することで暗号化されたものであり、
前記第1のパーミュテーション処理、前記第2のパーミュテーション処理、前記線形変換処理、前記非線形変換処理は、それぞれ、付記29のプログラムにおける前記第2のパーミュテーション処理、前記第1のパーミュテーション処理、前記線形変換処理、前記非線形変換処理と逆の並び換え/変換を行う、ことを特徴とする付記47記載のプログラム。
なお、上記の特許文献、非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各付記の各要素、各実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
1000 暗号化部
1101、1102 排他的論理和演算部
1200 非線形変換部
1201 非線形変換テーブル(S1)
1202 非線形変換テーブル(S2)
1203 非線形変換テーブル(S3)
1204 非線形変換テーブル(Sn)
1211〜1218 排他的論理和演算部
1221〜1224 非線形変換テーブル(S)
1300 線形変換処理
1400 鍵加算処理
1411〜1414 排他的論理和演算部
1501〜1504 パーミュテーション部
1600 非線形変換部(AES)
1700 非線形変換部(RSM)
1701 バレルシフト
1702 バレルシフト
1800 MMSj+1加算部
1900 乱数発生器
2000 鍵生成部
2001 パーミュテーション付鍵生成部
3101、3102 排他的論理和演算部
3200 非線形変換部
3201 マスク付SBOX(S1)
3202 マスク付SBOX(S2)
3203 マスク付SBOX(S3)
3204 マスク付SBOX(S4)
3205 マスク付SBOX(S5)
3216 マスク付SBOX(S16)
3301 ShiftRows
3302 MixColumns
3400 AddRoundKey
3401 AddRoundKey(ラウンド0)
3501 パーミュテーション
3502 パーミュテーション
3503 パーミュテーション
3504 パーミュテーション
3600 非線形変換部
3601 SBOX(S)
3602 SBOX(S)
3616 SBOX(S)
4101 排他的論理和演算部
4102 排他的論理和演算部
4200 非線形変換部
4201 マスク付非線形変換テーブル(γ1)
4202 マスク付非線形変換テーブル(γ2)
4264 マスク付非線形変換テーブル(γ64)
420A 非線形変換部
420B 非線形変換部
4201A マスク付非線形変換テーブル(γ1)
4202A マスク付非線形変換テーブル(γ2)
4264A マスク付非線形変換テーブル(γ64)
4201B マスク付非線形変換テーブル(γ’1)
4202B マスク付非線形変換テーブル(γ’2)
4264B マスク付非線形変換テーブル(γ’64)
4270 セレクタ
4301 拡散関数部(θ)
4302 最大距離分離行列演算部(π)
4400 AddRoundKey
4401 AddRoundKey(ラウンド0)
4501 パーミュテーション
4502 パーミュテーション
4503 パーミュテーション
4504 パーミュテーション
4600 非線形変換部
4601、4602、4616 非線形変換テーブル(γ)

Claims (10)

  1. 平文とマスク値との排他的論理和をとる第1の排他的論理和演算部と、
    入力値を複数に分割した値をそれぞれ非線形変換する複数のテーブルを含む非線形変換部と、
    前記非線形変換部の前記複数のテーブルから出力された複数の値に対して線形変換を施す線形変換部と、
    前記線形変換部の出力とラウンド鍵とを加算する鍵加算部と、
    前記鍵加算部の出力の並び替えを行う第1のパーミュテーション部と、
    を備え、
    初回のラウンド処理では、前記非線形変換部には、前記第1の排他的論理和演算部の出力が入力され、2回目以降のラウンド処理では前記非線形変換部には、前回のラウンド処理での前記第1のパーミュテーション部の出力が入力され、
    前記非線形変換部において、前記テーブルは、前記テーブルへの入力に対して入力側のマスク値と排他的論理和をとった値を用いて前記テーブルに従った非線形変換を行い、前記非線形変換した値に対して出力側のマスク値と排他的論理和をとった値を出力し、
    前記非線形変換部、前記線形変換部、前記鍵加算部、及び、前記第1のパーミュテーション部によるラウンド処理が規定回数行われ、
    前記規定回数のラウンド処理終了後の前記第1のパーミュテーション部の出力とアンマスク値との排他的論理和をとる第2の排他的論理和演算部と、
    前記第2の排他的論理和演算部の出力を並び替え暗号文として出力する第2のパーミュテーション部と、
    を備えたことを特徴とする暗号化処理回路。
  2. 前記入力側のマスク値が、前記出力側のマスク値を、前記線形変換部と前記第1のパーミュテーション部で変換した値であることを特徴とする請求項1記載の暗号化処理回路。
  3. 前記第1のパーミュテーション部は、前記非線形変換部で非線形変換し、前記線形変換部で線形変換した結果を、前記第1のパーミュテーション部で並び替えた第1の結果と、前記第1のパーミュテーション部で並び替えた結果を、前記非線形変換部で非線形変換し、前記線形変換部で線形変換した第2の結果と、が互いに一致するような並び替えを行うことを特徴とする請求項1又は2記載の暗号化処理回路。
  4. 前記平文の並び替えを行う第3のパーミュテーション部をさらに備え、
    前記第1の排他的論理和演算部は、前記第3のパーミュテーション部の出力とマスク値との排他的論理和をとることを特徴とする請求項1乃至3のいずれか1項に記載の暗号化処理回路。
  5. 暗号化アルゴリズムとしてAES(Advanced Encryption Standard)を対象とし、
    前記第1のパーミュテーション部は、4の倍数のバイトの巡回シフトによって並び替えを行い、且つ、前記第2のパーミュテーション部は、4の倍数のバイトでの巡回シフトによって暗号文を出力するか、
    又は、
    前記第1及び第3のパーミュテーション部は、4の倍数のバイトでの巡回シフトによって並び替えを行い、且つ、前記第2のパーミュテーション部は、4の倍数のバイトでの巡回シフトによって暗号文を出力することを特徴とする請求項4記載の暗号化処理回路。
  6. 暗号化アルゴリズムとしてAES(Advanced Encryption Standard)を対象とし、
    前記第1のパーミュテーション部は、4バイトごとに列を構成し各列の中で同じ巡回シフトによって並び替えを行い、且つ、前記第2のパーミュテーション部は、4バイトごとに列を構成し各列の中で同じ巡回シフトによって暗号文を出力し、
    又は、
    前記第1及び第3のパーミュテーション部は、4バイトごとに列を構成し各列の中で同じ巡回シフトによって並び替えを行い、且つ、前記第2のパーミュテーション部は、4バイトごとに列を構成し各列の中で同じ巡回シフトによって暗号文を出力することを特徴とする請求項4記載の暗号化処理回路。
  7. 暗号化アルゴリズムとして3D暗号を対象とし、
    前記第1のパーミュテーション部では、
    第1のスライスの中で4の倍数のバイトでの巡回シフトによって並び替えを行い、
    第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
    第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
    第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
    前記第2のパーミュテーション部では、
    第1のスライスの中で、4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
    第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
    第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
    第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
    を結合したものを暗号文とする、
    又は、
    前記第1のパーミュテーション部では、
    第1のスライスの中で4の倍数のバイトでの巡回シフトによって並び替えを行い、
    第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
    第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
    第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行い、
    前記第2のパーミュテーション部では、
    第1のスライスの中で4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
    第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
    第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果と、
    第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって並び替えを行った結果を結合したものを暗号文とすること、
    前記第3のパーミュテーション部では、
    第1のスライスの中で4の倍数のバイトでの巡回シフトによって平文を並び替え、
    第2のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって平文を並び替え、
    第3のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって平文を並び替え、
    第4のスライスの中で、前記第1のスライスと同じ4の倍数のバイトでの巡回シフトによって平文を並び替えることを特徴とする請求項4記載の暗号化処理回路。
  8. データ処理装置による暗号化処理方法であって、
    平文とマスク値との排他的論理和をとる第1の排他的論理和工程と、
    入力値を複数に分割した値をそれぞれ複数のテーブルを用いて非線形変換するにあたり、前記テーブルへの入力に対して入力側のマスクと排他的論理和をとった値を用いて、前記テーブルに従った非線形変換を行い、前記非線形変換した値に対して、出力側のマスク値と排他的論理和をとった値を出力する非線形変換工程と、
    前記非線形変換工程から出力された複数の値に対して線形変換を施す線形変換工程と、
    前記線形変換された値とラウンド鍵とを加算する鍵加算工程と、
    前記鍵加算工程による加算結果の並び替えを行う第1のパーミュテーション工程と、
    を含み、
    初回のラウンド処理では、前記非線形変換工程には、前記第1の排他的論理和工程の演算結果が入力され、2回目以降のラウンド処理では、前記非線形変換工程には、前回のラウンド処理における前記第1のパーミュテーション工程の出力が入力され、
    前記非線形変換工程、前記線形変換工程、前記鍵加算工程、前記第1のパーミュテーション工程によるラウンド処理が規定回数行われ、
    前記規定回数のラウンド処理終了後の前記第1のパーミュテーション工程の出力とアンマスク値との排他的論理和をとる第2の排他的論理和工程と、
    前記第2の排他的論理和工程での演算結果を並び替え暗号文として出力する第2のパーミュテーション工程と、
    をさらに含むことを特徴とする暗号化処理方法。
  9. データ処理装置に暗号化処理を実行させるプログラムであって、
    平文とマスク値との排他的論理和をとる第1の排他的論理和処理と、
    入力値を複数に分割した値をそれぞれ複数のテーブルを用いて非線形変換するにあたり、前記テーブルへの入力に対して入力側のマスクと排他的論理和をとった値を用いて、前記テーブルに従った非線形変換を行い、前記非線形変換した値に対して、出力側のマスク値と排他的論理和をとった値を出力する非線形変換処理と、
    前記非線形変換処理から出力された複数の値に対して線形変換を施す線形変換処理と、
    前記線形変換された値とラウンド鍵とを加算する鍵加算処理と、
    前記鍵加算処理による加算結果の並び替えを行う第1のパーミュテーション処理と、
    を含み、
    初回のラウンド処理では、前記非線形変換処理には、前記第1の排他的論理和処理の演算結果が入力され、2回目以降のラウンド処理では、前記非線形変換工程には、前回のラウンド処理における前記第1のパーミュテーション工程の出力が入力され、前記非線形変換処理、前記線形変換処理、前記鍵加算処理、前記第1のパーミュテーション処理のラウンド処理が規定回数行われ、
    前記規定回数のラウンド処理終了後における前記第1のパーミュテーション処理の出力とアンマスク値との排他的論理和をとる第2の排他的論理和処理と、
    前記第2の排他的論理和処理の演算結果を並び替え暗号文として出力する第2のパーミュテーション処理と、
    を含むことを特徴とするプログラム。
  10. 暗号文を入力して並び替える第1のパーミュテーション部と、
    前記第1のパーミュテーション部の出力とアンマスク値との排他的論理和をとる第1の排他的論理和演算部と、
    入力値の並び替える第2のパーミュテーション部と、
    前記第2のパーミュテーション部の出力とラウンド鍵とを加算する鍵加算部と、
    前記鍵加算部の出力に線形変換を施す線形変換部と、
    前記線形変換部の出力を入力とし、入力値を複数に分割した値をそれぞれ入力し非線形変換する複数のテーブルを含む非線形変換部と、
    を備え、
    前記非線形変換部において、前記テーブルは、前記テーブルへの入力に対して入力側のマスク値と排他的論理和をとった値を用いて、前記テーブルに従った非線形変換を行い、前記非線形変換した値に対して出力側のマスク値と排他的論理和をとった値を出力し、
    初回のラウンド処理では、前記第2のパーミュテーション部には、前記第1の排他的論理和演算部の出力が入力され、2回目以降ラウンド処理では、前記第2のパーミュテーション部には、前回のラウンド処理における前記非線形変換部の出力が入力され、
    前記第2のパーミュテーション部、前記鍵加算部、前記線形変換部、及び前記非線形変換部によるラウンド処理が規定回数行われ、
    前記規定回数のラウンド処理終了後の前記非線形変換部の出力とマスク値との排他的論理和をとり排他的論理和演算結果を平文として出力する第2の排他的論理和演算部を備えたことを特徴とする復号処理回路。
JP2012272789A 2012-12-13 2012-12-13 暗号化処理回路及び復号処理回路とその方法並びにそのプログラム Active JP6089668B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012272789A JP6089668B2 (ja) 2012-12-13 2012-12-13 暗号化処理回路及び復号処理回路とその方法並びにそのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012272789A JP6089668B2 (ja) 2012-12-13 2012-12-13 暗号化処理回路及び復号処理回路とその方法並びにそのプログラム

Publications (2)

Publication Number Publication Date
JP2014119512A true JP2014119512A (ja) 2014-06-30
JP6089668B2 JP6089668B2 (ja) 2017-03-08

Family

ID=51174416

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012272789A Active JP6089668B2 (ja) 2012-12-13 2012-12-13 暗号化処理回路及び復号処理回路とその方法並びにそのプログラム

Country Status (1)

Country Link
JP (1) JP6089668B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111837170A (zh) * 2018-03-12 2020-10-27 日本电信电话株式会社 秘密计算装置、秘密计算方法、程序、以及记录介质
CN117131517A (zh) * 2023-10-27 2023-11-28 鼎铉商用密码测评技术(深圳)有限公司 加密算法的安全性检测方法、终端设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008131108A (ja) * 2006-11-16 2008-06-05 Fujitsu Ltd 共通鍵暗号のための暗号化装置
WO2011057991A1 (fr) * 2009-11-13 2011-05-19 Institut Telecom - Telecom Paristech Circuit electronique de faible complexite protege par masquage personnalise

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008131108A (ja) * 2006-11-16 2008-06-05 Fujitsu Ltd 共通鍵暗号のための暗号化装置
WO2011057991A1 (fr) * 2009-11-13 2011-05-19 Institut Telecom - Telecom Paristech Circuit electronique de faible complexite protege par masquage personnalise

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6016038070; 橋本 祐樹 ほか: 'Dual-Rail RSLメモリ方式を適用したAES暗号回路の設計およびDPA耐性評価' 2012年 暗号と情報セキュリティシンポジウム [CD-ROM] 3C3-3, 20120130, p.1-8, 電子情報通信学会情報セキュリティ研究専門委員会(I *
JPN6016038072; Maxime Nassar, et al.: 'RSM: a Small and Fast Countermeasure for AES, Secure against 1st and 2nd-order Zero-Offset SCAs' Design, Automation & Test in Europe Conference & Exhibition (DATE), 2012 , 20120312, IEEE *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111837170A (zh) * 2018-03-12 2020-10-27 日本电信电话株式会社 秘密计算装置、秘密计算方法、程序、以及记录介质
CN117131517A (zh) * 2023-10-27 2023-11-28 鼎铉商用密码测评技术(深圳)有限公司 加密算法的安全性检测方法、终端设备及存储介质
CN117131517B (zh) * 2023-10-27 2024-03-19 鼎铉商用密码测评技术(深圳)有限公司 加密算法的安全性检测方法、终端设备及存储介质

Also Published As

Publication number Publication date
JP6089668B2 (ja) 2017-03-08

Similar Documents

Publication Publication Date Title
US8737603B2 (en) Cryptographic processing apparatus, cryptographic processing method, and computer program
JP5229315B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
US8731188B2 (en) Cryptographic processing apparatus and cryptographic processing method, and computer program
JP5402632B2 (ja) 共通鍵ブロック暗号化装置、共通鍵ブロック暗号化方法及びプログラム
RU2449482C2 (ru) Устройство обработки шифрования, способ обработки шифрования и компьютерная программа
JP6406350B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
KR101770874B1 (ko) 암호 처리 장치, 암호 처리 방법, 컴퓨터로 판독가능한 기록 매체, 및 정보 처리 장치
JP2009175167A (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP2015191106A (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP2015191107A (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
Shorin et al. Linear and differential cryptanalysis of Russian GOST
Minier et al. Solving a symmetric key cryptographic problem with constraint programming
JP6089668B2 (ja) 暗号化処理回路及び復号処理回路とその方法並びにそのプログラム
JP2010044251A (ja) ハッシュ値生成装置、プログラム及びハッシュ値生成方法
Mihalkovich et al. MPF based symmetric cipher performance comparison to AES and TDES
JP2002510058A (ja) 2進データ・ブロックの暗号変換のための方法
WO2012060685A1 (en) A method for linear transformation in substitution-permutation network symmetric-key block cipher
WO2015059845A1 (ja) 暗号化処理回路及び復号処理回路並びにその方法
Sharma et al. Comparative analysis of block key encryption algorithms
JP5500277B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
JP2014197785A (ja) 暗号化処理回路及び復号処理回路とその方法並びにそのプログラム
JP5488608B2 (ja) ブロック暗号装置、ブロック暗号化方法およびプログラム
Lu et al. Cryptanalysis on PHOTON hash function using cube attack
JP6371197B2 (ja) 暗号処理装置
Bahaa-Eldin Intelligent systems for information security

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151106

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160926

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161004

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161205

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170123

R150 Certificate of patent or registration of utility model

Ref document number: 6089668

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150