JP5032955B2 - 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム - Google Patents

暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム Download PDF

Info

Publication number
JP5032955B2
JP5032955B2 JP2007305933A JP2007305933A JP5032955B2 JP 5032955 B2 JP5032955 B2 JP 5032955B2 JP 2007305933 A JP2007305933 A JP 2007305933A JP 2007305933 A JP2007305933 A JP 2007305933A JP 5032955 B2 JP5032955 B2 JP 5032955B2
Authority
JP
Japan
Prior art keywords
bit
value
unit
bit string
exclusive
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
JP2007305933A
Other languages
English (en)
Other versions
JP2009128774A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2007305933A priority Critical patent/JP5032955B2/ja
Publication of JP2009128774A publication Critical patent/JP2009128774A/ja
Application granted granted Critical
Publication of JP5032955B2 publication Critical patent/JP5032955B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、電気通信技術に関し、特に、公開鍵暗号通信技術に関する。
OAEP暗号(例えば、非特許文献1参照)に代表される、理想化されたハッシュ関数を用いた場合に適応的選択暗号攻撃に対して安全な、落とし戸付き一方向性置換関数を用いた公開鍵暗号の効率について説明する。なお、落とし戸付き一方向性置換関数とは、公開情報を用いた関数演算は容易であるが、秘密情報なしで逆関数の演算を行うことが困難な1対1関数を意味する。例えば、RSA関数は落とし戸付き一方向性置換関数であると信じられている。
nビットの領域{0, 1}nを定義域とする落とし戸付き一方向性置換関数をfとし、その逆関数をf‐1とする。原始的な公開鍵暗号方式では、平文mをそのままfに入力し、u=f(m)としてuを暗号文とする。しかし、このような方法では、攻撃者が任意の暗号文に対する平文を入手することができる環境化での安全性、即ち、適応的選択暗号文攻撃に対して安全であることを示すことができない。
RSA-OAEP暗号に代表される公開鍵暗号では、パディング関数pdとその逆関数pd-1を用いて、平文mの暗号文をu=f(pd(m, r))とし、暗号文uの復号をm=pd-1(f-1(u))とする。ただし、rは乱数である。
パディング関数の効率を評価する尺度として、処理可能な平文mの長さが用いられることが多い。即ち、mのビット数を|m|で表すとき、|m|がnに近いほど、長い平文mを暗号化することができるため、効率が良いといえる。ここで、kをセキュリティパラメータとする。なお、セキュリティパラメータをk=128と設定することは、攻撃者の計算能力の限界を2128回程度の演算と推定することに相当する。最も代表的なOAEPパディング方法では、乱数rの長さ|r|として2kビットが必要であり、さらに、kビット長の固定文字列が平文mに付け加えられる。これらのビット長の合計がnよりも短く、即ち、n>|m|+3kでなければならず、処理できる平文mのビット長は|m|<n-3kとなる。この平文の長さ|m|とnとの差(この例では3kビット)をオーバーヘッドと呼ぶ。オーバーヘッドが小さいほど、暗号化できる平文のビット長が長くなるため、効率の良いパディング方法であるといえる。
理想化されたハッシュ関数を用いた場合に適応的選択暗号に対して安全な、落とし戸付き一方向性置換関数を用いた公開鍵暗号方式は各種提案されているが、多くは3kビット或いはそれよりも大きなオーバーヘッドを持つ。唯一、非特許文献2等に示されたOAEP 3-roundパディング方法が2kビットのオーバーヘッドを持つ。
図20(a)は、従来のOAEP 3-roundパディング関数pdの処理を説明するための図であり、図20(b)は、その逆関数pd-1の処理を説明するための図である。
図20(b)に示すパディング関数pdは、2kビットの乱数r(=t(0))と、n-2kビットの平文m(=s(0))を入力とし、理想化されたハッシュ関数H1, H2, H3と排他的論理和(αとβとの排他的論理和を「α(+)β」と表現する)とを用いて、h(1)=H1(t(0)), s(1)=s(0)(+)h(1), h(2)=H2(s(1)), t(1)=t(0)(+)h(2), h(3)=H3(t(1)), s(2)=s(1)(+)h(3)と計算し、t(1)とs(2)とのビット結合t(1)|s(2)を出力する。そして、これを落とし戸付き一方向性置換関数fに入力し、u=f(t(1)|s(2))と計算したuを暗号文とする。なお、α|βは、αとβとのビット結合を意味する。
復号時には、まず、暗号文uをf‐1に入力して、a=f‐1(u)とする。次に、aの前半の2kビットと、残りのn-2kビットに分割し、それぞれをt(1),s(2)として図20(b)に示すパディング関数の逆関数pd-1に入力し、図20(a)と逆の手順で演算を行う。即ち、h(3)=H3(t(1)), s(1)=s(2)(+)h(3), h(2)=H2(s(1)), t(0)=t(1)(+)h(2),h(1)=H1(t(0)),m=s(0)=s(1)(+)h(1)を計算し、平文mを出力する。
この方式のオーバーヘッドが2kビットとなる理由は、乱数rと同じビット数の出力域を持つハッシュ関数H2を利用しているためである。従来方式の安全性の解析では、ハッシュ関数の出力が衝突を起こさないことが前提となっている。図20の方式ではハッシュ関数H2の出力域が乱数rのビット数|r|と同一でなければならないところ、異なる入力値に対する理想化されたハッシュ関数H2の出力値がq回訊かれる(即ち、攻撃者がハッシュ関数H2をq回計算する)とすると、その出力がすべて異なる確率は1‐(q2)/(2|r|)となる。qが2k以下であるとすると、この確率1‐(22k)/(2|r|)が意味を持つ(即ち、0以上より大きくなる)ためには、|r|は2kよりも大きくなければならない。
また、公開鍵暗号が安全となる、即ち識別不可能性を有する為には、kビットの乱数を用いることは不可避であり、その意味で、オーバーヘッドをkビットより小さくすることはできない。即ち、kビットがオーバーヘッドの最小値である。
より強い仮定に基づく場合、kビットのオーバーヘッドを達成できる。PhanとPointchevalは、非特許文献2の中で、理想化された落とし戸付き一方向性置換が利用できるという仮定を用いてkビットのオーバーヘッドとなる方法を提案している。しかしながら、非特許文献2では、理想化された落とし戸付き一方向性置換が現実のどのような関数に対応するのかは全く示されておらず、この方法を具体的に実現することは困難である。その上、理想化された落とし戸付き一方向性置換という仮定は、理想化されたハッシュ関数よりも更に強い仮定であり、即ち、達成することがより困難なものであるため、暗号方式の構成要素として望ましくない。
また、Jonssonは、非特許文献3において、理想化された対称鍵暗号が利用できるという仮定の下でkビットのオーバーヘッドとなる方法を提案しているが、これも上記と同様に、ハッシュ関数よりも更に強い仮定を用いたものであり、望ましくない。
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>
上述のように、理想化されたハッシュ関数を用いた場合に適応的選択暗号攻撃に対して安全な、落とし戸付き一方向性置換関数を用いた従来の公開鍵暗号のうち、最も効率の良い方法のオーバーヘッドは2kビットである。そのため、理想化されたハッシュ関数を用いた場合に適応的選択暗号攻撃に対して安全な、落とし戸付き一方向性置換関数を用いた公開鍵暗号では、n-2kビットまでの平文しか暗号化できなかった。
本発明はこのような点に鑑みてなされたものであり、従来よりも効率がよい、理想化されたハッシュ関数を用いた場合に適応的選択暗号攻撃に対して安全な、落とし戸付き一方向性置換関数を用いた公開鍵暗号技術を提供することを目的とする。
本発明では、上述の課題を解決するために、
(A) 暗号化装置の記憶部にn‐zビット(n>z≧k,kはセキュリティパラメータ)の平文mを格納する平文格納過程と、
(B) 上記暗号化装置の記憶部にzビットの乱数rを格納する乱数格納過程と、
(C) 暗号化装置の第1ビット分割部が、平文mを、v‐zビット(n>v-z≧2k)の第1平文m1と、n‐vビットの第2平文m2とにビット分割し、当該第2平文m2をビット列s(0)とする第1ビット分割過程と、
(D) 暗号化装置の第1ビット結合部が、乱数rと第1平文m1とのビット結合値を生成し、当該ビット結合値をビット列t(0)とする第1ビット結合過程と、
(E) ラウンド数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排他的論理和演算過程とを実行する、撹乱過程と、
(F) ラウンド数Rが偶数である場合には、暗号化装置の第2ビット結合部が、ビット列t(R/2)とビット列s(R/2)とを含むビット結合値yを生成し、
ラウンド数Rが奇数である場合には、暗号化装置の第2ビット結合部が、ビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを含むビット結合値yを生成する、第2ビット結合過程と、
(G) 暗号化装置の一方向性置換関数演算部が、ビット結合値yに対して落とし戸付き一方向性置換関数fを作用させた暗号文u=f(y)を算出する一方向性置換関数演算過程と、
(H) 暗号化装置の送信部が、暗号文uを復号装置に送信する暗号文送信過程と、
(I) 暗号文uを復号装置の記憶部に格納する暗号文格納過程と、
(J) 復号装置の逆関数演算部が、暗号文uに対して上記落とし戸付き一方向性置換関数fの逆関数f−1を作用させ、ビット結合値y=f−1(u)を抽出する逆関数演算過程と、
(K) 復号装置の第2ビット分割部が、ビット結合値yをビット分割し、ラウンド数Rが偶数である場合にはビット列t(R/2)とビット列s(R/2)とを少なくとも抽出し、ラウンド数Rが奇数である場合にはビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを少なくとも抽出する第2ビット分割過程と、
(L) ラウンド数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排他的論理和演算過程とを実行する、撹乱復元過程と、
(M) 復号装置の第3ビット分割部が、ビット列t(0)をビット分割し、zビットの乱数rとv‐zビットの第1平文m1とを抽出する第3ビット分割過程と、
(N) 復号装置の第3ビット結合部が、第1平文m1とビット列s(0)とのビット結合値を生成し、当該ビット結合値を復号結果として出力する第3ビット結合過程と、を実行する。
このように本発明では、平文mを第1平文m1と第2平文m2とにビット分割し、乱数rと第1平文m1とのビット結合値と、第2平文m2とを入力として撹乱過程を実行する。前述のように、ハッシュ関数の出力域との関係では乱数rと第1平文m1とのビット結合値のビット数は2k以上でなければならないが、このビットの一部を第1平文m1とできることにより、従来よりもオーバーヘッドを向上できる。
また、安全性のためには、復号要求によって乱数rが攻撃者に漏えいしないことが重要である。本発明では、乱数rと第1平文m1とのビット結合値を用いているが、この場合、平文が攻撃者に与えられることによって乱数rに関する情報が攻撃者に漏えいすることを防止するための処置が必要となる。本発明では、ラウンド数Rを4以上とし、乱数rと第1平文m1との結合を攪乱することによって、このような危険性を排除している。
以上のように、本発明では、従来よりも効率がよい、理想化されたハッシュ関数を用いた場合に適応的選択暗号攻撃に対して安全な、落とし戸付き一方向性置換関数を用いた公開鍵暗号が実現できる。
以下、本発明を実施するための最良の形態を図面を参照して説明する。
〔第1実施形態〕
<全体構成>
図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を有している。
CPU10aは、読み込まれた各種プログラムに従って様々な演算処理を実行する。また、入力部10bは、データが入力される入力ポート、キーボード、マウス等であり、出力部10cは、データを出力する出力ポート、ディスプレイ等である。補助記憶装置10dは、例えば、ハードディスク、MO(Magneto-Optical disc)、半導体メモリ等であり、RAM10fは、SRAM (Static Random Access Memory)、DRAM (Dynamic Random Access Memory)等である。また、バス10gは、CPU10a、入力部10b、出力部10c、補助記憶装置10d、RAM10f及びROM10eを通信可能に接続している。
なお、復号装置20のハードウェア構成は、暗号化装置10のそれと同様であるため説明を省略する。
<ハードウェアとソフトウェアとの協働>
第1実施形態の暗号化装置10及び復号装置20は、それぞれ、上述のようなハードウェアに所定のプログラムが読み込まれ、CPUがそれを実行することによって構築される。以下、このように構築される各装置の機能構成を説明する。
図2は、第1実施形態の暗号化装置10の機能構成を例示したブロック図である。また、図3は、第1実施形態の復号装置20の機能構成を例示したブロック図である。なお、図2,3における矢印はデータの流れを示すが、制御部13a,23aに出入りするデータの流れに対応する矢印は省略してある。
図2に例示するように、本形態の暗号化装置10は、記憶部11と、送信部12と、制御部13aと、乱数生成部13bと、第1ビット分割部13cと、第1ビット結合部13dと、第1ハッシュ関数演算部13eと、第1排他的論理和演算部13fと、第2ハッシュ関数演算部13gと、第2排他的論理和演算部13hと、第2ビット結合部13iと、一方向性置換関数演算部13jとを有する。
なお、記憶部11は、例えば、キャッシュメモリ、レジスタ、RAM、若しくは補助記憶装置、又はそれらを結合した記憶領域である。また、送信部12は、所定のプログラムが読み込まれたCPUの制御のもと駆動するLANカード、モデム等の通信装置である。さらに、制御部13a、乱数生成部13b、第1ビット分割部13c、第1ビット結合部13d、第1ハッシュ関数演算部13e、第1排他的論理和演算部13f、第2ハッシュ関数演算部13g、第2排他的論理和演算部13h、第2ビット結合部13i及び一方向性置換関数演算部13jは、例えば、所定のプログラムがCPUに読み込まれ、実行されることによって構築される演算部である。また、暗号化装置10は、制御部13aの制御の下、各処理を実行する。
図3に例示するように、本形態の復号装置20は、記憶部21と、受信部22と、制御部23aと、逆関数演算部23bと、第2ビット分割部23cと、第3ハッシュ関数演算部23dと、第3排他的論理和演算部23eと、第4ハッシュ関数演算部23fと、第4排他的論理和演算部23gと、第3ビット分割部23hと、第3ビット結合部23iとを有する。
なお、記憶部21は、例えば、キャッシュメモリ、レジスタ、RAM、若しくは補助記憶装置、又はそれらを結合した記憶領域である。また、受信部22は、所定のプログラムが読み込まれたCPUの制御のもと駆動するLANカード、モデム等の通信装置である。さらに、制御部23a、逆関数演算部23b、第2ビット分割部23c、第3ハッシュ関数演算部23d、第3排他的論理和演算部23e、第4ハッシュ関数演算部23f、第4排他的論理和演算部23g、第3ビット分割部23h及び第3ビット結合部23iは、例えば、所定のプログラムがCPUに読み込まれ、実行されることによって構築される演算部である。また、復号装置20は、制御部23aの制御の下、各処理を実行する。
<処理>
次に、本形態の処理について説明する。以下では、撹乱過程のラウンド数が偶数の場合の処理、及び、奇数の場合の処理をそれぞれ別個に説明する。しかし、撹乱過程のラウンド数が偶数であるか奇数であるかに応じ、以下の各処理が選択的に実行される構成であってもよい。
[ラウンド数R(R≧4)が偶数である場合]
《暗号化処理》
図4は、ラウンド数R(R≧4)が偶数である場合における暗号化処理を説明するためのフローチャートである。以下、この図に従って説明を行う。
まず、暗号化装置10(図2)の記憶部11にn‐zビット(n>z≧k,kはセキュリティパラメータ)の平文mを格納する(平文格納過程/ステップS1)。なお、本形態のnは、暗号化装置10が使用する一方向性置換関数fの入力域のビット数を意味する。また、キュリティパラメータkの値には特に制限はなく、求められる安全性のレベルに応じて設定すればよい。一般的にはk>80とすることが望ましい。
次に、暗号化装置10の乱数生成部13bが、zビットの乱数rを生成し、それを記憶部11に格納する(乱数格納過程/ステップS2)。
次に、暗号化装置10の第1ビット分割部13cが、記憶部11から平文mを読み込み、当該平文mを、v‐zビット(n>v‐z≧2k)の第1平文m1と、n‐vビットの第2平文m2とにビット分割し、第1平文m1と、第2平文m2(=s(0))とを記憶部11に格納する(第1ビット分割過程/ステップS3)。
なお、n>z≧kを満たすのであれば、zはどのような値であってもよく、また、n>v‐z≧2kを満たすのであれば、vはどのような値でもよい。しかし、z=k,v=3kとした場合、安全性を確保しつつオーバーヘッドを最小化できるため、z=k,v=3kとすることが望ましい。
また、平文mを第1平文m1と第2平文m2とにビット分割する際の分割方法にも制限はなく、例えば、平文mの上位v‐zビットを第1平文m1とし、残りのn‐vビットの第2平文m2としてもよいし、平文mの下位v‐zビットを第1平文m1とし、残りのn‐vビットの第2平文m2としてもよい。
次に、暗号化装置10の第1ビット結合部13dが、記憶部11から乱数rと第1平文m1とを読み込み、これらのビット結合値r|m1を生成し、当該ビット結合値r|m1をビット列
t(0)=r|m1
として記憶部11に格納する(第1ビット結合過程/ステップS4)。
なお、乱数rと第1平文m1とのビット結合方法にも制限はなく、例えば、乱数rを上位zビットとし、第1平文m1を残りのビットとして結合してもよいし、第1平文m1を上位v‐zビットとし、乱数rを残りのビットとして結合してもよい。
次に、制御部13aがi=0と設定し、当該iをレジスタ(図示せず)に保持する(ステップS5)。
次に、暗号化装置10の第1ハッシュ関数演算部13eが、記憶部11からビット列t(i)を読み込み、当該ビット列t(i)にハッシュ関数H(2・i+1)を作用させてn‐vビットのハッシュ値
h(2・i+1)=H(2・i+1) (t(i))
を算出し、当該ハッシュ値h(2・i+1)を記憶部11に格納する(第1ハッシュ関数演算過程/ステップS6)。なお、本形態のハッシュ関数H(2・i+1)は、
H(2・i+1):{0,1}v→{0,1}n−v
の入出力域を持つ。また、当該ハッシュ関数H(2・i+1)としては、例えば、SHA-1等を用いることができる。
次に、暗号化装置10の第1排他的論理和演算部13fが、記憶部11からビット列s(i)とハッシュ値h(2・i+1)とを読み込み、これらの排他的論理和演算
s(i+1)=s(i)(+) h(2・i+1)
を行い、その演算結果であるビット列s(i+1)を記憶部11に格納する(第1排他的論理和演算過程/ステップS7)。
次に、暗号化装置10の第2ハッシュ関数演算部13gが、記憶部11からビット列s(i+1)を読み込み、当該ビット列s(i+1)にハッシュ関数H(2・i+2)を作用させてvビットのハッシュ値
h(2・i+2)=H(2・i+2) (s(i+1))
を算出し、当該ハッシュ値h(2・i+2)を記憶部11に格納する(第2ハッシュ関数演算過程/ステップS8)。なお、本形態のハッシュ関数H(2・i+2)は、
H(2・i+2):{0,1}n−v→{0,1}v
の入出力域を持つ。また、当該ハッシュ関数H(2・i+2)としては、例えば、SHA-1等を用いることができる。
次に、暗号化装置10の第2排他的論理和演算部13hが、記憶部11からビット列t(i)とハッシュ値h(2・i+2)とを読み込み、これらの排他的論理和演算
t(i+1) =t(i)(+) h(2・i+2)
を行い、その演算結果であるビット列t(i+1)を記憶部11に格納する(第2排他的論理和演算過程/ステップS9)。
次に、制御部13aが、i=(R/2)‐1を満たすか否かを判定する(ステップS10)。ここで、i=(R/2)‐1が満たされなかった場合、制御部13aはi+1を新たなiとしてレジスタに格納して(ステップS11)、処理をステップS6に戻す。一方、i=(R/2)‐1が満たされた場合、暗号化装置10の第2ビット結合部13iが、記憶部11からビット列t(R/2)とビット列s(R/2)とを読み込み、それらを含むビット結合値
y=t(R/2)|s(R/2)
を生成し、当該ビット結合値yを記憶部11に格納する(第2ビット結合過程/ステップS12)。
次に、暗号化装置10の一方向性置換関数演算部13jが、記憶部11からビット結合値yを読み込み、当該ビット結合値yに対して落とし戸付き一方向性置換関数fを作用させた暗号文
u=f(y)
を算出し、当該暗号文uを暗号化装置の記憶部に格納する(一方向性置換関数演算過程/ステップS13)。なお、落とし戸付き一方向性置換関数fとしては、例えば、因数分解問題の求解困難性に安全性の根拠をおくRSA暗号の暗号化関数や、離散対数問題の求解困難性に安全性の根拠をおくElGamal暗号の暗号化関数等を例示できる(例えば、『岡本龍明,山本博資著、「現代暗号」、産業図書出版、ISBN4-7828-5353-X(参考文献1)』等参照)。
その後、暗号化装置10の送信部12が、記憶部11から読み込まれた暗号文uを復号装置20に送信する(暗号文送信過程/ステップS14)。
《復号処理》
図5は、ラウンド数R(R≧4)が偶数である場合における復号処理を説明するためのフローチャートである。以下、この図に従って説明を行う。
上述のように送信された暗号文uは、復号装置20(図3)の受信部22で受信され、記憶部21に格納される(暗号文格納過程/ステップS21)。
次に、復号装置20の逆関数演算部23bが、記憶部21から暗号文uを読み込み、当該暗号文uに対して落とし戸付き一方向性置換関数fの逆関数f−1を作用させ、ビット結合値
y=f−1(u)
を抽出し、当該ビット結合値yを記憶部21に格納する(逆関数演算過程/ステップS22)。
次に、復号装置20の第2ビット分割部23cが、記憶部21からビット結合値yを読み込み、当該ビット結合値yをビット分割し、ビット列t(R/2)とビット列s(R/2)とを抽出し、
y→ t(R/2), s(R/2)
それらを記憶部21に格納する(第2ビット分割過程/ステップS23)。
次に、制御部13aがi=(R/2)‐1と設定し、当該iをレジスタ(図示せず)に保持する(ステップS24)。
次に、復号装置20の第3ハッシュ関数演算部23dが、記憶部21からビット列s(i+1)を読み込み、当該ビット列s(i+1)にハッシュ関数H(2・i+2)を作用させてvビットのハッシュ値
h(2・i+2)=H(2・i+2)(s(i+1))
を算出し、当該ハッシュ値h(2・i+2)を記憶部21に格納する(第3ハッシュ関数演算過程/ステップS25)。なお、各ハッシュ関数H(2・i+2)は、暗号化装置10のものと同一である。
次に、復号装置20の第3排他的論理和演算部23eが、記憶部21からビット列t(i+1)とハッシュ値h(2・i+2)とを読み込み、これらの排他的論理和演算
t(i)=t(i+1) (+) h(2・i+2)
を行い、その演算結果であるビット列t(i)を記憶部21に格納する(第3排他的論理和演算過程/ステップS26)。
次に、復号装置20の第4ハッシュ関数演算部23fが、記憶部21からビット列t(i)を読み込み、当該ビット列t(i)にハッシュ関数H(2・i+1)を作用させてn‐vビットのハッシュ値
h(2・i+1)= H(2・i+1)(t(i))
を算出し、当該ハッシュ値h(2・i+1)を記憶部21に格納する(第4ハッシュ関数演算過程/ステップS27)。
次に、復号装置20の第4排他的論理和演算部23gが、記憶部21からビット列s(i+1)とハッシュ値h(2・i+1)とを読み込み、これらの排他的論理和演算
s(i)=s(i+1) (+) h(2・i+1)
を行い、その演算結果であるビット列s(i)を記憶部21に格納する(第4排他的論理和演算過程/ステップS28)。
次に、制御部23aが、i=0を満たすか否かを判定する(ステップS29)。ここで、i=0が満たされなかった場合、制御部23aはi‐1を新たなiとしてレジスタに格納して(ステップS30)、処理をステップS25に戻す。一方、i=0が満たされた場合、復号装置20の第3ビット分割部23hが、記憶部21からビット列t(0)を読み込み、当該ビット列t(0)をビット分割し、
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として抽出する。
次に、復号装置20の第3ビット結合部23iが、記憶部21から、第1平文m1とビット列s(0)(=m2)とを読み込み、これらのビット結合値
m=m1 | s(0)
を生成し、当該ビット結合値を復号結果mとして出力する(第3ビット結合過程/ステップS32)。
[ラウンド数Rが奇数である場合]
《暗号化処理》
図6は、ラウンド数R(R≧4)が奇数である場合における暗号化処理を説明するためのフローチャートである。以下、この図に従って説明を行う。なお、ラウンド数Rが偶数である場合の処理と共通する事項については説明を省略する。
まず、暗号化装置10(図2)が、ラウンド数Rが偶数である場合の処理で説明したステップS1〜S9の処理を実行する。
次に、暗号化装置10の制御部13aが、i=(R‐1)/2を満たすか否かを判定する(ステップS41)。ここで、i=(R‐1)/2が満たされなかった場合、制御部13aはi+1を新たなiとしてレジスタに格納して(ステップS42)、処理をステップS6に戻す。一方、i=(R/2)‐1が満たされた場合、暗号化装置10の第1ハッシュ関数演算部13eが、記憶部11からビット列t(i)を読み込み、当該ビット列t(i)にハッシュ関数H(2・i+1)を作用させてn‐vビットのハッシュ値
h(2・i+1)=H(2・i+1) (t(i))
を算出し、当該ハッシュ値h(2・i+1)を記憶部11に格納する(第1ハッシュ関数演算過程/ステップS44)。
次に、暗号化装置10の第1排他的論理和演算部13fが、記憶部11からビット列s(i)とハッシュ値h(2・i+1)とを読み込み、これらの排他的論理和演算
s(i+1)=s(i)(+) h(2・i+1)
を行い、その演算結果であるビット列s(i+1)を記憶部11に格納する(第1排他的論理和演算過程/ステップS45)。
次に、暗号化装置10の第2ビット結合部13iが、記憶部11からビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを読み込み、それらを含むビット結合値
y=t((R‐1)/2)|s(((R‐1)/2)+1)
を生成し、当該ビット結合値yを記憶部11に格納する(ステップS46)。
その後、暗号化装置10の一方向性置換関数演算部13jが、記憶部11からビット結合値yを読み込み、当該ビット結合値yに対して落とし戸付き一方向性置換関数fを作用させた暗号文
u=f(y)
を算出し、当該暗号文uを暗号化装置の記憶部に格納し(一方向性置換関数演算過程/ステップS13)、暗号化装置10の送信部12が、記憶部11から読み込まれた暗号文uを復号装置20に送信する(暗号文送信過程/ステップS14)。
《復号処理》
図7は、ラウンド数Rが奇数である場合における復号処理を説明するためのフローチャートである。以下、この図に従って説明を行う。なお、ラウンド数Rが偶数である場合の処理と共通する事項については説明を省略する。
まず、復号装置20(図3)が、ラウンド数Rが偶数である場合の処理で説明したステップS21,S22の処理を実行する。
次に、復号装置20の第2ビット分割部23cが、記憶部21からビット結合値yを読み込み、当該ビット結合値yをビット分割し、ビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを抽出し、
y→ t((R‐1)/2), s(((R‐1)/2)+1)
それらを記憶部21に格納する(第2ビット分割過程/ステップS50)。
次に、制御部13aがi=(R‐1)/2と設定し、当該iをレジスタ(図示せず)に保持する(ステップS51)。
次に、復号装置20の第4ハッシュ関数演算部23fが、記憶部21からビット列t(i)を読み込み、当該ビット列t(i)にハッシュ関数H(2・i+1)を作用させてn‐vビットのハッシュ値
h(2・i+1)= H(2・i+1)(t(i))
を算出し、当該ハッシュ値h(2・i+1)を記憶部21に格納する(第4ハッシュ関数演算過程/ステップS52)。
次に、復号装置20の第4排他的論理和演算部23gが、記憶部21からビット列s(i+1)とハッシュ値h(2・i+1)とを読み込み、これらの排他的論理和演算
s(i)=s(i+1) (+) h(2・i+1)
を行い、その演算結果であるビット列s(i)を記憶部21に格納する(第4排他的論理和演算過程/ステップS53)。
次に、制御部13aがi={(R‐1)/2}‐1と設定し、当該iをレジスタ(図示せず)に保持する(ステップS54)。
その後、ラウンド数Rが偶数である場合の処理で説明したステップS25〜S32の処理を実行し、復号結果mを出力する。
<撹乱過程・撹乱復元過程の具体例>
次に、ラウンド数R=4, 5の場合の撹乱過程(ステップS5〜11又はS5〜S9,S41,S42)及び撹乱復元過程(ステップS24〜30又はS52〜S54,S25〜S30)の処理を例示する。
[ラウンド数R=4である場合]
図8(a)は、ラウンド数R=4の場合における撹乱過程を説明するためのフローチャートである。この例では、
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)), s(2)=s(1) (+) h(3), h(4)=H(4) (s(2)), t(2) =t(1) (+) h(4)
が実行され、ビット列t(2)とビット列s(2)とが出力される。
図8(b)は、ラウンド数R=4の場合における撹乱復元過程を説明するためのフローチャートである。この例では、
i=1: h(4)=H(4)(s(2)), t(1)=t(2) (+) h(4), h(3)= H(3)(t(1)), 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)
が実行され、ビット列t(0)とビット列s(0)とが出力される。
[ラウンド数R=5である場合]
図9(a)は、ラウンド数R=5の場合における撹乱過程を説明するためのフローチャートである。この例では、
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)), 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)とが出力される。
図9(b)は、ラウンド数R=5の場合における撹乱復元過程を説明するためのフローチャートである。この例では、
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)), 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)
が実行され、ビット列t(0)とビット列s(0)とが出力される。
<第1実施形態の特徴>
本形態では、n‐zビット(n>z≧k,kはセキュリティパラメータ)の平文mを、v‐zビット(n>v-z≧2k)の第1平文m1と、n‐vビットの第2平文m2とにビット分割し、zビットの乱数rと第1平文m1とのビット結合値r|m1と、第2平文m2とを入力として撹乱過程を実行することとした。前述のように、ハッシュ関数の出力域との関係ではr|m1のビット数vは2k以上でなければならないが、このビットの一部を第1平文m1とできることにより、従来よりもオーバーヘッドを向上できる。特に、z=k,v=3kとした場合には、オーバーヘッドがkビットとなり、オーバーヘッドを最小化できる。
また、安全性のためには、復号要求によって乱数rが攻撃者に漏えいしないことが重要であるが、ラウンド数Rを4以上とし、乱数rと第1平文m1との結合を攪乱しているため、安全性が確保される。
なお、本発明は上述の実施形態に限定されるわけではなく、暗号化装置10と復号装置20との間で整合が採れるのであれば、ビット結合される何れかの情報にさらに他の情報をビット結合してもよい。
〔第2実施形態〕
次に、本発明の第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が所定値以外の値を示す場合には、復号装置の偽装復号結果生成部が、n‐zビットの乱数を生成し、当該乱数を復号結果として出力する点である。
以下では、第1実施形態との相違点を中心に説明し、第1実施形態と共通する事項については説明を省略する。
<全体構成>
第2実施形態の暗号通信システムは、第1実施形態の暗号化装置10を暗号化装置110に置換し、復号装置20を復号装置120に置換した構成となる。
<ハードウェア構成>
第1実施形態と同様であるため説明を省略する。
<ハードウェアとソフトウェアとの協働>
第2実施形態の暗号化装置110及び復号装置120は、それぞれ、前述のようなハードウェアに所定のプログラムが読み込まれ、CPUがそれを実行することによって構築される。以下、このように構築される各装置の機能構成を説明する。
図10は、第2実施形態の暗号化装置110の機能構成を例示したブロック図である。また、図11は、第2実施形態の復号装置120の機能構成を例示したブロック図である。なお、図10及び図11において第1実施形態と共通する部分には、図2及び図3と同じ符号を付している。
図10に示すように、第2実施形態の暗号化装置110は、第1実施形態の暗号化装置10の第2ビット結合部13iを第2ビット結合部113iに置換することによって構成される。なお、第2ビット結合部113iは、例えば、所定のプログラムがCPUに読み込まれ、実行されることによって構築される演算部である。また、暗号化装置110は、制御部13aの制御の下、各処理を実行する。
また、図11に示すように、第2実施形態の復号装置120は、第1実施形態の復号装置20の第2ビット分割部23cを第2ビット分割部123cに置換し、さらに、判定部123dと偽装復号結果生成部123eを付加することによって構成される。なお、第2ビット分割部123c、判定部123d及び偽装復号結果生成部123eは、例えば、所定のプログラムがCPUに読み込まれ、実行されることによって構築される演算部である。また、復号装置120は、制御部23aの制御の下、各処理を実行する。
また、本形態では、一例として、落とし戸付き一方向性置換関数fが、0以上N未満(Nは自然数)の値を入力とする関数であり、Nのビット長を|N|とし、付加情報bのビット長を|b|とした場合にn=|N|‐|b|を満たし、付加情報bが0を示すビット又はビット列であり、第2ビット結合過程で生成されるビット結合値yが、付加情報bが先頭にビット結合された値である場合について説明を行う。また、この例のような落とし戸付き一方向性置換関数fとしては、RSA暗号方式における暗号化関数
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が偶数である場合と奇数である場合を同時に説明する。
《暗号化処理》
図12(a)は、第2実施形態の暗号化処理を説明するためのフローチャートである
まず、暗号化装置110(図10)において、ラウンド数Rが偶数である場合にはステップS1〜S11の処理を行い、ラウンド数Rが奇数である場合にはステップS1〜S9,S41〜S45の処理を行う。
その後、ラウンド数Rが偶数である場合には、暗号化装置110の第2ビット結合部113iが、所定値を示す付加情報bとビット列t(R/2)とビット列s(R/2)とを記憶部11から読み込んで、それらのビット結合値
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)。
その後、暗号化装置110が第1実施形態と同様に、ステップS13,14の処理を実行し、暗号文uを復号装置120に送信する。
《復号処理》
図12(b)は、第2実施形態の復号処理を説明するためのフローチャートである。
まず、復号装置120(図11)において、第1実施形態で説明したステップS21,S22の処理を実行する。その後、復号装置120の第2ビット分割部123cが、記憶部21からビット結合値yを読み込み、当該ビット結合値yをビット分割し、ラウンド数Rが偶数である場合には、付加情報bとビット列t(R/2)とビット列s(R/2)を抽出し、ラウンド数Rが奇数である場合には、付加情報bとビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを抽出し、それらを記憶部21に格納する(第2ビット分割過程/ステップS121)。
y→ b, t(R/2), s(R/2) (Rが偶数の場合)
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)でのビット結合方法に応じて決定される。
次に、判定部123dが、記憶部21からステップS121で格納された付加情報bと、前処理で格納された付加情報b’とを読み込み、これらが示す値が同一であるか否かを判定する(ステップS122)。ここで、b=b’でないと判定された場合、偽装復号結果生成部123eが、n‐zビットの乱数を生成し、当該乱数を復号結果m’として出力する(偽装復号結果生成過程/ステップS123)。一方、b=b’であると判定された場合、第1実施形態と同様、ラウンド数Rが偶数の場合には、ステップS24〜S32の処理が実行され、ラウンド数Rが奇数の場合には、ステップS51〜S54,S25〜S32の処理が実行され、復号結果mが出力される。
<第2実施形態の特徴>
本形態でも、第1実施形態と同様、安全性を確保しつつオーバーヘッドを小さくすることができる。
また、本形態では、ビット結合値yが付加情報bを具備し、復号装置120が当該付加情報bを用いて暗号文uの正当性を検証し、暗号文uが正当である場合には第1実施形態と同様に復号処理を行ってn‐zビットの復号結果を出力し、暗号文uが不当である場合にはn-zビットの乱数を復号結果として出力することとした。これにより、暗号文uが不当である場合に復号装置120が復号処理を行うことを抑制できる。さらに、暗号文uが不当である場合に正規の復号結果と同じビット数n-zの乱数を復号結果として出力することで、選択暗号文攻撃に有効な情報が攻撃者に漏えいすることを防止できる。
なお、本形態では、落とし戸付き一方向性置換関数fが、0以上N未満(Nは自然数)の値を入力とする関数であり、Nのビット長を|N|とし、付加情報bのビット長を|b|とした場合にn=|N|‐|b|を満たし、付加情報bは、0を示すビット又はビット列であり、第2ビット結合過程で生成されるビット結合値yが、付加情報bが先頭にビット結合された値である場合について説明した。しかし、本発明はこれに限定されず、落とし戸付き一方向性置換関数fとして、入力域がnビットのElGamal暗号の暗号化関数等を用いた場合に本形態を適用してもよい。また、付加情報b, b’が0以外の値を示すものであってもよい。
また、暗号化装置110と復号装置120との間で整合が採れるのであれば、ビット結合される何れかの情報にさらに他の情報をビット結合してもよい。
〔第3実施形態〕
次に、本発明の第3実施形態について説明する。
第3実施形態は、第2実施形態の変形例であり、(1)付加情報bを少なくとも一部のハッシュ関数の入力に含める点、(2)復号装置において付加情報bの検証を行って暗号文の正当性を検証し、暗号文が不当である場合に乱数を復号結果として出力する処理を行わない点が第2実施形態と相違する。以下では、第1,2実施形態との相違点を中心に説明し、これらと共通する事項については説明を省略する。
<全体構成>
第3実施形態の暗号通信システムは、第1実施形態の暗号化装置10を暗号化装置210に置換し、復号装置20を復号装置220に置換した構成となる。
<ハードウェア構成>
第1実施形態と同様であるため説明を省略する。
<ハードウェアとソフトウェアとの協働>
第2実施形態の暗号化装置210及び復号装置220は、それぞれ、前述のようなハードウェアに所定のプログラムが読み込まれ、CPUがそれを実行することによって構築される。以下、このように構築される各装置の機能構成を説明する。
図13は、第3実施形態の暗号化装置210の機能構成を例示したブロック図である。また、図14は、第3実施形態の復号装置220の機能構成を例示したブロック図である。なお、図13及び図14において第1,2実施形態と共通する部分には、図2,3,10,11と同じ符号を付している。
図13に示すように、第3実施形態の暗号化装置210は、第1実施形態の暗号化装置10の第1ハッシュ関数演算部13eを第1ハッシュ関数演算部213eに置換し、第2ハッシュ関数演算部13gを第2ハッシュ関数演算部213gに置換し、第2ビット結合部13iを第2ビット結合部113iに置換することによって構成される。第1ハッシュ関数演算部213e、第2ハッシュ関数演算部213g、及び第2ビット結合部113iは、例えば、所定のプログラムがCPUに読み込まれ、実行されることによって構築される演算部である。また、暗号化装置210は、制御部13aの制御の下、各処理を実行する。
また、図14に示すように、第3実施形態の復号装置220は、第1実施形態の復号装置20の第2ビット分割部23cを第2ビット分割部123cに置換し、第3ハッシュ関数演算部23dを第3ハッシュ関数演算部223dに置換し、第4ハッシュ関数演算部23fを第4ハッシュ関数演算部223fに置換することによって構成される。なお、第2ビット分割部123c、第3ハッシュ関数演算部223d及び第4ハッシュ関数演算部223fは、例えば、所定のプログラムがCPUに読み込まれ、実行されることによって構築される演算部である。また、復号装置220は、制御部23aの制御の下、各処理を実行する。
また、第1実施形態では、全てのiについて、ハッシュ関数H(2・i+1)が{0,1}v→{0,1}n−vの入出力域を持ち、ハッシュ関数H(2・i+2)が{0,1}n−v→{0,1}vの入出力域を持つこととしたが、本形態では、少なくとも一部のiに対応するハッシュ値h(2・i+1)及び/又はハッシュ値h(2・i+2)が、
H(2・i+1):{0,1}v+|b|→{0,1}n−v …(1)
H(2・i+2):{0,1}n−v+|b|→{0,1}v …(2)
の入出力域を持ち、その他のiに対応するハッシュ値h(2・i+1)及び/又はハッシュ値h(2・i+2)が、
H(2・i+1):{0,1}v→{0,1}n−v …(3)
H(2・i+2):{0,1}n−v→{0,1}v …(4)
の入出力域を持つ。なお、上述したように付加情報bのビット長|b|に制限はないが、オーバーヘッドをできるだけ小さくするという観点から|b|=1であることが望ましい。
また、各ハッシュ関数H(2・i+1)を式(1)(3)いずれの関数にするか、及び、各ハッシュ関数H(2・i+1)を式(2)(4)いずれの関数にするかについても特に制限はない。しかし、安全性の観点からは、ラウンド数Rが偶数である場合には、少なくとも何れかのi≧1に対応するハッシュ関数H(2・i+1)を式(1)の関数とするか、或いは、少なくとも何れかのi≦(R/2)‐2に対応するハッシュ関数H(2・i+2)を式(2)の関数とすることが望ましい。また、ラウンド数Rが奇数である場合には、少なくとも何れかのiに対応するハッシュ関数H(2・i+2)を式(2)の関数とする。すなわち、最初のラウンド及び最後のラウンド以外のハッシュ関数のうち、少なくとも一部を式(1)(2) のいずれかにすることが望ましい。また、安全性の観点からより好ましくは、全てのハッシュ関数を式(1)(2)のいずれかにすることが望ましい。
また、前処理において、式(1)(2)のハッシュ関数を用いるラウンドを特定する情報Rbが記憶部11,21にそれぞれ格納され、各装置の制御部13a,23aは、この情報Rbを用い、各ハッシュ関数を特定する。また、Rbが事前にプログラムに記述されている構成であってもよい。
<処理>
《暗号化処理》
第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に対応する(2・i+1=Rb及び/又は2・i+2=Rbである)ハッシュ値h(2・i+1)及び/又はハッシュ値h(2・i+2)が、付加情報bとビット列t(i)とのビット結合値にハッシュ関数H(2・i+1)を作用させたハッシュ値
h(2・i+1)= H(2・i+1)(b|t(i)) …(5)
及び/又は付加情報bとビット列s(i+1)とのビット結合値にハッシュ関数H(2・i+2)を作用させたハッシュ値
h(2・i+2)= H(2・i+2)(b|s(i+1)) …(6)
であり、その他のハッシュ値が第1,2実施形態と同様である点である。
なお、式(5),(6)を算出するためのハッシュ関数H(2・i+1),H(2・i+2)は、上述の式(1)(2)の関数であり、その他のハッシュ関数H(2・i+1),H(2・i+2)は、上述の式(3)(4)の関数である。
《復号処理》
第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に対応する(2・i+1=Rb及び/又は2・i+2=Rbである)ハッシュ値h(2・i+1)及び/又はハッシュ値h(2・i+2)が、付加情報bとビット列t(i)とのビット結合値にハッシュ関数H(2・i+1)を作用させたハッシュ値
h(2・i+1)= H(2・i+1)(b|t(i)) …(5)
及び/又は付加情報bとビット列s(i+1)とのビット結合値にハッシュ関数H(2・i+2)を作用させたハッシュ値
h(2・i+2)= H(2・i+2)(b|s(i+1)) …(6)
であり、その他のハッシュ値が第1,2実施形態と同様である点である。
<撹乱過程・撹乱復元過程の具体例>
次に、本形態の撹乱過程・撹乱復元過程の具体例を説明する。
図15(a)は、第3実施形態におけるR=4の場合の撹乱過程の一例を説明するための図であり、図15(b)は、その撹乱復元過程を説明するための図である。
この例の撹乱過程では、
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)(b|t(1)), s(2)=s(1) (+) h(3), h(4)=H(4) (s(2)),t(2) =t(1) (+) h(4)
が実行され、ビット列t(2)とビット列s(2)とが出力される。
また、この例の撹乱復元過程では、
i=1: h(4)=H(4)(s(2)), t(1)=t(2) (+) h(4), h(3)= H(3)(b|t(1)), 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)
が実行され、ビット列t(0)とビット列s(0)とが出力される。
図16(a)は、第3実施形態におけるR=4の場合の撹乱過程の他の例を説明するための図であり、図16(b)は、その撹乱復元過程を説明するための図である。
この例の撹乱過程では、
i=0: h(1)=H(1)(t(0)), s(1)=s(0) (+) h(1), h(2)=H(2) (b|s(1)), t(1) =t(0) (+) h(2)
i=1: h(3)=H(3)(b|t(1)), s(2)=s(1) (+) h(3), h(4)=H(4) (s(2)),t(2) =t(1) (+) h(4)
が実行され、ビット列t(2)とビット列s(2)とが出力される。
また、この例の撹乱復元過程では、
i=1: h(4)=H(4)(s(2)), t(1)=t(2) (+) h(4), h(3)= H(3)(b|t(1)), s(1)=s(2)(+) h(3)
i=0: h(2)=H(2)(b|s(1)), t(0)=t(1) (+) h(2), h(1)= H(1)(t(0)), s(0)=s(1) (+) h(1)
が実行され、ビット列t(0)とビット列s(0)とが出力される。
図17(a)は、第3実施形態におけるR=4の場合の撹乱過程の他の例を説明するための図であり、図17(b)は、その撹乱復元過程を説明するための図である。
この例の撹乱過程では、
i=0: h(1)=H(1)(b|t(0)), s(1)=s(0) (+) h(1), h(2)=H(2) (b|s(1)), t(1) =t(0) (+) h(2)
i=1: h(3)=H(3)(b|t(1)), s(2)=s(1) (+) h(3), h(4)=H(4) (b|s(2)),t(2) =t(1) (+) h(4)
が実行され、ビット列t(2)とビット列s(2)とが出力される。
また、この例の撹乱復元過程では、
i=1: h(4)=H(4)(b|s(2)), t(1)=t(2) (+) h(4), h(3)= H(3)(b|t(1)), s(1)=s(2)(+) h(3)
i=0: h(2)=H(2)(b|s(1)), t(0)=t(1) (+) h(2), h(1)= H(1)(b|t(0)), s(0)=s(1)(+) h(1)
が実行され、ビット列t(0)とビット列s(0)とが出力される。
図18(a)は、第3実施形態におけるR=5の場合の撹乱過程の一例を説明するための図であり、図18(b)は、その撹乱復元過程を説明するための図である。
この例の撹乱過程では、この例では、
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)(b|t(1)), 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)とが出力される。
また、この例の撹乱復元過程では、
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)(b|t(1)), 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)
が実行され、ビット列t(0)とビット列s(0)とが出力される。
図19(a)は、第3実施形態におけるR=5の場合の撹乱過程の他の例を説明するための図であり、図19(b)は、その撹乱復元過程を説明するための図である。
この例の撹乱過程では、この例では、
i=0: h(1)=H(1)(b|t(0)), s(1)=s(0) (+) h(1), h(2)=H(2) (b|s(1)), t(1) =t(0) (+) h(2)
i=1: h(3)=H(3)(b|t(1)), s(2)=s(1) (+) h(3), h(4)=H(4)(b|s(2)),t(2) =t(1) (+) h(4)
i=2: h(5)=H(5)(b|t(2)), s(3)=s(2) (+) h(5)
が実行され、ビット列t(2)とビット列s(3)とが出力される。
また、この例の撹乱復元過程では、
i=2: h(5)= H(5)(b|t(2)), s(2)=s(3)(+) h(5)
i=1: h(4)=H(4)(b|s(2)), t(1)=t(2) (+) h(4), h(3)= H(3)(b|t(1)), s(1)=s(2)(+) h(3)
i=0: h(2)=H(2)(b|s(1)), t(0)=t(1) (+) h(2), h(1)= H(1)(b|t(0)), s(0)=s(1)(+) h(1)
が実行され、ビット列t(0)とビット列s(0)とが出力される。
<第3実施形態の特徴>
本形態でも、第1実施形態で説明したのと同様、安全性を確保しつつオーバーヘッドを小さくすることができる。また、本形態では、ビット結合値yが付加情報bを具備し、この付加情報bを少なくとも一部のハッシュ関数の入力値に含めることとしたため、安全性がより向上する。さらに、そのために第2実施形態のように復号時に付加情報bの値を検証したり、乱数を復号結果として生成する必要もない。
また、暗号化装置210と復号装置220との間で整合が採れるのであれば、ビット結合される何れかの情報にさらに他の情報をビット結合してもよい。
〔その他の変形等〕
その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
本発明は、例えば、公開鍵暗号を用いた暗号通信技術に利用できる。
図1(a)は、第1実施形態の暗号通信システム1の構成を例示した図である。図1(b)は、暗号化装置のハードウェア構成を例示したブロック図である。 図2は、第1実施形態の暗号化装置の機能構成を例示したブロック図である。 図3は、第1実施形態の復号装置の機能構成を例示したブロック図である。 図4は、ラウンド数R(R≧4)が偶数である場合における暗号化処理を説明するためのフローチャートである。 図5は、ラウンド数R(R≧4)が偶数である場合における復号処理を説明するためのフローチャートである。 図6は、ラウンド数R(R≧4)が奇数である場合における暗号化処理を説明するためのフローチャートである。 図7は、ラウンド数Rが奇数である場合における復号処理を説明するためのフローチャートである。 図8(a)は、ラウンド数R=4の場合における撹乱過程を説明するためのフローチャートである。図8(b)は、ラウンド数R=4の場合における撹乱復元過程を説明するためのフローチャートである。 図9(a)は、ラウンド数R=5の場合における撹乱過程を説明するためのフローチャートである。図9(b)は、ラウンド数R=5の場合における撹乱復元過程を説明するためのフローチャートである。 図10は、第2実施形態の暗号化装置の機能構成を例示したブロック図である。 図11は、第2実施形態の復号装置の機能構成を例示したブロック図である。 図12(a)は、第2実施形態の暗号化処理を説明するためのフローチャートである。図12(b)は、第2実施形態の復号処理を説明するためのフローチャートである。 図13は、第3実施形態の暗号化装置の機能構成を例示したブロック図である。 図14は、第3実施形態の復号装置の機能構成を例示したブロック図である。 図15(a)は、第3実施形態におけるR=4の場合の撹乱過程の一例を説明するための図であり、図15(b)は、その撹乱復元過程を説明するための図である。 図16(a)は、第3実施形態におけるR=4の場合の撹乱過程の他の例を説明するための図であり、図16(b)は、その撹乱復元過程を説明するための図である。 図17(a)は、第3実施形態におけるR=4の場合の撹乱過程の他の例を説明するための図であり、図17(b)は、その撹乱復元過程を説明するための図である。 図18(a)は、第3実施形態におけるR=5の場合の撹乱過程の一例を説明するための図であり、図18(b)は、その撹乱復元過程を説明するための図である。 図19(a)は、第3実施形態におけるR=5の場合の撹乱過程の他の例を説明するための図であり、図19(b)は、その撹乱復元過程を説明するための図である。 図20(a)は、従来のOAEP 3-roundパディング関数pdの処理を説明するための図であり、図20(b)は、その逆関数pd-1の処理を説明するための図である。
符号の説明
10,110,210 暗号化装置
20,120,220 復号装置

