[go: up one dir, main page]

JP7244060B2 - ブロック暗号装置、ブロック暗号方法およびプログラム - Google Patents

ブロック暗号装置、ブロック暗号方法およびプログラム Download PDF

Info

Publication number
JP7244060B2
JP7244060B2 JP2019028896A JP2019028896A JP7244060B2 JP 7244060 B2 JP7244060 B2 JP 7244060B2 JP 2019028896 A JP2019028896 A JP 2019028896A JP 2019028896 A JP2019028896 A JP 2019028896A JP 7244060 B2 JP7244060 B2 JP 7244060B2
Authority
JP
Japan
Prior art keywords
round
key
blocks
sub
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019028896A
Other languages
English (en)
Other versions
JP2020134730A (ja
Inventor
照夫 齊藤
真紀 茂
博靖 久保
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Solution Innovators Ltd
Original Assignee
NEC Solution Innovators Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Solution Innovators Ltd filed Critical NEC Solution Innovators Ltd
Priority to JP2019028896A priority Critical patent/JP7244060B2/ja
Publication of JP2020134730A publication Critical patent/JP2020134730A/ja
Application granted granted Critical
Publication of JP7244060B2 publication Critical patent/JP7244060B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、平文を暗号化するブロック暗号装置およびブロック暗号方法に関し、さらには、これらを実現するためのプログラムに関する。
ブロック暗号に対する解読法の一つとして中間一致攻撃が知られている。中間一致攻撃とは、ブロック暗号を二つのsub-cipherに分割し、平文側から計算した中間値と暗号文側から計算した中間値uの一致を確認することで鍵の候補を絞り込む解読法である。近年、中間一致攻撃はハッシュ関数への原像攻撃として応用され、著しく改良が進んでいる。従来の中間一致攻撃の改良手法として、Biclique Cryptanalysisと呼ばれるものがある(例えば、非特許文献1参照)。Biclique Cryptanalysisは、秘密鍵をBicliqueと呼ばれる特性を満たすグループに分け効率的に中間一致攻撃を行う攻撃である(例えば、非特許文献2参照)。
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.
しかしながら、これまでに、Biclique Cryptanalysisに対して安全なブロック暗号を構成する手法は提案されておらず、安全なブロック暗号を構成することができていなかった。
そこで、本発明の目的の一例は、Biclique Cryptanalysisに対して安全なブロック暗号を構成することができるブロック暗号装置、ブロック暗号方法およびプログラムを提供することにある。
上記目的を達成するため、本発明の一側面におけるブロック暗号装置は、ブロック長が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の行列演算式である、ことを特徴とする。
また、上記目的を達成するため、本発明の一側面におけるブロック暗号装置は、ブロック長が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ビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在する、することを特徴とする。
また、上記目的を達成するため、本発明の一側面におけるブロック暗号方法は、ブロック長が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の行列演算式である、することを特徴とする。
また、上記目的を達成するため、本発明の一側面におけるブロック暗号方法は、ブロック長が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ビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在する、することを特徴とする。
また、上記目的を達成するため、本発明の一側面におけるプログラムは、コンピュータに、ブロック長が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の行列演算式である、することを特徴とする。
更に、上記目的を達成するため、本発明の一側面におけるプログラムは、コンピュータに、ブロック長が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ビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在する、することを特徴とする。
以上のように本発明におけるブロック暗号装置、ブロック暗号方法及びプログラムによれば、Biclique Cryptanalysisに対して安全なブロック暗号を構成することができる。
図1は、本発明の実施の形態1におけるブロック暗号装置の構成図である。 図2は、本発明の実施の形態1におけるブロック暗号装置でのアルゴリズムを説明する図である。 図3は、本発明の実施の形態1におけるブロック暗号装置の動作を示すフロー図である。 図4は、Biclique特性の構成方法を説明するための図である。 図5は、図4での差分の重なりが遷移する状態を示す図である。 図6は、本発明の実施の形態1におけるブロック暗号装置による暗号化では、Biclique特性が成り立たないことを示す図である。 図7は、本発明の実施の形態1におけるブロック暗号装置による暗号化では、Biclique特性が成り立たないことを示す図である。 図8は、変形例による暗号化では、Biclique特性が成り立たないことを示す図である。 図9は、変形例による暗号化では、Biclique特性が成り立たないことを示す図である。 図10は、本発明の実施の形態2におけるブロック暗号装置でのアルゴリズムを説明する図である。 図11は、本発明の実施の形態2におけるブロック暗号装置の動作を示すフロー図である。 図12は、本実施の形態2におけるブロック暗号装置による暗号化では、Biclique特性が成り立たないことを示す図である。 図13は、本実施の形態2におけるブロック暗号装置による暗号化では、Biclique特性が成り立たないことを示す図である。 図14は、変形例による暗号化では、Biclique特性が成り立たないことを示す図である。 図15は、変形例による暗号化では、Biclique特性が成り立たないことを示す図である。 図16は、本発明の実施の形態1、2におけるブロック暗号装置を実現するコンピュータの一例を示すブロック図である。
(実施の形態1)
以下、本発明の実施の形態1におけるブロック暗号装置およびブロック暗号方法について、図1~図9を参照しながら説明する。
[装置構成]
図1は、本発明の実施の形態1におけるブロック暗号装置の構成図である。
ブロック暗号装置1は、ブロック長がbビットの平文を、鍵長がbビットの秘密鍵を用いてブロック暗号化する装置である。図1に示すように、ブロック暗号装置1は、平文分割部2と、鍵分割部3と、暗号化部4と、鍵スケジュール処理部5と、演算部6とを備えている。
平文分割部2は、ブロック暗号装置1に入力されたbビットの平文を、d個のnビットのデータサブブロックに分割する。
鍵分割部3は、ブロック暗号装置1に入力された秘密鍵をd個のnビットの鍵サブブロックに分割する。
暗号化部4は、平文分割部2によって生成されたd個のnビットのデータサブブロックに対し、ラウンド関数を用いた第1処理をrラウンド繰り返す。
鍵スケジュール処理部5は、鍵分割部3によって生成されたd個のnビットの鍵サブブロックに対し、全単射関数を用いた第2処理をrラウンド繰り返す。この鍵スケジュール処理部において、1ラウンド目の第2処理では、鍵分割部3により生成されたd個のnビットの鍵サブブロックを全単射関数の入力とする。また、i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンド目の第2処理の出力を、全単射関数の入力とする。
演算部6は、暗号化部4の出力と、鍵スケジュール処理部5の出力とを演算して、暗号文を出力する。
暗号化部4において、1ラウンド目の第1処理では、平文分割部2により生成されたd個のnビットのデータサブブロックそれぞれと、鍵分割部3により生成されたd個のnビットの鍵サブブロックそれぞれとを演算する。この演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とする。また、i(i=2~r)ラウンド目の第1処理では、(i-1)ラウンド目の第1処理の出力と、鍵スケジュール処理部5で実行された(i-1)ラウンド目の第2処理の出力とを演算する。この演算結果に対して非線形変換処理を行った結果を、ラウンド関数の入力とする。
この暗号化部4の第1処理で用いられるラウンド関数は、入力されるnビットのデータサブブロックにおける1の丸め差分の影響を、他の全データサブブロックに波及させる行
列演算式である。また、暗号化部4の第1処理で実行される演算は、算術加算、算術減算または排他的論理和のいずれかである。
この、本実施の形態1のブロック暗号装置1は、Biclique Cryptanalysisに対して安全なブロック暗号を構成することができる。
続いて、図2~図9を用いて、実施の形態1のブロック暗号装置1の構成について具体的に説明する。
図2は、本発明の実施の形態1におけるブロック暗号装置1でのアルゴリズムを説明する図である。ブロック暗号装置1は、上述した、平文分割部2と、鍵分割部3と、暗号化部4と、鍵スケジュール処理部5と、演算部6とを備えている。ブロック暗号装置1には、図2に示すように、平文と秘密鍵とが入力される。実施の形態1では、平文のブロック長はbビットである。また、秘密鍵は、平文のブロック長と同じbビットの鍵長を有する。
平文分割部2は、ブロック暗号装置1に入力された平文を、d個のnビットのデータサブブロックに分割する。また、鍵分割部3は、ブロック暗号装置1に入力された秘密鍵をd個のnビットの鍵サブブロックに分割する。
鍵スケジュール処理部5は、全単射計算部51を有する。全単射計算部51は、d個のnビットの鍵サブブロックに対して、全単射関数を用いた計算を行う。鍵スケジュール処理部5では、全単射計算部51が行う計算処理を第2処理として、この第2処理をrラウンド繰り返す。
1ラウンド目の第2処理では、鍵分割部3により生成されたd個のnビットの鍵サブブロックが、全単射計算部51に入力される。2ラウンド目以降の第2処理では、直前のラウンドにおいて全単射計算部51により計算された結果が、全単射計算部51に入力される。
暗号化部4は、論理演算部41と、S層部42と、行列演算部43とを有している。
論理演算部41は、入力されるd個のnビットのデータサブブロックと、d個のnビットの鍵サブブロックとの排他的論理和を演算する。なお、論理演算部41が行う演算は、算術加算または算術減算であってもよい。
S層部42は、論理演算部41の出力に対して非線形変換を行う。S層部42は、共通鍵暗号におけるSボックス(Substitution Box)として機能する。例えば、S層部42は、記憶した変換テーブルに基づいて非線形変換を行う。
行列演算部43は、d×dの行列を用いた演算処理を行う。行列演算部43は、MDS(Maximum Distance Separation)変換によるデータ撹拌として機能する。MDS変換は、MDS行列を用いた変換である。行列演算部43におけるMDS変換では、入力されるデータサブブロックの1つに、2つのデータの排他的論理和差分の影響があると、その差分の影響が、出力されるデータサブブロックすべてに波及する。行列演算部43におけるMDS変換は、以下の式で表される。
Figure 0007244060000001
暗号化部4は、論理演算部41と、S層部42と、行列演算部43とによる処理を1つの第1処理として、この第1処理をrラウンド繰り返す。
1ラウンド目の第1処理では、論理演算部41には、平文分割部2によって生成されたd個のnビットのデータサブブロックと、鍵分割部3によって生成されたd個のnビットの鍵サブブロックとが入力される。そして、論理演算部41は、2つの入力データの排他的論理和を演算する。
2ラウンド目以降の第1処理では、論理演算部41には、直前のラウンドにおいて行列演算部43により演算された結果、および、直前のラウンドにおいて全単射計算部51により計算された結果が入力される。
演算部6は、暗号化部4の出力と、鍵スケジュール処理部5の出力との排他的論理を演算する。演算部6が行う演算は、算術加算または算術減算であってもよい。暗号化部4の出力は、最終ラウンド(rラウンド)の第1処理の行列演算部43の出力である。また、鍵スケジュール処理部5の出力は、最終ラウンド(rラウンド)の第2処理の全単射計算部51の出力である。この演算部6の出力が、ブロック暗号装置1によりブロック暗号化された平文の暗号文である。
[動作説明]
次に、本発明の実施の形態1におけるブロック暗号装置1の動作について図3を用いて説明する。図3は、本発明の実施の形態1におけるブロック暗号装置1の動作を示すフロー図である。以下の説明においては、適宜図1および図2を参酌する。また、本実施の形態1では、ブロック暗号装置1を動作させることによって、ブロック暗号方法が実施される。よって、本実施の形態におけるブロック暗号方法の説明は、以下のブロック暗号装置1の動作説明に代える。
まず、前提として、ブロック暗号装置1には、ブロック長がbビットの平文と、平文のブロック長と同じbビットの鍵長の秘密鍵とが入力されるものとする。
上述の前提において、図3に示すように、平文分割部2は、bビットの平文を、d個のnビットのデータサブブロックに分割する(S1)。鍵分割部3は、bビットの秘密鍵をd個のnビットの鍵サブブロックに分割する(S2)。
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)。
S3~S6の処理が、最終ラウンドであるrラウンド目の処理でなければ(S7:NO)、S3~S6の処理が繰り返される。2ラウンド目以降において、暗号化部4の論理演算部41は、S5の変換結果と、S6の計算結果との排他的論理和を演算する(S3)。また、鍵スケジュール処理部5の全単射計算部51は、直前ラウンドでのS6の計算結果に対して、全単射関数を用いた計算を行う(S6)。
S3~S6の処理が、rラウンド目の処理であれば(S7:YES)、演算部6は、最終ラウンドでのS5の変換結果と、最終ラウンドでのS6の計算結果との排他的倫理和を演算する(S8)。
[実施の形態1による効果]
以上の構成のブロック暗号装置1により、Biclique特性が成り立たないように、平文を暗号化することができる。以下の説明では、上記アルゴリズムにより、Biclique特性が成り立たないように、平文を暗号化することができたことを示す。まず、Biclique特性の構成方法について説明する。
図4は、Biclique特性の構成方法を説明するための図である。図4は、平文に対して秘密鍵との排他的論理和を算出して、「SB」、「SR」、「MC」の各処理を行った際の、データの差分(色または斜線のあるブロック)が遷移する状態を示す。差分とは、2つの平文データの差のことであり、排他的論理和による差分が用いられることが多い。図4では、差分はnビット単位の丸め差分で扱っている。「SB」は、非線形な変換を行う処理である。「SR」は、順序の入れ替えを行う処理である。「MC」は、線形変換を行う処理である。また、図4の(1)は、順方向(入力から出力方向)にデータの差分が遷移する状態を示す。図4の(2)は、逆方向(出力から入力方向)にデータの差分が遷移する状態を示す。
図4(1)において、鍵サブブロックに差分を入れる(図4(A))。そして、順方向に暗号化処理を行う(図4では2ラウンド)。図4(B)は、2ラウンド処理を行った後の差分の伝搬結果を示す。図4(2)において、図4(B)に示す鍵サブブロックの差分と重ならないように、鍵サブブロックの空き領域に差分を入れる(図4(C))。そして、逆方向に暗号化処理を2ラウンド行う。図4(D)は、逆方向に2ラウンド処理を行った後の差分の伝搬結果を示す。なお、図4において、差分がどのように波及するかは、アルゴリズムに依存して決まる。
図5は、図4での差分の重なりが遷移する状態を示す図である。図5に示すように、データサブブロックには差分の重なりがあるブロックがない。
差分はブロック暗号の安全性を評価する上で、重要な指標として用いられる。差分に偏りがあると、そのブロック暗号は、2つの平文を簡単に見つけることができるとして安全ではないと評価される。一方、2つの平文を見つけることが困難であると、そのブロック暗号は安全であると評価される。なお、差分がどのように伝播するかは、アルゴリズムに依存して決まる。つまり、図5に示すように、データサブブロックには差分の重なりがないと、Biqlique特性が成り立ち、安全ではないブロック暗号であると評価される。
図6および図7は、本発明の実施の形態1におけるブロック暗号装置による暗号化では、Biclique特性が成り立たないことを示す図である。図6の(1)は、順方向に
データの差分が遷移する状態を示す。図6の(2)は、逆方向にデータの差分が遷移する状態を示す。
図6(1)において、鍵サブブロックに差分を入れる(図6(A))。なお、鍵サブブロックの差分が、必ずデータサブブロックに影響するように、鍵サブブロックの鍵長は、データサブブロックのブロック長と同じである必要がある。実施の形態1では、MDS変換を行うため、順方向に2ラウンド目の暗号化処理を行うと、図6(B)に示すように、データサブブロックのすべてのブロックに、差分が伝搬する。
これにより、図6(C)に示す鍵サブブロックの差分と重ならないように、鍵サブブロックに差分を入れ(図6(D))、逆方向に暗号化処理を2ラウンド行った場合に、データブロックのすべてに差分がなくても(図6(E))、図7(A)に示すように、データサブブロックには差分が重なるブロック(図7での黒ブロック)が存在する。つまり、上記のブロック暗号装置1では、1ラウンドの処理で、Biqlique特性が成り立たない、ブロック暗号が行われることが分かる。
以上のように、Biclique Cryptanalysisに対して安全なブロック暗号を構成することができる。
[プログラム]
本実施の形態1におけるプログラムは、コンピュータに、図3に示すステップS1~S8を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態1におけるブロック暗号装置1とブロック暗号方法とを実現することができる。この場合、コンピュータのプロセッサは、平文分割部2、鍵分割部3、暗号化部4、鍵スケジュール処理部5および演算部6として機能し、処理を行なう。
また、本実施の形態1におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、各コンピュータが、それぞれ、平文分割部2、鍵分割部3、暗号化部4、鍵スケジュール処理部5および演算部6のいずれかとして機能しても良い。
(変形例)
ここで、本実施の形態1における変形例について説明する。本変形例では、行列演算部43は、係数に0を持たないd×dの行列を用いて、S層部42での非線形変換に対して行列変換する。行列演算部43における行列変換では、入力されるデータサブブロックの1つに、論理演算部41による排他的論理和差分の影響があると、出力されるデータサブブロックすべてに必ず差分がでる。行列演算部43における行列変換は、上記の式と同様に表される。
[変形例による効果]
図8および図9は、本変形例による暗号化では、Biclique特性が成り立たないことを示す図である。図8の(1)は、順方向にデータの差分が遷移する状態を示す。図8の(2)は、逆方向にデータの差分が遷移する状態を示す。
図8(1)において、鍵サブブロックに差分を入れる(図8(A))。本変形例では、係数に0を持たないd×dの行列で行列変換を行うため、順方向に2ラウンド目の暗号化処理を行うと、図8(B)に示すように、データサブブロックのすべてのブロックに、差分が伝搬する。
これにより、図8(C)に示す鍵サブブロックの差分と重ならないように、鍵サブブロックに差分を入れ(図8(D))、逆方向に暗号化処理を2ラウンド行った場合に、データブロックのすべてに差分がなくても(図8(E))、図9(A)に示すように、データサブブロックには差分が重なるブロック(図9での黒ブロック)が存在する。つまり、上記のブロック暗号装置1では、1ラウンドの処理で、Biqlique特性が成り立たない、ブロック暗号が行われることが分かる。
(実施の形態2)
次に、本発明の実施の形態2における、ブロック暗号装置、ブロック暗号方法、及びプログラムについて、図10~図16を参照しながら説明する。
[装置構成]
図10は、本発明の実施の形態2におけるブロック暗号装置1Aでのアルゴリズムを説明する図である。ブロック暗号装置1Aは、上述した、平文分割部2と、鍵分割部3と、暗号化部4と、鍵スケジュール処理部5と、演算部6とを備えている。実施の形態2では、暗号化部4におけるラウンド関数、および、鍵スケジュール処理部5での処理が、実施の形態1と相違する。以下、その相違点を中心に説明する。
鍵スケジュール処理部5は、d個のnビットの鍵サブブロックに対し、ラウンド関数を用いた第2処理をrラウンド繰り返す。鍵スケジュール処理部5において、1ラウンド目の第2処理では、鍵分割部3により生成されたd個のnビットの鍵サブブロックをラウンド関数の入力とする。また、i(i=2~r)ラウンド目の第2処理では、(i-1)ラウンド目の第2処理の出力を、ラウンド関数の入力とする。
鍵スケジュール処理部5は、S層部52と、行列演算部53とを有している。
S層部52は、d個のnビットの鍵サブブロックに対して非線形変換を行う。S層部52は、共通鍵暗号におけるSボックス(Substitution Box)として機能する。例えば、S層部52は、記憶した変換テーブルに基づいて非線形変換を行う。
行列演算部53は、d×dの行列を用いた演算処理を行う。行列演算部53は、MDS(Maximum Distance Separation)変換によるデータ撹拌として機能する。MDS変換は、MDS行列を用いた変換である。
暗号化部4の行列演算部43は、d×dの行列を用いた演算処理を行う。
暗号化部4の行列演算部43と、鍵スケジュール処理部5の行列演算部53とで用いられるd×dの行列は、実施の形態1で説明したBiqlique特性が成り立たないようにする組合せが適宜設定される。実施の形態2では、行列演算部53で用いられるd×dの行列を、MDS行列としてある。
[装置動作]
次に、本実施の形態2におけるブロック暗号装置1Aの動作について図11を用いて説明する。図11は、本発明の実施の形態2におけるブロック暗号装置1Aの動作を示すフロー図である。また、本実施の形態2では、ブロック暗号装置1Aを動作させることによって、情報処理方法が実施される。よって、本実施の形態2におけるブロック暗号方法の説明は、以下のブロック暗号装置1Aの動作説明に代える。
まず、前提として、ブロック暗号装置1Aには、ブロック長がbビットの平文と、平文のブロック長と同じbビットの鍵長の秘密鍵とが入力されるものとする。
上述の前提において、図11に示すように、平文分割部2は、bビットの平文を、d個のnビットのデータサブブロックに分割する(S21)。鍵分割部3は、bビットの秘密鍵をd個のnビットの鍵サブブロックに分割する(S22)。
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)。
S23~S27の処理が、最終ラウンドであるrラウンド目の処理でなければ(S28:NO)、S23~S27の処理が繰り返される。2ラウンド目以降において、暗号化部4の論理演算部41は、S25の変換結果と、S27の変換結果との排他的論理和を演算する(S23)。また、鍵スケジュール処理部5のS層部52は、直前ラウンドでのS27の変換結果に対して、全非線形変換を行う(S26)。
S23~S27の処理が、rラウンド目の処理であれば(S28:YES)、演算部6は、最終ラウンドでのS25の変換結果と、最終ラウンドでのS27の変換結果との排他的倫理和を演算する(S29)。
[実施の形態2における効果]
図12および図13は、本実施の形態2におけるブロック暗号装置1Aによる暗号化では、Biclique特性が成り立たないことを示す図である。
図12(1)において、鍵サブブロックに差分を入れる(図12(A))。実施の形態2では、鍵サブブロックに対してMDS変換を行うため、順方向に2ラウンド目の暗号化処理を行うと、図12(B)に示すように、鍵サブブロックのすべてのブロックに、差分が伝搬する。
これにより、図12(C)に示すように、鍵サブブロックに差分を入れ、逆方向に暗号化処理を2ラウンド行った場合に、データブロックのすべてに差分がなくても(図12(D))、図13(A)に示すように、鍵サブブロックには差分が重なるブロック(図13での黒ブロック)が存在する。つまり、上記のブロック暗号装置1Aでは、1ラウンドの処理で、Biqlique特性が成り立たない、ブロック暗号が行われることが分かる。
[プログラム]
本実施の形態2におけるプログラムは、コンピュータに、図11に示すステップS21~S29を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態2におけるブロック暗号装置1Aとブロック暗号方法とを実現することができる。この場合、コンピュータのプロセッサは、平文分割部2、鍵分割部3、暗号化部4、鍵スケジュール処理部5および演算部6として機能し、処理を行なう。
また、本実施の形態2におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、各コンピュータ
が、それぞれ、平文分割部2、鍵分割部3、暗号化部4、鍵スケジュール処理部5および演算部6のいずれかとして機能しても良い。
(変形例)
ここで、本実施の形態2における変形例について説明する。本変形例では、行列演算部53は、係数に0を持たないd×dの行列を用いて、S層部52での非線形変換に対して行列変換する。行列演算部53における行列変換では、入力されるデータサブブロックの1つに、排他的論理和差分の影響があると、出力されるデータサブブロックすべてに必ず差分がでる。行列演算部43における行列変換は、上記の式と同様に表される。
[変形例による効果]
図14および図15は、本変形例による暗号化では、Biclique特性が成り立たないことを示す図である。図14(1)において、鍵サブブロックに差分を入れる(図14(A))。実施の形態2では、係数に0を持たないd×dの行列で行列変換を行うため、順方向に2ラウンド目の暗号化処理を行うと、図14(B)に示すように、データサブブロックのすべてのブロックに、差分が伝搬する。
これにより、図14(C)に示すように、鍵サブブロックに差分を入れ、逆方向に暗号化処理を2ラウンド行った場合に、データブロックのすべてに差分がなくても(図14(D))、図15(A)に示すように、データサブブロックには差分が重なるブロック(図15での黒ブロック)が存在する。つまり、上記のブロック暗号装置1Aでは、1ラウンドの処理で、Biqlique特性が成り立たない、ブロック暗号が行われることが分かる。
なお、暗号化部4の行列演算部43と、鍵スケジュール処理部5の行列演算部53とで用いられるd×dの行列は、第1処理および第2処理を順方向に行ったときの、nビットのデータサブブロックおよびnビットの鍵サブブロックと、差分をn個の鍵サブブロックの空き領域に入れて第1処理および第2処理を逆方向に行ったときのnビットのデータサブブロックおよびnビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在するように、適宜設定すればよい。
(物理構成)
ここで、実施の形態1、2におけるプログラムを実行することによって、ブロック暗号装置を実現するコンピュータについて図16を用いて説明する。図16は、本発明の実施の形態1、2におけるブロック暗号装置を実現するコンピュータの一例を示すブロック図である。
図16に示すように、コンピュータ110は、CPU111と、メインメモリ112と、記憶装置113と、入力インターフェイス114と、表示コントローラ115と、データリーダ/ライタ116と、通信インターフェイス117とを備える。これらの各部は、バス121を介して、互いにデータ通信可能に接続される。なお、コンピュータ110は、CPU111に加えて、又はCPU111に代えて、GPU(Graphics Processing Unit)、又はFPGA(Field-Programmable Gate Array)を備えていても良い。
CPU111は、記憶装置113に格納された、実施の形態1、2におけるプログラム(コード)をメインメモリ112に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ112は、典型的には、DRAM(Dynamic Random Access Memory)等の揮発性の記憶装置である。また、実施の形態1、2におけるプログラムは、コンピュータ読み取り可能な記録媒体120に格納された状態で提供される。なお
、実施の形態1、2におけるプログラムは、通信インターフェイス117を介して接続されたインターネット上で流通するものであっても良い。
また、記憶装置113の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス114は、CPU111と、キーボード及びマウスといった入力機器118との間のデータ伝送を仲介する。表示コントローラ115は、ディスプレイ装置119と接続され、ディスプレイ装置119での表示を制御する。
データリーダ/ライタ116は、CPU111と記録媒体120との間のデータ伝送を仲介し、記録媒体120からのプログラムの読み出し、及びコンピュータ110における処理結果の記録媒体120への書き込みを実行する。通信インターフェイス117は、CPU111と、他のコンピュータとの間のデータ伝送を仲介する。
また、記録媒体120の具体例としては、CF(Compact Flash(登録商標))およびSD(Secure Digital)等の汎用的な半導体記憶デバイス、フレキシブルディスク(Flexible Disk)等の磁気記録媒体、又はCD-ROM(Compact Disk Read Only Memory)などの光学記録媒体が挙げられる。
なお、実施の形態1、2におけるブロック暗号装置は、プログラムがインストールされたコンピュータではなく、各部に対応したハードウェアを用いることによっても実現可能である。更に、ブロック暗号装置は、一部がプログラムで実現され、残りの部分がハードウェアで実現されていてもよい。
上述した実施の形態1、2の一部又は全部は、以下に記載する(付記1)~(付記8)によって表現することができるが、以下の記載に限定されるものではない。
(付記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の行列演算式である、
ことを特徴とするブロック暗号装置。
(付記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ビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在する、
ことを特徴とするブロック暗号装置。
(付記3)
付記2に記載のブロック暗号装置であって、
前記第2処理のラウンド関数は、入力されるd個のnビットの鍵サブブロックにおける1の丸め差分の影響を、他の全データサブブロックに波及させるd×dの行列演算式である、
ことを特徴とするブロック暗号装置。
(付記4)
付記1から付記3のいずれか一つに記載のブロック暗号装置であって、
前記暗号化部の第1処理で行う演算は、算術加算、算術減算または排他的論理和のいず
れかであり、
前記演算部で行う演算は、算術加算、算術減算または排他的論理和のいずれかである、
ことを特徴とするブロック暗号装置。
(付記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の行列演算式である、
ことを特徴とするブロック暗号方法。
(付記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ビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在する、
ことを特徴とするブロック暗号方法。
(付記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の行列演算式である、
ことを特徴とするプログラム。
(付記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ビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在する、
ことを特徴とするプログラム。
以上のように、本発明によれば、Biclique Cryptanalysisに対して安全なブロック暗号を構成することができる。
1、1A ブロック暗号装置
2 平文分割部
3 鍵分割部
4 暗号化部
5 鍵スケジュール処理部
6 演算部
41 論理演算部
42 S層部
43 行列演算部
51 全単射計算部
52 S層部
53 行列演算部

Claims (4)

  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ビットの鍵サブブロックとを比較すると、丸め差分の重なりが必ず存在するように設定されている
    ことを特徴とするプログラム。
JP2019028896A 2019-02-20 2019-02-20 ブロック暗号装置、ブロック暗号方法およびプログラム Active JP7244060B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019028896A JP7244060B2 (ja) 2019-02-20 2019-02-20 ブロック暗号装置、ブロック暗号方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019028896A JP7244060B2 (ja) 2019-02-20 2019-02-20 ブロック暗号装置、ブロック暗号方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2020134730A JP2020134730A (ja) 2020-08-31
JP7244060B2 true JP7244060B2 (ja) 2023-03-22

Family

ID=72262977

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019028896A Active JP7244060B2 (ja) 2019-02-20 2019-02-20 ブロック暗号装置、ブロック暗号方法およびプログラム

Country Status (1)

Country Link
JP (1) JP7244060B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006072054A (ja) 2004-09-03 2006-03-16 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2015191107A (ja) 2014-03-28 2015-11-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006072054A (ja) 2004-09-03 2006-03-16 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2015191107A (ja) 2014-03-28 2015-11-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム

Also Published As

Publication number Publication date
JP2020134730A (ja) 2020-08-31

Similar Documents

Publication Publication Date Title
JP4961909B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US8504845B2 (en) Protecting states of a cryptographic process using group automorphisms
JP5268609B2 (ja) 暗号処理装置及び演算方法
KR20050092576A (ko) 매스킹 방법이 적용된 데이터 암호처리장치, aes암호시스템 및 aes 암호방법.
KR102397579B1 (ko) 부채널 분석 방지를 위한 화이트박스 암호 방법 및 장치
JP6575532B2 (ja) 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム
WO2020110800A1 (ja) 暗号システム、暗号化装置、復号装置、暗号方法、暗号化方法、復号方法及びプログラム
US9565018B2 (en) Protecting cryptographic operations using conjugacy class functions
US8526602B2 (en) Adjustment-value-attached block cipher apparatus, cipher generation method and recording medium
US20130243191A1 (en) Encryption key generating apparatus
US20080192924A1 (en) Data encryption without padding
JP5852518B2 (ja) 認証暗号化装置、認証復号装置、およびプログラム
Arshad et al. New extension of data encryption standard over 128-bit key for digital images
JP5202350B2 (ja) 暗号処理装置及び暗号処理方法及び暗号処理プログラム
US8538017B2 (en) Encryption device
CN112740618A (zh) 签名装置、验证装置、签名系统、签名方法、签名程序、验证方法以及验证程序
JP7244060B2 (ja) ブロック暗号装置、ブロック暗号方法およびプログラム
JP7622834B2 (ja) 暗号装置、方法、及びプログラム
JP6890589B2 (ja) 計算デバイス及び方法
JP6203387B2 (ja) 暗号装置及び記憶システム及び復号装置及び暗号方法及び復号方法及び暗号プログラム及び復号プログラム
JP5354914B2 (ja) 暗号処理装置及び復号処理装置及びプログラム
KR20210067961A (ko) 완전동형암호 기법으로 암호화된 데이터의 연산을 위한 장치 및 방법
JP7529154B2 (ja) 暗号装置、方法、及びプログラム
KR101971001B1 (ko) 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치
KR20170108595A (ko) 논리적 보수 관계값을 이용한 부채널 분석 방지 암호화 장치 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220107

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230112

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230302

R151 Written notification of patent or utility model registration

Ref document number: 7244060

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151