説明

暗号化装置、復号装置、暗号文検証装置、暗号化方法、復号方法及びプログラム

【課題】乗法群の部分群上の離散対数問題に安全性の根拠を置く公開鍵暗号方式において、処理時間の増大を抑制しつつ、データのサイズを低減可能な暗号化技術を提供する。
【解決手段】暗号化装置は、暗号文(c1,c2)の各暗号文成分のうち一部の暗号文成分を圧縮すると同時に別の暗号文成分を生成する。一方、復号装置は、暗号文(c1,c2)の各暗号文成分のうち圧縮された暗号文成分を伸張すると同時に、圧縮されていない暗号文成分あるいは伸張済み暗号文成分と秘密鍵とを用いてべき乗算や乗算などの各種演算を行うことにより、平文を得る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式にかかる暗号化装置、復号装置、暗号文検証装置、暗号化方法、復号方法及びプログラムに関する。
【背景技術】
【0002】
通信路を流れる情報を保護するために、暗号を用いる方法がある。暗号を用いる方法には、通信相手と事前に鍵を共有しておく必要があるものもある。このような方法では、鍵の共有や管理に大きな手間がかかる。一方、公開鍵暗号を用いる方法では、事前に鍵を共有することなしに安全な通信を実現できる。このため、ネットワーク・セキュリティの基盤技術として幅広く用いられている。また、情報端末の多様化が進み、小型機器においても方式や実装を工夫して公開鍵を用いた各種スキームやプロトコルが用いられるようになってきた。
【0003】
公開鍵暗号の暗号方式にはElGamal暗号やCramer−Shoup暗号のように離散対数問題の困難性を安全性の根拠とするものがある。離散対数問題とは、巡回群‘G=<g>’において‘y∈G’が与えられたときに、‘y=g^x’を満たすxを求める問題である。尚、‘^’はべき乗を表す。巡回群Gとしては、有限体の乗法群や楕円曲線の有理点のなす加法群(ヤコビ群)が用いられる。離散対数問題を解くアルゴリズムには、シャンクのアルゴリズムやポラードのρ法のようにいずれの巡回群上で定義された離散対数問題に対しても適用可能なものと、位数計算法にように有限体の乗法群上で定義された離散対数問題のみに適用可能なものとが存在する。
【0004】
位数計算法は効率的であるため、有限体の乗法群上の離散対数問題を用いた公開鍵暗号は解読されやすい。したがって、同じ安全性を確保するために、有限体の乗法群上の離散対数問題を用いた公開鍵暗号は、楕円曲線上の離散対数問題を用いた公開鍵暗号よりも鍵長や暗号文長を大きくする必要がある。
【0005】
現在、公開鍵暗号において典型的なセキュリティパラメータは1024ビット〜2048ビットである。セキュリティパラメータとは、公開鍵サイズや暗号文サイズを決定するパラメータであり、暗号方式の安全性に影響を与えるパラメータである。このセキュリティパラメータが大きくなれば、公開鍵サイズや暗号文サイズも大きくなる。解読が困難とされるセキュリティパラメータは年々大きくなっている。これは、計算機の進歩に伴い攻撃者の能力も向上するためである。公開鍵暗号では公開鍵サイズや暗号文サイズは、暗号方式により異なるが、セキュリティパラメータの数倍となる。
【0006】
そこで、公開鍵暗号における公開鍵サイズや暗号文サイズを圧縮する方法が提案されている(例えば、非特許文献1参照)。この方法は、公開鍵暗号で用いる数の集合のうち代数的トーラスと呼ばれる部分集合を用いると、集合の成分を小さいビット数で表現できるという事実に基づいている。代数的トーラスの属する拡大体の次数nが高々二つの素数p,qの冪の積‘l=(p^m)・(q^n)’であるとき、圧縮率(=圧縮前のビット数/圧縮後のビット数)は、‘l/φ(l)’となることが知られている。ただし、φ(・)はオイラー関数である。p^mは、pのm乗である。小さいビット数の表現への変換は、拡大体表現を射影表現に変換する写像ρと射影表現をアフィン表現に変換する写像τによって行われる。暗号文を圧縮する場合の具体例を示す。拡大体表現の暗号文cを入力として計算を行い、圧縮暗号文γを得る(式1参照)。
【0007】
ρ(c)=γ・・・(式1)
【0008】
元のビット数の表現に戻すには、それぞれρ、τの逆写像を計算すればよい。ρの逆写像をψと書き、τの逆写像をτ−1と書くことにする。圧縮暗号文としてγが与えられたときに計算を行い、cを得る(式2参照)。
【0009】
ψτ―1(γ)= c・・・(式2)
【0010】
また、非特許文献1、2では、前記圧縮写像1、2と前記伸張写像1,2の構成法と、それらを用いて次のような拡大体表現をアフィン表現に圧縮する写像ρ6、アフィン表現を拡大体表現に伸張する写像‘ρ6^(−1)’の構成法が示されている。圧縮写像ρ6は、6次拡大体F{(p^m)^6}上の拡大体表現のトーラスTの任意の元tを入力として計算し、アフィン表現F{p^m}×F{p^m}^*の要素との組を得る(式3参照)。
【0011】
ρ6(t)=(a,b)∈F{p^m}×F{p^m}^*・・・(式3)
【0012】
尚、ここで‘×’は直積を表すものとする。また、Aが集合であるとき、A^mはm個のAの直積集合となる。例えば、‘A^3=A×A×A’となる。具体的には例えば、‘{0,1、2}^2={(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)}’となる。ここで、F{p^m}は、素体F{p}のm次拡大体であり、 F{p^m}の要素はベクトル表現を用いると、{0,・・・,p−1}^mの要素で表現できる。F{p^m}^*は、F{p^m}の乗法群であり、F{p^m}^mの要素はベクトル表現を用いると、{0,・・・,p−1}\{0}^mの要素で表される。‘\’は集合の引き算を表す。
6^(−1)’は、(a,b)∈F{p^m}×F{p^m}^*を入力として計算し、6次拡大体F{(p^m)^6}上の拡大体表現のトーラスTの元tを得る(式4参照)。
【0013】
ρ−1(a,b)=t∈T・・・(式4)
【0014】
また、非特許文献2では、F{p^m}の6次拡大体上のトーラスの要素の拡大体表現{0,・・・,p−1}^{6^m}と射影表現{0,・・・,p−1}^{6*m}とアフィン表現F{p^m}×F{p^m}^*に対して、上記のρ、ψ、τ、τ−1の構成法を示し、それを元に(式3)と(式4)との写像を構成している。このとき、拡大体表現と射影表現とに対する演算は、共にF{p^(6*m)}の演算で、非特許文献1、2ではF{p^(6*m)}の演算をF{((p^m)^3)^2}の演算として実現している。アフィン表現の要素は拡大体表現や射影表現よりも短いビット長で表現できる反面、演算することができない。
【0015】
代数的トーラスを用いた圧縮や伸張は、公開鍵暗号における公開鍵や暗号文だけでなく、デジタル署名における署名や鍵交換スキームにおける交換メッセージにも適用できる。
【0016】
近年では、離散対数問題の困難性に基づく様々な公開鍵暗号の暗号方式が提案されている。例えば、Cramer-Shoup暗号(非特許文献3参照)は、標準モデルでの安全性が証明されている方式であるが、公開鍵や暗号文の成分の数が多いという特徴がある。具体的には、Cramer-Shoup暗号の暗号文は4つの成分(c1, c2, c3, c4)からなり、公開鍵も5つの成分(g,g~,e,f,h)が含まれる。しかも、各成分は実際に暗号に用いられる群よりも大きな表現で表されるという問題がある。つまり、Cramer-Shoup暗号は有限群G~の素数位数部分群G上で定義されているが、公開鍵や暗号文の成分は有限群G~の表現で表されている。具体的には、Cramer-Shoup暗号は素体の乗法群の素数位数部分群で定義されているが、公開鍵や暗号文の成分は素体の表現で表されている。
【0017】
Cramer-Shoup暗号やその他の公開鍵暗号において、有限群G~の部分群であって実際に暗号に用いられる群Gを代数的トーラスTの部分群とすることにより、公開鍵や暗号文を有限群G~のサイズではなく代数的トーラスTのサイズ、すなわち群G~よりも小さなビット数で表現が可能となる。例えば、素体上の代数的トーラスを用いたElGamal暗号やDH鍵交換(非特許文献1、4参照)はこの概念を利用し、公開鍵や暗号文のサイズを小さくしたものである。
【0018】
ここで、Cramer-Shoup暗号の処理の概要を説明する。平文mを暗号化する暗号化装置には、鍵生成装置で生成された公開鍵(q,g,g~,e,f,h)が入力される。尚、qは素数で有限群G~の部分群Gの位数、gは暗号が定義される部分群Gの生成元、g~,e,f,hも部分群Gの元とする。平文mもGの元でなければならない。暗号化装置は、乱数の生成、べき乗計算、乗算、ハッシュ計算を行い、平文mに対応する暗号文(c1, c2, c3, c4)を計算する。この暗号文(c1, c2, c3, c4)は、復号装置に入力される。また、復号装置には、公開鍵に対応する秘密鍵(x1, x2, y1, y2, z1, z2)が入力される。この秘密鍵は‘1’から‘q−1’までの整数(又は‘0’から‘q-1’までの整数)とする。復号装置は、秘密鍵(x1, x2, y1, y2, z1, z2)と暗号文(c1, c2, c3, c4)とを用いて、正当な暗号文であるかのチェックを行い、平文mを計算する。
【0019】
【非特許文献1】K. Rubin and A. Silverberg, “Torus-Based Cryptography”, CRYPTO 2003, LNCS 2729, 349-365, 2003.
【非特許文献2】Robert Granger, Dan Page, Martijn Stam: A Comparison of CEILIDH and XTR. ANTS 2004: 235-249
【非特許文献3】R. Cramer and V. Shoup, “A practical public key cryptosystem provably secure against adaptive chosen ciphertextattack”, CRYPTO'98, LNCS 1462, pp.13-25, 1998.
【非特許文献4】M. van Dijkand D. Woodruff, “Asymptotically Optimal Communication for Torus-Based Cryptography”, CRYPTO 2004, LNCS 3152, 157-178, 2004.
【発明の開示】
【発明が解決しようとする課題】
【0020】
しかしながら、例えばCramer-Shoup暗号のような乗法群の部分群上の離散対数問題を安全性の根拠とする公開鍵暗号の暗号方式において、暗号化や復号と圧縮や伸張とを行うことを考えた場合、通常、暗号化装置で暗号化して圧縮した後データを送信し、復号装置で受信したデータを伸張して復号するという手順で処理を行う。暗号化装置でこのような圧縮を行う場合、これを行わない場合と比べ、送信するデータのサイズを小さくすることができるため、通信コストが下がるものの、処理時間が増大する。復号装置で伸張を行う場合も、これを行わない場合に比べ、処理時間が増大する。
【0021】
本発明は、上記に鑑みてなされたものであって、乗法群の部分群上の離散対数問題に安全性の根拠を置く暗号方式において、処理時間の増大を抑制しつつ、データのサイズを低減可能な暗号化装置、復号装置、暗号化方法、復号方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0022】
上述した課題を解決し、本発明は、有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式により平文を暗号化し、複数の暗号文成分を含む暗号文を出力する暗号化装置であって、平文を受信する平文受信部と、1つ以上の公開鍵成分を含む公開鍵を受信する公開鍵受信部と、受信された前記平文と前記公開鍵成分とを用いて暗号文成分である第1の暗号文成分を少なくとも1つ以上生成する第1暗号文成分生成部と、少なくとも1つ以上の前記第1の暗号文成分を圧縮して、第1の圧縮暗号文成分を得る暗号文成分圧縮部と、受信された前記平文と、前記公開鍵成分と、前記第1の暗号文成分と、前記第1の圧縮暗号文成分とのうち、少なくとも1つ以上を用いて第2の暗号文成分を生成する第2暗号文成分生成部と、少なくとも前記第1の圧縮暗号文成分と前記第2の暗号文成分とを含む暗号文を出力する暗号文出力部とを備えることを特徴とする。
【0023】
また、本発明は、有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式により暗号化され複数の暗号文成分を含む暗号文を復号して平文を得る復号装置であって、前記暗号文成分のうち少なくとも1つが圧縮された圧縮暗号文成分を含む暗号文を受信する暗号文受信部と、前記暗号文の暗号化に用いられた公開鍵に対応する1つ以上の秘密鍵成分を含む秘密鍵を受信する秘密鍵受信部と、受信された前記暗号文成分と前記秘密鍵成分とのうちいずれかを少なくとも用いて、前記暗号文の復号に用いる中間データを生成する中間データ生成部と、前記圧縮暗号文成分を演算可能な表現で表現した伸張済み圧縮暗号分成分に伸張する暗号文成分伸張部と、前記中間データの一部と、前記伸張済み圧縮暗号文成分と、前記暗号文成分とのいずれかを少なくとも用いて復号済みの平文を生成する復号済み平文生成部と、前記復号済みの平文を出力する復号済み平文出力部とを備えることを特徴とする。
【0024】
また、本発明は、有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式により暗号化され複数の暗号文成分を含む暗号文を復号して平文を得る復号装置であって、前記暗号文成分のうち少なくとも1つが圧縮された圧縮暗号文成分を含む暗号文を受信する暗号文受信部と、前記暗号文の暗号化に用いられた公開鍵に対応する1つ以上の秘密鍵成分を含む秘密鍵を受信する秘密鍵受信部と、受信された前記暗号文成分と前記秘密鍵成分とのうちいずれかを少なくとも用いて、平文を計算する平文計算部と、受信された前記暗号文成分と前記秘密鍵成分とのうちいずれかを少なくとも用いて、前記暗号文の正当性を検証するための検証用データを生成する検証用データ生成部と、前記圧縮暗号文成分と前記検証用データとを少なくとも用いて、前記暗号文の正当性を検証する正当性検証部と、前記暗号文が正当であると検証された場合、前記平文を出力し、前記暗号文が正当でないと検証された場合、前記暗号文が正当ではない旨を出力する復号済み平文出力部とを備えることを特徴とする。
【0025】
また、本発明は、有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式により暗号化され複数の暗号文成分を含む暗号文の正当性を検証する暗号文正当性検証装置であって、前記暗号文成分のうち少なくとも1つが圧縮された圧縮暗号文成分を含む暗号文を受信する暗号文受信部と、前記暗号文の暗号化に用いられた公開鍵に対応する1つ以上の秘密鍵成分を含む秘密鍵を受信する秘密鍵受信部と、受信された前記暗号文成分と前記秘密鍵成分とのうちいずれかを少なくとも用いて、前記暗号文の復号に用いる中間データを生成する中間データ生成部と、前記圧縮暗号文成分の表現を演算可能な表現である伸張済み圧縮暗号分成分に伸張する暗号文成分伸張部と、前記中間データの一部と、前記伸張済み圧縮暗号文成分と、前記暗号文成分とのいずれかを少なくとも用いて前記暗号文の正当性を検証する正当性検証部と、前記正当性検証部の検証結果を出力する検証結果出力部とを備えることを特徴とする。
【0026】
また、本発明は、有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式により暗号化され複数の暗号文成分を含む暗号文の正当性を検証する暗号文検証装置であって、前記暗号文成分のうち少なくとも1つが圧縮された圧縮暗号文成分を含む暗号文を受信する暗号文受信部と、前記暗号文の暗号化に用いられた公開鍵に対応する1つ以上の秘密鍵成分を含む秘密鍵を受信する秘密鍵受信部と、受信された前記暗号文成分と前記秘密鍵成分とのうちいずれかを少なくとも用いて、平文を計算する平文計算部と、受信された前記暗号文成分と前記秘密鍵成分とのうちいずれかを少なくとも用いて、前記暗号文の正当性を検証するための検証用データを生成する検証用データ生成部と、前記圧縮暗号文成分と前記検証用データとを少なくとも用いて、前記暗号文の正当性を検証する正当性検証部と、前記正当性検証部の検証結果を出力する検証結果出力部とを備えることを特徴とする。
【0027】
また、本発明は、有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式により平文を暗号化し、複数の暗号文成分を含む暗号文を出力する暗号化装置で実行される暗号化方法であって、平文を受信する平文受信ステップと、1つ以上の公開鍵成分を含む公開鍵を受信する公開鍵受信ステップと、受信された前記平文と前記公開鍵成分とを用いて暗号文成分である第1の暗号文成分を少なくとも1つ以上生成する第1暗号文成分生成ステップと、少なくとも1つ以上の前記第1の暗号文成分を圧縮して、第1の圧縮暗号文成分を得る第1暗号文成分圧縮ステップと、受信された前記平文と、前記公開鍵成分と、前記第1の暗号文成分と、前記第1の圧縮暗号文成分とのうち、少なくとも1つ以上を用いて第2の暗号文成分を生成する第2暗号文成分生成ステップと、少なくとも前記第1の圧縮暗号文成分と前記第2の暗号文成分とを含む暗号文を出力する暗号文出力ステップとを含むことを特徴とする。
【0028】
また、本発明は、有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式により暗号化され複数の暗号文成分を含む暗号文を復号して平文を得る復号装置で実行される復号方法であって、前記暗号文成分のうち少なくとも1つが圧縮された圧縮暗号文成分を含む暗号文を受信する暗号文受信ステップと、前記暗号文の暗号化に用いられた公開鍵に対応する1つ以上の秘密鍵成分を含む秘密鍵を受信する秘密鍵受信ステップと、受信された前記暗号文成分と前記秘密鍵成分とのうちいずれかを少なくとも用いて、前記暗号文の復号に用いる中間データを生成する中間データ生成ステップと、前記圧縮暗号文成分を演算可能な表現で表現した伸張済み圧縮暗号分成分に伸張する暗号文成分伸張ステップと、前記中間データの一部と、前記伸張済み圧縮暗号文成分と、前記暗号文成分とのいずれかを少なくとも用いて復号済みの平文を生成する復号済み平文生成ステップと、復号済みの前記平文を出力する復号済み平文出力ステップとを含むことを特徴とする。
【0029】
また、本発明は、プログラムであって、上記の方法をコンピュータに実行させることを特徴とする。
【発明の効果】
【0030】
本発明によれば、乗法群の部分群上の離散対数問題に安全性の根拠を置く暗号方式において、処理時間の増大を抑制しつつ、データのサイズを低減可能になる。
【発明を実施するための最良の形態】
【0031】
以下に添付図面を参照して、この発明にかかる暗号化装置、復号装置、暗号文検証装置、暗号化方法、復号方法及びプログラムの最良な実施の形態を詳細に説明する。
【0032】
[第1の実施の形態]
(1)構成
<一般的暗号方式の構成>
有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式で複数の暗号文成分を含む暗号文の正当性を検証する基本的な構成について図1を用いて説明する。まず、公開鍵に含まれる公開鍵成分pk及び当該公開鍵成分に対応する秘密鍵に含まれる秘密鍵成分skが図示しない鍵生成装置で生成される。公開鍵成分pkが暗号化装置で受信され、当該公開鍵成分pkに対応する秘密鍵成分skが暗号文検証装置で受信される。暗号化装置は公開鍵成分pkを用いて平文mに対応する暗号文(c1、c2)を計算してこれを出力する。一方、暗号文検証装置20は暗号文(c1,c2)を受信すると、これと秘密鍵成分skを用いて暗号文(c1,c2)が正当なものであるか否かを検証する。なお、公開鍵成分pkおよび平文mが圧縮された表現、即ち、アフィン表現(pk*,m*)となっている場合、暗号化装置10への入力以前に拡大体表現や射影表現に伸張(変換)するものとする。
【0033】
次に、本実施の形態にかかる暗号化装置及び暗号文検証装置の構成について説明する。暗号化装置及び暗号文検証装置は各々、装置全体を制御するCPU(Central Processing Unit)等の制御装置と、各種データや各種プログラムを記憶するROM(Read Only Memory)やRAM(Random Access Memory)等の記憶装置と、各種データや各種プログラムを記憶するHDD(Hard Disk Drive)やCD(Compact Disk)ドライブ装置等の外部記憶装置と、外部装置の通信を制御する通信I/F(interface)と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。
【0034】
<暗号化装置の構成>
次に、本実施の形態にかかる暗号化装置の備えるCPUが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される本実施の形態に特有の各種機能について説明する。図2は、本実施の形態にかかる暗号化装置の機能的構成を例示する図である。暗号化装置10は、平文受信部11と、公開鍵受信部12と、第1暗号文生成部13と、暗号文成分圧縮部14と、第2暗号文生成部15と、暗号文出力部16とを有する。これらの各部の実体は、暗号化装置10のCPUのプログラム実行時にRAMなどの記憶装置上に生成されるものである。
【0035】
平文受信部11は、平文mを受信する。公開鍵受信部12は、公開鍵成分pkを受信する。第1暗号文生成部13は、平文受信部11が受信した平文mと公開鍵受信部12が受信した公開鍵成分pkとを用いて、暗号文成分c1を生成する。暗号文成分圧縮部14は、第1暗号文生成部13が生成した暗号文成分c1をアフィン表現に変換して圧縮暗号文成分c1*を生成する。即ち、本実施の形態において暗号化装置10は、複数の暗号文成分のうち、暗号文成分c1を圧縮する。同時に第2暗号文生成部15は、第1暗号文生成部13が生成した暗号文成分c1と公開鍵受信部12が受信した公開鍵成分pkとを用いて暗号文成分c2を生成する。暗号文出力部16は、暗号文成分圧縮部14が生成した圧縮暗号文成分c1*と第2暗号文生成部15が生成した暗号文成分c2とを出力する。
【0036】
<暗号文検証装置の構成>
次に、本実施の形態にかかる暗号文検証装置の備えるCPUが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について具体的に説明する。図3は、本実施の形態にかかる暗号文検証装置の機能的構成を例示する図である。暗号文検証装置20は、暗号文受信部21と、秘密鍵受信部22と、中間データ生成部23と、暗号文成分伸張部24と、正当性検証部25と、検証結果出力部26とを有する。これらの各部は、暗号文検証装置20のCPUのプログラム実行時にRAMなどの記憶装置上に生成されるものである。
【0037】
暗号文受信部21は、暗号文(c1*,c2)を受信する。秘密鍵受信部22は、秘密鍵成分skを受信する。中間データ生成部23は、暗号文受信部21が受信した暗号文成分c2と秘密鍵受信部22が受信した秘密鍵成分skとを用いて、暗号文の復号に用いる中間データkを生成する。中間データ生成部23が中間データkを生成すると同時に、暗号文成分伸張部24は、暗号文受信部21が受信した圧縮暗号文成分c1*を拡大体表現である暗号文成分c1へと伸張(変換)する。正当性検証部25は、中間データ生成部23が生成した中間データkと暗号文成分伸張部24が伸張した暗号文成分c1とを用いて暗号文の正当性を検証する。検証結果出力部26は正当性検証部25の検証結果を出力する。
【0038】
(2)動作
<暗号化処理>
次に、本実施の形態にかかる暗号化装置10の行う暗号化処理の手順について図4を用いて説明する。暗号化装置10は、公開鍵である公開鍵成分pkと平文mとを受信し、公開鍵成分pkと平文mとを用いて計算を行って、暗号文成分c1を生成する(ステップST1)。次に暗号化装置10は、c1の表現をアフィン表現へと圧縮(変換)する(ステップST2)。続いて、ステップST1で求めた暗号文成分c1と公開鍵成分pkとを用いて計算を行って、暗号文成分c2を生成する(ステップST3)。
【0039】
<暗号文検証処理>
次に、本実施の形態にかかる暗号文検証装置20の行う暗号文検証処理の手順について図5を用いて説明する。暗号文検証装置20は、暗号文(c1*,c2)と秘密鍵に含まれる秘密鍵成分skとを受信し、暗号文成分c2と秘密鍵成分skとを用いて中間データkを生成する(ステップST11)。次に、暗号文検証装置20は、アフィン表現となっている圧縮暗号文成分c1*を拡大体表現である暗号文成分c1に伸張(変換)する(ステップST12)。次に、暗号文検証装置20は、暗号文成分c1と中間データkとを比較し、暗号文の正当性を検証する(ステップST13)。
【0040】
暗号文成分の生成に依存関係があり暗号文成分c1を用いて暗号文成分c2を生成する場合には、暗号文成分c2をアフィン表現へと圧縮すると、暗号文成分c2を圧縮する処理の分だけ暗号文成分c2を圧縮しない場合と比べ、処理時間が必要となる。暗号文成分圧縮部14と第2暗号文生成部15とが並列に動作可能であれば、第1暗号文生成部13が暗号文成分c1を生成した後、第2暗号文生成部15がc2を生成している間に暗号文成分圧縮部14が暗号文成分c1をアフィン表現に圧縮し、(c1*,c2)を暗号文とすれば、圧縮にかかる処理時間を隠蔽した上で、暗号文の一部を圧縮できる。
【0041】
一方、暗号文検証装置20で暗号文成分c2を用いて中間データkを生成し、暗号文成分c1と比較する場合、暗号文成分c2がアフィン表現でなければ暗号文を受信した直後に中間データkを生成する処理を行うことができる。暗号文成分c2がアフィン表現であった場合にはアフィン表現では演算が行えないので、拡大体表現か射影表現への変換が必要になり(本実施の形態では拡大体表現に変換)、その分の処理時間が余計に必要になる。しかし、本実施の形態によれば、中間データkの生成に用いる成分を伸張する必要がないため、圧縮された成分の伸張にかかる処理時間を隠蔽することができる。
【0042】
尚、暗号文検証装置20に上述の実施の形態にかかる構成を適用したが、暗号文を復号する復号装置に適用しても良い。この場合、復号装置は、上述した暗号文受信部21と、秘密鍵受信部22と、中間データ生成部23と、暗号文成分伸張部24とに加え、復号済み平文生成部と、復号済み平文出力部とを有するように構成すれば良い。復号済み平文生成部は、中間データ生成部23が生成した中間データと暗号文成分伸張部24が伸張した暗号文成分c1とを用いて復号済みの平文を生成する。復号済み平文出力部は、復号済み平文生成部が生成した復号済みの平文を出力する。このような復号装置や上述の暗号文検証装置によれば、処理時間の増加を抑えながら、暗号文の圧縮や伸張が行えるため、処理時間を短縮したい場合に用いて好適である。
【0043】
ここでは暗号化にかかる処理時間及び暗号文の正当性の検証にかかる処理時間の両方を変えることなく暗号文成分を圧縮する例を示したが、暗号化にかかる処理時間、暗号文の正当性の検証にかかる処理時間及び復号にかかる処理時間のいずれか一つのみに処理時間の短縮の効果をもたらすように構成することも可能である。また本実施の形態では、演算可能な表現として拡大体表現を採ったが、射影表現で演算しても上述した効果は変わらない。
【0044】
[第2の実施の形態]
次に、暗号化装置、復号装置、暗号文検証装置、暗号化方法、復号方法及びプログラムの第2の実施の形態について説明する。なお、上述の第1の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【0045】
(1)構成
<ElGamal暗号>
復号処理を高速化する具体的な例としてElGamal暗号を取り上げる。図6は、ElGamal暗号において平文mを暗号化して暗号文を生成する暗号化装置と暗号文を復号する復号装置とを例示する図である。尚、図示しない鍵生成装置は、生成元gを選択し、xをランダムに選択して、‘h=g^x’を計算し、(q,g,h)を公開鍵とし、xを秘密鍵とする。尚、qは素数で群G~の部分群Gの位数とし、g,hは暗号が定義される部分群G(位数はq)の生成元とする。平文mも部分群Gの元でなければならない。暗号化装置には、鍵生成装置で生成された公開鍵(q,g,h)と平文mとが入力される。暗号化装置は、乱数rを生成し、べき乗計算及び乗算を行って、平文mに対応する暗号文(c1, c2)を出力する。この暗号文(c1, c2)は、復号装置に入力される。また、復号装置には、公開鍵に対応する秘密鍵成分xが秘密鍵として入力される。この秘密鍵成分xは‘1’から‘q’までの整数(又は‘0’から‘q-1’までの整数)とする。復号装置は、秘密鍵成分xと暗号文(c1, c2)とを用いて、復号済みの平文mを得る。
【0046】
次に、本実施の形態にかかる暗号化装置及び復号装置の構成について説明する。暗号化装置及び復号装置は各々、装置全体を制御するCPU(Central Processing Unit)等の制御装置と、各種データや各種プログラムを記憶するROM(Read Only Memory)やRAM(Random Access Memory)等の記憶装置と、各種データや各種プログラムを記憶するHDD(Hard Disk Drive)やCD(Compact Disk)ドライブ装置等の外部記憶装置と、外部装置の通信を制御する通信I/F(interface)と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。
【0047】
<暗号化装置の構成>
次に、本実施の形態にかかる暗号化装置の備えるCPUが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される本実施に特有の各種機能について説明する。図7は、本実施の形態にかかる暗号化装置の機能的構成を例示する図である。暗号化装置10´は、第1の実施の形態と同様に、平文受信部11と、公開鍵受信部12と、第1暗号文生成部13と、暗号文成分圧縮部14と、第2暗号文生成部15と、暗号文出力部16とを有する。これらの各部の実体は、暗号化装置10´のCPUのプログラム実行時にRAMなどの記憶装置上に生成されるものである。
【0048】
平文受信部11は、平文mを受信する。公開鍵受信部12は、公開鍵(q,g,h)を受信する。第1暗号文生成部13は、‘0≦r<q’なる乱数rを生成し、平文受信部11が受信した平文mと公開鍵受信部12が受信した公開鍵に含まれる公開鍵成分hとを用いて、‘c2=m・h^r’を計算して、暗号文成分c2を生成する。暗号文成分圧縮部14は、第1暗号文生成部13が生成した暗号文成分c2をアフィン表現に変換して圧縮暗号文成分c2*を生成する。即ち、本実施の形態において暗号化装置10は、複数の暗号化成分のうち、暗号文成分c2を圧縮する。同時に第2暗号文生成部15は、第1暗号文生成部13が生成した乱数rと公開鍵受信部12が受信した公開鍵成分gとを用いて‘c1=g^r’を計算し、暗号文成分c1を生成する。暗号文出力部16は、暗号文成分圧縮部14が生成した圧縮暗号文成分c2*と第2暗号文生成部15が生成した暗号文成分c1とを出力する。
【0049】
<復号装置の構成>
次に、本実施の形態にかかる復号装置の備えるCPUが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について具体的に説明する。図8は、本実施の形態にかかる復号装置の機能的構成を例示する図である。復号装置30は、暗号文受信部31と、秘密鍵受信部32と、中間データ生成部33と、暗号文成分伸張部34と、復号済み平文生成部35と、復号済み平文出力部36とを有する。これらの各部は、復号装置30のCPUのプログラム実行時にRAMなどの記憶装置上に生成されるものである。
【0050】
暗号文受信部31は、暗号文(c1,c2*)を受信する。秘密鍵受信部32は、秘密鍵成分xを受信する。中間データ生成部33は、暗号文受信部31が受信した暗号文成分c1と秘密鍵受信部32が受信した秘密鍵成分xとを用いて‘k=(c1^x)^(−1)’を計算して、中間データkを生成する。中間データ生成部33が中間データkを生成すると同時に、暗号文成分伸張部24は、暗号文受信部31が受信した圧縮暗号文成分c2*を拡大体表現である暗号文成分c2へと伸張(変換)する。復号済み平文生成部35は、中間データ生成部33が生成した中間データkと暗号文成分伸張部34が伸張した暗号文成分c2とを用いて、‘m=c2・k’を計算して、復号済みの平文を生成する。復号済み平文出力部36は、復号済み平文生成部35が生成した復号済みの平文を出力する。
【0051】
(2)動作
<暗号化処理>
次に、本実施の形態にかかる暗号化装置10´の行う暗号化処理の手順について図9を用いて説明する。暗号化装置10´は、公開鍵(q,g,h)と平文mとを受信し、乱数rを生成する(ステップST21)。次いで、暗号化装置10´は、乱数rと公開鍵成分hと平文mとを用いて暗号文成分c2を生成する(ステップST22)。次に暗号化装置10´は、暗号文成分c2の表現をアフィン表現へと変換することにより圧縮する(ステップST23)。続いて、暗号化装置10´は、乱数rと公開鍵成分gとを用いて暗号文成分c1を生成する(ステップST24)。
【0052】
<復号処理>
次に、本実施の形態にかかる復号装置30の行う暗号化処理の手順について図10を用いて説明する。復号装置30は、暗号文(c1,c2*)と秘密鍵に含まれる秘密鍵成分xとを受信し、暗号文成分c1と秘密鍵成分xとを用いて中間データkを生成する(ステップST31)。次に、復号装置30は、アフィン表現となっている圧縮暗号文成分c2*を拡大体表現である暗号文成分c2に伸張する(ステップST32)。次に、復号装置30は、ステップST32で伸張した暗号文成分c2とステップST31で生成した中間データkとを乗算し、復号済みの平文mを生成する(ステップST33)。
【0053】
以上のような構成によれば、ステップST31で中間データkを生成している間に、ステップST32で圧縮暗号文成分c2*を暗号文成分c2に伸張できるので、圧縮暗号文成分c2*の伸張にかかる処理時間を隠蔽しつつ、圧縮暗号文成分を伸張することが可能である。
【0054】
[第3の実施の形態]
次に、暗号化装置、復号装置、暗号文検証装置、暗号化方法、復号方法及びプログラムの第3の実施の形態について説明する。なお、上述の第1の実施の形態又は第2の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【0055】
(1)構成
<Cramer-Shoup暗号スキーム>
次に、もうひとつの具体的な実施例として、上述の従来技術欄で説明したCramer-Shoup暗号スキームの基本的な構成について図11を用いて説明する。まず、公開鍵及び当該公開鍵に対応する秘密鍵が鍵生成装置で生成される。公開鍵が暗号化装置に入力され、当該公開鍵に対応する秘密鍵が復号装置に入力される。公開鍵は上述の(q,g,g~,e,f,h)である。秘密鍵は上述の(x1, x2, y1, y2, z1, z2)である。暗号化装置は、公開鍵を用いて平文mに対応する暗号文(c1, c2, c3, c4)を計算する。具体的には、暗号化装置は、公開鍵成分qを用いて‘0≦r<q−1’なる乱数rを生成する。そして、暗号化装置は、乱数rと公開鍵成分gとを用いて暗号文の成分c1として‘g^r’を求める。また、暗号化装置は、乱数rと公開鍵成分g~とを用いて、暗号文成分c2として‘g~^r’を求める。また、暗号化装置は、乱数rと公開鍵成分hとを用いて係数bとして‘h^r’を求める。そして、暗号化装置は、係数bと平文mとを用いて、暗号文成分c3として‘b×m’を求める。次いで、暗号化装置は、各暗号文成分c1, c2, c3についてハッシュ関数を用いた計算により、ハッシュ値‘v=H(c1,c2,c3)’を求める。そして、暗号化装置は、乱数rと公開鍵成分e,fとハッシュ値vとを用いて、暗号文成分c4として‘e^r×f^(rv)’を求める。この結果、暗号文(c1, c2, c3, c4)が得られる。暗号化装置はこの暗号文(c1, c2, c3, c4)を出力する。
【0056】
一方、復号装置は、暗号文(c1, c2, c3, c4)を受信すると、これと秘密鍵(x1, x2, y1, y2, z1, z2)とから暗号文が正当であるか否かの判定を行い、当該判定結果が肯定的である場合、平文mを計算する。具体的には、復号装置は、各暗号文成分c1, c2, c3, c4が群G~の元であるか否か及び各暗号文成分c1,c2,c3が群Gの元であるか否かを判定する。当該判定結果が肯定的である場合、復号装置は、暗号文成分c1,c2と秘密鍵成分z1,z2とを用いて、係数bとして‘c1^z1×c2^z2’を求める。また、復号装置は、暗号文成分c1,c2,c3を用いてハッシュ関数による計算を行い、暗号文成分c1,c2と秘密鍵成分x1, x2, y1, y2とを用いてべき乗計算と乗算とにより検査式に用いる検証用データkとして‘c1^(x1+y1×v)×c2^(x2+y2×v)’を求める。検証用データとは、暗号文の正当性を検証するためのものである。そして、復号装置200は、検証用データkと暗号文成分c4とを用いた検査式‘c4=k’が成立するか否かを判定する。また、復号装置200は、暗号文成分c1,c2と秘密鍵成分z1,z2とを用いてべき乗計算を行い、当該計算結果の逆元を中間データとして導出した後、暗号文成分c3を用いて乗算を行うことにより、復号済みの平文mを得る。
【0057】
尚、暗号文成分c3は、復号時に平文の生成に用いる平文生成用暗号文成分であり、暗号文成分c1〜c2は、復号時に平文の生成と暗号文の正当性の検証とに用いる総合暗号文成分であり、暗号文成分c4は、復号時に暗号文の正当性の検証に用いる検証用暗号文成分である。
【0058】
<公開鍵及び秘密鍵生成>
次に、鍵生成装置が公開鍵及び秘密鍵を生成する鍵生成処理の概要について図12を用いて説明する。鍵生成装置は、公開鍵成分gを群G~の元となるよう拡大体表現あるいは射影表現から選択し、0以外の乱数wを生成する(GS1)。次いで、鍵生成装置は、各秘密鍵成分x1,x2,y1,y2,z1,z2として各々乱数を生成する(GS2)。そして、鍵生成装置は、公開鍵成分g~として‘g^w’を求め、公開鍵成分eとして‘g^x1×g~^x2’を求め、公開鍵成分fとして‘g^y1×g~^y2’を求め、公開鍵成分hとして‘g^z1×g~^z2’を求める(GS3)。そして、鍵生成装置は、秘密鍵(x1,x2,y1,y2,z1,z2)と公開鍵(q,g,g~,e,f,h)とを出力する。
【0059】
尚、この例では公開鍵成分g,g~,e,f,hの表現をアフィン表現に変換していないが、アフィン表現に変換する、即ち、圧縮することにより、鍵長を短くすることもできる。この場合は、暗号化処理や復号処理の前に公開鍵成分の表現を拡大体表現や射影表現に変換する、即ち、伸張する必要がある。平文についてもアフィン表現を用いることが可能である。
【0060】
以上のようなCramer-Shoup暗号において、本実施の形態においては、暗号化装置は、暗号文(c1, c2, c3, c4)の各成分のうち一部の成分を圧縮し、圧縮した成分の全部又は一部を、ハッシュ値を求める際に用いる。一方、復号装置は、暗号文(c1, c2, c3, c4)の各成分のうち圧縮された成分を伸張すると共に、圧縮されていない成分と秘密鍵成分とを用いてべき乗算や乗算などの各種演算を行うことにより、復号済みの平文を得る。
【0061】
尚、本実施の形態にかかる暗号化装置及び復号装置は各々、装置全体を制御するCPU(Central Processing Unit)等の制御装置と、各種データや各種プログラムを記憶するROM(Read Only Memory)やRAM(Random Access Memory)等の記憶装置と、各種データや各種プログラムを記憶するHDD(Hard Disk Drive)やCD(Compact Disk)ドライブ装置等の外部記憶装置と、外部装置の通信を制御する通信I/F(interface)と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。
【0062】
<暗号化装置の構成>
次に、本実施の形態にかかる暗号化装置の備えるCPUが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される本実施に特有の各種機能について説明する。図13は、本実施の形態にかかる暗号化装置の機能的構成を例示する図である。暗号化装置100は、乱数生成部101と、第1べき乗計算部102と、乗算部103と、暗号文成分圧縮部104と、ハッシュ値計算部105と、第2べき乗計算部106と、第2暗号文成分圧縮部107と、出力部(図示せず)とを有する。これらの各部の実体は、暗号化装置100のCPUのプログラム実行時にRAMなどの記憶装置上に生成されるものである。
【0063】
乱数生成部101は、乱数uを生成する。第1べき乗計算部102は、乱数生成部101が生成した乱数uと、公開鍵成分g,g~,hとを用いて、暗号文成分c1として‘g^u’を求め、暗号文成分c2として‘g~^u’を求め、係数bとして‘h^u’を求める。乗算部103は、第1べき乗計算部102が求めたbと、平文mとを用いて、暗号文成分c3として‘m×b’を求める。暗号文成分圧縮部104は、乗算部103が求めた暗号文成分c3でありトーラス上の元となっている暗号文成分c3を圧縮することによりアフィン表現である圧縮暗号文成分c3*に変換する。即ち暗号文成分c3に対してトーラス圧縮が行われることになる。ハッシュ値計算部105は、第1べき乗計算部102が求めた暗号文成分c1,c2と、暗号文成分圧縮部104が変換したc3*とを用いてハッシュ関数による計算を行ってハッシュ値vを求める。尚、従来の暗号化装置はここでハッシュ計算を行う場合、暗号文成分c1,c2と共にc3を用いていた。しかし、本実施の形態の暗号化装置100は、c3がアフィン表現に変換された圧縮暗号文成分c3*をハッシュ計算に用いる。
【0064】
第2べき乗計算部106は、公開鍵成分e,fと、乱数生成部101が生成した乱数uと、ハッシュ値計算部105が求めたハッシュ値vとを用いて、暗号文の成分c4として‘e^u×f^(uv)’を求める。第2暗号文成分圧縮部107は、第2べき乗計算部106が求めた暗号文成分c4でありトーラス上の元となっている暗号文成分c4をアフィン表現である圧縮暗号文成分c4*に変換する。出力部は、暗号文(c1,c2,c3*,c4*)を出力する。ここで、乱数生成部101、第1べき乗計算部102及び乗算部103は第1暗号文生成部として機能し、ハッシュ値計算部105及び第2べき乗計算部106は第2暗号文生成部として機能している。
【0065】
以上のように、Cramer-Shoup暗号においてトーラス圧縮を行う場合、本実施の形態における暗号化装置100は、暗号文の4つの成分のうち、復号時に最初に演算を行う必要のない2つの暗号文成分c3,c4のみを圧縮すると、復号時の伸張にかかる処理時間を隠蔽できる。
【0066】
<復号装置の構成>
次に、本実施の形態にかかる復号装置の備えるCPUが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について具体的に説明する。図14は、本実施の形態にかかる復号装置の機能的構成を例示する図である。復号装置200は、受信部(図示せず)と、ハッシュ計算部201と、暗号文成分伸張部202と、第1べき乗計算部203と、第2べき乗計算部204と、逆元計算部205と、第1乗算部206と、第2乗算部207と、第3乗算部208と、トーラス元検証部209と、正当性検証部210と、復号済み平文出力部211とを有する。これらの各部は、復号装置200のCPUのプログラム実行時にRAMなどの記憶装置上に生成されるものである。
【0067】
復号装置200は、公開鍵(q,g,g~,e,f,h)に対応する秘密鍵(x1, x2, y1, y2, z1, z2)を受信する。受信部は、暗号文(c1,c2,c3*,c4*)を暗号化装置100から受信する。ハッシュ計算部201は、暗号文成分c1,c2と、圧縮暗号文成分c3*とを用いてハッシュ関数による計算を行って、ハッシュ値vを求める。尚、従来の復号装置はここでハッシュ計算を行う場合、暗号文成分c1,c2と共に暗号文成分c3を用いていた。しかし、本実施の形態の復号装置200は、暗号文成分c3がアフィン表現に変換された圧縮暗号文成分c3*をハッシュ計算に用いる。
【0068】
第2べき乗計算部204は、ハッシュ計算部201が求めたハッシュ値vと、秘密鍵成分x1, x2, y1, y2とを用いて、係数k1として‘c1^(x1+y1×v)’を求め、係数k2として‘c2^(x2+y2×v)’を求める。第2乗算部207は、第2べき乗計算部204が求めた係数k1及びk2を用いて、検査式に用いる検証用データkとして‘k1×k2’を求める。暗号文成分伸張部202は、アフィン表現である圧縮暗号文成分c3*及びc4*を各々伸張することにより、拡大体表現である暗号文成分c3及びc4に各々変換する。第1べき乗計算部203は、暗号文成分c1,c2と、秘密鍵成分z1,z2とを用いて、係数b1として‘c1^z1’を求め、係数b2として‘c2^z2’を求める。第1乗算部206は、第1べき乗計算部203が求めた係数b1及びb2を用いて、係数bとして‘b1×b2’を求める。逆元計算部205は、第1乗算部206が求めた係数bの逆元‘b^(−1)’を中間データとして求める。第3乗算部208は、逆元計算部205が求めた中間データ‘b^(−1)’と、暗号文成分伸張部202が変換した暗号文成分c3とを用いて、復号済みの平文mとして‘c3×b^(−1)’を求める。
【0069】
トーラス元検証部209は、暗号文(c1,c2,c3*,c4*)の各成分が正しい群の元となっているか否かを検査して、暗号文の正当性を検証する。具体的には、トーラス元検証部209は、各成分c1,c2,c3*,c4*が群G~の元であるか否か及び各成分c1,c2が群Gの元であるか否かを判定する。群Gの元であるか否かの判定は例えばc1,c2をそれぞれGの位数乗(q乗)が‘1’(単位元)となっているかを確認することで確かめられる。尚、従来では、各成分c1,c2,c3が群Gの元であるか否かを判定するが、ここでは、暗号文成分c3が変換された圧縮暗号文成分c3*については、圧縮により群Gの元となっていることが明らかなため、c3*に関する判定を行わない。そして、トーラス元検証部209は、当該判定結果が肯定的である場合、暗号文は正当であるという検証結果を出力し、当該判定結果が否定的である場合、暗号文は正当ではないという検証結果を出力する。
【0070】
正当性検証部210は、第2乗算部207が求めた検証用データkと、暗号文成分伸張部202が変換した圧縮暗号文成分c4とを比較する。ここでは、正当性検証部210は、この比較によりこれらが等価であるか否かを判定する。即ち、正当性検証部210は、検査式‘k=c4’が成立するか否かを判定することにより、暗号文が正当であるか否かを検証する。そして、正当性検証部210は、当該検証結果を出力する。復号済み平文出力部211は、トーラス元検証部209が出力した検証結果と、正当性検証部210が出力した検証結果とが共に暗号文が正当であることを示す場合に、平文mを出力し、いずれか一方の検証結果が暗号文が正当でないことを示す場合に、エラーを出力する。なお、本実施の形態においては、第1べき乗計算部203、逆元計算部205及び第1乗算部206は中間データ生成部として機能し、ハッシュ値計算部201、第2べき乗計算部204及び第2乗算部207は検証用データ生成部として機能し、第3乗算部208は復号済み平文生成部として機能している。
【0071】
以上のように、Cramer-Shoup暗号においてトーラス圧縮を行う場合、本実施の形態における復号装置200は、暗号文の4つの成分のうち圧縮されている成分c3,c4のみを伸張して、平文を復号する。
【0072】
(2)動作
<暗号化処理>
次に、本実施の形態にかかる暗号化装置100の行う暗号化処理の手順について図15を用いて説明する。暗号化装置100は、公開鍵(q,g,g~,e,f,h)と、平文mとを予め取得しているものとする。暗号化装置100は、乱数uを生成する(ステップS1)。次いで、暗号化装置100は、公開鍵成分g,g~,hとを用いて、暗号文成分c1として‘g^u’を求め、暗号文成分c2として‘g~^u’を求め、係数bとして‘h^u’を求める(ステップS2)。次いで、暗号化装置100は、ステップS2で求めたbと、平文mとを用いて、暗号文成分c3として‘m×b’を求めることにより、平文マスクを行う(ステップS3)。そして、暗号化装置100は、ステップS3で求めた暗号文成分c3でありトーラス上の元となっている暗号文成分c3をアフィン表現である圧縮暗号文成分c3*に変換する(ステップS4)。次いで、暗号化装置100は、ステップS2で求めた暗号文成分c1,c2と、ステップS4で得られた圧縮暗号文成分c3*とを用いてハッシュ関数による計算を行ってハッシュ値vを求める(ステップS5)。続いて、暗号化装置100は、公開鍵成分e,fと、ステップS1で生成した乱数uと、ステップS5で求めたハッシュ値vとを用いて、暗号文の成分c4として‘e^u×f^(uv)’を求める(ステップS6)。そして、暗号化装置100は、ステップS4が求めた暗号文成分c4でありトーラス上の元となっている暗号文成分c4をアフィン表現である圧縮暗号文成分c4*に変換する(ステップS7)。そして、暗号化装置100は、暗号文(c1,c2,c3*,c4*)を復号装置200に送信する。
【0073】
<復号処理>
次に、本実施の形態にかかる復号装置200の行う復号処理の手順について図16を用いて説明する。尚、復号装置200は、公開鍵(q,g,g~,e,f,h)に対応する秘密鍵(x1, x2, y1, y2, z1, z2)を予め取得しているものとする。復号装置200は、暗号化装置100から送信された暗号文(c1,c2,c3*,c4*)を受信すると、上述の構成欄で具体的に説明したように、暗号文の各成分が正しい群の元となっているか否かを検査して、暗号文の正当性を検証する。そして、復号装置200は、暗号文が正当であると判定した場合(ステップS20:YES)、次いで、暗号文成分c1,c2と、圧縮暗号文成分c3*とを用いてハッシュ関数による計算を行って、ハッシュ値vを求める(ステップS21)。
【0074】
そして、復号装置200は、ステップS21で求めたハッシュ値vと、秘密鍵成分x1, x2, y1, y2とを用いて、係数k1として‘c1^(x1+y1×v)’を求め、係数k2として‘c2^(x2+y2×v)’を求める(ステップS22)。次いで、復号装置200は、検査式に用いる検証用データkとして、‘k1×k2’を求める(ステップS23)。
【0075】
また、復号装置200は、圧縮暗号文成分c4*を伸張し、拡大体表現である暗号文成分c4を得る(ステップS24)。また、復号装置200は、ステップS23で求めた検証用データkとステップS24で伸張した暗号文成分c4とを用いて、検査式‘k=c4’が成立するか否かを判定して、暗号文の正当性を検証する(ステップS25)。そして、復号装置200は、ステップS25の検査式が成立する、即ち、暗号文が正当であると判定した場合(ステップS25:YES)、暗号文成分c1,c2と、秘密鍵成分z1,z2とを用いて、係数b1として‘c1^z1’を求め、係数b2として‘c2^z2’を求める(ステップS26)。次いで復号装置200は、ステップS26が求めた係数b1及びb2を用いて、係数bとして‘b1×b2’を求める(ステップS27)。その後、復号装置200は、ステップS27で求めた係数bの逆元‘b^(−1)’を中間データとして求める(ステップS28)。また、復号装置200は、圧縮暗号文成分c3*を伸張し、c3を得る(ステップS29)。そして、復号装置200は、ステップS28で求めた中間データ‘b^(−1)’と、ステップS29で伸張したc3とを用いて、復号済みの平文mとして‘c3×b^(−1)’を求める(ステップS30)。ステップS20及びステップS25の判定結果が肯定的である場合には、復号装置200は、ステップS30で求めた復号済みの平文を出力することになる。ステップS20又はステップS25の判定結果が否定的である場合、復号装置200はエラーを出力し、復号済みの平文を出力しない。
【0076】
尚、ステップS20の処理と、ステップS21〜S23の処理と、ステップS24の処理と、ステップS26〜S28の処理と、ステップS29との処理とを並行して行うことができる。即ち、図6においては、各成分c1,c2,c3*,c4*が与えられたときに、破線で囲まれた各部分は即座に並行して実行することができる。また第1グループ、第2グループ及び第3グループはそれぞれ独立して処理を行うことができるため、これらの各グループの処理も並行して実行することが可能となる。このため、伸張にかかる処理時間を隠蔽することができる。
【0077】
即ち、上述したようにCramer-Shoup暗号の場合、暗号文が4つの成分の組になっており、これらの成分を独立に扱うことは非常に容易であることに注目し、並行処理が可能な環境では、暗号文成分を選択的に圧縮する。これにより、処理時間の増加分の一部を隠蔽することができる。従って、圧縮や伸張にかかる処理時間を隠蔽しつつ、Cramer-Shoup暗号にトーラス圧縮を組み合わせた暗号化方式を実現することができる。
【0078】
ただし、並行して処理を実行する場合には、ステップS20の判定結果やステップS25の判定結果が否定的となる不正な暗号文を取り除く機構が必要となる。このため、本実施の形態においては、図14に示したように、復号装置200が復号済み平文出力部211を有するように構成して、トーラス元検証部209の判定結果であるステップS20の判定結果と、正当性検証部210の判定結果であるステップS25の判定結果とを用いて、暗号文が正当であるか否かを最終的に判定する。復号装置200は、ステップS30で得られる復号済みの平文mを出力しないことにより、結果的に不正な暗号文を取り除くことができる。
【0079】
なお、本発明においては、暗号化装置100と復号装置200との間でハッシュ関数の出力が同じであれば暗号化や復号は可能である。このため、上述のステップS5とステップS21とでハッシュ値を求める際に用いられる成分と表現とが表現の変換を施すことなく同一であれば、圧縮する暗号文成分は限定されない。
【0080】
また、本実施の形態において各演算は拡大体表現で行ったが、射影表現で行ってもよい。ただし、射影表現では同じデータに対し複数の値を取り得るので、ハッシュ関数への入力や復号済みの平文を導出する際や正当性検証部210で等価性の判定を行う際に注意が必要である。
【0081】
[第4の実施の形態]
次に、暗号化装置、復号装置、暗号文検証装置、暗号化方法、復号方法及びプログラムの第4の実施の形態について説明する。なお、上述の第1の実施の形態乃至第3の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【0082】
(1)構成
米国特許文献 USP7,221,758B2にCramer−Shoup暗号において暗号化方式のバリエーションが記載されており、この方式を用いると秘密鍵成分の個数を削減できる。このバリエーションに対しても、暗号文成分の一部を圧縮する構成を適用することが可能である。本実施の形態は、秘密鍵成分z1,z2の代わりにzひとつで暗号化や復号を行うものである。
【0083】
ここで、本実施の形態にかかる鍵生成装置が公開鍵及び秘密鍵を生成する鍵生成処理の概要について図17を用いて説明する。鍵生成装置は、公開鍵g(g∈G)を拡大体表現から選択し、0以外の乱数wを生成する(GS11)。次いで、鍵生成装置は、秘密鍵成分x1,x2,y1,y2,zとして各々乱数を生成する(GS12)。そして、鍵生成装置は、公開鍵成分g~として‘g^w’を求め、公開鍵成分eとして‘g^x1×g~^x2’を求め、公開鍵成分fとして‘g^y1×g~^y2’を求め、公開鍵成分hとして‘g^z’を求める(GS13)。そして、鍵生成装置は、秘密鍵(x1,x2,y1,y2,z)と公開鍵(q,g,g~,e,f,h)とを出力する。
【0084】
暗号化装置100の構成は上述の第3の実施の形態と同様であるため、その説明を省略する。図18は本実施の形態にかかる復号装置200´の機能的構成を例示する図である。
本実施の形態にかかる復号装置200´の機能的構成が上述の第3の実施の形態の復号装置200の機能的構成と異なる点は以下の通りである。復号装置200´には秘密鍵(x1,x2,y1,y2,z)が入力される。復号装置200´は、第1乗算部206を有さない。第1べき乗計算部203は、暗号文成分c1と、秘密鍵成分zとを用いて、係数bとして‘c1^z’を求める。逆元計算部205は、第1べき乗計算部203が求めた係数bの逆元‘b^(−1)’を中間データとして求める。なお、本実施の形態においては第1べき乗計算部203及び逆元計算部205が中間データ生成部として機能している。
【0085】
(2)動作
<復号処理>
次に、本実施の形態にかかる復号装置200´の行う復号処理の手順について図19を用いて説明する。尚、暗号化装置100の行う暗号化処理の手順は上述の第3の実施の形態と同様であるため、その説明を省略する。復号装置200´は、公開鍵(q,g,g~,e,f,h)に対応する秘密鍵(x1, x2, y1, y2, z)を予め取得しているものとする。ステップS20〜S25は上述の第1の実施の形態と同様である。ステップS40では、復号装置200´は、暗号文成分c1と、秘密鍵成分zとを用いて、係数bとして‘c1^z’を求める。次いで、ステップS28では、復号装置200´は、ステップS40が求めた係数bの逆元‘b^(−1)’を中間データとして求める。S29〜S30の処理は上述の第3の実施の形態と同様である。
【0086】
本実施の形態においては、ステップS20の処理と、ステップS21〜S23の処理と、ステップS24の処理と、ステップS40,S28の処理と、ステップS29との処理とを並行して行うことができる。即ち、図19においては、各成分c1,c2,c3*,c4*が与えられたときに、破線で囲まれた各部分は即座に並行して実行することができる。また第1グループ、第2グループ及び第3グループはそれぞれ独立して処理を行うことができるため、これらの各グループの処理も並行して実行することが可能となる。このため、Cramer−Shoup暗号において本実施の形態のようにして秘密鍵成分の個数を削減した場合であっても、伸張にかかる処理時間を隠蔽することができる。
【0087】
また本実施の形態においては複数の暗号文成分のうちc3を圧縮したが、c1やc2を圧縮し、c1c2を圧縮している間にc3を生成すれば暗号化処理においても圧縮にかかる処理時間を隠蔽できる。どの暗号文成分を圧縮するかによって、暗号化、復号、あるいはその両方の圧縮にかかる処理時間や伸張にかかる処理時間を隠蔽できるのかが決まる。
【0088】
[第5の実施の形態]
次に、暗号化装置、復号装置、暗号文検証装置、暗号化方法、復号方法及びプログラムの第5の実施の形態について説明する。なお、上述の第1の実施の形態乃至第4の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【0089】
(1)構成
上述の第4の実施の形態においては、秘密鍵成分z1,z2の代わりにzを用いて秘密鍵成分の個数を削減した。ここでは秘密鍵成分の個数を更に削減して、秘密鍵成分x1,x2の代わりにxを用い、秘密鍵成分y1,y2の代わりにyを用いる。ただし、公開鍵の生成に用いられた乱数wが秘密鍵成分として加わる。また、ここでは圧縮する対象の暗号文成分がc3,c4のみならずc2も含む場合について説明する。
【0090】
ここで、本実施の形態にかかる鍵生成装置が公開鍵及び秘密鍵を生成する鍵生成処理の概要について図20を用いて説明する。鍵生成装置は、公開鍵成分g(g∈G)を拡大体表現から選択し、‘0’以外の乱数wを生成する(GS21)。次いで、鍵生成装置は、秘密鍵成分x,y,zとして各々乱数を生成する(GS22)。そして、鍵生成装置は、公開鍵成分g~として‘g^w’を求め、公開鍵成分eとして‘g^x’を求め、公開鍵成分fとして‘g^y’を求め、公開鍵成分hとして‘g^z’を求める(GS23)。そして、鍵生成装置は、秘密鍵(x,y,z,w)と公開鍵(q,g,g~,e,f,h)とを出力する。
【0091】
次に、本実施の形態にかかる暗号化装置100´の機能的構成について図21を用いて説明する。暗号化装置100´の機能的構成が上述の第3の実施の形態の暗号化装置100の機能的構成と異なる点は以下の通りである。暗号文成分圧縮部104は、第1べき乗計算部102が求めた暗号文成分c2と、乗算部103が求めた暗号文成分c3とを圧縮することによりアフィン表現である圧縮暗号文成分c2*,c3*に各々変換する。ハッシュ値計算部105は、第1べき乗計算部102が求めた暗号文成分c1と、暗号文成分圧縮部104が変換した圧縮暗号文成分c2*及びc3*とを用いてハッシュ関数による計算を行ってハッシュ値vを求める。出力部は、暗号文(c1,c2*,c3*,c4*)を復号装置200”に送信する。
【0092】
次に、本実施の形態にかかる復号装置200”の機能的構成について図22を用いて説明する。本実施の形態にかかる復号装置200”の機能的構成が上述の第3の実施の形態の復号装置200の機能的構成と異なる点は以下の通りである。復号装置200”は、第1乗算部206と、第2乗算部207とを有さず、第3べき乗計算部212を更に有する。復号装置200”には秘密鍵(x,y,z,w)が入力される。受信部は、暗号文(c1,c2*,c3*,c4*)を暗号化装置100´から受信する。暗号文成分伸張部202は、アフィン表現である圧縮暗号文成分c2*,c3*,c4*を各々伸張することにより、拡大体表現である暗号文成分c2,c3,c4に各々変換する。第1べき乗計算部203は、上述の第2の実施の形態と同様にして、暗号文成分c1と、秘密鍵成分zとを用いて、係数bとして‘c1^z’を求める。逆元計算部205は、第1べき乗計算部203が求めた係数bの逆元‘b^(−1)’を求める。ハッシュ計算部201は、暗号文成分c1と、圧縮暗号文成分c2*,c3*とを用いてハッシュ関数による計算を行って、ハッシュ値vを求める。第2べき乗計算部204は、ハッシュ計算部201が求めたハッシュ値vと、秘密鍵成分x,yとを用いて、検証用データk2として‘c1^(x+y×v)’を求める。第3べき乗計算部212は、乱数wと暗号文成分c1とを用いて、検証用データk1として‘c1^w’を求める。
【0093】
トーラス元検証部209は、暗号文(c1,c2*,c3*,c4*)の各成分が正しい群の元となっているか否かを検査して、暗号文の正当性を検証する。即ち、トーラス元検証部209は、暗号文成分c1と、圧縮暗号文成分c2*,c3*,c4*とが群G~の元であるか否か及び各成分c1が群Gの元であるか否かを判定し、当該判定結果を出力する。尚、圧縮暗号文成分c2*,c3*については、圧縮により群Gの元となっていることが明らかなため、ここではその判定を行わない。正当性検証部210は、第3べき乗計算部212が求めた検証用データk1と暗号文成分c2とを用いて検査式1‘k1=c2’が成立するか否かを判定すると共に、第2べき乗計算部204が求めた検証用データk2と成分c4とを用いて検査式2‘k2=c4’が成立するか否かを判定する。なお、本実施の形態においてはハッシュ値計算部201、第2べき乗計算部204及び第3べき乗計算部212が検証用データ生成部として機能している。
【0094】
(2)動作
<暗号化処理>
本実施の形態にかかる暗号化装置100´の行う暗号化処理の手順について図23を用いて説明する。ステップS1〜S3の処理は上述の第3の実施の形態と同様である。ステップS50では、暗号化装置100´は、ステップS2で求めた暗号文成分c2と、ステップS3で求めた暗号文成分c3とをアフィン表現である圧縮暗号文成分c2*,c3*に各々変換する。次いで、暗号化装置100´は、ステップS2で求めたc1と、ステップS50で変換した圧縮暗号文成分c2*及びc3*とを用いてハッシュ関数による計算を行ってハッシュ値vを求める(ステップS51)。ステップS6〜S7の処理は上述の第1の実施の形態と同様である。そして、暗号化装置100´は、暗号文(c1,c2*,c3*,c4*)を復号装置200”に送信する。
【0095】
<復号処理>
次に、本実施の形態にかかる復号装置200”の行う復号処理の手順について図24を用いて説明する。復号装置200”は、公開鍵(q,g,g~,e,f,h)に対応する秘密鍵(x, y, z,w)を予め取得しているものとする。復号装置200”は、暗号化装置100´から送信された暗号文(c1,c2*,c3*,c4*)を受信すると、上述の構成欄で具体的に説明したように、暗号文の各成分が正しい群の元となっているか否かを検査して、暗号文の正当性を検証する。そして、復号装置200”は、暗号文が正当であると判定した場合(ステップS60:YES)、次いで、乱数wと暗号文成分c1とを用いて、検証用データk1として‘c1^w’を求める(ステップS61)。次いで、復号装置200”は、暗号文成分c1と圧縮暗号文成分c2*,c3*とを用いてハッシュ関数による計算を行って、ハッシュ値vを求める(ステップS62)。そして、復号装置200”は、ステップS62で求めたハッシュ値vと、秘密鍵成分x,yと、暗号文成分c1とを用いて、検証用データk2として‘c1^(x+y×v)’を求める(ステップS63)。また、復号装置200”は、圧縮暗号文成分c2*,c4*を伸張することにより、拡大体表現である暗号文成分c2,c4に各々変換する(ステップS64)。そして、復号装置200”は、検査式1‘k1=c2’及び検査式2‘k2=c4’が成立するか否かを判定する(ステップS65)。双方の検査式が成立する場合(ステップS65:YES)、上述の第4の実施の形態と同様にして、ステップS40の処理を行う。ステップS28〜S30の処理は上述の第3の実施の形態と同様である。ステップS60及びステップS65の判定結果が肯定的である場合には、復号装置200”は、ステップS30で求めた復号済みの平文を出力することになる。ステップS60又はステップS65の判定結果が否定的である場合、復号装置200”はエラーを出力し、復号済みの平文を出力しない。
【0096】
本実施の形態においては、ステップS60の処理と、ステップS61の処理と、ステップS62〜S63の処理と、ステップS64の処理と、ステップS40,S28の処理と、ステップS29との処理とを並行して行うことができる。即ち、図14においては、暗号文成分c1,c4と、圧縮暗号文c2*,c3*とが与えられたときに、破線で囲まれた各部分は即座に並行して実行することができる。また第1グループ、第2グループ及び第3グループはそれぞれ独立して処理を行うことができるため、これらの各グループの処理も並行して実行することが可能となる。このため、Cramer−Shoup暗号において本実施の形態のようにして秘密鍵成分の個数を削減した場合であっても、伸張にかかる処理時間を隠蔽することができる。
【0097】
[第6の実施形態]
次に、暗号化装置、復号装置、暗号文検証装置、暗号化方法、復号方法及びプログラムの第6の実施の形態について説明する。なお、上述の第1の実施の形態乃至第5の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【0098】
上述の第1の実施の形態で説明した暗号文検証装置20の正当性検証部25や、第3の実施の形態乃至第5の実施の形態において説明した復号装置の正当性検証部210では、圧縮暗号成分が拡大体表現に伸張された後の暗号文成分を用いて、暗号文の正当性の検証を行った、しかし、異なる表現間で暗号文成分の同一性が判定できる場合、圧縮暗号文成分の伸張が不要となる場合がある。本実施の形態においてはその一例を説明する。尚、本実施の形態にかかる暗号方式は第5の実施の形態と同じであるものとし、圧縮する対象の暗号文成分はc2とc4とであるものとする。
【0099】
本実施の形態にかかる鍵生成装置が公開鍵及び秘密鍵を生成する鍵生成処理は第5の実施の形態と同一であるので省略するが、鍵生成装置は秘密鍵(x,y,z,w)と公開鍵(q,g,g~,e,f,h)とを出力する。
【0100】
次に、本実施の形態にかかる暗号化装置100”の機能的構成について図25を用いて説明する。暗号化装置100”の機能的構成が上述の第5の実施の形態の暗号化装置100´の機能的構成と異なる点は以下の通りである。暗号文成分圧縮部104は、第1べき乗計算部102が求めた暗号文成分c2をアフィン表現である暗号文成分c2*に変換する。ハッシュ値計算部105は、第1べき乗計算部102が求めた暗号文成分c1と、第1の暗号文成分圧縮部104が圧縮した圧縮暗号文成分c2*と、乗算部103が求めた暗号文成分c3とを用いてハッシュ関数による計算を行ってハッシュ値vを求める。出力部は、暗号文(c1,c2*,c3,c4*)を復号装置200’’’に送信する。
【0101】
次に、本実施の形態にかかる復号装置200’’’の機能的構成について図26を用いて説明する。本実施の形態にかかる復号装置200’’’の機能的構成が上述の第5の実施の形態の復号装置200”の機能的構成と異なる点は以下の通りである。復号装置200’’’は、暗号文成分伸張部202を有さない。復号装置200’’’には秘密鍵(x,y,z,w)が入力される。受信部は、圧縮暗号文(c1,c2*,c3,c4*)を暗号化装置100”から受信する。第1べき乗計算部203は、上述の第5の実施の形態と同様にして、暗号文成分c1と、秘密鍵成分zとを用いて、係数bとして‘c1^z’を求める。逆元計算部205は、第1べき乗計算部203が求めた係数bの逆元‘b^(−1)’を中間データとして求める。ハッシュ計算部201は、暗号文成分c1,c3と、圧縮暗号文成分c2*とを用いてハッシュ関数による計算を行って、ハッシュ値vを求める。第2べき乗計算部204は、ハッシュ計算部201が求めたハッシュ値vと、秘密鍵成分x,yとを用いて、検証用データk2として‘c1^(x+y×v)’を求める。第3べき乗計算部212は、乱数wと暗号文成分c1とを用いて、検証用データk1として‘c1^w’を求める。
【0102】
トーラス元検証部209は、暗号文(c1,c2*,c3,c4*)の各成分が正しい群の元となっているか否かを検査して、暗号文の正当性を検証する。即ち、トーラス元検証部209は、各成分c1,c2*,c3,c4*が群Gの元であるか否か及び各成分c1,c3が群Gの元であるか否かを判定し、当該判定結果を出力する。尚、圧縮暗号文成分c2*については、圧縮により群Gの元となっていることが明らかなため、ここではその判定を行わない。正当性検証部210は、第3べき乗計算部212が求めた検証用データk1と圧縮暗号文成分c2*とを用いてk1とc2*とが等価であるか否かを判定すると共に、第2べき乗計算部204が求めた検証用データk2と圧縮暗号文成分c4*とを用いてk2とc4*とが等価であるか否かを判定することにより、暗号文の正当性を検証する。即ち、本実施の形態においては、正当性検証部210は、圧縮暗号文成分c2*,c4*が伸張された拡大体表現である暗号文成分c2,c4を用いるのではなく、圧縮暗号文成分c2*,c4*自体を用いて、暗号文の正当性を検証する。なお、本実施の形態においては、第1べき乗計算部203、逆元計算部205及び第3乗算部208が復号済み平文生成部として機能している。
【0103】
(2)動作
<暗号化処理>
本実施の形態にかかる暗号化装置100”の行う暗号化処理の手順について図27を用いて説明する。ステップS1〜S3の処理は上述の第5の実施の形態と同様である。ステップS70では、暗号化装置100”は、ステップS2で求めた暗号文成分c2をアフィン表現である圧縮暗号文成分c2*に変換する。次いで、暗号化装置100”は、ステップS2で求めた暗号文成分c1と、ステップS70で変換した圧縮暗号文成分c2*と、ステップS3で生成した暗号文成分c3とを用いてハッシュ関数による計算を行ってハッシュ値vを求める(ステップS71)。ステップS6〜S7の処理は上述の第5の実施の形態と同様である。そして、暗号化装置100”は、暗号文(c1,c2*,c3,c4*)を復号装置200に送信する。
【0104】
<復号処理>
次に、本実施の形態にかかる復号装置200’’’の行う復号処理の手順について図28を用いて説明する。復号装置200’’’は、公開鍵(q,g,g~,e,f,h)に対応する秘密鍵(x, y, z,w)を予め取得しているものとする。復号装置200’’’は、暗号化装置100”から送信された圧縮暗号文(c1,c2*,c3,c4*)を受信すると、上述の構成欄で具体的に説明したように、圧縮暗号文の各成分が正しい群の元となっているか否かを検査して、暗号文の正当性を検証する(ステップS80)。そして、復号装置200’’’は、暗号文が正当であると判定した場合(ステップS80:YES)、次いで、第5の実施の形態と同様に乱数wと暗号文成分c1とを用いて、検証用データk1として‘c1^w’を求める(ステップS61)。次いで、復号装置200’’’は、暗号文成分c1,c3と、圧縮暗号文c2*とを用いてハッシュ関数による計算を行って、ハッシュ値vを求める(ステップS81)。そして、復号装置200’’’は、ステップS81で求めたハッシュ値vと、秘密鍵成分x,yと、暗号文成分c1とを用いて、検証用データk2として‘c1^(x+y×v)’を求める(ステップS63)。また、復号装置200’’’は、検証用データk1とc圧縮暗号文成分c2*とが等価であるか否か及び検証用データk2と圧縮暗号文成分c4*とが等価であるか否かを判定する(ステップS82)。双方とも同値である場合(ステップS82:YES)、上述の第5の実施の形態と同様にして、復号装置200’’’は、ステップS40、ステップ28の処理を行い、ステップ28の計算の結果得られた中間データと暗号文成分c3とを用いて‘m=b^(−1)・c3’を計算して(ステップS30)、復号済み平文mを得る。ステップS80及びステップS82の判定結果が肯定的である場合には、復号装置200’’’は、ステップS30で求めた復号済みの平文を出力することになる。ステップS80又はステップS82の判定結果が否定的である場合、復号装置200’’’はエラーを出力し、復号済みの平文を出力しない。
【0105】
以上のようにして、異なる表現間で暗号文成分の同一性が判定できる場合、圧縮暗号文成分の伸張を行わないことにより、伸張にかかる処理時間を削減することができる。
【0106】
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成成分を変形して具体化できる。また、前記実施形態に開示されている複数の構成成分の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成成分から幾つかの構成成分を削除してもよい。さらに、異なる実施形態にわたる構成成分を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
【0107】
<変形例1>
上述した各実施の形態において、暗号化装置10で各々実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良い。暗号化装置10´、100、100´,100”,復号装置30,200,200´,200”、200’’’及び暗号文検証装置20で各々実行される各種プログラムについても同様である。
【0108】
また、上述した実施の形態において、暗号化装置10の有する各部は、CPUのプログラム実行時にRAMなどの記憶装置上に生成されるものとしたが、これらの全部又は一部をハードウェアにより構成するようにしても良い。暗号化装置10´、100、100´,100”,復号装置30,200,200´,200”、200’’’ 及び暗号文検証装置20の有する各部についても同様である。
【0109】
また、上述の各実施の形態の暗号化装置及び復号装置においては、べき乗計算及び乗算をべき乗計算部及び乗算部が各々行うように構成したが、べき乗計算部及び乗算部を1つの計算部として取り扱い、計算部がべき乗計算及び乗算を行うように構成しても良い。
【0110】
<変形例2>
上述の第4の実施の形態においては、暗号化装置100は、暗号文成分のうちc3,c4のみならずc2を圧縮するように構成したが、第3の実施の形態と同様にして、暗号文成分c3,c4のみを圧縮するようにしても良い。
【0111】
また、各実施の形態においては、圧縮する対象の暗号文成分の数は、2つ又は3つに限らず1つであっても4つであっても良い。また、いずれの暗号文成分を圧縮するかは上述の例に限らない。
【0112】
尚、第3の実施の形態乃至第6の実施の形態においては、暗号文は(c1,c2,c3,c4)の4つの暗号文成分を含むように構成したが、暗号文成分の数はこれに限らない。
【0113】
また、上述の第3の実施の形態乃至第6の実施の形態の暗号化処理においては、ハッシュ値vと公開鍵成分とを用いて暗号文成分c4を求める方法としてべき乗計算を行うこととしたが、その方法はべき乗計算に限らない。
【図面の簡単な説明】
【0114】
【図1】有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式で複数の暗号文成分を含む暗号文の正当性を検証する基本的な構成を例示する図である。
【図2】第1の実施の形態にかかる暗号化装置の機能的構成を例示する図である。
【図3】同実施の形態にかかる暗号文検証装置の機能的構成を例示する図である。
【図4】同実施の形態にかかる暗号化装置10の行う暗号化処理の手順を示すフローチャートである。
【図5】同実施の形態にかかる暗号文検証装置20の行う暗号文検証処理の手順を示すフローチャートである。
【図6】ElGamal暗号において平文mを暗号化して暗号文を生成する暗号化装置と暗号文を復号する復号装置とを例示する図である。
【図7】第2の実施の形態にかかる暗号化装置の機能的構成を例示する図である。
【図8】同実施の形態にかかる復号装置の機能的構成を例示する図である。
【図9】同実施の形態にかかる暗号化装置10´の行う暗号化処理の手順を示すフローチャートである。
【図10】同実施の形態にかかる復号装置30の行う暗号化処理の手順を示すフローチャートである。
【図11】Cramer-Shoup暗号スキームの基本的な構成を例示する図である。
【図12】第3の実施の形態にかかる鍵生成装置が公開鍵及び秘密鍵を生成する鍵生成処理の概要を例示する図である。
【図13】同実施の形態にかかる暗号化装置100の機能的構成を例示する図である。
【図14】同実施の形態にかかる復号装置200の機能的構成を例示する図である。
【図15】同実施の形態にかかる暗号化装置100の行う暗号化処理の手順を示すフローチャートである。
【図16】同実施の形態にかかる復号装置200の行う復号処理の手順を示すフローチャートである。
【図17】第4の実施の形態にかかる鍵生成装置が公開鍵及び秘密鍵を生成する鍵生成処理の概要を例示する図である。
【図18】同実施の形態にかかる復号装置200´の機能的構成を例示する図である。
【図19】同実施の形態にかかる復号装置200´の行う復号処理の手順を示すフローチャートである。
【図20】第5の実施の形態にかかる鍵生成装置が公開鍵及び秘密鍵を生成する鍵生成処理の概要を例示する図である。
【図21】同実施の形態にかかる暗号化装置100の機能的構成を例示する図である。
【図22】同実施の形態にかかる復号装置200”の機能的構成を例示する図である。
【図23】同実施の形態にかかる暗号化装置100の行う暗号化処理の手順を示すフローチャートである。
【図24】同実施の形態にかかる復号装置200”の行う復号処理の手順を示すフローチャートである。
【図25】第6の実施の形態にかかる暗号化装置100”の機能的構成を例示する図である。
【図26】同実施の形態にかかる復号装置200’’’の機能的構成を例示する図である。
【図27】同実施の形態にかかる暗号化装置100”の行う暗号化処理の手順を示すフローチャートである。
【図28】同実施の形態にかかる復号装置200’’’の行う復号処理の手順を示すフローチャートである。
【符号の説明】
【0115】
10,10´,100,100´,100” 暗号化装置
11 平文受信部
12 公開鍵受信部
13 第1暗号文生成部
14 暗号文成分圧縮部
15 第1暗号文生成部
16 暗号文出力部
20 暗号文検証装置
21 暗号文受信部
22 秘密鍵受信部
23 中間データ生成部
24 暗号文成分伸張部
25 正当性検証部
26 検証結果出力部
30 復号装置
31 暗号文受信部
32 秘密鍵受信部
33 中間データ生成部
34 暗号文成分伸張部
35 復号済み平文生成部
36 復号済み平文出力部
101 乱数生成部
102 第1べき乗計算部
103 乗算部
104 暗号文成分圧縮部
105 ハッシュ値計算部
106 第2べき乗計算部
107 第2暗号文成分圧縮部
200,200´,200”,200’’’ 復号装置
201 ハッシュ計算部
202 圧縮暗号文成分伸張部
203 第1べき乗計算部
204 第2べき乗計算部
205 逆元計算部
206 第1乗算部
207 第2乗算部
208 第3乗算部
209 トーラス元検証部
210 正当性検証部
211 復号済み平文出力部
212 第3べき乗計算部

