図面 (/)

技術 セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法

出願人 アーム・リミテッド
発明者 トーマス・クリストファー・グロカットリチャード・ロイ・グリセンスウェイト
出願日 2013年1月28日 (7年10ヶ月経過) 出願番号 2013-012980
公開日 2013年8月19日 (7年4ヶ月経過) 公開番号 2013-161479
状態 特許登録済
技術分野 記憶装置の機密保護 機械語命令の実行 ストアードプログラムにおける機密保護
主要キーワード 間接制御 ターゲットロケーション ターゲットドメイン レガシーコード データ処理オペレーション プログラム関数 セキュア状態 ソフトウェア例外
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2013年8月19日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (18)

課題

セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法を提供する。

解決手段

データ処理装置2は、オペレーションセキュアなドメインおよび低セキュアドメインを有する処理回路4を有する。セキュアドメインで動作するときに、処理回路4は、低セキュアドメインでアクセス可能でないデータにアクセスできる。制御フロー変更命令の実行に応答して、処理は、ターゲットアドレスプログラム命令に切換わる。ドメイン選択は、ターゲットアドレスの命令について処理回路4が動作する選択ドメインを決定するために実施される。ドメインチェッキングは、どのドメインが、ドメイン選択によって決定される選択ドメインであることを許容されるかをチェックするために実施されうる。ドメインチェックエラーは、ドメイン選択における選択ドメインが、許容選択ドメインでない場合に引き起こされる。

概要

背景

データ処理装置は、セキュアドメインおよび低セキュアドメインで動作できる。セキュアドメインで動作するとき、低セキュアドメインで動作するときにアクセス可能でないデータがアクセスされうる。これは、おそらく機密を要するデータおよびコードを、権限のない人またはプロセスによるアクセスから隔離する方法を提供する。

データおよびコードをセキュアに維持する1つの方法は、トラストゾーンアーキテクチャを有する英国ケンブリッジ大学のARM(登録商標)によって提供され、トラストゾーンアーキテクチャでは、セキュア状態非セキュア状態が存在し、状態間を移行するために例外命令が使用され、例外ハンドラはセキュア側のセキュリティを保護する。この手法は高い程度のセキュリティを提供するが、セキュリティ状態を変更するために、ソフトウェア例外ハンドラの形態のかなりのソフトウェア介入が必要とされ、ソフトウェア介入は、システムの性能を低下させると共に、全ての呼出しが例外ハンドラを通してプロキシされなければならないため、セキュアソフトウェア用の外部アプリケーションプログラムインタフェースAPIを開発するのに必要される労力の量を増加させる。

マイクロコントローラなどの小型システムの場合、セキュリティのレベルとシステムの性能との間の兼ね合いを達成し、したがって、セキュアドメインを実装することに関連するオーバヘッドを適度に低く維持することがより重要である場合がある。

概要

セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法を提供する。データ処理装置2は、オペレーションのセキュアなドメインおよび低セキュアドメインを有する処理回路4を有する。セキュアドメインで動作するときに、処理回路4は、低セキュアドメインでアクセス可能でないデータにアクセスできる。制御フロー変更命令の実行に応答して、処理は、ターゲットアドレスプログラム命令に切換わる。ドメイン選択は、ターゲットアドレスの命令について処理回路4が動作する選択ドメインを決定するために実施される。ドメインチェッキングは、どのドメインが、ドメイン選択によって決定される選択ドメインであることを許容されるかをチェックするために実施されうる。ドメインチェックエラーは、ドメイン選択における選択ドメインが、許容選択ドメインでない場合に引き起こされる。

目的

これは、おそらくは機密を要するデータおよびコードを、権限のない人またはプロセスによるアクセスから隔離する方法を提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

データ処理装置であって、プログラム命令応答して、データ処理オペレーションを実施するための処理回路を備え、前記処理回路は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、前記セキュアドメインで動作するときに、前記処理回路は、前記低セキュアドメインで動作するときにアクセス可能でないデータにアクセスでき、制御フロー変更命令の実行に応答して、前記処理回路は、前記制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換え、また、前記ターゲットアドレスの前記プログラム命令について前記処理回路が動作する選択ドメインを決定するためのドメイン選択を実施するように構成され、少なくとも、前記セキュアドメインで動作している間に、前記制御フロー変更命令が実行される場合、前記処理回路は、(i)前記複数のドメインのどのドメインが、前記ターゲットアドレスの前記プログラム命令について前記ドメイン選択によって決定される前記選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、前記ドメインチェッキングは、前記ドメイン選択とは異なる技法を使用し、(ii)前記ドメイン選択で決定された前記選択ドメインが、前記ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こすように構成されるデータ処理装置。

請求項2

前記制御フロー変更命令は分岐命令を含む請求項1に記載のデータ処理装置。

請求項3

前記制御フロー変更命令が、前記低セキュアドメインで動作している間に実行される場合、前記処理回路は、同様に、前記ドメインチェッキングを実施し、前記ドメイン選択で決定された前記選択ドメインが、前記ドメインチェッキングで決定された許容ドメインに一致しない場合、前記ドメインチェックエラーを引き起こすように構成される請求項1または請求項2に記載のデータ処理装置。

請求項4

前記ドメイン選択および前記ドメインチェッキングの一方は、第1の決定法を含み、前記ドメイン選択および前記ドメインチェッキングの他方は、第2の決定法を含む請求項1から3のいずれか1項に記載のデータ処理装置。

請求項5

データを記憶するためのデータ記憶装置であって、セキュア領域および低セキュア領域を含む複数の領域を備える、データ記憶装置を備え、前記セキュア領域は、前記セキュアドメインで動作するときに前記処理回路によってアクセス可能であり、前記低セキュアドメインで動作するときに前記処理回路によってアクセス可能でないデータを記憶するためのものであり、前記第1の決定法は、前記複数の領域の少なくともどの領域が、前記ターゲットアドレスのプログラム命令の命令アドレスに対応するかに応じて、少なくとも1つの選択ドメインを決定することを含む請求項4に記載のデータ処理装置。

請求項6

少なくともいくつかのプログラム命令について、前記第1の決定法は、前記命令アドレスが前記低セキュア領域に対応する場合、前記選択ドメインとして前記低セキュアドメインを選択すること、および、前記命令アドレスが前記セキュア領域に対応する場合、前記選択ドメインとして前記セキュアドメインを選択することを含む請求項5に記載のデータ処理装置。

請求項7

前記第2の決定法は、前記選択ドメインとして、ターゲットドメイン値によって指示される前記複数のドメインのうちの1つのドメインを決定することを含む請求項4から6のいずれか1項に記載のデータ処理装置。

請求項8

前記ターゲットドメイン値は、制御フロー変更命令のエンコーディングにおいて指定される請求項7に記載のデータ処理装置。

請求項9

前記ターゲットドメイン値は、制御フロー変更命令によって使用される前記ターゲットアドレスの一部として指定される請求項7に記載のデータ処理装置。

請求項10

前記処理回路は、ターゲットドメイン値設定命令に応答して前記ターゲットドメイン値を設定するように構成される請求項7または9のいずれか1項に記載のデータ処理装置。

請求項11

前記ターゲットドメイン値設定命令が実施される前に、前記処理回路が前記低セキュアドメインで動作していた場合、前記処理回路は、前記低セキュアドメインを指示するように前記ターゲットドメイン値を設定するように構成される請求項10に記載のデータ処理装置。

請求項12

前記処理回路は、セキュア領域内の前記ターゲットアドレスの前記プログラム命令を処理することに切換える前に、前記処理回路が前記低セキュアドメインでそれについて動作していたガード保護式制御フロー変更命令の後で、前記ターゲットアドレスの前記プログラム命令がガード命令でない場合、エラーを引き起こすように構成され、前記ターゲットドメイン値設定命令は前記ガード命令を含む請求項10および11のいずれか1項に記載のデータ処理装置。

請求項13

第1の制御フロー変更命令に応答して、前記処理回路は、所定の記憶ロケーション戻りアドレスを記憶し、前記ターゲットアドレスの前記プログラム命令を処理することに切換えるように構成され、第2の制御フロー変更命令に応答して、前記処理回路は、前記戻りアドレスの前記プログラム命令を処理することに切換えるように構成され、前記ガード命令に応答して、前記処理回路は、前記第1の制御フロー変更命令が前記低セキュアドメインで実施された場合、前記低セキュアドメインを指示するように、前記第2の制御フロー変更命令用の前記ターゲットドメイン値を設定するように構成される請求項12に記載のデータ処理装置。

請求項14

セキュアスタックおよび低セキュアスタックを含む複数のスタックを備えるデータ記憶装置を備え、前記セキュアスタックは、セキュアドメインで動作するときに前記処理回路によってアクセス可能であり、低セキュアドメインで動作するときに前記処理回路によってアクセス可能でない請求項7から13のいずれか1項に記載のデータ処理装置。

請求項15

前記処理回路および前記処理回路上で実行されるソフトウェアの少なくとも一方は、前記ターゲットドメイン値に応じて、前記複数のスタックのどのスタックが、関数引数を渡すために使用されうるかを決定するように構成される請求項14に記載のデータ処理装置。

請求項16

