(57)【要約】      （修正有）【課題】未検証復号データ出力に対する安全性が向上した追加データ付き認証暗号システムを提供する。【解決手段】暗号化装置は、ステートのレート部分を所定のビット列に、キャパシティ部分を共通鍵Kに設定する。入力ナンスNをレート部分の長さに分割する。レート部分と分割されたナンスNとの排他的論理和を計算する。更新されたステートに対して所定の置換fを計算する。次いで入力メッセージMを分割する。レート部分とメッセージMとの排他的論理和を計算し、更新されたステートに対して置換fを計算する。レート部分を暗号文Cのブロックとして出力する。この処理を分割されたメッセージについて繰り返す。更に入力された追加データAを用いて補助入力付き置換f'を計算する。計算結果のレート部分を暗号文Cの最終ブロックとして出力し、キャパシティ部分と共通鍵Kとの排他的論理和をタグTとして出力する。【選択図】図１４
2019015917.tif 000002
【特許請求の範囲】
【請求項１】
暗号化装置と復号装置とを含む追加データ付き認証暗号システムであって、
上記暗号化装置は、
レート部分とキャパシティ部分とからなる暗号化ステートと、上記復号装置とあらかじめ共有した共通鍵とを記憶する記憶部と、
上記暗号化ステートのレート部分を所定のビット列に、上記暗号化ステートのキャパシティ部分を上記共通鍵に設定する初期化部と、
入力されたナンスを上記暗号化ステートのレート部分の長さに分割した各ブロックについて、前方のブロックから順に、上記暗号化ステートのレート部分を当該ブロックとの排他的論理和により更新した後の上記暗号化ステートに対して所定の置換を計算するナンス計算部と、
入力されたメッセージを上記暗号化ステートのレート部分の長さに分割した各ブロックについて、前方のブロックから順に、上記暗号化ステートのレート部分を当該ブロックとの排他的論理和により更新した後の上記暗号化ステートに対して上記置換を計算し、上記置換を計算するたびに上記暗号化ステートのレート部分を暗号文のブロックとして出力するメッセージ計算部と、
入力された追加データを用いて上記暗号化ステートのレート部分を変化させる補助入力付き置換を計算する追加データ計算部と、
上記暗号化ステートのレート部分を上記暗号文の最終ブロックとして出力し、上記暗号化ステートのキャパシティ部分と上記共通鍵との排他的論理和をタグとして出力するタグ生成部と、
を含み、
上記復号装置は、
レート部分とキャパシティ部分とからなる復号ステートと、上記暗号化装置とあらかじめ共有した上記共通鍵とを記憶する記憶部と、
上記復号ステートのレート部分を上記暗号化装置から受け取った上記暗号文の最終ブロックに、上記復号ステートのキャパシティ部分を上記暗号化装置から受け取った上記タグに設定する第一初期化部と、
上記復号ステートのキャパシティ部分を上記共通鍵との排他的論理和により更新するタグ復号部と、
上記暗号化装置から受け取った追加データを用いて上記復号ステートのレート部分を変化させる上記補助入力付き置換の逆置換を計算する追加データ逆計算部と、
上記暗号化装置から受け取った暗号文のうち最終ブロック以外の各ブロックについて、後方のブロックから順に、上記復号ステートに対して上記置換の逆置換を計算し、上記置換の逆置換を計算するたびに上記復号ステートのレート部分と当該ブロックとの排他的論理和を上記メッセージのブロックとして出力し、当該ブロックにより上記復号ステートのレート部分を更新する暗号文逆計算部と、
上記復号ステートの値を中間ステート値として記憶した後、上記復号ステートのレート部分を上記所定のビット列に、上記復号ステートのキャパシティ部分を上記共通鍵に設定する第二初期化部と、
上記暗号化装置から受け取ったナンスを上記復号ステートのレート部分の長さに分割した各ブロックについて、前方のブロックから順に、上記復号ステートのレート部分を当該ブロックとの排他的論理和により更新した後の上記復号ステートに対して上記置換を計算するナンス計算部と、
上記中間ステート値のキャパシティ部分と上記復号ステートのキャパシティ部分とが一致するとき、上記中間ステート値のレート部分と上記復号ステートのレート部分との排他的論理和を上記メッセージの第一ブロックとして出力する改ざん検知部と、
を含む追加データ付き認証暗号システム。
【請求項２】
請求項１に記載の追加データ付き認証暗号システムであって、
上記追加データ計算部は、入力された追加データを上記暗号化ステートのレート部分の長さに分割した各ブロックについて、前方のブロックから順に、上記暗号化ステートのレート部分を当該ブロックとの排他的論理和により更新した後の上記暗号化ステートに対して上記置換を計算するものであり、
上記追加データ逆計算部は、上記暗号化装置から受け取った追加データを上記復号ステートのレート部分の長さに分割した各ブロックについて、後方のブロックから順に、上記復号ステートに対して上記置換の逆置換を計算し、上記復号ステートのレート部分を当該ブロックとの排他的論理和により更新するものである、
追加データ付き認証暗号システム。
【請求項３】
レート部分とキャパシティ部分とからなる暗号化ステートと、復号装置とあらかじめ共有した共通鍵とを記憶する記憶部と、
上記暗号化ステートのレート部分を所定のビット列に、上記暗号化ステートのキャパシティ部分を上記共通鍵に設定する初期化部と、
入力されたナンスを上記暗号化ステートのレート部分の長さに分割した各ブロックについて、前方のブロックから順に、上記暗号化ステートのレート部分を当該ブロックとの排他的論理和により更新した後の上記暗号化ステートに対して所定の置換を計算するナンス計算部と、
入力されたメッセージを上記暗号化ステートのレート部分の長さに分割した各ブロックについて、前方のブロックから順に、上記暗号化ステートのレート部分を当該ブロックとの排他的論理和により更新した後の上記暗号化ステートに対して上記置換を計算し、上記置換を計算するたびに上記暗号化ステートのレート部分を暗号文のブロックとして出力するメッセージ計算部と、
入力された追加データを用いて上記暗号化ステートのレート部分を変化させる補助入力付き置換を計算する追加データ計算部と、
上記暗号化ステートのレート部分を上記暗号文の最終ブロックとして出力し、上記暗号化ステートのキャパシティ部分と上記共通鍵との排他的論理和をタグとして出力するタグ生成部と、
を含む暗号化装置。
【請求項４】
レート部分とキャパシティ部分とからなる復号ステートと、暗号化装置とあらかじめ共有した共通鍵とを記憶する記憶部と、
上記復号ステートのレート部分を上記暗号化装置から受け取った暗号文の最終ブロックに、上記復号ステートのキャパシティ部分を上記暗号化装置から受け取ったタグに設定する第一初期化部と、
上記復号ステートのキャパシティ部分を上記共通鍵との排他的論理和により更新するタグ復号部と、
上記暗号化装置から受け取った追加データを用いて上記復号ステートのレート部分を変化させる補助入力付き置換の逆置換を計算する追加データ逆計算部と、
上記暗号化装置から受け取った暗号文のうち最終ブロック以外の各ブロックについて、後方のブロックから順に、上記復号ステートに対して所定の置換の逆置換を計算し、上記置換の逆置換を計算するたびに上記復号ステートのレート部分と当該ブロックとの排他的論理和をメッセージのブロックとして出力し、当該ブロックにより上記復号ステートのレート部分を更新する暗号文逆計算部と、
上記復号ステートの値を中間ステート値として記憶した後、上記復号ステートのレート部分を所定のビット列に、上記復号ステートのキャパシティ部分を上記共通鍵に設定する第二初期化部と、
上記暗号化装置から受け取ったナンスを上記復号ステートのレート部分の長さに分割した各ブロックについて、前方のブロックから順に、上記復号ステートのレート部分を当該ブロックとの排他的論理和により更新した後の上記復号ステートに対して上記置換を計算するナンス計算部と、
上記中間ステート値のキャパシティ部分と上記復号ステートのキャパシティ部分とが一致するとき、上記中間ステート値のレート部分と上記復号ステートのレート部分との排他的論理和を上記メッセージの第一ブロックとして出力する改ざん検知部と、
を含み、
上記暗号化装置は、
レート部分とキャパシティ部分とからなる暗号化ステートと、復号装置とあらかじめ共有した共通鍵とを記憶しており、
上記暗号化ステートのレート部分を上記所定のビット列に、上記暗号化ステートのキャパシティ部分を上記共通鍵に設定し、
入力されたナンスを上記暗号化ステートのレート部分の長さに分割した各ブロックについて、前方のブロックから順に、上記暗号化ステートのレート部分を当該ブロックとの排他的論理和により更新した後の上記暗号化ステートに対して上記置換を計算し、
入力されたメッセージを上記暗号化ステートのレート部分の長さに分割した各ブロックについて、前方のブロックから順に、上記暗号化ステートのレート部分を当該ブロックとの排他的論理和により更新した後の上記暗号化ステートに対して上記置換を計算し、上記置換を計算するたびに上記暗号化ステートのレート部分を上記暗号文のブロックとして出力し、
入力された追加データを用いて上記暗号化ステートのレート部分を変化させる上記補助入力付き置換を計算し、
上記暗号化ステートのレート部分を上記暗号文の最終ブロックとして出力し、上記暗号化ステートのキャパシティ部分と上記共通鍵との排他的論理和を上記タグとして出力する、
復号装置。
【請求項５】
暗号化装置と復号装置とを含む追加データ付き認証暗号システムが実行する追加データ付き認証暗号方法であって、
上記暗号化装置は、
レート部分とキャパシティ部分とからなる暗号化ステートと、上記復号装置とあらかじめ共有した共通鍵とを記憶しており、
上記暗号化ステートのレート部分を所定のビット列に、上記暗号化ステートのキャパシティ部分を上記共通鍵に設定し、
入力されたナンスを上記暗号化ステートのレート部分の長さに分割した各ブロックについて、前方のブロックから順に、上記暗号化ステートのレート部分を当該ブロックとの排他的論理和により更新した後の上記暗号化ステートに対して所定の置換を計算し、
入力されたメッセージを上記暗号化ステートのレート部分の長さに分割した各ブロックについて、前方のブロックから順に、上記暗号化ステートのレート部分を当該ブロックとの排他的論理和により更新した後の上記暗号化ステートに対して上記置換を計算し、上記置換を計算するたびに上記暗号化ステートのレート部分を暗号文のブロックとして出力し、
入力された追加データを用いて上記暗号化ステートのレート部分を変化させる補助入力付き置換を計算し、
上記暗号化ステートのレート部分を上記暗号文の最終ブロックとして出力し、上記暗号化ステートのキャパシティ部分と上記共通鍵との排他的論理和をタグとして出力し、
上記復号装置は、
レート部分とキャパシティ部分とからなる復号ステートと、上記暗号化装置とあらかじめ共有した上記共通鍵とを記憶しており、
上記復号ステートのレート部分を上記暗号化装置から受け取った上記暗号文の最終ブロックに、上記復号ステートのキャパシティ部分を上記暗号化装置から受け取った上記タグに設定し、
上記復号ステートのキャパシティ部分を上記共通鍵との排他的論理和により更新し、
上記暗号化装置から受け取った追加データを用いて上記復号ステートのレート部分を変化させる上記補助入力付き置換の逆置換を計算し、
上記暗号化装置から受け取った暗号文のうち最終ブロック以外の各ブロックについて、後方のブロックから順に、上記復号ステートに対して上記置換の逆置換を計算し、上記置換の逆置換を計算するたびに上記復号ステートのレート部分と当該ブロックとの排他的論理和を上記メッセージのブロックとして出力し、当該ブロックにより上記復号ステートのレート部分を更新し、
上記復号ステートの値を中間ステート値として記憶した後、上記復号ステートのレート部分を上記所定のビット列に、上記復号ステートのキャパシティ部分を上記共通鍵に設定し、
上記暗号化装置から受け取ったナンスを上記復号ステートのレート部分の長さに分割した各ブロックについて、前方のブロックから順に、上記復号ステートのレート部分を当該ブロックとの排他的論理和により更新した後の上記復号ステートに対して上記置換を計算し、
上記中間ステート値のキャパシティ部分と上記復号ステートのキャパシティ部分とが一致するとき、上記中間ステート値のレート部分と上記復号ステートのレート部分との排他的論理和を上記メッセージの第一ブロックとして出力する、
追加データ付き認証暗号方法。
【請求項６】
請求項３に記載の暗号化装置または請求項４に記載の復号装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、メッセージの秘匿と改ざん検知を同時に行う追加データ付き認証暗号技術に関する。
【背景技術】
【０００２】
追加データ付き認証暗号とは、メッセージMの秘匿、および、メッセージMと追加データAの認証（改ざん検知）を同時に行う共通鍵暗号プリミティブである。従来の追加データ付き認証暗号としては、例えば、非特許文献１および非特許文献２に記載されたAPE（Authenticated Permutation-Based Encryption）が挙げられる。追加データ付き認証暗号は、暗号化関数および復号関数の二つの関数から構成される。追加データ付き認証暗号では、受信者と送信者との間であらかじめ秘密の鍵Kを共有しておく。
【０００３】
送信者は、メッセージMと追加データAに加えて、暗号化関数を呼び出すたびに変化するナンスと呼ばれる値Nを選択する。暗号化関数は、メッセージM、追加データA、およびナンスNに対応する暗号文CおよびタグTを生成し、(C, T, A, N)の組を受信者に送る。
【０００４】
受信者は(C, T, A, N)の組を受け取るが、この時点ではこれらの値が悪意ある第三者によって改ざんされていないという保証はない。受信者は受け取った(C, T, A, N)の組と自分が保有する鍵Kとを用いて検証を同時に行う復号関数を計算する。
【０００５】
検証を同時に行う復号関数にはいくつかの種類がある。多くの追加データ付き認証暗号では、受信者が再計算したタグT'が送信者から受け取ったタグTと一致するかどうかで検証を行う。APEでは、受信者が再計算した中間ステートの値がある値に一致するかどうかで検証を行う。いずれにせよ値が一致しなかった場合は復号に失敗した（データが改ざんされた）という結果を出力する。
【０００６】
APEは追加データ付き認証暗号の暗号化関数と復号関数の構成法である。保証したい安全性レベル（ビット数）に比べて比較的大きなサイズの置換（bijective map）を用いて暗号化関数と復号関数を構成するという特徴を持つ。APEの復号関数は、上記のとおり、従来の復号関数とは異なる特殊な方法で検証を行う。
【０００７】
図１を参照しながら、APEの暗号化関数の具体的な計算手順を説明する。APEの暗号化関数は、ステートと呼ばれるbビットのデータを、bビットの置換f:{0, 1}b→{0, 1}b、入力データ(N, A, M)、および鍵Kを用いて繰り返し更新しながら、暗号文CおよびタグTを計算する。置換fの詳細は非特許文献２に記載されている。なお、ナンスNの入力は必須ではなく、ナンスNがある場合も、ナンスNは追加データAの一部となる。したがって、入力データは追加データA、メッセージM、および鍵Kを考慮すれば十分である。また、追加データAはメッセージMよりも先に処理される。そのような追加データAはヘッダと呼ばれる。追加データAとメッセージMの長さはいずれもrビットの倍長に限られる。
【０００８】
bビットのステートは、レートと呼ばれるrビットと、キャパシティと呼ばれるc（=b-r）ビットに分割される。暗号化関数を計算する場合、bビットのステートの値を、レート部分のrビットは0（すなわち、すべてのビットが0のビット列）に、キャパシティ部分のcビットは鍵Kの値に初期化する。
【０００９】
手順１．追加データAをrビットのブロックに分割する。bビットのステートのうちレート部分のrビットに対し、追加データAの第一ブロックとの排他的論理和を計算し、bビットのステートに対し、置換fを計算する。この置換fの出力を新たなステートの値とする。この操作を追加データAの最終ブロックが排他的論理和されるまで繰り返す。
【００１０】
手順２．bビットのステートのうちキャパシティ部分のcビットに対し、整数値1（すなわち、最下位ビットのみが1のビット列）との排他的論理和を計算する。
【００１１】
手順３．メッセージMをrビットのブロックに分割する。bビットのステートのうちレート部分のrビットに対し、メッセージMの第一ブロックとの排他的論理和を計算し、bビットのステートに対し、置換fを計算する。この置換fの出力を新たなステートの値とし、レート部分のrビットを暗号文Cの第一ブロックとして出力する。この操作をメッセージMの最終ブロックが排他的論理和されるまで繰り返す。
【００１２】
手順４．bビットのステートのうちキャパシティ部分のcビットに対し、cビットの鍵Kとの排他的論理和を計算し、計算結果をcビットのタグTとして出力する。
【００１３】
図２を参照しながら、APEの復号関数の具体的な計算手順を説明する。APEの復号関数は、APEの暗号化関数の計算をほぼ逆順に行う。復号関数は、通常(C, T, A, N)の組を入力にとるが、APEではナンスNは追加データAの一部とみなすことができるため、(C, T, A)の組を入力にとるとみなす。
【００１４】
復号関数を計算する場合、bビットのステートの値を、rビットの暗号文Cの最終ブロック（図２の例ではC2）とcビットのタグTとを連結した値に初期化する。
【００１５】
手順１．bビットのステートのうちキャパシティ部分のcビットに対し、cビットの鍵Kとの排他的論理和を計算し、計算結果によりキャパシティ部分のcビットを更新する。
【００１６】
手順２．bビットのステートに対し、置換fの逆置換f-1:{0, 1}b→{0, 1}bを計算する。この逆置換f-1の出力を新たなステートの値とする。レート部分のrビットに対し、暗号文Cの最終ブロックの一つ前のブロック（図２の例ではC1）との排他的論理和を計算し、計算結果をメッセージMの最終ブロック（図２の例ではM2）として出力する。また、レート部分のrビットを、暗号文Cの最終ブロックの一つ前のブロック（図２の例ではC1）により更新し、更新されたステートを新たなステートの値とする。この操作を暗号文Cの第一ブロック（図２の例ではC0）が処理されるまで繰り返す。これにより、メッセージMの最終ブロック（図２の例ではM2）から第二ブロック（図２の例ではM1）までが復元される。最後に更新されたステートのうち、レート部分のrビットの値をSr、キャパシティ部分のcビットの値をScとする。
【００１７】
手順３．メッセージMの第一ブロック（図２の例ではM0）の復元方法は、それ以外のブロックとは異なる。まず、暗号化関数の手順１から手順２までと同じ計算を行う。更新されたステートのうち、レート部分のrビットの値をS'r、キャパシティ部分のcビットの値をS'cとする。rビットの値Srとrビットの値S'rとの排他的論理和を計算し、計算結果をメッセージMの第一ブロック（図２の例ではM0）として出力する。
【００１８】
手順４．cビットの値Scとcビットの値S'cとを比較し、値が一致すれば復号されたメッセージMを出力する。一致しなかった場合は、メッセージMは出力せず、復号に失敗した旨を表すエラーコードのみを出力する。
【００１９】
追加データのうちメッセージよりも後に処理されるものをトレイラと呼ぶ（例えば、非特許文献３参照）。トレイラは実利用を想定してインターフェースを柔軟にするために利用するものであり、方式の安全性には関係しない。
【００２０】
追加データ付き認証暗号の安全性概念の一つに未検証復号データ出力がある（例えば、非特許文献４参照）。復号時に、改ざんされていないことが検証されていない復号データを出力してしまうと、安全性が著しく損なわれ、強力な攻撃を許してしまう。そのため、通常の追加データ付き認証暗号では、前述の通り、検証に失敗した場合にはメッセージを出力せずに検証失敗のエラーコードのみを出力するように実装することが望ましい。未検証復号データ出力とは、検証の結果によらず（もしくは検証を行わずに）、復号データを出力してしまう誤った実装における安全性である。
【００２１】
未検証復号データ出力についてより詳細に説明する。APEの暗号化関数は、(N, A, M)の組を入力にとり、(C, T)の組を出力する。APEの復号関数を正しい(C, T, A, N)の組に対して行った場合、検証の結果によらず正しいメッセージMが復号されるが、これは未検証復号データ出力とは呼ばない。未検証復号データ出力とは、受信者が知っている正しい組(C, T, A, N)に対し、C, T, A, Nのいずれか一つ以上の値を改変し（したがって検証をすれば失敗する）、検証を行わなかった場合にメッセージMの情報が攻撃者に漏洩するかどうかを議論するものである。なお、APEでは、ナンスNは追加データAの一部であるため、ナンスNは無視できる。
【００２２】
APEが持つ未検証復号データ出力に対する脆弱性を説明する。正しい(C, T, A)の組に対し、攻撃者が暗号文Cの一部を改変した暗号文C'と正しいタグTを指定した場合を考える。任意の追加データAについて、未検証復号データ出力は、正しい暗号文Cと改変された暗号文C'に関して、最終ブロックから数え始めて最初に同一値でなくなるブロックまで、対応する正しいメッセージMを攻撃者に漏洩してしまう。
【００２３】
図３は、攻撃者が、rビットの追加データA（ナンスNを含む）と、5rビットのメッセージM(=M0||M1||M2||M3||M4)に対応する暗号文C(=C0||C1||C2||C3||C4)と、タグTとを取得し、改変された暗号文C'(=C0||C1||C'2||C3||C4)（すなわち、C2のみが改変されている）と、正しいタグTと、改変された追加データA'とに対して復号処理を行った場合に、復号されたメッセージMの各ブロックが正しいか誤っているかを表している。
【００２４】
正しい暗号文Cと改変された暗号文C'に関して、最終ブロックから数え始めて最初に同一値でなくなるブロックとは、図３の例ではC'2のブロックを指す。実際、C4, C3（およびT）を使ったM4の復元手順は正しい値を用いた処理であり、正しいM4が攻撃者に漏洩してしまう。また、C3, C'2を使ったM'3の復元手順では、M3とは異なる値になるものの、C2とC'2との排他的論理和の分だけM3からずれた値がM'3と等しくなることがわかるため、攻撃者はM'3から正しいM3を復元できてしまう。なお、M2の復元では、誤ったC'2の影響が逆置換f-1を通してレート部分とキャパシティ部分に拡大しているため、正しいC1を入力したとしても、正しいM2が攻撃者に漏洩することはない。
【先行技術文献】
【非特許文献】
【００２５】
【非特許文献１】Elena Andreeva, Begul Bilgin, Andrey Bogdanov, Atul Luykx, Bart Mennink, Nicky Mouha and Kan Yasuda, "APE: Authenticated Permutation-Based Encryption for Lightweight Cryptography," FSE 2014, (eds.) Carlos Cid and Christian Rechberger, LNCS, Vol. 8540, pages 168-186, Springer, 2015.
【非特許文献２】Elena Andreeva, Begul Bilgin, Andrey Bogdanov, Atul Luykx, Florian Mendel, Bart Mennink, Nicky Mouha, Qingju Wang and Kan Yasuda, "PRIMATEs v1 - Submission to the CAESAR Competition," Submitted to CAESAR, 2014.
【非特許文献３】Jean-Philippe Aumasson, Philipp Jovanovic and Samuel Neves, "NORX V3," Submitted to CAESAR, 2015.
【非特許文献４】Elena Andreeva, Andrey Bogdanov, Atul Luykx, Bart Mennink, Nicky Mouha, and Kan Yasuda, "How to Securely Release Unveried Plaintext in Authenticated Encryption," ASIACRYPT 2014, (eds.) Palash Sarkar and Tetsu Iwata, LNCS, Vol. 8873, pages 105-125, Springer, 2014.
【発明の概要】
【発明が解決しようとする課題】
【００２６】
従来のAPEで未検証復号データ出力を行うと、攻撃者が誤った追加データA'を指定したとしても、正しい暗号文Cに対応するメッセージMの一部が漏洩してしまうことがある。
【００２７】
この発明の目的は、上記のような点に鑑みて、未検証復号データ出力に対する安全性が向上した追加データ付き認証暗号技術を実現することである。
【課題を解決するための手段】
【００２８】
上記の課題を解決するために、この発明の追加データ付き認証暗号システムは、暗号化装置と復号装置とを含む。暗号化装置は、レート部分とキャパシティ部分とからなる暗号化ステートと、復号装置とあらかじめ共有した共通鍵とを記憶する記憶部と、暗号化ステートのレート部分を所定のビット列に、暗号化ステートのキャパシティ部分を共通鍵に設定する初期化部と、入力されたナンスを暗号化ステートのレート部分の長さに分割した各ブロックについて、前方のブロックから順に、暗号化ステートのレート部分を当該ブロックとの排他的論理和により更新した後の暗号化ステートに対して所定の置換を計算するナンス計算部と、入力されたメッセージを暗号化ステートのレート部分の長さに分割した各ブロックについて、前方のブロックから順に、暗号化ステートのレート部分を当該ブロックとの排他的論理和により更新した後の暗号化ステートに対して置換を計算し、置換を計算するたびに暗号化ステートのレート部分を暗号文のブロックとして出力するメッセージ計算部と、入力された追加データを用いて暗号化ステートのレート部分を変化させる補助入力付き置換を計算する追加データ計算部と、暗号化ステートのレート部分を暗号文の最終ブロックとして出力し、暗号化ステートのキャパシティ部分と共通鍵との排他的論理和をタグとして出力するタグ生成部と、を含む。復号装置は、レート部分とキャパシティ部分とからなる復号ステートと、暗号化装置とあらかじめ共有した共通鍵とを記憶する記憶部と、復号ステートのレート部分を暗号化装置から受け取った暗号文の最終ブロックに、復号ステートのキャパシティ部分を暗号化装置から受け取ったタグに設定する第一初期化部と、復号ステートのキャパシティ部分を共通鍵との排他的論理和により更新するタグ復号部と、暗号化装置から受け取った追加データを用いて復号ステートのレート部分を変化させる補助入力付き置換の逆置換を計算する追加データ逆計算部と、暗号化装置から受け取った暗号文のうち最終ブロック以外の各ブロックについて、後方のブロックから順に、復号ステートに対して置換の逆置換を計算し、置換の逆置換を計算するたびに復号ステートのレート部分と当該ブロックとの排他的論理和をメッセージのブロックとして出力し、当該ブロックにより復号ステートのレート部分を更新する暗号文逆計算部と、復号ステートの値を中間ステート値として記憶した後、復号ステートのレート部分を所定のビット列に、復号ステートのキャパシティ部分を共通鍵に設定する第二初期化部と、暗号化装置から受け取ったナンスを復号ステートのレート部分の長さに分割した各ブロックについて、前方のブロックから順に、復号ステートのレート部分を当該ブロックとの排他的論理和により更新した後の復号ステートに対して置換を計算するナンス計算部と、中間ステート値のキャパシティ部分と復号ステートのキャパシティ部分とが一致するとき、中間ステート値のレート部分と復号ステートのレート部分との排他的論理和をメッセージの第一ブロックとして出力する改ざん検知部と、を含む。
【発明の効果】
【００２９】
この発明によれば、追加データ付き認証暗号において、未検証復号データ出力に対する安全性が向上する。
【図面の簡単な説明】
【００３０】
【図１】図１は、従来の暗号化関数を説明するための図である。
【図２】図２は、従来の復号関数を説明するための図である。
【図３】図３は、未検証復号データ出力に対する脆弱性を説明するための図である。
【図４】図４は、追加データ付き認証暗号システムの機能構成を例示する図である。
【図５】図５は、暗号化装置の機能構成を例示する図である。
【図６】図６は、ナンス計算部の機能構成を例示する図である。
【図７】図７は、メッセージ計算部の機能構成を例示する図である。
【図８】図８は、追加データ計算部の機能構成を例示する図である。
【図９】図９は、復号装置の機能構成を例示する図である。
【図１０】図１０は、追加データ逆計算部の機能構成を例示する図である。
【図１１】図１１は、暗号文逆計算部の機能構成を例示する図である。
【図１２】図１２は、ナンス計算部の機能構成を例示する図である。
【図１３】図１３は、暗号化方法の処理手続きを例示する図である。
【図１４】図１４は、実施形態の暗号化関数の一例を説明するための図である。
【図１５】図１５は、実施形態の暗号化関数の一例を説明するための図である。
【図１６】図１６は、復号方法の処理手続きを例示する図である。
【図１７】図１７は、実施形態の復号関数の一例を説明するための図である。
【図１８】図１８は、実施形態の復号関数の一例を説明するための図である。
【発明を実施するための形態】
【００３１】
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【００３２】
この発明の実施形態は、未検証復号データ出力に対する安全性が従来よりも向上した追加データ付き認証暗号を実行する追加データ付き認証暗号システムおよび方法である。従来のAPEでは、ナンスNは追加データAの一部として扱われていたが、実施形態では、APEの追加データをナンスNとそれ以外の追加データAに分割して扱う。ナンスNはヘッダとしてメッセージMより前に処理し、追加データAはトレイラとしてメッセージMより後に処理する。
【００３３】
実施形態の追加データ付き認証暗号システムは、図４に示すように、追加データ付き認証暗号の暗号化関数を実行する暗号化装置１と、追加データ付き認証暗号の復号関数を実行する復号装置２とを含む。この実施形態では、暗号化装置１および復号装置２はそれぞれ通信網３へ接続される。通信網３は、接続される各装置が相互に通信可能なように構成された回線交換方式もしくはパケット交換方式の通信網であり、例えばインターネットやLAN（Local Area Network）、WAN（Wide Area Network）などを用いることができる。なお、各装置は必ずしも通信網３を介してオンラインで通信可能である必要はない。例えば、暗号化装置１が出力する情報を磁気テープやUSBメモリなどの可搬型記録媒体に記憶し、その可搬型記録媒体から復号装置２へオフラインで入力するように構成してもよい。
【００３４】
追加データ付き認証暗号システムに含まれる暗号化装置１は、図５に示すように、記憶部１０、入力部１１、初期化部１２、ナンス計算部１３、メッセージ計算部１４、境界設定部１５、追加データ計算部１６、タグ生成部１７、および出力部１８を含む。暗号化装置１に含まれるナンス計算部１３は、図６に示すように、分割部１３１、排他的論理和部１３２、および置換部１３３を含む。暗号化装置１に含まれるメッセージ計算部１４は、図７に示すように、分割部１４１、排他的論理和部１４２、置換部１４３、および暗号文出力部１４４を含む。暗号化装置１に含まれる追加データ計算部１６は、図８に示すように、分割部１６１、排他的論理和部１６２、および置換部１６３を含む。
【００３５】
追加データ付き認証暗号システムに含まれる復号装置２は、図９に示すように、例えば、記憶部２０、入力部２１、第一初期化部２２、タグ復号部２３、追加データ逆計算部２４、境界除去部２５、暗号文逆計算部２６、第二初期化部２７、ナンス計算部２８、改ざん検知部２９、および出力部３０を含む。復号装置２に含まれる追加データ逆計算部２４は、図１０に示すように、分割部２４１、逆置換部２４２、および排他的論理和部２４３を含む。復号装置２に含まれる暗号文逆計算部２６は、図１１に示すように、逆置換部２６１、排他的論理和部２６２、およびメッセージ出力部２６３を含む。復号装置２に含まれるナンス計算部２８は、図１２に示すように、分割部２８１、排他的論理和部２８２、および置換部２８３を含む。
【００３６】
暗号化装置１が図１３に示す各ステップの処理を行い、復号装置２が図１６に示す各ステップの処理を行うことにより実施形態の追加データ付き認証暗号方法が実現される。なお、追加データ付き認証暗号方法のうち暗号化装置１が実行する部分を暗号化方法とも呼び、復号装置２が実行する部分を復号方法とも呼ぶ。
【００３７】
暗号化装置１および復号装置２は、例えば、中央演算処理装置（CPU: Central Processing Unit）、主記憶装置（RAM: Random Access Memory）などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。暗号化装置１および復号装置２は、例えば、中央演算処理装置の制御のもとで各処理を実行する。暗号化装置１および復号装置２に入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて中央演算処理装置へ読み出されて他の処理に利用される。暗号化装置１および復号装置２の各処理部は、少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。暗号化装置１および復号装置２が備える各記憶部は、例えば、RAM（Random Access Memory）などの主記憶装置、ハードディスクや光ディスクもしくはフラッシュメモリ（Flash Memory）のような半導体メモリ素子により構成される補助記憶装置、またはリレーショナルデータベースやキーバリューストアなどのミドルウェアにより構成することができる。
【００３８】
図１３−１５を参照して、実施形態の追加データ付き認証暗号システムが実行する追加データ付き認証暗号方法のうち、暗号化装置１が実行する暗号化方法について説明する。
【００３９】
暗号化装置１の記憶部１０には、rビットのレート部分とcビットのキャパシティ部分とからなるbビットのステート（以下、復号装置２の記憶部２０に記憶されるステートと区別するために、暗号化ステートと呼ぶ）と、復号装置２との間であらかじめ共有した共通鍵Kとが記憶されている。例えば、ステートは512ビットとし、レート部分は256ビット、キャパシティ部分は256ビットに構成する（すなわち、b=512, r=256, c=256）。レート部分とキャパシティ部分の長さの比は、処理速度と安全性のトレードオフの関係となっている。レート部分の長さが大きくなると、処理速度は向上するが安全性は低下する。逆に、キャパシティ部分の長さが大きくなると、安全性が向上するが処理速度が低下する。したがって、b, r, cの各値は、所望の処理速度と安全性のバランスを鑑みて適宜設計すればよい。
【００４０】
ステップＳ１１において、暗号化装置１の入力部１１へ、ナンスNと追加データAとメッセージMとの組(N, A, M)が入力される。ナンスNは従来のAPEと同様に追加データの一部として入力されてもよく、その場合、入力部１１は入力された追加データをナンスNと追加データAとに分割する。なお、ナンスNは通常固定長であるため、例えば、入力された追加データの先頭から所定のビット数をナンスNとし、残りを追加データAとするなどにより、容易に分割することが可能である。ナンスN、追加データA、およびメッセージMはいずれも長さをrビットの倍長とする。入力部１１は、ナンスNをナンス計算部１３へ、メッセージMをメッセージ計算部１４へ、追加データAを追加データ計算部１６へそれぞれ入力する。
【００４１】
ステップＳ１２において、暗号化装置１の初期化部１２は、記憶部１０に記憶されている暗号化ステートのうち、レート部分の値を0（すなわち、すべてのビットが0のビット列）に、キャパシティ部分の値を共通鍵Kの値に設定して初期化する。
【００４２】
ステップＳ１３において、暗号化装置１のナンス計算部１３は、入力部１１からナンスNを受け取り、そのナンスNを用いて記憶部１０に記憶された暗号化ステートの値を更新する。ナンス計算部１３の分割部１３１は、ナンスNをrビット（すなわち、暗号化ステートのレート部分と同じ長さ）のブロックに分割する。ナンス計算部１３の排他的論理和部１３２は、暗号化ステートのレート部分とナンスNのブロックとの排他的論理和を計算し、その計算結果により暗号化ステートのレート部分を更新する。ナンス計算部１３の置換部１３３は、bビットの暗号化ステート全体に対し、あらかじめ定めたbビットの置換f:{0, 1}b→{0, 1}bを計算し、その計算結果を新たな暗号化ステートの値とする。置換fは、例えば、非特許文献２に記載された置換を用いることができる。ナンス計算部１３は、上記の操作をナンスNの第一ブロックから最終ブロックまで前方のブロックから順に実行する。
【００４３】
ステップＳ１４において、暗号化装置１のメッセージ計算部１４は、入力部１１からメッセージMを受け取り、そのメッセージMを用いて記憶部１０に記憶された暗号化ステートの値を更新する。メッセージ計算部１４の分割部１４１は、メッセージMをrビットのブロックに分割する。メッセージ計算部１４の排他的論理和部１４２は、暗号化ステートのレート部分とメッセージMのブロックとの排他的論理和を計算し、その計算結果により暗号化ステートのレート部分を更新する。メッセージ計算部１４の置換部１４３は、bビットの暗号化ステート全体に対し、bビットの置換fを計算し、その計算結果を新たな暗号化ステートの値とする。メッセージ計算部１４の暗号文出力部１４４は、暗号化ステートのレート部分の値を暗号文Cのブロックとして出力する。メッセージ計算部１４は、上記の操作をメッセージMの第一ブロックから最終ブロックまで前方のブロックから順に実行する。ただし、ここでは、メッセージMの最終ブロックに対応する暗号文Cのブロックは出力しない。
【００４４】
ステップＳ１５において、暗号化装置１の境界設定部１５は、暗号化ステートのキャパシティ部分と整数値1（すなわち、最下位ビットのみが1のビット列）との排他的論理和を計算し、その計算結果により暗号化ステートのキャパシティ部分を更新する。言い換えると、境界設定部１５は、暗号化ステートの最下位ビットのみを反転させる。この操作は、受信者が暗号文Cと追加データAとの境界を判別できるようにするために行われるものである。
【００４５】
ステップＳ１６において、暗号化装置１の追加データ計算部１６は、入力部１１から追加データAを受け取り、その追加データAを用いて記憶部１０に記憶された暗号化ステートの値を更新する。追加データ計算部１６は、図１４に示すように、補助入力付き置換f':{0, 1}b→{0, 1}bを、bビットの暗号化ステートを入力とし、追加データAを補助入力として計算し、その計算結果を新たな暗号化ステートの値とする。補助入力付き置換f'は、補助入力の値を用いて入力された値を変化させ、かつ、同じ補助入力を用いて置換後の値から入力された値を復元する逆置換f'-1:{0, 1}b→{0, 1}bを定義できる置換である。具体的には、図１５に示すように、補助入力付き置換f'は、置換fを用いて実装することができる。この場合、追加データ計算部１６は以下のように構成する。追加データ計算部１６の分割部１６１は、追加データAをrビットのブロックに分割する。追加データ計算部１６の排他的論理和部１６２は、暗号化ステートのレート部分と追加データAのブロックとの排他的論理和を計算し、その計算結果により暗号化ステートのレート部分を更新する。追加データ計算部１６の置換部１６３は、bビットの暗号化ステート全体に対し、bビットの置換fを計算し、その計算結果を新たな暗号化ステートの値とする。追加データ計算部１６は、上記の操作を追加データAの第一ブロックから最終ブロックまで前方のブロックから順に実行する。
【００４６】
ステップＳ１７において、暗号化装置１のタグ生成部１７は、暗号化ステートのキャパシティ部分と共通鍵Kとの排他的論理和を計算し、その計算結果により暗号化ステートのキャパシティ部分を更新する。タグ生成部１７は、暗号化ステートのレート部分を暗号文Cの最終ブロックとして出力し、暗号化ステートのキャパシティ部分をタグTとして出力する。
【００４７】
ステップＳ１８において、暗号化装置１の出力部１８は、暗号文CとタグTと追加データAとナンスNとの組(C, T, A, N)を復号装置２へ送信する。
【００４８】
図１６−１８を参照して、実施形態の追加データ付き認証暗号システムが実行する追加データ付き認証暗号方法のうち、復号装置２が実行する復号方法について説明する。
【００４９】
復号装置２の記憶部２０には、rビットのレート部分とcビットのキャパシティ部分とからなるbビットのステート（以下、暗号化装置１の記憶部１０に記憶されるステートと区別するために、復号ステートと呼ぶ）と、暗号化装置１との間であらかじめ共有した共通鍵Kとが記憶されている。b, r, cの各値は、暗号化装置１の記憶部１０に記憶された暗号化ステートと同じものとする。
【００５０】
ステップＳ２１において、復号装置２の入力部２１へ、暗号化装置１から受信した暗号文CとタグTと追加データAとナンスNとの組(C, T, A, N)が入力される。入力部２１は、暗号文Cの最終ブロックとタグTとを第一初期化部２２へ、追加データAを追加データ逆計算部２４へ、暗号文Cの最終ブロック以外の各ブロックを暗号文逆計算部２６へ、ナンスNをナンス計算部２８へそれぞれ入力する。
【００５１】
ステップＳ２２において、復号装置２の第一初期化部２２は、入力部２１から暗号文Cの最終ブロックとタグTとを受け取り、記憶部２０に記憶されている復号ステートのうち、レート部分の値を暗号文Cの最終ブロックの値に、キャパシティ部分の値をタグTの値に設定して初期化する。
【００５２】
ステップＳ２３において、復号装置２のタグ復号部２３は、復号ステートのキャパシティ部分と共通鍵Kとの排他的論理和を計算し、その計算結果により復号ステートのキャパシティ部分を更新する。
【００５３】
ステップＳ２４において、復号装置２の追加データ逆計算部２４は、入力部２１から追加データAを受け取り、その追加データAを用いて記憶部２０に記憶された復号ステートの値を更新する。追加データ逆計算部２４は、図１７に示すように、補助入力付き置換f'の逆置換f'-1:{0, 1}b→{0, 1}bを、bビットの復号ステートを入力とし、追加データAを補助入力として計算し、その計算結果を新たな復号ステートの値とする。補助入力付き置換f'の逆置換f'-1は、具体的には、図１８に示すように、置換fの逆置換f-1を用いて実装することができる。この場合、追加データ逆計算部２４は以下のように構成する。追加データ逆計算部２４の分割部２４１は、追加データAをrビットのブロックに分割する。追加データ逆計算部２４の逆置換部２４２は、bビットの復号ステート全体に対し、bビットの置換fの逆置換f-1を計算し、その計算結果を新たな復号ステートの値とする。追加データ逆計算部２４の排他的論理和部２４３は、復号ステートのレート部分と追加データAのブロックとの排他的論理和を計算し、その計算結果により復号ステートのレート部分を更新する。追加データ逆計算部２４は、上記の操作を追加データAの最終ブロックから第一ブロックまで後方のブロックから順に実行する。
【００５４】
ステップＳ２５において、復号装置２の境界除去部２５は、復号ステートのキャパシティ部分と整数値1との排他的論理和を計算し、その計算結果により復号ステートのキャパシティ部分を更新する。すなわち、境界除去部２５は、復号ステートの最下位ビットのみを反転させる。
【００５５】
ステップＳ２６において、復号装置２の暗号文逆計算部２６は、入力部２１から暗号文Cの最終ブロック以外の各ブロックを受け取り、その暗号文Cの各ブロックを用いて記憶部２０に記憶された復号ステートの値を更新する。暗号文逆計算部２６の逆置換部２６１は、bビットの復号ステート全体に対し、置換fの逆置換f-1を計算し、その計算結果を新たな復号ステートの値とする。暗号文逆計算部２６の排他的論理和部２６２は、復号ステートのレート部分と暗号文Cのブロックとの排他的論理和を計算し、その暗号文Cのブロックにより復号ステートのレート部分を更新する。暗号文逆計算部２６のメッセージ出力部２６３は、復号ステートのレート部分と暗号文Cのブロックとの排他的論理和をメッセージMのブロックとして出力する。暗号文逆計算部２６は、上記の操作を暗号文Cの最終ブロックの一つ前のブロックから第一ブロックまで後方のブロックから順に実行する。
【００５６】
ステップＳ２７において、復号装置２の第二初期化部２７は、復号ステートのレート部分の値を中間ステート値Srとし、復号ステートのキャパシティ部分の値を中間ステート値Scとして、例えば記憶部２０などに記憶する。その後、記憶部２０に記憶されている復号ステートのうち、レート部分の値を0に、キャパシティ部分の値を共通鍵Kの値に設定して初期化する。
【００５７】
ステップＳ２８において、復号装置２のナンス計算部２８は、入力部２１からナンスNを受け取り、そのナンスNを用いて記憶部２０に記憶された復号ステートの値を更新する。ナンス計算部２８の分割部２８１は、ナンスNをrビットのブロックに分割する。ナンス計算部２８の排他的論理和部２８２は、復号ステートのレート部分とナンスNのブロックとの排他的論理和を計算し、その計算結果により復号ステートのレート部分を更新する。ナンス計算部２８の置換部２８３は、bビットの復号ステート全体に対し、bビットの置換fを計算し、その計算結果を新たな復号ステートの値とする。ナンス計算部２８は、上記の操作をナンスNの第一ブロックから最終ブロックまで前方のブロックから順に実行する。
【００５８】
ステップＳ２９において、復号装置２の改ざん検知部２９は、復号ステートのレート部分の値を中間ステート値S'rとし、復号ステートのキャパシティ部分の値を中間ステート値S'cとして、例えば記憶部２０などに記憶する。その後、記憶部２０に記憶された中間ステート値Scと中間ステート値S'cとを比較する。２つの中間ステート値が等しい場合（Sc=S'c）は、ステップＳ３０１へ処理を進め、記憶部２０に記憶された中間ステート値Srと中間ステート値S'rとの排他的論理和を、メッセージMの第一ブロックとして出力部３０から出力する。２つの中間ステート値が等しくない場合は、ステップＳ３０２へ処理を進め、復号に失敗した旨を表すエラーコードを出力部３０から出力する。
【００５９】
上記のように構成することにより、実施形態の追加データ付き認証暗号技術は、未検証復号データ出力に対する安全性が向上する。実施形態の追加データ付き認証暗号技術では、未検証復号データ出力が行われる際、攻撃者が正しい暗号文Cの一部を改変した暗号文C'と正しいタグTを指定するだけでなく、正しい追加データAも指定しない限り、正しいメッセージMが漏洩することはない。正しい追加データAから1ビットでも誤っている追加データA'を使った場合、メッセージMの最終ブロックを計算する段階でステートの値が誤った状態となっているため、メッセージMの全ブロックが誤ったデータとなる。そのため、未検証復号データ出力を行っても正しいメッセージMが漏洩することがなく、未検証復号データ出力に対する安全性が向上している。
【００６０】
以上、この発明の実施の形態について説明したが、具体的な構成は、これらの実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲で適宜設計の変更等があっても、この発明に含まれることはいうまでもない。実施の形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【００６１】
［プログラム、記録媒体］
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【００６２】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００６３】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００６４】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００６５】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【００６６】
１  暗号化装置
２  復号装置
３  通信網
１０  記憶部
１１  入力部
１２  初期化部
１３  ナンス計算部
１４  メッセージ計算部
１５  境界設定部
１６  追加データ計算部
１７  タグ生成部
１８  出力部
２０  記憶部
２１  入力部
２２  第一初期化部
２３  タグ復号部
２４  追加データ逆計算部
２５  境界除去部
２６  暗号文逆計算部
２７  第二初期化部
２８  ナンス計算部
２９  改ざん検知部
３０  出力部
【図１】
2019015917.tif 000003
【図２】
2019015917.tif 000004
【図３】
2019015917.tif 000005
【図４】
2019015917.tif 000006
【図５】
2019015917.tif 000007
【図６】
2019015917.tif 000008
【図７】
2019015917.tif 000009
【図８】
2019015917.tif 000010
【図９】
2019015917.tif 000011
【図１０】
2019015917.tif 000012
【図１１】
2019015917.tif 000013
【図１２】
2019015917.tif 000014
【図１３】
2019015917.tif 000015
【図１４】
2019015917.tif 000016
【図１５】
2019015917.tif 000017
【図１６】
2019015917.tif 000018
【図１７】
2019015917.tif 000019
【図１８】
2019015917.tif 000020