JP2020042341A - プロセッシングデバイス及びソフトウェア実行制御方法 - Google Patents

プロセッシングデバイス及びソフトウェア実行制御方法 Download PDF

Info

Publication number
JP2020042341A
JP2020042341A JP2018166978A JP2018166978A JP2020042341A JP 2020042341 A JP2020042341 A JP 2020042341A JP 2018166978 A JP2018166978 A JP 2018166978A JP 2018166978 A JP2018166978 A JP 2018166978A JP 2020042341 A JP2020042341 A JP 2020042341A
Authority
JP
Japan
Prior art keywords
processor
fetch
area
information
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2018166978A
Other languages
English (en)
Inventor
久也 宮本
Hisaya Miyamoto
久也 宮本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2018166978A priority Critical patent/JP2020042341A/ja
Priority to US16/453,962 priority patent/US11188321B2/en
Publication of JP2020042341A publication Critical patent/JP2020042341A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】不当なソフトウェアの実行を防止する。【解決手段】本実施形態に係るプロセッシングデバイスは、第1及び第2のプロセッサと、メモリと、コントローラとを含む。第1のプロセッサは、第2のプロセッサに対して、ソフトウェアを配置しているメモリのメモリ領域に対するフェッチ許可を要求する。第2のプロセッサは、第1のプロセッサによって指定されたメモリ領域に格納されているソフトウェアを検証し、正当と判断した場合に、メモリ領域を指定する領域情報と第1のプロセッサによるフェッチを許可することを示すフェッチ情報とをコントローラに通知する。コントローラは、第2のプロセッサから領域情報とフェッチ情報とを受けるまで、メモリ領域に対するフェッチを不可とするための制御を行い、領域情報とフェッチ情報とを受けた場合に、第1のプロセッサによるフェッチを許可するための制御を行う。第1のプロセッサは、第2のプロセッサによってメモリ領域に対するフェッチが許可された場合に、ソフトウェアをフェッチする。【選択図】 図1

Description

