(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024056410
(43)【公開日】2024-04-23
(54)【発明の名称】コンピュータ
(51)【国際特許分類】
G06F 21/51 20130101AFI20240416BHJP
【FI】
G06F21/51
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022163269
(22)【出願日】2022-10-11
(71)【出願人】
【識別番号】000136136
【氏名又は名称】株式会社PFU
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】篠原 啓志
(57)【要約】
【課題】起動時にファームフェアの改ざんチェックを行うコンピュータの起動時間を短縮すること。
【解決手段】コンピュータ1において、第一FM20は、BIOS21を記憶し、EC10は、改ざんされていないBIOS21が第一FM20に記憶されている第一時点で実行されたBIOS21の第一の実行履歴と、第一時点より後の第二時点のコンピュータ1の起動時に実行されたBIOS21の第二の実行履歴とを比較することにより、BIOS21の改ざんの有無を検証する。例えば、第一の実行履歴は第一時点でのBIOS21のプログラムサイズである第一サイズを示し、第二の実行履歴は第二時点でのBIOS21のプログラムサイズである第二サイズを示し、EC10は、第二サイズが第一サイズに一致するときにBIOS21が改ざんされていないと判定し、第二サイズが第一サイズに一致しないときにBIOS21が改ざんされていると判定する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ファームウェアを記憶する記憶部と、
前記ファームウェアの改ざんの有無を検証する集積回路と、
を具備するコンピュータであって、
前記集積回路は、改ざんされていない前記ファームウェアが前記記憶部に記憶されている第一時点で実行された前記ファームウェアの第一の実行履歴と、前記第一時点より後の第二時点の前記コンピュータの起動時に実行された前記ファームウェアの第二の実行履歴とを比較することにより、前記ファームウェアの改ざんの有無を検証する、
コンピュータ。
【請求項2】
前記ファームウェアは複数のプログラムから形成され、
前記第一の実行履歴は前記第一時点での前記複数のプログラムの実行順序である第一順序を示し、前記第二の実行履歴は前記第二時点での前記複数のプログラムの実行順序である第二順序を示し、
前記集積回路は、前記第二順序が前記第一順序に一致するときに前記ファームウェアが改ざんされていないと判定し、前記第二順序が前記第一順序に一致しないときに前記ファームウェアが改ざんされていると判定する、
請求項1に記載のコンピュータ。
【請求項3】
前記第一の実行履歴は前記第一時点での前記ファームウェアの実行時間である第一時間を示し、前記第二の実行履歴は前記第二時点での前記ファームウェアの実行時間である第二時間を示し、
前記集積回路は、前記第二時間が前記第一時間に対する所定範囲内にあるときに前記ファームウェアが改ざんされていないと判定し、前記第二時間が前記所定範囲内にないときに前記ファームウェアが改ざんされていると判定する、
請求項1に記載のコンピュータ。
【請求項4】
前記第一の実行履歴は前記第一時点での前記ファームウェアのプログラムサイズである第一サイズを示し、前記第二の実行履歴は前記第二時点での前記ファームウェアのプログラムサイズである第二サイズを示し、
前記集積回路は、前記第二サイズが前記第一サイズに一致するときに前記ファームウェアが改ざんされていないと判定し、前記第二サイズが前記第一サイズに一致しないときに前記ファームウェアが改ざんされていると判定する、
請求項1に記載のコンピュータ。
【請求項5】
前記第一の実行履歴は前記第一時点で前記ファームウェアが配置されたメモリアドレスである第一アドレスを示し、前記第二の実行履歴は前記第二時点で前記ファームウェアが配置されたメモリアドレスである第二アドレスを示し、
前記集積回路は、前記第二アドレスが前記第一アドレスに一致するときに前記ファームウェアが改ざんされていないと判定し、前記第二アドレスが前記第一アドレスに一致しないときに前記ファームウェアが改ざんされていると判定する、
請求項1に記載のコンピュータ。
【請求項6】
前記第一の実行履歴は前記第一時点での前記ファームウェアに対するチェックサム結果である第一結果を示し、前記第二の実行履歴は前記第二時点での前記ファームウェアに対するチェックサム結果である第二結果を示し、
前記集積回路は、前記第二結果が前記第一結果に一致するときに前記ファームウェアが改ざんされていないと判定し、前記第二結果が前記第一結果に一致しないときに前記ファームウェアが改ざんされていると判定する、
請求項1に記載のコンピュータ。
【請求項7】
前記集積回路は、前記第一の実行履歴と前記第二の実行履歴との比較結果に基づいて前記ファームウェアが改ざんされていると判定したときに、前記ファームウェアから算出した第一のハッシュ値と、前記ファームウェアの電子署名を復号化することにより取得した第二のハッシュ値とを比較することにより、前記ファームウェアの改ざんの有無を再度検証する、
請求項1に記載のコンピュータ。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータに関する。
【背景技術】
【0002】
昨今、コンピュータのファームウェアの改ざん対策を、アメリカ国立標準技術研究所(NIST)が定めたセキュリティガイドラインに沿って行うことが求められている。このセキュリティガイドラインでは、ファームウェアの実行開始前にRoot of Trust(以下
では「RoT」と呼ぶことがある)がファームウェアの改ざんチェックを行い、信頼できるファームウェアであることを確認することが要求されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2020-155029号公報
【特許文献2】国際公開第2020/158377号
【特許文献3】特開2017-033248号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、コンピュータの起動時にファームウェアの改ざんチェックが行われる場合には、コンピュータの起動時間が長くなってしまう。改ざんチェックにかかる時間はコンピュータの起動時間全体に占める割合として小さくないため、改ざんチェックに要する時間の短縮が求められる。
【0005】
そこで、本開示では、起動時にファームフェアの改ざんチェックを行うコンピュータの起動時間を短縮できる技術を提案する。
【課題を解決するための手段】
【0006】
本開示のコンピュータは、記憶部と、集積回路とを有する。前記記憶部は、ファームウェアを記憶する。前記集積回路は、前記ファームウェアの改ざんの有無を検証する。また、前記集積回路は、改ざんされていない前記ファームウェアが前記記憶部に記憶されている第一時点で実行された前記ファームウェアの第一の実行履歴と、前記第一時点より後の第二時点の前記コンピュータの起動時に実行された前記ファームウェアの第二の実行履歴とを比較することにより、前記ファームウェアの改ざんの有無を検証する。
【発明の効果】
【0007】
本開示によれば、起動時にファームフェアの改ざんチェックを行うコンピュータの起動時間を短縮できる。
【図面の簡単な説明】
【0008】
【
図1】
図1は、本開示の実施例のコンピュータの構成例を示す図である。
【
図2】
図2は、本開示の実施例のBIOSのプログラム構成例を示す図である。
【
図3】
図3は、本開示の実施例のコンピュータにおける処理手順の一例を示すフローチャートである。
【
図4】
図4は、本開示の実施例の実行履歴の一例を示す図である。
【
図5】
図5は、本開示の実施例の実行履歴の一例を示す図である。
【
図6】
図6は、本開示の実施例の実行履歴の一例を示す図である。
【
図7】
図7は、本開示の実施例の実行履歴の一例を示す図である。
【
図8】
図8は、本開示の実施例の実行履歴の一例を示す図である。
【
図9】
図9は、本開示の実施例の実行履歴テーブルの一例を示す図である。
【
図10】
図10は、本開示の実施例のコンピュータの動作例を示す図である。
【
図11】
図11は、本開示の実施例のコンピュータの動作例を示す図である。
【
図12】
図12は、本開示の実施例のコンピュータの動作例を示す図である。
【発明を実施するための形態】
【0009】
以下、本開示の実施例を図面に基づいて説明する。以下の実施例において同一の構成、及び、同一の処理を行うステップには同一の符号を付す。
【0010】
[実施例]
<コンピュータの構成>
図1は、本開示の実施例のコンピュータの構成例を示す図である。
図1において、コンピュータ1は、EC(Embedded Controller)10と、第一FM(Flash Memory)20
と、第二FM(Flash Memory)30と、CPU(Central Processing Unit)40と、PCH(Platform Controller Hub)50と、DIMM(Dual Inline Memory Module)60と、ストレージ70と、第一スイッチSW1と、第二スイッチSW2とを有する
。
【0011】
EC10はRoTに該当し、集積回路により実現される。EC10を実現する集積回路の一例として、SPLD(Simple PLD)、CPLD(Complex PLD)、FPGA(Field
Programmable Gate Array)等のPLD、ASIC(Application Specific Integrated Circuit)等のLSI(Large Scale Integration)、及び、MCU(Micro Controller Unit)等が挙げられる。EC10は、内部メモリとしてのセキュアなROM(Read Only Memory)11を有し、ROM11には公開鍵12が記憶されている。
【0012】
第一FM20には、BIOS(Basic Input Output System)21と、電子署名22とが記憶されている。BIOS21は、コンピュータ1の起動時に実行されるファームフェアの一例である。また、BIOS21は、コンピュータ1の起動時に改ざんチェックが行われるファームフェアの一例である。電子署名22は、公開鍵12とペアの秘密鍵によってBIOS21が予め署名されることにより生成されたものである。
【0013】
第二FM30には、BIOS21のリカバリ用のBIOSであるリカバリBIOS31が記憶されている、また、第二FM30には、EC10によって生成される基準実行履歴テーブルEHT1が記録される。
【0014】
ストレージ70には、OS(Operating System)71が記憶されている。ストレージ
70の一例として、HDD(Hard Disk Drive)、SSD(Solid State Drive)等が挙げられる。
【0015】
EC10と第一FM20とはSPI(Serial Peripheral Interface)を用いて接続
され、EC10と第二FM30とはSPIを用いて接続される。PCH50と第一FM20とはSPIを用いて接続される。CPU40とPCH50とはeSPI(Enhanced Serial Peripheral Interface)またはLPC(Low Pin Count)を用いて接続される。
【0016】
<BIOSのプログラム構成>
図2は、本開示の実施例のBIOSのプログラム構成例を示す図である。
図2に示すように、BIOS21及びリカバリBIOS31の各々は複数のBIOSプログラムから形成され、BIOS21及びリカバリBIOS31の各々には、例えば、BIOSプログラムA~Fの6個のBIOSプログラムが含まれる。
【0017】
<コンピュータにおける処理手順>
図3は、本開示の実施例のコンピュータにおける処理手順の一例を示すフローチャートである。
図3に示すフローチャートは、コンピュータ1の電源が投入されてコンピュータ1が起動されたときに開始される。
【0018】
図3において、ステップS100では、EC10が起動する。
【0019】
次いで、ステップS105では、EC10が、トレース機能が有効(ON)か無効(OFF)かを判定する。トレース機能の有効または無効は、セキュリティ要件に応じてコンピュータ1のユーザによって予めコンピュータ1に設定されている。ここで、「トレース機能」とは、BIOSプログラムA~Fの各々の実行履歴をトレースすることによりBIOS21の改ざんチェックを行う機能である。トレース機能が有効(ON)に設定されているときは(ステップS105:Yes)、処理はステップS110へ進み、トレース機能が無効(OFF)に設定されているときは(ステップS105:No)、処理はステップS115へ進む。
【0020】
ステップS110では、EC10が、基準実行履歴テーブルEHT1が第二FM30に存在しているか否かを確認する。基準実行履歴テーブルEHT1が第二FM30に存在していないときは(ステップS110:No)、処理はステップS115へ進み、基準実行履歴テーブルEHT1が第二FM30に存在しているときは(ステップS110:Yes)、処理はステップS140へ進む。
【0021】
ステップS115では、EC10が、第一スイッチSW1を接続するとともに、第二スイッチSW2を切断する。これにより、EC10と第一FM20とが接続される一方で、PCH50と第一FM20とが切断される。
【0022】
次いで、ステップS120では、EC10が、第一FM20からBIOS21をリードし、リードしたBIOS21に所定のハッシュ関数を適用することにより、BIOS21のハッシュ値(以下では「BIOSハッシュ値」と呼ぶことがある)を算出する。
【0023】
次いで、ステップS125では、EC10が、第一FM20から電子署名22をリードし、リードした電子署名22を公開鍵12によって復号化することにより、電子署名22のハッシュ値(以下では「署名ハッシュ値」と呼ぶことがある)を取得する。
【0024】
次いで、ステップS130では、EC10が、BIOSハッシュ値が署名ハッシュ値に一致するか否かを判定することにより、BIOS21の改ざんの有無を検証する。BIOSハッシュ値が署名ハッシュ値に一致しないときは(ステップS130:No)、EC10はBIOS21が改ざんされていると判定し、処理はステップS135へ進む。一方で、BIOSハッシュ値が署名ハッシュ値に一致するときは(ステップS130:Yes)、EC10はBIOS21が改ざんされていないと判定し、EC10はBIOS21が改ざんされていないことをCPU40へ通知し、ステップS135の処理が行われることなく、処理はステップS140へ進む。
【0025】
なお、秘密鍵、公開鍵、及び、ハッシュ関数を利用した改ざん有無検証方法は、一般に「公開鍵暗号検証方式」と呼ばれ、安全性の高い検証方法として広く利用されている。
【0026】
ステップS135では、EC10が、第二FM30からリカバリBIOS31をリードし、第一FM20に記憶されているBIOS21をリカバリBIOS31によってオーバライトする。これにより、改ざんされていると判定されたBIOS21がリカバリBIO
S31によってリカバリされる。ステップS135の処理後、処理はステップS140へ進む。
【0027】
ステップS140では、EC10が、第一スイッチSW1を切断するとともに、第二スイッチSW2を接続する。これにより、EC10と第一FM20とが切断される一方で、PCH50と第一FM20とが接続される。
【0028】
次いで、ステップS145では、CPU40が、第一FM20からPCH50を介してBIOS21をリードし、リードしたBIOS21をDIMM60に展開し、DIMM60に展開したBIOS21の実行を開始する。
【0029】
次いで、ステップS150では、CPU40が、BIOS21の実行が完了したか否か、つまり、BIOSプログラムA~F(
図2)のすべての実行が完了したか否かを判定する。BIOS21の実行が完了していないときは(ステップS150:No)、処理はステップS155へ進み、BIOS21の実行が完了しているときは(ステップS150:Yes)、CPU40はBIOS21の実行が完了したことをEC10へ通知し、処理はステップS175へ進む。
【0030】
次いで、ステップS155では、CPU40が、BIOSプログラムA~Fの各プログラムを順次実行する。以下では、一例として、BIOSプログラムA~Fは、BIOSプログラムA,E,C,B,F,Dの順で実行されるものとする。よって、ステップS150では、BIOSプログラムDの実行が完了しているときにBIOS21の実行が完了したと判定される。
【0031】
次いで、ステップS160では、EC10が、トレース機能が有効(ON)か無効(OFF)かを判定する。トレース機能が有効(ON)に設定されているときは(ステップS160:Yes)、処理はステップS165へ進み、トレース機能が無効(OFF)に設定されているときは(ステップS160:No)、処理はステップS150に戻る。
【0032】
ステップS165では、CPU40が、BIOSプログラムA~Fの各々を実行する度に、BIOSプログラムA~Fの各々の実行履歴をPCH50を介してEC10へ通知し、ステップS170では、EC10が、CPU40から通知された実行履歴を取得する。ステップS170の処理後、処理はステップS150に戻る。
【0033】
一方で、ステップS175では、EC10が、ステップS170で取得した複数の実行履歴(以下では「取得実行履歴」と呼ぶことがある)に基づいて、取得実行履歴テーブルEHT2を生成する。
【0034】
次いで、ステップS180では、EC10が、トレース機能が有効(ON)か無効(OFF)かを判定する。トレース機能が有効(ON)に設定されているときは(ステップS180:Yes)、処理はステップS185へ進み、トレース機能が無効(OFF)に設定されているときは(ステップS180:No)、ステップS185,S190,S195,S200の処理が行われることなく、処理はステップS205へ進む。
【0035】
ステップS185では、EC10が、基準実行履歴テーブルEHT1が第二FM30に存在しているか否かを確認する。基準実行履歴テーブルEHT1が第二FM30に存在しているときは(ステップS185:Yes)、ステップS190の処理が行われることなく、処理はステップS195へ進み、基準実行履歴テーブルEHT1が第二FM30に存在していないときは(ステップS185:No)、処理はステップS190へ進む。
【0036】
ステップS190では、EC10が、ステップS175で生成した取得実行履歴テーブルEHT2を基準実行履歴テーブルEHT1として第二FM30に記録する。ステップS190の処理後、処理はステップS205へ進む。
【0037】
ここで、基準実行履歴テーブルEHT1が第二FM30に存在していないときに(ステップS110:No)、ステップS130においてBIOSハッシュ値が署名ハッシュ値に一致するときは(ステップS130:Yes)、第一FM20に記憶されているBIOS21が改ざんされていないと判定される。また、基準実行履歴テーブルEHT1が第二FM30に存在していないときに(ステップS110:No)、ステップS130においてBIOSハッシュ値が署名ハッシュ値に一致しないときは(ステップS130:No)、ステップS135において、第一FM20に記憶されているBIOS21がリカバリBIOS31によってオーバライトされることにより、改ざんされていないBIOS21が第一FM20に記憶されることになる。よって、ステップS190において第二FM30に記録される基準実行履歴テーブルEHT1には、改ざんされていないBIOS21が第一FM20に記憶されている時点(以下では「無改ざん時点」と呼ぶことがある)で実行されたBIOS21の実行履歴が示される。
【0038】
ステップS195では、EC10が、ステップS175で生成した取得実行履歴テーブルEHT2と、第二FM30に記録されている基準実行履歴テーブルEHT1とを比較し、ステップS175で生成した取得実行履歴テーブルEHT2の内容が、第二FM30に記録されている基準実行履歴テーブルEHT1の内容に一致するか否かを判定することにより、BIOS21の改ざんの有無を検証する。。取得実行履歴テーブルEHT2の内容が基準実行履歴テーブルEHT1の内容に一致しないときは(ステップS195:No)、EC10はBIOS21が改ざんされていると判定し、処理はステップS200へ進む。一方で、取得実行履歴テーブルEHT2の内容が基準実行履歴テーブルEHT1の内容に一致するときは(ステップS195:Yes)、EC10はBIOS21が改ざんされていないと判定し、EC10はBIOS21が改ざんされていないことをCPU40へ通知し、処理はステップS205へ進む。
【0039】
ここで、ステップS195で基準実行履歴テーブルEHT1と比較される取得実行履歴テーブルEHT2は、コンピュータ1の前回の起動時のステップS190で基準実行履歴テーブルEHT1が第二FM30に記録された後に、コンピュータ1の今回の起動時のステップS175で生成されたものであるため、無改ざん時点より後の時点のコンピュータ1の起動時に実行されたBIOS21の実行履歴が示される。また、第一FM20に記憶されているBIOS21は、コンピュータ1の前回の起動時とコンピュータ1の今回の起動時との間に改ざんされている可能性がある。
【0040】
ステップS205では、CPU40が、ストレージ70からPCH50を介してOS71をリードし、リードしたOS71をDIMM60に展開し、DIMM60に展開したOS71を起動させる。ステップS205の処理後、
図3に示すフローチャートは終了する。
【0041】
一方で、ステップS200では、EC10が、第二FM30に記録されている基準実行履歴テーブルEHT1を削除する。ステップS200の処理後、処理はステップS110に戻る。
【0042】
<実行履歴及び実行履歴テーブル>
図4、
図5、
図6、
図7及び
図8は、本開示の実施例の実行履歴の一例を示す図である。また、
図9は、本開示の実施例の実行履歴テーブルの一例を示す図である。
【0043】
コンピュータ1の構成に変化がないときや、ユーザによるBIOS21の変更がないときは、BIOSプログラムA~Fの実行順は、コンピュータ1の毎回の起動時において同一である可能性が高い。そこで、例えば、
図4に示すように、CPU40は、BIOSプログラムA~Fの各々を一意に特定する数値0Ah,0Bh,0Ch,0Dh,0Eh,0FhをBIOSプログラムA~Fの実行順にBIOSプログラムA~Fの各々から取得し、順に取得した数値をEC10へ通知する。EC10は、CPU40から順に通知された数値によって示されるBIOSプログラムA~Fの実行順をBIOS21の第一実行履歴EHAとして取得する。上記のように、BIOSプログラムA~FはBIOSプログラムA,E,C,B,F,Dの順で実行されるため、EC10は、BIOSプログラムA~Fの実行順として、0Ah,0Eh,0Ch,0Bh,0Fh,0DhをCPU40から取得する。
【0044】
また、コンピュータ1の構成に変化がないときや、ユーザによるBIOS21の変更がないときは、BIOSプログラムA~Fの各々の実行時間は、コンピュータ1の毎回の起動時においてほぼ同一となる。そこで、例えば、
図5に示すように、CPU40は、BIOSプログラムA~Fの各々の実行時間を実測し、実測した実行時間をBIOSプログラムA~Fの実行順にEC10へ通知する。EC10は、CPU40から通知された実行時間をBIOS21の第二実行履歴EHBとして取得する。
【0045】
また、コンピュータ1の構成に変化がないときや、ユーザによるBIOS21の変更がないときは、BIOSプログラムA~Fの各々のプログラムサイズは、コンピュータ1の毎回の起動時において同一となる。そこで、例えば、
図6に示すように、CPU40は、BIOSプログラムA~Fの各々のプログラムサイズをBIOSプログラムA~Fの各々から取得し、取得したプログラムサイズをBIOSプログラムA~Fの実行順にEC10へ通知する。EC10は、CPU40から通知されたプログラムサイズをBIOS21の第三実行履歴EHCとして取得する。
【0046】
また、DIMM60においてBIOSプログラムA~Fの各々が配置されるメモリアドレス(以下では「配置アドレス」と呼ぶことがある)は、コンピュータ1の毎回の起動時において同一となる可能性が高い。そこで、例えば、
図7に示すように、CPU40は、配置アドレスを検出し、検出した配置アドレスをBIOSプログラムA~Fの実行順にEC10へ通知する。EC10は、CPU40から通知された配置アドレスをBIOS21の第四実行履歴EHDとして取得する。
【0047】
また、コンピュータ1の構成に変化がないときや、ユーザによるBIOS21の変更がないときは、BIOSプログラムA~Fの各々のチェックサムは、コンピュータ1の毎回の起動時において同一となる。そこで、例えば、
図8に示すように、CPU40は、BIOSプログラムA~Fの各々のチェックサムを算出し、算出したチェックサム結果をBIOSプログラムA~Fの実行順にEC10へ通知する。EC10は、CPU40から通知されたチェックサム結果をBIOS21の第五実行履歴EHEとして取得する。
【0048】
そして、EC10は、
図4、
図5、
図6、
図7及び
図8に示すような第一実行履歴EHA、第二実行履歴EHB、第三実行履歴EHC、第四実行履歴EHD、及び、第五実行履歴EHEをまとめることにより、
図3に示すステップS175において、
図9に示すような取得実行履歴テーブルEHT2を生成する。また、
図3に示すステップS185において基準実行履歴テーブルEHT1が第二FM30に存在していない判定されるときに(ステップS185:No)、
図9に示す取得実行履歴テーブルEHT2が基準実行履歴テーブルEHT1として第二FM30に記録される(ステップS190)。
【0049】
<コンピュータの動作>
図10、
図11及び
図12は、本開示の実施例のコンピュータの動作例を示す図である。
図10、
図11及び
図12の各々には、
図3に示すステップS195において行われる取得実行履歴テーブルEHT2と基準実行履歴テーブルEHT1との比較例1,2,3を示す。
【0050】
図10の比較例1に示すように、EC10は、取得実行履歴テーブルEHT2と基準実行履歴テーブルEHT1との比較において、実行順、BIOSプログラム毎のプログラムサイズ、BIOSプログラム毎の配置アドレス、及び、BIOSプログラム毎のチェックサム結果のすべてが一致し、かつ、取得実行履歴テーブルEHT2におけるBIOSプログラム毎の実行時間のすべてが基準実行履歴テーブルEHT1におけるBIOSプログラム毎の実行時間の±10%の範囲内であるときに、取得実行履歴テーブルEHT2の内容が基準実行履歴テーブルEHT1の内容に一致すると判定する(ステップS195:Yes)。
【0051】
一方で、EC10は、取得実行履歴テーブルEHT2と基準実行履歴テーブルEHT1との比較において、実行順、BIOSプログラム毎のプログラムサイズ、BIOSプログラム毎の配置アドレス、または、BIOSプログラム毎のチェックサム結果の少なくとも一つが不一致のとき、または、取得実行履歴テーブルEHT2におけるBIOSプログラム毎の実行時間の少なくとも一つが基準実行履歴テーブルEHT1におけるBIOSプログラム毎の実行時間の±10%の範囲内にないときに、取得実行履歴テーブルEHT2の内容が基準実行履歴テーブルEHT1の内容に一致しないと判定する(ステップS195:No)。
【0052】
例えば、
図11の比較例2に示すように、EC10は、取得実行履歴テーブルEHT2と基準実行履歴テーブルEHT1との比較において、取得実行履歴テーブルEHT2におけるBIOSプログラムFのチェックサム結果が、基準実行履歴テーブルEHT1におけるBIOSプログラムFのチェックサム結果に一致しないときに、取得実行履歴テーブルEHT2の内容が基準実行履歴テーブルEHT1の内容に一致しないと判定する。
【0053】
また例えば、
図12の比較例3に示すように、EC10は、取得実行履歴テーブルEHT2と基準実行履歴テーブルEHT1との比較において、取得実行履歴テーブルEHT2におけるBIOSプログラムFの実行時間が、基準実行履歴テーブルEHT1におけるBIOSプログラムFの実行時間の±10%の範囲内にないときに、取得実行履歴テーブルEHT2の内容が基準実行履歴テーブルEHT1の内容に一致しないと判定する。
【0054】
以上、実施例について説明した。
【0055】
以上のように、本開示のコンピュータ(実施例のコンピュータ1)は、記憶部(実施例の第一FM20)と、集積回路(実施例のEC10)とを有する。記憶部は、ファームウェア(実施例のBIOS21)を記憶する。集積回路は、ファームウェアの改ざんの有無を検証する。また、集積回路は、改ざんされていないファームウェアが記憶部に記憶されている第一時点(実施例の無改ざん時点)で実行されたファームウェアの第一の実行履歴(実施例の基準実行履歴テーブルEHT1)と、第一時点より後の第二時点のコンピュータの起動時に実行されたファームウェアの第二の実行履歴(実施例の取得実行履歴テーブルEHT2)とを比較することにより、ファームウェアの改ざんの有無を検証する。
【0056】
例えば、ファームウェアは複数のプログラム(実施例のBIOSプログラムA~F)から形成される。第一の実行履歴は第一時点での複数のプログラムの実行順序である第一順序を示し、第二の実行履歴は第二時点での複数のプログラムの実行順序である第二順序を示す。集積回路は、第二順序が第一順序に一致するときにファームウェアが改ざんされて
いないと判定し、第二順序が第一順序に一致しないときにファームウェアが改ざんされていると判定する。
【0057】
また例えば、第一の実行履歴は第一時点でのファームウェアの実行時間である第一時間を示し、第二の実行履歴は第二時点でのファームウェアの実行時間である第二時間を示す。集積回路は、第二時間が第一時間に対する所定範囲内(実施例の±10%の範囲内)にあるにあるときにファームウェアが改ざんされていないと判定し、第二時間が第一時間に対する所定範囲内にないときにファームウェアが改ざんされていると判定する。
【0058】
また例えば、第一の実行履歴は第一時点でのファームウェアのプログラムサイズである第一サイズを示し、第二の実行履歴は第二時点でのファームウェアのプログラムサイズである第二サイズを示す。集積回路は、第二サイズが第一サイズに一致するときにファームウェアが改ざんされていないと判定し、第二サイズが第一サイズに一致しないときにファームウェアが改ざんされていると判定する。
【0059】
また例えば、第一の実行履歴は第一時点でファームウェアが配置されたメモリアドレスである第一アドレスを示し、第二の実行履歴は第二時点でファームウェアが配置されたメモリアドレスである第二アドレスを示す。集積回路は、第二アドレスが第一アドレスに一致するときにファームウェアが改ざんされていないと判定し、第二アドレスが第一アドレスに一致しないときにファームウェアが改ざんされていると判定する。
【0060】
また例えば、第一の実行履歴は第一時点でのファームウェアに対するチェックサム結果である第一結果を示し、第二の実行履歴は第二時点でのファームウェアに対するチェックサム結果である第二結果を示す。集積回路は、第二結果が第一結果に一致するときにファームウェアが改ざんされていないと判定し、第二結果が第一結果に一致しないときにファームウェアが改ざんされていると判定する。
【0061】
ここで、SPIの通信速度はおおよそ1MB/s程度の低速であり、かつ、ハッシュ値の算出には数百ミリ秒を要するため、コンピュータの毎回の起動時に公開鍵暗号検証方を用いてファームウェアの改ざんの有無を検証すると、検証に時間を要し、毎回、コンピュータの起動時間が長くなってしまう。これに対し、第一の実行履歴と第二の実行履歴とを比較することによりファームウェアの改ざんの有無を検証することで、SPIを介した通信頻度が減少するとともに、ハッシュ値の算出が不要となるため、セキュリティレベルの低下を最小限に抑えた上で、起動時にファームフェアの改ざんチェックを行うコンピュータの起動時間を短縮できる。
【0062】
また、集積回路は、第一の実行履歴と第二の実行履歴との比較結果に基づいてファームウェアが改ざんされていると判定したときに(実施例のステップS195:No)、ファームウェアから算出した第一のハッシュ値(実施例のBIOSハッシュ値)と、ファームウェアの電子署名(実施例の電子署名22)を復号化することにより取得した第二のハッシュ値(実施例の署名ハッシュ値)とを比較することにより、ファームウェアが改ざんされているか否かを再度検証する(実施例のステップS130)。
【0063】
こうすることで、ファームウェアの改ざんの有無の検証の信頼性を高めることができる。
【符号の説明】
【0064】
1 コンピュータ
10 EC
20 第一FM
30 第二FM
40 CPU
50 PCH
60 DIMM
70 ストレージ
SW1 第一スイッチ
SW2 第二スイッチ