(57)【特許請求の範囲】
【請求項１】
複数の秘密計算装置を含み、nを1以上の整数とし、n個の値x:=(x1, …, xn)の秘匿文[x]:=([x1], …, [xn])を入力とし、1以上n以下の各整数jについて、yj=f(xj)である関数値y:=(y1, …, yn)の近似値z:=(z1, …, zn)の秘匿文[z]:=([z1], …, [zn])を計算する秘密一括近似システムであって、
mを2以上の整数とし、gを上記関数fをm区間に分割したときの各区間を近似する多項式とし、iを1以上m以下の各整数とし、Riを上記区間とし、piを上記区間Riに対応する上記多項式gのパラメータとし、
上記秘密計算装置は、
各整数jについて、ajを上記値xjが含まれる上記区間Riに対応する上記パラメータpiとして、上記値x:=(x1, …, xn)に対応するパラメータa:=(a1, …, an)の秘匿文[a]:=([a1], …, [an])を取得するパラメータ取得部と、
上記パラメータaの秘匿文[a]を用いて上記値xの秘匿文[x]を入力とする上記多項式g([x], [a])を計算して上記関数値yの近似値zの秘匿文[z]を得る多項式計算部と、
を含む秘密一括近似システム。
【請求項２】
請求項１に記載の秘密一括近似システムであって、
上記パラメータ取得部は、BatchMapを秘密計算一括写像アルゴリズムとし、uiを上記区間Riの境界を示す値とし、ui<ui+1とし、次式により上記パラメータa:=(a1, …, an)の秘匿文[a]:=([a1], …, [an])を取得するものである、
【数６】
0006977882.tif 000007
秘密一括近似システム。
【請求項３】
請求項２に記載の秘密一括近似システムであって、
上記関数fは定義域がX:=[0, 1000)であるシグモイド関数であり、m≦5000であり、上記多項式gは３次多項式である、
秘密一括近似システム。
【請求項４】
nを1以上の整数とし、n個の値x:=(x1, …, xn)の秘匿文[x]:=([x1], …, [xn])を入力とし、1以上n以下の各整数jについて、yj=f(xj)である関数値y:=(y1, …, yn)の近似値z:=(z1, …, zn)の秘匿文[z]:=([z1], …, [zn])を計算する秘密一括近似システムに含まれる秘密計算装置であって、
mを2以上の整数とし、gを上記関数fをm区間に分割したときの各区間を近似する多項式とし、iを1以上m以下の各整数とし、Riを上記区間とし、piを上記区間Riに対応する上記多項式gのパラメータとし、
各整数jについて、ajを上記値xjが含まれる上記区間Riに対応する上記パラメータpiとして、上記値x:=(x1, …, xn)に対応するパラメータa:=(a1, …, an)の秘匿文[a]:=([a1], …, [an])を取得するパラメータ取得部と、
上記パラメータaの秘匿文[a]を用いて上記値xの秘匿文[x]を入力とする上記多項式g([x], [a])を計算して上記関数値yの近似値zの秘匿文[z]を得る多項式計算部と、
を含む秘密計算装置。
【請求項５】
複数の秘密計算装置を含み、nを1以上の整数とし、n個の値x:=(x1, …, xn)の秘匿文[x]:=([x1], …, [xn])を入力とし、1以上n以下の各整数jについて、yj=f(xj)である関数値y:=(y1, …, yn)の近似値z:=(z1, …, zn)の秘匿文[z]:=([z1], …, [zn])を計算する秘密一括近似システムが実行する秘密一括近似方法であって、
mを2以上の整数とし、gを上記関数fをm区間に分割したときの各区間を近似する多項式とし、iを1以上m以下の各整数とし、Riを上記区間とし、piを上記区間Riに対応する上記多項式gのパラメータとし、
上記秘密計算装置のパラメータ取得部が、各整数jについて、ajを上記値xjが含まれる上記区間Riに対応する上記パラメータpiとして、上記値x:=(x1, …, xn)に対応するパラメータa:=(a1, …, an)の秘匿文[a]:=([a1], …, [an])を取得し、
上記秘密計算装置の多項式計算部が、上記パラメータaの秘匿文[a]を用いて上記値xの秘匿文[x]を入力とする上記多項式g([x], [a])を計算して上記関数値yの近似値zの秘匿文[z]を得る、
秘密一括近似方法。
【請求項６】
請求項４に記載の秘密計算装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、秘密計算で関数の近似計算を行う技術に関する。
【背景技術】
【０００２】
暗号化された数値を復元することなく特定の演算結果を得る方法として、秘密計算と呼ばれる方法がある（例えば、非特許文献１参照）。非特許文献１に記載された方法では、３つの秘密計算装置に数値の断片を分散させるという暗号化を行い、３つの秘密計算装置が協調計算を行うことにより、数値を復元することなく、加減算、定数加算、乗算、定数倍、論理演算（否定、論理積、論理和、排他的論理和）、データ形式変換（整数、二進数）の結果を３つの秘密計算装置に分散された状態、すなわち暗号化されたまま保持させることができる。【０００３】
指数関数や対数関数など複雑な関数の計算を秘密計算上で実現する方法として、加減算と乗算の組み合わせで計算できる多項式に近似して計算することが行われている。例えば、非特許文献２には指数関数を多項式に近似して計算する方法が記載されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】千田浩司、濱田浩気、五十嵐大、高橋克巳、“軽量検証可能3パーティ秘匿関数計算の再考”、CSS、2010年
【非特許文献２】Liina Kamm and Jan Willemson, "Secure floating point arithmetic and private satellite collision analysis," International Journal of Information Security,Vol. 14, No. 6, pp. 531-548, 2015.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、複雑な関数を多項式で近似する場合、近似の精度を上げるために多項式の次数を上げる必要がある。例えば、非特許文献２では指数関数の計算を実現するために４次多項式による近似式を計算している。また、ロジスティック回帰やニューラルネットワークで使われるシグモイド関数は、十分な精度を出すためには少なくとも10次の多項式が必要となる。多項式の次数nが上がるとO(n)で加減算や乗算の回数が増加するため計算時間が増大する。【０００６】
この発明の目的は、上記のような技術的課題に鑑みて、秘密計算で複雑な関数を計算する際に近似の精度を下げずに計算時間を低減することである。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、この発明の一態様の秘密一括近似システムは、複数の秘密計算装置を含み、nを1以上の整数とし、n個の値x:=(x1, …, xn)の秘匿文[x]:=([x1], …, [xn])を入力とし、1以上n以下の各整数jについて、yj=f(xj)である関数値y:=(y1, …,yn)の近似値z:=(z1, …, zn)の秘匿文[z]:=([z1], …, [zn])を計算する秘密一括近似システムであって、mを2以上の整数とし、gを関数fをm区間に分割したときの各区間を近似する多項式とし、iを1以上m以下の各整数とし、Riを区間とし、piを区間Riに対応する多項式gのパラメータとし、秘密計算装置は、各整数jについて、ajを値xjが含まれる区間Riに対応するパラメータpiとして、値x:=(x1, …, xn)に対応するパラメータa:=(a1, …, an)の秘匿文[a]:=([a1], …, [an])を取得するパラメータ取得部と、パラメータaの秘匿文[a]を用いて値xの秘匿文[x]を入力とする多項式g([x], [a])を計算して関数値yの近似値zの秘匿文[z]を得る多項式計算部と、を含む。
【発明の効果】
【０００８】
この発明の秘密一括近似技術によれば、秘密計算で複雑な関数を計算する際に、従来よりも低い次数の多項式で近似することができるため、近似の精度を下げずに計算時間を低減することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、従来技術の近似方法を説明するための図である。
【図２】図２は、従来技術の処理の流れを説明するための図である。
【図３】図３は、本発明の近似方法を説明するための図である。
【図４】図４は、本発明の処理の流れを説明するための図である。
【図５】図５は、秘密一括近似システムの機能構成を例示する図である。
【図６】図６は、秘密計算装置の機能構成を例示する図である。
【図７】図７は、秘密一括近似方法の処理手続きを例示する図である。
【発明を実施するための形態】
【００１０】
はじめに、この明細書における表記方法および用語の定義について説明する。
【００１１】
＜表記方法＞
ある値aを暗号化や秘密分散などにより秘匿化した値をaの秘匿文と呼び、[a]と表記する。また、aを[a]の平文と呼ぶ。秘匿化が秘密分散である場合は、[a]により各秘密計算装置が持つ秘密分散の断片の集合を参照する。
【００１２】
変数の定義域における[a, b]（角括弧）は閉区間を表し、(a, b)（丸括弧）は開区間を表す。例えば、i∈[a, b]はiがa以上b以下の値を取ることを表す。また、i∈[a, b)はiがa以上b未満の値を取ることを表す。
【００１３】
＜加算、減算、乗算＞
秘匿文に対する加算、減算、乗算の各演算は、２つの値a, bの秘匿文[a], [b]を入力とし、それぞれa+b, a-b, abの計算結果c1, c2, c3の秘匿文[c1], [c2], [c3]を計算する。これらの演算の実行をそれぞれ次式のように記述する。
【００１４】
【数１】
0006977882.tif 000002
【００１５】
誤解を招く恐れのない場合は、Add([a], [b]), Sub([a], [b]), Mul([a], [b])をそれぞれ[a]+[b], [a]-[b], [a]×[b]と略記する。
【００１６】
＜一括写像＞
一括写像の演算は、n個の値(x1, …, xn)（ただし、各xjは後述のumに関してxj<umを満たすものとする）の秘匿文([x1], …, [xn])およびm個の値(u1, …, um)（ただしui<ui+1）とm個の値(a1, …, am)との組を入力とし、n個の値(y1, …, yn)（ただし、各yiはjをj=1のときxi<ujを満たし、それ以外のときuj-1≦xi<ujを満たす値として、yi=ajを満たすものとする）の秘匿文([y1], …, [yn])を計算する。この演算の実行を次式のように記述する。  
【００１７】
【数２】
0006977882.tif 000003
【００１８】
一括写像を秘密計算で効率的に計算する秘密計算一括写像アルゴリズムが、下記参考文献１および２に記載されている。
【００１９】
〔参考文献１〕濱田浩気, 五十嵐大, 千田浩司, “秘匿計算上の一括写像アルゴリズム”, 電子情報通信学会論文誌A, Vol.J96-A, No.4, pp.157-165, 2013
〔参考文献２〕Peeter Laud, "Parallel Oblivious Array Access for Secure Multiparty Computation and Privacy-Preserving Minimum Spanning Trees", PoPETs 2015(2), pp. 188-205, 2015.
【００２０】
［発明の概要］
この発明では、複雑な関数であっても区間を限定すれば低次の多項式でも十分な精度で近似できることを利用する。具体的には、関数を複数の区間に分割し、各区間をより次数の低い多項式で近似することで、関数全体を複数の低次の多項式で近似する。実際に計算する際には、入力がどの区間に含まれるかを特定し、その区間に該当するパラメータを用いて低次の多項式を計算する。これにより、多数の計算を一括で行う場合に、より低い次数の近似式で従来と同等精度の近似を実現することができる。多項式の計算時間は次数に比例するため、近似の精度を下げずに全体として計算時間を削減することができる。
【００２１】
図１に従来技術により複雑な関数を多項式近似で計算する具体例を示す。計算対象の関数f(x)は上下のピークが５つあるため、多項式g(x, a)で近似するためには少なくとも６次の多項式が必要となる。実際には十分な精度を得るために、より高い次数の多項式で近似する。例えば、多項式g(x, a)のパラメータaはa:=(b, c, d, e, f, g, h)であり、多項式g(x, a)はg(x, a)=bx6+cx5+dx4+ex3+fx2+gx+hと定義できる。この場合、１つの解を求めるために必要な計算数は乗算11回、加減算６回となる。
【００２２】
図２に従来技術の処理の流れを示す。まず、関数f(x)を近似する多項式g(x, a)のパラメータaを計算する。次に、入力値x:=(x1, …, xn)の秘匿文[x]:=([x1], …, [xn])とパラメータaとを用いて、1以上n以下の各整数jについて多項式[zj]=g([xj], a)を計算し、関数値y:=(y1, …, yn)の近似値z:=(z1, …, zn)の秘匿文[z]:=([z1], …, [zn])を得る。
【００２３】
図３に本発明により複雑な関数を多項式近似で計算する具体例を示す。計算対象の関数f(x)の定義域をm個の区間に分割し、各区間を2次多項式（すなわち２次関数）で近似する。このとき、多項式g(x, a)のパラメータaはa:=(b, c, d)であり、多項式g(x, a)はg(x, a)=bx2+cx+dと定義できる。この場合、１つの解を求めるために必要な計算数は乗算３回、加減算２回に低減することができる。
【００２４】
図４に本発明の処理の流れを示す。まず、関数f(x)の各区間Ri（i=1, …, m）を近似する多項式g(x, a)のパラメータpiを計算する。次に、入力値x:=(x1, …, xn)の秘匿文[x]:=([x1], …, [xn])および区間(R1, …, Rm)とパラメータ(p1, …, pm)との組を用いてn個のパラメータの秘匿文[a]:=([a1], …, [an])を計算する。ここで、[aj]はxjが属する区間Riに対応するパラメータpiの秘匿文である。最後に、入力値x:=(x1, …, xn)の秘匿文[x]:=([x1], …, [xn])とパラメータa:=(a1, …, an)の秘匿文[a]:=([a1], …, [an])とを用いて、1以上n以下の各整数jについて多項式[zj]=g([xj], [aj])を計算し、関数値y:=(y1, …, yn)の近似値z:=(z1, …, zn)の秘匿文[z]:=([z1], …, [zn])を得る。
【００２５】
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【００２６】
［第一実施形態］
図５を参照して、第一実施形態の秘密一括近似システム１００の構成例を説明する。秘密一括近似システム１００は、K（≧2）台の秘密計算装置１1, …, １Kを含む。本形態では、秘密計算装置１1, …, １Kはそれぞれ通信網９へ接続される。通信網９は、接続される各装置が相互に通信可能なように構成された回線交換方式もしくはパケット交換方式の通信網であり、例えばインターネットやLAN（Local Area Network）、WAN（Wide Area Network）などを用いることができる。なお、各装置は必ずしも通信網９を介してオンラインで通信可能である必要はない。例えば、秘密計算装置１1, …, １Kへ入力する情報を磁気テープやUSBメモリなどの可搬型記録媒体に記憶し、その可搬型記録媒体から秘密計算装置１1, …, １Kへオフラインで入力するように構成してもよい。
【００２７】
図６を参照して、本形態の秘密一括近似システム１００に含まれる秘密計算装置１k（k=1, …, K）の構成例を説明する。秘密計算装置１kは、例えば、図６に示すように、記憶部１０、入力部１１、パラメータ取得部１２、多項式計算部１３、および出力部１４を含む。この秘密計算装置１k（k=1, …, K）が他の秘密計算装置１k'（k'=1, …, K、ただしk≠k'）と協調しながら後述する各ステップの処理を行うことにより本形態の秘密一括近似方法が実現される。
【００２８】
秘密計算装置１kは、例えば、中央演算処理装置（CPU: Central Processing Unit）、主記憶装置（RAM: Random Access Memory）などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。秘密計算装置１kは、例えば、中央演算処理装置の制御のもとで各処理を実行する。秘密計算装置１kに入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて中央演算処理装置へ読み出されて他の処理に利用される。秘密計算装置１kの各処理部は、少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。秘密計算装置１kが備える各記憶部は、例えば、RAM（Random Access Memory）などの主記憶装置、ハードディスクや光ディスクもしくはフラッシュメモリ（Flash Memory）のような半導体メモリ素子により構成される補助記憶装置、またはリレーショナルデータベースやキーバリューストアなどのミドルウェアにより構成することができる。
【００２９】
図７を参照して、本形態の秘密一括近似システム１００が実行する秘密一括近似方法の処理手続きを説明する。
【００３０】
各秘密計算装置１kの記憶部１０には、多項式g(x, a)および区間とパラメータの組の列((R1, p1), …, (Rm, pm))が記憶されている。多項式g(x, a)は計算対象の関数f(x)を所定のm区間に分割したときの各区間を近似する多項式であり、関数f(x)全体を近似したときの多項式よりも低次の多項式である。aは多項式g(x, a)を定義するパラメータであり、例えば各項の係数を並べた配列である。Ri（i=1, …, m）は関数f(x)をm区間に分割したときの各区間を示す情報である。pi（i=1, …, m）は関数f(x)の区間Riを多項式g(x, a)で近似するときのパラメータである。
【００３１】
ステップＳ１において、各秘密計算装置１kの入力部１１は、計算対象とするn個の値x:=(x1, …, xn)の秘匿文[x]:=([x1], …, [xn])を入力として受け取る。入力部１１は、値xの秘匿文[x]をパラメータ取得部１２へ出力する。
【００３２】
ステップＳ２において、各秘密計算装置１kのパラメータ取得部１２は、入力部１１から値xの秘匿文[x]を受け取り、1以上n以下の各整数jについて、記憶部１０に記憶された区間とパラメータの組の列((R1, p1), …, (Rm, pm))から∀j∈[1, n], ∃i s.t. aj=pi,xj∈Riを満たすn個のパラメータa:=(a1, …, an)の秘匿文[a]:=([a1], …, [an])を取得する。すなわち、1以上n以下の各整数jについて、ajを値xjに対応する区間Riのパラメータpiとし、値x1, …, xnそれぞれに対応するパラメータa1, …, anの秘匿文[a1], …, [an]を生成する。パラメータ取得部１２は、値xの秘匿文[x]とパラメータaの秘匿文[a]とを多項式計算部１３へ出力する。
【００３３】
ステップＳ３において、各秘密計算装置１kの多項式計算部１３は、パラメータ取得部１２から値xの秘匿文[x]とパラメータaの秘匿文[a]とを受け取り、1以上n以下の各整数jについて、記憶部１０に記憶された多項式g(x, a)に従って、[zj]=g([xj], [aj])を計算する。多項式計算部１３は、関数値y:=(y1, …, yn)の近似値z:=(z1, …, zn)の秘匿文[z]:=([z1], …, [zn])を出力部１４へ出力する。
【００３４】
ステップＳ４において、各秘密計算装置１kの出力部１４は、多項式計算部１３から関数値yの近似値zの秘匿文[z]を受け取り、秘密計算装置１kの出力とする。
【００３５】
［第二実施形態］
第二実施形態では、より具体的に、定義域がX:=[0, 1000)である次式のシグモイド関数を２次関数で近似する場合の例を示す。
【００３６】
【数３】
0006977882.tif 000004
【００３７】
以下では、第一実施形態との相違点を中心に説明する。
【００３８】
各秘密計算装置１kの記憶部１０には、多項式g(x, a)および区間とパラメータの組の列((R1, p1), …, (Rm, pm))が記憶されている。本形態の多項式g(x, a)は、a:=(b, c, d)をパラメータとし、g(x, a)=bx2+cx+dと定義される。本形態の区間RiはRi:=[li, ui) for i∈[1, m]（ただし、l1=0, um=1000, ui=li+1, li≦uifor i∈[1, m）とする）と定義される。本形態のパラメータpiはpi:=(bi, ci, di)と定義される。
【００３９】
本形態の各秘密計算装置１kのパラメータ取得部１２は、秘匿文[x]と(u1, …, um), ((b1, c1, d1), …, (bm, cm, dm))を入力として次式のように秘密計算一括写像アルゴリズムを実行することにより、パラメータa:=(a1, …, an)の秘匿文[a]:=([a1], …, [an])を取得する。
【００４０】
【数４】
0006977882.tif 000005
【００４１】
ここで、ajはxj∈Riを満たすあるiについて、aj=(bi, ci, di)を満たす。
【００４２】
本形態の各秘密計算装置１kの多項式計算部１３は、1以上n以下の各整数jについて、[aj]:=([b'j], [c'j], [d'j])として、次式を計算することにより、近似値zjの秘匿文[zj]を得る。
【００４３】
【数５】
0006977882.tif 000006
【００４４】
この発明は、複雑な関数であっても区間を限定すれば低次の多項式でも十分な精度で近似できることを利用する。具体的には、予め関数を所定数の区間に分割し、各区間を低次の多項式で近似するためのパラメータを求めておき、入力値がどの区間に含まれるかに応じてその入力値に対応するパラメータを取得することで、低次の多項式による近似を行う。これにより、多数の計算を一括で行う場合に、従来と同等精度の近似をより低い次数の多項式で実現することができる。特に、複数の入力値に対して秘密計算一括写像アルゴリズムを用いて各入力値に対応するパラメータを取得することで、より効率的に多項式近似を行うことができる。例えば、ロジスティック回帰の学習の各反復計算で大量に必要とされるシグモイド関数では、ロジスティック回帰で十分な精度を出すには実験的に少なくとも10次必要との報告があるが（参考文献３参照）、例えば区間数を5000とすれば倍精度相当の精度での近似を３次の多項式で実現でき、実数の乗算と加算の回数を３割に削減することができる。
【００４５】
〔参考文献３〕Payman Mohassel and Yupeng Zhang, "Secureml: A system for scalable privacy-preserving machine learning," In 2017 IEEE Symposium on Security and Privacy, SP 2017, San Jose, CA, USA, May 22-26, 2017, pp. 19-38. IEEE Computer Society, 2017.
【００４６】
以上、この発明の実施の形態について説明したが、具体的な構成は、これらの実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲で適宜設計の変更等があっても、この発明に含まれることはいうまでもない。実施の形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【００４７】
［プログラム、記録媒体］
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【００４８】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００４９】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００５０】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００５１】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図１】
0006977882.tif 000008
【図２】
0006977882.tif 000009
【図３】
0006977882.tif 000010
【図４】
0006977882.tif 000011
【図５】
0006977882.tif 000012
【図６】
0006977882.tif 000013
【図７】
0006977882.tif 000014