本実施形態は、プロセッシングデバイス及びソフトウェア実行制御方法に関する。
マルチプロセッサシステムは、複数のプロセッサを備える。複数のプロセッサは、セキュリティCPU(Central Processing Unit)と、さらに複数のCPUを含むとしてもよい。セキュリティCPUは、例えば、複数のCPUで用いられるファームウェアの検証を実行する。複数のCPUは、検証されたファームウェアを実行する。
特開2014−235326号公報 特許第5482059号公報 米国特許第6564326号明細書
本実施形態は、不当なソフトウェアの実行を防止するプロセッシングデバイス及びソフトウェア実行制御方法を提供する。
本実施形態に係るプロセッシングデバイスは、第1のプロセッサと、メモリと、第2のプロセッサと、コントローラとを含む。メモリは、第1のプロセッサによってフェッチされるソフトウェアを格納する。第2のプロセッサは、ソフトウェアの検証を行う。コントローラは、第2のプロセッサからの要求に基づいて、第1のプロセッサによるフェッチを制御する。第1のプロセッサは、第2のプロセッサに対して、ソフトウェアを配置しているメモリのメモリ領域に対するフェッチ許可を要求する。第2のプロセッサは、第1のプロセッサによって指定されたメモリ領域に格納されているソフトウェアに対する検証の結果が正当と判断された場合に、メモリ領域を指定する領域情報と第1のプロセッサによるフェッチを許可することを示すフェッチ情報とをコントローラに通知する。コントローラは、第2のプロセッサから領域情報とフェッチ情報とを受けるまで、フェッチを不可とするための制御を行い、領域情報とフェッチ情報とを受けた場合に、第1のプロセッサによるフェッチを許可するための制御を行う。第1のプロセッサは、第2のプロセッサによってメモリ領域に対するフェッチが許可された場合に、ソフトウェアをフェッチする。
第1の実施形態に係るプロセッシングデバイスの構成の一例を示すブロック図。 セキュリティプロセッサにより設定されるアクセス・ディセーブル・レジスタの構成の一例を示すブロック図。 第2の実施形態に係るプロセッシングデバイスの構成の一例を示すブロック図。 セキュリティプロセッサ及びプロセッサにより設定されるレジスタの構成の一例を示すブロック図。 第2の実施形態に係るプロセッシングデバイスによるファームウェアのフェッチ処理の一例を示すフローチャート。 フェッチ処理を実行するプロセッシングデバイスの各構成要素の連携の一例を示すブロック図。 第2の実施形態に係るプロセッシングデバイスによるファームウェアの一部変更の一例を示すフローチャート。 ファームウェアの一部変更を実行するプロセッシングデバイスの各構成要素の連携の一例を示すブロック図。 アクセス・ディセーブル・レジスタの設定の一例を示すブロック図。 ライト・プロテクト・レジスタの設定の一例を示すブロック図。 完了レジスタの設定の一例を示すブロック図。
以下に、本実施形態について図面を参照して説明する。なお、以下の説明において、同一又は実質的に同一の機能を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。本実施形態は、技術的思想を具体化するための装置及び方法を例示するものであって、本実施形態の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。本実施形態の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
本実施形態は、ソフトウェアの完全性を確保するプロセッシングデバイスに関する。
本実施形態において、検証対象のソフトウェアはファームウェアの場合を例として説明するが、検証対象のソフトウェアは例えばオペレーティングシステム(OS)、アプリケーションソフトウェアなどでもよく、ソフトウェアの種類は限定されない。
本実施形態において、ソフトウェアとは、例えば、命令コード、データ、又は、命令コードとデータとの組み合わせ、を含むとしてもよい。本実施形態において、ソフトウェアに含まれるデータは、例えば、命令コードと同様に、リード・オンリー・データとする。
プロセッシングデバイスは、例えばマイクロコンピュータなどのプロセッサを搭載する組み込みデバイス又はシステムでもよい。プロセッシングデバイスは、マルチプロセッサシステム、又は、メモリシステムでもよい。プロセッシングデバイスはネットワークへ接続されてもよい。プロセッシングデバイスとホストコンピュータとをネットワーク経由で通信可能に接続することにより、ホストコンピュータからプロセッシングデバイスへ高度なサービスを提供可能である。
プロセッシングデバイスは、特定の機能を実現するためのファームウェアに加えて、秘匿されるべきデータを格納する場合がある。秘匿されるべきデータとしては、例えば、プロセッシングデバイスを使用するユーザに関する個人情報、財産情報、ユーザ又は団体の情報資産などがある。悪意を持つ第三者によってプロセッシングデバイスが本来の用途とは異なる別の用途に悪用されることは、防止されるべきである。高性能なプロセッサを実装したプロセッシングデバイスは高度なサービスを提供するために有用であるが、悪用された場合にユーザ、サービス提供者、デバイス製造者、社会全般に対する脅威となる。このような背景から、プロセッサを組み込んだプロセッシングデバイスには悪意を持つ者からの攻撃に対する耐性が求められる。
悪意を持つ第三者によるファームウェアの改竄を検出する目的で、プロセッシングデバイスの起動時にファームウェアに予め付与されている電子署名の検証を行うセキュアブートが用いられる。セキュアブートを用いることで、プロセッシングデバイスは、例えば、プロセッシングデバイスの起動時にロードされたファームウェアを検証し、予め署名された信頼できるファームウェアのみを実行可能である。
プロセッシングデバイスの健全性を保つためには、セキュアブートに加えて、さらに他の手段を用いることが好ましい。例えば、プロセッシングデバイスの動作中に、各プロセッサで実行中のファームウェアが改竄されることは防止すべきである。セキュアブートのみでは、このようなプロセッサで実行中のファームウェアの改竄を検出することが困難な場合がある。プロセッサで実行中のファームウェアを改竄する手法としては、例えば、ネットワーク経由で行われるバッファオーバーフロー攻撃などがある。
プロセッサによるメモリ空間へのアクセスを制御する機構としてMMU(Memory Management Unit)又はMPU(Memory Protection Unit)が利用される。MMU又はMPUは、これらが実装されるプロセッサによるメモリへのアクセスを制御する仕組みである。したがって、MMU又はMPUは、当該MMU又はMPUを実装しているプロセッサではない他のプロセッサの動作を制御しない。
例えば、特定のプロセッサのファームウェアがRAM(Random Access Memory)などのメモリにロードされる場合、仮にそのプロセッサが誤動作した場合においても、メモリに配置されているファームウェアの命令コード及びリード・オンリー・データが破壊されないように、MMU又はMPUは、ライトプロテクションを設定する。
上記のように、MMU又はMPUは、このMMU又はMPUを搭載するプロセッサとは異なるマスタデバイスを制御しない。ここで、マスタデバイスとは、例えば、ファームウェアが配置されるメモリ領域をアクセスするデバイスであるとする。本実施形態において、マスタデバイスは、それぞれ固有のマスタデバイスIDで識別される。
仮に、特定のファームウェアを実行する特定のプロセッサのMMUが、特定のファームウェアを配置したRAM上の領域をライトプロテクト設定によって保護したとする。この場合、RAM上の領域に対するライトプロテクションは、特定のプロセッサにのみ有効であり、他のマスタデバイスに対して影響しない。したがって、特定のプロセッサが保護すべきRAM上の領域に対してライトプロテクトを設定しても、特定のプロセッサではない他のマスタデバイスによって保護すべきRAM上の領域が変更される可能性がある。
これに対して、本実施形態に係るプロセッシングデバイスでは、特定のプロセッサのみならず他のマスタデバイスも、保護すべきRAM上の領域に格納されているファームウェアを変更不可とする。さらに、本実施形態に係るプロセッシングデバイスでは、必要に応じて変更不可の状態を解除可能とする。
本実施形態において、ファームウェアの変更は、ファームウェアの全部の変更、一部の変更、書き換え、置き換え、更新、バージョンアップなどを含むとする。
プロセッシングデバイスにおいて、少ないメモリ資源を有効に活用するために仮想記憶を導入し、ある物理アドレス上のファームウェアの命令コード又はデータを必要に応じて変更する場合がある。仮想記憶における置き換え操作は、そのファームウェアの置き換えを実行するプロセッサ自身又はそのプロセッサが操作するDMAC(Direct Memory Access Controller)などのマスタデバイスによって実現される。
プロセッシングデバイスの起動後に変更されたファームウェアの完全性を確保するためには、変更が正当又は不当であるかを検出し、不当なファームウェアがプロセッサにフェッチされることを防止する必要がある。
本実施形態では、ファームウェアの完全性を確保するために、セキュリティプロセッサがプロセッサによるファームウェアのフェッチを許可又は不可とする判断を行い、監視部が判断結果に応じてファームウェアのフェッチを許可又は不可とするための制御を行う。
以下で説明する第1の実施形態では、セキュリティプロセッサが、プロセッシングデバイスの起動時にロードされたファームウェアの検証を行い、監視部がその検証結果に応じてそのファームウェアを実行するプロセッサのメモリアクセスを制御する。ファームウェアを実行するプロセッサからメモリへのアクセスとは、例えば、ファームウェアを実行するプロセッサからメモリへのライト処理と、プロセッサによるメモリに格納されているファームウェアのフェッチとを含む。第1の実施形態において、セキュリティプロセッサは、このセキュリティプロセッサで実行されるファームウェアの検証を、リード・オンリーの命令コードによって実行する。例えば、このセキュリティプロセッサで実行されるファームウェアの検証は、電子証明を用いた検証により行われてもよい。
第2の実施形態では、セキュリティプロセッサが、ファームウェアの変更実行時にファームウェアの変更部分の検証を行い、監視部がその検証結果に応じてその変更部分を実行するプロセッサのメモリアクセスを制御する。第2の実施形態において、ファームウェアの変更部分の検証は、電子証明を用いた検証により行われてもよい。
(第1の実施形態)
本実施形態は、プロセッシングデバイスの起動時にロードされたファームウェアの完全性確保に関する。本実施形態においては、例えば、セキュリティプロセッサで実行されるセキュリティファームウェアがセキュリティプロセッサによって検証され、その後に、セキュリティプロセッサではない他のプロセッサで実行されるファームウェアがセキュリティプロセッサによって検証される。
図1は、本実施形態に係るプロセッシングデバイス1の構成の一例を示すブロック図である。
プロセッシングデバイス1は、第1のメモリ2と、第2のメモリ3と、DMAC4,4SPと、プロセッサP1〜Pnと、セキュリティプロセッサSPと、バスコントローラ5と、メモリコントローラ6と、バス7とを備える。
第1のメモリ2と、第2のメモリ3と、DMAC4,4SPと、プロセッサP1〜Pnと、セキュリティプロセッサSPと、バスコントローラ5と、メモリコントローラ6とは、バス7を介して互いにデータ送受信可能に接続されている。
本実施形態において、DMAC4,4SP、バスコントローラ5、メモリコントローラ6は、例えば、電子回路によって構成されてもよい。また、DMAC4,4SP、バスコントローラ5、メモリコントローラ6は、例えば、コントローラ又はプロセッサがプログラムを実行することにより実現されてもよい。
本実施形態において、プロセッシングデバイス1の起動時に、セキュリティプロセッサSPによって利用される資源は、例えば、第1のメモリ2におけるセキュリティプロセッサSP専用の領域2SP、第2のメモリ3におけるセキュリティプロセッサSP専用の領域3SP、セキュリティプロセッサSP専用のDMAC4SP、バスコントローラ5におけるセキュリティプロセッサSP専用のインタフェース5SP、メモリコントローラ6におけるセキュリティプロセッサSP専用のインタフェース6SPとする。
第1のメモリ2におけるセキュリティプロセッサSP専用の領域2SP、第2のメモリ3におけるセキュリティプロセッサSP専用の領域3SP、バスコントローラ5におけるセキュリティプロセッサSP専用のインタフェース5SP、メモリコントローラ6におけるセキュリティプロセッサSP専用のインタフェース6SPは、セキュリティプロセッサSP及びセキュリティプロセッサSP専用のDMAC4SPのみによって使用可能であり、他の構成要素からは使用されないとする。
プロセッシングデバイス1の起動時に、セキュリティプロセッサSPは、専用のDMAC4SPを用いて、第1のメモリ2におけるセキュリティプロセッサSP専用の領域2SPから第2のメモリ3におけるセキュリティプロセッサSP専用の領域3SPへ、セキュリティファームウェア8SPをロードする。
セキュリティプロセッサSPは、セキュリティファームウェア8SPを検証し、検証結果が正当である場合に、第2のメモリ3における領域3SPからセキュリティファームウェア8SPをフェッチし、実行する。本実施形態において、セキュリティプロセッサSPを起動し、セキュリティファームウェア検証を実施するプログラムは、リード・オンリー・メモリに格納されており、書き換え不可とする。
上記のような手順でセキュリティプロセッサSPを起動することにより、セキュリティプロセッサSPが不当な処理を実行することを防止することができる。
第1のメモリ2は、例えば、ハードディスクドライブ、SSD(Solid State Drive)などの不揮発性メモリであり、ファームウェア8を保持する。本実施形態において、プロセッシングデバイス1で実行されるファームウェア8は例示である。プロセッシングデバイス1では、ファームウェア8のみではなく様々なファームウェアを実行可能である。2以上のプロセッサが、同じファームウェアを実行してもよく、又は、それぞれ異なるファームウェアを実行してもよい。
第2のメモリ3は、例えば、RAMである。第2のメモリ3は、プロセッシングデバイス1の起動時にロードされ、プロセッサP1〜Pnによってフェッチされるファームウェア8を一時的に保持する。この第2のメモリ3は、例えば、第1のメモリ2より高速にアクセス可能であり、プロセッサP1〜Pnによって主記憶装置として利用される。
本実施形態において、プロセッサP1〜Pnから第2のメモリ3への書き込み、及び、プロセッサP1〜PnがDMAC4を用いて第2のメモリ3へ書き込みを行うことを、ライト処理という。ライト処理としては、例えば、プロセッサP1〜Pnから第2のメモリ3へのキャッシュアウトなどがある。
本実施形態において、DMAC4,4SPが、例えば第1のメモリ2などの転送元デバイスから第2のメモリ3へ、例えばファームウェア8,8SPの一部又は全部などを転送することを、データ転送という。このデータ転送は、例えば、ロードと表記する場合もある。なお、データ転送は、プロセッサP1〜Pnではない他の構成要素によるライト処理と定義してもよい。換言すれば、データ転送は、ライト処理の一種と定義してもよい。
DMAC4は、プロセッサP1〜Pnを介することなく、送信元と受信先との間のデータ転送を実現する。なお、DMAC4は、複数備えられ、複数のDMACのうちデータ転送に利用されるDMACがDMAC・IDで指定されてもよい。
プロセッサP1〜Pnは、例えばCPUである。各プロセッサP1〜Pnのそれぞれは、MMU9を備える。本実施形態では、プロセッシングデバイス1が複数のプロセッサP1〜Pnを備えているが、プロセッシングデバイス1が備えるプロセッサの数は1以上であればよい。
以下では、各プロセッサP1〜Pnで行われる同じ動作に関してプロセッサP1を用いて説明を行う。以下の説明は、複数のプロセッサP1〜Pnがあたかも1つのプロセッサとして振舞うのではなく、以下の説明が複数のプロセッサP1〜Pnのそれぞれで実現されることを意味する。
MMU9は、プロセッサP1によるメモリアクセスを制御する。MMU9は、例えば、仮想アドレスから物理アドレスへの変換、メモリプロテクト、キャッシュ制御などを行う。
本実施形態では、プロセッサP1においてMMU9が用いられる場合を例として説明するが、MMU9に代えてMPUが用いられてもよい。MPUは、例えば、MMU9と同様にメモリプロテクトを実現するが、アドレス変換などの機能は備えなくてもよい。
プロセッサP1は、例えば、プロセッサP1に備えられているMMU9により、ファームウェア8の実行権を独自に設定し、管理する。
セキュリティプロセッサSPは、上述したように、例えば、セキュリティファームウェア8SPを実行し、プロセッサP1によりフェッチされるファームウェア8の完全性の検証とその検証結果に基づく通知などの制御を実行する。
本実施形態においては、プロセッサP1及びセキュリティプロセッサSPは、他のプロセッサP2〜Pnに備えられているMMU9の設定を変更不可であり、他のプロセッサP2〜PnのMMU9によるファームウェア実行権を直接制御できなくてもよい。
セキュリティプロセッサSPは、メモリコントローラ6に備えられている監視部10を用いることにより、間接的に、プロセッサP1で実行されるファームウェア8の実行権を制御する。監視部10は、例えば、メモリコントローラ6の一部により実現されてもよく、監視用のコントローラによって実現されてもよい。
セキュリティプロセッサSPは、プロセッシングデバイス1の起動時に、第1のメモリ2から第2のメモリ3へロードされ、プロセッサP1にフェッチされる前のファームウェア8を検証する。これにより、第2のメモリ3のメモリ領域Eに配置されるファームウェア8に対する完全性を確保することができる。
バスコントローラ5は、送信元から送信先へのバス7経由のデータ転送を管理する。より具体的には、バスコントローラ5は、アクセス元からアクセス先へのアクセスを許可するか否かを、例えばIDなどに基づいて判断する。
メモリコントローラ6は、第1及び第2のメモリ2,3に対するアクセスを許可するか否かを管理する。本実施形態において、メモリコントローラ6は、バスコントローラ5と連携して動作する。メモリコントローラ6は、例えば、監視部10とアクセス・ディセーブル・レジスタ11とを備える。なお、この監視部10とアクセス・ディセーブル・レジスタ11とのうちの少なくとも一方は、メモリコントローラ6の外部に備えられてもよい。監視部10とアクセス・ディセーブル・レジスタ11とは、メモリコントローラ6のみではなく、バスコントローラ5からも利用可能としてもよい。
監視部10は、セキュリティプロセッサSPからの要求に基づいて、第2のメモリ3の複数のメモリ領域を監視し、プロセッサP1によるファームウェア8のフェッチの制御を行う。例えば、監視部10は、セキュリティプロセッサSPによって設定された第2のメモリ3の検証対象のメモリ領域Eに格納されているファームウェア8が検証されるまで、当該メモリ領域Eのファームウェア8に対するフェッチ処理を待ち状態とする。監視部10は、例えば、電子回路によって構成されてもよい。また、監視部10の機能は、コントローラ又はプロセッサがプログラムを実行することにより実現されてもよい。
アクセス・ディセーブル・レジスタ11は、第2のメモリ3におけるメモリ領域Eのファームウェア8に対してフェッチを許可しているか否かを示す情報を格納する。このアクセス・ディセーブル・レジスタ11に対しては、セキュリティプロセッサSPのみが情報を設定可能とする。監視部10は、アクセス・ディセーブル・レジスタ11に設定された情報を読み出し可能である。
本実施形態において、プロセッシングデバイス1に備えられるプロセッサP1、セキュリティプロセッサSP、監視部10は、例えば、以下のように連携して動作する。
プロセッシングデバイス1の起動時に、プロセッサP1は、セキュリティプロセッサSPに対して、メモリ領域Eにロードされたファームウェア8に対するフェッチ許可を要求する。
次に、セキュリティプロセッサSPは、メモリ領域Eに格納されているファームウェア8に対する検証を行い、検証の結果が正当と判断された場合に、メモリ領域Eを指定する領域情報と、後述の図2に図示されるフェッチ許可を示すフェッチ情報11eとを、アクセス・ディセーブル・レジスタ11を介して監視部10に通知する。
監視部10は、セキュリティプロセッサSPからアクセス・ディセーブル・レジスタ11を介して、領域情報とフェッチ許可を示すフェッチ情報11eとを受けるまで、メモリ領域Eに対するフェッチを待ち状態とする制御(例えば遅延又は禁止)を行う。また、監視部10は、セキュリティプロセッサSPからアクセス・ディセーブル・レジスタ11を介してフェッチ許可を示すフェッチ情報11eを受けた場合に、メモリ領域Eに対するフェッチを許可するための制御を行う。ここで、監視部10は、メモリ領域Eに対するフェッチを許可している場合に、メモリ領域Eに対するライト処理又はデータ転送を待ち状態とするための制御を行う。
プロセッサP1は、セキュリティプロセッサSPからメモリ領域Eに対するフェッチが許可されたことを示す通知を受けた場合に、ファームウェア8のフェッチを開始する。
本実施形態のプロセッシングデバイス1をさらに詳細に説明する。
プロセッシングデバイス1の各プロセッサP1〜Pnは、第2のメモリ3を共有する。
セキュリティプロセッサSPは、セキュリティ専用に用いられるプロセッサである。セキュリティプロセッサSPは、ファームウェア8のロード時に、ファームウェア8の完全性・正当性を検証する。
プロセッサP1は、MMU9を用いて、ファームウェア8の実行権を、プロセッサP1上で動作するOS、又は、専用のメモリ管理処理ルーチンによって制御する。上述したように、本実施形態において、セキュリティプロセッサSPは、プロセッサP1のMMU9の設定内容を制御できなくてよい。
セキュリティプロセッサSPは、プロセッシングデバイス1の起動時におけるファームウェア8のロード処理に対してファームウェア実行権に関する判断を行う。
さらに、監視部10は、セキュリティプロセッサSPの判断にしたがって、第2のメモリ3のメモリ領域Eに配置されているファームウェア8のプロセッサP1によるフェッチに対する制御を行う。
より具体的に説明すると、セキュリティプロセッサSPは、プロセッシングデバイス1の起動時に、メモリ領域Eに対するファームウェア8のロードの発生を検出する。そして、セキュリティプロセッサSPは、検出したロードが正当であるか、又は、不当であるかを判断する。セキュリティプロセッサSPは、権限を有しないマスタデバイスによるロードを検出し、権限のないロードを排除し、ロードされたファームウェア8の完全性を検証し、検証完了まで検証対象のファームウェア8をフェッチ不可に設定する。
このセキュリティプロセッサSPの検証は、プロセッシングデバイス1の起動時に、第1のメモリ2から第2のメモリ3へロードされたファームウェア8に対して実行され、ファームウェア8が特定のプロセッサP1によって実行される前に完了する。これにより、プロセッシングデバイス1は、プロセッシングデバイス1の起動時に、セキュリティプロセッサSPによって正当と判断されたファームウェア8のみを実行することができ、プロセッシングデバイス1の起動の安全性を確保することができる。
監視部10は、バスコントローラ5と連動するメモリコントローラ6内に設けられている専用の回路であり、セキュリティプロセッサSPによって設定された情報の内容に基づいてプロセッサP1によるフェッチを制御する。
メモリコントローラ6のアクセス・ディセーブル・レジスタ11は、セキュリティプロセッサSPからのみ設定可能な記憶回路である。
プロセッサP1は、セキュリティプロセッサSPがファームウェア8を正当と判断した場合に、メモリコントローラ6を介して第2のメモリ3のメモリ領域Eから命令コード又はデータをフェッチ可能とする。例えば、メモリコントローラ6は、全てのプロセッサP1〜Pnが、各プロセッサP1〜Pnのフェッチの可否を示すステータス(例えば、後述のフェッチ情報11e)をアクセスできるように、各プロセッサP1〜Pnにとってリード・オンリーであるアクセス・ディセーブル・レジスタ11を備える。
図2は、メモリコントローラ6に備えられ、セキュリティプロセッサSPにより設定されるアクセス・ディセーブル・レジスタ11の構成の一例を示すブロック図である。
この図2では、第2のメモリ3における検証対象のメモリ領域Eの監視に用いられる情報のみを例示している。図2と同様の情報は、第2のメモリ3における検証対象のメモリ領域ごとに設定される。
アクセス・ディセーブル・レジスタ11には、メモリ領域Eを指定する領域情報の一例である開始アドレス11a及び終了アドレス11b、メモリ領域Eからフェッチを行うプロセッサP1を示すプロセッサID11c、メモリ領域Eに対してデータの転送を行うDMAC4を示すDMAC・ID11d、フェッチを行うプロセッサP1に対してメモリ領域Eからのフェッチを許可するか否かを示すフェッチ情報11eを格納する。フェッチ情報11eは、デフォルトでフェッチ不可を示し、セキュリティプロセッサSPによってフェッチが許可された場合に、フェッチ許可を示す。
バスコントローラ5と連動するメモリコントローラ6の監視部10は、マスタデバイスによるメモリ領域Eに対するライト処理又はデータ転送を、マスタデバイスIDにより監視する。マスタデバイスは、例えばプロセッサP1又はDMAC4である。マスタデバイスIDは、例えば、プロセッサID11c又はDMAC・ID11dである。マスタデバイスIDの示すマスタデバイスがメモリ領域Eに対するライト処理又はデータ転送を要求した場合、監視部10は、アクセス・ディセーブル・レジスタ11をアクセスし、フェッチ情報11eがフェッチ不可を示す場合、ライト処理又はデータ転送が許可されていると判断し、ライト処理又はデータ転送を許可する制御を行う。一方、監視部10は、フェッチ情報11eがフェッチ許可を示す場合、ライト処理又はデータ転送が不可であると判断し、ライト処理又はデータ転送を不可とする制御を行う。例えば、プロセッシングデバイス1が実装するプロセッサP1〜Pnの数をnとすると、アクセス・ディセーブル・レジスタ11が管理するメモリ領域の数Nは、nより大きくなる。
監視部10は、アクセス・ディセーブル・レジスタ11で許可されていないフェッチを検出した場合、この許可されていないフェッチ要求を適切に遅延させる。
監視部10は、メモリ領域Eに対するフェッチを許可する場合、このメモリ領域Eに対するライト処理又はデータ転送を不可とする制御を行う。これにより、ファームウェア8が実行中に改竄されることを防止することができる。
監視部10は、図2に図示されるDMAC・ID11dの示すDMAC4から転送完了通知を受信した場合に、第1のメモリ2から第2のメモリ3へのファームウェア8のロードが完了したと判断し、その旨をプロセッサP1へ通知する。
第1のメモリ2から第2のメモリ3へのファームウェア8のロードが完了した場合に、プロセッサP1は、例えば、セキュリティプロセッサSPによってファームウェア8のフェッチが許可されるまで、このフェッチを待つ状態へ遷移してもよい。このフェッチを待つ状態は、dormant又はsleepと表現されてもよい。あるいは、プロセッサP1は、ファームウェア8のフェッチが許可されるまでアクセス・ディセーブル・レジスタ11をポーリングすることにより、ファームウェア8のフェッチを遅延してもよい。
セキュリティプロセッサSPは、第2のメモリ3にロードされたファームウェア8が正当か否か検証する。この検証について具体例を挙げて説明する。第2のメモリ3にロードされたファームウェア8は、命令コード及びデータを含むファームウェア本体とファームウェア本体に関する第1の認証情報とを含む。セキュリティプロセッサSPは、公開鍵を保持する。セキュリティプロセッサSPは、ロードされたファームウェア本体と公開鍵とに基づいて第2の認証情報を生成する。そして、セキュリティプロセッサSPは、第1の認証情報と第2の認証情報とが整合するか否かに基づいて、ファームウェア8が正当か否か判断する。
セキュリティプロセッサSPは、アクセス・ディセーブル・レジスタ11に対するフェッチ情報11eの設定によって、プロセッサP1に対する検証済みファームウェア8のフェッチ許可の通知を行う。例えば、セキュリティプロセッサSPは、アクセス・ディセーブル・レジスタ11に、領域情報とフェッチ許可を示すフェッチ情報11eとを設定する。監視部10は、フェッチ情報11eがフェッチ許可を示す場合に、このフェッチ情報11eに対応するプロセッサID11cで示す待ち状態のプロセッサP1に対して割り込みを発生させる。このように、監視部10は、待ち状態のプロセッサP1に対して割り込みを発生させることによりプロセッサP1の待ち状態を解除する。
以上説明した本実施形態においては、セキュリティプロセッサSPが、バスコントローラ5と連動するメモリコントローラ6に対し、ファームウェア8を配置している第2のメモリ3のメモリ領域Eを指定する領域情報と、当該メモリ領域Eのファームウェア8をフェッチ可能なプロセッサP1を指定するプロセッサID11cとを、アクセス・ディセーブル・レジスタ11に設定する。
プロセッサP1が、このプロセッサP1によるフェッチが許可されていない第2のメモリ3のメモリ領域に対してフェッチを要求している場合、メモリコントローラ6の監視部10は、このフェッチ要求を待ち状態とする。
メモリコントローラ6に対するフェッチ監視対象のメモリ領域Eを指定する領域情報とプロセッサP1を指定するプロセッサID11cとの設定は、セキュリティプロセッサSPのみによって実行される。
このように、セキュリティプロセッサSPのみが、メモリ領域Eを指定する領域情報と、このメモリ領域Eのファームウェア8のフェッチを許可するプロセッサP1を指定するプロセッサID11cとを設定可能とすることにより、プロセッサP1によるファームウェア8のフェッチの完全性を向上させることができる。
本実施形態においては、セキュリティプロセッサSPによって、プロセッシングデバイス1の起動時にロードされたファームウェア8が検証され、検証の結果が正当な場合に、セキュリティプロセッサSPが、プロセッサP1によるファームウェア8のフェッチを許可する。これにより、ロードされたファームウェア8の完全性を確保することができる。
本実施形態において、監視部10は、プロセッシングデバイス1の起動後、フェッチ中のファームウェア8が格納されているメモリ領域Eに対するライト処理又はデータ転送を禁止する。このため、実行中のファームウェア8が改竄されることを防止することができる。
本実施形態において、セキュリティプロセッサSPは、専用の領域2SPから専用の領域3SPへ、専用のDMAC4SPを用いて書き換え不可のセキュリティファームウェア8SPをロードし、セキュリティファームウェア8SPをフェッチし、実行する。これにより、セキュリティプロセッサSPで実行される処理の安全を確保することができる。
本実施形態においては、プロセッシングデバイス1が本来の用途ではない別の用途で利用されることを防止でき、悪意を持つ者からの攻撃に対する耐性を増すことができる。
本実施形態は、プロセッサP1〜Pnの設計変更をすることなく、より高レベルにファームウェア8の完全性を確保することができ、導入容易である。
(第2の実施形態)
本実施形態は、上記第1の実施形態で説明したプロセッシングデバイス1の起動段階での完全性の確保とは異なり、ファームウェア8の一部変更段階での完全性の確保に関する。なお、ファームウェア8の一部変更は、プロセッシングデバイス1に備えられている複数のプロセッサP1〜Pnにより同時に発生してもよい。ファームウェア8の一部の変更に限らず、ファームウェア8の全体が変更される場合であっても、本実施形態と同様の制御を適用可能である。ファームウェア8の一部変更は、例えば、ソフトウェアの一部の更新、書き換え、ロード、置き換えなどを含む。
図3は、本実施形態に係るプロセッシングデバイス1の構成の一例を示すブロック図である。
本実施形態では、第2のメモリ3に配置されているファームウェア8の一部が変更される。セキュリティプロセッサSPは、ファームウェア8の変更部分8aを検証する。ファームウェア8の変更部分8aは、変更後のソフトウェア要素と表記されてもよい。
監視部10は、セキュリティプロセッサSPによって情報が設定されたレジスタ12をアクセスし、検証結果に応じてプロセッサP1によるファームウェア8の実行を制御する。ファームウェア8の変更部分8aは、例えば、命令コード、データ、又は、命令コードとデータとの双方を含む。
本実施形態において、メモリ領域Eに対するファームウェア8の配置及び変更、及び、メモリ領域Eに対するライト権限は、各プロセッサP1〜PnのMMU9が管理し、MMU9が、各プロセッサP1〜Pnからメモリ領域Eへのアクセスの制御を行う。
本実施形態において、プロセッシングデバイス1に備えられるプロセッサP1、セキュリティプロセッサSP、監視部10は、例えば、以下のように連携して動作する。
まず、プロセッシングデバイス1は、メモリ領域Eに格納されたファームウェア8を以下の動作により実行する。
プロセッサP1は、セキュリティプロセッサSPに対して、ファームウェア8を配置しているメモリ領域Eに対するフェッチ許可を要求する。
セキュリティプロセッサSPは、メモリ領域Eに格納されているファームウェア8に対する検証を行い、検証結果が正当を示す場合に、メモリ領域Eを指定する領域情報(例えば開始アドレス11a及び終了アドレス11b)とフェッチ許可を示すフェッチ情報11eとを、レジスタ12を介して監視部10に通知する。
監視部10は、セキュリティプロセッサSPから領域情報とフェッチ許可を示すフェッチ情報11eとを受けるまで、メモリ領域Eに対するフェッチを不可とするための制御を行い、領域情報とフェッチ許可を示すフェッチ情報11eとを受けた場合に、メモリ領域Eに対するフェッチを許可するための制御を行う。さらに、監視部10は、メモリ領域Eに対するフェッチが許可されている場合に、メモリ領域Eに対するライト処理又はデータ転送を不可とするための制御を行う。
プロセッサP1は、セキュリティプロセッサSPから、メモリ領域Eを指定する領域情報とフェッチが許可されたことを示すフェッチ情報11eとの通知を受けた場合に、ファームウェア8のフェッチを開始する。
ここで、プロセッサP1が、ファームウェア8の変更をセキュリティプロセッサSPへ要求したとする。
セキュリティプロセッサSPは、メモリ領域E内の変更領域CEを指定する変更領域情報と、変更領域CEに対する変更を許可するマスタデバイスを示すマスタデバイスIDと、後述の図4に図示される変更領域CEに対する変更許可を示すライト情報13eとを、レジスタ12を介して監視部10に通知する。
監視部10は、セキュリティプロセッサSPから変更領域情報と変更許可を示すライト情報13eとを受けるまで、変更領域CEに対するライト処理又はデータ転送を不可とするための制御を行い、変更領域情報と変更許可を示すライト情報13eとを受けた場合に、変更領域CEに対してライト処理又はデータ転送を許可するための制御を行う。さらに、監視部10は、マスタデバイスが変更領域CEに対してライト処理又はデータ転送を行っている間、変更領域CEに対するフェッチを不可とするための制御を行う。
マスタデバイスは、セキュリティプロセッサSPからライト処理又はデータ転送を許可することを示す通知を受けた場合に、変更領域CEに対して変更を行う。
セキュリティプロセッサSPは、変更領域CEに格納された変更部分8aの検証を行い、変更部分8aが正当である場合に、変更領域CEに対するライト処理又はデータ転送の許可を取り消す。セキュリティプロセッサSPは、ライト処理又はデータ転送の許可が取り消された場合に、プロセッサP1による変更領域CEに対するフェッチを許可する。
図4は、メモリコントローラ6に備えられ、セキュリティプロセッサSP及びプロセッサP1〜Pnにより設定されるレジスタ12の構成の一例を示すブロック図である。
この図4では、第2のメモリ3において検証対象となる特定のメモリ領域Eに対応する情報を主に例示している。図4と同様の情報は、第2のメモリ3におけるメモリ領域ごとに設定される。
レジスタ12は、アクセス・ディセーブル・レジスタ11、ライト・プロテクト・レジスタ13、完了レジスタ14、アクセス・ステータス・レジスタ15、サービス・リクエスト・レジスタ16を含む。
アクセス・ディセーブル・レジスタ11、ライト・プロテクト・レジスタ13に対しては、セキュリティプロセッサSPのみが情報を設定可能である。
完了レジスタ14に対しては、セキュリティプロセッサSP及び監視部10のみが情報を設定可能である。
アクセス・ステータス・レジスタ15に対しては、セキュリティプロセッサSPが情報を設定可能であり、各プロセッサP1〜Pn及びDMAC4が情報を読み出し可能である。
サービス・リクエスト・レジスタ16に対しては、プロセッサP1〜Pnが情報を設定可能であり、セキュリティプロセッサSPが情報を読み出し可能である。
ライト・プロテクト・レジスタ13は、ファームウェア8の変更部分8aに対応する変更領域CEに対するライトプロテクトを実現するための情報を保持する。監視部10は、ライト・プロテクト・レジスタ13に設定された情報に基づいて、マスタデバイスによる変更領域CEに対するライト処理又はデータ転送を許可又は不可とする制御を行う。
ライト・プロテクト・レジスタ13は、変更領域CEを指定する変更領域情報の一例である開始アドレス13a及び終了アドレス13b、変更領域CEに対するライト処理を許可するプロセッサP1を示すプロセッサID13c、変更領域CEに対するデータの転送を許可するDMAC4を示すDMAC・ID13d、変更領域CEに対するライト処理を許可するか否かを示すライト情報13eを格納する。ライト情報13eは、デフォルトでライト処理又はデータ転送の不可を示し、セキュリティプロセッサSPによってライト処理又はデータ転送が許可された場合に、ライト処理又はデータ転送の許可へ変更される。プロセッサID13c、DMAC・ID13d、又は、プロセッサID13cとDMAC・ID13dとの双方は、マスタデバイスIDに相当する。
ライト・プロテクト・レジスタ13に設定されているライト情報13eがライト処理又はデータ転送の許可を示す場合、対応するプロセッサID13cの示すプロセッサP1又はDMAC・ID13dの示すDMAC4は、対応する変更領域情報の示す変更領域CEに対するライト処理及びデータ転送が可能である。これとは逆に、ライト・プロテクト・レジスタ13に設定されているライト情報13eがライト処理又はデータ転送の不可を示す場合、対応するプロセッサID13cの示すプロセッサP1又はDMAC・ID13dの示すDMAC4は、対応する変更領域情報の示す変更領域CEに対するライト処理又はデータ転送が不可となる。
完了レジスタ14は、ライト・プロテクト・レジスタ13に格納されているプロセッサID13cの示すプロセッサP1によるライト処理が完了したか否か、又は、ライト・プロテクト・レジスタ13に格納されているDMAC・ID13dの示すDMAC4によるデータ転送が完了したか否かを示す完了ステータス14aを格納する。
この完了レジスタ14に対する完了ステータス14aの設定を、以下で具体的に説明する。
監視部10は、DMAC4からの通知からDMAC4によるデータ転送の完了を検出し、データ転送の完了を検出した場合に、データ転送完了を示す完了ステータス14aを、完了レジスタ14に格納する。
プロセッサP1がライト処理を完了すると、このプロセッサP1は、サービス・リクエスト・レジスタ16に対して、後述のデータ16g_1の一種でありライト処理完了を示すライト完了情報13kを格納する。セキュリティプロセッサSPは、サービス・リクエスト・レジスタ16からライト処理完了を示すライト完了情報13kを読み出すことにより、ライト処理完了を検知し、ライト処理完了を示す完了ステータス14aを、完了レジスタ14に格納する。
したがって、本実施形態において、完了レジスタ14に情報を設定可能な構成要素は、監視部10とセキュリティプロセッサSPとなる。
アクセス・ステータス・レジスタ15は、セキュリティプロセッサSPが情報を設定可能であり、アクセス・ステータス・レジスタ15に設定された情報は、各プロセッサP1〜Pn又はDMAC4が読み出し可能である。セキュリティプロセッサSPは、プロセッサP1によるライト処理又はDMAC4によるデータ転送が許可されているか否かを示すアクセスステータス15aを、アクセス・ステータス・レジスタ15へ格納する。これにより、ライト処理又はデータ転送が許可されているか否かを、セキュリティプロセッサSPからプロセッサP1又はDMAC4へ通知することができる。
サービス・リクエスト・レジスタ16は、各プロセッサP1〜PnからセキュリティプロセッサSPへ通知すべきコマンド16a_1〜16a_n、及び、データ16g_1〜16g_nを格納する。具体的に説明すると、各プロセッサP1〜Pnは、セキュリティプロセッサSPへ通知すべきコマンド16a_1〜16a_n及びデータ16g_1〜16g_nをサービス・リクエスト・レジスタ16へ格納し、セキュリティプロセッサSPは、コマンド16a_1〜16a_n及びデータ16g_1〜16g_nをサービス・リクエスト・レジスタ16から読み出す。これにより、各プロセッサP1〜PnからセキュリティプロセッサSPへ、コマンド16a_1〜16a_n及びデータ16g_1〜16g_nを通知することができる。
本実施形態において、特定のプロセッサP1に対応するライト・プロテクト・レジスタ13によって指定される変更領域CE(すなわち、開始アドレス13aから終了アドレス13bの領域)は、特定のプロセッサP1に対応するアクセス・ディセーブル・レジスタ11によって指定されるメモリ領域E(すなわち、開始アドレス11aから終了アドレス11bの領域)に包含される。
監視部10は、ライト・プロテクト・レジスタ13をアクセスし、ライト・プロテクト・レジスタ13で許可されていないプロセッサP1によるライト処理又はDMAC4によるデータ転送を検出した場合、このライト処理又はデータ転送を無効化するとともに、セキュリティプロセッサSPにセキュリティの侵害を通知する割り込み処理を実行する。
上述したように、本実施形態において、監視部10は、DMAC4によるデータ転送を監視する。そして、監視部10は、ライト・プロテクト・レジスタ13に設定されたDMAC・ID13dの示すDMAC4が変更領域CEへのデータ転送を完了した場合、完了レジスタ14にデータ転送完了を示す完了ステータス14aを設定する。セキュリティプロセッサSPは、完了レジスタ14をアクセスすることにより、変更領域CEに対するデータ転送の完了を判断可能である。
一方で、プロセッサID13cの示すプロセッサP1による変更領域CEへのライト処理の完了は、監視部10によって検出しなくてもよい。本実施形態では、プロセッサP1は、変更領域CEへのライト処理を完了すると、ライト処理完了を示すライト完了情報13kをサービス・リクエスト・レジスタ16に格納する。そして、セキュリティプロセッサSPは、サービス・リクエスト・レジスタ16からライト処理完了を示すライト完了情報13kを読み出すことにより、プロセッサP1による変更領域CEへのライト処理の完了を判断可能である。
監視部10は、完了レジスタ14に完了ステータス14aが格納された状態で、プロセッサID13c又はDMAC・ID13dで示されるマスタデバイスが、ライト・プロテクト・レジスタ13の開始アドレス13a及び終了アドレス13bで指定された変更領域CEに対して、ライト処理又はデータ転送を実行した場合、このライト処理又はデータ転送をエラーとして検出し、セキュリティプロセッサSPへ通知する。これにより、セキュリティプロセッサSPにおける検証中に改ざんが行われる可能性を排除することができる。監視部10は、例えば、セキュリティプロセッサSPに対する割り込みにより、このセキュリティプロセッサSpへエラーを通知してもよい。さらに、監視部10は、エラーが検出されたことを示すエラーステータス14bを完了レジスタ14へ格納してもよい。
プロセッサP1がファームウェア8の命令コードの全てを実行するためには、セキュリティプロセッサSPは、アクセス・ディセーブル・レジスタ11に対して、適切にメモリ領域Eを指定する領域情報(すなわち、開始アドレス11a及び終了アドレス11b)を設定し、プロセッサID11cを設定し、DMAC・ID11dを設定し、フェッチ許可を示すフェッチ情報11eを設定する。
さらに、プロセッサP1がファームウェア8の命令コードの全てを実行するためには、セキュリティプロセッサSPは、ライト・プロテクト・レジスタ13に対して、適切に変更領域CEを指定する変更領域情報(すなわち、開始アドレス13a及び終了アドレス13b)を設定し、プロセッサID13c又はDMAC・ID13dを設定し、変更領域CEに対してライト処理又はデータ転送を不可とすることを示すライト情報13eを設定する。
ライト・プロテクト・レジスタ13のライト情報13eがライト不可を示す場合に、プロセッサID13cの示すプロセッサP1、又は、DMAC・ID13dの示すDMAC4は、変更領域CEに対するライト処理、又は、データ転送を行わず、プロセッサP1は、第2のメモリ3の変更領域CEから変更部分8aをフェッチ可能である。
なお、ライト情報13eがライト不可を示す場合、開始アドレス13a、終了アドレス13b、プロセッサID13c、DMAC・ID13dは省略されていてもよい。
プロセッサP1は、ファームウェア8の一部を変更する場合、セキュリティプロセッサSPに対して、第2のメモリ3の変更領域CEを指定する変更領域情報、ライト処理を行うプロセッサP1又はデータ転送を行うDMAC4などを示すマスタデバイスIDを、プロセッサ間通信により要求する。本実施形態の例では、プロセッサP1からセキュリティプロセッサSPへの情報の伝達のために、サービス・リクエスト・レジスタが用いられる。
セキュリティプロセッサSPは、通知された内容を、ライト・プロテクト・レジスタ13へ設定し、ライト処理又はデータ転送の許可を示すライト情報13eをライト・プロテクト・レジスタ13へ設定する。
そして、セキュリティプロセッサSPは、アクセス・ステータス・レジスタ15にライト処理又はデータ転送の許可を示すアクセスステータス15aを設定する。プロセッサP1又はDMAC4は、アクセス・ステータス・レジスタ15をアクセスし、ライト処理又はデータ転送の許可を示すアクセスステータス15aを取得する。これにより、セキュリティプロセッサSPからプロセッサP1又はDMAC4へライト処理又はデータ転送の許可が通知される。
アクセス・ステータス・レジスタ15のアクセスステータス15aがライト処理又はデータ転送の許可を示す場合、ライト・プロテクト・レジスタ13のプロセッサID13cの示すプロセッサP1又はDMAC・ID13dの示すDMAC4は、プロセッサP1からセキュリティプロセッサSPへ要求された変更領域CEへのライト処理又はデータ転送を行う。この時、監視部10は、ライト・プロテクト・レジスタ13に設定された変更領域情報の示す変更領域CE内へのライト処理又はデータ転送を許可するとともに、プロセッサP1がライト・プロテクト・レジスタ13に格納されている変更領域情報の示す変更領域CEからフェッチを行うことを適切に遅延させる。フェッチの遅延状況は、セキュリティプロセッサSPが、完了レジスタ14の完了ステータス14aによってライト処理又はデータ転送の完了を検出し、ライト・プロテクト・レジスタ13の変更領域情報の示す変更領域CEの変更部分8aを検証し、変更領域CEに格納されている変更部分8aが正当であることを確認し、ライト・プロテクト・レジスタ13にライト処理又はデータ転送の不可を示すライト情報13eを再設定した後、解消する。
このように、本実施形態においては、ライト・プロテクト・レジスタ13に設定された変更領域情報の示す変更領域CEに対応するライト情報13eが、一旦、ライト処理又はデータ転送を許可する状態となると、このライト処理又はデータ転送が許可された変更領域CEからのフェッチは禁止される。そして、ライト・プロテクト・レジスタ13に設定された変更領域情報の示す変更領域CEからのフェッチの不可状態は、セキュリティプロセッサSPによってライト・プロテクト・レジスタ13に設定された変更領域情報の示す変更領域CEに対応するライト情報13eが、ライト処理又はデータ転送を不可とする状態となるまで継続される。
セキュリティプロセッサSPは、完了レジスタ14の完了ステータス14aによってライト処理又はデータ転送の完了を検出した場合に、転送された変更部分8aを検証する。
検証の間、セキュリティプロセッサSPは、ライト・プロテクト・レジスタ13に設定されているプロセッサID13cの示すプロセッサP1によるさらなるライト処理、及び、DMAC・ID13dの示すDMAC4によるさらなるデータ転送を抑制し、かつ、プロセッサP1〜Pnによるライト・プロテクト・レジスタ13に設定されている変更領域情報の示す変更領域CEからのフェッチを抑制するために、ライト・プロテクト・レジスタ13にライト処理及びデータ転送の不可を示すライト情報13eを設定する。
第2のメモリ3の変更領域CEには、命令コード及びデータに加え、それらに対する第3の認証情報(例えば電子署名)が変更部分8aとして格納されているとする。セキュリティプロセッサSPは、例えば、自らが所有する公開鍵により変更部分8aの命令コード及びデータを暗号化した第4の認証情報を生成し、第3の認証情報と第4の認証情報とを比較することで、変更部分8aが正当であるか否かの検証を行う。
上記のように、監視部10は、完了レジスタ14に完了ステータス14aが格納された状態で、プロセッサID13cの示すプロセッサP1又はDMAC・ID13dの示すDMAC4がライト処理又はデータ転送を開始アドレス13a及び終了アドレス13bで指定されている変更領域CEに対して実行した場合、エラーを検出する。そして、監視部10は、エラーを検出した場合、当該エラーを示すエラーステータス14bを完了レジスタ14に格納し、エラーを完了レジスタ14経由でセキュリティプロセッサSPに通知する。これにより、セキュリティプロセッサSPによる検証中に改ざんが行われることを防止することができる。
図5は、本実施形態に係るプロセッシングデバイス1によるファームウェア8のフェッチ処理の一例を示すフローチャートである。
図6は、フェッチ処理を実行するプロセッシングデバイス1の各構成要素の連携の一例を示すブロック図である。
ステップS501において、プロセッサP1は、セキュリティプロセッサSPに対して、第2のメモリ3のメモリ領域Eに対するフェッチ許可を要求する。メモリ領域Eには、ファームウェア8が格納されている。プロセッサP1からセキュリティプロセッサSPへのフェッチ許可の要求は、例えば、プロセッサP1による上記の図4に示すサービス・リクエスト・レジスタ16へのコマンド16a_1の設定と、セキュリティプロセッサSPによるサービス・リクエスト・レジスタ16からのコマンド16a_1の読み出しとにより行われてもよい。
ステップS502において、セキュリティプロセッサSPは、メモリ領域Eに格納されているファームウェア8に対する検証を行い、検証の結果が正当であることを示す場合に、アクセス・ディセーブル・レジスタ11へ、メモリ領域Eを示す開始アドレス11a及び終了アドレス11b、プロセッサP1を示すプロセッサID11c、フェッチ許可を示すフェッチ情報11eを格納する。監視部10は、アクセス・ディセーブル・レジスタ11に格納された開始アドレス11a、終了アドレス11b、プロセッサID11c、フェッチ情報11eをアクセスする。これにより、セキュリティプロセッサSPから監視部10へ、領域情報及びプロセッサP1によるメモリ領域Eのフェッチ許可が通知される。
セキュリティプロセッサSPが監視部10へフェッチ許可を通知する前までは、監視部10は、メモリ領域Eに対するフェッチを待ち状態とする制御を行う。
さらに、監視部10は、フェッチ許可に伴って、メモリ領域Eに対するライト処理を不可とする。
ステップS503において、プロセッサP1は、セキュリティプロセッサSPからのフェッチ許可の通知と、監視部10によるフェッチ許可制御に応じて、メモリ領域Eに対するフェッチを開始する。
図7は、本実施形態に係るプロセッシングデバイス1によるファームウェア8の一部変更の一例を示すフローチャートである。この図7の処理により、例えば、ファームウェア8は、このファームウェア8の一部が新たにロードされ、一部の機能が他の機能に置き換えられる。
図8は、一部変更を実行するプロセッシングデバイス1の各構成要素の連携の一例を示すブロック図である。
この図7及び図8では、変更領域CEに対してデータ転送が実行される場合を例として説明するが、変更領域CEに対してライト処理が行われる場合も同様である。
ステップS701において、プロセッサP1は、セキュリティプロセッサSPに対して、ファームウェア8の変更領域CEを指定し、データ転送許可を要求する。プロセッサP1からセキュリティプロセッサSPへのデータ転送許可要求の通知は、例えば、プロセッサP1による上記の図4に示すサービス・リクエスト・レジスタ16へのコマンドの設定と、セキュリティプロセッサSPによるサービス・リクエスト・レジスタ16からのコマンドの読み出しとにより行われてもよい。
ステップS702において、セキュリティプロセッサSPは、ライト・プロテクト・レジスタ13へ、フェッチが許可されているメモリ領域E内の変更領域CEを示す開始アドレス13a及び終了アドレス13b、変更領域CEに対してデータ転送可能なマスタデバイスを示すマスタデバイスID、変更領域CEに対してデータ転送許可を示すライト情報13eを格納する。本実施形態において、アクセス・ディセーブル・レジスタ11の開始アドレス11a及び終了アドレス11bで指定される領域Eは、ライト・プロテクト・レジスタ13の開始アドレス13a及び終了アドレス13bで指定される変更領域CEを含む必要がある。監視部10は、アクセス・ディセーブル・レジスタ11の開始アドレス11a及び終了アドレス11bで指定される領域Eが、ライト・プロテクト・レジスタ13の開始アドレス13a及び終了アドレス13bで指定される変更領域CEを含まない場合、例えば、完了レジスタ14経由でセキュリティプロセッサSPに対してエラーを通知する。
監視部10は、ライト・プロテクト・レジスタ13に格納された開始アドレス13a、終了アドレス13b、マスタデバイスID、ライト情報13eをアクセスする。これにより、監視部10は、プロセッサP1による変更領域CEに対するデータ転送を許可するための制御を行う。データ転送の許可に伴って、セキュリティプロセッサSPは、データ転送許可を示すアクセスステータス15aをアクセス・ステータス・レジスタ15へ格納する。プロセッサP1は、アクセスステータス15aをアクセス・ステータス・レジスタ15から読み出す。これにより、データ転送が許可されていることを、セキュリティプロセッサSPからプロセッサP1へ通知可能である。
さらに、監視部10は、データ転送の許可に伴って、開始アドレス13a及び終了アドレス13bに対応する変更領域CEをフェッチ不可とする制御を行う。
ステップS703において、変更領域CEに対してライト処理可能なマスタデバイスは、第1のメモリ2から変更領域CEへの変更部分8aのデータ転送を実行する。プロセッサP1が変更領域CEに対してデータ転送実行中にフェッチを試みた場合、監視部10は、プロセッサP1によるフェッチを待ち状態とする。
監視部10は、DMAC4から受信するステータスによりデータ転送の完了を検出し、データ転送が完了すると、データ転送の完了を示す完了ステータス14aをサービス・リクエスト・レジスタ16に格納する。
なお、データ転送ではなくライト処理の場合、プロセッサP1は、ライト処理を完了すると、ライト完了情報13kをサービス・リクエスト・レジスタ16に格納する。セキュリティプロセッサSPは、サービス・リクエスト・レジスタ16からライト完了情報13kを読み出し、ライト処理が完了している場合に、ライト処理の完了を示す完了ステータス14aを完了レジスタ14に格納する。
変更領域CEに対する変更部分8aのデータ転送が完了すると、ステップS704において、セキュリティプロセッサSPは、変更領域CEにデータ転送されたファームウェア8の変更部分8aの検証を行う。
ステップS705において、ファームウェア8の変更部分8aが正当な場合、セキュリティプロセッサSPは、ライト処理及びデータ転送を不可とするライト情報13eをライト・プロテクト・レジスタ13に設定することにより、変更領域CEに対するライト処理及びデータ転送の許可を取り消し、変更領域CEに対するライト処理及びデータ転送を不可とする。監視部10は、変更領域CEに対するフェッチを許可するための制御を行う。
以上説明した本実施形態においては、セキュリティプロセッサSPが、監視部10に対して、ライト処理又はデータ転送可能な変更領域CEと、ライト処理又はデータ転送可能なマスタデバイスとを指定する。このライト処理又はデータ転送により、ファームウェア8のうち変更領域CEに格納されている部分が変更される。監視部10は、セキュリティプロセッサSPから指定された変更領域CEに対するアクセス制御を実行する。これにより、セキュリティプロセッサSPは、監視部10を用いて、ファームウェア8の変更領域CEに対応する部分の変更を制御し、不当なライト処理又はデータ転送を防止することができる。
本実施形態においては、プロセッシングデバイス1に搭載されるプロセッサP1〜Pnを改造することなく、これらのプロセッサP1〜Pnによるファームウェア8のフェッチ及び変更をセキュリティプロセッサSPから制御することができる。
本実施形態においては、ファームウェア8の変更が発生した場合にファームウェア8の変更部分8aの完全性が検証され、ファームウェア8の改竄を検知し、防止することができる。
完全性検証中は、プロセッサP1〜Pnによる変更部分8aのフェッチが遅延される。これにより、変更部分8aが不当な場合に、プロセッサP1〜Pnがこの不当な変更部分8aを実行することを防止することができる。
なお、本実施形態において、セキュリティプロセッサSPによる完全性検証の結果、第2のメモリ3における変更領域CEに対するライト処理又はデータ転送が不当であると判定された場合、セキュリティプロセッサSPは、プロセッシングデバイス1に対する不当なアクセスが試みられていると判断し、プロセッシングデバイス1の処理を停止し、これによりプロセッシングデバイス1を保護してもよい。
本実施形態においては、変更領域CEに対してライト権限を持つマスタデバイスがレジスタ12に設定される。これにより、変更領域CEに対してライト権限を持たないマスタデバイスによってライト処理又はデータ転送が実行されることを防止できる。
本実施形態においては、第2のメモリ3における変更領域CEに対するライト処理又はデータ転送が正規の手続きであったとしても、変更領域CEの変更部分8aに例えば署名検証失敗などのような異常が検出された場合には、異常の検出された変更部分8aのフェッチを禁止することができる。
上記第1及び第2の実施形態において、許可されていないフェッチを遅延させるために、バスコントローラ5とメモリコントローラ6とは、複数のポートを備え、バス7上のトラフィックを妨げないように、これらポートのいくつかを用いて監視対象のフェッチを待ち状態とする機構を備えるとしてもよい。
(第3の実施形態)
本実施形態では、上記第1及び第2の実施形態で説明した各種レジスタに対する設定の具体例を説明する。
図9は、アクセス・ディセーブル・レジスタ11の設定の一例を示すブロック図である。
プロセッサP1は、サービス・リクエスト・レジスタ16に、セット・フェッチ・ディセーブル・コマンド16i、開始アドレス11a、終了アドレス11b、プロセッサID11c、DMAC・ID11dを格納する。
セット・フェッチ・ディセーブル・コマンド16iは、上記図4のコマンド16a_1の例である。
開始アドレス11a、終了アドレス11b、プロセッサID11c、DMAC・ID11dは、上記図4のデータ16g_1に含まれる情報の例である。
セット・フェッチ・ディセーブル・コマンド16iは、アクセス・ディセーブル・レジスタ11に対する開始アドレス11a、終了アドレス11b、プロセッサID11c、DMAC・ID11dの設定を、セキュリティプロセッサSPに実行させるためのコマンドである。
セキュリティプロセッサSPは、サービス・リクエスト・レジスタ16をアクセスする。そして、セキュリティプロセッサSPは、セット・フェッチ・ディセーブル・コマンド16iに基づいて、サービス・リクエスト・レジスタ16に格納されている開始アドレス11a、終了アドレス11b、プロセッサID11c、DMAC・ID11dを、アクセス・ディセーブル・レジスタ11へ格納する。
図10は、ライト・プロテクト・レジスタ13の設定の一例を示すブロック図である。
プロセッサP1は、サービス・リクエスト・レジスタ16に、セット・ライト・ディセーブル・コマンド13i、開始アドレス13a、終了アドレス13b、プロセッサID13c及び/又はDMAC・ID13dに相当するマスタデバイスIDを格納する。
セット・ライト・ディセーブル・コマンド13iは、上記図4のコマンド16a_1の例である。
開始アドレス13a、終了アドレス13b、プロセッサID13c及び/又はDMAC・ID13dは、上記図4のデータ16g_1に含まれる情報の例である。
セット・ライト・ディセーブル・コマンド13iは、ライト・プロテクト・レジスタ13に対する開始アドレス13a、終了アドレス13b、プロセッサID13c及び/又はDMAC・ID13dの設定を、セキュリティプロセッサSPに実行させるためのコマンドである。
セキュリティプロセッサSPは、サービス・リクエスト・レジスタ16をアクセスする。そして、セキュリティプロセッサSPは、セット・ライト・ディセーブル・コマンド13iに基づいて、サービス・リクエスト・レジスタ16に格納されている開始アドレス13a、終了アドレス13b、プロセッサID13c及び/又はDMAC・ID13dを、ライト・プロテクト・レジスタ13へ格納する。
図11は、完了レジスタ14の設定の一例を示すブロック図である。この図11では、プロセッサP1によるライト処理の完了をセキュリティプロセッサSPへ通知するためのデータの設定を例示している。
プロセッサP1は、ライト処理が完了した場合に、サービス・リクエスト・レジスタ16に、プロセッサ・ライト・完了・コマンド13j、プロセッサP1を示すプロセッサID13c、ライト処理が完了したステータスを示すライト完了情報13kを格納する。
プロセッサ・ライト・完了・コマンド13jは、プロセッサP1でライトが完了したことをセキュリティプロセッサSPへ通知するためのコマンドである。プロセッサ・ライト・完了・コマンド13jは、上記図4のコマンド16a_1の例である。
プロセッサID13c、ライト完了情報13kは、上記図4のデータ16g_1に含まれる情報の例である。
セキュリティプロセッサSPは、サービス・リクエスト・レジスタ16からプロセッサ・ライト・完了・コマンド13j、プロセッサID13c、ライト完了情報13kを読み出し、完了レジスタ14に完了ステータス14aを格納する。
なお、DMAC4によるデータ転送の完了をセキュリティプロセッサSPへ通知する場合には、監視部10がDMAC4によるデータ転送の完了を検出し、データ転送完了を示す完了ステータス14aを、完了レジスタ14に格納する。
セキュリティプロセッサSPは、完了ステータス14aに格納されている完了レジスタ14をアクセスすることで、プロセッサP1によるライト処理の完了を認識することができる。
以上説明したように、本実施形態において、レジスタ12は、セキュリティプロセッサSPのみが情報を設定可能であるが他のデバイスからは情報を設定不可のアクセス・ディセーブル・レジスタ11及びライト・プロテクト・レジスタ13、セキュリティプロセッサSP及び監視部10によって情報を設定可能な完了レジスタ14、セキュリティプロセッサSPからプロセッサP1〜Pnへの情報の通知に用いられるアクセス・ステータス・レジスタ15、プロセッサP1〜PnからセキュリティプロセッサSpへの情報の通知に用いられるサービス・リクエスト・レジスタ16を備える。
プロセッサP1は、コマンド16a及び必要なデータ16gをサービス・リクエスト・レジスタ16に格納し、セキュリティプロセッサSPは、サービス・リクエスト・レジスタ16からコマンド16a及びデータ16gを読み出し、アクセス・ディセーブル・レジスタ11、ライト・プロテクト・レジスタ13、又は、完了レジスタ14に対する情報の設定を行う。
これにより、プロセッサP1〜PnからセキュリティプロセッサSPへ必要なコマンド16a_1〜16_n及びデータ16g_1〜16_nを通知することができる。さらに、セキュリティプロセッサSPは、プロセッサP1〜Pnからのコマンド16a_1〜16_nに基づいて、セキュリティプロセッサSPのみが設定可能なレジスタへ、必要なデータ16g_1〜16_nを設定することができる。そして、監視部10は、セキュリティプロセッサSPによって設定されたレジスタ12のデータに基づいて、ライト、データ転送、及びフェッチを制御することができる。このように、アクセス・ディセーブル・レジスタ11、ライト・プロテクト・レジスタ13に対する情報設定の権限を、セキュリティプロセッサSPに制限することにより、ファームウェア8の完全性を向上させることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…プロセッシングデバイス、2…第1のメモリ、3…第2のメモリ、4…DMAC、5…バスコントローラ、6…メモリコントローラ、7…バス、8…ファームウェア、9…MMU、10…監視部、11…アクセス・ディセーブル・レジスタ、13…ライト・プロテクト・レジスタ、P1〜Pn…プロセッサ、SP…セキュリティプロセッサ。

