IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ レノボ・シンガポール・プライベート・リミテッドの特許一覧

<>
  • 特開-情報処理装置、及び制御方法 図1
  • 特開-情報処理装置、及び制御方法 図2
  • 特開-情報処理装置、及び制御方法 図3
  • 特開-情報処理装置、及び制御方法 図4
  • 特開-情報処理装置、及び制御方法 図5
  • 特開-情報処理装置、及び制御方法 図6
  • 特開-情報処理装置、及び制御方法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023173148
(43)【公開日】2023-12-07
(54)【発明の名称】情報処理装置、及び制御方法
(51)【国際特許分類】
   G06F 21/57 20130101AFI20231130BHJP
【FI】
G06F21/57 350
【審査請求】有
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022085195
(22)【出願日】2022-05-25
(11)【特許番号】
(45)【特許公報発行日】2023-08-22
(71)【出願人】
【識別番号】505205731
【氏名又は名称】レノボ・シンガポール・プライベート・リミテッド
(74)【代理人】
【識別番号】100161207
【弁理士】
【氏名又は名称】西澤 和純
(74)【代理人】
【識別番号】100169764
【弁理士】
【氏名又は名称】清水 雄一郎
(74)【代理人】
【識別番号】100175824
【弁理士】
【氏名又は名称】小林 淳一
(74)【代理人】
【識別番号】100206081
【弁理士】
【氏名又は名称】片岡 央
(72)【発明者】
【氏名】笠松 栄太郎
(72)【発明者】
【氏名】瀬戸 裕一郎
(72)【発明者】
【氏名】萩原 幹雄
(57)【要約】
【課題】システムのインテグリティチェックを含む起動時間を短縮すること。
【解決手段】情報処理装置は、システムの処理を行うシステムプログラムを記憶するメモリと、メモリに記憶されているシステムプログラムを実行するプロセッサと、プロセッサとは別に設けられたEC(Embedded Controller)と、を備えている。プロセッサは、メモリに記憶されているシステムプログラムからダイジェスト値を計算するDDC(Dedicated Digest Calculator)を有する。ECは、DDCにより算出されたダイジェスト値に基づいて、システムプログラムを検証する。
【選択図】図2
【特許請求の範囲】
【請求項1】
システムの処理を行うシステムプログラムを記憶するメモリと、
前記メモリに記憶されている前記システムプログラムを実行するプロセッサと、
前記プロセッサとは別に設けられたEC(Embedded Controller)と、
を備え、
前記プロセッサは、
前記メモリに記憶されている前記システムプログラムからダイジェスト値を計算するDDC(Dedicated Digest Calculator)を有し、
前記ECは、
前記DDCにより算出された前記ダイジェスト値に基づいて、前記システムプログラムを検証する、
情報処理装置。
【請求項2】
前記メモリは、前記プロセッサとバスで接続されており、
前記DDCは、
前記ECからの前記ダイジェスト値の計算要求に応じて、前記メモリに記憶されている前記システムプログラムを前記バスを介して直接的に取得し、取得した前記システムプログラムから前記ダイジェスト値を計算する、
請求項1に記載の情報処理装置。
【請求項3】
前記メモリは、前記ECとバスで接続されており、
前記ECは、前記バスを介して前記メモリから取得するデータを前記プロセッサへパススルー方式で送信するパススルーバスで前記プロセッサと接続されており、
前記DDCは、
前記ECからの前記ダイジェスト値の計算要求に応じて、前記メモリに記憶されている前記システムプログラムを前記ECを経由して取得し、取得した前記システムプログラムから前記ダイジェスト値を計算する、
請求項1に記載の情報処理装置。
【請求項4】
前記ECは、暗号化された通信手段を用いて前記プロセッサから前記ダイジェスト値を取得する、
請求項1に記載の情報処理装置。
【請求項5】
前記メモリは、前記DDCの処理を行うDDCプログラムを記憶しており、
前記ECは、
前記メモリから前記DDCプログラムを取得し、取得した前記DDCプログラムを検証する、
請求項1に記載の情報処理装置。
【請求項6】
前記ECは、
起動時に、前記DDCプログラム及び前記システムプログラムの実行を開始しないように前記プロセッサに要求し、前記DDCプログラムの検証結果に基づいて前記DDCプログラムの実行を許可し、さらに前記システムプログラムの検証結果に基づいて前記システムプログラムの実行を許可する、
請求項5に記載の情報処理装置。
【請求項7】
前記プロセッサは、
前記システムプログラムを実行中のときに前記ECから前記ダイジェスト値の計算要求を受けた場合、前記DDCが前記メモリから前記システムプログラムを取得する際の前記バスのアクセスの調停を行う、
請求項2に記載の情報処理装置。
【請求項8】
前記ECは、
前記システムプログラムを実行中のときに前記DDCに対して前記ダイジェスト値の計算要求を行う場合、前記DDCが前記メモリから前記システムプログラムを取得する際の前記バスのアクセスの調停を行う、
請求項3に記載の情報処理装置。
【請求項9】
システムの処理を行うシステムプログラムを記憶するメモリと、前記メモリに記憶されている前記システムプログラムを実行するプロセッサと、前記プロセッサとは別に設けられたEC(Embedded Controller)と、を備える情報処理装置における制御方法であって、
前記プロセッサが有するDDC(Dedicated Digest Calculator)が、
前記メモリに記憶されている前記システムプログラムからダイジェスト値を計算するステップと、
前記ECが、
前記DDCにより算出された前記ダイジェスト値に基づいて、前記システムプログラムを検証するステップと、
を含む制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、及び制御方法に関する。
【背景技術】
【0002】
パーソナルコンピュータなどの情報処理装置は、システム起動時に、エラーがあるか否かを診断するエラー診断処理を実行する(例えば、特許文献1を参照)。このシステム起動時のエラー診断処理では、例えば、BIOS(Basic Input Output System)などのシステムプログラムのインテグリティチェック(整合性のチェック)も行われる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2017-76285号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
例えば、BIOSなどのシステムプログラムを実行するプロセッサとは別に設けられているEC(Embedded Controller)が、プロセッサでシステムプログラムが実行されるよりも前に最初に動作を開始する。そのため、信頼の基点(Root of Trust)としてECでプログラムのダイジェスト値を計算することによりインテグリティチェックを行うという構成がある。しかしながら、ECは、一般的に限られた能力しか持たないため、処理能力が高くない。近年、情報処理装置の機能増加に伴って、プログラムのデータ量が増大してきているため、ECの処理能力ではダイジェスト値の計算に多くの時間がかかり、システムの起動時間が長くなってしまう場合があった。
【0005】
本発明は、上記した事情に鑑みてなされたもので、システムのインテグリティチェックを含む起動時間を短縮することができる情報処理装置、及び制御方法を提供することを目的の一つとする。
【課題を解決するための手段】
【0006】
本発明は上記の課題を解決するためになされたものであり、本発明の第1態様に係る情報処理装置は、システムの処理を行うシステムプログラムを記憶するメモリと、前記メモリに記憶されている前記システムプログラムを実行するプロセッサと、前記プロセッサとは別に設けられたEC(Embedded Controller)と、を備え、前記プロセッサは、前記メモリに記憶されている前記システムプログラムからダイジェスト値を計算するDDC(Dedicated Digest Calculator)を有し、前記ECは、前記DDCにより算出された前記ダイジェスト値に基づいて、前記システムプログラムを検証する。
【0007】
上記情報処理装置において、前記メモリは、前記プロセッサとバスで接続されており、前記DDCは、前記ECからの前記ダイジェスト値の計算要求に応じて、前記メモリに記憶されている前記システムプログラムを前記バスを介して直接的に取得し、取得した前記システムプログラムから前記ダイジェスト値を計算してもよい。
【0008】
上記情報処理装置において、前記メモリは、前記ECとバスで接続されており、前記ECは、前記バスを介して前記メモリから取得するデータを前記プロセッサへパススルー方式で送信するパススルーバスで前記プロセッサと接続されており、前記DDCは、前記ECからの前記ダイジェスト値の計算要求に応じて、前記メモリに記憶されている前記システムプログラムを前記ECを経由して取得し、取得した前記システムプログラムから前記ダイジェスト値を計算してもよい。
【0009】
上記情報処理装置において、前記ECは、暗号化された通信手段を用いて前記プロセッサから前記ダイジェスト値を取得してもよい。
【0010】
上記情報処理装置において、前記メモリは、前記DDCの処理を行うDDCプログラムを記憶しており、前記ECは、前記メモリから前記DDCプログラムを取得し、取得した前記DDCプログラムを検証してもよい。
【0011】
上記情報処理装置において、前記ECは、起動時に、前記DDCプログラム及び前記システムプログラムの実行を開始しないように前記プロセッサに要求し、前記DDCプログラムの検証結果に基づいて前記DDCプログラムの実行を許可し、さらに前記システムプログラムの検証結果に基づいて前記システムプログラムの実行を許可してもよい。
【0012】
上記情報処理装置において、前記プロセッサは、前記システムプログラムを実行中のときに前記ECから前記ダイジェスト値の計算要求を受けた場合、前記DDCが前記メモリから前記システムプログラムを取得する際の前記バスのアクセスの調停を行ってもよい。
【0013】
上記情報処理装置において、前記ECは、前記システムプログラムを実行中のときに前記DDCに対して前記ダイジェスト値の計算要求を行う場合、前記DDCが前記メモリから前記システムプログラムを取得する際の前記バスのアクセスの調停を行ってもよい。
【0014】
また、本発明の第2態様に係る、システムの処理を行うシステムプログラムを記憶するメモリと、前記メモリに記憶されている前記システムプログラムを実行するプロセッサと、前記プロセッサとは別に設けられたEC(Embedded Controller)と、を備える情報処理装置における制御方法は、前記プロセッサが有するDDC(Dedicated Digest Calculator)が、前記メモリに記憶されている前記システムプログラムからダイジェスト値を計算するステップと、前記ECが、前記DDCにより算出された前記ダイジェスト値に基づいて、前記システムプログラムを検証するステップと、を含む。
【発明の効果】
【0015】
本発明の上記態様によれば、システムのインテグリティチェックを含む起動時間を短縮することができる。
【図面の簡単な説明】
【0016】
図1】第1の実施形態に係る情報処理装置の主要なハードウェア構成の一例を示す図。
図2】第1の実施形態に係る情報処理装置のインテグリティチェックを行う構成の一例を示すブロック図。
図3】第1の実施形態に係る起動時のインテグリティチェック処理の一例を示すフローチャート。
図4】第1の実施形態に係るOS実行中のインテグリティチェック処理の一例を示すフローチャート。
図5】第2の実施形態に係る情報処理装置のインテグリティチェックを行う構成の一例を示すブロック図。
図6】第2の実施形態に係る起動時のインテグリティチェック処理の一例を示すフローチャート。
図7】第2の実施形態に係るOS実行中のインテグリティチェック処理の一例を示すフローチャート。
【発明を実施するための形態】
【0017】
以下、図面を参照して、本発明の実施形態について説明する。
<第1の実施形態>
まず、本発明の第1の実施形態について説明する。
図1は、本実施形態に係る情報処理装置1の主要なハードウェア構成の一例を示す図である。情報処理装置1は、例えば、クラムシェル型のノートPC(Personal Computer)である。
【0018】
図1に示すように、情報処理装置1は、SoC10と、通信部11と、記憶部12と、表示部13と、オーディオシステム14と、USBコネクタ15と、フラッシュメモリ16と、EC20と、入力部21と、電源回路22と、バッテリ23とを備えている。
【0019】
SoC10は、プロセッサやメモリなどの複数のIC(Integrated Circuit)が1チップ化されたSOC(System On a Chip)として構成されている。例えば、SoC10は、不図示のCPU(Central Processing Unit)、チップセット、DRAM(Dynamic Random Access Memory)などを含んで構成されている。CPUは、OS(Operating System)及びBIOS(Basic Input Output System)などのシステムプログラム、OS上で動作する各種ドライバ、各種サービス/ユーティリティ、アプリケーションプログラムなどを実行する。DRAMは、CPUが実行するプログラムの読み込み領域、プログラムの処理データを書き込む作業領域などとして利用される。チップセットは、USB(Universal Serial Bus)、シリアルATA(AT Attachment)、SPI(Serial Peripheral Interface)バス、PCI(Peripheral Component Interconnect)バス、PCI-Expressバス、及びeSPI(Embedded Serial Peripheral Interface)バスなどのコントローラを備えている。
【0020】
通信部11は、無線LAN(Local Area Network)または有線LANにより通信ネットワークに接続し、データ通信を行う。
【0021】
記憶部12は、HDD(Hard Disk Drive)、SSD(Solid State Drive)などを含んで構成される。例えば、記憶部12は、OS、各種ドライバ、各種サービス/ユーティリティ、アプリケーションプログラム、及び各種データなどを記憶する。
【0022】
表示部13は、例えば、液晶ディスプレイや有機ELディスプレイを含んで構成され、SoC10が実行する各種プログラムに応じた表示データに基づく画像を表示する。
【0023】
オーディオシステム14は、音データの記録、再生、出力などを行う。
USBコネクタ15は、USBを利用した周辺機器類を接続するためのコネクタである。
【0024】
フラッシュメモリ16は、例えばSPIフラッシュメモリであり、少なくともBIOSのプログラムを記憶する。なお、フラッシュメモリ16は、後述するDDC(Dedicated Digest Calculator)の処理を行うプログラムをさらに記憶してもよい。DDCは、プログラムのダイジェスト値を高速に計算するICであり、上述したSoC10に含んで構成されている。このDDCを利用してシステムプログラムのダイジェスト値を計算しインテグリティチェックを行う構成については、図2を参照して後述する。
【0025】
EC(Embedded Controller)20は、SoC10によるシステムの動作状態に関わらず、各種デバイス(周辺装置やセンサ等)の監視、制御などを行うワンチップマイコン(One-Chip Microcomputer)である。EC20は、不図示のCPU、ROM、RAMなどで構成されるとともに、各種のバス、複数チャネルのA/D入力端子、D/A出力端子、タイマ、及びデジタル入出力端子を備えている。EC20には、それらのバスや入出力端子を介して、例えば、SoC10、フラッシュメモリ16、入力部21、及び電源回路22などが接続されている。
【0026】
入力部21は、例えば、キーボード、ポインティング・デバイス、タッチパッドなどの入力デバイスである。また、入力部21には、電源ボタン等の操作子も含まれる。入力部21は、ユーザの操作に基づく操作信号をEC20へ送信する。
【0027】
電源回路22は、例えば、不図示のDC/DCコンバータ、充放電ユニットなどを含んで構成されている。DC/DCコンバータは、外部電源(AC/DCアダプタなど)又はバッテリ23から供給される直流電力の電圧を、情報処理装置1の各部を動作させるために必要な複数の電圧に変換する。また、電源回路22は、EC20からの制御に基づいて、情報処理装置1の各部に電力を供給する。充放電ユニットは、バッテリ23の充電及び放電を制御する。
【0028】
バッテリ23は、例えば、リチウムイオンバッテリである。バッテリ23は、外部電源から電源回路22へ直流電力が供給される場合、電源回路22の制御により充電される。また、バッテリ23は、外部電源が供給されない状態では、充電されている直流電力を電源回路22へ供給する。
【0029】
[システムプログラムのインテグリティチェックを行う構成]
次に、情報処理装置1の構成のうちシステムプログラムのインテグリティチェックを行う構成について説明する。
【0030】
図2は、本実施形態に係る情報処理装置1のインテグリティチェックを行う構成の一例を示すブロック図である。この図2において、図1の各部に対応する構成には同一の符号を付している。
【0031】
SoC10は、メイン処理部110と、DDC111とを備えている。メイン処理部110は、少なくともCPUを含む構成であり、上記で説明したSoC10に含まれるCPUチップセット、DRAMなどを含む構成である。DDC111は、プログラムのダイジェスト値を計算するハードウェアデバイスである。DDC111は、SoC10に搭載されているため、処理能力が限られているEC20でダイジェスト値を計算するよりも高速にダイジェスト値を計算することができる。
【0032】
DDC111は、フラッシュメモリ16からSPIを介してBIOSのプログラムを読み込む。DDC111は、フラッシュメモリ16から読み込まれたBIOSのプログラムのダイジェスト値を計算する。ここで、ダイジェスト値は、BIOSのプログラムから、例えばハッシュ関数などを用いて計算される情報であり、BIOSのプログラムから一意に決定される。ダイジェスト値は、BIOSのプログラムの正当性を証明するための情報である。仮に、BIOSのプログラムの少なくとも一部が改ざんされていた場合には、計算されるダイジェスト値が異なる値となるため、検出可能である。
【0033】
EC20は、DDC111がBIOSのプログラムから計算したダイジェスト値を、eSPIを介して取得する。たとえば、EC20は、eSPIを介してTSL(Transport Layer Security)などの暗号化された安全な通信チャネルを確立し、DDC111からダイジェスト値を取得する。
【0034】
EC20は、DDC111から取得したダイジェスト値に基づいて、フラッシュメモリ16に記憶されているBIOSのプログラムを検証する。例えば、EC20は、DDC111から取得したダイジェスト値を、シグネチャを用いてインテグリティチェックを行う。一例として、EC20は、DDC111から取得したダイジェスト値を、EC20内に予め記憶されている比較用のダイジェスト値(正当なBIOSのプログラムから計算された正当なダイジェスト値)と比較し、当該比較結果に基づいてBIOSのプログラムの正当性を判定する。
【0035】
なお、BIOSのプログラムの正当性が確認されるまでは、BIOSのプログラムの実行を開始させないようにする必要がある。そのため、EC20は、起動時に、SoC10が起動しないようにするためのシステム停止信号(System halt signal)を、SoC10へ送信する。そして、EC20は、インテグリティチェックの結果に基づいて、BIOSのプログラムが正当であると判定した場合に、BIOSのプログラムの実行を許可する。
【0036】
また、DDC111は、DDC111の処理を行うDDCプログラムを実行することにより、BIOSのプログラムのダイジェスト値を計算する処理を行う。このDDCプログラムは、例えばフラッシュメモリ16に記憶されている。EC20は、BIOSのプログラムのインテグリティチェックを行う前に、フラッシュメモリ16からDDCプログラムを読み込んで検証してもよい。例えば、EC20は、DDCプログラムからダイジェスト値を計算してインテグリティチェックを行う。DDCプログラムからのダイジェスト値の計算はBIOSに比較してプログラムのデータ量が少ないため、EC20を行っても短時間で済み、起動時間への影響が少ない。
【0037】
なお、EC20がフラッシュメモリ16からDDCプログラムを読み込む際には、システムの起動前でも使用可能なG3シェアリングパスを介して読み込む。ここで、「G3」は、ACPI(Advanced Configuration and Power Interface)で規定されているグローバルシステムステート(G-State)の電力状態を示している。つまり、G3シェアリングパスは、システムの起動前でも使用可能なパスのことを意味している。
【0038】
[起動時のインテグリティチェック処理]
次に、起動処理においてシステムプログラムのインテグリティチェックを行う処理の動作について説明する。
図3は、本実施形態に係る起動時のインテグリティチェック処理の一例を示すフローチャートである。
【0039】
EC20は、入力部21(電源ボタン)へのユーザの操作に基づいて情報処理装置1の起動要求を受けると、電源回路22を制御して各部へ電力の給電を開始させ、電源ON(オン)の状態へ移行する(ステップS101)。また、SoC10も電源ON(オン)の状態へ移行する(ステップS103)。
【0040】
EC20は、ステップS101において電源ON(オン)の状態へ移行すると、SoC10が電源ON(オン)の状態へ移行するものの起動しないようにするために、システム停止信号(System halt signal)をSoC10へ送信する(ステップS105)。なお、本例でのシステム停止信号は、SoC10がDDCプログラム及びBIOSのプログラムのいずれも実行を開始させないようにするための信号である。SoC10は、システム停止信号を受けると、起動処理を保留する。
【0041】
次に、EC20は、G3シェアリングパスを介してフラッシュメモリ16からDDCプログラムを読み込む(ステップS107)。そして、EC20は、読み込んだDDCプログラムを検証する(ステップS109)。例えば、EC20は、DDCプログラムからダイジェスト値を計算してインテグリティチェックを行う。
【0042】
EC20は、ステップS109におけるDDCプログラムの検証により、DDCプログラムが正当であると判定した場合、DDC停止解除信号をSoC10へ送信する(ステップS111)。DDC停止解除信号は、SoC10(DDC111)に対してDDCプログラムの実行を許可するための信号である。
【0043】
SoC10は、DDC停止解除信号を受取ると、DDC111の起動を許可する。これにより、DDC111は、SPIを介してフラッシュメモリ16からDDCプログラムを読み込み、DDCプログラムを実行する(ステップS113)。
【0044】
次に、EC20は、eSPIを介してDDC111との間でTSLなどの暗号化された通信チャネルを確立する(ステップS115)。EC20は、この通信チャネルを用いて、ダイジェスト値の計算要求を示す要求信号をDDC111へ送信する(ステップS117)。
【0045】
DDC111は、EC20からダイジェスト値の計算要求を示す要求信号を取得すると、SPIを介してフラッシュメモリ16からBIOSのプログラムを読み込む(ステップS119)。そして、DDC111は、フラッシュメモリ16から読み込まれたBIOSのプログラムのダイジェスト値を計算する(ステップS121)。
【0046】
EC20は、DDC111がBIOSのプログラムから計算したダイジェスト値を、eSPI(暗号化された通信チャネル)を用いて取得する(ステップS123)。
【0047】
EC20は、ステップS123において取得したダイジェスト値に基づいて、フラッシュメモリ16に記憶されているBIOSのプログラムを検証する(ステップS125)。例えば、EC20は、DDC111から取得したダイジェスト値を、シグネチャを用いてインテグリティチェックを行う。
【0048】
そして、EC20は、ステップS125におけるBIOSのプログラムを検証により、BIOSのプログラムが正当であると判定した場合、BIOS停止解除信号をSoC10へ送信する(ステップS127)。BIOS停止解除信号は、SoC10(メイン処理部110)に対してBIOSのプログラムの実行を許可するための信号である。
【0049】
SoC10は、BIOS停止解除信号を受取ると、BIOSの起動を許可する。メイン処理部110は、SPIを介してフラッシュメモリ16からBIOSのプログラムを読み込み、BIOSのプログラムを実行する(ステップS129)。これにより、SoC10は、起動処理を実行する。
【0050】
[OS実行中のインテグリティチェック処理]
次に、起動後のOS実行中にシステムプログラムのインテグリティチェックを行う処理の動作について説明する。
図4は、本実施形態に係るOS実行中のインテグリティチェック処理の一例を示すフローチャートである。
【0051】
EC20は、OS実行中の所定のタイミングで、eSPI(暗号化された通信チャネル)を用いてダイジェスト値の計算要求を示す要求信号をSoC10(DDC111)へ送信する(ステップS201)。
【0052】
SoC10は、ステップS201においてEC20からダイジェスト値の計算要求を示す要求信号を取得すると、SPIのバスアクセスの調停を行う(ステップS203)。そして、DDC111は、バスアクセスの調停によりアクセス権が付与されたタイミングで、SPIを介してフラッシュメモリ16からBIOSのプログラムを読み込む(ステップS205)。
【0053】
DDC111は、フラッシュメモリ16から読み込まれたBIOSのプログラムのダイジェスト値を計算する(ステップS207)。
【0054】
EC20は、DDC111がBIOSのプログラムから計算したダイジェスト値を、eSPI(暗号化された通信チャネル)を用いて取得する(ステップS209)。
【0055】
EC20は、ステップS209において取得したダイジェスト値に基づいて、フラッシュメモリ16に記憶されているBIOSのプログラムを検証する(ステップS211)。例えば、EC20は、DDC111から取得したダイジェスト値を、シグネチャを用いてインテグリティチェックを行う。
【0056】
以上説明してきたように、本実施形態に係る情報処理装置1は、BIOS(システムの一例)の処理を行うBIOSのプログラム(システムプログラムの一例)を記憶するフラッシュメモリ16(メモリの一例)と、フラッシュメモリ16に記憶されているBIOSのプログラムを実行するSoC10(プロセッサの一例)と、SoC10とは別に設けられたEC20と、を備えている。SoC10は、フラッシュメモリ16に記憶されているBIOSのプログラムからダイジェスト値を計算するDDC111を有する。EC20は、DDC111により算出されたダイジェスト値に基づいて、BIOSのプログラムを検証する。
【0057】
これにより、情報処理装置1は、BIOSのプログラムのダイジェスト値の計算をSoC10に搭載された処理能力の高いDDC111で行うため、EC20でダイジェスト値の計算を行うよりも高速でダイジェスト値の計算を行うことができ、システムのインテグリティチェックを含む起動時間を短縮することができる。
【0058】
例えば、フラッシュメモリ16は、SoC10とSPIバス(バスの一例)で接続されている。DDC111は、EC20からのダイジェスト値の計算要求に応じて、フラッシュメモリ16に記憶されているBIOSのプログラムをSPIを介して直接的に取得し、取得したBIOSのプログラムからダイジェスト値を計算する。
【0059】
これにより、情報処理装置1は、SoC10に搭載されたDDC111がフラッシュメモリ16から直接的にBIOSのプログラムを読み込んでダイジェスト値を計算することができる。
【0060】
また、EC20は、暗号化された通信チャネル(通信手段)を用いてSoC10(DDC111)からダイジェスト値を取得する。
【0061】
これにより、情報処理装置1は、DDC111が計算したダイジェスト値を安全に(例えば途中で改ざんされることがないように)EC20へ受け渡し、信頼の基点(Root of Trust)となるEC20側でBIOSのプログラムのインテグリティチェックを行うことができる。
【0062】
また、フラッシュメモリ16は、DDC111の処理を行うDDCプログラムを記憶している。そして、EC20は、フラッシュメモリ16からDDCプログラムを取得し、取得したDDCプログラムを検証する。
【0063】
これにより、情報処理装置1は、BIOSのプログラムのダイジェスト値を計算するDDC111で実行されるDDCプログラムのインテグリティチェックも行うため、システムの安全性を高めることができる。
【0064】
また、EC20は、起動時に、DDCプログラム及びBIOSのプログラムの実行を開始しないようにSoC10に要求し、DDCプログラムの検証結果に基づいてDDCプログラムの実行を許可する。
【0065】
これにより、情報処理装置1は、起動時に、DDCプログラムのインテグリティチェックを行ってからSoC10に搭載されたDDC111を起動させ、さらに当該DDC111を用いてBIOSのプログラムのインテグリティチェックを行ってからBIOSを起動させるため、システムの安全性を高めることができる。
【0066】
また、SoC10は、BIOSのプログラムを実行して起動した後のOSのプログラムを実行中のときにEC20からダイジェスト値の計算要求を受けた場合、DDC111がフラッシュメモリ16からBIOSのプログラムを取得する際のSPIバスのアクセスの調停を行う。
【0067】
これにより、情報処理装置1は、OSが実行中のときでも、OSの動作を長時間止めることなくシステムのインテグリティチェックを行うことができる。
【0068】
また、本実施形態に係る情報処理装置1における制御方法は、SoC10(プロセッサの一例)が有するDDC111が、フラッシュメモリ16(メモリの一例)に記憶されているBIOSのプログラム(システムプログラムの一例)からダイジェスト値を計算するステップと、EC20が、DDC111により算出されたダイジェスト値に基づいて、BIOSのプログラムを検証するステップと、を含む。
【0069】
これにより、情報処理装置1は、BIOSのプログラムのダイジェスト値の計算をSoC10に搭載された処理能力の高いDDC111で行うため、EC20でダイジェスト値の計算を行うよりも高速でダイジェスト値の計算を行うことができ、システムのインテグリティチェックを含む起動時間を短縮することができる。
【0070】
<第2の実施形態>
次に、本発明の第2の実施形態について説明する。
本実施形態に係る情報処理装置1の基本的なハードウェア構成は、図1に示す構成と同様であるが、システムプログラムのインテグリティチェックを行う構成の一部が異なる。
【0071】
図5は、本実施形態に係る情報処理装置1のインテグリティチェックを行う構成の一例を示すブロック図である。この図5において、図1及び図2の各部に対応する構成には同一の符号を付している。
【0072】
図5に示す構成は、DDC111がフラッシュメモリ16からBIOSのプログラムを読み込む際の経路が、図2に示す第1の実施形態に係る構成と異なる。図5に示すように、フラッシュメモリ16は、SoC10ではなくEC20とSPIバスで接続されている。また、SoC10は、EC20と専用のパススルーバス(Dedicated Pass-thru bus)で接続されている。このパススルーバスは、フラッシュメモリ16からSPIを介してEC20が取得するデータをパススルー方式でSoC10へ送信するためのバスである。
【0073】
DDC111は、フラッシュメモリ16からBIOSのプログラムを読み込む際に、EC20に対してパススルーモードを設定することにより、パススルーバスを用いてフラッシュメモリ16にアクセスすることができる。つまり、DDC111は、EC20を経由して(より詳しくは、パススルーバス、EC20、及びSPIを介して)フラッシュメモリ16からBIOSのプログラムを読み込む。また、EC20は、フラッシュメモリ16からDDCプログラムを読み込む際には、SPIを介して読み込む。このフラッシュメモリ16からBIOSのプログラム及びDDCプログラムを読み込む際の経路が異なる以外は、第1の実施形態と同様である。
【0074】
図6は、本実施形態に係る起動時のインテグリティチェック処理の一例を示すフローチャートである。この図6において、図3に示す各処理に対応する処理には同一の符号を付しており、その説明を省略する。この図6に示す処理では、ステップS107A、S118A、及びS119Aの処理が図3に示す処理とは異なる。
【0075】
ステップS107Aでは、EC20は、SPIを介してフラッシュメモリ16からDDCプログラムを読み込む。
【0076】
また、DDC111は、ステップS117においてEC20からダイジェスト値の計算要求を示す要求信号を取得すると、EC20に対してパススルーモードを設定する(ステップS118A)。これにより、DDC111は、パススルーバスを介してフラッシュメモリ16にアクセスすることが可能になる。DDC111は、EC20を介して(より詳しくは、パススルーバス、EC20、及びSPIを介して)フラッシュメモリ16からBIOSのプログラムを読み込む(ステップS119A)。そして、DDC111は、フラッシュメモリ16から読み込まれたBIOSのプログラムのダイジェスト値を計算する(ステップS121)。
【0077】
次に、本実施形態において、起動後のOS実行中にシステムプログラムのインテグリティチェックを行う処理の動作について説明する。本実施形態では、フラッシュメモリ16がSPIを介してEC20と接続されているため、SPIのバスアクセスの調停をSoC10ではなくEC20が行うことが第1の実施形態と異なる。
【0078】
図7は、本実施形態に係るOS実行中のインテグリティチェック処理の一例を示すフローチャートである。
【0079】
EC20は、OS実行中の所定のタイミングで、eSPI(暗号化された通信チャネル)を用いてダイジェスト値の計算要求を示す要求信号をSoC10(DDC111)へ送信する(ステップS301)。DDC111は、ステップS301においてEC20からダイジェスト値の計算要求を示す要求信号を取得すると、EC20に対してパススルーモードを設定する(ステップS303)。また、EC20は、SPIのバスアクセスの調停を行う(ステップS303)。
【0080】
DDC111は、EC20によるバスアクセスの調停によりアクセス権が付与されたタイミングで、EC20を介して(より詳しくは、パススルーバス、EC20、及びSPIを介して)フラッシュメモリ16からBIOSのプログラムを読み込む(ステップS119A)。
【0081】
DDC111は、フラッシュメモリ16からEC20を介して読み込まれたBIOSのプログラムのダイジェスト値を計算する(ステップS309)。
【0082】
EC20は、DDC111がBIOSのプログラムから計算したダイジェスト値を、eSPI(暗号化された通信チャネル)を用いて取得する(ステップS311)。
【0083】
EC20は、ステップS311において取得したダイジェスト値に基づいて、フラッシュメモリ16に記憶されているBIOSのプログラムを検証する(ステップS313)。例えば、EC20は、DDC111から取得したダイジェスト値を、シグネチャを用いてインテグリティチェックを行う。
【0084】
以上説明してきたように、本実施形態に係る情報処理装置1において、フラッシュメモリ16は、EC20とSPIバスで接続されている。また、EC20は、SPIバスを介してフラッシュメモリ16から取得するデータをSoC10へパススルー方式で送信するパススルーバスでSoC10と接続されている。そして、DDC111は、EC20からのダイジェスト値の計算要求に応じて、フラッシュメモリ16に記憶されているBIOSのプログラムをEC20を経由して取得し、取得したBIOSのプログラムからダイジェスト値を計算する。
【0085】
これにより、情報処理装置1は、SoC10がフラッシュメモリ16と直接的に接続されていない構成であっても、SoC10に搭載されたDDC111がEC20を経由してフラッシュメモリ16からBIOSのプログラムを読み込んでダイジェスト値を計算することができる。よって、情報処理装置1は、BIOSのプログラムのダイジェスト値の計算をSoC10に搭載された処理能力の高いDDC111で行うため、EC20でダイジェスト値の計算を行うよりも高速でダイジェスト値の計算を行うことができ、システムのインテグリティチェックを含む起動時間を短縮することができる。
【0086】
また、EC20は、SoC10がBIOSのプルグラムを実行して起動した後のOSのプログラムを実行中のときに、DDC111に対してダイジェスト値の計算要求を行う場合、DDC11がフラッシュメモリ16からBIOSのプログラムを取得する際のSPIバスのアクセスの調停を行う。
【0087】
これにより、情報処理装置1は、OSが実行中のときでも、OSの動作を長時間止めることなくシステムのインテグリティチェックを行うことができる。
【0088】
以上、この発明の各実施形態について図面を参照して詳述してきたが、具体的な構成は上述の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。例えば、上述の各実施形態において説明した各構成は、任意に組み合わせることができる。
【0089】
また、上記実施形態では、DDC111がダイジェスト値を計算するシステムプログラムとしてBIOSのプログラムを例に説明したが、BIOS以外のシステムプログラムであってもよい。また、DDC111は、システムプログラムに限らず、フラッシュメモリ16に記憶されているデータの一部または全部のダイジェスト値を計算をしてもよい。
【0090】
なお、上述した情報処理装置1は、内部にコンピュータシステムを有している。そして、上述した情報処理装置1が備える各構成の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述した情報処理装置1が備える各構成における処理を行ってもよい。ここで、「記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行する」とは、コンピュータシステムにプログラムをインストールすることを含む。ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、インターネットやWAN、LAN、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。このように、プログラムを記憶した記録媒体は、CD-ROM等の非一過性の記録媒体であってもよい。
【0091】
また、記録媒体には、当該プログラムを配信するために配信サーバからアクセス可能な内部又は外部に設けられた記録媒体も含まれる。なお、プログラムを複数に分割し、それぞれ異なるタイミングでダウンロードした後に情報処理装置1が備える各構成で合体される構成や、分割されたプログラムのそれぞれを配信する配信サーバが異なっていてもよい。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【0092】
また、上述した実施形態における情報処理装置1が備える各機能の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現してもよい。各機能は個別にプロセッサ化してもよいし、一部、又は全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現してもよい。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【0093】
また、上記実施形態の情報処理装置1は、ノートPCに限定されるものではなく、デスクトップ型のPC、タブレット型のPC等であってもよい。また、情報処理装置1は、PC(Personal Computer)に限定されるものではなく、ゲーム装置や、マルチメディア端末、スマートフォンなど等であってもよい。
【符号の説明】
【0094】
1 情報処理装置、10 SoC、11 通信部、12 記憶部、13 表示部、14 オーディオシステム、15 USBコネクタ、16 フラッシュメモリ、20 EC、21 入力部、22 電源回路、23 バッテリ、110 メイン処理部、111 DDC
図1
図2
図3
図4
図5
図6
図7
【手続補正書】
【提出日】2023-07-12
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
システムの処理を行うシステムプログラムを記憶するメモリと、
前記メモリに記憶されている前記システムプログラムを実行するプロセッサと、
前記プロセッサとは別に設けられたEC(Embedded Controller)と、
を備え、
前記メモリは、前記プロセッサとバスで接続されており、
前記プロセッサは、
前記メモリに記憶されている前記システムプログラムからダイジェスト値を計算するDDC(Dedicated Digest Calculator)を有し、
前記DDCは、
前記ECからの前記ダイジェスト値の計算要求に応じて、前記メモリに記憶されている前記システムプログラムを前記バスを介して直接的に取得し、取得した前記システムプログラムから前記ダイジェスト値を計算し、
前記ECは、
前記DDCにより算出された前記ダイジェスト値に基づいて、前記システムプログラムを検証する、
情報処理装置。
【請求項2】
前記プロセッサは、
前記システムプログラムを実行中のときに前記ECから前記ダイジェスト値の計算要求を受けた場合、前記DDCが前記メモリから前記システムプログラムを取得する際の前記バスのアクセスの調停を行う、
請求項に記載の情報処理装置。
【請求項3】
システムの処理を行うシステムプログラムを記憶するメモリと、
前記メモリに記憶されている前記システムプログラムを実行するプロセッサと、
前記プロセッサとは別に設けられたEC(Embedded Controller)と、
を備え、
前記メモリは、前記ECとバスで接続されており、
前記ECは、前記バスを介して前記メモリから取得するデータを前記プロセッサへパススルー方式で送信するパススルーバスで前記プロセッサと接続されており、
前記プロセッサは、
前記メモリに記憶されている前記システムプログラムからダイジェスト値を計算するDDC(Dedicated Digest Calculator)を有し、
前記DDCは、
前記ECからの前記ダイジェスト値の計算要求に応じて、前記メモリに記憶されている前記システムプログラムを前記ECを経由して取得し、取得した前記システムプログラムから前記ダイジェスト値を計算し、
前記ECは、
前記DDCにより算出された前記ダイジェスト値に基づいて、前記システムプログラムを検証する、
情報処理装置。
【請求項4】
前記ECは、
前記システムプログラムを実行中のときに前記DDCに対して前記ダイジェスト値の計算要求を行う場合、前記DDCが前記メモリから前記システムプログラムを取得する際の前記バスのアクセスの調停を行う、
請求項3に記載の情報処理装置。
【請求項5】
システムの処理を行うシステムプログラムを記憶するメモリと、
前記メモリに記憶されている前記システムプログラムを実行するプロセッサと、
前記プロセッサとは別に設けられたEC(Embedded Controller)と、
を備え、
前記プロセッサは、
前記メモリに記憶されている前記システムプログラムからダイジェスト値を計算するDDC(Dedicated Digest Calculator)を有し、
前記メモリは、前記DDCの処理を行うDDCプログラムを記憶しており、
前記ECは、
前記メモリから前記DDCプログラムを取得し、取得した前記DDCプログラムを検証し、
前記DDCにより算出された前記ダイジェスト値に基づいて、前記システムプログラムを検証する、
情報処理装置。
【請求項6】
前記ECは、
起動時に、前記DDCプログラム及び前記システムプログラムの実行を開始しないように前記プロセッサに要求し、前記DDCプログラムの検証結果に基づいて前記DDCプログラムの実行を許可し、さらに前記システムプログラムの検証結果に基づいて前記システムプログラムの実行を許可する、
請求項5に記載の情報処理装置。
【請求項7】
システムの処理を行うシステムプログラムを記憶するメモリと、前記メモリに記憶されている前記システムプログラムを実行するプロセッサと、前記プロセッサとは別に設けられたEC(Embedded Controller)と、を備える情報処理装置における制御方法であって、
前記メモリは、前記プロセッサとバスで接続されており、
前記プロセッサが有するDDC(Dedicated Digest Calculator)が、
前記ECからのダイジェスト値の計算要求に応じて、前記メモリに記憶されている前記システムプログラムを前記バスを介して直接的に取得し、取得した前記システムプログラムから前記ダイジェスト値を計算するステップと、
前記ECが、
前記DDCにより算出された前記ダイジェスト値に基づいて、前記システムプログラムを検証するステップと、
を含む制御方法。
【請求項8】
システムの処理を行うシステムプログラムを記憶するメモリと、前記メモリに記憶されている前記システムプログラムを実行するプロセッサと、前記プロセッサとは別に設けられたEC(Embedded Controller)と、を備える情報処理装置における制御方法であって、
前記メモリは、前記ECとバスで接続されており、
前記ECは、前記バスを介して前記メモリから取得するデータを前記プロセッサへパススルー方式で送信するパススルーバスで前記プロセッサと接続されており、
前記プロセッサが有するDDC(Dedicated Digest Calculator)が、
前記ECからのダイジェスト値の計算要求に応じて、前記メモリに記憶されている前記システムプログラムを前記ECを経由して取得し、取得した前記システムプログラムから前記ダイジェスト値を計算するステップと、
前記ECが、
前記DDCにより算出された前記ダイジェスト値に基づいて、前記システムプログラムを検証するステップと、
を含む制御方法。
【請求項9】
システムの処理を行うシステムプログラムを記憶するメモリと、前記メモリに記憶されている前記システムプログラムを実行するプロセッサと、前記プロセッサとは別に設けられたEC(Embedded Controller)と、を備える情報処理装置における制御方法であって、
前記プロセッサは、前記メモリに記憶されている前記システムプログラムからダイジェスト値を計算するDDC(Dedicated Digest Calculator)を有し、
前記メモリは、前記DDCの処理を行うDDCプログラムを記憶しており、
前記ECが、
前記メモリから前記DDCプログラムを取得し、取得した前記DDCプログラムを検証するステップと、
前記DDCにより算出された前記ダイジェスト値に基づいて、前記システムプログラムを検証するステップと、
を含む制御方法。