(57)【要約】【課題】アクセス制御データに応じて所定のメモリアドレスへのアクセスを制御する。【解決手段】メモリアドレス空間へのアクセスは、アクセス制御データを使用したメモリアクセス制御回路によって制御される。アクセス制御データを変更する権限は、ドメイン制御回路によって制御される。メモリアドレスの集合である特定のドメイン内に記憶される命令がアクセス制御データを修正することができるか否かは当該ドメインに依存する。従って、アクセス制御データを変更する権限は、メモリアドレス空間内の特定の定義された位置の中に記憶された命令に制限することが可能であり、セキュリティを向上させる。この権限は、ＯＳへの呼び出し転送が呼び出し転送コードを介して強制され、非セキュアＯＳの制御の下で実行する信頼されたソフトウェアによってのみ当該データがアクセス可能であり、メモリアドレス空間の信頼された領域を確立することができる。【選択図】図７
2008257734.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
メモリアドレス空間内の値を有するメモリアドレスを用いてアドレス指定可能なメモリを具備し、前記メモリアドレス空間は複数のドメインを有し、ドメインはメモリアドレスの集合を含み、各メモリアドレスは少なくとも１つのドメインに属し、
前記メモリに結合され、それぞれのメモリアドレスと対応付けされた一連のプログラム命令に応答してデータ処理動作を実行する処理回路と、
前記メモリおよび前記処理回路のうち少なくとも１つに結合され、前記メモリアドレス空間の異なる領域についてのアクセス制御データに応答して前記処理回路が所定のメモリアドレスをアクセスできるか否かを制御するメモリアクセス制御回路と、
前記処理回路に結合され、処理される命令のメモリアドレスが前記複数のドメインのいずれと対応付けされるかに応答して前記命令が前記アクセス制御データを変更できるか否かを制御するドメイン制御回路と、
をさらに具備する装置。
【請求項２】
前記処理回路は、複数の動作モードの中から選択された現在の動作モードを有し、
前記メモリアクセス制御回路は、さらに、アクセス制御データに応答して前記現在の動作モードに応じてアクセス権限を指定する請求項１に記載の装置。
【請求項３】
前記複数のモードはユーザモードおよび特権モードを含む請求項２に記載の装置。
【請求項４】
前記アクセス制御データは、処理される前記命令の現在のドメインに応じて前記処理回路が前記所定のメモリアドレスについて、
アクセスを有さない、
全てのアクセスを有する、
他のパラメータによって制御されるアクセスを有する、
のうちいずれの１つであるかを指定する請求項１に記載の装置。
【請求項５】
前記アクセス制御データは、また、前記処理回路が少なくともいくつかの種類の命令を実行することを許可されているか否かを制御する請求項１に記載の装置。
【請求項６】
前記メモリアドレス空間は、前記メモリと対応付けされた仮想メモリアドレス空間であり、
前記複数のドメインは前記仮想メモリアドレス空間内のドメインであり、
メモリ管理回路は、変換テーブルデータを使用して仮想メモリアドレスから物理メモリアドレスへマッピングし、
前記変換テーブルデータはアクセス制御データである請求項１に記載の装置。
【請求項７】
前記変換テーブルデータは、変換テーブルポインタ値レジスタ内に記憶される変換テーブルポインタ値によって指定される位置に記憶され、
前記変換テーブルポインタ値は、前記メモリアクセス制御回路がアクセスを制御するアクセス制御データである請求項１に記載の装置。
【請求項８】
前記複数のドメインは、それぞれ対応付けされたプログラム可能な権限を有する請求項１に記載の装置。
【請求項９】
各ドメインについての前記プログラム可能な権限は、該ドメインが前記ドメイン制御回路によって前記アクセス制御データを変更することが許可されているか否かに関して前記ドメイン制御回路を制御する１つまたは複数の権限指定値を含む請求項８に記載の装置。
【請求項１０】
各ドメインについての前記プログラム可能な権限は、該ドメインと対応付けされたプログラム命令が前記複数のドメインについて前記プログラム可能な権限を変更することができるか否かを含む請求項８に記載の装置。
【請求項１１】
前記装置上で実行するオペレーティングシステムのカーネル部分は、前記アクセス制御データを変更することが許可されたドメイン内に記憶される請求項１に記載の装置。
【請求項１２】
前記オペレーティングシステムの残りの部分は、前記アクセス制御データを変更することが許可されていないドメイン内に記憶される請求項１１に記載の装置。
【請求項１３】
アプリケーションプログラムは、前記アクセス制御データを変更することが許可されていないドメイン内に記憶される請求項１１に記載の装置。
【請求項１４】
アプリケーションプログラムは、前記カーネルへの読み出しアクセスを有さないメモリ領域内に記憶され、
前記アプリケーションプログラムは、前記カーネルへの読み出しアクセスを有するメモリ領域内に記憶される呼び出し転送プログラムを介して前記カーネルへの呼び出しを行う請求項１１に記載の装置。
【請求項１５】
セキュアオペレーティングシステムはセキュア状態において前記装置上で実行され、
非セキュアオペレーティングシステムは非セキュア状態において前記装置上で実行される請求項１に記載の装置。
【請求項１６】
前記非セキュア状態において前記非セキュアオペレーティングシステムは、前記メモリアクセス制御回路が、信頼されたソフトウェアによってアクセスでき、かつ、信頼されていないソフトウェアによってアクセスできない前記メモリアドレス空間の信頼された領域を提供するように、前記アクセス制御データを書き込み、
前記ドメイン制御回路は、前記非セキュアオペレーティングシステムを記憶するドメイン以外のドメイン内に記憶されるソフトウェアが前記アクセス制御データを変更することを防止する役割を果たし、従って、前記信頼された領域へのアクセスを信頼されていないソフトウェアに提供する請求項１５に記載の装置。
【請求項１７】
前記セキュア状態において前記セキュアオペレーティングシステムは、前記メモリアドレス空間の前記信頼された領域にセキュアデータを書き込む請求項１６に記載の装置。
【請求項１８】
前記信頼された領域に前記セキュアデータを書き込む前に、前記セキュアオペレーティングシステムは、前記非セキュアオペレーティングシステムを完全性検査し、かつ、前記非セキュアオペレーティングシステムを記憶する前記ドメインを用いて記憶されたソフトウェアが前記アクセス制御データを変更することのみ可能とするように前記ドメイン制御回路が構成されていることを検査する請求項１７に記載の装置。
【請求項１９】
前記セキュアオペレーティングシステムは、前記非セキュアオペレーティングシステム上で、
チックサム動作、
ハッシュ動作、
署名検査動作、
のうち１つまたは複数を実行することによって前記非セキュアオペレーティングシステムを完全性検査する請求項１８に記載の装置。
【請求項２０】
第１セキュリティレベルのセキュアデータは、前記セキュア状態で前記セキュアオペレーティングシステムによってのみアクセス可能であり、
第２セキュリティレベルのセキュアデータは、前記非セキュア状態で前記信頼されたプログラムによってアクセス可能であるように前記セキュアオペレーティングシステムによって前記信頼された領域に書き込まれ、
前記第２セキュリティレベルは前記第１セキュリティレベルよりセキュリティが低い請求項１６に記載の装置。
【請求項２１】
データを処理する方法であって、
メモリアドレス空間内の値を有するメモリアドレスを用いてアドレス指定可能なメモリ内にプログラム命令を記憶するステップを有し、前記メモリアドレス空間は複数のドメインを有し、ドメインはメモリアドレスの集合を含み、各メモリアドレスは少なくとも１つのドメインに属し、
それぞれのメモリアドレスと対応付けされた一連のプログラム命令に応答してデータ処理動作を実行するステップと、
前記メモリアドレス空間の異なる領域についてのアクセス制御データに応答して所定のメモリアドレスをアクセスできるか否かを制御するステップと、
処理される命令のメモリアドレスが前記複数のドメインのいずれと対応付けされるかに応答して前記命令が前記アクセス制御データを変更できるか否かを制御するステップと、
をさらに有する方法。
【請求項２２】
複数の動作モードの中から現在の動作モードを選択するステップを有し、
前記アクセス制御データは、さらに、前記現在の動作モードに応じてアクセス権限を指定する請求項２１に記載の方法。
【請求項２３】
前記複数のモードはユーザモードおよび特権モードを含む請求項２１に記載の方法。
【請求項２４】
前記アクセス制御データは、処理される前記命令の現在のドメインに応じて前記所定のメモリアドレスが、
読み出しおよび書き込みアクセス、
読み出しのみのアクセス、
アクセス不可、
のうちいずれの１つに従うかを指定する請求項２１に記載の方法。
【請求項２５】
前記アクセス制御データは、また、前記処理回路が少なくともいくつかの種類の命令を実行することを許可されているか否かを制御する請求項２１に記載の方法。
【請求項２６】
前記メモリアドレス空間は、前記メモリと対応付けされた仮想メモリアドレス空間であり、
前記複数のドメインは前記仮想メモリアドレス空間内のドメインであり、
仮想メモリアドレスは、変換テーブルデータを使用して物理メモリアドレスにマッピングされ、
前記変換テーブルデータはアクセス制御データである請求項２１に記載の方法。
【請求項２７】
前記変換テーブルデータは、変換テーブルポインタ値レジスタ内に記憶される変換テーブルポインタ値によって指定される位置に記憶され、
前記変換テーブルポインタ値は、アクセスが制御されるアクセス制御データである請求項２１に記載の方法。
【請求項２８】
前記複数のドメインは、それぞれ対応付けされたプログラム可能な権限を有する請求項２１に記載の方法。
【請求項２９】
各ドメインについての前記プログラム可能な権限は、該ドメインが前記アクセス制御データを変更することが許可されているか否かの１つまたは複数の権限指定値を含む請求項２８に記載の方法。
【請求項３０】
各ドメインについての前記プログラム可能な権限は、該ドメインと対応付けされたプログラム命令が前記複数のドメインについて前記プログラム可能な権限を変更することができるか否かを含む請求項２８に記載の方法。
【請求項３１】
オペレーティングシステムのカーネル部分は、前記アクセス制御データを変更することが許可されたドメイン内に記憶される請求項２１に記載の方法。
【請求項３２】
前記オペレーティングシステムの残りの部分は、前記アクセス制御データを変更することが許可されていないドメイン内に記憶される請求項３１に記載の方法。
【請求項３３】
アプリケーションプログラムは、前記アクセス制御データを変更することが許可されていないドメイン内に記憶される請求項３１に記載の方法。
【請求項３４】
アプリケーションプログラムは、前記カーネルへの読み出しアクセスを有さないメモリ領域内に記憶され、
前記アプリケーションプログラムは、前記カーネルへの読み出しアクセスを有するメモリ領域内に記憶される呼び出し転送プログラムを介して前記カーネルへの呼び出しを行う請求項３１に記載の方法。
【請求項３５】
セキュアオペレーティングシステムはセキュア状態において実行され、
非セキュアオペレーティングシステムは非セキュア状態において実行される請求項２１に記載の方法。
【請求項３６】
前記非セキュア状態において前記非セキュアオペレーティングシステムは、信頼されたソフトウェアによってアクセスでき、かつ、信頼されていないソフトウェアによってアクセスできない前記メモリアドレス空間の信頼された領域を提供するように、前記アクセス制御データを書き込み、
前記非セキュアオペレーティングシステムを記憶するドメイン以外のドメイン内に記憶されるソフトウェアが前記アクセス制御データを変更することを防止し、従って、前記信頼された領域へのアクセスを信頼されていないソフトウェアに提供する請求項３５に記載の方法。
【請求項３７】
前記セキュア状態において前記セキュアオペレーティングシステムは、前記メモリアドレス空間の前記信頼された領域にセキュアデータを書き込む請求項３６に記載の方法。
【請求項３８】
前記信頼された領域に前記セキュアデータを書き込む前に、前記セキュアオペレーティングシステムは、前記非セキュアオペレーティングシステムを完全性検査し、かつ、前記非セキュアオペレーティングシステムを記憶する前記ドメインを用いて記憶されたソフトウェアが前記アクセス制御データを変更することのみ可能とする構成定義について検査する請求項３７に記載の方法。
【請求項３９】
前記セキュアオペレーティングシステムは、前記非セキュアオペレーティングシステム上で
チックサム動作、
ハッシュ動作、
署名検査動作、
のうち１つまたは複数を実行することによって前記非セキュアオペレーティングシステムを完全性検査する請求項３８に記載の方法。
【請求項４０】
第１セキュリティレベルのセキュアデータは、前記セキュア状態で前記セキュアオペレーティングシステムによってのみアクセス可能であり、
第２セキュリティレベルのセキュアデータは、前記非セキュア状態で前記信頼されたプログラムによってアクセス可能であるように前記セキュアオペレーティングシステムによって前記信頼された領域に書き込まれ、
前記第２セキュリティレベルは前記第１セキュリティレベルよりセキュリティが低い請求項３６に記載の方法。
【請求項４１】
請求項２１に記載の方法を実行するようにコンピュータを制御するためのコンピュータプログラムを記憶するコンピュータプログラム記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より詳しくは、本発明は、アクセス制御データに応じて所定のメモリアドレスへのアクセスを制御するセキュリティメカニズムを有するデータ処理システムに関する。
【背景技術】
【０００２】
アクセス制御データに応じて所定のメモリアドレスへのアクセスが許可されるか否かを制御するためにメモリアクセス制御回路が使用されるデータ処理システムを提供することが知られている。一例として、英国ケンブリッジのＡＲＭ社によって製造されているＡＲＭプロセッサのような周知のシステムは特権モード動作およびユーザモード動作を提供し、メモリアドレス領域は、特権モードで動作するときのみアクセス可能であるように、アクセス制御データによって定義することが可能である。他の周知のコンピュータシステムはハードウェア権限リストを実装し、それによって重要なＣＰＵ制御リソースにアクセスする権限は、リソース毎またはアプリケーション毎に許可することが可能である。そのようなシステムは、マルチユーザオペレーティングシステムをサポートするためにセグメント化されたメモリシステムを使用し、仮想アドレス指定の形態についてのサポートを提供するとともに上述したユーザ／特権の分離に類似の、しかし、よりきめ細かい権限階層を実装する。そのようなコンピュータアーキテクチャの説明は、デジタルイクイップメント社のHenry M Levyによる“Capability-Based Computer Systems”（１９８４年）に見出すことができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
メモリアクセス制御回路による使用のためにアクセス制御データをプログラムすることができる柔軟性は、ハードウェアが、アクセス制御データの必要なプログラミングに従う各種の異なるソフトウェアとともに使用されることを可能とするので、望ましい。しかし、そのようなシステム内の重大な脆弱さは、所定のメモリアドレスへの望ましくないアクセスを与えるようにアクセス制御データを変更する権限のないコードである。特権モードで動作するとき、システムの全ての部分へのアクセスが通常は可能である。それは、ユーザモードにおいて、特権モードのコードによって提供される特権モードにおけるサービスについての呼び出しのために必要であり得る。特権モードへのエントリは、例外ベクタによるものであり、厳重に制御される。
【０００４】
上記課題に取り組む１つの方法は、英国ケンブリッジのＡＲＭ社のいくつかのプロセッサによって提供されるトラストゾーン（TrustZone）機能（これは特権の特別の階層と考えることができる）のようなメカニズムを提供することである。これらのプロセッサは、動作のセキュア状態を提供し、セキュア状態の中で発生する動作へのメモリアクセス制御データを変更する権限を制限し、そして、セキュア状態への進入および退出を行うことができる方法とともに、セキュア状態で動作することができるコードを厳しく制御することができる。そのようなメカニズムは高度のセキュリティを提供することができるが、典型的に、ソフトウェアコードが動作の非セキュア状態の多数の異なる形態を適切に制御する権限を有するように、セキュア状態において動作する適切なソフトウェアコードを書くことにかなりの量の投資を必要とする。さらに、セキュア状態で実行するコードがより大きく、より複雑に、より権限が大きくなるに連れて、それは一般にそれ自身、セキュリティの問題に、より脆弱にもなる。一般原則として、小さく簡単なコードはより安全であり、コードの複雑さが増加するに連れて無意識に導入されるセキュリティの脆弱さを含むことがより少ない。
【課題を解決するための手段】
【０００５】
一態様から見て、本発明は、データを処理するための装置を提供し、前記装置は、
メモリアドレス空間内の値を有するメモリアドレスを用いてアドレス指定可能なメモリを具備し、前記メモリアドレス空間は複数のドメインを有し、ドメインはメモリアドレスの集合を含み、各メモリアドレスは少なくとも１つのドメインに属し、
前記メモリに結合され、それぞれのメモリアドレスと対応付けされた一連のプログラム命令に応答してデータ処理動作を実行する処理回路と、
前記メモリおよび前記処理回路のうち少なくとも１つに結合され、前記メモリアドレス空間の異なる領域についてのアクセス制御データに応答して前記処理回路が所定のメモリアドレスをアクセスできるか否かを制御するメモリアクセス制御回路と、
前記処理回路に結合され、処理される命令のメモリアドレスが前記複数のドメインのいずれと対応付けされるかに応答して前記命令が前記アクセス制御データを変更できるか否かを制御するドメイン制御回路と、
をさらに具備する。
【０００６】
本発明は、アクセス制御データに応答してメモリアクセス制御回路の使用を継続するが、当該アクセス制御データの変更を要求する命令が記憶されるドメイン（ドメインは連続または不連続のメモリアドレスの集合である）に応じて、アクセス制御データを変更する権限を制限することによって、過度の付加的なオーバーヘッドおよび再プログラミング（例えば、コードを区分し、特定目的のコードを書き、セキュア状態のコードを書く、等）なしで全体のセキュリティの向上が達成できることを認識している。アクセス制御データを変更可能であることが正規に意図されている、実行される全体のソフトウェア内の位置は比較的限定され、従って、ドメイン制御回路は、アクセス制御データを変更する権限を、これらの比較的小さい領域内から実行するコードに制限するように構成することができる。一例として、システム設計者は、命令がアクセス制御データの変更の要求を実行するシステム内の唯一の正規の位置はオペレーティングシステムカーネルコード内からであることを保証することが可能であり得る。従って、システム内の他の場所に記憶された権限のないソフトウェアは、ドメイン制御回路によってアクセス制御データを変更することが防止され、従って、メモリアクセス制御回路は、正規のアクセス制御データに基づいて適切な保護を提供し続けることができる。
【０００７】
メモリアクセス制御回路は、例えば、特定のプログラム命令が実行しているメモリ位置を含む、各種のシステム状態パラメータに応じて、所定のメモリアドレスへのアクセスの制御において各種の異なる方法で動作することができるが、本技術は、システムの現在の動作モードに応じてアクセス権限を指定するアクセス制御データを用いて複数のモードで動作する、例えば、特権モード処理にのみあるメモリ位置へのアクセスを提供し、ユーザモード処理にそのようなアクセスを拒否するシステムによく適合している。
【０００８】
アクセス制御データに応じて提供されるアクセスのレベルは変化し、アクセス不可、全てのアクセス、他のパラメータによって制御される（例えば、処理モードに関するパラメータによって制御される）アクセスのように、複数のレベルを含むことができる。
【０００９】
また、アクセス制御データは、あるドメイン内からある命令、例えば、非セキュア状態からセキュア状態への切り替えの一部として使用することができる種類の（監視呼び出し命令のような）ソフトウェア割り込み命令を実行することができるか否かを制御するために使用することができる。
【００１０】
本技術は、単に物理的にマッピングされるメモリアドレス空間を利用するシステム内で使用することができるが、本技術は、仮想メモリアドレス空間内のドメインである複数のドメインとともに仮想メモリアドレス空間を利用するシステムによく適合しており、メモリ管理回路は、アクセス制御データである変換テーブルデータを使用して仮想メモリアドレスから物理メモリアドレスにマッピングするために使用される。上述したドメイン制御回路を使用して変換テーブルデータを再プログラムする権限を保護することは、システムのセキュリティにかなりの向上を与え、既存のコードに比較的少ない変更を要求し、セキュリティのレベルが減少するが、下位互換性を可能とする。上述した変換テーブルデータは、変換テーブルポインタによって指定される位置において記憶することが可能であり、当該変換テーブルポインタへのアクセスは、ドメイン制御回路によって制御される。一例として、変換テーブルデータはセキュアドメイン内に記憶することが可能であり、不正なコードの権限が、他の場所に記憶される代替の変換テーブルデータを単に指し示し、当該代替の変換テーブルデータがあるメモリアドレスへの権限のないアクセスを与えることを防止することによって、セキュリティの破壊を防止することが望ましい。
【００１１】
ドメインが、他の権限とともにアクセス制御データを変更する権限に関して固定された権限を有することは可能であるが、これらの権限がプログラム可能であるときシステムの柔軟性は向上する。従って、各ドメインについてのプログラム可能な権限は、主要な制御回路が、当該ドメイン内から実行するコードがアクセス制御データを変更することを許可するまたは許可しない方法を制御する１つまたは複数の権限指定パラメータを含むことができる。
【００１２】
ドメイン毎に与えることができるさらなるプログラム可能な権限は、ドメイン内のプログラム命令が、プログラム可能な権限それ自身を変更する権限である。この方法において、全体としてシステムについてのプログラム可能な権限を安全な方法で設定することができるドメインにブートし、そして、それら自身へのそれらの権限を変更する権限を制限するようにシステムを構成することができる。上述した技術に従ってアクセス制御データを変更することが許可される信頼されたソフトウェアの一例は、オペレーティングシステムのカーネル部分である。そのようなカーネル部分は、アクセス制御データを変更する権限を有するドメイン内に記憶することができるが、数が多数で大きさが大きいオペレーティングシステムの他の部分は、アクセス制御データを変更することが許可されているドメイン内に記憶されない。従って、アクセス制御データを変更することが可能なコードを検証および制御する必要性は、オペレーティングシステムのカーネル部分の検証および制御に制限することができ、その部分は比較的安定し小さい。オペレーティングシステムの他の部分の大きく比較的頻繁に変動する特性は、主要な制御回路によって提供されるセキュリティ基準を弱めるとは限らない。
【００１３】
上記の場合において、アプリケーションプログラムがアクセス制御データを変更する通常のプログラミング習慣ではないが、典型的に、アクセス制御データを変更することが許可されていないドメイン内にアプリケーションプログラムが記憶されることが理解される。これは、オペレーティングシステムのより正しい責任である。
【００１４】
オペレーティングシステムのカーネルの完全性は、カーネルへのアクセスを有するメモリ領域内に記憶される呼び出し転送プログラムを介して行われる代わりに、アプリケーションプログラムがカーネルそれ自身を直接に読み出し、そのような呼び出しを用いてカーネルそれ自身への呼び出しを行う権利を有さないように、アクセス制御データを配置することによって向上させることができる。そのような呼び出し転送プログラムは比較的小さく、従って、安全に書き、権限のない書き替えを検査することが比較的容易である。
【００１５】
他の実施形態によれば、よい品質の権限のない複製が行われることを可能とする復号されたソース著作権素材のような、保護を必要とすると考えられるデータは、非セキュアオペレーティングシステム内から、または、信頼された領域それ自身の中から実行する信頼された伸長されたコードのような非セキュア状態内の信頼されたソフトウェアによって操作することができるようにメモリの信頼された領域に書き込むことが可能である。従って、階層化されたセキュリティのレベルを達成することが可能である。
【００１６】
もう１つの態様から見て、本発明は、データを処理する方法を提供し、前記方法は、
メモリアドレス空間内の値を有するメモリアドレスを用いてアドレス指定可能なメモリ内にプログラム命令を記憶するステップを有し、前記メモリアドレス空間は複数のドメインを有し、ドメインはメモリアドレスの集合を含み、各メモリアドレスは少なくとも１つのドメインに属し、
それぞれのメモリアドレスと対応付けされた一連のプログラム命令に応答してデータ処理動作を実行するステップと、
前記メモリアドレス空間の異なる領域についてのアクセス制御データに応答して所定のメモリアドレスをアクセスできるか否かを制御するステップと、
処理される命令のメモリアドレスが前記複数のドメインのいずれと対応付けされるかに応答して前記命令が前記アクセス制御データを変更できるか否かを制御するステップと、
をさらに有する。
【００１７】
さらなる態様から見て、本発明は、上述した技術に従って実行するようにコンピュータを制御するためのコンピュータプログラムを記憶するコンピュータプログラム記憶媒体を提供する。
【００１８】
本発明の上記および他の目的、特徴、効果は、添付図面とともに読まれるべき、続く実施形態の詳細な説明から明らかになる。
【発明を実施するための最良の形態】
【００１９】
図１は、複数のメモリドメインに分割された仮想メモリアドレス空間を表わし、各メモリドメインは、対応付けされたドメイン指示子（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（ＤＣＲＳ））１０６を表わす。メモリアドレス空間（仮想または物理）が分割され得る１６個の異なるドメインの各々について設けられる１６個のドメイン権限レジスタ１０４が存在する。各々のドメインについてのドメインアクセスデータ１０８は、１５個の他のドメインの各々に関して、当該他のドメインへのアクセスが自由であるか否か、管理されているか、または、許可されていないか、を示す。管理されたアクセスは、当該制御レジスタ１０４に対応する現在のドメインからそのドメインへの遷移が、許容分岐ターゲット命令へのものであるか、許容分岐命令からのものであるかを確認するために、上述した命令アクセス検査を含む。また、主要な制御レジスタ１０４内の各種フラグは、ＭＭＵイネーブル／ディスエーブル、変換テーブルポインタ、レジスタアクセス権限、エンディアンを変更する権限、ドメイン権限レジスタ１０４それ自身またはドメイン権限レジスタ選択レジスタ１０６を変更する権限のような、一般メモリ管理に関する設定を指定する。また、ドメイン権限レジスタ１０４は、例えば、そのドメイン内で実行するプログラム命令が、ベクタテーブルポインタを変更することができるか否か、例外および他の動作と対応付けされた特定の応答をスイッチオンまたはオフすることができるか否かを制御する例外制御フラグを含む。ドメイン権限レジスタ１０４内のドメイン毎に制御することが望まれるシステム管理の項目に対応するさらなるフラグは、そのドメイン内でキャッシュ管理がターンオンまたはオフすることができるか否かのような権限を含むことができる。１つのフラグ、Ｓは、セキュア状態と非セキュア状態との間で変更するために使用されるソフトウェア割り込みであるＳＭＣ命令を実行する権限を制御する。
【００３７】
ドメイン権限レジスタ選択レジスタ１０６は、該当するドメインがそのドメイン権限レジスタ（フラグＭを参照）を読み出しおよび書き込みするために適切な権限を有するならば、読み出しおよび書き込みのために現在マッピングされたドメイン権限レジスタ１０４の番号を指定するドメイン番号フィールド１１０を含む。
【００３８】
本発明の実施形態が添付図面を参照して詳細に説明されたが、本発明はそれらの詳細な実施形態に限定されず、特許請求の範囲に規定された本発明の範囲および思想から逸脱することなく、この技術分野の当業者によって各種の変更および変形が生み出され得ることを理解すべきである。
【図面の簡単な説明】
【００３９】
【図１】仮想メモリアドレス空間と物理メモリアドレス空間との間の関係を表わす図である。
【図２】メモリアクセス制御回路、命令アクセス制御回路、ドメインアクセス制御回路を組み込んだデータ処理システムを表わす図である。
【図３】１つのドメインからもう１つのドメインへ移動するときに許容分岐ターゲット命令について検査する動作を表わすフロー図である。
【図４】アプリケーション呼び出しをオペレーティングシステムのカーネルに転送するために呼び出し転送プログラムが使用されるシステムを表わす図である。
【図５】呼び出し転送コードの使用を表わすフロー図である。
【図６】セキュアオペレーディングシステムがデータを書き込むことができ、非セキュア状態で動作するとき信頼されたプログラムがデータを読み出すことができるメモリ空間の信頼された領域の使用を表わす図である。
【図７】図６に表わされたシステムを使用して実行される一連の処理動作を表わすフロー図である。
【図８】メモリアドレス空間内の異なるドメイン内に対応付けされたプログラム可能な権限データを表わす図である。
【符号の説明】
【００４０】
２  データ処理システム
４  プロセッサコア
６  メモリ
８  メモリ管理ユニット
１０  レジスタバンク
１２  乗算器
１４  シフタ
１６  加算器
１８  命令デコーダ
２０  命令パイプライン
２２  命令取り込みユニット
２４  構成定義コプロセッサＣＰ１５
２６  構成定義レジスタ
【図１】
2008257734.tif 000003
【図２】
2008257734.tif 000004
【図３】
2008257734.tif 000005
【図４】
2008257734.tif 000006
【図５】
2008257734.tif 000007
【図６】
2008257734.tif 000008
【図７】
2008257734.tif 000009
【図８】
2008257734.tif 000010
【外国語明細書】
2008257734.tif 000011
2008257734.tif 000012
2008257734.tif 000013
2008257734.tif 000014
2008257734.tif 000015
2008257734.tif 000016
2008257734.tif 000017
2008257734.tif 000018
2008257734.tif 000019
2008257734.tif 000020
2008257734.tif 000021
2008257734.tif 000022
2008257734.tif 000023
2008257734.tif 000024
2008257734.tif 000025
2008257734.tif 000026
2008257734.tif 000027
2008257734.tif 000028
2008257734.tif 000029
2008257734.tif 000030
2008257734.tif 000031
2008257734.tif 000032
2008257734.tif 000033
2008257734.tif 000034
2008257734.tif 000035
2008257734.tif 000036
2008257734.tif 000037
2008257734.tif 000038
2008257734.tif 000039
2008257734.tif 000040
2008257734.tif 000041
2008257734.tif 000042
2008257734.tif 000043