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

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

▶ 株式会社東芝の特許一覧

特許7610539情報処理装置、情報処理システム、及びプログラム
<>
  • 特許-情報処理装置、情報処理システム、及びプログラム 図1
  • 特許-情報処理装置、情報処理システム、及びプログラム 図2
  • 特許-情報処理装置、情報処理システム、及びプログラム 図3
  • 特許-情報処理装置、情報処理システム、及びプログラム 図4
  • 特許-情報処理装置、情報処理システム、及びプログラム 図5
  • 特許-情報処理装置、情報処理システム、及びプログラム 図6
  • 特許-情報処理装置、情報処理システム、及びプログラム 図7
  • 特許-情報処理装置、情報処理システム、及びプログラム 図8
  • 特許-情報処理装置、情報処理システム、及びプログラム 図9
  • 特許-情報処理装置、情報処理システム、及びプログラム 図10
  • 特許-情報処理装置、情報処理システム、及びプログラム 図11
  • 特許-情報処理装置、情報処理システム、及びプログラム 図12
  • 特許-情報処理装置、情報処理システム、及びプログラム 図13
  • 特許-情報処理装置、情報処理システム、及びプログラム 図14
  • 特許-情報処理装置、情報処理システム、及びプログラム 図15
  • 特許-情報処理装置、情報処理システム、及びプログラム 図16
  • 特許-情報処理装置、情報処理システム、及びプログラム 図17
  • 特許-情報処理装置、情報処理システム、及びプログラム 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-24
(45)【発行日】2025-01-08
(54)【発明の名称】情報処理装置、情報処理システム、及びプログラム
(51)【国際特許分類】
   G06F 21/57 20130101AFI20241225BHJP
   G06F 21/64 20130101ALI20241225BHJP