第1の制御フロー変更命令に応答して、前記処理回路は、所定の記憶ロケーションに戻りアドレスを記憶し、前記制御フローを前記ターゲットアドレスの前記プログラム命令に切換えるように構成され、第2の制御フロー変更命令に応答して、前記処理回路は、前記戻りアドレスの前記プログラム命令を処理することに切換えるように構成される請求項7から15のいずれか1項に記載のデータ処理装置。

請求項17

前記第1の制御フロー変更命令が、前記セキュアドメインで実行され、前記低セキュアドメインへの移行をもたらす場合、前記処理回路は、ダミー戻りアドレスであって、有効命令アドレスでない、ダミー戻りアドレスを、前記戻りアドレスとして前記所定の記憶ロケーションに記憶し、実際の戻りアドレスを、前記低セキュアドメイン内にある間、アクセス可能でないセキュア記憶ロケーションに記憶するように構成され、前記第2の制御フロー変更命令に応答して、前記戻りアドレスが前記ダミー戻りアドレスであった場合、前記処理回路は、前記セキュア記憶ロケーションから前記実際の戻りアドレスを取出し、前記実際の戻りアドレスの前記プログラム命令を処理することに切換えるように構成される請求項16に記載のデータ処理装置。

請求項18

前記処理回路は、前記ダミー戻りアドレスおよび前記実際の戻りアドレスのいずれを前記第1の制御フロー変更命令に応答して前記所定の記憶ロケーションに記憶すべきかを、少なくとも前記ターゲットドメイン値に応じて決定するように構成される請求項17に記載のデータ処理装置。

請求項19

前記ターゲットドメイン値は、前記制御フロー変更命令のエンコーディングおよび前記制御フロー変更命令によって使用される前記ターゲットアドレスのエンコーディングの一方において冗長データフィールドによって表される請求項7から18のいずれか1項に記載のデータ処理装置。

請求項20

前記処理回路は、第1の命令セットからの命令を実行するように構成され、前記制御フロー変更命令のエンコーディングおよび前記制御フロー変更命令によって使用される前記ターゲットアドレスのエンコーディングの一方は、前記ターゲットアドレスの前記プログラム命令が前記第1の命令セットからのものか、第2の命令セットであって、前記処理回路によってサポートされない、第2の命令セットからのものかを指示するターゲット命令セットフィールドを含み、前記ターゲットドメイン値は、前記ターゲット命令セットフィールドを使用して指示される請求項7から19のいずれか1項に記載のデータ処理装置。

請求項21

前記ターゲット命令セットフィールドの第1の値は、前記第1の命令セットを指示し、また、前記セキュアドメインが前記選択ドメインであることを指示する前記ターゲットドメイン値に対応し、前記ターゲット命令セットフィールドの第2の値は、前記第2の命令セットを指示し、また、前記低セキュアドメインが前記選択ドメインであることを指示する前記ターゲットドメイン値に対応する請求項20に記載のデータ処理装置。

請求項22

前記ドメインチェッキングは、前記第2の決定法を含み、前記低セキュアドメイン内にある間に前記制御フロー変更命令が実施される場合、前記ターゲットアドレスの前記プログラム命令を処理することへの前記切換えの後で、前記ドメインチェックエラーが生成されるか否かは、前記ターゲットドメイン値の値に無関係である請求項21に記載のデータ処理装置。

請求項23

少なくとも1つのプログラム命令について、前記ドメインチェッキングは、前記プログラム命令用の許容選択ドメインとして複数の前記ドメインを決定することを含む請求項1から22のいずれか1項に記載のデータ処理装置。

請求項24

前記少なくとも1つのプログラム命令はガード命令を含む請求項23に記載のデータ処理装置。

請求項25

前記セキュアドメインで実施される少なくとも1つの制御フロー変更命令について、前記処理回路は、前記ターゲットアドレスの前記プログラム命令を処理することに切換える前に、前記セキュアドメインで動作することから前記低セキュアドメインで動作することへ切換えるように構成される請求項1から24のいずれか1項に記載のデータ処理装置。

請求項26

前記処理回路は、前記ターゲットアドレスの前記プログラム命令がガード命令でない場合、エラーを引き起こすように構成される請求項23から25のいずれか1項に記載のデータ処理装置。

請求項27

データ処理装置であって、プログラム命令に応答して、データ処理オペレーションを実施するための処理手段を備え、前記処理手段は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、前記セキュアドメインで動作するときに、前記処理手段は、前記低セキュアドメインで動作するときにアクセス可能でないデータにアクセスでき、制御フロー変更命令の実行に応答して、前記処理手段は、前記制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換え、また、前記処理手段が、前記ターゲットアドレスの前記プログラム命令について動作する選択ドメインを決定するためのドメイン選択を実施するように構成され、少なくとも、前記セキュアドメインで動作している間に、前記制御フロー変更命令が実行される場合、前記処理手段は、(i)前記複数のドメインのどのドメインが、前記ターゲットアドレスの前記プログラム命令について前記ドメイン選択によって決定される前記選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、前記ドメインチェッキングは、前記ドメイン選択とは異なる技法を使用し、(ii)前記ドメイン選択で決定された前記選択ドメインが、前記ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こすように構成されるデータ処理装置。

請求項28

プログラム命令に応答して、データ処理オペレーションを実施するための処理回路を備える装置用データ処理方法において、前記処理回路は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、前記セキュアドメインで動作するときに、前記処理回路は、前記低セキュアドメインで動作するときにアクセス可能でないデータにアクセスできる、方法であって、制御フロー変更命令の実行に応答して、前記制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換えること、前記ターゲットアドレスの前記プログラム命令について前記処理回路が動作する選択ドメインを決定するためのドメイン選択を実施すること、少なくとも、前記セキュアドメインで動作している間に、前記制御フロー変更命令が実行される場合、(i)前記複数のドメインのどのドメインが、前記ターゲットアドレスの前記プログラム命令について前記ドメイン選択によって決定される前記選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、前記ドメインチェッキングは、前記ドメイン選択とは異なる技法を使用すること、および、(ii)前記ドメイン選択で決定された前記選択ドメインが、前記ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こすことを含む方法。

請求項29

添付図面を参照して実質的に本明細書で述べられるデータ処理装置。

請求項30

添付図面を参照して実質的に本明細書で述べられるデータ処理方法。

技術分野

0001

本発明は、データ処理の分野に関する。より詳細には、本発明は、セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法に関する。

背景技術

0002

データ処理装置は、セキュアドメインおよび低セキュアドメインで動作できる。セキュアドメインで動作するとき、低セキュアドメインで動作するときにアクセス可能でないデータがアクセスされうる。これは、おそらく機密を要するデータおよびコードを、権限のない人またはプロセスによるアクセスから隔離する方法を提供する。

0003

データおよびコードをセキュアに維持する1つの方法は、トラストゾーンアーキテクチャを有する英国ケンブリッジ大学のARM(登録商標)によって提供され、トラストゾーンアーキテクチャでは、セキュア状態非セキュア状態が存在し、状態間を移行するために例外命令が使用され、例外ハンドラはセキュア側のセキュリティを保護する。この手法は高い程度のセキュリティを提供するが、セキュリティ状態を変更するために、ソフトウェア例外ハンドラの形態のかなりのソフトウェア介入が必要とされ、ソフトウェア介入は、システムの性能を低下させると共に、全ての呼出しが例外ハンドラを通してプロキシされなければならないため、セキュアソフトウェア用の外部アプリケーションプログラムインタフェースAPIを開発するのに必要される労力の量を増加させる。

0004

マイクロコントローラなどの小型システムの場合、セキュリティのレベルとシステムの性能との間の兼ね合いを達成し、したがって、セキュアドメインを実装することに関連するオーバヘッドを適度に低く維持することがより重要である場合がある。

課題を解決するための手段

0005

第1の態様によれば、本発明は、データ処理装置を提供し、
プログラム命令応答して、データ処理オペレーションを実施するための処理回路を備え、処理回路は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、セキュアドメインで動作するときに、処理回路は、低セキュアドメインで動作するときにアクセス可能でないデータにアクセスでき、
制御フロー変更命令の実行に応答して、処理回路は、制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換え、また、ターゲットアドレスのプログラム命令について処理回路が動作する選択ドメインを決定するためのドメイン選択を実施するように構成され、
少なくとも、セキュアドメインで動作している間に、制御フロー変更命令が実行される場合、処理回路は、
(i)複数のドメインのどのドメインが、ターゲットアドレスのプログラム命令についてドメイン選択によって決定される選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、
(ii)ドメイン選択で決定された選択ドメインが、ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こす(trigger)ように構成される。

0006

技法では、制御フロー変更命令は、複数のドメイン間で処理を切換えるために使用することができる。これは、ドメイン間の変更を制御する、したがって、性能を改善するために、例外および対応するソフトウェア例外ハンドラを使用することが必要でないことを意味する。しかし、制御フロー変更命令が、システムのセキュリティセーフガード迂回しないことが重要である。

0007

制御フロー変更命令の後で、ターゲットアドレスのプログラム命令がそこで処理される選択ドメインが、ドメイン選択技法を使用して決定される。したがって、同じ制御フロー変更命令は、使用されるドメイン選択技法に応じて、異なるドメインにおける処理に切換えるために使用されうる。

0008

1つのドメイン内のプログラム命令の処理に切換えることをプログラマによって意図される制御フロー変更命令の挙動が、低セキュアドメイン内のコードによって変更される場合に、セキュリティリスクが生じうるため、制御フロー変更命令は、代わりに、異なるドメイン内のプログラム命令の処理に切換えることを本技法は認識する。たとえば、低セキュアドメイン内のコードは、制御フロー変更命令のターゲットアドレスを変更する場合がある。例として、低セキュアドメイン内の命令への切換えをもたらすことを意図される、セキュアドメイン内で実行される制御フロー変更命令が存在する場合がある。しかし、制御フロー変更命令のターゲットアドレスは、セキュアドメイン内で処理されるプログラム命令を指すように、低セキュアドメイン内のコードによって設定されるため、今度は、制御フロー変更命令は、代わりにセキュアドメイン内での処理に切換えることができる。これは、ハッカーが低セキュアドメイン内のコードを使用して、セキュアドメインからセキュアコードへの制御されない移行を引き起こすことを可能にしうる。その理由は、通常、セキュア処理信頼されると予想されるため、セキュア−セキュア切換えが監視されないことになるためである。これは、セキュリティ違反(breach)をもたらしうる。

0009

この問題に対処するために、処理回路は、少なくともセキュアドメイン内にある間に制御フロー変更命令が実行されるときに、ドメインチェッキングを実施することができる。ドメインチェッキングは、複数のドメインのどのドメインが、ターゲットアドレスのプログラム命令について、ドメイン選択によって決定される選択ドメインであることを許容されるかを決定する。実際のドメインがドメイン選択によって決定されるため、ドメインチェッキングは、ターゲットアドレスのプログラム命令についてシステムが動作することになる実際のドメインに影響を及ぼさない。しかし、ドメインチェッキングは、制御フロー変更命令が、予想されるドメイン移行をもたらしたことを、システムが検証することを可能にする。ドメイン選択で決定されたドメインが、ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーが引き起こされうる。こうして、低セキュアコードが、制御フロー変更命令を予想されない方法で作用させる場合、セキュアデータに対する権限のないアクセスを防ぐために、エラーが引き起こされうる。

0010

制御フロー変更命令は、処理される命令の非順次移行をもたらす任意の命令とすることができる。最も一般的には、制御フロー変更命令は、分岐命令を含むことができる。しかし、制御フロー変更命令はまた、他の種類の命令、たとえば、処理される次の命令を指示するプログラムカウンタを記憶するレジスタに値をロードするロード命令を含むことができる。

0011

低セキュアドメインにある間に実行される制御フロー変更命令についてドメインチェッキングを実施することは必須ではない。低セキュアドメイン内の命令がより厳格なチェックを受けるべきであることが一般に予想されるため、これは反直観的である場合がある。しかし、しばしば、低セキュアドメインからセキュアドメインへの移行を調節するための何らかの他のメカニズムが存在するであろう。一方、上述したタイプの攻撃が最も問題になるのは、セキュアドメイン内にあるときである。その理由は、一般に、システムが既にセキュアドメイン内にあるとき、コードは、信頼され、正しく働いていると仮定されることになるため、このことが、低セキュアコードを使用するハッカーによって利用されて、セキュアドメイン内の制御フロー変更命令の挙動が変更されうるからである。したがって、ドメインチェッキングは、少なくとも、セキュアドメイン内にある間に実行される制御フロー変更命令について実施される。

0012

それでも、所望される場合、ドメインチェッキングはまた、低セキュアドメインで動作している間に制御フロー変更命令が実行されるときに実施されうる。セキュリティ違反を防ぐと共に、ドメインチェッキングはまた、そのビット値が、パーティクルストライク(particle strike)または他の種類のエラーのせいで、今や命令が予想通りに作用しないように状態を変更した、破損した命令またはターゲットアドレスを検出するために使用されうる。これは、セキュアドメインと低セキュアドメインの両方において有用でありうる。

0013

制御フロー変更命令に加えて、ドメイン選択はまた、他の命令について実施されうる。たとえば、いくつかのシステムでは、処理回路は、各命令について、命令がどのドメインで処理されるべきかを決定しうる。

0014

ドメイン選択およびドメインチェッキングは、選択ドメインおよび許容ドメイン(複数可)を決定するために異なる技法を使用するため、ドメイン選択は、異なる形態のドメインチェッキングによって検証されうる。たとえば、第1の決定法は、ドメイン選択およびドメインチェッキングの一方のために使用され、第2の決定法は、他方のために使用されうる。一実施形態でドメイン選択のために使用される技法は、別の実施形態ではドメインチェッキングのために使用されることができる、また、その逆も同じである。

0015

一実施形態では、セキュア領域および低セキュア領域を含む複数の領域を有するデータ記憶装置(data store)が存在する場合があり、セキュア領域は、セキュアドメインで動作するときに処理回路によってアクセス可能であり、低セキュアドメイン内にあるときにアクセス可能でないデータを記憶するためのものである。低セキュア領域は、セキュアドメイン内にあるとき、および、低セキュアドメイン内にあるとき、の両方において、アクセス可能である。

0016

したがって、第1の決定法は、複数の領域の少なくともどの領域が、ターゲットアドレスのプログラム命令の命令アドレスに対応するかに応じて、少なくとも1つの選択ドメインを決定することを含むことができる。一般に、低セキュアドメインは、プログラム命令の命令アドレスが低セキュア領域に対応する場合、選択ドメインとして選択されることができ、セキュアドメインは、命令アドレスがセキュア領域に対応する場合、選択されることができる。この技法は、ドメイン選択またはドメインチェッキングのいずれかのために使用されることができる。

0017

どの領域が命令アドレスに対応するかは、第1の決定法における唯一の基準でない場合がある。たとえば、いくつかの命令について、第1の決定法はまた、ターゲットアドレスのプログラム命令のタイプに依存する場合がある。同様に、第1の決定法がドメインチェッキングのために使用される場合、複数のドメインが、許容選択ドメインとして選択されうる。

0018

第2の決定法は、選択ドメイン(または、ドメインチェッキングの場合、いくつかの許容選択ドメインのうちの1つの選択ドメイン)として、ターゲットドメイン値によって指示される複数のドメインのうちの1つのドメインを決定することを含むことができる。ターゲットドメイン値は、ターゲットアドレスのプログラム命令がどのドメインで処理されることを予想されるかを指示するために、プロセッサによって維持されることができる。これは、ドメイン選択またはドメインチェッキングの一部とすることができる。

0019

したがって、一例では、ドメイン選択は、ターゲットアドレスのプログラム命令の命令アドレスに対応するデータ記憶装置の領域に基づいて実施されることができ、ドメインチェッキングは、ターゲットドメイン値に基づいて実施されることができる。この場合、ターゲットドメイン値は、制御フロー変更命令が正しい領域内のプログラム命令に切換わったかどうかを検証するためのチェックを提供する。別の例では、ターゲットドメイン値は、ターゲットアドレスのプログラム命令が処理される実際のドメインを制御するために使用されることができ、ドメインチェッキングは、その後、ターゲットアドレスがデータ記憶装置の正しい領域内にあることを検証することができる。

0020

ターゲットドメイン値は、異なる方法で表されることができる。一例では、ターゲットドメイン値は、制御フロー変更命令のエンコーディングにおいて指定されることができる。たとえば、選択ドメインとして異なるセキュリティドメインを指示する異なるターゲットドメイン値に対応するいくつかのバージョンの制御フロー変更命令が存在する場合がある。プログラムを書くとき、プログラマは、変更命令の制御フローによって、選択ドメイン(ドメイン選択の場合)または許容ドメイン(複数可)(ドメインチェッキングの場合)として適切なドメインが選択されるように、どのバージョンの制御フロー変更命令を使用すべきかを選択できる。

0021

あるいは、ターゲットドメイン値は、制御フロー変更命令によって使用されるターゲットアドレスの一部において指定されることができる。この形態のターゲットドメイン値は、ターゲットアドレスを記憶するレジスタを特定する間接制御フロー変更命令について有用でありうる。

0022

ターゲットドメイン値は、ターゲットドメイン値設定命令に応答して設定されることができる。これは、制御フロー変更命令の前に実行されるターゲットドメイン値設定命令を含むことによって、プログラマが、後続の制御フロー変更命令の予想される移行を制御することを可能にする。たとえば、低セキュアドメイン内にある間に関数ポインタがセットされる場合、セキュアドメイン内で関数ポインタを使用する前に、ターゲットドメイン設定命令が、制御フロー変更命令について予想される挙動を設定するために実行されうる。

0023

ターゲットドメイン値設定命令の一例は、低セキュアドメインからセキュアドメインへの移行を防ぐために使用されるガード命令を含む。セキュア関数の中央への制御されない切換えを回避することがしばしば重要である。その理由は、このことが、時として、セキュア関数において予め実施されるセキュリティチェックを迂回しうるためである。こうした切換えを防止するために、システムは、低セキュアドメインからセキュアドメインに処理が切換わる時点で、ガード命令が存在しなければならないことを必要としうる。セキュア領域内のターゲットアドレスのプログラム命令を処理することに切換える前に、処理回路が低セキュアドメインでそれについて動作していた制御フロー変更命令の後で、ターゲットアドレスのプログラム命令がガード命令でない場合、エラーが引き起こされうる。したがって、ガード命令は、セキュアコードへの信頼されるエントリポイントマーク付けするために使用されるべきである。ガード命令は、ターゲットドメイン値を設定するのに有用でありうる。その理由は、ターゲットアドレスが、セキュアドメイン内で使用するために低セキュアドメイン内で設定されると、セキュアドメインへのエントリが存在しなければならず、したがって、ガード命令が実行されることになるからである。ガード命令を使用してターゲットドメイン値を設定することにより、この目的のためのさらなる命令の実行を実行する必要がない。

0024

特に、ガード命令は、後続の制御フロー変更命令が処理を切換えることになる戻りアドレス用のターゲットドメイン値を設定するのに有用である場合がある。ガード命令の存在は、しばしば、セキュアドメイン内の関数が低セキュアコードによって呼出された可能性があるというリスクが存在するため、低セキュアドメインによって指定された戻りアドレスのプログラム命令に切換えるように処理を引き起こす後続の関数戻り制御フロー変更命令が存在しうることをプログラマが予想することを意味する。この可能性を防ぐために、関数戻り用の予想される移行をセットアップするために、戻りアドレス用のターゲットドメイン値を設定するためにガード命令が使用されうる。

0025

一例では、ターゲットドメイン値設定命令が実施される前に、処理回路が低セキュアドメインで動作していた場合、ターゲットドメイン値は、低セキュアドメインを指示するために設定されうる。たとえば、ターゲットドメイン値設定命令がガード命令である場合、そして、ガード命令に切換える前にシステムが低セキュアドメイン内にあった場合、後続の関数戻りは、低セキュアドメインに戻るように切換えるべきであることが予想される。

0026

データ記憶装置は、セキュアスタックおよび低セキュアスタックを含む複数のスタックを有することができ、セキュアスタックは、セキュアドメイン内にあるときにアクセス可能であり、低セキュアドメイン内にあるときにアクセス可能でない。低セキュアスタックは、セキュアドメインおよび低セキュアドメインからアクセスされうる。

0027

関数が制御フロー変更命令を使用して呼出されるとき、時として、関数呼出しの後に実行されるコードが使用するために、関数呼出しの前に実行されているコードから関数引数データ値)を渡すことが望ましい場合がある。スタックは、関数引数を渡すために使用されることができる。関数呼出しがセキュアドメインから低セキュアドメインへの移行をもたらす場合、セキュアスタックが処理回路にとってアクセス可能でないため、引数は、低セキュアスタック上に配置される必要があることになる。一方、関数呼出しがセキュアドメインからセキュアドメインへの移行をもたらす場合、引数は、低セキュアコードがこれらのデータ値にアクセスすることを防止するために、セキュアスタック内に配置されるべきである。したがって、セキュアドメイン内で関数呼出しを実行すると、どのスタックを使用すべきかについての決定は、関数呼出しの後のオペレーションのドメインに依存することになる。ターゲットドメイン値は、ターゲットアドレスなどに基づいて、関数呼出しがどのドメインを他の技法に切換えると予想されるかについての迅速な指示を提供しうる。したがって、関数引数を渡すためにどのスタックを使用すべきかを決定するためにターゲットドメイン値を再使用することは、その関数への迅速な切換え、したがって、処理性能の改善を可能にする。

0028

ターゲットドメイン値についての別の使用は、関数戻りアドレスを設定することにある。一般に、関数を呼出すとき、第1の制御フロー変更命令が実行され、関数から戻るとき、第2の制御フロー変更命令が実行されることになる。第1の制御フロー変更命令が発生すると、戻りアドレスは、通常、第2の制御フロー変更命令に応答して処理が戻るべきであるロケーションを指示するために所定の記憶ロケーション(たとえば、リンクレジスタ)に記憶される。セキュアドメイン内のコードから低セキュアドメイン内の関数を呼出すときに生じる1つの問題は、戻りアドレスが機密である場合があることであるため、低セキュアドメインが戻りアドレスにアクセスすることを防止することが望ましい場合がある。

0029

この問題に対処するために、第1の制御フロー変更命令が、セキュアドメインで実行され、低セキュアドメインへの移行をもたらすことに応答して、ダミー戻りアドレスであって、有効命令アドレスでない、ダミー戻りアドレスは、所定の記憶ロケーションに記憶されることができる。実際の戻りアドレスは、低セキュアドメイン内にある間、アクセス可能でないセキュア記憶ロケーション(たとえば、セキュアスタックまたはセキュアメモリ領域)に記憶されることができる。第2の制御フロー変更命令が実行されると、プロセッサは、戻りアドレスがダミー戻りアドレスであることを検出し、その後、セキュア記憶ロケーションから実際の戻りアドレスを取出させる。処理は、その後、その関数から戻るために、実際の戻りアドレスに切換えられうる。

0030

したがって、セキュアドメインから関数を呼出すとき、実際の戻りアドレスが所定の記憶ロケーションに記憶されるべきか、ダミー戻りアドレスが所定の記憶ロケーションに記憶されるべきかを判定するために、関数が、セキュアドメイン内で処理されることになるか、低セキュアドメイン内で処理されることになるかを判定することができることが有用である。これは、ターゲットドメイン値を使用して迅速かつ容易に行われうる。

0031

ターゲットドメイン値は、種々の方法で表されうる。制御フロー変更命令のエンコーディングまたは制御フロー変更命令によって使用されるターゲットアドレスのエンコーディングのいずれかにおいて冗長データフィールドを使用することが有用でありうる。たとえば、所与の機能のために元々意図されたフィールドは、その機能がデータ処理装置によってサポートされない場合、重要でない場合があるため、このフィールドは、ターゲットドメイン値を指示するために再使用されうる。これは、ターゲットドメイン値のためにさらなるビットフィールドを付加する必要性を回避させる。

0032

たとえば、一部のシステムは、複数の命令セットからの命令を実行しうる。こうしたシステムでは、制御フロー変更命令またはターゲットアドレスは、ターゲットアドレスの命令が、第1の命令セットからのものであるか、第2の命令セットからのものであるかを指示するターゲット命令セットフィールドを含むことができる。これは、プロセッサが、制御フロー変更命令を実行するときにターゲットアドレスの命令をどのように復号するかを決定することを可能にする。他のシステムは、これらの命令セットのうちの1つの命令セットを実行できるだけであるが、2つの命令セットをサポートするシステム用に設計された命令を依然として実行する場合がある。この場合、命令のターゲット命令フィールドまたはターゲットアドレスは、冗長になる場合がある。したがって、このフィールドは、ターゲットドメイン値を指示するために再使用されうる。

0033

ターゲット命令セットフィールドは、第1の命令セットを指示する第1の値および第2の命令セットを指示する第2の値を有することができる。第1の命令セットが処理回路によってサポートされる命令セットであり、第2の命令が処理回路によってサポートされない場合、第1の値が選択ドメインとしてセキュアドメインを指示し、第2の値が選択ドメインとして低セキュアドメインを指示するように、ターゲット命令セットフィールドの値をターゲットドメイン値の値にマッピングすることが有用でありうる。第1の命令セットだけがサポートされるため、これは、第1の命令セットの命令を使用して書かれたソフトウェア内の既存の制御フロー変更命令が、ターゲット命令セットフィールドの第1の値を指定することを意味することになる。一般にセキュアドメインで実行されるほとんどの制御フロー変更命令は、セキュアドメイン内の他のロケーションへの移行をもたらすことを意図されるため、異なるターゲットドメイン値を指示するために比較的少数の命令またはターゲットアドレスが修正される必要があるように、この値を、セキュアドメインを指示するターゲットドメイン値にマッピングすることが有用である。低セキュアドメインに切換えることを意図される、セキュアドメイン内の制御フロー変更命令用のターゲットドメイン値だけが、(たとえば、選択ドメインとして低セキュアドメインを指示するために、先のターゲットドメイン値設定命令を付加することによって)変更される必要があることになる。したがって、ターゲットドメイン値に対するターゲット命令セットフィールドのこのマッピングを採用することは、レガシーコードに関する後方互換性を可能にする。

0034

ターゲットドメイン値のこのマッピングが使用されるとき、レガシーコードに関する後方互換性を改善するために制御フロー変更命令が低セキュアドメインで実施されるときにドメインチェッキングを実施することを省略することが有用である。低セキュアドメイン内のほとんどの制御フロー変更命令は、同様に低セキュアドメイン内の別の命令への移行をもたらすことになる。しかし、ターゲットドメイン値の上記マッピングを使用して、第1の命令セットのレガシー命令は、セキュアドメインが選択ドメインであると予想されることを指示することになる、ターゲット命令セットフィールド内の第1の値を指示することになる。したがって、ドメインチェッキングが同様に低セキュアドメインで実施される場合、低セキュアドメインで実施されるほとんどの制御フロー変更命令に関連するターゲットドメイン値は、ドメインチェックエラーを防止するために修正される必要があることになる。これは、レガシーコードに関するシステムの後方互換性を減少させることになる。低セキュアドメインからセキュアドメインへの移行を制御するためにガード命令などの他のメカニズムが既に設けられうるため、いずれにしても、ドメインチェッキングが、低セキュアドメイン内の命令にとってあまり重要でないことから、前もって書かれたコードが修正される必要がないように、低セキュアドメイン内にあるときドメインチェッキングを省略することがより効率的でありうる。

0035

しばしば、ドメインチェッキングは、プログラム命令について許容選択ドメインとして単一ドメインを決定することになる。たとえば、セキュアコードにおいて、低セキュアドメインに戻るように切換えると考えられる制御フロー変更命令が存在する場合があるため、低セキュアドメインだけが許容ドメインとして選択されうる。

0036

しかし、他の場合には、同じプログラム命令用の許容選択ドメインとして複数のドメインを決定することが有用である場合がある。たとえば、時としてセキュアドメインに切換えるために使用され、時として低セキュアドメインに切換えるために使用されることができるセキュアドメイン内のいくつかの制御フロー変更命令が存在する場合がある。この場合、複数の許容ドメインを選択することによって、この命令は、命令がどのドメインに切換わるかによらず、ドメインチェックエラーを引き起こすことなく実行されうる。別の例では、低セキュアドメイン内にあるときにドメインチェックエラーはそれほど重大でないため、低セキュアドメイン内の制御フロー変更命令について、両方のドメインが許容ドメインとして設定されうる。

0037

複数の許容ドメインを選択することが有用でありうる別の命令は、ガード命令である。たとえば、同じプログラム関数が、セキュアドメインまたは低セキュアドメインのいずれかから呼出されることができ、その場合、ガード命令は、通常、低セキュアドメインからの許容エントリポイントを指示するために関数の始めに存在することになる。低セキュアドメインから関数を呼出す場合、ガード命令が存在しない場合、セキュアドメインへの切換えが存在しないように、ガード命令が存在するかどうか判定されるまで、低セキュアドメインからの切換えを延期することが望ましい場合がある。したがって、ガード命令は、関数が、セキュアドメインから呼出されるか、低セキュアドメインから呼出されるかに応じていずれかのドメインで働くことができる場合がある。この場合に起こるドメインチェックエラーを防止するために、ガード命令がメモリのどの領域に存在するか、または、ターゲットドメイン値の値によらず、ガード命令についてセキュアドメインと低セキュアドメインの両方を許容ドメインとして設定することが好都合である場合がある。

0038

セキュアドメインで実行される少なくとも1つの制御フロー変更命令の場合、時として、ターゲットアドレスのプログラム命令を処理することに切換える前に、セキュアドメイン内で動作することから非セキュアドメイン内で動作することへ切換えることが有用でありうる。これは、切換えの後で、システムが、低セキュアドメイン内の命令に由来するように見えるため、ガード命令が、エラーを回避することを必要とされることを意味する。これは、セキュアドメイン内の安全エントリポイントへの切換えを当てにされない制御フロー変更命令、たとえば、ターゲットドメイン値が許容ドメインとして低セキュアドメインを指示する制御フロー変更命令について有用である(この場合、低セキュアコードが、制御フロー変更命令についてターゲットアドレスを設定した可能性がある)。

0039

別の態様から見ると、本発明は、データ処理装置を提供し、データ処理装置は、
プログラム命令に応答して、データ処理オペレーションを実施するための処理手段を備え、処理手段は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、セキュアドメインで動作するときに、処理手段は、低セキュアドメインで動作するときにアクセス可能でないデータにアクセスでき、
制御フロー変更命令の実行に応答して、処理手段は、制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換え、また、処理手段が、ターゲットアドレスのプログラム命令について動作する選択ドメインを決定するためのドメイン選択を実施するように構成され、
少なくとも、セキュアドメインで動作している間に、制御フロー変更命令が実行される場合、処理手段は、
(i)複数のドメインのどのドメインが、ターゲットアドレスのプログラム命令について、ドメイン選択によって決定される選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、ドメインチェッキングは、ドメイン選択とは異なる技法を使用し、
(ii)ドメイン選択で決定された選択ドメインが、ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こすように構成される。

0040

さらなる態様から見ると、本発明は、プログラム命令に応答して、データ処理オペレーションを実施するための処理回路を備える装置用データ処理方法を提供し、処理回路は、セキュアドメインおよび低セキュアドメインを含むオペレーションの複数のドメインを有し、セキュアドメインで動作するときに、処理回路は、低セキュアドメインで動作するときにアクセス可能でないデータにアクセスでき、前記方法は、
制御フロー変更命令の実行に応答して、制御フロー変更命令によって指示されるターゲットアドレスのプログラム命令を処理することに切換えること、
ターゲットアドレスのプログラム命令について処理回路が動作する選択ドメインを決定するためのドメイン選択を実施すること、
少なくとも、セキュアドメインで動作している間に、制御フロー変更命令が実行される場合、
(i)複数のドメインのどのドメインが、ターゲットアドレスのプログラム命令について、ドメイン選択によって決定される選択ドメインであることを許容されるかを決定するためのドメインチェッキングを実施し、ドメインチェッキングは、ドメイン選択とは異なる技法を使用すること、および、
(ii)ドメイン選択で決定された選択ドメインが、ドメインチェッキングで決定された許容選択ドメインでない場合、ドメインチェックエラーを引き起こすことを含む。

0041

本発明の上記のまた他の目的、特徴、および利点は、添付図面に関連して読まれる、例証的な実施形態の以下の詳細な説明から明らかになるであろう。

図面の簡単な説明

0042

データ処理装置を概略的に示す図である。
低セキュア領域およびセキュア領域を有するメモリアドレス空間を示す図である。
低セキュア領域内の命令がセキュア領域内の分岐命令用のターゲットアドレスを設定するプログラムコードの例を示す図である。
ハッカーが図3Aの低セキュアコードを変更する場合に起こりうるセキュリティ問題を示す図である。
制御フロー変更命令の命令エンコーディングの一部を使用してターゲットドメイン値を指示する例を示す図である。
ターゲットドメイン値が制御フロー変更命令のターゲットアドレスの一部によって表される例を示す図である。
ドメイン選択およびドメインチェッキングを含むデータ処理方法を示す図である。
ドメイン選択またはドメインチェッキングのいずれかのために使用されうる第1の決定法の例を示す図である。
ドメイン選択またはドメインチェッキングのいずれかのために使用されうる第2の決定法の例を示す図である。
図3Bに示すセキュリティ問題が、ドメイン選択を検証するためにドメインチェッキングを実施することによってどのように阻止されうるかの例を示す図である。
セキュアコードにアクセスする関数ポインタを使用しようとする低セキュアコードを防ぐためにドメインチェッキングを使用する例を示す図である。
関数呼出しおよび関数戻りを扱う例を示す図である。
関数呼出しおよび関数戻りを扱う例を示す図である。
関数引数を渡すために低セキュアスタックおよびセキュアスタックのいずれを使用すべきかを選択する例を示す図である。
さらなるセキュアコードを処理することに切換えるために、低セキュアコードにとってセキュアコードを制御することが適法である場合がある状況の例を示す図である。
図13の状況が安全にかつエラーを引き起こすことなくどのように達成されうるかの第1の例を示す図である。
図13の状況が安全にかつエラーを引き起こすことなくどのように達成されうるかの第2の例を示す図である。

実施例

0043

図1は、処理回路4、データ記憶装置(メモリ)6、およびレジスタ8を備えるデータ処理装置2を概略的に示す。データ記憶装置は、少なくとも1つのキャッシュならびに主メモリを含むことができる。処理回路4は、メモリ6から命令をフェッチするためのフェッチステージ10、フェッチされた命令を復号するためのデコードステージ12、および復号命令を実行するための実行ステージ14を含む処理パイプラインを備える。パイプラインは、他のタイプのステージ、たとえばレジスタリネーミングステージまたは発行ステージを含むことができることが認識されるであろう。

0044

レジスタ8は、処理回路4のためにデータを記憶するための、いくつかの汎用レジスタR0〜R12を含む。図1は、13個の汎用レジスタR0〜R12を含むが、他の数のレジスタが設けられることができ、また任意選択で、浮動小数点値を記憶するための浮動小数点レジスタもまた設けられうることが認識されるであろう。レジスタ8はまた、プログラムカウンタ(PC)レジスタ20、リンクレジスタ(LR)22、およびスタックポイントレジスタ24、26を含むいくつかの専用レジスタを含む。プログラムカウンタレジスタ20は、処理回路4によって実行される次のプログラム命令の命令アドレスを指示するプログラムカウンタを記憶する。一般に、命令の実行の後に、プログラムカウンタは、メモリから次の命令を指示するために更新されることになる。しかし、制御フロー変更命令に応答して、プログラムカウンタは、前の値から順次に追従しない値に設定されうる。リンクレジスタ22は、関数または例外の終了の後にどのプログラム命令が処理されるべきかを決定するために、関数または例外から戻るときに使用される戻り値を記憶するように設定されることができる。スタックポイントレジスタ24、26は、メモリ6内のスタック30、32のロケーションを指示するスタックポインタを記憶する。たとえば、スタックポインタは、スタック30、32上に配置された最後のアイテムのロケーションを指示しうる。