Claims (7)

  1. 第1のプロセッサと、
    前記第1のプロセッサによってフェッチされるソフトウェアを格納するためのメモリと、
    前記ソフトウェアの検証を行う第2のプロセッサと、
    前記第2のプロセッサからの要求に基づいて、前記第1のプロセッサによる前記フェッチを制御するコントローラと、
    を具備し、
    前記第1のプロセッサは、前記第2のプロセッサに対して、前記ソフトウェアを配置している前記メモリのメモリ領域に対するフェッチ許可を要求し、
    前記第2のプロセッサは、前記第1のプロセッサによって指定された前記メモリ領域に格納されている前記ソフトウェアに対する前記検証の結果が正当と判断された場合に、前記メモリ領域を指定する領域情報と前記第1のプロセッサによる前記フェッチを許可することを示すフェッチ情報とを前記コントローラに通知し、
    前記コントローラは、前記第2のプロセッサから前記領域情報と前記フェッチ情報とを受けるまで、前記フェッチを不可とするための制御を行い、前記領域情報と前記フェッチ情報とを受けた場合に、前記第1のプロセッサによる前記フェッチを許可するための制御を行い、
    前記第1のプロセッサは、前記第2のプロセッサによって前記メモリ領域に対する前記フェッチが許可された場合に、前記ソフトウェアをフェッチする、
    プロセッシングデバイス。
  2. 前記コントローラは、前記メモリ領域に対する前記フェッチを許可している場合に、前記メモリ領域に対するライト処理を禁止する、請求項1のプロセッシングデバイス。
  3. 前記第1のプロセッサは、前記ソフトウェアの変更を前記第2のプロセッサへ要求し、
    前記第2のプロセッサは、前記メモリ領域内の変更領域を指定する変更領域情報と、前記変更領域に格納されている変更対象ソフトウェアの変更を許可するデバイスを示すデバイスIDと、前記変更領域に対する前記変更を許可することを示すライト情報とを、前記コントローラに通知し、
    前記コントローラは、前記第2のプロセッサから前記変更領域情報と前記ライト情報とを受けるまで、前記変更領域に対するライト処理を不可とする制御を行い、前記変更領域情報と前記ライト情報とを受けた場合に、前記変更領域に対する前記ライト処理を許可する制御を行い、
    前記デバイスは、前記ライト処理が許可された場合に、前記変更領域に格納されている前記変更対象ソフトウェアの前記変更を行い、
    前記第2のプロセッサは、前記変更領域に格納された変更後のソフトウェア要素の検証を行い、前記変更後のソフトウェア要素が正当である場合に、前記変更領域に対する前記ライト処理の許可を取り消す、
    請求項1又は請求項2のプロセッシングデバイス。
  4. 前記コントローラは、前記デバイスが前記変更領域に対して前記ライト処理を行っている間、前記変更領域に対するフェッチを不可とする制御を行い、
    前記第2のプロセッサは、前記ライト処理の許可を取り消した場合に、前記変更領域に対する前記フェッチを許可する、
    請求項3のプロセッシングデバイス。
  5. 第1のプロセッサと、
    前記第1のプロセッサを含むデバイスの起動時にロードされたソフトウェアを格納するためのメモリと、
    前記ソフトウェアの検証を行う第2のプロセッサと、
    前記第2のプロセッサからの要求に基づいて、前記第1のプロセッサによる前記ソフトウェアのフェッチを制御するコントローラと、
    を具備し、
    前記第1のプロセッサは、前記第2のプロセッサに対して、前記ソフトウェアを配置している前記メモリのメモリ領域に対するフェッチ許可を要求し、
    前記第2のプロセッサは、前記メモリ領域に格納されている前記ソフトウェアに対する前記検証の結果が正当と判断された場合に、前記メモリ領域を指定する領域情報と前記フェッチを許可することを示すフェッチ情報とを前記コントローラに通知し、
    前記コントローラは、前記第2のプロセッサから前記領域情報と前記フェッチ情報とを受けるまで、前記フェッチを不可とするための制御を行い、前記領域情報と前記フェッチ情報とを受けた場合に、前記フェッチを許可するための制御を行い、
    前記第1のプロセッサは、前記第2のプロセッサによって前記メモリ領域に対して前記フェッチが許可された場合に、前記ソフトウェアをフェッチする、
    プロセッシングデバイス。
  6. 前記第2のプロセッサは、前記第2のプロセッサのみが設定可能な記憶回路へ、前記領域情報と前記フェッチ情報とを格納し、
    前記コントローラは、前記記憶回路から前記領域情報と前記フェッチ情報とを読み出す、
    請求項1乃至請求項5のいずれか1項のプロセッシングデバイス。
  7. プロセッシングデバイスで実行されるソフトウェアの実行を制御する方法において、
    第1のプロセッサが、第2のプロセッサに対して、前記ソフトウェアを配置しているメモリのメモリ領域に対するフェッチ許可を要求することと、
    前記第2のプロセッサが、前記第1のプロセッサによって指定された前記メモリ領域に格納されている前記ソフトウェアに対する検証を実行し、前記検証の結果が正当と判断された場合に、前記メモリ領域を指定する領域情報と前記第1のプロセッサによるフェッチを許可することを示すフェッチ情報とをコントローラに通知することと、
    前記コントローラが、前記第2のプロセッサから前記領域情報と前記フェッチ情報とを受けるまで、前記フェッチを不可とするための制御を行い、前記領域情報と前記フェッチ情報とを受けた場合に、前記第1のプロセッサによる前記フェッチを許可するための制御を行い、
    前記第1のプロセッサが、前記第2のプロセッサによって前記メモリ領域に対する前記フェッチが許可された場合に、前記ソフトウェアをフェッチすることと、
    を具備する、方法。
