(57)【要約】      （修正有）【課題】セキュリティを保ってデバッグすることができる電子機器を提供する。【解決手段】電子機器は、第１プロセッサと、不揮発性の第１メモリと、揮発性の第２メモリと、コマンド実行回路と、を具備する。第１メモリは第１プロセッサが実行するプログラムを記憶する。第２メモリは第１メモリから読み出されたプログラムを記憶する第１領域と、プログラムが参照するデータを記憶する第２領域を含む。コマンド実行回路は外部機器から供給されたＳ１４２第２メモリの書き換えコマンドを認証しＳ１４８、書き換えコマンドの認証が成功すると、書き換えコマンドを実行するＳ１５６。【選択図】図８
2020149236.tif 000002
【特許請求の範囲】
【請求項１】
第１プロセッサと、
前記第１プロセッサが実行するプログラムを記憶する不揮発性の第１メモリと、
前記第１メモリから読み出された前記プログラムを記憶する第１領域と、前記プログラムが参照するデータを記憶する第２領域を含む揮発性の第２メモリと、
外部機器から供給された前記第２メモリの書き換えコマンドを認証し、前記書き換えコマンドの認証が成功すると、前記書き換えコマンドを実行するコマンド実行回路と、
を具備する電子機器。
【請求項２】
前記第２メモリは前記第１領域を含む第３メモリと、前記第２領域を含む第４メモリからなる請求項１記載の電子機器。
【請求項３】
前記第１プロセッサよりもセキュリティ性能が高い第２プロセッサをさらに具備し、前記第２プロセッサは前記コマンド実行回路を具備する請求項１記載の電子機器。
【請求項４】
前記第２プロセッサはセキュアブート処理を実行可能である請求項３記載の電子機器。
【請求項５】
前記第１メモリは前記プログラムを記憶する第３領域と、前記電子機器のログデータを記憶する第４領域を含み、
前記第２メモリは前記第４領域から前記ログデータが読み出されることを許可するか否かを示す制御データを記憶し、
前記書き換えコマンドは前記第２メモリに記憶されている前記制御データの値を、前記第４領域から前記ログデータが読み出されることを許可することを示す値に書き換えるコマンドを具備する請求項１記載の電子機器。
【請求項６】
前記第１メモリは前記第３領域を含む第５メモリと、前記第４領域を含む第６メモリからなる請求項５記載の電子機器。
【請求項７】
前記制御データの初期値は、前記第４領域から前記ログデータが読み出されることを許可しないことを示す請求項５記載の電子機器。
【請求項８】
前記制御データは前記ログデータを出力するインターフェースの使用を許可するか否かを示すデータを具備する請求項５記載の電子機器。
【請求項９】
前記第１メモリは前記プログラムを記憶する第３領域と、前記電子機器のログデータを記憶する第４領域を含み、
前記第１領域に記憶された前記プログラムは前記第１メモリから前記ログデータが読み出されることを許可しないものであり、
前記書き換えコマンドは、前記第１領域に記憶された前記プログラムの少なくとも一部を、前記第４領域から前記ログデータが読み出されることを許可するように書き換えるコマンドを具備する請求項１記載の電子機器。
【請求項１０】
前記第１メモリは前記第３領域を含む第５メモリと、前記第４領域を含む第６メモリからなる請求項９記載の電子機器。
【請求項１１】
前記書き換えコマンドは、前記プログラムの少なくとも一部を、前記ログデータを出力するインターフェースの使用を許可するように書き換えるコマンドを具備する請求項９記載の電子機器。
【請求項１２】
前記書き換えコマンドは前記第１プロセッサが実行する前記プログラムが参照するレジスタのデータを書き換えるコマンドを具備する請求項１乃至請求項１１のいずれか一項記載の電子機器。
【請求項１３】
前記コマンド実行回路は、前記書き換えコマンドを実行する前に、前記第２メモリの特定の領域をアクセス禁止領域に設定する請求項１乃至請求項１２のいずれか一項記載の電子機器。
【請求項１４】
前記第２メモリの前記特定の領域は前記第１プロセッサのセキュリティ情報を記憶する領域を具備する請求項１３記載の電子機器。
【請求項１５】
前記第１メモリは、前記プログラムを記憶する第５領域と、前記第１プロセッサが暗号化したデータを記憶する第６領域を含む請求項１乃至請求項１４のいずれか一項記載の電子機器。
【請求項１６】
前記第１メモリは前記第５領域を含む第６メモリと、前記第６領域を含む第６メモリからなる請求項１５記載の電子機器。
【請求項１７】
第１プロセッサと、前記第１プロセッサが実行するプログラムを記憶する不揮発性の第１メモリと、前記第１メモリから読み出された前記プログラムを記憶する第１領域と、前記プログラムが参照するデータを記憶する第２領域を含む揮発性の第２メモリと、を具備する電子機器の制御方法であって、
外部機器から供給された前記第２メモリの書き換えコマンドを認証することと、
前記書き換えコマンドの認証が成功すると、前記書き換えコマンドを実行することと、
を具備する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は電子機器及び電子機器の制御方法に関する。
【背景技術】
【０００２】
電子機器が故障した場合、製造者は故障の原因を解析（デバッグと称する）する場合がある。電子機器はデバッグ用にログ（デバッグログと称する）を記憶している。デバッグのためには、製造者は故障した電子機器を回収し、電子機器からデバッグログを読み出す必要がある。デバッグログの読み出しのためには、デバッグ用インターフェースが必要である。デバッグ用インターフェースは電子機器の出荷前は製造段階の動作チェックのために使用可能であるが、出荷時には使用不可能とされる。
【０００３】
例えば組み込み機器等では、通常のファームウェアの他にデバッグ用インターフェースを使用可能とする特殊なデバッグ用ファームウェアが用意されている。製造者は回収した電子機器のファームウェアをデバッグ用ファームウェアに更新する。これにより、デバッグ用インターフェースが使用可能となり、デバッグログが読み出し可能となり、デバッグが実行される。なお、デバッグ用ファームウェアはデバッグ用インターフェースを使用可能とするだけでなく、通常は無効とされている機能を有効とする。
【０００４】
デバッグ用ファームウェア自体又はデバッグ用ファームウェアがインストールされている電子機器が流出した場合、電子機器のセキュリティが保たれないという問題が生じる。
これを防ぐために、デバッグ用ファームウェアによってデバッグ用インターフェースを使用可能とするためには、ユーザ認証を行うことが考えられる。しかし、認証のためのパスワードはデバッグ用ファームウェアに埋め込まれているので、デバッグ用ファームウェアが流出し、ファームウェアが解析されると、パスワードが分かってしまい、問題の解決にはならない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第８５２２３２２号明細書
【特許文献２】特許第５６４３９０１号公報
【特許文献３】米国特許出願公開第２００９／２７１８７５号明細書
【特許文献４】特許第４７１３５７９号公報
【特許文献５】米国特許第７８９０７７０号明細書
【特許文献６】特表２００６−５２４４５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、電子機器において、セキュリティを保ってデバッグすることである。
【課題を解決するための手段】
【０００７】
実施形態による電子機器は、第１プロセッサと、不揮発性の第１メモリと、揮発性の第２メモリと、コマンド実行回路を具備する。第１メモリは第１プロセッサが実行するプログラムを記憶する。第２メモリは第１メモリから読み出されたプログラムを記憶する領域と、プログラムが参照するデータを記憶する第２領域を含む。コマンド実行回路は、第２メモリの書き換えコマンドを認証し、書き換えコマンドの認証が成功すると、書き換えコマンドを実行する。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態による電子機器の構成の一例を示すブロック図である。
【図２】第１実施形態による電子機器の第２ＣＰＵの機能構成の一例を示すブロック図である。
【図３】第１実施形態による電子機器の第１ＣＰＵと第２ＣＰＵのアドレスマップの一例を示す図である。
【図４】第１実施形態による電子機器の第２ＣＰＵのブート処理の一例を示すフローチャートである。
【図５】第１実施形態による電子機器のデータ書き換え動作の一例を示すフローチャートである。
【図６】第１実施形態による電子機器のデバッグ動作の一例を示すフローチャートである。
【図７】第２実施形態による電子機器の第２ＣＰＵの機能構成の一例を示すブロック図である。
【図８】第２実施形態による電子機器のファームウェア変更動作の一例を示すフローチャートである。
【図９】第３実施形態による電子機器の構成の一例を示すブロック図である。
【図１０】第３実施形態による電子機器の第２ＣＰＵの機能構成の一例を示すブロック図である。
【図１１】第３実施形態による電子機器の第１ＣＰＵと第２ＣＰＵのアドレスマップの一例を示す図である。
【図１２】第３実施形態による電子機器のデータ書き換え動作の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、図面を参照して、実施形態を説明する。以下の説明は、実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、以下に説明する構成要素の構造、形状、配置、材質等に限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各要素のサイズ、厚み、平面寸法又は形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、互いの寸法の関係や比率が異なる要素が含まれることもある。複数の図面において、対応する要素には同じ参照数字を付して重複する説明を省略する場合もある。いくつかの要素に複数の呼称を付す場合があるが、これら呼称の例はあくまで例示であり、これらの要素に他の呼称を付すことを否定するものではない。また、複数の呼称が付されていない要素についても、他の呼称を付すことを否定するものではない。なお、以下の説明において、「接続」は直接接続のみならず、他の要素を介して接続されることも意味する。
【００１０】
［第１実施形態］
実施形態による電子機器はどのような電子機器にも適用可能であるが、第１実施形態としては、フラッシュメモリ等の不揮発性半導体メモリを用いるソリッドステートドライブ（Solid State Drive：ＳＳＤと略称する）からなるストレージ装置２０の例を説明する。図１はストレージ装置２０とホスト装置１０を含む情報処理システムの一例を示す。
【００１１】
［機器構成］
ストレージ装置２０は、記憶媒体としてのフラッシュメモリ２４と、コントローラ２２とを備える。フラッシュメモリ２４は、例えばＮＡＮＤ型のフラッシュメモリからなるが、ＮＡＮＤ型のフラッシュメモリに限らず、他の不揮発性半導体メモリが用いられても良い。ホスト装置１０は、大量且つ多様なデータをストレージ装置２０に格納するサーバ（ストレージサーバとも称する）であっても良いし、ストレージ装置２０を内蔵するパーソナルコンピュータであっても良い。ストレージ装置２０は、ホスト装置１０に内蔵されても良いし、図１に示すように、ホスト装置１０にケーブルまたはネットワークを介して接続されても良い。コントローラ２２は、例えばＳｏＣ（System-on-chip）からなる。コントローラ２２はフラッシュメモリ２４にデータを書き込むとともに、フラッシュメモリ２４からデータを読み出すように構成される。
【００１２】
コントローラ２２はシステムバス３３により相互に接続されるホストＩ／Ｆ回路２６、第１ＣＰＵ２８、レジスタ２８Ａ、第２ＣＰＵ３０、レジスタ３０Ａ、第１ＲＡＭ３２、第２ＲＡＭ３４、第１ＲＯＭ３６、第２ＲＯＭ３８及びＮＡＮＤ  Ｉ／Ｆ回路４０を備える。フラッシュメモリ２４はＮＡＮＤ  Ｉ／Ｆ回路４０に接続される。なお、第１ＲＡＭ３２と第２ＲＡＭ３４はシステムバス３３ではなく、ローカルバスや専用バスを介して第１ＣＰＵ２８と第２ＣＰＵ３０にそれぞれ接続される密結合メモリＴＣＭ（Tightly-Coupled Memory）として実現されても良い。
【００１３】
ホストＩ／Ｆ回路２６とホスト装置１０との間のインターフェースは、例えばSmall Computer System Interface（ＳＣＳＩ）（登録商標）、PCI Express（登録商標）（ＰＣＩｅ（登録商標）とも称する）、Serial Attached SCSI（ＳＡＳ）（登録商標）、Serial Advanced Technology Attachment（ＳＡＴＡ）（登録商標）、Non Volatile Memory Express（ＮＶＭｅ（登録商標））、Universal Serial Bus（ＵＳＢ）（登録商標）等の規格が使用され得るが、これらに限定されない。
【００１４】
第１ＣＰＵ２８はフラッシュメモリ２４へのユーザデータの書き込みと、フラッシュメモリ２４からのユーザデータの読み出し等のストレージ装置２０の通常の動作を制御する。ストレージ装置２０には、ユーザデータをそのまま(平文のまま)フラッシュメモリ２４に書き込む非暗号機タイプと、ユーザデータをストレージ装置２０の内部で暗号化してからフラッシュメモリ２４に書き込む暗号機タイプの２種類がある。実施形態は非暗号機タイプとしても暗号機タイプとしても実現可能であるが、一例として暗号機タイプとして実現されるとする。この場合、第１ＣＰＵ２８は暗号化処理と復号処理も行う。
【００１５】
さらに、第１ＣＰＵ２８はストレージ装置２０のデバッグのためにストレージ装置２０のログ（デバッグログと称する）もフラッシュメモリ２４へ書き込む。デバッグログはログファイルとしてフラッシュメモリ２４へ書き込まれる。デバッグログは、例えばログイベントの発生元、日付、時刻、ログの種類、コメント等を含む。
【００１６】
第２ＣＰＵ３０は、第１ＣＰＵ２８用のＲＡＭの書き換えを制御する。第２ＣＰＵ３０は第１ＣＰＵ２８よりもセキュリティ性能が高いＣＰＵである。例えば、第２ＣＰＵ３０は、セキュリティの高いブート（セキュアブート）によりブートされ、セキュリティが担保されている。なお、第２ＣＰＵ３０の代わりに、認証された専用のハードウェアを設けても良い。
【００１７】
第１ＲＡＭ３２は第１ＣＰＵ２８のワークエリアとして使用される揮発性のメモリである。第２ＲＡＭ３４は第２ＣＰＵ３０のワークエリアとして使用される揮発性のメモリである。ここでは、第１ＲＡＭ３２、第２ＲＡＭ３４はコントローラ２２内のＳＲＡＭにより構成されているとするが、コントローラ２２の外部に設けられるＤＲＡＭにより構成されても良い。第１ＲＡＭ３２、第２ＲＡＭ３４が記憶するデータの一例は図２を参照して後述する。なお、第１ＣＰＵ２８のワークエリアと第２ＣＰＵ３０のワークエリアをそれぞれ別々の第１ＲＡＭ３２と第２ＲＡＭ３４により構成したが、１つのＲＡＭの異なるアドレス領域に第１ＣＰＵ２８のワークエリアと第２ＣＰＵ３０のワークエリアを割り当てても良い。
【００１８】
第１ＲＯＭ３６は第１ＣＰＵ２８が実行するプログラムであるファームウェアと第１ＣＰＵ２８の認証のための情報を記憶する不揮発性のメモリである。第２ＲＯＭ３８は第２ＣＰＵ３０が実行するプログラムであるファームウェアと第２ＣＰＵ３０の認証のための情報を記憶する不揮発性のメモリである。第１ＲＯＭ３６、第２ＲＯＭ３６は書き込み可能なＲＯＭ、例えばＮＯＲ型のシリアルフラッシュメモリ、光学的に書き込み可能なＲＯＭから構成されても良い。第１ＲＯＭ３６がＮＯＲ型のシリアルフラッシュメモリからなる場合、第１ＣＰＵ２８はデバッグログをフラッシュメモリ２４の代わりに第１ＲＯＭ３６に書き込んでも良い。なお、第１ＣＰＵ２８のＲＯＭと第２ＣＰＵ３０のＲＯＭをそれぞれ別々の第１ＲＯＭ３６と第２ＲＯＭ３８により構成したが、１つのＲＯＭの異なる領域に第１ＣＰＵ２８のファームウェア及び認証のための情報と第２ＣＰＵ３０のファームウェア及び認証のための情報を記憶しても良い。
【００１９】
［機能構成］
図２は第１実施形態の第２ＣＰＵ３０の機能構成の一例を示すブロック図である。ホストＩ／Ｆ回路２６はコマンド入出力部５２を備える。第２ＣＰＵ３０はデータ書き換え許可部５４、認証処理部５６、データ書き換え部５８を備える。データ書き換え許可部５４、認証処理部５６、データ書き換え部５８は第２ＣＰＵ３０がファームウェアを実行することによりソフトウェア的に実現され得る。しかし、データ書き換え許可部５４、認証処理部５６、データ書き換え部５８は個別のハードウェアにより実現されても良い。
【００２０】
第１ＲＡＭ３２は第１ＣＰＵ２８のファームウェアを記憶する第１領域（Ｉ−ＳＲＡＭ(Instruction SRAM)とも称する）６２、第１ＣＰＵ２８が実行中のファームウェアが参照するデータを記憶する第２領域（Ｄ−ＳＲＡＭ(Data SRAM)とも称する）６４、その他のデータの記憶領域を備える。第１ＣＰＵ２８はブートされると、第１ＲＯＭ３６からファームウェアを読み出し、第１ＲＡＭ３２の第１領域６２内に格納し、ファームウェアを実行する。ファームウェアの実行により生成されたデータは第１ＲＡＭ３２の第２領域６４に格納される。レジスタ２８Ａは、図３（ａ）に示すように、第１ＣＰＵ２８からアクセス可能なアドレス空間上に第１ＲＡＭ３２の第１領域６２、第２領域６４とともにマッピングされている。なお、第１領域６２と第２領域６４がそれぞれ異なるＲＡＭに設けられていても良い。
【００２１】
第２ＲＡＭ３４は第２ＣＰＵ３０のファームウェアを記憶する第１領域（Ｉ−ＳＲＡＭとも称する）７２、第２ＣＰＵ３０が実行中のファームウェアが参照するデータを記憶する第２領域（Ｄ−ＳＲＡＭとも称する）７４、その他のデータの記憶領域を備える。第２ＣＰＵ３０はブートされると、第２ＲＯＭ３８からファームウェアを読み出し、第２ＲＡＭ３４の第１領域７２内に格納し、ファームウェアを実行する。ファームウェアの実行により生成されたデータは第２ＲＡＭ３４の第２領域７４に格納される。レジスタ３０Ａは、図３（ｂ）に示すように、第２ＣＰＵ３０からアクセス可能なアドレス空間上に第２ＲＡＭ３４の第１領域７２、第２領域７４とともにマッピングされている。
【００２２】
図３（ｂ）に示すように、第２ＣＰＵ３０からアクセス可能なアドレス空間には、第２ＲＡＭ３４の第１領域７２および第２領域７４並びにレジスタ３０Ａに加えて、第１ＲＡＭ３２の第１領域６および第２領域６４並びにレジスタ２８Ａがマッピングされている。このため、第２ＣＰＵ３０は、第２ＲＡＭ３４とレジスタ３０Ａにアクセスすることができるとともに、第１ＲＡＭ３２とレジスタ２８Ａにもアクセスすることができる。すなわち、第２ＣＰＵ３０は、第１ＣＰＵ２８のファームウェア、第１ＣＰＵ２８のファームウェアが参照するデータ、レジスタ２８Ａのデータを書き換え可能である。
【００２３】
［ブート処理］
図４のフローチャートを参照して第２ＣＰＵ３０のブート処理の一例を説明する。
ステップＳ１２で、第２ＣＰＵ３０のハードウェアで実現されるマイクロコードにより第２ＲＯＭ３８からブートのためのファームウェアが読み出され、ファームウェアが第２ＲＡＭ３４に格納される。このファームウェアには認証コードが含まれている。
【００２４】
ステップＳ１４で、第２ＣＰＵ３０は、ステップＳ１２で第２ＲＯＭ３８から読み出され第２ＲＡＭ３４に格納されたファームウェアから認証コードを計算する。
ステップＳ１６で、第２ＣＰＵ３０は、計算された認証コードとステップＳ１２で第２ＲＡＭ３４に格納されたファームウェアに含まれる認証コードとを比較する。
【００２５】
ステップＳ１８で、第２ＣＰＵ３０は、両認証コードが一致するか否かを判定する。両認証コードが一致した場合（ステップＳ１８のＹＥＳ）、ステップＳ２０でブート処理が実行される。一致しない場合（ステップＳ１８のＮＯ）、ステップＳ２２でエラー処理が実行される。認証コードを計算するためのファームウェア検証用の暗号処理プログラムは第２ＲＯＭ３８に格納されているので、改ざんが困難である。このため、第２ＣＰＵ３０は第１ＣＰＵ２８よりもセキュリティ性能が高いセキュアブートを行ない得る。
【００２６】
第１ＣＰＵ２８のブートには認証は必要とされない。
［データ書き換え処理］
図５は第１実施形態によるデータ書き換え処理の一例を示すフローチャートである。ここでは、書き換えるデータの例は、第１ＣＰＵ２８のファームウェアが参照するデータである。このデータは、第１ＲＡＭ３２の第２領域６４又はレジスタ２８Ａに記憶されているとする。実施形態では、第１ＲＡＭ３２の第２領域６４内のデータ又はレジスタ２８Ａのデータの書き換えは第１ＣＰＵ２８ではなく、第２ＣＰＵ３０により行われる。これらのデータを書き換えることにより、ファームウェアの処理結果が変更することがある。すなわち、書き換えにより実質的にファームウェアが変更（一部の機能が削除又は一部の機能が追加）されることもある。第１実施形態では、書き換えられるデータは１ビットから数ビットの小さいデータである。
【００２７】
第１ＣＰＵ２８及び第２ＣＰＵ３０がともにブートされた後、ステップＳ１０２で、コマンド入出力部５２は、ホスト装置１０から第１ＲＡＭ３２の第２領域６４内の特定データ又はレジスタ２８Ａ内の特定のデータの書き換えを指示するデータ書き換えコマンドを受信する。データ書き換えコマンドは「データ書き換え」のコマンド種別と、書き換え対象のアドレスと、書き換えるデータと、認証データを含む。書き換え対象のアドレスは、第２ＣＰＵ３０からアクセス可能な図３（ｂ）に示すアドレス空間上の第１ＲＡＭ３２の第２領域６４内の書き換え対象の特定データ又はレジスタ２８Ａ内の特定のデータがマッピングされている特定のアドレスである。認証データはストレージ装置２０に固有の情報である。
【００２８】
ステップＳ１０４で、コマンド入出力部５２は、受信コマンドを解析し、受信コマンドがデータ書き換えコマンドであることを認識すると、データ書き換えコマンドを第２ＣＰＵ３０のデータ書き換え許可部５４に送信し、データ書き換え許可部５４にデータ書き換えを依頼する。
【００２９】
ステップＳ１０６でデータ書き換え許可部５４は認証処理部５６にデータ書き換えコマンドの認証を依頼する。
ステップＳ１０８で認証処理部５６はデータ書き換えコマンドとともに供給された認証データに基づき、例えばＡＥＳ等の共通鍵認証方式やＲＳＡ等の公開鍵認証方式等の認証アルゴリズムを用いてデータ書き換えコマンドを認証する。認証データはストレージ装置２０固有の情報であるので、認証データが流出しても、他のストレージ装置では認証が成功せず、偽造されたデータ書き換えコマンドが実行されることが防止される。
【００３０】
ステップＳ１１０で、認証処理部５６は、認証が成功したか否かを判定する。認証が成功した場合（ステップＳ１１０のＹＥＳ）、ステップＳ１１２でデータ書き換え許可部５４はデータ書き換えコマンドをデータ書き換え部５８に供給し、データ書き換え部５８にデータ書き換えを依頼する。認証が失敗した場合（ステップＳ１１０のＮＯ）、ステップＳ１１２、Ｓ１１４は実行されず、ステップＳ１１６が実行される。
【００３１】
ステップＳ１１４でデータ書き換え部５８はコマンドで指定された特定のアドレスのデータ、すなわち第１ＲＡＭ３２の第２領域６４内の特定データ又はレジスタ２８Ａ内の特定のデータをコマンドで指定された書き換えデータに書き換える。
書き換えの一例は、第１ＲＡＭ３２の第２領域６４内の第１ＣＰＵ２８のファームウェアが参照する特定のデータ（１ビット又は数ビット）を書き換えることである。例えば、ストレージ装置２０が故障した場合、第１ＣＰＵ２８がデバッグを実行するためにはデバッグ用インターフェース（デバッグポートとも称する）を使用してフラッシュメモリ２４からデバッグログを読み出す必要がある。通常は、第１ＣＰＵ２８のファームウェアはデバッグポートを使用することができない。第１ＣＰＵ２８のファームウェアがデバッグポートを使用することができるためには、ファームウェアが変更されればよいが、ファームウェアの変更には時間が係る。第１ＣＰＵ２８のファームウェアは特定の制御データ（例えばmodeと称される）に応じてデバッグポートの使用が許可される／許可されないようになっている。そのため、ファームウェアを変更しなくても、ファームウェアが参照する制御データmodeを書き換えることにより、第１ＣＰＵ２８のファームウェアがデバッグポートを使用でき、第１ＣＰＵ２８のファームウェアがデバックすることが可能となる。
【００３２】
デバッグポートの例は、ＪＴＡＧ（Joint Test Action group）やＵＡＲＴ（Universal Asynchronous Receiver Transmitter）等がある。例えば、制御データmodeが“１”ならば、デバッグポートＪＴＡＧが有効で、デバッグポートを介してデバッグログをフラッシュメモリ２４から読み出ることが可能であり、制御データmodeが“０”ならば、ＪＴＡＧが無効で、デバッグポートを介してデバッグログをフラッシュメモリ２４から読み出すことが不可能である。
【００３３】
ファームウェアが参照する制御データmodeは、例えば第１ＲＡＭ３２の第２領域６４に格納されている。制御データmodeの初期値（製品出荷時の値）は“０”である。データ書き換えコマンドの実行により制御データmodeを“１”に書き換えることにより、第１ＣＰＵ２８によるデバックが可能となる。
【００３４】
第１ＣＰＵ２８のファームウェアが参照する制御データmodeを第１ＣＰＵ２８のファームウェアが書き換えるのではなく、第２ＣＰＵ３０のファームウェアが書き換えるのは、第２ＣＰＵ３０の方がセキュリティ性能が高いからである。第２ＣＰＵ３０はブート時のセキュリティが高いので、セキュリティが担保されている。第１ＣＰＵ２８のファームウェアが第１ＣＰＵ２８のファームウェアが参照する制御データmodeを書き換え可能としておくと、不正に書き換えられる可能性がある。
【００３５】
ステップＳ１１６でデータ書き換え許可部５４は書き換え成功／書き換え失敗を表す書き換え結果をコマンド入出力部５２へ返送する。
ステップＳ１１８でコマンド入出力部５２は書き換え結果をホスト装置１０へ返送する。なお、認証が失敗した場合、書き換え失敗を返送して正常終了したが、認証が失敗した場合、異常終了しても良い。
【００３６】
なお、第１ＲＡＭ３２の記憶領域６４内の制御データmodeを書き換えることによりデバッグポートが使用できるように構成したが、これに限らず、レジスタ２８Ａの中の特定のデータを書き換えることによってもデバッグポートが使用できるように構成することも可能である。
【００３７】
例えば、レジスタ２８Ａの特定のデータが“１”の場合、デバッグのための機能（例えば、デバッグログを出力するコマンド）をファームウェアに追加することができる。また、デバッグログは読み出し可能であるが、レジスタ２８Ａの他の特定のデータが“０”の場合、デバッグログの一部しか出力されないことにしても良い。このような場合、当該データを“１”にすることにより、第１ＣＰＵ２８のファームウェアは全てのデバッグログを読み出すことができる。また、別の特定のデータが“０”の場合、ＵＡＲＴを介してデバッグログを読み出すことができないが、そのデータが“１”に変更されると、ＵＡＲＴを介してデバッグログを読み出すことができ、デバッグが実行されるようにしても良い。
【００３８】
なお、レジスタ２８Ａとレジスタ３０Ａは、第１ＣＰＵ２８、第２ＣＰＵ３０の外部に実装されているとしたが、各ＣＰＵに内蔵されていても良いし、内蔵のレジスタと外部実装のレジスタの両者が備えられていても良い。
［デバッグ処理］
図６は第１実施形態によるデバッグ処理の一例を示すフローチャートである。
【００３９】
ステップＳ１２２で第１ＣＰＵ２８は、コマンド入出力部５２を介してホスト装置１０からのデバッグコマンドを受信する。図示していないが、第１ＣＰＵ２８も認証処理部を備え、デバッグコマンドを認証し、認証が成功したとする。
ステップＳ１２４で第１ＣＰＵ２８は第１ＲＡＭ３２の第２領域６４に記憶されている制御データmodeが“１”であるか否かを判定する。制御データmodeが“１”である場合（ステップＳ１２４のＹＥＳ）、ステップＳ１２６でデバッグポートの使用が許可される。
【００４０】
ステップＳ１２８で第１ＣＰＵ２８はデバッグポートを使用してフラッシュメモリ２４からデバッグログを読み出すことなどにより、デバッグコマンドを実行する。
制御データmodeが“１”でない場合（ステップＳ１２４のＮＯ）、異常終了しても良い。なお、デバッグコマンドを受信する前に図５に示すようなデータ書き換え処理が実行されていない場合、制御データmodeは“０”であるので、ステップＳ１２４の判定結果はＮＯとなる。
【００４１】
[第１実施形態の纏め]
第１実施形態によれば、第１ＲＡＭ３２の第２領域６４又はレジスタ２８Ａ内のデータであり、第１ＣＰＵ２８のファームウェアが参照するデータが第２ＣＰＵ３０により書き換えられることにより、ファームウェアの機能の一部が変更（機能の追加、削除を含む）される。追加される機能の一例は、デバッグポートの使用許可であり、これにより第１ＣＰＵ２８によるデバックが可能となる。デバック終了後もデバックポートの使用は許可されたままであるが、ストレージ装置２０がシャットダウンされると、第１ＲＡＭ３２及びレジスタ２８Ａのデータは失われる。すなわち、第１ＲＡＭ３２の第２領域６４又はレジスタ２８Ａに記憶されている変更された制御データmodeは揮発化され、永続化されないので、デバッグポートの使用が許可された状態はシャットダウンにより終了する。次に、ストレージ装置２０がブートされた際、制御データmodeの初期値は“０”であるので、デバックポートの使用は許可されない。
【００４２】
このように、第１ＲＡＭ３２の第２領域６４又はレジスタ２８Ａに記憶されている制御データmodeはストレージ装置２０がシャットダウンされると、デバッグポートの使用が許可されないことを示す初期値に戻る。そのため、実施形態のファームウェアがインストールされデバッグポートの使用が許可されたストレージ装置２０が流出しても、シャットダウンされると、デバッグポートの使用が許可されなくなる。この結果、ストレージ装置２０のセキュリティの保護が保たれる。故障品を回収してデバッグするのではなくユーザのサイトでデバッグする場合、デバッグポートの使用を許可するファームウェアが製造者のサイトから持ち出され、ファームウェアが流出したとしても、ファームウェアがインストールされたストレージ装置がシャットダウンされるとデータを不正に読み取ることは不可能である。
【００４３】
また、セキュアブートが行われ得る第２ＣＰＵ３０により第１ＣＰＵ２８の第１ＲＡＭ３２又はレジスタ２８Ａのデータが書き換えられるので、第１ＣＰＵ２８により第１ＲＡＭ３２又はレジスタ２８Ａのデータを書き換えることに比べて、不正な書き換えが行われる可能性が低い。
【００４４】
［第２実施形態］
［機能構成］
図７は第２実施形態の第２ＣＰＵ３０の機能構成の一例を示すブロック図である。図７において図２に示した第１実施形態と異なる箇所のみ説明する。
第１実施形態では、書き換え対象は第１ＲＡＭ３２の第２領域６４又はレジスタ２８Ａ内の第１ＣＰＵ２８のファームウェアが参照するデータであり、書き換え対象は高々数ビットである。第２実施形態では、書き換え対象は第１ＲＡＭ３２の第１領域６２内の第１ＣＰＵ２８のファームウェアの一部又は全部である。
【００４５】
第２ＣＰＵ３０はＦＷ（ファームウェア）変更許可部８２、認証処理部８４、パッチ処理部８６、ＦＷ変更部８８を備える。ＦＷ変更許可部８２、認証処理部８４、パッチ処理部８６、ＦＷ変更部８８も第２ＣＰＵ３０がファームウェアを実行することにより実現され得る。しかし、ＦＷ変更許可部８２、認証処理部８４、パッチ処理部８６、ＦＷ変更部８８を個別のハードウェアにより実現しても良い。
【００４６】
［ファームウェア変更（書き換え）処理］
図８は第２実施形態によるファームウェア変更処理の一例を示すフローチャートである。第２実施形態はファームウェア全体を変更することもできるが、デバッグを可能とすることだけが目的であれば、ファームウェアの一部分のみの書き換えでも良い。
【００４７】
ステップＳ１４２でコマンド入出力部５２はホスト装置１０から第１ＲＡＭ３２の第１領域６２内のファームウェアを対象とするＦＷ変更コマンドを受信する。ＦＷ変更コマンドは「ＦＷ変更」のコマンド種別と、書き換え対象のアドレスと、書き換えるデータ（変更するＦＷの一部分）と、認証データを含む。アドレスは、第２ＣＰＵ３０からアクセス可能な図３（ｂ）に示すアドレス空間上の第１ＲＡＭ３２の第１領域６２がマッピングされている特定のアドレスである。
【００４８】
ステップＳ１４４でコマンド入出力部５２は受信コマンドを解析し、受信コマンドがＦＷ変更コマンドであることを認識すると、ＦＷ変更コマンドをＦＷ変更許可部８２に送信し、ＦＷ変更許可部８２にＦＷ変更を依頼する。
ステップＳ１４６でＦＷ変更許可部８２は認証処理部８４にFW変更コマンドの認証を依頼する。
【００４９】
ステップＳ１４８で認証処理部８４はＦＷ変更コマンドとともに供給された認証データに基づき、例えばＡＥＳ等の共通鍵認証方式やＲＳＡ等の公開鍵認証方式等の認証アルゴリズムを用いてＦＷ変更コマンドを認証する。
ステップＳ１５０で認証処理部８４は認証が成功したか否かを判定する。認証が失敗した場合（ステップＳ１５０のＮＯ）、ステップＳ１５２、Ｓ１５４、Ｓ１５６は実行されず、ステップＳ１５８が実行される。認証が成功した場合（ステップＳ１５０のＹＥＳ）、ステップＳ１５２でＦＷ変更許可部８２はＦＷ変更コマンドをパッチ処理部８６に供給し、パッチ処理部８６にバイナリパッチ処理を依頼する。ＦＷ変更コマンドに含まれる書き換えデータはファームウェアの変更を示すものであり、例えば、ファームウェアの何バイト目をどのように変更するかを示す。
【００５０】
ステップＳ１５４でパッチ処理部８６はバイナリパッチを求め、ＦＷ変更部８８にＦＷ変更を依頼する。バイナリパッチとは、変更前と変更後のファームウェアのバイナリコードの差分である。バイナリパッチの求め方はいろいろな手法が知られているが、例えばradiff2という手法を用いても良い。
【００５１】
ステップＳ１５６でＦＷ変更部８８はバイナリパッチに基づいて第１ＲＡＭ３２の第１領域６２内の第１ＣＰＵ２８のファームウェアの一部又は全部を変更する。なお、通常のファームウェアの更新では、ＲＯＭ内のファームウェアを書き換えるが、第２実施形態では、第１ＲＡＭ３２の第１領域６２内に記憶されている書き換えられたファームウェアは第１ＲＯＭ３６に書き戻されない。
【００５２】
ステップＳ１５８でＦＷ変更許可部８２は書き換え成功／書き換え失敗を表す書き換え結果をコマンド入出力部５２へ返送する。
ステップＳ１６０でコマンド入出力部５２は書き換え結果をホスト装置１０へ返送する。なお、認証が失敗した場合、書き換え失敗を返送して正常終了したが、認証が失敗した場合、異常終了しても良い。
【００５３】
ファームウェアの変更の一例は、例えば、図６に示すようなデバッグ処理を行うファームウェアにおいて、ステップＳ１２４に示す制御データmodeの判断ステップを省略するようなファームウェアに変更することがある。このようにファームウェアが変更されると、ステップＳ１２２でデバッグコマンドを受信し、認証が成功したら、制御データmodeに関わらず、ステップＳ１２６でデバックポートの使用が許可される。これにより、第１ＣＰＵ２８のファームウェアはデバッグコマンドを受信すればデバックポートを使用することができ、無条件でデバッグが可能である。なお、ファームウェアの一部に限らず、ファームウェアの全部を変更しても良い。
【００５４】
［第２実施形態の纏め］
第２実施形態によっても、第１ＲＡＭ３２の第１領域６２内のファームウェアの一部又は全部が第２ＣＰＵ３０により書き換えられることにより、第１ＣＰＵ２８の機能が変更できる。例えば、機能の変更は、第１実施形態と同様に、デバッグポートの使用許可であり、これにより第１ＣＰＵ２８によるデバックが可能となる。第１ＲＡＭ３２の記憶領域６２内に記憶されている書き換えられたファームウェアは第１ＲＯＭ３６に書き戻されないので、第１ＲＯＭ３６内のファームウェアはオリジナルのまま（ステップＳ１２４に示す制御データmodeの判断ステップを含む）である。ファームウェアの書き換えによりステップＳ１２４を省略すると、デバック終了後もデバックポートの使用は可能な状態のままであるが、ストレージ装置２０がシャットダウンされると、第１ＲＡＭ３２のデータは失われる。すなわち、第１ＲＡＭ３２の第１領域６２に記憶されているファームウェアの変更箇所は揮発化され、永続化されないので、デバッグポートの使用が許可された状態はシャットダウンにより終了する。ストレージ装置２０が次にブートされた際、第１ＲＯＭ３６内のファームウェアはオリジナルのままであるので、図６のステップＳ１２４に示す制御データmodeの判断ステップが実行される。制御データmodeの初期値は“０”であるので、デバックポートの使用は許可されない。
【００５５】
このように、第１ＲＡＭ３２の第１領域６２に記憶されている変更後のファームウェアはシャットダウンされると揮発化される。そのため、一度デバッグポートの使用が許可されたファームウェア又は当該ファームウェアがインストールされているストレージ装置２０が流出しても、ストレージ装置がシャットダウンされると、デバッグポートの使用が許可されなくなる。この結果、ストレージ装置のセキュリティの保護が保たれる。
【００５６】
また、セキュアブートが行われ得る第２ＣＰＵ３０により第１ＣＰＵ２８の第１ＲＡＭ３２のデータが書き換えられるので、第１ＣＰＵ２８により第１ＲＡＭ３２のデータを書き換えることに比べて、不正な書き換えが行われる可能性が非常に低い。
第２実施形態によれば、ファームウェアの一部を変更するだけでファームウェア全体を更新した場合と等価の効果が得られる。例えば、デバッグポートの有効／無効以外の機能・コードやコマンドを容易に追加、変更することができ、ＵＡＲＴインターフェースを介してデバッグプリントを出力する機能を追加することもできる。
【００５７】
一般的なファームウェア更新では、動作中のファームウェアを一度終了し、更新後のファームウェアをＲＯＭに格納する。次の起動時には、更新後のファームウェアのコピーがＲＡＭに書き込まれ、ＲＡＭ上のファームウェアによりＣＰＵが起動される。そのため、更新後のファームウェアが正常に動作しないとＣＰＵが起動されず、問題が生じる。しかし、第２実施形態のようにＲＡＭ上の動作中のファームウェアの一部又は全部を変更すれば、更新後のファームウェアが正常に動作せずＣＰＵが起動されない場合でも、ＲＯＭ内のオリジナルのファームウェアによりＣＰＵを起動することができるので、変更後のファームウェアの動作保証を行うこともできる。
【００５８】
［第３実施形態］
［全体構成］
第１、第２実施形態では、第１ＣＰＵ２８用の第１ＲＡＭ３２と第１ＲＯＭ３６、第２ＣＰＵ３０用の第２ＲＡＭ３４と第２ＲＯＭ３８が設けられ、第１ＣＰＵ２８のファームウェアが第１ＲＯＭ３６に記憶され、第２ＣＰＵ３０のファームウェアが第２ＲＯＭ３８に記憶されている。これに対して、第３実施形態では、第２ＣＰＵ３０専用のＲＡＭとＲＯＭを設けずに、第１ＣＰＵ２８用のＲＡＭ、ＲＯＭの一部のアドレス領域を第２ＣＰＵ３０がアクセスするように構成される。第２ＣＰＵ３０がアクセスするＲＡＭ、ＲＯＭのアドレス領域は第１ＣＰＵ２８がアクセスするＲＡＭ、ＲＯＭのアドレス領域と異なる。
【００５９】
図９に示すように、第３実施形態のコントローラ２２はホストＩ／Ｆ回路２６、第１ＣＰＵ２８、レジスタ２８Ａ、第２ＣＰＵ３０、レジスタ３０Ａ、ＲＡＭ４２、ＲＯＭ４４、ＮＡＮＤ  Ｉ／Ｆ回路４０を備える。
ＲＡＭ４２は第１ＣＰＵ２８及び第２ＣＰＵ３０のワークエリアとして使用される揮発性のメモリである。ＲＡＭ４２はコントローラ２２内のＳＲＡＭにより構成されているとするが、コントローラ２２の外部に設けられるＤＲＡＭにより構成されても良い。ＲＯＭ４４は第１ＣＰＵ２８及び第２ＣＰＵ３０のファームウェアと認証のための情報を記憶する不揮発性のメモリである。ＲＯＭ４４は書き込み可能なＲＯＭ、例えばＮＯＲ型のシリアルフラッシュメモリ、光学的に書き込み可能なＲＯＭから構成されても良い。ＲＯＭ４４がＮＯＲ型のシリアルフラッシュメモリからなる場合、第１ＣＰＵ２８はデバッグログをフラッシュメモリ２４の代わりにＲＯＭ４４に書き込んでも良い。
【００６０】
［機能構成］
図１０は第３実施形態の第２ＣＰＵ３０の機能構成の一例を示すブロック図である。第３実施形態は第１実施形態の変形例と第２実施形態の変形例を含み得る。図１０は第１実施形態の変形例を説明するが、第２実施形態の変形例も同様に第３実施形態として実現可能である。
【００６１】
ホストＩ／Ｆ回路２６はコマンド入出力部５２を備える。第２ＣＰＵ３０はデータ書き換え許可部５４、認証処理部５６、データ書き換え部５８、アクセス制御部９２を備える。データ書き換え許可部５４、認証処理部５６、データ書き換え部５８、アクセス制御部９２は第２ＣＰＵ３０がファームウェアを実行することにより実現され得る。アクセス制御部９２は、第２ＣＰＵ３０からアクセス可能なアドレス空間上の特定のアドレスがホスト装置１０からのコマンドによりアクセスされると、ホスト装置１０にエラー信号を返送するメモリプロテクションユニットＭＰＵ（Memory Protection Unit）からなり、ＲＡＭ４２の特定の領域をアクセス禁止領域に設定することができる。しかし、データ書き換え許可部５４、認証処理部５６、データ書き換え部５８、アクセス制御部９２を個別のハードウェアにより実現しても良い。
【００６２】
ＲＡＭ４２は第１ＣＰＵ２８のファームウェアを記憶する第１領域１０２、第１ＣＰＵ２８のファームウェアが参照するデータを記憶する第２領域１０４、第１ＣＰＵ２８のセキュリティ情報（暗号鍵等）を記憶する第３領域１２２、第２ＣＰＵ３０のファームウェアを記憶する第４領域１１２、第２ＣＰＵ３０のファームウェアが参照するデータを記憶する第５領域１１４、その他のデータの記憶領域を備える。
【００６３】
第１ＣＰＵ２８はブートされると、ＲＯＭ４４からファームウェアを読み出し、ＲＡＭ４２の第１領域１０２内に格納し、ＲＡＭ４２から読み出したファームウェアを実行する。ファームウェアの実行により生成されたデータはＲＡＭ４２の第２領域１０４に格納される。レジスタ２８Ａは、図１１（ａ）に示すように、第１ＣＰＵ２８からアクセス可能なアドレス空間上にＲＡＭ４２の第１領域１０２、第２領域１０４、第３領域１２２とともにマッピングされている。第１ＣＰＵ２８からアクセス可能なアドレス空間はＲＡＭ４２の第４領域１１２、第５領域１１４、レジスタ３０Ａがマッピングされるアドレスは含まない。図１１（ｂ）に示すように、第２ＣＰＵ３０からアクセス可能なアドレス空間には、ＲＡＭ４２の第４領域１１２、第５領域１１４、レジスタ３０Ａに加えて、ＲＡＭ４２の第１領域１０２、第２領域１０４、レジスタ２８Ａがマッピングされている。このため、第２ＣＰＵ３０は第２ＣＰＵ３０に関する記憶領域１１２、１１４、レジスタ３０Ａに加えて第１ＣＰＵ２８に関する記憶領域１０２、１０４、１２２とレジスタ２８Ａにアクセスすることができる。しかし、セキュリティ情報を記憶する第３領域１２２がアクセス制御部９２によってアクセス禁止領域に設定された場合、第２ＣＰＵ３０は第３領域１２２にアクセスすることができない。
【００６４】
［データ書き換え処理］
図１２は第３実施形態によるデータ書き換え処理の一例を示すフローチャートである。図１２は図５に示した第１実施形態のフローチャートとほぼ同じであり、異なる箇所だけ説明する。
ステップＳ１１０で認証が成功した場合（ステップＳ１１０のＹＥＳ）、ステップＳ１７２でデータ書き換え許可部５４はアクセス制御部９２にＲＡＭ４２内のセキュリティ情報がアクセスされないように第３領域１２２のアクセス禁止を依頼する。
【００６５】
ステップＳ１７４で、アクセス制御部９２はＲＡＭ４２内のセキュリティ情報を記憶する第３領域１２２をアクセス禁止領域に設定する。この後、第２ＣＰＵ３０がＲＡＭ４２の第３領域１２２にアクセスすると、エラー信号がホスト装置１０に返送される。これにより、第２ＣＰＵ３０はＲＡＭ４２から暗号鍵等のセキュリティ情報を読み出すことができない。
【００６６】
この後、第１実施形態と同様に、ステップＳ１１２でデータ書き換え許可部５４はデータ書き換えコマンドをデータ書き換え部５８に供給し、データ書き換え部５８にデータ書き換えを依頼する。
［第３実施形態の纏め］
第１実施形態では、データ書き換えによりデバッグポートの使用が可能となると、暗号鍵等のセキュリティ情報も読み出し可能となり、デバッグ担当者以外のユーザがセキュリティ情報を読み出すと、ストレージ装置のセキュリティが担保されない可能性が僅かではあるが生じる。しかし、第３実施形態によれば、データ書き換えによりデバッグポートの使用が可能となるが、セキュリティ情報を記憶する第３領域１２２がアクセス禁止（読み出し禁止）なので、ストレージ装置のセキュリティが確実に担保される。第２ＣＰＵ３０がフラッシュメモリ２４内の暗号化データを読み出したとしても、暗号鍵が分からないので、復号することができず、ストレージ装置のセキュリティが保たれる。
【００６７】
なお、図１２はＲＡＭ４２又はレジスタ２８Ａ内のデータであり、第１ＣＰＵ２８のファームウェアが参照するデータを書き換える第１実施形態の変形例を説明したが、ＲＡＭ４２内の第１ＣＰＵ２８のファームウェアの一部又は全部を変更する第２実施形態も第１実施形態と同様に変形可能である。
【００６８】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。例えば、上述の説明は暗号機タイプのストレージ装置２０に関するが、本発明は非暗号機タイプのストレージ装置にも適用可能である。また、電子機器としてストレージ装置を説明したが、データ記憶機能を備えているどのような電子機器にも本発明は適用可能である。
【符号の説明】
【００６９】
２４…フラッシュメモリ、２８…第１ＣＰＵ、３０…第２ＣＰＵ、３２…第１ＲＡＭ、５２…コマンド入出力部、５４…データ書き換え許可部、５６…認証処理部、５８…データ書き換え部、６２…第１ＣＰＵのファームウェア記憶領域、６４…第１ＣＰＵのファームウェアが参照するデータの記憶領域、６６…第１ＣＰＵのレジスタの値の記憶領域
【図１】
2020149236.tif 000003
【図２】
2020149236.tif 000004
【図３】
2020149236.tif 000005
【図４】
2020149236.tif 000006
【図５】
2020149236.tif 000007
【図６】
2020149236.tif 000008
【図７】
2020149236.tif 000009
【図８】
2020149236.tif 000010
【図９】
2020149236.tif 000011
【図１０】
2020149236.tif 000012
【図１１】
2020149236.tif 000013
【図１２】
2020149236.tif 000014