(57)【特許請求の範囲】
【請求項１】
複数の平文ブロックで構成される平文ブロック列、及び第１暗号鍵を取得する取得手段と、
第２暗号鍵を生成する第２暗号鍵生成手段と、
前記第１暗号鍵と、前記第２暗号鍵の一部又は全部との排他的論理和として、第３暗号鍵を算出する第３暗号鍵生成手段と、
前記第３暗号鍵を暗号鍵とするカウンタモードのブロック暗号で前記平文ブロック列を暗号化して、暗号ブロック列を生成するカウンタモード暗号化手段と、
前記第２暗号鍵と前記暗号ブロック列の各ブロックとの排他的論理和を算出することで鍵ブロックを生成する鍵ブロック生成手段と、
を有する暗号化装置。
【請求項２】
前記第２暗号鍵のサイズが前記平文ブロックのサイズより大きい場合、前記鍵ブロック生成手段は、前記第２暗号鍵を n 分割 (n >= 2) した各部分と、前記暗号ブロック列を n 分割した各部分ブロックとの排他的論理和をそれぞれ算出することで、n 個の鍵ブロックを生成する、請求項１に記載の暗号化装置。
【請求項３】
前記暗号ブロック列及び前記鍵ブロックを有するブロック列を出力するブロック列出力手段を有する請求項１又は２に記載の暗号化装置。
【請求項４】
鍵ブロック、複数の暗号ブロックを有する暗号ブロック列、及び第１復号鍵を取得する取得手段と、
前記暗号ブロック列に含まれる各暗号ブロックの排他的論理和を算出し、その算出結果を用いて第２復号鍵を生成する第２復号鍵生成手段と、
前記第１復号鍵と、前記第２復号鍵の一部又は全部との排他的論理和として、第３復号鍵を算出する第３復号鍵生成手段と、
前記第３復号鍵を復号鍵とするカウンタモードのブロック暗号で前記暗号ブロック列を復号して平文ブロック列を生成するカウンタモード復号手段と、
を有する復号装置。
【請求項５】
前記取得手段は、複数の鍵ブロックを取得し、
前記第２復号鍵生成手段は、各前記鍵ブロックと、前記暗号ブロック列を n (n > 0) 分割した各部分ブロックとの排他的論理和をそれぞれ算出し、算出した複数の値を結合することで前記第２復号鍵を生成する請求項４に記載の復号装置。
【請求項６】
請求項１乃至３いずれか一項に記載の暗号化装置と、請求項４又は５に記載の復号装置とを有する暗号処理システム。
【請求項７】
暗号化装置によって実行される暗号化方法であって、
前記暗号化装置は、
複数の平文ブロックで構成される平文ブロック列、及び第１暗号鍵を取得する取得手段と、
第２暗号鍵を生成する第２暗号鍵生成手段と、
前記第１暗号鍵と、前記第２暗号鍵の一部又は全部との排他的論理和として、第３暗号鍵を算出する第３暗号鍵生成手段と、
前記第３暗号鍵を暗号鍵とするカウンタモードのブロック暗号で前記平文ブロック列を暗号化して、暗号ブロック列を生成するカウンタモード暗号化手段と、
前記第２暗号鍵と前記暗号ブロック列の各ブロックとの排他的論理和を算出することで鍵ブロックを生成する鍵ブロック生成手段と、を有し、
当該暗号化方法は、
前記取得手段が、前記平文ブロック列及び第１暗号鍵を取得する取得ステップと、
前記第２暗号鍵生成手段が、前記第２暗号鍵を生成する第２暗号鍵生成ステップと、
前記第３暗号鍵生成手段が、前記第３暗号鍵を算出する第３暗号鍵生成ステップと、
前記カウンタモード暗号化手段が、前記暗号ブロック列を生成するカウンタモード暗号化ステップと、
前記鍵ブロック生成手段が、前記鍵ブロックを生成する鍵ブロック生成ステップと、
を有する暗号化方法。
【請求項８】
復号装置によって実行される復号方法であって、
前記復号装置は、
鍵ブロック、複数の暗号ブロックを有する暗号ブロック列、及び第１復号鍵を取得する取得手段と、
前記暗号ブロック列に含まれる各暗号ブロックの排他的論理和を算出し、その算出結果を用いて第２復号鍵を生成する第２復号鍵生成手段と、
前記第１復号鍵と、前記第２復号鍵の一部又は全部との排他的論理和として、第３復号鍵を算出する第３復号鍵生成手段と、
前記第３復号鍵を復号鍵とするカウンタモードのブロック暗号で前記暗号ブロック列を復号して平文ブロック列を生成するカウンタモード復号手段と、
を有し、
当該復号方法は、
前記取得手段が、前記鍵ブロック、前記暗号ブロック列、及び前記第１復号鍵を取得する取得ステップと、
前記第２復号鍵生成手段が、前記第２復号鍵を生成する第２復号鍵生成ステップと、
前記第３復号鍵生成手段が、前記第３復号鍵を算出する第３復号鍵生成ステップと、
前記カウンタモード復号手段が、前記平文ブロック列を生成するカウンタモード復号ステップと、
を有する復号方法。
【請求項９】
コンピュータに、請求項１乃至３いずれか一項に記載の暗号化装置として動作する機能を持たせる暗号化プログラム。
【請求項１０】
コンピュータに、請求項４又は５に記載の復号装置として動作する機能を持たせる復号プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック暗号に関する。
【背景技術】
【０００２】
暗号方式の一つとして、ブロック暗号がある。ブロック暗号は、暗号化と復号に同一の鍵を用いる共通鍵暗号方式に分類される。ブロック暗号は、暗号化処理及び復号処理から構成される。暗号化処理は暗号化対象のデータ(平文)及び鍵を入力として、暗号文を出力する。復号処理は、暗号文及び鍵を入力として平文を出力する。【０００３】
ブロック暗号では、鍵長及びブロック長が固定である。例えばアメリカ国立標準技術研究所（NIST）によって規格化された共通鍵暗号方式 AES では、鍵長は 128 ビット、192 ビット、及び 256 ビットから選択でき、ブロック長は128ビットである。【０００４】
ブロック暗号を用いてブロック長より長いデータを扱う場合、例えばデータを複数のブロックに分割し、ブロックごとに暗号化及び復号を行う。このようにブロック長より長いデータを扱うためのブロック暗号の利用方法は、暗号利用モードと呼ばれる。【０００５】
ここで、各ブロックをそれぞれ暗号化する方法では、暗号文の一部と鍵を取得すると、その取得した部分を復号することができてしまう。そこで、暗号文の一部が復号されることを防ぐため、All Or Nothing Transform（AONT）と呼ばれる技術が用いられる。AONT を用いて暗号化及び復号を行う方法は、例えば非特許文献１や非特許文献２に開示されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Anand Desai、「The Security of All-or-Nothing Encryption: Protecting against Exhaustive Key Search」、Advances in Cryptology（CRYPTO 2000）、2000 年 8 月 11 日、pp. 359-375
【非特許文献２】Ghassan O. Karame、他３名、「Securing Cloud Data in the New Attacker Model」、［online］、２０１４年７月１６日、［２０１４年１０月３０日検索］、インターネット＜URL: https://eprint.iacr.org/2014/556.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
非特許文献１の方法では、n ブロックの平文が入力されると、n+1 ブロックの暗号文が出力される。そして、n+1 ブロックの暗号文全てを取得できないと、平文の一部であっても復号できない。しかし、非特許文献２の方法と比較し、暗号処理（暗号化処理及び復号処理）の計算量が多い。【０００８】
一方、非特許文献２の方法は、非特許文献１の方法よりも少ない計算量で、n ブロックの平文から n+1 ブロックの暗号文を出力できる。しかし、n+1 ブロックの暗号文の内の n ブロックが取得できると平文の一部を復号できてしまうため、非特許文献２の方法は非特許文献１の方法よりも安全性が低い。【０００９】
本発明は、以上の課題に鑑みてなされたものである。本発明の目的は、ブロック暗号について、暗号文の安全性を向上しつつ、少ない計算量で暗号処理を行う技術を提供することである。
【課題を解決するための手段】
【００１０】
本願発明が提供する暗号化装置は、複数の平文ブロックで構成される平文ブロック列、及び第１暗号鍵を取得する取得手段と、第２暗号鍵を生成する第２暗号鍵生成手段と、前記第１暗号鍵と、前記第２暗号鍵の一部又は全部との排他的論理和として、第３暗号鍵を算出する第３暗号鍵生成手段と、前記第３暗号鍵を暗号鍵とするカウンタモードのブロック暗号で前記平文ブロック列を暗号化して、暗号ブロック列を生成するカウンタモード暗号化手段と、前記第２暗号鍵と前記暗号ブロック列の各ブロックとの排他的論理和を算出することで鍵ブロックを生成する鍵ブロック生成手段と、を有する。【００１１】
本発明が提供する復号装置は、鍵ブロック及び複数の暗号ブロックを有する暗号ブロック列、並びに第１復号鍵を取得する取得手段と、前記暗号ブロック列に含まれる各暗号ブロックの排他的論理和を算出し、その算出結果を用いて第２復号鍵を生成する第２復号鍵生成手段と、前記第１復号鍵と、前記第２復号鍵の一部又は全部との排他的論理和として、第３復号鍵を算出する第３復号鍵生成手段と、前記第３復号鍵を復号鍵とするカウンタモードのブロック暗号で前記暗号ブロック列を復号して平文ブロック列を生成するカウンタモード復号手段と、を有する。【００１２】
本発明が提供する暗号処理システムは、本発明が提供する暗号化装置及び復号装置を有する。【００１３】
本発明が提供する暗号化方法は、本発明が提供する暗号化装置によって実行される。当該暗号化方法は、前記取得手段が、前記平文ブロック列及び前記第１暗号鍵を取得する取得ステップと、前記第２暗号鍵生成手段が、前記第２暗号鍵を生成する第２暗号鍵生成ステップと、前記第３暗号鍵生成手段が、前記第３暗号鍵を算出する第３暗号鍵生成ステップと、前記カウンタモード暗号化手段が、前記暗号ブロック列を生成するカウンタモード暗号化ステップと、前記鍵ブロック生成手段が、前記鍵ブロックを生成する鍵ブロック生成ステップと、を有する。
【００１４】
本発明が提供する復号方法は、本発明が提供する復号装置によって実行される。当該復号方法は、前記取得手段が、前記鍵ブロック、前記暗号ブロック列、及び前記第１復号鍵を取得する取得ステップと、前記第２復号鍵生成手段が、前記第２復号鍵を生成する第２復号鍵生成ステップと、前記第３復号鍵生成手段が、前記第３復号鍵を算出する第３復号鍵生成ステップと、前記カウンタモード復号手段が、前記平文ブロック列を生成するカウンタモード復号ステップと、を有する。
【００１５】
本発明が提供する暗号化プログラムは、コンピュータに、本発明が提供する暗号化装置として動作する機能を持たせる。【００１６】
本発明が提供する復号プログラムは、コンピュータに、本発明が提供する復号装置として動作する機能を持たせる。
【発明の効果】
【００１７】
本発明によれば、ブロック暗号について、暗号文の安全性を向上しつつ、少ない計算量で暗号処理を行う技術が提供される。
【図面の簡単な説明】
【００１８】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。【００１９】
【図１】実施形態１に係る暗号化装置を例示するブロック図である。
【図２】暗号化装置によって実行される処理を数式等を用いて例示した図である。
【図３】鍵ブロック生成部が複数の鍵ブロックを生成する方法を概念的に例示する図である。
【図４】実施形態１の暗号化装置によって実行される処理の流れを例示するフローチャートである。
【図５】暗号化装置のハードウエア構成を例示するブロック図である。
【図６】非特許文献１における暗号化処理を例示する図である。
【図７】非特許文献１における復号処理を例示する図である。
【図８】非特許文献２における暗号化処理を例示する図である。
【図９】非特許文献２における復号処理を例示する図である。
【図１０】実施形態２に係る復号装置を例示するブロック図である。
【図１１】復号装置によって実行される処理を数式等を用いて例示した図である。
【図１２】複数の鍵ブロックから第２復号鍵を生成する処理を概念的に例示する図である。
【図１３】実施形態２の復号装置によって実行される処理の流れを例示するフローチャートである。
【図１４】復号装置のハードウエア構成を例示するブロック図である。
【図１５】実施形態３に係る暗号処理システムを例示するブロック図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００２１】
［実施形態１］
図１は、実施形態１に係る暗号化装置２０００を例示するブロック図である。図１において、矢印は情報の流れを表している。さらに、図１において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【００２２】
暗号化装置２０００は、取得部２０２０、第２暗号鍵生成部２０４０、第３暗号鍵生成部２０６０、カウンタモード暗号化部２０８０、及び鍵ブロック生成部２１００を有する。
【００２３】
取得部２０２０は平文ブロック列及び第１暗号鍵を取得する。平文ブロック列は複数の平文ブロックで構成される。第２暗号鍵生成部２０４０は第２暗号鍵を生成する。第３暗号鍵生成部２０６０は第３暗号鍵を生成する。第３暗号鍵は、第１暗号鍵と、第２暗号鍵の一部又は全部との排他的論理和として算出される。カウンタモード暗号化部２０８０は、第３暗号鍵を暗号鍵として用いて平文ブロック列を暗号化し、暗号ブロック列を生成する。暗号化には、カウンタモードを暗号利用モードとするブロック暗号が用いられる。鍵ブロック生成部２１００は鍵ブロックを生成する。鍵ブロックは、第２暗号鍵と暗号ブロック列の各ブロックとの排他的論理和として算出される。
【００２４】
図２は、暗号化装置２０００によって実行される処理を数式等を用いて例示した図である。以下、図２を適宜参照しながら、それぞれの機能構成部の機能について説明する。ただし、図２に示す処理はあくまで例示であり、暗号化装置２０００によって実行される処理は図２に示す処理に限定されない。また、図２の例では、第１暗号鍵の鍵長 L が、平文ブロックのブロック長よりも長い場合を想定している。しかし、第１暗号鍵の鍵長 L は、平文ブロックのブロック長以下であってもよい。
【００２５】
＜取得部２０２０＞
取得部２０２０が行う処理は、例えば図２の（１）で表される。ここで、取得部２０２０が第１暗号鍵及び平文ブロック列を取得する方法は様々である。例えば取得部２０２０は、外部の装置から入力される第１暗号鍵及び平文ブロック列を取得する。その他にも例えば、取得部２０２０は、手動で入力される第１暗号鍵及び平文ブロック列を取得する。さらに取得部２０２０は、外部の装置にアクセスして、第１暗号鍵及び平文ブロック列を取得してもよい。また、取得部２０２０は、第１暗号鍵と平文ブロック列とを異なる方法で取得してもよい。例えば、第１暗号鍵は外部の装置から取得され、平文ブロック列は手動で入力される。
【００２６】
＜第２暗号鍵生成部２０４０＞
第２暗号鍵生成部２０４０が第２暗号鍵を生成する方法は様々である。例えば第２暗号鍵生成部２０４０は、所定のビット長のランダムなビット列を生成し、これを第２暗号鍵とする。また例えば、第２暗号鍵の候補を複数用意しておき、第２暗号鍵生成部２０４０は、その中から利用する第２暗号鍵を選択してもよい。なお、上述の「所定のビット長」は、予め第２暗号鍵生成部２０４０に設定されていてもよいし、所定のビット長を記憶している記憶装置等から第２暗号鍵生成部２０４０が取得するようにしてもよい。
【００２７】
第２暗号鍵生成部２０４０が行う処理は、例えば図２の（２）で表される。図２の（２）では、第２暗号鍵の鍵長（上述の「所定のビット長」）が、平文ブロックのブロック長と等しい。ただし、第２暗号鍵の鍵長は、平文ブロックのブロック長と異なっていてもよい。
【００２８】
＜第３暗号鍵生成部２０６０＞
前述の通り、第３暗号鍵生成部２０６０は第１暗号鍵と、第２暗号鍵の一部又は全部との排他的論理和として第３暗号鍵を生成する。
【００２９】
第２暗号鍵のビット長が第１暗号鍵のビット長よりも長い場合、第３暗号鍵生成部２０６０は、第１暗号と、第２暗号鍵の一部との排他的論理和を算出する。例えばこの処理は、図２の（３）及び（４）で表される。図２において、平文ブロックのブロック長は、第１暗号鍵の鍵長 L より長い。そこで第３暗号鍵生成部２０６０は、図２の（３）の処理によって第２暗号鍵 ke2 の下位 L ビットを算出し、この値を k とする。そして、図２の（４）において、第３暗号鍵生成部２０６０は、L ビットの第１暗号鍵 ke1 と、第２暗号鍵の下位 L ビットである k との排他的論理和を算出することで、第３暗号鍵 ke3 を算出する。
【００３０】
なお、第２暗号鍵のビット長が第１暗号鍵のビット長以下である場合、図２の（３）の処理は不要となる。
【００３１】
＜カウンタモード暗号化部２０８０＞
カウンタモード暗号化部２０８０は、ブロック暗号の暗号化利用モードの一つであるカウンタモードを利用して、複数の平文ブロックを暗号化する。ここで、カウンタモードのブロック暗号では、暗号鍵、カウンタの初期値、及び暗号化対象の平文ブロック列を入力として、暗号ブロック列を生成する。
【００３２】
カウンタモード暗号化部２０８０は、前述の第３暗号鍵を暗号鍵として用いる。また、カウンタモード暗号化部２０８０は、暗号化対象の平文ブロック列として、取得部２０２０によって取得された平文ブロック列を用いる。さらにカウンタモード暗号化部２０８０は、カウンタの初期値として、例えば０を用いる。ただし、カウンタの初期値は任意の値でよく、０に限定されない。
【００３３】
ここで、入力された暗号鍵、カウンタの初期値、及び平文ブロック列を用いてカウンタモードのブロック暗号で暗号化を行う方法自体は既存の技術である。そのため、この方法についての詳細な説明は省略する。
【００３４】
カウンタモード暗号化部２０８０が行う処理は、例えば図２の（５）で表される。ここで、EncCtr(ke3; i; x[1],..., x[n]) は、「暗号鍵 ke3、カウンタの初期値 i、及び平文ブロック列 {x[1]、...、x[n]} を入力とし、カウンタモードのブロック暗号で暗号化を行う関数」を表している。図２の（５）では、暗号ブロック列として、{y[1]、...、y[n]} が生成される。
【００３５】
＜鍵ブロック生成部２１００＞
鍵ブロック生成部２１００は、第２暗号鍵及び暗号ブロック列の各ブロックとの排他的論理和として、鍵ブロックを生成する。この処理は、例えば図２の（６）で表される。図２の（６）において、y[n+1] は鍵ブロックを表す。こうすることで、第２暗号鍵が、暗号ブロック列によってマスクされる。
【００３６】
ここで、第２暗号鍵のビット長が各暗号ブロックのビット長より長い場合、そのまま第２暗号鍵と各暗号ブロックとの排他的論理和を計算すると、第２暗号鍵の一部がマスクされない。そこで例えば、鍵ブロック生成部２１００は、第２暗号鍵を複数の部分鍵に分割し、各部分鍵について暗号ブロック列との排他的論理和演算をすることで、複数の鍵ブロックを生成する。こうすることで、第２暗号鍵の全体が暗号ブロック列によってマスクされるようにする。
【００３７】
図３は、鍵ブロック生成部２１００が複数の鍵ブロックを生成する方法を概念的に例示する図である。図３において、第２暗号鍵の鍵長は暗号ブロックのブロック長の２倍である。ここで、暗号ブロックのブロック長を X とおく。例えば鍵ブロック生成部２１００は、第２暗号鍵を２等分し、上位 X ビットから成る部分鍵 kp1 及び下位 X ビットから成る部分鍵 kp2 を生成する。
【００３８】
そして、鍵ブロック生成部２１００は、暗号ブロック列を２等分し、片方のブロック列及び部分鍵 kp1 とを用いて第１の鍵ブロックを生成する。また、鍵ブロック生成部２１００は、もう片方のブロック列及び部分鍵 kp2 を用いて第２の鍵ブロックを生成する。具体的には、鍵ブロック生成部２１００は、部分鍵 kp1 と、ブロック列 {y[1],...,y[n/2]} に含まれる各ブロックとの排他的論理和を算出し、算出された値を第１の鍵ブロックとする。さらに、鍵ブロック生成部２１００は、部分鍵 kp2 と、ブロック列 {y[(n/2)+1],...,y[n]} に含まれる各ブロックとの排他的論理和を算出し、算出された値を第２の鍵ブロックとする。
【００３９】
＜その他の機能について＞
暗号化装置２０００は、出力部２１２０をさらに有していてもよい（図示せず）。出力部２１２０は、暗号ブロック列及び鍵ブロックを出力する。例えば出力部２１２０は、暗号ブロック列及び鍵ブロックから成るブロック列（以下、出力ブロック列）を出力する。出力部２１２０が行う処理は、例えば図２の（７）で表される。図２の（７）において、出力ブロック列は、暗号ブロック列 {y[1],...,y[n]} と鍵ブロック y[n+1] とを結合したブロック列 {y[1],...,y[n],y[n+1]} である。ただし、出力部２１２０は、暗号ブロック列及び鍵ブロックを別々に出力してもよい。
【００４０】
なお、鍵ブロックが複数生成された場合、出力部２１２０は、生成した鍵ブロックを全て出力する。例えば図３の例の場合、出力部２１２０は、暗号ブロック列 {y[1],...,y[n]}、並びに鍵ブロック y[n+1] 及び y[n+2] を出力する。
【００４１】
出力部２１２０によって出力された暗号ブロック列及び鍵ブロックの利用方法は様々である。例えば出力部２１２０によって出力された暗号ブロック列及び鍵ブロックは、暗号化装置２０００の内部又は外部に設けられた記憶部に記録される。その後、その記憶部に記録された暗号ブロック列及び鍵ブロックは、暗号ブロック列の復号処理を行う装置（例えば後述の復号装置３０００）によって取得される。また、出力部２１２０は、暗号ブロック列及び鍵ブロックを外部に送信してもよい。
【００４２】
なお、暗号ブロック列及び鍵ブロックは異なる記憶部に記憶されてもよい。また、暗号ブロック列に含まれる各ブロックは異なる記憶部に記憶されてもよい。例えば、出力ブロック列を m 個（m > 0）のブロック列に分割し、分割後のブロック列をそれぞれ異なる記憶装置に記憶する。このように出力ブロック列を複数に分割してそれぞれ異なる記憶装置に記憶することにより、悪意ある第三者が暗号ブロック列及び鍵ブロックの全てを取得してしまう確率を低くすることができる。
【００４３】
また、出力ブロック列を RAID や多重化などの冗長化手段によって冗長化した後に記憶装置に記憶するようにしてもよい。さらに、冗長化された出力ブロック列を複数のブロック列に分け、それぞれ異なる記憶装置に記憶するようにしてもよい。
【００４４】
＜処理の流れ＞
図４は、実施形態１の暗号化装置２０００によって実行される処理の流れを例示するフローチャートである。取得部２０２０は平文ブロック列及び第１暗号鍵を取得する（Ｓ１０２）。第２暗号鍵生成部２０４０は第２暗号鍵を生成する（Ｓ１０４）。第３暗号鍵生成部２０６０は第３暗号鍵を生成する（Ｓ１０６）。カウンタモード暗号化部２０８０は、第３暗号鍵を暗号鍵としてカウンタモードのブロック暗号で平文ブロック列を暗号化し、暗号ブロック列を生成する（Ｓ１０８）。鍵ブロック生成部２１００は鍵ブロックを生成する（Ｓ１１０）。
【００４５】
＜ハードウエア構成例＞
暗号化装置２０００の各機能構成部は、各機能構成部を実現するハードウエア（例：ハードワイヤードされた電子回路など）で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ（例：電子回路とそれを制御するプログラムの組み合わせなど）で実現されてもよい。以下、各機能構成部をハードウエアとソフトウエアとの組み合わせで実現する場合について、その構成を具体的に例示する。
【００４６】
暗号化装置２０００は、PC（Personal Computer）、携帯端末、又はサーバマシンなどの種々の計算機として実装される。ここで暗号化装置２０００は、暗号化装置２０００を実装するための専用の計算機に実装されてもよいし、その他のアプリケーション等も含まれている汎用の計算機に実装されてもよい。
【００４７】
図５は、暗号化装置２０００のハードウエア構成を例示するブロック図である。暗号化装置２０００は、バス１０２０、プロセッサ１０４０、メモリ１０６０、ストレージ１０８０、及び入出力インタフェース１１００を有する。バス１０２０は、プロセッサ１０４０、メモリ１０６０、ストレージ１０８０、及び入出力インタフェース１１００が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ１０４０などを互いに接続する方法は、バス接続に限定されない。プロセッサ１０４０は、例えば CPU (Central Processing Unit) や GPU (Graphics Processing Unit) などの演算処理装置である。メモリ１０６０は、例えば RAM (Random Access Memory) や ROM (Read Only Memory) などのメモリである。ストレージ１０８０は、例えばハードディスク、SSD (Solid State Drive)、又はメモリカードなどの記憶装置である。また、ストレージ１０８０は、RAM や ROM 等のメモリであってもよい。入出力インタフェース１１００は、暗号化装置２０００が入出力デバイスや外部の装置等との間でデータを送受信するための入出力インタフェースである。
【００４８】
ストレージ１０８０は、暗号化装置２０００の機能を実現するためのプログラムを記憶している。具体的には、取得部２０２０、第２暗号鍵生成部２０４０、第３暗号鍵生成部２０６０、カウンタモード暗号化部２０８０、及び鍵ブロック生成部２１００の機能をそれぞれ実現するプログラムモジュールを記憶している。プロセッサ１０４０は、これら各プログラムモジュールを実行することで、取得部２０２０、第２暗号鍵生成部２０４０、第３暗号鍵生成部２０６０、カウンタモード暗号化部２０８０、及び鍵ブロック生成部２１００の機能をそれぞれ実現する。ここでプロセッサ１０４０は、上記各モジュールを実行する際、これらのモジュールをメモリ１０６０上に読み出してから実行してもよいし、メモリ１０６０上に読み出さずに実行してもよい。
【００４９】
暗号化装置２０００のハードウエア構成は図５に示した構成に限定されない。例えば、各プログラムモジュールはメモリ１０６０に格納されてもよい。この場合、暗号化装置２０００は、ストレージ１０８０を備えていなくてもよい。
【００５０】
＜作用・効果＞
非特許文献１に記載されている手法及び非特許文献２に記載されている手法について説明した後、本実施形態の暗号化装置の作用・効果について説明する。
【００５１】
図６は非特許文献１における暗号文生成処理 EplsAenc() を例示する図であり、図７は非特許文献１における復号処理 EplsAdec() を例示する図である。一方、図８は非特許文献２における暗号文生成処理 AONEenc() を例示する図であり、図９は非特許文献２における復号処理 AONEdec() を例示する図である。なお、図７における Enc() は、ブロックを暗号化する任意の暗号化処理を表す関数である。また、図８における Dec() は、Enc() で暗号化されたブロックを復号する任意の復号処理を表す関数である。
【００５２】
非特許文献２の手法は、非特許文献１の暗号文生成処理よりも少ない計算量で暗号文生成処理を実現している。非特許文献１の暗号文生成処理では、2n+1 回の暗号化処理（n 回の EncCtr 及び n+1 回の Enc）及び 2n 回の排他的論理和演算処理が行われている。これに対し、非特許文献２の暗号文生成処理では、n 回の暗号化処理（EncCtr）及び 3n+1 回の排他的論理和演算処理が行われている。よって、非特許文献２の暗号文生成処理は、非特許文献１の暗号文生成処理と比較して、暗号化処理が少なくなり、排他的論理和演算処理が多くなっている。ここで一般に、暗号化処理は排他的論理和演算処理よりも計算量が多い。そのため、非特許文献２の暗号文生成処理は、非特許文献１の暗号文生成処理よりも計算量が少なくなっている。
【００５３】
ただし、非特許文献２の手法では、以下に示す理由から、生成される暗号文の安全性が、非特許文献１の手法で生成される暗号文の安全性よりも低い。図７に示す非特許文献１の復号処理では、暗号ブロック [1],...,y[n+1] のいずれか１つでも足りないと、図７（１）の処理で k' が計算できない。そのため、図７（３）の処理で平文ブロック x[1],...,x[n] のいずれもが計算できない。よって、非特許文献１の手法では、暗号文生成処理で出力される全てのブロックが揃わなければ平文ブロックのいずれもが復号できない。
【００５４】
一方、図９に示す非特許文献２の復号処理では、n+1 個の暗号ブロックの内、n ブロックが取得されてしまうと、平文の一部を復号できてしまう。これは、n ブロックの暗号文から y'[n+1] を復号できてしまうことに起因する。非特許文献２の手法では、AONEenc() の処理を非決定的にしている情報は、鍵 k 及び y'[n+1] である。そのため、鍵 k が手に入る状況では、y'[n+1] のみが AONEenc() の処理を非決定的にする情報となる。そのため、y'[n+1] を復元できると、AONEenc() の処理の非決定性が損なわれてしまう。
【００５５】
例えば、n ブロックの暗号文を取得し、それらを用いて y'[n+1] を復元した悪意ある第三者は、この y'[n+1]、及び適当に生成した n ブロックの平文ブロック列 w[1],...,w[n] を用いて AONEenc() の処理を実行する。そして、この悪意ある第三者は、生成された暗号文と取得した暗号文とを比較する。ここで、もしこれらが異なれば、「平文は w[1],...,w[n] ではない」ということが分かってしまう。このように平文の内容を推測できてしまうことは、暗号文の安全性が低いことを意味する。
【００５６】
本実施形態の暗号化装置２０００によれば、暗号化処理に用いる暗号鍵として、第１暗号鍵と第２暗号鍵との排他的論理和として算出した第３暗号鍵が用いられる。よって、第１暗号鍵及び第２暗号鍵のいずれかが秘匿されていれば、平文の一部であっても復号することができない。また、暗号化処理の回数は非特許文献２の暗号文生成処理と同様に n 回であり、非特許文献１の手法よりも計算量が少ない。
【００５７】
よって、本実施形態の暗号化装置２０００によれば、ブロック暗号の安全性を向上させつつ、少ない計算量で暗号文を生成できる。
【００５８】
［実施形態２］
図１０は、実施形態２に係る復号装置３０００を例示するブロック図である。図１０において、矢印は情報の流れを表している。さらに、図１０において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【００５９】
復号装置３０００は、暗号ブロック列を復号して平文ブロック列を生成する。復号装置３０００が処理対象とする暗号ブロック列は、暗号化装置２０００によって生成された暗号ブロック列である。そのために、復号装置３０００は、取得部３０２０、第２復号鍵生成部３０４０、第３復号鍵生成部３０６０、及びカウンタモード復号部３０８０を有する。
【００６０】
取得部３０２０は、対象ブロック列及び第１復号鍵を取得する。対象ブロック列は、前述した鍵ブロック及び暗号ブロック列を有する。暗号ブロック列は、複数の暗号ブロックを有する。第２復号鍵生成部３０４０は、第２復号鍵を生成する。第２復号鍵は、暗号ブロック列に含まれる各暗号ブロックの排他的論理和として生成される。第３復号鍵生成部３０６０は、第３復号鍵を生成する。第３復号鍵は、第１復号鍵及び第２復号鍵の排他的論理和として生成される。カウンタモード復号部３０８０は、暗号ブロックを復号して平文ブロック列を生成する。なお、カウンタモード復号部３０８０は、ブロック暗号の利用モードとして、カウンタモードを利用する。また、カウンタモード復号部３０８０は、第３復号鍵を復号鍵として利用する。
【００６１】
図１１は、復号装置３０００によって実行される処理を数式等を用いて例示した図である。以下、図１１を適宜参照しながら、それぞれの機能構成部の機能について説明する。ただし、図１１に示す処理はあくまで例示であり、復号装置３０００によって実行される処理は図１１に示す処理に限定されない。また、図１１の例では、第１復号鍵の鍵長 L が、暗号ブロックのブロック長よりも長い場合を想定している。しかし、第１復号鍵の鍵長 L は、暗号ブロックのブロック長以下であってもよい。
【００６２】
＜取得部３０２０の詳細＞
対象ブロック列に含まれる暗号ブロック列は、暗号化装置２０００のカウンタモード暗号化部２０８０によって生成された暗号ブロック列である。また、対象ブロック列に含まれる鍵ブロックは、暗号化装置２０００の鍵ブロック生成部２１００によって生成された鍵ブロックである。つまり、対象ブロックは、出力部２１２０によって出力された出力ブロックに相当する。取得部３０２０が行う処理は、例えば図１１の（１）で表される。
【００６３】
例えば取得部３０２０は、暗号化装置２０００によって記憶装置に記憶された暗号ブロック列及び鍵ブロックを取得する。また例えば、暗号化装置２０００によって送信される暗号ブロック列及び鍵ブロックを受信することで、対象ブロック列を取得する。また例えば、取得部３０２０は、手動で入力される暗号ブロック列及び鍵ブロックを取得してもよい。
【００６４】
また、取得部３０２０が取得する第１復号鍵は、暗号化装置２０００が暗号ブロック列を生成する際に用いた第１暗号鍵と同じ値である。取得部３０２０は、暗号化装置２０００から第１復号鍵を取得してもよいし、手動で入力される第１復号鍵を取得してもよいし、復号装置３０００の内部又は外部の記憶装置に記憶されている第１復号鍵を取得してもよい。
【００６５】
＜第２復号鍵生成部３０４０＞
第２復号鍵生成部３０４０は、暗号ブロック列の各ブロック列及び鍵ブロックとの排他的論理和を算出し、その算出結果を用いて第２復号鍵を生成する。例えば第２復号鍵生成部３０４０の処理は、図１１の（２）で表される。図１１の（２）において、第２復号鍵生成部３０４０は、対象ブロック列 {y[1],...,y[n+1]} の各ブロックの排他的論理和を算出し、その算出結果を第２復号鍵 kd2 とする。
【００６６】
ここで、対象ブロック列に鍵ブロックが複数含まれる場合がある。この場合、第２復号鍵生成部３０４０は、各鍵ブロックから部分鍵を生成し、その部分鍵を結合することで第２復号鍵を生成する。図１２は、複数の鍵ブロックから第２復号鍵を生成する処理を概念的に例示する図である。図１２において、対象ブロックには、第１の鍵ブロック y[n+1] 及び第２の鍵ブロック y[n+2] が含まれる。
【００６７】
第２復号鍵生成部３０４０は、暗号ブロック列の一部である {y[1],...,y[n/2]} の各ブロックと第１の鍵ブロック y[n+1] との排他的論理和を算出することで、第１の部分鍵を生成する。次に、第２復号鍵生成部３０４０は、暗号ブロック列の一部である {y[(n/2)+1],...,y[n]} の各ブロックと第２の鍵ブロック y[n+2] との排他的論理和を算出することで、第２の部分鍵を生成する。そして、第２復号鍵生成部３０４０は、第１の部分鍵と第２の部分鍵を結合することで、第２復号鍵を生成する。
【００６８】
なお、第２復号鍵生成部３０４０は、「暗号ブロック列に含まれる各ブロックの内、どのブロックをどの部分鍵との排他的論理和演算に用いるか」を把握する必要がある。例えば第２復号鍵生成部３０４０は、m 個の部分鍵を取得した場合、暗号ブロック列を m 等分して複数のブロック列に分け、各ブロック列をいずれか１つの部分鍵との排他的論理和演算に用いるように構成されている。また、第２復号鍵生成部３０４０は、「暗号ブロック列に含まれる各ブロックの内、どのブロックをどの部分鍵との排他的論理和演算に用いるか」を示す情報を、鍵ブロックと共に取得してもよい。第２復号鍵生成部３０４０は、暗号化装置２０００から出力されるこの情報を取得してもよいし、手動で入力されるこの情報を取得してもよいし、復号装置３０００の内部又は外部の記憶装置に記憶されているこの情報を取得してもよい。
【００６９】
＜第３復号鍵生成部３０６０＞
第３復号鍵生成部３０６０は、第２復号鍵の一部又は全部と第１復号鍵との排他的論理和を算出し、その算出結果を第３復号鍵とする。第２復号鍵のビット長が第１復号鍵のビット長より長い場合、第３復号鍵生成部３０６０は、第２復号鍵の一部と第１復号鍵との排他的論理和を算出し、第３復号鍵とする。この場合における第３復号鍵生成部３０６０の処理は、例えば図１１の（３）及び（４）で表される。図１１において、第１復号鍵のビット長は L である。そこで、図１１の（３）において、第３復号鍵生成部３０６０は、第２復号鍵の下位 L ビットである部分鍵 k を生成している。そして、図１１の（４）において、第３復号鍵生成部３０６０は、第１復号鍵 kd1 と部分鍵 k との排他的論理和を算出し、その算出結果を第３復号鍵 kd3 としている。
【００７０】
一方、第２復号鍵のビット長が第１復号鍵のビット長以下である場合、第３復号鍵生成部３０６０は、第２復号鍵の全部と第１復号鍵との排他的論理和を第３復号鍵とする。この場合、図１１の（３）の処理は不要となる。
【００７１】
＜カウンタモード復号部３０８０＞
カウンタモード復号部３０８０は、ブロック暗号の暗号化利用モードの一つであるカウンタモードを利用して暗号ブロック列を復号し、平文ブロックを生成する。カウンタモード復号部３０８０は、前述の第３復号鍵を復号鍵として用いる。また、カウンタモード復号部３０８０は、復号対象の暗号ブロック列として、取得部３０２０によって取得された暗号ブロック列を用いる。さらに、カウンタモード復号部３０８０は、カウンタモード暗号化部２０８０が暗号ブロック列の生成に利用したカウンタの初期値と同じ値を、復号処理におけるカウンタの初期値として用いる。カウンタモード復号部３０８０は、暗号化装置２０００からカウンタの初期値を取得してもよいし、手動で入力されるカウンタの初期値を取得してもよいし、復号装置３０００の内部又は外部に記憶されているカウンタの初期値を取得してもよい。またカウンタの初期値は、カウンタモード復号部３０８０に予め設定されていてもよい。
【００７２】
なお、入力された復号鍵、カウンタの初期値、及び暗号ブロック列を用い、カウンタモードのブロック暗号で復号処理を行う方法自体は、既存の技術である。そのため、この方法についての詳細な説明は省略する。
【００７３】
カウンタモード復号部３０８０が行う処理は、例えば図１１の（５）で表される。ここで、DecCtr(kd3; i; y[1], ... , y[n]) は、「復号鍵 kd3、カウンタの初期値 i、暗号ブロック列 {y[1]、...、y[n]} を入力とし、カウンタモードのブロック暗号で復号処理を行う関数」を表している。図１１の（５）では、平文ブロック列として、x[1],...,x[n] が生成される。
【００７４】
＜出力部３１００＞
復号装置３０００は、出力部３１００をさらに有していてもよい（図示せず）。出力部３１００は、カウンタモード復号部３０８０によって復号された平文ブロックを出力する（例えば図１１の（６））。
【００７５】
＜処理の流れ＞
図１３は、実施形態２の復号装置３０００によって実行される処理の流れを例示するフローチャートである。取得部３０２０は、対象ブロック列及び第１復号鍵を取得する（Ｓ２０２）。第２復号鍵生成部３０４０は、第２復号鍵を生成する（Ｓ２０４）。第３復号鍵生成部３０６０は、第３復号鍵を生成する（Ｓ２０６）。カウンタモード復号部３０８０は、暗号ブロック列をカウンタモードのブロック暗号で復号し、平文ブロック列を生成する（Ｓ２０８）。
【００７６】
＜ハードウエア構成例＞
復号装置３０００の各機能構成部は、各機能構成部を実現するハードウエア（例：ハードワイヤードされた電子回路など）で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ（例：電子回路とそれを制御するプログラムの組み合わせなど）で実現されてもよい。以下、各機能構成部をハードウエアとソフトウエアとの組み合わせで実現する場合について、その構成を具体的に例示する。
【００７７】
復号装置３０００は、PC（Personal Computer）、携帯端末、又はサーバマシンなどの種々の計算機として実装される。ここで復号装置３０００は、復号装置３０００を実装するための専用の計算機に実装されてもよいし、その他のアプリケーション等も含まれている汎用の計算機に実装されてもよい。
【００７８】
図１４は、復号装置３０００のハードウエア構成を例示するブロック図である。復号装置３０００は、バス４０２０、プロセッサ４０４０、メモリ４０６０、ストレージ４０８０、及び入出力インタフェース４１００を有する。ここで、バス４０２０、プロセッサ４０４０、メモリ４０６０、ストレージ４０８０、及び入出力インタフェース４１００はそれぞれ、図５の暗号化装置２０００におけるバス１０２０、プロセッサ１０４０、メモリ１０６０、ストレージ１０８０、及び入出力インタフェース１１００と同様の機能を有する。
【００７９】
ストレージ４０８０は、復号装置３０００の機能を実現するためのプログラムを記憶している。具体的には、取得部３０２０、第２復号鍵生成部３０４０、第３復号鍵生成部３０６０、及びカウンタモード復号部３０８０の機能をそれぞれ実現するプログラムモジュールを記憶している。プロセッサ４０４０は、これら各プログラムモジュールを実行することで、取得部３０２０、第２復号鍵生成部３０４０、第３復号鍵生成部３０６０、及びカウンタモード復号部３０８０の機能をそれぞれ実現する。ここでプロセッサ４０４０は、上記各モジュールを実行する際、これらのモジュールをメモリ４０６０上に読み出してから実行してもよいし、メモリ４０６０上に読み出さずに実行してもよい。
【００８０】
復号装置３０００のハードウエア構成は図１４に示した構成に限定されない。例えば、各プログラムモジュールはメモリ４０６０に格納されてもよい。この場合、復号装置３０００は、ストレージ４０８０を備えていなくてもよい。
【００８１】
＜作用・効果＞
本実施形態の復号装置３０００によれば、実施形態１の暗号化装置２０００によって生成された暗号ブロック列を復号し、平文ブロック列を得ることができる。
【００８２】
［実施形態３］
図１５は、実施形態３の暗号処理システム５０００を例示するブロック図である。暗号処理システム５０００は、実施形態１の暗号化装置２０００及び実施形態２の復号装置３０００を有する。暗号化装置２０００の構成は例えば図１で表される。また、復号装置３０００の構成は、例えば図１０で表される。そのため図１５において、暗号化装置２０００と復号装置３０００が有する各機能構成部は省略されている。
【００８３】
復号装置３０００は、実施形態２で説明したいずれかの方法で、暗号化装置２０００によって生成された暗号ブロック列及び鍵ブロックから成る対象ブロック列を取得する。本実施形態の暗号処理システム５０００によれば、安全性が高く、かつ計算量が少ない方法で暗号化及び復号が行える。
【００８４】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記各実施形態の組み合わせ、及び上記実施形態以外の様々な構成を採用することもできる。
【００８５】
以下、参考形態の例を付記する。
１．  複数の平文ブロックで構成される平文ブロック列、及び第１暗号鍵を取得する取得手段と、
第２暗号鍵を生成する第２暗号鍵生成手段と、
前記第１暗号鍵と、前記第２暗号鍵の一部又は全部との排他的論理和として、第３暗号鍵を算出する第３暗号鍵生成手段と、
前記第３暗号鍵を暗号鍵とするカウンタモードのブロック暗号で前記平文ブロック列を暗号化して、暗号ブロック列を生成するカウンタモード暗号化手段と、
前記第２暗号鍵と前記暗号ブロック列の各ブロックとの排他的論理和を算出することで鍵ブロックを生成する鍵ブロック生成手段と、
を有する暗号化装置。
２．  前記第２暗号鍵のサイズが前記平文ブロックのサイズより大きい場合、前記鍵ブロック生成手段は、前記第２暗号鍵を n 分割 (n >= 2) した各部分と、前記暗号ブロック列を n 分割した各部分ブロックとの排他的論理和をそれぞれ算出することで、n 個の鍵ブロックを生成する、１．に記載の暗号化装置。
３．  前記暗号ブロック列及び前記鍵ブロックを有するブロック列を出力するブロック列出力手段を有する１．又は２．に記載の暗号化装置。
４．  鍵ブロック、複数の暗号ブロックを有する暗号ブロック列、及び第１復号鍵を取得する取得手段と、
前記暗号ブロック列に含まれる各暗号ブロックの排他的論理和を算出し、その算出結果を用いて第２復号鍵を生成する第２復号鍵生成手段と、
前記第１復号鍵と、前記第２復号鍵の一部又は全部との排他的論理和として、第３復号鍵を算出する第３復号鍵生成手段と、
前記第３復号鍵を復号鍵とするカウンタモードのブロック暗号で前記暗号ブロック列を復号して平文ブロック列を生成するカウンタモード復号手段と、
を有する復号装置。
５．  前記取得手段は、複数の鍵ブロックを取得し、
前記第２復号鍵生成手段は、各前記鍵ブロックと、前記暗号ブロック列を n (n > 0) 分割した各部分ブロックとの排他的論理和をそれぞれ算出し、算出した複数の値を結合することで前記第２復号鍵を生成する４．に記載の復号装置。
６．  １．乃至３．いずれか一つに記載の暗号化装置と、４．又は５．に記載の復号装置とを有する暗号処理システム。
７．  コンピュータによって実行される暗号化方法であって、
複数の平文ブロックで構成される平文ブロック列、及び第１暗号鍵を取得する取得ステップと、
第２暗号鍵を生成する第２暗号鍵生成ステップと、
前記第１暗号鍵と、前記第２暗号鍵の一部又は全部との排他的論理和として、第３暗号鍵を算出する第３暗号鍵生成ステップと、
前記第３暗号鍵を暗号鍵とするカウンタモードのブロック暗号で前記平文ブロック列を暗号化して、暗号ブロック列を生成するカウンタモード暗号化ステップと、
前記第２暗号鍵と前記暗号ブロック列の各ブロックとの排他的論理和を算出することで鍵ブロックを生成する鍵ブロック生成ステップと、
を有する暗号化方法。
８．  前記第２暗号鍵のサイズが前記平文ブロックのサイズより大きい場合、前記鍵ブロック生成ステップは、前記第２暗号鍵を n 分割 (n >= 2) した各部分と、前記暗号ブロック列を n 分割した各部分ブロックとの排他的論理和をそれぞれ算出することで、n 個の鍵ブロックを生成する、７．に記載の暗号化方法。
９．  前記暗号ブロック列及び前記鍵ブロックを有するブロック列を出力するブロック列出力ステップを有する７．又は８．に記載の暗号化方法。
１０．  コンピュータによって実行される復号方法であって、
鍵ブロック、複数の暗号ブロックを有する暗号ブロック列、及び第１復号鍵を取得する取得ステップと、
前記暗号ブロック列に含まれる各暗号ブロックの排他的論理和を算出し、その算出結果を用いて第２復号鍵を生成する第２復号鍵生成ステップと、
前記第１復号鍵と、前記第２復号鍵の一部又は全部との排他的論理和として、第３復号鍵を算出する第３復号鍵生成ステップと、
前記第３復号鍵を復号鍵とするカウンタモードのブロック暗号で前記暗号ブロック列を復号して平文ブロック列を生成するカウンタモード復号ステップと、
を有する復号方法。
１１．  前記取得ステップは、複数の鍵ブロックを取得し、
前記第２復号鍵生成ステップは、各前記鍵ブロックと、前記暗号ブロック列を n (n > 0) 分割した各部分ブロックとの排他的論理和をそれぞれ算出し、算出した複数の値を結合することで前記第２復号鍵を生成する１０．に記載の復号方法。
１２．  コンピュータに、１．乃至３．いずれか一つに記載の暗号化装置として動作する機能を持たせる暗号化プログラム。
１３．  コンピュータに、４．又は５．に記載の復号装置として動作する機能を持たせる復号プログラム。
【００８６】
この出願は、２０１４年１２月４日に出願された日本出願特願２０１４−２４５９３２号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
0006575532.tif 000002
【図２】
0006575532.tif 000003
【図３】
0006575532.tif 000004
【図４】
0006575532.tif 000005
【図５】
0006575532.tif 000006
【図６】
0006575532.tif 000007
【図７】
0006575532.tif 000008
【図８】
0006575532.tif 000009
【図９】
0006575532.tif 000010
【図１０】
0006575532.tif 000011
【図１１】
0006575532.tif 000012
【図１２】
0006575532.tif 000013
【図１３】
0006575532.tif 000014
【図１４】
0006575532.tif 000015
【図１５】
0006575532.tif 000016