JP2018166978A 2018-09-06 2018-09-06 プロセッシングデバイス及びソフトウェア実行制御方法 Pending JP2020042341A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018166978A JP2020042341A (ja) 2018-09-06 2018-09-06 プロセッシングデバイス及びソフトウェア実行制御方法
US16/453,962 US11188321B2 (en) 2018-09-06 2019-06-26 Processing device and software execution control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018166978A JP2020042341A (ja) 2018-09-06 2018-09-06 プロセッシングデバイス及びソフトウェア実行制御方法

Publications (1)

Publication Number Publication Date
JP2020042341A true JP2020042341A (ja) 2020-03-19

Family

ID=69719151

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018166978A Pending JP2020042341A (ja) 2018-09-06 2018-09-06 プロセッシングデバイス及びソフトウェア実行制御方法

Country Status (2)

Country Link
US (1) US11188321B2 (ja)
JP (1) JP2020042341A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112749397A (zh) * 2019-10-29 2021-05-04 阿里巴巴集团控股有限公司 一种系统和方法
FR3109229B1 (fr) * 2020-04-09 2023-08-25 Proton World Int Nv Procédé d'authentification
JP7408593B2 (ja) * 2021-03-23 2024-01-05 株式会社東芝 制御装置、情報処理装置、および情報処理システム
US11797679B2 (en) * 2021-07-28 2023-10-24 Dell Products, L.P. Trust verification system and method for a baseboard management controller (BMC)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6564326B2 (en) 1999-07-06 2003-05-13 Walter A. Helbig, Sr. Method and apparatus for enhancing computer system security
US20140075567A1 (en) * 2009-01-28 2014-03-13 Headwater Partners I Llc Service Processor Configurations for Enhancing or Augmenting System Software of a Mobile Communications Device
JP5482059B2 (ja) 2009-03-13 2014-04-23 富士通株式会社 記憶装置、および記憶装置へのアクセスを制御するためのプログラム
JP2014235326A (ja) 2013-06-03 2014-12-15 富士通セミコンダクター株式会社 システム、情報処理装置、セキュアモジュール、および検証方法
US20170371660A1 (en) * 2016-06-23 2017-12-28 Microsoft Technology Licensing, Llc Load-store queue for multiple processor cores