Claims (10)

  1. (A) 暗号化装置の記憶部にn‐zビット(n>z≧k,kはセキュリティパラメータ)の平文mを格納する平文格納過程と、
    (B) 上記暗号化装置の記憶部にzビットの乱数rを格納する乱数格納過程と、
    (C) 暗号化装置の第1ビット分割部が、平文mを、v‐zビット(n>v-z≧2k)の第1平文m1と、n‐vビットの第2平文m2とにビット分割し、当該第2平文m2をビット列s(0)とする第1ビット分割過程と、
    (D) 暗号化装置の第1ビット結合部が、乱数rと第1平文m1とのビット結合値を生成し、当該ビット結合値をビット列t(0)とする第1ビット結合過程と、
    (E) ラウンド数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排他的論理和演算過程とを実行する、撹乱過程と、
    (F) ラウンド数Rが偶数である場合には、暗号化装置の第2ビット結合部が、ビット列t(R/2)とビット列s(R/2)とを含むビット結合値yを生成し、
    ラウンド数Rが奇数である場合には、暗号化装置の第2ビット結合部が、ビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを含むビット結合値yを生成する、第2ビット結合過程と、
    (G) 暗号化装置の一方向性置換関数演算部が、ビット結合値yに対して落とし戸付き一方向性置換関数fを作用させた暗号文u=f(y)を算出する一方向性置換関数演算過程と、
    (H) 暗号化装置の送信部が、暗号文uを復号装置に送信する暗号文送信過程と、
    (I) 暗号文uを復号装置の記憶部に格納する暗号文格納過程と、
    (J) 復号装置の逆関数演算部が、暗号文uに対して上記落とし戸付き一方向性置換関数fの逆関数f−1を作用させ、ビット結合値y=f−1(u)を抽出する逆関数演算過程と、
    (K) 復号装置の第2ビット分割部が、ビット結合値yをビット分割し、ラウンド数Rが偶数である場合にはビット列t(R/2)とビット列s(R/2)とを少なくとも抽出し、ラウンド数Rが奇数である場合にはビット列t((R‐1)/2)とビット列s(((R‐1)/2)+1)とを少なくとも抽出する第2ビット分割過程と、
    (L) ラウンド数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排他的論理和演算過程とを実行する、撹乱復元過程と、
    (M) 復号装置の第3ビット分割部が、ビット列t(0)をビット分割し、zビットの乱数rとv‐zビットの第1平文m1とを抽出する第3ビット分割過程と、
    (N) 復号装置の第3ビット結合部が、第1平文m1とビット列s(0)とのビット結合値を生成し、当該ビット結合値を復号結果として出力する第3ビット結合過程と、
    を有することを特徴とする暗号通信方法。
  2. 請求項1に記載の暗号通信方法であって、
    上記第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が上記所定値以外の値を示す場合に、復号装置の偽装復号結果生成部が、n‐zビットの乱数を生成し、当該乱数を復号結果として出力する偽装復号結果生成過程をさらに有する、
    ことを特徴とする暗号通信方法。
  3. 請求項1に記載の暗号通信方法であって、
    上記第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)である、
    ことを特徴とする暗号通信方法。
  4. 請求項3に記載の暗号通信方法であって、
    ラウンド数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. 請求項2から4の何れかに記載の暗号通信方法であって、
    上記落とし戸付き一方向性置換関数fは、0以上N未満(Nは自然数)の値を入力とする関数であり、
    nは、Nのビット長を|N|とし、付加情報bのビット長を|b|とした場合にn=|N|‐|b|を満たし、
    上記付加情報bは、0を示すビット又はビット列であり、
    上記第2ビット結合過程で生成される上記ビット結合値yは、付加情報bが先頭にビット結合された値である、
    ことを特徴とする暗号通信方法。
  6. 請求項1から5の何れかに記載の暗号通信方法であって、
    z=kであり、v=3kである、
    ことを特徴とする暗号通信方法。
  7. n‐zビット(n>z≧k,kはセキュリティパラメータ)の平文mと、zビットの乱数rとが格納された記憶部と、
    上記記憶部から平文mを読み込み、当該平文mを、v‐zビット(n>v-z≧2k)の第1平文m1と、n‐vビットの第2平文m2とにビット分割し、当該第1平文m1と、第2平文m2であるビット列s(0)と、を上記暗号化装置の記憶部に格納する第1ビット分割部と、
    上記記憶部から乱数rと第1平文m1とを読み込み、これらのビット結合値を生成し、当該ビット結合値をビット列t(0)として上記記憶部に格納する第1ビット結合部と、
    上記記憶部からビット列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を作用させた暗号文u=f(y)を算出し、当該暗号文uを上記記憶部に格納する一方向性置換関数演算部と、
    上記記憶部から読み込まれた暗号文uを復号装置に送信する送信部と、
    を有することと特徴とする暗号化装置。
  8. 請求項7に記載の暗号化装置から送信された暗号文uを格納する記憶部と、
    上記記憶部から暗号文uを読み込み、当該暗号文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ビット分割部と、
    上記記憶部から、第1平文m1とビット列s(0)とを読み込み、これらのビット結合値を生成し、当該ビット結合値を復号結果として出力する第3ビット結合部と、
    を有することを特徴とする復号装置。
  9. 請求項7に記載の暗号化装置としてコンピュータを機能させるためのプログラム。
  10. 請求項8に記載の暗号化装置としてコンピュータを機能させるためのプログラム。
