JP6406350B2 - 暗号処理装置、および暗号処理方法、並びにプログラム - Google Patents
暗号処理装置、および暗号処理方法、並びにプログラム Download PDFInfo
- Publication number
- JP6406350B2 JP6406350B2 JP2016510146A JP2016510146A JP6406350B2 JP 6406350 B2 JP6406350 B2 JP 6406350B2 JP 2016510146 A JP2016510146 A JP 2016510146A JP 2016510146 A JP2016510146 A JP 2016510146A JP 6406350 B2 JP6406350 B2 JP 6406350B2
- Authority
- JP
- Japan
- Prior art keywords
- key
- conversion
- unit
- round
- data
- 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.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 652
- 238000003672 processing method Methods 0.000 title claims description 15
- 238000006243 chemical reaction Methods 0.000 claims description 727
- 238000000034 method Methods 0.000 claims description 239
- 239000011159 matrix material Substances 0.000 claims description 232
- 230000008569 process Effects 0.000 claims description 230
- 238000009792 diffusion process Methods 0.000 claims description 222
- 230000009466 transformation Effects 0.000 claims description 179
- 238000004364 calculation method Methods 0.000 claims description 102
- 230000007704 transition Effects 0.000 claims description 8
- 230000006870 function Effects 0.000 description 408
- 230000014509 gene expression Effects 0.000 description 41
- 230000007480 spreading Effects 0.000 description 26
- 230000000694 effects Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 21
- 238000004891 communication Methods 0.000 description 17
- 238000006467 substitution reaction Methods 0.000 description 11
- 239000001194 polyoxyethylene (40) stearate Substances 0.000 description 10
- 239000013585 weight reducing agent Substances 0.000 description 10
- 230000006872 improvement Effects 0.000 description 8
- 230000007423 decrease Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 239000001912 oat gum Substances 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000012854 evaluation process Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000001965 increasing effect Effects 0.000 description 4
- 230000010365 information processing Effects 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 3
- 238000013478 data encryption standard Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000665 guar gum Substances 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000000256 polyoxyethylene sorbitan monolaurate Substances 0.000 description 1
- 239000001205 polyphosphate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000002087 whitening effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0625—Block 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0822—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key 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)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
Description
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記暗号処理部は、
データ変換関数Eと、前記データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有し、
前記関数E、または、前記逆関数E−1のいずれか一方において1回以上の定数を適用したラウンド演算を実行する暗号処理装置にある。
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記暗号処理部は、
データ変換関数Eと、前記データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有し、
前記関数E、および前記逆関数E−1の双方において1回以上の定数を適用したラウンド演算を実行する構成を有し、前記関数E、および前記逆関数E−1の非対応位置に定数適用位置が設定されている暗号処理装置にある。
暗号処理装置において実行する暗号処理方法であり、
前記暗号処理装置は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記暗号処理部は、
データ変換関数Eと、前記データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有し、
前記関数E、または、前記逆関数E−1のいずれか一方において、1回以上の定数を適用したラウンド演算を実行する暗号処理方法にある。
暗号処理装置において実行する暗号処理方法であり、
前記暗号処理装置は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記暗号処理部は、
データ変換関数Eと、前記データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有し、前記関数E、および前記逆関数E−1の非対応位置に定数適用位置が設定された構成であり、
前記関数E、および前記逆関数E−1の双方において1回以上の定数を適用したラウンド演算を実行する暗号処理方法にある。
暗号処理装置において暗号処理を実行させるプログラムであり、
前記暗号処理装置は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記暗号処理部は、
データ変換関数Eと、前記データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有し、
前記プログラムは、前記暗号処理部に、前記関数E、または、前記逆関数E−1のいずれか一方において、1回以上の定数を適用したラウンド演算を実行させるプログラムにある。
暗号処理装置において暗号処理を実行させるプログラムであり、
前記暗号処理装置は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記暗号処理部は、
データ変換関数Eと、前記データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有し、前記関数E、および前記逆関数E−1の非対応位置に定数適用位置が設定された構成であり、
前記プログラムは、前記暗号処理部に前記関数E、および前記逆関数E−1の双方において1回以上の定数を適用したラウンド演算を実行させるプログラムにある。
具体的には、入力データに対するラウンド演算を繰り返して出力データを生成する暗号処理部と、暗号処理部におけるラウンド演算において適用するラウンド鍵を暗号処理部に出力する鍵スケジュール部を有し、暗号処理部は、データ変換関数Eと、前記データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有し、関数E、または逆関数E−1のいずれか一方のみにおいて、1回以上の定数を適用したラウンド演算を実行する。定数は、定数を入力する排他的論理和部の隣接位置の線形変換処理部において適用する線形変換行列との行列演算結果であるステートの構成要素が全て非ゼロとなる条件を満たすステートとして構成される。
本構成により各種の攻撃に対する耐性を向上させた安全性の高い暗号処理構成が実現される。
なお、本明細書に記載された効果はあくまで例示であって限定されるものではなく、また付加的な効果があってもよい。
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.共通鍵ブロック暗号)
ここでは共通鍵ブロック暗号(以下ではブロック暗号と呼ぶ場合がある)は以下に定義するものを指すものとする。
ブロック暗号は入力として平文Pと鍵Kを取り、暗号文Cを出力する。平文と暗号文のビット長をブロックサイズと呼び、例えばブロックサイズ=nとする。nは任意の整数値を取りうるが、通常、ブロック暗号アルゴリズムごとに、あらかじめひとつに決められている値である。ブロック長がnのブロック暗号のことをnビットブロック暗号と呼ぶこともある。
平文P:nビット
暗号文C:nビット
鍵K:kビット
暗号化アルゴリズムEに対応する復号アルゴリズムDは暗号化アルゴリズムEの逆関数E−1と定義でき、入力として暗号文Cと鍵Kを受け取り,平文Pを出力する。図2に図1に示した暗号アルゴリズムEに対応する復号アルゴリズムDの図を示す。
ブロック暗号は2つの部分に分けて考えることができる。ひとつは秘密鍵Kを入力とし、ある定められたステップにより暗号処理部の各ラウンドで適用するラウンド鍵を出力する「鍵スケジュール部」と、もうひとつは平文Pと鍵スケジュール部からラウンド鍵を入力してデータ変換を行い暗号文Cを出力する「暗号処理部」である。
2つの部分の関係は図3に示される。
なお、暗号処理部は、暗号文Cを入力して平文Pを出力する復号処理も実行可能な構成である場合が多い。この場合も、鍵スケジュール部から供給されるラウンド鍵を適用した復号処理を実行する。
2つの部分の関係は図3に示される。
以下の実施例において用いる暗号処理部はラウンド関数という処理単位に分割できるものとする。ラウンド関数は入力データに対して所定のデータ変換を施し、変換データを出力する。ラウンド関数に対する入力データは、例えば暗号化途中のnビットデータである。あるラウンドにおけるラウンド関数の出力が次のラウンドの入力として供給される構成となる。また、ラウンド関数の一構成として、鍵スケジュール部から出力された鍵に基づいて生成されるラウンド鍵との演算構成が含まれる。具体的には暗号化途中のnビットデータとラウンド鍵との排他的論理和演算が行われる。
またラウンド関数の総数は総ラウンド数と呼ばれ、暗号アルゴリズムごとにあらかじめ定められている値である。
ブロック暗号アルゴリズムによってラウンド関数はさまざまな形態をとりうる。ラウンド関数はその暗号アルゴリズムが採用する構造(structure)によって分類できる。代表的な構造としてここではSPN(Substitution−Permutation Network)構造、Feistel構造、拡張Feistel構造を例示する。
nビットの入力データすべてに対して、ラウンド鍵との排他的論理和演算、非線形変換、線形変換処理などが適用される構成。各演算の順番は特に決まっていない。図5にSPN構造のラウンド関数の例を示す。線形変換部をP層(Permutation−layer)と呼ぶこともある。
nビットの入力データはn/2ビットの2つのデータに分割される。うち片方のデータとラウンド鍵を入力として持つ関数(F関数)が適用され、出力がもう片方のデータに排他的論理和される。そののちデータの左右を入れ替えたものを出力データとする。F関数の内部構成にもさまざまなタイプのものがあるが、基本的にはSPN構造同様にラウンド鍵データとの排他的論理和演算、非線形演算、線形変換の組み合わせで実現される。図6にFeistel構造のラウンド関数の一例を示す。
拡張Feistel構造はFeistel構造ではデータ分割数が2であったものを,3以上に分割する形に拡張したものである。分割数をdとすると、dによってさまざまな拡張Feistel構造を定義することができる。F関数の入出力のサイズが相対的に小さくなるため、小型実装に向いているとされる。図7にd=4でかつ、ひとつのラウンド内に2つのF関数が並列に適用される場合の拡張Feistel構造の一例を示す。また,図8にd=8でかつ,ひとつのラウンド内に1つのF関数が適用される場合の拡張Feistel構造の一例を示す。
非線形変換部は、入力されるデータのサイズが大きくなると実装上のコストが高くなる傾向がある。それを回避するために対象データを複数の単位に分割し、それぞれに対して非線形変換を施す構成がとられることが多い。例えば入力サイズをmsビットとして、それらをsビットずつのm個のデータに分割して、それぞれに対してsビット入出力を持つ非線形変換を行う構成である。それらのsビット単位の非線形変換実行部をSボックス(S−box)と呼ぶ。Sボックス(S−box)の例を図9に示す。
線形変換部はその性質上、行列として定義することが可能である。行列の要素は拡大体GF(28)の体の要素やGF(2)の要素など、一般的にはさまざまな表現ができる。図10にmsビット入出力をもち、GF(2s)の上で定義されるm×mの行列により定義される線形変換部の例を示す。
各データ(平文、暗号文、鍵など)を表現する際に、データをm行(row)、n列(column)のマトリックス型としたm×n配列データとして表現することがある。このm×n配列によって表現されたデータをステート(state)、あるいはステート表現データと呼ぶ。
入力データAは、拡大体GF(2s)mnの要素であり、
入力データA=(a0a1a2・・・amn−2amn−1)である。
なお、a0はMSB、amn−1はLSB側のビットデータである。
同様に、出力データBも、拡大体GF(2s)mnの要素であり、
出力データB=(b0b1b2・・・bmn−2bmn−1)である。
なお、b0はMSB、bmn−1はLSB側のビットデータである。
例えば図11に示すステートAにはa0〜anm−1のmn個の要素が含まれる。ステートBの要素は、b0〜bnm−1のmn個の要素である。
これらのmn個の要素の各々は、それぞれs(s=1以上)ビットデータからなる。具体的には、各要素は、例えば各々4ビットデータ、8ビット(1バイト)データ等のビットデータである。
なお、以下の実施例では、各要素を4ビットデータとした実施例について説明するが、本開示の処理は、4ビット要素データ以外の構成に対しても適用可能である。
図12に示す例も図11と同様、入力データをA、何らかのデータ変換後の出力データをBとしている。
入力データAは、拡大体GF(24)4×4の要素であり、
入力データA=(a0a1a2・・・a14a15)である。
なお、a0はMSB、a15はLSB側のビットデータである。
同様に、出力データBも、拡大体GF(24)4×4の要素であり、
出力データB=(b0b1b2・・・b14b15)である。
なお、b0はMSB、b15はLSB側のビットデータである。
例えば図12に示すステートAにはa0〜a15の16個の要素が含まれ、これらの各要素は各々が4ビットデータである。
すなわち、64ビットの入力データAをステートとして示すと、図12に示す各要素が4ビットデータからなる4×4配列を持つステートAとして表現できる。
すなわち、64ビットの出力データBをステートとして示すと、図12に示す各要素が4ビットデータからなる4×4配列を持つステートBとして表現できる。
次に、ステート(ステート表現データ)に対する演算処理について説明する。
(1)非線形変換処理(S)
例えば、ステートの各要素4ビット単位で非線形変換を行う複数のSボックスを適用して非線形変換処理を実行する。
図13(1)に示すように、入力ステートAに対する非線形変換処理によって、ステートBが生成されるとする。
この場合の各要素4ビット単位の出力biと入力aiの関係は、
bi=S(ai)
i=0,1,・・・,15、
である。
図13(2)に示すように、入力ステートAに対する線形変換処理によって、ステートBが生成されるとする。
4×4ステートに対する線形変換処理は、例えば4×4ステートの行ごとの4つのデータをベクトルとみなし4×4の行列[M]による演算を施して値を更新する演算として実行する。これを行拡散演算と呼ぶ。
変換処理後のステート各要素4ビット単位の出力biと入力aiの関係は、
t(bi,bi+4,bi+8,bi+12)=M×t(ai,ai+4,ai+8,ai+12)
i=0,1,2,3、
である。なお、tXは、Xの転置行列を示している。線形変換処理としては、このような行拡散演算の他、列拡散演算や、ビット置換など、様々な処理方法がある。
(3)排他的論理和演算(鍵適用演算処理(K))
図14に示すように、入力ステートAに対する排他的論理和演算処理によって、ステートBが生成されるとする。
例えば鍵スケジュール部から出力されたラウンド鍵Kと入力データAとの排他的論理和演算により、出力データBを算出する演算である。入力データA、ラウンド鍵K、出力データBのいずれも、16個の4ビット要素からなるステート表現された64ビットデータである。
変換処理後のステート各要素4ビット単位の出力biと入力ai、ラウンド鍵kiとの関係は、
bi=ai(XOR)ki
i=0,1,・・・,15、
である。なお、上記式において(XOR)は排他的論理和演算を示している。
なお、基本的なラウンド演算は、ラウンド鍵との排他的論理和演算と、線形変換処理と、非線形変換処理を各々1回ずつ実行するものとして設定される。ただし、暗号処理シーケンスにおいて実行されるラウンド演算の中には、変則的なラウンド演算構成も設定可能である。例えばラウンド鍵との排他的論理和演算を複数回含むラウンド演算や、線形変化処理を省略した構成など、他のラウンド演算とは異なるラウンド演算を設定することも可能である。
また、暗号処理シーケンスの最初や最後にラウンド鍵との演算のみを実行する構成も多く利用されている。この処理は鍵ホワイトニング処理と呼ばれ、一般的にはラウンド数としてはカウントしない。
次にm×nのマトリクス配列として示されたステート表現データに対する列拡散演算処理について、図15、図16を参照して説明する。
図15に示すように、
MC[X0,X1,・・・,Xn−1]
上記演算を、ステート表現データの要素に対して、ステートの各列(0〜n−1)の要素と、各列対応の行列X0,X1,・・・,Xn−1を適用した行列演算を列拡散演算と定義する。
なお、MCは、列(Column)単位の拡散(Mix)、すなわち(MixColumn)を意味する。
なお、ステートを構成する複数の列各々に対して適用する行列Xkは、同じ行列とする設定と、異なる行列とする設定とのいずれの設定も可能である。
B=MC[X0,X1,・・・,Xn−1](A)
この列拡散演算処理は、図15の下段に示すように、以下の式によって示される処理である。
すなわち、上記演算式によって算出されるステートBの要素は、以下の通りである。
t(b0b1・・・bm−1)=X0×t(a0a1・・・am−1)、
t(bmbm+1・・・b2m−1)=X1×t(amam+1・・・a2m−1)、
・・・
t(b(n−1)mb(n−1)m+1・・・bnm−1)=Xn−1×t(a(n−1)ma(n−1)m+1・・・anm−1)、
なお、上記式においてt(b1b2・・・bk)は、(b1b2・・・bk)の転置行列を示す。
実際のステートA,Bの要素配列に従って上記演算式を示すと、図15の下段に示すように以下の演算式となる。
入力データAを64ビットデータとしてステートAを16個の4ビットデータ要素からなるステートAとし、
出力データBも64ビットデータとして、ステートBを16個の4ビットデータ要素からなるステートBとした場合の、
列拡散演算:MC[X0,X1,X2,X3]
の適用処理例を示した図である。
B=MC[X0,X1,X2,X3](A)
上記列拡散演算処理によりステートBの各要素の算出処理例を示している。
t(b0b1b2b3)=X0×t(a0a1a2a3)、
t(b4b5b6b7)=X1×t(a4a5a6a7)、
t(b8b9b10b11)=X2×t(a8a9a10a11)、
t(b12b13b14b15)=X3×t(a12a13a14a15)、
実際のステートA,Bの要素配列に従って上記演算式を示すと、図16の下段に示すように、以下の演算式となる。
MC[X]
と表現することもある。
つまり、MC[X]とMC[X,X,・・・,X]は同じ演算である。
次にm×nのマトリクス配列として示されたステート表現データに対する行拡散演算処理について、図17、図18を参照して説明する。
図17に示すように、
MR[X0,X1,・・・,Xm−1]
上記演算を、ステート表現データの要素に対して、ステートの各行(0〜n−1)の要素と、各行対応の行列X0,X1,・・・,Xm−1を適用した行列演算を行拡散演算と定義する。
なお、MRは、行(Row)単位の拡散(Mix)、すなわち(MixRow)を意味する。
なお、ステートを構成する複数の行各々に対して適用する行列Xkは、同じ行列とする設定と、異なる行列とする設定とのいずれの設定も可能である。
B=MR[X0,X1,・・・,Xm−1](A)
この行拡散演算処理は、図17の下段に示す処理である。
t(b0bm・・・b(n−1)m)=X0×t(a0am・・・a(n−1)m)、
t(b1bm+1・・・b(n−1)m+1)=X1×t(a1am+1・・・a(n−1)m+1)、
・・・
t(bm−1b2m−1・・・bnm−1)=Xm−1×t(am−1a2m−1・・・anm−1)、
なお、上記式においてt(b1b2・・・bk)は、(b1b2・・・bk)の転置行列であることを示す。
実際のステートA,Bの要素配列に従って上記演算式を示すと、図17の下段に示すように、以下の演算式となる。
入力データAを64ビットデータとしてステートAを16個の4ビットデータ要素からなるステートAとし、
出力データBも64ビットデータとして、ステートBを16個の4ビットデータ要素からなるステートBとした場合の、
行拡散演算:MR[X0,X1,X2,X3]
の適用処理例を示した図である。
B=MR[X0,X1,X2,X3](A)
上記行拡散演算処理によりステートBの各要素の算出処理例を示している。
t(b0b4b8b12)=X0×t(a0a4a8a12)、
t(b1b5b9b13)=X1×t(a1a5a9a13)、
t(b2b6b10b14)=X2×t(a2a6a10a14)、
t(b3b7b11b15)=X3×t(a3a7a11a15)、
実際のステートA,Bの要素配列に従って上記演算式を示すと、図18の下段に示すように、以下の演算式となる。
MR[X]
と表現することもある。
つまり、MR[X]とMR[X,X,・・・,X]は同じ演算である。
平文Pから暗号文Cを生成する共通鍵ブロック暗号において、各ラウンドに適用するラウンド鍵をK1,K2,・・・,KRとしたとき、
平文Pから、暗号文Cを算出する暗号化関数Eは、以下のように示すことができる。
C=E(P,K1,K2,・・・,KR)
P=D(C,k1,k2,・・・kr)
となるが、
上記の復号関数Dが、以下を満たすとき、
D(C,k1,k2,・・・kr)=E(C,KR,・・・,K2,K1)
すなわち、復号関数Dが、暗号化関数Eにおけるラウンド鍵の適用順を逆順にするのみで、他は、同一関数を利用できる構成である場合、
この共通鍵ブロック暗号はインボリューション性を持つという。
インボリューション性を持つ共通鍵ブロック暗号は、基本的には暗号化関数を実装するのみで、暗号化機能と復号機能を実現できるため、必要な回路が少なく、軽量化(小型化)が可能であり、実装効率が高くなる。
共通鍵ブロック暗号に対する攻撃、例えば秘密鍵の解読等を目的とした様々な攻撃が知られている。具体的には、差分攻撃、線形攻撃などがある。
差分攻撃は、暗号装置に対して特定の差分を持つデータを入力し、出力から入力差分を反映するデータを検出して鍵の推定を行なおうとする攻撃である。なお、差分値の伝播確率を差分確率と呼ぶ。
線形攻撃は、入力の特定ビットの排他的論理和と出力の特定ビットの排他的論理和の間の相関を観測して、強い相関関係が見つけることで、鍵の推定を行なおうとする攻撃である。なお、入出力の特定ビットの相関係数を線形確率と呼ぶ。
以下、暗号アルゴリズムの安全性指標となる複数のデータについて説明する。
共通鍵ブロック暗号においては、例えば、上述した線形変換、非線形変換、あるいは排他的論理和演算など、様々なデータ変換が実行される。
このようなデータ変換の解読困難性に関する安全性指標として分岐数がある。
例えば、n×aビットデータからn×bビットデータへの写像θを、
θ:{0,1}na→{0,1}nb
とする。
上記の写像θに対して分岐数(Branchn(θ))を次のように定義する。
ただし、
minα≠0{Xα}は,α≠0を満たすすべてのXαのうちの最小値を表し、
hwn(Y)はビット列Yをnビット毎に区切って表したときに、nビットのデータ全てが0ではない(非ゼロ)要素の数を返す関数とする。
一般的に、分岐数が高いほど解読困難性が高くなり、差分攻撃や線形攻撃に対する耐性が向上すると言われる。
分岐数の高い線形変換用の行列として、例えば、最適拡散変換を実行するMDS(Maximum Distance Separable)行列がある。MDS行列は、行列を構成する任意の小行列が正則行列となる行列である。なお、正則行列は、逆行列を持つ行列であり、行列をAとし、逆行列をA−1とすると、
AA−1=A−1A=E、
ただしEは単位行列、
上記式が成立する逆行列A−1を持つ行列Aが正則行列である。
前述したように共通鍵ブロック暗号に設定される非線形変換部には、sビット単位の非線形変換を実行するSボックス(S−box)が用いられる。
差分攻撃に対する耐性を図る指標として,差分の接続関係を表現した差分パスに含まれる差分アクティブS−boxの最小数、すなわち、最小差分アクティブS−box数がある。
線形攻撃に対する耐性を示す指標の一つとして、線形マスクの接続関係を表現した線形パスに含まれる線形アクティブSボックス(S−box)の最小数が挙げられる。
なお、線形パスは、線形近似と呼ばれることも多いが、差分と対応させるためここではパスという言葉を用いる。
線形パスとは、暗号化関数中の鍵データを除くすべてのデータ部分に対して特定の線形マスク値を指定したものである。線形マスク値は自由に決められるものではなく変換処理の前後の線形マスク値は互いに関連しあっている。線形変換処理の前後では、入力線形マスク値と出力線形マスク値の関係は一対一に決定される。非線形変換の前後では、入力線形マスク値と出力線形マスク値の関係は一対一には決まらないが、確率という概念が導入される。入力線形マスク値に対して、出力されうる一つ以上の線形マスク値の集合が存在し、それぞれが出力される確率を事前に計算することができる。すべての出力に対する確率をすべて足し合わせると1となっている。
次に、安全性を高めた本開示の共通鍵暗号処理装置の構成と処理について説明する。
以下に説明する本開示の暗号処理装置は、共通鍵ブロック暗号(ブロック暗号)を実行する装置であり、SPN(Substitution−Permutation Network)構造ラウンド関数を有する装置である。
本開示の共通鍵暗号処理装置の1つの具体的構成例を、図19に示す。
図19に示すように、暗号処理装置100は、鍵スケジュール部110と、暗号処理部120を有する。
なお、暗号処理部120は、暗号文Cを入力して平文Pを出力する復号処理も実行可能である。復号処理を実行する際は、鍵スケジュール部110から供給されるラウンド鍵を暗号化処理とは逆順に適用した処理を実行する。
入力データと、ラウンド鍵との排他的論理和演算を実行する排他的論理和部121、
入力データに対して非線形変換処理を実行する非線形変換部122、
入力データに対して線形変換処理を実行する線形変換部123、
を有する。
なお、鍵スケジュール部110から入力するラウンド鍵も、16個の4ビットデータ要素からなるステート表現された64ビットデータである。
(a)排他的論理和演算処理
(b)非線形変換処理
(c)線形変換処理
これらの各処理をステートに対する処理として実行する。ステートに対するこれらの処理については、図13、図14を参照して説明した通りである。
各Sボックスは例えば、4ビット入出力構成を持つ非線形変換部であり、16個のSボックスによる並列処理によって4×16=64ビットの非線形変換処理を実行する。
また、暗号処理部120の線形変換部において実行する線形変換処理は、例えば図22(2)に示すように、行列演算処理として実行する。
図19を参照して説明したように、本開示の暗号処理装置100の暗号処理部120は、ラウンド鍵との排他的論理和演算、非線形変換、線形変換処理を複数ラウンド繰り返し実行する構成を持つ。
以下、本開示の暗号処理装置の実行する線形変換処理の詳細について説明する。
なお、図23の構成図は、排他的論理和部は省略して示した構成図である。
線形変換部P1,201、
線形変換部P2,202、
線形変換部P3,203、
これらの3つの異なる線形変換部を有し、これら3種類の異なる線形変換処理のいずれかを各ラウンドにおいて実行する構成とし、連続ラウンドでは同じ線形変更処理を続けることなく、異なる線形変換処理を行なう設定としたことにある。
平文Pの入力側から順に、
線形変換部P1,
線形変換部P2,
線形変換部P1,
線形変換部P3,
線形変換部P1,
上記シーケンスで、5回の線形変換処理を行なう。
この5回の線形変換処理において、連続ラウンドでは同じ線形変更処理を続けることなく、ラウンド切り替えに応じて、異なる線形変換処理を実行する。
上記の例では、3種類の異なる線形変換P1,P2,P3を組み合わせて実行することで、連続するラウンドにおいては同じ線形変換を実行しない設定としている。
線形変換処理P1〜P3には、図24(1)に示す4つの異なる行列M0〜M3を組み合わせて利用する。すなわち、以下に示す4×4の行列(Matrix)M0〜M3を組み合わせて構成する。
なお、上記の4つの行列は、前述したMDS(Maximum Distance Separable)行列ではないnon−MDS行列である。
以下に説明する実施例では、non−MDS行列を利用した線形変換処理例について説明するが、MDS行列を適用した構成としてもよい。
図24(2)に示す4×4の矩形は、線形変換処理対象となる各要素4ビットの16個の要素からなるステートを示している。すなわち64ビットの4×4ステートである。
この4×4ステートの入力データに対して、行列M0〜M3を組み合わせて利用した行列演算を実行する。
4×4ステートの入力データの各列の要素に対して、各列単位で、1つの行列M0を適用した行列演算を行う。
これは、先に、図15、図16を参照して説明した列拡散演算(MixColum)である。
MC[M0]
上記式によって示される列拡散演算(MC)である。
なお、MC[M0]は、ステートの各列に対して、同一の行列M0を適用した行列演算を示す式であり、ステートの各列に対して適用する行列を個別に示した式、
MC[M0,M0,M0,M0]
上記式と同じ意味である。
線形変換処理P2は、図24(2)に示すように、4×4ステートの入力データの各行の要素に対して、各行単位で異なる行列を適用した行列演算を行う。上位の第1行から第4行に対して、以下の行列を適用した行列演算を実行する。
第1行:適用行列M0、
第2行:適用行列M1、
第3行:適用行列M2、
第4行:適用行列M3、
これは、先に、図17、図18を参照して説明した行拡散演算(MixRow)である。
MR[M0,M1,M2,M3]
上記式によって示される行拡散演算(MixRow)である。
線形変換処理P3も、線形変換処理P2と同様、図24(2)に示すように、4×4ステートの入力データの各行の要素に対して、各行単位で異なる行列を適用した行列演算を行う。線形変換処理P3は、線形変換処理P2とは異なり、上位の第1行から第4行に対して、以下の行列を適用した行列演算を実行する。
第1行:適用行列M2、
第2行:適用行列M0、
第3行:適用行列M1、
第4行:適用行列M3、
これは、先に、図17、図18を参照して説明した行拡散演算(MixRow)である。
MR[M2,M0,M1,M3]
上記式によって示される行拡散演算(MixRow)である。
線形変換処理P2を行拡散演算タイプ1(MixRow1)、
線形変換処理P3を行拡散演算タイプ2(MixRow2)、
と呼ぶ。
線形変換処理P1は、列拡散演算(MixColumn)である。
図25(1)には。線形変換部P1に対する入出力データの例を示している。
入力Aはnビットデータの16個の要素a0〜a15からなるステートである。
出力Bもnビットデータの16個の要素b0〜b15からなるステートである。
なお、入出力データの各要素ai,bi(ただしi=0〜15)は、0,1のいずれかの値から構成されるnビットデータである。
なお、本実施例では、n=4であり、各要素は4ビットデータあり、入力A、出力Bとも64ビットである。
線形変換処理P1として行われる列拡散演算(MixColumn)は、以下の式に従った行列演算である。
b0=a1(+)a2(+)a3,
b1=a0(+)a2(+)a3,
b2=a0(+)a1(+)a3,
b3=a0(+)a1(+)a2,
b4=a5(+)a6(+)a7,
b5=a4(+)a6(+)a7,
b6=a4(+)a5(+)a7,
b7=a4(+)a5(+)a6,
b8=a9(+)a10(+)a11,
b9=a8(+)a10(+)a11,
b10=a8(+)a9(+)a11,
b11=a8(+)a9(+)a10,
b12=a13(+)a14(+)a15,
b13=a12(+)a14(+)a15,
b14=a12(+)a13(+)a15,
b15=a12(+)a13(+)a14
なお、上記式において、演算子(+)は、排他的論理和演算を意味する。
図26(1)には。線形変換部P2に対する入出力データの例を示している。
入力Aはnビットデータの16個の要素a0〜a15からなるステートである。
出力Bもnビットデータの16個の要素b0〜b15からなるステートである。
なお、入出力データの各要素ai,bi(ただしi=0〜15)は、0,1のいずれかの値から構成されるnビットデータである。
なお、本実施例では、n=4であり、各要素は4ビットデータあり、入力A、出力Bとも64ビットである。
線形変換処理P2として行われる行拡散演算タイプ1(MixRow1)は、以下の式に従った行列演算である。
b0=a4(+)a8(+)a12,
b1=a1(+)a5(+)a13,
b2=a2(+)a6(+)a10,
b3=a3(+)a11(+)a15,
b4=a0(+)a8(+)a12,
b5=a1(+)a5(+)a9,
b6=a2(+)a6(+)a14,
b7=a7(+)a11(+)a15,
b8=a0(+)a4(+)a12,
b9=a5(+)a9(+)a13,
b10=a2(+)a10(+)a14,
b11=a3(+)a7(+)a11,
b12=a0(+)a4(+)a8,
b13=a1(+)a9(+)a13,
b14=a6(+)a10(+)a14,
b15=a3(+)a7(+)a15
なお、上記式において、演算子(+)は、排他的論理和演算を意味する。
図27(1)には。線形変換部P2に対する入出力データの例を示している。
入力Aはnビットデータの16個の要素a0〜a15からなるステートである。
出力Bもnビットデータの16個の要素b0〜b15からなるステートである。
なお、入出力データの各要素ai,bi(ただしi=0〜15)は、0,1のいずれかの値から構成されるnビットデータである。
なお、本実施例では、n=4であり、各要素は4ビットデータあり、入力A、出力Bとも64ビットである。
線形変換処理P3として行われる行拡散演算タイプ2(MixRow2)は、以下の式に従った行列演算である。
b0=a0(+)a4(+)a8,
b1=a5(+)a9(+)a13,
b2=a2(+)a6(+)a14,
b3=a3(+)a11(+)a15,
b4=a0(+)a4(+)a12,
b5=a1(+)a9(+)a13,
b6=a2(+)a6(+)a10,
b7=a7(+)a11(+)a15,
b8=a0(+)a8(+)a12,
b9=a1(+)a5(+)a13,
b10=a6(+)a10(+)a14,
b11=a3(+)a7(+)a11,
b12=a4(+)a8(+)a12,
b13=a1(+)a5(+)a9,
b14=a2(+)a10(+)a14,
b15=a3(+)a7(+)a15
なお、上記式において、演算子(+)は、排他的論理和演算を意味する。
本開示の暗号処理装置、すなわち、3種類の異なる線形変換処理P1〜P3を実行する暗号処理装置と、従来型の単一種類の線形変換処理を繰り返し実行する暗号処理装置におけるアクティブSボックスの数を検証した。
なお、図28に示す図はラウンド鍵との排他的論理和演算部を省略して示している。
図28に示す暗号処理装置は、非線形変換部数=6であるので6ラウンド構成とする。なお、ラウンド数の定義のしかたは、いくつかの方法があるが、ここでは、非線形変換部の数をラウンド数としている。
図28に示す例ではラウンド鍵RK1〜RK7の7個のラウンド鍵を適用しているが非線形変換部は6層存在するので6ラウンドの暗号処理装置であるとする。
線形変換処理P1は、行列M0を適用した列拡散演算(MixColumn)である。
線形変換処理P2は、行列M0、M1、M2、M3を適用した行拡散演算タイプ1(MixRow1)である。
線形変換処理P3は、行列M0、M1、M2、M3を適用した行拡散演算タイプ2(MixRow2)である。
図29に示す暗号処理装置も6ラウンド構成であるが、各ラウンドの線形変換処理は同じ線形変換処理を行なう構成である。
図29の暗号処理装置の全ての線形変換処理部は、図28の暗号処理装置でも用いた行列M0のみを利用した線形変換処理P1、すなわち、行列M0を用いた列拡散演算を行う設定とした。
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に示す。
ラウンド数=4では、
従来型の同一線形変換部を繰り返し実行する構成でも、本開示の異なる線形変換処理を実行する構成でも、アクティブSボックスの数は4であり、同じ値となるが、ラウンド数=6〜24の場合(8を除く)は、いずれの場合も、本開示の異なる線形変換処理を実行する構成の方がアクティブSボックスの数が多くなっている。
この結果をグラフとして示したのが図31に示すグラフである。
ここで、線形変換部は、複数種類の行列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種類の行列M0,M1,M2,M3を利用した行列演算による線形変換処理を実行する構成であり、
(a)ステートの各列要素単位で行列M0を適用して線形変換を行う列拡散演算と、
(b)ステートの各行要素単位で行列M0,M1,M2,M3の順に各行列を適用して線形変換を行う行拡散演算タイプ1と、
(c)ステートの各行要素単位で前記タイプ1と異なる順に各行列を適用して線形変換を行う行拡散演算タイプ2、
上記3種類の行列演算をラウンド遷移に応じて切り替えて実行する暗号処理装置。
M1,M3,M0,M2
としたとき、
タイプ2において4×4ステートの各行:第1〜4行に適用する行列を、
M0,M2,M3,M1
このような設定とする。
上記設定では、4×4ステートの任意の2つの行に対してタイプ1で適用する2つの行列とタイプ2で適用する2つの行列の計4つの行列が少なくとも3種類以上の行列によって構成される組み合わせとなる。
タイプ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種類の行列演算をラウンド遷移に応じて切り替えて実行する暗号処理装置。
次に、本開示の暗号処理装置における鍵スケジュール部の構成と処理について説明する。
先に図19を参照して説明したように、本開示の暗号処理装置100は、鍵スケジュール部110と、暗号処理部120を有する。
なお、復号処理に際しても同様の処理が行われる。
以下、このラウンド鍵生成、供給処理を実行する鍵スケジュール部110の構成と処理について説明する。
鍵スケジュール部300は、秘密鍵K1を格納した記憶部としての鍵供給部(鍵レジスタ)301を有する。
鍵スケジュール部300は、この鍵K1を、暗号処理部320の第1ラウンドの排他的論理和部(ラウンド鍵演算部)321に出力する。すなわち鍵K1が、第1ラウンドのラウンド鍵として利用される。
さらに、鍵変換部302aの生成した変換鍵Kd1を暗号処理部320の第2ラウンドの排他的論理和部(ラウンド鍵演算部)322に出力する。すなわち変換鍵Kd1が、第2ラウンドのラウンド鍵として利用される。
この鍵K1は、変換鍵Kd1の生成元となった鍵K1と同じ鍵である。
鍵スケジュール部300は、鍵変換部302bの生成した鍵K1を暗号処理部320の第3ラウンドの排他的論理和部(ラウンド鍵演算部)323に出力する。すなわち鍵K1が、第3ラウンドのラウンド鍵として利用される。
鍵K1から変換鍵Kd1を生成し、
変換鍵Kd1から鍵K1を生成する。
Kd1=G(K1)
K1=G−1(Kd1)
である。
なお、
G=G−1が成立する。
すなわち、鍵変換部302a〜302fにおいて鍵変換に適用するデータ変換関数Gは、インボリューション性、すなわち、図33に示すように、順方向関数Gと逆方向関数G−1とが同じ関数であるという性質を持つ。
図34は、ベース鍵Kから変換鍵Kdを生成する処理を説明する図である。
ベース鍵Kから変換鍵Kdを生成する処理は、以下の2つのステップによって構成される。
(S1)ベース鍵Kに対して、中間鍵生成列拡散演算(MixColumn_KSF())を適用した演算を実行して中間鍵Sを生成する。
(S2)中間鍵Sに対して、変換鍵生成列拡散演算(MixRow_KSF())を適用した演算を実行して変換鍵Kdを生成する。
ただし、この鍵変換処理において適用する行列MDは、以下に示す行列である。
MDS行列は、行列を構成する任意の小行列が正則行列となる行列である。なお、正則行列は、逆行列を持つ行列であり、行列をAとし、逆行列をA−1とすると、
AA−1=A−1A=E、
ただしEは単位行列、
上記式が成立する逆行列A−1を持つ行列Aが正則行列である。
前述したように、分岐数Branch(θ)がb+1であるような写像θは、最適拡散変換(Optimal Diffusion Mappings)と呼ばれ、MDS行列は、最適拡散変換を実行する行列である。
ステップS1の列拡散演算は、以下の演算式によって示される。
MC[MD]=MC[MD,MD,MD,MD]
また、ステップS2の行拡散演算は、以下の演算式によって示される。
MR[MD]=MR[MD,MD,MD,MD]
また、ステップS2の行拡散演算は、4ビット要素からなる4×4のステート表現データの4つの全ての行に対して、同一のアダマール(Hadamard)MDS行列MDを適用した行列演算を実行する。
MD():{0,1}16→{0,1}16
Input:{x0,x1,x2,x3},xi∈{0,1}4
Output:{y0,y1,y2,y3},yi∈{0,1}4
Operation
・y0=x0(+)2(×)x1(+)4(×)x3(+)6(×)x4
・y1=2(×)x0(+)x2(+)6(×)x3(+)4(×)x4
・y2=4(×)x0(+)6(×)x2(+)x3(+)2(×)x4
・y3=6(×)x0(+)4(×)x2(+)2(×)x3(+)x4
ただし、
(+)は、排他的論理和演算、
(×)は、既約多項式:x4+x+1によって規定される拡大体GF(24)上の乗算を示す。
MixColumn_KSF():{0,1}64→{0,1}64
Input:{k0,k1,・・・,k15},ki∈{0,1}4
Output:{s0,s1,・・・,s15},si∈{0,1}4
Operation
・(s0,s1,s2,s3)=MD(k0,k1,k2,k3)
・(s4,s5,s6,s7)=MD(k4,k5,k6,k7)
・(s8,s9,s10,s11)=MD(k8,k9,k10,k11)
・(s12,s13,s14,s15)=MD(k12,k13,k14,k15)
MixRow_KSF():{0,1}64→{0,1}64
Input:{s0,s1,・・・,s15},si∈{0,1}4
Output:{kd0,kd1,・・・,kd15},kdi∈{0,1}4
Operation
・(kd0,kd4,kd8,kd12)=MD(s0,s4,s8,s12)
・(kd1,kd5,kd9,kd13)=MD(s1,s5,s9,s13)
・(kd2,kd6,kd10,kd14)=MD(s2,s6,s10,s14)
・(kd3,kd7,kd11,kd15)=MD(s3,s7,s11,s15)
これらの2つの行列演算を連続して実行することで、ベース鍵Kから変換鍵Kdを生成する。
すなわち、先に図33を参照して説明したように、列拡散演算MC[MD]と、行拡散演算MR[MD]の連続処理からなる関数Gは、インボリューション性を持ち、順方向関数Gと、逆方向関数G−1が同一であるため、2回繰り返すことで、元の値が算出される。
すなわち、入出力ステート全要素間でデータ拡散(diffusion)がなされている。このようなデータ変換態様を「全拡散(full diffusion)変換」、あるいはフルディフュージョン性を有する拡散であると定義する。
B=f(A)
上記式に従って出力ステートBを算出する設定とする。
入力ステートA=(a0,a1,a2,・・・a15)
出力ステートB=(b0,b1,b2,・・・b15)
である。
ただし、ai,biはステートA,Bの要素である。
このとき、
出力ステートBの任意の要素biが以下の式によって表現できる場合、関数fは、全拡散(full diffusion)変換であるという。
bi=f(a0,a1,a2,・・・a15)
(1)全拡散(full diffusion)変換を実現するフルディフュージョン性、
(2)順方向関数Gと、逆方向関数G−1が同一であるインボリューション性、
これら2つの性質を持つ。
鍵変換部302の性質であるフルディフュージョン性は、結果として、図32に示す暗号処理部320における変換対象データと鍵との間にもフルディフュージョン性を保証することになる。図35を参照して説明する。
図35には、
ベース鍵K=(k0,k1,k2,・・・k15)
変換鍵Kd=(kd0,kd1,kd2,・・・kd15)
を示している。
さらにその出力に対して、排他的論理和演算部333において、変換鍵Kdとの排他的論理和演算が実行される。
排他的論理和演算部333の出力をステートBとする。
Kdi=f(k0,k1,k2,・・・k15)
ただし、i=0〜15
上記関係式が成立する。
すなわち、フルディフュージョン性が保証されている。
上記関係式から、
ステートBと、ベース鍵Kとの間にも、以下の関係式が成立する。
bi=f(k0,k1,k2,・・・k15)
ただし、i=0〜15
上記関係式が成立する。
すなわち、ベース鍵Kと変換データBとの間でもフルディフュージョン性が保証される。
具体的には、鍵によるデータ拡散性の向上が実現され、ラウンド数を削減しても高い拡散性能を発揮させることが可能になる。この結果、各種の攻撃に対する耐性を高めることが可能となる。たとえば、鍵依存度を利用した中間値一致攻撃等に基づく鍵解析処理に対する耐性をより向上させることができる。
(1)各ラウンドにおいて鍵変換を実行せず、同じラウンド鍵を適用する暗号処理構成
(2)本開示の鍵変換を実行して、交互に2種類のラウンド鍵を適用する暗号処理構成
これら2つの暗号処理構成例を示している。
なお、図36(2)に示すGのボックスは、図32に示す鍵変換部302に相当する。
従って、ラウンド関数の拡散性能が低い場合、拡散レベルを高くするためには、多くのラウンド数が必要となり、結果として、高速処理や軽量化を実現することが困難となる。
図の例では1ラウンドになる。
すなわち、本開示の処理を適用すれば、変換対象データに対する鍵データの構成情報の拡散が1ラウンドで実現され、ラウンド関数(R)の処理に依存することなくより大きな拡散性能が保証される。
すなわち、少ないラウンド数で攻撃に対する耐性の高い安全な暗号処理が実現される。結果として、高速処理や軽量化が実現される。
先に図32、図33等を参照して説明したように、本開示の鍵スケジュール部300の鍵変換部302は、順方向関数Gと逆方向関数G−1が同一の関数で実現されるインボリューション性を有する。
以下、このインボリューション性に基づく効果について説明する。
(a)規定ラウンド数に相当する数のラウンド関数実行部をハードウェアとして構成する「アンロールド(Unrolled)実装」、
(b)ハードウェアとしてのラウンド関数実行部を1つ構成し、そのラウンド関数実行部の出力を同じラウンド関数実行部にフィードバック入力して、規定ラウンド数のラウンド関数を繰り返し実行する「ラウンド実装」、
以下、これら2つのタイプにおけるインボリューション性に基づく効果について、順次、説明する。
まず、暗号処理部をアンロールド実装した場合に、本開示の鍵変換部のインボリューション性がもたらす効果について説明する。
図37、図38を参照して、暗号処理部をアンロールド実装した場合に、本開示の鍵変換部のインボリューション性がもたらす効果について説明する。
図37(1)鍵変換部(F)がインボリューション性を有していない場合のハードウェア実装例
図38(2a)、(2b)鍵変換部(G)がインボリューション性を有している場合のハードウェア実装例
図37は、鍵変換部Fがインボリューション性を有していないため、鍵変換部Fによる変換結果として得られる鍵は、逐次、異なる鍵となる。図37に示すように、鍵変換部Fの変換処理によって、鍵K1に基づいて、Kd1、Kd2、Kd3、Kd4、Kd5、Kd6が順次、生成され、これらの各鍵がラウンド鍵として暗号処理部の排他的論理和部(ラウンド鍵演算部)に順次入力する構成となる。
図38(2a)に示す例は、図37(1)に示すハードウェア構成と同様、暗号処理部の排他的論理和部(ラウンド鍵演算部)に対する入力鍵(ラウンド鍵)を生成するための鍵変換部Gを各ラウンドに対応付けて設定した構成である。
この結果、鍵変換部Gの数を1つとすることが可能となり、ハードウェア実装の軽量化(小型化)が実現される。
図39に示すように、鍵スケジュール部300の鍵変換部(G)302は、1つのみとして暗号処理部320の各排他的論理和部(ラウンド鍵演算部)に対して予め保持するベース鍵K1と、鍵変換部Gによって生成される変換鍵Kd1を交互に入力することが可能となる。
次に、暗号処理装置をラウンド実装した場合に、本開示の鍵変換部のインボリューション性がもたらす効果について説明する。
図40に、鍵変換部がインボリューション性を有していない場合の(a1)暗号処理構成と、(a2)ラウンド実装例を示す。
図41に、鍵変換部がインボリューション性を有している場合の(b1)暗号処理構成と、(b2)ラウンド実装例を示す。
すなわち、鍵変換部Fがインボリューション性を有していないため、鍵変換部Fによる変換結果として得られる鍵は、逐次、異なる鍵となる。図40(a1)に示すように、鍵変換部Fの変換処理によって、鍵K1に基づいて、Kd1、Kd2、Kd3、Kd4、Kd5、Kd6が順次、生成され、これらの各鍵がラウンド鍵として暗号処理部の排他的論理和部(ラウンド鍵演算部)に順次入力する構成となる。
一方、鍵スケジュール部360は、ベース鍵K1を格納し供給する鍵レジスタ361と、変換鍵Kd1〜Kd6を格納し供給するための鍵レジスタ362と、鍵変換部(F)363、鍵レジスタ361,362の出力切り換えを実行するスイッチ364を有する構成となる。
すなわち、鍵変換部Gがインボリューション性を有しているため、鍵変換部による変換処理の繰り返しによって生成される鍵は、K1,Kd1,K1,Kd1,K1・・・の繰り返しとなる。この性質に基づいて、図41(b1)に示すように鍵変換部Gを1つとして、ベース鍵K1と、鍵変換部Gによる1回の鍵変換処理によって生成した変換鍵Kd1を暗号処理部の排他的論理和部(ラウンド鍵演算部)に交互に入力することが可能となる。
一方、鍵スケジュール部370は、ベース鍵K1、および変換鍵Kd1を格納し供給する鍵レジスタ371と、鍵変換部(G)372を有する構成となる。
例えば、図40(a2)に示すインボリューション性を持たない鍵変換部(F)を持つ場合のラウンド実装構成では、複数の異なる変換鍵を、順次、生成して格納、供給するための鍵レジスタが必要となり、この鍵レジスタ用のゲート数分の新たなハードウェア回路が必要となる。
上述したように、本開示の暗号処理装置に構成される鍵スケジュール部の鍵変換部は、以下の2つの特性を持つ。
(1)全拡散(full diffusion)変換を実現するフルディフュージョン性、
(2)順方向関数Gと、逆方向関数G−1が同一であるインボリューション性、
これら2つの特性を持つ。
(効果1)フルディフュージョン性に基づいて、変換対象とするデータについてのフルディフュージョン性を少ないラウンドで実現できる。
この結果、少ないラウンドで安全性の高い暗号処理を行なうことができ、処理の高速化(低遅延化)、および装置の軽量化(小型化)が実現される。
(効果2)ハードウェア構成をアンロール実装とした場合、インボリューション性に基づいて、鍵変換部を1つのみの構成とすることが可能となり、装置の軽量化(小型化)が実現される。
(効果3)ハードウェア構成をラウンド実装とした場合、インボリューション性に基づいて、鍵レジスタと、鍵変換部を各々1つのみとした鍵スケジュール部の実装が可能となり、装置の軽量化(小型化)が実現される。
次に、上述した以下の2つの特性、すなわち、
(1)全拡散(full diffusion)変換を実現するフルディフュージョン性、
(2)順方向関数Gと、逆方向関数G−1が同一であるインボリューション性、
これら2つの特性を持つ関数Gを適用した鍵変換処理を実行する鍵変換部を有する鍵スケジュール部のその他の構成例について、図42以下を参照して説明する。
図42に示す暗号処理装置は、鍵スケジュール部380と、暗号処理部385を有する。
鍵スケジュール部380の鍵レジスタ381には、予め生成された秘密鍵Kが格納される。
秘密鍵Kは、鍵K1と鍵K2の連結データである。
例えば鍵K1、K2は64ビット鍵であり、その連結データである秘密鍵Kは128ビットデータである。
図に示すGは、鍵変換部であり、先に図32以下を参照して説明した鍵変換部302と同様、フルディフュージョン性と、インボリューション性、これら2つの特性を持つ関数Gを適用した鍵変換処理を行なう鍵変換部である。
なお、図に示す例において、鍵K1、K2が64ビット鍵である場合、暗号処理部385の変換対象となる平文Pも64ビットデータとなる。
鍵K1、
鍵K2、
変換鍵Kd1、
変換鍵Kd2、
鍵K1、
鍵K2、
変換鍵Kd1、
この順番で、4種類の鍵を暗号処理部385に入力する。
なお、鍵入力順は様々な設定が可能である。
図43には、以下の各図を示している。
(a)鍵スケジュール部の構成
(b)鍵スケジュール部による鍵出力構成
秘密鍵Kは、鍵K1と鍵K2の連結データである。
例えば鍵K1、K2は64ビット鍵であり、その連結データである秘密鍵Kは128ビットデータである。
鍵変換部G393は、先に図32以下を参照して説明した鍵変換部302と同様、フルディフュージョン性と、インボリューション性、これら2つの特性を持つ関数Gを適用した鍵変換処理を行なう鍵変換部である。
鍵K1、
鍵K2、
変換鍵Kd1、
変換鍵Kd2、
排他的論理和演算鍵K1(+)K2、
排他的論理和演算変換鍵Kd1(+)Kd2、
図43(a)に示す鍵スケジュール部は、これら6種類の鍵を生成して、暗号処理部に順次、出力する。
鍵K1、
鍵K2、
変換鍵Kd1、
変換鍵Kd2、
排他的論理和演算鍵K1(+)K2、
排他的論理和演算変換鍵Kd1(+)Kd2、
排他的論理和演算鍵K1(+)K2、
排他的論理和演算変換鍵Kd1(+)Kd2、
排他的論理和演算鍵K1(+)K2、
変換鍵Kd2、
変換鍵Kd1、
鍵K2、
鍵K1、
この順番で、6種類の鍵を暗号処理部に入力する。
これは、平文Pから暗号文Cを生成する暗号処理における鍵入力順と、暗号文Cから平文Pを生成する復号処理における鍵入力順を同じ設定とすることが可能であることを意味する。これは、暗号処理および復号処理に適用するハードウェアやプログラムを共通化可能であることを意味し、装置の軽量化(小型化)に寄与する設定である。
なお、図43に示す鍵スケジュール部を有する暗号処理装置の具体的構成については、さらに、後段で説明する。
上述した実施例では、秘密鍵Kに対して変換関数Gを適用した変換処理により変換鍵Kdを生成する鍵変換部がインボリューション性と、フルディフュージョン性の2つの性質を持つものとして説明したが、インボリューション性を持たずフルディフュージョン性のみを有する鍵変換部を適用した場合においても、入力データに対する拡散性能が向上し、各種攻撃に対する耐性の高い安全な暗号処理構成が実現される。
以下、フルディフュージョン性を有する暗号処理構成についての実施例について説明する。
さらにその出力に対して、排他的論理和演算部において、変換鍵Kd1との排他的論理和演算が実行される。
排他的論理和演算部の出力(S)について考察する。
変換対象データは、ラウンド演算部R1において非線形変換処理と、線形変換処理がなされた後、変換鍵Kd1との排他的論理和演算が実行される。
この結果、ベース鍵K1と変換データとの間でもフルディフュージョン性が保証される。
この性質は、暗号処理装置の安全性や、実装性能に貢献をもたらす性質であると言える。
具体的には、鍵によるデータ拡散性の向上が実現され、ラウンド数を削減しても高い拡散性能を発揮させることが可能になる。この結果、各種の攻撃に対する耐性を高めることが可能となる。たとえば、鍵依存度を利用した中間値一致攻撃等に基づく鍵解析処理に対する耐性をより向上させることができる。
これに対して、図44に示す鍵変換を行う構成では、適用鍵の構成情報(ビット列)が変換対象データである入力平文Pの全ビットに拡散(Full diffusion)するのに必要なラウンド数は、ベース鍵K1と、変換鍵Kd1が2つ利用されるラウンド数となる。
図の例では1ラウンドになる。
すなわち、本開示の処理を適用すれば、変換対象データに対する鍵データの構成情報の拡散が1ラウンドで実現され、ラウンド関数(R)の処理に依存することなくより大きな拡散性能が保証される。
すなわち、少ないラウンド数で攻撃に対する耐性の高い安全な暗号処理が実現される。結果として、高速処理や軽量化が実現される。
以下で説明するG関数は、以下の2つの関数の組み合わせによって構成される。
(a)フルディフュージョン4ビット関数(Df4)
(b)16ビット置換関数(Bp16)
すなわち、
入力:x0,x1,x2,x3(各1bit)
出力:y0,y1,y2,y3(各1bit)
このとき、関数fは、
yi=f(x0,x1,x2,x3)
ただしi=0,1,2,3
上記性質を持つ関数である。
図46には、16ビット置換関数(Bp16)の一例を示している。
入力Xをx0,x1,x2,・・・x15の16ビットデータとし、
入力Xを変換関数Gに入力して変換された後の、
出力Yをy0,y1,y2,・・・y15の16ビットデータとする。
なお、xi,yiはそれぞれ0または1の1ビットデータである
入力:x0,x1,・・・,x15(各1bit)
出力:y0,y1,・・・,y15(各1bit)
関数:y0=x0,y1=x4,y2=x8,y3=x12
y4=x1,y5=x5,y6=x9,y7=x13
y8=x2,y9=x6,y10=x10,y11=x14
y12=x3,y13=x7,y14=x11,y15=x15
(a)フルディフュージョン4ビット関数(Df4)
(b)16ビット置換関数(Bp16)
これらの2つの関数から構成されるフルディフュージョン性を持つG関数を適用した鍵変換処理例(処理例1)を示す図である。
ベース鍵をAとし、変換鍵Bとする。いずれも各要素4ビットの4×4ステートデータである。
図47に示す例において、ベース鍵Aから変換鍵Bを生成する処理は、以下の4つのステップによって構成される。
(S11)ベース鍵Aの16個の4ビット要素各々に対してフルディフュージョン4ビット関数(Df4)を適用して変換する。
(S12)ステップS11の変換処理によって生成されたデータ(4×4ステート)の各列16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S13)ステップS12の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してフルディフュージョン4ビット関数(Df4)を適用して変換する。
(S14)ステップS13の変換処理によって生成されたデータ(4×4ステート)の各行16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
変換鍵のBの各要素b0〜b15は、ベース鍵Aの各要素a0〜a15の影響を受けたデータとなりベース鍵Aと変換鍵Bとの間にはフルディフュージョン性が保証される。
(a)フルディフュージョン4ビット関数(Df4)
(b)16ビット置換関数(Bp16)
これらの2つの関数から構成されるフルディフュージョン性を持つG関数を適用した鍵変換処理例(処理例2)を示す図である。
ベース鍵をAとし、変換鍵Bとする。いずれも各要素4ビットの4×4ステートデータである。
図48に示す例において、ベース鍵Aから変換鍵Bを生成する処理は、以下の5つのステップによって構成される。
(S21)ベース鍵Aの16個の4ビット要素各々に対してフルディフュージョン4ビット関数(Df4)を適用して変換する。
(S22)ステップS21の変換処理によって生成されたデータ(4×4ステート)の各列16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S23)ステップS22の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してフルディフュージョン4ビット関数(Df4)を適用して変換する。
(S24)ステップS23の変換処理によって生成されたデータ(4×4ステート)の各行16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S25)ステップS24の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してフルディフュージョン4ビット関数(Df4)を適用して変換する。
変換鍵のBの各要素b0〜b15は、ベース鍵Aの各要素a0〜a15の影響を受けたデータとなりベース鍵Aと変換鍵Bとの間にはフルディフュージョン性が保証される。
(a)フルディフュージョン4ビット関数(Df4)
(b)16ビット置換関数(Bp16)
これらの2つの関数から構成されるフルディフュージョン性を持つG関数を適用した鍵変換処理例(処理例3)を示す図である。
ベース鍵をAとし、変換鍵Bとする。いずれも各要素4ビットの4×4ステートデータである。
この処理例3において適用する
(a)フルディフュージョン4ビット関数(Df4)
は、インボリューション性も有する関数である。
(S31)ベース鍵Aの16個の4ビット要素各々に対してインボリューション性を有し、かつフルディフュージョン性を有する4ビット関数(Df4)を適用して変換する。
(S32)ステップS31の変換処理によって生成されたデータ(4×4ステート)の各列16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S33)ステップS32の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してインボリューション性を有し、かつフルディフュージョン性を有する4ビット関数(Df4)を適用して変換する。
(S34)ステップS33の変換処理によって生成されたデータ(4×4ステート)の各行16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S35)ステップS34の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してインボリューション性を有し、かつフルディフュージョン性を有する4ビット関数(Df4)を適用して変換する。
変換鍵のBの各要素b0〜b15は、ベース鍵Aの各要素a0〜a15の影響を受けたデータとなりベース鍵Aと変換鍵Bとの間にはフルディフュージョン性が保証される。さらに、(a)フルディフュージョン4ビット関数(Df4)、(b)16ビット置換関数(Bp16)これらの関数が双方ともインボリューション性を有しているため、ベース鍵Aと変換鍵Bとの間にはインボリューション性も保証される。
(a)フルディフュージョン4ビット関数(Df4)
(b)16ビット置換関数(Bp16)
これらの2つの関数から構成されるフルディフュージョン性を持つG関数を適用した鍵変換処理例(処理例4)を示す図である。
ベース鍵をAとし、変換鍵Bとする。いずれも各要素4ビットの4×4ステートデータである。
この処理例4において適用する
(a)フルディフュージョン4ビット関数(Df4)
は、インボリューション性も有する関数である。
(S41)ベース鍵A(4×4ステート)の各列16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S42)ステップS41の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してインボリューション性を有し、かつフルディフュージョン性を有する4ビット関数(Df4)を適用して変換する。
(S43)ステップS42の変換処理によって生成されたデータ(4×4ステート)の各列16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S44)ステップS43の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してインボリューション性を有し、かつフルディフュージョン性を有する4ビット関数(Df4)を適用して変換する。
(S45)ステップS44の変換処理によって生成されたデータ(4×4ステート)の各行16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
変換鍵のBの各要素b0〜b15は、ベース鍵Aの各要素a0〜a15の影響を受けたデータとなりベース鍵Aと変換鍵Bとの間にはフルディフュージョン性が保証される。さらに、(a)フルディフュージョン4ビット関数(Df4)、(b)16ビット置換関数(Bp16)これらの関数が双方ともインボリューション性を有しているため、ベース鍵Aと変換鍵Bとの間にはインボリューション性も保証される。
(a)フルディフュージョン4ビット関数(Df4)
(b)16ビット置換関数(Bp16)
これらの2つの関数から構成されるフルディフュージョン性を持つG関数を適用した鍵変換処理例(処理例5)を示す図である。
ベース鍵をAとし、変換鍵Bとする。いずれも各要素4ビットの4×4ステートデータである。
この処理例5において適用する
(a)フルディフュージョン4ビット関数(Df4)
は、インボリューション性も有する関数である。
(S51)ベース鍵Aの16個の4ビット要素各々に対してインボリューション性を有し、かつフルディフュージョン性を有する4ビット関数(Df4)を適用して変換する。
(S52)ステップS51の変換処理によって生成されたデータ(4×4ステート)の各行16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S53)ステップS52の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してインボリューション性を有し、かつフルディフュージョン性を有する4ビット関数(Df4)を適用して変換する。
(S54)ステップS53の変換処理によって生成されたデータ(4×4ステート)の各列16ビットデータ各々に対して、16ビット置換関数(Bp16)を適用して変換する。
(S55)ステップS54の変換処理によって生成されたデータ(4×4ステート)の16個の4ビット要素各々に対してインボリューション性を有し、かつフルディフュージョン性を有する4ビット関数(Df4)を適用して変換する。
変換鍵のBの各要素b0〜b15は、ベース鍵Aの各要素a0〜a15の影響を受けたデータとなりベース鍵Aと変換鍵Bとの間にはフルディフュージョン性が保証される。さらに、(a)フルディフュージョン4ビット関数(Df4)、(b)16ビット置換関数(Bp16)これらの関数が双方ともインボリューション性を有しているため、ベース鍵Aと変換鍵Bとの間にはインボリューション性も保証される。
これらの鍵変換関数は、ベース鍵Kから変換鍵を生成する場合に適用可能であり、また、先に図42を参照して説明したベース鍵Kを分割して生成される分割鍵に対する変換処理に適用することも可能である。
さらに、2つの分割鍵に対して適用する鍵変換関数を異なる設定としてもよい。
秘密鍵Kは、鍵K1と鍵K2の連結データである。
例えば鍵K1、K2は64ビット鍵であり、その連結データである秘密鍵Kは128ビットデータである。
図に示すG1、G2は、鍵変換部である。
これらは、少なくともフルディフュージョン性を有する。
あるいはフルディフュージョン性と、インボリューション性、これら2つの特性を有する。
(a)G1,G2ともフルディフュージョン性を有するがインボリューション性を有さない。
(b)G1,G2ともフルディフュージョン性と、インボリューション性を有する。
(c)G1,G2ともフルディフュージョン性を有し、G1とG2が逆関数の設定、すなわち、G2=G1−1の関係にある。
鍵変換関数G1,G2の組み合わせとしては上記のような様々な設定が可能である。
次に、ラウンド演算を繰り返し実行する暗号処理部に対して定数(Constant)を入力して、変換対象データあるいはラウンド鍵と、定数との演算を実行し、拡散性能を高めた暗号処理装置について説明する。
ラウンド関数によるラウンド演算を繰り返し実行する構成において、ラウンド毎の変換処理の同一性を排除するため、ラウンド毎に異なる定数を作用させる構成については、従来から提案されている。
このような定数入力処理は、スライドアタック、リフレクションアタックと呼ばれる攻撃に対する耐性を高めるために有効な手法であると言われている。
従来型の定数入力構成例としては、例えば図53に示すような構成がある。
図53に示すラウンド演算実行部401a〜dは暗号処理部における排他的論理和部(ラウンド鍵演算部)、非線形変換部、線形変換部を含むラウンド関数実行部である。
この各ラウンド演算部401a〜dに、定数1(CON1)〜定数4(CON4)を順次、入力する。
なお、入力された定数CONは、各ラウンド演算部における変換データ、あるいはラウンド鍵との排他的論理和演算が実行される。
このように、各ラウンドに様々な定数による演算を実行することでラウンド演算間の同一性を排除して、様々な攻撃に対する耐性を高めることができる。
暗号処理装置において、ラウンド関数の設定を工夫することで、暗号処理と復号処理を同じ装置で実行可能となる。
具体的には、図54に示すように、暗号処理装置の暗号処理部に適用する複数の変換関数の構成を中心から左右に分割したとき、左半分と右半分が逆関数となる関係とすることで、暗号処理と復号処理を同じ装置で実行可能となる。
これは、インボリューション性を有する暗号処理装置と呼ばれる。
平文Pに対して、変換関数E,411、線形変換部412、変換関数E−1,413をこの順番で適用して暗号文Cが得られる。
また、暗号文Cに対して、同じ順番で各変換部を適用。すなわち、変換関数E,411、線形変換部412、変換関数E−1,413をこの順番で適用することで、元の平文Pが得られる。
例えば、先に図43を参照して説明した鍵入力シーケンスが暗号処理装置のインボリューション性を実現する1つの鍵入力シーケンスである。
この問題点について、図55を参照して説明する。
平文Pの一部の構成データ=Yとする。
データYに対する変換関数E,411の変換結果をXとする。
この場合、値Xは、変換関数E−1,413に入力される。変換関数E−1,413は、変換関数E,411の逆関数であるため、入力値Xは元の値Yに戻されることになる。
すなわち、暗号文Cを構成する一部の出力値Yは、入力平文Pの構成値Yと同じ値になってしまう。すなわち暗号処理装置全体においても入出力値が変わらない不動点が発生することになる。
このような性質は、様々な攻撃に対する脆弱性をもたらす性質であり、暗号処理装置としての安全性を損なう好ましくない性質である。
これらの定数を入力した場合の各変換部のデータ入出力値の関係を示している。
平文Pの一部の構成データ=Yとする。
データYに対する変換関数E,411の変換結果をXとする。
この場合、値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、
このように、入力データに対して特定の差分データを追加した関係性が発生する場合がある。
このような入出力データの関係性も、やはり様々な攻撃に対する脆弱性をもたらす性質であり、暗号処理装置としての安全性を損なう好ましくない性質である。
次に、上記のような従来構成の問題点を解決した安全性の高い定数入力構成を持つ暗号処理装置の構成について説明する。
図56は、本実施例に係る暗号処理部に対する定数入力構成例を説明する図である。
図56(a)には、図54を参照して説明したと同様、インボリューション性を有するデータ変換部からなる暗号処理部を示している。
すなわち、暗号処理部は、
変換関数E,431、
線形変換部432、
変換関数E−1,433、
これらのデータ変換部を有し、変換関数E−1,433、は、変換関数E431の逆関数である。
なお、変換関数E−1,433は、複数のラウンド関数によって構成され、定数(CON)は、1つ以上のラウンド関数部に対して入力する構成とする。
なお、ここに示す実施例では、定数(CON)の入力部は、変換関数E−1,433に入力する設定としているが、変換関数E,431側に入力する設定としてもよい。
なお、排他的論理和部436は、ラウンド鍵Krとの排他的論理和演算を行うラウンド鍵演算部であり、排他的論理和部436では、図に示す前段のラウンド演算部からの出力であるデータAと、ラウンド鍵Krと、定数CONとの排他的論理和演算が実行されることになる。
すなわち、排他的論理和部436では、以下の演算実行結果としてのBが算出され、後段のラウンド演算部の線形変換処理部437に出力される。
B=A(+)Kr(+)CON
なお、上記式において、(+)は排他的論理和演算を示すものとする。
条件:排他的論理和部437に隣接する線形変換部、図に示す例では線形変換部437における線形変換処理における入出力値の差分が減少しない値に設定する。
上記条件は、具体的には、定数CONと、線形変換部437において適用する線形変換行列との行列演算の結果として得られる全ての要素が非ゼロ、すなわちゼロでない値となることである。
図57には、排他的論理和部436に入力する定数CON435を構成する4×4マトリックスと、線形変換部437において起用する線形変換行列Mを示している。
定数CON435は、各要素(con0〜con15)が4ビットデータである4×4ステートであり、64ビットデータである。
また、線形変換行列Mは、4×4の行列データである。
すなわち、以下に示す線形変換行列である。
すなわち、以下の行列演算によって得られる値が、すべて非ゼロとなることである。
このような設定により、定数CONを入力する排他的論理和部に隣接する線形変換部、図57に示す例では線形変換部437における線形変換処理の入出力値の差分の減少を防止でき、結果として、最小差分アクティブSボックスの数を所定数以上に維持することが可能となる。
図58に示す例は、定数CON435を入力する排他的論理和部436に隣接する線形変換部437を、先に図23〜図30を参照して説明した線形変換部P1とした設定である。すなわち、以下に示す行列を適用した列拡散演算(MixColumn)を行う設定とした例である。
MC[M0]
を実行する。
このような定数CONの例が、図58に示す定数CONであり、以下の要素構成を持つ4×4ステートとなる。
図59において、平文Pは、左下から入力され、暗号文Cは右下から出力される。
図59に示す暗号処理装置の暗号処理部451(E)は、図56(a)に示す変換関数E,431に相当する。
また、線形変換部(P2)452は、図56(a)に示す線形変換部432に相当する。
また、暗号処理部453(E−1)は、図56(a)に示す変換関数E−1,433に相当する。
図59に示す暗号処理装置構成は、インボリューション性を持つ暗号処理装置である。
鍵K1、
鍵K2、
変換鍵Kd1、
変換鍵Kd2、
排他的論理和演算鍵K1(+)K2、
排他的論理和演算変換鍵Kd1(+)Kd2、
排他的論理和演算鍵K1(+)K2、
排他的論理和演算鍵K1(+)K2、
排他的論理和演算変換鍵Kd1(+)Kd2、
排他的論理和演算鍵K1(+)K2、
変換鍵Kd2、
変換鍵Kd1、
鍵K2、
鍵K1、
図59に示す構成は、図43に示すラウンド演算部R6を、
線形変換部452と、線形変換部452前後の2つの、
排他的論理和演算鍵K1(+)K2との排他的論理和部、
非線形変換部、
これらの変換部によって構成されるラウンド演算部とする設定した場合の構成に対応する。
これは、平文Pから暗号文Cを生成する暗号処理における鍵入力順と、暗号文Cから平文Pを生成する復号処理における鍵入力順を同じ設定とすることが可能であることを意味する。すなわち、インボリューション性を持つ鍵入力シーケンスであり、暗号処理および復号処理に適用するハードウェアやプログラムの共通化が可能であり、装置の軽量化(小型化)に寄与する設定である。
また、これら3つの排他的論理和部461,463,465に隣接する線形変換部462,464,466は、いずれも前述の行列M0を適用した列拡散演算(MixColumn)、すなわち、
MC[M0]
を実行する。
また、鍵入力シーケンスも暗号化と復号処理において同一のシーケンスとなるため、鍵スケジュール部の鍵供給処理も同一のハードウェア、あるいは同一プログラムを適用した処理として実行可能となる。
なお、一般的な暗号処理におけるアクティブSボックスに基づく評価処理と、本開示の定数入力構成におけるアクティブSボックスに基づく評価処理とはやや異なっており、この点について、図60、図61を参照して説明する。
差分攻撃に対する耐性を図る指標として,差分の接続関係を表現した差分パスに含まれる差分アクティブSボックスの最小数、すなわち、最小差分アクティブSボックス数がある。
一般的には、この図60に示すように所定の差分ΔXを有する2つの入力P1,P2を設定した場合に発生する差分値が入力されるSボックスの数をアクティブSボックスと定義し、この数をカウントすることで安全性評価を行う。
すなわち、暗号処理部は、
変換関数E,431、
線形変換部432、
変換関数E−1,433、
これらのデータ変換部を有し、変換関数E−1,433、は、変換関数E431の逆関数である。
なお、変換関数E−1,433は、複数のラウンド関数によって構成され、定数(CON)は、1つ以上のラウンド関数部に対して入力する。
一方、変換関数E−1,433に対して、同様に線形変換部432側から、上記の入力値S1に対して差分値ΔXを付加した入力S2(=S1(+)ΔX)を入力して、出力T(+)ΔYを得る。
図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ボックスとする。
上述した実施例では、データ変換関数Eと、データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有する暗号処理装置に対して、関数E、または逆関数E−1のいずれか一方のみに定数CONを入力して定数を適用したラウンド演算を実行する構成について説明した。
このような設定により、定数CONを入力する排他的論理和部に隣接する線形変換部、図57に示す例では線形変換部437における線形変換処理の入出力値の差分の減少を防止でき、結果として、最小差分アクティブSボックスの数を所定数以上に維持することが可能となる。
図63において、平文Pは、左下から入力され、暗号文Cは右下から出力される。
図63に示す暗号処理装置の暗号処理部451(E)は、図56(a)に示す変換関数E,431に相当する。
また、線形変換部(P2)452は、図56(a)に示す線形変換部432に相当する。
また、暗号処理部453(E−1)は、図56(a)に示す変換関数E−1,433に相当する。
図63に示す暗号処理部の構成は、インボリューション性を持つ暗号処理部である。
鍵K1、
鍵K2、
変換鍵Kd1、
変換鍵Kd2、
排他的論理和演算鍵K1(+)K2、
排他的論理和演算変換鍵Kd1(+)Kd2、
排他的論理和演算鍵K1(+)K2、
排他的論理和演算鍵K1(+)K2、
排他的論理和演算変換鍵Kd1(+)Kd2、
排他的論理和演算鍵K1(+)K2、
変換鍵Kd2、
変換鍵Kd1、
鍵K2、
鍵K1、
図63に示す構成は、図43に示すラウンド演算部R6を、
線形変換部452と、線形変換部452前後の2つの、
排他的論理和演算鍵K1(+)K2との排他的論理和部、
非線形変換部、
これらの変換部によって構成されるラウンド演算部とする設定した場合の構成に対応する。
これは、平文Pから暗号文Cを生成する暗号処理における鍵入力順と、暗号文Cから平文Pを生成する復号処理における鍵入力順を同じ設定とすることが可能であることを意味する。すなわち、インボリューション性を持つ鍵入力シーケンスであり、暗号処理および復号処理に適用するハードウェアやプログラムの共通化が可能であり、装置の軽量化(小型化)に寄与する設定である。
暗号処理部451(E)の排他的論理和部471、排他的論理和部472、これらの各排他的論理和部に入力する。
さらに、暗号処理部453(E−1)の排他的論理和部473にも入力する。
また、これら3つの排他的論理和部471,472,473に隣接する線形変換部481,482,483は、いずれも前述の行列M0を適用した列拡散演算(MixColumn)、すなわち、
MC[M0]
を実行する。
また、鍵入力シーケンスも暗号化と復号処理において同一のシーケンスとなるため、鍵スケジュール部の鍵供給処理も同一のハードウェア、あるいは同一プログラムを適用した処理として実行可能となる。
次に、非線形変換部に適用するSボックス(S−box)の具体的構成例について説明する。
先に、図22を参照して説明したように、図19に示す暗号処理装置100の暗号処理部120内の非線形変換部122は、例えば図22(1)に示すように、複数のSボックス(S−box)を有する構成である。
各Sボックスは例えば、4ビット入出力構成を持つ非線形変換部であり、16個のSボックスによる並列処理によって4×16=64ビットの非線形変換処理を実行する。
すなわち4ビット入力値に対して、ある4ビット出力値が得られた場合、その4ビット出力値を同一のSボックスに入力した場合、元の4ビット入力値が得られる構成であることが必要である。
f(f(x))=x
上記を満たす関数である。
暗号処理部120に構成される非線形変換部122は、このインボリューション性を有する関数f(x)であることが要求される。
すなわち、図19に示す暗号処理装置100の暗号処理部120に構成される非線形変換部122の構成例である。非線形変換部122は、非線形変換処理を実行するSボックス(S−box)を複数配置した構成を有する、
各Sボックスは4ビットデータの非線形変換を実行する。
非線形変換層1,521、
線形変換層522、
非線形変換層2,523、
これら3つの層に区分することができる。
なお、非線形変換層2,523は、非線形変換層1,521の逆関数となっている。
図65に示すように、
非線形変換層1,521は、2つの排他的論理和演算部(XOR)と、2つの基本演算子によって構成される。
なお、図65に示す例では、基本演算子としてNOR回路を設定した例を示しているが、基本演算子は、AND回路、OR回路、NAND回路、いずれかの2入力1出力の演算を行う基本演算子に置き換え可能である。
また、2つの基本演算子は、同一の基本演算子の組み合わせとしても、異なる基本演算子の組み合わせとしてもよい。
非線形変換層2,523は、非線形変換層1,521の逆関数によって構成される。
図65の下部に、図65に示すSボックスに対する入力値(in)と出力値(out)との対応関係データを示す。
なお、入出力値はいずれも4ビットデータであり、0000〜1111のデータである。図65に示す表は、0000〜1111を10進法で示す0〜15の入力値と出力値との対応表として示している。
この表から理解されるように、任意の入力値Xから得られる出力値Yを、入力値Yとして得られる出力値は元の入力値Xとなる。
Sボックス(S−box)に対する4ビット入力を、
ain,bin,cin,dinとし、
Sボックス(S−box)からの4ビット出力を、
aout,bout,cout,dout、
とする。
Sボックス(S−box)によるデータ変換式は、以下の通りである。
また、この図66に示すSボックス回路は、差分確率、線形確率がいずれも2−2であり、十分な安全性を有する。
図66に示すSボックスは、4つの排他的論理和演算子(XOR)と4つのNOR回路から構成され、ハードウェア回路上に必要なゲート数は13ゲートとなる。
なお、必要なゲート数は、排他的論理和演算子(XOR)=2.25ゲート、NOR回路=1ゲートとして算出している。
変換関数E411、
線形変換部412、
変換関数E−1413、
これらの構成を持つ暗号処理部内の変換関数E411と、変換関数E−1413内の非線形変換部に図64〜図66に示すSボックスを利用した構成とすることで、暗号処理部全体のインボリューション性が実現される。
非線形変換層1、
線形変換層、
非線形変換層2、
これらの3層構成となっているが、この3層構成を持つSボックスの他の例について以下説明する。
この線形変換層の条件について、図67を参照して説明する。
図65、図66を参照して説明したSボックスと同様、
非線形変換層1、
線形変換層、
非線形変換層2、
これらの3層構成を持つ4ビット入出力Sボックスにおいて線形変換層は、例えば、図67(1)に示す設定のいずれかとする。
インボリューション性を有し、かつ、入出力ビットが同一とならない設定、すなわち、
yi≠xi
ただしi=0,1,2,3、
上記式が成立することが線形変換層の条件となる。
図67(2)に示す線形変換構成は、上記条件を満たさず、不適合となる。
(a)P4(P4(X))=X
(b) yi≠xi ただしi=0,1,2,3、
上記(a)は置換関数P4がインボリューション性を有することを示す条件式である。
(b)は、入出力ビットが同一とならないことを示す条件式である。
線形変換層は、上記条件を満たす置換処理を行なう構成であることが必要である。
非線形変換層1,531、
線形変換層532、
非線形変換層2,533、
これらの3層構成を持つ4ビット入出力Sボックスである。
線形変換層532は、入力4ビットの入れ替え処理を行なう線形変換層であり、インボリューション性を有する。
非線形変換層2,533は、非線形変換層1,531の逆関数によって構成される。
図68の下部に、図68に示すSボックスに対する入力値(in)と出力値(out)との対応関係データを示す。
なお、入出力値はいずれも4ビットデータであり、0000〜1111のデータである。図68に示す表は、0000〜1111を10進法で示す0〜15の入力値と出力値との対応表として示している。
この表から理解されるように、任意の入力値Xから得られる出力値Yを、入力値Yとして得られる出力値は元の入力値Xとなる。
Sボックス(S−box)に対する4ビット入力を、
ain,bin,cin,dinとし、
Sボックス(S−box)からの4ビット出力を、
aout,bout,cout,dout、
とする。
Sボックス(S−box)によるデータ変換式は、以下の通りである。
〜(x|y)は、NOR回路に対する入力値がxとyである場合のNOR回路の出力値を示す。
〜(x&y)は、NAND回路に対する入力値がxとyである場合のNAND回路の出力値を示す。
また、この図69に示すSボックス回路も、差分確率、線形確率がいずれも2−2であり、十分な安全性を有する。
図69に示すSボックスは、4つの排他的論理和演算子(XOR)と2つのNOR回路と2つのNAND回路から構成される
変換関数E411、
線形変換部412、
変換関数E−1413、
これらの構成を持つ暗号処理部内の変換関数E411と、変換関数E−1413内の非線形変換部に図69に示すSボックスを利用した構成とすることで、暗号処理部全体のインボリューション性が実現される。
図70に示すSボックスは、
非線形変換層1,541、
線形変換層542、
非線形変換層2,543、
これらの3層構成を持つ4ビット入出力Sボックスである。
線形変換層542は、入力4ビットの入れ替え処理を行なう線形変換層であり、インボリューション性を有する。
非線形変換層2,543は、非線形変換層1,541の逆関数によって構成される。
図70の下部に、図68に示すSボックスに対する入力値(in)と出力値(out)との対応関係データを示す。
なお、入出力値はいずれも4ビットデータであり、0000〜1111のデータである。図70に示す表は、0000〜1111を10進法で示す0〜15の入力値と出力値との対応表として示している。
この表から理解されるように、任意の入力値Xから得られる出力値Yを、入力値Yとして得られる出力値は元の入力値Xとなる。
Sボックス(S−box)に対する4ビット入力を、
ain,bin,cin,dinとし、
Sボックス(S−box)からの4ビット出力を、
aout,bout,cout,dout、
とする。
Sボックス(S−box)によるデータ変換式は、以下の通りである。
(x|y)は、OR回路に対する入力値がxとyである場合のOR回路の出力値を示す。
また、この図71に示すSボックス回路も、差分確率、線形確率がいずれも2−2であり、十分な安全性を有する。
図71に示すSボックスは、4つの排他的論理和演算子(XOR)と4つのOR回路から構成される
変換関数E411、
線形変換部412、
変換関数E−1413、
これらの構成を持つ暗号処理部内の変換関数E411と、変換関数E−1413内の非線形変換部に図71に示すSボックスを利用した構成とすることで、暗号処理部全体のインボリューション性が実現される。
次に、上述した説明に従った各構成、すなわち、以下の各構成を全て有する暗号処理装置の全体構成例について説明する。
(1)安全性を高めた共通鍵暗号処理の全体構成(図19〜図22)
(2)複数の異なる線形変換行列を適用した線形変換を実行する構成(図23〜図31)
(3)ベース鍵と変換鍵を使用して生成したラウンド鍵を提供し、インボリューション性、フルディフュージョン性を実現する鍵スケジュール部の構成(図32〜図52)
(4)定数入力構成(図53〜図63)
(5)インボリューション性を持つSボックスを適用した非線形変換部の構成(図64〜図71)
暗号処理装置700は、鍵スケジュール部720と、暗号処理部750を有する。
暗号処理部750は、排他的論理和部751、非線形変換部752、線形変換部753の各データ変換部を有し、これらの処理を繰り返し実行する構成を有する。
一方、鍵スケジュール部720は、暗号処理部750に構成された排他的論理和部の各々に対してラウンド鍵RKnを出力して、変換対象データとの排他的論理和演算を実行させる。
また、ラウンド鍵供給部721は、秘密鍵Kを格納した鍵レジスタ722と、鍵変換部723を有する。
変換データが64ビットである場合、各ラウンド鍵RKnも64ビットである。
なお、これらの各64ビットデータは、いずれも各要素4ビットの16要素からなる4×4ステートである。
一方、暗号文Cから平文Pを生成する場合は、図に示す暗号処理部750の下段から上段に向けて各変換処理を実行する。
すなわち、
線形変換部P1、
線形変換部P2、
線形変換部P3、
これらの3つの異なる線形変換部を有し、暗号処理において、ラウンド毎に実行する線形変換処理を変更する。すなわち、連続ラウンドでは同じ線形変換処理を行なわない設定としている。
これは、先に、図24、図25を参照して説明した列拡散演算(MixColum)である。
すなわち、線形変換処理部P1は、
MC[M0]
上記式によって示される列拡散演算(MC)を実行する。
なお、MC[M0]は、ステートの各列に対して、同一の行列M0を適用した行列演算を示す式であり、ステートの各列に対して適用する行列を個別に示した式、
MC[M0,M0,M0,M0]
上記式と同じ意味である。
第1行:適用行列M0、
第2行:適用行列M1、
第3行:適用行列M2、
第4行:適用行列M3、
すなわち、線形変換処理部P2は、
MR[M0,M1,M2,M3]
上記式によって示される行拡散演算(MixRow)を実行する。
第1行:適用行列M2、
第2行:適用行列M0、
第3行:適用行列M1、
第4行:適用行列M3、
これは、先に、図27を参照して説明した行拡散演算(MixRow)である。
すなわち、線形変換処理部P3は、
MR[M2,M0,M1,M3]
上記式によって示される行拡散演算(MixRow)を実行する。
ラウンド鍵RK1との排他的論理和演算を行う排他的論理和部、
非線形変換部S、
線形変換部P1、
ラウンド鍵RK2との排他的論理和演算を行う排他的論理和部、
非線形変換部S、
線形変換部P2、
ラウンド鍵RK3との排他的論理和演算を行う排他的論理和部、
非線形変換部S、
線形変換部P1、
ラウンド鍵RK4との排他的論理和演算を行う排他的論理和部、
非線形変換部S、
線形変換部P3、
ラウンド鍵RK5との排他的論理和演算を行う排他的論理和部、
非線形変換部S、
線形変換部P1、
ラウンド鍵RK6との排他的論理和演算を行う排他的論理和部、
ラウンド鍵RK7との排他的論理和演算を行う排他的論理和部、
線形変換部P2、
ラウンド鍵RK7との排他的論理和演算を行う排他的論理和部、
非線形変換部S、
線形変換部P1、
非線形変換部S、
ラウンド鍵RK9との排他的論理和演算を行う排他的論理和部、
線形変換部P3、
非線形変換部S、
ラウンド鍵RK10との排他的論理和演算を行う排他的論理和部、
線形変換部P1、
非線形変換部S、
ラウンド鍵RK11との排他的論理和演算を行う排他的論理和部、
線形変換部P2、
非線形変換部S、
ラウンド鍵RK12との排他的論理和演算を行う排他的論理和部、
線形変換部P1、
非線形変換部S、
ラウンド鍵RK13との排他的論理和演算を行う排他的論理和部、
変換関数E、
線形変換部、
変換関数E−1、
これらのシーケンスに設定され、インボリューション性を有する。
なお、各非線形変換部は、先に図64〜図66を参照して説明したインボリューション性を有するSボックスによって構成されている。
すなわち、ベース鍵と変換鍵を使用して生成したラウンド鍵を暗号処理部750に提供する。このラウンド鍵供給構成では、インボリューション性、フルディフュージョン性を実現している。
鍵変換部723は、ベース鍵K1に基づく変換鍵Kd1を生成し、ベース鍵K2に基づく変換処理によって変換鍵Kd2を生成する。
この変換処理を、変換関数G、および逆関数G−1を用いて式で示すと以下の通りとなる。
Kd1=G(K1)
K1=G−1(Kd1)
なお、
ここで、G=G−1
が成立する。
すなわち、鍵変換部723において鍵変換に適用するデータ変換関数Gは、インボリューション性、すなわち、図33に示すように、順方向関数Gと逆方向関数G−1とが同じ関数であるという性質を持つ。
具体的には、図34に示すステップS1の列拡散演算と、ステップS2の行拡散演算を実行する。
ステップS1の列拡散演算は、以下の演算式によって示される。
MC[MD]=MC[MD,MD,MD,MD]
また、ステップS2の行拡散演算は、以下の演算式によって示される。
MR[MD]=MR[MD,MD,MD,MD]
また、ステップS2の行拡散演算は、4ビット要素からなる4×4のステート表現データの4つの全ての行に対して、同一のアダマール(Hadamard)MDS行列MDを適用した行列演算を実行する。
このフルディフュージョン性を持つラウンド鍵を暗号処理部に入力して変換対象データとの排他的論理和を実行することで、変換データの拡散性能も向上し、より安全性の高い暗号処理が実現される。
(1)全拡散(full diffusion)変換を実現するフルディフュージョン性、
(2)順方向関数Gと、逆方向関数G−1が同一であるインボリューション性、
これら2つの性質を持つ。
これらの2つの特性により、先に説明したように、以下の効果がもたらされる。
すなわち、少ないラウンド数で攻撃に対する耐性の高い安全な暗号処理が実現される。結果として、高速処理や軽量化が実現される。
鍵K1、
鍵K2、
変換鍵Kd1、
変換鍵Kd2、
排他的論理和演算鍵K1(+)K2、
排他的論理和演算変換鍵Kd1(+)Kd2、
排他的論理和演算鍵K1(+)K2、
排他的論理和演算変換鍵Kd1(+)Kd2、
排他的論理和演算鍵K1(+)K2、
変換鍵Kd2、
変換鍵Kd1、
鍵K2、
鍵K1、
この順番で、6種類の鍵を出力する。
暗号処理部750の中心位置にある線形変換部P2の前後において、ラウンド鍵K7として、排他的論理和演算鍵K1(+)K2、を繰り返し利用する。
また、ラウンド鍵RK8,RK10,RK12は、定数供給部725から供給される定数CONをラウンド鍵供給部721の供給する鍵に排他的論理和して生成される。
これは、平文Pから暗号文Cを生成する暗号処理における鍵入力順と、暗号文Cから平文Pを生成する復号処理において、ラウンド鍵供給部721は、同じシーケンスで鍵生成、出力を行うことが可能であることを意味する。これは、暗号処理および復号処理に適用するハードウェアやプログラムを共通化可能であることを意味し、装置の軽量化(小型化)に寄与する設定である。
図に示す例において、定数(CON)は、
ラウンド鍵RK8、
ラウンド鍵RK10
ラウンド鍵RK12、
これらのラウンド鍵生成時にラウンド鍵供給部の生成する鍵データに対して排他的論理和演算がなされる。
ラウンド鍵RK8=Kd1(+)Kd2(+)CON
ラウンド鍵RK10=Kd2(+)CON
ラウンド鍵RK12=K2(+)CON
なお、(+)は排他的論理和演算を意味する。
RK1=K1、
RK2=K2、
RK3=Kd1、
RK4=Kd2、
RK5=K1(+)K2、
RK6=Kd1(+)Kd2、
RK7=K1(+)K2、
RK7=K1(+)K2、
RK8=Kd1(+)Kd2(+)CON、
RK9=K1(+)K2、
RK10=Kd2(+)CON、
RK11=Kd1、
RK12=K2(+)CON、
RK13=K1、
なお、(+)は排他的論理和演算を意味する。
RK7は、同じラウンド鍵を線形変換部(P2)の前後で2回入力する設定となっている。
なお、定数をラウンド鍵とは別に、暗号処理部の排他的論理和部に入力して、変換データとの排他的論理和処理を行なってもよい。この場合も結果は同じとなる。
この構成によって、線形変換部の線形変換による差分減少が防止される。この結果、最小差分アクティブSボックスの数の減少を防止することが可能となり、各種の攻撃に対する耐性を高めた安全性の高い暗号処理構成が実現される。
先に説明たように、暗号処理部750は、変換関数Eと、線形変換部、変換関数E−1を有する構成であり、変換関数Eと、変換関数E−の非線形変換部に図64〜図66に示すSボックスを利用した構成とすることで、暗号処理部全体のインボリューション性が実現される。
最後に、上述した実施例に従った暗号処理を実行する暗号処理装置の実装例について説明する。
上述した実施例に従った暗号処理を実行する暗号処理装置は、暗号処理を実行する様々な情報処理装置に搭載可能である。具体的には、PC、TV、レコーダ、プレーヤ、通信機器、さらに、RFID、スマートカード、センサネットワーク機器、デンチ/バッテリー認証モジュール、健康・医療機器、自立型ネットワーク機器等、例えばデータ処理や通信処理に伴う暗号処理を実行する様々な機器において利用可能である。
暗号化処理、復号処理、双方の処理において、上述した実施例において説明した構成を適用することが可能である。
暗号化処理、復号処理、双方の処理において、上述した実施例において説明した構成を適用することが可能である。
また、図74に示すスマートフォン900に図73に示すICモジュール800を搭載し、上述した実施例に従った暗号処理をICモジュール800において実行する構成としてもよい。
以上、特定の実施例を参照しながら、本開示の実施例について詳解してきた。しかしながら、本開示の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本開示の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
(1) 入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記暗号処理部は、
データ変換関数Eと、前記データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有し、
前記関数E、または、前記逆関数E−1のいずれか一方において1回以上の定数を適用したラウンド演算を実行する暗号処理装置。
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記暗号処理部は、
データ変換関数Eと、前記データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有し、
前記関数E、および前記逆関数E−1の双方において1回以上の定数を適用したラウンド演算を実行する構成を有し、前記関数E、および前記逆関数E−1の非対応位置に定数適用位置が設定されている暗号処理装置。
前記暗号処理装置は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記暗号処理部は、
データ変換関数Eと、前記データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有し、
前記関数E、または、前記逆関数E−1のいずれか一方において、1回以上の定数を適用したラウンド演算を実行する暗号処理方法。
前記暗号処理装置は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記暗号処理部は、
データ変換関数Eと、前記データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有し、前記関数E、および前記逆関数E−1の非対応位置に定数適用位置が設定された構成であり、
前記関数E、および前記逆関数E−1の双方において1回以上の定数を適用したラウンド演算を実行する暗号処理方法。
前記暗号処理装置は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記暗号処理部は、
データ変換関数Eと、前記データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有し、
前記プログラムは、前記暗号処理部に、前記関数E、または、前記逆関数E−1のいずれか一方において、1回以上の定数を適用したラウンド演算を実行させるプログラム。
前記暗号処理装置は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記暗号処理部は、
データ変換関数Eと、前記データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有し、前記関数E、および前記逆関数E−1の非対応位置に定数適用位置が設定された構成であり、
前記プログラムは、前記暗号処理部に前記関数E、および前記逆関数E−1の双方において1回以上の定数を適用したラウンド演算を実行させるプログラム。
具体的には、入力データに対するラウンド演算を繰り返して出力データを生成する暗号処理部と、暗号処理部におけるラウンド演算において適用するラウンド鍵を暗号処理部に出力する鍵スケジュール部を有し、暗号処理部は、データ変換関数Eと、前記データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有し、関数E、または逆関数E−1のいずれか一方のみにおいて、1回以上の定数を適用したラウンド演算を実行する。定数は、定数を入力する排他的論理和部の隣接位置の線形変換処理部において適用する線形変換行列との行列演算結果であるステートの構成要素が全て非ゼロとなる条件を満たすステートとして構成される。
本構成により各種の攻撃に対する耐性を向上させた安全性の高い暗号処理構成が実現される。
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 (13)
- 入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記暗号処理部は、
データ変換関数Eと、前記データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有し、
前記関数E、または、前記逆関数E−1のいずれか一方において1回以上の定数を適用したラウンド演算を実行する暗号処理装置。 - 前記暗号処理部は、
前記定数を適用したラウンド演算として、
前記定数と変換対象データ、または前記定数とラウンド鍵との排他的論理和演算を実行する請求項1に記載の暗号処理装置。 - 前記ラウンド演算を実行するラウンド演算部は、線形変換処理を実行する線形変換処理部を有し、
前記暗号処理部は、
前記定数を、前記線形変換処理部と繋がる排他的論理和部に入力して、変換対象データ、またはラウンド鍵との排他的論理和演算を行う請求項1に記載の暗号処理装置。 - 前記入力データ、および前記定数は、
各要素が1ビット以上のm×n個の要素からなるステートであり、
前記線形変換部は、前記ステートに対して線形変換行列を適用した行列演算を実行する構成であり、
前記定数は、
定数を入力する排他的論理和部と繋がる線形変換処理部が線形変換処理に適用する線形変換行列と、該定数との行列演算結果であるステートの構成要素が全て非ゼロとなる条件を満たすステートである請求項3に記載の暗号処理装置。 - 前記入力データ、および前記定数は、
各要素が4ビットの4×4個の要素からなるステートであり、
前記線形変換部は、前記ステートに対して線形変換行列を適用した行列演算を実行する構成であり、
前記定数は、
定数を入力する排他的論理和部の隣接位置の線形変換処理部が線形変換処理に適用する線形変換行列と、該定数との行列演算結果であるステートの構成要素が全て非ゼロとなる条件を満たす4×4ステートである請求項3に記載の暗号処理装置。 - 前記線形変換部は、
前記ステートの各列要素単位で行列を適用して線形変換を行う列拡散演算、
または、前記ステートの各行要素単位で行列を適用して線形変換を行う行拡散演算のいずれかの行列演算を実行する請求項3に記載の暗号処理装置。 - 前記ラウンド演算を実行するラウンド演算部は、線形変換処理を実行する線形変換処理部を有し、
前記暗号処理部は、
1つおきのラウンドの線形変換処理部に繋がる排他的論理和部に前記定数を入力して、変換対象データ、またはラウンド鍵との排他的論理和を行う請求項1に記載の暗号処理装置。 - 前記暗号処理部は、
平文Pを入力データとして前記ラウンド演算を繰り返して出力データとしての暗号文Cを出力し、
前記暗号文Cを入力データとして、前記ラウンド演算の実行シーケンスを逆順に設定したデータ変換処理により出力データとして前記平文Pを生成可能なインボリューション性を有する構成である請求項1に記載の暗号処理装置。 - 前記鍵スケジュール部は、
平文Pから暗号文Cを生成する場合の鍵供給シーケンスと、
暗号文Cから平文Pを生成する場合の鍵供給シーケンスが一致するインボリューション性を有する鍵供給処理を行なう構成である請求項1に記載の暗号処理装置。 - 前記鍵スケジュール部は、
前記暗号処理部に対する鍵供給処理に際して、供給鍵の一部に定数による演算を施し、演算結果である鍵データを前記暗号処理部に出力する請求項1に記載の暗号処理装置。 - 前記暗号処理部が繰り返し実行するラウンド演算は、線形変換部による線形変換処理を含む演算であり、
前記線形変換部は、ラウンド遷移に応じて線形変換態様を変更する請求項1に記載の暗号処理装置。 - 前記ラウンド演算は非線形変換処理を含み、
前記非線形変換処理を実行するSボックスは、入力値から得られる出力値を、再入力することで前記入力値が得られるインボリューション性を有する構成である請求項1に記載の暗号処理装置。 - 暗号処理装置において実行する暗号処理方法であり、
前記暗号処理装置は、
入力データに対するラウンド演算を実行して出力データを生成する暗号処理部と、
前記暗号処理部におけるラウンド演算において適用するラウンド鍵を前記暗号処理部に出力する鍵スケジュール部を有し、
前記暗号処理部は、
データ変換関数Eと、前記データ変換関数Eの逆関数E−1をシーケンシャルに実行するインボリューション性を有し、
前記関数E、または、前記逆関数E−1のいずれか一方において、1回以上の定数を適用したラウンド演算を実行する暗号処理方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014068292 | 2014-03-28 | ||
JP2014068292 | 2014-03-28 | ||
PCT/JP2015/055281 WO2015146431A1 (ja) | 2014-03-28 | 2015-02-24 | 暗号処理装置、および暗号処理方法、並びにプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2015146431A1 JPWO2015146431A1 (ja) | 2017-04-13 |
JP6406350B2 true JP6406350B2 (ja) | 2018-10-17 |
Family
ID=54194965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016510146A Expired - Fee Related JP6406350B2 (ja) | 2014-03-28 | 2015-02-24 | 暗号処理装置、および暗号処理方法、並びにプログラム |
Country Status (5)
Country | Link |
---|---|
US (1) | US10425226B2 (ja) |
EP (1) | EP3125221A4 (ja) |
JP (1) | JP6406350B2 (ja) |
CN (1) | CN106133810B (ja) |
WO (1) | WO2015146431A1 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018066951A1 (en) * | 2016-10-09 | 2018-04-12 | Lg Electronics Inc. | Improved lightweight block cipher |
CN109144993B (zh) * | 2017-06-16 | 2021-07-27 | 腾讯科技(深圳)有限公司 | 一种数据查询方法及装置 |
US10666422B2 (en) * | 2017-12-29 | 2020-05-26 | Shenzhen China Star Optoelectronics Technology Co., Ltd. | Data processing method |
CN108390875B (zh) * | 2018-02-13 | 2020-08-07 | 沈阳航空航天大学 | 一种减少传输能耗的信息加密优化方法 |
CN108566271B (zh) * | 2018-06-11 | 2020-12-15 | 安徽工程大学 | 复用轮变换电路、aes加密电路及其加密方法 |
US10936703B2 (en) * | 2018-08-02 | 2021-03-02 | International Business Machines Corporation | Obfuscating programs using matrix tensor products |
US10892891B2 (en) * | 2019-03-13 | 2021-01-12 | Digital 14 Llc | System, method, and computer program product for zero round trip secure communications based on two noisy secrets |
US10951415B2 (en) * | 2019-03-13 | 2021-03-16 | Digital 14 Llc | System, method, and computer program product for implementing zero round trip secure communications based on noisy secrets with a polynomial secret sharing scheme |
US11838402B2 (en) | 2019-03-13 | 2023-12-05 | The Research Foundation For The State University Of New York | Ultra low power core for lightweight encryption |
US11569979B2 (en) * | 2019-06-05 | 2023-01-31 | Sameer KHANNA | Cryptographic systems with variable layout cryptography |
CN111147230A (zh) * | 2019-12-31 | 2020-05-12 | 东方红卫星移动通信有限公司 | 一种基于低轨卫星物联网轻量级星间的信息加密传输方法 |
CN112039673B (zh) * | 2020-08-06 | 2023-06-16 | 国电南瑞科技股份有限公司 | 一种基于Feistel结构的配电物联网巡检数据动态加密方法及装置 |
CN115440107B (zh) * | 2022-10-26 | 2024-07-23 | 北京千种幻影科技有限公司 | 一种基于vr虚拟现实的聋哑人智能驾驶训练系统及方法 |
US12034832B1 (en) * | 2023-05-22 | 2024-07-09 | Atofia Llc | Systems and methods for data encryption, decryption, and authentication |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5724427A (en) * | 1995-08-17 | 1998-03-03 | Lucent Technologies Inc. | Method and apparatus for autokey rotor encryption |
US7613295B2 (en) * | 2004-02-18 | 2009-11-03 | Harris Corporation | Cryptographic device and associated methods |
IL174784A0 (en) * | 2006-04-04 | 2006-12-31 | Nds Ltd | Robust cipher design |
US8417961B2 (en) * | 2010-03-16 | 2013-04-09 | Oracle International Corporation | Apparatus and method for implementing instruction support for performing a cyclic redundancy check (CRC) |
ES2686426T3 (es) * | 2010-07-23 | 2018-10-17 | Nippon Telegraph And Telephone Corporation | Dispositivo de encriptación, dispositivo de desencriptación, método de encriptación, método de desencriptación, programa y medio de grabación |
US8583937B2 (en) * | 2010-12-16 | 2013-11-12 | Blackberry Limited | Method and apparatus for securing a computing device |
JP5682525B2 (ja) | 2011-03-28 | 2015-03-11 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにプログラム |
US10061718B2 (en) * | 2012-06-28 | 2018-08-28 | Microsoft Technology Licensing, Llc | Protecting secret state from memory attacks |
US20150222421A1 (en) * | 2014-02-03 | 2015-08-06 | Qualcomm Incorporated | Countermeasures against side-channel attacks on cryptographic algorithms |
-
2015
- 2015-02-24 US US15/127,109 patent/US10425226B2/en not_active Expired - Fee Related
- 2015-02-24 WO PCT/JP2015/055281 patent/WO2015146431A1/ja active Application Filing
- 2015-02-24 JP JP2016510146A patent/JP6406350B2/ja not_active Expired - Fee Related
- 2015-02-24 EP EP15768190.9A patent/EP3125221A4/en not_active Ceased
- 2015-02-24 CN CN201580015013.9A patent/CN106133810B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO2015146431A1 (ja) | 2015-10-01 |
EP3125221A1 (en) | 2017-02-01 |
JPWO2015146431A1 (ja) | 2017-04-13 |
US10425226B2 (en) | 2019-09-24 |
EP3125221A4 (en) | 2018-04-04 |
CN106133810B (zh) | 2020-02-07 |
US20170118016A1 (en) | 2017-04-27 |
CN106133810A (zh) | 2016-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6406350B2 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
JP2015191106A (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
US9363074B2 (en) | Encryption processing apparatus, encryption processing method, and computer program | |
JP4127472B2 (ja) | データ変換装置及びデータ変換装置のデータ変換方法及びプログラム及びコンピュータ読み取り可能な記録媒体 | |
WO2016059870A1 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
JP2007041620A5 (ja) | ||
CN103503362B (zh) | 数据处理装置、数据处理方法以及程序 | |
US20120314857A1 (en) | Block encryption device, block decryption device, block encryption method, block decryption method and program | |
WO2015146430A1 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
JP5680016B2 (ja) | 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム | |
US20050147244A1 (en) | Method for cryptographic transformation of binary data blocks | |
WO2015146432A1 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
JP2002510058A (ja) | 2進データ・ブロックの暗号変換のための方法 | |
KR101971001B1 (ko) | 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치 | |
JP6292107B2 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
RU2140716C1 (ru) | Способ криптографического преобразования блоков цифровых данных | |
Hassan | New Approach for Modifying DES Algorithm Using 4-States Multi-keys |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180109 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180807 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180807 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20180821 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180903 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 6406350 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
LAPS | Cancellation because of no payment of annual fees |