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

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

Info

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
Application number
JP2007305918A
Other languages
English (en)
Other versions
JP5038866B2 (ja
Inventor
Masayuki Abe
正幸 阿部
Tatsuaki Okamoto
龍明 岡本
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 JP2007305918A priority Critical patent/JP5038866B2/ja
Publication of JP2009128773A publication Critical patent/JP2009128773A/ja
Application granted granted Critical
Publication of JP5038866B2 publication Critical patent/JP5038866B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

本発明は、電気通信技術に関し、特に、公開鍵暗号通信技術に関する。
OAEP暗号(例えば、非特許文献1参照)に代表される、理想化されたハッシュ関数を用いた場合に適応的選択暗号攻撃に対して安全な、落とし戸付き一方向性置換関数を用いた公開鍵暗号の効率について説明する。なお、落とし戸付き一方向性置換関数とは、公開情報を用いた関数演算は容易であるが、秘密情報なしで逆関数の演算を行うことが困難な1対1関数を意味する。
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ビットのオーバーヘッドを持つ。
図29(a)は、従来のOAEP 3-roundパディング関数pdの処理を説明するための図であり、図29(b)は、その逆関数pd-1の処理を説明するための図である。
図29(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)として図29(b)に示すパディング関数の逆関数pd-1に入力し、図29(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を出力する。
なお、公開鍵暗号が安全となる、即ち識別不可能性を有する為には、kビットの乱数を用いることは不可避であり、その意味で、オーバーヘッドをkビットより小さくすることはできない。即ち、kビットがオーバーヘッドの最小値である。
更に、第二の従来法として、RSA-KEM/DEM方式が知られている(例えば、非特許文献4参照)。ここで、E, Dをそれぞれ共通鍵暗号方式の暗号関数・復号関数とする。この方式を用いて任意の長さの平文mを暗号化する手順は以下の通りである。
1. nビットの乱数rを生成する。
2. k=H(r), u=f(r)を計算する。
3. kをセッション鍵として、c=Ek(m)を計算する。
4. (u, c)を暗号文として出力する。
復号時には、まずr=f‐1(u)及びk=H(r)を計算し、次にkをセッション鍵としてcをm=Dk(c)のように復号して、平文mを得る。
上記RSA-KEM/DEM方式において、共通鍵暗号がlength-preserving、即ち、入力平文と出力暗号文との長さが等しいという性質を持つものであった場合、暗号文(u, c)の長さはn+|m|ビットになる。即ち、平文mの長さにかかわらず、nビットのオーバーヘッドが生じる。落とし戸付き一方向性置換関数fに標準的なRSA関数を用いた場合、n=1024となり、非常に大きなオーバーヘッドが暗号文に付加されることになる。
また、OAEP方式とRSA-KEM/DEM方式を発展させた方法として、非特許文献5で述べられている方式があるが、その方式においても、暗号文の長さはn+|m|ビットになる。
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.
以上のように、従来のOAEP 3-roundパディング方法では、n−2kビットよりも長い平文を暗号化することができない。また、従来のRSA-KEM/DEM方式や、OAEP方式とRSA-KEM/DEM方式を発展させた方法では、平文mの長さにかかわらず、nビットのオーバーヘッドが生じる。
このように従来は、短いオーバーヘッドで長い平文を暗号化できる、適応的選択暗号攻撃に対して安全な、落とし戸付き一方向性置換関数を用いた公開鍵暗号技術が存在しなかった。
本発明はこのような点に鑑みてなされたものであり、パディングに起因するオーバーヘッドのみで長い平文を暗号化できる、適応的選択暗号攻撃に対して安全な、落とし戸付き一方向性置換関数を用いた公開鍵暗号技術を提供することを目的とする。
本発明では、暗号化装置が、平文mを2つ以上のビット列にビット分割し、乱数rを含む情報によって定まる共通鍵wを生成し、共通鍵wを用い、共通鍵暗号方式によって、上記平文mから分割された1つのビット列を暗号化し、第1暗号文cを生成する。また、暗号化装置が、上記平文mから分割された残りのビット列と乱数rとを、1つ以上のハッシュ関数を含むパディング関数に入力し、ビット結合値yを生成する。ここで、当該パディング関数が具備する少なくとも一部のハッシュ関数には、それぞれ第1暗号文cを含む情報が入力される。さらに、暗号化装置が、ビット結合値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とを抽出する。ここで、パディング逆関数が具備する少なくとも一部のハッシュ関数には、それぞれ第1暗号文cを含む情報が入力される。さらに、復号装置は、乱数rを含む情報によって定まる共通鍵wを生成し、共通鍵wを用いて第1暗号文cを復号し、上記平文mから分割された1つのビット列を抽出する。そして、復号装置は、当該1つのビット列と、上述のパディング逆関数によって得られた1つ以上のビット列と、のビット結合値を生成し、当該ビット結合値を復号結果として出力する。
このように本発明では、平文mを2つ以上のビット列にビット分割する。そして、分割された1つのビット列を共通鍵暗号方式で暗号化して第1暗号文cを生成し、さらに、残りのビット列に乱数rをパディングし、それを落とし戸付き一方向性置換関数fによって暗号化して第2暗号文uを生成する。この第1暗号文c及び第2暗号文uのオーバーヘッドは、パディングによるオーバーヘッドのみである。
また、平文mのビット列を分割して2つの暗号文、即ち、第1暗号文c及び第2暗号文uを生成するため、本発明では、落とし戸付き一方向性置換関数fの入力域のビット長からオーバーヘッドを差し引いたビット長よりも長い平文を暗号化できる。
さらに、パディング関数及びパディング逆関数がそれぞれ具備する少なくとも一部のハッシュ関数に第1暗号文cを含む情報が入力されている。そのため、第1暗号文cをc'に改ざんするような選択暗号文攻撃を受けた場合に、第2暗号文uから逆パディング関数を用いて生成される共通鍵wに影響が及び、第1暗号文cが正しく復号されなくなるため、攻撃者は有益な情報を得ることができない。その結果、本発明では、選択暗号攻撃に対する安全性をもつ。
以上のように、本発明では、適応的選択暗号攻撃に対して安全な、落とし戸付き一方向性置換関数を用いた公開鍵暗号技術において、パディングに起因するオーバーヘッドのみで長い平文を暗号化できる。
以下、本発明を実施するための最良の形態を図面を参照して説明する。
〔基本方式〕
まず、本形態の基本方式を説明する。
本形態では、暗号化装置が暗号文を生成して復号装置に送信し、復号装置がその復号を行う。なお、本形態の暗号化装置及び復号装置は、それぞれ、公知のコンピュータに所定のプログラムが読み込まれることで構築される装置である。
まず、暗号化装置の第1ビット分割部が、平文mを2つ以上のビット列にビット分割する(ビット分割過程)。また、暗号化装置の共通鍵生成部が、乱数rを含む情報によって定まる共通鍵wを生成し(共通鍵生成過程)、暗号化装置の共通鍵暗号化部が、共通鍵wを用い、共通鍵暗号方式によって、上記平文mから分割された1つのビット列を暗号化し、第1暗号文cを生成する(共通鍵暗号化過程)。さらに、暗号化装置のパディング部が、上記平文mから分割された残りのビット列と乱数rとを、1つ以上のハッシュ関数を含むパディング関数に入力し、ビット結合値yを生成する(パディング過程)。なお、当該パディング関数がそれぞれ具備する少なくとも一部のハッシュ関数には、それぞれ第1暗号文cを含む情報が入力される。その後、暗号化装置の一方向性置換関数演算部が、ビット結合値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とを抽出する(逆パディング過程)。なお、当該パディング逆関数がそれぞれ具備する少なくとも一部のハッシュ関数には、それぞれ第1暗号文cを含む情報が入力される。そして、復号装置の共通鍵生成部が、乱数rを含む情報によって定まる共通鍵wを生成し(共通鍵生成過程)、復号装置の共通鍵復号部が、共通鍵wを用いて第1暗号文cを復号し、上記平文mから分割された1つのビット列を抽出する(共通鍵復号過程)。その後、復号装置の第3ビット結合部が、上記撹乱復元過程で抽出された上記1つ以上のビット列と、上記共通鍵復号過程で抽出された上記1つのビット列とのビット結合値を生成し、当該ビット結合値を復号結果として出力する(ビット結合過程)。
以下、この基本方式を実現する各実施形態を説明する。
〔第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を有している。
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と、共通鍵生成部13kと、共通鍵暗号化部13mと、第1ハッシュ関数演算部13eと、第1排他的論理和演算部13fと、第2ハッシュ関数演算部13gと、第2排他的論理和演算部13hと、第2ビット結合部13iと、一方向性置換関数演算部13jとを有する。
なお、第1ビット結合部13dと、共通鍵生成部13kと、共通鍵暗号化部13mと、第1ハッシュ関数演算部13eと、第1排他的論理和演算部13fと、第2ハッシュ関数演算部13gと、第2排他的論理和演算部13hと、第2ビット結合部13iとは、「パディング部」を構成する。また、記憶部11は、例えば、キャッシュメモリ、レジスタ、RAM、若しくは補助記憶装置、又はそれらを結合した記憶領域である。また、送信部12は、所定のプログラムが読み込まれたCPUの制御のもと駆動するLANカード、モデム等の通信装置である。さらに、制御部13a、乱数生成部13b、共通鍵生成部13k、共通鍵暗号化部13m、第1ビット分割部13c、第1ビット結合部13d、第1ハッシュ関数演算部13e、第1排他的論理和演算部13f、第2ハッシュ関数演算部13g、第2排他的論理和演算部13h、第2ビット結合部13i及び一方向性置換関数演算部13jは、所定のプログラムがCPUに読み込まれ、実行されることによって構築される演算部である。なお、当該プログラムには、第1暗号文cをハッシュ関数の入力値に含めるラウンドを示す情報Rcが書き込まれている。また、暗号化装置10は、制御部13aの制御の下、各処理を実行する。
図3に例示するように、本形態の復号装置20は、記憶部21と、受信部22と、制御部23aと、逆関数演算部23bと、第2ビット分割部23cと、第3ハッシュ関数演算部23dと、第3排他的論理和演算部23eと、第4ハッシュ関数演算部23fと、第4排他的論理和演算部23gと、第3ビット分割部23hと、共通鍵生成部23jと、共通鍵復号部23kと、第3ビット結合部23iとを有する。
なお、第2ビット分割部23cと、第3ハッシュ関数演算部23dと、第3排他的論理和演算部23eと、第4ハッシュ関数演算部23fと、第4排他的論理和演算部23gと、第3ビット分割部23hとは、「逆パディング部」を構成する。また、記憶部21は、例えば、キャッシュメモリ、レジスタ、RAM、若しくは補助記憶装置、又はそれらを結合した記憶領域である。また、受信部22は、所定のプログラムが読み込まれたCPUの制御のもと駆動するLANカード、モデム等の通信装置である。さらに、制御部23a、逆関数演算部23b、第2ビット分割部23c、第3ハッシュ関数演算部23d、第3排他的論理和演算部23e、第4ハッシュ関数演算部23f、第4排他的論理和演算部23g、第3ビット分割部23h、共通鍵生成部23j、共通鍵復号部23k及び第3ビット結合部23iは、所定のプログラムがCPUに読み込まれ、実行されることによって構築される演算部である。なお、当該プログラムには、第1暗号文cをハッシュ関数の入力値に含めるラウンドを示す情報Rcが書き込まれている。また、復号装置20は、制御部23aの制御の下、各処理を実行する。
<処理>
次に、本形態の処理について説明する。なお、以下では、撹乱過程のラウンド数が偶数の場合の処理、及び、奇数の場合の処理をそれぞれ別個に説明する。しかし、撹乱過程のラウンド数が偶数であるか奇数であるかに応じ、以下の各処理が選択的に実行される構成であってもよい。
[ラウンド数R(R≧4)が偶数である場合]
《暗号化処理》
図4は、ラウンド数R(R≧4)が偶数である場合における暗号化処理を説明するためのフローチャートである。以下、この図に従って説明を行う。
まず、暗号化装置10(図2)の記憶部11にpビット(p>n≧2)の平文mを格納する(平文格納過程/ステップS1)。なお、本形態のnは、暗号化装置10が使用する一方向性置換関数fの入力域のビット数を意味する。また、キュリティパラメータkの値には特に制限はなく、求められる安全性のレベルに応じて設定すればよい。一般的にはk>80とすることが望ましい。
次に、暗号化装置10の乱数生成部13bが、zビット(n>z≧k,kはセキュリティパラメータ)の乱数rを生成し、それを記憶部11に格納する(乱数格納過程/ステップS2)。
次に、暗号化装置10の第1ビット分割部13cが、記憶部11から平文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とを記憶部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と第3平文meとににビット分割する際の分割方法にも制限はなく、例えば、平文mの上位v‐zビットを第1平文m1とし、次のn‐vビットの第2平文m2とし、残りのp‐n+zビットを第3平文meとしてもよいし、平文mの上位p‐n+zビットを第3平文meとし、次のn‐vビットの第2平文m2とし、残りの上位v‐zビットを第1平文m1としとしてもよい。
次に、暗号化装置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を残りのビットとして結合してもよい。
次に、暗号化装置10の共通鍵生成部13kが、記憶部11からビット列t(0)=r|m1(「乱数rを含む情報」に相当)を読み込み、当該ビット列t(0)によって定まる共通鍵wを生成し、当該共通鍵wを記憶部11に格納する(共通鍵生成過程/ステップS5)。
本形態では、ビット列t(0)をハッシュ関数Gに作用させたハッシュ値
w=G(t(0)
を共通鍵wとする。なお、本形態のハッシュ関数Gは、
G:{0,1}v→{0,1}w’
の入出力域を持つ。なお、w’は共通鍵wの鍵長を示す。また、ハッシュ関数としては、例えば、SHA-1等を用いることができる(以下同様)。
次に、暗号化装置10の共通鍵暗号化部13mが、記憶部11から第3平文meと共通鍵wとを読み込み、当該共通鍵wを用い、共通鍵暗号方式によって当該第3平文meを暗号化した第1暗号文
c=Ew(me)
を生成し、当該第1暗号文cを記憶部11に格納する(共通鍵暗号化過程/ステップS6)。なお、Eは共通鍵暗号方式(例えばCamellia等)の暗号化関数を意味する。
次に、制御部13aがi=0と設定し、当該iをレジスタ(図示せず)に保持する(ステップS7)。
次に、暗号化装置10の第1ハッシュ関数演算部13eが、記憶部11から少なくともビット列t(i)を読み込み、当該ビット列t(i)を含む値にハッシュ関数H(2・i+1)を作用させてn‐vビットのハッシュ値h(2・i+1)を算出し、当該ハッシュ値h(2・i+1)を記憶部11に格納する(第1ハッシュ関数演算過程/ステップS8)。
具体的には、2・i+1=Rc(第1暗号文cをハッシュ関数の入力値に含めるラウンド)であれば、第1ハッシュ関数演算部13eは、記憶部11からビット列t(i)と第1暗号文cとを読み込み、当該ビット列t(i)と第1暗号文cとのビット結合値t(i)|cにハッシュ関数
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のビット長である。
一方、2・i+1≠Rcであれば、第1ハッシュ関数演算部13eは、記憶部11からビット列t(i)を読み込み、当該ビット列t(i)にハッシュ関数
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に格納する。
次に、暗号化装置10の第1排他的論理和演算部13fが、記憶部11からビット列s(i)とハッシュ値h(2・i+1)とを読み込み、これらの排他的論理和演算
s(i+1)=s(i)(+) h(2・i+1)
を行い、その演算結果であるビット列s(i+1)を記憶部11に格納する(第1排他的論理和演算過程/ステップS9)。
次に、暗号化装置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ハッシュ関数演算過程/ステップS10)。
具体的には、2・i+2=Rcであれば、第2ハッシュ関数演算部13gは、記憶部11からビット列s(i+1)と第1暗号文cとを読み込み、当該ビット列s(i+1)と第1暗号文cとのビット結合値s(i+1)|cにハッシュ関数
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に格納する。
一方、2・i+2=Rcであれば、第2ハッシュ関数演算部13gが、記憶部11からビット列s(i+1)を読み込み、当該ビット列s(i+1)にハッシュ関数
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に格納する。
次に、暗号化装置10の第2排他的論理和演算部13hが、記憶部11からビット列t(i)とハッシュ値h(2・i+2)とを読み込み、これらの排他的論理和演算
t(i+1) =t(i)(+) h(2・i+2)
を行い、その演算結果であるビット列t(i+1)を記憶部11に格納する(第2排他的論理和演算過程/ステップS11)。
次に、制御部13aが、i=(R/2)‐1を満たすか否かを判定する(ステップS12)。ここで、i=(R/2)‐1が満たされなかった場合、制御部13aはi+1を新たなiとしてレジスタに格納して(ステップS13)、処理をステップS8に戻す。一方、i=(R/2)‐1が満たされた場合、暗号化装置10の第2ビット結合部13iが、記憶部11からビット列t(R/2)とビット列s(R/2)とを読み込み、それらを含むビット結合値
y=t(R/2)|s(R/2)
を生成し、当該ビット結合値yを記憶部11に格納する(第2ビット結合過程/ステップS14)。なお、ステップS7〜S14の処理が「パディング過程」に相当し、これらの処理によって、入力値ビット列t(0)とs(0)とに施された演算を示す関数が「パディング関数」に相当する。
次に、暗号化装置10の一方向性置換関数演算部13jが、記憶部11からビット結合値yを読み込み、当該ビット結合値yに対して落とし戸付き一方向性置換関数fを作用させた暗号文
u=f(y)
を算出し、当該暗号文uを暗号化装置の記憶部に格納する(一方向性置換関数演算過程/ステップS15)。なお、落とし戸付き一方向性置換関数fとしては、例えば、因数分解問題の求解困難性に安全性の根拠をおくRSA暗号の暗号化関数や、離散対数問題の求解困難性に安全性の根拠をおくElGamal暗号の暗号化関数等を例示できる(例えば、『岡本龍明,山本博資著、「現代暗号」、産業図書出版、ISBN4-7828-5353-X(参考文献1)』等参照)。
その後、暗号化装置10の送信部12が、記憶部11から読み込まれた第1暗号文cと第2暗号文uとを復号装置20に送信する(暗号文送信過程/ステップS16)。
《復号処理》
図5は、ラウンド数R(R≧4)が偶数である場合における復号処理を説明するためのフローチャートである。以下、この図に従って説明を行う。
上述のように送信された第1暗号文cと第2暗号文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)を記憶部21に格納する(第3ハッシュ関数演算過程/ステップS25)。
具体的には、2・i+2=Rcであれば、第3ハッシュ関数演算部23dは、記憶部21からビット列s(i+1)と第1暗号文cとを読み込み、読み込み、当該ビット列s(i+1)と第1暗号文cとのビット結合値s(i+1)|cにハッシュ関数に
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とで同一の方法をとる必要がある。
一方、2・i+2≠Rcであれば、第3ハッシュ関数演算部23dは、記憶部21からビット列s(i+1)を読み込み、読み込み、当該ビット列s(i+1)
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のものと同一である。
次に、復号装置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)を記憶部21に格納する(第4ハッシュ関数演算過程/ステップS27)。
具体的には、2・i+2=Rcであれば、第4ハッシュ関数演算部23fは、記憶部21からビット列t(i)と第1暗号文cとを読み込み、当該ビット列t(i)と第1暗号文cとのビット結合値t(i)|cにハッシュ関数
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に格納する。
一方、2・i+2≠Rcであれば、第4ハッシュ関数演算部23fは、記憶部21からビット列t(i)を読み込み、当該ビット列t(i)にハッシュ関数
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に格納する。
次に、復号装置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の共通鍵生成部23jが、記憶部21からビット列t(0)=r|m1(「乱数rを含む情報」に相当)を読み込み、当該ビット列t(0)によって定まる共通鍵wを生成し、当該共通鍵wを記憶部21に格納する(共通鍵生成過程/ステップS32)。
本形態では、ビット列t(0)をハッシュ関数Gに作用させたハッシュ値
w=G(t(0)
を共通鍵wとする。
次に、復号装置20の共通鍵復号部23kが、記憶部21から第1暗号文cと共通鍵wとを読み込み、当該共通鍵wを用い、当該第1暗号文cを復号して第3平文
me=Dw(c)
を抽出し、当該第3平文meを記憶部21に格納する(共通鍵復号過程/ステップS33)。なお、Dは暗号化装置10で使用された暗号化関数Eに対応する復号関数を意味する。
次に、復号装置20の第3ビット結合部23iが、記憶部21から、第1平文m1とビット列s(0)と第3平文meとを読み込み、これらのビット結合値
m=m1 | s(0) (=m2) | me
を生成し、当該ビット結合値mを復号結果として出力する(第3ビット結合過程/ステップS34)。なお、ここでのビット結合方法は、ステップS3でのビット分割方法に対応するものとする。
[ラウンド数Rが奇数である場合]
《暗号化処理》
図6は、ラウンド数R(R≧4)が奇数である場合における暗号化処理を説明するためのフローチャートである。以下、この図に従って説明を行う。なお、ラウンド数Rが偶数である場合の処理と共通する事項については説明を省略する。
まず、暗号化装置10(図2)が、ラウンド数Rが偶数である場合の処理で説明したステップS1〜S11の処理を実行する。
次に、暗号化装置10の制御部13aが、i=(R‐1)/2を満たすか否かを判定する(ステップS41)。ここで、i=(R‐1)/2が満たされなかった場合、制御部13aはi+1を新たなiとしてレジスタに格納して(ステップS42)、処理をステップS8に戻す。一方、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)を記憶部11に格納する(第1ハッシュ関数演算過程/ステップS44)。この処理は、ステップS8と同じである。
次に、暗号化装置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を暗号化装置の記憶部に格納し(一方向性置換関数演算過程/ステップS15)、暗号化装置10の送信部12が、記憶部11から読み込まれた第1暗号文cと第2暗号文uとを復号装置20に送信する(暗号文送信過程/ステップS16)。
《復号処理》
図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)を記憶部21に格納する(第4ハッシュ関数演算過程/ステップS52)。
具体的には、2・i+2=Rcであれば、第4ハッシュ関数演算部23fは、記憶部21からビット列t(i)と第1暗号文cとを読み込み、当該ビット列t(i)と第1暗号文cとのビット結合値t(i)|cにハッシュ関数
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に格納する。
一方、2・i+2≠Rcであれば、第4ハッシュ関数演算部23fは、記憶部21からビット列t(i)を読み込み、当該ビット列t(i)にハッシュ関数
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に格納する。
次に、復号装置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〜S34の処理を実行し、復号結果mを出力する。
<共通鍵生成過程〜撹乱過程・撹乱復元過程〜共通鍵復号過程の具体例>
次に、ラウンド数R=4, 5の場合の「共通鍵生成過程〜撹乱過程」及び「撹乱復元過程〜共通鍵復号過程」の処理を例示する。
[ラウンド数R=4である場合]
図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とが出力される。
図8(b)は、ラウンド数R=4, Rc=3の場合における、第1実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。この例では、
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とが出力される。
図9(a)は、ラウンド数R=4, Rc=2, 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)|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とが出力される。
図9(b)は、ラウンド数R=4, Rc=2, 3の場合における、第1実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。この例では、
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とが出力される。
図10(a)は、ラウンド数R=4, Rc=1, 2, 3, 4の場合における、第1実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。この例では、
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とが出力される。
図10(b)は、ラウンド数R=4, Rc=1, 2, 3, 4の場合における、第1実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。この例では、
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とが出力される。
[ラウンド数R=5である場合]
図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とが出力される。
図11(b)は、ラウンド数R=5, Rc=3の場合における、第1実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。この例では、
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とが出力される。
図12(a)は、ラウンド数R=5, Rc=1, 2, 3, 4, 5の場合における、第1実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。この例では、
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とが出力される。
図12(b)は、ラウンド数R=5, Rc=1, 2, 3, 4, 5の場合における、第1実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。この例では、
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とが出力される。
<第1実施形態の特徴>
本形態の暗号化装置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ビットとなり、オーバーヘッドを最小化できる。
また、本形態では、平文mのビット列を分割し、分割されたビット列に対し、それぞれ共通鍵方式の第1暗号文cと、落とし戸付き一方向性置換関数fを用いる第2暗号文uとを生成する。そのため、落とし戸付き一方向性置換関数fの入力域のビット長nからオーバーヘッドzを差し引いたビット長n‐zよりも長い平文mを暗号化できる。
また、本形態では、撹乱過程及び撹乱復元過程でそれぞれ算出される、少なくとも一部の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)とした。そのため、第1暗号文cをc'に改ざんするような選択暗号文攻撃を受けた場合に、復号時に第2暗号文uから生成される共通鍵wに影響が及び、第1暗号文cが正しく復号されなくなるため、攻撃者は有益な情報を得ることができない。その結果、選択暗号攻撃に対する安全性を確保できる。
なお、安全性の観点から、少なくとも内側のラウンド(最初でも最後でもないラウンド)において、第1暗号文cを含む値をハッシュ関数の入力値とすることが望ましい。即ち、ラウンド数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)を作用させたハッシュ値であることが望ましい。また、安全性の観点からより好ましくは、全てのラウンドにおいて、第1暗号文cを含む値をハッシュ関数の入力値とすることが望ましい。
なお、本発明は上述の実施形態に限定されるわけではなく、暗号化装置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が所定値以外の値を示す場合には、復号装置の偽装復号結果生成部が、pビットの乱数を生成し、当該乱数を復号結果として出力する点である。
以下では、第1実施形態との相違点を中心に説明し、第1実施形態と共通する事項については説明を省略する。
<全体構成>
第2実施形態の暗号通信システムは、第1実施形態の暗号化装置10を暗号化装置110に置換し、復号装置20を復号装置120に置換した構成となる。
<ハードウェア構成>
第1実施形態と同様であるため説明を省略する。
<ハードウェアとソフトウェアとの協働>
第2実施形態の暗号化装置110及び復号装置120は、それぞれ、前述のようなハードウェアに所定のプログラムが読み込まれ、CPUがそれを実行することによって構築される。以下、このように構築される各装置の機能構成を説明する。
図13は、第2実施形態の暗号化装置110の機能構成を例示したブロック図である。また、図14は、第2実施形態の復号装置120の機能構成を例示したブロック図である。なお、図13及び図14において第1実施形態と共通する部分には、図2及び図3と同じ符号を付している。
図13に示すように、第2実施形態の暗号化装置110は、第1実施形態の暗号化装置10の第2ビット結合部13iを第2ビット結合部113iに置換した構成である。。なお、第2ビット結合部113iは、例えば、所定のプログラムがCPUに読み込まれ、実行されることによって構築される演算部である。また、暗号化装置110は、制御部13aの制御の下、各処理を実行する。
また、図14に示すように、第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が偶数である場合と奇数である場合を同時に説明する。
《暗号化処理》
図15(a)は、第2実施形態の暗号化処理を説明するためのフローチャートである。
まず、暗号化装置110(図13)において、ラウンド数Rが偶数である場合にはステップS1〜S13の処理を行い、ラウンド数Rが奇数である場合にはステップS1〜S11,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実施形態と同様に、ステップS15,16の処理を実行し、第1暗号文cと第2暗号文uを復号装置120に送信する。
《復号処理》
図15(b)は、第2実施形態の復号処理を説明するためのフローチャートである。
まず、復号装置120(図14)において、第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が、pビットの乱数を生成し、当該乱数を復号結果m’として出力する(偽装復号結果生成過程/ステップS123)。一方、b=b’であると判定された場合、第1実施形態と同様、ラウンド数Rが偶数の場合には、ステップS24〜S34の処理が実行され、ラウンド数Rが奇数の場合には、ステップS51〜S54,S25〜S34の処理が実行され、復号結果mが出力される。
<第2実施形態の特徴>
本形態における第1暗号文c及び第2暗号文uのオーバーヘッドは、第2暗号文uを生成する過程でのパディング及び付加情報bによるオーバーヘッドz+|b|ビット(z≧k)のみである。特に、z=k,v=3k, |b|とした場合には、オーバーヘッドがk+1ビットとなり、オーバーヘッドを最小化できる。
また、本形態でも、平文mのビット列を分割し、分割されたビット列に対し、それぞれ共通鍵方式の第1暗号文cと、落とし戸付き一方向性置換関数fを用いる第2暗号文uとを生成する。そのため、落とし戸付き一方向性置換関数fの入力域のビット長nからオーバーヘッドzを差し引いたビット長n‐zよりも長い平文mを暗号化できる。
また、本形態では、撹乱過程及び撹乱復元過程でそれぞれ算出される、少なくとも一部の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)とした。そのため、第1暗号文cをc'に改ざんするような選択暗号文攻撃を受けた場合に、復号時に第2暗号文uから生成される共通鍵wに影響が及び、第1暗号文cが正しく復号されなくなるため、攻撃者は有益な情報を得ることができない。その結果、選択暗号攻撃に対する安全性を確保できる。
また、本形態では、ビット結合値yが付加情報bを具備し、復号装置120が当該付加情報bを用いて暗号文uの正当性を検証し、暗号文uが正当である場合には第1実施形態と同様に復号処理を行ってn‐zビットの復号結果を出力し、暗号文uが不当である場合にはpビットの乱数を復号結果として出力することとした。これにより、暗号文uが不当である場合に復号装置120が復号処理を行うことを防止できる。さらに、暗号文uが不当である場合に正規の復号結果と同じビット数pの乱数を復号結果として出力することで、選択暗号文攻撃に有効な情報が攻撃者に漏えいすることを防止できる。
なお、本形態では、落とし戸付き一方向性置換関数fが、0以上N未満(Nは自然数)の値を入力とする関数であり、Nのビット長を|N|とし、付加情報bのビット長を|b|とした場合にn=|N|‐|b|を満たし、付加情報bは、0を示すビット又はビット列であり、第2ビット結合過程で生成されるビット結合値yが、付加情報bが先頭にビット結合された値である場合について説明した。しかし、本発明はこれに限定されず、落とし戸付き一方向性置換関数fとして、入力域がnビットのElGamal暗号の暗号化関数等を用いた場合に本形態を適用してもよい。また、付加情報b, b’が0以外の値を示すものであってもよい。
また、本形態でも安全性の観点から、少なくとも内側のラウンド(最初でも最後でもないラウンド)において、第1暗号文cを含む値をハッシュ関数の入力値とすることが望ましい。さらに、暗号化装置110と復号装置120との間で整合が採れるのであれば、ビット結合される何れかの情報にさらに他の情報をビット結合してもよい。
〔第3実施形態〕
次に、本発明の第3実施形態について説明する。
第3実施形態は、第2実施形態の変形例であり、(1)付加情報bを少なくとも一部のハッシュ関数の入力に含める点、(2)復号装置において付加情報bの検証を行って暗号文の正当性を検証し、暗号文が不当である場合に乱数を復号結果として出力する処理を行わない点が第2実施形態と相違する。以下では、第1,2実施形態との相違点を中心に説明し、これらと共通する事項については説明を省略する。
<全体構成>
第3実施形態の暗号通信システムは、第1実施形態の暗号化装置10を暗号化装置210に置換し、復号装置20を復号装置220に置換した構成となる。
<ハードウェア構成>
第1実施形態と同様であるため説明を省略する。
<ハードウェアとソフトウェアとの協働>
第2実施形態の暗号化装置210及び復号装置220は、それぞれ、前述のようなハードウェアに所定のプログラムが読み込まれ、CPUがそれを実行することによって構築される。以下、このように構築される各装置の機能構成を説明する。
図16は、第3実施形態の暗号化装置210の機能構成を例示したブロック図である。また、図17は、第3実施形態の復号装置220の機能構成を例示したブロック図である。なお、図16及び図17において第1,2実施形態と共通する部分には、図2,3,14,15と同じ符号を付している。
図16に示すように、第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の制御の下、各処理を実行する。
また、図17に示すように、第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の制御の下、各処理を実行する。
また、第3実施形態では、第1暗号文cをハッシュ関数の入力値に含めるラウンドを示す情報Rcに加え、付加情報bをハッシュ関数の入力値に含めるラウンドを示す情報Rbを設定しておく。
また、本形態では、少なくとも一部のiに対応するハッシュ値h(2・i+1)及び/又はハッシュ値h(2・i+2)が、
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)
の入出力域を持つ。
なお、上述したように付加情報bのビット長|b|に制限はないが、オーバーヘッドをできるだけ小さくするという観点から|b|=1であることが望ましい。
また、各ハッシュ関数H(2・i+1)を式(1)(3)(5)いずれの関数にするか、及び、各ハッシュ関数H(2・i+1)を式(2)(4)(6)いずれの関数にするかについても特に制限はない。しかし、安全性の観点からは、ラウンド数Rが偶数である場合には、少なくとも何れかのi≧1に対応するハッシュ関数H(2・i+1)を式(1)又は(3)の関数とするか、或いは、少なくとも何れかのi≦(R/2)‐2に対応するハッシュ関数H(2・i+2)を式(2)又は(4)の関数とすることが望ましい。同様な観点から、ラウンド数Rが偶数である場合には、少なくとも何れかのiに対応するハッシュ関数H(2・i+2)を式(2)又は(4)の関数とすることが望ましい。すなわち、最初のラウンド及び最後のラウンド以外のハッシュ関数のうち、少なくとも一部を式(1)(2)(3)(4)のいずれかにすることが望ましい。また、安全性の観点からより好ましくは、全てのハッシュ関数を式1)(2)(3)(4)のいずれかにすることが望ましい。
<処理>
《暗号化処理》
第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実施形態と同様である点である。各ラウンドのハッシュ値は以下のように場合分けされる。
[2・i+1=Rc=Rbであるラウンド]
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実施形態と同様である点である。各ラウンドのハッシュ値の場合分けは、上述の暗号化処理の場合と同一である。
<共通鍵生成過程〜撹乱過程・撹乱復元過程〜共通鍵復号過程の具体例>
次に、本形態の共通鍵生成過程〜撹乱過程・撹乱復元過程〜共通鍵復号過程の具体例を説明する。
[ラウンド数R=4である場合]
図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とが出力される。
図18(b)は、第3実施形態のラウンド数R=4, Rb=3, Rc=3の場合における、第3実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。この例では、
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とが出力される。
図19(a)は、第3実施形態のR=4, Rb=2, 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)|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とが出力される。
図19(b)は、第3実施形態のラウンド数R=4, Rb=2, Rc=3の場合における、第3実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。この例では、
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とが出力される。
図20(a)は、第3実施形態のR=4, Rb=1,2,3,4, Rc=1,2,3,4の場合における、第3実施形態の共通鍵生成過程〜撹乱過程の一例を説明するための図である。この例では、
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とが出力される。
図20(b)は、第3実施形態のラウンド数R=4, Rb=1,2,3,4, Rc=1,2,3,4の場合における、第3実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。この例では、
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とが出力される。
[ラウンド数R=5である場合]
図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とが出力される。
図21(b)は、ラウンド数R=5, Rb=3, Rc=3の場合における、第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)(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とが出力される。
図22(a)は、ラウンド数R=5, Rb=2,4, Rc=3,4の場合における、第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)|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とが出力される。
図22(b)は、ラウンド数R=5, Rb=2,4, Rc=3,4の場合における、第3実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。この例では、
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とが出力される。
図23(a)は、ラウンド数R=5, Rb=1,2,3,4,5, Rc=1,2,3,4,5の場合における、第3実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。この例では、
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とが出力される。
図23(b)は、ラウンド数R=5, Rb=1,2,3,4,5, Rc=1,2,3,4,5の場合における、第3実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。この例では、
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とが出力される。
<第3実施形態の特徴>
本形態でも、第1,2実施形態で説明したのと同様、短いオーバーヘッドで長い平文を暗号化できる。また、本形態では、ビット結合値yが付加情報bを具備し、この付加情報bを少なくとも一部のハッシュ関数の入力値に含めることとしたため、安全性がより向上する。さらに、そのために第2実施形態のように復号時に付加情報bの値を検証したり、乱数を復号結果として生成する必要もない。
また、暗号化装置210と復号装置220との間で整合が採れるのであれば、ビット結合される何れかの情報にさらに他の情報をビット結合してもよい。
〔第4実施形態〕
次に、本発明の第4実施形態について説明する。
本形態は、第1実施形態の変形例であり、従来のOAEP或いはOAEP 3-roundを含むOAEPの変形例を用い、本発明を構成した形態である。以下では、第1実施形態との相違点を中心に説明し、第1実施形態と共通する事項については説明を省略する。
<全体構成>
第4実施形態の暗号通信システムは、第1実施形態の暗号化装置10を暗号化装置310に置換し、復号装置20を復号装置320に置換した構成となる。
<ハードウェア構成>
第1実施形態と同様であるため説明を省略する。
<ハードウェアとソフトウェアとの協働>
第4実施形態の暗号化装置310及び復号装置320は、それぞれ、前述のようなハードウェアに所定のプログラムが読み込まれ、CPUがそれを実行することによって構築される。以下、このように構築される各装置の機能構成を説明する。
図24は、第2実施形態の暗号化装置310の機能構成を例示したブロック図である。また、図25は、第2実施形態の復号装置320の機能構成を例示したブロック図である。なお、図24及び図25において第1実施形態と共通する部分には、図2及び図3と同じ符号を付している。
図24に示すように、第4実施形態の暗号化装置310は、第1実施形態の暗号化装置10の第1ビット分割部13cを第1ビット分割部313cに置換し、第1ビット結合部13dを取り除いた構成である。なお、第1ビット分割部313cは、例えば、所定のプログラムがCPUに読み込まれ、実行されることによって構築される演算部である。また、暗号化装置310は、制御部13aの制御の下、各処理を実行する。
また、図25に示すように、第4実施形態の復号装置320は、第1実施形態の復号装置20の第3ビット結合部23iを第3ビット結合部323iに置換し、第3ビット分割部23hを取り除いた構成である。なお、第3ビット結合部323iは、例えば、所定のプログラムがCPUに読み込まれ、実行されることによって構築される演算部である。また、復号装置320は、制御部23aの制御の下、各処理を実行する。
<処理>
次に、本形態の処理について説明する。以下では、第1実施形態の処理との相違点のみを説明する。また、本形態では、ラウンド数Rが偶数である場合と奇数である場合を同時に説明する。
《暗号化処理》
図26(a)は、第2実施形態の暗号化処理を説明するためのフローチャートである。
まず、暗号化装置310(図24)の記憶部11にpビット(p>n≧2)の平文mを格納する(平文格納過程/ステップS1)。
次に、暗号化装置310の乱数生成部13がvビット(n>v≧2k,kはセキュリティパラメータ)の乱数rを生成し、これをビット列t(0)として記憶部11に格納する(乱数格納過程/ステップS202)。なお、乱数r のビット数vはn>v≧2kであればよいが、オーバーヘッドを最小化するという観点からはv=2kであることが望ましい。
次に、暗号化装置310の第1ビット分割部313cが、記憶部11から平文mを読み込み、当該平文mを、n‐vビットの第1平文m1と、p‐n+vビットの第2平文meとにビット分割し、当該第1平文m1であるビット列s(0)と、第2平文meとを記憶部11に格納する(第1ビット分割過程/ステップS203)。
次に、暗号化装置310の共通鍵生成部13kが、記憶部11から乱数rを含む情報を読み込み、当該情報によって定まる共通鍵wを生成し、当該共通鍵wを記憶部11に格納する(共通鍵生成過程/ステップS204)。本形態では、第1実施形態と同じハッシュ関数Gを用い、
w=G(t(0))
の演算によって共通鍵wを生成する。
その後、ラウンド数Rが偶数であれば、第1実施形態のステップS6〜S16の処理が実行され、ラウンド数Rが奇数であれば、第1実施形態のステップS6〜S11,S41〜S46,S15,S16の処理が実行され、第1暗号文cと第2暗号文uとが復号装置320に送信される。
《復号処理》
図26(b)は、第4実施形態の復号処理を説明するためのフローチャートである。
まず、復号装置320(図25)において、ラウンド数Rが偶数であれば、第1実施形態のステップS21〜S30の処理が実行され、ラウンド数Rが奇数であれば、第1実施形態のステップS21,S22,S50〜S54,S25〜S30の処理が実行される。
次に、復号装置320の共通鍵生成部23jが、記憶部21からビット列t(0)を含む情報を読み込み、当該情報によって定まる共通鍵wを生成し、当該共通鍵wを記憶部21に格納する(共通鍵生成過程/ステップS232)。本形態では、第1実施形態と同じハッシュ関数Gを用い、
w=G(t(0))
の演算によって共通鍵wを生成する。
次に、復号装置320の共通鍵復号部23kが、記憶部21から第1暗号文cと共通鍵wとを読み込み、当該共通鍵wを用い、当該第1暗号文cを復号して第2平文
me=Dw(c)
を抽出し、当該第2平文meを記憶部21に格納する(共通鍵復号過程/ステップS33)。
次に、復号装置320の第3ビット結合部323iが、記憶部21から、ビット列s(0)と第2平文meとを読み込み、これらのビット結合値
s(0)|me
を生成し、当該ビット結合値を復号結果mとして出力する(第3ビット結合過程/ステップS234)。
<共通鍵生成過程〜撹乱過程・撹乱復元過程〜共通鍵復号過程の具体例>
次に、ラウンド数R=3 4の場合の「共通鍵生成過程〜撹乱過程」及び「撹乱復元過程〜共通鍵復号過程」の処理を例示する。
[ラウンド数R=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とが出力される。
図27(b)は、ラウンド数R=4, Rc=3の場合における、第4実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。この例では、
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とが出力される。
[ラウンド数R=3である場合]
図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とが出力される。
図28(b)は、ラウンド数R=3, Rc=3の場合における、第4実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。この例では、
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とが出力される。
<第4実施形態の特徴>
本形態の暗号化装置310で生成される第1暗号文c及び第2暗号文uのオーバーヘッドは、第2暗号文uを生成する過程でのパディングによるオーバーヘッドvビット(v≧2k)のみである。特に、v=2kとした場合には、オーバーヘッドが2kビットとなり、オーバーヘッドを最小化できる。
また、本形態では、平文mのビット列を分割し、分割されたビット列に対し、それぞれ共通鍵方式の第1暗号文cと、落とし戸付き一方向性置換関数fを用いる第2暗号文uとを生成する。そのため、落とし戸付き一方向性置換関数fの入力域のビット長nからオーバーヘッドvを差し引いたビット長n‐vよりも長い平文mを暗号化できる。
また、本形態でも、撹乱過程及び撹乱復元過程でそれぞれ算出される、少なくとも一部の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)とした。そのため、第1暗号文cをc'に改ざんするような選択暗号文攻撃を受けた場合に、復号時に第2暗号文uから生成される共通鍵wに影響が及び、第1暗号文cが正しく復号されなくなるため、攻撃者は有益な情報を得ることができない。その結果、選択暗号攻撃に対する安全性を確保できる。
なお、安全性の観点から、少なくとも内側のラウンド(最初でも最後でもないラウンド)において、第1暗号文cを含む値をハッシュ関数の入力値とすることが望ましい。また、安全性の観点からより好ましくは、全てのラウンドにおいて、第1暗号文cを含む値をハッシュ関数の入力値とすることが望ましい。
また、本形態に、第2実施形態や第3実施形態で説明した付加情報bを導入してもよい。その導入方法は、第2実施形態や第3実施形態と同様である。
また、暗号化装置310と復号装置320との間で整合が採れるのであれば、ビット結合される何れかの情報にさらに他の情報をビット結合してもよい。
〔その他の変形等〕
その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。例えば、上述した以外のOAEPの変形例を用いて本発明を構成してもよい。また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、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(b)は、この暗号化装置のハードウェア構成を例示したブロック図である。 図2は、第1実施形態の暗号化装置の機能構成を例示したブロック図である。 図3は、第1実施形態の復号装置の機能構成を例示したブロック図である。 図4は、ラウンド数R(R≧4)が偶数である場合における暗号化処理を説明するためのフローチャートである。 図5は、ラウンド数R(R≧4)が偶数である場合における復号処理を説明するためのフローチャートである。 図6は、ラウンド数R(R≧4)が奇数である場合における暗号化処理を説明するためのフローチャートである。 図7は、ラウンド数Rが奇数である場合における復号処理を説明するためのフローチャートである。 図8(a)は、ラウンド数R=4, Rc=3の場合における、第1実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。図8(b)は、ラウンド数R=4, Rc=3の場合における、第1実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。 図9(a)は、ラウンド数R=4, Rc=2, 3の場合における、第1実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。図9(b)は、ラウンド数R=4, Rc=2, 3の場合における、第1実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。 図10(a)は、ラウンド数R=4, Rc=1, 2, 3, 4の場合における、第1実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。図10(b)は、ラウンド数R=4, Rc=1, 2, 3, 4の場合における、第1実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。 図11(a)は、ラウンド数R=5, Rc=3の場合における、第1実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。図11(b)は、ラウンド数R=5, Rc=3の場合における、第1実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。 図12(a)は、ラウンド数R=5, Rc=1, 2, 3, 4, 5の場合における、第1実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。図12(b)は、ラウンド数R=5, Rc=1, 2, 3, 4, 5の場合における、第1実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。 図13は、第2実施形態の暗号化装置の機能構成を例示したブロック図である。 図14は、第2実施形態の復号装置の機能構成を例示したブロック図である。 図15(a)は、第2実施形態の暗号化処理を説明するためのフローチャートである。図15(b)は、第2実施形態の復号処理を説明するためのフローチャートである。 図16は、第3実施形態の暗号化装置の機能構成を例示したブロック図である。 図17は、第3実施形態の復号装置の機能構成を例示したブロック図である。 図18(a)は、第3実施形態のR=4, Rb=3, Rc=3の場合における、第3実施形態の共通鍵生成過程〜撹乱過程の一例を説明するための図である。図18(b)は、第3実施形態のラウンド数R=4, Rb=3, Rc=3の場合における、第3実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。 図19(a)は、第3実施形態のR=4, Rb=2, Rc=3の場合における、第3実施形態の共通鍵生成過程〜撹乱過程の一例を説明するための図である。図19(b)は、第3実施形態のラウンド数R=4, Rb=2, Rc=3の場合における、第3実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。 図20(a)は、第3実施形態のR=4, Rb=1,2,3,4, Rc=1,2,3,4の場合における、第3実施形態の共通鍵生成過程〜撹乱過程の一例を説明するための図である。図20(b)は、第3実施形態のラウンド数R=4, Rb=1,2,3,4, Rc=1,2,3,4の場合における、第3実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。 図21(a)は、ラウンド数R=5, Rb=3, Rc=3の場合における、第3実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。図21(b)は、ラウンド数R=5, Rb=3, Rc=3の場合における、第3実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。 図22(a)は、ラウンド数R=5, Rb=2,4, Rc=3,4の場合における、第3実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。図22(b)は、ラウンド数R=5, Rb=2,4, Rc=3,4の場合における、第3実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。 図23(a)は、ラウンド数R=5, Rb=1,2,3,4,5, Rc=1,2,3,4,5の場合における、第3実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。図23(b)は、ラウンド数R=5, Rb=1,2,3,4,5, Rc=1,2,3,4,5の場合における、第3実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。 図24は、第2実施形態の暗号化装置の機能構成を例示したブロック図である。 図25は、第2実施形態の復号装置の機能構成を例示したブロック図である。 図26(a)は、第2実施形態の暗号化処理を説明するためのフローチャートである。図26(b)は、第4実施形態の復号処理を説明するためのフローチャートである。 図27(a)は、ラウンド数R=4, Rc=3の場合における、第4実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。図27(b)は、ラウンド数R=4, Rc=3の場合における、第4実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。 図28(a)は、ラウンド数R=3, Rc=3の場合における、第4実施形態の共通鍵生成過程〜撹乱過程を説明するための図である。図28(b)は、ラウンド数R=3, Rc=3の場合における、第4実施形態の撹乱復元過程〜共通鍵復号過程を説明するための図である。 図29(a)は、従来のOAEP 3-roundパディング関数pdの処理を説明するための図であり、図29(b)は、その逆関数pd-1の処理を説明するための図である。
符号の説明
10,110,210,310 暗号化装置
20,120,220,320 復号装置