【特許請求の範囲】
【請求項1】
有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式により平文を暗号化し、複数の暗号文成分を含む暗号文を出力する暗号化装置であって、
平文を受信する平文受信部と、
1つ以上の公開鍵成分を含む公開鍵を受信する公開鍵受信部と、
受信された前記平文と前記公開鍵成分とを用いて暗号文成分である第1の暗号文成分を少なくとも1つ以上生成する暗号文成分生成部と、
少なくとも1つ以上の前記第1の暗号文成分を圧縮して、第1の圧縮暗号文成分を得る第1暗号文成分圧縮部と、
受信された前記平文と、前記公開鍵成分と、前記第1の暗号文成分と、前記第1の圧縮暗号文成分とのうち、少なくとも1つ以上を用いて第2の暗号文成分を生成する第2暗号文成分生成部と、
少なくとも前記第1の圧縮暗号文成分と前記第2の暗号文成分とを含む暗号文を出力する暗号文出力部とを備える
ことを特徴とする暗号化装置。
【請求項2】
有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式により平文を暗号化し、複数の暗号文成分を含む暗号文を出力する暗号化装置であって、
平文を受信する平文受信部と、
1つ以上の公開鍵成分を含む公開鍵を受信する公開鍵受信部と、
受信された前記平文と前記公開鍵成分とを用いて暗号文成分である第1の暗号文成分を少なくとも1つ以上生成する第1暗号文成分生成部と、
少なくとも1つ以上の前記第1の暗号文成分を圧縮して、第1の圧縮暗号文成分を得る第1暗号文成分圧縮部と、
受信された前記平文と、前記公開鍵成分と、前記第1の暗号文成分と、前記第1の圧縮暗号文成分とのうち、少なくとも1つ以上を用いて第2の暗号文成分を生成する第2暗号文成分生成部と、
前記第2の暗号文成分のうち少なくとも1つ以上を圧縮して、第2の圧縮暗号文成分を得る第2暗号文成分圧縮部と、
少なくとも前記第1の圧縮暗号文成分と第2の圧縮暗号文成分とを含む暗号文を出力する暗号文出力部とを備える
ことを特徴とする暗号化装置。
【請求項3】
前記第2暗号文生成部は、
少なくとも1つ以上の前記第1の圧縮暗号文成分を用いてハッシュ値を計算するハッシュ計算部と、
前記ハッシュ値を用いて前記第2の暗号文成分を生成する生成部とを有する
ことを特徴とする請求項1又は2に記載の暗号化装置。
【請求項4】
前記暗号文は、復号時に平文の生成に用いる平文生成用暗号文成分又は前記平文生成用暗号文を前記第1の暗号文成分圧縮部あるいは前記第2の暗号文成分圧縮部で圧縮した圧縮平文生成用暗号文成分と、復号時に平文の生成と暗号文の正当性の検証とに用いる総合暗号文成分又は前記総合暗号文成分を前記第1の暗号文成分圧縮部あるいは前記第2の暗号文成分圧縮部で圧縮した圧縮総合暗号文成分と、復号時に暗号文の正当性の検証に用いる検証用暗号文成分又は前記検証用暗号文成分を前記第1の暗号文成分圧縮部あるいは前記第2の暗号文成分圧縮部で圧縮した圧縮検証用暗号文成分とを含み、
前記第1の暗号文成分は、前記平文生成用暗号文成分と、前記総合暗号文成分とを少なくとも含み、
前記第1暗号文生成部は、前記公開鍵を用いたべき乗算を行うことにより第1の暗号化係数を計算し、前記第1の暗号化係数と前記平文との乗算を行うことにより前記平文生成用暗号文成分を計算し、前記公開鍵を用いたべき乗算を行うことにより前記総合暗号文成分を計算し、
前記ハッシュ値計算部は、前記平文生成用暗号文成分又は前記圧縮平文生成用暗号文成分と、前記総合暗号文成分又は前記圧縮総合暗号文成分とを少なくとも用いてハッシュ値を計算し、
前記生成部は、前記ハッシュ値と前記公開鍵とを用いて、乗算とべき乗算とを行うことにより、前記検証用暗号文成分を含む前記第2の暗号文成分を生成する
ことを特徴とする請求項3に記載の暗号化装置。
【請求項5】
前記第1暗号文生成部は、
乱数を生成する乱数生成部と、
前記公開鍵に含まれる第1の公開鍵成分を用いてべき指数が前記乱数であるべき乗算を行うことにより第1の暗号化係数を計算し、前記第1の暗号化係数と前記平文との乗算を行うことにより前記平文生成用暗号文成分を計算し、前記公開鍵に含まれる第2の公開鍵成分を用いてべき指数が前記乱数であるべき乗算を行うことにより前記総合暗号文成分を計算する計算部とを有し、
前記生成部は、前記公開鍵に含まれる第3の公開鍵成分を用いてべき指数が前記乱数であるべき乗算を行うことにより第2の暗号化係数を計算し、前記公開鍵に含まれる第4の公開鍵成分を用いてべき指数が前記乱数と前記ハッシュ値との積であるべき乗算を行うことにより第3の暗号化係数を計算し、前記第2の暗号化係数と前記第3の暗号化係数とを乗算することにより、前記検証用暗号文成分を含む前記第2の暗号文成分を生成する
ことを特徴とする請求項4に記載の暗号化装置。
【請求項6】
前記計算部は、前記公開鍵に含まれる第1の公開鍵成分を用いてべき指数が前記乱数であるべき乗算を行うことにより第1の暗号化係数を計算し、前記第1の暗号化係数と前記平文との乗算を行うことにより前記平文生成用暗号文成分を計算し、前記公開鍵に含まれる少なくとも2つの第2の公開鍵成分を用いてべき指数が前記乱数であるべき乗算を各々行うことにより、少なくとも2つの前記総合暗号文成分を計算する
ことを特徴とする請求項5に記載の暗号化装置。
【請求項7】
前記第1暗号文成分圧縮部は、少なくとも1つ以上の前記第1の暗号文成分を圧縮して、アフィン表現で表現された第1の圧縮暗号文成分を得る
ことを特徴とする請求項1乃至6のいずれか一項に記載の暗号化装置。
【請求項8】
前記第2暗号文成分圧縮部は、前記第2の暗号文成分のうち少なくとも1つ以上を圧縮して、アフィン表現で表現された第2の圧縮暗号文成分を得る
ことを特徴とする請求項2乃至7のいずれか一項に記載の暗号化装置。
【請求項9】
前記第1暗号文成分圧縮部と前記第2暗号文生成部とは並行して動作可能である
ことを特徴とする請求項2乃至8のいずれか一項に記載の暗号化装置。
【請求項10】
有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式により暗号化され複数の暗号文成分を含む暗号文を復号して平文を得る復号装置であって、
前記暗号文成分のうち少なくとも1つが圧縮された圧縮暗号文成分を含む暗号文を受信する暗号文受信部と、
前記暗号文の暗号化に用いられた公開鍵に対応する1つ以上の秘密鍵成分を含む秘密鍵を受信する秘密鍵受信部と、
受信された前記暗号文成分と前記秘密鍵成分とのうちいずれかを少なくとも用いて、前記暗号文の復号に用いる中間データを生成する中間データ生成部と、
前記圧縮暗号文成分を演算可能な表現で表現した伸張済み圧縮暗号分成分に伸張する暗号文成分伸張部と、
前記中間データの一部と、前記伸張済み圧縮暗号文成分と、前記暗号文成分とのいずれかを少なくとも用いて復号済みの平文を生成する復号済み平文生成部と、
復号済みの前記平文を出力する復号済み平文出力部とを備える
ことを特徴とする復号装置。
【請求項11】
前記中間データの一部と、前記伸張済み圧縮暗号文成分と、前記暗号文成分とのいずれかを少なくとも用いて、前記暗号文の正当性を検証するための検証用データを生成する検証用データ生成部と、
前記検証用データと前記検証用暗号文成分の少なくとも一部を用いて前記暗号文の正当性を検証する正当性検証部とを更に備え、
前記復号済み平文出力部は、前記暗号文が正当であると検証された場合、前記平文を出力し、前記暗号文が正当でないと検証された場合、前記暗号文が正当ではない旨を出力する
ことを特徴とする請求項10に記載の復号装置。
【請求項12】
前記暗号文は、前記平文の生成に用いる暗号文成分である平文生成用暗号文成分又は前記平文生成用暗号文成分を圧縮した圧縮平文生成用暗号文成分と、前記平文の生成と前記暗号文の正当性の検証とに用いる暗号文成分である総合暗号文成分又は前記総合暗号文成分を圧縮した圧縮総合暗号文成分と、前記暗号文の正当性の検証に用いる暗号文成分である検証用暗号文成分又は前記検証用暗号文成分を圧縮した圧縮検証用暗号文成分とを含む4つの暗号文成分を含み、
前記中間データ生成部は、
前記平文生成用暗号文成分又は前記圧縮平文生成用暗号文成分と、前記総合暗号文成分又は前記圧縮総合暗号文成分とを少なくとも用いてハッシュ値を計算するハッシュ値計算部と、
前記ハッシュ値と、受信された前記暗号文成分と前記秘密鍵成分とのうちいずれかを少なくとも用いて前記中間データを生成する生成部とを有する
ことを特徴とする請求項10又は11に記載の復号装置。
【請求項13】
前記暗号文成分伸張部は、前記圧縮暗号文成分を演算可能な表現である拡大体表現又は射影表現で表現した伸張済み圧縮暗号分成分に伸張する
ことを特徴とする請求項10乃至12のいずれか一項に記載の復号装置。
【請求項14】
前記正当性検証部は、前記検証用データと、前記検証用暗号文成分又は前記圧縮検証用暗号文成分との等価性を検証することにより、前記暗号文の正当性を検証する
ことを特徴とする請求項12に記載の復号装置。
【請求項15】
前記ハッシュ値計算部、前記暗号文成分伸張部、前記検証用データ生成部及び前記復号済み平文生成部は並列に動作可能である
ことを特徴とする請求項12乃至14のいずれか一項に記載の復号装置。
【請求項16】
前記ハッシュ値計算部、前記暗号文成分伸張部、前記検証用データ生成部、前記復号済み平文生成部及び前記生成部は並列に動作可能である
ことを特徴とする請求項12乃至14のいずれか一項に記載の復号装置。
【請求項17】
有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式により暗号化され複数の暗号文成分を含む暗号文を復号して平文を得る復号装置であって、
前記暗号文成分のうち少なくとも1つが圧縮された圧縮暗号文成分を含む暗号文を受信する暗号文受信部と、
前記暗号文の暗号化に用いられた公開鍵に対応する1つ以上の秘密鍵成分を含む秘密鍵を受信する秘密鍵受信部と、
受信された前記暗号文成分と前記秘密鍵成分とのうちいずれかを少なくとも用いて、平文を計算する平文計算部と、
受信された前記暗号文成分と前記秘密鍵成分とのうちいずれかを少なくとも用いて、前記暗号文の正当性を検証するための検証用データを生成する検証用データ生成部と、
前記圧縮暗号文成分と前記検証用データとを少なくとも用いて、前記暗号文の正当性を検証する正当性検証部と、
前記暗号文が正当であると検証された場合、前記平文を出力し、前記暗号文が正当でないと検証された場合、前記暗号文が不正である旨を出力する復号済み平文出力部とを備える
ことを特徴とする復号装置。
【請求項18】
前記暗号文は、前記平文の生成に用いる平文生成用暗号文成分と、前記平文の生成と前記暗号文の正当性の検証に用いる総合暗号文成分と、前記暗号文の正当性の検証に用いる検証用暗号文成分又は前記検証用暗号文成分を圧縮した圧縮検証用暗号文成分とを含む4つの暗号文成分を含み、
前記検証用データ生成部は、
前記平文生成用暗号文成分と、前記総合暗号文成分とを少なくとも用いて、ハッシュ値を計算するハッシュ値計算部と、
前記ハッシュ値と受信された前記暗号文成分と前記秘密鍵成分とのうちいずれかを少なくとも用いて、前記検証用データを生成する生成部とを有する
ことを特徴とする請求項17に記載の復号装置。
【請求項19】
各前記暗号文成分が正しくトーラスの元となっているか否かを検証するトーラス元検証部を更に備える
ことを特徴とする請求項10乃至18のいずれか一項に記載の復号装置。
【請求項20】
有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式により暗号化され複数の暗号文成分を含む暗号文の正当性を検証する暗号文正当性検証装置であって、
前記暗号文成分のうち少なくとも1つが圧縮された圧縮暗号文成分を含む暗号文を受信する暗号文受信部と、
前記暗号文の暗号化に用いられた公開鍵に対応する1つ以上の秘密鍵成分を含む秘密鍵を受信する秘密鍵受信部と、
受信された前記暗号文成分と前記秘密鍵成分とのうちいずれかを少なくとも用いて、前記暗号文の復号に用いる中間データを生成する中間データ生成部と、
前記圧縮暗号文成分の表現を演算可能な表現である伸張済み圧縮暗号分成分に伸張する暗号文成分伸張部と、
前記中間データの一部と、前記伸張済み圧縮暗号文成分と、前記暗号文成分とのいずれかを少なくとも用いて前記暗号文の正当性を検証する正当性検証部と、
前記正当性検証部の検証結果を出力する検証結果出力部とを備える
ことを特徴とする暗号文検証装置。
【請求項21】
有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式により暗号化され複数の暗号文成分を含む暗号文の正当性を検証する暗号文検証装置であって、
前記暗号文成分のうち少なくとも1つが圧縮された圧縮暗号文成分を含む暗号文を受信する暗号文受信部と、
前記暗号文の暗号化に用いられた公開鍵に対応する1つ以上の秘密鍵成分を含む秘密鍵を受信する秘密鍵受信部と、
受信された前記暗号文成分と前記秘密鍵成分とのうちいずれかを少なくとも用いて、平文を計算する平文計算部と、
受信された前記暗号文成分と前記秘密鍵成分とのうちいずれかを少なくとも用いて、前記暗号文の正当性を検証するための検証用データを生成する検証用データ生成部と、
前記圧縮暗号文成分と前記検証用データとを少なくとも用いて、前記暗号文の正当性を検証する正当性検証部と、
前記正当性検証部の検証結果を出力する検証結果出力部とを備える
ことを特徴とする暗号文検証装置。
【請求項22】
有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式により平文を暗号化し、複数の暗号文成分を含む暗号文を出力する暗号化装置で実行される暗号化方法であって、
平文を受信する平文受信ステップと、
1つ以上の公開鍵成分を含む公開鍵を受信する公開鍵受信ステップと、
受信された前記平文と前記公開鍵成分とを用いて暗号文成分である第1の暗号文成分を少なくとも1つ以上生成する第1暗号文成分生成ステップと、
少なくとも1つ以上の前記第1の暗号文成分を圧縮して、第1の圧縮暗号文成分を得る第1暗号文成分圧縮ステップと、
受信された平文と、前記公開鍵成分と、前記第1の暗号文成分と、前記第1の圧縮暗号文成分とのうち、少なくとも1つ以上を用いて第2の暗号文成分を生成する第2暗号文成分生成ステップと、
少なくとも前記第1の圧縮暗号文成分と前記第2の暗号文成分とを含む暗号文を出力する暗号文出力ステップとを含む
ことを特徴とする暗号化方法。
【請求項23】
有限体上の乗法群の離散対数問題に安全性の根拠を置く暗号方式により暗号化され複数の暗号文成分を含む暗号文を復号して平文を得る復号装置で実行される復号方法であって、
前記暗号文成分のうち少なくとも1つが圧縮された圧縮暗号文成分を含む暗号文を受信する暗号文受信ステップと、
前記暗号文の暗号化に用いられた公開鍵に対応する1つ以上の秘密鍵成分を含む秘密鍵を受信する秘密鍵受信ステップと、
受信された前記暗号文成分と前記秘密鍵成分とのうちいずれかを少なくとも用いて復号に必要な中間データを生成する中間データ生成ステップと、
前記圧縮暗号文成分を演算可能な表現で表現した伸張済み圧縮暗号分成分に伸張する暗号文成分伸張ステップと、
前記中間データの一部と、前記伸張済み圧縮暗号文成分と、前記暗号文成分とのいずれかを少なくとも用いて復号済みの平文を生成する復号済み平文生成ステップと、
復号済みの前記平文を出力する復号済み平文出力ステップとを含む
ことを特徴とする復号方法。
【請求項24】
請求項22又は23に記載の方法をコンピュータに実行させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate