IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

<>
  • 特開-メモリシステム 図1
  • 特開-メモリシステム 図2
  • 特開-メモリシステム 図3
  • 特開-メモリシステム 図4
  • 特開-メモリシステム 図5
  • 特開-メモリシステム 図6
  • 特開-メモリシステム 図7
  • 特開-メモリシステム 図8
  • 特開-メモリシステム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025025571
(43)【公開日】2025-02-21
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   G06F 21/62 20130101AFI20250214BHJP
   G06F 21/64 20130101ALI20250214BHJP
   H04L 9/32 20060101ALI20250214BHJP
【FI】
G06F21/62
G06F21/64
H04L9/32 200B
H04L9/32 200E
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023130441
(22)【出願日】2023-08-09
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】100120031
【弁理士】
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100107582
【弁理士】
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100118843
【弁理士】
【氏名又は名称】赤岡 明
(72)【発明者】
【氏名】日下 雅博
(57)【要約】
【課題】不正な侵入を検知することができるメモリシステムを提供すること。
【解決手段】本実施形態に係るメモリシステムは、第1記憶部を備える。第2記憶部は、外部から第1記憶部へのアクセスの履歴を示すログ情報を記憶する。第3記憶部は、第1秘密鍵および第1公開鍵を記憶する。演算部は、ログ情報をハッシュ関数に入力することによって、第1ハッシュ値に変換し、第1秘密鍵を用いて第1ハッシュ値に署名し、第1署名を生成する。演算部は、第2記憶部から読み出したログ情報をハッシュ関数に入力することによって第2ハッシュ値に変換し、第1秘密鍵とペアを成す第1公開鍵および第2ハッシュ値を用いて署名検証を行う。
【選択図】図1
【特許請求の範囲】
【請求項1】
第1記憶部と、
外部から前記第1記憶部へのアクセスの履歴を示すログ情報を記憶する第2記憶部と、
第1秘密鍵および第1公開鍵を記憶する第3記憶部と、
前記ログ情報をハッシュ関数に入力することによって、第1ハッシュ値に変換し、第1秘密鍵を用いて前記第1ハッシュ値に署名し、第1署名を生成する演算部とを備え、
前記演算部は、
前記第2記憶部から読み出した前記ログ情報を前記ハッシュ関数に入力することによって第2ハッシュ値に変換し、
前記第1秘密鍵とペアを成す第1公開鍵および前記第2ハッシュ値を用いて署名検証を行う、
メモリシステム。
【請求項2】
前記演算部は、
前記署名検証に成功した場合に、外部から前記第1記憶部へアクセスすることを制限せず、
前記署名検証に失敗した場合に、外部から前記第1記憶部へアクセスすることを制限する、
請求項1に記載のメモリシステム。
【請求項3】
前記演算部は、
前記署名検証に成功した場合に、外部から前記第1記憶部へデータを書き込むことを可能とし、
前記署名検証に失敗した場合に、外部から前記第1記憶部へデータを書き込むことを禁止する、
請求項1に記載のメモリシステム。
【請求項4】
前記演算部は、
複数の前記ログ情報を連続させることによって、1つの第1値を生成し、
生成した前記第1値をハッシュ関数に入力することによって、前記第1ハッシュ値に変換し、
前記第2記憶部から読み出した複数の前記ログ情報を連続させることによって、1つの第2値を生成し、
前記第2値を前記ハッシュ関数に入力することによって前記第2ハッシュ値に変換する、
請求項1に記載のメモリシステム。
【請求項5】
前記演算部は、
前記ログ情報ごとに前記第1署名を生成し、
前記第2記憶部から読み出した前記ログ情報ごとに前記署名検証を行う、
請求項1に記載のメモリシステム。
【請求項6】
第1記憶部と、
外部から前記第1記憶部へのアクセスの履歴を示すログ情報を記憶する第2記憶部と、
第1秘密鍵および第1公開鍵を記憶する第3記憶部と、
前記ログ情報をハッシュ関数に入力することによって第1ハッシュ値に変換し、第1秘密鍵を用いて前記第1ハッシュ値に署名し、第1署名を生成し、複数の前記ログ情報に対応する複数の前記第1署名を足し算して集約署名を生成する演算部とを備え、
前記演算部は、
前記集約署名と楕円曲線上の第1点とをペアリングして第1写像を生成し、
複数の前記ログ情報を前記ハッシュ関数に入力することによって複数の第2ハッシュ値に変換し、
前記第1暗号キーおよび楕円曲線上の第1点を用いて得られる第2暗号キーと前記複数の第2ハッシュ値とをペアリングして第2写像を生成し、
複数の前記ログ情報に対応する複数の前記第2写像を掛け算して第3写像を生成し、
前記第1写像と前記第3写像とを比較する、
メモリシステム。
【請求項7】
前記演算部は、
前記第1写像と前記第3写像とが等しい場合に、前記ログ情報が改ざんされていないことを示す第1信号を送信し、
前記第1写像と前記第3写像とが異なっている場合に、前記ログ情報が改ざんされていることを示す第2信号を送信する、
請求項6に記載のメモリシステム。
【請求項8】
前記第2記憶部は、前記第1記憶部内の設けられている、請求項1に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、メモリシステムに関する。
【背景技術】
【0002】
外部からメモリシステムへアクセスされる毎にトレースログを記録し、トレースログからメモリシステムへの不正なアクセスを検知する方法が考えられている。しかし、トレースログが改ざんされると、不正なアクセスを検知することができなくなる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第6266186号
【発明の概要】
【発明が解決しようとする課題】
【0004】
不正なアクセスを検知することができるメモリシステムを提供すること。
【課題を解決するための手段】
【0005】
本実施形態に係るメモリシステムは、第1記憶部を備える。第2記憶部は、外部から第1記憶部へのアクセスの履歴を示すログ情報を記憶する。第3記憶部は、第1秘密鍵および第1公開鍵を記憶する。演算部は、ログ情報をハッシュ関数に入力することによって、第1ハッシュ値に変換し、第1秘密鍵を用いて第1ハッシュ値に署名し、第1署名を生成する。演算部は、第2記憶部から読み出したログ情報をハッシュ関数に入力することによって第2ハッシュ値に変換し、第1秘密鍵とペアを成す第1公開鍵および第2ハッシュ値を用いて署名検証を行う。
【図面の簡単な説明】
【0006】
図1】第1実施形態に係る情報処理システムの構成例を示すブロック図。
図2】第1実施形態に係るトレースログの署名処理の一例を示すシーケンス図。
図3】第1実施形態に係るトレースログの検証処理の一例を示すシーケンス図。
図4】第2実施形態に係るトレースログの署名処理の一例を示すシーケンス図。
図5】第2実施形態に係るトレースログの検証処理の一例を示すシーケンス図。
図6】第3実施形態に係るトレースログの署名処理の一例を示すシーケンス図。
図7】第3実施形態に係るトレースログの検証処理の一例を示すシーケンス図。
図8】第4実施形態に係るトレースログの署名処理の一例を示すシーケンス図。
図9】第4実施形態に係るトレースログの検証処理の一例を示すシーケンス図。
【発明を実施するための形態】
【0007】
以下、図面を参照して本発明に係る実施形態を説明する。明細書と図面において、同一の要素には同一の符号を付す。
【0008】
(第1実施形態)
図1は、第1実施形態に係る情報処理システム1の構成例を示すブロック図である。
【0009】
情報処理システム1は、メモリシステム2と、ホスト3とを備えている。メモリシステム2とホスト3は、互いに通信可能に接続されている。
【0010】
メモリシステム2は、記憶装置である。メモリシステム2は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)である。メモリシステム2は、単一の半導体チップで構成される。あるいは、メモリシステム2は、複数の半導体チップを組み合わせたモジュールで構成される。
【0011】
ホスト3は、メモリシステム2の外部の情報処理装置である。ホスト3は、例えば、サーバまたはPC(パーソナルコンピュータ)である。ホスト3は、メモリシステム2に接続されている。ホスト3は、データをメモリシステム2から読み出すときに読出しコマンドをメモリシステム2へ送信する。ホスト3は、データをメモリシステム2へ書き込むときに書込みコマンドを送信する。また、ホスト3は、情報処理システム1の起動時にメモリシステム2に起動コマンドを送信する。
【0012】
メモリシステム2は、インタフェース回路20、メインストレージ21、CPU(Central Processing Unit)22、OTP(One Time Programmable)メモリ23、バス24およびシステム管理領域25を備えている。
【0013】
インタフェース回路20は、物理インタフェースである。インタフェース回路20は、外部からデータを受信する。また、インタフェース回路20は、データを外部へ送信する。
【0014】
メインストレージ21は、不揮発性のメモリである。メインストレージ21は、例えば、NAND型フラッシュメモリである。メインストレージ21は、インタフェース回路20で受信したデータを記憶する。メインストレージ21内には、システム管理領域25が設けられている。システム管理領域25は、トレースログ、ハッシュ関数およびKDF(Key Derive Function)を記憶する領域である。システム管理領域25は、トレースログ、ハッシュ関数およびKDFを記憶する。ハッシュ関数は、トレースログをハッシュ化してハッシュ値に変換する関数である。尚、システム管理領域25は、メインストレージ21内の一部として設けられていてもよく、メインストレージ21とは別に設けられた不揮発性記憶装置(図示せず)としてバス24に接続されていてもよい。
【0015】
CPU22は、演算処理装置である。CPU22は、トレースログをハッシュ関数に入力することによって、トレースログをハッシュ値に変換する。CPU22は、変換したハッシュ値に対し、OTPメモリ23に記憶された暗号キーの秘密鍵を使って署名する。暗号キーの秘密鍵は、OTPメモリ23に保存した値か、あるいは、OTPメモリ23に保存した値をKDFに入力して得られた値である。また、CPU22は、情報処理システム1の起動時に、生成された署名を暗号キーの公開鍵で検証する。トレースログは、ホスト3からメインストレージ21へのアクセスの履歴を示すログ情報である。トレースログは、例えば、ホスト3から受信したコマンドおよびホスト3からアクセスされた時刻を含む情報である。署名は、例えば、RSA(Rivest-Shamir-Adleman)方式またはECDSA(Elliptic Curve Digital Signature Algorithm)方式の電子署名である。
【0016】
OTPメモリ23は、1度だけ書き込んだ後、書き換え不能なメモリである。OTPメモリ23は、例えば、フューズ等のROM(Read Only Memory)である。OTPメモリ23は、暗号キーを記憶する。
【0017】
暗号キーは、ハッシュ値を暗号化して署名に変換する。
【0018】
バス24は、インタフェース回路20、メインストレージ21、CPU22およびOTPメモリ23を互いに通信可能に接続する配線である。
【0019】
図2は、第1実施形態に係るトレースログの署名処理の一例を示すシーケンス図である。
【0020】
ホスト3がメモリシステム2へデータを書き込む場合([書込み])、ホスト3は、書込みコマンドおよびデータをメモリシステム2へ送信する(S100)。
【0021】
メモリシステム2のCPU22は、受信した書込みコマンドに基づいて、メインストレージ21に、受信したデータを記憶させる(S102)。
【0022】
ホスト3がメモリシステム2からデータを読み出す場合([読出し])、ホスト3は、読出しコマンドをメモリシステム2へ送信する(S104)。
【0023】
メモリシステム2のCPU22は、受信した読出しコマンドに基づいて、メインストレージ21からデータを読み出す(S105)。
【0024】
メモリシステム2のCPU22は、読み出したデータをホスト3へ送信する(S106)。
【0025】
メモリシステム2のCPU22は、受信した書込みコマンドおよび読出しコマンドについて、トレースログmi(iは正整数)を生成する(S108)。
【0026】
CPU22は、生成したトレースログmiをシステム管理領域25に記憶させる(S110)。
【0027】
CPU22は、システム管理領域25に記憶されている複数のトレースログm0~miを読み出させる(S112)。複数のトレースログm0~miは、例えば、メインストレージ21に対する過去のアクセス履歴である。
【0028】
CPU22は、読み出した複数のトレースログm0~miを連続させることによって、1つの数値(第1値)を生成する(S113)。CPU22は、生成した第1値を第1ハッシュ関数に入力することによって、第1値を第1ハッシュ値H1(m0:mi)に変換する(S114)。
【0029】
CPU22は、OTPメモリ23からの第1秘密鍵を用いて、第1ハッシュ値H1(m0:mi)に署名し、第1署名σ1(m0:mi)を生成する(S116)。CPU22は、第1署名σ1(m0:mi)をシステム管理領域25に記憶させ(S118)、図2の一連の処理を終了する。尚、第1暗号キーは、ペアを成す第1秘密鍵と第1公開鍵とを含む。第1秘密鍵は、署名を生成するときに使用される鍵である。第1公開鍵は、第1秘密鍵で署名され生成された署名を検証するときに使用される鍵である。
【0030】
図3は、第1実施形態に係るトレースログの検証処理の一例を示すシーケンス図である。
【0031】
情報処理システム1の起動時のブート処理において、ホスト3が起動コマンドをメモリシステム2へ送信する(S120)。
【0032】
メモリシステム2のCPU22は、起動コマンドを受信すると、システム管理領域25に記憶されている複数のトレースログm0~miを読み出す(S122)。
【0033】
CPU22は、読み出した複数のトレースログm0~miを連続させることによって、1つの数値(第2値)を生成する(S123)。
【0034】
CPU22は、生成した第2値を第1ハッシュ関数に入力することによって、第2値を第2ハッシュ値H2(m0:mi)に変換する(S124)。
【0035】
CPU22は、第1署名σ1(m0:mi)をシステム管理領域25から読出し(S125)、第2ハッシュ値H2(m0:mi)および第1公開鍵を使って署名検証を行う(S126)。
【0036】
署名検証に成功した場合(S130)、CPU22は、トレースログm0~miが改ざんされていないことを示す有効通知をホスト3へ送信し(S132)、図3の一連の処理を終了する。署名検証に成功した場合、CPU22は、外部からメインストレージ21へアクセスすることを制限しない。つまり、署名検証に成功した場合、CPU22は、外部からメインストレージ21へデータを書き込むことを可能とする。
【0037】
署名検証に失敗した場合(S134)、CPU22は、トレースログm0~miが改ざんされていることを示す無効通知をホスト3へ送信し(S136)、図3の一連の処理を終了する。署名検証に失敗した場合、CPU22は、外部からメインストレージ21へアクセスすることを制限する。つまり、署名検証に失敗した場合、CPU22は、外部からメインストレージ21へデータを書き込むことを禁止する。
【0038】
第1実施形態によれば、トレースログが改ざんされているか否を検知することができる。第1実施形態によれば、トレースログが改ざんされている場合に、外部へトレースログが無効であることを通知することができる。また、第1実施形態によれば、メインストレージに記憶されたデータを保護することができる。
【0039】
(第2実施形態)
第2実施形態に係る情報処理システム1の構成は、図1に示す構成と同じである。
【0040】
図4は、第2実施形態に係るトレースログの署名処理の一例を示すシーケンス図である。
【0041】
図4のS100~S110の処理は、図2のS100~S110の処理と同じである。
【0042】
CPU22は、トレースログmiを第1ハッシュ関数に入力することによって、トレースログmiごとに、トレースログmiを第1ハッシュ値H1(mi)に変換する(S214)。CPU22は、トレースログmiごとに、第1秘密鍵を用いて、第1ハッシュ値H1(mi)に署名し、第1署名σ1(mi)を生成する(S216)。CPU22は、暗号化した第1署名σ1(mi)をシステム管理領域25に記憶させ(S218)、図4の一連の処理を終了する。
【0043】
尚、CPU22は、トレースログが生成されるごとに第1署名をシステム管理領域25へ記憶させる。従って、システム管理領域25は、トレースログごとに第1署名を記憶する。即ち、システム管理領域25は、トレースログm0~miのそれぞれに対応する第1署名σ1(m0)~σ1(mi)を記憶する。
【0044】
図5は、第2実施形態に係るトレースログの検証処理の一例を示すシーケンス図である。
【0045】
図5のS120およびS122の処理は、図3のS120およびS122の処理と同じである。
【0046】
CPU22は、読み出したトレースログm0~miのそれぞれを第1ハッシュ関数に入力することによって、トレースログm0~miのそれぞれを複数の第2ハッシュ値H2(m0)~H2(mi)に変換する(S224)。CPU22は、第1署名σ1(m0)~σ1(mi)を読出し(S225)、第2ハッシュ値H2(m0)~H2(mi)および第1公開鍵を使ってそれぞれの署名検証を行う(S226)。即ち、CPU22は、トレースログごとに署名検証を実行する。
【0047】
署名検証に成功した場合(S230)、CPU22は、トレースログm0~miが改ざんされていないことを示す有効通知をホスト3へ送信し(S232)、図5の一連の処理を終了する。
【0048】
署名検証に失敗した場合(S234)、CPU22は、トレースログm0~miが改ざんされていることを示す無効通知をホスト3へ送信する(S236)。
【0049】
CPU22は、トレースログm0~miのうち署名検証に失敗した、即ち、改ざんされたトレースログmj(j=0~i)を特定する(S240)。
【0050】
CPU240は、トレースログmjをシステム管理領域25に記憶させ(S242)、図5の一連の処理を終了する。
【0051】
第2実施形態によれば、トレースログが改ざんされている場合に、外部へトレースログが無効であることを通知することができる。また、第2実施形態によれば、メインストレージに格納されているデータを保護することができる。
【0052】
また、第2実施形態によれば、システム管理領域25に記憶されたデータを参照することによって、改ざんされたトレースログを知ることができる。
【0053】
(第3実施形態)
第3実施形態に係る情報処理システム1の構成は、図1に示す構成と同じである。
【0054】
図6は、第3実施形態に係るトレースログの署名処理の一例を示すシーケンス図である。第3実施形態は、第1実施形態および第2実施形態を組み合わせた実施形態である。
【0055】
図6のS100~S110の処理は、図2のS100~S110の処理と同じである。
【0056】
CPU22は、システム管理領域25に記憶されている複数のトレースログm0~miを読み出す(S112)。
【0057】
CPU22は、読み出した複数のトレースログm0~miを連続させることによって、1つの数値(第1値)を生成する(S113)。CPU22は、生成した第1値を第1ハッシュ関数に入力することによって、第1値を第1ハッシュ値H1(m0:mi)に変換する(S114)。
【0058】
CPU22は、第1秘密鍵を用いて、第1ハッシュ値H1(m0:mi)に署名し、第1署名σ1(m0:mi)を生成する(S116)。
【0059】
CPU22は、第1署名σ1(m0:mi)をシステム管理領域25に記憶させる(S118)。
【0060】
また、CPU22は、読み出したトレースログmiを第1ハッシュ関数に入力することによって、トレースログmiを第1ハッシュ値H1(mi)に変換する(S214)。
【0061】
CPU22は、第1秘密鍵を用いて、第1ハッシュ値H1(mi)に署名し、第1署名σ1(mi)を生成する(S216)。
【0062】
CPU22は、第1署名σ1(mi)をシステム管理領域25に記憶させ(S218)、図6の一連の処理を終了する。
【0063】
尚、CPU22は、トレースログが生成されるごとに第1署名をシステム管理領域25へ記憶させる。従って、システム管理領域25は、第1署名σ1(m0:mi)、および、トレースログm0~miのそれぞれに対応する第1署名σ1(m0)~σ1(mi)を記憶する。
【0064】
図7は、第3実施形態に係るトレースログの検証処理の一例を示すシーケンス図である。
【0065】
図7のS120~S136の処理は、図3のS120~S136の処理と同じである。
【0066】
S134において、署名検証に失敗した場合、CPU22は、S224~S226、S240およびS242の処理をさらに実行して、図7の一連の処理が終了する。
【0067】
第3実施形態によれば第1署名σ1(m0)~σ1(mi)と第2署名σ2(m0)~σ2(mi)とをそれぞれ比較するよりも短時間でトレースログm0~miの改ざんを検知することができる。
【0068】
第3実施形態によれば、CPU22は、第1署名σ1(mj)に対応する改ざんされたトレースログmjを特定することができる。
【0069】
(第4実施形態)
第4実施形態に係る情報処理システム1の構成は、図1に示す構成と同じである。
【0070】
図8は、第4実施形態に係るトレースログの署名処理の一例を示すシーケンス図である。
【0071】
図8のS100~S110およびS214~S218の処理は、図4のS100~S110およびS214~S218の処理と同じである。
【0072】
CPU22は、システム管理領域25から第1署名σ1(m0)~σ1(mi)を読み出す(S400)。
【0073】
CPU22は、例えば、BGLS(Dan Boneh, Craig Gentry, Ben Lynn, Hovav Shacham)署名を用いて第1署名σ1(m0)~σ1(mi)を足し算することによって、集約署名σaを生成する(S402)。
【0074】
CPU22は、集約署名σaをシステム管理領域25へ記憶させて(S404)、図8の一連の処理が終了する。
【0075】
図9は、第4実施形態に係るトレースログの検証処理の一例を示すシーケンス図である。
【0076】
図9のS120の処理は、図3のS120の処理と同じである。
【0077】
CPU22は、集約署名σaをシステム管理領域25から読み出す(S406)。
【0078】
CPU22は、集約署名σaと楕円曲線上の点Qとをペアリングすることによって、第1写像e(σa,Q)を生成する(S408)。
【0079】
CPU22は、生成した第1写像e(σa,Q)をシステム管理領域25に記憶させる(S410)。
【0080】
図9のS122およびS224の処理は、図5のS122およびS224の処理と同じである。
【0081】
CPU22は、第1暗号キーs0~siのそれぞれと点Qとを掛け算することによって、第2暗号キーs0Q~siQを生成する(S412)。第2暗号キーは、第1暗号キーs0~siのそれぞれの第1秘密鍵および第1公開鍵のペアと点Qとを掛け算した結果である。
【0082】
CPU22は、第2ハッシュ値H2(m0)~H2(mi)と第2暗号キーs0Q~siQとをそれぞれペアリングすることによって、複数の第2写像e(H2(m0),s0Q)~e(H2(mi),siQ)を生成する(S414)。
【0083】
CPU22は、生成した複数の第2写像e(H2(m0),s0Q)~e(H2(mi),siQ)を掛け算することによって、第3写像Πe(H(m),sQ)を生成する(S416)。
【0084】
CPU22は、システム管理領域25から第1写像e(σa,Q)を読み出す(S418)。CPU22は、読み出した第1写像e(σa,Q)と生成した第3写像Πe(H(m),sQ)とを比較する(S420)。
【0085】
第1写像e(σa,Q)と第3写像Πe(H(m),sQ)とが一致する場合([一致])、CPU22は、S232を実行し、図9の一連の処理を終了する。
【0086】
第1写像e(σa,Q)と第3写像Πe(H(m),sQ)とが一致しない場合([不一致])、CPU22は、S236を実行する。
【0087】
S236を実行すると、CPU22は、第1秘密鍵を用いて、S224で生成された第2ハッシュ値H2(m0)~H2(mi)に署名し、第2署名σ2(m0)~σ2(mi)を生成する(S250)。
【0088】
CPU22は、第1署名σ1(m0)~σ1(mi)をシステム管理領域25から読み出す(S252)。
【0089】
CPU22は、読み出した第1署名σ1(m0)~σ1(mi)と第2署名σ2(m0)~σ2(mi)とをそれぞれ比較し、トレースログm0~miのうち、第1署名と第2署名とが一致しないトレースログmjを特定する(S254)。
【0090】
CPU240は、特定したトレースログmjをシステム管理領域25に記憶させ(S256)、図9の一連の処理を終了する。
【0091】
第4実施形態によれば、第1署名σ1(mj)に対応する改ざんされたトレースログmjを特定することができる。
【0092】
実施形態は例示であり、発明の範囲はそれらに限定されない。
【符号の説明】
【0093】
1 情報処理システム
2 メモリシステム
3 ホスト
20 インタフェース回路
21 メインストレージ
22 CPU
23 OTPメモリ
24 バス
25 システム管理領域
図1
図2
図3
図4
図5
図6
図7
図8
図9