Also Published As

Publication number Publication date
US11188321B2 (en) 2021-11-30
US20200081708A1 (en) 2020-03-12

Similar Documents

Publication Publication Date Title
JP4811271B2 (ja) 情報通信装置及びプログラム実行環境制御方法
KR102244645B1 (ko) 인증된 변수의 관리
JP4982825B2 (ja) コンピュータおよび共有パスワードの管理方法
Jin et al. Architectural support for secure virtualization under a vulnerable hypervisor
JP4883459B2 (ja) ポイントツーポイント相互接続システム上のセキュアな環境初期化命令の実行
JP5643901B2 (ja) プラットフォーム・ファームウェア・アーマリング技術
JP4823481B2 (ja) 安全な環境を初期化する命令を実行するシステムおよび方法
JP4872001B2 (ja) メモリ・アクセス安全性管理
JP5390703B2 (ja) 隠れ実行環境における整合性検証及び証明の提供
KR101281678B1 (ko) 이동 저장 장치에서 호스트 인증 방법, 호스트 인증을 위한정보 제공 방법, 장치, 및 기록매체
JP2020042341A (ja) プロセッシングデバイス及びソフトウェア実行制御方法
US20100058041A1 (en) Method and Apparatus for Secure Instantly-On Computer System
JP5346608B2 (ja) 情報処理装置およびファイル検証システム
JP2006018528A (ja) セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
US20090172806A1 (en) Security management in multi-node, multi-processor platforms
JP2017033149A (ja) 情報処理装置、コントローラ、及び、情報処理装置の制御方法
KR102579861B1 (ko) 차량용 소프트웨어 업데이트 장치 및 그 제어 방법
JP5316592B2 (ja) セキュアプロセッサ用プログラム
JP5365664B2 (ja) セキュアプロセッサ
JP6652669B2 (ja) 情報処理装置及び情報処理装置の制御方法
CN116108454B (zh) 内存页面管理方法及装置
WO2024078159A1 (zh) 完整性度量方法及装置
TWI626557B (zh) Execution control device and execution control method and execution control program product
JP2010286866A (ja) マイクロコントローラ装置
JP2009301565A (ja) セキュアプロセッサ