JP2007305933A 2007-11-27 2007-11-27 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム Active JP5032955B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007305933A JP5032955B2 (ja) 2007-11-27 2007-11-27 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007305933A JP5032955B2 (ja) 2007-11-27 2007-11-27 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム

Publications (2)

Publication Number Publication Date
JP2009128774A JP2009128774A (ja) 2009-06-11
JP5032955B2 true JP5032955B2 (ja) 2012-09-26

Family

ID=40819732

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007305933A Active JP5032955B2 (ja) 2007-11-27 2007-11-27 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム

Country Status (1)

Country Link
JP (1) JP5032955B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016119625A1 (zh) * 2015-01-30 2016-08-04 南京法威克信息科技有限公司 乱码本有限单向变换及其加解密应用的方法、装置和电路

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114419719B (zh) * 2022-03-29 2022-08-12 北京爱笔科技有限公司 一种生物特征的处理方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016119625A1 (zh) * 2015-01-30 2016-08-04 南京法威克信息科技有限公司 乱码本有限单向变换及其加解密应用的方法、装置和电路

Also Published As

Publication number Publication date
JP2009128774A (ja) 2009-06-11

Similar Documents

Publication Publication Date Title
JP4555859B2 (ja) 認証システム、認証方法、証明装置、検証装置、それらのプログラム及び記録媒体
US7688973B2 (en) Encryption apparatus, decryption apparatus, key generation apparatus, program, and method
US20070206789A1 (en) Elliptic curve cryptosystem optimization using two phase key generation
US20210135851A1 (en) Encryption processing system and encryption processing method
JP2010049213A (ja) 暗号化装置、復号装置、暗号通信システム、方法及びプログラム
JP2007114494A (ja) 秘匿計算方法及び装置
JP4690819B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置
JP5038866B2 (ja) 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム
JP5032955B2 (ja) 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム
CN1985458B (zh) 增强的自然蒙哥马利指数掩蔽和恢复的方法和装置
JP2011040932A (ja) 認証付き暗号化装置、認証付き暗号化方法、検証付き復号装置、検証付き復号方法、暗号システム、プログラム、記録媒体
JP4685621B2 (ja) 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム
JP4922139B2 (ja) 鍵共有方法、第1装置、第2装置、及び、それらのプログラム
JP5102536B2 (ja) ストリーム暗号の暗号化装置、復号化装置、暗号化方法、復号化方法およびプログラム
US11522675B2 (en) Apparatus and method for encryption and decryption based on tweak converter to which key table is applied
JP2013207387A (ja) プロキシ暗号システム,プロキシ暗号方法,委託装置,プロキシ装置
JP5448801B2 (ja) 暗号化システム、暗号化装置、復号装置、暗号化方法、プログラム、記録媒体
JP5210712B2 (ja) 圧縮rsa係数の計算方法
JP2005084568A (ja) セキュリティ方法、セキュリティ装置及びセキュリティプログラム
JP5038868B2 (ja) 鍵共有方法、第1装置、第2装置、及びそれらのプログラム
JP5354914B2 (ja) 暗号処理装置及び復号処理装置及びプログラム
JP4676873B2 (ja) パラメータ生成装置、暗号鍵生成装置、それらの方法及びプログラム
Vats et al. LockNKey: Improvised Cloud Storage System using Threshold Cryptography Approach
JP4664514B2 (ja) 素数生成装置及びプログラム
JP4802228B2 (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: 20120619

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

R150 Certificate of patent or registration of utility model

Ref document number: 5032955

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150706

Year of fee payment: 3

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