JP2009128773A - 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム - Google Patents
暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム Download PDFInfo
- Publication number
- JP2009128773A JP2009128773A JP2007305918A JP2007305918A JP2009128773A JP 2009128773 A JP2009128773 A JP 2009128773A JP 2007305918 A JP2007305918 A JP 2007305918A JP 2007305918 A JP2007305918 A JP 2007305918A JP 2009128773 A JP2009128773 A JP 2009128773A
- Authority
- JP
- Japan
- Prior art keywords
- bit
- unit
- value
- bit string
- hash
- 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.)
- Granted
Links
Images
Abstract
【解決手段】暗号化装置が、平文mを2つ以上のビット列にビット分割し、乱数rを含む情報によって定まる共通鍵wを生成し、共通鍵wを用い、共通鍵暗号方式によって、上記平文mから分割された1つのビット列を暗号化し、第1暗号文cを生成する。さらに、暗号化装置が、平文mから分割された残りのビット列と乱数rとを、1つ以上のハッシュ関数を含むパディング関数に入力し、ビット結合値yを生成し、当該ビット結合値yに対して落とし戸付き一方向性置換関数fを作用させ、第2暗号文u=f(y)を生成する。そして、第1暗号文cと第2暗号文uとを復号装置に送信する。
【選択図】図4
Description
2. k=H(r), u=f(r)を計算する。
3. kをセッション鍵として、c=Ek(m)を計算する。
4. (u, c)を暗号文として出力する。
M. Bellare, and P. Rogaway,"Optimal Asymmetric Encryption", Advancecs in cryptology - Eurocrypt'94, LNCS 950, pp.92-111, Springer-Verlag, 1995. D. H. Phan and D. Pointcheval,"OAEP 3-Round: A Generic and Secure Asymmetric Encryption Padding", Advances in Cryptology -Asiacrypt ’04, LNCS 3329, pp.63-78, 2004, Springer-Verlag. J. Jonsson, "An OAEP variant with a tight security proof", [online], March 18, 2002, IACR e-print Archive 2002/034, インターネット<http://mirror.cr.yp.to/eprint.iacr.org/2002/034.pdf> V. Shoup, "ISO 18033-2: An Emerging Standard for Public-Key Encryption (Committee Draft)", [online], June 3, 2004, インターネット<http://shoup.net/iso/> M. Abe and R. Gennaro and K. Kurosawa, "Tag-KEM/DEM: A New Framework for Hybrid Encryption", LACR c-print 2005/027, 2005.
まず、本形態の基本方式を説明する。
本形態では、暗号化装置が暗号文を生成して復号装置に送信し、復号装置がその復号を行う。なお、本形態の暗号化装置及び復号装置は、それぞれ、公知のコンピュータに所定のプログラムが読み込まれることで構築される装置である。
〔第1実施形態〕
第1実施形態では、平文mを3つのビット列である第1平文m1, 第2平文m2及び第3平文meにビット分割する。そして、第3平文meを共通鍵暗号方式で暗号化して第1暗号文cを生成し、残りの第1平文m1,及び第2平文m2に乱数rをパディングし、それを落とし戸付き一方向性置換関数fによって暗号化して第2暗号文uを生成する。
図1(a)は、第1実施形態の暗号通信システム1の構成を例示した図である。
図1(a)に例示するように、本形態の暗号通信システム1は、公開鍵暗号方式によって暗号化を行う暗号化装置10と、それによって生成された暗号文を復号する復号装置20とを有し、それらはインターネット等の安全ではないネットワーク30を通じて通信可能に接続されている。なお、暗号化装置10と復号装置20との間の通信はネットワーク30を通じて行われるが、以下ではその旨を省略して説明する。
図1(b)は、暗号化装置10のハードウェア構成を例示したブロック図である。
図1(b)に例示するように、この例の暗号化装置10は、CPU(Central Processing Unit)10a、入力部10b、出力部10c、補助記憶装置10d、RAM(Random Access Memory)10f、ROM(Read Only Memory)10e及びバス10gを有している。
第1実施形態の暗号化装置10及び復号装置20は、それぞれ、上述のようなハードウェアに所定のプログラムが読み込まれ、CPUがそれを実行することによって構築される。以下、このように構築される各装置の機能構成を説明する。
次に、本形態の処理について説明する。なお、以下では、撹乱過程のラウンド数が偶数の場合の処理、及び、奇数の場合の処理をそれぞれ別個に説明する。しかし、撹乱過程のラウンド数が偶数であるか奇数であるかに応じ、以下の各処理が選択的に実行される構成であってもよい。
《暗号化処理》
図4は、ラウンド数R(R≧4)が偶数である場合における暗号化処理を説明するためのフローチャートである。以下、この図に従って説明を行う。
t(0)=r|m1
として記憶部11に格納する(第1ビット結合過程/ステップS4)。
w=G(t(0)
を共通鍵wとする。なお、本形態のハッシュ関数Gは、
G:{0,1}v→{0,1}w’
の入出力域を持つ。なお、w’は共通鍵wの鍵長を示す。また、ハッシュ関数としては、例えば、SHA-1等を用いることができる(以下同様)。
c=Ew(me)
を生成し、当該第1暗号文cを記憶部11に格納する(共通鍵暗号化過程/ステップS6)。なお、Eは共通鍵暗号方式(例えばCamellia等)の暗号化関数を意味する。
H(2・i+1):{0,1}v+|c|→{0,1}n−v
を作用させてn‐vビットのハッシュ値
h(2・i+1)=H(2・i+1) (t(i)|c)
を算出し、当該ハッシュ値h(2・i+1)を記憶部11に格納する。なお、|c|は、第1暗号文cのビット長である。
H(2・i+1):{0,1}v→{0,1}n−v
を作用させてn‐vビットのハッシュ値
h(2・i+1)=H(2・i+1)(t(i))
を算出し、当該ハッシュ値h(2・i+1)を記憶部11に格納する。
s(i+1)=s(i)(+) h(2・i+1)
を行い、その演算結果であるビット列s(i+1)を記憶部11に格納する(第1排他的論理和演算過程/ステップS9)。
h(2・i+2)=H(2・i+2)(s(i+1))
を算出し、当該ハッシュ値h(2・i+2)を記憶部11に格納する(第2ハッシュ関数演算過程/ステップS10)。
H(2・i+2):{0,1}n−v+|c|→{0,1}v
を作用させてvビットのハッシュ値
h(2・i+2)=H(2・i+2)(s(i+1)|c)
を算出し、当該ハッシュ値h(2・i+2)を記憶部11に格納する。
H(2・i+2):{0,1}n−v→{0,1}v
を作用させてvビットのハッシュ値
h(2・i+2)=H(2・i+2)(s(i+1))
を算出し、当該ハッシュ値h(2・i+2)を記憶部11に格納する。
t(i+1) =t(i)(+) h(2・i+2)
を行い、その演算結果であるビット列t(i+1)を記憶部11に格納する(第2排他的論理和演算過程/ステップS11)。
y=t(R/2)|s(R/2)
を生成し、当該ビット結合値yを記憶部11に格納する(第2ビット結合過程/ステップS14)。なお、ステップS7〜S14の処理が「パディング過程」に相当し、これらの処理によって、入力値ビット列t(0)とs(0)とに施された演算を示す関数が「パディング関数」に相当する。
u=f(y)
を算出し、当該暗号文uを暗号化装置の記憶部に格納する(一方向性置換関数演算過程/ステップS15)。なお、落とし戸付き一方向性置換関数fとしては、例えば、因数分解問題の求解困難性に安全性の根拠をおくRSA暗号の暗号化関数や、離散対数問題の求解困難性に安全性の根拠をおくElGamal暗号の暗号化関数等を例示できる(例えば、『岡本龍明,山本博資著、「現代暗号」、産業図書出版、ISBN4-7828-5353-X(参考文献1)』等参照)。
図5は、ラウンド数R(R≧4)が偶数である場合における復号処理を説明するためのフローチャートである。以下、この図に従って説明を行う。
y=f−1(u)
を抽出し、当該ビット結合値yを記憶部21に格納する(逆関数演算過程/ステップS22)。
y→ t(R/2), s(R/2)
それらを記憶部21に格納する(第2ビット分割過程/ステップS23)。
H(2・i+2):{0,1}n−v+|c|→{0,1}v
を作用させてvビットのハッシュ値
h(2・i+2)=H(2・i+2)(s(i+1)|c)
を算出し、当該ハッシュ値h(2・i+2)を記憶部21に格納する。なお、ハッシュ値の入力値とするビット結合値のビット結合方法には制限はないが、暗号化装置10と復号装置20とで同一の方法をとる必要がある。
H(2・i+2):{0,1}n−v→{0,1}v
を作用させてvビットのハッシュ値
h(2・i+2)=H(2・i+2)(s(i+1))
を算出し、当該ハッシュ値h(2・i+2)を記憶部21に格納する。なお、各ハッシュ関数H(2・i+2)は、暗号化装置10のものと同一である。
t(i)=t(i+1) (+) h(2・i+2)
を行い、その演算結果であるビット列t(i)を記憶部21に格納する(第3排他的論理和演算過程/ステップS26)。
H(2・i+1):{0,1}v→{0,1}n−v
を作用させてn‐vビットのハッシュ値
h(2・i+1)=H(2・i+1)(t(i)|c)
を算出し、当該ハッシュ値h(2・i+1)を記憶部21に格納する。
H(2・i+1):{0,1}v→{0,1}n−v
を作用させてn‐vビットのハッシュ値
h(2・i+1)=H(2・i+1)(t(i))
を算出し、当該ハッシュ値h(2・i+1)を記憶部21に格納する。
s(i)=s(i+1) (+) h(2・i+1)
を行い、その演算結果であるビット列s(i)を記憶部21に格納する(第4排他的論理和演算過程/ステップS28)。
t(0)→ r, m1
zビットの乱数rとv‐zビットの第1平文m1とを抽出し、当該乱数rと第1平文m1とを記憶部21に格納する(第3ビット分割過程/ステップS31)。なお、ステップS31のビット分割方法は、暗号化装置10が行うステップS4のビット結合方法に対応するものである。例えば、ステップS4において、乱数rを上位zビットとし、第1平文m1を残りのビットとしてビット結合されていたのであれば、ステップS31では、ビット列t(0)の上位zビットを乱数rとして抽出し、残りのビットを第1平文m1として抽出する。
w=G(t(0)
を共通鍵wとする。
me=Dw(c)
を抽出し、当該第3平文meを記憶部21に格納する(共通鍵復号過程/ステップS33)。なお、Dは暗号化装置10で使用された暗号化関数Eに対応する復号関数を意味する。
m=m1 | s(0) (=m2) | me
を生成し、当該ビット結合値mを復号結果として出力する(第3ビット結合過程/ステップS34)。なお、ここでのビット結合方法は、ステップS3でのビット分割方法に対応するものとする。
《暗号化処理》
図6は、ラウンド数R(R≧4)が奇数である場合における暗号化処理を説明するためのフローチャートである。以下、この図に従って説明を行う。なお、ラウンド数Rが偶数である場合の処理と共通する事項については説明を省略する。
s(i+1)=s(i)(+) h(2・i+1)
を行い、その演算結果であるビット列s(i+1)を記憶部11に格納する(第1排他的論理和演算過程/ステップS45)。
y=t((R‐1)/2)|s(((R‐1)/2)+1)
を生成し、当該ビット結合値yを記憶部11に格納する(ステップS46)。
u=f(y)
を算出し、当該暗号文uを暗号化装置の記憶部に格納し(一方向性置換関数演算過程/ステップS15)、暗号化装置10の送信部12が、記憶部11から読み込まれた第1暗号文cと第2暗号文uとを復号装置20に送信する(暗号文送信過程/ステップS16)。
図7は、ラウンド数Rが奇数である場合における復号処理を説明するためのフローチャートである。以下、この図に従って説明を行う。なお、ラウンド数Rが偶数である場合の処理と共通する事項については説明を省略する。
y→ t((R‐1)/2), s(((R‐1)/2)+1)
それらを記憶部21に格納する(第2ビット分割過程/ステップS50)。
H(2・i+1):{0,1}v→{0,1}n−v
を作用させてn‐vビットのハッシュ値
h(2・i+1)=H(2・i+1)(t(i)|c)
を算出し、当該ハッシュ値h(2・i+1)を記憶部21に格納する。
H(2・i+1):{0,1}v→{0,1}n−v
を作用させてn‐vビットのハッシュ値
h(2・i+1)=H(2・i+1)(t(i))
を算出し、当該ハッシュ値h(2・i+1)を記憶部21に格納する。
s(i)=s(i+1) (+) h(2・i+1)
を行い、その演算結果であるビット列s(i)を記憶部21に格納する(第4排他的論理和演算過程/ステップS53)。
次に、ラウンド数R=4, 5の場合の「共通鍵生成過程〜撹乱過程」及び「撹乱復元過程〜共通鍵復号過程」の処理を例示する。
図8(a)は、ラウンド数R=4, Rc=3の場合における、第1実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。この例では、
w=G(t(0)), c=Ew(me)
i=0: h(1)=H(1)(t(0)), s(1)=s(0) (+) h(1), h(2)=H(2)(s(1)), t(1) =t(0) (+) h(2)
i=1: h(3)=H(3)(t(1)|c), s(2)=s(1) (+) h(3), h(4)=H(4)(s(2)), t(2) =t(1) (+) h(4)
が実行され、ビット列t(2)とビット列s(2)と第1暗号文cとが出力される。
i=1: h(4)=H(4)(s(2)), t(1)=t(2) (+) h(4), h(3)= H(3)(t(1)|c), s(1)=s(2) (+) h(3)
i=0: h(2)=H(2)(s(1)), t(0)=t(1) (+) h(2), h(1)= H(1)(t(0)), s(0)=s(1) (+) h(1)
w=G(t(0)), me=Dw(c)
が実行され、ビット列t(0)とビット列s(0)とmeとが出力される。
w=G(t(0)), c=Ew(me)
i=0: h(1)=H(1)(t(0)), s(1)=s(0) (+) h(1), h(2)=H(2)(s(1)|c), t(1) =t(0) (+) h(2)
i=1: h(3)=H(3)(t(1)|c), s(2)=s(1) (+) h(3), h(4)=H(4)(s(2)), t(2) =t(1) (+) h(4)
が実行され、ビット列t(2)とビット列s(2)と第1暗号文cとが出力される。
i=1: h(4)=H(4)(s(2)), t(1)=t(2) (+) h(4), h(3)= H(3)(t(1)|c), s(1)=s(2) (+) h(3)
i=0: h(2)=H(2)(s(1)|c), t(0)=t(1) (+) h(2), h(1)= H(1)(t(0)), s(0)=s(1) (+) h(1)
w=G(t(0)), me=Dw(c)
が実行され、ビット列t(0)とビット列s(0)とmeとが出力される。
w=G(t(0)), c=Ew(me)
i=0: h(1)=H(1)(t(0)|c)), s(1)=s(0) (+) h(1), h(2)=H(2)(s(1)|c), t(1) =t(0) (+) h(2)
i=1: h(3)=H(3)(t(1)|c), s(2)=s(1) (+) h(3), h(4)=H(4)(s(2)|c)), t(2) =t(1) (+) h(4)
が実行され、ビット列t(2)とビット列s(2)と第1暗号文cとが出力される。
i=1: h(4)=H(4)(s(2)|c)), t(1)=t(2) (+) h(4), h(3)= H(3)(t(1)|c), s(1)=s(2) (+) h(3)
i=0: h(2)=H(2)(s(1)|c), t(0)=t(1) (+) h(2), h(1)= H(1)(t(0)|c)), s(0)=s(1) (+) h(1)
w=G(t(0)), me=Dw(c)
が実行され、ビット列t(0)とビット列s(0)とmeとが出力される。
図11(a)は、ラウンド数R=5, Rc=3の場合における、第1実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。この例では、
w=G(t(0)), c=Ew(me)
i=0: h(1)=H(1)(t(0)), s(1)=s(0) (+) h(1), h(2)=H(2)(s(1)), t(1) =t(0) (+) h(2)
i=1: h(3)=H(3)(t(1)|c), s(2)=s(1) (+) h(3), h(4)=H(4)(s(2)), t(2) =t(1) (+) h(4)
i=2: h(5)=H(5)(t(2)), s(3)=s(2) (+) h(5)
が実行され、ビット列t(2)とビット列s(3)と第1暗号文cとが出力される。
i=2: h(5)= H(5)(t(2)), s(2)=s(3)(+) h(5)
i=1: h(4)=H(4)(s(2)), t(1)=t(2) (+) h(4), h(3)= H(3)(t(1)|c), s(1)=s(2) (+) h(3)
i=0: h(2)=H(2)(s(1)), t(0)=t(1) (+) h(2), h(1)= H(1)(t(0)), s(0)=s(1) (+) h(1)
w=G(t(0)), me=Dw(c)
が実行され、ビット列t(0)とビット列s(0)とmeとが出力される。
w=G(t(0)), c=Ew(me)
i=0: h(1)=H(1)(t(0)|c), s(1)=s(0) (+) h(1), h(2)=H(2)(s(1)|c), t(1) =t(0) (+) h(2)
i=1: h(3)=H(3)(t(1)|c), s(2)=s(1) (+) h(3), h(4)=H(4)(s(2)|c), t(2) =t(1) (+) h(4)
i=2: h(5)=H(5)(t(2)|c), s(3)=s(2) (+) h(5)
が実行され、ビット列t(2)とビット列s(3)と第1暗号文cとが出力される。
i=2: h(5)= H(5)(t(2)|c), s(2)=s(3)(+) h(5)
i=1: h(4)=H(4)(s(2)|c), t(1)=t(2) (+) h(4), h(3)= H(3)(t(1)|c), s(1)=s(2) (+) h(3)
i=0: h(2)=H(2)(s(1)|c), t(0)=t(1) (+) h(2), h(1)= H(1)(t(0)|c), s(0)=s(1) (+) h(1)
w=G(t(0)), me=Dw(c)
が実行され、ビット列t(0)とビット列s(0)とmeとが出力される。
本形態の暗号化装置10は、pビット(p>n≧2)の平文mを、v‐zビット(n>v-z≧2k)の第1平文m1と、n‐vビットの第2平文m2(ビット列s(0))と、p‐n+zビットの第3平文meにビット分割し、zビット(z≧k,kはセキュリティパラメータ)の乱数rと第1平文m1とをビット結合してビット列t(0)を生成する。また、乱数rを含むビット列t(0)を用いて共通鍵wを生成し、当該共通鍵wを用い、共通鍵暗号方式によって当該第3平文meを暗号化した第1暗号文cを生成する。さらに、ビット列s(0)とビット列t(0)とをOAEPの入力として第2暗号文uを生成し、第1暗号文cと第2暗号文uとを暗号文とする。ここで、第1暗号文c及び第2暗号文uのオーバーヘッドは、第2暗号文uを生成する過程でのパディングによるオーバーヘッドzビット(z≧k)のみである。特に、z=k,v=3kとした場合には、オーバーヘッドがkビットとなり、オーバーヘッドを最小化できる。
次に、本発明の第2実施形態について説明する。
本形態は、第1実施形態の変形例であり、(1)暗号化装置が行う第2ビット結合過程で生成されるビット結合値yを、ラウンド数Rが偶数である場合には、所定値を示す付加情報bとビット列t(R/2)とビット列s(R/2)とを含むビット結合値とし、ラウンド数Rが奇数である場合には、所定値を示す付加情報bとビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを含むビット結合値とする点、(2)復号装置が行う第2ビット分割過程において、ビット結合値yをビット分割し、ラウンド数Rが偶数である場合には、少なくとも付加情報bとビット列t(R/2)とビット列s(R/2)を抽出し、ラウンド数Rが奇数である場合には、少なくとも付加情報bとビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを抽出し、それらを復号装置の記憶部に格納する点、及び(3)第2ビット分割過程で抽出された付加情報bが所定値を示す場合にのみ撹乱復元過程と第3ビット分割過程と共通鍵生成過程と共通鍵復号過程と第3ビット結合過程が実行され、第2ビット分割過程で抽出された付加情報bが所定値以外の値を示す場合には、復号装置の偽装復号結果生成部が、pビットの乱数を生成し、当該乱数を復号結果として出力する点である。
第2実施形態の暗号通信システムは、第1実施形態の暗号化装置10を暗号化装置110に置換し、復号装置20を復号装置120に置換した構成となる。
第1実施形態と同様であるため説明を省略する。
第2実施形態の暗号化装置110及び復号装置120は、それぞれ、前述のようなハードウェアに所定のプログラムが読み込まれ、CPUがそれを実行することによって構築される。以下、このように構築される各装置の機能構成を説明する。
f(x)=xe mod N
を例示でき、その逆関数f−1としては、RSA暗号方式における復号関数
f−1(y)=yd mod N
を例示できる。なお、e, dはそれぞれRSA暗号の公開鍵,秘密鍵であり、x, yは0以上N未満の整数集合ZNの元である。また、付加情報bのビット長|b|には特に制限はないが、オーバーヘッドを小さくするという意味から|b|=1であることが望ましい。なお、前処理として、この付加情報bが暗号化装置110の記憶部11に格納され、さらに、付加情報bと同一値を示す付加情報b’が復号装置120の記憶部21とに格納される。或いは、これらの付加情報が予め各装置を構成するためのプログラムに記述される構成であってもよい。
次に、本形態の処理について説明する。以下では、第1実施形態の処理との相違点のみを説明する。また、本形態では、ラウンド数Rが偶数である場合と奇数である場合を同時に説明する。
図15(a)は、第2実施形態の暗号化処理を説明するためのフローチャートである。
y=b|t(R/2)|s(R/2) (Rが偶数の場合)
を算出して、当該ビット結合値yを記憶部11に格納する。また、ラウンド数Rが奇数である場合には、暗号化装置110の第2ビット結合部113iが、所定値を示す付加情報bとビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを記憶部11から読み込んで、それらのビット結合値
y=b|t((R‐1)/2)|s(((R‐1)/2)+1) (Rが奇数の場合)
を算出して、当該ビット結合値yを記憶部11に格納する(第2ビット結合過程/ステップS111)。
図15(b)は、第2実施形態の復号処理を説明するためのフローチャートである。
y→ b, t((R‐1)/2), s(((R‐1)/2)+1) (Rが奇数の場合)
なお、本形態では、ビット結合値yの上位|b|ビットを付加情報bとして抽出する。また、第1実施形態で説明したように、ビット結合値yのどの位置のビットを、ビット列t(R/2)とビット列s(R/2)、又は、ビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)として抽出するかは、第2ビット結合過程(ステップS111)でのビット結合方法に応じて決定される。
本形態における第1暗号文c及び第2暗号文uのオーバーヘッドは、第2暗号文uを生成する過程でのパディング及び付加情報bによるオーバーヘッドz+|b|ビット(z≧k)のみである。特に、z=k,v=3k, |b|とした場合には、オーバーヘッドがk+1ビットとなり、オーバーヘッドを最小化できる。
次に、本発明の第3実施形態について説明する。
第3実施形態は、第2実施形態の変形例であり、(1)付加情報bを少なくとも一部のハッシュ関数の入力に含める点、(2)復号装置において付加情報bの検証を行って暗号文の正当性を検証し、暗号文が不当である場合に乱数を復号結果として出力する処理を行わない点が第2実施形態と相違する。以下では、第1,2実施形態との相違点を中心に説明し、これらと共通する事項については説明を省略する。
第3実施形態の暗号通信システムは、第1実施形態の暗号化装置10を暗号化装置210に置換し、復号装置20を復号装置220に置換した構成となる。
第1実施形態と同様であるため説明を省略する。
第2実施形態の暗号化装置210及び復号装置220は、それぞれ、前述のようなハードウェアに所定のプログラムが読み込まれ、CPUがそれを実行することによって構築される。以下、このように構築される各装置の機能構成を説明する。
H(2・i+1):{0,1}v+|c|→{0,1}n−v …(1)
H(2・i+2):{0,1}n−v+|c|→{0,1}v …(2)
又は、
H(2・i+1):{0,1}v+|b|+|c|→{0,1}n−v …(3)
H(2・i+2):{0,1}n−v+|b|+|c|→{0,1}v …(4)
入出力域を持ち、その他のiに対応するハッシュ値h(2・i+1)及び/又はハッシュ値h(2・i+2)が、
H(2・i+1):{0,1}v→{0,1}n−v …(5)
H(2・i+2):{0,1}n−v→{0,1}v …(6)
の入出力域を持つ。
《暗号化処理》
第1実施形態との相違点は、(1)暗号化装置210が、ステップS12又はS46の代わりに、第2実施形態で説明したステップS111の処理を実行し、ビット結合値
y=b|t(R/2)|s(R/2) (Rが偶数の場合)
y=b|t((R‐1)/2)|s(((R‐1)/2)+1) (Rが奇数の場合)
を生成する点、(2)撹乱過程で、第1ハッシュ関数演算部213e及び/又は第2ハッシュ関数演算部213gでそれぞれ算出される、少なくとも一部のiに対応する、ハッシュ値h(2・i+1)及び/又はハッシュ値h(2・i+2)が、さらに付加情報bを結合したビット結合値にハッシュ関数H(2・i+1)を作用させたハッシュ値h(2・i+1)及び/又はh(2・i+2) であり、その他のハッシュ値が第1,2実施形態と同様である点である。各ラウンドのハッシュ値は以下のように場合分けされる。
h(2・i+1)= H(2・i+1)(t(i)|b|c) (H(2・i+1):{0,1}v+|b|+|c|→{0,1}n−v)
[2・i+2=Rc=Rbであるラウンド]
h(2・i+2)= H(2・i+2)(s(i+1)|b|c)(H(2・i+2):{0,1}n−v→{0,1}v)
[2・i+1=Rc≠Rbであるラウンド]
h(2・i+1)= H(2・i+1)(t(i)|c) (H(2・i+1):{0,1}v+|c|→{0,1}n−v)
[2・i+2=Rc≠Rbであるラウンド]
h(2・i+2)= H(2・i+2)(s(i+1)|c)(H(2・i+2):{0,1}n−v→{0,1}v)
[2・i+1=Rb≠Rcであるラウンド]
h(2・i+1)= H(2・i+1)(t(i)|b) (H(2・i+1):{0,1}v+|b|→{0,1}n−v)
[2・i+2=Rb≠Rcであるラウンド]
h(2・i+2)= H(2・i+2)(s(i+1)|b)(H(2・i+2):{0,1}n−v→{0,1}v)
[Rb≠2・i+1≠Rcであるラウンド]
h(2・i+1)= H(2・i+1)(t(i)) (H(2・i+1):{0,1}v→{0,1}n−v)
[Rb≠2・i+2≠Rcであるラウンド]
h(2・i+2)= H(2・i+2)(s(i+1))(H(2・i+2):{0,1}n−v→{0,1}v)
第1実施形態との相違点は、(1)復号装置220が、ステップS23又はS50に代わりに、第2実施形態で説明したステップS121の処理を実行し、ビット結合値yから
y→ b, t(R/2), s(R/2)(Rが偶数の場合)
y→ b, t((R−1)/2), s(((R−1)/2)+1) (Rが奇数の場合)
を抽出する点、(2)撹乱復元過程で、第4ハッシュ関数演算部223f及び/又は第3ハッシュ関数演算部223dでそれぞれ算出される、少なくとも一部のiに対応する、ハッシュ値h(2・i+1)及び/又はハッシュ値h(2・i+2)が、さらに付加情報bをビット結合させたビット結合値にハッシュ関数H(2・i+1)を作用させたハッシュ値h(2・i+1)及び/又はh(2・i+2)であり、その他のハッシュ値が第1,2実施形態と同様である点である。各ラウンドのハッシュ値の場合分けは、上述の暗号化処理の場合と同一である。
次に、本形態の共通鍵生成過程〜撹乱過程・撹乱復元過程〜共通鍵復号過程の具体例を説明する。
図18(a)は、第3実施形態のR=4, Rb=3, Rc=3の場合における、第3実施形態の共通鍵生成過程〜撹乱過程の一例を説明するための図である。この例では、
w=G(t(0)), c=Ew(me)
i=0: h(1)=H(1)(t(0)), s(1)=s(0) (+) h(1), h(2)=H(2)(s(1)), t(1) =t(0) (+) h(2)
i=1: h(3)=H(3)(t(1)|b|c), s(2)=s(1) (+) h(3), h(4)=H(4)(s(2)), t(2) =t(1) (+) h(4)
が実行され、ビット列t(2)とビット列s(2)と第1暗号文cとが出力される。
i=1: h(4)=H(4)(s(2)), t(1)=t(2) (+) h(4), h(3)= H(3)(t(1)|b|c), s(1)=s(2) (+) h(3)
i=0: h(2)=H(2)(s(1)), t(0)=t(1) (+) h(2), h(1)= H(1)(t(0)), s(0)=s(1) (+) h(1)
w=G(t(0)), me=Dw(c)
が実行され、ビット列t(0)とビット列s(0)とmeとが出力される。
w=G(t(0)), c=Ew(me)
i=0: h(1)=H(1)(t(0)), s(1)=s(0) (+) h(1), h(2)=H(2)(s(1)|b), t(1) =t(0) (+) h(2)
i=1: h(3)=H(3)(t(1)|c), s(2)=s(1) (+) h(3), h(4)=H(4)(s(2)), t(2) =t(1) (+) h(4)
が実行され、ビット列t(2)とビット列s(2)と第1暗号文cとが出力される。
i=1: h(4)=H(4)(s(2)), t(1)=t(2) (+) h(4), h(3)= H(3)(t(1)|c), s(1)=s(2) (+) h(3)
i=0: h(2)=H(2)(s(1)|b), t(0)=t(1) (+) h(2), h(1)= H(1)(t(0)), s(0)=s(1) (+) h(1)
w=G(t(0)), me=Dw(c)
が実行され、ビット列t(0)とビット列s(0)とmeとが出力される。
w=G(t(0)), c=Ew(me)
i=0: h(1)=H(1)(t(0)|b|c), s(1)=s(0) (+) h(1), h(2)=H(2)(s(1)|b|c), t(1) =t(0) (+) h(2)
i=1: h(3)=H(3)(t(1)|b|c), s(2)=s(1) (+) h(3), h(4)=H(4)(s(2)|b|c), t(2) =t(1) (+) h(4)
が実行され、ビット列t(2)とビット列s(2)と第1暗号文cとが出力される。
i=1: h(4)=H(4)(s(2)|b|c), t(1)=t(2) (+) h(4), h(3)= H(3)(t(1)|b|c), s(1)=s(2) (+) h(3)
i=0: h(2)=H(2)(s(1)|b|c), t(0)=t(1) (+) h(2), h(1)= H(1)(t(0)|b|c), s(0)=s(1) (+) h(1)
w=G(t(0)), me=Dw(c)
が実行され、ビット列t(0)とビット列s(0)とmeとが出力される。
図21(a)は、ラウンド数R=5, Rb=3, Rc=3の場合における、第3実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。この例では、
w=G(t(0)), c=Ew(me)
i=0: h(1)=H(1)(t(0)), s(1)=s(0) (+) h(1), h(2)=H(2)(s(1)), t(1) =t(0) (+) h(2)
i=1: h(3)=H(3)(t(1)|b|c), s(2)=s(1) (+) h(3), h(4)=H(4)(s(2)), t(2) =t(1) (+) h(4)
i=2: h(5)=H(5)(t(2)), s(3)=s(2) (+) h(5)
が実行され、ビット列t(2)とビット列s(3)と第1暗号文cとが出力される。
i=2: h(5)= H(5)(t(2)), s(2)=s(3)(+) h(5)
i=1: h(4)=H(4)(s(2)), t(1)=t(2) (+) h(4), h(3)= H(3)(t(1)|b|c), s(1)=s(2) (+) h(3)
i=0: h(2)=H(2)(s(1)), t(0)=t(1) (+) h(2), h(1)= H(1)(t(0)), s(0)=s(1) (+) h(1)
w=G(t(0)), me=Dw(c)
が実行され、ビット列t(0)とビット列s(0)とmeとが出力される。
w=G(t(0)), c=Ew(me)
i=0: h(1)=H(1)(t(0)), s(1)=s(0) (+) h(1), h(2)=H(2)(s(1)|b), t(1) =t(0) (+) h(2)
i=1: h(3)=H(3)(t(1)|c), s(2)=s(1) (+) h(3), h(4)=H(4)(s(2)|b|c), t(2) =t(1) (+) h(4)
i=2: h(5)=H(5)(t(2)), s(3)=s(2) (+) h(5)
が実行され、ビット列t(2)とビット列s(3)と第1暗号文cとが出力される。
i=2: h(5)= H(5)(t(2)), s(2)=s(3)(+) h(5)
i=1: h(4)=H(4)(s(2)|b|c), t(1)=t(2) (+) h(4), h(3)= H(3)(t(1)|c), s(1)=s(2) (+) h(3)
i=0: h(2)=H(2)(s(1)|b), t(0)=t(1) (+) h(2), h(1)= H(1)(t(0)), s(0)=s(1) (+) h(1)
w=G(t(0)), me=Dw(c)
が実行され、ビット列t(0)とビット列s(0)とmeとが出力される。
w=G(t(0)), c=Ew(me)
i=0: h(1)=H(1)(t(0)|b|c), s(1)=s(0) (+) h(1), h(2)=H(2)(s(1)|b|c), t(1) =t(0) (+) h(2)
i=1: h(3)=H(3)(t(1)|b|c), s(2)=s(1) (+) h(3), h(4)=H(4)(s(2)|b|c), t(2) =t(1) (+) h(4)
i=2: h(5)=H(5)(t(2)|b|c), s(3)=s(2) (+) h(5)
が実行され、ビット列t(2)とビット列s(3)と第1暗号文cとが出力される。
i=2: h(5)= H(5)(t(2)|b|c), s(2)=s(3)(+) h(5)
i=1: h(4)=H(4)(s(2)|b|c), t(1)=t(2) (+) h(4), h(3)= H(3)(t(1)|b|c), s(1)=s(2) (+) h(3)
i=0: h(2)=H(2)(s(1)|b|c), t(0)=t(1) (+) h(2), h(1)= H(1)(t(0)|b|c), s(0)=s(1) (+) h(1)
w=G(t(0)), me=Dw(c)
が実行され、ビット列t(0)とビット列s(0)とmeとが出力される。
本形態でも、第1,2実施形態で説明したのと同様、短いオーバーヘッドで長い平文を暗号化できる。また、本形態では、ビット結合値yが付加情報bを具備し、この付加情報bを少なくとも一部のハッシュ関数の入力値に含めることとしたため、安全性がより向上する。さらに、そのために第2実施形態のように復号時に付加情報bの値を検証したり、乱数を復号結果として生成する必要もない。
次に、本発明の第4実施形態について説明する。
第4実施形態の暗号通信システムは、第1実施形態の暗号化装置10を暗号化装置310に置換し、復号装置20を復号装置320に置換した構成となる。
第1実施形態と同様であるため説明を省略する。
第4実施形態の暗号化装置310及び復号装置320は、それぞれ、前述のようなハードウェアに所定のプログラムが読み込まれ、CPUがそれを実行することによって構築される。以下、このように構築される各装置の機能構成を説明する。
次に、本形態の処理について説明する。以下では、第1実施形態の処理との相違点のみを説明する。また、本形態では、ラウンド数Rが偶数である場合と奇数である場合を同時に説明する。
図26(a)は、第2実施形態の暗号化処理を説明するためのフローチャートである。
w=G(t(0))
の演算によって共通鍵wを生成する。
図26(b)は、第4実施形態の復号処理を説明するためのフローチャートである。
w=G(t(0))
の演算によって共通鍵wを生成する。
me=Dw(c)
を抽出し、当該第2平文meを記憶部21に格納する(共通鍵復号過程/ステップS33)。
s(0)|me
を生成し、当該ビット結合値を復号結果mとして出力する(第3ビット結合過程/ステップS234)。
次に、ラウンド数R=3 4の場合の「共通鍵生成過程〜撹乱過程」及び「撹乱復元過程〜共通鍵復号過程」の処理を例示する。
図27(a)は、ラウンド数R=4, Rc=3の場合における、第4実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。この例では、
w=G(t(0)), c=Ew(me)
i=0: h(1)=H(1)(t(0)), s(1)=s(0) (+) h(1), h(2)=H(2)(s(1)), t(1) =t(0) (+) h(2)
i=1: h(3)=H(3)(t(1)|c), s(2)=s(1) (+) h(3), h(4)=H(4)(s(2)), t(2) =t(1) (+) h(4)
が実行され、ビット列t(2)とビット列s(2)と第1暗号文cとが出力される。
i=1: h(4)=H(4)(s(2)), t(1)=t(2) (+) h(4), h(3)= H(3)(t(1)|c), s(1)=s(2) (+) h(3)
i=0: h(2)=H(2)(s(1)), t(0)=t(1) (+) h(2), h(1)= H(1)(t(0)), s(0)=s(1) (+) h(1)
w=G(t(0)), me=Dw(c)
が実行され、ビット列t(0)とビット列s(0)とmeとが出力される。
図28(a)は、ラウンド数R=3, Rc=3の場合における、第4実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。この例では、
w=G(t(0)), c=Ew(me)
i=0: h(1)=H(1)(t(0)), s(1)=s(0) (+) h(1), h(2)=H(2)(s(1)), t(1) =t(0) (+) h(2)
i=1: h(3)=H(3)(t(1)|c), s(2)=s(1) (+) h(3)
が実行され、ビット列t(1)とビット列s(2)と第1暗号文cとが出力される。
i=1: h(3)= H(3)(t(1)|c), s(1)=s(2) (+) h(3)
i=0: h(2)=H(2)(s(1)), t(0)=t(1) (+) h(2), h(1)= H(1)(t(0)), s(0)=s(1) (+) h(1)
w=G(t(0)), me=Dw(c)
が実行され、ビット列t(0)とビット列s(0)とmeとが出力される。
本形態の暗号化装置310で生成される第1暗号文c及び第2暗号文uのオーバーヘッドは、第2暗号文uを生成する過程でのパディングによるオーバーヘッドvビット(v≧2k)のみである。特に、v=2kとした場合には、オーバーヘッドが2kビットとなり、オーバーヘッドを最小化できる。
その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。例えば、上述した以外のOAEPの変形例を用いて本発明を構成してもよい。また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
20,120,220,320 復号装置
Claims (16)
- 暗号化装置の第1ビット分割部が、平文mを2つ以上のビット列にビット分割するビット分割過程と、
暗号化装置の共通鍵生成部が、乱数rを含む情報によって定まる共通鍵wを生成する共通鍵生成過程と、
暗号化装置の共通鍵暗号化部が、共通鍵wを用い、共通鍵暗号方式によって、上記平文mから分割された1つのビット列を暗号化し、第1暗号文cを生成する共通鍵暗号化過程と、
暗号化装置のパディング部が、上記平文mから分割された残りのビット列と乱数rとを、1つ以上のハッシュ関数を含むパディング関数に入力し、ビット結合値yを生成するパディング過程と、
暗号化装置の一方向性置換関数演算部が、ビット結合値yに対して落とし戸付き一方向性置換関数fを作用させ、第2暗号文u=f(y)を生成する一方向性置換関数演算過程と、
暗号化装置の送信部が、第1暗号文cと第2暗号文uとを復号装置に送信する暗号文送信過程と、
第1暗号文cと第2暗号文uとを復号装置の記憶部に格納する暗号文格納過程と、
復号装置の逆関数演算部が、第2暗号文uに対して上記落とし戸付き一方向性置換関数fの逆関数f−1を作用させ、ビット結合値y=f−1(u)を抽出する逆関数演算過程と、
復号装置の逆パディング部が、ビット結合値yを、1つ以上のハッシュ関数を含むパディング逆関数に入力し、上記平文mから分割された1つ以上のビット列と、乱数rとを抽出する逆パディング過程と、
復号装置の共通鍵生成部が、乱数rを含む情報によって定まる共通鍵wを生成する共通鍵生成過程と、
復号装置の共通鍵復号部が、共通鍵wを用いて第1暗号文cを復号し、上記平文mから分割された1つのビット列を抽出する共通鍵復号過程と、
復号装置の第3ビット結合部が、上記撹乱復元過程で抽出された上記1つ以上のビット列と、上記共通鍵復号過程で抽出された上記1つのビット列とのビット結合値を生成し、当該ビット結合値を復号結果として出力するビット結合過程と、を有し、
上記パディング関数及び上記パディング逆関数がそれぞれ具備する少なくとも一部のハッシュ関数には、それぞれ第1暗号文cを含む情報が入力される、
ことを特徴とする暗号通信方法。 - (A) 暗号化装置の記憶部にpビット(p>n≧2)の平文mを格納する平文格納過程と、
(B) 上記暗号化装置の記憶部にzビット(n>z≧k,kはセキュリティパラメータ)の乱数rを格納する乱数格納過程と、
(C) 暗号化装置の第1ビット分割部が、平文mを、v‐zビット(n>v-z≧2k)の第1平文m1と、n‐vビットの第2平文m2と、p‐n+zビットの第3平文meとにビット分割し、当該第2平文m2をビット列s(0)とする第1ビット分割過程と、
(D) 暗号化装置の第1ビット結合部が、乱数rと第1平文m1とのビット結合値を生成し、当該ビット結合値をビット列t(0)とする第1ビット結合過程と、
(E) 暗号化装置の共通鍵生成部が、乱数rを含む情報によって定まる共通鍵wを生成する共通鍵生成過程と、
(F) 暗号化装置の共通鍵暗号化部が、共通鍵wを用い、共通鍵暗号方式によって第3平文meを暗号化した第1暗号文cを生成する共通鍵暗号化過程と、
(G) ラウンド数R(Rは4以上の整数)が偶数である場合には、i=0からi=(R/2)‐1まで順番(iは整数)に、
暗号化装置の第1ハッシュ関数演算部が、ビット列t(i)を含む値にハッシュ関数H(2・i+1)を作用させてn‐vビットのハッシュ値h(2・i+1)を算出する第1ハッシュ関数演算過程と、
暗号化装置の第1排他的論理和演算部が、ビット列s(i)とハッシュ値h(2・i+1)との排他的論理和演算を行い、その演算結果をビット列s(i+1)とする第1排他的論理和演算過程と、
暗号化装置の第2ハッシュ関数演算部が、ビット列s(i+1)を含む値にハッシュ関数H(2・i+2)を作用させてvビットのハッシュ値h(2・i+2)を算出する第2ハッシュ関数演算過程と、
暗号化装置の第2排他的論理和演算部が、ビット列t(i)とハッシュ値h(2・i+2)との排他的論理和演算を行い、その演算結果をビット列t(i+1)とする第2排他的論理和演算過程と、を実行し、
ラウンド数Rが奇数である場合には、i=0からi={(R‐1)/2}‐1まで順番に、上記第1ハッシュ関数演算過程と上記第1排他的論理和演算過程と上記第2ハッシュ関数演算過程と上記第2排他的論理和演算過程とを実行し、さらに、i=(R‐1)/2について上記第1ハッシュ関数演算過程と上記第1排他的論理和演算過程とを実行する、撹乱過程と、
(H) ラウンド数Rが偶数である場合には、暗号化装置の第2ビット結合部が、ビット列t(R/2)とビット列s(R/2)とを含むビット結合値yを生成し、
ラウンド数Rが奇数である場合には、暗号化装置の第2ビット結合部が、上記暗号化装置の記憶部からビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを含むビット結合値yを生成する、第2ビット結合過程と、
(I) 暗号化装置の一方向性置換関数演算部が、ビット結合値yに対して落とし戸付き一方向性置換関数fを作用させた第2暗号文u=f(y)を算出する一方向性置換関数演算過程と、
(J) 暗号化装置の送信部が、第1暗号文cと第2暗号文uとを復号装置に送信する暗号文送信過程と、
(K) 第1暗号文cと第2暗号文uとを復号装置の記憶部に格納する暗号文格納過程と、
(L) 復号装置の逆関数演算部が、第2暗号文uに対して上記落とし戸付き一方向性置換関数fの逆関数f−1を作用させ、ビット結合値y=f−1(u)を抽出する逆関数演算過程と、
(M) 復号装置の第2ビット分割部が、ビット結合値yをビット分割し、ラウンド数Rが偶数である場合にはビット列t(R/2)とビット列s(R/2)とを少なくとも抽出し、ラウンド数Rが奇数である場合にはビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを少なくとも抽出する第2ビット分割過程と、
(N) ラウンド数Rが偶数である場合には、i=(R/2)‐1からi=0まで順番に、
復号装置の第3ハッシュ関数演算部が、ビット列s(i+1)を含む値にハッシュ関数H(2・i+2)を作用させてvビットのハッシュ値h(2・i+2)を算出する第3ハッシュ関数演算過程と、
復号装置の第3排他的論理和演算部が、ビット列t(i+1)とハッシュ値h(2・i+2)との排他的論理和演算を行い、その演算結果をビット列t(i)とする第3排他的論理和演算過程と、
復号装置の第4ハッシュ関数演算部が、ビット列t(i)を含む値にハッシュ関数H(2・i+1)を作用させてn‐vビットのハッシュ値h(2・i+1)を算出する第4ハッシュ関数演算過程と、
復号装置の第4排他的論理和演算部が、ビット列s(i+1)とハッシュ値h(2・i+1)との排他的論理和演算を行い、その演算結果をビット列s(i)とする第4排他的論理和演算過程と、を実行し、
ラウンド数Rが奇数である場合には、i=(R‐1)/2について、上記第4ハッシュ関数演算過程と上記第4排他的論理和演算過程とを実行し、さらに、i={(R‐1)/2}‐1からi=0まで順番に、上記第3ハッシュ関数演算過程と上記第3排他的論理和演算過程と上記第4ハッシュ関数演算過程と上記第4排他的論理和演算過程とを実行する、撹乱復元過程と、
(O) 復号装置の第3ビット分割部が、ビット列t(0)をビット分割し、zビットの乱数rと、v‐zビットの第1平文m1とを抽出する第3ビット分割過程と、
(P) 復号装置の共通鍵生成部が、乱数rを含む情報によって定まる共通鍵wを生成する共通鍵生成過程と、
(Q) 復号装置の共通鍵復号部が、共通鍵wを用い、第1暗号文cを復号して第3平文meを抽出する共通鍵復号過程と、
(R) 復号装置の第3ビット結合部が、第1平文m1とビット列s(0)と第3平文meとのビット結合値を生成し、当該ビット結合値を復号結果として出力する第3ビット結合過程と、を有し、
(S) 上記撹乱過程及び撹乱復元過程でそれぞれ算出される、少なくとも一部のiに対応する、上記ハッシュ値h(2・i+1)及び/又は上記ハッシュ値h(2・i+2)は、
上記第1暗号文cとビット列t(i)とを含むビット結合値にハッシュ関数H(2・i+1)を作用させたハッシュ値h(2・i+1)及び/又は上記第1暗号文cとビット列s(i+1)とを含むビット結合値にハッシュ関数H(2・i+2)を作用させたハッシュ値h(2・i+2)である、
ことを特徴とする暗号通信方法。 - (A) 暗号化装置の記憶部にpビット(p>n≧2)の平文mを格納する平文格納過程と、
(B) 上記暗号化装置の記憶部にvビット(n>v≧2k,kはセキュリティパラメータ)の乱数rをビット列t(0)として格納する乱数格納過程と、
(C) 暗号化装置の第1ビット分割部が、平文mを、n‐vビットの第1平文m1と、p‐n+vビットの第2平文meとにビット分割し、当該第1平文m1をビット列s(0)とする第1ビット分割過程と、
(D) 暗号化装置の共通鍵生成部が、乱数rを含む情報によって定まる共通鍵wを生成する共通鍵生成過程と、
(E) 暗号化装置の共通鍵暗号化部が、共通鍵wを用い、共通鍵暗号方式によって当該第2平文meを暗号化した第1暗号文cを生成する共通鍵暗号化過程と、
(F) ラウンド数R(Rは2以上の整数)が偶数である場合には、i=0からi=(R/2)‐1まで順番(iは整数)に、
暗号化装置の第1ハッシュ関数演算部が、ビット列t(i)を含む値にハッシュ関数H(2・i+1)を作用させてn‐vビットのハッシュ値h(2・i+1)を算出する第1ハッシュ関数演算過程と、
暗号化装置の第1排他的論理和演算部が、ビット列s(i)とハッシュ値h(2・i+1)との排他的論理和演算を行い、その演算結果をビット列s(i+1)とする第1排他的論理和演算過程と、
暗号化装置の第2ハッシュ関数演算部が、ビット列s(i+1)を含む値にハッシュ関数H(2・i+2)を作用させてvビットのハッシュ値h(2・i+2)を算出する第2ハッシュ関数演算過程と、
暗号化装置の第2排他的論理和演算部が、ビット列t(i)とハッシュ値h(2・i+2)との排他的論理和演算を行い、その演算結果をビット列t(i+1)とする第2排他的論理和演算過程と、を実行し、
ラウンド数Rが奇数である場合には、i=0からi={(R‐1)/2}‐1まで順番に、上記第1ハッシュ関数演算過程と上記第1排他的論理和演算過程と上記第2ハッシュ関数演算過程と上記第2排他的論理和演算過程とを実行し、さらに、i=(R‐1)/2について上記第1ハッシュ関数演算過程と上記第1排他的論理和演算過程とを実行する、撹乱過程と、
(G) ラウンド数Rが偶数である場合には、暗号化装置の第2ビット結合部が、ビット列t(R/2)とビット列s(R/2)とを含むビット結合値yを生成し、
ラウンド数Rが奇数である場合には、暗号化装置の第2ビット結合部が、ビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを含むビット結合値yを生成する、第2ビット結合過程と、
(H) 暗号化装置の一方向性置換関数演算部が、ビット結合値yに対して落とし戸付き一方向性置換関数fを作用させた第2暗号文u=f(y)を算出する一方向性置換関数演算過程と、
(I) 暗号化装置の送信部が、第1暗号文cと第2暗号文uとを復号装置に送信する暗号文送信過程と、
(J) 第1暗号文cと第2暗号文uとを復号装置の記憶部に格納する暗号文格納過程と、
(K) 復号装置の逆関数演算部が、第2暗号文uに対して上記落とし戸付き一方向性置換関数fの逆関数f−1を作用させ、ビット結合値y=f−1(u)を抽出する逆関数演算過程と、
(L) 復号装置の第2ビット分割部が、ビット結合値yをビット分割し、ラウンド数Rが偶数である場合にはビット列t(R/2)とビット列s(R/2)とを少なくとも抽出し、ラウンド数Rが奇数である場合にはビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを少なくとも抽出する第2ビット分割過程と、
(M) ラウンド数Rが偶数である場合には、i=(R/2)‐1からi=0まで順番に、
復号装置の第3ハッシュ関数演算部が、ビット列s(i+1)を含む値にハッシュ関数H(2・i+2)を作用させてvビットのハッシュ値h(2・i+2)を算出する第3ハッシュ関数演算過程と、
復号装置の第3排他的論理和演算部が、ビット列t(i+1)とハッシュ値h(2・i+2)との排他的論理和演算を行い、その演算結果をビット列t(i)とする第3排他的論理和演算過程と、
復号装置の第4ハッシュ関数演算部が、ビット列t(i)を含む値にハッシュ関数H(2・i+1)を作用させてn‐vビットのハッシュ値h(2・i+1)を算出する第4ハッシュ関数演算過程と、
復号装置の第4排他的論理和演算部が、ビット列s(i+1)とハッシュ値h(2・i+1)との排他的論理和演算を行い、その演算結果をビット列s(i)とする第4排他的論理和演算過程と、を実行し、
ラウンド数Rが奇数である場合には、i=(R‐1)/2について、上記第4ハッシュ関数演算過程と上記第4排他的論理和演算過程とを実行し、さらに、i={(R‐1)/2}‐1からi=0まで順番に、上記第3ハッシュ関数演算過程と上記第3排他的論理和演算過程と上記第4ハッシュ関数演算過程と上記第4排他的論理和演算過程とを実行する、撹乱復元過程と、
(N) 復号装置の共通鍵生成部が、ビット列t(0)を含む情報によって定まる共通鍵wを生成する共通鍵生成過程と、
(O) 復号装置の共通鍵復号部が、共通鍵wを用い、第1暗号文cを復号して第2平文meをする共通鍵復号過程と、
(P) 復号装置の第3ビット結合部が、ビット列s(0)と第2平文meとのビット結合値を生成し、当該ビット結合値を復号結果として出力する第3ビット結合過程と、を有し、
(Q) 上記撹乱過程及び撹乱復元過程でそれぞれ算出される、少なくとも一部のiに対応する、上記ハッシュ値h(2・i+1)及び/又は上記ハッシュ値h(2・i+2)は、
上記第1暗号文cとビット列t(i)とを含むビット結合値にハッシュ関数H(2・i+1)を作用させたハッシュ値h(2・i+1)及び/又は上記第1暗号文cとビット列s(i+1)とを含むビット結合値にハッシュ関数H(2・i+2)を作用させたハッシュ値h(2・i+2)である、
ことを特徴とする暗号通信方法。 - 請求項2又は3に記載の暗号通信方法であって、
ラウンド数Rが偶数である場合には、
上記撹乱過程及び撹乱復元過程でそれぞれ算出される、少なくとも何れかのi≧1に対応する上記ハッシュ値h(2・i+1)が、上記第1暗号文cとビット列t(i)とを含むビット結合値にハッシュ関数H(2・i+1)を作用させたハッシュ値であるか、或いは、少なくとも何れかのi≦(R/2)‐2に対応する上記ハッシュ値h(2・i+2) が、上記第1暗号文cとビット列s(i+1)とを含むビット結合値にハッシュ関数H(2・i+2)を作用させたハッシュ値であり、
ラウンド数Rが奇数である場合には、
上記撹乱過程及び撹乱復元過程でそれぞれ算出される、少なくとも何れかのiに対応する上記ハッシュ値h(2・i+2) が、上記第1暗号文cとビット列s(i+1)とを含むビット結合値にハッシュ関数H(2・i+2)を作用させたハッシュ値である、
ことを特徴とする暗号通信方法。 - 請求項2から4の何れかに記載の暗号通信方法であって、
上記第2ビット結合過程で生成される上記ビット結合値yは、
ラウンド数Rが偶数である場合には、所定値を示す付加情報bとビット列t(R/2)とビット列s(R/2)とを含むビット結合値であり、ラウンド数Rが奇数である場合には、所定値を示す付加情報bとビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを含むビット結合値であり、
上記第2ビット分割過程は、
ビット結合値yをビット分割し、ラウンド数Rが偶数である場合には、少なくとも付加情報bとビット列t(R/2)とビット列s(R/2)を抽出し、ラウンド数Rが奇数である場合には、少なくとも付加情報bとビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを抽出する過程であり、
少なくとも上記第3ビット結合過程は、
上記第2ビット分割過程で抽出された付加情報bが上記所定値を示す場合にのみ実行される過程であり、
上記第2ビット分割過程で抽出された付加情報bが上記所定値以外の値を示す場合に、復号装置の偽装復号結果生成が、pビットの乱数を生成し、当該乱数を復号結果として出力する偽装復号結果生成過程をさらに有する、
ことを特徴とする暗号通信方法。 - 請求項2から4の何れかに記載の暗号通信方法であって、
上記第2ビット結合過程で生成される上記ビット結合値yは、
ラウンド数Rが偶数である場合には、所定値を示す付加情報bとビット列t(R/2)とビット列s(R/2)とを含むビット結合値であり、ラウンド数Rが奇数である場合には、所定値を示す付加情報bとビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを含むビット結合値であり、
上記第2ビット分割過程は、
ビット結合値yをビット分割し、ラウンド数Rが偶数である場合には、少なくとも付加情報bとビット列t(R/2)とビット列s(R/2)を抽出し、ラウンド数Rが奇数である場合には、少なくとも付加情報bとビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを抽出する過程であり、
上記撹乱過程及び撹乱復元過程でそれぞれ算出される、少なくとも一部のiに対応する、上記ハッシュ値h(2・i+1)及び/又は上記ハッシュ値h(2・i+2)は、
上記付加情報bとビット列t(i)とを含むビット結合値にハッシュ関数H(2・i+1)を作用させたハッシュ値h(2・i+1)及び/又は上記付加情報bとビット列s(i+1)とを含むビット結合値にハッシュ関数H(2・i+2)を作用させたハッシュ値h(2・i+2)である、
ことを特徴とする暗号通信方法。 - 請求項6に記載の暗号通信方法であって、
ラウンド数Rが偶数である場合には、
上記撹乱過程及び撹乱復元過程でそれぞれ算出される、少なくとも何れかのi≧1に対応する上記ハッシュ値h(2・i+1)が、上記付加情報bとビット列t(i)とを含むビット結合値にハッシュ関数H(2・i+1)を作用させたハッシュ値であるか、或いは、少なくとも何れかのi≦(R/2)‐2に対応する上記ハッシュ値h(2・i+2) が、上記付加情報bとビット列s(i+1)とを含むビット結合値にハッシュ関数H(2・i+2)を作用させたハッシュ値であり、
ラウンド数Rが奇数である場合には、
上記撹乱過程及び撹乱復元過程でそれぞれ算出される、少なくとも何れかのiに対応する上記ハッシュ値h(2・i+2) が、上記付加情報bとビット列s(i+1)とを含むビット結合値にハッシュ関数H(2・i+2)を作用させたハッシュ値である、
ことを特徴とする暗号通信方法。 - 請求項5から7の何れかに記載の暗号通信方法であって、
上記落とし戸付き一方向性置換関数fは、0以上N未満(Nは自然数)の値を入力とする関数であり、
nは、Nのビット長を|N|とし、付加情報bのビット長を|b|とした場合にn=|N|‐|b|を満たし、
上記付加情報bは、0を示すビット又はビット列であり、
上記第2ビット結合過程で生成される上記ビット結合値yは、付加情報bが先頭にビット結合された値である、
ことを特徴とする暗号通信方法。 - 平文mと乱数rとを格納する記憶部と、
平文mを2つ以上のビット列にビット分割するビット分割部と、
乱数rを含む情報によって定まる共通鍵wを生成する共通鍵生成部と、
共通鍵wを用い、共通鍵暗号方式によって、上記平文mから分割された1つのビット列を暗号化し、第1暗号文cを生成する共通鍵暗号化部と、
上記平文mから分割された残りのビット列と乱数rとを、1つ以上のハッシュ関数を含むパディング関数に入力し、ビット結合値yを生成するパディング部と、
ビット結合値yに対して落とし戸付き一方向性置換関数fを作用させ、第2暗号文u=f(y)を生成する一方向性置換関数演算部と、
第1暗号文cと第2暗号文uとを復号装置に送信する送信部と、を有し、
上記パディング関数が具備する少なくとも一部のハッシュ関数には、それぞれ第1暗号文cを含む情報が入力される、
ことを特徴とする暗号化装置。 - 請求項9に記載の暗号化装置から送信された第1暗号文cと第2暗号文uとを格納する格納部と、
第2暗号文uに対して上記落とし戸付き一方向性置換関数fの逆関数f−1を作用させ、ビット結合値y=f−1(u)を抽出する逆関数演算部と、
ビット結合値yを、1つ以上のハッシュ関数を含むパディング逆関数に入力し、上記平文mから分割された1つ以上のビット列と、乱数rとを抽出する撹乱復元部と、
乱数rを含む情報によって定まる共通鍵wを生成する共通鍵生成部と、
共通鍵wを用いて第1暗号文cを復号し、上記平文mから分割された1つのビット列を抽出する共通鍵復号部と、
上記撹乱復元部で抽出された上記1つ以上のビット列と、上記共通鍵復号部で抽出された上記1つのビット列とのビット結合値を生成し、当該ビット結合値を復号結果として出力するビット結合部と、を有し、
上記パディング逆関数が具備する少なくとも一部のハッシュ関数には、それぞれ第1暗号文cを含む情報が入力される、
ことを特徴とする復号装置。 - pビット(p>n≧2)の平文mと、zビット(z≧k,kはセキュリティパラメータ)の乱数rとを格納する記憶部と、
上記記憶部から平文mを読み込み、当該平文mを、v‐zビット(n>v-z≧2k)の第1平文m1と、n‐vビットの第2平文m2と、p‐n+zビットの第3平文meとにビット分割し、当該第1平文m1と、第2平文m2であるビット列s(0)と、第3平文meとを上記記憶部に格納する第1ビット分割部と、
上記記憶部から乱数rと第1平文m1とを読み込み、これらのビット結合値を生成し、当該ビット結合値をビット列t(0)として上記記憶部に格納する第1ビット結合部と、
上記記憶部から乱数rを含む情報を読み込み、当該情報によって定まる共通鍵wを生成し、当該共通鍵wを上記記憶部に格納する共通鍵生成部と、
上記記憶部から第3平文meと共通鍵wとを読み込み、当該共通鍵wを用い、共通鍵暗号方式によって当該第3平文meを暗号化した第1暗号文cを生成し、当該第1暗号文cを上記記憶部に格納する共通鍵暗号化部と、
上記記憶部からビット列t(i)を読み込み、当該ビット列t(i)を含む値にハッシュ関数H(2・i+1)を作用させてn‐vビットのハッシュ値h(2・i+1)を算出し、当該ハッシュ値h(2・i+1)を上記記憶部に格納する第1ハッシュ関数演算部と、
上記記憶部からビット列s(i)とハッシュ値h(2・i+1)とを読み込み、これらの排他的論理和演算を行い、その演算結果をビット列s(i+1)として上記記憶部に格納する第1排他的論理和演算部と、
上記記憶部からビット列s(i+1)を読み込み、当該ビット列s(i+1)を含む値にハッシュ関数H(2・i+2)を作用させてvビットのハッシュ値h(2・i+2)を算出し、当該ハッシュ値h(2・i+2)を上記記憶部に格納する第2ハッシュ関数演算部と、
上記記憶部からビット列t(i)とハッシュ値h(2・i+2)とを読み込み、これらの排他的論理和演算を行い、その演算結果をビット列t(i+1)として上記記憶部に格納する第2排他的論理和演算部と、
ラウンド数R(Rは4以上の整数)が偶数である場合には、i=0からi=(R/2)‐1まで順番(iは整数)に、上記第1ハッシュ関数演算部と上記第1排他的論理和演算部と上記第2ハッシュ関数演算部と上記第2排他的論理和演算部の処理を実行させ、ラウンド数Rが奇数である場合には、i=0からi={(R‐1)/2}‐1まで順番に、上記第1ハッシュ関数演算部と上記第1排他的論理和演算部と上記第2ハッシュ関数演算部と上記第2排他的論理和演算部の処理を実行させ、さらに、i=(R‐1)/2について上記第1ハッシュ関数演算部と上記第1排他的論理和演算部とを実行させる制御部と、
ラウンド数Rが偶数である場合には、上記記憶部からビット列t(R/2)とビット列s(R/2)とを読み込み、それらを含むビット結合値yを生成し、当該ビット結合値yを上記記憶部に格納し、ラウンド数Rが奇数である場合には、上記記憶部からビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを読み込み、それらを含むビット結合値yを生成し、当該ビット結合値yを上記記憶部に格納する、第2ビット結合部と、
上記記憶部からビット結合値yを読み込み、当該ビット結合値yに対して落とし戸付き一方向性置換関数fを作用させた第2暗号文u=f(y)を算出し、当該第2暗号文uを上記記憶部に格納する一方向性置換関数演算部と、
上記記憶部から読み込まれた第1暗号文cと第2暗号文uとを復号装置に送信する送信部と、を有し、
少なくとも一部のiに対応する、上記ハッシュ値h(2・i+1)及び/又は上記ハッシュ値h(2・i+2)は、
上記第1暗号文cとビット列t(i)とを含むビット結合値にハッシュ関数H(2・i+1)を作用させたハッシュ値h(2・i+1)及び/又は上記第1暗号文cとビット列s(i+1)とを含むビット結合値にハッシュ関数H(2・i+2)を作用させたハッシュ値h(2・i+2)である、
ことを特徴とする暗号化装置。 - 請求項11に記載の暗号化装置から送信された第1暗号文cと第2暗号文uとを格納する記憶部と、
上記記憶部から第2暗号文uを読み込み、当該第2暗号文uに対して上記落とし戸付き一方向性置換関数fの逆関数f−1を作用させ、ビット結合値y=f−1(u)を抽出し、当該ビット結合値yを上記記憶部に格納する逆関数演算部と、
上記記憶部からビット結合値yを読み込み、当該ビット結合値yをビット分割し、ラウンド数Rが偶数である場合にはビット列t(R/2)とビット列s(R/2)とを少なくとも抽出し、ラウンド数Rが奇数である場合にはビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを少なくとも抽出し、それらを上記記憶部に格納する第2ビット分割部と、
上記記憶部からビット列s(i+1)を読み込み、当該ビット列s(i+1)を含む値にハッシュ関数H(2・i+2)を作用させてvビットのハッシュ値h(2・i+2)を算出し、当該ハッシュ値h(2・i+2)を上記記憶部に格納する第3ハッシュ関数演算部と、
上記記憶部からビット列t(i+1)とハッシュ値h(2・i+2)とを読み込み、これらの排他的論理和演算を行い、その演算結果をビット列t(i)として上記記憶部に格納する第3排他的論理和演算部と、
上記記憶部からビット列t(i)を読み込み、当該ビット列t(i)を含む値にハッシュ関数H(2・i+1)を作用させてn‐vビットのハッシュ値h(2・i+1)を算出し、当該ハッシュ値h(2・i+1)を上記記憶部に格納する第4ハッシュ関数演算部と、
上記記憶部からビット列s(i+1)とハッシュ値h(2・i+1)とを読み込み、これらの排他的論理和演算を行い、その演算結果をビット列s(i)として上記記憶部に格納する第4排他的論理和演算部と、
ラウンド数R(Rは4以上の整数)が偶数である場合には、i=(R/2)‐1からi=0まで順番に、上記第3ハッシュ関数演算部と上記第3排他的論理和演算部と上記第4ハッシュ関数演算部と上記第4排他的論理和演算部の処理を実行させ、ラウンド数Rが奇数である場合には、i=(R‐1)/2について、上記第4ハッシュ関数演算部と上記第4排他的論理和演算部の処理を実行させ、さらに、i={(R‐1)/2}‐1からi=0まで順番に、上記第3ハッシュ関数演算部と上記第3排他的論理和演算部と上記第4ハッシュ関数演算部と上記第4排他的論理和演算部の処理を実行させる制御部と、
上記記憶部からビット列t(0)を読み込み、当該ビット列t(0)をビット分割し、zビットの乱数rと、v‐zビットの第1平文m1とを抽出し、当該乱数rと第1平文m1とを上記記憶部に格納する第3ビット分割部と、
上記記憶部から乱数rを含む情報を読み込み、当該情報によって定まる共通鍵wを生成し、当該共通鍵wを上記記憶部に格納する共通鍵生成部と、
上記記憶部から第1暗号文cと共通鍵wとを読み込み、当該共通鍵wを用い、当該第1暗号文cを復号して第3平文meを抽出し、当該第3平文meを上記記憶部に格納する共通鍵復号部と、
上記記憶部から、第1平文m1とビット列s(0)と第3平文meとを読み込み、これらのビット結合値を生成し、当該ビット結合値を復号結果として出力する第3ビット結合部と、を有し、
少なくとも一部のiに対応する、上記ハッシュ値h(2・i+1)及び/又は上記ハッシュ値h(2・i+2)は、
上記第1暗号文cとビット列t(i)とを含むビット結合値にハッシュ関数H(2・i+1)を作用させたハッシュ値h(2・i+1)及び/又は上記第1暗号文cとビット列s(i+1)とを含むビット結合値にハッシュ関数H(2・i+2)を作用させたハッシュ値h(2・i+2)である、
ことを特徴とする復号装置。 - pビット(p>n≧2)の平文mと、vビット(n>v≧2k,kはセキュリティパラメータ)の乱数rであるビット列t(0)とを格納する記憶部と、
上記記憶部から平文mを読み込み、当該平文mを、n‐vビットの第1平文m1と、p‐n+vビットの第2平文meとにビット分割し、当該第1平文m1であるビット列s(0)と、第2平文meとを上記記憶部に格納する第1ビット分割部と、
上記記憶部から乱数rを含む情報を読み込み、当該情報によって定まる共通鍵wを生成し、当該共通鍵wを上記記憶部に格納する共通鍵生成部と、
上記記憶部から第2平文meと共通鍵wとを読み込み、当該共通鍵wを用い、共通鍵暗号方式によって当該第2平文meを暗号化した第1暗号文cを生成し、当該第1暗号文cを上記記憶部に格納する共通鍵暗号化部と、
上記記憶部からビット列t(i)を読み込み、当該ビット列t(i)を含む値にハッシュ関数H(2・i+1)を作用させてn‐vビットのハッシュ値h(2・i+1)を算出し、当該ハッシュ値h(2・i+1)を上記記憶部に格納する第1ハッシュ関数演算部と、
上記記憶部からビット列s(i)とハッシュ値h(2・i+1)とを読み込み、これらの排他的論理和演算を行い、その演算結果をビット列s(i+1)として上記記憶部に格納する第1排他的論理和演算部と、
上記記憶部からビット列s(i+1)を読み込み、当該ビット列s(i+1)を含む値にハッシュ関数H(2・i+2)を作用させてvビットのハッシュ値h(2・i+2)を算出し、当該ハッシュ値h(2・i+2)を上記記憶部に格納する第2ハッシュ関数演算部と、
上記記憶部からビット列t(i)とハッシュ値h(2・i+2)とを読み込み、これらの排他的論理和演算を行い、その演算結果をビット列t(i+1)として上記記憶部に格納する第2排他的論理和演算部と、
ラウンド数R(Rは2以上の整数)が偶数である場合には、i=0からi=(R/2)‐1まで順番(iは整数)に、上記第1ハッシュ関数演算部と上記第1排他的論理和演算部と上記第2ハッシュ関数演算部と上記第2排他的論理和演算部の処理を実行させ、ラウンド数Rが奇数である場合には、i=0からi={(R‐1)/2}‐1まで順番に、上記第1ハッシュ関数演算部と上記第1排他的論理和演算部と上記第2ハッシュ関数演算部と上記第2排他的論理和演算部の処理を実行させ、さらに、i=(R‐1)/2について上記第1ハッシュ関数演算部と上記第1排他的論理和演算部の処理を実行させる制御部と、
ラウンド数Rが偶数である場合には、暗号化装置の第2ビット結合部が、上記記憶部からビット列t(R/2)とビット列s(R/2)とを読み込み、それらを含むビット結合値yを生成し、当該ビット結合値yを上記記憶部に格納し、ラウンド数Rが奇数である場合には、暗号化装置の第2ビット結合部が、上記記憶部からビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを読み込み、それらを含むビット結合値yを生成し、当該ビット結合値yを上記記憶部に格納する、第2ビット結合部と、
上記記憶部からビット結合値yを読み込み、当該ビット結合値yに対して落とし戸付き一方向性置換関数fを作用させた第2暗号文u=f(y)を算出し、当該第2暗号文uを上記記憶部に格納する一方向性置換関数演算部と、
上記記憶部から読み込まれた第1暗号文cと第2暗号文uとを復号装置に送信する暗号文送信部と、を有し、
少なくとも一部のiに対応する、上記ハッシュ値h(2・i+1)及び/又は上記ハッシュ値h(2・i+2)は、
上記第1暗号文cとビット列t(i)とを含むビット結合値にハッシュ関数H(2・i+1)を作用させたハッシュ値h(2・i+1)及び/又は上記第1暗号文cとビット列s(i+1)とを含むビット結合値にハッシュ関数H(2・i+2)を作用させたハッシュ値h(2・i+2)である、
ことを特徴とする暗号化装置。 - 請求項13に記載の暗号化装置から送信された第1暗号文cと第2暗号文uとを格納する記憶部と、
上記記憶部から第2暗号文uを読み込み、当該第2暗号文uに対して上記落とし戸付き一方向性置換関数fの逆関数f−1を作用させ、ビット結合値y=f−1(u)を抽出し、当該ビット結合値yを上記記憶部に格納する逆関数演算部と、
上記記憶部からビット結合値yを読み込み、当該ビット結合値yをビット分割し、ラウンド数Rが偶数である場合にはビット列t(R/2)とビット列s(R/2)とを少なくとも抽出し、ラウンド数Rが奇数である場合にはビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを少なくとも抽出し、それらを上記記憶部に格納する第2ビット分割部と、
上記記憶部からビット列s(i+1)を読み込み、当該ビット列s(i+1)を含む値にハッシュ関数H(2・i+2)を作用させてvビットのハッシュ値h(2・i+2)を算出し、当該ハッシュ値h(2・i+2)を上記記憶部に格納する第3ハッシュ関数演算部と、
上記記憶部からビット列t(i+1)とハッシュ値h(2・i+2)とを読み込み、これらの排他的論理和演算を行い、その演算結果をビット列t(i)として上記記憶部に格納する第3排他的論理和演算部と、
上記記憶部からビット列t(i)を読み込み、当該ビット列t(i)を含む値にハッシュ関数H(2・i+1)を作用させてn‐vビットのハッシュ値h(2・i+1)を算出し、当該ハッシュ値h(2・i+1)を上記記憶部に格納する第4ハッシュ関数演算部と、
上記記憶部からビット列s(i+1)とハッシュ値h(2・i+1)とを読み込み、これらの排他的論理和演算を行い、その演算結果をビット列s(i)として上記記憶部に格納する第4排他的論理和演算部と、
ラウンド数Rが偶数である場合には、i=(R/2)‐1からi=0まで順番に、上記第3ハッシュ関数演算部と上記第3排他的論理和演算部と上記第4ハッシュ関数演算部と上記第4排他的論理和演算部の処理を事項させ、ラウンド数Rが奇数である場合には、i=(R‐1)/2について、上記第4ハッシュ関数演算部と上記第4排他的論理和演算部の処理を実行させ、さらに、i={(R‐1)/2}‐1からi=0まで順番に、上記第3ハッシュ関数演算部と上記第3排他的論理和演算部と上記第4ハッシュ関数演算部と上記第4排他的論理和演算部の処理を事項させる制御部と、
上記記憶部からビット列t(0)を含む情報を読み込み、当該情報によって定まる共通鍵wを生成し、当該共通鍵wを上記記憶部に格納する共通鍵生成部と、
上記記憶部から第1暗号文cと共通鍵wとを読み込み、当該共通鍵wを用い、当該第1暗号文cを復号して第2平文meを抽出し、当該第2平文meを上記記憶部に格納する共通鍵復号部と、
上記記憶部から、ビット列s(0)と第2平文meとを読み込み、これらのビット結合値を生成し、当該ビット結合値を復号結果として出力する第3ビット結合部と、を有し、
少なくとも一部のiに対応する、上記ハッシュ値h(2・i+1)及び/又は上記ハッシュ値h(2・i+2)は、
上記第1暗号文cとビット列t(i)とを含むビット結合値にハッシュ関数H(2・i+1)を作用させたハッシュ値h(2・i+1)及び/又は上記第1暗号文cとビット列s(i+1)とを含むビット結合値にハッシュ関数H(2・i+2)を作用させたハッシュ値h(2・i+2)である、
ことを特徴とする復号装置。 - 請求項9,11又は13に記載の暗号化装置としてコンピュータを機能させるためのプログラム。
- 請求項10,12又は14に記載の復号装置としてコンピュータを機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007305918A JP5038866B2 (ja) | 2007-11-27 | 2007-11-27 | 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007305918A JP5038866B2 (ja) | 2007-11-27 | 2007-11-27 | 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009128773A true JP2009128773A (ja) | 2009-06-11 |
JP5038866B2 JP5038866B2 (ja) | 2012-10-03 |
Family
ID=40819731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007305918A Active JP5038866B2 (ja) | 2007-11-27 | 2007-11-27 | 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5038866B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8891761B2 (en) | 2011-01-31 | 2014-11-18 | Nec Corporation | Block encryption device, decryption device, encrypting method, decrypting method and program |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101978684B1 (ko) * | 2017-08-31 | 2019-05-15 | 동국대학교 산학협력단 | 재생 공격 방지가 가능한 부호 기반 암호화 장치 및 방법 |
KR101942030B1 (ko) * | 2018-11-13 | 2019-01-24 | 동국대학교 산학협력단 | 메시지에 대한 무결성 검증이 지원되는 부호 기반의 암호화가 가능한 전자 장치 및 그 동작 방법 |
-
2007
- 2007-11-27 JP JP2007305918A patent/JP5038866B2/ja active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8891761B2 (en) | 2011-01-31 | 2014-11-18 | Nec Corporation | Block encryption device, decryption device, encrypting method, decrypting method and program |
Also Published As
Publication number | Publication date |
---|---|
JP5038866B2 (ja) | 2012-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102423885B1 (ko) | 연산 에러 검출이 가능한 준동형 암호 방법 및 그 시스템 | |
JP4869824B2 (ja) | 受信者装置及び送信者装置及び暗号通信システム及びプログラム | |
JP2010049213A (ja) | 暗号化装置、復号装置、暗号通信システム、方法及びプログラム | |
Hodowu et al. | An enhancement of data security in cloud computing with an implementation of a two-level cryptographic technique, using AES and ECC algorithm | |
JP2007114494A (ja) | 秘匿計算方法及び装置 | |
JP2006311383A (ja) | データ管理方法、データ管理システムおよびデータ管理装置 | |
JP6719339B2 (ja) | 暗号システム、暗号方法及び暗号プログラム | |
Jakobsson et al. | Scramble all, encrypt small | |
JP5038866B2 (ja) | 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム | |
JP4934010B2 (ja) | 公開鍵暗号システム、公開鍵暗号方法、暗号化装置、復号化装置、暗号化プログラム及び復号化プログラム | |
JP5469618B2 (ja) | 暗号化システム、復号方法、鍵更新方法、鍵生成装置、受信装置、代理計算装置、プログラム | |
WO2019220900A1 (ja) | 暗号化システム、暗号化装置、復号装置、暗号化方法、復号方法、及びプログラム | |
JP5032955B2 (ja) | 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム | |
JP4685621B2 (ja) | 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム | |
JP2011040932A (ja) | 認証付き暗号化装置、認証付き暗号化方法、検証付き復号装置、検証付き復号方法、暗号システム、プログラム、記録媒体 | |
JP5713947B2 (ja) | プロキシ暗号システム,プロキシ暗号方法,委託装置,プロキシ装置 | |
JP5679344B2 (ja) | 署名鍵難読化システム、署名鍵難読化方法、難読化された署名鍵を用いた暗号化署名システム、難読化された署名鍵を用いた暗号化署名方法とプログラム | |
JP2005084568A (ja) | セキュリティ方法、セキュリティ装置及びセキュリティプログラム | |
JP2017223822A (ja) | 暗号文処理システム、暗号文処理サーバ、及び暗号文処理方法 | |
JP5448801B2 (ja) | 暗号化システム、暗号化装置、復号装置、暗号化方法、プログラム、記録媒体 | |
JP4676873B2 (ja) | パラメータ生成装置、暗号鍵生成装置、それらの方法及びプログラム | |
Imam et al. | An empirical study of secure and complex variants of RSA scheme | |
JP2009130872A (ja) | 鍵共有方法、第1装置、第2装置、及び、それらのプログラム | |
WO2022254578A1 (ja) | 暗号システム、暗号文更新装置、プログラム | |
JP5355263B2 (ja) | 鍵共有装置、鍵共有方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100114 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20110812 |
|
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: 20120626 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120706 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150713 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5038866 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |