(57)【要約】【課題】あるバスマスタがアルゴリズムを守る必要のある複数種類のアプリケーションを同時に実行する場合、それぞれのアプリケーションに対応した専用領域を共有メモリ上に確保する。【解決手段】複数のアプリケーションを実行するバスマスタがメモリへアクセスする場合、各アプリケーションに対応した領域へのアクセスであることを示すアクセス領域番号を出力し、アクセス可否判定部にて、アクセス領域番号やアクセス要求に含まれるアクセス先アドレス、アクセス可否情報を基に、バスマスタが要求するアクセス先へアクセス可能か否かを判定する。【選択図】図１
2007109053.tif 000002
【特許請求の範囲】
【請求項１】
メモリやレジスタなどのＬＳＩ内外の資源を有するバススレーブと、
前記バススレーブへアクセスするバスマスタにあって、
前記バスマスタ側の処理内容に対応した転送識別番号をアクセス要求と共に出力するバス出力部
を有することを特徴とするバスアクセス制御装置。
【請求項２】
請求項１記載のバスアクセス制御装置であって、
前記バスマスタの処理動作を制御する複数の制御マスターと、
前記バスマスタを制御しているのがどの前記制御マスターなのかを判別する制御マスター識別部と、
を有し、
前記バス出力部は前記制御マスター識別部からの情報をもとに、前記バスマスタ側の処理内容がどの前記制御マスターに属したものであるかを前記転送識別番号として出力することを特徴とするバスアクセス制御装置。
【請求項３】
前記制御マスターはソフトウェアを実行可能であり、
前記転送識別番号は前記制御マスターで動作するソフトウェアに対応した番号であることを特徴とする
請求項２記載のバスアクセス制御装置。
【請求項４】
前記転送識別番号は前記制御マスターで動作するアプリケーションに対応した番号であることを特徴とする請求項３に記載のバスアクセス制御装置。
【請求項５】
前記転送識別番号は前記制御マスターで動作するＯＳ上でのプロセスに対応した番号であることを特徴とする請求項３に記載のバスアクセス制御装置。
【請求項６】
前記転送識別番号は前記ソフトウェアが動作している前記制御マスターのソフトウェア実行モードに対応した番号であることを特徴とする請求項３に記載のバスアクセス制御装置。
【請求項７】
前記転送識別番号は前記制御マスターのソフトウェアのフェッチ先アドレスに対応した番号であることを特徴とする請求項３に記載のバスアクセス制御装置。
【請求項８】
請求項１〜７のいずれか一項に記載のバスアクセス制御装置であって、
前記バスマスタから前記資源へアクセス可能な領域と不可能な領域とを示すアクセス可否情報を複数保持するアクセス可否情報保持部を有し、
前記転送識別番号は、前記アクセス可否情報として保持される各々の前記領域に対応しており、
前記アクセス可否情報保持部のアクセス可否情報と前記転送識別番号と前記アクセス要求に含まれるアクセス先のアドレス情報に基づいて、前記バスマスタが前記アクセス要求先の領域にアクセス可能か否かを判定するアクセス可否判定部をアクセス制御部に含む
ことを特徴とするバスアクセス制御装置。
【請求項９】
請求項８記載のバスアクセス制御装置であって、
複数の前記バスマスタを有し、
前記アクセス要求を行ったバスマスタを識別し、バスマスタ識別情報として出力するバスマスタ識別部をさらに含み、
前記アクセス可否情報に、前記領域へのアクセスを許可するマスタ識別情報を含み、
前記アクセス可否判定部は、前記マスタ識別情報と前記アクセス可否情報と前記転送識別番号と前記アクセス要求に含まれるアクセス先のアドレス情報に基づいて、前記バスマスタが前記アクセス要求先の領域にアクセス可能か否かを判定する
ことを特徴とするバスアクセス制御装置。
【請求項１０】
請求項８または９記載のバスアクセス制御装置であって、
前記バスマスタが暗号・復号機能を有した暗復号ＤＭＡコントローラであり、
前記暗復号ＤＭＡコントローラは暗号、復号に使用する鍵を設定するためのレジスタ（復号鍵設定レジスタ）と、ＤＭＡ転送元を指定するためのレジスタ（転送元指定レジスタ）と、
ＤＭＡ転送先を指定するためのレジスタ（転送先設定レジスタ）を有し、
更に暗号化データもしくは暗号化プログラムを復号して前記転送先設定レジスタに示されたアドレスに転送するためのアクセス要求を発行する際、前記バス出力部にて、前記復号鍵設定レジスタにより指定された復号鍵に対応させて前記転送識別番号を出力する
ことを特徴とするバスアクセス制御装置。
【請求項１１】
請求項１０記載のバスアクセス制御装置であって、
前記復号鍵の予め定められた箇所に前記転送識別番号を含み、
処理内容識別部は、前記復号鍵設定レジスタに設定された復号鍵から、予め定められた位置の情報を前記転送識別番号として出力する
ことを特徴とするバスアクセス制御装置。
【請求項１２】
前記アクセス可否情報は、
前記転送識別番号に対応した領域を示すための領域開始アドレス、領域終了アドレスを含む
ことを特徴とする請求項８〜１１のいずれか一項に記載のバスアクセス制御装置。
【請求項１３】
請求項８〜１２のいずれか一項に記載のバスアクセス制御装置であって、
前記アクセス可否情報に、前記アクセスを許可する前記マスタ識別情報により指定されたバスマスタに対し許可するアクセス種別（書込み、読出しの許可、禁止）の情報をさらに含み、
前記アクセス可否判定部にて、前記バスマスタからのアクセス要求がアクセス先に対する書込み要求なのか、読出し要求なのかを判定し、その判定結果と前記アクセス可否情報と前記マスタ識別情報と前記転送識別番号と前記アクセス要求に含まれるアクセス先アドレス情報に基づいて、前記バスマスタが前記アクセス要求先の領域にアクセス可能か否かを判定する
ことを特徴とするバスアクセス制御装置。
【請求項１４】
請求項１〜７のいずれか一項に記載のバスアクセス制御装置であって、
複数の前記バスマスタを有し、
前記複数のバスマスタの間で転送を調停するバス調停部を有し、
前記転送識別番号はバス調停の優先度に対応づけられており、
前記バス調停部は前記転送識別番号をもとに調停を行う
ことを特徴とするバスアクセス制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデジタルＡＶ機器向けシステムＬＳＩにおけるセキュア機構、またはバス調停機構の実現に関するものである。
【背景技術】
【０００２】
現在、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）の高機能化、高集積化が進む中、複数のプロセッサから構成されるマルチプロセッサシステムが一般化している。また、デジタルAV家電分野などでは、低コスト化のため主記憶装置などの情報資源を共有するユニファイドメモリ構成が欠かせない。そのため、あるプロセッサの秘匿プログラムやデータが共有メモリ内に記憶されている場合に、他のプロセッサがその秘匿プログラムを改竄したり盗み出したりする等のセキュリティ低下が問題となっている。
【０００３】
特許文献１には、あるバスマスタが複数種類のセキュアなアプリケーションを実行する場合、それぞれのセキュア処理に応じた専用領域を共有メモリ上に確保するための仕組みが開示されている。図１９に特許文献１記載のバスアクセス制御装置を示す。アクセス制御部３００は、アクセス可否情報保持部３２０が保持するバスマスタ２００がアクセス可能な領域を示すアクセス可否情報と、バスマスタ２００が発行するメモリ３５０へのアクセス要求２１０とに基づいて、バスマスタ２００がアクセス要求先の領域にアクセス可能か否かを判定する。メモリＩＦ部３４０は、その判定結果（アクセス可否判定結果３３０）がアクセス許可を示しているときのみメモリ３５０へアクセスする。アクセス可否情報は特定アドレスのプログラム実行時にのみ変更可能である。また、複数のアプリケーションを実行する場合、その都度アクセス可否情報を設定する必要がある。図２０にアクセス可否情報の一例を示す。アクセス可否情報としては、アクセス可能領域の開始アドレス、終了アドレス、さらに前記アクセス可能領域以外へのアクセスを許可するか否かである。図２０の例では、バスマスタ２００はアドレス０ｘ８０００＿００００〜０ｘ８０ＦＦ＿ＦＦＦＦにのみアクセス可能となる。
【０００４】
また、昨今のＬＳＩのオンチップバスでは、複数のマスターが共有メモリへ同時にアクセスした際のバスの調停をいかに効率的に行うかが性能を保証する上で重要となっている。図２１に、特許文献２や、非特許文献１に集中並列方式（ｃｅｎｔｒａｌｉｚｅｄ，ｐａｒａｌｌｅｌ  ａｒｂｉｔｒａｔｉｏｎ）として紹介されている従来のバス調停の方法を述べる。バスマスタ２０１、２０２、２０３はバスに対してアクセス要求２１１、２１２、２１３をそれぞれ出力する。アクセス制御部３００には各マスタに応じた調停順位が記載されたマスタ調停情報１１１０が存在し、複数マスターが同時にアクセスした場合、このマスタ調停情報１１１０に応じて、どのマスターからのアクセスを優先するかが決定される。図２２にマスタ調停情報の例を示す。そこにはマスター間での順位が記載されており、本例の場合、マスター２０１、マスター２０２、マスター２０３の順位での固定優先となっている。
【特許文献１】特開２００１−２５６４６０号公報
【特許文献２】特開平６−２３１０７４号公報
【非特許文献１】Ｊｏｈｎ  Ｌ．Ｈｅｎｎｅｓｓｙ，Ｄａｖｉｄ  Ａ．Ｐａｔｔｅｒｓｏｎ“Ｃｏｍｐｕｔｅｒ  Ｏｒｇａｎａｚａｔｉｏｎ  ａｎｄ  Ｄｅｓｉｇｎ”，１９９８，Ｍｏｒｇａｎ  Ｋａｕｆｍａｎｎ  Ｐｕｂｌｉｓｈｅｒｓ，Ｉｎｃ．
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１の仕組みでは、あるセキュアなアプリケーション実行中には、そのアプリに対応した一つの専用領域しか確保することができないため、複数のセキュアなアプリケーションに属した転送を同時に実行することができない。この仕組みの上で複数のセキュアなアプリケーションを同時に実行しようとすれば、一つの専用領域にて複数のセキュアな転送を実行する必要があるが、この場合、バスマスタが複数種類のセキュア情報にアクセス可能であるためセキュリティ低下の要因となってしまう。
【０００６】
また、図２１の調停の仕組みでは１つのマスター毎に調停の順位が決定されるが、たとえば、マスターから実行される転送にグラフィックスや周辺ＩＯとのシリアル転送など多様なものが混在する場合（汎用のＤＭＡコントローラなど）、転送データの種類に応じて調停順序を動的に変更できることが望ましいが、本構成ではそれを実現することは困難である。
【０００７】
なお上記２つの課題はいずれも、バス上でコンカレントに実行されうる複数種類のデータ転送において、（１）アクセス可能なメモリ領域や、（２）バス調停順位といった情報が動的に変更できない構成であるため、セキュリティや転送性能の向上を実現しにくい点で共通している。
【課題を解決するための手段】
【０００８】
前記従来の課題を解決するために、本発明は、メモリやレジスタなどのＬＳＩ内外の資源を有するバススレーブと、前記バススレーブへアクセスするバスマスタにあって、前記バスマスタ側の処理内容に対応した転送識別番号をアクセス要求と共に出力するバス出力部を有する。
【０００９】
また、本発明は、請求項１記載のバスアクセス制御装置であって、前記バスマスタの処理動作を制御する複数の制御マスターと、前記バスマスタを制御しているのがどの前記制御マスターなのかを判別する制御マスター識別部と、前記バス出力部は前記制御マスター識別部からの情報をもとに、前記バスマスタ側の処理内容がどの前記制御マスターに属したものであるかを前記転送識別番号として出力する手段を有する。
【００１０】
また、本発明は、請求項２記載のバスアクセス制御装置であって、前記制御マスターはソフトウェアを実行可能であり、前記転送識別番号は前記制御マスターで動作するソフトウェアに対応した番号であることを特徴とする手段を有する。
【００１１】
また、本発明は、請求項３記載のバスアクセス制御装置であって、前記転送識別番号は前記制御マスターのソフトウェアのフェッチ先アドレスであることを特徴とする手段を有する。
【００１２】
また、本発明は、請求項８記載のバスアクセス制御装置であって、複数の前記バスマスタを有し、前記アクセス要求を行ったバスマスタを識別し、バスマスタ識別情報として出力するバスマスタ識別部をさらに含み、前記アクセス可否情報に、前記領域へのアクセスを許可するマスタ識別情報を含み、前記アクセス可否判定部は、前記マスタ識別情報と前記アクセス可否情報と前記転送識別番号と前記アクセス要求に含まれるアクセス先のアドレス情報に基づいて、前記バスマスタが前記アクセス要求先の領域にアクセス可能か否かを判定する手段を有する。
【００１３】
また、本発明は、請求項８または９記載のバスアクセス制御装置であって、前記バスマスタが暗号・復号機能を有した暗復号ＤＭＡコントローラであり、前記暗復号ＤＭＡコントローラは暗号、復号に使用する鍵を設定するためのレジスタ（復号鍵設定レジスタ）と、ＤＭＡ転送元を指定するためのレジスタ（転送元指定レジスタ）と、ＤＭＡ転送先を指定するためのレジスタ（転送先設定レジスタ）を有し、更に暗号化データもしくは暗号化プログラムを復号して前記転送先設定レジスタに示されたアドレスに転送するためのアクセス要求を発行する際、前記バス出力部にて、前記復号鍵設定レジスタにより指定された復号鍵に対応させて前記転送識別番号を出力する手段を有する。
【００１４】
また、本発明は、請求項１〜７のいずれか一項に記載のバスアクセス制御装置であって、複数の前記バスマスタを有し、前記複数のバスマスタの間で転送を調停するバス調停部を有し、前記転送識別番号はバス調停の優先度に対応づけられており、前記バス調停部は前記転送識別番号をもとに調停を行う手段を有する。
【発明の効果】
【００１５】
本発明のバスアクセス制御装置によると、あるバスマスタもしくは複数のバスマスタが複数のセキュアな転送をコンカレントに実行する場合、各セキュア処理に対応した専用領域を共有資源（共有メモリ）上に確保でき、かつバストランザクション毎に上記領域への不正アクセスを的確に判定できるため、セキュリティを向上させることができる。
【００１６】
また、本発明のバスアクセス制御装置によると、バスで転送されるデータの種類や制御しているマスターの種類に応じて、バストランザクション毎に調停順位を的確に決定できるため、より精度のよい調停を実現することが可能である。
【発明を実施するための最良の形態】
【００１７】
以下に各請求項の実施例について図面を参照して説明する。
【００１８】
（実施の形態１）
本発明の実施の形態１であるバスアクセス制御装置の動作を、図１と図２を用いて説明する。
【００１９】
実施の形態１であるバスアクセス制御装置１００におけるバスマスタ１は、３つのセキュアなアプリケーションを実行する。実行形態としては、あるアプリケーションが終了したら次のアプリケーションを起動するのではなく、３つのアプリケーションを同時に実行するものとする。
【００２０】
アクセス可否情報保持部３２０には、図２に示すように、各アプリケーションに対応した３つの領域に対するアクセス可否情報が蓄積されており、アプリケーション１用の領域１は０ｘ８０００＿００００〜８０００＿ＦＦＦＦであり（これは、アプリケーション１以外を実行している時には領域１へはアクセス禁止であることを意味している）、アプリケーション２用の領域２は０ｘ８１００＿００００〜８１ＦＦ＿ＦＦＦＦであり、アプリケーション３用の領域３は０ｘ８２００＿００００〜８２ＦＦ＿ＦＦＦＦである。バスマスタ１はメモリ３５０の領域１〜３へアクセスする際、アクセス先のアドレスなどと共に、その領域１〜３と１対１に対応したアクセス領域番号２２１を出力する。アクセス可否判定部３１０は、アクセス領域番号２２１とアクセス要求２１１に含まれるアクセス先のアドレス情報と、アクセス可否情報保持部３２０に保持されているアクセス可否情報に基づいて、バスマスタ１が要求するアクセス先にアクセス可能であるか否かを判定し、アクセス可否判定結果３３０をメモリＩＦ部３４０へ出力する。メモリＩＦ部３４０はアクセス可否判定結果がアクセス許可を示しているときのみ、メモリ３５０へ所望のアクセスを行う。
【００２１】
以上により、実行している３つのアプリケーションに対応した３つの専用領域を確保することが可能となる。
【００２２】
次に、本実施の形態におけるバスアクセス制御装置１００内のバスマスタ１からメモリ３５０へアクセス要求が行われた場合のアクセス制御処理について説明する。図３は、アクセス制御処理の一例を示すフローチャートである。
【００２３】
ステップＳ３０１：バスマスタ１がメモリ３５０へのアクセス要求を発行すると同時にアクセス領域番号２２１を出力する。
【００２４】
ステップＳ３０２：アクセス可否判定部３１０にて、アクセス可否情報保持部３２０に保持されているアクセス可否情報と、バスマスタ１からのアクセス領域番号２２１とアクセス要求２１１に含まれるアクセス先のアドレス情報に基づいて、アクセス可能か否かを判断し、その結果をアクセス可否判定結果３３０としてメモリＩＦ部３４０へ出力する。
【００２５】
ステップＳ３０３：メモリＩＦ部３４０は、アクセス可否判定結果３３０がアクセス許可を示している場合、メモリ３５０へ所望のアクセスを行い、結果をバスマスタ１へ返す。
【００２６】
ステップＳ３０４：メモリＩＦ部３４０は、アクセス可否判定結果３３０がアクセス不許可を示している場合、メモリ３５０へ所望のアクセスは行わず、ダミーアクセスやダミー応答を行う。ここで、ダミーアクセスとしては、ライト動作の場合、例えばアクセス先へデータをマスクして書き込みを行う、もしくはライトコマンドの代わりにリードコマンドを発行する等のアクセスを行う。また、リード動作の場合、例えばアクセスが許可されている領域に対してリードコマンドを発行する等のアクセスを行う。また、ダミー応答とは、実際のアクセス先から得た応答であるとバスマスタに誤認させるダミーの応答を意味する。例えば、バスマスタから共有メモリのアクセス禁止領域にライト動作を行う場合、要求どおりのライト動作を実行せずにアクセス要求の受け付け完了やデータ書き込み完了等の偽の応答を行う。また、アクセス禁止領域にリード動作を行う場合、要求どおりのリード動作を実行せずにアクセス要求の受け付け完了や違う領域のリードデータ応答等の偽の応答を行う。よって、共有メモリ上のアクセス禁止領域とアクセス許可領域とを見分けるのを困難にし、アクセス禁止領域へアクセスするための解析を妨げることができる。また、不正な解析を困難にするためには、メモリＩＦ３４０にてデータ書き込み時にバス暗号をかけ、データ読出し時に復号することも有効である。
【００２７】
なお、アクセス禁止領域にアクセスがあった際に上記のようなダミー応答でなく、エラー応答や割り込みなど制御ホストに通知する手段があってもかまわない。これにより、開発過程における意図しない制御のバグなどを明確に感知することが可能となる。
【００２８】
（実施の形態２）
本発明の実施の形態２であるバスアクセス制御装置の動作を、図４と図５を用いて説明する。
【００２９】
ここでは、実施の形態１であるバスアクセス制御装置の動作と異なる点を中心に説明する。
【００３０】
バスマスタ識別部４００はバスマスタ１〜３の内いずれかのバスマスタから共有メモリ３５０へのアクセス要求を受け付けると、どのバスマスタからのアクセス要求であるかを識別する。そして、アクセス要求及び識別結果をアクセス制御部３００に出力する。複数のバスマスタからアクセス要求が行われている場合には、例えば優先度に応じてどのバスマスタからのアクセス要求に権利を与えるかを決定する。アクセス可否情報保持部３２０には、図５に示すように、各バスマスタが実行するセキュアな処理種別に対応した領域に対するアクセス可否情報が保持されており、それぞれの領域毎にアクセスを許可するバスマスタを示すマスタ識別情報と、その領域の開始アドレス、終了アドレス情報が含まれている。この例では、例えば領域１に関しては、バスマスタ１のみがアクセス可能であり、その領域は０ｘ８０００＿００００〜０ｘ８０００＿ＦＦＦＦであることを示しており、バスマスタ１以外のバスマスタはアクセス禁止であり、さらにバスマスタ１であっても領域番号が１以外であればアクセス禁止であることを意味する。アクセス可否判定部３１０は、バスマスタ識別部４００からのマスタ識別情報４１０とアクセス領域番号２２０とアクセス要求２１０に含まれるアクセス先のアドレス情報とアクセス可否情報保持部３２０が保持するアクセス可否情報に基づいて、バスマスタが要求するアクセス先にアクセス可能であるか否かを判定し、アクセス可否判定結果３３０をメモリＩＦ部３４０へ出力する。
【００３１】
以上により、複数バスマスタが実行する複数のセキュアなアプリケーションに対応した専用領域を共有メモリ３５０上に確保することが可能となる。
【００３２】
次に、本実施の形態におけるバスアクセス制御装置１００内のバスマスタ１〜３から共有メモリ３５０へアクセス要求が行われた場合のアクセス制御処理について説明する。図６は、アクセス制御処理の一例を示すフローチャートである。
【００３３】
ステップＳ６０１：バスマスタ１〜３の内いずれかのバスマスタ、もしくはバスマスタ１〜３の内複数のバスマスタがメモリ３５０へのアクセス要求を発行する。複数のセキュアなアプリケーションを実行するバスマスタ１は、アクセス要求の発行と同時にアクセス領域番号２２１を出力する。
【００３４】
ステップＳ６０２：バスマスタ識別部４００にてアクセス要求２１１を発行しているバスマスタを識別し、単一のバスマスタからのみアクセス要求が発行されているのか、もしくは複数バスマスタからアクセス要求が発行されているのかを識別する。
【００３５】
ステップＳ６０３：複数バスマスタからアクセス要求が発行されている場合は、それらの要求のうちどれを優先して処理するかを決定する。
【００３６】
ステップＳ６０４：アクセス可否判定部３１０にて、バスマスタ識別部４００からのマスタ識別情報４１０とアクセス領域番号２２０とアクセス要求２１０に含まれるアクセス先のアドレス情報とアクセス可否情報保持部３２０に保持されているアクセス可否情報に基づいて、アクセス可能か否かを判断し、その結果をアクセス可否判定結果３３０としてメモリＩＦ部３４０へ出力する。
【００３７】
ステップＳ６０５：メモリＩＦ部３４０は、アクセス可否判定結果３３０がアクセス許可を示している場合、共有メモリ３５０へ所望のアクセスを行い、結果を所定のバスマスタへ返す。
【００３８】
ステップＳ６０６：メモリＩＦ部３４０は、アクセス可否判定結果３３０がアクセス不許可を示している場合、共有メモリ３５０へ所望のアクセスは行わず、ダミーアクセスやダミー応答を行う。
【００３９】
（実施の形態３）
本発明の第３の実施の形態であるバスアクセス制御装置の動作を、図７を用いて説明する。ここでは、実施の形態１、２であるバスアクセス制御装置の動作と異なる点を中心に説明する。
【００４０】
本実施の形態におけるバスマスタ１は複数種類のセキュアな処理（ここでは、セキュア処理１とセキュア処理２とする）を行う機能ブロックであり、その複数処理実行のために共有メモリ３５０を使用する。セキュア処理１用とセキュア処理２用の専用領域を確保する上で、アクセス可否判定部３１０での判定に使用するアクセス領域番号２２１がバスマスタ１により不正に付与されてしまうと、結果としてセキュア処理ごとの専用領域を確保することができなくなる。そのため、本実施の形態におけるバスマスタ１は、処理内容識別部５００にて、ソフトウェアにより出力結果を不正に変更することができないハードウェアにより、処理内容と１対１に対応したアクセス領域番号２２１を出力することで、不正なアクセスができないようにする。アクセス領域番号２２１の生成は、上記のようにハードウェアにより実装することが望ましいが、セキュアなソフトウェア実行環境が整備されており、不正なソフトウェアで変更不可能であれば、セキュアなソフトウェア設定により生成しても良い。
【００４１】
（実施の形態４）
本発明の実施の形態４であるバスアクセス制御装置の動作を、図８と図９を用いて説明する。
【００４２】
ここでは、実施の形態１〜３であるバスアクセス制御装置の動作と異なる点を中心に説明する。
【００４３】
本実施の形態においては、バスマスタ２、バスマスタ３は共にプロセッサであり、各々がセキュアな処理を実行する。そのためのプログラム（コード）はそれぞれ暗号化された上でＦｌａｓｈメモリ６００に格納されており、前記セキュアな処理実行時には、それらの暗号化コードは復号された後、共有メモリ上にロードされる場合、バスマスタ２用のコードはバスマスタ２のみが読み出し可能な領域へ、バスマスタ３用のコードはバスマスタ３のみが読み出し可能であることが望ましい。以下、それを実現するための仕組みを説明する。
【００４４】
バスマスタ１は平文データを暗号化して転送する、もしくは暗号化データやコードを復号して転送する暗復号ＤＭＡコントローラ（ＤＭＡＣ）である。バスマスタ１（暗復号ＤＭＡＣ）はバスマスタ２から設定可能な復号時に使用する鍵を指定するレジスタや、復号後のデータ転送先アドレスを設定するレジスタを少なくとも有し、さらにバスマスタ１（暗復号ＤＭＡＣ）はバスマスタ２より設定された復号鍵と１対１に対応した領域番号を生成する回路を有し、バスマスタ２からの指示により、Ｆｌａｓｈメモリ６００に格納されているバスマスタ２用の暗号化コード（コード１）、バスマスタ３用の暗号化コード（コード２）を復号後、バスマスタ２から設定された転送先アドレスへ復号後の平文コードを転送するためのアクセス要求２１１を出力する。アクセス要求２１１を出力するのと同時に領域番号生成回路６１０が生成した領域番号をアクセス領域番号２２１として出力する。領域番号生成回路６１０の例としては、復号鍵の予め定められた位置に埋め込まれている領域番号を抜き出して出力する回路などが考えられる。
【００４５】
なお、本例では復号鍵と１対１に対応した領域番号としたが、暗号演算手段が複数実装されている場合は、暗号演算手段と１対１に対応した領域番号であってもよい。
【００４６】
アクセス可否情報保持部３２０には、図９に示すように、領域毎にアクセス可能なバスマスタを示すマスタ識別情報とそのバスマスタに許可するアクセス種別と領域の開始アドレス、終了アドレスが含まれる。アクセス種別としては書込みのみ、もしくは読出しのみ、もしくは書込み、読出し両方などが考えられる。図９の例では、領域１（アドレス０ｘ８０００＿００００〜０ｘ８０ＦＦ＿ＦＦＦＦ）はバスマスタ１のみ書込み可能、バスマスタ２のみ読出し可能であり、領域２（アドレス０ｘ８２００＿００００〜８２ＦＦ＿ＦＦＦＦ）はバスマスタ１のみ書込み可能、バスマスタ３のみ読出し可能な領域を意味する。アクセス可否判定部３１０は、マスタ識別情報４１０とアクセス領域番号２２０とアクセス要求２１０に含まれるアクセス先のアドレス情報と、アクセス可否情報保持部３２０に保持されているアクセス可否情報に基づいて、バスマスタが要求するアクセス先にアクセス可能であるか否かを判定し、アクセス可否判定結果３３０をメモリＩＦ部３４０へ出力する。
【００４７】
以上により、バスマスタ２のセキュアプログラム専用領域として、バスマスタ１（暗復号ＤＭＡＣ）のみが書込み可能で、バスマスタ２のみが読出し可能な領域を確保でき、さらにバスマスタ３のセキュアプログラム専用領域として、バスマスタ１（暗復号ＤＭＡＣ）のみが書込み可能で、バスマスタ３のみが読出し可能な領域を確保することができる。つまり、Ｆｌａｓｈメモリ６００からバスマスタ２およびバスマスタ３へセキュアプログラムを安全に受け渡すことができるため、不正な解析を防止することが可能となる。具体的には、バスマスタ１（暗復号ＤＭＡＣ）を不正に起動して、バスマスタ３用暗号化コード（コード２）をバスマスタ２セキュアプログラム領域に転送し、本来、コード２を読み出すことができないバスマスタ２でコード２を読み出して解析しようと試みた場合、復号鍵としてコード２用の鍵を指定すると、バスマスタ３用暗号化コードは正しく復号されるが、その復号データを共有メモリ３５０へ書き込むためのアクセス要求を発行する際に、コード２用の鍵と１対１に対応した領域２をアクセス領域番号として出力するため、アクセス要求２１１として領域１のアドレスを指定して領域１へ書き込もうとしてもアクセス可否判定部３１０で、アクセス領域番号と転送先アドレスが整合取れないためアクセス不許可となる。復号鍵としてコード１用の鍵を指定すると、領域１への書き込みは許可されるが、バスマスタ３用暗号化コードを正しく復号することができない。
【００４８】
さらに、メモリＩＦ部３４０は復号されたセキュアコードにバス暗号をかけて共有メモリ３５０へ書込み、共有メモリ３５０からセキュアコードを読み出すときは復号する機能を含むことで、共有メモリへの入出力バスを不正に観測されることにより、セキュリティが低下することを防ぐことができる。
【００４９】
次に、本実施の形態におけるバスアクセス制御装置１００内のバスマスタ１〜３から共有メモリ３５０へアクセス要求が行われた場合のアクセス制御処理について説明する。図１０は、アクセス制御処理の一例を示すフローチャートである。
【００５０】
ステップＳ１００１：バスマスタ２がバスマスタ１（暗復号ＤＭＡＣ）のＤＭＡパラメータを設定し、ＤＭＡ起動する。ＤＭＡパラメータには、復号に使用する鍵の指定や復号データの転送先アドレスなどが含まれる。
【００５１】
ステップＳ１００２：バスマスタ１（暗復号ＤＭＡＣ）にて、設定された復号鍵を選択し、復号回路へ出力する。それと共に領域番号生成回路６１０にて復号鍵の中に埋め込まれている領域番号を抜き出し、ＤＭＡ制御回路６２０へ出力する。
【００５２】
ステップＳ１００３：ＤＭＡ制御回路６２０はＦｌａｓｈメモリ６００から設定された復号鍵に対応した暗号化コードを読み出し、復号回路６３０へ出力する。復号回路６３０は暗号化コードを復号し、ＤＭＡ制御回路へ出力する。Ｆｌａｓｈメモリ６００から読み出す暗号化コードを指定する手段として、転送元アドレスを設定するレジスタを設けても良い。
【００５３】
ステップＳ１００３：バスマスタ１（暗復号ＤＭＡＣ）が復号後の平文データを転送するためのアクセス要求２１１を発行する。それと同時にアクセス先のアクセス領域番号２２１を出力する。
【００５４】
ステップＳ１００４〜Ｓ１００８は、ステップＳ６０２〜Ｓ６０６と同じである。
【００５５】
なお、本実施の形態においては、バスマスタ１を暗復号ＤＭＡＣとして説明したが、バスマスタ１は復号のみを行うＤＭＡＣでも良い。また、バスマスタ１はＪＴＡＧポートなどの外部ポートからＬＳＩ内部資源にアクセスするデバッガからのアクセス要求に対し、アクセスの可否を判定するデバッガ認証モジュールであっても良く、この場合、認証用の鍵と１対１で対応する領域番号を用いてセキュア領域へアクセスすることで、デバッガからのアクセス要求に対し、認証された領域にのみアクセス可能とすることが可能となる。認証用の鍵と1対1で対応する領域番号を生成する手段としては、認証に使用する鍵の一部に領域番号を含み、ハードウェアによりその領域番号を抜き出し、そのままアクセス領域番号として出力する手段などが考えられる。
【００５６】
（実施の形態５）
本発明の実施の形態５であるバスアクセス制御装置の動作を、図１１を用いて説明する。
【００５７】
ここでは、実施の形態１〜４であるバスアクセス制御装置の動作と異なる点を中心に説明する。
【００５８】
バスマスタ１は複数のセキュアなアプリケーションを実行するプロセッサであり、それらのコードは異なるアドレス空間、例えば異なる内蔵メモリ（不揮発メモリ）に格納される。バスマスタ１（プロセッサ）はフェッチ先判定回路にてコードのフェッチ先空間を複数管理し、コードをフェッチして実行する際に、そのコードのフェッチ先空間、つまりアプリケーションの種類と１対１に対応したアクセス領域番号２２１を出力する。フェッチ先空間の管理は、開始アドレス１〜終了アドレス１までは領域１、開始アドレス２〜終了アドレス２までは領域２とする方法や、フェッチ先の空間が物理的に異なる複数のメモリである場合、チップセレクト信号により判定する方法や、プロセッサコア７２０のプログラムカウンタの値により判定する方法などが考えられる。以上により、異なる領域のコード、つまり異なるアプリケーションのコードと１対１に対応した専用領域を共有メモリ上に確保することが可能となる。なお、内蔵メモリには、アプリケーションのコード全てを格納するのではなく、アプリケーションへの移行シーケンス（移行のきっかけ）のみを格納し、対応する共有メモリ上の専用領域にアプリケーションの本体が格納されていても良い。そうすることで、内蔵メモリ（不揮発メモリ）の容量を削減することが可能となる。
【００５９】
次に、本実施の形態におけるバスアクセス制御装置１００内のバスマスタ１〜３から共有メモリ３５０へアクセス要求が行われた場合のアクセス制御処理について説明する。図１２は、アクセス制御処理の一例を示すフローチャートである。
【００６０】
ステップＳ１２０１：バスマスタ１（プロセッサ）が内蔵メモリ１もしくは内蔵メモリ２からコードをフェッチする。
【００６１】
ステップＳ１２０２：フェッチ先判定回路７１０にて、プロセッサコア７２０が実行するコードのフェッチ先を判定する。
【００６２】
ステップＳ１２０３：バスマスタ１（プロセッサコア７２０）がアクセス要求２１１を発行するのと同時に実行するコードのフェッチ先に対応するアクセス領域番号２２１を出力する。
【００６３】
ステップＳ１２０４〜Ｓ１２０８は、ステップＳ６０２〜Ｓ６０６と同じである。
【００６４】
（実施の形態６）
本発明の実施の形態５であるバスアクセス制御装置の動作を、図１３を用いて説明する。ここでは、実施の形態１〜４であるバスアクセス制御装置の動作と異なる点を中心に説明する。
【００６５】
制御マスタ８００はソフトウェアを実行可能なプロセッサであり、そのスレーブであるバスマスタ１やバスマスタ２、そして共有メモリ３５０に対してバスを介してアクセスすることができる。この制御マスタ８００は複数の動作モード（モード１、モード２、モード３）を持ち、動作モードの情報は動作モード識別部８１０で管理されている。このモードはセキュア強度の高低に応じてレベル付けされており、モード１が必要なセキュア強度が最高の処理が実行されるモードであり、モード２はモード１に次いで高く、モード３は通常の実行モード（最低）となる。制御マスタ８００が各スレーブにアクセスする際には、アクセス要求８２０と同時に、その実行モードがモード伝達信号８３０を介して伝達される。
【００６６】
バスマスタ１は、制御マスタ８００の制御に従って動作し、そのスレーブである共有メモリ３５０に対してアクセスを行う。その際、バスマスタ１では、制御マスタ８００のいずれの動作モードで制御されているかを制御された際の前記モード伝達信号８３０の値を制御マスタ識別部９０１で保持することで管理している。そして、共有メモリ３５０に対してアクセス要求２１１を出力すると同時に、制御マスタ識別部９０１に保持された値を制御マスタ識別番号９１１として出力する。このような機構はバスマスタ２においても同様に実現されている。
【００６７】
アクセス制御部３００内部にあるアクセス可否情報保持部３２０には、図１４にあるようなアクセス可否情報が保持されている。図１４の例では、領域１（アドレス０ｘ８０００＿００００〜０ｘ８０ＦＦ＿ＦＦＦＦ）は動作モード１の制御マスタ８００による直接アクセスのみリード・ライト可能であり、領域２（アドレス０ｘ８２００＿００００〜８２ＦＦ＿ＦＦＦＦ）は動作モード１または２の制御マスタ８００による直接アクセス、動作モード１または２の制御マスタ８００に制御されたバスマスタ１、または動作モード１の制御マスタ８００に制御されたバスマスタ２のみアクセス可能であることを示している。動作モード３ではこれらのセキュアな領域に対してアクセスすることはできない。図１４の例では、領域１には最も高いセキュリティ強度でソフトウェアが実行できる動作モード１からのみアクセスできるようになっているため、最も高い秘匿性が要求される情報を格納することができ、動作モード１または２からのみアクセスできる領域２には、次いで秘匿性の高い情報を格納することができる。
【００６８】
以上のように、制御マスター８００で実行されるソフトウェアのセキュリティ性に応じてアクセス権限を可変にし、かつ制御マスター８００に制御されたバスマスタ１、バスマスタ２がその属性を継承するようにできることで、共有メモリに必要なセキュリティ強度の異なる複数の領域を設けることが可能となる。
【００６９】
（実施の形態７）
本発明の実施の形態７であるバスアクセス制御装置の動作を、図１５を用いて説明する。ここでは、実施の形態６であるバスアクセス制御装置の動作と異なる点を中心に説明する。
【００７０】
制御マスタ８０１、８０２、８０３はソフトウェアを実行可能なプロセッサであり、そのスレーブであるバスマスタ１やバスマスタ２、そして共有メモリ３５０に対してバスを介してアクセスすることができる。バスマスタ１、バスマスタ２は、制御マスタ８０１、８０２、８０３の制御に従って動作し、そのスレーブである共有メモリ３５０に対してアクセスを行う。本実施の形態では便宜のため、制御マスタ８０１、８０２、８０３をマスタに持つ上位のバスをバス１と呼び、バスマスタ１、バスマスタ２、さらにバス１をマスタに持つ下位のバスをバス２と呼ぶ。
【００７１】
バス１マスタ識別部１０００では、バス１のマスタが制御マスタ８０１、８０２、８０３のうちいずれかであるかを識別し、それらに対応した値をバス１マスタ識別信号１０１０によって伝達する。バスマスタ１では制御マスタ８０１、８０２、８０３によって制御される際、どの制御マスタによって制御されているかを制御された際の前記バス１マスタ識別信号１０１０の値を制御マスタ識別部９０１で保持することで管理している。そして、共有メモリ３５０に対してアクセス要求２１１を出力すると同時に、制御マスタ識別部９０１に保持された値を制御マスタ識別番号９１１として出力する。このような機構はバスマスタ２においても同様に実現されている。
【００７２】
アクセス制御部３００内部にあるアクセス可否情報保持部３２０には、図１６にあるようなアクセス可否情報が保持されている。図１６の例では、領域１（アドレス０ｘ８０００＿００００〜０ｘ８０ＦＦ＿ＦＦＦＦ）は制御マスタ８０１による直接アクセスのみリード・ライト可能であり、領域２（アドレス０ｘ８２００＿００００〜８２ＦＦ＿ＦＦＦＦ）は制御マスタ８０２による直接アクセスまたは制御マスタ８０２によって制御されたバスマスタ１、バスマスタ２によってのみアクセス可能である。制御マスタ８０３からは直接アクセスまたはバスマスタ１、バスマスタ２を経由したアクセスのいずれも領域１、２に対してアクセスすることができない。
【００７３】
以上のように、いずれの制御マスタのソフトウェアによって制御されているかをバスマスタ１、２がアクセス毎に属性として付加することで、共有メモリ３５０に各制御マスタに属した複数の専用領域を設けることが可能になる。
【００７４】
なお本実施の形態では、各制御マスタ毎に専用の領域を共有メモリ上に確保したが、これらの制御マスタでデータを共有する必要がある場合には、どちらもアクセス権限を所有する領域を設けていてもよい。
【００７５】
なお本実施の形態では、図１６にあるように制御マスタ識別情報とバスマスタ識別情報の両方でアクセス可否情報を定義したが、制御マスタ識別情報だけで本情報を定義していても良い。
【００７６】
（実施の形態８）
本発明の実施の形態８であるバスアクセス制御装置の動作を、図１７を用いて説明する。
【００７７】
制御マスタ８００は、ソフトウェアを実行可能なプロセッサであり、なおかつ複数のプロセスが切り替わりながら実行されている。プロセス識別部８４０は、実行中のプロセスに対応した番号が保持されており、制御マスタ８００がそのスレーブであるバスマスタ１やバスマスタ２、共有メモリ３５０にアクセスする際には、アクセス要求８２０と同時にプロセス識別部が保持している値をプロセス番号伝達信号８５０を介して出力する。
【００７８】
バスマスタ１では、制御マスタ８００によって制御される際、どのプロセスによって制御されているかを、制御された際の前記プロセス番号伝達信号８５０の値を制御マスタ識別部９０１で保持することで管理している。そして、共有メモリ３５０に対してアクセス要求２１１を出力すると同時に、制御マスタ識別部９０１に保持された値を制御マスタ識別番号９１１として出力する。このような機構はバスマスタ２においても同様に実現されている。
【００７９】
アクセス制御部３００内部にあるマスタ調停情報保持部１１１０には、図１８にあるようなマスタ調停情報が保持されている。図１８の例では、プロセス番号４に属する共有メモリへのアクセスが最も優先度が高く設定されており、その中でもバス１からのアクセス（制御マスターからの直接アクセス）が最も高く、マスタ２、マスタ１のアクセスの順に優先度が割り当てられている。その次には、プロセス番号６に属したアクセス、プロセス番号１に属したアクセスの順になっており、プロセス番号６に属したアクセスであればマスタ１，マスタ２，バス１は対等に調停される。（プロセス１に関しても同様）上記プロセス番号以外のプロセスは、最下位の調停順位に設定されている。
【００８０】
アクセス調停部１１００では、３つのマスタ（バスマスタ１、バスマスタ２、バス１）の中から、マスタ調停情報保持部１１１０の情報に従って、どのマスタからのアクセスを優先して共有メモリ３５０にアクセスさせるかを決定する。
【００８１】
昨今のプロセッサでは、複数のプロセスが切り替わりながら実行する場合、ＯＳ（オペレーティングシステム）の機能として、プロセス毎に実行の優先度を付けられている場合が多い。例えば、マルチメディア系の処理のように、データ量が多く高いリアルタイム性が求められる場合には優先度が高く、低速のシリアル通信のような処理を行う場合には優先度が低く設定されることが多い。図１９に示しているマスタ調停情報もこのＯＳによる優先度の設定と連動しておけば、複数のマスタからメモリアクセスが同時に発生しても、そのアクセスが属するプロセス番号に応じて優先度を設定できるため、必ず制御マスタ８００で優先させたい処理を早期に完結させることができる。
【００８２】
なお、実施の形態１〜５ではアクセス領域番号という言葉を使用したが、いずれもバスマスタでの処理内容に応じた番号（実施の形態１／２の場合はアプリに応じた番号、実施例３ではセキュア処理に応じた番号、実施の形態４では復号動作に応じた番号、実施の形態５ではフェッチ先に応じた番号）である。したがって、転送毎に転送データの内容を識別することが可能な本番号は、実施の形態８で制御マスタ識別番号をバスの調停に応用したのと同様の手法で、セキュリティの確保を目的としたアクセス制限以外の用途に使用することも可能である。
【産業上の利用可能性】
【００８３】
本発明にかかるバスアクセス制御装置を用いれば、あるバスマスタが複数のセキュア処理、例えば、複数のセキュアアプリケーション実行や、複数のセキュアプログラムの復号処理などを行う場合、それらの複数のセキュア処理に対応した専用領域を共有メモリ上に確保することが可能となる。そのため、秘匿処理を行うデジタル機器全般のセキュリティ向上ならびにメモリ共有化によるシステムコスト削減に利用することができる。
【００８４】
また、本発明にかかるバスアクセス制御装置を用いれば、複数種類の転送が混在した形でのアクセスが動的に切り替わりつつ共有メモリに対して発生する場合に、その種類に応じてバストランザクション毎に調停順位を的確に決定できる。そのため、処理が多様になりつつあるデジタル機器での性能保証ならびにメモリ共有化によるシステムコスト削減に利用することができる。
【図面の簡単な説明】
【００８５】
【図１】本発明の実施の形態１の構成図
【図２】本発明の実施の形態１のアクセス可否情報例を示す図
【図３】本発明の実施の形態１におけるアクセス制御処理のフローチャート一例を示す図
【図４】本発明の実施の形態２の構成図
【図５】本発明の実施の形態２のアクセス可否情報例を示す図
【図６】本発明の実施の形態２におけるアクセス制御処理のフローチャート一例を示す図
【図７】本発明の実施の形態３の構成図
【図８】本発明の実施の形態４の構成図
【図９】本発明の実施の形態４のアクセス可否情報例を示す図
【図１０】本発明の実施の形態４におけるアクセス制御処理のフローチャート一例を示す図
【図１１】本発明の実施の形態５の構成図
【図１２】本発明の実施の形態５におけるアクセス制御処理のフローチャート一例を示す図
【図１３】本発明の実施の形態６の構成図
【図１４】本発明の実施の形態６のアクセス可否情報例を示す図
【図１５】本発明の実施の形態７の構成図
【図１６】本発明の実施の形態７のアクセス可否情報例を示す図
【図１７】本発明の実施の形態８の構成図
【図１８】本発明の実施の形態７のマスタ調停情報例を示す図
【図１９】従来のバスアクセス制御装置（特許文献１）の構成図
【図２０】従来のバスアクセス制御装置（特許文献１）のアクセス可否情報例を示す図
【図２１】従来のバスアクセス制御装置（特許文献２、非特許文献１）の構成図
【図２２】従来のバスアクセス制御装置（特許文献２、非特許文献１）のマスタ調停情報例を示す図
【符号の説明】
【００８６】
１００    バスアクセス制御装置
２００    バスマスタ
２０１    バスマスタ１
２０２    バスマスタ２
２０３    バスマスタ３
２１０    アクセス制御部に入力されるアクセス要求
２１１    バスマスタ１からのアクセス要求
２１２    バスマスタ２からのアクセス要求
２１３    バスマスタ３からのアクセス要求
２２０    アクセス制御部に入力されるアクセス領域番号
２２１    バスマスタ１からのアクセス領域番号
３００    アクセス制御部
３１０    アクセス可否判定部
３２０    アクセス可否情報保持部
３３０    アクセス可否判定結果
３４０    メモリＩＦ部
３５０    メモリ
４００    バスマスタ識別部
４１０    バスマスタ識別情報
５００    バスマスタの処理内容識別部
６００    Ｆｌａｓｈメモリ
６１０    領域番号生成回路
６２０    暗復号ＤＭＡ制御回路
６３０    復号回路
７００    内蔵メモリ１
７０１    内蔵メモリ２
７１０    フェッチ先判定回路
７２０    プロセッサコア
８００    制御マスタ
８０１    制御マスタ１
８０２    制御マスタ２
８０３    制御マスタ３
８１０    動作モード識別部
８２０    制御マスタからのアクセス要求
８２１    制御マスタ１からのアクセス要求
８２２    制御マスタ２からのアクセス要求
８２３    制御マスタ３からのアクセス要求
８３０    制御マスタからのモード伝達信号
８４０    プロセス識別部
８５０    プロセス番号伝達信号
９０１    バスマスタ１の制御マスタ識別部
９０２    バスマスタ２の制御マスタ識別部
９１０    アクセス制御部に入力される制御マスタ識別番号
９１１    バスマスタ１からの制御マスタ識別番号
９１２    バスマスタ２からの制御マスタ識別番号
１０００    バス１のマスタ識別部
１０１０    バス１のマスタ識別信号
１１００    アクセス調停部
１１１０    マスタ調停情報保持部
【図１】
2007109053.tif 000003
【図２】
2007109053.tif 000004
【図３】
2007109053.tif 000005
【図４】
2007109053.tif 000006
【図５】
2007109053.tif 000007
【図６】
2007109053.tif 000008
【図７】
2007109053.tif 000009
【図８】
2007109053.tif 000010
【図９】
2007109053.tif 000011
【図１０】
2007109053.tif 000012
【図１１】
2007109053.tif 000013
【図１２】
2007109053.tif 000014
【図１３】
2007109053.tif 000015
【図１４】
2007109053.tif 000016
【図１５】
2007109053.tif 000017
【図１６】
2007109053.tif 000018
【図１７】
2007109053.tif 000019
【図１８】
2007109053.tif 000020
【図１９】
2007109053.tif 000021
【図２０】
2007109053.tif 000022
【図２１】
2007109053.tif 000023
【図２２】
2007109053.tif 000024