IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ NECソリューションイノベータ株式会社の特許一覧

特許7244060ブロック暗号装置、ブロック暗号方法およびプログラム
<>
  • 特許-ブロック暗号装置、ブロック暗号方法およびプログラム 図1
  • 特許-ブロック暗号装置、ブロック暗号方法およびプログラム 図2
  • 特許-ブロック暗号装置、ブロック暗号方法およびプログラム 図3
  • 特許-ブロック暗号装置、ブロック暗号方法およびプログラム 図4
  • 特許-ブロック暗号装置、ブロック暗号方法およびプログラム 図5
  • 特許-ブロック暗号装置、ブロック暗号方法およびプログラム 図6
  • 特許-ブロック暗号装置、ブロック暗号方法およびプログラム 図7
  • 特許-ブロック暗号装置、ブロック暗号方法およびプログラム 図8
  • 特許-ブロック暗号装置、ブロック暗号方法およびプログラム 図9
  • 特許-ブロック暗号装置、ブロック暗号方法およびプログラム 図10
  • 特許-ブロック暗号装置、ブロック暗号方法およびプログラム 図11
  • 特許-ブロック暗号装置、ブロック暗号方法およびプログラム 図12
  • 特許-ブロック暗号装置、ブロック暗号方法およびプログラム 図13
  • 特許-ブロック暗号装置、ブロック暗号方法およびプログラム 図14
  • 特許-ブロック暗号装置、ブロック暗号方法およびプログラム 図15
  • 特許-ブロック暗号装置、ブロック暗号方法およびプログラム 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-13
(45)【発行日】2023-03-22
(54)【発明の名称】ブロック暗号装置、ブロック暗号方法およびプログラム
(51)【国際特許分類】
   G09C 1/00 20060101AFI20230314BHJP