0045

メモリ6は、セキュア領域40および低セキュア領域50を含む。図2に示すように、アドレスメモリ6のメモリアドレス空間は、セキュア領域と低セキュア領域に分割されることができ、ある範囲のメモリアドレスはメモリのセキュア領域40に対応し、他の範囲のメモリアドレスは低セキュア領域50に対応する。メモリ保護ユニット(MPU)65は、異なる領域へのアドレス空間のパーティショニングを制御しうる。図2は、1つのセキュア領域および1つの低セキュア領域を示すが、メモリアドレス空間が、2つ以上のディスクリートセキュア領域および2つ以上のディスクリート低セキュア領域を含むことも可能である。メモリアドレス空間はまた、アドレス値が任意の有効命令アドレスに対応しない予約済みアドレス範囲70(たとえば、0xF0000000以上)を含む。これらのアドレスは、例外戻りおよび関数戻りを扱うときなどに特別の目的のために使用されうる。セキュア領域40および低セキュア領域50はそれぞれ、プログラムコード60および対応するスタック30、32を含むことができる。別個のセキュアおよび低セキュアポインタレジスタ24、26は、セキュア領域40内のセキュアスタック30および低セキュア領域50内の低セキュアスタック32用のスタックポインタを維持するために使用される。

0046

処理回路4は、セキュアドメインおよび低セキュアドメインで動作しうる。処理回路4は、セキュアドメイン内にあるとき、メモリ6のセキュア領域40内のデータおよびコードにアクセスでき、また同様に、低セキュア領域50内のデータおよびコードにアクセスできる。しかし、処理回路4が低セキュアドメイン内にあるとき、低セキュア領域50だけがアクセスされることができ、セキュア領域40はアクセス不能である。これは、低セキュアドメイン内の信頼されないコードがセキュアデータにアクセスすることを防止する。図1および図2は、1つのセキュアドメイン、1つの低セキュアドメイン、ならびに対応するセキュア領域40および低セキュア領域50が存在する例を示すが、3つ以上のドメインおよび領域を設けることも可能である。たとえば、それぞれがセキュリティレベルを有するいくつかのセキュアドメインまたはいくつかの低セキュアドメインが存在する場合がある。いくつかの実施形態では、各ドメインは、異なるセキュリティレベルを有することができる。他の実施形態では、同じセキュリティレベルを有する複数のドメインが存在しうる。

0047

一般に、図1のシステムは、処理回路4が、メモリ6のセキュア領域40からのコードを実行しているときセキュアドメイン内にあり、処理回路4が、メモリ6の低セキュア領域50からのコードを実行しているとき低セキュアドメイン内にあるように動作する。しかし、図3Aおよび図3Bは、使用されるのがドメイン決定技法だけである場合に生じうるセキュリティ問題の例を示す。

0048

図3Aでは、プログラムコード60は、低セキュアドメイン内の関数bob()ならびにセキュアドメイン内の2つの関数joe()およびfred()を含む。関数joe()は、bob()によって呼出され、bob()によって提供されるパスワードが有効であるかどうかをチェックする。パスワードが有効である場合、joe()は、セキュア処理を実施するために関数fred()を呼出す。明らかに、関数fred()は、関数joe()におけるパスワードチェックパスする場合、実行されうるだけであることが望ましい。図3Aは、コードが正しく働く場合を示す。関数bob()は、関数joe()を呼出す分岐命令100を含む。図3Aに示すように、分岐命令100は、戻りアドレス(PC+4)をリンクレジスタ22に配置させ、関数joe()のアドレスをプログラムカウンタレジスタ20に配置させる。戻りアドレスは、関数joe()が終了すると処理が切換わるべきである命令のアドレスを表す。プログラムカウンタレジスタ20の更新は、処理を、関数joe()の開始アドレスジャンプさせる。関数joe()用のコードがセキュア領域40に記憶されるため、joe()はセキュアドメインで処理されることになる。

0049

分岐命令または他の制御フロー変更命令に応答して低セキュアドメインからセキュアドメインに変わるとき、ガード命令102が、分岐命令100のターゲットアドレスに存在しなければならず、そうでなければ、ガードチェックエラーが引き起こされることになる(このメカニズムは、メモリのセキュア領域内の関数の中央に分岐する、低セキュアドメイン内の分岐を防ぐ)。この場合、ガード命令102が存在するため、処理は、セキュアドメイン内で継続しうる。関数joe()は、その後、bob()によって提供されるパスワードが記憶されたパスワードに一致するかどうかをチェックし、そうである場合、関数fred()を呼出す。fred()が終了すると、別の分岐命令104が、そのアドレスがリンクレジスタ22に記憶されるプログラム命令への分岐をもたらすことによって、処理を低セキュアドメインに戻す。

0050

図3Bは、ハッカーが、正しいパスワードなしでセキュア関数fred()にアクセスしうるセキュリティリークの例を示す。図3Aに示すように、joe()を呼出すと、bob()は、関数戻りアドレスPC+4をリンクレジスタ22に書込むと考えられる。しかし、代わりにハッカーは、MOV命令106がリンクレジスタ22に関数fred()のアドレスを配置するようにbob()を書くことができる。したがって、正しいパスワードが供給されないためにjoe()内のパスワードチェックが失敗しても、joe()内の関数戻り分岐104は、リンクレジスタ22に記憶されたアドレス、すなわち関数fred()のアドレスに分岐することになる。したがって、正しいパスワードなしで、低セキュアドメインは、セキュアドメインに、関数fred()を実施させることができた。

0051

さらに、処理を関数fred()に切換えさせた分岐命令104が、セキュアドメインで実行されたため、システムは、ガード命令がfred()内に存在することを必要としないことになる。したがって、ハッカーは、信頼されない低セキュアコードを使用してセキュアデータまたはセキュアコードに対する権限のないアクセスをもたらしうる、メモリ6内の任意のセキュアロケーションへの分岐を引き起こしうる。

0052

このタイプの攻撃を防止するために、分岐命令などの制御フロー変更命令の後に、プロセッサがどのドメインで動作すると予想されるかを決定するための第2の技法を提供するターゲットドメイン値が提供される。制御フロー変更命令のターゲットアドレスに基づく第1の決定技法と共に、選択領域を決定する2つの異なる方法が存在する。少なくともセキュアドメインで実行される制御フロー変更命令の場合、1つの技法は、分岐後に、プロセッサがどのドメインで実際に動作すべきかを選択するために使用され、他の技法は、選択ドメインが許容ドメインであることをチェックするために使用されうる。ドメイン選択における選択ドメインが許容ドメインに一致しない場合、エラーが引き起こされ、したがって、図3Bに示すタイプの攻撃が阻止されうる。

0053

図4Aは、ターゲットドメイン値を維持する第1の例を示す。分岐命令などの制御フロー変更命令150は、ターゲットドメイン値を表すためのビットフィールドTを含みうる。ターゲットドメイン値Tが1つの値(たとえば、T=1)を有する場合、この命令が、セキュアドメインに分岐すると予想されることを指示し、別の値(たとえば、T=0)を有する場合、命令は、低セキュアドメインに分岐すると予想される。図4Bは、ターゲットドメイン値Tがターゲットアドレスのビットによって表されうる別の例を示す。これは、分岐命令または他の制御フロー変更命令155がターゲットアドレスを記憶するレジスタを指定するときに有用でありうる。図4Aおよび図4Bの例では、ターゲットドメイン値は、冗長ビットフィールドによって表され、冗長ビットフィールドは、ターゲットアドレスの命令が、第1の命令セットからであるか、第2の命令セットからであるかを表すために前もって使用された。処理回路4は、第1の命令セットをサポートするだけであるため、このビットフィールドは冗長になっており、したがって、ターゲットドメイン値のために再使用される。図4Aに示すターゲットドメイン値に対するターゲット命令設定フィールドの値のマッピングは、レガシーコードに関する後方互換性を改善する。

0054

図5は、制御フロー変更命令を処理する例を示す。ステップ200にて、処理回路4は、次の命令が制御フロー変更命令であるかどうかを判定する。制御フロー変更命令は、新しい値をプログラムカウンタレジスタ20にロードする分岐命令または別の命令などの、プログラムカウンタレジスタ20に対する非順次変更をもたらす任意の命令とすることができる。命令が制御フロー変更命令でない場合、ステップ202にて、処理回路4は、他の種類の命令を処理する。処理は、その後、次の命令に移動する。

0055

目下の命令が制御フロー変更命令である場合、前記方法は、ステップ204に移動し、そこで、処理回路4は、どのドメインが、ターゲットアドレスのプログラム命令についてプロセッサ4が動作すべきである選択ドメインであるかを決定する。これが実施されるタイミングは、変動する場合がある。たとえば、それは、制御フロー変更命令の実行に応答して、または、制御フローの変更の後にターゲットアドレスのプログラム命令の実行に応答して、実施されることができる。図6および図7で論じるように、ドメイン選択は、第1の決定技法または第2の決定技法を使用して実施されうる。

0056