Claims (16)

  1. 暗号化装置の第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を含む情報が入力される、
    ことを特徴とする暗号通信方法。
  2. (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)である、
    ことを特徴とする暗号通信方法。
  3. (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)である、
    ことを特徴とする暗号通信方法。
  4. 請求項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)を作用させたハッシュ値である、
    ことを特徴とする暗号通信方法。
  5. 請求項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ビットの乱数を生成し、当該乱数を復号結果として出力する偽装復号結果生成過程をさらに有する、
    ことを特徴とする暗号通信方法。
  6. 請求項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)である、
    ことを特徴とする暗号通信方法。
  7. 請求項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)を作用させたハッシュ値である、
    ことを特徴とする暗号通信方法。
  8. 請求項5から7の何れかに記載の暗号通信方法であって、
    上記落とし戸付き一方向性置換関数fは、0以上N未満(Nは自然数)の値を入力とする関数であり、
    nは、Nのビット長を|N|とし、付加情報bのビット長を|b|とした場合にn=|N|‐|b|を満たし、
    上記付加情報bは、0を示すビット又はビット列であり、
    上記第2ビット結合過程で生成される上記ビット結合値yは、付加情報bが先頭にビット結合された値である、
    ことを特徴とする暗号通信方法。
  9. 平文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を含む情報が入力される、
    ことを特徴とする暗号化装置。
  10. 請求項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を含む情報が入力される、
    ことを特徴とする復号装置。
  11. 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)である、
    ことを特徴とする暗号化装置。
  12. 請求項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)である、
    ことを特徴とする復号装置。
  13. 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)である、
    ことを特徴とする暗号化装置。
  14. 請求項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)である、
    ことを特徴とする復号装置。
  15. 請求項9,11又は13に記載の暗号化装置としてコンピュータを機能させるためのプログラム。
  16. 請求項10,12又は14に記載の復号装置としてコンピュータを機能させるためのプログラム。
JP2007305918A 2007-11-27 2007-11-27 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム Active JP5038866B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101978684B1 (ko) * 2017-08-31 2019-05-15 동국대학교 산학협력단 재생 공격 방지가 가능한 부호 기반 암호화 장치 및 방법
KR101942030B1 (ko) * 2018-11-13 2019-01-24 동국대학교 산학협력단 메시지에 대한 무결성 검증이 지원되는 부호 기반의 암호화가 가능한 전자 장치 및 그 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
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