JP2015191107A - 暗号処理装置、および暗号処理方法、並びにプログラム - Google Patents

暗号処理装置、および暗号処理方法、並びにプログラム Download PDF

Info

Publication number
JP2015191107A
JP2015191107A JP2014068291A JP2014068291A JP2015191107A JP 2015191107 A JP2015191107 A JP 2015191107A JP 2014068291 A JP2014068291 A JP 2014068291A JP 2014068291 A JP2014068291 A JP 2014068291A JP 2015191107 A JP2015191107 A JP 2015191107A
Authority
JP
Japan
Prior art keywords
key
conversion
round
function
cryptographic processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014068291A
Other languages
English (en)
Inventor
香士 渋谷
Koushi Shibuya
香士 渋谷
孝典 五十部
Takanori Isobe
孝典 五十部
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2014068291A priority Critical patent/JP2015191107A/ja
Priority to PCT/JP2015/055280 priority patent/WO2015146430A1/ja
Publication of JP2015191107A publication Critical patent/JP2015191107A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

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

Abstract

【課題】各種の攻撃に対する耐性を向上させた安全性の高い暗号処理構成を実現する。
【解決手段】入力データに対するラウンド演算を繰り返して出力データを生成する暗号処理部385と、暗号処理部におけるラウンド演算において適用するラウンド鍵を暗号処理部に出力する鍵スケジュール部380を有し、鍵スケジュール部は、秘密鍵Kを格納した鍵レジスタ381と、秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成する鍵変換部302を有し、秘密鍵K、および変換鍵Kdを暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする。変換関数Gとして、逆関数G−1が関数Gと同じ関数となるインボリューション性と、フルディフュージョン性を有する関数を適用する。
【選択図】図42

Description