ステップ206にて、処理回路は、制御フロー変更命令がセキュアドメインで実行されたかどうかを判定する。そうである場合、ステップ208にて、処理回路は、ドメインのうちのどのドメインが、ターゲットアドレスのプログラム命令についてドメイン選択が選択することを許容される許容選択ドメインであるかを決定するためにドメインチェッキングを実施する。ステップ210にて、処理回路は、ステップ204にて選択されたドメインが、ステップ208にて選択された許容選択ドメインであるかどうかを判定する。許容選択ドメインでない場合、ステップ212にて、ドメインチェックエラーが引き起こされる。一方、選択ドメインが許容選択ドメインに一致する場合、ステップ214にて、ターゲットアドレスの命令が、選択ドメインで処理される。前記方法は、その後、次の命令のためにステップ200に戻る。

0057

その間に、ステップ206にて、制御フロー変更命令を実行するときにシステムがセキュア状態になかったと判定された場合、ステップ220にて、ターゲット命令がセキュア領域からであるかどうかが判定される。セキュア領域からでない場合、前記方法は、ステップ214に進み、そこで、ターゲットアドレスの命令が、低セキュアドメインで処理される。この場合、制御フロー変更命令およびターゲットアドレスのターゲット命令は共に、低セキュア領域内にあるため、処理されているセキュアコードが存在しないことから、変更が許容可能である。

0058

しかし、ステップ220にて、ターゲットアドレスの命令がセキュア領域からであると判定される場合、ステップ222にて、その命令がガード命令であるかどうかが判定される。ガード命令でない場合、ステップ224にて、ガードチェックエラーが引き起こされ、前記方法が終了する。したがって、非セキュアドメインからセキュアドメインへ変わるとき、切換え後の第1の命令は、ガード命令でなければならない。これは、セキュリティリークをもたらしうる、非セキュアコードがセキュアコード内の任意のポイントに分岐できることを防止する。一方、ステップ222にて、命令がガード命令である場合、前記方法は、引き続きステップ214に行き、そこで、命令が処理され、その後、前記方法は、次の命令のためにステップ200に戻る。

0059

図5は、制御フロー変更が低セキュアドメインで実行される場合、ドメインチェッキングが実施されない例を示す。しかし、所望される場合、ドメインチェッキングはまた、低セキュアドメインで実施されうる。

0060

図5は、選択ドメインを決定するための2つの技法を示す。ステップ204にて実施されるドメイン選択は、命令が処理される実際のドメインを決定する。ドメインチェッキングは、このドメインが許容ドメインであることをチェックするためにステップ208にて実施される。図6および図7は、使用されうる2つの決定技法を示す。

0061

図6は、第1のドメイン決定技法を示す。ステップ230にて、処理回路4は、メモリ6のどの領域が、処理される次の命令のアドレスを含むかを決定する。たとえば、処理回路4は、どのメモリ領域がアドレスに対応するかについての指示を戻しうるメモリ保護ユニット65にアドレスを送ることができる。命令アドレスが低セキュア領域50内にある場合、ステップ232にて、低セキュアドメインが選択ドメインとして選択され、一方、命令アドレスがセキュア領域40内にある場合、ステップ234にて、セキュアドメインが選択ドメインとして選択される。この技法は、一般に、ほとんどの命令について実施されることになるが、いくつかの例外が存在する場合がある。選択ドメインを決定するために、異なる技法または他のパラメータが使用されることができるいくつかの命令が存在しうる。たとえば、後で述べるように、ガード命令102は、異なる技法を必要とする場合がある。

0062

図7は、図4Aまたは図4Bに示すターゲットドメイン値に基づく第2の決定技法を示す。ステップ250にて、ターゲットドメイン値Tの値が決定される。ターゲットドメイン値が0の値を有する場合、ステップ252にて、低セキュアドメインが選択ドメインとして選択され、一方、ターゲットドメイン値が1の値を有する場合、ステップ254にて、セキュアドメインが選択ドメインとして選択される。ターゲットドメイン値Tの値に対するドメインの異なるマッピングが使用されうるが、図4Aおよび図7に示すマッピングは、レガシーコードに関する後方互換性のために有用であることが認識されるであろう。

0063

図6および図7に示す第1の決定法および第2の決定法は、ドメイン選択またはドメインチェッキングのいずれかのために使用されうる。一例では、図6に示す第1の決定法は、プロセッサが動作する実際のドメインを選択するためのドメイン選択のために使用され、ターゲットドメイン値に基づく図7に示す第2の決定法は、何が許容選択ドメインであるかを見出すためのチェックとして使用されうる。他方、ターゲットドメイン値(第2の決定法)は、実際のドメイン選択を引き起こすために使用され、一方、次の命令のアドレス(第1の決定法)は、ターゲットアドレスが、ターゲットドメイン値で指示されるドメインに一致したかどうかを調べるためのチェックとして使用されうる。いずれにしても、セキュアドメイン内のコードは、制御フロー変更命令が分岐すると予想されるドメインを指示するようにターゲットドメイン値を設定するために使用されうる。

0064

図8および図9は、セキュアコードに対する権限のないアクセスが、ドメインチェッキングを使用して防止されうる例を示す。図8は、図3Bの場合と同じ状況を示す。やはり、ハッカーは、セキュアドメイン104内の関数戻り分岐命令104を、セキュア関数fred()に切換わらせようとして、リンクレジスタ22に関数fred()のアドレスを配置するために関数bob()に書込んだ。しかし、ガード命令102に応答して、処理回路4は、リンクレジスタ22内のアドレス用のターゲットドメイン値Tを、関数戻り分岐104が、メモリの低セキュア領域内の命令に分岐すべきであることを指示する値0に設定する。関数戻り分岐命令104が実行されると、処理は、実際には、セキュア領域内の関数fred()に切換わる。したがって、選択ドメインがセキュアドメインであるべきであると、関数fred()の第1の命令のアドレスに基づいて判定することになる第1の決定法と、選択ドメインが低セキュアドメインであるべきであると、ターゲットドメイン値に基づいて判定することになる第2の決定法との間に不一致が存在することになる。第1の決定法と第2の決定法のいずれがドメイン選択を表すか、また、いずれがドメインチェッキングを表すかによらず、この不一致は、エラーを引き起こさせることになり、そのエラーは、セキュア関数fred()のさらなる処理を阻止することになる。したがって、これは、低セキュアコードを使用するハッカーが、別のセキュアロケーションへのセキュアコードからの分岐を引き起こすことを防止する。

0065

図9は、ドメインチェッキングを実施することが有用でありうる別の例を示す。この例では、セキュリティリスクは、レジスタR0に関数ポインタを記憶する、低セキュアドメイン内の関数john()から生じ、セキュアドメイン内の関数bill()は、その後、その関数ポインタを使用して、関数を呼出す。bill()から関数を呼出す分岐命令300は、レジスタR0で指示されるアドレスに分岐する。関数ポインタがセキュアロケーションに設定された場合、低セキュアコードは、それがガード命令によってマーク付けされた有効セキュアエントリポイントでなくても、任意のセキュアロケーションに切換わるようにセキュアコードを引き起こしうる。よって、これがセキュリティ分岐へとつながりうる。

0066

しかし、関数ポインタが低セキュアドメイン内のアドレスを指すべきであることを指示するために、ターゲットドメイン値Tを0に設定する予めのターゲットドメイン設定命令302を含むことによって、セキュア関数bill()を書くプログラマは、この種の攻撃を防ぎうる。分岐命令300に応答して関数ポインタロケーションに分岐すると、ハッカーが関数ポインタをセキュア値に設定した場合、ドメインチェッキングは、命令がセキュア領域内にあるために決定されたセキュアドメインと、ターゲットドメイン値によって指示される低セキュアドメインとの間の不一致を判定することになる。したがって、エラーが引き起こされ、セキュリティ違反が阻止されうる。

0067

図8および図9はエラーが引き起こされる事例を示すが、他の実施形態では、このエラーは、関数ポインタロケーションに、これが制御フローの権限のある変更であること、を指示するガード命令が存在する場合、回避されうる(以下の図14および図15を参照)。

0068

図8および図9に示すように、分岐命令に先行するターゲットドメイン値設定命令は、ターゲットドメイン値を所望の値に設定するために使用される。ターゲットドメイン値設定命令は、図8に示すガード命令または図9に示す別の種類のターゲットドメイン値設定命令でありうる。一般に、セキュアコードのプログラマは、制御フロー変更命令が正しく作用することを保証するために、セキュアドメイン内の制御フロー変更命令の前に、プログラムコード内にターゲットドメイン値設定命令を含むべきである。

0069

ターゲットドメイン値Tは、他の目的ならびにドメインチェッキングおよびドメイン選択のために有用である場合がある。一例は、図10および図11に示される。この例は、関数呼出しおよび関数戻りに関連する。上述した関数bob()、joe()などは、通常、リンクレジスタ22に関数戻りアドレスを配置し、呼出される関数の第1の命令に対応するアドレスに分岐させる第1の制御フロー変更命令、次に、関数戻りアドレスに処理を戻す第2の制御フロー変更命令を使用して呼出されることになる。しかし、関数が、セキュアドメインから呼出され、低セキュアドメインで実行される場合、戻りアドレスは、低セキュアコードから隠蔽される必要がある場合がある。したがって、ダミー戻りアドレスが、リンクレジスタに記憶されうる。たとえば、ダミー戻りアドレスは、図2に示す予約済み範囲70のアドレスのうちの1つのアドレスでありうる。実際の戻りアドレスは、関数呼出しから戻ると、セキュアドメイン内でアクセスするためのセキュアスタック30に保存されうる。