【FI】
G06F21/57 320
G06F21/64
【請求項の数】 16
(21)【出願番号】P 2022011259
(22)【出願日】2022-01-27
(65)【公開番号】P2023109626
(43)【公開日】2023-08-08
【審査請求日】2024-02-27
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】100091487
【弁理士】
【氏名又は名称】中村 行孝
(74)【代理人】
【識別番号】100120031
【弁理士】
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100107582
【弁理士】
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100118876
【弁理士】
【氏名又は名称】鈴木 順生
(72)【発明者】
【氏名】小池 竜一
(72)【発明者】
【氏名】新家 由里恵
(72)【発明者】
【氏名】内匠 真也
(72)【発明者】
【氏名】金井 遵
【審査官】岸野 徹
(56)【参考文献】
【文献】特開2007-058609(JP,A)
【文献】特開2007-193579(JP,A)
【文献】米国特許第08214653(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
G06F 21/64
(57)【特許請求の範囲】
【請求項1】
デバイスからのファームウェアの更新要求に基づいて、前記ファームウェアの識別情報を含む第1メタデータを生成するメタデータ生成部と、
時刻を管理する時刻管理部と、
前記時刻管理部から取得される時刻に基づき、前記第1メタデータに対して第1有効期限を決定する有効期限決定部と、
単位時間ごとに値をカウントアップするカウンタと、
前記第1メタデータに対して前記カウンタの値である第1カウンタ値を取得する取得部と、
ファームウェアの識別情報を含む第2メタデータと、前記第2メタデータの有効期限である第2有効期限と、前記第2メタデータに対して取得された前記カウンタの値である第2カウンタ値とを関連付けた1つ以上のエントリを記憶する記憶部と、
前記第1メタデータと同じ前記識別情報を含む前記第2メタデータを検出し、検出した前記第2メタデータを含む前記エントリから前記第2有効期限と前記第2カウンタ値とを取得し、前記第1カウンタ値及び前記第1有効期限と、前記第2カウンタ値及び前記第2有効期限とに基づき、前記第1有効期限の改竄を検出する判定部と、
を備えた情報処理装置。
【請求項2】
前記判定部は、前記第1有効期限と前記第2有効期限との差である経過期間と、前記第1カウンタ値と前記第2カウンタ値との差である経過カウントとを算出し、前記カウンタの前記単位時間あたりにカウントアップされる値に基づき、前記経過期間に対応する時間にカウントアップされる値を算出し、算出した前記値と、前記経過カウントとを比較することで前記改竄を検出する
請求項1に記載の情報処理装置。
【請求項3】
前記判定部は、算出した前記値と、前記経過カウントとの差分が閾値以下であるときは、前記改竄を検出しない、
請求項2に記載の情報処理装置。
【請求項4】
時刻サーバの配布する時刻情報を受信する時刻受信部を備え、
前記時刻管理部は、前記時刻情報に基づき、前記時刻を補正する
請求項1~3のいずれか一項に記載の情報処理装置。
【請求項5】
前記判定部で判定した前記第有効期限の改ざん検出の結果に基づき、前記第1メタデータの送信の可否を判定するメタデータ送信可否判定部と、
前記第1メタデータの送信が可と判定された場合に、前記第1メタデータを前記デバイスに送信するデバイス通信部と、
を備えた請求項1~4のいずれか一項に記載の情報処理装置。
【請求項6】
前記ファームウェアの識別情報を記憶するメタデータソース保存部を備え、
前記メタデータ生成部は、前記メタデータソース保存部で記憶された前記識別情報から前記第1メタデータを生成する
請求項1~5のいずれか一項に記載の情報処理装置。
【請求項7】
前記識別情報は、前記ファームウェアを一意に識別する識別子と前記ファームウェアの完全性を検証する完全性検証ハッシュ値を含む
請求項1~6のいずれか一項に記載の情報処理装置。
【請求項8】
前記識別子は、前記ファームウェアのファームウェア名とファームウェアバージョンを含む
請求項7に記載の情報処理装置。
【請求項9】
前記カウンタは、CPUレジスタを使用してカウントアップする
請求項1~8のいずれか一項に記載の情報処理装置。
【請求項10】
少なくとも2つ以上の前記カウンタと、
前記カウンタに基づく前記第1カウンタ値を異なる前記カウンタに基づく前記第1カウンタ値によって補正するカウンタ補正部を備える
請求項1~9のいずれか一項に記載の情報処理装置。
【請求項11】
前記判定部により前記第1有効期限の改竄が検出されない場合に、前記第1メタデータと、前記第1有効期限と、前記第1カウンタ値とを含む第1エントリを前記記憶部に格納する
請求項1~10のいずれか一項に記載の情報処理装置。
【請求項12】
前記記憶部は、前記第1メタデータに含まれる前記識別情報と同じ識別情報を前記第2メタデータに含む前記エントリが前記記憶部に存在する場合に、前記エントリを前記第1エントリに基づき上書きする
請求項11に記載の情報処理装置。
【請求項13】
前記第1有効期限の改竄は、前記時刻管理部への第三者の攻撃によって前記時刻が変更されることによって引き起こされる
請求項1~12のいずれか一項に記載の情報処理装置。
【請求項14】
前記第1有効期限の改竄は、前記時刻サーバへの第三者の攻撃によって、配布される前記時刻情報が変更されることによって引き起こされる
請求項4に記載の情報処理装置。
【請求項15】
第1情報処理装置と、第2情報処理装置を備え、
前記第1情報処理装置は、時刻を管理する時刻管理部と、前記時刻管理部から取得される時刻と、デバイスからのファームウェアの更新要求とに基づいて、前記ファームウェアの識別情報を含む第1メタデータに対して第1有効期限を決定する有効期限決定部と、を有し、
前記第2情報処理装置は、前記第1メタデータを生成するメタデータ生成部と、単位時間ごとに値をカウントアップするカウンタと、前記第1メタデータに対して前記カウンタの値である第1カウンタ値を取得する取得部と、ファームウェアの識別情報を含む第2メタデータと、前記第2メタデータの有効期限である第2有効期限と、前記第2メタデータに対して取得された前記カウンタの値である第2カウンタ値とを関連付けた1つ以上のエントリを記憶する記憶部と、前記第1メタデータと同じ前記識別情報を含む前記第2メタデータを検出し、検出した前記第2メタデータを含む前記エントリから前記第2有効期限と前記第2カウンタ値とを取得し、前記第1カウンタ値及び前記第1有効期限と、前記第2カウンタ値及び前記第2有効期限とに基づき、前記第1有効期限の改竄を検出する判定部と、を有する
情報処理システム。
【請求項16】
デバイスからのファームウェアの更新要求に基づいて、前記ファームウェアの識別情報を含む第1メタデータを生成するメタデータ生成ステップと、
時刻を管理する時刻管理ステップと、
前記時刻管理ステップから取得される時刻に基づき、前記第1メタデータに対して第1有効期限を決定する有効期限決定ステップと、
単位時間ごとに値をカウントアップするカウンタと、
前記第1メタデータに対して前記カウンタの値である第1カウンタ値を取得する取得ステップと、
ファームウェアの識別情報を含む第2メタデータと、前記第2メタデータの有効期限である第2有効期限と、前記第2メタデータに対して取得された前記カウンタの値である第2カウンタ値とを関連付けた1つ以上のエントリを記憶する記憶ステップと、
前記第1メタデータと同じ前記識別情報を含む前記第2メタデータを検出し、検出した前記第2メタデータを含む前記エントリから前記第2有効期限と前記第2カウンタ値とを取得し、前記第1カウンタ値及び前記第1有効期限と、前記第2カウンタ値及び前記第2有効期限とに基づき、前記第2有効期限及び前記第1有効期限の少なくとも一方の改ざんを検出する判定ステップと、
コンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、情報処理装置、情報処理システム、及びプログラムに関する。
【背景技術】
【0002】
近年、様々なデバイスがインターネットに接続されている。インターネットに接続された機器は、様々なメリット、例えば、クラウドからのきめ細かい制御、デバイス単体で困難な全体最適化の実行を教授できる
【0003】
悪意のある第三者は、デバイスのソフトウェアの脆弱性を悪用して攻撃をしかける。長期的に見ると当該デバイスに対する攻撃は、成立してしまう可能性が高い。
【0004】
このような機器では、脆弱性修正を目的として、継続的かつ安全にソフトウェアの更新を必要とする課題がある。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2018-132874号公報
【文献】The Update Framework Spefification Version: 1.0.25, 2021/11/11検索、インターネット、https://theupdateframework.github.io/specification/latest/
【発明の概要】
【発明が解決しようとする課題】
【0006】
本実施形態は、上述したような問題点に鑑みてなされたものであり、デバイスのソフトウェアを安全に更新し続けることを目的とする。
【課題を解決するための手段】
【0007】
本実施形態の情報処理装置は、デバイスからのファームウェアの更新要求に基づいて、前記ファームウェアの識別情報を含む第1メタデータを生成するメタデータ生成部と、時刻を管理する時刻管理部と、前記時刻管理部から取得される時刻に基づき、前記第1メタデータに対して第1有効期限を決定する有効期限決定部と、単位時間ごとに値をカウントアップするカウンタと、前記第1メタデータに対して前記カウンタの値である第1カウンタ値を取得する取得部と、ファームウェアの識別情報を含む第2メタデータと、前記第2メタデータの有効期限である第2有効期限と、前記第2メタデータに対して取得された前記カウンタの値である第2カウンタ値とを関連付けた1つ以上のエントリを記憶する記憶部と、前記第1メタデータと同じ前記識別情報を含む前記第2メタデータを検出し、検出した前記第2メタデータを含む前記エントリから前記第2有効期限と前記第2カウンタ値とを取得し、前記第1カウンタ値及び前記第1有効期限と、前記第2カウンタ値及び前記第2有効期限とに基づき、前記第1有効期限の改竄を検出する判定部と、を備える。
【図面の簡単な説明】
【0008】
図1】本実施形態に係る情報処理システムの全体構成図。
図2】本実施形態に係るファームウェア検証サーバ群の構成要素を示す図。
図3】配布されるメタデータの主要な構成要素を示す図。
図4】本実施形態に係る有効期限付与サーバの構成要素を示す図。
図5】本実施形態に係るメタデータサーバの構成要素を示す図。
図6】メタデータソース保存部に保存された情報を示す図。
図7】過去メタデータ保存部に保存された情報を示す図。
図8】本実施形態に係る情報処理システムの更新処理の一例を示すフローチャート。
図9】ステップS1001で説明したファームウェアの登録処理の一例を示すフローチャート。
図10】本実施形態におけるファームウェア更新時の処理の一例を示すフローチャート。
図11】、絶対時刻改竄の判定処理の一例を示すフローチャート。
図12】メタデータサーバにおける相対時刻改竄の判定処理の一例を示すフローチャート。
図13】想定カウントアップ値供給部の処理フローを示すフローチャート。
図14】時刻サーバへの攻撃により未来の絶対時刻配信が生じた際の矛盾の様子を示す図。
図15】デバイスでのファームウェア更新処理フローを示すフローチャート。
図16】本実施形態の変形例の構成例を示す図。
図17】本変形例に係るメタデータサーバの構成要素を示す図。
図18】メタデータサーバの起動時の相対時刻補正を示すフローチャート。
【発明を実施するための形態】
【0009】
以下、図面を参照しながら本発明の実施形態について説明する。
図1は、本実施形態に係る情報処理システム1000に係る全体構成を示す。
情報処理システム1000は、ファームウェア検証サーバ群1100と、ファームウェア配布サーバ1200と、ファームウェア登録機1300と、を備える。
情報処理システム1000は、ネットワーク1400を介して複数のデバイス1500と接続されている。
【0010】
本実施形態に係る情報処理システム1000では、異なる場所に設置されたデバイス1500が、クラウドシステムである情報処理システム1000を利用してファームウェアを更新する。
【0011】
ネットワーク1400は、複数のネットワークで構成されている。例えば、本実施形態では、広域ネットワーク1410と、有線ローカルネットワーク1420と、無線ローカルネットワーク1430とで構成されている。
【0012】
広域ネットワーク1410は、ファームウェア検証サーバ群1100と、ファームウェア配布サーバ1200と接続されている。デバイス1500は、広域ネットワークを通じて、ファームウェア検証サーバ群1100およびファームウェア配布サーバ1200と通信できる。
【0013】
デバイス1500は、更新対象となるソフトウェアであるファームウェアが動作している機器である。本実施形態では、PCや組み込み機器であるが、ファームウェアの動作している機器ならば、その他の機器であってもよい。
【0014】
デバイス1500は、例えば、センサネットワーク運用で行われるようにフィールドに配置されて無線アクセスポイントを通じて無線ローカルネットワーク1430で接続される。デバイス1500は、例えば、工場などに設置されて、イーサネットをはじめとする有線ローカルネットワーク1420で接続される。
【0015】
デバイス1500は、有線ローカルネットワーク1420、無線ローカルネットワーク1430を介して、インターネットなどの広域ネットワーク1410に接続されている。
【0016】
図2は、本実施形態に係るファームウェア検証サーバ群1100の構成要素を示す。図3は、配布されるメタデータ4000の主要な構成要素を示す。
ファームウェア検証サーバ群1100は、ファームウェアの正当性を検証するための情報を提供する。
ファームウェア検証サーバ群1100は、ファームウェアの正当性を検証するため、メタデータ(第1メタデータ)4000と呼ばれるファームウェアの正当性を検出可能な情報をデバイス1500からの求めに応じて生成する。
【0017】
メタデータ4000は、図3に示すようにファームウェア名4001と、ファームウェアバージョン4002と、完全性検証ハッシュ値と、有効期限4004とを含む。
【0018】
ファームウェア名4001およびファームウェアバージョン4002は、更新するファームウェアと決定するための情報である。
ファームウェア名4001およびファームウェアバージョン4002は、組み合わせることでファームウェアを一意に識別する識別子として機能する。
デバイス1500は、更新要求することで後述するファームウェア配布サーバ1200からファームウェアを入手する。
【0019】
デバイス1500は、更新要求したファームウェアのファームウェア名とファームウェアバージョンからファームウェア検証サーバ群1100に対して生成を要求するメタデータ4000を決定する。
【0020】
完全性検証ハッシュ値4003は、ファームウェアの完全性を検証するための情報である。完全性検証ハッシュ値4003は、後述するファームウェア登録機1300による電子署名が付与されている。
完全性検証ハッシュ値4003と、ファームウェア名4001およびファームウェアバージョン4002は、ファームウェアを識別する識別情報である。
【0021】
有効期限4004は、メタデータ4000の有効期限を示す情報であり、詳細は後述する。
有効期限4004には後述する有効期限付与サーバ100による電子署名が付与されており、有効期限4004を改竄した場合に容易に検出可能である。
【0022】
本実施形態に係る情報処理システム1000は、ファームウェアと検証用のメタデータ4000とが分離していることにより、有効期限4004をきめ細かくコントロール可能としている。
【0023】
ファームウェアの更新頻度は、例えば、ファームウェアに含まれる脆弱性の数、その発見頻度などにより決定されることが多い。これにより、ファームウェアのリリース時において、次期ファームウェアのリリース時期を予測することが難しい。
【0024】
ファームウェアに自身の有効期限を含めた場合、次期ファームウェアのリリース前にファームウェアの有効期限が切れることを防ぐため、非常に長い時間を設定することで対応する必要がある。
例えば、ファームウェアは、電子署名時に最長の有効期限を決定し、当該有効期限を設定して署名する必要がある。
【0025】
有効期限4004は、長い時間に設定された場合、新ファームウェアがリリースされているにも関わらず、旧ファームウェアが有効であることで、ダウングレードを誘発する問題がある。
情報処理システム1000は、メタデータ4000を別途取得することで、ファームウェア検証サーバ群1100がメタデータ4000を作成するタイミングで有効期限を柔軟に設定可能である。
【0026】
有効期限4004は、当該ファームウェアの運用状況によって数分から数日程度に設定するケースが考えられる。
例えば、デバイス1500のネットワーク環境が良好であり、メタデータ4000をオンデマンドで取得できるならば、有効期限を数分に設定する。
デバイス1500が、最新ファームウェアのメタデータを要求した場合、オンデマンドにメタデータ4000が送信され、デバイス1500は有効期限4004内に検証を完了し最新ファームウェアへ更新ができる。
【0027】
例えば、高度なセキュリティが求められるためネットワークが接続されていない、もしくは、セキュリティインシデントによりネットワークが輻輳している環境であり、ネットワークが不達あるいは不安定ならば、有効期限4004を数日に設定する。
デバイス1500が、最新ファームウェアのメタデータを要求した場合、開発者によりファームウェア検証サーバ群1100からメタデータ4000を入手し、現地に輸送し、USBメモリなどでデバイス1500にメタデータ4000を入力する必要がある。
デバイス1500は、メタデータ4000の検証を完了するまで時間が要するため、有効期限4004に数日単位の長さが必要となる。
【0028】
このような場合、有効期限4004は、最長でも数日であるため、メタデータ4000を利用したダウングレード攻撃の攻撃可能性は低い。
例えば、既に送信されたメタデータ4000は、デバイス1500に設定された時刻情報が正しい限り再利用できる期間が短く、リプレイ攻撃は成功する可能性は低い。
【0029】
ファームウェア検証サーバ群1100は、最新ファームウェア以外のファームウェアのメタデータ4000を要求された場合には、メタデータ4000の送信を拒否することで古いメタデータの流通を防ぐことができる。
【0030】
ファームウェア検証サーバ群1100は、有効期限付与サーバ(第1情報処理装置)100と、メタデータサーバ(第2情報処理装置)200と、時刻サーバ300とを備える。
本実施形態では、ファームウェア検証サーバ群1100を構成するサーバは、複数台の情報処理装置である物理サーバであるが、物理サーバでなくてもよい。例えば、仮想サーバ、コンテナ環境であってもよい。
【0031】
ファームウェア検証サーバ群1100を構成するサーバは、セキュリティ的な観点から1つのOSで複数のプロセスが稼働するような構成とならないことが望ましい。例えば、1つのサーバでメモリ分離をせず、有効期限付与サーバ100、メタデータサーバ200、時刻サーバ300の役割を兼ねる構成とならないことが望ましい。
【0032】
ファームウェア検証サーバ群1100を構成するサーバは、メモリ分離をすることで、悪意のある第三者に攻撃されたとしても、攻撃されたサーバ以外のサーバに影響がでないようにすることができる。
【0033】
本実施形態では、ファームウェア検証サーバ群1100を構成する有効期限付与サーバ100、メタデータサーバ200、時刻サーバ300は、独立して運用されている。
【0034】
図4は、本実施形態に係る有効期限付与サーバ100の構成要素を示す。
有効期限付与サーバ100は、メタデータ4000に有効期限4004を付与する。
有効期限付与サーバ100は、メタデータサーバ200からメタデータ4000への有効期限付与を依頼されると、メタデータ4000全体に対して有効期限4004を付与して返信する。
有効期限4004は、現在時刻に対して情報処理システム1000全体で事前に決定した有効時間を加算したものである。有効期限4004には、有効期限付与サーバ100による電子署名が付与され改竄が防止される。
【0035】
有効期限付与サーバ100は、悪意のある第三者に攻撃されると、デバイス1500に送信されるメタデータ4000の有効期限4004を自由に改竄される可能性がある。
例えば、悪意のある第三者は、有効期限4004を長くすることでデバイス1500にファームウェアのダウングレードを試みる。
このとき、悪意のある第三者は、完全性検証ハッシュ値4003は改竄できないため、デバイス1500に対して、旧バージョンのファームウェアを有効であると誤認させるまでしかできない。
【0036】
有効期限付与サーバ100は、第1の時刻受信部110と、有効期限計算部120と、有効期限署名部130と、有効期限付与依頼受付部140と、有効期限署名鍵保存部150と、鍵ペア生成部160と、を有する。
【0037】
第1の時刻受信部110は、時刻を管理する時刻管理部の一部として時刻サーバ300と通信して絶対時刻を同期する。第1の時刻受信部は、時刻サーバ300の時刻情報から時刻を取得する。
第1の時刻受信部110は、例えば、8時30分や23時24分のように、どのような装置、場所であっても、ある時刻を一意に特定可能な時刻表現のことを示す絶対時刻に同期する。
第1の時刻受信部110が取得した時刻情報で示される絶対時刻が、有効期限付与サーバ100が認識している絶対時刻と誤差があったとしても、第1の時刻受信部110は、受信した時刻情報にあわせて、絶対時刻を補正する。
【0038】
有効期限計算部120は、現在の絶対時刻に対してシステムであらかじめ定義しておいた有効時間を加算することで有効期限(第1有効期限)を算出する有効期限決定部として機能する。例えば、有効時間が1日であり現在時刻が10時10分であれば、有効期限は翌日の10時10分になり、有効時間が10分であるならばその日の10時20分となる。
【0039】
有効期限署名部130は、算出した有効期限4004とメタデータソースとを連結したものに対して電子署名して、メタデータソース全体に対して改竄不能な有効期限が付与する。
メタデータソースは、後述するメタデータ4000の生成時に、メタデータ4000の元となる情報である。
【0040】
有効期限付与依頼受付部140は、メタデータソースへの有効期限付与の依頼を受け付ける。有効期限付与依頼受付部140で受け付けられた依頼は、有効期限計算部120へ送信される。
【0041】
有効期限署名鍵保存部150は、鍵ペア生成部160で生成された鍵(秘密鍵、公開鍵)を保存する。
有効期限署名鍵保存部150、鍵ペア生成部160がともに有効期限付与サーバ100の内部にあるため、例えば、外部からの転送、鍵生成機器へのクラッキングで漏洩したりする可能はない。
【0042】
図5は、本実施形態に係るメタデータサーバ200の構成要素を示す。
メタデータサーバ200は、デバイスからの要求に応じてメタデータを生成する。
メタデータサーバ200は、有効期限付与サーバ100および時刻サーバ300と接続されている。メタデータサーバ200は、メタデータを送信する必要があるため、広域ネットワーク1410と接続されており、デバイス1500と直接通信可能である。
【0043】
メタデータサーバ200は、デバイス1500から受け取ったファームウェア名4001とファームウェアバージョン4002とをキーとして生成対象となるメタデータを決定する。
【0044】
メタデータサーバ200は、メタデータ4000の作成に際して、ファームウェア名4001、ファームウェアバージョン4002、完全性検証ハッシュ値4003のみを保持している。
メタデータサーバ200は、有効期限付与サーバ100に有効期限の付与を依頼することで、メタデータサーバ200が保持していない有効期限4004を取得し、メタデータ4000を生成することができる。
【0045】
メタデータサーバ200は、悪意のある第三者に攻撃されると、デバイス1500に送信されるメタデータ4000を自由に改竄される可能性がある。
例えば、メタデータ4000の完全性検証ハッシュ値にはファームウェア登録機1300による電子署名が付与されるため、任意のハッシュ値をデバイス1500に認めさせることはできない。これにより、偽ファームウェアが導入されることが阻止される。
【0046】
例えば、メタデータ4000の有効期限4004には有効期限付与サーバ100による電子署名が付与されている。これにより、有効期限4004の改竄は不可能である、または、旧ファームウェア向けメタデータ4000を送信したとしても、デバイス1500で有効期限の期限切れ扱いにできる。すなわち、デバイス1500に有効なメタデータ4000として誤認させることはできず、リプレイ攻撃によるダウングレードも阻止される。
【0047】
メタデータサーバ200は、機密情報、例えば秘密鍵を一切保持しない。メタデータ4000は、ファームウェア登録機1300と有効期限付与サーバ100によって情報に電子署名がされる。
メタデータサーバ200は、悪意のある第三者による攻撃によって、内部情報が流出したとしても、当該内部情報は、機密情報を含まないメタデータ4000のみであるため、流出した場合であっても、悪意のある第三者の攻撃に利用する可能性は少ない。
【0048】
メタデータサーバ200は、第2の時刻受信部210と、相対時刻発生部221と、想定カウントアップ値供給部222と、相対時刻異常判定部230と、有効期限付与依頼部240と、絶対時刻異常判定部250と、メタデータ生成部261と、過去メタデータ保存部263と、登録情報受信部270と、メタデータ送信可否判定部280と、デバイス通信部290と、を含む。
【0049】
第2の時刻受信部210は、時刻サーバ300と通信して絶対時刻を同期する。
第2の時刻受信部210は、例えば、8時30分や23時24分のように、どのような装置、場所であっても、ある時刻を一意に特定可能な時刻表現のことを示す絶対時刻に同期する。
第2の時刻受信部210が取得した時刻情報で示される絶対時刻が、メタデータサーバ200が認識している絶対時刻と誤差があったとしても、第2の時刻受信部210は、受信した時刻情報にあわせて、絶対時刻を補正する。
【0050】
第2の時刻受信部210は、メタデータ4000を作成する際など時刻が重要になるタイミングで同期することで把握するが、普段の時刻確認時においては把握した絶対時刻と後述する相対時刻とによる計算で把握してもよい。
【0051】
相対時刻発生部221は、メタデータサーバ200が起動した瞬間から増加し続けるカウンタ値(第1カウンタ値)を生成することで相対時刻を発生させる。相対時刻発生部221は、単位時間ごとに値をカウントアップするカウンタおよび、当該カウンタ値を取得する取得部として機能する。
本実施形態では、CPU内部のタイムスタンプレジスタを使用しているが、その他のハードウェアであってもよい。
相対時刻発生部221で増加するカウンタ値は、ハードウェア的に加算されていく値であり、値に対してマルウェア等のソフトウェア的な攻撃で改竄されることはない。
【0052】
相対時刻は、デバイス1500ごとに個別に保持している外部環境に依存しない時刻である。本実施形態では、デバイス1500が起動した時間を0とする起動から経過した期間のことである。
相対時刻は、ある絶対時刻においてもデバイス1500によって異なる。相対時刻は、秒、分、時間で表現する必要はなく、デバイス1500内のクロック発振機が発するクロックの数をもって表現してもよい。
【0053】
例えば、タイムスタンプレジスタは、近年、CPUには広く搭載されており、値がクロックに従って増加する機能を有する。
タイムスタンプの値の増加速度は、CPU周波数に基づくため、異なるCPU周波数を持つデバイス1500では、同時に起動した場合であっても、同じ絶対時刻において、異なる相対時刻となる。
【0054】
CPUは、同一型番の同一製品であっても物理現象である周波数にはいくらかの誤差が存在する。当該CPUに搭載されたタイムスタンプレジスタも周波数の誤差に基づき、誤差を生じる。これにより、同一CPUを搭載したデバイス1500であっても、相対時刻が全く同じになる可能性は少なく、相対時刻は、同一デバイスでは、起動からの相対的な時間経過を判断できる。
【0055】
相対時刻は、一定の周波数に基づき一定の増加速度であることを要するため、処理負荷により動的に動作周波数が変化するCPUでは、タイムスタンプレジスタの値の増加も一定とならず使用することが難しい。
このような場合、タイムスタンプレジスタを使用せず、周波数に依存せずにデバイス固有カウント値を返すレジスタを使用することで相対時刻は、単一デバイス内で単調増加する値とすることができる。
【0056】
想定カウントアップ値供給部222は、例えば、有効期間ごとに相対時刻がいくつカウントアップするのかを算出する。
例えば、有効期間が1日である場合、想定カウントアップ値供給部222は、今回は有効日数(D)が1日であるため、想定カウントアップ値(EC)は1日でカウントアップする値を返送する。
【0057】
相対時刻異常判定部230は、メタデータ4000の生成時の相対時刻を検証する。相対時刻異常判定部230は、後述する処理方法により直前に正常に送信されたメタデータ4000の有効期限と内部生成したメタデータ4000の有効期限との差分を算出し、メタデータ4000の生成時の相対時刻に異常がないかを判定する。
【0058】
有効期限付与依頼部240は、メタデータ4000の生成に必要な有効期限の付与を有効期限付与サーバ100へ依頼する。
絶対時刻異常判定部250は、絶対時刻を検証する。
【0059】
メタデータ生成部261は、有効期限付与依頼部240を介して受け取った有効期限とメタデータソース保存部262の情報を組み合わせてメタデータ4000を生成する。
ファームウェア登録機1300が入力したファームウェアの情報は、登録情報受信部270を介してメタデータソース保存部262に保存される。
【0060】
図6は、メタデータソース保存部262に保存された情報6000を示す。
メタデータソース保存部262は、メタデータ4000を作成するのに必要な情報を恒久的に保存しておくストレージである。
メタデータソース保存部262は、例えば、ファームウェア名4001、ファームウェアバージョン4002、完全性検証ハッシュ値4003が保存される。
メタデータソース保存部262は、例えば、有効期限付与サーバ100で付与される有効期限以外の情報である。
【0061】
メタデータソース保存部262は、ファームウェア登録機1300がファームウェアを登録するごとにエントリが追加される。
メタデータソース保存部262は、例えば、同一のファームウェア名4001であってもファームウェアバージョン4002が異なれば、異なるエントリとして保存される。
【0062】
メタデータソース保存部262は、完全に同一のファームウェア名4001、ファームウェアバージョン4002でファームウェアであっても、形式的にファームウェアバージョン4002を変更することで新規ファームウェアとして登録することもできる。
このような場合は、同一の完全性検証ハッシュ値4003であるエントリが複数登録される。
【0063】
例えば、配布した新ファームウェアにバグがあり、旧ファームウェアに早急にロールバックする場合、旧ファームウェアのファームウェアバージョン4002は、新ファームウェアのファームウェアバージョン4002よりも古いため、更新ができない。
【0064】
このような場合、旧ファームウェアに更新するため、旧ファームウェアのファームウェアバージョン4002を変更し、新バージョンとして登録する。これにより、実質的には、旧バージョンのファームウェアであっても新バージョンとして登録することでファームウェアの更新をすることができる。
【0065】
図7は、過去メタデータ保存部263に保存された情報を示す。
過去メタデータ保存部263は、デバイス1500に送信された直前のメタデータ4000の情報5000が保存されている。
【0066】
情報5000は、例えば、正常にデバイス1500に送信されたときのメタデータ(第2メタデータ)がその場合のファームウェア名4001、ファームウェアバージョン4002、有効期限(第2有効期限)と、当該メタデータ生成時の相対時刻(第2カウンタ値)を関連付けたエントリである。
過去メタデータ保存部263は、当該エントリを記憶する記憶部として機能する。
【0067】
例えば、ファームウェア名4001が「aaa」、ファームウェアバージョン4002が「1」、有効期限4004が「2021/03/02」でメタデータ4000を生成した時の相対時刻「1000」のエントリが格納され、記憶されている。
【0068】
例えば、ファームウェア名4001が「bbb」、ファームウェアバージョン4002が「1」、有効期限4004が「2021/08/11」でメタデータ4000を生成した時の相対時刻「3000」のエントリが格納され、記憶されている。
【0069】
過去メタデータ保存部263は、ファームウェア名4001とファームウェアバージョン4002との組合せごとに直前のエントリのみを保持しており、より新しい同一のファームウェア名4001とファームウェアバージョン4002との組合せのエントリ(第1エントリ)がデバイス1500に送信されると当該情報も上書きされる。
【0070】
メタデータ送信可否判定部280は、生成したメタデータ4000を、絶対時刻異常判定部250と相対時刻異常判定部230で判定された結果に従い、送信の可否を決定する。
【0071】
もし、有効期限4004の長いメタデータ4000が送信された場合、悪意のある第三者により、ダウングレード攻撃が実施される可能性がある。
メタデータサーバ200は、当該攻撃を防ぐため、異常な有効期限が設定されたメタデータ4000を可能な限り送信しないようにする。
メタデータサーバ200は、絶対時間と相対時間を確認することで時刻サーバ300と有効期限付与サーバ100との時刻が改竄されていないのかを確認する。
【0072】
デバイス通信部290は、デバイス1500と無線通信を行うことで送信が決定されたメタデータ4000を送信する。
デバイス通信部290は、通信プロトコルを処理する回路、AD/DA変換器、周波数コンバータ、帯域フィルタ、増幅器、アンテナなどを備える。なお、デバイス通信部290がデバイス1500と有線で接続される形態も排除されない。
【0073】
時刻サーバ300は、正確な時刻を配布する。本実施形態では、時刻サーバ300は、NTP(Network Time Protocol)を利用しているが、正確な時刻を配布できるのならば、そのほかのプロトコルであってもよい。
クラウドシステムでは、例えば、ログ管理のためなどにより時刻同期が必須である。これにより、クラウドシステムを構成する全てのサーバは、時刻サーバ300が配布する時刻に同期する。
【0074】
時刻サーバ300は、有効期限付与サーバ100およびメタデータサーバ200と疎結合により接続されている。時刻サーバ300は、NTPのような標準プロトコルを用いるため、公開NTPサーバによって代替してもよい。つまり、時刻サーバ300は、ファームウェア検証サーバ群1100の運用組織と同一の運用組織によるプライベート運用であることを要しない。
【0075】
例えば、公開NTPサーバの信頼性に疑問がある場合や、時刻サーバ300を含めた情報処理システム1000によりセキュアな運用が求められる場合は、プライベート運用をすることが望ましい。
【0076】
時刻サーバ300は、悪意のある第三者による攻撃によって、例えば、ファームウェア検証サーバ群1100を偽の時刻で同期させて長い有効期限を持つメタデータを生成する可能性がある。
【0077】
例えば、情報処理システム1000が、常に1日先の有効期限を持つメタデータ4000を生成している運用である場合、悪意のある第三者の攻撃によってファームウェア検証サーバ群1100の現在時刻が1年先の時刻で同期される可能性がある。
このような場合、ファームウェア検証サーバ群1100で生成されるメタデータ4000は、見かけ上の有効期限4004は、1日先であるが、実際には1年の有効期限を持つことになる。
【0078】
このような場合、悪意のある第三者は、完全性検証ハッシュ値4003を改竄できないため、デバイス1500に対して、旧バージョンのファームウェアを有効であると誤認させるまでしかできない。メタデータサーバ200は、後述する処理により時刻改竄を検出可能である。
【0079】
ファームウェア配布サーバ1200は、ファームウェアの本体をデバイス1500に配布する。
デバイス1500は、ファームウェア名とバージョンとをキーにしてファームウェア配布サーバ1200から一意のファームウェアを入手する。
【0080】
ファームウェア配布サーバ1200は、一般的なファイルサーバにみられるように、ディレクトリ内に「ファイル名+バージョン」で各ファイルが列挙されているような状態でファームウェアを保存する。
例えば、デバイス1500は、必要に応じてファームウェア配布サーバ1200のディレクトリ内のファームウェア一覧を取得して本体をダウンロードすることができるが、デバイス1500がファームウェアをダウンロードできるのならばその他の方法であってもよい。
【0081】
ファームウェア登録機1300は、ファームウェア検証サーバ群1100とファームウェア配布サーバ1200とに、ファームウェア更新に必要な情報を初期登録する。
ファームウェア登録機1300は、ファームウェア検証サーバ群1100とファームウェア配布サーバ1200と接続されている。ファームウェア登録機1300は、当該サーバ群または、サーバと通信可能であれば、他に接続されていなくてもよい。
【0082】
図8は、本実施形態に係る情報処理システム1000の更新処理の一例を示す。
ファームウェア開発者は、例えば、デバイス1500のファームウェアに脆弱性が発見された、または、新機能の追加が必要になったりした場合は、必要に応じて新しいファームウェアを作成する。
作成されたファームウェアは、テストが完了し配布が決定される。
【0083】
本実施形態に係る情報処理システム1000の更新処理では、上述のように、ファームウェア開発者が開発した新しいファームウェアのテストが完了し、配布が決定されていることを前提とする。
【0084】
ファームウェア開発者は、ファームウェア登録機1300に新しいファームウェアを入力する。ファームウェア登録機1300は、入力されたファームウェアをファームウェア検証サーバ群1100とファームウェア配布サーバ1200に送信し、情報の登録を行う(S1001)。
当該登録により、ファームウェア配布サーバにファームウェアが格納される。
【0085】
ファームウェア配布サーバ1200は、デバイス1500からの要求に応じてファームウェアを配布する(S1002)。
ファームウェア検証サーバ群1100は、メタデータ4000をデバイス1500からの要求に応じて生成する(S1003)。
【0086】
デバイス1500は、ファームウェア検証サーバ群1100から送信されたメタデータ4000を検証する(S1004)。デバイス1500は、メタデータ4000によってファームウェアの正当性を検証できた場合、ファームウェアを更新する(S1005)。
【0087】
図9は、ステップS1001で説明したファームウェアの登録処理の一例を示す。
最初に、ファームウェア登録機1300と有効期限付与サーバ100とで鍵ペアの生成を行う(S1101)。
ファームウェア登録機1300は、公開鍵暗号方式の鍵ペア(秘密鍵、公開鍵)を生成する。生成した鍵ペアは、メタデータ4000の完全性検証ハッシュ値への電子署名および検証に用いる。
公開鍵は、PKIの仕組みを利用するかデバイスへの埋め込みを行うことで、公開鍵自身の正当性を検証可能な状態にする。
【0088】
有効期限付与サーバ100においても公開鍵暗号方式の鍵ペアを生成する。生成した鍵ペアは、メタデータ4000の有効期限への電子署名および検証に用いる。
公開鍵は、デバイス1500から正当性を確認可能な状態にする。
【0089】
ファームウェア開発者は、新規ファームウェアをファームウェア名4001とファームウェアバージョン4002と共にファームウェア登録機1300に入力する(S1102)。
ファームウェア名4001とファームウェアバージョン4002は、手動で入力しなくてもよい。例えば、ファームウェアに当該ファームウェア名4001とファームウェアバージョン4002が埋め込まれていればファームウェア登録機1300が自動で読み取ってもよいし、登録時のファームウェア名4001から自動認識されるような仕組みでもよい。
【0090】
ファームウェア登録機1300は、ファームウェアの完全性検証ハッシュ値4003を算出して秘密鍵で電子署名する(S1103)。
【0091】
ファームウェア登録機1300は、ファームウェアをファームウェア配布サーバ1200に登録する(S1104)。
ファームウェア登録機1300は、登録時にファームウェア名4001とファームウェアバージョン4002の情報を付与する。
当該付与により、デバイス1500は、ファームウェア名4001とファームウェアバージョン4002とをキーにしてファームウェア配布サーバから一意のファームウェア本体を入手可能できる。
【0092】
ファームウェア登録機1300は、メタデータサーバ200にファームウェア名4001とファームウェアバージョン4002および電子署名済みの完全性検証ハッシュ値4003を送信する(S1105)。
ファームウェア登録機1300が送信した情報は、登録情報受信部270を介して、メタデータソース保存部262に保存される。
【0093】
図10は、本実施形態におけるファームウェア更新時の処理の一例を示す。
最初に、デバイス1500は、ファームウェアを要求する(S1201)。
【0094】
デバイス1500は、定期的に任意の方法でファームウェア更新の必要性を認識する。
任意の方法は、例えば、デバイス1500は、ファームウェア配布サーバ1200にアクセスして最新のファームウェアがリリースされていることを自ら確認する。例えば、別のサーバからのプッシュ通知を受けて最新ファームウェアのダウンロードの必要性を認識するなどである。
【0095】
デバイス1500は、当該認識により、ファームウェア更新の必要性を認識した場合、ファームウェア配布サーバ1200にファームウェアを要求する。
【0096】
ファームウェア配布サーバ1200は、ファームウェア名4001とファームウェアバージョン4002とを確認することで、一意に更新対象のファームウェアを認識し、デバイス1500に送信する(S1202)。
【0097】
デバイス1500は、ファームウェアの正当性を確認するために、メタデータサーバ200にメタデータ4000を要求する(S1203)。
デバイス1500は、要求するメタデータ4000を決定するため、ファームウェア名4001とファームウェアバージョン4002とをキーとして該当のファームウェアを一意に決定できるように送信する。
【0098】
メタデータサーバ200は、デバイス1500からの要求を受け、メタデータ4000の生成を開始する。
第2の時刻受信部210が時刻サーバ300と通信して絶対時刻を同期する(S1204)。
【0099】
有効期限付与依頼部240は、メタデータ4000に有効期限4004付与を依頼する(S1205)。
有効期限付与依頼部240は、メタデータソース保存部262からファームウェア名4001とファームウェアバージョン4002をキーに、当該組み合わせが一致しているエントリを検索する。
有効期限付与依頼部240は、一致したエントリをメタデータ4000の元となる情報、すなわちメタデータソースとして取り出す。そして、そのメタデータソース全体への有効期限付与を有効期限付与サーバ100に依頼する。
【0100】
有効期限付与サーバ100は、有効期限付与依頼受付部140で受け付けた有効期限付与の依頼に対応するため、時刻サーバ300と絶対時刻の同期をする(S1206)。
【0101】
有効期限付与サーバ100は、有効期限計算部120による有効期限の算出および、当該有効期限を有効期限署名部130による電子署名をすることでメタデータサーバに送信する(S1207)。
【0102】
メタデータサーバ200は、メタデータ生成部261により、取得した有効期限4004とメタデータソースを連結し、メタデータ4000を生成する(S1208)。
【0103】
メタデータ送信可否判定部280は、メタデータ4000を検証し、正常であればメタデータ4000をデバイス1500に送信する(S1209)。
メタデータ送信可否判定部280は、メタデータ4000に異常があればデバイス1500への送信を停止する。
【0104】
デバイス1500は送信された結果に基づきファームウェア更新を行う(S1210)。
【0105】
図11は、絶対時刻改竄の判定処理の一例を示す。
悪意のある第三者は、デバイス1500へのダウングレード攻撃をする場合、有効期限付与サーバ100または、時刻サーバ300に侵入する可能性が高い。
【0106】
例えば、有効期限付与サーバ100に侵入されるケースでは、有効期限付与サーバ100の電子署名向けの秘密鍵が当該第三者に奪取されている可能性が高い。
悪意のある第三者は、奪取した秘密鍵を用いて正しい電子署名を伴った上で異常に長い有効期限4004をメタデータサーバ200に送信することができる。
【0107】
悪意のある第三者は、秘密鍵を奪取できない場合、例えば、鍵自体がハードウェアセキュリティモジュール等で強固に保護され奪取されなかった場合であっても、有効期限付与サーバ100が認識している絶対時刻を未来に再設定する。これにより、当該第三者は、奪取した秘密鍵を用いて正しい電子署名を伴った上で異常に長い有効期限4004を設定することができる。
【0108】
例えば、時刻サーバ300が侵害されるケースでは、有効期限付与サーバ100とメタデータサーバ200との絶対時刻が同時に改竄され未来の絶対時刻になる。
絶対時刻が同時に改竄された場合であっても、ファームウェア検証サーバ群1100全体としては、有効期限付与サーバ100とメタデータサーバ200が正常に動作する。
これにより、有効期限4004の長いメタデータ4000をネットワーク1400に送信する。
【0109】
このような攻撃を防ぐため、メタデータサーバ200は、絶対時刻および相対時刻を組み合わせて異常判定を行う。
【0110】
以降の説明では、情報処理システム1000としてメタデータ4000の有効日数(D)に1日が設定されているとする。
つまり、有効期限4004は現在の日に対して有効日数であるD、すなわち1日が加算される。最小単位は日単位として、分・時間などのそれ以下の部分は切り捨てて説明するが、本実施形態では、情報処理システム1000は、1日単位の有効日数に縛られるものではない。
【0111】
最初に、メタデータサーバ200は、メタデータ4000の有効期限を把握する(S1301)。
メタデータサーバ200は、第2の時刻受信部210により絶対時刻を同期させ取得する(S1302)。
【0112】
絶対時刻異常判定部250は、現在の絶対時刻と有効期限4004とを比較し、有効日数(D)以下であることを検証する(S1303)。
現在の絶対時刻が有効日数(D)以下である場合は、相対時刻の改竄判定処理であるAの処理に遷移する。現在の絶対時刻が有効日数(D)より大きい場合は、S1304に遷移する。
【0113】
絶対時刻異常判定部250は、絶対時刻が異常であると判定し、時刻異常を検出する(S1304)。
時刻異常を検出した場合、メタデータ4000の送信処理を停止する。
【0114】
当該処理は、有効期限付与サーバ100の絶対時刻が未来にずれている場合においては、正常な絶対時刻を保持しているメタデータサーバ200との絶対時刻の差が有効日数(D)より大きくなることが想定される。これにより、時刻異常を検出し、有効期限付与サーバ100の時刻改竄に対策できる。
【0115】
図12は、メタデータサーバ200における相対時刻改竄の判定処理の一例を示す。
本判定処理は、すでに絶対時刻改竄の判定処理をし、絶対時刻の改竄がない場合を前提とする。
メタデータサーバ200は、メタデータ4000から有効期限(Expired Day now: ED_now)を取得する(S1401)。
【0116】
メタデータサーバ200は、過去メタデータ保存部263から有効期限(Expired Day old: ED_old)と相対時刻(Time Stamp Clock Old: TSC_old)とを取得する(S1402)。
【0117】
当該説明では、有効日数(D)を1日とした上で、最小単位を1日に丸めていることから、過去メタデータ保存部263の有効期限も1日単位となっている。
有効日数(D)を、細かく有効時間や有効分の単位で制御をする場合には、過去メタデータ保存部263の有効期限においてもその粒度で保存される。
【0118】
メタデータサーバ200は、デバイス1500からメタデータ4000の要求を受け付けた際に、ファームウェア名4001とファームウェアバージョン4002とを受け取る。これにより、当該情報をキーとして過去メタデータ保存部263から適切な内容を取得できる。
【0119】
メタデータサーバ200は、相対時刻発生部221を通じて相対時刻(Time Stamp Clock Now: TSC_now)を取得する(S1403)。
メタデータサーバ200は、想定カウントアップ値供給部222から想定カウントアップ値(Expect Count: EC)を取得する(S1404)。
【0120】
相対時刻異常判定部230は、経過日数(N)を算出する(S1405)。
相対時刻異常判定部230は、ED_now - ED_oldから経過日数(N)を算出することができる。
経過日数(N)は、直前に正常に送信されたメタデータ4000の有効期限と内部生成したメタデータ4000の有効期限との差分である。本実施形態では有効時間が1日であるため、経過日数であるが、有効時間がそれ以外には、有効時間に応じた経過時間であってもよい。
【0121】
相対時刻異常判定部230は、経過カウント(C)を算出する(S1406)。
相対時刻異常判定部230は、 TSC_now - TSC_oldから経過カウント(C)を算出することができる。
経過カウント(C)は、直前に正常に送信されたメタデータ作成時の相対時刻(ED_old)と現在の相対時刻との差分である。つまり、経過日数(N)の間に相対時刻発生部221がカウントアップした値である。
【0122】
メタデータサーバ200は、時刻サーバ300の改竄を判定する(S1407)。これにより、時刻サーバ300が改竄されて未来時刻を配信しているかを判定することができる。
メタデータサーバ200は、経過日数(N) × 1日分の想定カウントアップ値(EC) の値(第3カウンタ値)が経過カウント以下、つまり閾値以下であるかを判定する。
当該値が、経過カウント以下である場合、未来時刻を配信していないと判定し、S1408に遷移し、経過カウントより大きい場合、未来時刻を配信していると判定し、S1410に遷移する。
【0123】
次に、メタデータサーバ200は、有効期限4004と生成時の相対時刻とを過去メタデータ保存部263に保存する(S1408)。
メタデータサーバ200は、メタデータ4000の生成から送信の可否判断まで時間がごく短い場合には、メタデータ生成時間としてメタデータ4000の送信時の相対時刻を近似値として保存してもよい。
【0124】
メタデータ4000の生成から送信の可否判断まで時間が長期化することが想定される場合は、メタデータ生成部261がメタデータ4000に一時的に生成時刻を埋め込むことで、過去メタデータ保存部263への保存時に当該時刻を参照してもよい。
【0125】
次に、メタデータサーバ200は、デバイス1500にメタデータ4000を送信する(S1409)。
【0126】
メタデータサーバ200は、未来時刻を配信していると判定した場合は、メタデータ4000を異常なデータとして破棄し、デバイス1500への送信処理は停止する(S1410)。
【0127】
当該処理は、時刻サーバ300が偽の絶対時刻を配信したとしても、ファームウェア検証サーバ群1100を構成するサーバの相対時刻が絶対時刻とは独立して単調増加する特徴を用いている。
例えば、時刻サーバ300が未来の絶対時間を配信した場合、経過日数(N)の値が大きくなるため、ステップS1407で求めた値により判定ができる。これにより、時刻サーバ300による時刻改竄に対策できる。
【0128】
図13は、想定カウントアップ値供給部222の処理フローを示す。
本説明では、情報処理システム1000としてメタデータ4000の有効日数(D)に1日が設定されているため、1日に相対時刻がカウントアップされる値を求める処理として説明する。
【0129】
想定カウントアップ値供給部222は、想定カウントアップ値が定義済みであるか否かを判定する(S1501)。
想定カウントアップ値が定義されている場合には、S1509に遷移し、想定カウントアップ値が定義されていない場合には、S1502に遷移する。
【0130】
次に、想定カウントアップ値供給部222は、想定カウントアップ値が未定義であると返答する(S1502)。
例えば、情報処理システム1000が、本格稼働している場合、当該返答の可能性は低いため、管理者によるアラート処理などをすることが望ましい
【0131】
想定カウントアップ値供給部222は、相対時刻発生部221から現在の相対時刻(T1)を取得する(S1503)。
【0132】
次に、想定カウントアップ値供給部222は、一定時間(TMP)待機することで、相対時刻をカウントアップさせる(S1504)。
待機する一定時間(TMP)は、有効日数(D)と比較して十分に小さくかつ運用として待機が可能な程度の時間ならば、どのような時間であってもよい。例えば、有効日数(D)が1日であれば、1分程度でよい。
【0133】
想定カウントアップ値供給部222は、再び現在の相対時刻(T2)を取得する(S1505)。
想定カウントアップ値供給部222は、相対時刻(T2)と相対時刻(T1)を用いてT2 - T1の値である相対時刻の差分(T)を算出する(S1506)。
【0134】
想定カウントアップ値供給部222は、倍率(n)を算出する(S1507)。
倍率(n)は、経過期間と相対時刻発生部221のカウントアップする単位時間の比率である。
想定カウントアップ値供給部222は、有効日数(D) ÷ TMP を計算することで倍率(n)を算出する。
例えば、一定時間(TMP)が1分で有効日数(D)が1日である場合、有効日数(D)は1440分(24時間×60分)から倍率(n)は1440である。
【0135】
次に、想定カウントアップ値供給部222は、想定カウントアップ値を算出する(S1508)。
想定カウントアップ値供給部222は、一定時間(TMP)の間に相対時刻の差分(T)だけカウントアップする。
例えば、相対時刻の差分(T)は仮に1000クロックである場合、倍率(n)× 相対時刻の差分(T)から1日に1440×1000クロックだけ相対時刻が進む。
想定カウントアップ値供給部222は、倍率(n)× 相対時刻の差分(T)を定義済みの想定カウントアップ値として自身に保存する。
【0136】
想定カウントアップ値供給部222は、定義済みの値として送信する(S1509)。
【0137】
図14は、時刻サーバ300への攻撃により未来の絶対時刻配信が生じた際の矛盾の様子を示す。
絶対時刻は、時刻サーバによる時刻配信を基準としている。例えば、時刻サーバ300が攻撃された場合、未来時刻が配信される。
例えば、時刻サーバ300と同期するメタデータサーバ200は、図14に示すとおり、本当の時刻が3/5であるにも関わらず、同期した偽時刻である3/9と認識する。
【0138】
例えば、過去メタデータ保存部263は、メタデータサーバ200がメタデータ4000を作成した際に、情報を保存する。
当該情報は、ファームウェア名4001とファームウェアバージョン4002のファームウェアに対するメタデータ4000に着目しており、時間経過と共に値が上書きされている。このとき、想定カウントアップ値(EC)は1000だと仮定する。
【0139】
例えば、図14において、メタデータサーバ200は、3/3に有効期限4004が3/4のメタデータを生成した場合、その時の相対時刻は3000である。
メタデータ4000は、直前のED_oldを参照して経過日数(N)が1日であることを認識できる。さらに、直前のTSC_oldを参照して経過カウント(C)が1000であるとから正しいと認識される。
【0140】
例えば、図14において、メタデータサーバ200は、本当の時刻が3/5にメタデータ4000を生成した場合、悪意のある第三者の攻撃によって、偽時刻を同期させられているため、3/9にメタデータ4000を生成したと誤認させらせる。
メタデータサーバ200は、このとき、有効期限4004は、3/10であるが、早退時刻は、時刻サーバ300の影響を受けないため、5000である。
【0141】
メタデータサーバ200は、当該メタデータ4000の直前のED_oldを参照して経過日数(N)が5日であることを認識する。さらに、直前のTSC_oldを参照して経過カウント(C)が1000であることを認識する。
メタデータサーバ200は、実際に5日が経過していれば、相対時刻もそれに合わせて5000だけカウントアップしているのが想定する。メタデータサーバ200は、当該想定に基づき、相対時刻を検証するが、1000しか経過しておらず。不正と認識する。
【0142】
図15は、デバイス1500でのファームウェア更新処理フローを示す。
デバイス1500は、新規ファームウェアを取得する(S1601)。次に、デバイス1500は、新規ファームウェアのメタデータ4000を取得する(S1602)。
デバイス1500は、実行中のファームウェアバージョンを取得する(S1603)。
【0143】
デバイス1500は、ファームウェアバージョンを比較する(S1604)。
新規ファームウェアのバージョンが実行中のファームウェアのバージョンよりも新しい場合、S1605に遷移し、古いまたは、同じである場合、S1608に遷移する。
これにより、ダウングレードを防止することができる。
【0144】
デバイス1500は、新規ファームウェアの完全性検証ハッシュ値を計算し、メタデータ4000の完全性検証ハッシュ値4003と比較を行う(S1605)。
これにより、デバイス1500は、新規ファームウェアが改竄されていないこと、ファームウェア開発者の意図していない偽ファームウェアでないことを確認できる。
【0145】
デバイス1500は、完全性検証ハッシュ値に付与されている電子署名を用いてメタデータの完全性検証ハッシュ値4003が改竄されていないことも検証する。
完全性検証ハッシュ値が正しい場合、S1606に遷移し、正しくない場合、S1608に遷移する。
【0146】
デバイス1500は、メタデータ4000の有効期限を検証する(S1606)。
デバイス1500は、有効期限4004とデバイス1500の絶対時刻とを比較する。
有効期限が切れていない場合は、S1607に遷移し、切れていない場合は、S1608に遷移する。
【0147】
デバイス1500は、当該比較にあたり、有効期限4004に付与されている電子署名を用いて有効期限を含めたメタデータ4000全体が改竄されていないことも検証する。
これにより、メタデータそのものが偽物でないことを確認することができる。
【0148】
デバイス1500は、新規ファームウェアにファームウェアを更新する(S1607)。
【0149】
デバイス1500は、不正な処理が行われた、またはメタデータ4000が不正であることを検出し、更新処理を停止する(S1608)。
【0150】
以上、本実施形態によれば、有効期限付与サーバ100、メタデータサーバ200、時刻サーバ300は、それぞれ単純な処理のみが動作しているが、ファームウェア検証サーバ群1100として組み合わせて動作すると、ファームウェア更新に適した効果を発揮する。
これにより、ファームウェア検証サーバ群1100を構成するサーバのいずれかが悪意のある第三者に攻撃されたとしても、セキュリティ権限の分離モデルに倣い、ファームウェア検証サーバ群1100の被害を最小限にすることができる。
【0151】
(変形例1)
図16は、本実施形態の変形例の構成例を示す。
情報処理システム1000は、構成するサーバが、想定外の事象により異常停止するケースに対応するために冗長化されて運用される。
例えば、本実施形態においてメタデータサーバ200を複数台の構成にすることで、1台のメタデータサーバ200が停止しても、ファームウェア検証サーバ群2100、つまり、情報処理システム1000が運用できることができる。
【0152】
ファームウェア検証サーバ群2100は、2台のメタデータサーバ200_1、200_2を有する。
ファームウェア検証サーバ群2100は、過去に正しく送付できたメタデータ4000を保存する過去メタデータ共有部264とメタデータサーバ200_1、200_2を接続している。メタデータサーバ200_1、200_2は、いずれも過去メタデータ共有部264のデータを参照できる。
【0153】
図17は、本変形例に係るメタデータサーバ200_1の構成要素を示す。
メタデータサーバ200_2は、メタデータサーバ200_1と同様の構成であるため、割愛する。
メタデータサーバ200_1は、相対時刻補正部223と、過去メタデータリモート保存部265を有する。
【0154】
過去メタデータ共有部264は、メタデータサーバ200_1、200_2で透過的に参照する運用においては、メタデータサーバ200_1、200_2での相対時刻の同期を有する。
相対時刻は、メタデータサーバ200_1、200_2の起動時より単調増加し始めるため、どちらか一方の計算機が再起動を伴う場合、ずれが生じることで運用に矛盾が生じてしまう。
【0155】
過去メタデータリモート保存部265は、メタデータサーバ200_1、200_2のローカル上に保存していた過去のメタデータ4000の情報を過去メタデータ共用部264に保存するための通信部である。
リモートに保存することで、メタデータサーバ200_1、200_2のいずれからでも過去メタデータを共有可能にできる。
【0156】
相対時刻補正部223は、メタデータサーバ200_2の相対時刻とローカル上の相対時刻とを同期することでメタデータサーバ200_1の早退時刻を補正するカウンタ補正部として機能する。
相対時刻の同期はメタデータサーバ200_1が起動した際に一度だけ行われる処理である。
相対時刻は起動時には0であるので、自身の起動時にメタデータサーバ200_2の相対時刻を取得する。
メタデータサーバ200_1は、自身の相対時刻にもう一方のメタデータサーバの相対時刻を加えたものを相対時刻と認識するようにする。
【0157】
図18は、メタデータサーバ200_1の起動時の相対時刻補正を示す。
メタデータサーバ200_1を起動し、起動処理を実行する(S1701)。
メタデータサーバ200_1は、メタデータサーバ200_2が起動済みであるかを判定する(S1702)。起動済みである場合、S1703に遷移し、起動済みでない場合は、メタデータサーバ200_1が最初に起動したメタデータサーバ200であるため、相対時刻を同期する必要はないと判断し処理を終了する。
【0158】
メタデータサーバ200_1は、メタデータサーバ200_2から、相対時刻を取得する(S1703)。
メタデータサーバ200_1は、取得した相対時刻を相対時刻補正値として自身に保存するS1704)。
【0159】
相対時刻補正部223は、相対時刻発生部221の相対時刻に相対時刻補正値を加えた値とするように補正する(S1705)。
【0160】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0161】
1000 情報処理システム
1100 ファームウェア検証サーバ群
1200 ファームウェア配布サーバ
1300 ファームウェア登録機
1400 ネットワーク
1410 広域ネットワーク
1420 有線ローカルネットワーク
1430 無線ローカルネットワーク
1500 デバイス
100 有効期限付与サーバ
110 第1の時刻受信部
120 有効期限計算部
130 有効期限署名部
140 有効期限付与依頼受付部
150 有効期限署名鍵保存部
160 鍵ペア生成部
200 メタデータサーバ
210 第2の時刻受信部
221 相対時刻発生部
222 想定カウントアップ値供給部
223 相対時刻補正部
230 相対時刻異常判定部
240 有効期限付与依頼部
250 絶対時刻異常判定部
261 メタデータ生成部
262 メタデータソース保存部
263 過去メタデータ保存部
264 過去メタデータ共有部
265 過去メタデータリモート保存部
270 登録情報受信部
280 メタデータ送信可否判定部
290 デバイス通信部
300 時刻サーバ
4000 メタデータ
4001 ファームウェア名
4002 ファームウェアバージョン
4003 完全性検証ハッシュ値
4004 有効期限
5000、6000 情報
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18