本開示は、暗号処理装置、および暗号処理方法、並びにプログラムに関する。さらに詳細には、共通鍵系暗号を実行する暗号処理装置、および暗号処理方法、並びにプログラムに関する。
情報化社会が発展すると共に、扱う情報を安全に守るための情報セキュリティ技術の重要性が増してきている。情報セキュリティ技術の構成要素の一つとして暗号技術があり、現在では様々な製品やシステムで暗号技術が利用されている。
暗号処理アルゴリズムには様々なものがあるが、基本的な技術の一つとして、共通鍵ブロック暗号と呼ばれるものがある。共通鍵ブロック暗号では、暗号化用の鍵と復号用の鍵が共通のものとなっている。暗号化処理、復号処理共に、その共通鍵から複数の鍵を生成し、あるブロック単位、例えば64ビット、128ビット、256ビット等のブロックデータ単位でデータ変換処理を繰り返し実行する。
代表的な共通鍵ブロック暗号のアルゴリズムとしては、過去の米国標準であるDES(Data Encryption Standard)や現在の米国標準であるAES(Advanced Encryption Standard)が知られている。他にも様々な共通鍵ブロック暗号が現在も提案され続けており、2007年にソニー株式会社が提案したCLEFIAも共通鍵ブロック暗号の一つである。
なお、共通鍵ブロック暗号について開示した従来技術として、例えば特許文献1(特開2012−215813号公報)等がある。
このような、共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を繰り返し実行するラウンド関数実行部を有する暗号処理部と、ラウンド関数部の各ラウンドで適用するラウンド鍵を生成する鍵スケジュール部とによって構成される。鍵スケジュール部は、秘密鍵であるマスター鍵(主鍵)に基づいて、まずビット数を増加させた拡大鍵を生成し、生成した拡大鍵に基づいて、暗号処理部の各ラウンド関数部で適用するラウンド鍵(副鍵)を生成する。
このようなアルゴリズムを実行する具体的な構造として、線形変換部および非線形変換部を有するラウンド関数を繰り返し実行する構造が知られている。例えば代表的な構造として、SPN(Substitution−Permutation Network)構造、Feistel構造、拡張Feistel構造等がある。
これらは、いずれも線形変換部および非線形変換部を有するラウンド関数を繰り返し実行して平文を暗号文に変換する構造を持つ。
特開2012−215813号公報
例えば暗号アルゴリズムや秘密鍵の解読を試みる攻撃として差分攻撃、線形攻撃等がある。暗号処理装置は、これらの様々な攻撃に対する耐性や、高速処理、あるいは小型化などが求められている。
本開示は、例えば上述の状況に鑑みてなされたものであり、安全性、高速性、あるいは小型化等、暗号処理装置に要求される様々な要素の向上を実現する暗号処理装置、および暗号処理方法、並びにプログラムを提供することを目的とする。
本開示の第1の側面は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記鍵スケジュール部は、
秘密鍵Kを格納した鍵レジスタと、
前記秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成する鍵変換部を有し、
前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする構成であり、
前記変換関数Gは、逆関数G−1が関数Gと同じ関数となるインボリューション性を有する関数である暗号処理装置にある。
さらに、本開示の第2の側面は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記鍵スケジュール部は、
秘密鍵Kを格納した鍵レジスタと、
前記秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成する鍵変換部を有し、
前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする構成であり、
前記秘密鍵K、および前記変換鍵Kdは、いずれも各要素が1ビット以上のm×n個の要素からなるステートであり、
前記変換関数Gは、前記秘密鍵Kのステート要素の全てが、前記変換鍵Kdのステート要素全てに影響を及ぼすフルディフュージョン性を有する関数である暗号処理装置にある。
さらに、本開示の第3の側面は、
暗号処理装置において実行する暗号処理方法であり、
前記暗号処理装置は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記鍵スケジュール部は、
鍵レジスタに格納した秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成し、
前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする処理を行ない、
前記変換関数Gは、逆関数G−1が関数Gと同じ関数となるインボリューション性を有する関数である暗号処理方法にある。
さらに、本開示の第4の側面は、
暗号処理装置において実行する暗号処理方法であり、
前記暗号処理装置は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記鍵スケジュール部は、
鍵レジスタに格納した秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成し、
前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする処理を行ない、
前記秘密鍵K、および前記変換鍵Kdは、いずれも各要素が1ビット以上のm×n個の要素からなるステートであり、
前記変換関数Gは、前記秘密鍵Kのステート要素の全てが、前記変換鍵Kdのステート要素全てに影響を及ぼすフルディフュージョン性を有する関数である暗号処理方法にある。
さらに、本開示の第5の側面は、
暗号処理装置において暗号処理を実行させるプログラムであり、
前記暗号処理装置は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記プログラムは、前記鍵スケジュール部に、
鍵レジスタに格納した秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成する処理と、
前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする処理を実行させ、
前記変換関数Gは、逆関数G−1が関数Gと同じ関数となるインボリューション性を有する関数であるプログラムにある。
さらに、本開示の第6の側面は、
暗号処理装置において暗号処理を実行させるプログラムであり、
前記暗号処理装置は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記プログラムは、前記鍵スケジュール部に、
鍵レジスタに格納した秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成する処理と、
前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする処理を実行させ、
前記秘密鍵K、および前記変換鍵Kdは、いずれも各要素が1ビット以上のm×n個の要素からなるステートであり、
前記変換関数Gは、前記秘密鍵Kのステート要素の全てが、前記変換鍵Kdのステート要素全てに影響を及ぼすフルディフュージョン性を有する関数であるプログラムにある。
なお、本開示のプログラムは、例えば、様々なプログラム・コードを実行可能な情報処理装置やコンピュータ・システムに対して例えば記憶媒体によって提供されるプログラムである。このようなプログラムを情報処理装置やコンピュータ・システム上のプログラム実行部で実行することでプログラムに応じた処理が実現される。
本開示のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本開示の一実施例の構成によれば、各種の攻撃に対する耐性を向上させた安全性の高い暗号処理構成が実現される。
具体的には、入力データに対するラウンド演算を繰り返して出力データを生成する暗号処理部と、暗号処理部におけるラウンド演算において適用するラウンド鍵を暗号処理部に出力する鍵スケジュール部を有し、鍵スケジュール部は、秘密鍵Kを格納した鍵レジスタと、秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成する鍵変換部を有し、秘密鍵K、および変換鍵Kdを暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする。変換関数Gとして、逆関数G−1が関数Gと同じ関数となるインボリューション性と、フルディフュージョン性を有する関数を適用する。
本構成により拡散特性が向上し、各種の攻撃に対する耐性を向上させた安全性の高い暗号処理構成が実現される。
なお、本明細書に記載された効果はあくまで例示であって限定されるものではなく、また付加的な効果があってもよい。
kビットの鍵長に対応したnビット共通鍵ブロック暗号アルゴリズムを説明する図である。 図1に示すkビットの鍵長に対応したnビット共通鍵ブロック暗号アルゴリズムに対応する復号アルゴリズムを説明する図である。 鍵スケジュール部と暗号処理部の関係について説明する図である。 暗号処理部の構成例について説明する図である。 SPN構造のラウンド関数の例について説明する図である。 Feistel構造のラウンド関数の一例について説明する図である。 拡張Feistel構造の一例について説明する図である。 拡張Feistel構造の一例について説明する図である。 非線形変換部の構成例について説明する図である。 線形変換部の構成例について説明する図である。 ステート(ステート表現データ)に対するデータ変換処理例について説明する図である。 ステートに対するデータ変換処理例について説明する図である。 ステートに対するデータ変換処理例について説明する図である。 ステートに対するデータ変換処理例について説明する図である。 ステートに対する列拡散演算処理について説明する図である。 ステートに対する列拡散演算処理について説明する図である。 ステートに対する行拡散演算処理について説明する図である。 ステートに対する行拡散演算処理について説明する図である。 本開示の一実施例に係る暗号処理装置の構成例について説明する図である。 本開示の一実施例に係る暗号処理装置の構成例について説明する図である。 暗号処理部において実行するデータ変換処理例について説明する図である。 暗号処理部の非線形変換部と線形変換部の構成と処理について説明する図である。 暗号処理部の線形変換部の構成と処理について説明する図である。 線形変換処理に適用する行列について説明する図である。 線形変換部P1の実行する列拡散演算について説明する図である。 線形変換部P2の実行する行拡散演算について説明する図である。 線形変換部P3の実行する行拡散演算について説明する図である。 暗号処理部の線形変換部の構成と処理について説明する図である。 暗号処理部の線形変換部を同一の線形変換処理とした場合の構成について説明する図である。 暗号処理部の線形変換部を異なる線形変換処理実行構成とした場合しと、同一の線形変換処理を実行する構成とした場合のアクティブSボックスの数の比較データについて説明する図である。 暗号処理部の線形変換部を異なる線形変換処理実行構成とした場合しと、同一の線形変換処理を実行する構成とした場合のアクティブSボックスの数の比較データについて説明する図である。 鍵スケジュール部の構成と処理について説明する図である。 鍵スケジュール部の鍵変換部の構成と処理について説明する図である。 鍵スケジュール部の鍵変換部の構成と処理について説明する図である。 鍵スケジュール部の鍵変換部の変換処理にるデータ拡散処理について説明する図である。 鍵変換処理の実行構成と実行しない構成との対比について説明する図である。 鍵変換処理の実行構成と実行しない構成との対比について説明する図である。 鍵変換処理の実行構成と実行しない構成との対比について説明する図である。 鍵スケジュール部の構成と処理について説明する図である。 鍵変換関数がインボリューション性を有していない場合の鍵スケジュール部の構成と処理について説明する図である。 鍵変換関数がインボリューション性を有している場合の鍵スケジュール部の構成と処理について説明する図である。 鍵スケジュール部の構成と処理について説明する図である。 鍵スケジュール部の構成と処理について説明する図である。 鍵変換関数Gがフルディフュージョン性を有する場合の暗号処理構成について説明する図である。 鍵変換を実行しない場合の構成と処理について説明する図である。 16ビット置換処理について説明する図である。 フルディフューション4ビット関数と16ビット置換関数を適用した鍵変換処理例について説明する図である。 フルディフューション4ビット関数と16ビット置換関数を適用した鍵変換処理例について説明する図である。 フルディフューション4ビット関数と16ビット置換関数を適用した鍵変換処理例について説明する図である。 フルディフューション4ビット関数と16ビット置換関数を適用した鍵変換処理例について説明する図である。 フルディフューション4ビット関数と16ビット置換関数を適用した鍵変換処理例について説明する図である。 分割鍵に対する置換関数G1,G2の設定例について説明する図である。 暗号処理部に対する定数入力構成例について説明する図である。 インボリーション性を有する暗号処理部の構成例について説明する図である。 インボリーション性を有する暗号処理部の問題点について説明する図である。 暗号処理部に対する定数入力構成例について説明する図である。 暗号処理部に対する定数入力構成例について説明する図である。 暗号処理部に対する定数入力構成例について説明する図である。 暗号処理部に対する定数入力構成例について説明する図である。 アクティブSボックスに基づく安全性評価処理について説明する図である。 アクティブSボックスに基づく安全性評価処理について説明する図である。 アクティブSボックスに基づく安全性評価処理について説明する図である。 暗号処理部に対する定数入力構成例について説明する図である。 暗号処理部の非線形変換部のSボックス(S−box)の構成例について説明する図である。 暗号処理部の非線形変換部のSボックス(S−box)の構成例について説明する図である。 暗号処理部の非線形変換部のSボックス(S−box)の構成例について説明する図である。 暗号処理部の非線形変換部のSボックス(S−box)の線形変換層の構成例について説明する図である。 暗号処理部の非線形変換部のSボックス(S−box)の構成例について説明する図である。 暗号処理部の非線形変換部のSボックス(S−box)の構成例について説明する図である。 暗号処理部の非線形変換部のSボックス(S−box)の構成例について説明する図である。 暗号処理部の非線形変換部のSボックス(S−box)の構成例について説明する図である。 暗号処理装置の一構成例について説明する図である。 暗号処理装置としてのICモジュール700の構成例を示す図である。 暗号処理実行機能を有するスマートフォンの構成例を示す図である。
以下、図面を参照しながら本開示に係る暗号処理装置、および暗号処理方法、並びにプログラムの詳細について説明する。説明は、以下の項目に従って行う。
1.共通鍵ブロック暗号の概要
2.共通鍵ブロック暗号における安全性の指標について
3.安全性を高めた共通鍵暗号処理の全体構成概要について
4.暗号処理部の線形変換部の構成と処理について
5.鍵スケジュール部の構成と処理について
5−1.鍵スケジュール部の構成と処理の説明
5−2.鍵スケジュール部のフルディフュージョン性に基づく効果について
5−3.鍵変換部のインボリューション性に基づく効果について
5−3−a.アンロールド(Unrolled)実装における効果について
5−3−b.ラウンド実装における効果について
5−4.本開示の鍵スケジュール部の構成と効果のまとめ
5−5.鍵スケジュール部のその他の構成例について
5−6.フルディフュージョン性を持つ鍵変換部を有する構成例について
6.定数入力による安全性向上を実現する構成について
6−1.定数入力による安全性向上を実現した従来構成とその問題点について
6−2.安全性の高い定数入力構成を持つ暗号処理装置の構成について
6−3.定数挿入位置のバリエーションについて
7.非線形変換部に適用するSボックス(S−box)の具体的構成例について
8.暗号処理装置の具体例について
9.暗号処理装置の実装例について
10.本開示の構成のまとめ
[1.共通鍵ブロック暗号の概要]
まず、共通鍵ブロック暗号の概要について説明する。
(1−1.共通鍵ブロック暗号)
ここでは共通鍵ブロック暗号(以下ではブロック暗号と呼ぶ場合がある)は以下に定義するものを指すものとする。
ブロック暗号は入力として平文Pと鍵Kを取り、暗号文Cを出力する。平文と暗号文のビット長をブロックサイズと呼び、例えばブロックサイズ=nとする。nは任意の整数値を取りうるが、通常、ブロック暗号アルゴリズムごとに、あらかじめひとつに決められている値である。ブロック長がnのブロック暗号のことをnビットブロック暗号と呼ぶこともある。
鍵のビット長をkで表す。鍵は任意の整数値を取りうる。共通鍵ブロック暗号アルゴリズムは1つまたは複数の鍵サイズに対応することになる。例えば、あるブロック暗号アルゴリズムAはブロックサイズn=128であり、k=128またはk=192またはk=256の鍵サイズに対応するという構成もありうるものとする。
平文P:nビット
暗号文C:nビット
鍵K:kビット
図1にkビットの鍵長に対応したnビット共通鍵ブロック暗号アルゴリズムEの図を示す。
暗号化アルゴリズムEに対応する復号アルゴリズムDは暗号化アルゴリズムEの逆関数E−1と定義でき、入力として暗号文Cと鍵Kを受け取り,平文Pを出力する。図2に図1に示した暗号アルゴリズムEに対応する復号アルゴリズムDの図を示す。
(1−2.内部構成)
ブロック暗号は2つの部分に分けて考えることができる。ひとつは秘密鍵Kを入力とし、ある定められたステップにより暗号処理部の各ラウンドで適用するラウンド鍵を出力する「鍵スケジュール部」と、もうひとつは平文Pと鍵スケジュール部からラウンド鍵を入力してデータ変換を行い暗号文Cを出力する「暗号処理部」である。
2つの部分の関係は図3に示される。
なお、暗号処理部は、暗号文Cを入力して平文Pを出力する復号処理も実行可能な構成である場合が多い。この場合も、鍵スケジュール部から供給されるラウンド鍵を適用した復号処理を実行する。
2つの部分の関係は図3に示される。
(1−3.暗号処理部)
以下の実施例において用いる暗号処理部はラウンド関数という処理単位に分割できるものとする。ラウンド関数は入力データに対して所定のデータ変換を施し、変換データを出力する。ラウンド関数に対する入力データは、例えば暗号化途中のnビットデータである。あるラウンドにおけるラウンド関数の出力が次のラウンドの入力として供給される構成となる。また、ラウンド関数の一構成として、鍵スケジュール部から出力された鍵に基づいて生成されるラウンド鍵との演算構成が含まれる。具体的には暗号化途中のnビットデータとラウンド鍵との排他的論理和演算が行われる。
またラウンド関数の総数は総ラウンド数と呼ばれ、暗号アルゴリズムごとにあらかじめ定められている値である。
暗号処理部の入力側から見て1ラウンド目の入力データをXとし、i番目のラウンド関数に入力されるデータをX、ラウンド鍵をRKとすると、暗号処理部全体は図4のように示される。
(1−4.ラウンド関数)
ブロック暗号アルゴリズムによってラウンド関数はさまざまな形態をとりうる。ラウンド関数はその暗号アルゴリズムが採用する構造(structure)によって分類できる。代表的な構造としてここではSPN(Substitution−Permutation Network)構造、Feistel構造、拡張Feistel構造を例示する。
(ア)SPN(Substitution−Permutation Network)構造ラウンド関数
nビットの入力データすべてに対して、ラウンド鍵との排他的論理和演算、非線形変換、線形変換処理などが適用される構成。各演算の順番は特に決まっていない。図5にSPN構造のラウンド関数の例を示す。線形変換部をP層(Permutation−layer)と呼ぶこともある。
(イ)Feistel構造
nビットの入力データはn/2ビットの2つのデータに分割される。うち片方のデータとラウンド鍵を入力として持つ関数(F関数)が適用され、出力がもう片方のデータに排他的論理和される。そののちデータの左右を入れ替えたものを出力データとする。F関数の内部構成にもさまざまなタイプのものがあるが、基本的にはSPN構造同様にラウンド鍵データとの排他的論理和演算、非線形演算、線形変換の組み合わせで実現される。図6にFeistel構造のラウンド関数の一例を示す。
(ウ)拡張Feistel構造
拡張Feistel構造はFeistel構造ではデータ分割数が2であったものを,3以上に分割する形に拡張したものである。分割数をdとすると、dによってさまざまな拡張Feistel構造を定義することができる。F関数の入出力のサイズが相対的に小さくなるため、小型実装に向いているとされる。図7にd=4でかつ、ひとつのラウンド内に2つのF関数が並列に適用される場合の拡張Feistel構造の一例を示す。また,図8にd=8でかつ,ひとつのラウンド内に1つのF関数が適用される場合の拡張Feistel構造の一例を示す。
(1−5.非線形変換部)
非線形変換部は、入力されるデータのサイズが大きくなると実装上のコストが高くなる傾向がある。それを回避するために対象データを複数の単位に分割し、それぞれに対して非線形変換を施す構成がとられることが多い。例えば入力サイズをmsビットとして、それらをsビットずつのm個のデータに分割して、それぞれに対してsビット入出力を持つ非線形変換を行う構成である。それらのsビット単位の非線形変換実行部をSボックス(S−box)と呼ぶ。Sボックス(S−box)の例を図9に示す。
図9に示す例は、msビットからなる入力データを、m個のsビットデータに分割し、各分割データを、各々sビットの非線形変換処理を実行するm個のSボックスに入力して、各Sボックスの出力を連結してmsビットの非線形変換結果を得る構成である。
(1−6.線形変換部)
線形変換部はその性質上、行列として定義することが可能である。行列の要素は拡大体GF(2)の体の要素やGF(2)の要素など、一般的にはさまざまな表現ができる。図10にmsビット入出力をもち、GF(2)の上で定義されるm×mの行列により定義される線形変換部の例を示す。
(1−7.ステートを用いたデータ表現)
各データ(平文、暗号文、鍵など)を表現する際に、データをm行(row)、n列(column)のマトリックス型としたm×n配列データとして表現することがある。このm×n配列によって表現されたデータをステート(state)、あるいはステート表現データと呼ぶ。
図11には、入力データをA、入力データAに対するデータ変換後の出力データをBとして、入力データA、出力データBをそれぞれm×n配列を持つステートとして表現した例を示している。
入力データAは、拡大体GF(2mnの要素であり、
入力データA=(a・・・amn−2mn−1)である。
なお、aはMSB、amn−1はLSB側のビットデータである。
同様に、出力データBも、拡大体GF(2mnの要素であり、
出力データB=(b・・・bmn−2mn−1)である。
なお、bはMSB、bmn−1はLSB側のビットデータである。
図に示すように、m×n配列のステートにはm×n個の要素が含まれる。
例えば図11に示すステートAにはa〜anm−1のmn個の要素が含まれる。ステートBの要素は、b〜bnm−1のmn個の要素である。
これらのmn個の要素の各々は、それぞれs(s=1以上)ビットデータからなる。具体的には、各要素は、例えば各々4ビットデータ、8ビット(1バイト)データ等のビットデータである。
なお、以下の実施例では、各要素を4ビットデータとした実施例について説明するが、本開示の処理は、4ビット要素データ以外の構成に対しても適用可能である。
図12に4×4ステートに含まれる16個の要素の各要素を4ビットデータとした場合の4×4ステートの例を示す。
図12に示す例も図11と同様、入力データをA、何らかのデータ変換後の出力データをBとしている。
入力データAは、拡大体GF(24×4の要素であり、
入力データA=(a・・・a1415)である。
なお、aはMSB、a15はLSB側のビットデータである。
同様に、出力データBも、拡大体GF(24×4の要素であり、
出力データB=(b・・・b1415)である。
なお、bはMSB、b15はLSB側のビットデータである。
図12に示す例は、入力データA、出力データBが各要素が4ビットデータからなる4×4配列を持つステートとして表現した例である。
例えば図12に示すステートAにはa〜a15の16個の要素が含まれ、これらの各要素は各々が4ビットデータである。
すなわち、64ビットの入力データAをステートとして示すと、図12に示す各要素が4ビットデータからなる4×4配列を持つステートAとして表現できる。
同様に、図12に示すステートBにはb〜b15の16個の要素が含まれ、これらの各要素も各々が4ビットデータである。
すなわち、64ビットの出力データBをステートとして示すと、図12に示す各要素が4ビットデータからなる4×4配列を持つステートBとして表現できる。
(1−8.ステート表現データに対する基本的演算)
次に、ステート(ステート表現データ)に対する演算処理について説明する。
(1)非線形変換処理(S)
例えば、ステートの各要素4ビット単位で非線形変換を行う複数のSボックスを適用して非線形変換処理を実行する。
図13(1)に示すように、入力ステートAに対する非線形変換処理によって、ステートBが生成されるとする。
この場合の各要素4ビット単位の出力bと入力aの関係は、
=S(a
i=0,1,・・・,15、
である。
(2)線形変換処理(P)
図13(2)に示すように、入力ステートAに対する線形変換処理によって、ステートBが生成されるとする。
4×4ステートに対する線形変換処理は、例えば4×4ステートの行ごとの4つのデータをベクトルとみなし4×4の行列[M]による演算を施して値を更新する演算として実行する。これを行拡散演算と呼ぶ。
変換処理後のステート各要素4ビット単位の出力bと入力aの関係は、
(b,bi+4,bi+8,bi+12)=M×(a,ai+4,ai+8,ai+12
i=0,1,2,3、
である。なお、Xは、Xの転置行列を示している。線形変換処理としては、このような行拡散演算の他、列拡散演算や、ビット置換など、様々な処理方法がある。
(3)排他的論理和演算(鍵適用演算処理(K))
図14に示すように、入力ステートAに対する排他的論理和演算処理によって、ステートBが生成されるとする。
例えば鍵スケジュール部から出力されたラウンド鍵Kと入力データAとの排他的論理和演算により、出力データBを算出する演算である。入力データA、ラウンド鍵K、出力データBのいずれも、16個の4ビット要素からなるステート表現された64ビットデータである。
変換処理後のステート各要素4ビット単位の出力bと入力a、ラウンド鍵kとの関係は、
=a(XOR)k
i=0,1,・・・,15、
である。なお、上記式において(XOR)は排他的論理和演算を示している。
上記の各演算(1)〜(3)を所定シーケンスで順次実行する演算の組み合わせによって、1つのラウンド演算が設定される。入力データに対して、ラウンド演算を繰り返し実行し出力データ、例えば暗号化データを生成して出力する。
なお、基本的なラウンド演算は、ラウンド鍵との排他的論理和演算と、線形変換処理と、非線形変換処理を各々1回ずつ実行するものとして設定される。ただし、暗号処理シーケンスにおいて実行されるラウンド演算の中には、変則的なラウンド演算構成も設定可能である。例えばラウンド鍵との排他的論理和演算を複数回含むラウンド演算や、線形変化処理を省略した構成など、他のラウンド演算とは異なるラウンド演算を設定することも可能である。
また、暗号処理シーケンスの最初や最後にラウンド鍵との演算のみを実行する構成も多く利用されている。この処理は鍵ホワイトニング処理と呼ばれ、一般的にはラウンド数としてはカウントしない。
(1−9.ステート表現データに対する列拡散演算)
次にm×nのマトリクス配列として示されたステート表現データに対する列拡散演算処理について、図15、図16を参照して説明する。
,X,・・・,Xn−1の各々を、各要素がGF(2)上の要素からなるm×m行列とする。
図15に示すように、
MC[X,X,・・・,Xn−1
上記演算を、ステート表現データの要素に対して、ステートの各列(0〜n−1)の要素と、各列対応の行列X,X1,・・・,Xn−1を適用した行列演算を列拡散演算と定義する。
なお、MCは、列(Column)単位の拡散(Mix)、すなわち(MixColumn)を意味する。
列拡散演算では、ステートの1つの列の要素に対して1つの行列Xを適用した行列演算を行う。
なお、ステートを構成する複数の列各々に対して適用する行列Xは、同じ行列とする設定と、異なる行列とする設定とのいずれの設定も可能である。
例えば、入力データであるステートAに対して、列拡散演算を実行して出力データであるステートBを算出する演算式は、以下のように表現できる。
B=MC[X,X,・・・,Xn−1](A)
この列拡散演算処理は、図15の下段に示すように、以下の式によって示される処理である。
すなわち、上記演算式によって算出されるステートBの要素は、以下の通りである。
(b・・・bm−1)=X×(a・・・am−1)、
(bm+1・・・b2m−1)=X×(am+1・・・a2m−1)、
・・・
(b(n−1)m(n−1)m+1・・・bnm−1)=Xn−1×(a(n−1)m(n−1)m+1・・・anm−1)、
なお、上記式において(b・・・b)は、(b・・・b)の転置行列を示す。
実際のステートA,Bの要素配列に従って上記演算式を示すと、図15の下段に示すように以下の演算式となる。
Figure 2015191107
図16は、
入力データAを64ビットデータとしてステートAを16個の4ビットデータ要素からなるステートAとし、
出力データBも64ビットデータとして、ステートBを16個の4ビットデータ要素からなるステートBとした場合の、
列拡散演算:MC[X,X,X,X
の適用処理例を示した図である。
すなわち、図15を参照して説明したと同様、
B=MC[X,X,X,X](A)
上記列拡散演算処理によりステートBの各要素の算出処理例を示している。
すなわち、上記演算式によって算出されるステートBの要素は、以下の通りである。
(b)=X×(a)、
(b)=X×(a)、
(b1011)=X×(a1011)、
(b12131415)=X×(a12131415)、
実際のステートA,Bの要素配列に従って上記演算式を示すと、図16の下段に示すように、以下の演算式となる。
Figure 2015191107
なお、ステートの各列要素に対して同じ行列Xを適用した行列演算行う場合、
MC[X]
と表現することもある。
つまり、MC[X]とMC[X,X,・・・,X]は同じ演算である。
(1−10.ステート表現データに対する行拡散演算)
次にm×nのマトリクス配列として示されたステート表現データに対する行拡散演算処理について、図17、図18を参照して説明する。
,X,・・・,Xm−1の各々を、各要素がGF(2)上の要素からなるn×n行列とする。
図17に示すように、
MR[X,X,・・・,Xm−1
上記演算を、ステート表現データの要素に対して、ステートの各行(0〜n−1)の要素と、各行対応の行列X,X1,・・・,Xm−1を適用した行列演算を行拡散演算と定義する。
なお、MRは、行(Row)単位の拡散(Mix)、すなわち(MixRow)を意味する。
行拡散演算では、ステートの1つの行の要素に対して1つの行列Xを適用した行列演算を行う。
なお、ステートを構成する複数の行各々に対して適用する行列Xは、同じ行列とする設定と、異なる行列とする設定とのいずれの設定も可能である。
例えば、入力データであるステートAに対して、行拡散演算を実行して出力データであるステートBを算出する演算式は、以下のように表現できる。
B=MR[X,X,・・・,Xm−1](A)
この行拡散演算処理は、図17の下段に示す処理である。
すなわち、上記演算式によって算出されるステートBの要素は、以下の通りである。
(b・・・b(n−1)m)=X×(a・・・a(n−1)m)、
(bm+1・・・b(n−1)m+1)=X×(am+1・・・a(n−1)m+1)、
・・・
(bm−12m−1・・・bnm−1)=Xm−1×(am−12m−1・・・anm−1)、
なお、上記式において(b・・・b)は、(b・・・b)の転置行列であることを示す。
実際のステートA,Bの要素配列に従って上記演算式を示すと、図17の下段に示すように、以下の演算式となる。
Figure 2015191107
図18は、
入力データAを64ビットデータとしてステートAを16個の4ビットデータ要素からなるステートAとし、
出力データBも64ビットデータとして、ステートBを16個の4ビットデータ要素からなるステートBとした場合の、
行拡散演算:MR[X,X,X,X
の適用処理例を示した図である。
すなわち、図17を参照して説明したと同様、
B=MR[X,X,X,X](A)
上記行拡散演算処理によりステートBの各要素の算出処理例を示している。
すなわち、上記演算式によって算出されるステートBの要素は、以下の通りである。
(b12)=X×(a12)、
(b13)=X×(a13)、
(b1014)=X×(a1014)、
(b1115)=X×(a1115)、
実際のステートA,Bの要素配列に従って上記演算式を示すと、図18の下段に示すように、以下の演算式となる。
Figure 2015191107
なお、ステートの各行要素に対して同じ行列Xを適用した行列演算行う場合、
MR[X]
と表現することもある。
つまり、MR[X]とMR[X,X,・・・,X]は同じ演算である。
(1−11.インボリューション性について)
平文Pから暗号文Cを生成する共通鍵ブロック暗号において、各ラウンドに適用するラウンド鍵をK1,K2,・・・,KRとしたとき、
平文Pから、暗号文Cを算出する暗号化関数Eは、以下のように示すことができる。
C=E(P,K1,K2,・・・,KR)
このとき、暗号文Cから平文Pを算出する復号関数Dは、
P=D(C,k1,k2,・・・kr)
となるが、
上記の復号関数Dが、以下を満たすとき、
D(C,k1,k2,・・・kr)=E(C,KR,・・・,K2,K1)
すなわち、復号関数Dが、暗号化関数Eにおけるラウンド鍵の適用順を逆順にするのみで、他は、同一関数を利用できる構成である場合、
この共通鍵ブロック暗号はインボリューション性を持つという。
このように、暗号化関数Eを用い,そのラウンド鍵の入力順を変更するのみで,復号関数Dが構成できるような共通鍵ブロック暗号はインボリューション性を持つといえる。例えば,Feistel型共通鍵ブロック暗号は、通常、使用するラウンド鍵の使用順序を逆にするだけで暗号化関数と復号関数が同じ回路で行えることが知られており、インボリューション性を持つといえる。
インボリューション性を持つ共通鍵ブロック暗号は、基本的には暗号化関数を実装するのみで、暗号化機能と復号機能を実現できるため、必要な回路が少なく、軽量化(小型化)が可能であり、実装効率が高くなる。
[2.共通鍵ブロック暗号における安全性の指標について]
共通鍵ブロック暗号に対する攻撃、例えば秘密鍵の解読等を目的とした様々な攻撃が知られている。具体的には、差分攻撃、線形攻撃などがある。
差分攻撃は、暗号装置に対して特定の差分を持つデータを入力し、出力から入力差分を反映するデータを検出して鍵の推定を行なおうとする攻撃である。なお、差分値の伝播確率を差分確率と呼ぶ。
線形攻撃は、入力の特定ビットの排他的論理和と出力の特定ビットの排他的論理和の間の相関を観測して、強い相関関係が見つけることで、鍵の推定を行なおうとする攻撃である。なお、入出力の特定ビットの相関係数を線形確率と呼ぶ。
安全性の高い暗号とは、上記のような各種の攻撃に対する耐性が高い暗号、すなわち暗号処理に適用される秘密情報、例えば鍵等の解読困難性の高い暗号である。
以下、暗号アルゴリズムの安全性指標となる複数のデータについて説明する。
(2−1.分岐数について)
共通鍵ブロック暗号においては、例えば、上述した線形変換、非線形変換、あるいは排他的論理和演算など、様々なデータ変換が実行される。
このようなデータ変換の解読困難性に関する安全性指標として分岐数がある。
例えば、n×aビットデータからn×bビットデータへの写像θを、
θ:{0,1}na→{0,1}nb
とする。
上記の写像θに対して分岐数(Branch(θ))を次のように定義する。
Branch(θ)=minα≠0{hw(α)+hw(θ(α))}
ただし、
minα≠0{Xα}は,α≠0を満たすすべてのXαのうちの最小値を表し、
hw(Y)はビット列Yをnビット毎に区切って表したときに、nビットのデータ全てが0ではない(非ゼロ)要素の数を返す関数とする。
一般的に、分岐数が高いほど解読困難性が高くなり、差分攻撃や線形攻撃に対する耐性が向上すると言われる。
なお、分岐数Branch(θ)がb+1であるような写像θは、最適拡散変換(Optimal Diffusion Mappings)と呼ばれる。
分岐数の高い線形変換用の行列として、例えば、最適拡散変換を実行するMDS(Maximum Distance Separable)行列がある。MDS行列は、行列を構成する任意の小行列が正則行列となる行列である。なお、正則行列は、逆行列を持つ行列であり、行列をAとし、逆行列をA−1とすると、
AA−1=A−1A=E、
ただしEは単位行列、
上記式が成立する逆行列A−1を持つ行列Aが正則行列である。
(2−2.最小差分アクティブS−box数について)
前述したように共通鍵ブロック暗号に設定される非線形変換部には、sビット単位の非線形変換を実行するSボックス(S−box)が用いられる。
差分攻撃に対する耐性を図る指標として,差分の接続関係を表現した差分パスに含まれる差分アクティブS−boxの最小数、すなわち、最小差分アクティブS−box数がある。
差分パスとは、暗号化関数中の鍵データを除くすべてのデータ部分に対して特定の差分値を指定したものである。差分値は自由に決められるものではなく変換処理の前後の差分値は互いに関連しあっている。線形変換処理の前後では、入力差分と出力差分の関係は一対一に決定される。非線形変換の前後では、入力差分と出力差分の関係は一対一にはきまらないが、確率という概念が導入される。ある入力差分と出力差分に対する確率は事前に計算することができるものとする。すべての出力に対する確率をすべて足し合わせると1となっている。
一般的な暗号(ブロック暗号など)において、非線形変換はS−boxによる処理の部分のみである。したがって、この場合、0以外の確率をもつ差分パスとは、平文(入力)に対する差分値から始まって暗号文(出力)の差分値までに至る差分データの集合であり、すべてのS−boxの前後で与えられる差分値は0以外の確率をもつものである。0以外の確率をもつある差分パスのS−boxに入力される差分値が0でないものを差分アクティブS−boxと呼ぶものとする。0以外の確率を持つすべての差分パスの差分アクティブS−box数のうちで最も少ない数を最小差分アクティブS−box数とよび、この数値が差分攻撃に対する安全性指標としてよく知られている。
一般的には、最小差分アクティブS−box数が十分大きくなることを保証することで差分攻撃に対する安全性を示すことが可能であり、少ないラウンド関数の繰り返し回数でより多くの最小差分アクティブS−box数を保証できるような暗号は、より性能の高い暗号と考えることができる。なお、すべての差分値が0であるような差分パスは、確率が1となり攻撃として意味をなさない。
(2−3.最小線形アクティブSボックス(S−box)数について)
線形攻撃に対する耐性を示す指標の一つとして、線形マスクの接続関係を表現した線形パスに含まれる線形アクティブSボックス(S−box)の最小数が挙げられる。
なお、線形パスは、線形近似と呼ばれることも多いが、差分と対応させるためここではパスという言葉を用いる。
線形パスとは、暗号化関数中の鍵データを除くすべてのデータ部分に対して特定の線形マスク値を指定したものである。線形マスク値は自由に決められるものではなく変換処理の前後の線形マスク値は互いに関連しあっている。線形変換処理の前後では、入力線形マスク値と出力線形マスク値の関係は一対一に決定される。非線形変換の前後では、入力線形マスク値と出力線形マスク値の関係は一対一には決まらないが、確率という概念が導入される。入力線形マスク値に対して、出力されうる一つ以上の線形マスク値の集合が存在し、それぞれが出力される確率を事前に計算することができる。すべての出力に対する確率をすべて足し合わせると1となっている。
一般的な暗号(ブロック暗号など)では、非線形変換はSボックス(S−box)による処理の部分のみである。したがって、この場合、0以外の確率を持つ線形パスとは平文(入力)に対する線形マスク値から始まって暗号文(出力)の線形マスク値までに至る線形マスク値データの集合であり、すべてのSボックス(S−box)の前後で与えられる線形マスク値は0以外の確率を持つものである。0以外の確率をもつある線形パスのSボックス(S−box)に入力される線形マスク値が0でないものを線形アクティブSボックス(S−box)と呼ぶものとする。0以外の確率を持つすべての線形パスのアクティブSボックス(S−box)数のうちで最も少ない数を最小線形アクティブSボックス(S−box)数とよび、この数値が線形攻撃に対する安全性指標としてよく知られている。
一般的には、最小線形アクティブSボックス(S−box)数が十分大きくなることを保証することで線形攻撃に対する安全性を示すことが可能であり、少ないラウンド関数の繰り返し回数でより多くの最小線形アクティブSボックス(S−box)数を保証できるような暗号は、より性能の高い暗号と考えることができる。なお、すべての線形マスク値が0であるような線形パスは、確率が1となり攻撃として意味をなさない。
[3.安全性を高めた共通鍵暗号処理の全体構成概要について]
次に、安全性を高めた本開示の共通鍵暗号処理装置の構成と処理について説明する。
以下に説明する本開示の暗号処理装置は、共通鍵ブロック暗号(ブロック暗号)を実行する装置であり、SPN(Substitution−Permutation Network)構造ラウンド関数を有する装置である。
nビットの入力データすべてに対して、ラウンド鍵との排他的論理和演算、非線形変換、線形変換処理を、複数ラウンド繰り返し実行する構成である。
本開示の共通鍵暗号処理装置の1つの具体的構成例を、図19に示す。
図19に示すように、暗号処理装置100は、鍵スケジュール部110と、暗号処理部120を有する。
鍵スケジュール部110は、秘密鍵Kを入力とし、所定の鍵生成アルゴリズムに従って、暗号処理部120の各ラウンドで適用するラウンド鍵を出力する。暗号処理部120は、鍵スケジュール部110からラウンド鍵を入力して平文Pのデータ変換を行い暗号文Cを出力する。
なお、暗号処理部120は、暗号文Cを入力して平文Pを出力する復号処理も実行可能である。復号処理を実行する際は、鍵スケジュール部110から供給されるラウンド鍵を暗号化処理とは逆順に適用した処理を実行する。
暗号処理部120は、
入力データと、ラウンド鍵との排他的論理和演算を実行する排他的論理和部121、
入力データに対して非線形変換処理を実行する非線形変換部122、
入力データに対して線形変換処理を実行する線形変換部123、
を有する。
図に示すように、本開示の暗号処理装置100の暗号処理部120は、排他的論理和部121、非線形変換部122、線形変換部123、これら3つの異なるデータ変換処理を繰り返し実行する構成を有する。
なお、入力データとしての平文P、出力データとしての暗号文Cは、図20に示すように、前述したステート表現データであり、各要素の各々を4ビットデータとして、4×4の16要素によって構成される64ビットデータである。
なお、鍵スケジュール部110から入力するラウンド鍵も、16個の4ビットデータ要素からなるステート表現された64ビットデータである。
暗号処理部120では、図21に示すように、以下の3種類のデータ変換処理が繰り返し実行される。
(a)排他的論理和演算処理
(b)非線形変換処理
(c)線形変換処理
これらの各処理をステートに対する処理として実行する。ステートに対するこれらの処理については、図13、図14を参照して説明した通りである。
暗号処理部120の非線形変換部において実行する非線形変換処理は、例えば図22(1)に示すように、複数のSボックス(S−box)を利用して実行される。
各Sボックスは例えば、4ビット入出力構成を持つ非線形変換部であり、16個のSボックスによる並列処理によって4×16=64ビットの非線形変換処理を実行する。
また、暗号処理部120の線形変換部において実行する線形変換処理は、例えば図22(2)に示すように、行列演算処理として実行する。
[4.暗号処理部の線形変換部の構成と処理について]
図19を参照して説明したように、本開示の暗号処理装置100の暗号処理部120は、ラウンド鍵との排他的論理和演算、非線形変換、線形変換処理を複数ラウンド繰り返し実行する構成を持つ。
本開示の暗号処理装置の特徴の1つは、各ラウンドにおいて実行する線形変換処理をラウンド毎に異なる処理として実行する構成としたことにある。
以下、本開示の暗号処理装置の実行する線形変換処理の詳細について説明する。
図23は、本開示の暗号処理装置の暗号処理部に構成する異なる線形変換部の構成例について説明する図である。
なお、図23の構成図は、排他的論理和部は省略して示した構成図である。
図23に示す例では、3つの異なる線形変換処理を実行する線形変換部を有する構成としている。すなわち、
線形変換部P1,201、
線形変換部P2,202、
線形変換部P3,203、
これらの3つの異なる線形変換部を有し、これら3種類の異なる線形変換処理のいずれかを各ラウンドにおいて実行する構成とし、連続ラウンドでは同じ線形変更処理を続けることなく、異なる線形変換処理を行なう設定としたことにある。
図23に示す例では、
平文Pの入力側から順に、
線形変換部P1,
線形変換部P2,
線形変換部P1,
線形変換部P3,
線形変換部P1,
上記シーケンスで、5回の線形変換処理を行なう。
この5回の線形変換処理において、連続ラウンドでは同じ線形変更処理を続けることなく、ラウンド切り替えに応じて、異なる線形変換処理を実行する。
上記の例では、3種類の異なる線形変換P1,P2,P3を組み合わせて実行することで、連続するラウンドにおいては同じ線形変換を実行しない設定としている。
このように、暗号処理において、ラウンド遷移に応じて線形変換態様を変更することで、最小差分アクティブSボックス、および最小線形アクティブSボックスの数を増加させることが可能となり、差分攻撃や線形攻撃に対する耐性を向上させることができる。
3種類の線形変換処理の具体的な処理について、図24以下を参照して説明する。
線形変換処理P1〜P3には、図24(1)に示す4つの異なる行列M〜Mを組み合わせて利用する。すなわち、以下に示す4×4の行列(Matrix)M〜Mを組み合わせて構成する。
Figure 2015191107
線形変換処理P1〜P3には、上記の4つの異なる行列M〜Mを組み合わせて利用する。
なお、上記の4つの行列は、前述したMDS(Maximum Distance Separable)行列ではないnon−MDS行列である。
以下に説明する実施例では、non−MDS行列を利用した線形変換処理例について説明するが、MDS行列を適用した構成としてもよい。
図24(2)は、線形変換処理P1〜P3の具体的な行列演算の態様を説明する図である。
図24(2)に示す4×4の矩形は、線形変換処理対象となる各要素4ビットの16個の要素からなるステートを示している。すなわち64ビットの4×4ステートである。
この4×4ステートの入力データに対して、行列M〜Mを組み合わせて利用した行列演算を実行する。
線形変換処理P1は、
4×4ステートの入力データの各列の要素に対して、各列単位で、1つの行列Mを適用した行列演算を行う。
これは、先に、図15、図16を参照して説明した列拡散演算(MixColum)である。
すなわち、線形変換処理P1は、
MC[M
上記式によって示される列拡散演算(MC)である。
なお、MC[M]は、ステートの各列に対して、同一の行列Mを適用した行列演算を示す式であり、ステートの各列に対して適用する行列を個別に示した式、
MC[M,M,M,M
上記式と同じ意味である。
次に、線形変換処理P2について説明する。
線形変換処理P2は、図24(2)に示すように、4×4ステートの入力データの各行の要素に対して、各行単位で異なる行列を適用した行列演算を行う。上位の第1行から第4行に対して、以下の行列を適用した行列演算を実行する。
第1行:適用行列M
第2行:適用行列M
第3行:適用行列M
第4行:適用行列M
これは、先に、図17、図18を参照して説明した行拡散演算(MixRow)である。
すなわち、線形変換処理P2は、
MR[M,M,M,M
上記式によって示される行拡散演算(MixRow)である。
次に、線形変換処理P3について説明する。
線形変換処理P3も、線形変換処理P2と同様、図24(2)に示すように、4×4ステートの入力データの各行の要素に対して、各行単位で異なる行列を適用した行列演算を行う。線形変換処理P3は、線形変換処理P2とは異なり、上位の第1行から第4行に対して、以下の行列を適用した行列演算を実行する。
第1行:適用行列M
第2行:適用行列M
第3行:適用行列M
第4行:適用行列M
これは、先に、図17、図18を参照して説明した行拡散演算(MixRow)である。
すなわち、線形変換処理P3は、
MR[M,M,M,M
上記式によって示される行拡散演算(MixRow)である。
なお、以下では、線形変換処理P2と、P3を区別するため、
線形変換処理P2を行拡散演算タイプ1(MixRow1)、
線形変換処理P3を行拡散演算タイプ2(MixRow2)、
と呼ぶ。
線形変換処理P1は、列拡散演算(MixColumn)である。
これら3つの線形変換処理P1〜P3の具体的な行列演算の計算処理例について、図25以下を参照して説明する。
図25は、線形変換処理P1、すなわち列拡散演算(MixColumn)の具体的な計算処理例を説明する図である。
図25(1)には。線形変換部P1に対する入出力データの例を示している。
入力Aはnビットデータの16個の要素a〜a15からなるステートである。
出力Bもnビットデータの16個の要素b〜b15からなるステートである。
なお、入出力データの各要素a,b(ただしi=0〜15)は、0,1のいずれかの値から構成されるnビットデータである。
なお、本実施例では、n=4であり、各要素は4ビットデータあり、入力A、出力Bとも64ビットである。
図25(2)には、線形変換処理P1、すなわち列拡散演算(MixColumn)の具体的な計算処理例を示している。
線形変換処理P1として行われる列拡散演算(MixColumn)は、以下の式に従った行列演算である。
Figure 2015191107
出力Bの16個の要素b〜b15は、行列Mと、入力Aの16個の要素a〜a15に基づいて以下の演算によって算出される。
=a(+)a(+)a
=a(+)a(+)a
=a(+)a(+)a
=a(+)a(+)a
=a(+)a(+)a
=a(+)a(+)a
=a(+)a(+)a
=a(+)a(+)a
=a(+)a10(+)a11
=a(+)a10(+)a11
10=a(+)a(+)a11
11=a(+)a(+)a10
12=a13(+)a14(+)a15
13=a12(+)a14(+)a15
14=a12(+)a13(+)a15
15=a12(+)a13(+)a14
なお、上記式において、演算子(+)は、排他的論理和演算を意味する。
線形変換処理P1として行われる列拡散演算(MixColumn)は、上記演算処理に従って、行列Mと、入力Aの16個の要素a〜a15に基づいて出力Bの16個の要素b〜b15を算出する。
図26は、線形変換処理P2、すなわち行拡散演算タイプ1(MixRow1)の具体的な計算処理例を説明する図である。
図26(1)には。線形変換部P2に対する入出力データの例を示している。
入力Aはnビットデータの16個の要素a〜a15からなるステートである。
出力Bもnビットデータの16個の要素b〜b15からなるステートである。
なお、入出力データの各要素a,b(ただしi=0〜15)は、0,1のいずれかの値から構成されるnビットデータである。
なお、本実施例では、n=4であり、各要素は4ビットデータあり、入力A、出力Bとも64ビットである。
図26(2)には、線形変換処理P2、すなわち行拡散演算タイプ1(MixRow1)の具体的な計算処理例を示している。
線形変換処理P2として行われる行拡散演算タイプ1(MixRow1)は、以下の式に従った行列演算である。
Figure 2015191107
出力Bの16個の要素b〜b15は、行列M,M,M,Mと、入力Aの16個の要素a〜a15に基づいて以下の演算によって算出される。
=a(+)a(+)a12
=a(+)a(+)a13
=a(+)a(+)a10
=a(+)a11(+)a15
=a(+)a(+)a12
=a(+)a(+)a
=a(+)a(+)a14
=a(+)a11(+)a15
=a(+)a(+)a12
=a(+)a(+)a13
10=a(+)a10(+)a14
11=a(+)a(+)a11
12=a(+)a(+)a
13=a(+)a(+)a13
14=a(+)a10(+)a14
15=a(+)a(+)a15
なお、上記式において、演算子(+)は、排他的論理和演算を意味する。
線形変換処理P2として行われる行拡散演算タイプ1(MixRow1)は、上記演算処理に従って、行列M,M,M,Mと、入力Aの16個の要素a〜a15に基づいて出力Bの16個の要素b〜b15を算出する。
図27は、線形変換処理P3、すなわち行拡散演算タイプ2(MixRow2)の具体的な計算処理例を説明する図である。
図27(1)には。線形変換部P2に対する入出力データの例を示している。
入力Aはnビットデータの16個の要素a〜a15からなるステートである。
出力Bもnビットデータの16個の要素b〜b15からなるステートである。
なお、入出力データの各要素a,b(ただしi=0〜15)は、0,1のいずれかの値から構成されるnビットデータである。
なお、本実施例では、n=4であり、各要素は4ビットデータあり、入力A、出力Bとも64ビットである。
図27(2)には、線形変換処理P2、すなわち行拡散演算タイプ2(MixRow2)の具体的な計算処理例を示している。
線形変換処理P3として行われる行拡散演算タイプ2(MixRow2)は、以下の式に従った行列演算である。
Figure 2015191107
出力Bの16個の要素b〜b15は、行列M,M,M,Mと、入力Aの16個の要素a〜a15に基づいて以下の演算によって算出される。
=a(+)a(+)a
=a(+)a(+)a13
=a(+)a(+)a14
=a(+)a11(+)a15
=a(+)a(+)a12
=a(+)a(+)a13
=a(+)a(+)a10
=a(+)a11(+)a15
=a(+)a(+)a12
=a(+)a(+)a13
10=a(+)a10(+)a14
11=a(+)a(+)a11
12=a(+)a(+)a12
13=a(+)a(+)a
14=a(+)a10(+)a14
15=a(+)a(+)a15
なお、上記式において、演算子(+)は、排他的論理和演算を意味する。
線形変換処理P3として行われる行拡散演算タイプ2(MixRow2)は、上記演算処理に従って、行列M,M,M,Mと、入力Aの16個の要素a〜a15に基づいて出力Bの16個の要素b〜b15を算出する。
このように、1回の暗号処理シーケンスにおいて実行する複数の線形変換処理をラウンド毎に変更することで、最小差分アクティブSボックス、および最小線形アクティブSボックスの数を増加させることが可能となり、差分攻撃や線形攻撃に対する耐性を向上させることができる。
アクティブSボックスの数についての検証結果について説明する。
本開示の暗号処理装置、すなわち、3種類の異なる線形変換処理P1〜P3を実行する暗号処理装置と、従来型の単一種類の線形変換処理を繰り返し実行する暗号処理装置におけるアクティブSボックスの数を検証した。
本開示の暗号処理装置は、図28に示すように、暗号処理シーケンスにおいて、3種類の線形変換処理を用い、これらをラウンド毎に切り替えて実行する構成である。
なお、図28に示す図はラウンド鍵との排他的論理和演算部を省略して示している。
図28に示す暗号処理装置は、非線形変換部数=6であるので6ラウンド構成とする。なお、ラウンド数の定義のしかたは、いくつかの方法があるが、ここでは、非線形変換部の数をラウンド数としている。
図28に示す例ではラウンド鍵RK〜RK7の7個のラウンド鍵を適用しているが非線形変換部は6層存在するので6ラウンドの暗号処理装置であるとする。
図28に示すように、暗号処理過程において、3つの異なる線形変換処理を少なくとも1回実行する。
線形変換処理P1は、行列Mを適用した列拡散演算(MixColumn)である。
線形変換処理P2は、行列M、M、M、Mを適用した行拡散演算タイプ1(MixRow1)である。
線形変換処理P3は、行列M、M、M、Mを適用した行拡散演算タイプ2(MixRow2)である。
図28に示す暗号処理装置に対して、従来型の単一の線形変換処理を実行する暗号処理装置の例を図29に示す。
図29に示す暗号処理装置も6ラウンド構成であるが、各ラウンドの線形変換処理は同じ線形変換処理を行なう構成である。
図29の暗号処理装置の全ての線形変換処理部は、図28の暗号処理装置でも用いた行列Mのみを利用した線形変換処理P1、すなわち、行列Mを用いた列拡散演算を行う設定とした。
図28に示す複数の異なる線形変換処理を実行する暗号処理装置と、図29に示す単一の線形変換処理を実行する従来型の装置について、様々なラウンド数の装置を構成して、最小差分アクティブSボックス、および最小線形アクティブSボックスの数を検証した。
図28、図29の構成とも、64ビットの入力平文Pに対する暗号化処理を実行して64ビット暗号文Cを出力する設定である。
Sボックスは、各非線形変換部に設定されており、各Sボックスは、先に図22を参照して説明したように4ビット入出力の非線形変換を実行する構成である。
図28、図29の暗号処理装置の各非線形変換部には、4ビット入出力Sボックスが16個設けられており、4×16=64ビットデータの非線形変換を実行する。
図28、図29に示す6ラウンド型の暗号処理装置には、6つの非線形変換部が設定されているのまで、Sボックスの総数は16×6=96となる。
この総数96個のSボックスのうち、全ての入力パターンにおけるアクティブSボックスの数をカウントし、最小差分アクティブSボックス、および最小線形アクティブSボックスの数を検証した。
この検証結果を図30、図31に示す。
図30に示すように、ラウンド数4〜24の異なるラウンド数の暗号処理装置を構成して最小差分/線形差分アクティブSボックスの数をカウントした結果である。
ラウンド数=4では、
従来型の同一線形変換部を繰り返し実行する構成でも、本開示の異なる線形変換処理を実行する構成でも、アクティブSボックスの数は4であり、同じ値となるが、ラウンド数=6〜24の場合(8を除く)は、いずれの場合も、本開示の異なる線形変換処理を実行する構成の方がアクティブSボックスの数が多くなっている。
この結果をグラフとして示したのが図31に示すグラフである。
なお、上述した実施例では、入力データを各要素が4ビットの4×4個の要素からなるステートとし、線形変換部が4種類の行列M,M,M,Mを利用した行列演算による線形変換処理を実行する構成について説明したが、上記処理を一般化した構成として説明すると以下のような設定となる。
入力データを各要素が1ビット以上のm×n個の要素からなるステートとした場合、線形変換部は、ステートの各列要素単位で行列を適用して線形変換を行う列拡散演算と、ステートの各行要素単位で行列を適用して線形変換を行う行拡散演算のいずれかの行列演算をラウンド演算において実行する構成となる。
ここで、線形変換部は、複数種類の行列M0〜Mk(kは1以上の整数)を利用した行列演算による線形変換処理を実行する構成であり、ステートの各列要素単位で行列M0〜Mkから選択した選択行列を特定の順番で各列に適用して線形変換を行う列拡散演算と、ステートの各行要素単位で行列M0〜Mkから選択した選択行列を特定の順番で各行に適用して線形変換を行う行拡散演算をラウンド遷移に応じて切り替えて実行する。
具体的な線形変換処理構成の一例は、例えば以下の構成となる。
(a)ステートの各列要素単位で行列M0〜Mkから選択した選択行列を特定の順番で各列に適用して線形変換を行う列拡散演算と、
(b)ステートの各行要素単位で行列M0〜Mkから選択した選択行列を特定の順番Aで各行に適用して線形変換を行う行拡散演算タイプ1と、
(c)ステートの各行要素単位で行列M0〜Mkから選択した選択行列を特定の順番Aと異なる順番Bで各行に適用して線形変換を行う行拡散演算タイプ2を、
ラウンド遷移に応じて切り替えて実行する暗号処理装置。
さらに、上記の構成における列拡散演算と行拡散演算を入れ替えた以下の構成としてもよい。
(a)ステートの各行要素単位で行列M0〜Mkから選択した選択行列を特定の順番で各行に適用して線形変換を行う列拡散演算と、
(b)ステートの各列要素単位で行列M0〜Mkから選択した選択行列を特定の順番Aで各列に適用して線形変換を行う行拡散演算タイプ1と、
(c)ステートの各列要素単位で行列M0〜Mkから選択した選択行列を特定の順番Aと異なる順番Bで各列に適用して線形変換を行う行拡散演算タイプ2を、
ラウンド遷移に応じて切り替えて実行する暗号処理装置。
また、入力データが各要素4ビットの4×4個の要素からなるステートの場合の線形変換処理の具体化構成としては以下の構成が可能である。
線形変換部は、4種類の行列M0,M1,M2,M3を利用した行列演算による線形変換処理を実行する構成であり、
(a)ステートの各列要素単位で行列M0を適用して線形変換を行う列拡散演算と、
(b)ステートの各行要素単位で行列M0,M1,M2,M3の順に各行列を適用して線形変換を行う行拡散演算タイプ1と、
(c)ステートの各行要素単位で前記タイプ1と異なる順に各行列を適用して線形変換を行う行拡散演算タイプ2、
上記3種類の行列演算をラウンド遷移に応じて切り替えて実行する暗号処理装置。
なお、ここで、行拡散演算タイプ1においてステートの各行要素単位で適用する行列と、行拡散演算タイプ2においてステートの各行要素単位で適用する行列との組み合わせは、ステートの任意の2つの行に対してタイプ1で適用する2つの行列とタイプ2で適用する2つの行列の計4つの行列が少なくとも3種類以上の行列によって構成される組み合わせとする。
例えば、タイプ1において、4×4ステートの各行:第1〜4行に適用する行列を、
M1,M3,M0,M2
としたとき、
タイプ2において4×4ステートの各行:第1〜4行に適用する行列を、
M0,M2,M3,M1
このような設定とする。
上記設定では、4×4ステートの任意の2つの行に対してタイプ1で適用する2つの行列とタイプ2で適用する2つの行列の計4つの行列が少なくとも3種類以上の行列によって構成される組み合わせとなる。
すなわち、上記設定において、4×4ステートの第1行に適用する行列は、
タイプ1=M1、
タイプ2=M0、
4×4ステートの第2行に適用する行列は、
タイプ1=M3、
タイプ2=M2、
このような組み合わせとなり、第1行と第2行に対してタイプ1,2の双方で適用される行列がM0〜M3の4種類となる。
上記設定は、その他の任意の2行の組み合わせにおいて、タイプ1で適用する2つの行列とタイプ2で適用する2つの行列の計4つの行列が少なくとも3種類以上の行列によって構成される組み合わせとなる。
さらに、上記の構成における列拡散演算と行拡散演算を入れ替えた以下の構成としてもよい。
線形変換部は、4種類の行列M0,M1,M2,M3を利用した行列演算による線形変換処理を実行する構成であり、
(a)ステートの各行要素単位で行列M0を適用して線形変換を行う行拡散演算と、
(b)ステートの各列要素単位で行列M0,M1,M2,M3の順に各行列を適用して線形変換を行う列拡散演算タイプ1と、
(c)ステートの各列要素単位で前記タイプ1と異なる順に各行列を適用して線形変換を行う列拡散演算タイプ2、
上記3種類の行列演算をラウンド遷移に応じて切り替えて実行する暗号処理装置。
なお、この構成においても、行拡散演算タイプ1においてステートの各列要素単位で適用する行列と、行拡散演算タイプ2においてステートの各列要素単位で適用する行列との組み合わせは、ステートの任意の2つの列に対してタイプ1で適用する2つの行列とタイプ2で適用する2つの行列の計4つの行列が少なくとも3種類以上の行列によって構成される組み合わせとする。
このように1回の暗号処理シーケンスにおいて実行する線形変換処理をラウンド毎に変更することで、最小差分アクティブSボックス、および最小線形アクティブSボックスの数を増加させることが可能となり、差分攻撃や線形攻撃に対する耐性を向上させることができる。
[5.鍵スケジュール部の構成と処理について]
次に、本開示の暗号処理装置における鍵スケジュール部の構成と処理について説明する。
[5−1.鍵スケジュール部の構成と処理の説明]
先に図19を参照して説明したように、本開示の暗号処理装置100は、鍵スケジュール部110と、暗号処理部120を有する。
鍵スケジュール部110は、例えば秘密鍵Kに基づいて所定の鍵生成アルゴリズムに従って、暗号処理部120の各ラウンドで適用するラウンド鍵を生成して暗号処理部120に出力する。暗号処理部120は、鍵スケジュール部110からラウンド鍵を入力して平文Pのデータ変換を行い暗号文Cを出力する。
なお、復号処理に際しても同様の処理が行われる。
以下、このラウンド鍵生成、供給処理を実行する鍵スケジュール部110の構成と処理について説明する。
図32は、本開示の暗号処理装置における鍵スケジュール部の一構成例を示す図である。
鍵スケジュール部300は、秘密鍵Kを格納した記憶部としての鍵供給部(鍵レジスタ)301を有する。
鍵スケジュール部300は、この鍵Kを、暗号処理部320の第1ラウンドの排他的論理和部(ラウンド鍵演算部)321に出力する。すなわち鍵Kが、第1ラウンドのラウンド鍵として利用される。
さらに、鍵スケジュール部300は、鍵Kを鍵変換部302aに入力する。鍵変換部302aは、鍵Kに対する所定の演算を実行して変換鍵Kdを生成する。
さらに、鍵変換部302aの生成した変換鍵Kdを暗号処理部320の第2ラウンドの排他的論理和部(ラウンド鍵演算部)322に出力する。すなわち変換鍵Kdが、第2ラウンドのラウンド鍵として利用される。
さらに、鍵スケジュール部300は、変換鍵Kdを鍵変換部302bに入力する。鍵変換部302bは、変換鍵Kdに対する所定の演算を実行して鍵Kを生成する。
この鍵Kは、変換鍵Kdの生成元となった鍵Kと同じ鍵である。
鍵スケジュール部300は、鍵変換部302bの生成した鍵Kを暗号処理部320の第3ラウンドの排他的論理和部(ラウンド鍵演算部)323に出力する。すなわち鍵Kが、第3ラウンドのラウンド鍵として利用される。
以下、同様の処理を繰り返し、鍵変換部302c〜fにおいて、鍵Kと鍵K1dが交互に生成し、生成した鍵を暗号処理部の排他的論理和部324〜327に出力する。
鍵変換部302a〜302fはいずれも同じ演算を実行する。すなわち同一の演算処理により、
鍵Kから変換鍵Kdを生成し、
変換鍵Kdから鍵Kを生成する。
変換関数G、および逆関数G−1を用いて式で示すと以下の通りとなる。
Kd=G(K
=G−1(Kd
である。
なお、
G=G−1が成立する。
すなわち、鍵変換部302a〜302fにおいて鍵変換に適用するデータ変換関数Gは、インボリューション性、すなわち、図33に示すように、順方向関数Gと逆方向関数G−1とが同じ関数であるという性質を持つ。
図33には、図32で説明した鍵Kをベース鍵K、変換鍵Kdを変換鍵Kdとして示している。図33に示す各鍵は16個の4ビット要素の4×4ステートとして表現している。すなわち、いずれも64ビット鍵データである。
鍵変換部302の実行する鍵変換処理例について、図34を参照して説明する。
図34は、ベース鍵Kから変換鍵Kdを生成する処理を説明する図である。
ベース鍵Kから変換鍵Kdを生成する処理は、以下の2つのステップによって構成される。
(S1)ベース鍵Kに対して、中間鍵生成列拡散演算(MixColumn_KSF())を適用した演算を実行して中間鍵Sを生成する。
(S2)中間鍵Sに対して、変換鍵生成列拡散演算(MixRow_KSF())を適用した演算を実行して変換鍵Kdを生成する。
ステップS1で実行する列拡散演算(MixColumn)、およびステップS2で実行する行拡散演算(MixRow)は、先に図24〜図27を参照して説明したと同様の行列適用演算である。
ただし、この鍵変換処理において適用する行列Mは、以下に示す行列である。
Figure 2015191107
上記に示す行列Mは、アダマール(Hadamard)MDS行列とよばれる行列である。
MDS行列は、行列を構成する任意の小行列が正則行列となる行列である。なお、正則行列は、逆行列を持つ行列であり、行列をAとし、逆行列をA−1とすると、
AA−1=A−1A=E、
ただしEは単位行列、
上記式が成立する逆行列A−1を持つ行列Aが正則行列である。
前述したように、分岐数Branch(θ)がb+1であるような写像θは、最適拡散変換(Optimal Diffusion Mappings)と呼ばれ、MDS行列は、最適拡散変換を実行する行列である。
このアダマール(Hadamard)MDS行列Mを適用して、図34に示すステップS1の列拡散演算と、ステップS2の行拡散演算を実行する。
ステップS1の列拡散演算は、以下の演算式によって示される。
MC[M]=MC[M,M,M,M
また、ステップS2の行拡散演算は、以下の演算式によって示される。
MR[M]=MR[M,M,M,M
すなわち、ステップS1の列拡散演算は、4ビット要素からなる4×4のステート表現データの4つの全ての列に対して、同一のアダマール(Hadamard)MDS行列Mを適用した行列演算を実行する。
また、ステップS2の行拡散演算は、4ビット要素からなる4×4のステート表現データの4つの全ての行に対して、同一のアダマール(Hadamard)MDS行列Mを適用した行列演算を実行する。
アダマール(Hadamard)MDS行列Mを適用した行列演算のアルゴリズムは以下のように示すことができる。
():{0,1}16→{0,1}16
Input:{x,x,x,x},x∈{0,1}
Output:{y,y,y,y},y∈{0,1}
Operation
・y=x(+)2(×)x(+)4(×)x(+)6(×)x
・y=2(×)x(+)x(+)6(×)x(+)4(×)x
・y=4(×)x(+)6(×)x(+)x(+)2(×)x
・y=6(×)x(+)4(×)x(+)2(×)x(+)x
ただし、
(+)は、排他的論理和演算、
(×)は、既約多項式:x+x+1によって規定される拡大体GF(2)上の乗算を示す。
図34に示すステップS1の列拡散演算MC[M]は、以下の式に従った行列演算である。
Figure 2015191107
上記の列拡散演算MC[M]のアルゴリズムは以下のように示すことができる。
MixColumn_KSF():{0,1}64→{0,1}64
Input:{k,k,・・・,k15},k∈{0,1}
Output:{s,s,・・・,s15},s∈{0,1}
Operation
・(s,s,s,s)=M(k,k,k,k
・(s,s,s,s)=M(k,k,k,k
・(s,s,s10,s11)=M(k,k,k10,k11
・(s12,s13,s14,s15)=M(k12,k13,k14,k15
また、図34に示すステップS2の行拡散演算MR[M]は、以下の式に従った行列演算である。
Figure 2015191107
上記の行拡散演算MR[M]のアルゴリズムは以下のように示すことができる。
MixRow_KSF():{0,1}64→{0,1}64
Input:{s,s,・・・,s15},s∈{0,1}
Output:{kd,kd,・・・,kd15},kd∈{0,1}
Operation
・(kd,kd,kd,kd12)=M(s,s,s,s12
・(kd,kd,kd,kd13)=M(s,s,s,s13
・(kd,kd,kd10,kd14)=M(s,s,s10,s14
・(kd,kd,kd11,kd15)=M(s,s,s11,s15
このように、図32に示す鍵スケジュール部300の鍵変換部302では、図34に示すステップS1において、行列Mを適用した列拡散演算MC[M]を実行し、ステップS2において行列Mを適用した行拡散演算MR[M]を実行する。
これらの2つの行列演算を連続して実行することで、ベース鍵Kから変換鍵Kdを生成する。
なお、変換鍵Kdからベース鍵Kを生成する場合も、図34に示す処理と同様の処理を行なう。
すなわち、先に図33を参照して説明したように、列拡散演算MC[M]と、行拡散演算MR[M]の連続処理からなる関数Gは、インボリューション性を持ち、順方向関数Gと、逆方向関数G−1が同一であるため、2回繰り返すことで、元の値が算出される。
さらに、鍵変換部302は、行列Mを適用した列拡散演算MC[M]と、行列Mを適用した行拡散演算MR[M]を実行することで、入力データを構成する4×4のステートの構成要素のすべて、すなわち16個の構成要素のすべてが、出力データの16個の構成要素のすべてに影響を及ぼすことが可能となる。
すなわち、入出力ステート全要素間でデータ拡散(diffusion)がなされている。このようなデータ変換態様を「全拡散(full diffusion)変換」、あるいはフルディフュージョン性を有する拡散であると定義する。
例えば、入力、出力がそれぞれnビット要素16個からなるステートであり、入力に対して適用する変換関数fとし、
B=f(A)
上記式に従って出力ステートBを算出する設定とする。
入力ステートA=(a,a,a,・・・a15
出力ステートB=(b,b,b,・・・b15
である。
ただし、a,bはステートA,Bの要素である。
このとき、
出力ステートBの任意の要素bが以下の式によって表現できる場合、関数fは、全拡散(full diffusion)変換であるという。
=f(a,a,a,・・・a15
このように、鍵変換部302の実行関数Gは、以下の2つの性質を有する関数である。
(1)全拡散(full diffusion)変換を実現するフルディフュージョン性、
(2)順方向関数Gと、逆方向関数G−1が同一であるインボリューション性、
これら2つの性質を持つ。
[5−2.鍵スケジュール部のフルディフュージョン性に基づく効果について]
鍵変換部302の性質であるフルディフュージョン性は、結果として、図32に示す暗号処理部320における変換対象データと鍵との間にもフルディフュージョン性を保証することになる。図35を参照して説明する。
図35には、
ベース鍵K=(k,k,k,・・・k15
変換鍵Kd=(kd,kd,kd,・・・kd15
を示している。
ベース鍵Kは、暗号処理部の排他的論理和部331に入力されて、入力ステートAとの排他的論理和演算がなされる。その後、さらに、非線形/線形変換部(S&P)332において非線形変換処理と、線形変換処理がなされる。
さらにその出力に対して、排他的論理和演算部333において、変換鍵Kdとの排他的論理和演算が実行される。
排他的論理和演算部333の出力をステートBとする。
この時、ベース鍵Kと変換鍵Kdとの間の関係は、
Kd=f(k,k,k,・・・k15
ただし、i=0〜15
上記関係式が成立する。
すなわち、フルディフュージョン性が保証されている。
上記関係式から、
ステートBと、ベース鍵Kとの間にも、以下の関係式が成立する。
=f(k,k,k,・・・k15
ただし、i=0〜15
上記関係式が成立する。
すなわち、ベース鍵Kと変換データBとの間でもフルディフュージョン性が保証される。
この性質は、暗号処理装置の安全性や、実装性能に貢献をもたらす性質であると言える。
具体的には、鍵によるデータ拡散性の向上が実現され、ラウンド数を削減しても高い拡散性能を発揮させることが可能になる。この結果、各種の攻撃に対する耐性を高めることが可能となる。たとえば、鍵依存度を利用した中間値一致攻撃等に基づく鍵解析処理に対する耐性をより向上させることができる。
上述したように、本開示の構成を適用することで、暗号処理部における変換対象データの拡散性能が向上し、より少ないラウンド数で安全な暗号処理、例えば鍵解析等の各種攻撃に対する耐性の高い暗号処理が実現されることになる。
図36には、
(1)各ラウンドにおいて鍵変換を実行せず、同じラウンド鍵を適用する暗号処理構成
(2)本開示の鍵変換を実行して、交互に2種類のラウンド鍵を適用する暗号処理構成
これら2つの暗号処理構成例を示している。
なお、図36(2)に示すGのボックスは、図32に示す鍵変換部302に相当する。
図36(1)の鍵変換を実行しない暗号処理構成では、適用鍵の構成情報(ビット列)が変換対象データである入力平文Pの全ビットに拡散(Full diffusion)するのに必要なラウンド数は、ラウンド関数(R)の処理に依存することになる。
従って、ラウンド関数の拡散性能が低い場合、拡散レベルを高くするためには、多くのラウンド数が必要となり、結果として、高速処理や軽量化を実現することが困難となる。
一方、図36(2)に示す本開示の鍵変換を実行する暗号処理構成では、適用鍵の構成情報(ビット列)が変換対象データである入力平文Pの全ビットに拡散(Full diffusion)するのに必要なラウンド数は、ベース鍵Kと、変換鍵Kdが2つ利用されるラウンド数となる。
図の例では1ラウンドになる。
すなわち、本開示の処理を適用すれば、変換対象データに対する鍵データの構成情報の拡散が1ラウンドで実現され、ラウンド関数(R)の処理に依存することなくより大きな拡散性能が保証される。
すなわち、少ないラウンド数で攻撃に対する耐性の高い安全な暗号処理が実現される。結果として、高速処理や軽量化が実現される。
[5−3.鍵変換部のインボリューション性に基づく効果について]
先に図32、図33等を参照して説明したように、本開示の鍵スケジュール部300の鍵変換部302は、順方向関数Gと逆方向関数G−1が同一の関数で実現されるインボリューション性を有する。
以下、このインボリューション性に基づく効果について説明する。
なお、同一のデータ変換処理であるラウンド関数を繰り返し実行する暗号処理装置のハードウェア実装構成としては、以下の2つのタイプがある。
(a)規定ラウンド数に相当する数のラウンド関数実行部をハードウェアとして構成する「アンロールド(Unrolled)実装」、
(b)ハードウェアとしてのラウンド関数実行部を1つ構成し、そのラウンド関数実行部の出力を同じラウンド関数実行部にフィードバック入力して、規定ラウンド数のラウンド関数を繰り返し実行する「ラウンド実装」、
以下、これら2つのタイプにおけるインボリューション性に基づく効果について、順次、説明する。
[5−3−a.アンロールド(Unrolled)実装における効果について]
まず、暗号処理部をアンロールド実装した場合に、本開示の鍵変換部のインボリューション性がもたらす効果について説明する。
アンロールド(Unrolled)実装では、暗号処理部には、規定ラウンド数に相当する数のラウンド関数実行部がハードウェアとして構成される。
図37、図38を参照して、暗号処理部をアンロールド実装した場合に、本開示の鍵変換部のインボリューション性がもたらす効果について説明する。
図37、図38に、以下の暗号処理装置の実装例を示す。
図37(1)鍵変換部(F)がインボリューション性を有していない場合のハードウェア実装例
図38(2a)、(2b)鍵変換部(G)がインボリューション性を有している場合のハードウェア実装例
図38(2a),(2b)は、本開示の鍵変換部、すなわちインボリューション性を有する場合の実装例に相当する。
図37は、鍵変換部Fがインボリューション性を有していないため、鍵変換部Fによる変換結果として得られる鍵は、逐次、異なる鍵となる。図37に示すように、鍵変換部Fの変換処理によって、鍵K1に基づいて、Kd1、Kd2、Kd3、Kd4、Kd5、Kd6が順次、生成され、これらの各鍵がラウンド鍵として暗号処理部の排他的論理和部(ラウンド鍵演算部)に順次入力する構成となる。
これに対して、図38(2a),(2b)に示す例は、鍵変換部(G)がインボリューション性を有している場合のハードウェア実装例である。
図38(2a)に示す例は、図37(1)に示すハードウェア構成と同様、暗号処理部の排他的論理和部(ラウンド鍵演算部)に対する入力鍵(ラウンド鍵)を生成するための鍵変換部Gを各ラウンドに対応付けて設定した構成である。
一方、図38(2b)は、鍵変換部Gを1つのみの設定として、予め保持するベース鍵Kと、鍵変換部Gによって生成される変換鍵Kdを暗号処理部の排他的論理和部(ラウンド鍵演算部)に対して交互に入力する設定とした構成である。
鍵変換部Gは、インボリューション性を有するため、鍵変換部による変換処理の繰り返しによって生成される鍵は、K,Kd,K,Kd,K・・・の繰り返しとなる。この性質に基づいて、図38(2b)に示すように鍵変換部Gを1つとして、ベース鍵Kと、鍵変換部Gによる1回の鍵変換処理によって生成した変換鍵Kdを暗号処理部の排他的論理和部(ラウンド鍵演算部)に交互に入力することが可能となる。
この結果、鍵変換部Gの数を1つとすることが可能となり、ハードウェア実装の軽量化(小型化)が実現される。
図38(2b)に示す構成に対応する暗号処理装置の構成例を図39に示す。
図39に示すように、鍵スケジュール部300の鍵変換部(G)302は、1つのみとして暗号処理部320の各排他的論理和部(ラウンド鍵演算部)に対して予め保持するベース鍵Kと、鍵変換部Gによって生成される変換鍵Kdを交互に入力することが可能となる。
[5−3−b.ラウンド実装における効果について]
次に、暗号処理装置をラウンド実装した場合に、本開示の鍵変換部のインボリューション性がもたらす効果について説明する。
ラウンド実装では、暗号処理部に設定された1つのラウンド関数を繰り返し利用する構成となる。
図40に、鍵変換部がインボリューション性を有していない場合の(a1)暗号処理構成と、(a2)ラウンド実装例を示す。
図41に、鍵変換部がインボリューション性を有している場合の(b1)暗号処理構成と、(b2)ラウンド実装例を示す。
図40(a1)に示す暗号処理構成は、先に図37を参照して説明した構成と同様の構成である。
すなわち、鍵変換部Fがインボリューション性を有していないため、鍵変換部Fによる変換結果として得られる鍵は、逐次、異なる鍵となる。図40(a1)に示すように、鍵変換部Fの変換処理によって、鍵K1に基づいて、Kd1、Kd2、Kd3、Kd4、Kd5、Kd6が順次、生成され、これらの各鍵がラウンド鍵として暗号処理部の排他的論理和部(ラウンド鍵演算部)に順次入力する構成となる。
この構成をラウンド型のハードウェア実装とした場合、図40(a2)に示す構成となる。暗号処理部350は、1つの排他的論理和部(ラウンド鍵演算部)351と、1つの非線形/線形変換部352の構成とすることが可能となる。
一方、鍵スケジュール部360は、ベース鍵Kを格納し供給する鍵レジスタ361と、変換鍵Kd〜Kdを格納し供給するための鍵レジスタ362と、鍵変換部(F)363、鍵レジスタ361,362の出力切り換えを実行するスイッチ364を有する構成となる。
これに対して、図41(b1)に示す暗号処理構成は、先に図38(2b)を参照して説明した構成と同様、鍵変換部Gがインボリューション性を有する構成とした暗号処理構成である。
すなわち、鍵変換部Gがインボリューション性を有しているため、鍵変換部による変換処理の繰り返しによって生成される鍵は、K,Kd,K,Kd,K・・・の繰り返しとなる。この性質に基づいて、図41(b1)に示すように鍵変換部Gを1つとして、ベース鍵Kと、鍵変換部Gによる1回の鍵変換処理によって生成した変換鍵Kdを暗号処理部の排他的論理和部(ラウンド鍵演算部)に交互に入力することが可能となる。
この構成をラウンド型のハードウェア実装とした場合、図41(b2)に示す構成となる。暗号処理部350は、1つの排他的論理和部(ラウンド鍵演算部)351と、1つの非線形/線形変換部352の構成とすることが可能となる。
一方、鍵スケジュール部370は、ベース鍵K、および変換鍵Kdを格納し供給する鍵レジスタ371と、鍵変換部(G)372を有する構成となる。
図40(a2)に示す鍵変換部(F)がインボリューション性を持たない場合のラウンド実装構成では、鍵スケジュール部360には、2つの鍵レジスタ、1つの鍵変換部、1つのスイッチが必要となる。これに対して、図41(b2)に示す鍵変換部(G)がインボリューション性を有する場合のラウンド実装構成の鍵スケジュール部370は、1つの鍵レジスタと1つの鍵変換部によって構成され、ハードウェア構成の軽量化(小型化)が実現されることが証明される。
例えば、図40(a2)に示すインボリューション性を持たない鍵変換部(F)を持つ場合のラウンド実装構成では、複数の異なる変換鍵を、順次、生成して格納、供給するための鍵レジスタが必要となり、この鍵レジスタ用のゲート数分の新たなハードウェア回路が必要となる。
[5−4.本開示の鍵スケジュール部の構成と効果のまとめ]
上述したように、本開示の暗号処理装置に構成される鍵スケジュール部の鍵変換部は、以下の2つの特性を持つ。
(1)全拡散(full diffusion)変換を実現するフルディフュージョン性、
(2)順方向関数Gと、逆方向関数G−1が同一であるインボリューション性、
これら2つの特性を持つ。
これらの2つの特性に基づいて、以下の効果が発揮される。
(効果1)フルディフュージョン性に基づいて、変換対象とするデータについてのフルディフュージョン性を少ないラウンドで実現できる。
この結果、少ないラウンドで安全性の高い暗号処理を行なうことができ、処理の高速化(低遅延化)、および装置の軽量化(小型化)が実現される。
(効果2)ハードウェア構成をアンロール実装とした場合、インボリューション性に基づいて、鍵変換部を1つのみの構成とすることが可能となり、装置の軽量化(小型化)が実現される。
(効果3)ハードウェア構成をラウンド実装とした場合、インボリューション性に基づいて、鍵レジスタと、鍵変換部を各々1つのみとした鍵スケジュール部の実装が可能となり、装置の軽量化(小型化)が実現される。
[5−5.鍵スケジュール部のその他の構成例について]
次に、上述した以下の2つの特性、すなわち、
(1)全拡散(full diffusion)変換を実現するフルディフュージョン性、
(2)順方向関数Gと、逆方向関数G−1が同一であるインボリューション性、
これら2つの特性を持つ関数Gを適用した鍵変換処理を実行する鍵変換部を有する鍵スケジュール部のその他の構成例について、図42以下を参照して説明する。
図42は、上述の2つの特性を有する鍵変換部を持つ鍵スケジュール部380を有する暗号処理装置の一構成例を示す図である。
図42に示す暗号処理装置は、鍵スケジュール部380と、暗号処理部385を有する。
鍵スケジュール部380の鍵レジスタ381には、予め生成された秘密鍵Kが格納される。
秘密鍵Kは、鍵Kと鍵Kの連結データである。
例えば鍵K、Kは64ビット鍵であり、その連結データである秘密鍵Kは128ビットデータである。
図に示すGは、鍵変換部であり、先に図32以下を参照して説明した鍵変換部302と同様、フルディフュージョン性と、インボリューション性、これら2つの特性を持つ関数Gを適用した鍵変換処理を行なう鍵変換部である。
図42に示す鍵スケジュール部380は、鍵レジスタ381に格納された秘密鍵Kの分割データである鍵K、K、さらに、これらの鍵を鍵変換部(G)において変換した変換鍵Kd、Kdを暗号処理部385の排他的論理和部(ラウンド鍵演算部)に順次出力する。
なお、図に示す例において、鍵K、Kが64ビット鍵である場合、暗号処理部385の変換対象となる平文Pも64ビットデータとなる。
図42に示す例では、鍵の出力順は、以下の通りである。
鍵K
鍵K
変換鍵Kd
変換鍵Kd
鍵K
鍵K
変換鍵Kd
この順番で、4種類の鍵を暗号処理部385に入力する。
なお、鍵入力順は様々な設定が可能である。
なお、図42には、鍵変換部(G)を複数、示しているが、先に図41を参照して説明したラウンド実装を行う場合、この鍵変換部(G)は1つのみの構成とすることが可能である。
図43を参照して鍵スケジュール部のもう1つの構成例について説明する。
図43には、以下の各図を示している。
(a)鍵スケジュール部の構成
(b)鍵スケジュール部による鍵出力構成
図43(a)に示すように、鍵スケジュール部の鍵レジスタ391には、予め生成された秘密鍵Kが格納される。
秘密鍵Kは、鍵Kと鍵Kの連結データである。
例えば鍵K、Kは64ビット鍵であり、その連結データである秘密鍵Kは128ビットデータである。
図43(a)に示す鍵スケジュール部は、鍵変換部G393と、排他的論理和部392,394を有する。
鍵変換部G393は、先に図32以下を参照して説明した鍵変換部302と同様、フルディフュージョン性と、インボリューション性、これら2つの特性を持つ関数Gを適用した鍵変換処理を行なう鍵変換部である。
図43(a)に示す鍵スケジュール部は、これらの各構成に基づいて、以下の6種類の鍵を生成する。
鍵K
鍵K
変換鍵Kd
変換鍵Kd
排他的論理和演算鍵K(+)K
排他的論理和演算変換鍵Kd(+)Kd
図43(a)に示す鍵スケジュール部は、これら6種類の鍵を生成して、暗号処理部に順次、出力する。
なお、上記6種類の鍵は、鍵K=128ビットである場合、すべて64ビット鍵となる。この場合、暗号処理部の変換対象となる平文Pも64ビットデータとなる。
図43(b)に示す例では、鍵の出力順は、以下の通りである。
鍵K
鍵K
変換鍵Kd
変換鍵Kd
排他的論理和演算鍵K(+)K
排他的論理和演算変換鍵Kd(+)Kd
排他的論理和演算鍵K(+)K
排他的論理和演算変換鍵Kd(+)Kd
排他的論理和演算鍵K(+)K
変換鍵Kd
変換鍵Kd
鍵K
鍵K
この順番で、6種類の鍵を暗号処理部に入力する。
上記鍵の入力シーケンスは、逆の順番も同一シーケンスとなる。
これは、平文Pから暗号文Cを生成する暗号処理における鍵入力順と、暗号文Cから平文Pを生成する復号処理における鍵入力順を同じ設定とすることが可能であることを意味する。これは、暗号処理および復号処理に適用するハードウェアやプログラムを共通化可能であることを意味し、装置の軽量化(小型化)に寄与する設定である。
なお、図43に示す鍵スケジュール部を有する暗号処理装置の具体的構成については、さらに、後段で説明する。
[5−6.フルディフュージョン性を持つ鍵変換部を有する構成例について]
上述した実施例では、秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成する鍵変換部がインボリューション性と、フルディフュージョン性の2つの性質を持つものとして説明したが、インボリューション性を持たずフルディフュージョン性のみを有する鍵変換部を適用した場合においても、入力データに対する拡散性能が向上し、各種攻撃に対する耐性の高い安全な暗号処理構成が実現される。
以下、フルディフュージョン性を有する暗号処理構成についての実施例について説明する。
図44は、鍵変換関数Gがフルディフュージョン性を有する場合、入力データ(P)の内部状態Sのフルディフュージョン性が保証されることを示す図である。先の項目[5−2.鍵スケジュール部のフルディフュージョン性に基づく効果について]において図35等を参照して説明したように、鍵変換部の鍵変換関数Gがフルディフュージョン性を有する場合、変換対象データと鍵との間にもフルディフュージョン性を保証することになる。
図44に示す構成において、ベース鍵Kは、暗号処理部の排他的論理和部に入力されて、入力ステートとの排他的論理和演算がなされる。その後、さらに、ラウンド演算部Rにおいて非線形変換処理と、線形変換処理がなされる。
さらにその出力に対して、排他的論理和演算部において、変換鍵Kdとの排他的論理和演算が実行される。
排他的論理和演算部の出力(S)について考察する。
ベース鍵Kと変換鍵Kdとの間にはフルディフュージョン性が保証されている。
変換対象データは、ラウンド演算部Rにおいて非線形変換処理と、線形変換処理がなされた後、変換鍵Kdとの排他的論理和演算が実行される。
この結果、ベース鍵Kと変換データとの間でもフルディフュージョン性が保証される。
この性質は、暗号処理装置の安全性や、実装性能に貢献をもたらす性質であると言える。
具体的には、鍵によるデータ拡散性の向上が実現され、ラウンド数を削減しても高い拡散性能を発揮させることが可能になる。この結果、各種の攻撃に対する耐性を高めることが可能となる。たとえば、鍵依存度を利用した中間値一致攻撃等に基づく鍵解析処理に対する耐性をより向上させることができる。
なお、図45に示すような鍵変換を実行しない暗号処理構成では、適用鍵の構成情報(ビット列)が変換対象データである入力平文Pの全ビットに拡散(Full diffusion)するのに必要なラウンド数は、ラウンド関数(R)の処理に依存することになる。
これに対して、図44に示す鍵変換を行う構成では、適用鍵の構成情報(ビット列)が変換対象データである入力平文Pの全ビットに拡散(Full diffusion)するのに必要なラウンド数は、ベース鍵Kと、変換鍵Kdが2つ利用されるラウンド数となる。
図の例では1ラウンドになる。
すなわち、本開示の処理を適用すれば、変換対象データに対する鍵データの構成情報の拡散が1ラウンドで実現され、ラウンド関数(R)の処理に依存することなくより大きな拡散性能が保証される。
すなわち、少ないラウンド数で攻撃に対する耐性の高い安全な暗号処理が実現される。結果として、高速処理や軽量化が実現される。
フルディフュージョン性を持つG関数の具体例について説明する。
以下で説明するG関数は、以下の2つの関数の組み合わせによって構成される。
(a)フルディフュージョン4ビット関数(Df
(b)16ビット置換関数(Bp16
(a)フルディフュージョン4ビット関数は、入出力4ビットとする変換関数であり、出力4ビットのすべてのビットに入力4ビットの影響が表れるフルディフュージョン性を持つ関数である。
すなわち、
入力:x,x,x,x(各1bit)
出力:y,y,y,y(各1bit)
このとき、関数fは、
=f(x,x,x,x
ただしi=0,1,2,3
上記性質を持つ関数である。
次に、(b)16ビット置換関数(Bp16)について図46を参照して説明する。
図46には、16ビット置換関数(Bp16)の一例を示している。
入力Xをx,x,x,・・・x15の16ビットデータとし、
入力Xを変換関数Gに入力して変換された後の、
出力Yをy,y,y,・・・y15の16ビットデータとする。
なお、x,yはそれぞれ0または1の1ビットデータである
16ビット置換関数(Bp16)による入出力ビットの関係は以下の対応関係となる。
入力:x,x,・・・,x15(各1bit)
出力:y,y,・・・,y15(各1bit)
関数:y=x,y=x,y=x,y=x12
=x,y=x,y=x,y=x13
=x,y=x,y10=x10,y11=x14
12=x,y13=x,y14=x11,y15=x15
図47は、
(a)フルディフュージョン4ビット関数(Df
(b)16ビット置換関数(Bp16
これらの2つの関数から構成されるフルディフュージョン性を持つG関数を適用した鍵変換処理例(処理例1)を示す図である。
ベース鍵をAとし、変換鍵Bとする。いずれも各要素4ビットの4×4ステートデータである。
図47に示す例において、ベース鍵Aから変換鍵Bを生成する処理は、以下の4つのステップによって構成される。
(S11)ベース鍵Aの16個の4ビット要素各々に対してフルディフュージョン4ビット関数(Df)を適用して変換する。
(S12)ステップS11の変換処理によって生成されたデータ(4×4ステート)の各列16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S13)ステップS12の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してフルディフュージョン4ビット関数(Df)を適用して変換する。
(S14)ステップS13の変換処理によって生成されたデータ(4×4ステート)の各行16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
これらの処理によって、ベース鍵Aから変換鍵Bを生成する。
変換鍵のBの各要素b〜b15は、ベース鍵Aの各要素a〜a15の影響を受けたデータとなりベース鍵Aと変換鍵Bとの間にはフルディフュージョン性が保証される。
図48も、
(a)フルディフュージョン4ビット関数(Df
(b)16ビット置換関数(Bp16
これらの2つの関数から構成されるフルディフュージョン性を持つG関数を適用した鍵変換処理例(処理例2)を示す図である。
ベース鍵をAとし、変換鍵Bとする。いずれも各要素4ビットの4×4ステートデータである。
図48に示す例において、ベース鍵Aから変換鍵Bを生成する処理は、以下の5つのステップによって構成される。
(S21)ベース鍵Aの16個の4ビット要素各々に対してフルディフュージョン4ビット関数(Df)を適用して変換する。
(S22)ステップS21の変換処理によって生成されたデータ(4×4ステート)の各列16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S23)ステップS22の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してフルディフュージョン4ビット関数(Df)を適用して変換する。
(S24)ステップS23の変換処理によって生成されたデータ(4×4ステート)の各行16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S25)ステップS24の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してフルディフュージョン4ビット関数(Df)を適用して変換する。
これらの処理によって、ベース鍵Aから変換鍵Bを生成する。
変換鍵のBの各要素b〜b15は、ベース鍵Aの各要素a〜a15の影響を受けたデータとなりベース鍵Aと変換鍵Bとの間にはフルディフュージョン性が保証される。
図49も、
(a)フルディフュージョン4ビット関数(Df
(b)16ビット置換関数(Bp16
これらの2つの関数から構成されるフルディフュージョン性を持つG関数を適用した鍵変換処理例(処理例3)を示す図である。
ベース鍵をAとし、変換鍵Bとする。いずれも各要素4ビットの4×4ステートデータである。
この処理例3において適用する
(a)フルディフュージョン4ビット関数(Df
は、インボリューション性も有する関数である。
図49に示す例において、ベース鍵Aから変換鍵Bを生成する処理は、以下の5つのステップによって構成される。
(S31)ベース鍵Aの16個の4ビット要素各々に対してインボリューション性を有し、かつフルディフュージョン性を有する4ビット関数(Df)を適用して変換する。
(S32)ステップS31の変換処理によって生成されたデータ(4×4ステート)の各列16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S33)ステップS32の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してインボリューション性を有し、かつフルディフュージョン性を有する4ビット関数(Df)を適用して変換する。
(S34)ステップS33の変換処理によって生成されたデータ(4×4ステート)の各行16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S35)ステップS34の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してインボリューション性を有し、かつフルディフュージョン性を有する4ビット関数(Df)を適用して変換する。
これらの処理によって、ベース鍵Aから変換鍵Bを生成する。
変換鍵のBの各要素b〜b15は、ベース鍵Aの各要素a〜a15の影響を受けたデータとなりベース鍵Aと変換鍵Bとの間にはフルディフュージョン性が保証される。さらに、(a)フルディフュージョン4ビット関数(Df)、(b)16ビット置換関数(Bp16)これらの関数が双方ともインボリューション性を有しているため、ベース鍵Aと変換鍵Bとの間にはインボリューション性も保証される。
図50も、
(a)フルディフュージョン4ビット関数(Df
(b)16ビット置換関数(Bp16
これらの2つの関数から構成されるフルディフュージョン性を持つG関数を適用した鍵変換処理例(処理例4)を示す図である。
ベース鍵をAとし、変換鍵Bとする。いずれも各要素4ビットの4×4ステートデータである。
この処理例4において適用する
(a)フルディフュージョン4ビット関数(Df
は、インボリューション性も有する関数である。
図50に示す例において、ベース鍵Aから変換鍵Bを生成する処理は、以下の5つのステップによって構成される。
(S41)ベース鍵A(4×4ステート)の各列16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S42)ステップS41の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してインボリューション性を有し、かつフルディフュージョン性を有する4ビット関数(Df)を適用して変換する。
(S43)ステップS42の変換処理によって生成されたデータ(4×4ステート)の各列16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S44)ステップS43の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してインボリューション性を有し、かつフルディフュージョン性を有する4ビット関数(Df)を適用して変換する。
(S45)ステップS44の変換処理によって生成されたデータ(4×4ステート)の各行16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
これらの処理によって、ベース鍵Aから変換鍵Bを生成する。
変換鍵のBの各要素b〜b15は、ベース鍵Aの各要素a〜a15の影響を受けたデータとなりベース鍵Aと変換鍵Bとの間にはフルディフュージョン性が保証される。さらに、(a)フルディフュージョン4ビット関数(Df)、(b)16ビット置換関数(Bp16)これらの関数が双方ともインボリューション性を有しているため、ベース鍵Aと変換鍵Bとの間にはインボリューション性も保証される。
図51も、
(a)フルディフュージョン4ビット関数(Df
(b)16ビット置換関数(Bp16
これらの2つの関数から構成されるフルディフュージョン性を持つG関数を適用した鍵変換処理例(処理例5)を示す図である。
ベース鍵をAとし、変換鍵Bとする。いずれも各要素4ビットの4×4ステートデータである。
この処理例5において適用する
(a)フルディフュージョン4ビット関数(Df
は、インボリューション性も有する関数である。
図51に示す例において、ベース鍵Aから変換鍵Bを生成する処理は、以下の5つのステップによって構成される。
(S51)ベース鍵Aの16個の4ビット要素各々に対してインボリューション性を有し、かつフルディフュージョン性を有する4ビット関数(Df)を適用して変換する。
(S52)ステップS51の変換処理によって生成されたデータ(4×4ステート)の各行16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S53)ステップS52の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してインボリューション性を有し、かつフルディフュージョン性を有する4ビット関数(Df)を適用して変換する。
(S54)ステップS53の変換処理によって生成されたデータ(4×4ステート)の各列16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S55)ステップS54の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してインボリューション性を有し、かつフルディフュージョン性を有する4ビット関数(Df)を適用して変換する。
これらの処理によって、ベース鍵Aから変換鍵Bを生成する。
変換鍵のBの各要素b〜b15は、ベース鍵Aの各要素a〜a15の影響を受けたデータとなりベース鍵Aと変換鍵Bとの間にはフルディフュージョン性が保証される。さらに、(a)フルディフュージョン4ビット関数(Df)、(b)16ビット置換関数(Bp16)これらの関数が双方ともインボリューション性を有しているため、ベース鍵Aと変換鍵Bとの間にはインボリューション性も保証される。
図47〜図51まで5つの鍵変換関数Gの構成例を説明した。
これらの鍵変換関数は、ベース鍵Kから変換鍵を生成する場合に適用可能であり、また、先に図42を参照して説明したベース鍵Kを分割して生成される分割鍵に対する変換処理に適用することも可能である。
さらに、2つの分割鍵に対して適用する鍵変換関数を異なる設定としてもよい。
図52に示す暗号処理装置は、鍵スケジュール部380と、暗号処理部385を有する。鍵スケジュール部380の鍵レジスタ381には、予め生成された秘密鍵Kが格納される。
秘密鍵Kは、鍵Kと鍵Kの連結データである。
例えば鍵K、Kは64ビット鍵であり、その連結データである秘密鍵Kは128ビットデータである。
図に示すG1、G2は、鍵変換部である。
これらは、少なくともフルディフュージョン性を有する。
あるいはフルディフュージョン性と、インボリューション性、これら2つの特性を有する。
鍵変換関数G1,G2の組み合わせとしては、例えば以下のような設定すが可能である。
(a)G1,G2ともフルディフュージョン性を有するがインボリューション性を有さない。
(b)G1,G2ともフルディフュージョン性と、インボリューション性を有する。
(c)G1,G2ともフルディフュージョン性を有し、G1とG2が逆関数の設定、すなわち、G2=G1−1の関係にある。
鍵変換関数G1,G2の組み合わせとしては上記のような様々な設定が可能である。
[6.定数入力による安全性向上を実現する構成について]
次に、ラウンド演算を繰り返し実行する暗号処理部に対して定数(Constant)を入力して、変換対象データあるいはラウンド鍵と、定数との演算を実行し、拡散性能を高めた暗号処理装置について説明する。
[6−1.定数入力による安全性向上を実現した従来構成とその問題点について]
ラウンド関数によるラウンド演算を繰り返し実行する構成において、ラウンド毎の変換処理の同一性を排除するため、ラウンド毎に異なる定数を作用させる構成については、従来から提案されている。
このような定数入力処理は、スライドアタック、リフレクションアタックと呼ばれる攻撃に対する耐性を高めるために有効な手法であると言われている。
まず、従来型の定数入力構成の概略と問題点について説明する。
従来型の定数入力構成例としては、例えば図53に示すような構成がある。
図53に示すラウンド演算実行部401a〜dは暗号処理部における排他的論理和部(ラウンド鍵演算部)、非線形変換部、線形変換部を含むラウンド関数実行部である。
この各ラウンド演算部401a〜dに、定数1(CON1)〜定数4(CON4)を順次、入力する。
なお、入力された定数CONは、各ラウンド演算部における変換データ、あるいはラウンド鍵との排他的論理和演算が実行される。
このように、各ラウンドに様々な定数による演算を実行することでラウンド演算間の同一性を排除して、様々な攻撃に対する耐性を高めることができる。
次に、このような定数入力構成における問題点について説明する。
暗号処理装置において、ラウンド関数の設定を工夫することで、暗号処理と復号処理を同じ装置で実行可能となる。
具体的には、図54に示すように、暗号処理装置の暗号処理部に適用する複数の変換関数の構成を中心から左右に分割したとき、左半分と右半分が逆関数となる関係とすることで、暗号処理と復号処理を同じ装置で実行可能となる。
これは、インボリューション性を有する暗号処理装置と呼ばれる。
なお、図54に示す例では、変換関数E,411と、変換関数E−1,413は逆関数の関係にある。中心の線形変換部Mは、入力Aに対して、出力Bを出力し、入力Bに対して出力Aを出力する。
平文Pに対して、変換関数E,411、線形変換部412、変換関数E−1,413をこの順番で適用して暗号文Cが得られる。
また、暗号文Cに対して、同じ順番で各変換部を適用。すなわち、変換関数E,411、線形変換部412、変換関数E−1,413をこの順番で適用することで、元の平文Pが得られる。
このような暗号処理装置を、インボリューション性を持つ暗号処理装置という。なお、インボリューション性を持つ暗号処理装置のなかには、ラウンド関数の実行シーケンスが順方向、逆方向でいずれも同一シーケレンスであるのみならず、各ラウンドにおいて適用するラウンド鍵の入力順も順方向、逆方向とも同一となるようなものも存在する。
例えば、先に図43を参照して説明した鍵入力シーケンスが暗号処理装置のインボリューション性を実現する1つの鍵入力シーケンスである。
しかし、このようなインボリューション性を持つ暗号処理装置の一つの問題として安全性の問題がある。
この問題点について、図55を参照して説明する。
図55(a)は、インボリューション性を持つ暗号処理装置に、定数を入力しない場合の各変換部のデータ入出力値の関係を説明する図である。
平文Pの一部の構成データ=Yとする。
データYに対する変換関数E,411の変換結果をXとする。
線形変換部412は、変換関数E,411からの出力値に対する線形変換を実行するが、その一部の構成データ(ビット)の値は変化しないでそのまま出力される場合がある。なお、線形変換において入出力値が同じ値となる点を不動点とよび、多くの暗号処理装置で適用される線形変換処理には、いくつかの不動点が存在する。
図55(a)に示す例では、線形変換部412に対する入力値Xが、線形変換部412の不動点の作用によって、そのまま線形変換部412の出力Xとなったものとする。
この場合、値Xは、変換関数E−1,413に入力される。変換関数E−1,413は、変換関数E,411の逆関数であるため、入力値Xは元の値Yに戻されることになる。
すなわち、暗号文Cを構成する一部の出力値Yは、入力平文Pの構成値Yと同じ値になってしまう。すなわち暗号処理装置全体においても入出力値が変わらない不動点が発生することになる。
このような性質は、様々な攻撃に対する脆弱性をもたらす性質であり、暗号処理装置としての安全性を損なう好ましくない性質である。
図55(b)は、図55(a)と同様インボリューション性を持つ暗号処理装置であるが、変換関数E,411において定数1(CON1)を入力した演算を行い、また、変換関数E−1,413に定数2(CON2)を入力した演算を行う構成としている。
これらの定数を入力した場合の各変換部のデータ入出力値の関係を示している。
平文Pの一部の構成データ=Yとする。
データYに対する変換関数E,411の変換結果をXとする。
この例では、線形変換部412に対する入力値Xが、線形変換部412による線形変換処理によってX+ΔAに変換されたものとする。
この場合、値X+ΔAが、変換関数E−1,413に入力される。変換関数E−1,413は、変換関数E,411の逆関数であるが、定数2(CON2)を入力した演算を実行する構成であり、定数1(CON1)を入力した演算を実行する変換関数E,411の完全な逆関数とはならない。
しかし、定数の選択のしかたによっては、図に示すように、変換関数E−1,413に対する入力X+ΔAに対応する出力値がY+ΔBのような設定となる場合がある。
すなわち、
線形変換部の入出力値の対応が、Xと、X+ΔA、
暗号処理装置の入出力値の対応が、Yと、Y+ΔB、
このように、入力データに対して特定の差分データを追加した関係性が発生する場合がある。
このような入出力データの関係性も、やはり様々な攻撃に対する脆弱性をもたらす性質であり、暗号処理装置としての安全性を損なう好ましくない性質である。
[6−2.安全性の高い定数入力構成を持つ暗号処理装置の構成について]
次に、上記のような従来構成の問題点を解決した安全性の高い定数入力構成を持つ暗号処理装置の構成について説明する。
図56以下を参照して本実施例にかかる暗号処理装置の構成例について説明する。
図56は、本実施例に係る暗号処理部に対する定数入力構成例を説明する図である。
図56(a)には、図54を参照して説明したと同様、インボリューション性を有するデータ変換部からなる暗号処理部を示している。
すなわち、暗号処理部は、
変換関数E,431、
線形変換部432、
変換関数E−1,433、
これらのデータ変換部を有し、変換関数E−1,433、は、変換関数E431の逆関数である。
本実施例において、定数(CON)435は、変換関数E−1,433に入力する。
なお、変換関数E−1,433は、複数のラウンド関数によって構成され、定数(CON)は、1つ以上のラウンド関数部に対して入力する構成とする。
なお、ここに示す実施例では、定数(CON)の入力部は、変換関数E−1,433に入力する設定としているが、変換関数E,431側に入力する設定としてもよい。
すなわち、暗号処理部は、変換関数E,431と、変換関数E,431の逆関数で変換関数E−1433をシーケンシャルに実行するインボリューション性を有し、変換関数E、または、逆関数E−1のいずれか一方のみにおいて、1回以上の定数を適用したラウンド演算を実行する構成とする。
図56(b)は、定数(CON)435の入力構成の具体例を示している。定数(CON)435は、暗号処理部の線形変換部437の前段の排他的論理和部436に入力され。排他的論理和部436に対する入力データAと、排他的論理和演算を実行する。
なお、排他的論理和部436は、ラウンド鍵Krとの排他的論理和演算を行うラウンド鍵演算部であり、排他的論理和部436では、図に示す前段のラウンド演算部からの出力であるデータAと、ラウンド鍵Krと、定数CONとの排他的論理和演算が実行されることになる。
すなわち、排他的論理和部436では、以下の演算実行結果としてのBが算出され、後段のラウンド演算部の線形変換処理部437に出力される。
B=A(+)Kr(+)CON
なお、上記式において、(+)は排他的論理和演算を示すものとする。
この構成において、入力する定数(CON)435の条件として、以下の条件を設定する。
条件:排他的論理和部437に隣接する線形変換部、図に示す例では線形変換部437における線形変換処理における入出力値の差分が減少しない値に設定する。
上記条件は、具体的には、定数CONと、線形変換部437において適用する線形変換行列との行列演算の結果として得られる全ての要素が非ゼロ、すなわちゼロでない値となることである。
図57を参照してこの条件について説明する。
図57には、排他的論理和部436に入力する定数CON435を構成する4×4マトリックスと、線形変換部437において起用する線形変換行列Mを示している。
定数CON435は、各要素(con〜con15)が4ビットデータである4×4ステートであり、64ビットデータである。
また、線形変換行列Mは、4×4の行列データである。
すなわち、以下に示す線形変換行列である。
Figure 2015191107
定数CONの条件は、定数CONと、線形変換部437において適用する線形変換行列との行列演算の結果として得られる全ての要素が非ゼロ、すなわちゼロでない値となることである。
すなわち、以下の行列演算によって得られる値が、すべて非ゼロとなることである。
Figure 2015191107
上記行列演算式によって算出される16個の値がすべてゼロでない、すなわち非ゼロとなるように、定数CONを設定する。
このような設定により、定数CONを入力する排他的論理和部に隣接する線形変換部、図57に示す例では線形変換部437における線形変換処理の入出力値の差分の減少を防止でき、結果として、最小差分アクティブSボックスの数を所定数以上に維持することが可能となる。
具体的な定数CONの設定例について、図58を参照して説明する。
図58に示す例は、定数CON435を入力する排他的論理和部436に隣接する線形変換部437を、先に図23〜図30を参照して説明した線形変換部P1とした設定である。すなわち、以下に示す行列を適用した列拡散演算(MixColumn)を行う設定とした例である。
Figure 2015191107
線形変換部437は、上記の行列Mを適用した列拡散演算(MixColumn)、すなわち、
MC[M
を実行する。
このとき、定数CONの条件は、この線形変換部437において適用する線形変換行列Mと、定数CONとの行列演算の結果として得られる全ての要素が非ゼロ、すなわちゼロでない値となることである。
このような定数CONの例が、図58に示す定数CONであり、以下の要素構成を持つ4×4ステートとなる。
Figure 2015191107
上記設定を持つ4×4ステートの定数を行列Mを適用した列拡散演算(MixColumn):Mc[M]を実行する線形変換部に隣接する排他的論理和部に入力して排他的論理和演算を実行する。この構成によって、線形変換部の線形変換による差分減少が防止される。この結果、最小差分アクティブSボックスの数の減少を防止することが可能となり、各種の攻撃に対する耐性を高めた安全性の高い暗号処理構成が実現される。
図59は、上記の定数条件を満足する定数CONの入力構成を持つ暗号処理装置の暗号処理部に対するラウンド鍵と定数CONの入力構成と演算構成例を示す図である。
図59において、平文Pは、左下から入力され、暗号文Cは右下から出力される。
図59に示す暗号処理装置の暗号処理部451(E)は、図56(a)に示す変換関数E,431に相当する。
また、線形変換部(P2)452は、図56(a)に示す線形変換部432に相当する。
また、暗号処理部453(E−1)は、図56(a)に示す変換関数E−1,433に相当する。
図59に示す暗号処理装置構成は、インボリューション性を持つ暗号処理装置である。
図59に示すラウンド鍵入力例は、先に図43を参照して説明した構成例に対応する。すなわち、暗号処理部に構成された排他的論理和部に対するラウンド鍵の入力順は、以下の通りである。
鍵K
鍵K
変換鍵Kd
変換鍵Kd
排他的論理和演算鍵K(+)K
排他的論理和演算変換鍵Kd(+)Kd
排他的論理和演算鍵K(+)K
排他的論理和演算鍵K(+)K
排他的論理和演算変換鍵Kd(+)Kd
排他的論理和演算鍵K(+)K
変換鍵Kd
変換鍵Kd
鍵K
鍵K
なお、図43に示す設定では、ラウンド演算部Rに対して、排他的論理和演算鍵K(+)Kを入力する設定としているが、図59に示す例では、線形変換部452の前後において、排他的論理和演算鍵K(+)K、を繰り返し入力する設定である。
図59に示す構成は、図43に示すラウンド演算部Rを、
線形変換部452と、線形変換部452前後の2つの、
排他的論理和演算鍵K(+)Kとの排他的論理和部、
非線形変換部、
これらの変換部によって構成されるラウンド演算部とする設定した場合の構成に対応する。
鍵スケジュール部のラウンド鍵供給部は、上記の順番で6種類の鍵を出力する。この鍵の入力シーケンスは、逆の順番も同一シーケンスとなる。
これは、平文Pから暗号文Cを生成する暗号処理における鍵入力順と、暗号文Cから平文Pを生成する復号処理における鍵入力順を同じ設定とすることが可能であることを意味する。すなわち、インボリューション性を持つ鍵入力シーケンスであり、暗号処理および復号処理に適用するハードウェアやプログラムの共通化が可能であり、装置の軽量化(小型化)に寄与する設定である。
図59に示す構成において、定数CONは、暗号処理部453(E−1)の排他的論理和部461、排他的論理和部463、排他的論理和部465、これらの各排他的論理和部に入力する。
これらの定数CONは、例えば、図58を参照して説明した4×4ステートの定数CONである。
また、これら3つの排他的論理和部461,463,465に隣接する線形変換部462,464,466は、いずれも前述の行列Mを適用した列拡散演算(MixColumn)、すなわち、
MC[M
を実行する。
この図59に示す暗号処理部は、平文Pから暗号文Cを生成するシーケンスと、逆のシーケンスを実行することで、暗号文Cから平文Pを生成することも可能なインボリューション性を持つ構成であり、同一のハードウェア、あるいは同一プログラムを適用して暗号化処理と復号処理を行なうことが可能となる。
また、鍵入力シーケンスも暗号化と復号処理において同一のシーケンスとなるため、鍵スケジュール部の鍵供給処理も同一のハードウェア、あるいは同一プログラムを適用した処理として実行可能となる。
上述した定数入力構成によって、最小差分アクティブSボックスの数の減少を防止することが可能となり、各種の攻撃に対する耐性を高めた安全性の高い暗号処理構成が実現される。
なお、一般的な暗号処理におけるアクティブSボックスに基づく評価処理と、本開示の定数入力構成におけるアクティブSボックスに基づく評価処理とはやや異なっており、この点について、図60、図61を参照して説明する。
前述したように共通鍵ブロック暗号に設定される非線形変換部には、sビット単位の非線形変換を実行するSボックス(S−box)が用いられる。
差分攻撃に対する耐性を図る指標として,差分の接続関係を表現した差分パスに含まれる差分アクティブSボックスの最小数、すなわち、最小差分アクティブSボックス数がある。
一般的なブロック暗号において、非線形変換はSボックスによる処理の部分のみである。図60(A),(B)に示すように、ブロック暗号を実行するブロック暗号装置に対して、特定の差分ΔXを持つデータP1,P2を個別に入力して暗号処理結果C1,C2を得る。
この2つの暗号処理(A),(B)において、差分値が入力されるSボックスをアクティブSボックスと定義する。差分値が入力されるSボックスを特定することで、解析容易性が高まる。すなわち攻撃に対する耐性が弱まることになる。
一般的には、この図60に示すように所定の差分ΔXを有する2つの入力P1,P2を設定した場合に発生する差分値が入力されるSボックスの数をアクティブSボックスと定義し、この数をカウントすることで安全性評価を行う。
図61は、上述した図56(a)に示すインボリューション性を有するデータ変換部からなる暗号処理部を示している。
すなわち、暗号処理部は、
変換関数E,431、
線形変換部432、
変換関数E−1,433、
これらのデータ変換部を有し、変換関数E−1,433、は、変換関数E431の逆関数である。
定数(CON)435は、変換関数E−1,433に入力する。
なお、変換関数E−1,433は、複数のラウンド関数によって構成され、定数(CON)は、1つ以上のラウンド関数部に対して入力する。
暗号処理部は、変換関数E,431と、変換関数E,431の逆関数で変換関数E−1433をシーケンシャルに実行するインボリューション性を有し、変換関数E、または、逆関数E−1のいずれか一方のみにおいて、1回以上の定数を適用したラウンド演算を実行する。
この構成において、変換関数E431に対して、線形変換部432側から入力Sを入力して、出力Tを得る。
一方、変換関数E−1,433に対して、同様に線形変換部432側から、上記の入力値Sに対して差分値ΔXを付加した入力S(=S(+)ΔX)を入力して、出力T(+)ΔYを得る。
この2つの関数、すなわち、変換関数E431と、変換関数E431の逆関数である変換関数E−1,433に対して、図61に示すように、逆方向に差分ΔXを有する入力値S1,S2を入力したときに、各関数において対応位置にあるSボックス中、差分が入力されるSボックスをアクティブSボックスとする。
図62は、前述の図59に示す暗号処理構成におけるアクティブSボックスの数の算出構成を説明する図である。
図62に示す暗号処理装置の暗号処理部451(E)の線形変換部452側から入力値S1を入力し、暗号処理部451(E)を適用した暗号処理を実行する。
一方、暗号処理部451(E)の逆関数である暗号処理部453(E−1)の線形変換部452側から入力値S1に対して差分ΔXを設定した入力値S2を入力し、暗号処理部453(E−1)を適用した暗号処理を実行する。
この2つの暗号処理において各暗号処理部(E),(E−1)において対応位置にあるSボックス中、差分が入力されるSボックスをアクティブSボックスとする。
なお、アクティブSボックスの数が減少すると、例えばスライド攻撃やリフレクション攻撃と呼ばれる攻撃に対する耐性が弱くなり、アクティブSボックスの数を一定以上に維持することで、これらの攻撃に対する耐性が高めることが可能となり、安全性を向上させることができる。上述した定数入力構成によって、アクティブSボックスの数の減少を防止することが可能となり、各種の攻撃に対する耐性を高めた安全性の高い暗号処理構成が実現される。
[6−3.定数挿入位置のバリエーションについて]
上述した実施例では、データ変換関数Eと、データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有する暗号処理装置に対して、関数E、または逆関数E−1のいずれか一方のみに定数CONを入力して定数を適用したラウンド演算を実行する構成について説明した。
このような設定により、定数CONを入力する排他的論理和部に隣接する線形変換部、図57に示す例では線形変換部437における線形変換処理の入出力値の差分の減少を防止でき、結果として、最小差分アクティブSボックスの数を所定数以上に維持することが可能となる。
この定数入力構成は、関数E、または逆関数E−1のいずれか一方のみに限定されず、関数E、および逆関数E−1の双方において1回以上の定数を適用したラウンド演算を実行する構成としてもよい。ただし、定数適用位置は、関数E、および逆関数E−1の対応位置ではない、対応位置からずれた位置(非対応位置)とする。
この定数入力構成を持つ暗号処理装置の構成例を図63に示す。
図63において、平文Pは、左下から入力され、暗号文Cは右下から出力される。
図63に示す暗号処理装置の暗号処理部451(E)は、図56(a)に示す変換関数E,431に相当する。
また、線形変換部(P2)452は、図56(a)に示す線形変換部432に相当する。
また、暗号処理部453(E−1)は、図56(a)に示す変換関数E−1,433に相当する。
図63に示す暗号処理部の構成は、インボリューション性を持つ暗号処理部である。
図63に示すラウンド鍵入力例は、先に図43を参照して説明した構成例に対応する。すなわち、暗号処理部に構成された排他的論理和部に対するラウンド鍵の入力順は、以下の通りである。
鍵K
鍵K
変換鍵Kd
変換鍵Kd
排他的論理和演算鍵K(+)K
排他的論理和演算変換鍵Kd(+)Kd
排他的論理和演算鍵K(+)K
排他的論理和演算鍵K(+)K
排他的論理和演算変換鍵Kd(+)Kd
排他的論理和演算鍵K(+)K
変換鍵Kd
変換鍵Kd
鍵K
鍵K
なお、図43に示す設定では、ラウンド演算部Rに対して、排他的論理和演算鍵K(+)Kを入力する設定としているが、図63に示す例では、線形変換部452の前後において、排他的論理和演算鍵K(+)K、を繰り返し入力する設定である。
図63に示す構成は、図43に示すラウンド演算部Rを、
線形変換部452と、線形変換部452前後の2つの、
排他的論理和演算鍵K(+)Kとの排他的論理和部、
非線形変換部、
これらの変換部によって構成されるラウンド演算部とする設定した場合の構成に対応する。
鍵スケジュール部のラウンド鍵供給部は、上記の順番で6種類の鍵を出力する。この鍵の入力シーケンスは、逆の順番も同一シーケンスとなる。
これは、平文Pから暗号文Cを生成する暗号処理における鍵入力順と、暗号文Cから平文Pを生成する復号処理における鍵入力順を同じ設定とすることが可能であることを意味する。すなわち、インボリューション性を持つ鍵入力シーケンスであり、暗号処理および復号処理に適用するハードウェアやプログラムの共通化が可能であり、装置の軽量化(小型化)に寄与する設定である。
図63に示す構成において、定数CONは、
暗号処理部451(E)の排他的論理和部471、排他的論理和部472、これらの各排他的論理和部に入力する。
さらに、暗号処理部453(E−1)の排他的論理和部473にも入力する。
定数CONは、例えば、図58を参照して説明した4×4ステートの定数CONである。
また、これら3つの排他的論理和部471,472,473に隣接する線形変換部481,482,483は、いずれも前述の行列Mを適用した列拡散演算(MixColumn)、すなわち、
MC[M
を実行する。
このように、定数入力構成は、関数E、または逆関数E−1のいずれか一方のみに限定されず、関数E、および逆関数E−1の双方において1回以上の定数を適用したラウンド演算を実行する構成としてもよい。ただし、定数適用位置は、関数E、および逆関数E−1の対応位置ではない、ずれた位置(非対応位置)とする。
この図63に示す暗号処理部は、平文Pから暗号文Cを生成するシーケンスと、逆のシーケンスを実行することで、暗号文Cから平文Pを生成することも可能なインボリューション性を持つ構成であり、同一のハードウェア、あるいは同一プログラムを適用して暗号化処理と復号処理を行なうことが可能となる。
また、鍵入力シーケンスも暗号化と復号処理において同一のシーケンスとなるため、鍵スケジュール部の鍵供給処理も同一のハードウェア、あるいは同一プログラムを適用した処理として実行可能となる。
[7.非線形変換部に適用するSボックス(S−box)の具体的構成例について]
次に、非線形変換部に適用するSボックス(S−box)の具体的構成例について説明する。
例えば図19に示す暗号処理装置100において、暗号処理部120のインボリューション性、すなわち、平文Pから暗号文Cを生成して出力するハードウェア、あるいはプログラムと、暗号文Cから平文Pを生成して出力するハードウェアあるいはプログラムを同一とするためには、暗号処理部120に構成される非線形変換部122についてもインボリューション性が要求される。
以下、暗号処理部120に構成される非線形変換部122のインボリューション性を有する構成例について説明する。
先に、図22を参照して説明したように、図19に示す暗号処理装置100の暗号処理部120内の非線形変換部122は、例えば図22(1)に示すように、複数のSボックス(S−box)を有する構成である。
各Sボックスは例えば、4ビット入出力構成を持つ非線形変換部であり、16個のSボックスによる並列処理によって4×16=64ビットの非線形変換処理を実行する。
この4ビット入出力のSボックス(S−box)がインボリューション性を持つ構成であることが必要である。
すなわち4ビット入力値に対して、ある4ビット出力値が得られた場合、その4ビット出力値を同一のSボックスに入力した場合、元の4ビット入力値が得られる構成であることが必要である。
なお、インボリューション性を有する関数f(x)は、すべての入力値xに対して、
f(f(x))=x
上記を満たす関数である。
暗号処理部120に構成される非線形変換部122は、このインボリューション性を有する関数f(x)であることが要求される。
図64以下を参照してインボリューション性を持つ4ビット入出力Sボックスの構成例について説明する。
図64(1)は、先に説明した図22(1)と同様、非線形変換部の構成例を示す図である。
すなわち、図19に示す暗号処理装置100の暗号処理部120に構成される非線形変換部122の構成例である。非線形変換部122は、非線形変換処理を実行するSボックス(S−box)を複数配置した構成を有する、
各Sボックスは4ビットデータの非線形変換を実行する。
図64(2)は、非線形変換部内に構成される1つのSボックス(S−box)の構成を示している。Sボックス(S−box)は、
非線形変換層1,521、
線形変換層522、
非線形変換層2,523、
これら3つの層に区分することができる。
なお、非線形変換層2,523は、非線形変換層1,521の逆関数となっている。
図65に、具体的なSボックス(S−box)の回路構成例を示す。
図65に示すように、
非線形変換層1,521は、2つの排他的論理和演算部(XOR)と、2つの基本演算子によって構成される。
なお、図65に示す例では、基本演算子としてNOR回路を設定した例を示しているが、基本演算子は、AND回路、OR回路、NAND回路、いずれかの2入力1出力の演算を行う基本演算子に置き換え可能である。
また、2つの基本演算子は、同一の基本演算子の組み合わせとしても、異なる基本演算子の組み合わせとしてもよい。
線形変換層522は、入力4ビットの入れ替え処理を行なう線形変換層であり、基本的にインボリューション性を有する。
非線形変換層2,523は、非線形変換層1,521の逆関数によって構成される。
これらの3つの層によって構成されるSボックス回路は、インボリューション性を有する非線形変換回路となる。
図65の下部に、図65に示すSボックスに対する入力値(in)と出力値(out)との対応関係データを示す。
なお、入出力値はいずれも4ビットデータであり、0000〜1111のデータである。図65に示す表は、0000〜1111を10進法で示す0〜15の入力値と出力値との対応表として示している。
この表から理解されるように、任意の入力値Xから得られる出力値Yを、入力値Yとして得られる出力値は元の入力値Xとなる。
すなわち、図65に示す4ビット入出力Sボックスは、インボリューション性を有する持つ非線形変換回路である。
図66に、このSボックス(S−box)によるデータ変換式を示す。
Sボックス(S−box)に対する4ビット入力を、
in,bin,cin,dinとし、
Sボックス(S−box)からの4ビット出力を、
out,bout,cout,dout
とする。
Sボックス(S−box)によるデータ変換式は、以下の通りである。
Figure 2015191107
なお、上記式において、〜(x|y)は、()内の値の否定(NOT)を示す。具体的には、NOR回路に対する入力値がxとyである場合のNOR回路の出力値を示す。
上記演算式によって表現されるデータ変換を実行するSボックスは、インボリューション性を有する。
また、この図66に示すSボックス回路は、差分確率、線形確率がいずれも2−2であり、十分な安全性を有する。
図66に示すSボックスは、4つの排他的論理和演算子(XOR)と4つのNOR回路から構成され、ハードウェア回路上に必要なゲート数は13ゲートとなる。
なお、必要なゲート数は、排他的論理和演算子(XOR)=2.25ゲート、NOR回路=1ゲートとして算出している。
例えば図54を参照して説明した暗号処理部構成、すなわち、
変換関数E411、
線形変換部412、
変換関数E−1413、
これらの構成を持つ暗号処理部内の変換関数E411と、変換関数E−1413内の非線形変換部に図64〜図66に示すSボックスを利用した構成とすることで、暗号処理部全体のインボリューション性が実現される。
なお、図65、図66を参照して説明したSボックスは、
非線形変換層1、
線形変換層、
非線形変換層2、
これらの3層構成となっているが、この3層構成を持つSボックスの他の例について以下説明する。
なお、上記3層構成中の線形変換層の必要条件として、インボリューション性を有し、かつ、入出力ビットが不変となる置換部を有していないビット置換を実行する構成であることが必要である。
この線形変換層の条件について、図67を参照して説明する。
図67には4ビット入出力Sボックスにおける線形変換層の設定例を示している。
図65、図66を参照して説明したSボックスと同様、
非線形変換層1、
線形変換層、
非線形変換層2、
これらの3層構成を持つ4ビット入出力Sボックスにおいて線形変換層は、例えば、図67(1)に示す設定のいずれかとする。
線形変換層に対する入力4ビットをX=(x0,x1,x2,x3)、出力4ヒビットY=(y0,y1,y2,y3)としたとき、
インボリューション性を有し、かつ、入出力ビットが同一とならない設定、すなわち、
yi≠xi
ただしi=0,1,2,3、
上記式が成立することが線形変換層の条件となる。
図67(2)に示す線形変換構成は、上記条件を満たさず、不適合となる。
4ビット置換を実行する線形変換層の置換関数P4の条件を、式で示すと以下のように示すことができる。
(a)P4(P4(X))=X
(b) yi≠xi ただしi=0,1,2,3、
上記(a)は置換関数P4がインボリューション性を有することを示す条件式である。
(b)は、入出力ビットが同一とならないことを示す条件式である。
線形変換層は、上記条件を満たす置換処理を行なう構成であることが必要である。
4ビット置換を行うSボックスの例として、図65、図66を参照して構成と異なる構成を持つ例について、図68以下を参照して説明する。
図68に示すSボックスは、
非線形変換層1,531、
線形変換層532、
非線形変換層2,533、
これらの3層構成を持つ4ビット入出力Sボックスである。
非線形変換層1,531は、2つの排他的論理和演算部(XOR)と、NAND回路とNOR回路によって構成されている。
線形変換層532は、入力4ビットの入れ替え処理を行なう線形変換層であり、インボリューション性を有する。
非線形変換層2,533は、非線形変換層1,531の逆関数によって構成される。
これらの3つの層によって構成されるSボックス回路は、インボリューション性を有する非線形変換回路となる。
図68の下部に、図68に示すSボックスに対する入力値(in)と出力値(out)との対応関係データを示す。
なお、入出力値はいずれも4ビットデータであり、0000〜1111のデータである。図68に示す表は、0000〜1111を10進法で示す0〜15の入力値と出力値との対応表として示している。
この表から理解されるように、任意の入力値Xから得られる出力値Yを、入力値Yとして得られる出力値は元の入力値Xとなる。
すなわち、図68に示す4ビット入出力Sボックスは、インボリューション性を有する持つ非線形変換回路である。
図69に、このSボックス(S−box)によるデータ変換式を示す。
Sボックス(S−box)に対する4ビット入力を、
in,bin,cin,dinとし、
Sボックス(S−box)からの4ビット出力を、
out,bout,cout,dout
とする。
Sボックス(S−box)によるデータ変換式は、以下の通りである。
Figure 2015191107
なお、上記式において、
〜(x|y)は、NOR回路に対する入力値がxとyである場合のNOR回路の出力値を示す。
〜(x&y)は、NAND回路に対する入力値がxとyである場合のNAND回路の出力値を示す。
上記演算式によって表現されるデータ変換を実行するSボックスは、インボリューション性を有する。
また、この図69に示すSボックス回路も、差分確率、線形確率がいずれも2−2であり、十分な安全性を有する。
図69に示すSボックスは、4つの排他的論理和演算子(XOR)と2つのNOR回路と2つのNAND回路から構成される
例えば図54を参照して説明した暗号処理部構成、すなわち、
変換関数E411、
線形変換部412、
変換関数E−1413、
これらの構成を持つ暗号処理部内の変換関数E411と、変換関数E−1413内の非線形変換部に図69に示すSボックスを利用した構成とすることで、暗号処理部全体のインボリューション性が実現される。
次に、図70を参照してさらに異なる構成を持つ4ビット入出力Sボックスの例について説明する。
図70に示すSボックスは、
非線形変換層1,541、
線形変換層542、
非線形変換層2,543、
これらの3層構成を持つ4ビット入出力Sボックスである。
非線形変換層1,541は、2つの排他的論理和演算部(XOR)と、2つのOR回路によって構成されている。
線形変換層542は、入力4ビットの入れ替え処理を行なう線形変換層であり、インボリューション性を有する。
非線形変換層2,543は、非線形変換層1,541の逆関数によって構成される。
これらの3つの層によって構成されるSボックス回路は、インボリューション性を有する非線形変換回路となる。
図70の下部に、図68に示すSボックスに対する入力値(in)と出力値(out)との対応関係データを示す。
なお、入出力値はいずれも4ビットデータであり、0000〜1111のデータである。図70に示す表は、0000〜1111を10進法で示す0〜15の入力値と出力値との対応表として示している。
この表から理解されるように、任意の入力値Xから得られる出力値Yを、入力値Yとして得られる出力値は元の入力値Xとなる。
すなわち、図70に示す4ビット入出力Sボックスは、インボリューション性を有する持つ非線形変換回路である。
図71に、このSボックス(S−box)によるデータ変換式を示す。
Sボックス(S−box)に対する4ビット入力を、
in,bin,cin,dinとし、
Sボックス(S−box)からの4ビット出力を、
out,bout,cout,dout
とする。
Sボックス(S−box)によるデータ変換式は、以下の通りである。
Figure 2015191107
なお、上記式において、
(x|y)は、OR回路に対する入力値がxとyである場合のOR回路の出力値を示す。
上記演算式によって表現されるデータ変換を実行するSボックスは、インボリューション性を有する。
また、この図71に示すSボックス回路も、差分確率、線形確率がいずれも2−2であり、十分な安全性を有する。
図71に示すSボックスは、4つの排他的論理和演算子(XOR)と4つのOR回路から構成される
例えば図54を参照して説明した暗号処理部構成、すなわち、
変換関数E411、
線形変換部412、
変換関数E−1413、
これらの構成を持つ暗号処理部内の変換関数E411と、変換関数E−1413内の非線形変換部に図71に示すSボックスを利用した構成とすることで、暗号処理部全体のインボリューション性が実現される。
[8.暗号処理装置の具体例について]
次に、上述した説明に従った各構成、すなわち、以下の各構成を全て有する暗号処理装置の全体構成例について説明する。
(1)安全性を高めた共通鍵暗号処理の全体構成(図19〜図22)
(2)複数の異なる線形変換行列を適用した線形変換を実行する構成(図23〜図31)
(3)ベース鍵と変換鍵を使用して生成したラウンド鍵を提供し、インボリューション性、フルディフュージョン性を実現する鍵スケジュール部の構成(図32〜図52)
(4)定数入力構成(図53〜図63)
(5)インボリューション性を持つSボックスを適用した非線形変換部の構成(図64〜図71)
図72に示す暗号処理装置700は、上記の各構成を全て備えた暗号処理装置の一例を示す図である。
暗号処理装置700は、鍵スケジュール部720と、暗号処理部750を有する。
暗号処理部750は、排他的論理和部751、非線形変換部752、線形変換部753の各データ変換部を有し、これらの処理を繰り返し実行する構成を有する。
一方、鍵スケジュール部720は、暗号処理部750に構成された排他的論理和部の各々に対してラウンド鍵RKnを出力して、変換対象データとの排他的論理和演算を実行させる。
鍵スケジュール部720は、ラウンド鍵供給部721と定数供給部(定数レジスタ)725を有する。
また、ラウンド鍵供給部721は、秘密鍵Kを格納した鍵レジスタ722と、鍵変換部723を有する。
図72に示す暗号処理装置700の暗号処理部750は、例えば64ビットの平文Pを入力して、64ビットの暗号文Cを出力する。また、この同じ暗号処理部750を適用して、暗号文Cを入力して平文Pを出力することが可能である。
変換データが64ビットである場合、各ラウンド鍵RKnも64ビットである。
なお、これらの各64ビットデータは、いずれも各要素4ビットの16要素からなる4×4ステートである。
なお、暗号処理部750は、平文Pを入力データとしてラウンド演算を繰り返して出力データとしての暗号文Cを出力可能であるとともに、暗号文Cを入力データとして、ラウンド演算の実行シーケンスを逆順に設定したデータ変換処理により出力データとして前記平文Pを生成可能なインボリューション性を有する構成である。
平文Pから暗号文Cを生成する場合は、図に示す暗号処理部750の上段から下段に向けて各変換処理を実行する。
一方、暗号文Cから平文Pを生成する場合は、図に示す暗号処理部750の下段から上段に向けて各変換処理を実行する。
また、鍵スケジュール部720のラウンド鍵供給部721は、平文Pから暗号文Cを生成する場合の鍵供給シーケンスと、暗号文Cから平文Pを生成する場合の鍵供給シーケンスが一致するインボリューション性を有する鍵供給処理を行なう構成である。なお、鍵スケジュール部720は、暗号処理部750に対する鍵供給処理に際して、供給鍵の一部に定数による演算を施し、演算結果である鍵データを暗号処理部750に出力する。
このように、図72に示す暗号処理部750の構成は、先に図59を参照して説明した構成と同様、変換関数E、線形変換関数、変換関数E−1のシーケンスで各変換関数が設定されており、インボリューション性を有する構成である。
暗号処理部750には、先に項目[4.暗号処理部の線形変換部の構成と処理について]において、図23〜図31を参照して説明したように、3種類の異なる線形変換処理を実行する線形変換処理部が設定されている。
すなわち、
線形変換部P1、
線形変換部P2、
線形変換部P3、
これらの3つの異なる線形変換部を有し、暗号処理において、ラウンド毎に実行する線形変換処理を変更する。すなわち、連続ラウンドでは同じ線形変換処理を行なわない設定としている。
線形変換部P1は、4×4ステートの入力データの各列の要素に対して、各列単位で、1つの行列Mを適用した行列演算を行う。
これは、先に、図24、図25を参照して説明した列拡散演算(MixColum)である。
すなわち、線形変換処理部P1は、
MC[M
上記式によって示される列拡散演算(MC)を実行する。
なお、MC[M]は、ステートの各列に対して、同一の行列Mを適用した行列演算を示す式であり、ステートの各列に対して適用する行列を個別に示した式、
MC[M,M,M,M
上記式と同じ意味である。
線形変換部P2は、先に図24、図26等を参照して説明したように、4×4ステートの入力データの各行の要素に対して、各行単位で異なる行列を適用した行列演算を行う。上位の第1行から第4行に対して、以下の行列を適用した行列演算を実行する。
第1行:適用行列M
第2行:適用行列M
第3行:適用行列M
第4行:適用行列M
すなわち、線形変換処理部P2は、
MR[M,M,M,M
上記式によって示される行拡散演算(MixRow)を実行する。
線形変換処理部P3も、線形変換処理部P2と同様、図24(2)に示すように、4×4ステートの入力データの各行の要素に対して、各行単位で異なる行列を適用した行列演算を行う。線形変換処理P3は、線形変換処理P2とは異なり、上位の第1行から第4行に対して、以下の行列を適用した行列演算を実行する。
第1行:適用行列M
第2行:適用行列M
第3行:適用行列M
第4行:適用行列M
これは、先に、図27を参照して説明した行拡散演算(MixRow)である。
すなわち、線形変換処理部P3は、
MR[M,M,M,M
上記式によって示される行拡散演算(MixRow)を実行する。
これらの複数の異なる線形変換処理を組み合わせて利用し、ラウンド毎に実行する線形変換処理を切り換えることで、先に図30を参照して説明したように、アクティブSボックスの数を増加させることが可能となり、より安全性の高い暗号処理(暗号化処理および復号処理)が実現される。
なお、図72に示す暗号処理部750は、以下の各データ変換部を順次適用したデータ変換処理を実行する。
ラウンド鍵RKとの排他的論理和演算を行う排他的論理和部、
非線形変換部S、
線形変換部P1、
ラウンド鍵RKとの排他的論理和演算を行う排他的論理和部、
非線形変換部S、
線形変換部P2、
ラウンド鍵RKとの排他的論理和演算を行う排他的論理和部、
非線形変換部S、
線形変換部P1、
ラウンド鍵RKとの排他的論理和演算を行う排他的論理和部、
非線形変換部S、
線形変換部P3、
ラウンド鍵RKとの排他的論理和演算を行う排他的論理和部、
非線形変換部S、
線形変換部P1、
ラウンド鍵RKとの排他的論理和演算を行う排他的論理和部、
非線形変換部S、
ラウンド鍵RKとの排他的論理和演算を行う排他的論理和部、
線形変換部P2、
ラウンド鍵RKとの排他的論理和演算を行う排他的論理和部、
非線形変換部S、
ラウンド鍵RKとの排他的論理和演算を行う排他的論理和部、
線形変換部P1、
非線形変換部S、
ラウンド鍵RKとの排他的論理和演算を行う排他的論理和部、
線形変換部P3、
非線形変換部S、
ラウンド鍵RK10との排他的論理和演算を行う排他的論理和部、
線形変換部P1、
非線形変換部S、
ラウンド鍵RK11との排他的論理和演算を行う排他的論理和部、
線形変換部P2、
非線形変換部S、
ラウンド鍵RK12との排他的論理和演算を行う排他的論理和部、
線形変換部P1、
非線形変換部S、
ラウンド鍵RK13との排他的論理和演算を行う排他的論理和部、
このラウンド演算実行構成は、先に図59を参照して説明したと同様の構成であり、
変換関数E、
線形変換部、
変換関数E−1
これらのシーケンスに設定され、インボリューション性を有する。
なお、各非線形変換部は、先に図64〜図66を参照して説明したインボリューション性を有するSボックスによって構成されている。
鍵スケジュール部720のラウンド鍵供給部721は、鍵レジスタ722と鍵変換部723を有する。このラウンド鍵供給部721の実行する処理は、先に項目[5.鍵スケジュール部の構成と処理について]において図32〜図43を参照して説明した処理である。
すなわち、ベース鍵と変換鍵を使用して生成したラウンド鍵を暗号処理部750に提供する。このラウンド鍵供給構成では、インボリューション性、フルディフュージョン性を実現している。
鍵レジスタに格納された秘密鍵Kは64ビットのベース鍵KとKとの連結データである128ビット鍵データである。
鍵変換部723は、ベース鍵Kに基づく変換鍵Kdを生成し、ベース鍵Kに基づく変換処理によって変換鍵Kdを生成する。
この変換処理を、変換関数G、および逆関数G−1を用いて式で示すと以下の通りとなる。
Kd=G(K
=G−1(Kd
なお、
ここで、G=G−1
が成立する。
すなわち、鍵変換部723において鍵変換に適用するデータ変換関数Gは、インボリューション性、すなわち、図33に示すように、順方向関数Gと逆方向関数G−1とが同じ関数であるという性質を持つ。
なお、この鍵変換処理には、先に図34等を参照して説明したように、アダマール(Hadamard)MDS行列Mを適用して実行する。
具体的には、図34に示すステップS1の列拡散演算と、ステップS2の行拡散演算を実行する。
ステップS1の列拡散演算は、以下の演算式によって示される。
MC[M]=MC[M,M,M,M
また、ステップS2の行拡散演算は、以下の演算式によって示される。
MR[M]=MR[M,M,M,M
すなわち、図34のステップS1の列拡散演算は、4ビット要素からなる4×4のステート表現データの4つの全ての列に対して、同一のアダマール(Hadamard)MDS行列Mを適用した行列演算を実行する。
また、ステップS2の行拡散演算は、4ビット要素からなる4×4のステート表現データの4つの全ての行に対して、同一のアダマール(Hadamard)MDS行列Mを適用した行列演算を実行する。
列拡散演算MC[M]と、行拡散演算MR[M]の連続処理からなる関数Gは、インボリューション性を持ち、順方向関数Gと、逆方向関数G−1が同一であるため、2回繰り返すことで、元の値が算出される。
さらに、鍵変換部723において実行する行列Mを適用した列拡散演算MC[M]と、行列Mを適用した行拡散演算MR[M]により、入出力ステート全要素間のデータ拡散(diffusion)、すなわち「全拡散(full diffusion)変換」が行われる。
このフルディフュージョン性を持つラウンド鍵を暗号処理部に入力して変換対象データとの排他的論理和を実行することで、変換データの拡散性能も向上し、より安全性の高い暗号処理が実現される。
なお、ラウンド鍵供給部721の実行するラウンド鍵供給構成は、
(1)全拡散(full diffusion)変換を実現するフルディフュージョン性、
(2)順方向関数Gと、逆方向関数G−1が同一であるインボリューション性、
これら2つの性質を持つ。
これらの2つの特性により、先に説明したように、以下の効果がもたらされる。
全拡散(full diffusion)変換を実現するフルディフュージョン性に基づいて、変換対象データに対する鍵データの構成情報の拡散が少ないラウンド数で実現され、ラウンド関数(R)の処理に依存することなくより大きな拡散性能が保証される。
すなわち、少ないラウンド数で攻撃に対する耐性の高い安全な暗号処理が実現される。結果として、高速処理や軽量化が実現される。
また、インボリューション性に基づく効果としては、1つの鍵変換部を繰り返し利用する構成が可能であり、アンロールド実装、ラウンド実装のいずれにおいてもハードウェアの小型化が実現される。
なお、図72に示す例では、ラウンド鍵供給部721は、以下の順番で、鍵の出力を行う。
鍵K
鍵K
変換鍵Kd
変換鍵Kd
排他的論理和演算鍵K(+)K
排他的論理和演算変換鍵Kd(+)Kd
排他的論理和演算鍵K(+)K
排他的論理和演算変換鍵Kd(+)Kd
排他的論理和演算鍵K(+)K
変換鍵Kd
変換鍵Kd
鍵K
鍵K
この順番で、6種類の鍵を出力する。
なお、暗号処理部750に対して入力されるラウンド鍵K〜K13は、上記の各鍵をそのまま、あるいは、定数CONを作用させて生成される。
暗号処理部750の中心位置にある線形変換部P2の前後において、ラウンド鍵Kとして、排他的論理和演算鍵K(+)K、を繰り返し利用する。
また、ラウンド鍵RK,RK10,RK12は、定数供給部725から供給される定数CONをラウンド鍵供給部721の供給する鍵に排他的論理和して生成される。
上記鍵の入力シーケンスは、先に図59を参照して説明したシーケンスと同様であり、逆の順番も同一シーケンスとなる。
これは、平文Pから暗号文Cを生成する暗号処理における鍵入力順と、暗号文Cから平文Pを生成する復号処理において、ラウンド鍵供給部721は、同じシーケンスで鍵生成、出力を行うことが可能であることを意味する。これは、暗号処理および復号処理に適用するハードウェアやプログラムを共通化可能であることを意味し、装置の軽量化(小型化)に寄与する設定である。
鍵スケジュール部720に設定された定数供給部725は、先に項目[6.定数入力による安全性向上を実現する構成について]において、図53〜図59を参照して説明した処理に従った定数供給処理を実行する。
図に示す例において、定数(CON)は、
ラウンド鍵RK
ラウンド鍵RK10
ラウンド鍵RK12
これらのラウンド鍵生成時にラウンド鍵供給部の生成する鍵データに対して排他的論理和演算がなされる。
すなわち、
ラウンド鍵RK=Kd(+)Kd(+)CON
ラウンド鍵RK10=Kd(+)CON
ラウンド鍵RK12=K(+)CON
なお、(+)は排他的論理和演算を意味する。
このような定数(CON)の入力処理の結果として、暗号処理部750に入力されるラウンド鍵RK〜RK13の設定は以下の通りとなる。
RK=K
RK=K
RK=Kd
RK=Kd
RK=K(+)K
RK=Kd(+)Kd
RK=K(+)K
RK=K(+)K
RK=Kd(+)Kd(+)CON、
RK=K(+)K
RK10=Kd(+)CON、
RK11=Kd
RK12=K(+)CON、
RK13=K
なお、(+)は排他的論理和演算を意味する。
RKは、同じラウンド鍵を線形変換部(P2)の前後で2回入力する設定となっている。
このように、定数(CON)はラウンド鍵の生成時にラウンド鍵供給部の生成する鍵に対して排他的論理和処理がなされる。
なお、定数をラウンド鍵とは別に、暗号処理部の排他的論理和部に入力して、変換データとの排他的論理和処理を行なってもよい。この場合も結果は同じとなる。
なお、定数(CON)は、前述したように、定数CONと、定数CONを入力する暗号処理部の排他的論理和部に隣接する線形変換部において適用する線形変換行列との行列演算の結果の全要素が非ゼロ、すなわちゼロでない値となる定数(CON)を利用する。
この構成によって、線形変換部の線形変換による差分減少が防止される。この結果、最小差分アクティブSボックスの数の減少を防止することが可能となり、各種の攻撃に対する耐性を高めた安全性の高い暗号処理構成が実現される。
さらに、暗号処理部750に設定される非線形変換部は、先に項目[7.非線形変換部に適用するSボックス(S−box)の具体的構成例について]において、図64〜図66を参照して説明したインボリューション性を有する4ビット入出力kとボックス(S−box)を複数設定した構成である。
先に説明たように、暗号処理部750は、変換関数Eと、線形変換部、変換関数E−1を有する構成であり、変換関数Eと、変換関数Eの非線形変換部に図64〜図66に示すSボックスを利用した構成とすることで、暗号処理部全体のインボリューション性が実現される。
[9.暗号処理装置の実装例について]
最後に、上述した実施例に従った暗号処理を実行する暗号処理装置の実装例について説明する。
上述した実施例に従った暗号処理を実行する暗号処理装置は、暗号処理を実行する様々な情報処理装置に搭載可能である。具体的には、PC、TV、レコーダ、プレーヤ、通信機器、さらに、RFID、スマートカード、センサネットワーク機器、デンチ/バッテリー認証モジュール、健康・医療機器、自立型ネットワーク機器等、例えばデータ処理や通信処理に伴う暗号処理を実行する様々な機器において利用可能である。
本開示の暗号処理を実行する装置の一例としてのICモジュール800の構成例を図73に示す。上述の処理は、例えばPC、ICカード、リーダライタ、スマートフォンやウェアラブルデバイス等の様々な情報処理装置において実行可能であり、図73に示すICモジュール800は、これら様々な機器に構成することが可能である。
図73に示すCPU(Central processing Unit)801は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ802は、CPU801が実行するプログラム、あるいは演算パラメータなどの固定データを格納するROM(Read−Only−Memory)、CPU801の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。また、メモリ802は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル(置換表)や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
暗号処理部803は、上記において説明した暗号処理構成を有しい、共通鍵ブロック暗号処理アルゴリズムに従った暗号処理、復号処理を実行する。
なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU801がROM格納プログラムを読み出して実行するように構成してもよい。
乱数発生器804は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
送受信部805は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
なお、上述した実施例において説明した暗号処理装置は、入力データとしての平文を暗号化する暗号化処理に適用可能であるのみならず、入力データとしての暗号文を平文に復元する復号処理にも適用可能である。
暗号化処理、復号処理、双方の処理において、上述した実施例において説明した構成を適用することが可能である。
図74は、本開示に係る暗号処理を実行するスマートフォン900の概略的な構成の一例を示すブロック図である。スマートフォン900は、プロセッサ901、メモリ902、ストレージ903、外部接続インタフェース904、カメラ906、センサ907、マイクロフォン908、入力デバイス909、表示デバイス910、スピーカ911、無線通信インタフェース913、アンテナスイッチ914、アンテナ915、バス917、バッテリー918及び補助コントローラ919を備える。
プロセッサ901は、例えばCPU(Central Processing Unit)又はSoC(System on Chip)であってよく、スマートフォン900のアプリケーションレイヤ及びその他のレイヤの機能を制御し、また、暗号処理を制御する。メモリ902は、RAM(Random Access Memory)及びROM(Read Only Memory)を含み、プロセッサ901により実行されるプログラム及びデータを記憶する。また、メモリ902は、暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル(置換表)や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。ストレージ903は、半導体メモリ又はハードディスクなどの記憶媒体を含み得る。外部接続インタフェース904は、メモリーカード又はUSB(Universal Serial Bus)デバイスなどの外付けデバイスをスマートフォン900へ接続するためのインタフェースである。
カメラ906は、例えば、CCD(Charge Coupled Device)又はCMOS(Complementary Metal Oxide Semiconductor)などの撮像素子を有し、撮像画像を生成する。センサ907は、例えば、測位センサ、ジャイロセンサ、地磁気センサ及び加速度センサなどのセンサ群を含み得る。マイクロフォン908は、スマートフォン900へ入力される音声を音声信号へ変換する。カメラ906で生成された画像や、センサ907で取得されたセンサデータ、マイクロフォン908で取得した音声信号などは、プロセッサ901により暗号化され無線通信インタフェース913を介して他の装置に送信されてもよい。入力デバイス909は、例えば、表示デバイス910の画面上へのタッチを検出するタッチセンサ、キーパッド、キーボード、ボタン又はスイッチなどを含み、ユーザからの操作又は情報入力を受け付ける。表示デバイス910は、液晶ディスプレイ(LCD)又は有機発光ダイオード(OLED)ディスプレイなどの画面を有し、スマートフォン900の出力画像を表示する。スピーカ911は、スマートフォン900から出力される音声信号を音声に変換する。
無線通信インタフェース913は、無線通信を実行し、典型的には、ベースバンドプロセッサ、RF(Radio Frequency)回路及びパワーアンプなどを含み得る。無線通信インタフェース913は、通信制御プログラムを記憶するメモリ、当該プログラムを実行するプロセッサ及び関連する回路を集積したワンチップのモジュールであってもよい。無線通信インタフェース913は、無線LAN方式に加えて、近距離無線通信方式、近接無線通信方式又はセルラ通信方式などの他の種類の無線通信方式をサポートしてもよい。
バス917は、プロセッサ901、メモリ902、ストレージ903、外部接続インタフェース904、カメラ906、センサ907、マイクロフォン908、入力デバイス909、表示デバイス910、スピーカ911、無線通信インタフェース913及び補助コントローラ919を互いに接続する。バッテリー918は、図中に破線で部分的に示した給電ラインを介して、図74に示したスマートフォン900の各ブロックへ電力を供給する。補助コントローラ919は、例えば、スリープモードにおいて、スマートフォン900の必要最低限の機能を動作させる。
なお、上述した実施例において説明したスマートフォンにおける暗号処理は、入力データとしての平文を暗号化する暗号化処理に適用可能であるのみならず、入力データとしての暗号文を平文に復元する復号処理にも適用可能である。
暗号化処理、復号処理、双方の処理において、上述した実施例において説明した構成を適用することが可能である。
また、図74に示すスマートフォン900に図73に示すICモジュール800を搭載し、上述した実施例に従った暗号処理をICモジュール800において実行する構成としてもよい。
[10.本開示の構成のまとめ]
以上、特定の実施例を参照しながら、本開示の実施例について詳解してきた。しかしながら、本開示の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本開示の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
なお、本明細書において開示した技術は、以下のような構成をとることができる。
(1) 入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記鍵スケジュール部は、
秘密鍵Kを格納した鍵レジスタと、
前記秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成する鍵変換部を有し、
前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする構成であり、
前記変換関数Gは、逆関数G−1が関数Gと同じ関数となるインボリューション性を有する関数である暗号処理装置。
(2)前記秘密鍵K、および前記変換鍵Kdは、いずれも各要素が1ビット以上のm×n個の要素からなるステートであり、前記変換関数Gは、前記秘密鍵Kのステート要素の全てが、前記変換鍵Kdのステート要素全てに影響を及ぼすフルディフュージョン性を有する関数である前記(1)に記載の暗号処理装置。
(3)前記変換関数Gは、前記秘密鍵Kのステートの各列要素単位で行列を適用して線形変換を行う列拡散演算と、前記秘密鍵Kのステートの各行要素単位で行列を適用して線形変換を行う行拡散演算を実行して前記変換鍵Kdを生成する前記(2)に記載の暗号処理装置。
(4)前記秘密鍵K、および前記変換鍵Kdは、いずれも各要素が4ビットの4×4個の要素からなるステートであり、前記変換関数Gは、前記秘密鍵Kのステート要素の全てが、前記変換鍵Kdのステート要素全てに影響を及ぼすフルディフュージョン性を有する関数である前記(1)〜(3)いずれかに記載の暗号処理装置。
(5)前記変換関数Gは、前記秘密鍵Kのステートの各列要素単位でアダマールMDS(Hadamard MDS)行列を適用して線形変換を行う列拡散演算と、前記秘密鍵Kのステートの各行要素単位でアダマールMDS(Hadamard MDS)行列を適用して線形変換を行う行拡散演算を実行して前記変換鍵Kdを生成する前記(4)に記載の暗号処理装置。
(6)前記鍵スケジュール部は、前記秘密鍵Kは、分割鍵K1、K2の連結データであり、前記鍵変換部は、前記分割鍵K1、K2の各々に対する前記変換関数Gを適用した変換処理により変換鍵Kd1、Kd2を生成し、前記分割鍵K1、K2、および前記変換鍵Kd1、Kd2を前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする前記(1)〜(5)いずれかに記載の暗号処理装置。
(7)前記鍵スケジュール部は、
(a)前記分割鍵K1、K2、
(b)前記変換鍵Kd1、Kd2、
(c)前記分割鍵K1と前記分割鍵K2との排他的論理和演算によって生成した鍵、
(d)前記変換鍵Kd1と前記変換鍵Kd2との排他的論理和演算によって生成した鍵、
上記(a)〜(d)の6種類の鍵を前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする前記(6)に記載の暗号処理装置。
(8)前記暗号処理部は、平文Pを入力データとして前記ラウンド演算を繰り返して出力データとしての暗号文Cを出力し、前記暗号文Cを入力データとして、前記ラウンド演算の実行シーケンスを逆順に設定したデータ変換処理により出力データとして前記平文Pを生成可能なインボリューション性を有する構成である前記(1)〜(7)いずれかに記載の暗号処理装置。
(9)前記鍵スケジュール部は、平文Pから暗号文Cを生成する場合の鍵供給シーケンスと、暗号文Cから平文Pを生成する場合の鍵供給シーケンスが一致するインボリューション性を有する鍵供給処理を行なう構成である前記(1)〜(8)いずれかに記載の暗号処理装置。
(10)前記鍵スケジュール部は、前記暗号処理部に対する鍵供給処理に際して、供給鍵の一部に定数による演算を施し、演算結果である鍵データを前記暗号処理部に出力する前記(1)〜(9)いずれかに記載の暗号処理装置。
(11)前記暗号処理部が実行するラウンド演算は、線形変換部による線形変換処理を含む演算であり、前記線形変換部は、ラウンド遷移に応じて線形変換態様を変更する前記(1)〜(10)いずれかに記載の暗号処理装置。
(12)前記ラウンド演算は非線形変換処理を含み、前記非線形変換処理を実行するSボックスは、入力値から得られる出力値を、再入力することで前記入力値が得られるインボリューション性を有する構成である前記(1)〜(11)いずれかに記載の暗号処理装置。
(13) 入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記鍵スケジュール部は、
秘密鍵Kを格納した鍵レジスタと、
前記秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成する鍵変換部を有し、
前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする構成であり、
前記秘密鍵K、および前記変換鍵Kdは、いずれも各要素が1ビット以上のm×n個の要素からなるステートであり、
前記変換関数Gは、前記秘密鍵Kのステート要素の全てが、前記変換鍵Kdのステート要素全てに影響を及ぼすフルディフュージョン性を有する関数である暗号処理装置。
(14)前記変換関数Gは、フルディフュージョン変換関数とビット置換関数の組み合わせである前記(13)に記載の暗号処理装置。
(15)前記秘密鍵K、および前記変換鍵Kdは、いずれも各要素が4ビットの4×4個の要素からなるステートであり、前記変換関数Gは、フルディフュージョン4ビット変換関数と16ビット置換関数の組み合わせである前記(13)または(14)に記載の暗号処理装置。
(16)前記鍵スケジュール部は、前記秘密鍵Kは、分割鍵K1、K2の連結データであり、前記鍵変換部は、前記分割鍵K1に対する変換関数G1を適用した変換処理により変換鍵Kd1を生成し、前記分割鍵K2に対する変換関数G2を適用した変換処理により変換鍵Kd2を生成する構成であり、前記変換関数G1,G2は、
(a)G1,G2ともフルディフュージョン性を有するがインボリューション性を有さない変換関数、
(b)G1,G2ともフルディフュージョン性と、インボリューション性を有する変換関数、
(c)G1,G2ともフルディフュージョン性を有し、G1とG2が逆関数の設定、すなわち、G2=G1−1の関係にある変換関数、
上記(a)〜(c)のいずれかの組み合わせである前記(13)〜(15)いずれかに記載の暗号処理装置。
(17) 暗号処理装置において実行する暗号処理方法であり、
前記暗号処理装置は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記鍵スケジュール部は、
鍵レジスタに格納した秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成し、
前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする処理を行ない、
前記変換関数Gは、逆関数G−1が関数Gと同じ関数となるインボリューション性を有する関数である暗号処理方法。
(18) 暗号処理装置において実行する暗号処理方法であり、
前記暗号処理装置は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記鍵スケジュール部は、
鍵レジスタに格納した秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成し、
前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする処理を行ない、
前記秘密鍵K、および前記変換鍵Kdは、いずれも各要素が1ビット以上のm×n個の要素からなるステートであり、
前記変換関数Gは、前記秘密鍵Kのステート要素の全てが、前記変換鍵Kdのステート要素全てに影響を及ぼすフルディフュージョン性を有する関数である暗号処理方法。
(19) 暗号処理装置において暗号処理を実行させるプログラムであり、
前記暗号処理装置は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記プログラムは、前記鍵スケジュール部に、
鍵レジスタに格納した秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成する処理と、
前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする処理を実行させ、
前記変換関数Gは、逆関数G−1が関数Gと同じ関数となるインボリューション性を有する関数であるプログラム。
(20) 暗号処理装置において暗号処理を実行させるプログラムであり、
前記暗号処理装置は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記プログラムは、前記鍵スケジュール部に、
鍵レジスタに格納した秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成する処理と、
前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする処理を実行させ、
前記秘密鍵K、および前記変換鍵Kdは、いずれも各要素が1ビット以上のm×n個の要素からなるステートであり、
前記変換関数Gは、前記秘密鍵Kのステート要素の全てが、前記変換鍵Kdのステート要素全てに影響を及ぼすフルディフュージョン性を有する関数であるプログラム。
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、LAN(Local Area Network)、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
上述したように、本開示の一実施例の構成によれば、各種の攻撃に対する耐性を向上させた安全性の高い暗号処理構成が実現される。
具体的には、入力データに対するラウンド演算を繰り返して出力データを生成する暗号処理部と、暗号処理部におけるラウンド演算において適用するラウンド鍵を暗号処理部に出力する鍵スケジュール部を有し、鍵スケジュール部は、秘密鍵Kを格納した鍵レジスタと、秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成する鍵変換部を有し、秘密鍵K、および変換鍵Kdを暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする。変換関数Gとして、逆関数G−1が関数Gと同じ関数となるインボリューション性と、フルディフュージョン性を有する関数を適用する。
本構成により拡散特性が向上し、各種の攻撃に対する耐性を向上させた安全性の高い暗号処理構成が実現される。
100 暗号処理装置
110 鍵スケジュール部
120 暗号処理部
121 排他的論理和部
122 非線形変換部
123 線形変換部
201 線形変換部P1
202 線形変換部P2
203 線形変換部P3
300 鍵スケジュール部
301 鍵供給部(鍵レジスタ)
302 鍵変換部
320 暗号処理部
321〜327 排他的論理和部
331,333 排他的論理和部
332 非線形/線形変換部(S&P)
350 暗号処理部
351 排他的論理和部
352 非線形/線形変換部(S&P)
360 鍵スケジュール部
361,362 鍵レジスタ
363 鍵変換部
371 鍵レジスタ
372 鍵変換部
381 鍵レジスタ
391 鍵レジスタ
392,394 排他的論理和部
393 鍵変換部
401 ラウンド演算実行部
402 定数入力部
411 変換関数E
412 線形変換部
413 変換関数E−1
431 変換関数E
432 線形変換部
433 変換関数E−1
435 定数入力部
436 排他的論理和部
437 線形変換部
451 変換関数E
452 線形変換部
453 変換関数E−1
521 非線形変換層1
522 線形変換層
523 非線形変換層
700 暗号処理装置
720 鍵スケジュール部
721 ラウンド鍵供給部
722 鍵レジスタ
723 鍵変換部
725 定数供給部
750 暗号処理部
751 排他的論理和部
752 非線形変換部
753 線形変換部
800 ICモジュール
801 CPU(Central processing Unit)
802 メモリ
803 暗号処理部
804 乱数生成部
805 送受信部
900 スマートフォン
901 プロセッサ
902 メモリ
903 ストレージ
904 外部接続インタフェース
906 カメラ
907 センサ
908 マイクロフォン
909 入力デバイス
910 表示デバイス
911 スピーカ
913 無線通信インタフェース
914 アンテナスイッチ
915 アンテナ
917 バス
918 バッテリー
919 補助コントローラ

Claims (20)

  1. 入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
    前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
    前記鍵スケジュール部は、
    秘密鍵Kを格納した鍵レジスタと、
    前記秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成する鍵変換部を有し、
    前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする構成であり、
    前記変換関数Gは、逆関数G−1が関数Gと同じ関数となるインボリューション性を有する関数である暗号処理装置。
  2. 前記秘密鍵K、および前記変換鍵Kdは、いずれも各要素が1ビット以上のm×n個の要素からなるステートであり、
    前記変換関数Gは、前記秘密鍵Kのステート要素の全てが、前記変換鍵Kdのステート要素全てに影響を及ぼすフルディフュージョン性を有する関数である請求項1に記載の暗号処理装置。
  3. 前記変換関数Gは、
    前記秘密鍵Kのステートの各列要素単位で行列を適用して線形変換を行う列拡散演算と、
    前記秘密鍵Kのステートの各行要素単位で行列を適用して線形変換を行う行拡散演算を実行して前記変換鍵Kdを生成する請求項2に記載の暗号処理装置。
  4. 前記秘密鍵K、および前記変換鍵Kdは、いずれも各要素が4ビットの4×4個の要素からなるステートであり、
    前記変換関数Gは、前記秘密鍵Kのステート要素の全てが、前記変換鍵Kdのステート要素全てに影響を及ぼすフルディフュージョン性を有する関数である請求項1に記載の暗号処理装置。
  5. 前記変換関数Gは、
    前記秘密鍵Kのステートの各列要素単位でアダマールMDS(Hadamard MDS)行列を適用して線形変換を行う列拡散演算と、
    前記秘密鍵Kのステートの各行要素単位でアダマールMDS(Hadamard MDS)行列を適用して線形変換を行う行拡散演算を実行して前記変換鍵Kdを生成する請求項4に記載の暗号処理装置。
  6. 前記鍵スケジュール部は、
    前記秘密鍵Kは、分割鍵K1、K2の連結データであり、
    前記鍵変換部は、前記分割鍵K1、K2の各々に対する前記変換関数Gを適用した変換処理により変換鍵Kd1、Kd2を生成し、
    前記分割鍵K1、K2、および前記変換鍵Kd1、Kd2を前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする請求項1に記載の暗号処理装置。
  7. 前記鍵スケジュール部は、
    (a)前記分割鍵K1、K2、
    (b)前記変換鍵Kd1、Kd2、
    (c)前記分割鍵K1と前記分割鍵K2との排他的論理和演算によって生成した鍵、
    (d)前記変換鍵Kd1と前記変換鍵Kd2との排他的論理和演算によって生成した鍵、
    上記(a)〜(d)の6種類の鍵を前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする請求項6に記載の暗号処理装置。
  8. 前記暗号処理部は、
    平文Pを入力データとして前記ラウンド演算を繰り返して出力データとしての暗号文Cを出力し、
    前記暗号文Cを入力データとして、前記ラウンド演算の実行シーケンスを逆順に設定したデータ変換処理により出力データとして前記平文Pを生成可能なインボリューション性を有する構成である請求項1に記載の暗号処理装置。
  9. 前記鍵スケジュール部は、
    平文Pから暗号文Cを生成する場合の鍵供給シーケンスと、
    暗号文Cから平文Pを生成する場合の鍵供給シーケンスが一致するインボリューション性を有する鍵供給処理を行なう構成である請求項1に記載の暗号処理装置。
  10. 前記鍵スケジュール部は、
    前記暗号処理部に対する鍵供給処理に際して、供給鍵の一部に定数による演算を施し、演算結果である鍵データを前記暗号処理部に出力する請求項1に記載の暗号処理装置。
  11. 前記暗号処理部が実行するラウンド演算は、線形変換部による線形変換処理を含む演算であり、
    前記線形変換部は、ラウンド遷移に応じて線形変換態様を変更する請求項1に記載の暗号処理装置。
  12. 前記ラウンド演算は非線形変換処理を含み、
    前記非線形変換処理を実行するSボックスは、入力値から得られる出力値を、再入力することで前記入力値が得られるインボリューション性を有する構成である請求項1に記載の暗号処理装置。
  13. 入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
    前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
    前記鍵スケジュール部は、
    秘密鍵Kを格納した鍵レジスタと、
    前記秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成する鍵変換部を有し、
    前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする構成であり、
    前記秘密鍵K、および前記変換鍵Kdは、いずれも各要素が1ビット以上のm×n個の要素からなるステートであり、
    前記変換関数Gは、前記秘密鍵Kのステート要素の全てが、前記変換鍵Kdのステート要素全てに影響を及ぼすフルディフュージョン性を有する関数である暗号処理装置。
  14. 前記変換関数Gは、
    フルディフュージョン変換関数とビット置換関数の組み合わせである請求項13に記載の暗号処理装置。
  15. 前記秘密鍵K、および前記変換鍵Kdは、いずれも各要素が4ビットの4×4個の要素からなるステートであり、
    前記変換関数Gは、
    フルディフュージョン4ビット変換関数と16ビット置換関数の組み合わせである請求項13に記載の暗号処理装置。
  16. 前記鍵スケジュール部は、
    前記秘密鍵Kは、分割鍵K1、K2の連結データであり、
    前記鍵変換部は、前記分割鍵K1に対する変換関数G1を適用した変換処理により変換鍵Kd1を生成し、前記分割鍵K2に対する変換関数G2を適用した変換処理により変換鍵Kd2を生成する構成であり、
    前記変換関数G1,G2は、
    (a)G1,G2ともフルディフュージョン性を有するがインボリューション性を有さない変換関数、
    (b)G1,G2ともフルディフュージョン性と、インボリューション性を有する変換関数、
    (c)G1,G2ともフルディフュージョン性を有し、G1とG2が逆関数の設定、すなわち、G2=G1−1の関係にある変換関数、
    上記(a)〜(c)のいずれかの組み合わせである請求項13に記載の暗号処理装置。
  17. 暗号処理装置において実行する暗号処理方法であり、
    前記暗号処理装置は、
    入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
    前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
    前記鍵スケジュール部は、
    鍵レジスタに格納した秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成し、
    前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする処理を行ない、
    前記変換関数Gは、逆関数G−1が関数Gと同じ関数となるインボリューション性を有する関数である暗号処理方法。
  18. 暗号処理装置において実行する暗号処理方法であり、
    前記暗号処理装置は、
    入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
    前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
    前記鍵スケジュール部は、
    鍵レジスタに格納した秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成し、
    前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする処理を行ない、
    前記秘密鍵K、および前記変換鍵Kdは、いずれも各要素が1ビット以上のm×n個の要素からなるステートであり、
    前記変換関数Gは、前記秘密鍵Kのステート要素の全てが、前記変換鍵Kdのステート要素全てに影響を及ぼすフルディフュージョン性を有する関数である暗号処理方法。
  19. 暗号処理装置において暗号処理を実行させるプログラムであり、
    前記暗号処理装置は、
    入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
    前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
    前記プログラムは、前記鍵スケジュール部に、
    鍵レジスタに格納した秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成する処理と、
    前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする処理を実行させ、
    前記変換関数Gは、逆関数G−1が関数Gと同じ関数となるインボリューション性を有する関数であるプログラム。
  20. 暗号処理装置において暗号処理を実行させるプログラムであり、
    前記暗号処理装置は、
    入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
    前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
    前記プログラムは、前記鍵スケジュール部に、
    鍵レジスタに格納した秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成する処理と、
    前記秘密鍵K、および前記変換鍵Kdを前記暗号処理部に出力するラウンド鍵、またはラウンド鍵生成用データとする処理を実行させ、
    前記秘密鍵K、および前記変換鍵Kdは、いずれも各要素が1ビット以上のm×n個の要素からなるステートであり、
    前記変換関数Gは、前記秘密鍵Kのステート要素の全てが、前記変換鍵Kdのステート要素全てに影響を及ぼすフルディフュージョン性を有する関数であるプログラム。
JP2014068291A 2014-03-28 2014-03-28 暗号処理装置、および暗号処理方法、並びにプログラム Pending JP2015191107A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014068291A JP2015191107A (ja) 2014-03-28 2014-03-28 暗号処理装置、および暗号処理方法、並びにプログラム
PCT/JP2015/055280 WO2015146430A1 (ja) 2014-03-28 2015-02-24 暗号処理装置、および暗号処理方法、並びにプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014068291A JP2015191107A (ja) 2014-03-28 2014-03-28 暗号処理装置、および暗号処理方法、並びにプログラム

Publications (1)

Publication Number Publication Date
JP2015191107A true JP2015191107A (ja) 2015-11-02

Family

ID=54194964

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014068291A Pending JP2015191107A (ja) 2014-03-28 2014-03-28 暗号処理装置、および暗号処理方法、並びにプログラム

Country Status (2)

Country Link
JP (1) JP2015191107A (ja)
WO (1) WO2015146430A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109375019A (zh) * 2018-11-06 2019-02-22 格力电器(武汉)有限公司 电器设备的检测方法、装置和系统
JP2020134730A (ja) * 2019-02-20 2020-08-31 Necソリューションイノベータ株式会社 ブロック暗号装置、ブロック暗号方法およびプログラム

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019003321A1 (ja) * 2017-06-27 2019-01-03 三菱電機株式会社 符号生成装置、符号生成方法および符号生成プログラム
EP3651142A4 (en) * 2017-08-10 2021-03-24 Sony Corporation ENCRYPTION DEVICE, ENCRYPTION METHOD, DECCRYPTION DEVICE, AND DECryption METHOD
WO2020186125A1 (en) 2019-03-13 2020-09-17 The Research Foundation For The State University Of New York Ultra low power core for lightweight encryption

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000066586A (ja) * 1998-08-24 2000-03-03 Toshiba Corp データ処理装置及び通信システム並びに記録媒体
JP3505482B2 (ja) * 2000-07-12 2004-03-08 株式会社東芝 暗号化装置、復号装置及び拡大鍵生成装置、拡大鍵生成方法並びに記録媒体
JP4622222B2 (ja) * 2003-09-30 2011-02-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4961909B2 (ja) * 2006-09-01 2012-06-27 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US20110110519A1 (en) * 2008-01-09 2011-05-12 Tomoyasu Suzaki Data transmission device, data reception device, methods thereof, recording medium, and data communication system therefor
JP5198526B2 (ja) * 2010-09-21 2013-05-15 株式会社東芝 暗号化装置および復号装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109375019A (zh) * 2018-11-06 2019-02-22 格力电器(武汉)有限公司 电器设备的检测方法、装置和系统
JP2020134730A (ja) * 2019-02-20 2020-08-31 Necソリューションイノベータ株式会社 ブロック暗号装置、ブロック暗号方法およびプログラム
JP7244060B2 (ja) 2019-02-20 2023-03-22 Necソリューションイノベータ株式会社 ブロック暗号装置、ブロック暗号方法およびプログラム

Also Published As

Publication number Publication date
WO2015146430A1 (ja) 2015-10-01

Similar Documents

Publication Publication Date Title
JP6406350B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
CN106233660B (zh) 加密处理设备、加密处理方法和程序
US9363074B2 (en) Encryption processing apparatus, encryption processing method, and computer program
JP4127472B2 (ja) データ変換装置及びデータ変換装置のデータ変換方法及びプログラム及びコンピュータ読み取り可能な記録媒体
JP2007041620A5 (ja)
US9083507B2 (en) Data processing device, data processing method, and program
US20120314857A1 (en) Block encryption device, block decryption device, block encryption method, block decryption method and program
WO2015146430A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
WO2016059870A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
US20050147244A1 (en) Method for cryptographic transformation of binary data blocks
JP2012143011A (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
WO2015146432A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP2002510058A (ja) 2進データ・ブロックの暗号変換のための方法
RU2188513C2 (ru) Способ криптографического преобразования l-битовых входных блоков цифровых данных в l-битовые выходные блоки
KR101971001B1 (ko) 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치
JP6292107B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
RU2140716C1 (ru) Способ криптографического преобразования блоков цифровых данных
Hassan New Approach for Modifying DES Algorithm Using 4-States Multi-keys