(57)【要約】【課題】不当なソフトウェアの実行を防止する。【解決手段】本実施形態に係るプロセッシングデバイスは、第１及び第２のプロセッサと、メモリと、コントローラとを含む。第１のプロセッサは、第２のプロセッサに対して、ソフトウェアを配置しているメモリのメモリ領域に対するフェッチ許可を要求する。第２のプロセッサは、第１のプロセッサによって指定されたメモリ領域に格納されているソフトウェアを検証し、正当と判断した場合に、メモリ領域を指定する領域情報と第１のプロセッサによるフェッチを許可することを示すフェッチ情報とをコントローラに通知する。コントローラは、第２のプロセッサから領域情報とフェッチ情報とを受けるまで、メモリ領域に対するフェッチを不可とするための制御を行い、領域情報とフェッチ情報とを受けた場合に、第１のプロセッサによるフェッチを許可するための制御を行う。第１のプロセッサは、第２のプロセッサによってメモリ領域に対するフェッチが許可された場合に、ソフトウェアをフェッチする。【選択図】  図１
2020042341.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセッサと、
前記第１のプロセッサによってフェッチされるソフトウェアを格納するためのメモリと、
前記ソフトウェアの検証を行う第２のプロセッサと、
前記第２のプロセッサからの要求に基づいて、前記第１のプロセッサによる前記フェッチを制御するコントローラと、
を具備し、
前記第１のプロセッサは、前記第２のプロセッサに対して、前記ソフトウェアを配置している前記メモリのメモリ領域に対するフェッチ許可を要求し、
前記第２のプロセッサは、前記第１のプロセッサによって指定された前記メモリ領域に格納されている前記ソフトウェアに対する前記検証の結果が正当と判断された場合に、前記メモリ領域を指定する領域情報と前記第１のプロセッサによる前記フェッチを許可することを示すフェッチ情報とを前記コントローラに通知し、
前記コントローラは、前記第２のプロセッサから前記領域情報と前記フェッチ情報とを受けるまで、前記フェッチを不可とするための制御を行い、前記領域情報と前記フェッチ情報とを受けた場合に、前記第１のプロセッサによる前記フェッチを許可するための制御を行い、
前記第１のプロセッサは、前記第２のプロセッサによって前記メモリ領域に対する前記フェッチが許可された場合に、前記ソフトウェアをフェッチする、
プロセッシングデバイス。
【請求項２】
前記コントローラは、前記メモリ領域に対する前記フェッチを許可している場合に、前記メモリ領域に対するライト処理を禁止する、請求項１のプロセッシングデバイス。
【請求項３】
前記第１のプロセッサは、前記ソフトウェアの変更を前記第２のプロセッサへ要求し、
前記第２のプロセッサは、前記メモリ領域内の変更領域を指定する変更領域情報と、前記変更領域に格納されている変更対象ソフトウェアの変更を許可するデバイスを示すデバイスＩＤと、前記変更領域に対する前記変更を許可することを示すライト情報とを、前記コントローラに通知し、
前記コントローラは、前記第２のプロセッサから前記変更領域情報と前記ライト情報とを受けるまで、前記変更領域に対するライト処理を不可とする制御を行い、前記変更領域情報と前記ライト情報とを受けた場合に、前記変更領域に対する前記ライト処理を許可する制御を行い、
前記デバイスは、前記ライト処理が許可された場合に、前記変更領域に格納されている前記変更対象ソフトウェアの前記変更を行い、
前記第２のプロセッサは、前記変更領域に格納された変更後のソフトウェア要素の検証を行い、前記変更後のソフトウェア要素が正当である場合に、前記変更領域に対する前記ライト処理の許可を取り消す、
請求項１又は請求項２のプロセッシングデバイス。
【請求項４】
前記コントローラは、前記デバイスが前記変更領域に対して前記ライト処理を行っている間、前記変更領域に対するフェッチを不可とする制御を行い、
前記第２のプロセッサは、前記ライト処理の許可を取り消した場合に、前記変更領域に対する前記フェッチを許可する、
請求項３のプロセッシングデバイス。
【請求項５】
第１のプロセッサと、
前記第１のプロセッサを含むデバイスの起動時にロードされたソフトウェアを格納するためのメモリと、
前記ソフトウェアの検証を行う第２のプロセッサと、
前記第２のプロセッサからの要求に基づいて、前記第１のプロセッサによる前記ソフトウェアのフェッチを制御するコントローラと、
を具備し、
前記第１のプロセッサは、前記第２のプロセッサに対して、前記ソフトウェアを配置している前記メモリのメモリ領域に対するフェッチ許可を要求し、
前記第２のプロセッサは、前記メモリ領域に格納されている前記ソフトウェアに対する前記検証の結果が正当と判断された場合に、前記メモリ領域を指定する領域情報と前記フェッチを許可することを示すフェッチ情報とを前記コントローラに通知し、
前記コントローラは、前記第２のプロセッサから前記領域情報と前記フェッチ情報とを受けるまで、前記フェッチを不可とするための制御を行い、前記領域情報と前記フェッチ情報とを受けた場合に、前記フェッチを許可するための制御を行い、
前記第１のプロセッサは、前記第２のプロセッサによって前記メモリ領域に対して前記フェッチが許可された場合に、前記ソフトウェアをフェッチする、
プロセッシングデバイス。
【請求項６】
前記第２のプロセッサは、前記第２のプロセッサのみが設定可能な記憶回路へ、前記領域情報と前記フェッチ情報とを格納し、
前記コントローラは、前記記憶回路から前記領域情報と前記フェッチ情報とを読み出す、
請求項１乃至請求項５のいずれか１項のプロセッシングデバイス。
【請求項７】
プロセッシングデバイスで実行されるソフトウェアの実行を制御する方法において、
第１のプロセッサが、第２のプロセッサに対して、前記ソフトウェアを配置しているメモリのメモリ領域に対するフェッチ許可を要求することと、
前記第２のプロセッサが、前記第１のプロセッサによって指定された前記メモリ領域に格納されている前記ソフトウェアに対する検証を実行し、前記検証の結果が正当と判断された場合に、前記メモリ領域を指定する領域情報と前記第１のプロセッサによるフェッチを許可することを示すフェッチ情報とをコントローラに通知することと、
前記コントローラが、前記第２のプロセッサから前記領域情報と前記フェッチ情報とを受けるまで、前記フェッチを不可とするための制御を行い、前記領域情報と前記フェッチ情報とを受けた場合に、前記第１のプロセッサによる前記フェッチを許可するための制御を行い、
前記第１のプロセッサが、前記第２のプロセッサによって前記メモリ領域に対する前記フェッチが許可された場合に、前記ソフトウェアをフェッチすることと、
を具備する、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、プロセッシングデバイス及びソフトウェア実行制御方法に関する。
【背景技術】
【０００２】
マルチプロセッサシステムは、複数のプロセッサを備える。複数のプロセッサは、セキュリティＣＰＵ（Central Processing Unit）と、さらに複数のＣＰＵを含むとしてもよい。セキュリティＣＰＵは、例えば、複数のＣＰＵで用いられるファームウェアの検証を実行する。複数のＣＰＵは、検証されたファームウェアを実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−２３５３２６号公報
【特許文献２】特許第５４８２０５９号公報
【特許文献３】米国特許第６５６４３２６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本実施形態は、不当なソフトウェアの実行を防止するプロセッシングデバイス及びソフトウェア実行制御方法を提供する。
【課題を解決するための手段】
【０００５】
本実施形態に係るプロセッシングデバイスは、第１のプロセッサと、メモリと、第２のプロセッサと、コントローラとを含む。メモリは、第１のプロセッサによってフェッチされるソフトウェアを格納する。第２のプロセッサは、ソフトウェアの検証を行う。コントローラは、第２のプロセッサからの要求に基づいて、第１のプロセッサによるフェッチを制御する。第１のプロセッサは、第２のプロセッサに対して、ソフトウェアを配置しているメモリのメモリ領域に対するフェッチ許可を要求する。第２のプロセッサは、第１のプロセッサによって指定されたメモリ領域に格納されているソフトウェアに対する検証の結果が正当と判断された場合に、メモリ領域を指定する領域情報と第１のプロセッサによるフェッチを許可することを示すフェッチ情報とをコントローラに通知する。コントローラは、第２のプロセッサから領域情報とフェッチ情報とを受けるまで、フェッチを不可とするための制御を行い、領域情報とフェッチ情報とを受けた場合に、第１のプロセッサによるフェッチを許可するための制御を行う。第１のプロセッサは、第２のプロセッサによってメモリ領域に対するフェッチが許可された場合に、ソフトウェアをフェッチする。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態に係るプロセッシングデバイスの構成の一例を示すブロック図。
【図２】セキュリティプロセッサにより設定されるアクセス・ディセーブル・レジスタの構成の一例を示すブロック図。
【図３】第２の実施形態に係るプロセッシングデバイスの構成の一例を示すブロック図。
【図４】セキュリティプロセッサ及びプロセッサにより設定されるレジスタの構成の一例を示すブロック図。
【図５】第２の実施形態に係るプロセッシングデバイスによるファームウェアのフェッチ処理の一例を示すフローチャート。
【図６】フェッチ処理を実行するプロセッシングデバイスの各構成要素の連携の一例を示すブロック図。
【図７】第２の実施形態に係るプロセッシングデバイスによるファームウェアの一部変更の一例を示すフローチャート。
【図８】ファームウェアの一部変更を実行するプロセッシングデバイスの各構成要素の連携の一例を示すブロック図。
【図９】アクセス・ディセーブル・レジスタの設定の一例を示すブロック図。
【図１０】ライト・プロテクト・レジスタの設定の一例を示すブロック図。
【図１１】完了レジスタの設定の一例を示すブロック図。
【発明を実施するための形態】
【０００７】
以下に、本実施形態について図面を参照して説明する。なお、以下の説明において、同一又は実質的に同一の機能を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。本実施形態は、技術的思想を具体化するための装置及び方法を例示するものであって、本実施形態の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。本実施形態の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【０００８】
本実施形態は、ソフトウェアの完全性を確保するプロセッシングデバイスに関する。
【０００９】
本実施形態において、検証対象のソフトウェアはファームウェアの場合を例として説明するが、検証対象のソフトウェアは例えばオペレーティングシステム（ＯＳ）、アプリケーションソフトウェアなどでもよく、ソフトウェアの種類は限定されない。
【００１０】
本実施形態において、ソフトウェアとは、例えば、命令コード、データ、又は、命令コードとデータとの組み合わせ、を含むとしてもよい。本実施形態において、ソフトウェアに含まれるデータは、例えば、命令コードと同様に、リード・オンリー・データとする。
【００１１】
プロセッシングデバイスは、例えばマイクロコンピュータなどのプロセッサを搭載する組み込みデバイス又はシステムでもよい。プロセッシングデバイスは、マルチプロセッサシステム、又は、メモリシステムでもよい。プロセッシングデバイスはネットワークへ接続されてもよい。プロセッシングデバイスとホストコンピュータとをネットワーク経由で通信可能に接続することにより、ホストコンピュータからプロセッシングデバイスへ高度なサービスを提供可能である。
プロセッシングデバイスは、特定の機能を実現するためのファームウェアに加えて、秘匿されるべきデータを格納する場合がある。秘匿されるべきデータとしては、例えば、プロセッシングデバイスを使用するユーザに関する個人情報、財産情報、ユーザ又は団体の情報資産などがある。悪意を持つ第三者によってプロセッシングデバイスが本来の用途とは異なる別の用途に悪用されることは、防止されるべきである。高性能なプロセッサを実装したプロセッシングデバイスは高度なサービスを提供するために有用であるが、悪用された場合にユーザ、サービス提供者、デバイス製造者、社会全般に対する脅威となる。このような背景から、プロセッサを組み込んだプロセッシングデバイスには悪意を持つ者からの攻撃に対する耐性が求められる。
【００１２】
悪意を持つ第三者によるファームウェアの改竄を検出する目的で、プロセッシングデバイスの起動時にファームウェアに予め付与されている電子署名の検証を行うセキュアブートが用いられる。セキュアブートを用いることで、プロセッシングデバイスは、例えば、プロセッシングデバイスの起動時にロードされたファームウェアを検証し、予め署名された信頼できるファームウェアのみを実行可能である。
【００１３】
プロセッシングデバイスの健全性を保つためには、セキュアブートに加えて、さらに他の手段を用いることが好ましい。例えば、プロセッシングデバイスの動作中に、各プロセッサで実行中のファームウェアが改竄されることは防止すべきである。セキュアブートのみでは、このようなプロセッサで実行中のファームウェアの改竄を検出することが困難な場合がある。プロセッサで実行中のファームウェアを改竄する手法としては、例えば、ネットワーク経由で行われるバッファオーバーフロー攻撃などがある。
【００１４】
プロセッサによるメモリ空間へのアクセスを制御する機構としてＭＭＵ（Memory Management Unit）又はＭＰＵ（Memory Protection Unit）が利用される。ＭＭＵ又はＭＰＵは、これらが実装されるプロセッサによるメモリへのアクセスを制御する仕組みである。したがって、ＭＭＵ又はＭＰＵは、当該ＭＭＵ又はＭＰＵを実装しているプロセッサではない他のプロセッサの動作を制御しない。
【００１５】
例えば、特定のプロセッサのファームウェアがＲＡＭ（Random Access Memory）などのメモリにロードされる場合、仮にそのプロセッサが誤動作した場合においても、メモリに配置されているファームウェアの命令コード及びリード・オンリー・データが破壊されないように、ＭＭＵ又はＭＰＵは、ライトプロテクションを設定する。
【００１６】
上記のように、ＭＭＵ又はＭＰＵは、このＭＭＵ又はＭＰＵを搭載するプロセッサとは異なるマスタデバイスを制御しない。ここで、マスタデバイスとは、例えば、ファームウェアが配置されるメモリ領域をアクセスするデバイスであるとする。本実施形態において、マスタデバイスは、それぞれ固有のマスタデバイスＩＤで識別される。
仮に、特定のファームウェアを実行する特定のプロセッサのＭＭＵが、特定のファームウェアを配置したＲＡＭ上の領域をライトプロテクト設定によって保護したとする。この場合、ＲＡＭ上の領域に対するライトプロテクションは、特定のプロセッサにのみ有効であり、他のマスタデバイスに対して影響しない。したがって、特定のプロセッサが保護すべきＲＡＭ上の領域に対してライトプロテクトを設定しても、特定のプロセッサではない他のマスタデバイスによって保護すべきＲＡＭ上の領域が変更される可能性がある。
これに対して、本実施形態に係るプロセッシングデバイスでは、特定のプロセッサのみならず他のマスタデバイスも、保護すべきＲＡＭ上の領域に格納されているファームウェアを変更不可とする。さらに、本実施形態に係るプロセッシングデバイスでは、必要に応じて変更不可の状態を解除可能とする。
本実施形態において、ファームウェアの変更は、ファームウェアの全部の変更、一部の変更、書き換え、置き換え、更新、バージョンアップなどを含むとする。
【００１７】
プロセッシングデバイスにおいて、少ないメモリ資源を有効に活用するために仮想記憶を導入し、ある物理アドレス上のファームウェアの命令コード又はデータを必要に応じて変更する場合がある。仮想記憶における置き換え操作は、そのファームウェアの置き換えを実行するプロセッサ自身又はそのプロセッサが操作するＤＭＡＣ（Direct Memory Access Controller）などのマスタデバイスによって実現される。
【００１８】
プロセッシングデバイスの起動後に変更されたファームウェアの完全性を確保するためには、変更が正当又は不当であるかを検出し、不当なファームウェアがプロセッサにフェッチされることを防止する必要がある。
【００１９】
本実施形態では、ファームウェアの完全性を確保するために、セキュリティプロセッサがプロセッサによるファームウェアのフェッチを許可又は不可とする判断を行い、監視部が判断結果に応じてファームウェアのフェッチを許可又は不可とするための制御を行う。
【００２０】
以下で説明する第１の実施形態では、セキュリティプロセッサが、プロセッシングデバイスの起動時にロードされたファームウェアの検証を行い、監視部がその検証結果に応じてそのファームウェアを実行するプロセッサのメモリアクセスを制御する。ファームウェアを実行するプロセッサからメモリへのアクセスとは、例えば、ファームウェアを実行するプロセッサからメモリへのライト処理と、プロセッサによるメモリに格納されているファームウェアのフェッチとを含む。第１の実施形態において、セキュリティプロセッサは、このセキュリティプロセッサで実行されるファームウェアの検証を、リード・オンリーの命令コードによって実行する。例えば、このセキュリティプロセッサで実行されるファームウェアの検証は、電子証明を用いた検証により行われてもよい。
【００２１】
第２の実施形態では、セキュリティプロセッサが、ファームウェアの変更実行時にファームウェアの変更部分の検証を行い、監視部がその検証結果に応じてその変更部分を実行するプロセッサのメモリアクセスを制御する。第２の実施形態において、ファームウェアの変更部分の検証は、電子証明を用いた検証により行われてもよい。
【００２２】
（第１の実施形態）
本実施形態は、プロセッシングデバイスの起動時にロードされたファームウェアの完全性確保に関する。本実施形態においては、例えば、セキュリティプロセッサで実行されるセキュリティファームウェアがセキュリティプロセッサによって検証され、その後に、セキュリティプロセッサではない他のプロセッサで実行されるファームウェアがセキュリティプロセッサによって検証される。
【００２３】
図１は、本実施形態に係るプロセッシングデバイス１の構成の一例を示すブロック図である。
【００２４】
プロセッシングデバイス１は、第１のメモリ２と、第２のメモリ３と、ＤＭＡＣ４，４ＳＰと、プロセッサＰ１〜Ｐｎと、セキュリティプロセッサＳＰと、バスコントローラ５と、メモリコントローラ６と、バス７とを備える。
【００２５】
第１のメモリ２と、第２のメモリ３と、ＤＭＡＣ４，４ＳＰと、プロセッサＰ１〜Ｐｎと、セキュリティプロセッサＳＰと、バスコントローラ５と、メモリコントローラ６とは、バス７を介して互いにデータ送受信可能に接続されている。
【００２６】
本実施形態において、ＤＭＡＣ４，４ＳＰ、バスコントローラ５、メモリコントローラ６は、例えば、電子回路によって構成されてもよい。また、ＤＭＡＣ４，４ＳＰ、バスコントローラ５、メモリコントローラ６は、例えば、コントローラ又はプロセッサがプログラムを実行することにより実現されてもよい。
【００２７】
本実施形態において、プロセッシングデバイス１の起動時に、セキュリティプロセッサＳＰによって利用される資源は、例えば、第１のメモリ２におけるセキュリティプロセッサＳＰ専用の領域２ＳＰ、第２のメモリ３におけるセキュリティプロセッサＳＰ専用の領域３ＳＰ、セキュリティプロセッサＳＰ専用のＤＭＡＣ４ＳＰ、バスコントローラ５におけるセキュリティプロセッサＳＰ専用のインタフェース５ＳＰ、メモリコントローラ６におけるセキュリティプロセッサＳＰ専用のインタフェース６ＳＰとする。
【００２８】
第１のメモリ２におけるセキュリティプロセッサＳＰ専用の領域２ＳＰ、第２のメモリ３におけるセキュリティプロセッサＳＰ専用の領域３ＳＰ、バスコントローラ５におけるセキュリティプロセッサＳＰ専用のインタフェース５ＳＰ、メモリコントローラ６におけるセキュリティプロセッサＳＰ専用のインタフェース６ＳＰは、セキュリティプロセッサＳＰ及びセキュリティプロセッサＳＰ専用のＤＭＡＣ４ＳＰのみによって使用可能であり、他の構成要素からは使用されないとする。
【００２９】
プロセッシングデバイス１の起動時に、セキュリティプロセッサＳＰは、専用のＤＭＡＣ４ＳＰを用いて、第１のメモリ２におけるセキュリティプロセッサＳＰ専用の領域２ＳＰから第２のメモリ３におけるセキュリティプロセッサＳＰ専用の領域３ＳＰへ、セキュリティファームウェア８ＳＰをロードする。
【００３０】
セキュリティプロセッサＳＰは、セキュリティファームウェア８ＳＰを検証し、検証結果が正当である場合に、第２のメモリ３における領域３ＳＰからセキュリティファームウェア８ＳＰをフェッチし、実行する。本実施形態において、セキュリティプロセッサＳＰを起動し、セキュリティファームウェア検証を実施するプログラムは、リード・オンリー・メモリに格納されており、書き換え不可とする。
【００３１】
上記のような手順でセキュリティプロセッサＳＰを起動することにより、セキュリティプロセッサＳＰが不当な処理を実行することを防止することができる。
【００３２】
第１のメモリ２は、例えば、ハードディスクドライブ、ＳＳＤ（Solid State Drive）などの不揮発性メモリであり、ファームウェア８を保持する。本実施形態において、プロセッシングデバイス１で実行されるファームウェア８は例示である。プロセッシングデバイス１では、ファームウェア８のみではなく様々なファームウェアを実行可能である。２以上のプロセッサが、同じファームウェアを実行してもよく、又は、それぞれ異なるファームウェアを実行してもよい。
【００３３】
第２のメモリ３は、例えば、ＲＡＭである。第２のメモリ３は、プロセッシングデバイス１の起動時にロードされ、プロセッサＰ１〜Ｐｎによってフェッチされるファームウェア８を一時的に保持する。この第２のメモリ３は、例えば、第１のメモリ２より高速にアクセス可能であり、プロセッサＰ１〜Ｐｎによって主記憶装置として利用される。
【００３４】
本実施形態において、プロセッサＰ１〜Ｐｎから第２のメモリ３への書き込み、及び、プロセッサＰ１〜ＰｎがＤＭＡＣ４を用いて第２のメモリ３へ書き込みを行うことを、ライト処理という。ライト処理としては、例えば、プロセッサＰ１〜Ｐｎから第２のメモリ３へのキャッシュアウトなどがある。
【００３５】
本実施形態において、ＤＭＡＣ４，４ＳＰが、例えば第１のメモリ２などの転送元デバイスから第２のメモリ３へ、例えばファームウェア８，８ＳＰの一部又は全部などを転送することを、データ転送という。このデータ転送は、例えば、ロードと表記する場合もある。なお、データ転送は、プロセッサＰ１〜Ｐｎではない他の構成要素によるライト処理と定義してもよい。換言すれば、データ転送は、ライト処理の一種と定義してもよい。
【００３６】
ＤＭＡＣ４は、プロセッサＰ１〜Ｐｎを介することなく、送信元と受信先との間のデータ転送を実現する。なお、ＤＭＡＣ４は、複数備えられ、複数のＤＭＡＣのうちデータ転送に利用されるＤＭＡＣがＤＭＡＣ・ＩＤで指定されてもよい。
【００３７】
プロセッサＰ１〜Ｐｎは、例えばＣＰＵである。各プロセッサＰ１〜Ｐｎのそれぞれは、ＭＭＵ９を備える。本実施形態では、プロセッシングデバイス１が複数のプロセッサＰ１〜Ｐｎを備えているが、プロセッシングデバイス１が備えるプロセッサの数は１以上であればよい。
【００３８】
以下では、各プロセッサＰ１〜Ｐｎで行われる同じ動作に関してプロセッサＰ１を用いて説明を行う。以下の説明は、複数のプロセッサＰ１〜Ｐｎがあたかも１つのプロセッサとして振舞うのではなく、以下の説明が複数のプロセッサＰ１〜Ｐｎのそれぞれで実現されることを意味する。
【００３９】
ＭＭＵ９は、プロセッサＰ１によるメモリアクセスを制御する。ＭＭＵ９は、例えば、仮想アドレスから物理アドレスへの変換、メモリプロテクト、キャッシュ制御などを行う。
【００４０】
本実施形態では、プロセッサＰ１においてＭＭＵ９が用いられる場合を例として説明するが、ＭＭＵ９に代えてＭＰＵが用いられてもよい。ＭＰＵは、例えば、ＭＭＵ９と同様にメモリプロテクトを実現するが、アドレス変換などの機能は備えなくてもよい。
【００４１】
プロセッサＰ１は、例えば、プロセッサＰ１に備えられているＭＭＵ９により、ファームウェア８の実行権を独自に設定し、管理する。
【００４２】
セキュリティプロセッサＳＰは、上述したように、例えば、セキュリティファームウェア８ＳＰを実行し、プロセッサＰ１によりフェッチされるファームウェア８の完全性の検証とその検証結果に基づく通知などの制御を実行する。
【００４３】
本実施形態においては、プロセッサＰ１及びセキュリティプロセッサＳＰは、他のプロセッサＰ２〜Ｐｎに備えられているＭＭＵ９の設定を変更不可であり、他のプロセッサＰ２〜ＰｎのＭＭＵ９によるファームウェア実行権を直接制御できなくてもよい。
【００４４】
セキュリティプロセッサＳＰは、メモリコントローラ６に備えられている監視部１０を用いることにより、間接的に、プロセッサＰ１で実行されるファームウェア８の実行権を制御する。監視部１０は、例えば、メモリコントローラ６の一部により実現されてもよく、監視用のコントローラによって実現されてもよい。
【００４５】
セキュリティプロセッサＳＰは、プロセッシングデバイス１の起動時に、第１のメモリ２から第２のメモリ３へロードされ、プロセッサＰ１にフェッチされる前のファームウェア８を検証する。これにより、第２のメモリ３のメモリ領域Ｅに配置されるファームウェア８に対する完全性を確保することができる。
【００４６】
バスコントローラ５は、送信元から送信先へのバス７経由のデータ転送を管理する。より具体的には、バスコントローラ５は、アクセス元からアクセス先へのアクセスを許可するか否かを、例えばＩＤなどに基づいて判断する。
【００４７】
メモリコントローラ６は、第１及び第２のメモリ２，３に対するアクセスを許可するか否かを管理する。本実施形態において、メモリコントローラ６は、バスコントローラ５と連携して動作する。メモリコントローラ６は、例えば、監視部１０とアクセス・ディセーブル・レジスタ１１とを備える。なお、この監視部１０とアクセス・ディセーブル・レジスタ１１とのうちの少なくとも一方は、メモリコントローラ６の外部に備えられてもよい。監視部１０とアクセス・ディセーブル・レジスタ１１とは、メモリコントローラ６のみではなく、バスコントローラ５からも利用可能としてもよい。
【００４８】
監視部１０は、セキュリティプロセッサＳＰからの要求に基づいて、第２のメモリ３の複数のメモリ領域を監視し、プロセッサＰ１によるファームウェア８のフェッチの制御を行う。例えば、監視部１０は、セキュリティプロセッサＳＰによって設定された第２のメモリ３の検証対象のメモリ領域Ｅに格納されているファームウェア８が検証されるまで、当該メモリ領域Ｅのファームウェア８に対するフェッチ処理を待ち状態とする。監視部１０は、例えば、電子回路によって構成されてもよい。また、監視部１０の機能は、コントローラ又はプロセッサがプログラムを実行することにより実現されてもよい。
【００４９】
アクセス・ディセーブル・レジスタ１１は、第２のメモリ３におけるメモリ領域Ｅのファームウェア８に対してフェッチを許可しているか否かを示す情報を格納する。このアクセス・ディセーブル・レジスタ１１に対しては、セキュリティプロセッサＳＰのみが情報を設定可能とする。監視部１０は、アクセス・ディセーブル・レジスタ１１に設定された情報を読み出し可能である。
【００５０】
本実施形態において、プロセッシングデバイス１に備えられるプロセッサＰ１、セキュリティプロセッサＳＰ、監視部１０は、例えば、以下のように連携して動作する。
【００５１】
プロセッシングデバイス１の起動時に、プロセッサＰ１は、セキュリティプロセッサＳＰに対して、メモリ領域Ｅにロードされたファームウェア８に対するフェッチ許可を要求する。
【００５２】
次に、セキュリティプロセッサＳＰは、メモリ領域Ｅに格納されているファームウェア８に対する検証を行い、検証の結果が正当と判断された場合に、メモリ領域Ｅを指定する領域情報と、後述の図２に図示されるフェッチ許可を示すフェッチ情報１１ｅとを、アクセス・ディセーブル・レジスタ１１を介して監視部１０に通知する。
【００５３】
監視部１０は、セキュリティプロセッサＳＰからアクセス・ディセーブル・レジスタ１１を介して、領域情報とフェッチ許可を示すフェッチ情報１１ｅとを受けるまで、メモリ領域Ｅに対するフェッチを待ち状態とする制御（例えば遅延又は禁止）を行う。また、監視部１０は、セキュリティプロセッサＳＰからアクセス・ディセーブル・レジスタ１１を介してフェッチ許可を示すフェッチ情報１１ｅを受けた場合に、メモリ領域Ｅに対するフェッチを許可するための制御を行う。ここで、監視部１０は、メモリ領域Ｅに対するフェッチを許可している場合に、メモリ領域Ｅに対するライト処理又はデータ転送を待ち状態とするための制御を行う。
【００５４】
プロセッサＰ１は、セキュリティプロセッサＳＰからメモリ領域Ｅに対するフェッチが許可されたことを示す通知を受けた場合に、ファームウェア８のフェッチを開始する。
【００５５】
本実施形態のプロセッシングデバイス１をさらに詳細に説明する。
プロセッシングデバイス１の各プロセッサＰ１〜Ｐｎは、第２のメモリ３を共有する。
【００５６】
セキュリティプロセッサＳＰは、セキュリティ専用に用いられるプロセッサである。セキュリティプロセッサＳＰは、ファームウェア８のロード時に、ファームウェア８の完全性・正当性を検証する。
【００５７】
プロセッサＰ１は、ＭＭＵ９を用いて、ファームウェア８の実行権を、プロセッサＰ１上で動作するＯＳ、又は、専用のメモリ管理処理ルーチンによって制御する。上述したように、本実施形態において、セキュリティプロセッサＳＰは、プロセッサＰ１のＭＭＵ９の設定内容を制御できなくてよい。
【００５８】
セキュリティプロセッサＳＰは、プロセッシングデバイス１の起動時におけるファームウェア８のロード処理に対してファームウェア実行権に関する判断を行う。
さらに、監視部１０は、セキュリティプロセッサＳＰの判断にしたがって、第２のメモリ３のメモリ領域Ｅに配置されているファームウェア８のプロセッサＰ１によるフェッチに対する制御を行う。
【００５９】
より具体的に説明すると、セキュリティプロセッサＳＰは、プロセッシングデバイス１の起動時に、メモリ領域Ｅに対するファームウェア８のロードの発生を検出する。そして、セキュリティプロセッサＳＰは、検出したロードが正当であるか、又は、不当であるかを判断する。セキュリティプロセッサＳＰは、権限を有しないマスタデバイスによるロードを検出し、権限のないロードを排除し、ロードされたファームウェア８の完全性を検証し、検証完了まで検証対象のファームウェア８をフェッチ不可に設定する。
このセキュリティプロセッサＳＰの検証は、プロセッシングデバイス１の起動時に、第１のメモリ２から第２のメモリ３へロードされたファームウェア８に対して実行され、ファームウェア８が特定のプロセッサＰ１によって実行される前に完了する。これにより、プロセッシングデバイス１は、プロセッシングデバイス１の起動時に、セキュリティプロセッサＳＰによって正当と判断されたファームウェア８のみを実行することができ、プロセッシングデバイス１の起動の安全性を確保することができる。
【００６０】
監視部１０は、バスコントローラ５と連動するメモリコントローラ６内に設けられている専用の回路であり、セキュリティプロセッサＳＰによって設定された情報の内容に基づいてプロセッサＰ１によるフェッチを制御する。
【００６１】
メモリコントローラ６のアクセス・ディセーブル・レジスタ１１は、セキュリティプロセッサＳＰからのみ設定可能な記憶回路である。
【００６２】
プロセッサＰ１は、セキュリティプロセッサＳＰがファームウェア８を正当と判断した場合に、メモリコントローラ６を介して第２のメモリ３のメモリ領域Ｅから命令コード又はデータをフェッチ可能とする。例えば、メモリコントローラ６は、全てのプロセッサＰ１〜Ｐｎが、各プロセッサＰ１〜Ｐｎのフェッチの可否を示すステータス（例えば、後述のフェッチ情報１１ｅ）をアクセスできるように、各プロセッサＰ１〜Ｐｎにとってリード・オンリーであるアクセス・ディセーブル・レジスタ１１を備える。
【００６３】
図２は、メモリコントローラ６に備えられ、セキュリティプロセッサＳＰにより設定されるアクセス・ディセーブル・レジスタ１１の構成の一例を示すブロック図である。
【００６４】
この図２では、第２のメモリ３における検証対象のメモリ領域Ｅの監視に用いられる情報のみを例示している。図２と同様の情報は、第２のメモリ３における検証対象のメモリ領域ごとに設定される。
【００６５】
アクセス・ディセーブル・レジスタ１１には、メモリ領域Ｅを指定する領域情報の一例である開始アドレス１１ａ及び終了アドレス１１ｂ、メモリ領域Ｅからフェッチを行うプロセッサＰ１を示すプロセッサＩＤ１１ｃ、メモリ領域Ｅに対してデータの転送を行うＤＭＡＣ４を示すＤＭＡＣ・ＩＤ１１ｄ、フェッチを行うプロセッサＰ１に対してメモリ領域Ｅからのフェッチを許可するか否かを示すフェッチ情報１１ｅを格納する。フェッチ情報１１ｅは、デフォルトでフェッチ不可を示し、セキュリティプロセッサＳＰによってフェッチが許可された場合に、フェッチ許可を示す。
【００６６】
バスコントローラ５と連動するメモリコントローラ６の監視部１０は、マスタデバイスによるメモリ領域Ｅに対するライト処理又はデータ転送を、マスタデバイスＩＤにより監視する。マスタデバイスは、例えばプロセッサＰ１又はＤＭＡＣ４である。マスタデバイスＩＤは、例えば、プロセッサＩＤ１１ｃ又はＤＭＡＣ・ＩＤ１１ｄである。マスタデバイスＩＤの示すマスタデバイスがメモリ領域Ｅに対するライト処理又はデータ転送を要求した場合、監視部１０は、アクセス・ディセーブル・レジスタ１１をアクセスし、フェッチ情報１１ｅがフェッチ不可を示す場合、ライト処理又はデータ転送が許可されていると判断し、ライト処理又はデータ転送を許可する制御を行う。一方、監視部１０は、フェッチ情報１１ｅがフェッチ許可を示す場合、ライト処理又はデータ転送が不可であると判断し、ライト処理又はデータ転送を不可とする制御を行う。例えば、プロセッシングデバイス１が実装するプロセッサＰ１〜Ｐｎの数をｎとすると、アクセス・ディセーブル・レジスタ１１が管理するメモリ領域の数Ｎは、ｎより大きくなる。
【００６７】
監視部１０は、アクセス・ディセーブル・レジスタ１１で許可されていないフェッチを検出した場合、この許可されていないフェッチ要求を適切に遅延させる。
【００６８】
監視部１０は、メモリ領域Ｅに対するフェッチを許可する場合、このメモリ領域Ｅに対するライト処理又はデータ転送を不可とする制御を行う。これにより、ファームウェア８が実行中に改竄されることを防止することができる。
【００６９】
監視部１０は、図２に図示されるＤＭＡＣ・ＩＤ１１ｄの示すＤＭＡＣ４から転送完了通知を受信した場合に、第１のメモリ２から第２のメモリ３へのファームウェア８のロードが完了したと判断し、その旨をプロセッサＰ１へ通知する。
【００７０】
第１のメモリ２から第２のメモリ３へのファームウェア８のロードが完了した場合に、プロセッサＰ１は、例えば、セキュリティプロセッサＳＰによってファームウェア８のフェッチが許可されるまで、このフェッチを待つ状態へ遷移してもよい。このフェッチを待つ状態は、dormant又はsleepと表現されてもよい。あるいは、プロセッサＰ１は、ファームウェア８のフェッチが許可されるまでアクセス・ディセーブル・レジスタ１１をポーリングすることにより、ファームウェア８のフェッチを遅延してもよい。
【００７１】
セキュリティプロセッサＳＰは、第２のメモリ３にロードされたファームウェア８が正当か否か検証する。この検証について具体例を挙げて説明する。第２のメモリ３にロードされたファームウェア８は、命令コード及びデータを含むファームウェア本体とファームウェア本体に関する第１の認証情報とを含む。セキュリティプロセッサＳＰは、公開鍵を保持する。セキュリティプロセッサＳＰは、ロードされたファームウェア本体と公開鍵とに基づいて第２の認証情報を生成する。そして、セキュリティプロセッサＳＰは、第１の認証情報と第２の認証情報とが整合するか否かに基づいて、ファームウェア８が正当か否か判断する。
【００７２】
セキュリティプロセッサＳＰは、アクセス・ディセーブル・レジスタ１１に対するフェッチ情報１１ｅの設定によって、プロセッサＰ１に対する検証済みファームウェア８のフェッチ許可の通知を行う。例えば、セキュリティプロセッサＳＰは、アクセス・ディセーブル・レジスタ１１に、領域情報とフェッチ許可を示すフェッチ情報１１ｅとを設定する。監視部１０は、フェッチ情報１１ｅがフェッチ許可を示す場合に、このフェッチ情報１１ｅに対応するプロセッサＩＤ１１ｃで示す待ち状態のプロセッサＰ１に対して割り込みを発生させる。このように、監視部１０は、待ち状態のプロセッサＰ１に対して割り込みを発生させることによりプロセッサＰ１の待ち状態を解除する。
【００７３】
以上説明した本実施形態においては、セキュリティプロセッサＳＰが、バスコントローラ５と連動するメモリコントローラ６に対し、ファームウェア８を配置している第２のメモリ３のメモリ領域Ｅを指定する領域情報と、当該メモリ領域Ｅのファームウェア８をフェッチ可能なプロセッサＰ１を指定するプロセッサＩＤ１１ｃとを、アクセス・ディセーブル・レジスタ１１に設定する。
【００７４】
プロセッサＰ１が、このプロセッサＰ１によるフェッチが許可されていない第２のメモリ３のメモリ領域に対してフェッチを要求している場合、メモリコントローラ６の監視部１０は、このフェッチ要求を待ち状態とする。
【００７５】
メモリコントローラ６に対するフェッチ監視対象のメモリ領域Ｅを指定する領域情報とプロセッサＰ１を指定するプロセッサＩＤ１１ｃとの設定は、セキュリティプロセッサＳＰのみによって実行される。
【００７６】
このように、セキュリティプロセッサＳＰのみが、メモリ領域Ｅを指定する領域情報と、このメモリ領域Ｅのファームウェア８のフェッチを許可するプロセッサＰ１を指定するプロセッサＩＤ１１ｃとを設定可能とすることにより、プロセッサＰ１によるファームウェア８のフェッチの完全性を向上させることができる。
【００７７】
本実施形態においては、セキュリティプロセッサＳＰによって、プロセッシングデバイス１の起動時にロードされたファームウェア８が検証され、検証の結果が正当な場合に、セキュリティプロセッサＳＰが、プロセッサＰ１によるファームウェア８のフェッチを許可する。これにより、ロードされたファームウェア８の完全性を確保することができる。
【００７８】
本実施形態において、監視部１０は、プロセッシングデバイス１の起動後、フェッチ中のファームウェア８が格納されているメモリ領域Ｅに対するライト処理又はデータ転送を禁止する。このため、実行中のファームウェア８が改竄されることを防止することができる。
【００７９】
本実施形態において、セキュリティプロセッサＳＰは、専用の領域２ＳＰから専用の領域３ＳＰへ、専用のＤＭＡＣ４ＳＰを用いて書き換え不可のセキュリティファームウェア８ＳＰをロードし、セキュリティファームウェア８ＳＰをフェッチし、実行する。これにより、セキュリティプロセッサＳＰで実行される処理の安全を確保することができる。
【００８０】
本実施形態においては、プロセッシングデバイス１が本来の用途ではない別の用途で利用されることを防止でき、悪意を持つ者からの攻撃に対する耐性を増すことができる。
【００８１】
本実施形態は、プロセッサＰ１〜Ｐｎの設計変更をすることなく、より高レベルにファームウェア８の完全性を確保することができ、導入容易である。
【００８２】
（第２の実施形態）
本実施形態は、上記第１の実施形態で説明したプロセッシングデバイス１の起動段階での完全性の確保とは異なり、ファームウェア８の一部変更段階での完全性の確保に関する。なお、ファームウェア８の一部変更は、プロセッシングデバイス１に備えられている複数のプロセッサＰ１〜Ｐｎにより同時に発生してもよい。ファームウェア８の一部の変更に限らず、ファームウェア８の全体が変更される場合であっても、本実施形態と同様の制御を適用可能である。ファームウェア８の一部変更は、例えば、ソフトウェアの一部の更新、書き換え、ロード、置き換えなどを含む。
【００８３】
図３は、本実施形態に係るプロセッシングデバイス１の構成の一例を示すブロック図である。
【００８４】
本実施形態では、第２のメモリ３に配置されているファームウェア８の一部が変更される。セキュリティプロセッサＳＰは、ファームウェア８の変更部分８ａを検証する。ファームウェア８の変更部分８ａは、変更後のソフトウェア要素と表記されてもよい。
監視部１０は、セキュリティプロセッサＳＰによって情報が設定されたレジスタ１２をアクセスし、検証結果に応じてプロセッサＰ１によるファームウェア８の実行を制御する。ファームウェア８の変更部分８ａは、例えば、命令コード、データ、又は、命令コードとデータとの双方を含む。
【００８５】
本実施形態において、メモリ領域Ｅに対するファームウェア８の配置及び変更、及び、メモリ領域Ｅに対するライト権限は、各プロセッサＰ１〜ＰｎのＭＭＵ９が管理し、ＭＭＵ９が、各プロセッサＰ１〜Ｐｎからメモリ領域Ｅへのアクセスの制御を行う。
【００８６】
本実施形態において、プロセッシングデバイス１に備えられるプロセッサＰ１、セキュリティプロセッサＳＰ、監視部１０は、例えば、以下のように連携して動作する。
【００８７】
まず、プロセッシングデバイス１は、メモリ領域Ｅに格納されたファームウェア８を以下の動作により実行する。
【００８８】
プロセッサＰ１は、セキュリティプロセッサＳＰに対して、ファームウェア８を配置しているメモリ領域Ｅに対するフェッチ許可を要求する。
【００８９】
セキュリティプロセッサＳＰは、メモリ領域Ｅに格納されているファームウェア８に対する検証を行い、検証結果が正当を示す場合に、メモリ領域Ｅを指定する領域情報（例えば開始アドレス１１ａ及び終了アドレス１１ｂ）とフェッチ許可を示すフェッチ情報１１ｅとを、レジスタ１２を介して監視部１０に通知する。
【００９０】
監視部１０は、セキュリティプロセッサＳＰから領域情報とフェッチ許可を示すフェッチ情報１１ｅとを受けるまで、メモリ領域Ｅに対するフェッチを不可とするための制御を行い、領域情報とフェッチ許可を示すフェッチ情報１１ｅとを受けた場合に、メモリ領域Ｅに対するフェッチを許可するための制御を行う。さらに、監視部１０は、メモリ領域Ｅに対するフェッチが許可されている場合に、メモリ領域Ｅに対するライト処理又はデータ転送を不可とするための制御を行う。
【００９１】
プロセッサＰ１は、セキュリティプロセッサＳＰから、メモリ領域Ｅを指定する領域情報とフェッチが許可されたことを示すフェッチ情報１１ｅとの通知を受けた場合に、ファームウェア８のフェッチを開始する。
【００９２】
ここで、プロセッサＰ１が、ファームウェア８の変更をセキュリティプロセッサＳＰへ要求したとする。
【００９３】
セキュリティプロセッサＳＰは、メモリ領域Ｅ内の変更領域ＣＥを指定する変更領域情報と、変更領域ＣＥに対する変更を許可するマスタデバイスを示すマスタデバイスＩＤと、後述の図４に図示される変更領域ＣＥに対する変更許可を示すライト情報１３ｅとを、レジスタ１２を介して監視部１０に通知する。
【００９４】
監視部１０は、セキュリティプロセッサＳＰから変更領域情報と変更許可を示すライト情報１３ｅとを受けるまで、変更領域ＣＥに対するライト処理又はデータ転送を不可とするための制御を行い、変更領域情報と変更許可を示すライト情報１３ｅとを受けた場合に、変更領域ＣＥに対してライト処理又はデータ転送を許可するための制御を行う。さらに、監視部１０は、マスタデバイスが変更領域ＣＥに対してライト処理又はデータ転送を行っている間、変更領域ＣＥに対するフェッチを不可とするための制御を行う。
【００９５】
マスタデバイスは、セキュリティプロセッサＳＰからライト処理又はデータ転送を許可することを示す通知を受けた場合に、変更領域ＣＥに対して変更を行う。
【００９６】
セキュリティプロセッサＳＰは、変更領域ＣＥに格納された変更部分８ａの検証を行い、変更部分８ａが正当である場合に、変更領域ＣＥに対するライト処理又はデータ転送の許可を取り消す。セキュリティプロセッサＳＰは、ライト処理又はデータ転送の許可が取り消された場合に、プロセッサＰ１による変更領域ＣＥに対するフェッチを許可する。
【００９７】
図４は、メモリコントローラ６に備えられ、セキュリティプロセッサＳＰ及びプロセッサＰ１〜Ｐｎにより設定されるレジスタ１２の構成の一例を示すブロック図である。
【００９８】
この図４では、第２のメモリ３において検証対象となる特定のメモリ領域Ｅに対応する情報を主に例示している。図４と同様の情報は、第２のメモリ３におけるメモリ領域ごとに設定される。
【００９９】
レジスタ１２は、アクセス・ディセーブル・レジスタ１１、ライト・プロテクト・レジスタ１３、完了レジスタ１４、アクセス・ステータス・レジスタ１５、サービス・リクエスト・レジスタ１６を含む。
【０１００】
アクセス・ディセーブル・レジスタ１１、ライト・プロテクト・レジスタ１３に対しては、セキュリティプロセッサＳＰのみが情報を設定可能である。
【０１０１】
完了レジスタ１４に対しては、セキュリティプロセッサＳＰ及び監視部１０のみが情報を設定可能である。
【０１０２】
アクセス・ステータス・レジスタ１５に対しては、セキュリティプロセッサＳＰが情報を設定可能であり、各プロセッサＰ１〜Ｐｎ及びＤＭＡＣ４が情報を読み出し可能である。
【０１０３】
サービス・リクエスト・レジスタ１６に対しては、プロセッサＰ１〜Ｐｎが情報を設定可能であり、セキュリティプロセッサＳＰが情報を読み出し可能である。
【０１０４】
ライト・プロテクト・レジスタ１３は、ファームウェア８の変更部分８ａに対応する変更領域ＣＥに対するライトプロテクトを実現するための情報を保持する。監視部１０は、ライト・プロテクト・レジスタ１３に設定された情報に基づいて、マスタデバイスによる変更領域ＣＥに対するライト処理又はデータ転送を許可又は不可とする制御を行う。
【０１０５】
ライト・プロテクト・レジスタ１３は、変更領域ＣＥを指定する変更領域情報の一例である開始アドレス１３ａ及び終了アドレス１３ｂ、変更領域ＣＥに対するライト処理を許可するプロセッサＰ１を示すプロセッサＩＤ１３ｃ、変更領域ＣＥに対するデータの転送を許可するＤＭＡＣ４を示すＤＭＡＣ・ＩＤ１３ｄ、変更領域ＣＥに対するライト処理を許可するか否かを示すライト情報１３ｅを格納する。ライト情報１３ｅは、デフォルトでライト処理又はデータ転送の不可を示し、セキュリティプロセッサＳＰによってライト処理又はデータ転送が許可された場合に、ライト処理又はデータ転送の許可へ変更される。プロセッサＩＤ１３ｃ、ＤＭＡＣ・ＩＤ１３ｄ、又は、プロセッサＩＤ１３ｃとＤＭＡＣ・ＩＤ１３ｄとの双方は、マスタデバイスＩＤに相当する。
【０１０６】
ライト・プロテクト・レジスタ１３に設定されているライト情報１３ｅがライト処理又はデータ転送の許可を示す場合、対応するプロセッサＩＤ１３ｃの示すプロセッサＰ１又はＤＭＡＣ・ＩＤ１３ｄの示すＤＭＡＣ４は、対応する変更領域情報の示す変更領域ＣＥに対するライト処理及びデータ転送が可能である。これとは逆に、ライト・プロテクト・レジスタ１３に設定されているライト情報１３ｅがライト処理又はデータ転送の不可を示す場合、対応するプロセッサＩＤ１３ｃの示すプロセッサＰ１又はＤＭＡＣ・ＩＤ１３ｄの示すＤＭＡＣ４は、対応する変更領域情報の示す変更領域ＣＥに対するライト処理又はデータ転送が不可となる。
【０１０７】
完了レジスタ１４は、ライト・プロテクト・レジスタ１３に格納されているプロセッサＩＤ１３ｃの示すプロセッサＰ１によるライト処理が完了したか否か、又は、ライト・プロテクト・レジスタ１３に格納されているＤＭＡＣ・ＩＤ１３ｄの示すＤＭＡＣ４によるデータ転送が完了したか否かを示す完了ステータス１４ａを格納する。
【０１０８】
この完了レジスタ１４に対する完了ステータス１４ａの設定を、以下で具体的に説明する。
【０１０９】
監視部１０は、ＤＭＡＣ４からの通知からＤＭＡＣ４によるデータ転送の完了を検出し、データ転送の完了を検出した場合に、データ転送完了を示す完了ステータス１４ａを、完了レジスタ１４に格納する。
【０１１０】
プロセッサＰ１がライト処理を完了すると、このプロセッサＰ１は、サービス・リクエスト・レジスタ１６に対して、後述のデータ１６ｇ＿１の一種でありライト処理完了を示すライト完了情報１３ｋを格納する。セキュリティプロセッサＳＰは、サービス・リクエスト・レジスタ１６からライト処理完了を示すライト完了情報１３ｋを読み出すことにより、ライト処理完了を検知し、ライト処理完了を示す完了ステータス１４ａを、完了レジスタ１４に格納する。
【０１１１】
したがって、本実施形態において、完了レジスタ１４に情報を設定可能な構成要素は、監視部１０とセキュリティプロセッサＳＰとなる。
【０１１２】
アクセス・ステータス・レジスタ１５は、セキュリティプロセッサＳＰが情報を設定可能であり、アクセス・ステータス・レジスタ１５に設定された情報は、各プロセッサＰ１〜Ｐｎ又はＤＭＡＣ４が読み出し可能である。セキュリティプロセッサＳＰは、プロセッサＰ１によるライト処理又はＤＭＡＣ４によるデータ転送が許可されているか否かを示すアクセスステータス１５ａを、アクセス・ステータス・レジスタ１５へ格納する。これにより、ライト処理又はデータ転送が許可されているか否かを、セキュリティプロセッサＳＰからプロセッサＰ１又はＤＭＡＣ４へ通知することができる。
【０１１３】
サービス・リクエスト・レジスタ１６は、各プロセッサＰ１〜ＰｎからセキュリティプロセッサＳＰへ通知すべきコマンド１６ａ_１〜１６ａ＿ｎ、及び、データ１６ｇ＿１〜１６ｇ＿ｎを格納する。具体的に説明すると、各プロセッサＰ１〜Ｐｎは、セキュリティプロセッサＳＰへ通知すべきコマンド１６ａ_１〜１６ａ＿ｎ及びデータ１６ｇ＿１〜１６ｇ＿ｎをサービス・リクエスト・レジスタ１６へ格納し、セキュリティプロセッサＳＰは、コマンド１６ａ_１〜１６ａ＿ｎ及びデータ１６ｇ＿１〜１６ｇ＿ｎをサービス・リクエスト・レジスタ１６から読み出す。これにより、各プロセッサＰ１〜ＰｎからセキュリティプロセッサＳＰへ、コマンド１６ａ_１〜１６ａ＿ｎ及びデータ１６ｇ＿１〜１６ｇ＿ｎを通知することができる。
【０１１４】
本実施形態において、特定のプロセッサＰ１に対応するライト・プロテクト・レジスタ１３によって指定される変更領域ＣＥ（すなわち、開始アドレス１３ａから終了アドレス１３ｂの領域）は、特定のプロセッサＰ１に対応するアクセス・ディセーブル・レジスタ１１によって指定されるメモリ領域Ｅ（すなわち、開始アドレス１１ａから終了アドレス１１ｂの領域）に包含される。
【０１１５】
監視部１０は、ライト・プロテクト・レジスタ１３をアクセスし、ライト・プロテクト・レジスタ１３で許可されていないプロセッサＰ１によるライト処理又はＤＭＡＣ４によるデータ転送を検出した場合、このライト処理又はデータ転送を無効化するとともに、セキュリティプロセッサＳＰにセキュリティの侵害を通知する割り込み処理を実行する。
【０１１６】
上述したように、本実施形態において、監視部１０は、ＤＭＡＣ４によるデータ転送を監視する。そして、監視部１０は、ライト・プロテクト・レジスタ１３に設定されたＤＭＡＣ・ＩＤ１３ｄの示すＤＭＡＣ４が変更領域ＣＥへのデータ転送を完了した場合、完了レジスタ１４にデータ転送完了を示す完了ステータス１４ａを設定する。セキュリティプロセッサＳＰは、完了レジスタ１４をアクセスすることにより、変更領域ＣＥに対するデータ転送の完了を判断可能である。
【０１１７】
一方で、プロセッサＩＤ１３ｃの示すプロセッサＰ１による変更領域ＣＥへのライト処理の完了は、監視部１０によって検出しなくてもよい。本実施形態では、プロセッサＰ１は、変更領域ＣＥへのライト処理を完了すると、ライト処理完了を示すライト完了情報１３ｋをサービス・リクエスト・レジスタ１６に格納する。そして、セキュリティプロセッサＳＰは、サービス・リクエスト・レジスタ１６からライト処理完了を示すライト完了情報１３ｋを読み出すことにより、プロセッサＰ１による変更領域ＣＥへのライト処理の完了を判断可能である。
【０１１８】
監視部１０は、完了レジスタ１４に完了ステータス１４ａが格納された状態で、プロセッサＩＤ１３ｃ又はＤＭＡＣ・ＩＤ１３ｄで示されるマスタデバイスが、ライト・プロテクト・レジスタ１３の開始アドレス１３ａ及び終了アドレス１３ｂで指定された変更領域ＣＥに対して、ライト処理又はデータ転送を実行した場合、このライト処理又はデータ転送をエラーとして検出し、セキュリティプロセッサＳＰへ通知する。これにより、セキュリティプロセッサＳＰにおける検証中に改ざんが行われる可能性を排除することができる。監視部１０は、例えば、セキュリティプロセッサＳＰに対する割り込みにより、このセキュリティプロセッサＳｐへエラーを通知してもよい。さらに、監視部１０は、エラーが検出されたことを示すエラーステータス１４ｂを完了レジスタ１４へ格納してもよい。
【０１１９】
プロセッサＰ１がファームウェア８の命令コードの全てを実行するためには、セキュリティプロセッサＳＰは、アクセス・ディセーブル・レジスタ１１に対して、適切にメモリ領域Ｅを指定する領域情報（すなわち、開始アドレス１１ａ及び終了アドレス１１ｂ）を設定し、プロセッサＩＤ１１ｃを設定し、ＤＭＡＣ・ＩＤ１１ｄを設定し、フェッチ許可を示すフェッチ情報１１ｅを設定する。
【０１２０】
さらに、プロセッサＰ１がファームウェア８の命令コードの全てを実行するためには、セキュリティプロセッサＳＰは、ライト・プロテクト・レジスタ１３に対して、適切に変更領域ＣＥを指定する変更領域情報（すなわち、開始アドレス１３ａ及び終了アドレス１３ｂ）を設定し、プロセッサＩＤ１３ｃ又はＤＭＡＣ・ＩＤ１３ｄを設定し、変更領域ＣＥに対してライト処理又はデータ転送を不可とすることを示すライト情報１３ｅを設定する。
【０１２１】
ライト・プロテクト・レジスタ１３のライト情報１３ｅがライト不可を示す場合に、プロセッサＩＤ１３ｃの示すプロセッサＰ１、又は、ＤＭＡＣ・ＩＤ１３ｄの示すＤＭＡＣ４は、変更領域ＣＥに対するライト処理、又は、データ転送を行わず、プロセッサＰ１は、第２のメモリ３の変更領域ＣＥから変更部分８ａをフェッチ可能である。
【０１２２】
なお、ライト情報１３ｅがライト不可を示す場合、開始アドレス１３ａ、終了アドレス１３ｂ、プロセッサＩＤ１３ｃ、ＤＭＡＣ・ＩＤ１３ｄは省略されていてもよい。
【０１２３】
プロセッサＰ１は、ファームウェア８の一部を変更する場合、セキュリティプロセッサＳＰに対して、第２のメモリ３の変更領域ＣＥを指定する変更領域情報、ライト処理を行うプロセッサＰ１又はデータ転送を行うＤＭＡＣ４などを示すマスタデバイスＩＤを、プロセッサ間通信により要求する。本実施形態の例では、プロセッサＰ１からセキュリティプロセッサＳＰへの情報の伝達のために、サービス・リクエスト・レジスタが用いられる。
【０１２４】
セキュリティプロセッサＳＰは、通知された内容を、ライト・プロテクト・レジスタ１３へ設定し、ライト処理又はデータ転送の許可を示すライト情報１３ｅをライト・プロテクト・レジスタ１３へ設定する。
【０１２５】
そして、セキュリティプロセッサＳＰは、アクセス・ステータス・レジスタ１５にライト処理又はデータ転送の許可を示すアクセスステータス１５ａを設定する。プロセッサＰ１又はＤＭＡＣ４は、アクセス・ステータス・レジスタ１５をアクセスし、ライト処理又はデータ転送の許可を示すアクセスステータス１５ａを取得する。これにより、セキュリティプロセッサＳＰからプロセッサＰ１又はＤＭＡＣ４へライト処理又はデータ転送の許可が通知される。
【０１２６】
アクセス・ステータス・レジスタ１５のアクセスステータス１５ａがライト処理又はデータ転送の許可を示す場合、ライト・プロテクト・レジスタ１３のプロセッサＩＤ１３ｃの示すプロセッサＰ１又はＤＭＡＣ・ＩＤ１３ｄの示すＤＭＡＣ４は、プロセッサＰ１からセキュリティプロセッサＳＰへ要求された変更領域ＣＥへのライト処理又はデータ転送を行う。この時、監視部１０は、ライト・プロテクト・レジスタ１３に設定された変更領域情報の示す変更領域ＣＥ内へのライト処理又はデータ転送を許可するとともに、プロセッサＰ１がライト・プロテクト・レジスタ１３に格納されている変更領域情報の示す変更領域ＣＥからフェッチを行うことを適切に遅延させる。フェッチの遅延状況は、セキュリティプロセッサＳＰが、完了レジスタ１４の完了ステータス１４ａによってライト処理又はデータ転送の完了を検出し、ライト・プロテクト・レジスタ１３の変更領域情報の示す変更領域ＣＥの変更部分８ａを検証し、変更領域ＣＥに格納されている変更部分８ａが正当であることを確認し、ライト・プロテクト・レジスタ１３にライト処理又はデータ転送の不可を示すライト情報１３ｅを再設定した後、解消する。
【０１２７】
このように、本実施形態においては、ライト・プロテクト・レジスタ１３に設定された変更領域情報の示す変更領域ＣＥに対応するライト情報１３ｅが、一旦、ライト処理又はデータ転送を許可する状態となると、このライト処理又はデータ転送が許可された変更領域ＣＥからのフェッチは禁止される。そして、ライト・プロテクト・レジスタ１３に設定された変更領域情報の示す変更領域ＣＥからのフェッチの不可状態は、セキュリティプロセッサＳＰによってライト・プロテクト・レジスタ１３に設定された変更領域情報の示す変更領域ＣＥに対応するライト情報１３ｅが、ライト処理又はデータ転送を不可とする状態となるまで継続される。
【０１２８】
セキュリティプロセッサＳＰは、完了レジスタ１４の完了ステータス１４ａによってライト処理又はデータ転送の完了を検出した場合に、転送された変更部分８ａを検証する。
【０１２９】
検証の間、セキュリティプロセッサＳＰは、ライト・プロテクト・レジスタ１３に設定されているプロセッサＩＤ１３ｃの示すプロセッサＰ１によるさらなるライト処理、及び、ＤＭＡＣ・ＩＤ１３ｄの示すＤＭＡＣ４によるさらなるデータ転送を抑制し、かつ、プロセッサＰ１〜Ｐｎによるライト・プロテクト・レジスタ１３に設定されている変更領域情報の示す変更領域ＣＥからのフェッチを抑制するために、ライト・プロテクト・レジスタ１３にライト処理及びデータ転送の不可を示すライト情報１３ｅを設定する。
【０１３０】
第２のメモリ３の変更領域ＣＥには、命令コード及びデータに加え、それらに対する第３の認証情報（例えば電子署名）が変更部分８ａとして格納されているとする。セキュリティプロセッサＳＰは、例えば、自らが所有する公開鍵により変更部分８ａの命令コード及びデータを暗号化した第４の認証情報を生成し、第３の認証情報と第４の認証情報とを比較することで、変更部分８ａが正当であるか否かの検証を行う。
【０１３１】
上記のように、監視部１０は、完了レジスタ１４に完了ステータス１４ａが格納された状態で、プロセッサＩＤ１３ｃの示すプロセッサＰ１又はＤＭＡＣ・ＩＤ１３ｄの示すＤＭＡＣ４がライト処理又はデータ転送を開始アドレス１３ａ及び終了アドレス１３ｂで指定されている変更領域ＣＥに対して実行した場合、エラーを検出する。そして、監視部１０は、エラーを検出した場合、当該エラーを示すエラーステータス１４ｂを完了レジスタ１４に格納し、エラーを完了レジスタ１４経由でセキュリティプロセッサＳＰに通知する。これにより、セキュリティプロセッサＳＰによる検証中に改ざんが行われることを防止することができる。
【０１３２】
図５は、本実施形態に係るプロセッシングデバイス１によるファームウェア８のフェッチ処理の一例を示すフローチャートである。
【０１３３】
図６は、フェッチ処理を実行するプロセッシングデバイス１の各構成要素の連携の一例を示すブロック図である。
【０１３４】
ステップＳ５０１において、プロセッサＰ１は、セキュリティプロセッサＳＰに対して、第２のメモリ３のメモリ領域Ｅに対するフェッチ許可を要求する。メモリ領域Ｅには、ファームウェア８が格納されている。プロセッサＰ１からセキュリティプロセッサＳＰへのフェッチ許可の要求は、例えば、プロセッサＰ１による上記の図４に示すサービス・リクエスト・レジスタ１６へのコマンド１６ａ＿１の設定と、セキュリティプロセッサＳＰによるサービス・リクエスト・レジスタ１６からのコマンド１６ａ＿１の読み出しとにより行われてもよい。
【０１３５】
ステップＳ５０２において、セキュリティプロセッサＳＰは、メモリ領域Ｅに格納されているファームウェア８に対する検証を行い、検証の結果が正当であることを示す場合に、アクセス・ディセーブル・レジスタ１１へ、メモリ領域Ｅを示す開始アドレス１１ａ及び終了アドレス１１ｂ、プロセッサＰ１を示すプロセッサＩＤ１１ｃ、フェッチ許可を示すフェッチ情報１１ｅを格納する。監視部１０は、アクセス・ディセーブル・レジスタ１１に格納された開始アドレス１１ａ、終了アドレス１１ｂ、プロセッサＩＤ１１ｃ、フェッチ情報１１ｅをアクセスする。これにより、セキュリティプロセッサＳＰから監視部１０へ、領域情報及びプロセッサＰ１によるメモリ領域Ｅのフェッチ許可が通知される。
【０１３６】
セキュリティプロセッサＳＰが監視部１０へフェッチ許可を通知する前までは、監視部１０は、メモリ領域Ｅに対するフェッチを待ち状態とする制御を行う。
【０１３７】
さらに、監視部１０は、フェッチ許可に伴って、メモリ領域Ｅに対するライト処理を不可とする。
【０１３８】
ステップＳ５０３において、プロセッサＰ１は、セキュリティプロセッサＳＰからのフェッチ許可の通知と、監視部１０によるフェッチ許可制御に応じて、メモリ領域Ｅに対するフェッチを開始する。
【０１３９】
図７は、本実施形態に係るプロセッシングデバイス１によるファームウェア８の一部変更の一例を示すフローチャートである。この図７の処理により、例えば、ファームウェア８は、このファームウェア８の一部が新たにロードされ、一部の機能が他の機能に置き換えられる。
【０１４０】
図８は、一部変更を実行するプロセッシングデバイス１の各構成要素の連携の一例を示すブロック図である。
【０１４１】
この図７及び図８では、変更領域ＣＥに対してデータ転送が実行される場合を例として説明するが、変更領域ＣＥに対してライト処理が行われる場合も同様である。
【０１４２】
ステップＳ７０１において、プロセッサＰ１は、セキュリティプロセッサＳＰに対して、ファームウェア８の変更領域ＣＥを指定し、データ転送許可を要求する。プロセッサＰ１からセキュリティプロセッサＳＰへのデータ転送許可要求の通知は、例えば、プロセッサＰ１による上記の図４に示すサービス・リクエスト・レジスタ１６へのコマンドの設定と、セキュリティプロセッサＳＰによるサービス・リクエスト・レジスタ１６からのコマンドの読み出しとにより行われてもよい。
【０１４３】
ステップＳ７０２において、セキュリティプロセッサＳＰは、ライト・プロテクト・レジスタ１３へ、フェッチが許可されているメモリ領域Ｅ内の変更領域ＣＥを示す開始アドレス１３ａ及び終了アドレス１３ｂ、変更領域ＣＥに対してデータ転送可能なマスタデバイスを示すマスタデバイスＩＤ、変更領域ＣＥに対してデータ転送許可を示すライト情報１３ｅを格納する。本実施形態において、アクセス・ディセーブル・レジスタ１１の開始アドレス１１ａ及び終了アドレス１１ｂで指定される領域Ｅは、ライト・プロテクト・レジスタ１３の開始アドレス１３ａ及び終了アドレス１３ｂで指定される変更領域ＣＥを含む必要がある。監視部１０は、アクセス・ディセーブル・レジスタ１１の開始アドレス１１ａ及び終了アドレス１１ｂで指定される領域Ｅが、ライト・プロテクト・レジスタ１３の開始アドレス１３ａ及び終了アドレス１３ｂで指定される変更領域ＣＥを含まない場合、例えば、完了レジスタ１４経由でセキュリティプロセッサＳＰに対してエラーを通知する。
【０１４４】
監視部１０は、ライト・プロテクト・レジスタ１３に格納された開始アドレス１３ａ、終了アドレス１３ｂ、マスタデバイスＩＤ、ライト情報１３ｅをアクセスする。これにより、監視部１０は、プロセッサＰ１による変更領域ＣＥに対するデータ転送を許可するための制御を行う。データ転送の許可に伴って、セキュリティプロセッサＳＰは、データ転送許可を示すアクセスステータス１５ａをアクセス・ステータス・レジスタ１５へ格納する。プロセッサＰ１は、アクセスステータス１５ａをアクセス・ステータス・レジスタ１５から読み出す。これにより、データ転送が許可されていることを、セキュリティプロセッサＳＰからプロセッサＰ１へ通知可能である。
【０１４５】
さらに、監視部１０は、データ転送の許可に伴って、開始アドレス１３ａ及び終了アドレス１３ｂに対応する変更領域ＣＥをフェッチ不可とする制御を行う。
【０１４６】
ステップＳ７０３において、変更領域ＣＥに対してライト処理可能なマスタデバイスは、第１のメモリ２から変更領域ＣＥへの変更部分８ａのデータ転送を実行する。プロセッサＰ１が変更領域ＣＥに対してデータ転送実行中にフェッチを試みた場合、監視部１０は、プロセッサＰ１によるフェッチを待ち状態とする。
【０１４７】
監視部１０は、ＤＭＡＣ４から受信するステータスによりデータ転送の完了を検出し、データ転送が完了すると、データ転送の完了を示す完了ステータス１４ａをサービス・リクエスト・レジスタ１６に格納する。
【０１４８】
なお、データ転送ではなくライト処理の場合、プロセッサＰ１は、ライト処理を完了すると、ライト完了情報１３ｋをサービス・リクエスト・レジスタ１６に格納する。セキュリティプロセッサＳＰは、サービス・リクエスト・レジスタ１６からライト完了情報１３ｋを読み出し、ライト処理が完了している場合に、ライト処理の完了を示す完了ステータス１４ａを完了レジスタ１４に格納する。
【０１４９】
変更領域ＣＥに対する変更部分８ａのデータ転送が完了すると、ステップＳ７０４において、セキュリティプロセッサＳＰは、変更領域ＣＥにデータ転送されたファームウェア８の変更部分８ａの検証を行う。
【０１５０】
ステップＳ７０５において、ファームウェア８の変更部分８ａが正当な場合、セキュリティプロセッサＳＰは、ライト処理及びデータ転送を不可とするライト情報１３ｅをライト・プロテクト・レジスタ１３に設定することにより、変更領域ＣＥに対するライト処理及びデータ転送の許可を取り消し、変更領域ＣＥに対するライト処理及びデータ転送を不可とする。監視部１０は、変更領域ＣＥに対するフェッチを許可するための制御を行う。
【０１５１】
以上説明した本実施形態においては、セキュリティプロセッサＳＰが、監視部１０に対して、ライト処理又はデータ転送可能な変更領域ＣＥと、ライト処理又はデータ転送可能なマスタデバイスとを指定する。このライト処理又はデータ転送により、ファームウェア８のうち変更領域ＣＥに格納されている部分が変更される。監視部１０は、セキュリティプロセッサＳＰから指定された変更領域ＣＥに対するアクセス制御を実行する。これにより、セキュリティプロセッサＳＰは、監視部１０を用いて、ファームウェア８の変更領域ＣＥに対応する部分の変更を制御し、不当なライト処理又はデータ転送を防止することができる。
【０１５２】
本実施形態においては、プロセッシングデバイス１に搭載されるプロセッサＰ１〜Ｐｎを改造することなく、これらのプロセッサＰ１〜Ｐｎによるファームウェア８のフェッチ及び変更をセキュリティプロセッサＳＰから制御することができる。
【０１５３】
本実施形態においては、ファームウェア８の変更が発生した場合にファームウェア８の変更部分８ａの完全性が検証され、ファームウェア８の改竄を検知し、防止することができる。
【０１５４】
完全性検証中は、プロセッサＰ１〜Ｐｎによる変更部分８ａのフェッチが遅延される。これにより、変更部分８ａが不当な場合に、プロセッサＰ１〜Ｐｎがこの不当な変更部分８ａを実行することを防止することができる。
【０１５５】
なお、本実施形態において、セキュリティプロセッサＳＰによる完全性検証の結果、第２のメモリ３における変更領域ＣＥに対するライト処理又はデータ転送が不当であると判定された場合、セキュリティプロセッサＳＰは、プロセッシングデバイス１に対する不当なアクセスが試みられていると判断し、プロセッシングデバイス１の処理を停止し、これによりプロセッシングデバイス１を保護してもよい。
【０１５６】
本実施形態においては、変更領域ＣＥに対してライト権限を持つマスタデバイスがレジスタ１２に設定される。これにより、変更領域ＣＥに対してライト権限を持たないマスタデバイスによってライト処理又はデータ転送が実行されることを防止できる。
【０１５７】
本実施形態においては、第２のメモリ３における変更領域ＣＥに対するライト処理又はデータ転送が正規の手続きであったとしても、変更領域ＣＥの変更部分８ａに例えば署名検証失敗などのような異常が検出された場合には、異常の検出された変更部分８ａのフェッチを禁止することができる。
【０１５８】
上記第１及び第２の実施形態において、許可されていないフェッチを遅延させるために、バスコントローラ５とメモリコントローラ６とは、複数のポートを備え、バス７上のトラフィックを妨げないように、これらポートのいくつかを用いて監視対象のフェッチを待ち状態とする機構を備えるとしてもよい。
【０１５９】
（第３の実施形態）
本実施形態では、上記第１及び第２の実施形態で説明した各種レジスタに対する設定の具体例を説明する。
【０１６０】
図９は、アクセス・ディセーブル・レジスタ１１の設定の一例を示すブロック図である。
【０１６１】
プロセッサＰ１は、サービス・リクエスト・レジスタ１６に、セット・フェッチ・ディセーブル・コマンド１６ｉ、開始アドレス１１ａ、終了アドレス１１ｂ、プロセッサＩＤ１１ｃ、ＤＭＡＣ・ＩＤ１１ｄを格納する。
【０１６２】
セット・フェッチ・ディセーブル・コマンド１６ｉは、上記図４のコマンド１６ａ＿１の例である。
【０１６３】
開始アドレス１１ａ、終了アドレス１１ｂ、プロセッサＩＤ１１ｃ、ＤＭＡＣ・ＩＤ１１ｄは、上記図４のデータ１６ｇ＿１に含まれる情報の例である。
【０１６４】
セット・フェッチ・ディセーブル・コマンド１６ｉは、アクセス・ディセーブル・レジスタ１１に対する開始アドレス１１ａ、終了アドレス１１ｂ、プロセッサＩＤ１１ｃ、ＤＭＡＣ・ＩＤ１１ｄの設定を、セキュリティプロセッサＳＰに実行させるためのコマンドである。
【０１６５】
セキュリティプロセッサＳＰは、サービス・リクエスト・レジスタ１６をアクセスする。そして、セキュリティプロセッサＳＰは、セット・フェッチ・ディセーブル・コマンド１６ｉに基づいて、サービス・リクエスト・レジスタ１６に格納されている開始アドレス１１ａ、終了アドレス１１ｂ、プロセッサＩＤ１１ｃ、ＤＭＡＣ・ＩＤ１１ｄを、アクセス・ディセーブル・レジスタ１１へ格納する。
【０１６６】
図１０は、ライト・プロテクト・レジスタ１３の設定の一例を示すブロック図である。
【０１６７】
プロセッサＰ１は、サービス・リクエスト・レジスタ１６に、セット・ライト・ディセーブル・コマンド１３ｉ、開始アドレス１３ａ、終了アドレス１３ｂ、プロセッサＩＤ１３ｃ及び／又はＤＭＡＣ・ＩＤ１３ｄに相当するマスタデバイスＩＤを格納する。
セット・ライト・ディセーブル・コマンド１３ｉは、上記図４のコマンド１６ａ＿１の例である。
【０１６８】
開始アドレス１３ａ、終了アドレス１３ｂ、プロセッサＩＤ１３ｃ及び／又はＤＭＡＣ・ＩＤ１３ｄは、上記図４のデータ１６ｇ＿１に含まれる情報の例である。
【０１６９】
セット・ライト・ディセーブル・コマンド１３ｉは、ライト・プロテクト・レジスタ１３に対する開始アドレス１３ａ、終了アドレス１３ｂ、プロセッサＩＤ１３ｃ及び／又はＤＭＡＣ・ＩＤ１３ｄの設定を、セキュリティプロセッサＳＰに実行させるためのコマンドである。
【０１７０】
セキュリティプロセッサＳＰは、サービス・リクエスト・レジスタ１６をアクセスする。そして、セキュリティプロセッサＳＰは、セット・ライト・ディセーブル・コマンド１３ｉに基づいて、サービス・リクエスト・レジスタ１６に格納されている開始アドレス１３ａ、終了アドレス１３ｂ、プロセッサＩＤ１３ｃ及び／又はＤＭＡＣ・ＩＤ１３ｄを、ライト・プロテクト・レジスタ１３へ格納する。
【０１７１】
図１１は、完了レジスタ１４の設定の一例を示すブロック図である。この図１１では、プロセッサＰ１によるライト処理の完了をセキュリティプロセッサＳＰへ通知するためのデータの設定を例示している。
【０１７２】
プロセッサＰ１は、ライト処理が完了した場合に、サービス・リクエスト・レジスタ１６に、プロセッサ・ライト・完了・コマンド１３ｊ、プロセッサＰ１を示すプロセッサＩＤ１３ｃ、ライト処理が完了したステータスを示すライト完了情報１３ｋを格納する。
【０１７３】
プロセッサ・ライト・完了・コマンド１３ｊは、プロセッサＰ１でライトが完了したことをセキュリティプロセッサＳＰへ通知するためのコマンドである。プロセッサ・ライト・完了・コマンド１３ｊは、上記図４のコマンド１６ａ＿１の例である。
【０１７４】
プロセッサＩＤ１３ｃ、ライト完了情報１３ｋは、上記図４のデータ１６ｇ＿１に含まれる情報の例である。
【０１７５】
セキュリティプロセッサＳＰは、サービス・リクエスト・レジスタ１６からプロセッサ・ライト・完了・コマンド１３ｊ、プロセッサＩＤ１３ｃ、ライト完了情報１３ｋを読み出し、完了レジスタ１４に完了ステータス１４ａを格納する。
【０１７６】
なお、ＤＭＡＣ４によるデータ転送の完了をセキュリティプロセッサＳＰへ通知する場合には、監視部１０がＤＭＡＣ４によるデータ転送の完了を検出し、データ転送完了を示す完了ステータス１４ａを、完了レジスタ１４に格納する。
【０１７７】
セキュリティプロセッサＳＰは、完了ステータス１４ａに格納されている完了レジスタ１４をアクセスすることで、プロセッサＰ１によるライト処理の完了を認識することができる。
【０１７８】
以上説明したように、本実施形態において、レジスタ１２は、セキュリティプロセッサＳＰのみが情報を設定可能であるが他のデバイスからは情報を設定不可のアクセス・ディセーブル・レジスタ１１及びライト・プロテクト・レジスタ１３、セキュリティプロセッサＳＰ及び監視部１０によって情報を設定可能な完了レジスタ１４、セキュリティプロセッサＳＰからプロセッサＰ１〜Ｐｎへの情報の通知に用いられるアクセス・ステータス・レジスタ１５、プロセッサＰ１〜ＰｎからセキュリティプロセッサＳｐへの情報の通知に用いられるサービス・リクエスト・レジスタ１６を備える。
【０１７９】
プロセッサＰ１は、コマンド１６ａ及び必要なデータ１６ｇをサービス・リクエスト・レジスタ１６に格納し、セキュリティプロセッサＳＰは、サービス・リクエスト・レジスタ１６からコマンド１６ａ及びデータ１６ｇを読み出し、アクセス・ディセーブル・レジスタ１１、ライト・プロテクト・レジスタ１３、又は、完了レジスタ１４に対する情報の設定を行う。
【０１８０】
これにより、プロセッサＰ１〜ＰｎからセキュリティプロセッサＳＰへ必要なコマンド１６ａ＿１〜１６＿ｎ及びデータ１６ｇ＿１〜１６＿ｎを通知することができる。さらに、セキュリティプロセッサＳＰは、プロセッサＰ１〜Ｐｎからのコマンド１６ａ＿１〜１６＿ｎに基づいて、セキュリティプロセッサＳＰのみが設定可能なレジスタへ、必要なデータ１６ｇ＿１〜１６＿ｎを設定することができる。そして、監視部１０は、セキュリティプロセッサＳＰによって設定されたレジスタ１２のデータに基づいて、ライト、データ転送、及びフェッチを制御することができる。このように、アクセス・ディセーブル・レジスタ１１、ライト・プロテクト・レジスタ１３に対する情報設定の権限を、セキュリティプロセッサＳＰに制限することにより、ファームウェア８の完全性を向上させることができる。
【０１８１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１８２】
１…プロセッシングデバイス、２…第１のメモリ、３…第２のメモリ、４…ＤＭＡＣ、５…バスコントローラ、６…メモリコントローラ、７…バス、８…ファームウェア、９…ＭＭＵ、１０…監視部、１１…アクセス・ディセーブル・レジスタ、１３…ライト・プロテクト・レジスタ、Ｐ１〜Ｐｎ…プロセッサ、ＳＰ…セキュリティプロセッサ。
【図１】
2020042341.tif 000003
【図２】
2020042341.tif 000004
【図３】
2020042341.tif 000005
【図４】
2020042341.tif 000006
【図５】
2020042341.tif 000007
【図６】
2020042341.tif 000008
【図７】
2020042341.tif 000009
【図８】
2020042341.tif 000010
【図９】
2020042341.tif 000011
【図１０】
2020042341.tif 000012
【図１１】
2020042341.tif 000013