JP2020140665A - プログラム、デバイス及び起動方法 - Google Patents
プログラム、デバイス及び起動方法 Download PDFInfo
- Publication number
- JP2020140665A JP2020140665A JP2019037963A JP2019037963A JP2020140665A JP 2020140665 A JP2020140665 A JP 2020140665A JP 2019037963 A JP2019037963 A JP 2019037963A JP 2019037963 A JP2019037963 A JP 2019037963A JP 2020140665 A JP2020140665 A JP 2020140665A
- Authority
- JP
- Japan
- Prior art keywords
- program
- execution area
- area
- started
- control unit
- 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
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
【課題】デバイス起動時の安全性を適切に確保することができるプログラム等を提供する。【解決手段】プログラムは、デバイスを起動する場合に、通常領域と、該通常領域からのアクセスが制限されたセキュア領域とを一時記憶領域に展開し、前記セキュア領域に、前記通常領域において起動が許可されるプログラムを表す参照値を格納し、前記通常領域において前記プログラムを起動する場合、該プログラムを表す検証値を算出し、前記セキュア領域において、前記検証値と前記参照値とを照合することで前記プログラムの起動の可否を判定する処理をデバイスに実行させる。【選択図】図5
Description
本発明は、プログラム、デバイス及び起動方法に関する。
IoT(Internet of Things)機器、パーソナルコンピュータ等のデバイスの起動時に、デバイスが実行するプログラムが予め定められた正当なプログラムであるか否かを検証するセキュアブート技術がある。例えば特許文献1では、セキュアブートを実行可能な情報処理装置等であって、起動するプログラムが検証済みのプログラムであるか否かを示すフラグを保持し、未検証のプログラムのみを検証することで起動時間を短縮する情報処理装置等が開示されている。
しかしながら、ブートローダとして機能するプログラムに改竄、感染等が発生した場合、適切な検証を行うことができなくなり、安全性に課題があった。
一つの側面では、デバイス起動時の安全性を適切に確保することができるプログラム等を提供することを目的とする。
一つの側面では、プログラムは、デバイスを起動する場合に、第1実行領域と、該第1実行領域からのアクセスが制限された第2実行領域とを一時記憶領域に展開し、前記第2実行領域に、前記第1実行領域において起動が許可されるプログラムを表す参照値を格納し、前記第1実行領域において前記プログラムを起動する場合、該プログラムを表す検証値を算出し、前記第2実行領域において、前記検証値と前記参照値とを照合することで前記プログラムの起動の可否を判定する処理をデバイスに実行させることを特徴とする。
一つの側面では、デバイス起動時の安全性を適切に確保することができる。
以下、本発明をその実施の形態を示す図面に基づいて詳述する。
(実施の形態1)
図1は、デバイス1の構成例を示すブロック図である。本実施の形態では、TEE(Trusted Environment Execution)等の技術を用いて安全性を高めたセキュア領域(第2実行領域)を仮想的に構築し、装置起動時にセキュア領域で実行プログラムの起動の可否を判定するデバイス1について説明する。
(実施の形態1)
図1は、デバイス1の構成例を示すブロック図である。本実施の形態では、TEE(Trusted Environment Execution)等の技術を用いて安全性を高めたセキュア領域(第2実行領域)を仮想的に構築し、装置起動時にセキュア領域で実行プログラムの起動の可否を判定するデバイス1について説明する。
デバイス1は、所定の情報処理を行う情報処理装置であり、例えばルータ装置、ECU(Electronic Control Unit)、パーソナルコンピュータ等の種々の情報処理装置であり得るが、特にその内容は限定されない。また、例えばデバイス1は、組み込み機器などのIoT機器であってもよい。デバイス1は、自装置の起動時に後述の処理を行い、起動するプログラムが真正なプログラムであるか否かを検証して起動の可否を判定する。
デバイス1は、制御部11、主記憶部12、通信部13、補助記憶部14を備える。
制御部11はデバイス1の動作を制御するSoC(System on Chip)であり、例えばCPU(Central Processing Unit)、MPU(Micro-Processing Unit)、GPU(Graphics Processing Unit)等の演算処理装置である。なお、制御部11は単一のプロセッサであってもよく、複数のプロセッサから構成されてもよい。制御部11は補助記憶部14に記憶されているプログラムPを読み出して実行することにより、後述の処理を行う。主記憶部12は、RAM(Random Access Memory)等の一時記憶領域であり、制御部11が演算処理を実行するために必要なデータを一時的に記憶する。通信部13は、通信に関する処理を行うための通信モジュールであり、外部と情報の送受信を行う。
制御部11はデバイス1の動作を制御するSoC(System on Chip)であり、例えばCPU(Central Processing Unit)、MPU(Micro-Processing Unit)、GPU(Graphics Processing Unit)等の演算処理装置である。なお、制御部11は単一のプロセッサであってもよく、複数のプロセッサから構成されてもよい。制御部11は補助記憶部14に記憶されているプログラムPを読み出して実行することにより、後述の処理を行う。主記憶部12は、RAM(Random Access Memory)等の一時記憶領域であり、制御部11が演算処理を実行するために必要なデータを一時的に記憶する。通信部13は、通信に関する処理を行うための通信モジュールであり、外部と情報の送受信を行う。
補助記憶部14はROM(Read Only Memory)等の不揮発性メモリであり、デバイス1が処理動作を行う上で必要なプログラムP及びその他のデータを記憶している。なお、補助記憶部14はSoC(制御部11)内部の専用メモリであってもよく、制御部11に接続された外部メモリであってもよい。補助記憶部14は、リッチOS(Operating System)21、リッチアプリケーション22、セキュアOS31、セキュアアプリケーション32、ハッシュ値33を記憶している。リッチOS21及びリッチアプリケーション22は、デバイス1の一般的、汎用的な処理を行うためのOS及びアプリケーションとして動作するソフトウェア(プログラム)である。セキュアOS31及びセキュアアプリケーション32は、リッチOS21及びリッチアプリケーション22が動作する実行領域からのアクセスが制限されたセキュア領域で動作するソフトウェアであって、セキュア領域におけるOS及びアプリケーションとして動作するソフトウェアである。ハッシュ値33は、通常領域で動作するソフトウェア(プログラム)をハッシュ化したハッシュ値であり、通常領域における実行が許可されるソフトウェアを表す参照値である。
なお、デバイス1は上述のハードウェア要素以外に、デバイス1の内容に応じて、例えばディスプレイ、操作インターフェイス等を備えてもよいことは勿論である。また、デバイス1は外部のネットワークを介して他のコンピュータからプログラムPをダウンロードし、補助記憶部14に記憶しても良い。また、デバイス1は、CD(Compact Disk)−ROM、DVD(Digital Versatile Disc)−ROM等の可搬型記憶媒体1aを読み取る読取部を備え、可搬型記憶媒体1aからプログラムPを読み取って実行するようにしてもよい。あるいはデバイス1は、半導体メモリ1bからプログラムPを読み込んでも良い。
また、本実施の形態では制御部11がSoCであるものとして説明するが、制御部11はSoCに限定されず、デバイス1を動作させるプロセッサであれば良い。
図2は、デバイス1の機能構成例を示す機能ブロック図である。図2では、デバイス1内部でソフトウェア(OS、アプリケーション等)を実行する領域が、REE(Rich Execution Environment)等と呼ばれる通常領域20と、TEE等と呼ばれるセキュア領域30とに仮想的に分離されている様子を図示している。
通常領域20は、広く一般的に利用されているリッチOS21の実行領域であり、セキュア領域30へのアクセスが制限される以外に、特段の機能制約がない実行領域である。リッチOS21は、通常領域20においてOSの機能を果たすソフトウェアであり、リッチアプリケーション22からの要求に応じて各種OS機能を提供する。制御部11は、リッチOS21上でリッチアプリケーション22を実行することで、デバイス1の一般的、汎用的な処理を実行する。
セキュア領域30は、セキュリティ機能を隔離する目的で、同一のSoC上で通常領域20とは別に提供される独立した実行領域である。セキュア領域30は、通常領域20からのアクセスが制限されており、実行可能な機能も限定されている。なお、セキュア領域30は、TEEのような称呼に限定されるものではなく、通常領域20と分離され、セキュリティ上より安全な実行領域であれば、どのような称呼の領域であってもよい。デバイス1は、セキュリティ上保護すべきソフトウェア及びデータをセキュア領域30に配置すると共に、通常領域20及びデバイス1の外部からのアクセスを制限することで、安全性を確保する。
上述のように、通常領域20からセキュア領域30にはアクセスできないように制限されており、通常領域20からはセキュア領域30の存在を認識できない。通常領域20からセキュア領域30で実行する処理を呼び出すためには、通常領域20とセキュア領域30との間のアクセスを制御するハイパーバイザ40(共有実行領域)を経由しなければならない。
セキュアOS31は、セキュア領域30においてOSの機能を果たすソフトウェアであり、セキュアアプリケーション32からの要求に応じて、セキュリティ機能を中心としたOS機能を提供する。制御部11は、セキュアOS31上でセキュアアプリケーション32を実行することで、セキュリティ上重要な処理を実行する。
本実施の形態では、通常領域20における起動が許可される各種ソフトウェア(リッチOS21、リッチアプリケーション22)のハッシュ値33がセキュア領域30に格納されている。デバイス1は起動時に、通常領域20で起動するリッチOS21、リッチアプリケーション22等の各種プログラムのハッシュ値を計算し、セキュア領域30に予め格納してあるハッシュ値33と照合し、両者が一致するか否かを判定する。これによりデバイス1は、真正なプログラムのみを通常領域20で実行可能とする。
図3は、デバイス1の起動時の動作手順を示す説明図である。図3に基づき、デバイス1の起動時の処理動作について説明する。
例えばデバイス1の制御部11は、電源投入等の所定の動作をトリガとして、補助記憶部14のブートROMからブートローダとして機能する起動プログラムを読み出して実行する。読み出した起動プログラムに従い、まず制御部11は通常領域20及びセキュア領域30を主記憶部12(一時記憶領域)に展開可能とすべく、ハイパーバイザ40に係るプログラムを読み出して実行する。
例えばデバイス1の制御部11は、電源投入等の所定の動作をトリガとして、補助記憶部14のブートROMからブートローダとして機能する起動プログラムを読み出して実行する。読み出した起動プログラムに従い、まず制御部11は通常領域20及びセキュア領域30を主記憶部12(一時記憶領域)に展開可能とすべく、ハイパーバイザ40に係るプログラムを読み出して実行する。
次に制御部11は、セキュアOS31を読み出して起動し、続いてセキュアアプリケーション32を読み出して起動する。これにより制御部11は、セキュア領域30を主記憶部12(一時記憶領域)に展開する。
次に制御部11は、リッチOS21を読み出して起動し、続いてリッチアプリケーション22を読み出して起動する。これにより制御部11は、通常領域20を主記憶部12に展開し、デバイス1を起動する。
この場合に制御部11は、リッチOS21及びリッチアプリケーション22の起動動作と並行して、セキュアアプリケーション32を実行し、通常領域20側で起動する各種プログラム(リッチOS21及びリッチアプリケーション22)が真正なプログラムであるか否か、検証を行う。詳しくは後述するように、制御部11は、通常領域20側で起動中のプログラムを検証するためのハッシュ値(検証値)を算出し、セキュア領域30に格納されているハッシュ値33(参照値)と照合し、プログラムの起動の可否を判定する。
プログラムの起動を許可しないと判定した場合、例えば制御部11は、リッチOS21の起動を停止すると共に、リッチアプリケーション22を介してユーザに異常を通知する。なお、上記の処理は一例であって、制御部11は、セキュア領域30における判定結果に応じて通常領域20側のプログラムの起動を制御可能であればよい。
図4は、デバイス1の起動時の判定処理の手順を示す説明図である。図4では、通常領域20において起動するプログラムの起動の可否を判定する判定処理について説明する。
デバイス1の制御部11は、上述の如く、起動プログラムに従ってリッチOS21、リッチアプリケーション22等のプログラムを読み出す。制御部11はまず、読み出したプログラムのハッシュ値を通常領域20において算出する。
デバイス1の制御部11は、上述の如く、起動プログラムに従ってリッチOS21、リッチアプリケーション22等のプログラムを読み出す。制御部11はまず、読み出したプログラムのハッシュ値を通常領域20において算出する。
なお、本実施の形態では通常領域20で起動するプログラムのハッシュ値を通常領域20で演算するものとして説明するが、ハッシュ値の演算をセキュア領域30において行ってもよい。
制御部11は、算出したハッシュ値を、ハイパーバイザ40を介して通常領域20からセキュア領域30に入力し、プログラムの起動の可否を判定するよう判定依頼を行う。制御部11はセキュア領域30において、通常領域20から入力されたハッシュ値に基づき、通常領域20側で起動するプログラムの起動の可否を判定する。
具体的には、制御部11は、セキュアOS31、セキュアアプリケーション32等を起動してセキュア領域30を主記憶部12(一時記憶領域)に展開する場合に、起動を許可するものとして予め定められたプログラムのハッシュ値33、すなわちハッシュ値の照合を行うための参照値を補助記憶部14から読み出し、セキュア領域30に格納しておく。通常領域20から判定依頼を受け付けた場合、制御部11は、通常領域20から入力されたハッシュ値と、セキュア領域30に保持してあるハッシュ値33とを照合し、両者が一致するか否かを判定する。制御部11は、ハイパーバイザ40を介して判定結果を通常領域20に入力する。
制御部11は、セキュア領域30から入力された判定結果に応じて後続の処理を行う。具体的には、ハッシュ値が一致すると判定された場合、すなわちプログラムの起動が許可された場合、制御部11は通常領域20においてリッチOS21、リッチアプリケーション22等のプログラムの起動動作を継続し、最終的にプログラムの起動を完了する。一方で、ハッシュ値が一致しなかったと判定された場合、すなわちプログラムの起動が許可されなかった場合、制御部11は通常領域におけるリッチOS21、リッチアプリケーション22等のプログラムの起動動作を停止する。これにより制御部11は、ハッシュ値が一致せず、改竄等の虞があるプログラムが実行される事態を防止する。
以上より、デバイス1は通常領域20とは異なるセキュア領域30において、通常領域20で起動するプログラムの起動の可否を判定する。通常領域20から認識(アクセス)困難なセキュア領域30で一連の判定処理を行うことで、デバイス1を起動する際の安全性を適切に確保することができる。また、セキュア領域30はソフトウェア上実現される仮想的な領域であるため、セキュアエレメント等のハードウェアを搭載する必要がなく、セキュアブート機能を実装するための実装面積を削減することができる。
図5は、デバイス1が実行する処理手順の一例を示すフローチャートである。図5に基づき、デバイス1が実行する処理内容について説明する。
デバイス1の制御部11は、ブートローダとして機能するデバイス1の起動プログラムを補助記憶部14から読み出して実行する(ステップS11)。制御部11は起動用プログラムに従ってハイパーバイザ40を実行する(ステップS12)。
デバイス1の制御部11は、ブートローダとして機能するデバイス1の起動プログラムを補助記憶部14から読み出して実行する(ステップS11)。制御部11は起動用プログラムに従ってハイパーバイザ40を実行する(ステップS12)。
制御部11は通常領域20のプログラム(リッチOS21、リッチアプリケーション22等)を起動する前に、セキュアOS31、セキュアアプリケーション32等のプログラム(第2プログラム)を補助記憶部14から読み出して実行し、セキュア領域30を主記憶部12(一時記憶領域)に展開する(ステップS13)。この場合に制御部11は、通常領域20における起動が許可されたプログラムのハッシュ値33(参照値)を補助記憶部14から読み出し、セキュア領域30に格納する。その後、制御部11はリッチOS21、リッチアプリケーション22等のプログラムを補助記憶部14から読み出して通常領域20を展開し、プログラムの起動を開始する(ステップS14)。
制御部11は通常領域20において起動するプログラムのハッシュ値(検証値)を算出する(ステップS15)。制御部11は、算出したハッシュ値を、ハイパーバイザ40を介してセキュア領域30に入力する(ステップS16)。そして制御部11はセキュア領域30において、通常領域20から入力されたハッシュ値と、セキュア領域30に予め保持してあるハッシュ値33とを照合し、通常領域20におけるプログラムの起動の可否を判定する(ステップS17)。
制御部11はハイパーバイザ40を介して、ステップS17の判定結果を通常領域20に入力する(ステップS18)。制御部11は、セキュア領域30で判定した判定結果を参照して、プログラムの起動が許可されたか否かを判定する(ステップS19)。許可されたと判定した場合(S19:YES)、制御部11は通常領域20におけるプログラムの起動動作を停止せず最終的にプログラム起動を完了させ、一連の処理を終了する。許可されなかったと判定した場合(S19:NO)、制御部11は通常領域20におけるプログラムの起動動作を停止、あるいはユーザへの異常通知等を行い(ステップS20)、一連の処理を終了する。
なお、上記ではプログラムの起動の可否を判定するための値としてハッシュ値を用いたが、本実施の形態はこれに限定されるものではない。例えばデバイス1は、公開鍵暗号等を用いてハッシュ値からさらに電子署名の署名値を算出し、署名値を検証することでプログラムの起動の可否を判定するようにしてもよい。また、例えばデバイス1は、プログラム(ソースコード)自体のハッシュ値ではなく、プログラムに付随する識別子(ID)のハッシュ値を計算するなどしてもよい。すなわち、デバイス1は通常領域20で起動するプログラムを表す検証値を算出し、起動を許可するプログラムを表す検証用の参照値と照合可能であればよく、そのアルゴリズムは特に限定されない。
また、上記では通常領域20側でのプログラムの起動と並行してセキュア領域30における判定処理を行うものとしたが、本実施の形態はこれに限定されるものではなく、セキュア領域30における判定処理の完了後、通常領域20側でプログラムの起動を開始するものとしてもよい。
以上より、本実施の形態1によれば、デバイス1を起動する際の安全性を適切に確保することができる。
また、本実施の形態1によれば、ハイパーバイザ40により通常領域20とセキュア領域30との間のアクセスを制御することで、デバイス1の起動時の安全性をより適切に確保することができる。
また、本実施の形態1によれば、通常領域20におけるプログラム起動を開始する前にリッチOS21、リッチアプリケーション22等のプログラム(第2プログラム)を実行してセキュア領域30を展開する。これにより、通常領域20においてプログラムを起動する際にはプログラムの起動の可否を判定する環境が整えられることになり、一連の処理を適切に行うことができる。
(実施の形態2)
本実施の形態では、セキュア領域30において、通常領域20で実行するプログラムの更新の可否を判定する形態について述べる。なお、実施の形態1と重複する内容については同一の符号を付して説明を省略する。
図6は、実施の形態2に係るプログラム更新処理の手順を示す説明図である。図6に基づき、本実施の形態の概要について説明する。
本実施の形態では、セキュア領域30において、通常領域20で実行するプログラムの更新の可否を判定する形態について述べる。なお、実施の形態1と重複する内容については同一の符号を付して説明を省略する。
図6は、実施の形態2に係るプログラム更新処理の手順を示す説明図である。図6に基づき、本実施の形態の概要について説明する。
通常領域20側で動作するリッチOS21、リッチアプリケーション22等のプログラムは、適宜アップデートを行うことがあり得る。本実施の形態では、リッチOS21、リッチアプリケーション22等のプログラムの更新を行う場合に、実施の形態1と同様の判定処理を行い、プログラム更新時の安全性を確保する。
デバイス1は外部装置から、プログラムの更新要求を受け付ける。プログラムの更新要求元、すなわち更新プログラムの取得元である外部装置は、クラウド上のサーバ装置、あるいはローカルのパーソナルコンピュータ等であり得る。なお、本実施の形態ではデバイス1が外部からの更新要求を受けてプログラムの更新を行うものとして説明するが、本実施の形態はこれに限定されるものではなく、デバイス1が外部装置(プログラムの取得元)に対して更新要求を行い、能動的にプログラムの更新を行うものとしてもよい。また、例えばデバイス1は、USBメモリ等の読取媒体から更新プログラムを直接読み取り、プログラムの更新を行うものとしても良い。
更新要求を受け付けた場合、デバイス1の制御部11はまず、通常領域20において、更新要求元の認証を行う。要求元の認証方法は特に限定されないが、例えばユーザによるパスワードの入力、更新要求元との間での電子署名の交換等によって行う。デバイス1はこれらの認証処理に必要な認証用データ(パスワード等)を予め保持しておき、認証用データを参照して要求元の認証を行う。
更新要求元の認証に成功した場合、制御部11は、更新前のプログラムのハッシュ値を算出し、セキュア領域30に入力して判定依頼を行う。制御部11はセキュア領域30において、予め保持しているハッシュ値33と入力されたハッシュ値とを照合することで、プログラムの更新の可否を判定する。制御部11は、判定結果をセキュア領域30から通常領域20に入力する。制御部11は、セキュア領域30から入力された判定結果に従い、更新が許可された場合はリッチOS21、リッチアプリケーション22等のプログラムを更新する。
さらに制御部11は、更新後のプログラムのハッシュ値を算出し、セキュア領域30に入力する。制御部11は、セキュア領域30に格納してあるハッシュ値33(参照値)を、更新後のプログラムのハッシュ値(検証値)に更新する。次回のデバイス1の起動時に、制御部11は更新後のプログラムのハッシュ値33を参照して、通常領域20で起動するプログラムの起動の可否を判定する。
一方で、更新要求元の認証に失敗した場合、あるいはセキュア領域30においてプログラムの更新を許可しないものと判定した場合、制御部11はプログラムの更新動作を停止する。以上より、通常領域20側で動作するプログラムの更新時の安全性を適切に確保することができる。
図7は、実施の形態2に係るデバイス1が実行する処理手順の一例を示すフローチャートである。
デバイス1の制御部11は、デバイス1の外部から、リッチOS21、リッチアプリケーション22等の通常領域20で実行するプログラムの更新要求を受け付ける(ステップS201)。制御部11は通常領域20において、更新要求の要求元の認証を行う(ステップS202)。制御部11は、認証に成功したか否かを判定する(ステップS203)。
デバイス1の制御部11は、デバイス1の外部から、リッチOS21、リッチアプリケーション22等の通常領域20で実行するプログラムの更新要求を受け付ける(ステップS201)。制御部11は通常領域20において、更新要求の要求元の認証を行う(ステップS202)。制御部11は、認証に成功したか否かを判定する(ステップS203)。
認証に成功したと判定した場合(S203:YES)、制御部11は、更新前のプログラムのハッシュ値(検証値)を算出する(ステップS204)。制御部11は、ハイパーバイザ40を介して、算出したハッシュ値をセキュア領域30に入力する(ステップS205)。
制御部11はセキュア領域30において、通常領域20から入力されたハッシュ値と、セキュア領域30に予め格納してあるハッシュ値33(参照値)とを照合することで、プログラムの更新の可否を判定する(ステップS206)。制御部11はハイパーバイザ40を介して、判定結果を通常領域20に入力する(ステップS207)。
制御部11は判定結果を参照して、プログラムの更新が許可されたか否かを判定する(ステップS208)。更新が許可されたと判定した場合(S208:YES)、制御部11は、通常領域20で実行するプログラムを更新する(ステップS209)。また、制御部11は更新後のプログラムのハッシュ値を算出する(ステップS210)。制御部11は、算出したハッシュ値をセキュア領域30に入力し、セキュア領域30に格納してあるハッシュ値33を更新する(ステップS211)。制御部11は一連の処理を終了する。
プログラムの更新要求元の認証に失敗したと判定した場合(S203:NO)、又はプログラムの更新が許可されなかったと判定した場合(S208:NO)、制御部11はプログラムの更新処理を停止し(ステップS212)、一連の処理を終了する。
以上より、本実施の形態2によれば、通常領域20で実行するプログラムの更新を安全に行うことができる。
また、本実施の形態2によれば、セキュア領域30で判定処理を行う前に通常領域20で認証処理を行うことで、より安全にプログラムの更新を行うことができる。
(実施の形態3)
図8は、上述した形態のデバイス1の動作を示す機能ブロック図である。制御部11がプログラムPを実行することにより、デバイス1は以下のように動作する。
展開部81は、デバイス1を起動する場合に、第1実行領域と、該第1実行領域からのアクセスが制限された第2実行領域とを一時記憶領域に展開する。格納部82は、前記第2実行領域に、前記第1実行領域において起動が許可されるプログラムを表す参照値を格納する。算出部83は、前記第1実行領域においてプログラムを起動する場合、該プログラムを表す検証値を算出する。判定部84は、前記第2実行領域において、前記検証値と前記参照値とを照合することで前記プログラムの起動の可否を判定する。
図8は、上述した形態のデバイス1の動作を示す機能ブロック図である。制御部11がプログラムPを実行することにより、デバイス1は以下のように動作する。
展開部81は、デバイス1を起動する場合に、第1実行領域と、該第1実行領域からのアクセスが制限された第2実行領域とを一時記憶領域に展開する。格納部82は、前記第2実行領域に、前記第1実行領域において起動が許可されるプログラムを表す参照値を格納する。算出部83は、前記第1実行領域においてプログラムを起動する場合、該プログラムを表す検証値を算出する。判定部84は、前記第2実行領域において、前記検証値と前記参照値とを照合することで前記プログラムの起動の可否を判定する。
本実施の形態3は以上の如きであり、その他は実施の形態1及び2と同様であるので、対応する部分には同一の符号を付してその詳細な説明を省略する。
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
1 デバイス
11 制御部
12 主記憶部
13 通信部
14 補助記憶部
P プログラム
20 通常領域
21 リッチOS
22 リッチアプリケーション
30 セキュア領域
31 セキュアOS
32 セキュアアプリケーション
33 ハッシュ値
11 制御部
12 主記憶部
13 通信部
14 補助記憶部
P プログラム
20 通常領域
21 リッチOS
22 リッチアプリケーション
30 セキュア領域
31 セキュアOS
32 セキュアアプリケーション
33 ハッシュ値
Claims (7)
- デバイスを起動する場合に、第1実行領域と、該第1実行領域からのアクセスが制限された第2実行領域とを一時記憶領域に展開し、
前記第2実行領域に、前記第1実行領域において起動が許可されるプログラムを表す参照値を格納し、
前記第1実行領域において前記プログラムを起動する場合、該プログラムを表す検証値を算出し、
前記第2実行領域において、前記検証値と前記参照値とを照合することで前記プログラムの起動の可否を判定する
処理をデバイスに実行させることを特徴とするプログラム。 - 前記デバイスを起動する場合に、前記第1実行領域及び第2実行領域の間のアクセスを制御する共有実行領域を前記一時記憶領域に展開し、
前記共有実行領域を介して、前記第2実行領域から前記第1実行領域に、前記プログラムの起動の可否を判定した判定結果を入力する
ことを特徴とする請求項1に記載のプログラム。 - 前記プログラムを起動する前に、前記第2実行領域において実行する第2プログラムを起動する
ことを特徴とする請求項1又は2に記載のプログラム。 - 前記プログラムを更新する場合、更新前の前記プログラムを表す前記検証値を算出し、
前記第2実行領域において、前記検証値と参照値とを照合することで、前記プログラムの更新の可否を判定し、
前記プログラムの更新を許可すると判定した場合、更新後の前記プログラムから算出された前記検証値に前記参照値を更新する
ことを特徴とする請求項1〜3のいずれか1項に記載のプログラム。 - 前記プログラムを更新する場合、前記第1実行領域において、更新する前記プログラムの取得元の認証を行い、
前記取得元の認証に成功した場合、前記第2実行領域において前記プログラムの更新の可否を判定する
ことを特徴とする請求項4に記載のプログラム。 - デバイスを起動する場合に、第1実行領域と、該第1実行領域からのアクセスが制限された第2実行領域とを一時記憶領域に展開する展開部と、
前記第2実行領域に、前記第1実行領域において起動が許可されるプログラムを表す参照値を格納する格納部と、
前記第1実行領域において前記プログラムを起動する場合、該プログラムを表す検証値を算出する算出部と、
前記第2実行領域において、前記検証値と前記参照値とを照合することで前記プログラムの起動の可否を判定する判定部と
を備えることを特徴とするデバイス。 - デバイスを起動する場合に、第1実行領域と、該第1実行領域からのアクセスが制限された第2実行領域とを一時記憶領域に展開し、
前記第2実行領域に、前記第1実行領域において起動が許可されるプログラムを表す参照値を格納し、
前記第1実行領域において前記プログラムを起動する場合、該プログラムを表す検証値を算出し、
前記第2実行領域において、前記検証値と前記参照値とを照合することで前記プログラムの起動の可否を判定する
処理をデバイスに実行させることを特徴とする起動方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019037963A JP2020140665A (ja) | 2019-03-01 | 2019-03-01 | プログラム、デバイス及び起動方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019037963A JP2020140665A (ja) | 2019-03-01 | 2019-03-01 | プログラム、デバイス及び起動方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020140665A true JP2020140665A (ja) | 2020-09-03 |
Family
ID=72264994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019037963A Pending JP2020140665A (ja) | 2019-03-01 | 2019-03-01 | プログラム、デバイス及び起動方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020140665A (ja) |
-
2019
- 2019-03-01 JP JP2019037963A patent/JP2020140665A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5014726B2 (ja) | 無許可のブートローダの実行を防止することによって安全性を高めた実行環境 | |
CN109669734B (zh) | 用于启动设备的方法和装置 | |
TWI607376B (zh) | 用於處理改變依照統一可延伸韌體介面計算裝置中之系統安全資料庫及韌體儲存區請求的系統及方法 | |
JP4647300B2 (ja) | 特定の装置または装置のクラスにおいてのみソフトウェアの更新のインストールまたは稼動を確実に行えるようにする方法及びシステム | |
US8918907B2 (en) | Approaches for firmware to trust an application | |
JP2014518428A (ja) | Biosフラッシュ攻撃に対する保護および通知 | |
JP2007257197A (ja) | 起動検証機能を有する情報処理装置 | |
CN104424441A (zh) | 处理系统 | |
JP6391439B2 (ja) | 情報処理装置、サーバ装置、情報処理システム、制御方法及びコンピュータプログラム | |
TWI687840B (zh) | 記憶體子系統、安全客戶端裝置與認證方法 | |
JP6846457B2 (ja) | 自動検証方法及びシステム | |
WO2017052760A1 (en) | Secure boot devices, systems, and methods | |
WO2021249359A1 (zh) | 数据完整性保护的方法和装置 | |
CN111523112A (zh) | 一种服务器安全启动方法、装置、设备及介质 | |
EP3851989A1 (en) | Electronic device for updating firmware based on user authentication and an operating method thereof | |
CN112800436B (zh) | 数据授权方法、装置及电子设备 | |
TWI760752B (zh) | 應用加速驗證映像檔方法的系統 | |
TW201602835A (zh) | 允許測試金鑰用於bios安裝之技術 | |
CN112511306A (zh) | 一种基于混合信任模型的安全运行环境构建方法 | |
CN107924440B (zh) | 用于管理容器的方法、系统和计算机可读介质 | |
WO2014183643A1 (zh) | 具有安全启动功能的芯片的校验方法及校验装置 | |
TWI605357B (zh) | 電腦系統以及電腦系統操作方法 | |
CN113448681A (zh) | 一种虚拟机监控器公钥的注册方法、设备和存储介质 | |
JP2020140665A (ja) | プログラム、デバイス及び起動方法 | |
CN114995894A (zh) | 操作系统的启动控制方法、终端设备及可读存储介质 |