【FI】
G09C1/00 610A
【請求項の数】 4
(21)【出願番号】P 2019028896
(22)【出願日】2019-02-20
(65)【公開番号】P2020134730
(43)【公開日】2020-08-31
【審査請求日】2022-01-07
(73)【特許権者】
【識別番号】000232092
【氏名又は名称】NECソリューションイノベータ株式会社
(74)【代理人】
【識別番号】110002044
【氏名又は名称】弁理士法人ブライタス
(72)【発明者】
【氏名】齊藤 照夫
(72)【発明者】
【氏名】茂 真紀
(72)【発明者】
【氏名】久保 博靖
【審査官】金沢 史明
(56)【参考文献】
【文献】特開2015-191107(JP,A)
【文献】特開2006-072054(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
H04L 9/06
(57)【特許請求の範囲】
【請求項1】
ブロック長がbビットの平文を、鍵長がbビットの秘密鍵を用いて暗号化するブロック暗号装置であって、
前記平文をd個のnビットのデータサブブロックに分割する平文分割部と、
前記秘密鍵をd個のnビットの鍵サブブロックに分割する鍵分割部と、
前記d個のnビットのデータサブブロックに対し、ラウンド関数を用いた、算術加算、算術減算、排他的論理和のいずれかを、第1処理として、rラウンド繰り返す暗号化部と、
前記d個のnビットの鍵サブブロックに対し、ラウンド関数を用いた第2処理をrラウンド繰り返す鍵スケジュール処理部と、
前記暗号化部の出力と、前記鍵スケジュール処理部の出力とを演算して、暗号文を出力する演算部と、
を備え、
前記鍵スケジュール処理部において、
1ラウンド目の第2処理では、前記鍵分割部により生成された前記d個のnビットの鍵サブブロックをラウンド関数の入力とし、
i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンド目の前記第2処理の出力を、ラウンド関数の入力とし、
前記暗号化部において、
1ラウンド目の第1処理では、前記平文分割部により生成された前記d個のnビットのデータサブブロックそれぞれと、前記鍵分割部により生成された前記d個のnビットの鍵サブブロックそれぞれとを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
i(i=2~r)ラウンド目の第1処理では、(i-1)ラウンドの前記第1処理の出力と、(i-1)ラウンド目の前記第2処理の出力とを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
前記第1処理のラウンド関数、および、前記第2処理のラウンド関数それぞれは、d×dの行列演算式であり、
更に、前記第1処理のラウンド関数、および、前記第2処理のラウンド関数それぞれは、
前記第1処理および前記第2処理を順方向に行ったときの、前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックと、差分をn個の鍵サブブロックの空き領域に入れて前記第1処理および前記第2処理を逆方向に行ったときの前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在するように設定されている
ことを特徴とするブロック暗号装置。
【請求項2】
請求項に記載のブロック暗号装置であって、
前記第2処理のラウンド関数は、入力されるd個のnビットの鍵サブブロックにおける1の丸め差分の影響を、他の全データサブブロックに波及させるd×dの行列演算式である、
ことを特徴とするブロック暗号装置。
【請求項3】
コンピュータが、ブロック長がbビットの平文を、鍵長がbビットの秘密鍵を用いて暗号化するブロック暗号方法であって、
(a)前記平文をd個のnビットのデータサブブロックに分割するステップと、
(b)前記秘密鍵をd個のnビットの鍵サブブロックに分割するステップと、
(c)前記d個のnビットのデータサブブロックに対し、ラウンド関数を用いた、算術加算、算術減算、排他的論理和のいずれかを、第1処理として、rラウンド繰り返すステップと、
(d)前記d個のnビットの鍵サブブロックに対し、ラウンド関数を用いた第2処理をrラウンド繰り返すステップと、
(e)前記ステップ(c)の出力と、前記ステップ(d)の出力とを演算して、暗号文を出力するステップと、
を備え、
前記ステップ(d)において、
1ラウンド目の第2処理では、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックをラウンド関数の入力とし、
i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンドの前記第2処理の出力を、ラウンド関数の入力とし、
前記ステップ(c)において、
1ラウンドの第1処理では、前記ステップ(a)により生成された前記d個のnビットのデータサブブロックそれぞれと、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックそれぞれとを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
i(i=2~r)ラウンド目の第1処理では、(i-1)ラウンド目の前記第1処理の出力と、(i-1)ラウンド目の前記第2処理の出力とを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
前記第1処理のラウンド関数、および、前記第2処理のラウンド関数それぞれは、d×dの行列演算式であり、
更に、前記第1処理のラウンド関数、および、前記第2処理のラウンド関数それぞれは、
前記第1処理および前記第2処理を順方向に行ったときの、前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックと、差分をn個の鍵サブブロックの空き領域に入れて前記第1処理および前記第2処理を逆方向に行ったときの前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在するように設定されている
ことを特徴とするブロック暗号方法。
【請求項4】
コンピュータに、ブロック長がbビットの平文を、鍵長がbビットの秘密鍵を用いて暗号化させるプログラムであって、
前記コンピュータに、
(a)前記平文をd個のnビットのデータサブブロックに分割するステップと、
(b)前記秘密鍵をd個のnビットの鍵サブブロックに分割するステップと、
(c)前記d個のnビットのデータサブブロックに対し、ラウンド関数を用いた、算術加算、算術減算、排他的論理和のいずれかを、第1処理として、rラウンド繰り返すステップと、
(d)前記d個のnビットの鍵サブブロックに対し、ラウンド関数を用いた第2処理をrラウンド繰り返すステップと、
(e)前記ステップ(c)の出力と、前記ステップ(d)の出力とを演算して、暗号文を出力するステップと、
を実行させ、
前記ステップ(d)において、
1ラウンド目の第2処理では、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックをラウンド関数の入力とし、
i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンド目の前記第2処理の出力を、ラウンド関数の入力とし、
前記ステップ(c)において、
1ラウンド目の第1処理では、前記ステップ(a)により生成された前記d個のnビットのデータサブブロックそれぞれと、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックそれぞれとを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
i(i=2~r)ラウンド目の第1処理では、(i-1)ラウンド目の前記第1処理の出力と、(i-1)ラウンド目の前記第2処理の出力とを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
前記第1処理のラウンド関数、および、前記第2処理のラウンド関数それぞれは、d×dの行列演算式であり、
更に、前記第1処理のラウンド関数、および、前記第2処理のラウンド関数それぞれは、
前記第1処理および前記第2処理を順方向に行ったときの、前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックと、差分をn個の鍵サブブロックの空き領域に入れて前記第1処理および前記第2処理を逆方向に行ったときの前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在するように設定されている
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、平文を暗号化するブロック暗号装置およびブロック暗号方法に関し、さらには、これらを実現するためのプログラムに関する。
【背景技術】
【0002】
ブロック暗号に対する解読法の一つとして中間一致攻撃が知られている。中間一致攻撃とは、ブロック暗号を二つのsub-cipherに分割し、平文側から計算した中間値と暗号文側から計算した中間値uの一致を確認することで鍵の候補を絞り込む解読法である。近年、中間一致攻撃はハッシュ関数への原像攻撃として応用され、著しく改良が進んでいる。従来の中間一致攻撃の改良手法として、Biclique Cryptanalysisと呼ばれるものがある(例えば、非特許文献1参照)。Biclique Cryptanalysisは、秘密鍵をBicliqueと呼ばれる特性を満たすグループに分け効率的に中間一致攻撃を行う攻撃である(例えば、非特許文献2参照)。
【先行技術文献】
【非特許文献】
【0003】
【文献】A. Bogdanov, D. Khovratovich, and C. Rechberger,’Biclique Cryptanalysis of the Full AES,’ASIACRYPT 2011, LNCS 7073, pp.344--371, Springer (2011)
【文献】W. Diffie, M. E. Hellman: Exhaustive Cryptanalysis of the NBS Data Encryption Standard. Computer 10 (6): 74-84.
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、これまでに、Biclique Cryptanalysisに対して安全なブロック暗号を構成する手法は提案されておらず、安全なブロック暗号を構成することができていなかった。
【0005】
そこで、本発明の目的の一例は、Biclique Cryptanalysisに対して安全なブロック暗号を構成することができるブロック暗号装置、ブロック暗号方法およびプログラムを提供することにある。
【課題を解決するための手段】
【0006】
上記目的を達成するため、本発明の一側面におけるブロック暗号装置は、ブロック長がbビットの平文を、鍵長がbビットの秘密鍵を用いて暗号化するブロック暗号装置であって、
前記平文をd個のnビットのデータサブブロックに分割する平文分割部と、
前記秘密鍵をd個のnビットの鍵サブブロックに分割する鍵分割部と、
前記d個のnビットのデータサブブロックに対し、ラウンド関数を用いた第1処理をrラウンド繰り返す暗号化部と、
前記d個のnビットの鍵サブブロックに対し、全単射関数を用いた第2処理をrラウンド繰り返す鍵スケジュール処理部と、
前記暗号化部の出力と、前記鍵スケジュール処理部の出力とを演算して、暗号文を出力する演算部と、
を備え、
前記鍵スケジュール処理部において、
1ラウンド目の第2処理では、前記鍵分割部により生成された前記d個のnビットの鍵
サブブロックを前記全単射関数の入力とし、
i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンド目の前記第2処理の出力を、前記全単射関数の入力とし、
前記暗号化部において、
1ラウンドの第1処理では、前記平文分割部により生成された前記d個のnビットのデータサブブロックそれぞれと、前記鍵分割部により生成された前記d個のnビットの鍵サブブロックそれぞれとを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
i(i=2~r)ラウンド目の第1処理では、(i-1)ラウンド目の前記第1処理の出力と、(i-1)ラウンド目の前記第2処理の出力とを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
前記ラウンド関数は、入力されるd個のnビットのデータサブブロックにおける1の丸め差分の影響を、他の全データサブブロックに波及させるd×dの行列演算式である、ことを特徴とする。
【0007】
また、上記目的を達成するため、本発明の一側面におけるブロック暗号装置は、ブロック長がbビットの平文を、鍵長がbビットの秘密鍵を用いて暗号化するブロック暗号装置であって、
前記平文をd個のnビットのデータサブブロックに分割する平文分割部と、
前記秘密鍵をd個のnビットの鍵サブブロックに分割する鍵分割部と、
前記d個のnビットのデータサブブロックに対し、ラウンド関数を用いた第1処理をrラウンド繰り返す暗号化部と、
前記d個のnビットの鍵サブブロックに対し、ラウンド関数を用いた第2処理をrラウンド繰り返す鍵スケジュール処理部と、
前記暗号化部の出力と、前記鍵スケジュール処理部の出力とを演算して、暗号文を出力する演算部と、
を備え、
前記鍵スケジュール処理部において、
1ラウンド目の第2処理では、前記鍵分割部により生成された前記d個のnビットの鍵サブブロックをラウンド関数の入力とし、
i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンド目の前記第2処理の出力を、ラウンド関数の入力とし、
前記暗号化部において、
1ラウンド目の第1処理では、前記平文分割部により生成された前記d個のnビットのデータサブブロックそれぞれと、前記鍵分割部により生成された前記d個のnビットの鍵サブブロックそれぞれとを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
i(i=2~r)ラウンド目の第1処理では、(i-1)ラウンドの前記第1処理の出力と、(i-1)ラウンド目の前記第2処理の出力とを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
前記第1処理のラウンド関数、および、前記第2処理のラウンド関数それぞれは、d×dの行列演算式であり、
前記第1処理および前記第2処理を順方向に行ったときの、前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックと、差分をn個の鍵サブブロックの空き領域に入れて前記第1処理および前記第2処理を逆方向に行ったときの前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在する、することを特徴とする。
【0008】
また、上記目的を達成するため、本発明の一側面におけるブロック暗号方法は、ブロック長がbビットの平文を、鍵長がbビットの秘密鍵を用いて暗号化するブロック暗号方法
であって、
(a)前記平文をd個のnビットのデータサブブロックに分割するステップと、
(b)前記秘密鍵をd個のnビットの鍵サブブロックに分割するステップと、
(c)前記d個のnビットのデータサブブロックに対し、ラウンド関数を用いた第1処理をrラウンド繰り返すステップと、
(d)前記d個のnビットの鍵サブブロックに対し、全単射関数を用いた第2処理をrラウンド繰り返すステップと、
(e)前記ステップ(c)の出力と、前記ステップ(d)の出力とを演算して、暗号文を出力するステップと、
を備え、
前記ステップ(d)において、
1ラウンド目の第2処理では、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックを前記全単射関数の入力とし、
i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンド目の前記第2処理の出力を、前記全単射関数の入力とし、
前記ステップ(c)において、
1ラウンド目の第1処理では、前記ステップ(a)により生成された前記d個のnビットのデータサブブロックそれぞれと、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックそれぞれとを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
i(i=2~r)ラウンド目の第1処理では、(i-1)ラウンド目の前記第1処理の出力と、(i-1)ラウンド目の前記第2処理の出力とを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
前記ラウンド関数は、入力されるd個のnビットのデータサブブロックにおける1の丸め差分の影響を、他の全データサブブロックに波及させるd×dの行列演算式である、することを特徴とする。
【0009】
また、上記目的を達成するため、本発明の一側面におけるブロック暗号方法は、ブロック長がbビットの平文を、鍵長がbビットの秘密鍵を用いて暗号化するブロック暗号方法であって、
(a)前記平文をd個のnビットのデータサブブロックに分割するステップと、
(b)前記秘密鍵をd個のnビットの鍵サブブロックに分割するステップと、
(c)前記d個のnビットのデータサブブロックに対し、ラウンド関数を用いた第1処理をrラウンド繰り返すステップと、
(d)前記d個のnビットの鍵サブブロックに対し、ラウンド関数を用いた第2処理をrラウンド繰り返すステップと、
(e)前記ステップ(c)の出力と、前記ステップ(d)の出力とを演算して、暗号文を出力するステップと、
を備え、
前記ステップ(d)において、
1ラウンド目の第2処理では、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックをラウンド関数の入力とし、
i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンドの前記第2処理の出力を、ラウンド関数の入力とし、
前記ステップ(c)において、
1ラウンドの第1処理では、前記ステップ(a)により生成された前記d個のnビットのデータサブブロックそれぞれと、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックそれぞれとを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
i(i=2~r)ラウンド目の第1処理では、(i-1)ラウンド目の前記第1処理の
出力と、(i-1)ラウンド目の前記第2処理の出力とを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
前記第1処理のラウンド関数、および、前記第2処理のラウンド関数それぞれは、d×dの行列演算式であり、
前記第1処理および前記第2処理を順方向に行ったときの、前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックと、差分をn個の鍵サブブロックの空き領域に入れて前記第1処理および前記第2処理を逆方向に行ったときの前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在する、することを特徴とする。
【0010】
また、上記目的を達成するため、本発明の一側面におけるプログラムは、コンピュータに、ブロック長がbビットの平文を、鍵長がbビットの秘密鍵を用いて暗号化させるプログラムであって、
前記コンピュータに、
(a)前記平文をd個のnビットのデータサブブロックに分割するステップと、
(b)前記秘密鍵をd個のnビットの鍵サブブロックに分割するステップと、
(c)前記d個のnビットのデータサブブロックに対し、ラウンド関数を用いた第1処理をrラウンド繰り返すステップと、
(d)前記d個のnビットの鍵サブブロックに対し、全単射関数を用いた第2処理をrラウンド繰り返すステップと、
(e)前記ステップ(c)の出力と、前記ステップ(d)の出力とを演算して、暗号文を出力するステップと、
を実行させ、
前記ステップ(d)において、
1ラウンド目の第2処理では、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックを前記全単射関数の入力とし、
i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンド目の前記第2処理の出力を、前記全単射関数の入力とし、
前記ステップ(c)において、
1ラウンド目の第1処理では、前記ステップ(a)により生成された前記d個のnビットのデータサブブロックそれぞれと、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックそれぞれとを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
i(i=2~r)ラウンド目の第1処理では、(i-1)ラウンド目の前記第1処理の出力と、(i-1)ラウンド目の前記第2処理の出力とを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
前記ラウンド関数は、入力されるd個のnビットのデータサブブロックにおける1の丸め差分の影響を、他の全データサブブロックに波及させるd×dの行列演算式である、することを特徴とする。
【0011】
更に、上記目的を達成するため、本発明の一側面におけるプログラムは、コンピュータに、ブロック長がbビットの平文を、鍵長がbビットの秘密鍵を用いて暗号化させるプログラムであって、
前記コンピュータに、
(a)前記平文をd個のnビットのデータサブブロックに分割するステップと、
(b)前記秘密鍵をd個のnビットの鍵サブブロックに分割するステップと、
(c)前記d個のnビットのデータサブブロックに対し、ラウンド関数を用いた第1処理をrラウンド繰り返すステップと、
(d)前記d個のnビットの鍵サブブロックに対し、ラウンド関数を用いた第2処理をrラウンド繰り返すステップと、
(e)前記ステップ(c)の出力と、前記ステップ(d)の出力とを演算して、暗号文を出力するステップと、
を実行させ、
前記ステップ(d)において、
1ラウンド目の第2処理では、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックをラウンド関数の入力とし、
i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンド目の前記第2処理の出力を、ラウンド関数の入力とし、
前記ステップ(c)において、
1ラウンド目の第1処理では、前記ステップ(a)により生成された前記d個のnビットのデータサブブロックそれぞれと、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックそれぞれとを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
i(i=2~r)ラウンド目の第1処理では、(i-1)ラウンド目の前記第1処理の出力と、(i-1)ラウンド目の前記第2処理の出力とを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
前記第1処理のラウンド関数、および、前記第2処理のラウンド関数それぞれは、d×dの行列演算式であり、
前記第1処理および前記第2処理を順方向に行ったときの、前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックと、差分をn個の鍵サブブロックの空き領域に入れて前記第1処理および前記第2処理を逆方向に行ったときの前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在する、することを特徴とする。
【発明の効果】
【0012】
以上のように本発明におけるブロック暗号装置、ブロック暗号方法及びプログラムによれば、Biclique Cryptanalysisに対して安全なブロック暗号を構成することができる。
【図面の簡単な説明】
【0013】
図1図1は、本発明の実施の形態1におけるブロック暗号装置の構成図である。
図2図2は、本発明の実施の形態1におけるブロック暗号装置でのアルゴリズムを説明する図である。
図3図3は、本発明の実施の形態1におけるブロック暗号装置の動作を示すフロー図である。
図4図4は、Biclique特性の構成方法を説明するための図である。
図5図5は、図4での差分の重なりが遷移する状態を示す図である。
図6図6は、本発明の実施の形態1におけるブロック暗号装置による暗号化では、Biclique特性が成り立たないことを示す図である。
図7図7は、本発明の実施の形態1におけるブロック暗号装置による暗号化では、Biclique特性が成り立たないことを示す図である。
図8図8は、変形例による暗号化では、Biclique特性が成り立たないことを示す図である。
図9図9は、変形例による暗号化では、Biclique特性が成り立たないことを示す図である。
図10図10は、本発明の実施の形態2におけるブロック暗号装置でのアルゴリズムを説明する図である。
図11図11は、本発明の実施の形態2におけるブロック暗号装置の動作を示すフロー図である。
図12図12は、本実施の形態2におけるブロック暗号装置による暗号化では、Biclique特性が成り立たないことを示す図である。
図13図13は、本実施の形態2におけるブロック暗号装置による暗号化では、Biclique特性が成り立たないことを示す図である。
図14図14は、変形例による暗号化では、Biclique特性が成り立たないことを示す図である。
図15図15は、変形例による暗号化では、Biclique特性が成り立たないことを示す図である。
図16図16は、本発明の実施の形態1、2におけるブロック暗号装置を実現するコンピュータの一例を示すブロック図である。
【発明を実施するための形態】
【0014】
(実施の形態1)
以下、本発明の実施の形態1におけるブロック暗号装置およびブロック暗号方法について、図1図9を参照しながら説明する。
【0015】
[装置構成]
図1は、本発明の実施の形態1におけるブロック暗号装置の構成図である。
【0016】
ブロック暗号装置1は、ブロック長がbビットの平文を、鍵長がbビットの秘密鍵を用いてブロック暗号化する装置である。図1に示すように、ブロック暗号装置1は、平文分割部2と、鍵分割部3と、暗号化部4と、鍵スケジュール処理部5と、演算部6とを備えている。
【0017】
平文分割部2は、ブロック暗号装置1に入力されたbビットの平文を、d個のnビットのデータサブブロックに分割する。
【0018】
鍵分割部3は、ブロック暗号装置1に入力された秘密鍵をd個のnビットの鍵サブブロックに分割する。
【0019】
暗号化部4は、平文分割部2によって生成されたd個のnビットのデータサブブロックに対し、ラウンド関数を用いた第1処理をrラウンド繰り返す。
【0020】
鍵スケジュール処理部5は、鍵分割部3によって生成されたd個のnビットの鍵サブブロックに対し、全単射関数を用いた第2処理をrラウンド繰り返す。この鍵スケジュール処理部において、1ラウンド目の第2処理では、鍵分割部3により生成されたd個のnビットの鍵サブブロックを全単射関数の入力とする。また、i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンド目の第2処理の出力を、全単射関数の入力とする。
【0021】
演算部6は、暗号化部4の出力と、鍵スケジュール処理部5の出力とを演算して、暗号文を出力する。
【0022】
暗号化部4において、1ラウンド目の第1処理では、平文分割部2により生成されたd個のnビットのデータサブブロックそれぞれと、鍵分割部3により生成されたd個のnビットの鍵サブブロックそれぞれとを演算する。この演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とする。また、i(i=2~r)ラウンド目の第1処理では、(i-1)ラウンド目の第1処理の出力と、鍵スケジュール処理部5で実行された(i-1)ラウンド目の第2処理の出力とを演算する。この演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とする。
【0023】
この暗号化部4の第1処理で用いられるラウンド関数は、入力されるnビットのデータサブブロックにおける1の丸め差分の影響を、他の全データサブブロックに波及させる行
列演算式である。また、暗号化部4の第1処理で実行される演算は、算術加算、算術減算または排他的論理和のいずれかである。
【0024】
この、本実施の形態1のブロック暗号装置1は、Biclique Cryptanalysisに対して安全なブロック暗号を構成することができる。
【0025】
続いて、図2図9を用いて、実施の形態1のブロック暗号装置1の構成について具体的に説明する。
【0026】
図2は、本発明の実施の形態1におけるブロック暗号装置1でのアルゴリズムを説明する図である。ブロック暗号装置1は、上述した、平文分割部2と、鍵分割部3と、暗号化部4と、鍵スケジュール処理部5と、演算部6とを備えている。ブロック暗号装置1には、図2に示すように、平文と秘密鍵とが入力される。実施の形態1では、平文のブロック長はbビットである。また、秘密鍵は、平文のブロック長と同じbビットの鍵長を有する。
【0027】
平文分割部2は、ブロック暗号装置1に入力された平文を、d個のnビットのデータサブブロックに分割する。また、鍵分割部3は、ブロック暗号装置1に入力された秘密鍵をd個のnビットの鍵サブブロックに分割する。
【0028】
鍵スケジュール処理部5は、全単射計算部51を有する。全単射計算部51は、d個のnビットの鍵サブブロックに対して、全単射関数を用いた計算を行う。鍵スケジュール処理部5では、全単射計算部51が行う計算処理を第2処理として、この第2処理をrラウンド繰り返す。
【0029】
1ラウンド目の第2処理では、鍵分割部3により生成されたd個のnビットの鍵サブブロックが、全単射計算部51に入力される。2ラウンド目以降の第2処理では、直前のラウンドにおいて全単射計算部51により計算された結果が、全単射計算部51に入力される。
【0030】
暗号化部4は、論理演算部41と、S層部42と、行列演算部43とを有している。
【0031】
論理演算部41は、入力されるd個のnビットのデータサブブロックと、d個のnビットの鍵サブブロックとの排他的論理和を演算する。なお、論理演算部41が行う演算は、算術加算または算術減算であってもよい。
【0032】
S層部42は、論理演算部41の出力に対して非線形変換を行う。S層部42は、共通鍵暗号におけるSボックス(Substitution Box)として機能する。例えば、S層部42は、記憶した変換テーブルに基づいて非線形変換を行う。
【0033】
行列演算部43は、d×dの行列を用いた演算処理を行う。行列演算部43は、MDS(Maximum Distance Separation)変換によるデータ撹拌として機能する。MDS変換は、MDS行列を用いた変換である。行列演算部43におけるMDS変換では、入力されるデータサブブロックの1つに、2つのデータの排他的論理和差分の影響があると、その差分の影響が、出力されるデータサブブロックすべてに波及する。行列演算部43におけるMDS変換は、以下の式で表される。
【数1】
【0034】
暗号化部4は、論理演算部41と、S層部42と、行列演算部43とによる処理を1つの第1処理として、この第1処理をrラウンド繰り返す。
【0035】
1ラウンド目の第1処理では、論理演算部41には、平文分割部2によって生成されたd個のnビットのデータサブブロックと、鍵分割部3によって生成されたd個のnビットの鍵サブブロックとが入力される。そして、論理演算部41は、2つの入力データの排他的論理和を演算する。
【0036】
2ラウンド目以降の第1処理では、論理演算部41には、直前のラウンドにおいて行列演算部43により演算された結果、および、直前のラウンドにおいて全単射計算部51により計算された結果が入力される。
【0037】
演算部6は、暗号化部4の出力と、鍵スケジュール処理部5の出力との排他的論理を演算する。演算部6が行う演算は、算術加算または算術減算であってもよい。暗号化部4の出力は、最終ラウンド(rラウンド)の第1処理の行列演算部43の出力である。また、鍵スケジュール処理部5の出力は、最終ラウンド(rラウンド)の第2処理の全単射計算部51の出力である。この演算部6の出力が、ブロック暗号装置1によりブロック暗号化された平文の暗号文である。
【0038】
[動作説明]
次に、本発明の実施の形態1におけるブロック暗号装置1の動作について図3を用いて説明する。図3は、本発明の実施の形態1におけるブロック暗号装置1の動作を示すフロー図である。以下の説明においては、適宜図1および図2を参酌する。また、本実施の形態1では、ブロック暗号装置1を動作させることによって、ブロック暗号方法が実施される。よって、本実施の形態におけるブロック暗号方法の説明は、以下のブロック暗号装置1の動作説明に代える。
【0039】
まず、前提として、ブロック暗号装置1には、ブロック長がbビットの平文と、平文のブロック長と同じbビットの鍵長の秘密鍵とが入力されるものとする。
【0040】
上述の前提において、図3に示すように、平文分割部2は、bビットの平文を、d個のnビットのデータサブブロックに分割する(S1)。鍵分割部3は、bビットの秘密鍵をd個のnビットの鍵サブブロックに分割する(S2)。
【0041】
1ラウンド目において、暗号化部4の論理演算部41は、S1で生成されたd個のnビットのデータサブブロックと、S2で生成されたd個のnビットの鍵サブブロックとの排他的論理和を演算する(S3)。次に、暗号化部4のS層部42は、S3の排他的論理和の演算結果に対して、記憶した変換テーブルに基づいて非線形変換を行う(S4)。そして、暗号化部4の行列演算部43は、S4の非線形変換に対して、d×dの行列を用いたMDS変換を行う(S5)。また、鍵スケジュール処理部5の全単射計算部51は、S2
で生成されたd個のnビットの鍵サブブロックに対して、全単射関数を用いた計算を行う(S6)。
【0042】
S3~S6の処理が、最終ラウンドであるrラウンド目の処理でなければ(S7:NO)、S3~S6の処理が繰り返される。2ラウンド目以降において、暗号化部4の論理演算部41は、S5の変換結果と、S6の計算結果との排他的論理和を演算する(S3)。また、鍵スケジュール処理部5の全単射計算部51は、直前ラウンドでのS6の計算結果に対して、全単射関数を用いた計算を行う(S6)。
【0043】
S3~S6の処理が、rラウンド目の処理であれば(S7:YES)、演算部6は、最終ラウンドでのS5の変換結果と、最終ラウンドでのS6の計算結果との排他的倫理和を演算する(S8)。
【0044】
[実施の形態1による効果]
以上の構成のブロック暗号装置1により、Biclique特性が成り立たないように、平文を暗号化することができる。以下の説明では、上記アルゴリズムにより、Biclique特性が成り立たないように、平文を暗号化することができたことを示す。まず、Biclique特性の構成方法について説明する。
【0045】
図4は、Biclique特性の構成方法を説明するための図である。図4は、平文に対して秘密鍵との排他的論理和を算出して、「SB」、「SR」、「MC」の各処理を行った際の、データの差分(色または斜線のあるブロック)が遷移する状態を示す。差分とは、2つの平文データの差のことであり、排他的論理和による差分が用いられることが多い。図4では、差分はnビット単位の丸め差分で扱っている。「SB」は、非線形な変換を行う処理である。「SR」は、順序の入れ替えを行う処理である。「MC」は、線形変換を行う処理である。また、図4の(1)は、順方向(入力から出力方向)にデータの差分が遷移する状態を示す。図4の(2)は、逆方向(出力から入力方向)にデータの差分が遷移する状態を示す。
【0046】
図4(1)において、鍵サブブロックに差分を入れる(図4(A))。そして、順方向に暗号化処理を行う(図4では2ラウンド)。図4(B)は、2ラウンド処理を行った後の差分の伝搬結果を示す。図4(2)において、図4(B)に示す鍵サブブロックの差分と重ならないように、鍵サブブロックの空き領域に差分を入れる(図4(C))。そして、逆方向に暗号化処理を2ラウンド行う。図4(D)は、逆方向に2ラウンド処理を行った後の差分の伝搬結果を示す。なお、図4において、差分がどのように波及するかは、アルゴリズムに依存して決まる。
【0047】
図5は、図4での差分の重なりが遷移する状態を示す図である。図5に示すように、データサブブロックには差分の重なりがあるブロックがない。
【0048】
差分はブロック暗号の安全性を評価する上で、重要な指標として用いられる。差分に偏りがあると、そのブロック暗号は、2つの平文を簡単に見つけることができるとして安全ではないと評価される。一方、2つの平文を見つけることが困難であると、そのブロック暗号は安全であると評価される。なお、差分がどのように伝播するかは、アルゴリズムに依存して決まる。つまり、図5に示すように、データサブブロックには差分の重なりがないと、Biqlique特性が成り立ち、安全ではないブロック暗号であると評価される。
【0049】
図6および図7は、本発明の実施の形態1におけるブロック暗号装置による暗号化では、Biclique特性が成り立たないことを示す図である。図6の(1)は、順方向に
データの差分が遷移する状態を示す。図6の(2)は、逆方向にデータの差分が遷移する状態を示す。
【0050】
図6(1)において、鍵サブブロックに差分を入れる(図6(A))。なお、鍵サブブロックの差分が、必ずデータサブブロックに影響するように、鍵サブブロックの鍵長は、データサブブロックのブロック長と同じである必要がある。実施の形態1では、MDS変換を行うため、順方向に2ラウンド目の暗号化処理を行うと、図6(B)に示すように、データサブブロックのすべてのブロックに、差分が伝搬する。
【0051】
これにより、図6(C)に示す鍵サブブロックの差分と重ならないように、鍵サブブロックに差分を入れ(図6(D))、逆方向に暗号化処理を2ラウンド行った場合に、データブロックのすべてに差分がなくても(図6(E))、図7(A)に示すように、データサブブロックには差分が重なるブロック(図7での黒ブロック)が存在する。つまり、上記のブロック暗号装置1では、1ラウンドの処理で、Biqlique特性が成り立たない、ブロック暗号が行われることが分かる。
【0052】
以上のように、Biclique Cryptanalysisに対して安全なブロック暗号を構成することができる。
【0053】
[プログラム]
本実施の形態1におけるプログラムは、コンピュータに、図3に示すステップS1~S8を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態1におけるブロック暗号装置1とブロック暗号方法とを実現することができる。この場合、コンピュータのプロセッサは、平文分割部2、鍵分割部3、暗号化部4、鍵スケジュール処理部5および演算部6として機能し、処理を行なう。
【0054】
また、本実施の形態1におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、各コンピュータが、それぞれ、平文分割部2、鍵分割部3、暗号化部4、鍵スケジュール処理部5および演算部6のいずれかとして機能しても良い。
【0055】
(変形例)
ここで、本実施の形態1における変形例について説明する。本変形例では、行列演算部43は、係数に0を持たないd×dの行列を用いて、S層部42での非線形変換に対して行列変換する。行列演算部43における行列変換では、入力されるデータサブブロックの1つに、論理演算部41による排他的論理和差分の影響があると、出力されるデータサブブロックすべてに必ず差分がでる。行列演算部43における行列変換は、上記の式と同様に表される。
【0056】
[変形例による効果]
図8および図9は、本変形例による暗号化では、Biclique特性が成り立たないことを示す図である。図8の(1)は、順方向にデータの差分が遷移する状態を示す。図8の(2)は、逆方向にデータの差分が遷移する状態を示す。
【0057】
図8(1)において、鍵サブブロックに差分を入れる(図8(A))。本変形例では、係数に0を持たないd×dの行列で行列変換を行うため、順方向に2ラウンド目の暗号化処理を行うと、図8(B)に示すように、データサブブロックのすべてのブロックに、差分が伝搬する。
【0058】
これにより、図8(C)に示す鍵サブブロックの差分と重ならないように、鍵サブブロックに差分を入れ(図8(D))、逆方向に暗号化処理を2ラウンド行った場合に、データブロックのすべてに差分がなくても(図8(E))、図9(A)に示すように、データサブブロックには差分が重なるブロック(図9での黒ブロック)が存在する。つまり、上記のブロック暗号装置1では、1ラウンドの処理で、Biqlique特性が成り立たない、ブロック暗号が行われることが分かる。
【0059】
(実施の形態2)
次に、本発明の実施の形態2における、ブロック暗号装置、ブロック暗号方法、及びプログラムについて、図10図16を参照しながら説明する。
【0060】
[装置構成]
図10は、本発明の実施の形態2におけるブロック暗号装置1Aでのアルゴリズムを説明する図である。ブロック暗号装置1Aは、上述した、平文分割部2と、鍵分割部3と、暗号化部4と、鍵スケジュール処理部5と、演算部6とを備えている。実施の形態2では、暗号化部4におけるラウンド関数、および、鍵スケジュール処理部5での処理が、実施の形態1と相違する。以下、その相違点を中心に説明する。
【0061】
鍵スケジュール処理部5は、d個のnビットの鍵サブブロックに対し、ラウンド関数を用いた第2処理をrラウンド繰り返す。鍵スケジュール処理部5において、1ラウンド目の第2処理では、鍵分割部3により生成されたd個のnビットの鍵サブブロックをラウンド関数の入力とする。また、i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンド目の第2処理の出力を、ラウンド関数の入力とする。
【0062】
鍵スケジュール処理部5は、S層部52と、行列演算部53とを有している。
【0063】
S層部52は、d個のnビットの鍵サブブロックに対して非線形変換を行う。S層部52は、共通鍵暗号におけるSボックス(Substitution Box)として機能する。例えば、S層部52は、記憶した変換テーブルに基づいて非線形変換を行う。
【0064】
行列演算部53は、d×dの行列を用いた演算処理を行う。行列演算部53は、MDS(Maximum Distance Separation)変換によるデータ撹拌として機能する。MDS変換は、MDS行列を用いた変換である。
【0065】
暗号化部4の行列演算部43は、d×dの行列を用いた演算処理を行う。
【0066】
暗号化部4の行列演算部43と、鍵スケジュール処理部5の行列演算部53とで用いられるd×dの行列は、実施の形態1で説明したBiqlique特性が成り立たないようにする組合せが適宜設定される。実施の形態2では、行列演算部53で用いられるd×dの行列を、MDS行列としてある。
【0067】
[装置動作]
次に、本実施の形態2におけるブロック暗号装置1Aの動作について図11を用いて説明する。図11は、本発明の実施の形態2におけるブロック暗号装置1Aの動作を示すフロー図である。また、本実施の形態2では、ブロック暗号装置1Aを動作させることによって、情報処理方法が実施される。よって、本実施の形態2におけるブロック暗号方法の説明は、以下のブロック暗号装置1Aの動作説明に代える。
【0068】
まず、前提として、ブロック暗号装置1Aには、ブロック長がbビットの平文と、平文のブロック長と同じbビットの鍵長の秘密鍵とが入力されるものとする。
【0069】
上述の前提において、図11に示すように、平文分割部2は、bビットの平文を、d個のnビットのデータサブブロックに分割する(S21)。鍵分割部3は、bビットの秘密鍵をd個のnビットの鍵サブブロックに分割する(S22)。
【0070】
1ラウンド目において、暗号化部4の論理演算部41は、S21で生成されたd個のnビットのデータサブブロックと、S22で生成されたd個のnビットの鍵サブブロックとの排他的論理和を演算する(S23)。次に、暗号化部4のS層部42は、S23の排他的論理和の演算結果に対して、記憶した変換テーブルに基づいて非線形変換を行う(S24)。そして、暗号化部4の行列演算部43は、S24の非線形変換に対して、d×dの行列を用いた行列変換を行う(S24)。また、鍵スケジュール処理部5のS層部52は、S22で生成されたd個のnビットの鍵サブブロックに対して、非線形変換を行う(S26)。そして、鍵スケジュール処理部5の行列演算部53は、S26の非線形変換に対して、d×dの行列を用いたMDS変換を行う(S27)。
【0071】
S23~S27の処理が、最終ラウンドであるrラウンド目の処理でなければ(S28:NO)、S23~S27の処理が繰り返される。2ラウンド目以降において、暗号化部4の論理演算部41は、S25の変換結果と、S27の変換結果との排他的論理和を演算する(S23)。また、鍵スケジュール処理部5のS層部52は、直前ラウンドでのS27の変換結果に対して、全非線形変換を行う(S26)。
【0072】
S23~S27の処理が、rラウンド目の処理であれば(S28:YES)、演算部6は、最終ラウンドでのS25の変換結果と、最終ラウンドでのS27の変換結果との排他的倫理和を演算する(S29)。
【0073】
[実施の形態2における効果]
図12および図13は、本実施の形態2におけるブロック暗号装置1Aによる暗号化では、Biclique特性が成り立たないことを示す図である。
【0074】
図12(1)において、鍵サブブロックに差分を入れる(図12(A))。実施の形態2では、鍵サブブロックに対してMDS変換を行うため、順方向に2ラウンド目の暗号化処理を行うと、図12(B)に示すように、鍵サブブロックのすべてのブロックに、差分が伝搬する。
【0075】
これにより、図12(C)に示すように、鍵サブブロックに差分を入れ、逆方向に暗号化処理を2ラウンド行った場合に、データブロックのすべてに差分がなくても(図12(D))、図13(A)に示すように、鍵サブブロックには差分が重なるブロック(図13での黒ブロック)が存在する。つまり、上記のブロック暗号装置1Aでは、1ラウンドの処理で、Biqlique特性が成り立たない、ブロック暗号が行われることが分かる。
【0076】
[プログラム]
本実施の形態2におけるプログラムは、コンピュータに、図11に示すステップS21~S29を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態2におけるブロック暗号装置1Aとブロック暗号方法とを実現することができる。この場合、コンピュータのプロセッサは、平文分割部2、鍵分割部3、暗号化部4、鍵スケジュール処理部5および演算部6として機能し、処理を行なう。
【0077】
また、本実施の形態2におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、各コンピュータ
が、それぞれ、平文分割部2、鍵分割部3、暗号化部4、鍵スケジュール処理部5および演算部6のいずれかとして機能しても良い。
【0078】
(変形例)
ここで、本実施の形態2における変形例について説明する。本変形例では、行列演算部53は、係数に0を持たないd×dの行列を用いて、S層部52での非線形変換に対して行列変換する。行列演算部53における行列変換では、入力されるデータサブブロックの1つに、排他的論理和差分の影響があると、出力されるデータサブブロックすべてに必ず差分がでる。行列演算部43における行列変換は、上記の式と同様に表される。
【0079】
[変形例による効果]
【0080】
図14および図15は、本変形例による暗号化では、Biclique特性が成り立たないことを示す図である。図14(1)において、鍵サブブロックに差分を入れる(図14(A))。実施の形態2では、係数に0を持たないd×dの行列で行列変換を行うため、順方向に2ラウンド目の暗号化処理を行うと、図14(B)に示すように、データサブブロックのすべてのブロックに、差分が伝搬する。
【0081】
これにより、図14(C)に示すように、鍵サブブロックに差分を入れ、逆方向に暗号化処理を2ラウンド行った場合に、データブロックのすべてに差分がなくても(図14(D))、図15(A)に示すように、データサブブロックには差分が重なるブロック(図15での黒ブロック)が存在する。つまり、上記のブロック暗号装置1Aでは、1ラウンドの処理で、Biqlique特性が成り立たない、ブロック暗号が行われることが分かる。
【0082】
なお、暗号化部4の行列演算部43と、鍵スケジュール処理部5の行列演算部53とで用いられるd×dの行列は、第1処理および第2処理を順方向に行ったときの、nビットのデータサブブロックおよびnビットの鍵サブブロックと、差分をn個の鍵サブブロックの空き領域に入れて第1処理および第2処理を逆方向に行ったときのnビットのデータサブブロックおよびnビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在するように、適宜設定すればよい。
【0083】
(物理構成)
ここで、実施の形態1、2におけるプログラムを実行することによって、ブロック暗号装置を実現するコンピュータについて図16を用いて説明する。図16は、本発明の実施の形態1、2におけるブロック暗号装置を実現するコンピュータの一例を示すブロック図である。
【0084】
図16に示すように、コンピュータ110は、CPU111と、メインメモリ112と、記憶装置113と、入力インターフェイス114と、表示コントローラ115と、データリーダ/ライタ116と、通信インターフェイス117とを備える。これらの各部は、バス121を介して、互いにデータ通信可能に接続される。なお、コンピュータ110は、CPU111に加えて、又はCPU111に代えて、GPU(Graphics Processing Unit)、又はFPGA(Field-Programmable Gate Array)を備えていても良い。
【0085】
CPU111は、記憶装置113に格納された、実施の形態1、2におけるプログラム(コード)をメインメモリ112に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ112は、典型的には、DRAM(Dynamic Random Access Memory)等の揮発性の記憶装置である。また、実施の形態1、2におけるプログラムは、コンピュータ読み取り可能な記録媒体120に格納された状態で提供される。なお
、実施の形態1、2におけるプログラムは、通信インターフェイス117を介して接続されたインターネット上で流通するものであっても良い。
【0086】
また、記憶装置113の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス114は、CPU111と、キーボード及びマウスといった入力機器118との間のデータ伝送を仲介する。表示コントローラ115は、ディスプレイ装置119と接続され、ディスプレイ装置119での表示を制御する。
【0087】
データリーダ/ライタ116は、CPU111と記録媒体120との間のデータ伝送を仲介し、記録媒体120からのプログラムの読み出し、及びコンピュータ110における処理結果の記録媒体120への書き込みを実行する。通信インターフェイス117は、CPU111と、他のコンピュータとの間のデータ伝送を仲介する。
【0088】
また、記録媒体120の具体例としては、CF(Compact Flash(登録商標))およびSD(Secure Digital)等の汎用的な半導体記憶デバイス、フレキシブルディスク(Flexible Disk)等の磁気記録媒体、又はCD-ROM(Compact Disk Read Only Memory)などの光学記録媒体が挙げられる。
【0089】
なお、実施の形態1、2におけるブロック暗号装置は、プログラムがインストールされたコンピュータではなく、各部に対応したハードウェアを用いることによっても実現可能である。更に、ブロック暗号装置は、一部がプログラムで実現され、残りの部分がハードウェアで実現されていてもよい。
【0090】
上述した実施の形態1、2の一部又は全部は、以下に記載する(付記1)~(付記8)によって表現することができるが、以下の記載に限定されるものではない。
【0091】
(付記1)
ブロック長がbビットの平文を、鍵長がbビットの秘密鍵を用いて暗号化するブロック暗号装置であって、
前記平文をd個のnビットのデータサブブロックに分割する平文分割部と、
前記秘密鍵をd個のnビットの鍵サブブロックに分割する鍵分割部と、
前記d個のnビットのデータサブブロックに対し、ラウンド関数を用いた第1処理をrラウンド繰り返す暗号化部と、
前記d個のnビットの鍵サブブロックに対し、全単射関数を用いた第2処理をrラウンド繰り返す鍵スケジュール処理部と、
前記暗号化部の出力と、前記鍵スケジュール処理部の出力とを演算して、暗号文を出力する演算部と、
を備え、
前記鍵スケジュール処理部において、
1ラウンド目の第2処理では、前記鍵分割部により生成された前記d個のnビットの鍵サブブロックを前記全単射関数の入力とし、
i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンド目の前記第2処理の出力を、前記全単射関数の入力とし、
前記暗号化部において、
1ラウンドの第1処理では、前記平文分割部により生成された前記d個のnビットのデータサブブロックそれぞれと、前記鍵分割部により生成された前記d個のnビットの鍵サブブロックそれぞれとを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
i(i=2~r)ラウンド目の第1処理では、(i-1)ラウンド目の前記第1処理の
出力と、(i-1)ラウンド目の前記第2処理の出力とを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
前記ラウンド関数は、入力されるd個のnビットのデータサブブロックにおける1の丸め差分の影響を、他の全データサブブロックに波及させるd×dの行列演算式である、
ことを特徴とするブロック暗号装置。
【0092】
(付記2)
ブロック長がbビットの平文を、鍵長がbビットの秘密鍵を用いて暗号化するブロック暗号装置であって、
前記平文をd個のnビットのデータサブブロックに分割する平文分割部と、
前記秘密鍵をd個のnビットの鍵サブブロックに分割する鍵分割部と、
前記d個のnビットのデータサブブロックに対し、ラウンド関数を用いた第1処理をrラウンド繰り返す暗号化部と、
前記d個のnビットの鍵サブブロックに対し、ラウンド関数を用いた第2処理をrラウンド繰り返す鍵スケジュール処理部と、
前記暗号化部の出力と、前記鍵スケジュール処理部の出力とを演算して、暗号文を出力する演算部と、
を備え、
前記鍵スケジュール処理部において、
1ラウンド目の第2処理では、前記鍵分割部により生成された前記d個のnビットの鍵サブブロックをラウンド関数の入力とし、
i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンド目の前記第2処理の出力を、ラウンド関数の入力とし、
前記暗号化部において、
1ラウンド目の第1処理では、前記平文分割部により生成された前記d個のnビットのデータサブブロックそれぞれと、前記鍵分割部により生成された前記d個のnビットの鍵サブブロックそれぞれとを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
i(i=2~r)ラウンド目の第1処理では、(i-1)ラウンドの前記第1処理の出力と、(i-1)ラウンド目の前記第2処理の出力とを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
前記第1処理のラウンド関数、および、前記第2処理のラウンド関数それぞれは、d×dの行列演算式であり、
前記第1処理および前記第2処理を順方向に行ったときの、前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックと、差分をn個の鍵サブブロックの空き領域に入れて前記第1処理および前記第2処理を逆方向に行ったときの前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在する、
ことを特徴とするブロック暗号装置。
【0093】
(付記3)
付記2に記載のブロック暗号装置であって、
前記第2処理のラウンド関数は、入力されるd個のnビットの鍵サブブロックにおける1の丸め差分の影響を、他の全データサブブロックに波及させるd×dの行列演算式である、
ことを特徴とするブロック暗号装置。
【0094】
(付記4)
付記1から付記3のいずれか一つに記載のブロック暗号装置であって、
前記暗号化部の第1処理で行う演算は、算術加算、算術減算または排他的論理和のいず
れかであり、
前記演算部で行う演算は、算術加算、算術減算または排他的論理和のいずれかである、
ことを特徴とするブロック暗号装置。
【0095】
(付記5)
ブロック長がbビットの平文を、鍵長がbビットの秘密鍵を用いて暗号化するブロック暗号方法であって、
(a)前記平文をd個のnビットのデータサブブロックに分割するステップと、
(b)前記秘密鍵をd個のnビットの鍵サブブロックに分割するステップと、
(c)前記d個のnビットのデータサブブロックに対し、ラウンド関数を用いた第1処理をrラウンド繰り返すステップと、
(d)前記d個のnビットの鍵サブブロックに対し、全単射関数を用いた第2処理をrラウンド繰り返すステップと、
(e)前記ステップ(c)の出力と、前記ステップ(d)の出力とを演算して、暗号文を出力するステップと、
を備え、
前記ステップ(d)において、
1ラウンド目の第2処理では、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックを前記全単射関数の入力とし、
i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンド目の前記第2処理の出力を、前記全単射関数の入力とし、
前記ステップ(c)において、
1ラウンド目の第1処理では、前記ステップ(a)により生成された前記d個のnビットのデータサブブロックそれぞれと、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックそれぞれとを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
i(i=2~r)ラウンド目の第1処理では、(i-1)ラウンド目の前記第1処理の出力と、(i-1)ラウンド目の前記第2処理の出力とを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
前記ラウンド関数は、入力されるd個のnビットのデータサブブロックにおける1の丸め差分の影響を、他の全データサブブロックに波及させるd×dの行列演算式である、
ことを特徴とするブロック暗号方法。
【0096】
(付記6)
ブロック長がbビットの平文を、鍵長がbビットの秘密鍵を用いて暗号化するブロック暗号方法であって、
(a)前記平文をd個のnビットのデータサブブロックに分割するステップと、
(b)前記秘密鍵をd個のnビットの鍵サブブロックに分割するステップと、
(c)前記d個のnビットのデータサブブロックに対し、ラウンド関数を用いた第1処理をrラウンド繰り返すステップと、
(d)前記d個のnビットの鍵サブブロックに対し、ラウンド関数を用いた第2処理をrラウンド繰り返すステップと、
(e)前記ステップ(c)の出力と、前記ステップ(d)の出力とを演算して、暗号文を出力するステップと、
を備え、
前記ステップ(d)において、
1ラウンド目の第2処理では、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックをラウンド関数の入力とし、
i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンドの前記第2処理の出力を、ラウンド関数の入力とし、
前記ステップ(c)において、
1ラウンドの第1処理では、前記ステップ(a)により生成された前記d個のnビットのデータサブブロックそれぞれと、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックそれぞれとを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
i(i=2~r)ラウンド目の第1処理では、(i-1)ラウンド目の前記第1処理の出力と、(i-1)ラウンド目の前記第2処理の出力とを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
前記第1処理のラウンド関数、および、前記第2処理のラウンド関数それぞれは、d×dの行列演算式であり、
前記第1処理および前記第2処理を順方向に行ったときの、前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックと、差分をn個の鍵サブブロックの空き領域に入れて前記第1処理および前記第2処理を逆方向に行ったときの前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在する、
ことを特徴とするブロック暗号方法。
【0097】
(付記7)
コンピュータに、ブロック長がbビットの平文を、鍵長がbビットの秘密鍵を用いて暗号化させるプログラムであって、
前記コンピュータに、
(a)前記平文をd個のnビットのデータサブブロックに分割するステップと、
(b)前記秘密鍵をd個のnビットの鍵サブブロックに分割するステップと、
(c)前記d個のnビットのデータサブブロックに対し、ラウンド関数を用いた第1処理をrラウンド繰り返すステップと、
(d)前記d個のnビットの鍵サブブロックに対し、全単射関数を用いた第2処理をrラウンド繰り返すステップと、
(e)前記ステップ(c)の出力と、前記ステップ(d)の出力とを演算して、暗号文を出力するステップと、
を実行させ、
前記ステップ(d)において、
1ラウンド目の第2処理では、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックを前記全単射関数の入力とし、
i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンド目の前記第2処理の出力を、前記全単射関数の入力とし、
前記ステップ(c)において、
1ラウンド目の第1処理では、前記ステップ(a)により生成された前記d個のnビットのデータサブブロックそれぞれと、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックそれぞれとを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
i(i=2~r)ラウンド目の第1処理では、(i-1)ラウンド目の前記第1処理の出力と、(i-1)ラウンド目の前記第2処理の出力とを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
前記ラウンド関数は、入力されるd個のnビットのデータサブブロックにおける1の丸め差分の影響を、他の全データサブブロックに波及させるd×dの行列演算式である、
ことを特徴とするプログラム。
【0098】
(付記8)
コンピュータに、ブロック長がbビットの平文を、鍵長がbビットの秘密鍵を用いて暗号化させるプログラムであって、
前記コンピュータに、
(a)前記平文をd個のnビットのデータサブブロックに分割するステップと、
(b)前記秘密鍵をd個のnビットの鍵サブブロックに分割するステップと、
(c)前記d個のnビットのデータサブブロックに対し、ラウンド関数を用いた第1処理をrラウンド繰り返すステップと、
(d)前記d個のnビットの鍵サブブロックに対し、ラウンド関数を用いた第2処理をrラウンド繰り返すステップと、
(e)前記ステップ(c)の出力と、前記ステップ(d)の出力とを演算して、暗号文を出力するステップと、
を実行させ、
前記ステップ(d)において、
1ラウンド目の第2処理では、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックをラウンド関数の入力とし、
i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンド目の前記第2処理の出力を、ラウンド関数の入力とし、
前記ステップ(c)において、
1ラウンド目の第1処理では、前記ステップ(a)により生成された前記d個のnビットのデータサブブロックそれぞれと、前記ステップ(b)により生成された前記d個のnビットの鍵サブブロックそれぞれとを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
i(i=2~r)ラウンド目の第1処理では、(i-1)ラウンド目の前記第1処理の出力と、(i-1)ラウンド目の前記第2処理の出力とを演算し、演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とし、
前記第1処理のラウンド関数、および、前記第2処理のラウンド関数それぞれは、d×dの行列演算式であり、
前記第1処理および前記第2処理を順方向に行ったときの、前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックと、差分をn個の鍵サブブロックの空き領域に入れて前記第1処理および前記第2処理を逆方向に行ったときの前記nビットのデータサブブロックおよび前記nビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在する、
ことを特徴とするプログラム。
【産業上の利用可能性】
【0099】
以上のように、本発明によれば、Biclique Cryptanalysisに対して安全なブロック暗号を構成することができる。
【符号の説明】
【0100】
1、1A ブロック暗号装置
2 平文分割部
3 鍵分割部
4 暗号化部
5 鍵スケジュール処理部
6 演算部
41 論理演算部
42 S層部
43 行列演算部
51 全単射計算部
52 S層部
53 行列演算部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16