(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-07
(45)【発行日】2022-02-04
(54)【発明の名称】システム起動を監視するための安全装置及び安全方法
(51)【国際特許分類】
G06F 21/57 20130101AFI20220128BHJP
【FI】
G06F21/57 350
(21)【出願番号】P 2020067752
(22)【出願日】2020-04-03
【審査請求日】2020-04-03
(32)【優先日】2019-04-07
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508197206
【氏名又は名称】新唐科技股▲ふん▼有限公司
(74)【代理人】
【識別番号】100102923
【氏名又は名称】加藤 雄二
(72)【発明者】
【氏名】ジヴ ハーシュマン
(72)【発明者】
【氏名】ダン モラヴ
(72)【発明者】
【氏名】イーラン マルガリータ
(72)【発明者】
【氏名】ニムロッド ペレド
(72)【発明者】
【氏名】モシェ アロン
【審査官】青木 重徳
(56)【参考文献】
【文献】特開2014-021953(JP,A)
【文献】特開2017-208075(JP,A)
【文献】特開2012-003772(JP,A)
【文献】特開2014-056390(JP,A)
【文献】特開2009-129061(JP,A)
【文献】米国特許出願公開第2012/0210115(US,A1)
【文献】米国特許出願公開第2017/0364683(US,A1)
【文献】米国特許出願公開第2010/0169949(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
(57)【特許請求の範囲】
【請求項1】
ホストデバイスと不揮発性メモリデバイスとをサービスするバスに接続するためのインターフェイスと、
前記ホストデバイスと前記不揮発性メモリデバイスに加えて前記バスに接続され、前記ホストデバイスが前記不揮発性メモリデバイスからブートコードを取得するブートプロセスを前記バス上で検出し、前記ホストデバイスの前記ブートコードの少なくとも一部の真正コピーに基づいて、前記ブートプロセスのセキュリティ
を確認するように設定されるプロセッサーと、
を備える
、
前記真正コピーは、前記ブートコードの前記少なくとも一部のイメージを含み、
前記プロセッサーは、前記イメージを、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部と比較することにより、前記不一致を検出するように設定されることを特徴とする安全装置。
【請求項2】
前記プロセッサーは、前記バスから前記ブートコードの少なくとも一部を抽出し、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部と前記真正コピーとの不一致を検出した場合、レスポンシブアクションを開始するように設定される請求項1に記載の安全装置。
【請求項3】
前記プロセッサーは、前記ブートプロセスの進行中に前記不一致を検出するように設定される請求項2に記載の安全装置。
【請求項4】
前記プロセッサーは、前記不一致を検出した場合の応答として、前記バスの前記少なくとも1つのラインに1つまたは複数のダミー値を強制的に書き込むことによって、前記ブートプロセスを中断するように設定される請求項5
3に記載の安全装置。
【請求項5】
前記プロセッサー
は、前記不一致を検出した場合の応答として、前記ホストデバイスと前記不揮発性メモリデバイスの間の前記バスの前記1つまたは複数のラインを中断することによって、前記ブートプロセスを中断するように設定される請求項5
3に記載の安全装置。
【請求項6】
前記プロセッサーは、前記不一致を検出した場合の応答として、前記不揮発性メモリデバイスの代わりに前記バスを介して前記ホストデバイスに応答し、前記真正コピーを使用して前記ブートプロセスを完了するように設定される請求項
3に記載の安全装置。
【請求項7】
前記プロセッサーは、前記ブートプロセスの進行とは別に、前記不一致を検出するように設定される請求項2に記載の安全装置。
【請求項8】
前記プロセッサーは、前記安全装置の内部メモリ、または前記安全装置の外部メモリに前記真正コピーを保持するように設定される請求項1に記載の安全装置。
【請求項9】
前記プロセッサーは、前記ブートプロセスの前記セキュリティが確認されるまで、前記ホストデバイスが所定の機密情報にアクセスするのを防ぐように設定される請求項1に記載の安全装置。
【請求項10】
前記プロセッサーは、
前記不揮発性メモリデバイスの代わりに前記ホストデバイスに応答し、前記ブートプロセスの第一インスタンスと第二インスタンスとの間で前記バス上での前記ホストデバイスのアクティビティを異ならせるブートコードを前記ホストデバイスに提供し、
前記バス上での前記ホストデバイスの前記アクティビティを監視し、前記アクティビティが前記ホストデバイスに提供された前記ブートコードと一致するかどうかを確認することによって、
前記ブートプロセスの前記セキュリティを確認するように設定される請求項1に記載の安全装置。
【請求項11】
前記プロセッサーは、前記バスのチップセレクトラインがアサートされていない間、前記バスのすべてのデータおよびクロックラインの論理状態が変化しないことを確保することによって、前記ブートプロセスの前記セキュリティを確認するように設定される請求項1に記載の安全装置。
【請求項12】
前記プロセッサーは、予め定義されたホワイトリストに表示されるバスコマンドのみが前記不揮発性メモリデバイスに適用されるように確保することによって、前記ブートプロセスの前記セキュリティを確認するように設定される請求項1に記載の安全装置。
【請求項13】
前記プロセッサーは、前記ブートプロセスにおける所定のリセット信号または電源信号から、所定のイベントまでの時間遅延が所定の範囲内であることを確保することによって、前記ブートプロセスの前記セキュリティを確認するように設定される請求項1に記載の安全装置。
【請求項14】
前記プロセッサーは、前記バスの前記少なくとも1つのラインのアナログパラメータ値が所定の範囲内であることを確保することによって、前記ブートプロセスの前記セキュリティを確認するように設定される請求項1に記載の安全装置。
【請求項15】
前記ブートコードは、前記バスに1つ以上のホストデバイスパラメーター値を出力するように前記ホストデバイスに指示し、
前記プロセッサーは、前記バスに出力された前記ホストデバイスパラメーター値を監視及び検証することによって、前記ブートプロセスの前記セキュリティを確認するように設定される請求項1に記載の安全装置。
【請求項16】
ホストデバイスと不揮発性メモリデバイスに加えてバスに接続される安全装置を使用して、前記バスを介して通信を行うことと、
前記安全装置を使用して、前記ホストデバイスが前記不揮発性メモリデバイスからブートコードを取得するブートプロセスをバス上で検出し、前記ホストデバイスの前記ブートコードの少なくとも一部の真正コピーに基づいて前記ブートプロセスのセキュリティを確認することと、
前記真正コピーは、前記ブートコードの前記少なくとも一部のイメージを含み、
前記不一致を検出することは、
前記イメージを、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部と比較することにより、前記不一致を検出することを含むことを特徴とする安全方法。
【請求項17】
前記ブートプロセスのセキュリティを確認することは、
前記バスから前記ブートコードの少なくとも一部を抽出し、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部と前記真正コピーとの不一致を検出した場合、レスポンシブアクションを開始することを含む請求項
16に記載の安全方法。
【請求項18】
前記不一致を検出することは、前記ブートプロセスの進行中に前記不一致を検出する請求項
17に記載の安全方法。
【請求項19】
前記ブートプロセスのセキュリティを確認することは、前記不一致を検出した場合の応答として、前記バスの前記少なくとも1つのラインに1つまたは複数のダミー値を強制的に書き込むことによって、前記ブートプロセスを中断することを含む請求項
18に記載の安全方法。
【請求項20】
前記ブートプロセスのセキュリティを確認することは、前記不一致を検出した場合の応答として、前記ホストデバイスと前記不揮発性メモリデバイスの間の前記バスの前記1つまたは複数のラインを中断することによって、前記ブートプロセスを中断することを含む請求項
18に記載の安全方法。
【請求項21】
前記ブートプロセスのセキュリティを確認することは、前記不一致を検出した場合の応答として、前記不揮発性メモリデバイスの代わりに前記バスを介して前記ホストデバイスに応答し、前記真正コピーを使用して前記ブートプロセスを完了することを含む請求項
18に記載の安全方法。
【請求項22】
前記不一致を検出することは、前記ブートプロセスの進行とは別に、前記不一致を検出する請求項
17に記載の安全方法。
【請求項23】
前記安全装置の内部メモリ、または前記安全装置の外部メモリに前記真正コピーを保持することをさらに含む請求項
16に記載の安全方法。
【請求項24】
前記ブートプロセスの前記セキュリティが確認されるまで、前記ホストデバイスが所定の機密情報にアクセスするのを防ぐことをさらに含む請求項
16に記載の安全方法。
【請求項25】
前記ブートプロセスのセキュリティを確認することは、
前記不揮発性メモリデバイスの代わりに前記ホストデバイスに応答し、前記ブートプロセスの第一インスタンスと第二インスタンスとの間で前記バス上での前記ホストデバイスのアクティビティを異ならせるブートコードを前記ホストデバイスに提供し、
前記バス上での前記ホストデバイスの前記アクティビティを監視し、前記アクティビティが前記ホストデバイスに提供された前記ブートコードと一致するかどうかを確認することを含む請求項
16に記載の安全方法。
【請求項26】
前記ブートプロセスのセキュリティを確認することは、
前記バスのチップセレクトラインがアサートされていない間、前記バスのすべてのデータおよびクロックラインの論理状態が変化しないことを確保することによって、前記ブートプロセスの前記セキュリティを確認することをさらに含む請求項
16に記載の安全方法。
【請求項27】
前記ブートプロセスのセキュリティを確認することは、
予め定義されたホワイトリストに表示されるバスコマンドのみが前記不揮発性メモリデバイスに適用されるように確保することによって、前記ブートプロセスの前記セキュリティを確認することをさらに含む請求項
16に記載の安全方法。
【請求項28】
前記ブートプロセスのセキュリティを確認することは、
前記ブートプロセスにおける所定のリセット信号または電源信号から、所定のイベントまでの時間遅延が所定の範囲内であることを確保することによって、前記ブートプロセスの前記セキュリティを確認することをさらに含む請求項
16に記載の安全方法。
【請求項29】
前記ブートプロセスのセキュリティを確認することは、
前記バスの前記少なくとも1つのラインのアナログパラメータ値が所定の範囲内であることを確保することによって、前記ブートプロセスの前記セキュリティを確認することをさらに含む請求項
16に記載の安全方法。
【請求項30】
前記ブートコードは、前記バスに1つ以上のホストデバイスパラメーター値を出力するように前記ホストデバイスに指示し、
前記ブートプロセスのセキュリティを確認することは、前記バスに出力された前記ホストデバイスパラメーター値を監視及び検証することをさらに含む請求項
16に記載の安全方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一種の電子システムセキュリティーに関わり、特に、セキュアブートストラッピング(secure bootstrapping)を実行するための安全装置及び安全方法に関する。
【背景技術】
【0002】
従来、電子システムは、ホストデバイスと周辺装置との間の通信にさまざまなタイプのバスインターフェイスを使用する。 バスインターフェイスの一例として、シリアルペリフェラルインターフェイス(SPIとも称する)バスを挙げられる。SPIをサポートする周辺機器には、たとえばシリアルフラッシュメモリデバイスが含まれる。
【0003】
この出願は、2015年6月8日に提出された米国仮特許出願62/172,298の権利を主張する2016年3月21日に出願された米国特許出願15/075,219の一部継続出願(CIP)である2018年4月18日に出願された米国特許出願15/955,715の一部継続出願(CIP)であり、上記出願の開示全体を参照により本明細書に組み込まれる。また、この出願は、偶数日に提出された「バスモニタリングを使用したスレーブデバイス間のセキュアなマスター仲介トランザクション」という名の米国特許出願(弁理士整理番号1041-2003)に関連している。
【先行技術文献】
【特許文献】
【0004】
【文献】米国仮特許出願62/172,298
【文献】米国特許出願15/075,219
【文献】米国特許出願15/955,715
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の目的は、セキュアブートストラッピングを実行するための安全装置及び安全方法を提供することにある。
【課題を解決するための手段】
【0006】
本発明の実施形態に係る安全装置は、ホストデバイスと不揮発性メモリデバイスとをサービスするバスに接続するためのインターフェイスと、前記ホストデバイスと前記不揮発性メモリデバイスに加えて前記バスに接続され、前記ホストデバイスが前記不揮発性メモリデバイスからブートコードを取得するブートプロセスを前記バス上で検出し、前記ホストデバイスの前記ブートコードの少なくとも一部の真正コピーに基づいて、前記ブートプロセスのセキュリティーを確認するように設定されるプロセッサーと、を備えることを特徴とする。
【0007】
また、本発明の1つの実施形態に係る安全装置において、前記プロセッサーは、前記バスから前記ブートコードの少なくとも一部を抽出し、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部と前記真正コピーとの不一致を検出した場合、レスポンシブアクションを開始するように設定される。
【0008】
また、本発明の1つの実施形態に係る安全装置において、前記真正コピーは、前記ブートコードの前記少なくとも一部のイメージを含み、前記プロセッサーは、前記イメージを、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部と比較することにより、前記不一致を検出するように設定される。また、本発明の1つの実施形態に係る安全装置において、前記真正コピーは、前記ブートコードの前記少なくとも一部の真正ダイジェストを含み、前記プロセッサーは、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部のダイジェストを計算し、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部の前記ダイジェストを前記真正ダイジェストと比較することにより、前記不一致を検出するように設定される。
【0009】
また、本発明の1つの実施形態に係る安全装置において、前記プロセッサーは、前記ブートプロセスの進行中に前記不一致を検出するように設定される。また、本発明の1つの実施形態に係る安全装置において、前記プロセッサーは、前記不一致を検出した場合の応答として、前記バスの前記少なくとも1つのラインに1つまたは複数のダミー値を強制的に書き込むことによって、前記ブートプロセスを中断するように設定される。また、本発明の1つの実施形態に係る安全装置において、前記プロセッサーは、前記不一致を検出した場合の応答として、前記ホストデバイスと前記不揮発性メモリデバイスの間の前記バスの前記1つまたは複数のラインを中断することによって、前記ブートプロセスを中断するように設定される。また、本発明の1つの実施形態に係る安全装置において、前記プロセッサーは、前記不一致を検出した場合の応答として、前記不揮発性メモリデバイスの代わりに前記バスを介して前記ホストデバイスに応答し、前記真正コピーを使用して前記ブートプロセスを完了するように設定される。また、本発明の1つの実施形態に係る安全装置において、前記プロセッサーは、前記ブートプロセスの進行とは別に、前記不一致を検出するように設定される。
【0010】
また、本発明の1つの実施形態に係る安全装置において、前記プロセッサーは、前記安全装置の内部メモリ、または前記安全装置の外部メモリに前記真正コピーを保持するように設定される。また、本発明の1つの実施形態に係る安全装置において、前記プロセッサーは、前記ブートプロセスの前記セキュリティが確認されるまで、前記ホストデバイスが所定の機密情報にアクセスするのを防ぐように設定される。
【0011】
また、本発明の1つの実施形態に係る安全装置において、前記プロセッサーは、前記不揮発性メモリデバイスの代わりに前記ホストデバイスに応答し、前記ブートプロセスの第一インスタンスと第二インスタンスとの間で前記バス上での前記ホストデバイスのアクティビティを異ならせるブートコードを前記ホストデバイスに提供し、前記バス上での前記ホストデバイスの前記アクティビティを監視し、前記アクティビティが前記ホストデバイスに提供された前記ブートコードと一致するかどうかを確認することによって、前記ブートプロセスの前記セキュリティを確認するように設定される。
【0012】
また、本発明の1つの実施形態に係る安全装置において、前記プロセッサーは、前記バスのチップセレクト(CS)ラインがアサートされていない間、前記バスのすべてのデータおよびクロックラインの論理状態が変化しないことを確保することによって、前記ブートプロセスの前記セキュリティを確認するように設定される。また、本発明の1つの実施形態に係る安全装置において、前記プロセッサーは、予め定義されたホワイトリストに表示されるバスコマンドのみが前記不揮発性メモリデバイスに適用されるように確保することによって、前記ブートプロセスの前記セキュリティを確認するように設定される。
【0013】
また、本発明の1つの実施形態に係る安全装置において、前記プロセッサーは、前記ブートプロセスにおける所定のリセット信号または電源信号から、所定のイベントまでの時間遅延が所定の範囲内であることを確保することによって、前記ブートプロセスの前記セキュリティを確認するように設定される。また、本発明の1つの実施形態に係る安全装置において、前記プロセッサーは、前記バスの前記少なくとも1つのラインのアナログパラメータ値が所定の範囲内であることを確保することによって、前記ブートプロセスの前記セキュリティを確認するように設定される。また、本発明の1つの実施形態に係る安全装置において、前記ブートコードは、前記バスに1つ以上のホストデバイスパラメーター値を出力するように前記ホストデバイスに指示し、前記プロセッサーは、前記バスに出力された前記ホストデバイスパラメーター値を監視及び検証することによって、前記ブートプロセスの前記セキュリティを確認するように設定される。
【0014】
本発明の実施形態に係る安全方法は、ホストデバイスと不揮発性メモリデバイスに加えてバスに接続される安全装置を使用して、前記バスを介して通信を行うことと、前記安全装置を使用して、前記ホストデバイスが前記不揮発性メモリデバイスからブートコードを取得するブートプロセスをバス上で検出し、前記ホストデバイスの前記ブートコードの少なくとも一部の真正コピーに基づいて前記ブートプロセスのセキュリティを確認することと、を含む。
【0015】
本発明の別の実施形態は、インターフェースとプロセッサーとを含む安全装置を提供する。このインターフェイスは、1つまたは複数の周辺デバイスに対応するバスに接続するように構成される。このバスには、周辺デバイスのための1つ以上の専用信号と、バスを介して周辺デバイス間で共有される1つ以上の共有信号と、を含まれる。プロセッサーは、周辺デバイスに加えて追加デバイスとしてバスに接続され、所定の周辺デバイスに関連付けられた専用信号を中断することによって、バスマスターデバイスが所定の周辺デバイスにアクセスしようとするトランザクションをバス上で中断するように設定される。
【0016】
いくつかの実施形態では、プロセッサ-は、トランザクションを中断しながら、バス上の共有信号を中断することなく保持するように設定される。
【0017】
1つの実施形態では、インターフェースは、バスマスターデバイスから専用信号を受信するための入力と、所定の周辺デバイスに専用信号を送信するための出力と、含み、プロセッサーは、入力に受信された専用信号が出力に送信されないようにすることで、トランザクションを中断するように設定される。また、いくつかの実施形態では、プロセッサーは、専用信号が中断されている間、所定の周デバイス器の代わりにバスマスターデバイスに応答するように設定される。 また、例示的な実施形態では、専用信号はチップセレクト(CS)信号を含む。
【0018】
開示される実施形態では、プロセッサーは、バスを監視することにより、中断されるトランザクションを検出するように設定される。別の実施形態では、プロセッサーは、バスの外部にある補助インターフェースを介してバスマスターデバイスと通信することにより、中断されるトランザクションを検出するように設定される。
【0019】
1つの実施形態では、プロセッサーは、リセットされるまで、専用信号を無期限に中断するように設定される。別の実施形態では、プロセッサーは、トランザクションを検出した後、限られた期間内で専用信号を中断するように設定される。1つの実施形態では、プロセッサ-は、トランザクションを中断することにより、1つ以上の周辺デバイスでトランザクションを中断させるように構成される。いくつかの実施形態では、プロセッサーは、トランザクションの中断後にバスの通常の動作を再開するように設定される。
【0020】
本発明の1つ実施形態によれば、インターフェースおよびプロセッサーを含む安全装置がさらに提供される。インターフェイスは、1つまたは複数の周辺デバイスに対応するバスに接続するように構成される。プロセッサーは、周辺デバイスに加えてバスに接続され、バスマスタデバイスが所定の周辺デバイスの代わりにバスマスターデバイスに応答することにより、バスマスターデバイスが所定の周辺デバイスにアクセスしようとするトランザクションを中断するように設定される。
【0021】
本発明の別の実施形態は、インターフェースとプロセッサーとを含む安全装置を提供する。このインターフェイスは、1つまたは複数の周辺デバイスに対応するバスに接続するように構成される。このバスには、周辺デバイスのための1つ以上の専用信号と、バスを介して周辺デバイス間で共有される1つ以上の共有信号と、を含まれる。プロセッサーは、所定の周辺デバイスに関連付けられた専用信号を中断し、専用信号が中断されている間にバスマスターデバイスに応答することにより、トランザクションを中断するように設定される。
【0022】
いくつかの実施形態では、所定の周辺デバイスはメモリデバイスを含み、プロセッサーは、トランザクションにおいて、バスマスターデバイスからのメモリデバイスからデータの読み取るリクエストを識別し、安全装置の内部的に保存されている代替データでリクエストに応答するように設定される。例示的な実施形態では、プロセッサーは、バスマスターデバイスがメモリデバイス内の所定のアドレスゾーンにアクセスするリクエストに代替データで応答することによって、トランザクションを中断するように設定される。
【0023】
別の実施形態では、プロセッサーは、トランザクション中に所定の周辺デバイスによってバスマスターデバイスに返されるデータに基づいて、バスマスターデバイスが所定の周辺デバイスにアクセスしようとするトランザクションを識別するように設定される。さらに別の実施形態では、プロセッサーは、トランザクションで使用されるコマンドコードに基づいて、バスマスターデバイスが所与の周辺デバイスへのアクセスを試みるトランザクションを識別するように設定される。
【0024】
本発明の一実施形態によれば、1つ以上の周辺デバイスに加えて追加デバイスとしてバスに接続された安全装置を使用してバスを介して通信することを含む安全方法も提供される。バスには、周辺デバイスに1つ以上の専用信号と、バスを介して周辺デバイス間で共有される1つ以上の共有信号と、を含まれる。安全装置を使用して、所定の周辺デバイスに関連付けられた専用信号を中断することにより、バスマスターデバイスが所定の周辺デバイスにアクセスしようとするトランザクションをバス上で中断される。
【0025】
本発明の1つの実施形態によれば、1つまたは複数の周辺デバイスに加えてバスに接続された安全装置を使用してバスを介して通信することを含む安全方法がさらに提供される。安全装置を使用して、特定の周辺デバイスではなくバスマスターデバイスに応答することにより、バスマスターデバイスが所定の周辺デバイスにアクセスしようとするトランザクションをバス上で中断される。
【0026】
本発明で説明される実施例は、インターフェースおよびプロセッサーを含む装置を提供する。そのインターフェースは、バスを介して通信するように構成され、プロセッサーは、バスマスタデバイスが無許可に周辺デバイスにアクセスを試みる時、バスの少なくとも1つのラインに強制的に1つまたは複数のダミー値を並行的に書き込むことによって、少なくとも一部のトランザクションを中断させるように設定される。
【0027】
1つの実施例では、プロセッサーは、バスのデータラインにダミー値を強制的に書き込むことによって、データラインを介して周辺デバイスに送信または周辺デバイスから受信されたそれぞれのデータ値の転送を中断させるように設定される。追加的または代替的に、プロセッサーは、バスのクロックラインにダミー値を強制的に書き込むことによって、トランザクションにおいて使用されるクロック信号を中断させるように設定される。さらに追加的または代替的に、プロセッサーは、バスのチップセレクトライン上にダミー値を強制的に書き込むことによって、バスマスタデバイスによる周辺デバイスの選択を中断するように設定される。
【0028】
一部の実施例では、バスは、デフォルト論理値を有するオープンドレインまたはオープンコレクタを備え、且つプロセッサーは、バスの少なくとも1つのラインにデフォルト論理値と相反するダミー値を強制的に書き込むように設定される。
【0029】
一部の実施例では、プロセッサーは、ダミー値を強制的に書き込むことによって、バスマスタデバイスまたは前記周辺デバイスの少なくとも1つのラインに書き込まれた対応値を上書き(override)するように設定される。1つの例示的な実施例では、プロセッサーは、バスマスタデバイスまたは周辺デバイスの駆動強度より強い駆動強度で、少なくとも1つのラインを駆動することによって、バスマスタデバイスまたは周辺デバイスによって書き込まれた前記対応値を上書きするように設定される。もう1つの実施例では、装置は、少なくとも1つの抵抗器を有し、その抵抗器は、少なくとも1つのラインに挿入され、バスマスタデバイスまたは周辺デバイスによって書き込まれた値を、ダミー値に応じて減衰させるように設定される。
【0030】
一部の実施例では、プロセッサーは、バスマスタデバイスと周辺デバイスの間の通信に使用されるバスの既存のラインのみにダミー値を強制的に書き込むように設定される。一部の実施例では、プロセッサーは、バスを監視することによって、中断させるべきトランザクションを検出するように設定される。1つの実施例では、プロセッサーは、バスの外部にある補助インターフェースを介してバスマスタデバイスと通信することによって、中断させるべきトランザクションを検出するように設定される。
【0031】
開示された1つの実施例では、プロセッサーは、装置がリセットされるまで、無制限にダミー値を強制的に書き込むように設定される。もう1つの実施例では、プロセッサーは、トランザクションを検出した後に、一定期間内にダミー値を強制的に書き込むように設定される。また1つの実施例では、プロセッサーは、トランザクションが中断された後に、前記バスの正常動作を再開するように設定される。
【0032】
本発明で説明される実施例は、さらに周辺デバイスと安全装置を備えるシステムを提供する。その周辺デバイスは、バスを介して1つまたは複数のバスマスタデバイスにアクセス可能であり、安全装置は、バスマスタデバイスが無許可に周辺デバイスにアクセスを試みる時、バスの少なくとも1つのラインに強制的に1つまたは複数のダミー値を並行的に書き込むことによって、少なくとも一部のトランザクションを中断させるように設定される。
【0033】
実施例によって、本発明はさらに1つの方法を提供する。その方法は、バスに接続された安全装置を使用し、バスマスタデバイスが無許可に周辺デバイスにアクセスを試みる時、トランザクションを中断させることを決定することと、バスの少なくとも1つのラインに強制的に1つまたは複数のダミー値を並行的に書き込むことによって、少なくとも一部のトランザクションを中断させることを含む。
【図面の簡単な説明】
【0034】
【
図1】
図1は、本発明の実施例による、複数のデバイスがI
2Cバスを介して通信する安全システムを概略的に示すブロック図である。
【
図2】
図2は、本発明の一実施形態による、I
2Cバスを介した周辺デバイスへのアクセスを保護する安全方法を概略的に示すフローチャートである。
【
図3】
図3は、本発明の代替実施形態による、複数のデバイスがSPIバスを介して通信する安全システムを概略的に示すブロック図である。
【
図4】
図4は、本発明の代替実施形態による、複数のデバイスがSPIバスを介して通信する安全システムを概略的に示すブロック図である。
【
図5】
図5は、本発明の代替実施形態による、複数のデバイスがSPIバスを介して通信する安全システムを概略的に示すブロック図である。
【
図6】
図6は、本発明の実施形態による、安全装置を概略的に示すブロック図である
【
図7】
図7は、本発明の実施形態による、ホストデバイスを安全に起動する方法(セキュアブートプロセスの一例)を概略的に示すフローチャートである。
【
図8】
図8は、本発明の実施形態による、安全装置がSPIバスを介してフラッシュメモリからホストデバイスのブートプロセスを保護する安全システムを概略的に示すブロック図である。
【
図9】
図9は、本発明の実施形態による、安全装置がSPIバスを介してフラッシュメモリからホストデバイスのブートプロセスを保護する安全システムを概略的に示すブロック図である。
【
図10】
図10は、本発明の実施形態による、安全装置がSPIバスを介してフラッシュメモリからホストデバイスのブートプロセスを保護する安全システムを概略的に示すブロック図である。
【
図11】
図11は、本発明の実施形態による、ホストデバイスを安全に起動する方法を概略的に示すフローチャートである。
【発明を実施するための形態】
【0035】
以下、本発明について、図に示す実施形態に基づいて説明する。
【0036】
本発明で説明される実施例は、バスインターフェースを介して周辺デバイスへのアクセスを確保するための改良された安全方法及び安全装置を提供する。周辺デバイスは、例えば、暗号エンジン、機密データを格納するメモリデバイス、またはバスを介してアクセス可能な他の適切なデバイスを含むことができる。
【0037】
開示された一部の実施例では、安全装置(security device)は、バス上のトランザクションを監視し、ホストデバイスまたはバスマスタデバイスが無許可に周辺デバイスにアクセスを試みるトランザクションを検出する。トランザクションは、任意の適切な基準または方針(policy)を使用して、許可または無許可なものとして分類することができる。
【0038】
無許可なトランザクションを検出する時、安全装置は、トランザクションと並行して、意図的にバスの1つ以上のラインまたは信号の値に、あるダミー値を強制的に書き込むことによって、トランザクションを中断させる。ダミー値を強制的に書き込むことは、例えば、クロック信号、データ信号及び/またはチップセレクト(Chip-Select)信号で実行することができる。
【0039】
バス上にダミー値を強制的に書き込むことによるトランザクションの中断は、I2Cなどのオープンドレインまたはオープンコレクタバス、SPIなどのプッシュプルバスなどが適している。トランザクションに並行してバス上にダミー値を強制的に書き込むことは、周辺デバイスへの及び/または周辺デバイスからの通信を中断し、及び/またはそれぞれのクロック信号を中断する。
【0040】
ここでは、I2CおよびSPIバス上の無許可なトランザクションを中断するためのいくつかの技術について説明する。そして中断後の正常動作を正常に再開するための技術についても説明する。一部の実施例では、安全装置は、バス上でトランザクションを検出することなく、またはバスを監視なしにトランザクションを中断することができる。例えば、安全装置は、このホストデバイスが許可されるまで、またはこのホストデバイスが許可されない限り、特定のホストデバイスのチップセレクト(CS)ライン上にダミー値を強制的に書き込むことができる。
【0041】
いくつかの実施形態では、例えば、SPIバスのうち安全装置によって保護されたバスは、周辺デバイス専用の1つ以上の専用信号と、バスを介して周辺デバイス間で共有される1つ以上の共有信号と、を含む。共有信号の例は、データおよびクロック信号である。専用信号の例は、CS信号である。いくつかの実施形態では、安全装置は、バス上の共有信号を中断せずに保持しながら、保護された周辺デバイスに関連付けられた専用信号を中断することによりトランザクションを中断するように構成される。ただし、すべてのバスに専用信号があるわけではないことに注意する必要がある。たとえば、I2Cでは、バス上のすべての信号は共有信号である。
【0042】
他の実施形態では、安全装置は、保護された周辺デバイスの代わりに、無許可のホストデバイスに応答することにより、トランザクションを中断するように構成される。例示的な実施形態では、周辺デバイスは、キー、構成データ、および/またはブートコードなどの機密データを格納するために割り当てられた、1つまたは複数のアドレスゾーンを含むフラッシュメモリを備える。フラッシュメモリのCS信号を選択的にオーバーライドすることにより、安全装置は、フラッシュメモリ内のデータへのアクセスをオーバーライドできる。代わりに、安全装置は、内部に保存されたデータでホストデバイスに応答する。 以下、このセキュアブートプロセスについて説明する。
【0043】
開示された技術は、トランザクション毎の処理レベル(transaction-by-transaction level)で、リアルタイムで周辺デバイスに対する安全な選択的なアクセスを提供する。本明細書で説明される技術の大部分では、トランザクションの識別および中断の両方が、バスの既存の信号を用いてのみ実行される。したがって、開示された技術は、追加のピンまたは相互接続を必要とせず、それによってシステム全体のサイズ及びコストを低減する。
【0044】
さらに他の開示される実施形態では、安全装置は、ホストデバイスのブートプロセスを保護するように構成され、ホストデバイスは、不揮発性メモリ(NVM)からバスを介してブートコードを取得する。たとえば、ホストデバイスはSPIバスを介してSPIフラッシュデバイスから起動できる。いくつかの実施形態では、安全装置は、ブートプロセス中にバスを監視し、ホストデバイスによって取得されたブートコードの少なくとも一部を既知の真正コピー、例えばブートコードイメージまたはダイジェストと比較する。もし、バスを介して取得したブートコードと安全装置が認識している既知の真正コピーとの不一致を検出された場合、レスポンシブアクションがトリガーされる。この技術により、安全装置は、さまざまなセキュリティ上の脅威、例えば、侵害されたホストデバイスまたはフラッシュデバイス、またはバス信号を経由した攻撃からシステムを保護できる。以下、セキュアブートプロセスのいくつかの実装例と変形例について説明する。
【0045】
I2Cバスで周辺デバイスへのアクセスを保護する安全方法
【0046】
図1は、本発明の実施例の安全システム20を概略的に示すブロック図である。本発明の実施例では、システム20は、I
2Cバス32に接続されたホストデバイス24及び周辺デバイス28を備える。ホストデバイス24及び周辺デバイス28は、簡潔にするためにホストデバイス及び周辺(peripheral)とも記載される。ホストデバイス24は、また、バスマスタデバイスと呼ばれることもある。
【0047】
安全装置36は、I2Cバス上のトランザクションを監視し、ホストデバイス24またはバスマスタ機能を有する他のデバイスが無許可に周辺デバイスにアクセスを試みるトランザクションを防止することによって、周辺デバイス28へのアクセスを保護する。安全装置36は、制御装置またはTPM(Trusted Platform Module)と記載されることもある。本発明の実施例では、安全装置36は、インターフェース40と、プロセッサー44と、メモリー48とを備え、インターフェース40は、I2Cバス32に接続され、プロセッサー44は、本発明の技術を実行するように設定され、メモリー48は、1つまたは複数のプロセッサー44が実行する安全方針(security policies)を格納するように構成される。
【0048】
プロセッサー44は、所定または設定された任意の方針に従って、トランザクションを無許可なものに分類することができる。一般的に、無許可なトランザクションは、周辺デバイス28にデータを書き込み、周辺デバイス28からデータを読み取り、周辺デバイス28に設定または命令を送信し、または他の適切な方法による周辺装置へのアクセスを試みることができる。安全装置36が実行する方針は、ポジティブ方針(例えば、ホワイトリスト)、ネガティブ方針(例えば、ブラックリスト)、デバイスアドレスまたは抵抗器のオフセット(register offset)に依存する方針、または他のタイプの方針を含むことができる。
【0049】
例えば、安全装置36は、ホストデバイスの周辺デバイス28へのアクセスが許可される前に、ホストデバイス24のアイデンティティ(identity)に対する認証を要求することができる。無許可なホストデバイスによって実行されたトランザクションは、無許可のトランザクションに判断される。その認証は、例えば、ホストデバイスと安全装置の間のチャレンジレスポンス方式(challenge-response process)を使用して実行することができる。追加的または代替的に、ホストデバイスは、他の適切な方法で自分のアイデンティティを証明し、または安全なブートプロセスを完成することが要求されることがある。
【0050】
さらに追加的または代替的に、幾つかのタイプのトランザクション(例えば、読み取りトランザクション)は許可されたものとして判断され、他のタイプのトランザクション(例えば、書き込みトランザクション)は無許可なものとして判断されることができる。さらにもう1つの実施例では、周辺デバイスの選択されたアドレスへのアクセスは許可されたものとして判断され、他のアドレスへのアクセスは無許可なものとして判断されることができる。別の実施例として、バス上のビットシーケンス(bit sequences)は無許可なトランザクションとして判断されることができる。
【0051】
一般的に、プロセッサー44は、許可されたトランザクションと無許可なトランザクションとを任意の適切な方法で判断することができる。メモリー48は、トランザクションが許可されているかを判断するための1つまたは複数の方針が格納されている。
【0052】
I2Cバス32は、シリアルデータ信号を伝達するシリアルデータ(SDA)ラインと、シリアルクロック信号を伝達するシリアルクロック(SCL)ラインとを備える。用語“ライン”及び“信号”は、本明細書では交換可能に使用される。SDAライン及びSCLラインを監視することによって、プロセッサー44はI2Cバス上のすべてのトランザクションを監視することができ、且つ無許可なトランザクションを検出することができる。
【0053】
無許可なトランザクションを検出した後、プロセッサー44は、I2Cバス32上のSDAライン及び/またはSCLラインに1つまたは複数のダミー値を強制的に書き込むことによってそのトランザクションを中断する。この機構は、I2Cバスのオープンドレイン/オープンコレクタ構造によって実現されることができる。通常的に、SDAライン及びSCLラインの両方は、プルアップ抵抗器を使用して、デフォルトで論理的な“1”の状態にプルアップされる。どのデバイスも、他のデバイスによって同時に書き込まれた値にかかわらず、いつでも“0”値を書き込むことによって、SDAラインまたはSCLラインの論理値を強制的に“0”に変わることができる。
【0054】
よって、一部の実施例では、無許可なトランザクションを検出すると、安全装置36中のプロセッサー44は、インターフェース40を介して、I2Cバス32のSDAラインまたはSCLライン上に論理値“0”(デフォルト論理値“1”と相反する値)を強制的に書き込む。本明細書では、“0”値はダミー値と見なされる。SDAラインに強制的に書き込まれた“0”値は、ホストデバイス24から周辺デバイス28に書き込まれた値、またはホストデバイス24によって周辺デバイス28から読み出された値、若しくはデフォルト論理値“1”などのすべてのデータ値を上書きする。SCLラインに強制的に書き込まれた“0”値は、クロック信号を停止する。上述のどちらの場合も、トランザクションは中断される。
【0055】
一部の実施例では、プロセッサー44は、例えば装置のパワーアップリセット(power-up reset)が実行されるまで、無制限に“0”値を強制的に書き込みを続ける。他の実施例では、プロセッサー44、中断から正常な回復を可能にする、即ち、ホストデバイス24及び周辺デバイス28が中断されたトランザクションから回復して正常動作を再開することを可能にする。一部のホストデバイス及び/または周辺デバイス28は、クロック停止から回復できない。よって、シンプルなホストデバイスや周辺デバイス28でも正常な回復が必要な場合は、SCLラインではなくSDAラインにダミー値を強制的に書き込むの方が良い。
【0056】
1つの実施例では、トランザクションが中断された後に通常の動作を再開するため、プロセッサー44は、バス上でI2C停止またはI2C再起動状態(I2C STOP or RESTART condition)を生成する。本明細書では、I2C停止またはI2C再起動状態は、バスがトランザクション開始可能であることを対象デバイスに示すバス信号値の任意のシーケンスを含むことができる。
【0057】
プロセッサー44、中断されたトランザクションからの正常に回復を可能にするために様々な技術を使用することができる。1つの実施例では、プロセッサー44は、一定時間内に強制的に“0”値を書き込み続けることは、無許可なトランザクションを中断するには充分であると見なされる。任意の長さの定義済みの時間も使用されることができる。例えば、SMBus仕様ではタイムアウトが25mSと定義される。したがって、SMBusとI2Cとの応用(applications of SMBus-over-I2C)では、タイムアウトをトリガ(trigger)するために、定義済みの時間を少なくとも25mSに設定するのが理にかなっている。
【0058】
別の実施例では、プロセッサー44は、SCLラインの論理値がHigh(即ち、トグルしていない(not toggling))に検出されるまで、一定時間内にSDAライン上に“0”値を強制的に書き込みを続ける。この状態は、ホストデバイスがトランザクションを終了または中止したことを示すことができる。プロセッサー44は、SDAラインを解放し、場合によってはI2C停止条件(I2C STOP condition)を生成することができる。
【0059】
周辺デバイス28から読み取ったトランザクションを中断させるのに有用なもう1つ実施例では、安全装置36を周辺デバイス28と同様なアドレスを有するI2Cスレーブとして構成される。安全装置36中のプロセッサー44は、“0”データを使用して、無許可の読み取り要求に応答する。周辺デバイス28は、プロセッサー44と並行的にこれらの読み取り要求に応答するが、そのデータ値は、安全装置36から送信された“0”値によって上書きされる。このプロセスは、例えば停止条件によってホストデバイスがトランザクションを中断するまで続く。注意すべきは、I2C仕様に従って、I2Cスレーブはデータ送信する時にACK/NEGACKビットを駆動しないことである。
【0060】
読み取りトランザクションと書き込みトランザクションの両方を中断するのに有用な他の実施例では、プロセッサー44がSDAライン上に強制的に“0”値を書き込むことである。次に、ホストデバイス24がこれを中断として識別していない場合に、ことトランザクションは、周辺デバイス28から送信されたデータではなく、バス上の“0”値を介して通常に停止する。ホストデバイス24がこの中断を検出し、(例えば、I2Cマルチマスタアービトレーション(multi-master arbitration)に対応する)且つこのトランザクションを中止する場合、プロセッサー44は、一般的に、SCLライン上で追加のクロックサイクルを生成することによって、ホストデバイス24によって中断されたトランザクションを引き続くことができる。プロセッサー44は、転送されている現在のバイトを補完し、停止状態(STOP condition)を発行することによってトランザクションを中止することができる。
【0061】
上述した中断及び回復の技術は、単純に例として示されている。代替の実施例では、安全装置36のプロセッサー44は、他の任意の適切な技術を介して、トランザクションを中断する及び/または中断から回復することもできる。
【0062】
上述の実施例では、無許可なトランザクションを検出、中断、及び中断からの回復の全ては、バスの既存のラインを介して実現される。代替の実施例では、安全装置36及びホストデバイス24は、バス32の外部にある補助インターフェースによって接続される。例えば、安全装置36及びホストデバイス24が同じICに統合され、ICのSDAピンとSCLピンを共有する場合に実現可能である。
【0063】
これらの実施例では、安全装置36及びホストデバイス24は、補助インターフェースを介して他のホストデバイスが周辺デバイス28にアクセスしないことを検証する。例示的な実施例では、ホストデバイス24が周辺デバイス28にアクセスする時、ホストデバイス24は補助インターフェースを介して安全装置36に通知する。その通知に応じて、プロセッサー44は、バスにダミー値“0”を書き込まない、且つトランザクションを実行させる。周辺デバイス28にアクセスするが、補助インターフェース上で報告されていないトランザクションを検出する時、プロセッサー44は、そのトランザクションが無許可なホストデバイスから送信されたものと見なし、強制的に“0”値を書き込むことによってそのトランザクションを中止する。
【0064】
図2は、本発明の実施例による、I
2Cバス32を介して周辺デバイス28へのアクセスを保護する方法を概略的に示すフローチャートである。この方法は、監視ステップ50において、安全装置36のプロセッサー44がインターフェース40を使用して、I
2Cバス32上のトランザクションを監視することから始まる。
【0065】
トランザクション検出ステップ54において、プロセッサー44は、ホストデバイス24が周辺デバイス28にアクセスしようとするトランザクションを識別する。チェックステップ58において、プロセッサー44は、トランザクションが許可されたか否かをチェックする。例えば、プロセッサー44は、このトランザクションがメモリー48に格納された安全方針に違反しているかをチェックすることができる。
【0066】
このトランザクションが許可されていれば、プロセッサー44は、許可ステップ62でトランザクションを正常に進める、一方、トランザクションが無許可であると判断された場合、プロセッサー44は、ステップ66でダミー値“0”をI2CバスのSCL及び/またはSDAラインに強制的に書き込むことによってこのトランザクションを中断する。
【0067】
SPIバス上で周辺デバイスへのアクセスを保護する安全方法
【0068】
図3は、本発明の代替の実施例による、安全システム(secured system)70を概略的に示す的ブロック図である。
図3に示されるように、システム70は、ホストデバイス74と、周辺デバイス78と、安全装置86とを含み、これらは、いずれもSPIバス82に接続される。
【0069】
ホストデバイス74が無許可に周辺デバイス78にアクセスしようとする時、安全装置86はそのトランザクションを識別して中断する。本発明の実施例では、安全装置86は、SPIバス82に接続するインターフェース90と、開示された技術を実行するように構成されたプロセッサー94と、1つまたは複数のプロセッサー94によって実行される安全方針を格納するように構成されたメモリー98とを含む。
【0070】
許可されたトランザクションと無許可なトランザクションとを区別する安全方針、及び安全装置86のプロセッサー94が無許可なトランザクションを識別する方法は、上述したシステム20と本質的に同様である。以下で説明される技術と上で説明された技術との区別は、安全装置86が無許可なトランザクションを中断するために、バス82上にダミー値を強制的に書き込むことである。
【0071】
SPIバス82は、クロック(CLK)ラインと、MOSI(Master-Out Slave-In)及びMISO(Master-In Slave-Out)と呼ばれる2本のデータラインを含む。CLK、MISO及びMOSIラインは、すべてのデバイス(本実施例中ではデバイス74、78及び86)に共通である。また、各スレーブデバイスは、専用のチップセレクト(CS)ラインを使用して選択可能である。本実施例では、ホストデバイス74は、CS2#に示されるCSラインを使用して周辺デバイス78を選択し、且つCS1#に示されるCSラインを使用して安全装置86を選択する。
【0072】
マスタであるホストデバイス74は、すべてのCSラインに接続される。一方、周辺デバイス78はスレーブであるため、各周辺デバイス78は専用のCSラインのみに接続される。一般的には、ホストデバイス74は、それぞれのCSラインを使用して、所要の周辺デバイス78を選択することによってトランザクションを開始し、次にCLK、MOSI及びMISOラインを使用してデバイスと通信する。MOSIラインは、ホストデバイス74から周辺デバイス78への送信に使用され、MISOラインは、周辺デバイス78からホストデバイス74への送信に使用される。
【0073】
安全装置86は、通常のSPIスレーブと異なり、スレーブとして定義されたことにもかかわらず、すべてのCSラインを駆動することができる。
図3に示すように、安全装置86のインターフェース90は、ホストデバイス74と並列的にCS2#ラインを駆動するように構成される。システム70がそれぞれのCSラインを有する周辺デバイス78を含む場合、安全装置86は、ホストデバイス74と並列的にいずれかのCSラインを駆動するように構成される。
【0074】
一部の実施例では、システム70は、ホストデバイス74及び安全装置86が相反する論理値でCSラインを駆動する時、安全装置86によって駆動された論理値がホストデバイス74によって駆動された論理値を上書きするように設定される。換言すれば、ホストデバイス74及び安全装置86が相反する論理値出CSラインを駆動する時、周辺デバイス78は安全装置86によって駆動される論理値を受信し動作する。
【0075】
CSライン(の信号)を上書きすることは、バス上のトランザクションを中断することによって、ホストデバイス74と周辺デバイス78の間の無許可なトランザクションを中断するもう1つの例である。上述の上書き機構は、様々な方法で実行することができる。以下の説明は、周辺デバイス78を選択する時に使用されるCS2#ラインに関するが、複数の周辺デバイス78及びそれぞれのCSラインを使用する場合、同じ機構も適用する。
【0076】
1つの実施例では、安全装置86によってインターフェース90内のCS2#ラインを駆動するラインドライバは、ホストデバイス74によってCS2#ラインを駆動するラインドライバより強い。代替的な実施例では、直列抵抗器100は、ホストデバイス74の出力でCS2#ラインに挿入されてもよい。抵抗器100は、安全装置86のCS2#ラインドライバの出力に対して、ホストデバイス74のCS2#ラインドライバの出力を減衰させる。さらに代替的には、安全装置86は、任意の他の適切な方法でCS2#ラインを駆動するホストデバイス74(の信号)を上書きするように構成することができる。
【0077】
安全装置86のプロセッサー94は、SPIバス82のCS#ライン、CLK、MISO及び/またはMOSIラインを監視することによって、任意の適切な方法で無許可なトランザクションを識別することができる。一部の実施例では、ホストデバイス74が無許可である周辺デバイス78にアクセスのトランザクションを識別する時、安全装置86のプロセッサー94は、周辺デバイス78のCSラインを無効にする(de-asserting)ことによってトランザクションを中断する。安全装置86は、ホストデバイス74がCS2#ラインにの駆動を上書きするように構成されるので、周辺デバイス78は選択解除され、トランザクションは中断される。一方、トランザクションが許可されることが確定すると、プロセッサー94は自分のCS2#ドライバを停止し、それによってホストデバイス74が中断することなく周辺デバイス78にアクセス可能になる。
【0078】
図4は、本発明のもう1つの実施例による、安全システム110を概略的に示すブロック図である。システム110はまた、
図3のシステム70と同様に、SPIバス82に基づいている。しかしながら、システム110では、CSライン(の信号)を上書きする代わりに、安全装置86は、CLKライン、MISOライン及び/またはMOSIライン上にダミー値を強制的に書き込むことによって、無許可なトランザクションを中断する。
【0079】
本実施例では、システム110は、安全装置86がCLKライン、MISOラインM及び/またはMOSIラインを駆動する時、ホストデバイス74(の信号)を上書きするように構成される。図面に示されるように、この目的を達成するため、直列抵抗器100をCLKライン、MISOライン及びMOSIラインに挿入される。本実施例でのCS2#ライン(の信号)は上書きされてないため、CS2#ラインに直列抵抗器を挿入しない。
【0080】
他の実施例では、安全装置86内のCLKライン、MISOライン及び/またはMOSIラインのラインドライバをホストデバイス74内の対応するラインドライバより強くすることによって、その上書き機構を実行することができる。
【0081】
他の実施例では、同時にCSライン(
図3に参照)及びCLKライン、MISOライン及び/またはMOSIライン(
図4に参照)(の信号)を上書きする混合方案(hybrid schemes)も実現可能である。
【0082】
専用のポイントツーポイント信号を無効にして周辺デバイスへのアクセスを保護する。
【0083】
バス(例えばSPIバス)信号は、共有信号と専用信号に分けられる。共有信号は、バス上の複数の(例えばすべての)周辺デバイスに並列に接続されている信号である。 共有SPI信号の例は、例えばデータ(MOSIおよびMISO)およびクロック(CLK)信号である。専用信号は、特定の周辺デバイス専用の信号である。バスの一部である専用信号の一例は、チップセレクト(CS)信号である。さらに、バスは帯域外の専用信号、たとえば、(周辺デバイスにメモリデバイスが含まれる場合)書き込み保護(WP)信号まで増強されることができる。専用信号は、ポイントツーポイント(PTP)ラインとも呼ばれる。
【0084】
いくつかの実施例では、1つまたは複数の専用信号が周辺デバイスに到達する前に安全86を通過するが、共有信号は従来のように周辺デバイスにルーティングされ、安全装置86を通過しない。以下に説明するように、この相互接続スキームにより、安全装置は周辺デバイスを効果的に保護することができる。
【0085】
図5は、本発明の実施形態による、安全システム130を概略的に示すブロック図である。安全システム130は、
図3の安全システム70と似ているが、CS2#信号は周辺デバイス78の入力を直接駆動しない。その代わりに、ホストデバイス74からのCS2#ラインが安全装置86に入力され、安全装置86は、周辺デバイス78の入力に接続されているCS2_O#信号を駆動する。
【0086】
この実施形態では、CS2#信号は、安全装置を介して保護された周辺デバイスに接続された専用PTP信号の一例として機能する。 図に示すように、ホストデバイス74と周辺デバイス78の間の共有信号(MOSI、MISO、およびCLK)は中断されることはない。
【0087】
安全装置86は、CS2#信号が周辺デバイスに到達することを選択的に可能にする、またはCS2#信号が周辺デバイスに到達するのを防止することにより、ホストデバイス74と周辺デバイス78間のトランザクションを中断するように構成される。上記選択的な操作は、
図5の制御信号MASK_CS2#をアサート(assert)またはディアサート(deassert)することによって実行される。
【0088】
図6は、本発明の一実施形態による
図5に示す安全システム130の安全装置86のブロック図である。この例では、安全装置86は、SPIバス82に接続するためのインターフェース90と、上記の開示された技術を実行するように設定されたプロセッサー94と、プロセッサー94によって実施される1つまたは複数のセキュリティポリシーを格納するように設定されたメモリ98とを備える。プロセッサー94は、スレーブインターフェース論理回路91と、インターフェースモニター論理(IML)92とを含む。 スレーブインターフェース論理回路91は、安全装置86とホストデバイス74との間の通信を処理するように構成される。 IML92は、ホストデバイス74の周辺デバイス78へのアクセスを監視、制御、及び選択的に上書きするように構成される。
【0089】
1つの実施形態では、安全装置86は、ホストデバイス74が無許可にSPIバス82上の周辺デバイス78にアクセスしようとするトランザクションを識別し、妨害させる。
図5および
図5に示すように、
図3で説明した安全システムの如何なる安全機能を
図5の安全システムにも実現することができる。
【0090】
上記の実施形態では、安全装置はバスに接続され、追加のスレーブデバイスとして機能するが、他の実施形態では、安全装置はマスターデバイスとして接続されてもよい。その場合、例えばマルチマスター機能をサポートするバスプロトコルに適用されてもよい。
【0091】
周辺デバイスの代わりに応答する安全装置による無許可なトランザクションに対する保護
【0092】
別の実施形態では、安全装置86は、周辺デバイス78に代わって選択されたホストデバイスのトランザクションに応答する。以下の説明は、主に
図1および
図2の構成を参照する。 上記の
図5と
図6は、単なる例である。一般に、開示された技術は、この特定のシステム構成に限定されず、他の構成、例えば上記の
図3または
図4の構成を使用して適用されてもよい。
【0093】
図5および
図6の構成に関連する例示的な実施形態では、周辺デバイス78のアドレス空間内の特定のアドレスゾーンから読み取りコマンドが検出されると、IML 92はCS2_O#の信号レベルを強制的に「High」にし、安全装置の内部メモリ98でホストデバイスの読み取りコマンド(または読み取りコマンドの一部)に応答する。ホストデバイス74は通常、応答が周辺デバイスからのものではないことを認識していない。いくつかの実施形態では、このシナリオは、
図4の安全システム110にも適用可能であり、例えば、MISO信号が安全装置によって上書きされる場合に適用される。
【0094】
このメカニズムの使用例の1つによる安全システムでは、周辺デバイス7はSPIフラッシュメモリデバイスを備える。そして、安全装置86は、フラッシュアドレス空間の一部を無効にすることで、そのアドレスゾーンに安全なフラッシュエミュレーションを提供するように構成される。例えば、安全装置86は、IML92を使用して、初期ホストデバイスブートコード(ブート時にホストデバイスによってフェッチされる最初のブートコマンド)を含むフラッシュアドレスゾーンを上書きするTPM(Trusted Platform Module)を備えてもよい。TPMは、自己完結型(self-contained)の認証済み初期ブートコードでフラッシュアドレスゾーンを上書きすることができる。たとえば、残りのコードにジャンプする前に認証する。
【0095】
一部の実施形態では、安全装置86は、SPIフラッシュデバイス用のマスターインターフェースをさらに備える。また、安全装置86は、システムブートプロセスの一部として、SPIフラッシュデバイスにアクセスしている間、ホストデバイス74をリセット状態に維持する適切なインターフェースおよび回路を備えてもよい。安全装置86は、例えば、組み込みコントローラ(EC)、スーパーI / O(SIO)またはベースボード管理コントローラ(BMC)デバイスであり得る。
【0096】
図7は、本発明の実施形態によるセキュアブートプロセスの一例を概略的に示すフローチャートである。この方法は、電源投入、つまりシステム電源のアサートから始まる。リセット維持ステップ100において、安全装置86は、ホストデバイス74をリセット状態に維持し、オプションでSPIフラッシュメモリ(周辺デバイス78)をアサートする。初期ローディングステップ104(オプション)において、安全装置86は、SPIフラッシュメモリからデータセグメントをロードし、データセグメントの真正性を検証し、それを内部メモリ98に保存する。
【0097】
上書きステップ108では、安全装置86は、IML92を設定して、SPIフラッシュ(周辺デバイス78)内の少なくとも1つの(例えば、ホストデバイス74の1つ以上のキー、構成データ、および/または初期起動データセグメントを格納する)所定のアドレスゾーンへのアクセスを上書きする。。
【0098】
リセット解除ステップ112では、安全装置86はホストデバイスをリセットから解除する。ブートステップ116では、ホストデバイス74はブートプロセスを開始する。ブートプロセスの一部として、ゾーンアクセルサブステップ120において、予め定義されたアドレスゾーンへのアクセスは、安全装置86によって内部メモリ98を介して処理される。
【0099】
このようにして、キー、構成データ、初期ブートコードなどの機密情報を安全装置から安全に提供できる。ホストデバイス74は、この情報がSPIフラッシュからではなく安全装置から提供されるという事実を認識することはない。
【0100】
図7の安全方法は、安全装置が周辺デバイスの予め定義されたアドレスゾーンへのアクセスを上書きする安全方法を示す例である。他の実施形態では、この目的のために他の適切な安全方法を使用することができる。また、SPIフラッシュデバイスを装われた時に、安全装置は、他の適切な方法で無許可なトランザクションを上書きおよび/または中断することにより、フラッシュデバイス(または他の周辺デバイス)を保護できる。
【0101】
さらに、不正なトランザクションの上書きは、特定の事前定義されたアドレスゾーンの保護に限定されない。例えば、保護されたペリフェラルから返されたデータまたはSPIコマンドコードに基づいて、上書きがトリガーされる場合もある。たとえば、安全装置は、セキュリティポリシーを実装して、フラッシュデバイスのプログラミング、消去、書き込みの有効化、ステータス/構成命令、および/またはその他の命令または機能を無効にすることができる。2015年8月24日にWinbond Electronics Co.、Ltd.より発行されたドキュメント「デュアル/クワッドSPIおよびQPIを備えたSPI 3Vフラッシュメモリ」には、SPIフラッシュメモリの命令と制御の仕様例について記載されている。
【0102】
別の例として、
図7の安全方法では、機密情報はフラッシュデバイスに常駐し、ブートプロセスの一部として安全装置によって読み取られる。他の実施形態では、機密情報は最初から安全装置に(フラッシュメモリに加えて、またはフラッシュメモリの代わりに)保存されてもよい。その場合、この情報をフラッシュデバイスから安全装置に読み取る必要はない。
【0103】
さらに別の実施例では、
図7に示すように、SPIバスを使用したる安全方法に関して説明されている。他の実施形態では、安全装置は、バスの専用信号(もしあれば)および/または共有信号を使用して、他のバスおよびプロトコルを介した周辺デバイスの予め定義された所定のアドレスゾーンへのアクセスを上書きする。たとえば、I
2Cバスはプルアップ双方向バスであり、複数のスレーブデバイスと複数のマスターデバイスをサポートするように設計されている。そのため、プロトコルにはデバイス間の競合を処理するためのメカニズムが組み込まれている。例えば、I
2Cデバイスが「1」(プルアップ)を設定しようとしてSDAラインで「0」を検出すると、デバイスは競合を想定し、次のトランザクションまでバスを解放する。一実施形態では、I
2C安全装置(例えば、
図1のデバイス36)は、別の周辺スレーブ(例えば、
図1のデバイス28)のアドレス空間の一部と重複するように構成される。例えば、安全装置は、他の周辺デバイスから期待されるデータと同じデータに応答するように構成できる。もし、安全装置がデータの不一致を検出した場合たとえば、SDAラインで「1」をプルアップしようとしたが「0」を検知した場合)、レスポンシアクション(停止条件の生成、1つ以上のデータライン上で「0」で駆動、無限クロックストレッチを設定、またはその他の適切なアクション)を開始することができる。この技術は、従来のI2Cスレーブデバイスを使用して(物理層でハードウェアを変更することなく)、データレベルまでデバイスを監視できる。
【0104】
さらに別の実施形態では、安全装置86(ILM92を使用)は、SPIアドレスのデータフェーズも監視する。データの不一致を検出すると、安全装置は、たとえば、トランザクションの切断、システムのリセット、キーへのアクセスのロック、またはその他の適切なアクションによって、レスポンシアクションを開始する。
【0105】
例示的なシナリオでは、安全装置86は、SPIフラッシュに格納された特定のコードセクションの署名(signature)またはダイジェストを保持する。安全装置は、バックグラウンドでこのコードセクションの署名またはハッシュを計算しながら、SPIフラッシュへのホストデバイス74のアクセスを監視する。間違った署名、ハッシュ、またはSPIフェッチシーケンスが検出された場合、安全装置86は適切なレスポンシアクションを開始できる。
【0106】
さらに別の実施形態では、安全装置は、バス82上の複数の周辺機器78を監視し、例えば、異なるデバイスへのアクセス順が予想通りかどうかを検証することができる。
【0107】
さらに別の実施形態では、安全装置86は、(CS以外の)1つ以上の信号を使用して、周辺デバイス78へのアクセスを制限するか、特定のシステム状態を強制する。非限定的な例として、以下のような信号を含む。
【0108】
・
図4の安全システムを参照して説明したいずれの信号。
【0109】
・フラッシュメモリの書き込み保護(write-protect)信号。
【0110】
・リセット信号の制御。
【0111】
・電源管理(power management)信号の制御。
【0112】
・1つ以上のデバイスの電源の制御。
【0113】
・システム通信の無効化(たとえば、ネットワークインターフェイスコントローラー(NIC)を無効にする。
【0114】
・システムのリセット。
【0115】
SPIバスを監視する安全装置による、フラッシュメモリからのホストデバイスの安全起動
【0116】
上述の実施形態では、ブートプロセスを保護するために、フラッシュメモリに代わって安全装置がホストデバイスにブートコードを提供する。以下で説明する他の実施形態では、ホストデバイスは、バス、たとえば、SPIバスを介してフラッシュメモリからそのブートコードを取得する。 安全装置は、バス上のホストデバイスのメモリアクセストランザクションを監視することにより、ブートプロセスを保護する。安全装置は、ホストデバイスのートコードおよび/またはそのダイジェストの少なくとも一部の真正コピーを保持またはアクセスする。安全装置は、(必要に応じてダイジェストを計算した後)ホストデバイスがフラッシュメモリから取得したブートコードと真正コピーを比較し、不一致を検出するとレスポンシアクションを開始する。
【0117】
開示された技術により、安全装置は、さまざまなセキュリティ脅威、例えば、侵害されたホストデバイスまたはフラッシュデバイス、またはバス信号への攻撃から保護することができる。以下の説明では、例としてSPIバスとSPIフラッシュメモリについて説明するが、開示された技術は、他の適切なバスおよび他の適切な不揮発性メモリ(NVM)に同様の方法で適用可能である。
【0118】
様々な実施形態において、真正コピーは、ブートコードの少なくとも一部の真正イメージ、すなわち、1つ以上のブートコード命令のリストを含む。イメージ内の命令の順序は、ブートコードでの表示順、ブートコードが実行されるときの(必ずしも順序ではない)実行順、またはその他の順序である場合がある。他の実施形態では、本物のコピーは、ブートコードの少なくとも一部の本物のダイジェストを含む。ダイジェストは、ブートコードの適切な部分、またはブートコード全体で計算された適切な関数を含むことができる。ダイジェストには、ブートコードの適切な部分で計算された適切な関数、またはブートコード全体が含まれてもよい。例示的な実施形態では、ダイジェスト(署名とも呼ばれる)は、ハッシュ値または署名付きハッシュ値(signed hash value)を含んでもよい。本発明では、ダイジェストとは、たとえば、SHA-256のようなセキュアハッシュアルゴリズム、HMAC / CMACのようなスキームを使用したコード署名、または他の適切なアルゴリズムを指す。
【0119】
また、「真正」という用語は、イメージまたはダイジェストが破損していなく、信頼性が高いため、信頼することができることを意味する。明確に説明するために、真正イメージまたは真正ダイジェストは、ホストデバイスのブートコードの少なくとも一部の「真正コピー」と呼ばれる。以下の例では、真正コピーは安全装置の不揮発性メモリに内部的に保存されている。また、他の実施形態では、真正コピーは、安全装置の外部の不揮発性メモリに保存されてもよい。後の実施形態では、真正コピーには、安全装置に保存されている適切なセキュアキーによって署名されてもよい。
【0120】
以下の構成は、一例として、クロック信号CLK、チップセレクト信号CS#、および4つのデータラインD0~D3を持つSPIバスを参照している。他のバスタイプでは、ラインの数とタイプが異なる場合があります。 たとえば、単一のデータ回線SPIでは、回線数が少なくなる場合がある。本発明は任意のタイプのバズで実現できる。
【0121】
図8は、本発明の実施形態による安全システム140のブロック図であり、安全システム140の安全装置156は、ホストデバイス144がSPIバス152を介してフラッシュメモリ148からブートプロセスを読み取ることを保護する。安全装置156は、SPIバス152に接続するためのインターフェース160と、本明細書で説明される安全方法を実行するためプロセッサー164とを備える。プロセッサ164―は、ホストデバイス144のブートコードの少なくとも一部の真正コピー168(例えば、イメージまたはダイジェスト)を保持するか、アクセスする。本実施形態では、フラッシュデバイス148を選択するためのチップセレクト(CS#)ラインも、安全装置156への入力として提供される。
【0122】
図9は、本発明の実施形態による安全システム170のブロック図であり、安全システム170の安全装置174は、ホストデバイス144がSPIバス152を介してフラッシュメモリ148からブートプロセスを読み取ることを保護する。安全装置174は、SPIバス152に接続するためのインターフェース178と、本明細書で説明される安全方法を実行するためプロセッサー182とを備える。プロセッサー182は、ホストデバイス144のブートコードの少なくとも一部の真正コピー186(例えば、イメージまたはダイジェスト)を保持するか、アクセスする。この実施形態では、SPIバス152のすべてのライン(本実施例では、4つのデータラインD0~D3、クロックラインCLK、およびフラッシュデバイス148を選択するためのCS#ラインを含む)が安全装置174への入力として提供される。
【0123】
図10は、本発明の実施形態による安全システム189のブロック図であり、安全システム189の安全装置187は、ホストデバイス144がSPIバス152を介してフラッシュメモリ148からブートプロセスを読み取ることを保護する。安全装置187は、本明細書で説明する方法を実行するハードウェアおよび/またはソフトウェアモジュールであるSPIバスモニター188を備える。また、安全装置は、ホストデバイス144のブートコードの少なくとも一部の真正コピーを保持するメモリ(図示されず)をさらに含む。
【0124】
図10の例では(上記の
図8および9の例とは対照的に)、SPIバスのフラッシュ CS#ラインが安全装置187を通過するようになっているため、安全装置187は、ホストデバイス144とフラッシュ148の間で信号を切断および/または変更することができる。この例では、データライン(D0…D3)、クロックライン(CLK)、およびフラッシュデバイス148を選択するためのCS#ラインは、すべて安全装置187を通過するため、ホストデバイスをフラッシュデバイスから切断せずに、SPIバスモニターに送られる対応する信号分岐を切断することが困難である。データおよびクロックラインは中断されないが、CS#ラインはSPIバスモニター188によって変更できる。例えば、SPIバスモニタ188は、バスを介して検索されたブートコードが真正コピーと一致しない場合、CS#ラインをデアサート(例えば、Highに設定)し、ブートプロセスを中断させる。
【0125】
図11は、本発明の一実施形態による、フラッシュデバイス148からホストデバイス144を安全に起動する安全方法を概略的に示すフローチャートである。本方法の変形は、本明細書に記載されている安全装置(たとえば、
図8、9と10に示される安全装置156、174と187)のいずれかによって実行することができる。簡潔に説明するために、「安全装置によって」実行されるアクションは、実際には、安全装置のプロセッサー、たとえばプロセッサー164または182、またはSPIバスモニタ188によって実行される。
【0126】
図11に示す安全方法は、まず、リセット保持ステップ190において、安全装置はホストデバイス144をリセット状態に保持する。次に、コピー取得ステップ194において、ホストデバイスがリセット状態になると、安全装置は、ホストデバイスのブートコードの少なくとも一部(イメージやダイジェストなど)の真正コピーを取得する。真正コピーが外部メモリから取得され、署名されている場合、安全装置は通常、続行する前にこのコピーの信頼性を検証する。他の実施形態では、例えばシステム生産中またはシステムがエンドユーザーに提供される前の他の段階で、真正コピーを安全装置に事前にプログラムすることができる。その場合、ステップ190および194は省略されてもよい。
【0127】
次に、ブート開始ステップ198において、安全装置はリセット状態からホストデバイス144を解放し、ホストデバイスはブートを開始する。ブートプロセスにおいて、ホストデバイス144はSPIバス152を介してフラッシュデバイス148からブートコードを取得し、取得されたブートコードを実行する。
【0128】
ホストデバイスのブートプロセス中、監視および比較のステップ202において、安全装置はバスを介して転送されるデータを監視し、取得するブートコードの少なくとも一部を抽出し、このコードを真正コピーと比較する。
【0129】
一実施形態では、安全装置は、ホストデバイスがアクセスしている(ブートコード用のアドレスとして指定される)アドレスを識別することにより、ブートプロセスに関連するトランザクションを識別することができる。
【0130】
一実施形態では、真正コピーがブートコードの一部のイメージを含む場合、安全装置は通常、バスを介して検索された生のデータ値(raw data values)を真正コピーに対応するデータ値と比較する。また、真正コピーがブートコードの一部のダイジェストを含む場合、安全装置は通常、バスを介して取得したコードのダイジェストを計算し、計算されたダイジェストを真正コピーと比較する。
【0131】
一致性チェックステップ206において、安全装置は、ホストデバイスによってフラッシュデバイスから取得されている(SPIバスの監視から抽出される)ブートコードが真正コピーと一致するかどうかをチェックする。一致する場合、安全装置は、成功完了ステップ210において、ブートプロセスが正常に完了することを許可する。一方、一致しない場合、すなわち、不一致が検出された場合、安全装置は、対策開始ステップ214において、ブートプロセスが危険にさらされたと想定し、適切なレスポンシアクションを開始する。
【0132】
図11は、概念を明確にするために純粋に描かれているフローの例である。他の実施形態では、他の任意の適切なフローを使用することができる。 たとえば、安全装置が必ずしもホストデバイスをリセット状態に保持する必要がない。他の実施形態では、例えば、安全装置は、ホストデバイスのブートプロセスが開始される前または後に、ホストデバイスをストールさせることなく真正コピーを取得してもよい。
【0133】
また、場合によっては、SPIバス上のトランザクションから抽出されたブートコードの少なくとも一部のダイジェストを計算するときに、ダイジェストがシステム状態またはその他のパラメーターの影響を受ける場合がある。そのため、ダイジェストは2つ以上の異なる真正コピーと合法的に一致する場合がある。 したがって、いくつかの実施形態では、安全装置は、ダイジェストの複数の異なる真正コピーを保持するようになっている。そして、安全装置は、バスから抽出されたコードから計算されたダイジェストを複数の真正コピーと比較する。計算されたダイジェストが真正コピーのいずれかと一致する場合、安全装置はブートプロセスの完了を許可する。一方、計算されたダイジェストがどの真正コピーとも一致しない場合、安全装置はレスポンシブアクションをトリガーする。
【0134】
様々な実施形態では、安全装置は、一致性チェックステップ206で不一致を検出すると、様々なレスポンシアクションを実行または開始することができる。レスポンシアクションのいくつかの非限定的な例を以下に示す。
【0135】
・システムのリセットをトリガーする
【0136】
・SPIバス152の少なくとも1つのラインで1つ以上のダミー値を強制的に書き込むことにより、ブートプロセスを中断する。本明細書に記載された中断技術のいずれも適用できる。
【0137】
・ホストデバイスとNVMデバイス間のSPIバスの1つ以上のライン、たとえばフラッシュCS#信号を中断することにより、ブートプロセスを中断する。
【0138】
・ホストデバイスとNVMデバイス間のSPIバスの1つまたは複数のラインの信号を上書きする。つまり、バス上で元の信号と矛盾する信号を強制的書き込む。
【0139】
・フラッシュデバイスの代わりにSPIバスを介してホストデバイスに応答し、真正コピーを使用してブートプロセスを完了する。
【0140】
・ホストデバイスが安全装置のリソース(たとえば、安全装置に保存されている特定の秘密情報)にアクセスできないようにする。
【0141】
・内部メモリ(RAMやOTPなど)にアラートまたはエラーログイベントを記録するか、アラートを発行する。
【0142】
・その他の適切なレスポンシアクションまたはアクションの組み合わせ。
【0143】
いくつかの実施形態において、安全装置は、オンザフライ(on-the-fly)で、すなわち、ブートプロセスがまだ進行中に、(検索されたブートコードと真正コピーとの間の)不一致を検出する。これらの実施形態では、例えば、ブートプロセスを中断させるレスポンシアクションが効果的である。
【0144】
他の実施形態では、安全装置は、オフライン(例えばバックグラウンド)で不一致を検出する。ここの「オフライン」とは、安全装置がブートプロセスの進行とは別に不一致を検出することを意味する。そのため、不一致の検出はブートプロセスのクリティカルパスにはなく、ブートプロセスによる起動時の遅延にほとんどまたはまったく影響を与えない。オフラインでの不一致の検出は、ブートプロセスが完了した後、またはブートプロセスの進行と並行または準並行して実行される。これらの実施形態では、安全装置は通常、真正コピーとオフラインで比較するために、取得されたブートコード(の少なくとも一部)をメモリバッファに保存する。また、安全装置は、オフラインで不一致を検出するために、ホストデバイスをリセット状態に保持したり、停止させたりする必要はない。
【0145】
いくつかの実施形態では、安全装置は、ブート中に許可されるSPIコマンドの構成可能な「ホワイトリスト」を保持するか、アクセスできる。バスを監視する際、安全装置はホワイトリストに従ってたとえば、リストに表示されるコマンドのみが実際にフラッシュデバイスに到達するように、SPIコマンドをフィルター処理する。このリストは、コマンドのタイプやアクセスされるアドレスを制限できる。たとえば、指定されたアドレス範囲内からの読み取りコマンドは許可されるが、書き込みコマンド、または指定されたアドレス範囲外の読み取りコマンドは禁止される。
【0146】
図1、3~6.8~10に示す安全システム20、70、110、130、140、170、189の構成、及びさまざまな安全装置やバスなどのさまざまなシステムの構成は、単に概念を明確にするために描かれた構成例である。代替実施形態では、任意の他の適切な構成を使用することができる。
【0147】
図では、わかりやすくするために、単一の周辺デバイスと単一のホストデバイスのみを示しているが、いくつかの実施形態では、安全システムは、2つ以上の周辺デバイスおよび/または2つ以上のホストデバイスを備えてもよい。本明細書で説明される実施形態は、例としてI2CおよびSPIバスに言及しているが、帆本発明はこれに限定されない。必要に応じて、他の適切なタイプのバスで本発明を実施することができる。
【0148】
上記のように、安全装置はSPIバス上のスレーブとして構成できる。しかし、開示された実施形態では、安全装置は、ホストデバイスからそうするように要求されていなくても、ブートプロセスを保護することができる。さらに、いくつかの実施形態では、安全装置は、ブートプロセス中に1つまたは複数の「ネガティブテスト」を実行する。たとえば、安全装置は、CS#ラインがアサートされていない間(たとえば論理High)に、データラインまたはクロックラインのいずれかの論理状態が変化する(「トグル」)かどうかを確認できる。一部の安全システムでは、ブート時にフラッシュデバイスが選択されていない場合、SPIラインは論理Highと論理Lowの間で変化ないはずである。たとえば、他のSPIスレーブがバス上にないため、または他のスレーブが存在する場合でも、ブート時にアドレス指定されることは想定されていないため、CS#がアサートされていない(Low)ときにデータまたはクロックラインがトグルする場合は、攻撃されていることを示している可能性がある。安全装置は、この表示を使用して適切なレスポンシアクションをトリガーできる。
【0149】
安全装置が実行できる別の整合性チェックは、タイミング整合性チェックである。一実施形態では、安全装置は、ブートプロセスにおける所定のリセット信号または電力信号から所定のイベントまでの時間遅延が所定の範囲内にあるかどうかを検証できる。たとえば、安全装置は、システムリセットからSPIバス上の最初のアクセスコマンドの出現までの時間遅延を測定できる。もし、この時間遅延が事前定義された範囲内にない場合(たとえば、通常よりも長いまたは短い場合)、安全装置はバスが改ざんされたと見なし、適切なレスポンシアクションをトリガーする。別の実施形態では、安全装置は、ホストデバイスが所定期間内にブートシーケンスを終了すべきであると仮定して、リセットが解放された後のこの期間にホストデバイス検索画像またはダイジェストをチェックし得る。
【0150】
また、安全装置は、SPIバスの少なくとも1つのラインのアナログ電気パラメータ値を測定し、アナログパラメータ値が所定の範囲外にあった場合に適切なレスポンシアクションをトリガーできる。上記目的に使用できるアナログ値は、たとえば、SPIバスの1つ以上のラインの静電容量、伝播時間、またはLRC遅延である。いくつかの実施形態において、アナログ電気パラメータは、対応するラインがホストデバイスまたはバス上の他のデバイスによって駆動されない場合、例えばホストデバイスに電力が供給されない、またはリセット状態に保持される場合に測定される。この種の技術は、例えば、その開示が参照により本明細書に組み込まれる米国特許第7,797,115号に記載されている。また、バス信号のアナログパラメータ値を測定するために、他の適切なセンシング技術を使用できる。一実施形態では、既定のアナログパラメータの所定の範囲(例えば、SPIバスの既定のラインにおいて正常とみなされる静電容量値の範囲)は、システム製造中に決定され、不揮発性メモリに格納される。起動中に、安全装置は問題のあるパラメーターの現在値を測定し、測定された値が許可された定義済みの範囲内にあるかどうかを確認する。
【0151】
セキュリティーをさらに高めるために、ホストデバイス、安全装置、およびNVMデバイス間のSPI信号の物理的なレイアウトとルーティングに関して、特定のガイドラインに従うことができる。たとえば、システムがプリント基板(PCB)に実装されている場合、次のガイドラインによりSPIバスが攻撃されにくくなる。
【0152】
・ホストデバイスと安全装置にボールグリッドアレイ(BGA)タイプのパッケージを使用する。
【0153】
・PCBの内側の層、つまり外部から直接アクセスできない層でSPI信号をルーティングする。
【0154】
・SPI信号のルーティングにビアホール(「ビア」)を使用する場合は、(内部層間を接続し、外部からアクセスできない)「ブラインドビア」を使用する。
【0155】
・安全装置をホストデバイスのSPIピンにできるだけ隣接して配置する。
【0156】
セキュリティーをさらに強化するために、ブートコードを設定してSPIバスにデータを出力し、安全装置でこのデータを検証できる。たとえば、ブートコードは、ホストデバイスレジスタ、構成、状態変数、定数、OTPビット、および/または他の適切なホストデバイスパラメータ値の一部を出力できるため、バスをスヌーピング(snooping)ことにより、安全装置によって検証できる。いくつかの実施形態では、ホストデバイスパラメータ値はコードイメージ/ダイジェストの一部として扱われ、他の実施形態では、ホストデバイスパラメータ値は参照データまたはダイジェストの別個の真正コピーを有する。
【0157】
一部の実施形態では、安全装置は、NVMの代わりにホストデバイスに応答し、特に、NVMの代わりにホストデバイスにブートコードの真正なコピーを提供することにより、ブートプロセスのセキュリティーを確認する。一実施形態では、SPIバス上のホストデバイスのアクティビティをブートプロセスの異なるインスタンス間で異なるようにするという意味で、安全装置によって提供されるブートコードは可変である。ブートコードは、必ずしもブートプロセスのすべてのインスタンスで異なるホストデバイスアクティビティを引き起こす必要はないが、少なくとも選択されたインスタンスで異なるホストデバイスアクティビティを引き起せばよい。バス上のホストデバイスのアクティビティを監視することにより、安全装置は、現在のブートプロセスのインスタンスでホストデバイスによって実行されているブートコードが、安全装置によってホストデバイスに提供されたブートコードと一致するかどうかを確認できる。
【0158】
上記の実施形態では、安全装置は、バス上で検出可能なホストデバイスアクティビティの変化を引き起こす任意の適切なコードを提供してもよい。たとえば、安全装置は、実行フローに影響を与えることなく、少なくとも1つのコード値を変更することでブートコードイメージを操作できる。 コード値は、例えば専用のコード定数値にすることができる。この操作の結果、ホストデバイスによって実行されるブートコードは、コード値に依存する値をバスに出力する。(したがって、安全装置に既知の方法でブートプロセスの1つのインスタンスと異なる場合がある)。安全装置は、バスから上記値を読み取り、その値が現在のインスタンスでホストデバイスに提供されたブートコードと一致するかどうかを確認する。出力値は、例えば、コードの自己チェックされたダイジェスト、値自体、またはそれらの任意の機能を含み得る。あるいは、出力値は、ホストデバイスおよび安全装置にとって既知の共有秘密に依存することができる。
【0159】
他の実施形態では、ブートコードは、バス上のホストデバイスアクティビティを出力値に関係しない他の点で異ならせることができる。たとえば、ブートコードにより、ホストデバイスはブートプロセスの異なるインスタンスのイベント間で異なる遅延を示すことができる。このような異なる遅延は、たとえば、安全装置が異なるブートプロセスインスタンスのブートコードに異なる数のNOP命令を挿入することで実現できる。この例では、安全装置は遅延を測定し、実際の遅延が(現在のブートプロセスインスタンスに挿入された実際のNOP命令の数から予想される)遅延と一致するかどうかを確認する。あるいは、安全装置は、挿入されたすべてのNOP命令が読み取られたことを確認するか、または別の代替方法では、バス上のブートコードのダイジェストを測定し、それをその真正コピーのダイジェストと比較する。違いが安全装置によって検出可能であれば、ホストデバイスアクティビティの他の適切な違いを利用することもできる。
【0160】
システム20、70、110,130,140、170及び189の異なる要素は、ASIC(Application-Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)などの任意の適切なハードウェアを使用して実行することができる。一部の実施例では、安全装置36及び86の幾つかの構成要素、例えば、プロセッサー44またはプロセッサー94は、ソフトウェアを使用して、またはハードウェア要素とソフトウェア要素の組み合わせを使用して実行することができる。メモリー48、98、および
図8~
図10に示すブートコードの真正コピーを保持するメモリは、RAM(Random Access Memory)またはフラッシュメモリー(Flash memory)などの任意の適切なタイプのメモリーデバイスを使用して実行することができる。
【0161】
一部の実施例では、プロセッサー44、94、164及び/またはプロセッサー182は、本明細書で説明する機能を実行するようにソフトウェアでプログラムされた汎用プログラマブルプロセッサーを備える。ソフトウェアは、例えば、ネットワークを介して電子形式でプロセッサーにダウンロードすることができ、あるいは、磁気的、光学的、または電子的メモリーなどの非一時的な有形の媒体に提供及び/または格納することができる。
【0162】
上述の実施例では、安全装置はまずバスを監視することによって無許可なトランザクションを検出し、その後トランザクションを中断する。代替的な実施例では、安全装置は、バス上で最初にそのトランザクションを検出することなく、またはバスを全く監視することなく、トランザクションを中断することができる。例えば、安全装置はこのホストデバイスが許可されるまで、またはそのホストデバイスが許可されない限り、特定のホストデバイスのチップセレクト(CS)ラインを無効にすることができる。この許可は、必ずしも同じバスを使用するではなく、任意の適切な方法で実行することができる。
【0163】
非限定的な例として、本明細書に記載の方法及びシステムは、安全メモリーアプリケーション(secure-memory applications)、IoT(Internet-of-Things)アプリケーション、組み込みアプリケーション(embedded application)または自動車アプリケーション(automotive application)などの様々なアプリケーションで使用することができる。
【0164】
よって、理解されるべきことは、上述の実施例は、一例として引用されたものであり、本発明は、特に上で示され説明されたものに限定されないことである。むしろ、本発明の範囲は、上述した様々な特徴の組み合わせ及び部分的な組み合わせ、ならびに前述の説明を読むことによって当業者に想到し得る変形および修正の両方を含む。本特許出願において参照により援用される文書は、本明細書において明示的または暗示的になされた定義と矛盾するとき、これらの組み込まれた文書で定義される用語を除いて、本明細書の定義を考慮する必要がある。
【符号の説明】
【0165】
10、70、110、130、140、170、189…安全システム
24、74、144…ホストデバイス
148…フラッシュメモリ
82、152…SPIバス
40、90、160、178…インターフェース
44、94、164、182…プロセッサー
168、186…真正コピー
36、86、156、174、187…安全装置
188…SPIバスモニター
28、78…周辺デバイス
32…I2Cバス
48、98…メモリー
91…スレーブインターフェースロジック
92…インターフェースモニターロジック
S100、104、108、112、116、120、190、194、198、202、206、210、214、62、66、50、54、58…ステップ