JP2024053189A - 暗号処理装置、暗号処理装置の暗号処理方法およびプログラム - Google Patents
暗号処理装置、暗号処理装置の暗号処理方法およびプログラム Download PDFInfo
- Publication number
- JP2024053189A JP2024053189A JP2022159284A JP2022159284A JP2024053189A JP 2024053189 A JP2024053189 A JP 2024053189A JP 2022159284 A JP2022159284 A JP 2022159284A JP 2022159284 A JP2022159284 A JP 2022159284A JP 2024053189 A JP2024053189 A JP 2024053189A
- Authority
- JP
- Japan
- Prior art keywords
- masked
- nonlinear conversion
- mask value
- round
- conversion table
- 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
Links
- 238000003672 processing method Methods 0.000 title claims description 8
- 238000006243 chemical reaction Methods 0.000 claims abstract description 302
- 238000004364 calculation method Methods 0.000 claims abstract description 177
- 238000000034 method Methods 0.000 claims description 180
- 230000009466 transformation Effects 0.000 claims description 64
- 230000006870 function Effects 0.000 claims description 7
- 230000001131 transforming effect Effects 0.000 claims description 4
- 238000007781 pre-processing Methods 0.000 description 42
- 238000010586 diagram Methods 0.000 description 11
- 230000000694 effects Effects 0.000 description 6
- 230000000873 masking effect Effects 0.000 description 6
- 230000008707 rearrangement Effects 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 4
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000017105 transposition 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/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- 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
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
【課題】回路規模の増加を抑え、処理速度を低下させることなく、サイドチャネル攻撃耐性を向上できるようにする。【解決手段】暗号処理装置は、乱数を生成する乱数生成手段と、前記乱数をマスク値として、マスク付き非線形変換テーブルを生成するテーブル生成手段と、前記マスク値および前記マスク付き非線形変換テーブルを記憶する記憶手段と、前記記憶手段に記憶されている前記マスク値および前記マスク付き非線形変換テーブルのうちの書き換える一組を選択する第一の選択手段と、前記マスク値および前記マスク付き変換テーブルを用いて演算を行う演算手段と、前記記憶手段に記憶されている前記マスク値および前記マスク付き非線形変換テーブルのうちの前記演算手段が必要とする前記マスク値および前記マスク付き非線形変換テーブルを選択する第二の選択手段とを有する。【選択図】図4
Description
本開示は、暗号処理装置、暗号処理装置の暗号処理方法およびプログラムに関する。
暗号技術において、暗号鍵は重要な情報である。AES(Advanced Encryption Standard)(非特許文献1)などの共通鍵暗号においては、共通の暗号鍵が暗号化時と復号化時の両方に使われる。万一、暗号鍵が漏洩してしまうと、漏洩した暗号鍵によって、第三者が、暗号文を復号化することが可能になり、暗号化して第三者から秘匿したかった平文の情報を入手することができてしまう。そのため、暗号はその安全性を保つために、暗号鍵などの秘密情報を容易に推定できないようにする必要がある。
しかしながら、暗号鍵を盗み出す手法としてサイドチャネル攻撃(非特許文献2)という攻撃手法が提案されている。該攻撃では、暗号演算中に暗号モジュールが発生する消費電力や電磁波といったサイドチャネル情報を観測し、統計学を用いて処理することで、暗号処理で使用している暗号鍵を推定する。その中でも、DPA(Differential Power Analysis)と呼ばれる差分電力解析手法が強力な攻撃手法として知られている。DPAでは、推定した鍵である推定鍵と、暗号処理装置への入出力、測定で得られるサイドチャネル情報との相関に着目し、取得した複数のデータを用いて統計処理をすることで鍵を特定するものである。
DPAを含むサイドチャネル攻撃への対策手法の一つとして、マスキング手法が提案されている(非特許文献3)。マスキング手法は、乱数をマスク値として平文と排他的論理和をとることで、中間値をマスク値がかかったランダムな値とし、暗号演算を行う。暗号演算の際、マスクされた中間値の非線形変換は計算が困難であるため、マスクを考慮した変換テーブルであるマスク付き非線形変換テーブルを用いて行われることが多い。マスク付き非線形変換テーブルは、マスクされた中間値を入力とし、元の中間値を非線形変換した値にマスクをかけた値を出力とするテーブルであり、マスク値ごとに異なるものとなる。マスキング手法は、常に中間値にマスクがかかった状態となるため、データとサイドチャネル情報の相関が隠蔽され、サイドチャネル攻撃耐性を持つ手法となる。
しかしながら、マスキング手法においては、新しいマスク値からマスク付き非線形変換テーブルを動的に生成する大量の演算が要求されるため、処理速度が低下するという課題があった。この課題を解決するために、いくつかの手法が提案されている。
各ラウンドのデータの各byte部分に同じマスク値を用いる手法が特許文献1で開示されている。本手法では、各ラウンドで用いるマスク値を一つに限定することで、複数のマスク値を用いる場合に比べて、必要となるマスク付き非線形変換テーブルの数を減らし、処理速度を向上している。
データ値生成命令が入力された時のみ、マスク付き非線形変換テーブルを生成する手法が特許文献2で開示されている。本手法では、暗号化処理を行うごとにマスク付き非線形変換テーブルを生成する場合に比べて、処理速度を向上している。
選択手段を持ち、乱数に応じてあらかじめ用意した複数の固定マスク値をランダムに並び替えマスクする手法が特許文献3で開示されている。本手法では、テーブル生成および暗号演算に使用しないマスク付き非線形変換テーブルを無くすことで、処理速度の向上と回路規模の削減をしている。
FIPS 197, Advanced Encryption Standard (AES)
Paul Kocher, Joshua Jaffe, Benjamin Jun, "Introduction to Differential Power Analysis", Journal of Cryptographic Engineering April 2011, Volume 1, Issue 1, pp 5-27
Thomas S. Messerges, "Securing the AES Finalists Against Power Analysis Attacks," in proceedings of Fast Software Encryption Workshop 2000, Springer-Verlag, pp. 150-164, 2001
しかしながら、従来の手法には、いくつかの課題が存在する。特許文献1および2の手法では、暗号演算とマスク付き非線形変換テーブル生成をシーケンシャルに処理する必要があり、ある一定の処理速度の向上が図れるが、サイドチャネル攻撃対策していない場合と比べると、処理速度が低下するという課題がある。また、特許文献1の手法は、同一ラウンドではデータの各byte部分に同じマスク値が用いられるため、サイドチャネル攻撃耐性が低下するという課題がある。
特許文献3の手法では、ラウンドごとにデータの各部分にかかるマスク値が変化したとしてもなお、使用するマスク値およびマスク付き非線形変換テーブルの種類が限定されるため、サイドチャネル攻撃耐性が低下する課題がある。
本開示の目的は、回路規模の増加を抑え、処理速度を低下させることなく、サイドチャネル攻撃耐性を向上できるようにすることである。
暗号処理装置は、乱数を生成する乱数生成手段と、前記乱数をマスク値として、マスク付き非線形変換テーブルを生成するテーブル生成手段と、前記マスク値および前記マスク付き非線形変換テーブルを記憶する記憶手段と、前記記憶手段に記憶されている前記マスク値および前記マスク付き非線形変換テーブルのうちの書き換える一組を選択する第一の選択手段と、前記マスク値および前記マスク付き変換テーブルを用いて演算を行う演算手段と、前記記憶手段に記憶されている前記マスク値および前記マスク付き非線形変換テーブルのうちの前記演算手段が必要とする前記マスク値および前記マスク付き非線形変換テーブルを選択する第二の選択手段とを有し、前記記憶手段は、前記演算手段が必要とする前記マスク値および前記マスク付き非線形変換テーブルの数に加えて、1つ以上の前記マスク値および前記マスク付き非線形変換テーブルを記憶し、前記第一の選択手段と前記第二の選択手段は、異なる前記マスク値および前記マスク付き変換テーブルを選択し、前記テーブル生成手段による前記マスク付き非線形変換テーブル生成と前記演算手段による演算は、並行して処理され、前記第一の選択手段および前記第二の選択手段は、前記記憶手段の書き換え完了後、書き換えた前記マスク値および前記マスク付き非線形変換テーブルと異なる前記マスク値および前記マスク付き非線形変換テーブルを選択する。
本開示によれば、回路規模の増加を抑え、処理速度を低下させることなく、サイドチャネル攻撃耐性を向上させることができる。
以下に、図面を参照して、実施形態を説明する。なお、以下の実施形態はあくまで例示であり、適用可能な暗号処理装置はAESを用いる暗号処理装置に限定されるものではない。例えば、暗号アルゴリズムのうちのDESやSM4などのブロック暗号処理においてテーブルを参照して非線形変換を行う暗号処理装置に対して広く適用可能である。
(第一の実施形態)
以下に、図面を参照して、第一の実施形態を説明する。まず、AESの暗号化処理の概要について説明する。ここでは、AESの鍵長は128bitであるものとして説明を行うが、AESがサポートしている鍵長128bit、192bit、256bitであればいずれでも構わない。
以下に、図面を参照して、第一の実施形態を説明する。まず、AESの暗号化処理の概要について説明する。ここでは、AESの鍵長は128bitであるものとして説明を行うが、AESがサポートしている鍵長128bit、192bit、256bitであればいずれでも構わない。
図1は、FIPSで定義されているAESの暗号化処理手順を説明するためのフローチャートである。ただし、図1におけるAddRoundKey処理と、SubBytes処理と、ShiftRows処理と、MixColumns処理は、「FIPS 197」にてサブブロック演算として規定される同名の処理である。AddRoundKey処理は、暗号鍵より生成する128bitのラウンド鍵と128bitの入力データとのbitごとの排他的論理和を計算する。SubBytes処理は、図2に示すように、AddRoundKey処理の結果を8bitずつに分割し、非線形変換である逆元計算と、線形変換であるAffine変換を行う。一般的に、SubBytes処理は、図3のように、非線形変換テーブルを用いてテーブル変換で行われることが多い。非線形変換テーブルは、入力8bitと出力8bitの対応関係を示すテーブルであり、8bit×256要素で構成される。ShiftRows処理は、128bitのSubBytes処理の結果を8bitずつに分割してバイト転置を行う。MixColumns処理は、ShiftRows処理の結果を32bitに分割して行列演算を行う。
暗号化を開始すると、まず、ステップS10において、AddRoundKey処理が行われる。続いて、ステップS11において、AddRoundKey処理の結果を基に、SubBytes処理が行われる。次に、ステップS12において、ShiftRows処理が行われる。続いて、ステップS13において、AESのラウンドが判断される。判断の結果、AESのラウンドが1から9ラウンドの場合は、ステップS14において、MixColumns処理が行われ、再び、ステップS10へ戻る。一方、ステップS13において、AESのラウンドが10ラウンドの場合は、ステップS15において、AddRoundKey処理が行われ、その結果を暗号文として暗号化を終了とする。
図4は、第一の実施形態に係る暗号処理装置1の構成例を示す図である。暗号処理装置1は、乱数生成手段10と、テーブル生成手段20と、第一の選択手段30と、記憶手段40と、第二の選択手段50と、演算手段60を有する。暗号処理装置1は、入力された平文Pと暗号鍵Kを基に、暗号文Cを出力する。ただし、平文Pは、暗号処理装置1から入力受付可能信号が出力されたときのみ入力される。
暗号処理装置1における典型的な暗号化処理の流れを説明する。暗号化処理は、暗号処理装置1の起動時に行う前処理と、暗号化処理と、マスク付き非線形変換テーブル生成処理の3つの処理で構成される。暗号化処理とマスク付き非線形変換テーブル生成処理は、前処理の完了後に、二つが並行して処理される。
<前処理>
暗号処理装置1における前処理の流れを説明する。前処理では、演算手段60が必要とする数のマスク値およびマスク付き非線形変換テーブルを生成し、記憶手段40に記憶する。例えば、AESでは16個のマスク値およびマスク付き非線形変換テーブルを生成すればよい。
暗号処理装置1における前処理の流れを説明する。前処理では、演算手段60が必要とする数のマスク値およびマスク付き非線形変換テーブルを生成し、記憶手段40に記憶する。例えば、AESでは16個のマスク値およびマスク付き非線形変換テーブルを生成すればよい。
初めに、乱数生成手段10は、8bitの乱数rを生成し、マスク値としてテーブル生成手段20に入力する。テーブル生成手段20は、「FIPS 197」で規定されたSubBytesの入出力結果をテーブル化した初期非線形変換テーブルを保持している。テーブル生成手段20は、マスク値と初期非線形変換テーブルの配列データS[0],・・・,S[255]を基に、以下のようなマスク付き非線形変換テーブルの配列データSm[0],・・・,Sm[255]を生成する。ここで、+はXORを示す。
Sm[x]=S[x+r]+r
(x=0,1,・・・,255)
Sm[x]=S[x+r]+r
(x=0,1,・・・,255)
マスク値および生成したマスク付き非線形変換テーブルは、第一の選択手段30へ出力され、第一の選択手段30を介し、記憶手段40に記憶される。テーブル生成手段20は、記憶手段40に記憶するマスク値およびマスク付き非線形変換テーブルの番号を示すインデックス値iを生成し、第一の選択手段30と第二の選択手段50に出力する。図4に示すように、第一の選択手段30は、記憶手段40が持つ17個のマスク値mi(i=0,・・・,16)およびマスク付き非線形変換テーブルSmiのいずれか一組を選択する。第一の選択手段30は、テーブル生成手段20が出力するインデックス値iを受け、i番目のマスク値およびマスク付き非線形変換テーブルを選択する。前処理開始時は、テーブル生成手段20は、インデックス値としてi=0を出力するため、第一の選択手段30によって、m0およびSm0が選択される。選択したマスク値m0およびマスク付き非線形変換テーブルSm0の書き換えが完了後、テーブル生成手段20は、インデックス値をi=i+1=0+1=1として第一の選択手段30に出力し、次のマスク付き非線形変換テーブルの生成を開始する。続いて、第一の選択手段30は、インデックス値i=1を受信すると、1番目のマスク値m1およびマスク付き非線形変換テーブルSm1を選択する。テーブル生成手段20は、乱数生成手段10が生成した8bitの乱数rをマスク値として、同様の手順でマスク付き非線形変換テーブルを生成し、第一の選択手段30が選択するマスク値およびマスク付き非線形変換テーブルを書き換える。以上の操作を繰り返し、演算手段60がAESの暗号演算を行うために必要な16個のマスク値およびマスク付き非線形変換テーブルを記憶手段40に記憶する。その後、テーブル生成手段20は、i=i+1=16とした後、前処理完了信号を演算手段60に出力し、前処理を完了する。具体的には、m0,・・・,m15およびSm0,・・・,Sm15が順番に記憶手段40に記憶され、前処理が完了する。
<マスク付き非線形変換テーブル生成処理>
暗号処理装置1におけるマスク付き非線形変換テーブル生成処理の流れを説明する。マスク付き非線形変換テーブル生成処理は、前処理完了後に行われ、暗号化処理と並行して処理する。
暗号処理装置1におけるマスク付き非線形変換テーブル生成処理の流れを説明する。マスク付き非線形変換テーブル生成処理は、前処理完了後に行われ、暗号化処理と並行して処理する。
テーブル生成手段20は、前処理完了後、前処理と同様に、乱数生成手段10が生成した8bitの乱数rをマスク値として、新しいマスク付き非線形変換テーブルを生成する。前処理完了直後は、インデックス値がi=16となるため、第一の選択手段30は、16番目のマスク値m16およびマスク付き非線形変換テーブルSm16を選択する。テーブル生成手段20は、マスク値およびマスク付き非線形変換テーブルの書き換えが完了し、かつ演算手段60から演算完了信号を受信した場合、i=(i+1) mod 17(ただし、a mod bはaをbで割った時の余りを示す)に変更して出力する。
続いて、新しいマスク値およびマスク付き非線形変換テーブルの生成を開始する。テーブル生成手段20は、乱数生成手段10が生成した8bitの乱数rをマスク値として、マスク付き非線形変換テーブルを生成する。第一の選択手段30は、テーブル生成手段20が出力するインデックス値iを基に、マスク値miおよびマスク付き非線形変換テーブルSmiを選択する。テーブル生成手段20は、マスク値およびマスク付き非線形変換テーブルの書き換えが完了し、かつ演算手段60からの演算完了信号を受信した場合、インデックス値をi=(i+1) mod 17とする。
具体的には、前処理完了直後は、インデックス値はi=16であるため、第一の選択手段30は、m16およびSm16を選択する。マスク付き非線形変換テーブルの書き換え完了後、インデックス値iは0となるため、第一の選択手段30は、m0およびSm0を選択し、テーブル生成手段20はマスク付き非線形変換テーブルを生成し始める。以上の操作を繰り返すことで、マスク値およびマスク付き非線形変換テーブルは順番に書き換えられ、暗号化処理を行うほど、演算手段60が使用するマスク値とマスク付き非線形変換テーブルの種類が増加する。
<暗号化処理>
次に、暗号処理装置1における暗号化処理の流れを説明する。暗号化処理は、前処理完了後に行われ、マスク付き非線形変換テーブル生成処理と並行して処理する。暗号化処理では、演算手段60は、入力された平文Pと、暗号鍵Kと、記憶手段40に記憶するマスク値およびマスク付き非線形変換テーブルから、暗号文Cを出力する。マスク値およびマスク付き非線形変換テーブルは、第二の選択手段50を介して、記憶手段40から演算手段60に入力される。
次に、暗号処理装置1における暗号化処理の流れを説明する。暗号化処理は、前処理完了後に行われ、マスク付き非線形変換テーブル生成処理と並行して処理する。暗号化処理では、演算手段60は、入力された平文Pと、暗号鍵Kと、記憶手段40に記憶するマスク値およびマスク付き非線形変換テーブルから、暗号文Cを出力する。マスク値およびマスク付き非線形変換テーブルは、第二の選択手段50を介して、記憶手段40から演算手段60に入力される。
図5に示すように、第二の選択手段50は、要素選択手段501と、順列並び替え手段502を有する。要素選択手段501は、記憶手段40から入力される17組のマスク値およびマスク付き非線形変換テーブルのうち、テーブル生成手段20のインデックス値iに従い、書き換え中のi番目のマスク値およびマスク付き非線形変換テーブル以外の16組を選択する。前処理完了直後は、i=16であるため、16組のマスク値m0,・・・,m15およびマスク付き非線形変換テーブルSm0,・・・,Sm15を選択する。
続いて、順列並び替え手段502が、乱数生成手段10から入力された48bitの乱数に応じて、マスク値およびマスク付き非線形変換テーブルをラウンドごとにランダムに並び替え、演算手段60に出力する。順列並び替え手段502は、図6に示すように、12個の4入力順列並び替え手段5020を有する。また、4入力順列並び替え手段5020は、図7に示すように構成される。4入力順列並び替え手段5020は、8つの2入力MUXを有し、1bitの乱数r0,r1,r2,r3の計4bitによって順列並び替えを行う。乱数r0からr3は、それぞれ、異なる2つの2入力MUXに選択信号として入力される。この時、2つの2入力MUXのうちの一方には乱数がそのまま入力され、もう一方には乱数をbit反転した値が入力される。2入力MUXは、乱数に従って、2入力のうちのどちらか一方を選択し出力するが、選択信号として、お互いにbit反転した値が入力されるため、2つの2入力MUXは異なるマスク値を出力する。
以上の操作によって、4入力順列並び替え手段5020は、4入力を順列並び替えする。順列並び替え手段502に入力された16byteのマスク値は、4byteごとに4つの4入力順列並び替え手段5020に入力される。4つの4入力順列並び替え手段5020は、それぞれが4bitの乱数によってランダムに順列並び替えを行い、図6のように、4つの4入力順列並び替え手段5020に出力する。同様に、4つの4入力順列並び替え手段5020による並び替えを計3回行い、順列並び替え手段502はマスク値をランダムに順列並び替えしている。この際、各4入力順列並び替え手段5020が4bitの乱数を必要とするため、順列並び替え手段502は計48bitの乱数を必要とする。
演算手段60は、並び替えられた16個のマスク値を用いて、演算手段60で処理されるデータの各byte部分をそれぞれマスクする。マスク値は、図8に示すように、ラウンドごとに異なる並び順で並び替えられる。第二の選択手段50は、テーブル生成が完了し、テーブル生成手段20が出力するインデックス値iの値が変化するまで同じ16組のマスク値およびマスク付き非線形変換テーブルを選択する。続いて、テーブル生成手段20が、インデックス値をi=(i+1) mod 17として出力すると、第二の選択手段50は、i番目以外の16組のマスク値およびマスク付き非線形変換テーブルを選択する。例えば、前処理完了直後は、マスク値m0,・・・,m15およびマスク付き非線形変換テーブルSm0,・・・,Sm15を選択し、暗号化処理を行う。暗号化処理は、次のマスク付き非線形変換テーブル生成完了まで行われる。テーブル生成手段20が書き換えを完了し、インデックス値をi=0とすると、第二の選択手段50は、マスク値m1,・・・,m16およびマスク付き非線形変換テーブルSm1,・・・,Sm16を選択し、演算手段60に出力する。暗号化処理が続く限り同様の操作を繰り返し、記憶手段40に記憶するマスク値およびマスク付き非線形変換テーブルが組み合わせを増やしていく。
続いて、演算手段60における処理を説明する。図9に第一の実施形態における演算手段60の構成例を示す。演算手段60は、制御手段601と、鍵拡張手段602と、第一の排他的論理和手段603と、第一の鍵演算手段604と、非線形変換手段605と、第一の線形変換手段606と、第二の鍵演算手段607と、第二の線形変換手段608を有する。さらに、演算手段60は、第二の排他的論理和手段609と、マスク値保持手段610を有する。
制御手段601は、前処理完了信号が入力されると、暗号処理装置1の外部からの入力を受け付ける入力受付可能信号を出力する。演算手段60は、平文Pが入力されると、暗号化処理を開始する。制御手段601は、暗号化処理が開始すると、入力受付可能信号の出力を止め、現在のラウンドを、非線形変換手段605と、第一の線形変換手段606と、第二の線形変換手段608と、第二の排他的論理和手段609に出力する。また、制御手段601は、最終ラウンドまで処理が完了したら、暗号処理装置1の外部およびテーブル生成手段20に演算完了信号を出力する。制御手段601は、演算完了信号を出力し、かつ暗号処理装置1の外部から暗号文の入力を受け付けることを示す出力受付可能信号が入力された場合、暗号文Cを暗号処理装置1の外部に出力する。また、暗号文Cを暗号処理装置1の外部に出力したら、入力受付可能信号を暗号処理装置1の外部に出力する。また、再び平文Pが入力され、暗号化処理が行われている間は、演算完了信号および入力受付可能信号の出力を止める。
鍵拡張手段602は、暗号鍵Kを基にラウンド鍵を生成し、第一の鍵演算手段604と、第二の鍵演算手段607に出力する。第一の排他的論理和手段603は、平文Pと第二の選択手段50が選択するマスク値との排他的論理和を計算することでマスク値による隠蔽を行い、第一の鍵演算手段604に出力する。次に、第一の鍵演算手段604は、第一の排他的論理和手段603の出力をAddRoundKey処理し、非線形変換手段605に出力する。
非線形変換手段605は、第二の選択手段50が選択するマスク付き非線形変換テーブルを参照し、入力値をSubBytes処理する。このとき、第二の選択手段50が選択するマスク付き非線形変換テーブルは、第一の排他的論理和手段603でデータの各byte部分に付加されたマスク値にそれぞれ対応するテーブルが選択され、入力値を非線形変換し、再びマスク値が付加された値を出力する。非線形変換手段605は、ラウンドが開始ラウンドの場合は第一の鍵演算手段604の結果を入力値とし、開始ラウンドの一つ後のラウンド以降の場合は第二の排他的論理和手段609の結果を入力値とする。
第一の線形変換手段606は、非線形変換手段605の結果を基に、開始ラウンドから最終ラウンドの一つ前のラウンドではShiftRows処理およびMixColumns処理を行い、最終ラウンドではShiftRows処理を行う。そして、第一の線形変換手段606は、その処理結果を第二の鍵演算手段607に出力する。マスク値保持手段610は、第二の選択手段50で選ぶマスク値を1ラウンドの間保持し、次のラウンドになると第二の線形変換手段608へ出力するとともに新たなマスク値を保持する。第二の線形変換手段608は、マスク値保持手段610の出力を基に、開始ラウンドから最終ラウンドの一つ前のラウンドではShiftRows処理およびMixColumns処理を行い、最終ラウンドではShiftRows処理を行う。そして、第二の線形変換手段608は、その処理結果を第二の排他的論理和手段609に出力する。
第二の鍵演算手段607は、第一の線形変換手段606の結果をAddRoundKey処理し、第二の排他的論理和手段609に出力する。第二の排他的論理和手段609は、第二の鍵演算手段607の結果とマスク値と第二の線形変換手段608の結果とを排他的論理和する。そして、第二の排他的論理和手段609は、その排他的論理和を結果を、ラウンドが最終ラウンドの一つ前のラウンドまでは非線形変換手段605に出力し、最終ラウンドの場合は暗号文Cとして外部に出力する。第二の排他的論理和手段609は、第二の線形変換手段608の結果を排他的論理和することでマスク値を除去しつつ、次のマスク値を排他的論理和することで中間値をマスクしている。ただし、最終ラウンドでは、第二の排他的論理和手段609は、第二の線形変換手段608の結果だけ排他的論理和し、マスク値を除去し、暗号文Cとすればよい。
次に、図10を用いて、第一の実施形態における暗号処理装置1の暗号処理方法の暗号化処理フローを説明する。第一の実施形態における暗号化処理は、暗号処理開始時に行う前処理、暗号化処理、およびマスク付き非線形変換テーブル生成処理の3つの処理で構成される。
<前処理>
暗号化を開始すると、ステップS201において、テーブル生成手段20は、n=0と設定する。続いて、ステップS202において、第一の選択手段30は、n番目(n=0,・・・,16)のマスク値およびマスク付き非線形変換テーブルを選択する。次に、ステップS203において、乱数生成手段10は、マスク値となる8bitの乱数rを生成する。
暗号化を開始すると、ステップS201において、テーブル生成手段20は、n=0と設定する。続いて、ステップS202において、第一の選択手段30は、n番目(n=0,・・・,16)のマスク値およびマスク付き非線形変換テーブルを選択する。次に、ステップS203において、乱数生成手段10は、マスク値となる8bitの乱数rを生成する。
ステップS204において、テーブル生成手段20は、生成したマスク値を基にマスク付き非線形変換テーブルを生成し、n番目のマスク値およびマスク付き非線形変換テーブルを書き換える。マスク付き非線形変換テーブルの書き換えが完了したら、ステップS205において、テーブル生成手段20は、n=n+1とする。ステップS206において、暗号処理装置1は、n<16の場合は再びステップS202へと戻り、同様に、マスク値およびマスク付き非線形変換テーブルを生成する。一方、ステップS202からS205のステップを16回繰り返し、ステップS205において、n=16となった場合には、前処理を完了とし、続いて以下の暗号化処理とマスク付き非線形変換テーブル生成処理を並行動作する。
<マスク付き非線形変換テーブル生成処理>
ステップS220において、テーブル生成手段20は、マスク付き非線形変換テーブル生成が完了していないことを示すために、m=0とする。続いて、ステップS221において、第一の選択手段30は、n番目のマスク値およびマスク付き非線形変換テーブルを選択する。ステップS222において、乱数生成手段10は、マスク値として8bitの乱数rを生成する。ステップS223において、テーブル生成手段20は、前処理と同様にマスク付き非線形変換テーブルを生成し、n番目のマスク値およびマスク付き非線形変換テーブルを書き換える。マスク値およびマスク付き非線形変換テーブルの書き換えが完了したら、ステップS224において、テーブル生成手段20は、m=1とし、マスク付き非線形変換テーブル生成処理を完了とする。
ステップS220において、テーブル生成手段20は、マスク付き非線形変換テーブル生成が完了していないことを示すために、m=0とする。続いて、ステップS221において、第一の選択手段30は、n番目のマスク値およびマスク付き非線形変換テーブルを選択する。ステップS222において、乱数生成手段10は、マスク値として8bitの乱数rを生成する。ステップS223において、テーブル生成手段20は、前処理と同様にマスク付き非線形変換テーブルを生成し、n番目のマスク値およびマスク付き非線形変換テーブルを書き換える。マスク値およびマスク付き非線形変換テーブルの書き換えが完了したら、ステップS224において、テーブル生成手段20は、m=1とし、マスク付き非線形変換テーブル生成処理を完了とする。
<暗号化処理>
ステップS210において、要素選択手段501は、n番目以外のマスク値およびマスク付き非線形変換テーブルを選択する。ステップS211では、演算手段60は、平文Pが入力されるまで待機する。平文Pが入力されたら、ステップS212において、演算手段60は、ステップS210で選択したn番目以外のマスク値およびマスク付き非線形変換テーブルを用いて、平文Pを暗号化する。暗号化完了後、ステップS213において、演算手段60は、m=0、つまりマスク付き非線形変換テーブル生成が完了していない場合は、再びステップS211において平文Pの入力を待つ。一方、m=1となり、マスク付き非線形変換テーブル生成が完了している場合は、演算手段60は、暗号化処理を完了とする。
ステップS210において、要素選択手段501は、n番目以外のマスク値およびマスク付き非線形変換テーブルを選択する。ステップS211では、演算手段60は、平文Pが入力されるまで待機する。平文Pが入力されたら、ステップS212において、演算手段60は、ステップS210で選択したn番目以外のマスク値およびマスク付き非線形変換テーブルを用いて、平文Pを暗号化する。暗号化完了後、ステップS213において、演算手段60は、m=0、つまりマスク付き非線形変換テーブル生成が完了していない場合は、再びステップS211において平文Pの入力を待つ。一方、m=1となり、マスク付き非線形変換テーブル生成が完了している場合は、演算手段60は、暗号化処理を完了とする。
暗号化処理および、マスク付き非線形変換テーブル生成処理がどちらも完了した場合、ステップS207において、テーブル生成手段20は、n=(n+1) mod 17とし、暗号処理装置1は、再び暗号化処理とマスク付き非線形変換テーブル生成を行う。
次に、第一の実施形態の効果を説明する。図11に特許文献1、特許文献2、特許文献3および本実施形態における暗号化処理のタイミングチャートを示し、処理速度に与える効果を説明する。一般的にAESにおける平文Pの暗号化は128bit(1ブロック)を11サイクルで処理され、特許文献1~3および本実施形態ともに11サイクルで暗号化する。
特許文献1および2は、暗号化処理とマスク付き非線形変換テーブル生成処理をシーケンシャルに行うため、処理速度が低下してしまっていた。図11に示す例では、特許文献1は、1ブロックの暗号化処理を行った後、256サイクルのマスク付き非線形変換テーブル生成処理を行う。従って、処理速度は大幅に低下し、例えば24ブロック処理する場合は、67573サイクルが必要となる。
また、特許文献2は、24ブロックの暗号化ごとにデータ生成命令が入力され、マスク付き非線形変換テーブルを生成する場合は、本実施形態と同一の頻度でマスク付き非線形変換テーブルが更新される。24ブロックの暗号化処理を264サイクルかけ行った後、データ生成命令を受け、新たなマスク付き非線形変換テーブルを256サイクルかけて生成するため、計520サイクルかかる。
一方、特許文献3では、マスク付き非線形変換テーブル生成処理を行わないため、264サイクルで24ブロックの暗号化を行うことができ、サイドチャネル攻撃対策を行わない場合に24ブロックの暗号化に必要な264サイクルと同等の処理速度となる。
本実施形態も特許文献1および2と同様に、テーブル生成手段20が、256サイクルかけ一つの新しいマスク付き非線形変換テーブルを生成する。しかし、記憶手段40が、演算手段60が参照するマスク付き非線形変換テーブルと、テーブル生成手段20が書き換えるマスク付き非線形変換テーブルを持つため、暗号化処理とマスク付き非線形変換テーブル生成処理を並行して処理できる。図11に示す例では、24ブロックの暗号化を行う264サイクルの間に、マスク付き非線形変換テーブルを書き換える。従って、本実施形態は、24ブロックの暗号化を264サイクルで行うことができ、サイドチャネル攻撃対策を行わない場合に24ブロックの暗号化に必要な264サイクルと同等の処理速度となる。
また、前処理は、暗号処理装置1の起動時などに1回のみ行えば良く、多数の平文Pを暗号化する場合には、処理速度に対する前処理の影響はほとんど無視できる。従って、サイドチャネル攻撃対策をしない場合と比べて、処理速度をほとんど低下させることなく、マスキング手法を適用することができる。
次に、回路規模に与える効果を説明する。サイドチャネル攻撃対策をしない場合、非線形変換テーブルは、4kbyteのROMが必要となる。一方、本実施形態は、記憶手段40に必要な4kbyte+256byteのRAMおよび、初期非線形変換テーブルに必要な256byteのROMで実装することが可能であり、それほど回路規模を増加させることなく、マスキング手法を適用することができる。
次に、サイドチャネル攻撃耐性に与える効果を説明する。特許文献3においては、マスク値が固定値であったため、マスク値が変化する場合に比べて、サイドチャネル攻撃耐性が低下していた。一方、本実施形態は、24ブロックの暗号化ごとに使用するマスク値の一つが変化するため、暗号化処理を行うほど、使用するマスク値の種類が増加する。サイドチャネル攻撃は、多数の暗号化処理の消費電力波形や電磁波波形を必要とする。本実施形態では、サイドチャネル攻撃をするために暗号化処理を行うほど、マスク値の種類が増加し、サイドチャネル攻撃耐性を向上させることができる。
以上のように、図4の乱数生成手段10は、乱数を生成する。テーブル生成手段20は、上記の乱数をマスク値として、マスク付き非線形変換テーブルを生成する。記憶手段40は、上記のマスク値およびマスク付き非線形変換テーブルを記憶する。第一の選択手段30は、記憶手段40に記憶されているマスク値およびマスク付き非線形変換テーブルのうちの書き換える一組を選択する。演算手段60は、上記のマスク値およびマスク付き変換テーブルを用いて演算を行う。第二の選択手段50は、記憶手段40に記憶されているマスク値およびマスク付き非線形変換テーブルのうちの演算手段60が必要とするマスク値およびマスク付き非線形変換テーブルを選択する。
記憶手段40は、演算手段60が必要とするマスク値およびマスク付き非線形変換テーブルの数に加えて、1つ以上のマスク値およびマスク付き非線形変換テーブルを記憶する。第一の選択手段30と第二の選択手段50は、異なるマスク値およびマスク付き変換テーブルを選択する。図10のように、テーブル生成手段20によるマスク付き非線形変換テーブル生成と演算手段60による演算は、並行して処理される。第一の選択手段30および第二の選択手段50は、記憶手段40の書き換え完了後、書き換えたマスク値およびマスク付き非線形変換テーブルと異なるマスク値およびマスク付き非線形変換テーブルを選択する。
図4の暗号処理装置1は、ブロック暗号を処理する。暗号処理装置1が処理するアルゴリズムは、例えば、AESまたはDESまたはSM4である。演算手段60が必要とするマスク付き非線形変換テーブルの数は、AESでは16個である。演算手段60が必要とするマスク付き非線形変換テーブルの数は、DESでは8個である。演算手段60が必要とするマスク付き非線形変換テーブルの数は、SM4では4個である。
図9では、演算手段60は、マスク値およびマスク付き変換テーブルを用いて、平文を暗号化し、暗号文を生成する。図9の暗号化では、制御手段601は、制御を行う。鍵拡張手段602は、暗号鍵を基にラウンド鍵を生成する。マスク値保持手段610は、マスク値を保持する。第一の排他的論理和手段603は、記憶手段40に記憶されたマスク値と平文を排他的論理和する。第一の鍵演算手段604は、第一の排他的論理和手段603の出力とラウンド鍵を用いて演算する。
非線形変換手段605は、入力をマスク付き非線形変換テーブルを参照して非線形変換する。第一の線形変換手段606は、非線形変換手段605の出力を線形変換する。第二の鍵演算手段607は、第一の線形変換手段606の出力とラウンド鍵を用いて演算する。第二の線形変換手段608は、マスク値保持手段610に保持されたマスク値を線形変換する。第二の排他的論理和手段609は、第二の鍵演算手段607の出力と第二の線形変換手段608の出力と記憶手段40に記憶されたマスク値を排他的論理和する。
次に、AESの暗号化の場合を説明する。第一の線形変換手段606は、開始ラウンドから最終ラウンドの一つ前のラウンドではShiftRows処理およびMixColumns処理を行い、最終ラウンドではShiftRows処理を行う。第二の線形変換手段608は、開始ラウンドから最終ラウンドの一つ前のラウンドではShiftRows処理およびMixColumns処理を行い、最終ラウンドではShiftRows処理を行う。第一の鍵演算手段604は、AddRoundKey処理を行う。第二の鍵演算手段607は、AddRoundKey処理を行う。非線形変換手段605は、開始ラウンドでは第一の鍵演算手段604の出力を入力とし、開始ラウンドの一つ後のラウンド以降では第二の排他的論理和手段609の出力を入力とし、SubBytes処理を行う。
以上、本実施形態によれば、暗号処理装置1は、暗号化処理と並行してマスク付き非線形変換テーブルを生成する。これにより、回路規模の増加を抑え、処理速度を低下させることなく、使用されるマスク値およびマスク付き非線形変換テーブルの種類を増加させ、サイドチャネル攻撃耐性を向上させることができる。
(第二の実施形態)
以下に、図面を参照して、第二の実施形態を説明する。なお、本実施形態の説明に用いる図面に関し、同じ機能を持つものについては同じ参照符号をつけ、説明を省く。
以下に、図面を参照して、第二の実施形態を説明する。なお、本実施形態の説明に用いる図面に関し、同じ機能を持つものについては同じ参照符号をつけ、説明を省く。
まず、AESの復号化処理の概要について説明する。ここでは、AESの鍵長は128bitであるものとして説明を行うが、AESがサポートしている鍵長128bit、192bit、256bitであればいずれでも構わない。
AESの復号化処理手順を図12に示す。ただし、図12におけるInvSubBytes処理と、InvShiftRows処理と、InvMixColumns処理は、「FIPS 197」にてサブブロック演算として規定される同名の処理である。それぞれの処理は、第一の実施形態で説明したSubBytes処理と、ShiftRows処理と、MixColumns処理の逆変換を行う処理である。また、InvSubBytes処理は、SubBytes処理と同様に、非線形変換テーブルを用いてテーブル変換で行われることが多い。非線形変換テーブルは、入力8bitと出力8bitの対応関係を示すテーブルであり、8bit×256要素で構成される。
復号化を開始すると、まずステップS30において、AddRoundKey処理が行われる。続いて、ステップS31において、AddRoundKey処理の結果を基にInvShiftRows処理が行われる。次に、ステップS32において、InvSubBytes処理が行われる。次に、ステップS33において、InvSubBytes処理の結果をAddRoundKey処理する。続いて、ステップS34において、AESのラウンドが判断される。判断の結果、AESのラウンドが1から9ラウンドの場合は、ステップS35において、InvMixColumns処理が行われ、再びステップS32に戻る。一方で、ステップS34において、AESのラウンドが10ラウンドの場合は、AddRoundKey処理の結果を平文として出力し、復号化を終了とする。
第二の実施形態の暗号処理装置1の構成は、第一の実施形態と同一であり、図4に示される。暗号処理装置1は、乱数生成手段10と、テーブル生成手段20と、第一の選択手段30と、記憶手段40と、第二の選択手段50と、演算手段60を有する。暗号処理装置1は、入力された暗号文Cと、暗号鍵Kを基に、平文Pを出力する。ただし、暗号文Cは、暗号処理装置1から入力受付可能信号が出力された時のみ入力される。第二の実施形態の暗号処理装置1は、第一の実施形態の暗号処理装置1の構成に対し、テーブル生成手段20および演算手段60の機能が異なる。以下、機能の異なる手段および追加された手段について説明する。
暗号処理装置1における典型的な復号化処理の流れを説明する。復号化処理は、暗号処理装置1が起動時に行う前処理と、復号化処理と、マスク付き非線形変換テーブル生成処理の3つの処理で構成される。復号化処理とマスク付き非線形変換テーブル生成処理は、前処理完了後に、二つが並行して処理される。
<前処理>
暗号処理装置1における前処理の流れを説明する。前処理では、テーブル生成手段20は、演算手段60が必要とする数のマスク値およびマスク付き非線形変換テーブルを生成し、記憶手段40に記憶する。例えば、AESでは16個のマスク値およびマスク付き非線形変換テーブルを生成すればよい。
暗号処理装置1における前処理の流れを説明する。前処理では、テーブル生成手段20は、演算手段60が必要とする数のマスク値およびマスク付き非線形変換テーブルを生成し、記憶手段40に記憶する。例えば、AESでは16個のマスク値およびマスク付き非線形変換テーブルを生成すればよい。
初めに、乱数生成手段10が、8bitの乱数rを生成し、マスク値としてテーブル生成手段20に入力する。テーブル生成手段20は、「FIPS 197」で規定されたInvSubBytesの入出力結果をテーブル化した初期非線形変換テーブルを保持している。テーブル生成手段20は、マスク値と初期非線形変換テーブルの配列データIS[0],・・・,IS[255]を基に、以下のようなマスク付き非線形変換テーブルの配列データISm[0],・・・,ISm[255]を生成する。
ISm[x]=IS[x+r]+r
(x=0,1,・・・,255)
ISm[x]=IS[x+r]+r
(x=0,1,・・・,255)
上記で生成したマスク値およびマスク付き非線形変換テーブルは、第一の選択手段30へ出力され、第一の選択手段30を介し、記憶手段40に記憶される。テーブル生成手段20は、記憶手段40に記憶するマスク値およびマスク付き非線形変換テーブルの番号を示すインデックス値iを生成し、第一の選択手段30と、第二の選択手段50に出力する。その後、テーブル生成手段20は、第一の選択手段30によって選択される記憶手段40のマスク値およびマスク付き非線形変換テーブルを書き換える。前処理開始時は、テーブル生成手段20は、インデックス値としてi=0を出力するため、第一の選択手段30によってマスク値m0およびマスク付き非線形変換テーブルISm0が選択される。選択したマスク値m0およびマスク付き非線形変換テーブルISm0の書き換えが完了後、テーブル生成手段20は、インデックス値をi=i+1として第一の選択手段30に出力し、次のマスク付き非線形変換テーブルの生成を開始する。
以降、テーブル生成手段20は、同様の手順でマスク付き非線形変換テーブルを生成し、インデックス値iに従って第一の選択手段30が選択するマスク値およびマスク付き非線形変換テーブルを書き換える。テーブル生成手段20は、以上の操作を繰り返し、演算手段60がAESの演算を行うために必要な16個のマスク値およびマスク付き非線形変換テーブルを記憶手段40に記憶する。その後、テーブル生成手段20は、i=i+1=16とした後、前処理完了信号を演算手段60に出力し、前処理を完了する。具体的には、マスク値m0,・・・,m15およびマスク付き非線形変換テーブルISm0,・・・,ISm15が順番に記憶手段40に記憶され、前処理が完了する。
<マスク付き非線形変換テーブル生成処理>
暗号処理装置1におけるマスク付き非線形変換テーブル生成処理の流れを説明する。マスク付き非線形変換テーブル生成処理は、前処理完了後に行われ、復号化処理と並行して処理する。
暗号処理装置1におけるマスク付き非線形変換テーブル生成処理の流れを説明する。マスク付き非線形変換テーブル生成処理は、前処理完了後に行われ、復号化処理と並行して処理する。
テーブル生成手段20は、前処理完了後、前処理と同様に、乱数生成手段10が生成した8bitの乱数rをマスク値として、新しいマスク付き非線形変換テーブルを生成する。前処理完了直後は、インデックス値がi=16となるため、第一の選択手段30は、16番目のマスク値m16およびマスク付き非線形変換テーブルISm16を選択する。テーブル生成手段20は、マスク値およびマスク付き非線形変換テーブルの書き換えが完了し、かつ演算手段60が復号化処理を完了した場合、i=(i+1) mod 17とする。
続いて、テーブル生成手段20は、新しいマスク値およびマスク付き非線形変換テーブルの生成を開始する。テーブル生成手段20は、乱数生成手段10が生成した8bitの乱数rをマスク値として、マスク付き非線形変換テーブルを生成する。第一の選択手段30は、テーブル生成手段20が出力するインデックス値iを基に、マスク値miおよびマスク付き非線形変換テーブルISmiを選択する。テーブル生成手段20は、マスク値およびマスク付き非線形変換テーブルの書き換えが完了し、かつ演算手段60から演算完了信号を受信した場合、インデックス値をi=(i+1) mod 17とする。
具体的には、前処理完了直後は、インデックス値はi=16であるため、第一の選択手段30は、マスク値m16およびマスク付き非線形変換テーブルISm16を選択する。マスク付き非線形変換テーブルの書き換え完了後、インデックス値iは0となるため、第一の選択手段30は、マスク値m0およびマスク付き非線形変換テーブルISm0を選択し、テーブル生成手段20はマスク付き非線形変換テーブルを生成し始める。以上の操作を繰り返すことで、マスク値およびマスク付き非線形変換テーブルは順番に書き換えられ、復号化処理を行うほど、演算手段60が使用するマスク値とマスク付き非線形変換テーブルの種類が増加する。
<復号化処理>
次に、暗号処理装置1における復号化処理の流れを説明する。復号化処理は、前処理完了後に行われ、マスク付き非線形変換テーブル生成処理と並行して処理する。復号化処理において、演算手段60は、入力された暗号文Cと、暗号鍵Kと、記憶手段40に記憶するマスク値およびマスク付き非線形変換テーブルから、平文Pを出力する。
次に、暗号処理装置1における復号化処理の流れを説明する。復号化処理は、前処理完了後に行われ、マスク付き非線形変換テーブル生成処理と並行して処理する。復号化処理において、演算手段60は、入力された暗号文Cと、暗号鍵Kと、記憶手段40に記憶するマスク値およびマスク付き非線形変換テーブルから、平文Pを出力する。
演算手段60における処理を説明する。図13に第二の実施形態における演算手段60の構成例を示す。演算手段60は、制御手段601と、鍵拡張手段602と、第一の排他的論理和手段603と、第一の鍵演算手段604と、非線形変換手段605と、第一の線形変換手段606と、第二の鍵演算手段607を有する。さらに、演算手段60は、第二の線形変換手段608と、第二の排他的論理和手段609と、マスク値保持手段610を有する。第二の実施形態における演算手段60は、第一の実施形態における演算手段60とは、処理をする流れと、非線形変換手段605と、第一の線形変換手段606と、第二の線形変換手段608で行う処理と、マスク値保持手段610の位置が異なる。
制御手段601は、前処理完了信号が入力されると、入力受付可能信号を暗号処理装置1の外部に出力する。演算手段60は、暗号文Cが入力された場合に、復号化処理を開始する。制御手段601は、復号化処理が開始すると、入力受付可能信号の出力を止め、現在のラウンドを、非線形変換手段605と、第一の線形変換手段606と、第二の線形変換手段608と、第二の排他的論理和手段609に出力する。また、制御手段601は、最終ラウンドまで処理が完了したら、テーブル生成手段20および暗号処理装置1の外部に演算完了信号を出力する。制御手段601は、演算完了信号を出力し、かつ暗号処理装置1の外部から平文の入力を受け付けることを示す出力受付可能信号が入力された場合、平文Pを暗号処理装置1の外部に出力する。制御手段601は、平文Pを暗号処理装置1の外部に出力したら、入力受付可能信号を暗号処理装置1の外部に出力する。また、制御手段601は、再び平文Pが入力され、復号化処理が行われている間は、入力受付可能信号および演算完了信号を出力しない。
鍵拡張手段602は、暗号鍵Kを基にラウンド鍵を生成し、第一の鍵演算手段604と、第二の鍵演算手段607に出力する。第二の線形変換手段608は、第二の選択手段50で選択するマスク値に対し、開始ラウンドの場合はInvShiftRows処理を行い、2ラウンドから最終ラウンドまでの場合はInvShiftRows処理、およびInvMixColumns処理を行う。
マスク値保持手段610は、第二の選択手段50で選択するマスク値を1ラウンドの間保持し、次ラウンドで第一の排他的論理和手段603と第二の排他的論理和手段609へ出力する。第二の排他的論理和手段609は、入力と第二の線形変換手段608とマスク値保持手段610で保持されるマスク値の排他的論理和を計算し、第二の鍵演算手段607に出力する。第二の排他的論理和手段609は、制御手段601から現在のラウンドを受け取り、開始ラウンドの場合は暗号文Cを入力とし、2ラウンドから最終ラウンドまでの場合は非線形変換手段605の出力を入力として選択する。
第二の鍵演算手段607は、第二の排他的論理和手段609の出力をAddRoundKey処理し、第一の線形変換手段606に出力する。第一の線形変換手段606は、第二の鍵演算手段607の出力に対し、開始ラウンドではInvShiftRows処理を行い、2ラウンドから最終ラウンドまでではInvShiftRows処理、およびInvMixColumns処理を行ったものを出力する。
非線形変換手段605は、第二の選択手段50が選択するマスク付き非線形変換テーブルを参照し、入力値をInvSubBytes処理する。このとき、第二の選択手段50が選択するマスク付き非線形変換テーブルは、第二の排他的論理和手段609でデータの各byte部分に付加されたマスク値に対応するテーブルが選択され、入力値を非線形変換し、再びマスク値が付加された値を出力する。非線形変換手段605は、最初から最後の一つ前のラウンドの場合は、第二の排他的論理和手段609に出力し、最後のラウンドの場合は、第一の鍵演算手段604に結果を出力する。
第一の鍵演算手段604は、非線形変換手段605の出力をAddRoundKey処理し、第一の排他的論理和手段603に出力する。第一の排他的論理和手段603は、第一の鍵演算手段604とマスク値保持手段610に保持されるマスク値の排他的論理和を計算し、平文Pとして暗号処理装置1の外部に出力する。
次に、図14を用いて、第二の実施形態における暗号処理装置1の暗号処理方法の復号化処理フローを説明する。第二の実施形態における復号化処理は、復号化処理開始時に行う前処理と、復号化処理と、マスク付き非線形変換テーブル生成処理の3つの処理で構成される。第一の実施形態の暗号化処理に対して、前処理では、ステップS202とS204が、復号化処理では、ステップS210とS211とS212が、マスク付き非線形変換テーブル生成処理では、ステップS221とS223の処理が異なるものとなっている。以下、図14が図10と異なる点を説明する。
<前処理>
前処理では、ステップS202において、第一の選択手段30は、n番目のマスク値およびマスク付き非線形変換テーブルを選択する。次に、ステップS203において、乱数生成手段10は、マスク値となる8bitの乱数rを生成する。次に、ステップS204において、テーブル生成手段20は、生成したマスク値を基にマスク付き非線形変換テーブルを生成し、n番目のマスク値およびマスク付き非線形変換テーブルを書き換える。以降は、第一の実施形態と同様に、テーブル生成手段20は、ステップS202からS205のステップを16回繰り返し、ステップS205において、n=16となった場合には、前処理を完了とする。続いて、以下の復号化処理とマスク付き非線形変換テーブル生成処理を並行動作する。
前処理では、ステップS202において、第一の選択手段30は、n番目のマスク値およびマスク付き非線形変換テーブルを選択する。次に、ステップS203において、乱数生成手段10は、マスク値となる8bitの乱数rを生成する。次に、ステップS204において、テーブル生成手段20は、生成したマスク値を基にマスク付き非線形変換テーブルを生成し、n番目のマスク値およびマスク付き非線形変換テーブルを書き換える。以降は、第一の実施形態と同様に、テーブル生成手段20は、ステップS202からS205のステップを16回繰り返し、ステップS205において、n=16となった場合には、前処理を完了とする。続いて、以下の復号化処理とマスク付き非線形変換テーブル生成処理を並行動作する。
<マスク付き非線形変換テーブル生成処理>
ステップS220において、テーブル生成手段20は、マスク付き非線形変換テーブル生成が完了していないことを示すために、m=0とする。続いて、ステップS221において、第一の選択手段30は、n番目のマスク付き非線形変換テーブルを選択する。ステップS222において、乱数生成手段10は、マスク値として8bitの乱数rを生成する。ステップS223において、テーブル生成手段20は、前処理と同様に、マスク付き非線形変換テーブルを生成し、n番目のマスク値およびマスク付き非線形変換テーブルを書き換える。マスク値およびマスク付き非線形変換テーブルの書き換えが完了したら、ステップS224において、テーブル生成手段20は、m=1とし、マスク付き非線形変換テーブル生成処理を完了とする。
ステップS220において、テーブル生成手段20は、マスク付き非線形変換テーブル生成が完了していないことを示すために、m=0とする。続いて、ステップS221において、第一の選択手段30は、n番目のマスク付き非線形変換テーブルを選択する。ステップS222において、乱数生成手段10は、マスク値として8bitの乱数rを生成する。ステップS223において、テーブル生成手段20は、前処理と同様に、マスク付き非線形変換テーブルを生成し、n番目のマスク値およびマスク付き非線形変換テーブルを書き換える。マスク値およびマスク付き非線形変換テーブルの書き換えが完了したら、ステップS224において、テーブル生成手段20は、m=1とし、マスク付き非線形変換テーブル生成処理を完了とする。
<復号化処理>
ステップS210において、要素選択手段501は、n番目以外のマスク付き非線形変換テーブルを選択する。ステップS211では、演算手段60は、暗号文Cが入力されるまで待機する。暗号文Cが入力されたら、ステップS212において、演算手段60は、ステップS210で選択したn番目以外のマスク付き非線形変換テーブルを用いて、暗号文Cを復号化する。復号化完了後、ステップS213において、演算手段60は、m=0、つまりマスク付き非線形変換テーブル生成が完了していない場合は、再びステップS211において暗号文Cの入力を待つ。一方、m=1となり、マスク付き非線形変換テーブル生成が完了している場合は、演算手段60は、復号化処理を完了とする。
ステップS210において、要素選択手段501は、n番目以外のマスク付き非線形変換テーブルを選択する。ステップS211では、演算手段60は、暗号文Cが入力されるまで待機する。暗号文Cが入力されたら、ステップS212において、演算手段60は、ステップS210で選択したn番目以外のマスク付き非線形変換テーブルを用いて、暗号文Cを復号化する。復号化完了後、ステップS213において、演算手段60は、m=0、つまりマスク付き非線形変換テーブル生成が完了していない場合は、再びステップS211において暗号文Cの入力を待つ。一方、m=1となり、マスク付き非線形変換テーブル生成が完了している場合は、演算手段60は、復号化処理を完了とする。
復号化処理および、マスク付き非線形変換テーブル生成処理がどちらも完了した場合、ステップS207において、テーブル生成手段20は、n=(n+1) mod 17とし、再び復号化処理とマスク付き非線形変換テーブル生成を行う。
第二の実施形態による復号化処理の効果は、第一の実施形態で説明した暗号化処理の効果と同様であるため、説明を省略する。
以上のように、図13では、演算手段60は、マスク値およびマスク付き変換テーブルを用いて、暗号文を復号化し、平文を生成する。図13の復号化では、制御手段601は、制御を行う。鍵拡張手段602は、暗号鍵を基にラウンド鍵を生成する。第二の線形変換手段608は、マスク値を線形変換する。マスク値保持手段610は、マスク値を保持する。第二の排他的論理和手段609は、入力とマスク値保持手段610に保持されているマスク値と第二の線形変換手段608の出力を排他的論理和する。第二の鍵演算手段607は、第二の排他的論理和手段609の出力とラウンド鍵を用いて演算する。第一の線形変換手段606は、第二の鍵演算手段607の出力を線形変換する。
非線形変換手段605は、第一の線形変換手段606の出力をマスク付き非線形変換テーブルを参照して非線形変換する。第一の鍵演算手段604は、非線形変換手段605の出力とラウンド鍵を用いて演算する。第一の排他的論理和手段603は、第一の鍵演算手段604の出力とマスク値保持手段610に保持されているマスク値を排他的論理和する。
次に、AESの復号化の場合を説明する。第二の排他的論理和手段609は、開始ラウンドでは暗号文を入力とし、開始ラウンドの一つ後のラウンド以降では非線形変換手段605の出力を入力とする。第一の線形変換手段606は、開始ラウンドではInvShiftRows処理を行い、開始ラウンドの一つ後のラウンド以降ではInvShiftRows処理およびInvMixColumns処理を行う。第二の線形変換手段608は、開始ラウンドではInvShiftRows処理を行い、開始ラウンドの一つ後のラウンド以降ではInvShiftRows処理およびInvMixColumns処理を行う。第二の鍵演算手段607は、AddRoundKey処理を行う。第一の鍵演算手段604は、AddRoundKey処理を行う。非線形変換手段605は、InvSubBytes処理を行う。
以上、本実施形態によれば、暗号処理装置1は、復号化処理と並行してマスク付き非線形変換テーブルを生成する。これにより、回路規模の増加を抑え、処理速度を低下させることなく、使用されるマスク値およびマスク付き非線形変換テーブルの種類を増加させ、サイドチャネル攻撃耐性を向上させることができる。
(その他の実施形態)
本開示は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本開示は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
なお、上述の実施形態は、何れも本開示を実施するにあたっての具体例を示したものに過ぎず、これらによって本開示の技術的範囲が限定的に解釈されない。すなわち、本開示はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
本実施形態の開示は、以下の構成、方法およびプログラムを含む。
(構成1)
乱数を生成する乱数生成手段と、
前記乱数をマスク値として、マスク付き非線形変換テーブルを生成するテーブル生成手段と、
前記マスク値および前記マスク付き非線形変換テーブルを記憶する記憶手段と、
前記記憶手段に記憶されている前記マスク値および前記マスク付き非線形変換テーブルのうちの書き換える一組を選択する第一の選択手段と、
前記マスク値および前記マスク付き変換テーブルを用いて演算を行う演算手段と、
前記記憶手段に記憶されている前記マスク値および前記マスク付き非線形変換テーブルのうちの前記演算手段が必要とする前記マスク値および前記マスク付き非線形変換テーブルを選択する第二の選択手段とを有し、
前記記憶手段は、前記演算手段が必要とする前記マスク値および前記マスク付き非線形変換テーブルの数に加えて、1つ以上の前記マスク値および前記マスク付き非線形変換テーブルを記憶し、
前記第一の選択手段と前記第二の選択手段は、異なる前記マスク値および前記マスク付き変換テーブルを選択し、
前記テーブル生成手段による前記マスク付き非線形変換テーブル生成と前記演算手段による演算は、並行して処理され、
前記第一の選択手段および前記第二の選択手段は、前記記憶手段の書き換え完了後、書き換えた前記マスク値および前記マスク付き非線形変換テーブルと異なる前記マスク値および前記マスク付き非線形変換テーブルを選択することを特徴とする暗号処理装置。
(構成2)
前記演算手段は、前記マスク値および前記マスク付き変換テーブルを用いて、平文を暗号化し、暗号文を生成することを特徴とする構成1に記載の暗号処理装置。
(構成3)
前記演算手段は、前記マスク値および前記マスク付き変換テーブルを用いて、暗号文を復号化し、平文を生成することを特徴とする構成1または2に記載の暗号処理装置。
(構成4)
前記暗号処理装置は、ブロック暗号を処理することを特徴とする構成1~3のいずれか1項に記載の暗号処理装置。
(構成5)
前記暗号処理装置が処理するアルゴリズムは、AESまたはDESまたはSM4であることを特徴とする構成4に記載の暗号処理装置。
(構成6)
暗号化では、
前記演算手段は、
制御する制御手段と、
暗号鍵を基にラウンド鍵を生成する鍵拡張手段と、
マスク値を保持するマスク値保持手段と、
前記記憶手段に記憶された前記マスク値と平文を排他的論理和する第一の排他的論理和手段と、
前記第一の排他的論理和手段の出力と前記ラウンド鍵を用いて演算する第一の鍵演算手段と、
入力を前記マスク付き非線形変換テーブルを参照して非線形変換する非線形変換手段と、
前記非線形変換手段の出力を線形変換する第一の線形変換手段と、
前記第一の線形変換手段の出力と前記ラウンド鍵を用いて演算する第二の鍵演算手段と、
前記マスク値保持手段に保持されたマスク値を線形変換する第二の線形変換手段と、
前記第二の鍵演算手段の出力と前記第二の線形変換手段の出力と前記記憶手段に記憶された前記マスク値を排他的論理和する第二の排他的論理和手段と
を有することを特徴とする構成5に記載の暗号処理装置。
(構成7)
前記演算手段が必要とするマスク付き非線形変換テーブルの数は、AESでは16個であることを特徴とする構成5または6に記載の暗号処理装置。
(構成8)
AESの暗号化では、
前記第一の線形変換手段は、開始ラウンドから最終ラウンドの一つ前のラウンドではShiftRows処理およびMixColumns処理を行い、最終ラウンドではShiftRows処理を行い、
前記第二の線形変換手段は、開始ラウンドから最終ラウンドの一つ前のラウンドではShiftRows処理およびMixColumns処理を行い、最終ラウンドではShiftRows処理を行い、
前記第一の鍵演算手段は、AddRoundKey処理を行い、
前記第二の鍵演算手段は、AddRoundKey処理を行い、
前記非線形変換手段は、開始ラウンドでは前記第一の鍵演算手段の出力を入力とし、開始ラウンドの一つ後のラウンド以降では前記第二の排他的論理和手段の出力を入力とし、SubBytes処理を行うことを特徴とする構成6に記載の暗号処理装置。
(構成9)
復号化では、
前記演算手段は、
制御する制御手段と、
暗号鍵を基にラウンド鍵を生成する鍵拡張手段と、
マスク値を線形変換する第二の線形変換手段と、
前記マスク値を保持するマスク値保持手段と、
入力と前記マスク値保持手段に保持されているマスク値と前記第二の線形変換手段の出力を排他的論理和する第二の排他的論理和手段と、
前記第二の排他的論理和手段の出力と前記ラウンド鍵を用いて演算する第二の鍵演算手段と、
前記第二の鍵演算手段の出力を線形変換する第一の線形変換手段と、
前記第一の線形変換手段の出力を前記マスク付き非線形変換テーブルを参照して非線形変換する非線形変換手段と、
前記非線形変換手段の出力と前記ラウンド鍵を用いて演算する第一の鍵演算手段と、
前記第一の鍵演算手段の出力と前記マスク値保持手段に保持されているマスク値を排他的論理和する第一の排他的論理和手段と
を有することを特徴とする構成5に記載の暗号処理装置。
(構成10)
AESの復号化では、
前記第二の排他的論理和手段は、開始ラウンドでは暗号文を入力とし、開始ラウンドの一つ後のラウンド以降では前記非線形変換手段の出力を入力とし、
前記第一の線形変換手段は、開始ラウンドではInvShiftRows処理を行い、開始ラウンドの一つ後のラウンド以降ではInvShiftRows処理およびInvMixColumns処理を行い、
前記第二の線形変換手段は、開始ラウンドではInvShiftRows処理を行い、開始ラウンドの一つ後のラウンド以降ではInvShiftRows処理およびInvMixColumns処理を行い、
前記第二の鍵演算手段は、AddRoundKey処理を行い、
前記第一の鍵演算手段は、AddRoundKey処理を行い、
前記非線形変換手段は、InvSubBytes処理を行うことを特徴とする構成9に記載の暗号処理装置。
(構成11)
前記演算手段が必要とするマスク付き非線形変換テーブルの数は、DESでは8個であることを特徴とする構成5に記載の暗号処理装置。
(構成12)
前記演算手段が必要とするマスク付き非線形変換テーブルの数は、SM4では4個であることを特徴とする構成5に記載の暗号処理装置。
(方法1)
乱数を生成する乱数生成ステップと、
前記乱数をマスク値として、マスク付き非線形変換テーブルを生成するテーブル生成ステップと、
前記マスク値および前記マスク付き非線形変換テーブルを記憶手段に記憶する記憶ステップと、
前記記憶手段に記憶されている前記マスク値および前記マスク付き非線形変換テーブルのうちの書き換える一組を選択する第一の選択ステップと、
前記マスク値および前記マスク付き変換テーブルを用いて演算を行う演算ステップと、
前記記憶手段に記憶されている前記マスク値および前記マスク付き非線形変換テーブルのうちの前記演算ステップで必要とする前記マスク値および前記マスク付き非線形変換テーブルを選択する第二の選択ステップとを有し、
前記記憶ステップでは、前記演算ステップで必要とする前記マスク値および前記マスク付き非線形変換テーブルの数に加えて、1つ以上の前記マスク値および前記マスク付き非線形変換テーブルを前記記憶手段に記憶し、
前記第一の選択ステップと前記第二の選択ステップでは、異なる前記マスク値および前記マスク付き変換テーブルを選択し、
前記テーブル生成ステップと前記演算ステップは、並行して処理され、
前記第一の選択ステップおよび前記第二の選択ステップでは、前記記憶手段の書き換え完了後、書き換えた前記マスク値および前記マスク付き非線形変換テーブルと異なる前記マスク値および前記マスク付き非線形変換テーブルを選択することを特徴とする暗号処理装置の暗号処理方法。
(プログラム1)
コンピュータを、構成1~12のいずれか1項に記載された暗号処理装置の各手段として機能させるためのプログラム。
(構成1)
乱数を生成する乱数生成手段と、
前記乱数をマスク値として、マスク付き非線形変換テーブルを生成するテーブル生成手段と、
前記マスク値および前記マスク付き非線形変換テーブルを記憶する記憶手段と、
前記記憶手段に記憶されている前記マスク値および前記マスク付き非線形変換テーブルのうちの書き換える一組を選択する第一の選択手段と、
前記マスク値および前記マスク付き変換テーブルを用いて演算を行う演算手段と、
前記記憶手段に記憶されている前記マスク値および前記マスク付き非線形変換テーブルのうちの前記演算手段が必要とする前記マスク値および前記マスク付き非線形変換テーブルを選択する第二の選択手段とを有し、
前記記憶手段は、前記演算手段が必要とする前記マスク値および前記マスク付き非線形変換テーブルの数に加えて、1つ以上の前記マスク値および前記マスク付き非線形変換テーブルを記憶し、
前記第一の選択手段と前記第二の選択手段は、異なる前記マスク値および前記マスク付き変換テーブルを選択し、
前記テーブル生成手段による前記マスク付き非線形変換テーブル生成と前記演算手段による演算は、並行して処理され、
前記第一の選択手段および前記第二の選択手段は、前記記憶手段の書き換え完了後、書き換えた前記マスク値および前記マスク付き非線形変換テーブルと異なる前記マスク値および前記マスク付き非線形変換テーブルを選択することを特徴とする暗号処理装置。
(構成2)
前記演算手段は、前記マスク値および前記マスク付き変換テーブルを用いて、平文を暗号化し、暗号文を生成することを特徴とする構成1に記載の暗号処理装置。
(構成3)
前記演算手段は、前記マスク値および前記マスク付き変換テーブルを用いて、暗号文を復号化し、平文を生成することを特徴とする構成1または2に記載の暗号処理装置。
(構成4)
前記暗号処理装置は、ブロック暗号を処理することを特徴とする構成1~3のいずれか1項に記載の暗号処理装置。
(構成5)
前記暗号処理装置が処理するアルゴリズムは、AESまたはDESまたはSM4であることを特徴とする構成4に記載の暗号処理装置。
(構成6)
暗号化では、
前記演算手段は、
制御する制御手段と、
暗号鍵を基にラウンド鍵を生成する鍵拡張手段と、
マスク値を保持するマスク値保持手段と、
前記記憶手段に記憶された前記マスク値と平文を排他的論理和する第一の排他的論理和手段と、
前記第一の排他的論理和手段の出力と前記ラウンド鍵を用いて演算する第一の鍵演算手段と、
入力を前記マスク付き非線形変換テーブルを参照して非線形変換する非線形変換手段と、
前記非線形変換手段の出力を線形変換する第一の線形変換手段と、
前記第一の線形変換手段の出力と前記ラウンド鍵を用いて演算する第二の鍵演算手段と、
前記マスク値保持手段に保持されたマスク値を線形変換する第二の線形変換手段と、
前記第二の鍵演算手段の出力と前記第二の線形変換手段の出力と前記記憶手段に記憶された前記マスク値を排他的論理和する第二の排他的論理和手段と
を有することを特徴とする構成5に記載の暗号処理装置。
(構成7)
前記演算手段が必要とするマスク付き非線形変換テーブルの数は、AESでは16個であることを特徴とする構成5または6に記載の暗号処理装置。
(構成8)
AESの暗号化では、
前記第一の線形変換手段は、開始ラウンドから最終ラウンドの一つ前のラウンドではShiftRows処理およびMixColumns処理を行い、最終ラウンドではShiftRows処理を行い、
前記第二の線形変換手段は、開始ラウンドから最終ラウンドの一つ前のラウンドではShiftRows処理およびMixColumns処理を行い、最終ラウンドではShiftRows処理を行い、
前記第一の鍵演算手段は、AddRoundKey処理を行い、
前記第二の鍵演算手段は、AddRoundKey処理を行い、
前記非線形変換手段は、開始ラウンドでは前記第一の鍵演算手段の出力を入力とし、開始ラウンドの一つ後のラウンド以降では前記第二の排他的論理和手段の出力を入力とし、SubBytes処理を行うことを特徴とする構成6に記載の暗号処理装置。
(構成9)
復号化では、
前記演算手段は、
制御する制御手段と、
暗号鍵を基にラウンド鍵を生成する鍵拡張手段と、
マスク値を線形変換する第二の線形変換手段と、
前記マスク値を保持するマスク値保持手段と、
入力と前記マスク値保持手段に保持されているマスク値と前記第二の線形変換手段の出力を排他的論理和する第二の排他的論理和手段と、
前記第二の排他的論理和手段の出力と前記ラウンド鍵を用いて演算する第二の鍵演算手段と、
前記第二の鍵演算手段の出力を線形変換する第一の線形変換手段と、
前記第一の線形変換手段の出力を前記マスク付き非線形変換テーブルを参照して非線形変換する非線形変換手段と、
前記非線形変換手段の出力と前記ラウンド鍵を用いて演算する第一の鍵演算手段と、
前記第一の鍵演算手段の出力と前記マスク値保持手段に保持されているマスク値を排他的論理和する第一の排他的論理和手段と
を有することを特徴とする構成5に記載の暗号処理装置。
(構成10)
AESの復号化では、
前記第二の排他的論理和手段は、開始ラウンドでは暗号文を入力とし、開始ラウンドの一つ後のラウンド以降では前記非線形変換手段の出力を入力とし、
前記第一の線形変換手段は、開始ラウンドではInvShiftRows処理を行い、開始ラウンドの一つ後のラウンド以降ではInvShiftRows処理およびInvMixColumns処理を行い、
前記第二の線形変換手段は、開始ラウンドではInvShiftRows処理を行い、開始ラウンドの一つ後のラウンド以降ではInvShiftRows処理およびInvMixColumns処理を行い、
前記第二の鍵演算手段は、AddRoundKey処理を行い、
前記第一の鍵演算手段は、AddRoundKey処理を行い、
前記非線形変換手段は、InvSubBytes処理を行うことを特徴とする構成9に記載の暗号処理装置。
(構成11)
前記演算手段が必要とするマスク付き非線形変換テーブルの数は、DESでは8個であることを特徴とする構成5に記載の暗号処理装置。
(構成12)
前記演算手段が必要とするマスク付き非線形変換テーブルの数は、SM4では4個であることを特徴とする構成5に記載の暗号処理装置。
(方法1)
乱数を生成する乱数生成ステップと、
前記乱数をマスク値として、マスク付き非線形変換テーブルを生成するテーブル生成ステップと、
前記マスク値および前記マスク付き非線形変換テーブルを記憶手段に記憶する記憶ステップと、
前記記憶手段に記憶されている前記マスク値および前記マスク付き非線形変換テーブルのうちの書き換える一組を選択する第一の選択ステップと、
前記マスク値および前記マスク付き変換テーブルを用いて演算を行う演算ステップと、
前記記憶手段に記憶されている前記マスク値および前記マスク付き非線形変換テーブルのうちの前記演算ステップで必要とする前記マスク値および前記マスク付き非線形変換テーブルを選択する第二の選択ステップとを有し、
前記記憶ステップでは、前記演算ステップで必要とする前記マスク値および前記マスク付き非線形変換テーブルの数に加えて、1つ以上の前記マスク値および前記マスク付き非線形変換テーブルを前記記憶手段に記憶し、
前記第一の選択ステップと前記第二の選択ステップでは、異なる前記マスク値および前記マスク付き変換テーブルを選択し、
前記テーブル生成ステップと前記演算ステップは、並行して処理され、
前記第一の選択ステップおよび前記第二の選択ステップでは、前記記憶手段の書き換え完了後、書き換えた前記マスク値および前記マスク付き非線形変換テーブルと異なる前記マスク値および前記マスク付き非線形変換テーブルを選択することを特徴とする暗号処理装置の暗号処理方法。
(プログラム1)
コンピュータを、構成1~12のいずれか1項に記載された暗号処理装置の各手段として機能させるためのプログラム。
1 暗号処理装置、10 乱数生成手段、20 テーブル生成手段、30 第一の選択手段、40 記憶手段、50 第二の選択手段、501 要素選択手段、502 順列並び替え手段、5020 4入力順番並び替え手段、60 演算手段、601 制御手段、602 鍵拡張手段、603 第一の排他的論理和手段、604 第一の鍵演算手段、605 非線形変換手段、606 第一の線形変換手段、607 第二の鍵演算手段、608 第二の線形変換手段、609 第二の排他的論理和手段、610 マスク値保持手段
Claims (14)
- 乱数を生成する乱数生成手段と、
前記乱数をマスク値として、マスク付き非線形変換テーブルを生成するテーブル生成手段と、
前記マスク値および前記マスク付き非線形変換テーブルを記憶する記憶手段と、
前記記憶手段に記憶されている前記マスク値および前記マスク付き非線形変換テーブルのうちの書き換える一組を選択する第一の選択手段と、
前記マスク値および前記マスク付き変換テーブルを用いて演算を行う演算手段と、
前記記憶手段に記憶されている前記マスク値および前記マスク付き非線形変換テーブルのうちの前記演算手段が必要とする前記マスク値および前記マスク付き非線形変換テーブルを選択する第二の選択手段とを有し、
前記記憶手段は、前記演算手段が必要とする前記マスク値および前記マスク付き非線形変換テーブルの数に加えて、1つ以上の前記マスク値および前記マスク付き非線形変換テーブルを記憶し、
前記第一の選択手段と前記第二の選択手段は、異なる前記マスク値および前記マスク付き変換テーブルを選択し、
前記テーブル生成手段による前記マスク付き非線形変換テーブル生成と前記演算手段による演算は、並行して処理され、
前記第一の選択手段および前記第二の選択手段は、前記記憶手段の書き換え完了後、書き換えた前記マスク値および前記マスク付き非線形変換テーブルと異なる前記マスク値および前記マスク付き非線形変換テーブルを選択することを特徴とする暗号処理装置。 - 前記演算手段は、前記マスク値および前記マスク付き変換テーブルを用いて、平文を暗号化し、暗号文を生成することを特徴とする請求項1に記載の暗号処理装置。
- 前記演算手段は、前記マスク値および前記マスク付き変換テーブルを用いて、暗号文を復号化し、平文を生成することを特徴とする請求項1に記載の暗号処理装置。
- 前記暗号処理装置は、ブロック暗号を処理することを特徴とする請求項1に記載の暗号処理装置。
- 前記暗号処理装置が処理するアルゴリズムは、AESまたはDESまたはSM4であることを特徴とする請求項4に記載の暗号処理装置。
- 暗号化では、
前記演算手段は、
制御する制御手段と、
暗号鍵を基にラウンド鍵を生成する鍵拡張手段と、
マスク値を保持するマスク値保持手段と、
前記記憶手段に記憶された前記マスク値と平文を排他的論理和する第一の排他的論理和手段と、
前記第一の排他的論理和手段の出力と前記ラウンド鍵を用いて演算する第一の鍵演算手段と、
入力を前記マスク付き非線形変換テーブルを参照して非線形変換する非線形変換手段と、
前記非線形変換手段の出力を線形変換する第一の線形変換手段と、
前記第一の線形変換手段の出力と前記ラウンド鍵を用いて演算する第二の鍵演算手段と、
前記マスク値保持手段に保持されたマスク値を線形変換する第二の線形変換手段と、
前記第二の鍵演算手段の出力と前記第二の線形変換手段の出力と前記記憶手段に記憶された前記マスク値を排他的論理和する第二の排他的論理和手段と
を有することを特徴とする請求項5に記載の暗号処理装置。 - 前記演算手段が必要とするマスク付き非線形変換テーブルの数は、AESでは16個であることを特徴とする請求項5に記載の暗号処理装置。
- AESの暗号化では、
前記第一の線形変換手段は、開始ラウンドから最終ラウンドの一つ前のラウンドではShiftRows処理およびMixColumns処理を行い、最終ラウンドではShiftRows処理を行い、
前記第二の線形変換手段は、開始ラウンドから最終ラウンドの一つ前のラウンドではShiftRows処理およびMixColumns処理を行い、最終ラウンドではShiftRows処理を行い、
前記第一の鍵演算手段は、AddRoundKey処理を行い、
前記第二の鍵演算手段は、AddRoundKey処理を行い、
前記非線形変換手段は、開始ラウンドでは前記第一の鍵演算手段の出力を入力とし、開始ラウンドの一つ後のラウンド以降では前記第二の排他的論理和手段の出力を入力とし、SubBytes処理を行うことを特徴とする請求項6に記載の暗号処理装置。 - 復号化では、
前記演算手段は、
制御する制御手段と、
暗号鍵を基にラウンド鍵を生成する鍵拡張手段と、
マスク値を線形変換する第二の線形変換手段と、
前記マスク値を保持するマスク値保持手段と、
入力と前記マスク値保持手段に保持されているマスク値と前記第二の線形変換手段の出力を排他的論理和する第二の排他的論理和手段と、
前記第二の排他的論理和手段の出力と前記ラウンド鍵を用いて演算する第二の鍵演算手段と、
前記第二の鍵演算手段の出力を線形変換する第一の線形変換手段と、
前記第一の線形変換手段の出力を前記マスク付き非線形変換テーブルを参照して非線形変換する非線形変換手段と、
前記非線形変換手段の出力と前記ラウンド鍵を用いて演算する第一の鍵演算手段と、
前記第一の鍵演算手段の出力と前記マスク値保持手段に保持されているマスク値を排他的論理和する第一の排他的論理和手段と
を有することを特徴とする請求項5に記載の暗号処理装置。 - AESの復号化では、
前記第二の排他的論理和手段は、開始ラウンドでは暗号文を入力とし、開始ラウンドの一つ後のラウンド以降では前記非線形変換手段の出力を入力とし、
前記第一の線形変換手段は、開始ラウンドではInvShiftRows処理を行い、開始ラウンドの一つ後のラウンド以降ではInvShiftRows処理およびInvMixColumns処理を行い、
前記第二の線形変換手段は、開始ラウンドではInvShiftRows処理を行い、開始ラウンドの一つ後のラウンド以降ではInvShiftRows処理およびInvMixColumns処理を行い、
前記第二の鍵演算手段は、AddRoundKey処理を行い、
前記第一の鍵演算手段は、AddRoundKey処理を行い、
前記非線形変換手段は、InvSubBytes処理を行うことを特徴とする請求項9に記載の暗号処理装置。 - 前記演算手段が必要とするマスク付き非線形変換テーブルの数は、DESでは8個であることを特徴とする請求項5に記載の暗号処理装置。
- 前記演算手段が必要とするマスク付き非線形変換テーブルの数は、SM4では4個であることを特徴とする請求項5に記載の暗号処理装置。
- 乱数を生成する乱数生成ステップと、
前記乱数をマスク値として、マスク付き非線形変換テーブルを生成するテーブル生成ステップと、
前記マスク値および前記マスク付き非線形変換テーブルを記憶手段に記憶する記憶ステップと、
前記記憶手段に記憶されている前記マスク値および前記マスク付き非線形変換テーブルのうちの書き換える一組を選択する第一の選択ステップと、
前記マスク値および前記マスク付き変換テーブルを用いて演算を行う演算ステップと、
前記記憶手段に記憶されている前記マスク値および前記マスク付き非線形変換テーブルのうちの前記演算ステップで必要とする前記マスク値および前記マスク付き非線形変換テーブルを選択する第二の選択ステップとを有し、
前記記憶ステップでは、前記演算ステップで必要とする前記マスク値および前記マスク付き非線形変換テーブルの数に加えて、1つ以上の前記マスク値および前記マスク付き非線形変換テーブルを前記記憶手段に記憶し、
前記第一の選択ステップと前記第二の選択ステップでは、異なる前記マスク値および前記マスク付き変換テーブルを選択し、
前記テーブル生成ステップと前記演算ステップは、並行して処理され、
前記第一の選択ステップおよび前記第二の選択ステップでは、前記記憶手段の書き換え完了後、書き換えた前記マスク値および前記マスク付き非線形変換テーブルと異なる前記マスク値および前記マスク付き非線形変換テーブルを選択することを特徴とする暗号処理装置の暗号処理方法。 - コンピュータを、請求項1~12のいずれか1項に記載された暗号処理装置の各手段として機能させるためのプログラム。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022159284A JP2024053189A (ja) | 2022-10-03 | 2022-10-03 | 暗号処理装置、暗号処理装置の暗号処理方法およびプログラム |
KR1020230130156A KR20240046850A (ko) | 2022-10-03 | 2023-09-27 | 암호화 처리 장치, 암호화 처리 장치의 암호화 처리 방법, 및 저장 매체 |
US18/478,819 US20240113871A1 (en) | 2022-10-03 | 2023-09-29 | Encryption processing apparatus, encryption processing method for encryption processing apparatus, and storage medium |
EP23200808.6A EP4351080A1 (en) | 2022-10-03 | 2023-09-29 | Encryption processing apparatus, encryption processing method for encryption processing apparatus, and storage medium |
CN202311294939.9A CN117834119A (zh) | 2022-10-03 | 2023-10-09 | 加密处理设备及其加密处理方法和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022159284A JP2024053189A (ja) | 2022-10-03 | 2022-10-03 | 暗号処理装置、暗号処理装置の暗号処理方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024053189A true JP2024053189A (ja) | 2024-04-15 |
Family
ID=88237477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022159284A Pending JP2024053189A (ja) | 2022-10-03 | 2022-10-03 | 暗号処理装置、暗号処理装置の暗号処理方法およびプログラム |
Country Status (5)
Country | Link |
---|---|
US (1) | US20240113871A1 (ja) |
EP (1) | EP4351080A1 (ja) |
JP (1) | JP2024053189A (ja) |
KR (1) | KR20240046850A (ja) |
CN (1) | CN117834119A (ja) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101147182B (zh) | 2005-03-31 | 2010-09-01 | 松下电器产业株式会社 | 数据加密装置及数据加密方法 |
JP2007006184A (ja) | 2005-06-24 | 2007-01-11 | Nippon Telegr & Teleph Corp <Ntt> | 暗号処理装置及び認証アプリケーションプログラム |
JP4783104B2 (ja) * | 2005-09-29 | 2011-09-28 | 株式会社東芝 | 暗号化/復号装置 |
DE602006015902D1 (de) * | 2006-03-07 | 2010-09-16 | Research In Motion Ltd | Tabellenteilung für kryptografische Verfahren |
JP6365076B2 (ja) | 2014-07-31 | 2018-08-01 | 大日本印刷株式会社 | データ変換装置 |
US10771235B2 (en) * | 2016-09-01 | 2020-09-08 | Cryptography Research Inc. | Protecting block cipher computation operations from external monitoring attacks |
-
2022
- 2022-10-03 JP JP2022159284A patent/JP2024053189A/ja active Pending
-
2023
- 2023-09-27 KR KR1020230130156A patent/KR20240046850A/ko unknown
- 2023-09-29 EP EP23200808.6A patent/EP4351080A1/en active Pending
- 2023-09-29 US US18/478,819 patent/US20240113871A1/en active Pending
- 2023-10-09 CN CN202311294939.9A patent/CN117834119A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240113871A1 (en) | 2024-04-04 |
CN117834119A (zh) | 2024-04-05 |
KR20240046850A (ko) | 2024-04-11 |
EP4351080A1 (en) | 2024-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100296958B1 (ko) | 블록 데이터 암호화 장치 | |
EP0839418B1 (en) | Cryptographic method and apparatus for non-linearly merging a data block and a key | |
US8290148B2 (en) | Encryption processing apparatus, encryption processing method, and computer program | |
US11546135B2 (en) | Key sequence generation for cryptographic operations | |
US8577032B2 (en) | Common key block encryption device, common key block encryption method, and program | |
JP2002366029A (ja) | Dpaに対して安全な暗号化 | |
EP1302022A2 (en) | Authentication method and schemes for data integrity protection | |
US7190791B2 (en) | Method of encryption using multi-key process to create a variable-length key | |
JP2005527853A (ja) | 高度暗号化規格(aes)のハードウェア暗号法エンジン | |
JPH0863097A (ja) | データを暗号化するための対称暗号化方法およびシステム | |
EP2137856A1 (en) | A simple and efficient one-pass authenticated encryyption scheme | |
JPWO2008053650A1 (ja) | 共通鍵ブロック暗号化装置、その方法、そのプログラム、及び記録媒体 | |
Elgeldawi et al. | A comparative analysis of symmetric algorithms in cloud computing: a survey | |
CN109714154B (zh) | 一种代码体积困难白盒安全模型下的白盒密码算法的实现方法 | |
Miroshnik et al. | Uses of programmable logic integrated circuits for implementations of data encryption standard and its experimental linear cryptanalysis | |
KR20100079060A (ko) | 마스킹이 적용된 seed를 이용한 암호화 방법 | |
RU2141729C1 (ru) | Способ криптографического преобразования блоков двоичных данных | |
EP3996321A1 (en) | Method for processing encrypted data | |
JP2024053189A (ja) | 暗号処理装置、暗号処理装置の暗号処理方法およびプログラム | |
JPH0738558A (ja) | 暗号化装置、及びそれを用いた通信システム及びその方法 | |
Landge et al. | VHDL based Blowfish implementation for secured embedded system design | |
JP2001016197A (ja) | 自己同期型ストリーム暗号システム及びこれを用いたmac生成方法 | |
Putra et al. | Performance Analysis Of The Combination Of Advanced Encryption Standard Cryptography Algorithms With Luc For Text Security | |
Salman | New method for encryption using mixing advanced encryption standard and blowfish algorithms | |
KR20040045517A (ko) | Rijndael암호를 이용한 블록 데이터 실시간암호복호화 장치 및 방법 |