(57)【要約】【課題】データ処理システムの動作のセキュリティを向上させる。【解決手段】メモリアドレス空間はドメインに分割され、命令アクセス制御回路を使用して、実行される命令が取り込まれるメモリアドレスが、いつドメイン境界を横切り、変化したかを検出し、その場合に、新たなドメイン内の命令が許可された形態の許容命令であることを確認するために検査を行う。許容命令は、下位互換性を助けるために、命令アクセス制御回路に関する以外はノーオペレーション命令であるように決めておくことができる。【選択図】図３
2008257735.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
メモリアドレス空間内の値を有するメモリアドレスを用いてアドレス指定可能なメモリを具備し、前記メモリアドレス空間は少なくとも第１ドメインおよび第２ドメインを有し、ドメインはメモリアドレスの集合を含み、
前記メモリに結合され、前記メモリアドレス空間内のそれぞれのメモリアドレスを使用して一連のプログラム命令を取り込む動作が可能な命令取り込み回路と、
前記命令取り込み回路に結合され、前記第２ドメイン内の第２メモリアドレスと対応付けされた第２命令の取り込みが続く前記第１ドメイン内の第１メモリアドレスと対応付けされた第１命令の取り込みに応答して、
（ｉ）前記第１ドメインと対応付けされた命令にアクセスした後に前記第２ドメインと対応付けされた命令の実行を開始するときに、前記第２命令の命令コードから前記第２命令が実行することを許可された許容命令であるかどうか判定し、
（ｉｉ）前記第２命令が許容命令でないならば、アクセス違反応答を引き起こす
命令アクセス制御回路と、
をさらに具備し、
前記メモリアドレス空間は複数のドメインを含み、各ドメインは、他のドメインへのドメイン遷移のいずれが許容命令の検査を必要とし、または、必要としないかを示す、対応付けされたそれぞれのプログラム可能な権限を有する装置。
【請求項２】
前記許容命令は許容分岐ターゲット命令である請求項１に記載の装置。
【請求項３】
前記装置は複数のプログラム命令セットを使用し、
各プログラム命令セットは少なくとも１つの許容分岐ターゲット命令を有し、
前記命令アクセス制御回路は、前記第２命令が、前記第２命令を含む命令セットについての前記少なくとも１つの許容分岐ターゲット命令の１つであるか否かを判定する請求項２に記載の装置。
【請求項４】
前記許容命令は、前記命令アクセス制御回路以外の前記装置の処理回路によってノーオペレーション命令として処理される請求項１に記載の装置。
【請求項５】
前記第１ドメインについての前記プログラム可能な権限は、前記複数のドメインの他のいずれについて、前記第２ドメインであるとき、前記第２命令が許容命令であるか否かに応じてアクセスを制御するために前記命令アクセス制御回路がアクティブにされるか、または、アクティブにされないかを示す請求項１に記載の装置。
【請求項６】
前記第２ドメインについての前記プログラム可能な権限は、前記複数のドメインの他のいずれについて、前記第１ドメインであるとき、前記第２命令が許容命令であるか否かに応じてアクセスを制御するために前記命令アクセス制御回路がアクティブされるか、または、アクティブにされないかを示す請求項１に記載の装置。
【請求項７】
各ドメインについての前記プログラム可能な権限は、該ドメインと対応付けされたプログラム命令が、前記複数のドメインについての前記プログラム可能な権限を変更することができるか否かを示す請求項１に記載の装置。
【請求項８】
前記命令アクセス制御回路は、また、前記第１命令が許容分岐命令であるかどうかを判定し、前記第１命令が許容分岐命令でないならば、前記アクセス違反応答を引き起こす請求項１に記載の装置。
【請求項９】
前記例外の処理からの復帰において、前記命令アクセス制御回路が前記第２命令へのアクセスを制御するために前記第１命令の前記第１ドメインを識別することができるように、前記第１命令と前記第２命令との間で例外が発生するとき、保存される状態レジスタは前記第１ドメインを識別するデータを記憶する請求項１に記載の装置。
【請求項１０】
前記メモリアドレス空間は前記メモリと対応付けされた仮想メモリアドレス空間であり、
前記第１ドメインおよび前記第２ドメインは前記仮想メモリアドレス空間内のドメインであり、
メモリ管理回路は仮想メモリアドレスを物理メモリアドレスにマッピングする請求項１に記載の装置。
【請求項１１】
どの仮想メモリアドレスがどのドメインに対応するかを示すドメイン指示データは前記メモリ管理回路に記憶される請求項１０に記載の装置。
【請求項１２】
前記複数のドメインの前記プログラム可能な権限を指定するデータは、１つまたは複数のプログラム可能な構成定義レジスタ内に記憶される請求項１に記載の装置。
【請求項１３】
前記アクセス違反応答は、
ドメイン違反例外処理コードの実行、
メモリアボート、
アクセス違反例外処理コードの実行、
未定義の命令例外処理コードの実行
のうち１つである請求項１に記載の装置。
【請求項１４】
データを処理する方法であって、
メモリアドレス空間内の値を有するメモリアドレスを用いてアドレス指定可能なメモリ内にプログラム命令を記憶するステップを有し、前記メモリアドレス空間は少なくとも第１ドメインおよび第２ドメインを有し、ドメインはメモリアドレスの集合を含み、
前記メモリアドレス空間内のそれぞれのメモリアドレスを使用して一連のプログラム命令を取り込むステップと、
前記第２ドメイン内の第２メモリアドレスと対応付けされた第２命令の取り込みが続く前記第１ドメイン内の第１メモリアドレスと対応付けされた第１命令の取り込みに応答して、
（ｉ）前記第１ドメインと対応付けされた命令にアクセスした後に前記第２ドメインと対応付けされた命令の実行を開始するときに、前記第２命令の命令コードから前記第２命令が実行することを許可された許容命令であるかどうか判定し、
（ｉｉ）前記第２命令が許容命令でないならば、アクセス違反応答を引き起こす
ステップと、
をさらに有し、
前記メモリアドレス空間は複数のドメインを含み、各ドメインは、他のドメインへのドメイン遷移のいずれが許容命令の検査を必要とし、または、必要としないかを示す、対応付けされたそれぞれのプログラム可能な権限を有する方法。
【請求項１５】
前記許容命令は許容分岐ターゲット命令である請求項１４に記載の方法。
【請求項１６】
前記処理は複数のプログラム命令セットを使用し、
各プログラム命令セットは少なくとも１つの許容分岐ターゲット命令を有し、
前記第２命令が、前記第２命令を含む命令セットについての前記少なくとも１つの許容分岐ターゲット命令の１つであるか否かを判定するステップをさらに有する請求項１５に記載の方法。
【請求項１７】
前記許容命令は、前記アクセス違反応答の生成を制御する以外にノーオペレーション命令として処理される請求項１４に記載の方法。
【請求項１８】
前記第１ドメインについての前記プログラム可能な権限は、前記複数のドメインの他のいずれについて、前記第２ドメインであるとき、前記第２命令が許容命令であるか否かに応じてアクセスが制御されるかを示す請求項１４に記載の方法。
【請求項１９】
前記第２ドメインについての前記プログラム可能な権限は、前記複数のドメインの他のいずれについて、前記第１ドメインであるとき、前記第２命令が許容命令であるか否かに応じてアクセスを制御するためにアクティブにされるか、または、アクティブにされないかを示す請求項１４に記載の方法。
【請求項２０】
各ドメインについての前記プログラム可能な権限は、該ドメインと対応付けされたプログラム命令が、前記複数のドメインについての前記プログラム可能な権限を変更することができるか否かを示す請求項１４に記載の方法。
【請求項２１】
前記第１命令が許容分岐命令であるかどうかを判定し、前記第１命令が許容分岐命令でないならば、前記アクセス違反応答を引き起こすステップをさらに有する請求項１４に記載の方法。
【請求項２２】
前記例外の処理からの復帰において、前記第２命令へのアクセスを制御するために前記第１命令の前記第１ドメインを識別することができるように、前記第１命令と前記第２命令との間で例外が発生するとき、前記第１ドメインを識別するデータを記憶するステップをさらに有する請求項１４に記載の方法。
【請求項２３】
前記メモリアドレス空間は前記メモリと対応付けされた仮想メモリアドレス空間であり、
前記第１ドメインおよび前記第２ドメインは前記仮想メモリアドレス空間内のドメインであり、
仮想メモリアドレスは物理メモリアドレスにマッピングされる請求項１４に記載の方法。
【請求項２４】
どの仮想メモリアドレスがどのドメインに対応するかを示すドメイン指示データは、仮想メモリアドレスから物理メモリアドレスへのマッピングを指定するデータとともに記憶される請求項２３に記載の方法。
【請求項２５】
前記複数のドメインの前記プログラム可能な権限を指定するデータは、１つまたは複数のプログラム可能な構成定義レジスタ内に記憶される請求項１４に記載の方法。
【請求項２６】
前記アクセス違反応答は、
ドメイン違反例外処理コードの実行、
メモリアボート、
アクセス違反例外処理コードの実行、
未定義の命令例外処理コードの実行
のうち１つである請求項１４に記載の方法。
【請求項２７】
請求項１４に記載の方法を実行するようにコンピュータを制御するためのコンピュータプログラムを記憶するコンピュータプログラム記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より詳しくは、本発明は、データ処理システムの動作のセキュリティを向上させるためのメカニズムに関する。
【背景技術】
【０００２】
データ処理システムの動作のセキュリティを向上させることは重要な課題となりつつある。例として、データ処理システムは、デジタル権利管理システムを使用した、著作権保護された素材のような、保護されたデータを処理するために使用することが可能である。そのようなシステムは、著作権素材の再生のようなさらなる処理を進めることを許可する前に、セキュリティ検査コードが実行されること、および、セキュリティ検査に合格することを要求し得る。セキュリティメカニズムは、パスワード検査またはライセンス検査メカニズムとすることが可能である。そのようなセキュリティメカニズムに対する攻撃の知られた形態は、セキュリティ検査に合格したかのように処理を継続する目的で、パスワード検査コードのようなセキュリティプログラムコードをバイパスし、プログラム内に後の位置へジャンプすることを試みることである。そのような攻撃に取り組み、対抗するために、インテルＩＡ３２アーキテクチャでサポートされているファンクションゲート（function gating）、および、関数のエントリ（entry）およびエグジット（exit）のポイントを示すために使用される特定のエントリおよびエグジットのオペコードのようなメカニズムを提供することが知られている。しかし、そのようなメカニズムは、それらに付随する不都合な量の追加のオーバーヘッドを有し、そのコードのかなりの変更および再構築なしに既存のコンピュータコードに追加することが困難である。
【０００３】
異なるソフトウェアモジュールにわたって、コンパイル時に、公開されたエントリおよびエグジットのポイントを利用可能とすることが知られている。例えば、“National Semiconductor NS32532-20/ NS32532-25/ NS32532-30 High-Performance 32-Bit Microprocessor”（１９９１年５月）は、彼ら自身の権利において異なるプログラム実体であるモジュール間の呼び出しをプログラマーが行うことを可能とするENTERおよびEXIT命令を有するシステムを開示している。その目的は、実行時に決定されるアドレスにおいてモジュールを物理メモリにロードすることであるが、各モジュール内の関数の相対アドレスがコンパイル時に確定されることを可能とするメカニズムを提供する。実行時にＯＳはメモリにリンクテーブルを確立および維持し、これは、絶対呼び出しアドレスを提供するために、実行時のモジュール位置とモジュール内の関数の相対アドレスとを結び付ける。
【０００４】
“VAX-11 Architecture Reference Manual EK-VAXAR-RM-001”（１９８２年５月２０日、Revision 6.1）は、プロシージャ呼び出し命令を有するシステムを開示している。標準プロシージャ呼び出しインタフェースを実装するために３つの命令が使用される。２つの命令はプロシージャへの呼び出し（CALL）を実装し、３つ目はそれに符合する復帰（RETURN）を実装する。CALLG命令は、任意の位置における引数リストを用いてプロシージャを呼び出す。CALLS命令は、スタック上の引数リストを用いてプロシージャを呼び出す。CALLSの後の復帰において、このリストはスタックから自動的に除去される。両方の呼び出し命令は、呼び出されるプロシージャのエントリポイントのアドレスを指定する。エントリポイントは、プロシージャの命令が続くエントリマスクと呼ばれるワードからなると考えられる。RET命令を実行することによってプロシージャは終了する。システムはエントリポイントにおけるエントリマスクの存在を要求する。エントリは要求された配列に従って発生しなければならない。
【０００５】
エントリマスクは、サブプロシージャのレジスタの使用およびオーバーフローのイネーブル、例えば、IVおよびDVのラベルが付されたｒ０−ｒ１１、１２−１３、１４、１５をマスクするビット０−１１を有する１６ビットワード（整数および１０進数のオーバーフローイネーブル）を指定する。
【０００６】
呼び出しにおいて、スタックはロングワードの境界に合わされ、PSWにおけるトラップイネーブルは、呼び出されたプロシージャの首尾一貫した動作を保証するために、既知の状態に設定される。整数オーバーフローイネーブルおよび１０進数オーバーフローイネーブルは、それぞれ、エントリマスクのビット１４および１５に従って作用する。
【０００７】
フローティングアンダーフローイネーブルはクリアされる。それぞれ、ビット１１から０によって指定されるレジスタＲ１１からＲｆｌは、スタック上に保存され、RET命令によって復元される。さらに、PC、SP、FP、APはCALL命令によって常に保存され、RET命令によって復元される。
【０００８】
Budiu、Erlingsson、Abadiによる“Architectural Support for Software-Based Protection”（ASID’06、２００６年１０月２１日）は、ラベル（cfilabel）、“checked jump”（検査されるジャンプ）命令、新たなレジスタ、cfi_registerを追加することによりＣＰＵアーキテクチャを拡張することによるセキュリティの向上を開示する。検査されるジャンプを実行するために、“checked jump”命令によって続いて呼び出される要求される関数へのエントリポイントにおいてcfilabel内に見出されることが予期されるラベルの値とともにソフトウェアはcfi_registerをロードする。“checked jump”の間に合致するcfi_registerおよびcfilabel内の値が見出されるならば、cfi_register内の値はゼロにされ、実行は進めることを許される。“checked jump”の間にcfi_registerが非ゼロの値を含むならば、例外が起こされる。これは、セキュリティ制御において使用するために呼び出し位置において要求されるデータタグの概念を拡張する。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
関数エントリポイントにおいてcfilabel値を実装しない従来のソフトウェアを、それらが存在することを意図する、より新しいソフトウェアと統合しようと試みるとき、これらのアプローチに伴う困難に遭遇する。結果として、システムソフトウェアの全体は、この新たな機能の利益を得るために同時にアップグレードされなければならない。どのような１つの会社も全ての必要なソースコードにアクセスを有さないので、これが実現不可能なことはもっともである。
【課題を解決するための手段】
【００１０】
一態様から見て、本発明は、データを処理するための装置を提供し、前記装置は、
メモリアドレス空間内の値を有するメモリアドレスを用いてアドレス指定可能なメモリを具備し、前記メモリアドレス空間は少なくとも第１ドメインおよび第２ドメインを有し、ドメインはメモリアドレスの集合を含み、
前記メモリに結合され、前記メモリアドレス空間内のそれぞれのメモリアドレスを使用して一連のプログラム命令を取り込む動作が可能な命令取り込み回路と、
前記命令取り込み回路に結合され、前記第２ドメイン内の第２メモリアドレスと対応付けされた第２命令の取り込みが続く前記第１ドメイン内の第１メモリアドレスと対応付けされた第１命令の取り込みに応答して、
（ｉ）前記第１ドメインと対応付けされた命令にアクセスした後に前記第２ドメインと対応付けされた命令の実行を開始するときに、前記第２命令の命令コードから前記第２命令が実行することを許可された許容命令であるかどうか判定し、
（ｉｉ）前記第２命令が許容命令でないならば、アクセス違反応答を引き起こす
命令アクセス制御回路と、
をさらに具備し、
前記メモリアドレス空間は複数のドメインを含み、各ドメインは、他のドメインへのドメイン遷移のいずれが許容命令の検査を必要とし、または、必要としないかを示す、対応付けされたそれぞれのプログラム可能な権限を有する。
【００１１】
本技術は、関数呼び出しを行うことを要求するプログラム命令を記憶するメモリ位置と、関数呼び出しがターゲットコードへの正規のエントリポイントに行われることを検査する必要との間の強い関係が存在することを認識する。一例として、オペレーティングシステムは、データ処理システムに結び付けられたセキュリティの態様の多くを制御するために、多くの場合、使用され、オペレーティングシステムそれ自身の中での関数呼び出しは、上述した種類のセキュリティの脅威の比較的ありそうもない源を有する。しかし、オペレーティングシステムの全ての部分が等しく安全で強固であるとは限らない。従って、オペレーティングシステムのプログラム命令の強固な部分を記憶するメモリ位置の外部のメモリ位置に記憶される命令からオペレーティングシステム内のポイントへの関数呼び出しは、セキュリティの脅威を提示することがより多くありそうであり、従って、呼び出し保護メカニズムに付随するオーバーヘッドを正当化する。本技術は、第１ドメイン（メモリ空間内の連続または不連続であり得るメモリアドレスの集合）内の命令を実行することから第２メモリドメインへの変更を識別し、そのようなドメインの変更の検出において当該第２ドメイン内の第１命令が許容命令であることを判定するメカニズムを提供することによって、これらの潜在的な脆弱性に焦点をあてる。従って、存在するドメインの外部から呼び出されることが意図される関数呼び出しターゲットは、許容命令に対応するように配置される。当該ドメインの外部からの許容命令でない他の命令への呼び出しは、アクセス違反命令として検出され、アクセス違反応答を引き起こす。本技術は、ドメイン間の呼び出しにおけるメカニズムに焦点を合わせることによってセキュリティを向上させるための低オーバーヘッドのメカニズムを提供する。データタグではなく呼び出しターゲット位置における許容命令についての要求を使用してこれを達成する。
【００１２】
本技術は、例えば、所望の命令セットのＮＯＰ（ノーオペレーション）コード空間から、少ない数のＯＰコード（すなわち、命令セット毎に１つ）を使用してセキュリティを向上させ、特定の分岐命令の使用が機能することを必要としない。さらに、本技術は、ターゲット分岐検査コードの協働を可能とし、レガシーコードは分岐ターゲット検査のために設計されない。ここで、
【００１３】
【表１】
2008257735.tif 000003
【００１４】
この向上したセキュリティは、コンパイルされるときコード内に配置される特別なラベルについての要求なしで、オペレーティングシステムのドメイン管理によって提供されるので、これらの利益はレガシーコードについて達成することができる。
【００１５】
許容命令は各種の異なる形態をとり得ることが理解される。それらは許容分岐ターゲット命令（permitted branch target instruction）とすることが可能である。しかし、ドメイン境界は通常の順次的なプログラム実行によって横断することができ、そのような順次的な境界の横断が許容エントリポイントであることが意図されるとき、順次的な実行におけるそのような境界を横断されることがあり得るので、新たなドメイン内の第１命令は許容命令であるように配置することが可能である。
【００１６】
複数のプログラム命令セットを利用するデータ処理システムの場面において、各プログラム命令セットに少なくとも１つの許容分岐ターゲット命令を設け、前記第２命令を含む命令セットについて第２命令が許容命令であるか否かを命令アクセス制御回路が判定することを保証することによってセキュリティを向上させることが可能である。第２命令についてのアクティブな命令セットが第１命令についての命令セットと同一の命令セットからのものとすることが可能であり、または、命令セットの切り替えは第１命令から第２命令への移動と対応付けることが可能であり、その場合において、第２命令についての意図されるアクディブな命令セットが、許容命令の存在についての検査が行われるものである。
【００１７】
許容命令は、分岐ターゲット位置において典型的に従来から見出されるスタックプッシュ動作のような、幅広く各種の異なる形態を有し得ることが理解されるが、命令アクセス制御回路以外の処理回路によってノーオペレーション命令として許容命令が処理されるとき、向上した下位互換性（backward compatibility）が達成される。以前のバージョンのハードウェアにおけるように、命令アクセス制御回路が存在しないならば、保護された呼び出し機能なしで、従って、低レベルのセキュリティで行うが、プログラムコードは、評価されるとき、ノーオペレーション命令を単に無視し、エラーなしで動作する。
【００１８】
本技術は、許容第１命令、または、エントリへのある固定された関係における許容命令についての検査を引き起こすドメイン間の変更を有する２つのドメインのみを有するシステム内で使用することができると理解される。メモリアドレス空間が複数のドメインを含み、各々がそれと対応付けされたそれぞれのプログラム可能な権限を有し、他のドメインに移動するとき、他のどのドメインについて許容ターゲット命令についての検査が行われるかを示すためにプログラム可能な権限を含むとき、システムの柔軟性は向上する。従って、許容命令の検査メカニズムによってどのように扱われるかに関して、プログラムコードが、メモリアドレス空間内の記憶位置に応じて効果的に区分されることを可能とするプログラム可能な方法で、許容命令の検査は特定のドメイン遷移と対応付けることができる。検査が実行されるか否かを指定する情報は、呼び出しドメインまたはターゲットドメインのいずれかと対応付けることができる。
【００１９】
ターゲット命令が許容命令であることを検査するとともに、第１命令（典型的に、呼び出し命令）が許容命令であることを付加的に検査することも可能である。
【００２０】
上記は、分岐ターゲット命令に関して発生するセキュリティ検査とともに、例として使用されるいくつかのポイントにおいて分岐命令呼び出し関数を有することが理解でき、許容命令の検査の同じ技術は、呼び出しからの復帰においてドメイン間で移動するときに使用することができ、すなわち、許容復帰ポイントが使用されていることを確認するために（例えば、システム設計者によって意図されるセキュリティ検証コードを通して呼び出された関数が復帰したことを確認するために）検査を行うことができる。
【００２１】
第１命令および第２命令の実行を、それらの間で例外が発生し得なかった原子的な実体として扱うことが可能であるが、これは不都合に遅延を増加させる。従って、少なくともある実施形態において、第１命令と第２命令との間で例外が発生するとき、例外の処理からの復帰において命令アクセス制御回路が第１命令と対応付けされた第１ドメインを識別することができるように、保存された状態レジスタは第１ドメインを識別するデータを記憶し、それは、許容命令の検査がその特定のドメイン間の遷移について要求されるか否かに応じた第２命令への適切な制御アクセスである。代替の実施形態において、第１命令を用いて再スタートすることが可能である。
【００２２】
本技術は、単に物理メモリアドレス空間とともに使用することができるが、メモリアドレス空間が仮想メモリアドレス空間であるシステムによく適合する。この場合において、命令アクセス制御メカニズムは、仮想アドレスを物理アドレスにマッピングするメモリ管理回路とともに容易に統合することができ、そのようなメモリ管理回路は、システムの他の処理メカニズムと統合された便利でよく構造化された方法でドメイン指示データを記憶することができ、それによって、比較的少ない追加の処理オーバーヘッドを生じる。
【００２３】
ドメインのプログラム可能な権限は、メモリアドレス空間内の保護された領域内のような、システム内に多数の異なる方法で保持することができるが、プログラム可能な構成定義レジスタ（configuration register）内に効果的に保持され、プログラム可能な構成定義レジスタは、一般に、高レベルのセキュリティ制御の下におかれ、従って、セキュリティ攻撃へのより少ない脆弱性となり得る。
【００２４】
アクセス違反応答は、多数の異なる形態をとり得る。そのような形態の例は、メモリアボート、ドメイン違反例外処理コードの実行、アクセス違反例外処理コードの実行、未定義の命令例外処理コードの実行である。
【００２５】
もう１つの態様から見て、本発明は、データを処理する方法を提供し、前記方法は、
メモリアドレス空間内の値を有するメモリアドレスを用いてアドレス指定可能なメモリ内にプログラム命令を記憶するステップを有し、前記メモリアドレス空間は少なくとも第１ドメインおよび第２ドメインを有し、ドメインはメモリアドレスの集合を含み、
前記メモリアドレス空間内のそれぞれのメモリアドレスを使用して一連のプログラム命令を取り込むステップと、
前記第２ドメイン内の第２メモリアドレスと対応付けされた第２命令の取り込みが続く前記第１ドメイン内の第１メモリアドレスと対応付けされた第１命令の取り込みに応答して、
（ｉ）前記第１ドメインと対応付けされた命令にアクセスした後に前記第２ドメインと対応付けされた命令の実行を開始するときに、前記第２命令の命令コードから前記第２命令が実行することを許可された許容命令であるかどうか判定し、
（ｉｉ）前記第２命令が許容命令でないならば、アクセス違反応答を引き起こす
ステップと、
をさらに有し、
前記メモリアドレス空間は複数のドメインを含み、各ドメインは、他のドメインへのドメイン遷移のいずれが許容命令の検査を必要とし、または、必要としないかを示す、対応付けされたそれぞれのプログラム可能な権限を有する。
【００２６】
さらなる態様から見て、本発明は、上述した技術に従って実行するようにコンピュータを制御するためのコンピュータプログラムを記憶するためのコンピュータプログラム記憶媒体を提供する。
【００２７】
本発明の上記および他の目的、特徴、効果は、添付図面とともに読まれるべき、続く実施形態の詳細な説明から明らかになる。
【発明を実施するための最良の形態】
【００２８】
図１は、複数のメモリドメインに分割された仮想メモリアドレス空間を表わし、各メモリドメインは、対応付けされたドメイン指示子（domain specifier）を有する。これらのドメインは変動するサイズを有するこができ、連続または不連続とすることが可能であることが分かる。また、その仮想メモリアドレス空間の特定の領域が、特権モードのプロセスによってのみアクセス可能であるか、または、ユーザモードまたは特権モードの両方のプロセスによってアクセス可能であるかを示す、仮想メモリアドレスと対応付けされたアクセス制御データパラメータが表わされている（Ｐは特権モードのみ、Ｕは特権モードまたはユーザモード）。表わされているように、仮想メモリアドレス空間内の様々なメモリアドレスは、物理アドレス空間内の物理アドレスにマッピングされる。この技術分野の当業者によく知られているように、幅広く多様なマッピングが可能である。メモリアドレス空間それ自身の中に記憶され、変換テーブルポインタレジスタ内に記憶された変換テーブルポインタによって指し示される変換テーブルデータ（ページテーブルデータ）に応じて、仮想から物理へのマッピングが実行される。また、そのような変換テーブルデータに従って動作し、（特権のみ、特権／ユーザデータのような）アクセス制御データを個々のメモリ領域と対応付けるために、メモリ管理ユニットを設けることが可能である。ドメイン指示子は、英国ケンブリッジのＡＲＭ社によって提供されているＡＲＭアーキテクチャリファレンスマニュアルに説明されているＡＲＭプロセッサアーキテクチャに従って動作するプロセッサによって提供される形態のドメイン指示子であり得る。本技術の目的とは異なる他の目的のために利用する方法で、仮想メモリアドレス空間内のメモリアドレスの異なる集合の間で識別する手段として、既にこれらのドメイン指示子（例えば、１６個の異なるドメイン指示子）が設けられている。これらのドメイン指示子は本技術のための再使用することができる。
【００２９】
図２は、メモリ６に結合されたプロセッサコア４を有するデータ処理システム２を表わす。メモリ６は、データおよび命令の両方を記憶する、物理的にアドレス指定されるメモリアドレス空間を提供する。プロセッサコア４は、仮想メモリアドレス空間を利用するプログラム命令を実行し、プロセッサコア４内のＭＭＵ（メモリ管理ユニット）８は、仮想アドレスと物理アドレスとの間のマッピングの処理を制御する役割を果たす。レジスタバンク１０、乗算器１２、シフタ１４、加算器１６を含むデータ経路を利用するプログラム命令に応答してデータ処理動作が実行される。これらのデータ経路要素１０、１２、１４、１６は、命令デコーダ１８によって生成される制御信号の制御の下で動作し、そして、命令デコーダ１８は命令（Instruction（I））パイプライン２０内の命令に応答する。メモリ６から命令を取得する命令取り込みユニット２２によって命令パイプライン２０に命令が供給される。データ処理システム２を構成定義するために使用される各種の構成定義レジスタ２６を含む構成定義コプロセッサＣＰ１５・２４が設けられている。これらの構成定義レジスタ２６は、命令取り込みユニット２２を介してメモリ６から取り込まれたコプロセッサ伝達命令を使用して、書き込みおよび読み出しすることが可能である。そのような構成定義レジスタ２６を書き込みおよび読み出しする権限は、ドメインアクセス制御回路によって制限される。ドメインアクセス制御回路は、メモリ管理ユニット８から読み出される、構成定義レジスタ２６の変更を要求するプログラム命令が取り込まれたアドレスのドメインに応答する。この情報は、命令パイプライン２０内の当該命令とともに、実行されるポイントに当該命令が到達するまで、ドメイン指示子として渡される。構成定義レジスタ２６は、後述するメモリ内の異なるドメインの各々と対応付けされた権限を指定するプログラム可能な権限レジスタを含む。
【００３０】
ドメイン番号は、取り込まれた命令の仮想アドレスのためにＭＭＵ８によって使用されるセクション記述子から導き出される。概念的には、ＣＰ１５・２４に存在する適切な構成定義レジスタ（ドメイン権限記述子レジスタ）２６を探索することによってそのドメインに与えられた権限を取得するためにドメイン番号が使用される。命令、取り込まれたドメイン、そのドメインに与えられた権限の記述が、デコーダ１８に（直接または間接に）与えられ、デコーダ１８は、取り込まれた命令が実行を許されているか、または、例外を生成すべきかを決定し、例えば、命令が権限を持たないＣＰ１５レジスタに書き込みを試みるならば、例外が生成されるべきである。
【００３１】
ある実施形態において、ドメイン番号それ自身は、命令デコーダ１８に送信される必要はなく、特定のドメインに権限が割り当てられるのみである。しかし、コードの局所性の特性を考慮すると、ある実施形態は、ドメインの権限のローカルコピーを“キャッシュ”し、新たなドメインの権限が取り込まれないならば、取り込まれた命令の実際のドメイン番号がキャッシュされたコピーのドメイン番号と一致するか否かを確認する状態機械を実現することが可能である。この構成は、ある設計が実行することができる最大周波数（maximum frequency）を向上させるために役立ち得る。
【００３２】
また、命令パイプライン２０と結合された命令取り込みユニット２２およびメモリ管理ユニット８は、命令が実行されるドメイン間で変更がいつ行われたかを示し、そのような遷移のための管理が実行されたものとして示されたならば、新たなドメイン内の第１命令（またはそれへの固定された関係における命令）が許容命令（permitted instruction）（例えば、許容命令の集合の一要素）であることを検査する役割を果たす命令アクセス制御回路である。命令アクセス制御回路以外のデータ処理システム２内の要素についてノーオペレーション命令に対応する符号化を有するようにこれらの許容命令を選択することができる。ドメイン制御回路は、変換テーブルへのポインタを含む構成定義レジスタ２６へのアクセスを制御することによって、メモリ管理ユニット８によって利用されるアクセス制御データへの変更を制限するための手段を提供する。従って、あるメモリ領域への権限のないアクセスを与える新たな変換テーブルを指し示す変換テーブルデータポインタの再プログラミングに起因する、メモリ管理ユニット８によって与えられるセキュリティを破壊する権限のない試みを阻止することができる。この技術分野の当業者は、図２に表わされているデータ処理システム２は典型的に多くのさらなる回路要素を含むことを理解するが、明瞭にする目的のためにそれらは図２から省略され、本技術の理解に必要でない。
【００３３】
図３は、命令アクセス制御回路の動作を表わすフロー図である。ステップ２８において、処理は、次の命令が取り込み／実行されることを要求されるまで待つ。ステップ２８において次の命令が要求されると、ステップ３０において、メモリ６から次の命令が取り込まれ、メモリ管理ユニット８から当該次の命令のドメインが読み出される。ステップ３２は、次の命令のドメインが前の命令（または、次の命令に先行する、ある固定のまたはプログラム可能な位置における命令）のドメインと同一か否かを判定する。ドメインが同一であり、変更されていないならば、処理はステップ３４に進み、さらなる処理のために次の命令が渡される。しかし、ステップ３２における判定が、ドメインが変更された、ならば、処理はステップ３６に進む。
【００３４】
ステップ３６は、次の命令のドメインと前の命令のドメインから、当該ドメイン間の遷移が、ターゲット命令が許容ターゲット命令（permitted target instruction）であることを確認する制御を必要とするか否かを判定する。どのドメイン間の遷移が管理されるかの選択は、各ドメインと対応付けされ、かつ、各ドメインについて他のドメインへのドメイン遷移のいずれが許容分岐ターゲット命令検査を必要とするか、または、必要としないかを示すプログラム可能な権限レジスタを使用して行うことができる。ステップ３６における判定が、ドメイン遷移が分岐ターゲット命令検査を生じさせるものでないならば、処理はステップ３８に進み、（ドメインの変更が発生したことを反映するために）前のドメインとして記憶されたドメインの値が更新され、そして、処理はステップ３４に進み、上述したようにさらなる処理に次の命令を渡す。
【００３５】
ステップ３６における判定が、ドメイン遷移が分岐ターゲット命令検査が実行されるべきものであるならば、処理はステップ４０に進み、次の命令が、当該次の命令についてアクティブである命令セットについての許容分岐ターゲットであるか否かに関して判定が行われる。図２に記載されたデータ処理システム２は、複数命令セット（例えば、ＡＲＭプロセッサの場合におけるＡＲＭおよびThumb命令セット）をサポートすることが可能であり、これらの命令セットの各々は、１つまたは複数の許容分岐ターゲット命令のそれ自身の集合を有する。異なるターゲット命令セットについての許容分岐ターゲット命令は異なる符号化を有する。これは、分岐ターゲットポイントにおいてどの命令セットがアクティブにされるかに関してどのような不明確さも防止する。また、ある分岐は、分岐命令の一部として命令セット切り替え（例えば、ＡＲＭ／Thumb ＢＬＸ命令）を含むことが可能であり、許容分岐ターゲット命令が検査されるアクティブな命令セットは、分岐動作を伴う任意の命令セット切り替えを考慮する当該分岐ターゲットについて、どの命令セットがアクティブになるかに基づく。ステップ４０における判定が、次の命令が許容分岐ターゲット命令でないならば、処理はステップ４２に進み、アクセス違反応答が引き起こされる。このアクセス違反応答は、特定のアクセス違反応答コードの実行、ドメインがさらなる分岐ターゲット検査のために使用されるときの他のドメイン違反と共有するドメイン違反コードの実行、（必要ならば適切な例外コードを伴う）メモリアボート、または、未定義の命令例外を含む各種の異なる形態をとり得る。多くの他の種類の可能なアクセス違反応答も存在し、これらはシステム設計者によって選択することが可能である。特に深刻な応答はシステムをリセットすることである。
【００３６】
ステップ４０における判定が、次の命令が許容分岐ターゲット命令であったならば、処理はステップ４４に進み、前の命令が許容分岐命令であったか否かに関して判定が行われる。この方法において、許容命令からの、および、許容命令への、新たなドメインへの適切なエントリを検証するために、分岐命令および分岐ターゲット命令の両方が検査されることができる。ステップ４４において実行される分岐命令検査のステップは望むならば省略可能であることが理解される。ステップ４４において実行される分岐命令検査が、前の命令が許容分岐命令でないことを示すならば、処理は上述したステップ４２に進む。前の命令が許容分岐命令であるならば、処理は上述したステップ３８に進み、将来の比較において前の命令についてのドメインの値として使用される値が更新され、次の命令がさらなる処理のために渡される。
【００３７】
図４は、アプリケーションプログラム４６とオペレーティングシステムのカーネル４８との間で呼び出し転送プログラムを使用するシステムを表わす。アクセス制御データ５１を含むメモリ管理ユニットデータは、メモリアドレス空間内に記憶され、このアクセス制御データへのアクセスは、カーネル４８にのみ許可されている。これはアクセス制御データ５１を効果的にロックし、アプリケーションコード４６によって、または、オペレーティングシステムコード本体５０によってさえ変更することができない。アプリケーションコードが実行されるときにメモリアボートが発生するならば、アクセス制御データ５１を通してページテーブルウォークが実行されることを要求するメモリアボートについての例外処理は、物理アドレス空間を基にして、従ってアプリケーションコード４６がアクセス制御データ５１へのアクセスを有することを要求することなく、生成されるアドレスを使用して実行される。
【００３８】
また、アクセス制御データの構成部分は、制御レジスタおよびポインタ５４を含むデータ要素５２である。これら両方は、他のアクセス制御パラメータ（例えば、ＭＭＵイネーブル／ディスエーブル、変換テーブルポインタ、エンディアン構成定義、ドメインの権限制御レジスタへのアクセス、現在選択されている権限制御レジスタへのアクセス、等）の制御および表示とともに、変換テーブルデータ５１を指し示す。アクセス制御データ５２を変更する権限は、この例において、図４に表わされているドメイン“０”に予約されており、これはオペレーティングシステムカーネル４８および変換テーブルデータ５１を含む。ドメイン権限を変更する権限は、アクセス制御データ５２の一部を構成するので、オペレーティングシステムカーネルに予約されている。これは、権限のないアプリケーションコードまたはオペレーティングシステム本体５０の一部を構成するコードの権限のない部分による破壊への耐性を向上させる。
【００３９】
上述したように、アプリケーションコード４６は、カーネル４８への呼び出しを行うことを望み得る。カーネル４８のセキュリティを向上させるために、アプリケーション４６を実行しているドメイン（すなわち、ドメイン３）からカーネル４８へのアクセス（読み出しアクセスさえも）を提供しないように、アクセス制御データを構成定義することが可能である。従って、アプリケーション４６からカーネル４８への直接の呼び出しを行うどのような試みも、ユーザモードのアプリケーションプログラム４６によるアクセスについて、そのメモリ領域は単にマッピングされないか、または、拒否されるので、結果としてメモリアボートとなる。従って、アプリケーションコード４６がカーネル４８への呼び出しを行うことを望むとき、まず呼び出し転送プログラム５６への呼び出しを行うことによって行う。この呼び出し転送プログラムは、アプリケーションコード４６に認識でき、別個のドメイン（この例においてドメイン２）に存在する。ドメイン２はカーネルが存在するドメイン０へのアクセスを有し、従って、呼び出し転送をカーネル４８に渡し、カーネル４８の所望の機能をアクセスすることができる。呼び出し転送プログラム５６は呼び出し転送のこの機能に専用である比較的簡単な構成を有するので、小さく、かつ、安全で改変されていないものとして容易に検証できる。従って、カーネル４８の動作の詳細は隠すことができ、カーネルへのアクセスは許可されたエントリポイントを介するように制御することができ、上記のセキュリティ向上を制御するメカニズムは、簡単、かつ、それ自身の完全性について容易に検査される形態とすることができる。
【００４０】
図５は、上述した呼び出し転送処理を表わすフロー図である。本技術は、上述した分岐ターゲット命令制御に代えて、または、それに加えて使用することができる。ステップ５８において、カーネル４８を呼び出すことが必要となるまで処理は待機する。ステップ６０において、呼び出し転送プログラム５６への呼び出しが行われる。ステップ６１は、呼び出し転送コードの権限を使用してアクセス制御データを書き込み、カーネルコードが認識可能となるようにこのデータを変更する。ステップ６２において、呼び出し転送プログラム５６は、アプリケーションコード４６に代わってカーネル４８への呼び出しを行う。転送を戻すときカーネルは呼び出し転送コードに渡し、ユーザコードにジャンプして戻る前に呼び出し転送コードはカーネルコードを認識できないようにする。
【００４１】
図６は、セキュア状態で動作するセキュアオペレーティングシステム６４および非セキュア状態で動作する非セキュアオペレーティングシステム６６、６８を含むオペレーティングシステムを表わす図である。セキュア状態および非セキュア状態は、英国ケンブリッジのＡＲＭ社によって製造されたTrustZoneアーキテクチャおよびプロセッサメカニズムに従って提供される。セキュアおよび非セキュアな物理アドレス空間の各々について、仮想メモリアドレス空間７０は複数のドメインに分割される。ドメイン０は非セキュア（non-secure（NS））オペレーティングシステムのカーネル６６および信頼されたメモリ領域７２を含む。非セキュアオペレーティングシステムのカーネル６６は、上述したアクセス制御データ７４を制御する役割を果たす。このアクセス制御データ７４は、どのメモリ領域が、どの特権レベルによって、および、どのドメインによってアクセスすることができるかを制御する。信頼された領域７２へのアクセスは、非セキュアカーネル６６に制限され、これらは共有ドメイン、すなわち、ドメイン０を共有する。非セキュアオペレーティングシステム本体６８は、伸長されたデータを記憶するために使用されるメモリ領域７６とともにドメイン１に存在する。領域７６におけるこの伸長されたデータは、オペレーティングシステム本体６８によってアクセス可能であるが、ドメイン２内に記憶されるアプリケーションプログラム７８、８０によってアクセス可能でない。
【００４２】
図６のシステムは、階層化されたセキュリティレベルを提供することができる。暗号鍵に対応する最も安全なデータは、セキュアオペレーティングシステム６４によってのみアクセス可能であるように制限され、安全な物理アドレス空間に存在する。セキュアオペレーティングシステム６４は、要求されたデータを復号するためにこれらの暗号鍵を使用し、この復号され圧縮されたデータを、非セキュアオペレーティングシステム６６に属する信頼された領域７２に書き込む。この復号され圧縮されたデータは暗号鍵ほど特性において重要ではないが、それにもかかわらず、保護することが望まれる資産を表わし、対応付けされたセキュリティレベルを有する。従って、信頼された領域７２は、最も高いセキュリティレベルを有するドメイン０内で実行するプログラム命令にのみアクセス可能である。これらの信頼されたプログラムは、カーネル６６、および、信頼された領域７２それ自身の中に記憶されるＭＰＥＧデコーダプログラム８２を含む。ＭＰＥＧデコーダプログラム８２は、復号され圧縮されたデータを伸長し、これを伸長されたデータ領域７６に書き込む。この伸長されたデータ領域７６は、アプリケーションプログラム７８、８０によってアクセス可能でないが、非セキュアオペレーティングシステム本体６８によってアクセス可能である。従って、非セキュアオペレーティングシステム本体６８と結合された再生メカニズムは、例えば、伸長されたデータを再生し、それを画面に描画するために使用することができる。
【００４３】
セキュアオペレーティングシステム６４が復号されたデータを信頼された領域７２に書き込むに先立って、カーネル６６、および、（後述するドメイン権限レジスタ内に記憶される）ドメイン権限データ８４において指定されるドメインの構成定義について完全性検査を実行することができる。この完全性検査は、非セキュア状態で実行するソフトウェアのどれが信頼された領域７２にアクセスすることができるかを制御するアクセス制御データにアクセスする権限がカーネル６６にのみ与えられていることを確認することを含むドメイン権限データ８４についての構成定義の検査とともに、比較的小さなカーネル６６について実行されるチェックサム、ハッシュ、または、署名検査の動作の形態とすることが可能である。カーネル６６が検証され、かつ、カーネル６６のみがアクセス制御データを変更するために必要な権限を有するならば、信頼された領域７２が安全であることの合理的な信頼度を有することができる。従って、セキュアオペレーティングシステム６４は、要求される処理のいくつかを非セキュアドメインに譲り、従って、セキュアオペレーティングシステムがより小さく、従って、より安全とすることを可能とする。
【００４４】
図７は、図６のシステムの動作を表わすフロー図である。ステップ８６において、安全な復号化が要求されているか判定される。ステップ８８において、セキュア状態への切り替えが行われ、セキュアオペレーティングシステムが実行される。ステップ９０において、セキュアオペレーティングシステムは、非セキュアオペレーティングシステムカーネル６６を完全性検査する。この検査に失敗すると、処理は終了する。この検査に合格すると、処理はステップ９２に進み、非セキュアオペレーティングシステムカーネル６６を記憶するドメインがアクセス制御データ７４を変更することができる唯一のドメインであるかを確認するために、ドメイン権限データ８４の判定が行われる。この検査に失敗すると、処理は終了する。この検査に合格すると、処理はステップ９４に進み、信頼されたソフトウェア（例えば、非セキュアオペレーティングシステム６６およびＭＰＥＧデコーダ８２）のみが信頼された領域７２にアクセスすることができることをアクセス制御データ７４が示すか判定が行われる。この検査に失敗すると、処理は終了する。この検査に合格すると、処理はステップ９６に進み、セキュアオペレーティングシステム６４によって暗号鍵が読み出され（または、適切な暗号エンジンに供給され）、信頼された領域７２に書き込まれる復号され圧縮されたデータを生成するために、復号が実行される。そして、ステップ９８は、非セキュア状態に切り替え、非セキュアオペレーティングシステムが実行される。ステップ１００は、信頼された領域７２において実行する信頼されたソフトウェア８２（ＭＰＥＧデコーダ）を使用して、復号され圧縮されたデータを伸長し、伸長されたデータを、非セキュアオペレーティングシステム本体６８によってアクセス可能な伸長されたデータ領域７６に書き込む。そして、ステップ１０２は、非セキュアオペレーティングシステム本体６８内のプログラムコードを使用して、伸長されたデータを再生し、それを例えばコンピュータ画面に描画する。
【００４５】
図８は、ドメイン権限レジスタ（domain capability register（ＤＣＲ））１０４およびドメイン権限レジスタ選択レジスタ（domain capability register select register（ＤＣＲＳ））１０６を表わす。メモリアドレス空間（仮想または物理）が分割され得る１６個の異なるドメインの各々について設けられる１６個のドメイン権限レジスタ１０４が存在する。各々のドメインについてのドメインアクセスデータ１０８は、１５個の他のドメインの各々に関して、当該他のドメインへのアクセスが自由であるか否か、管理されているか、または、許可されていないか、を示す。管理されたアクセスは、当該制御レジスタ１０４に対応する現在のドメインからそのドメインへの遷移が、許容分岐ターゲット命令へのものであるか、許容分岐命令からのものであるかを確認するために、上述した命令アクセス検査を含む。また、主要な制御レジスタ１０４内の各種フラグは、ＭＭＵイネーブル／ディスエーブル、変換テーブルポインタ、レジスタアクセス権限、エンディアンを変更する権限、ドメイン権限レジスタ１０４それ自身またはドメイン権限レジスタ選択レジスタ１０６を変更する権限のような、一般メモリ管理に関する設定を指定する。また、ドメイン権限レジスタ１０４は、例えば、そのドメイン内で実行するプログラム命令が、ベクタテーブルポインタを変更することができるか否か、例外および他の動作と対応付けされた特定の応答をスイッチオンまたはオフすることができるか否かを制御する例外制御フラグを含む。ドメイン権限レジスタ１０４内のドメイン毎に制御することが望まれるシステム管理の項目に対応するさらなるフラグは、そのドメイン内でキャッシュ管理がターンオンまたはオフすることができるか否かのような権限を含むことができる。１つのフラグ、Ｓは、セキュア状態と非セキュア状態との間で変更するために使用されるソフトウェア割り込みであるＳＭＣ命令を実行する権限を制御する。
【００４６】
ドメイン権限レジスタ選択レジスタ１０６は、該当するドメインがそのドメイン権限レジスタ（フラグＭを参照）を読み出しおよび書き込みするために適切な権限を有するならば、読み出しおよび書き込みのために現在マッピングされたドメイン権限レジスタ１０４の番号を指定するドメイン番号フィールド１１０を含む。
【００４７】
本発明の実施形態が添付図面を参照して詳細に説明されたが、本発明はそれらの詳細な実施形態に限定されず、特許請求の範囲に規定された本発明の範囲および思想から逸脱することなく、この技術分野の当業者によって各種の変更および変形が生み出され得ることを理解すべきである。
【図面の簡単な説明】
【００４８】
【図１】仮想メモリアドレス空間と物理メモリアドレス空間との間の関係を表わす図である。
【図２】メモリアクセス制御回路、命令アクセス制御回路、ドメインアクセス制御回路を組み込んだデータ処理システムを表わす図である。
【図３】１つのドメインからもう１つのドメインへ移動するときに許容分岐ターゲット命令について検査する動作を表わすフロー図である。
【図４】アプリケーション呼び出しをオペレーティングシステムのカーネルに転送するために呼び出し転送プログラムが使用されるシステムを表わす図である。
【図５】呼び出し転送コードの使用を表わすフロー図である。
【図６】セキュアオペレーディングシステムがデータを書き込むことができ、非セキュア状態で動作するとき信頼されたプログラムがデータを読み出すことができるメモリ空間の信頼された領域の使用を表わす図である。
【図７】図６に表わされたシステムを使用して実行される一連の処理動作を表わすフロー図である。
【図８】メモリアドレス空間内の異なるドメイン内に対応付けされたプログラム可能な権限データを表わす図である。
【符号の説明】
【００４９】
２  データ処理システム
４  プロセッサコア
６  メモリ
８  メモリ管理ユニット
１０  レジスタバンク
１２  乗算器
１４  シフタ
１６  加算器
１８  命令デコーダ
２０  命令パイプライン
２２  命令取り込みユニット
２４  構成定義コプロセッサＣＰ１５
２６  構成定義レジスタ
【図１】
2008257735.tif 000004
【図２】
2008257735.tif 000005
【図３】
2008257735.tif 000006
【図４】
2008257735.tif 000007
【図５】
2008257735.tif 000008
【図６】
2008257735.tif 000009
【図７】
2008257735.tif 000010
【図８】
2008257735.tif 000011
【外国語明細書】
2008257735.tif 000012
2008257735.tif 000013
2008257735.tif 000014
2008257735.tif 000015
2008257735.tif 000016
2008257735.tif 000017
2008257735.tif 000018
2008257735.tif 000019
2008257735.tif 000020
2008257735.tif 000021
2008257735.tif 000022
2008257735.tif 000023
2008257735.tif 000024
2008257735.tif 000025
2008257735.tif 000026
2008257735.tif 000027
2008257735.tif 000028
2008257735.tif 000029
2008257735.tif 000030
2008257735.tif 000031
2008257735.tif 000032
2008257735.tif 000033
2008257735.tif 000034
2008257735.tif 000035
2008257735.tif 000036
2008257735.tif 000037
2008257735.tif 000038
2008257735.tif 000039
2008257735.tif 000040
2008257735.tif 000041
2008257735.tif 000042
2008257735.tif 000043
2008257735.tif 000044
2008257735.tif 000045
2008257735.tif 000046