0070

ダミーアドレスまたは実際の戻りアドレスがリンクレジスタ22に保存されるべきかどうかを判定することを容易にするために、ターゲットドメイン値Tが使用されうる。これは、図10および図11に示される。図10は、関数呼出しを引き起こす第1の制御フロー変更命令を実行するときの処理を示す。ステップ350にて、次の命令が、リンクレジスタに戻りアドレスを配置することになるタイプの分岐命令BLまたはBLXであるか否かが判定される。分岐命令BLまたはBLXである場合、ステップ360にて、処理が、目下セキュアドメイン内にあり、分岐が低セキュアドメインに切換わると予想されることを分岐用のターゲットドメイン値Tが指示するかどうかが判定される。これが事実でない場合、ステップ365にて、実際の戻りアドレスがリンクレジスタ22に記憶される。しかし、ステップ360にて、処理がセキュアドメイン内にあり、処理が低セキュアドメインに切換わる(T=0)と予想されることを分岐用のターゲットドメイン値Tが指示する場合、ステップ370にて、ダミー戻りアドレスがリンクレジスタ22に記憶される。ステップ380にて、実際の戻りアドレスがセキュアスタックに保存される。どのアドレスがリンクレジスタに保存されるかによらず、前記方法は、その後、ステップ390に進み、そこで、処理はターゲットアドレスに分岐し、関数が、次に処理される。ターゲットアドレスの命令用のドメイン選択およびドメインチェッキングは、その後、図5に示すように進むことになる。図10のステップ360にて、ターゲットドメイン値は、この決定がターゲットアドレスに基づいた場合、ダミー戻りアドレスまたは実際の戻りアドレスがリンクレジスタに記憶されるべきかどうかについての迅速な判定を可能にする。

0071

最終的に、別の制御フロー変更命令に遭遇することになる(図11のステップ400)。ステップ410にて、ターゲットアドレスがダミーアドレスであるかどうかがチェックされる。ダミーアドレスでない場合、処理は、ステップ420にて、制御フロー変更命令のターゲットアドレスに分岐する。その理由は、これが、関数戻りでない通常の制御フロー変更命令か、または、ターゲットアドレスが、リンクレジスタに記憶された実際の戻りアドレスである関数戻りであるからである。一方、ステップ410にて、ターゲットアドレスがダミーアドレスであると判定される場合、ステップ430にて、処理は、セキュアドメインに切換わる。ステップ440にて、実際の戻りアドレスが、メモリのセキュア領域40内のセキュアスタックからフェッチされる。その後、ステップ450にて、処理は、実際の戻りアドレスに分岐し、その後、ドメイン選択およびドメインチェッキングが、通常通り継続する。

0072

図12は、ターゲットドメイン値が有用でありうる別の例を示す。関数を呼出すとき、呼出し側関数が、スタックを介して呼出し先関数に関数引数を渡すことが、時として必要である。関数呼出しがセキュアドメインから行われる場合、関数引数が、セキュアスタック30に記憶されるべきか、低セキュアスタック32に記憶されるべきかは、呼出し先関数が、セキュアドメインで実行されるか、低セキュアドメインで実行されるかに依存することになる。図12に示すように、関数引数を渡すために、どのスタックを使用すべきかについての決定は、ターゲットドメイン値Tを使用して行われうる。ターゲットドメイン値Tを使用することは、呼出し先関数のロケーションを表すターゲットアドレスにどの領域が対応するかを、メモリ保護ユニット65によってチェックするのに比べてより迅速なターゲットドメインの決定を可能にする。図12の決定は、処理回路によってハードウェアで、または、処理回路によって実行されるコードによってソフトウェアで実施されることができる。

0073

これまでに示した例は、単一ドメインが特定の制御フロー変更命令について許容ドメインである文脈でドメインチェッキングを説明した。しかし、場合によっては、いくつかのドメインを許容ドメインにすることが望ましい場合がある。図13は、これの例を示す。図13は、図9に示す状況に対応するが、この場合、関数reg()は、低セキュア関数mary()によってレジスタR0に配置された値に応じて、あるときは、低セキュア領域に戻るべきであり、また、他のときには、セキュア領域内の信頼される関数alice()に切換わるべきである分岐命令300を含む。上述した技法によって、予想ターゲットドメインとして低セキュアドメインを指示するために、ターゲットドメイン値設定命令302が、レジスタR0内の関数ポインタのターゲットドメイン値を設定する場合、mary()がレジスタR0をセキュアロケーションに設定するときに、エラーが引き起こされることになる。この場合、分岐命令300を実行すると、ターゲットドメイン値は、選択ドメインとして低セキュアドメインを指示することになり、一方、関数alice()に分岐すると、MPU65は、選択ドメインとしてセキュアドメインを決定することになる。この特定の分岐が適法である場合、この場合、エラーを引き起こすことを回避することが望ましいが、このタイプの権限のない切換えを依然として防ぐことが望ましい。

0074

図14および図15は、これが対処されうる方法を示す。いくつかのプログラム命令の場合、システムは、分岐命令300の後の挙動によらず、ドメイン切換えが許容されるように、複数のドメインを許容ドメインとして決定しうる。しかし、権限のない切換えを防ぐために、システムは、分岐命令300の後の第1の命令がガード命令であることを必要としうる。

0075

図14の例では、ドメイン選択は、ターゲットドメイン値に基づき、ドメインチェッキングは、アドレス用のMPU65によって決定される領域に基づく。ガード命令の場合、MPU65は、セキュアドメインと低セキュアドメインの両方を許容ドメインとして決定する。したがって、分岐300の後で、処理は、ターゲットドメイン値Tが0に設定されたので、低セキュアドメインに切換わることになる。しかし、alice()内のガード命令306の場合、第1の決定法に基づくドメインチェッキングは、セキュアドメインと低セキュアドメインの両方を許容ドメインとして選択する。したがって、実際のドメインは、低セキュアドメインであり、これは、許容ドメインのうちの1つの許容ドメインに一致するため、エラーは存在しない。同様に、セキュアコードによって制御されるalice()への分岐の場合、ターゲットドメイン値は、1に設定されることになるため、分岐の後で、システムは、セキュアドメイン内で実行する。したがって、alice()は、セキュアコードと低セキュアコードの両方からアクセスされ、分岐300は、セキュアコードと低セキュアコードの両方に正しく切換りうる。分岐300が、ガード命令でないセキュア領域内のプログラム命令への切換えをもたらした場合、エラーが引き起こされることになる。したがって、任意のセキュアロケーションへの権限のない切換えが、依然として回避されうる。

0076

図15に示す別の例では、ドメインチェッキングは、ターゲットドメイン値に基づき、ドメイン選択は、命令アドレスが対応するメモリ領域に基づく。この場合、分岐命令300に応答して、低セキュアドメインとセキュアドメインの両方が、(ターゲットドメイン値によらず)ターゲットアドレスの命令について許容選択ドメインとして選択される。alice()内のガード命令306に分岐すると、MPU65は、ドメインチェッキングによって、許容ドメインのうちの1つの許容ドメインに一致することになるセキュアドメインを選択ドメインとして決定することになる。ターゲットロケーションにガード命令306が存在する場合、エラーは引き起こされないことになる。

0077

したがって、ドメイン選択およびドメインチェッキングのいずれが、ターゲットビットを使用するかによらず、システムは、低セキュアドメインによって設定されるアドレスの制御下でセキュアドメインからセキュアロケーションへのいくつかの適法な切換えを可能にしうる。ガード命令は、こうした切換えを確認するために必要とされる。通常、既にセキュアドメイン内にあるとき、ガードチェックは必要とされないことになるため、ガードチェックが実施されることを保証するために、システムは、ターゲットドメイン値が0の値を有するメモリのセキュア領域内の分岐命令300を実行する前に、低セキュアドメインに切換わりうる。分岐は、セキュアドメインに切換わる場合、低セキュアドメインから生じたように見えるため、エラーを回避するために、ガード命令が、ターゲットアドレスに必要とされることになる。

0078

本出願の主題は、同一譲受人に譲渡され、同時係属中の米国出願第13/368,419号および英国特許出願第1217531.1号に関連し、これらの文書の両方の全体の内容が参照により組込まれる。

0079

本発明の例証的な実施形態が、添付図面を参照して本明細書で詳細に述べられたが、本発明が、これらの厳密な実施形態に限定されないこと、および、添付特許請求の範囲によって規定される本発明の範囲および趣旨から逸脱することなく、当業者によって種々の変更および修正が実施形態において行われうることが理解される。

0080

2データ処理装置
4処理回路
6データ記憶装置(メモリ)
8レジスタ
10フェッチステージ
12デコードステージ
14実行ステージ
20プログラムカウンタレジスタ
22リンクレジスタ
24、26スタックポイントレジスタ
30、32 スタック
40セキュア領域
50低セキュア領域
60プログラムコード
65メモリ保護ユニット(MPU)

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