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

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

▶ 新唐科技股▲ふん▼有限公司の特許一覧

特許7112449強制自己認証機能を備えたコンピューターシステム
<>
  • 特許-強制自己認証機能を備えたコンピューターシステム 図1
  • 特許-強制自己認証機能を備えたコンピューターシステム 図2
  • 特許-強制自己認証機能を備えたコンピューターシステム 図3
  • 特許-強制自己認証機能を備えたコンピューターシステム 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-26
(45)【発行日】2022-08-03
(54)【発明の名称】強制自己認証機能を備えたコンピューターシステム
(51)【国際特許分類】
   G06F 21/57 20130101AFI20220727BHJP
   G06F 21/64 20130101ALI20220727BHJP
【FI】
G06F21/57 350
G06F21/64
【請求項の数】 8
(21)【出願番号】P 2020071381
(22)【出願日】2020-04-11
(65)【公開番号】P2021034011
(43)【公開日】2021-03-01
【審査請求日】2020-04-11
(31)【優先権主張番号】16/541,218
(32)【優先日】2019-08-15
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508197206
【氏名又は名称】新唐科技股▲ふん▼有限公司
(74)【代理人】
【識別番号】100102923
【弁理士】
【氏名又は名称】加藤 雄二
(72)【発明者】
【氏名】ユヴァル キルシュナー
【審査官】局 成矢
(56)【参考文献】
【文献】特開2008-112443(JP,A)
【文献】特開2013-069053(JP,A)
【文献】特開2019-109842(JP,A)
【文献】特開2001-265460(JP,A)
【文献】特表2008-527565(JP,A)
【文献】米国特許出願公開第2004/0025036(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
G06F 21/64
(57)【特許請求の範囲】
【請求項1】
メモリと、
前記メモリに保存されたデータを認証する認証プログラムを含むソフトウェアを実行するように構成されたプロセッサと、
前記プロセッサに結合され、前記プロセッサが少なくとも所定の頻度で定期的に前記認証プログラムを実行したかどうか、及び前記認証プログラムが前記データを正常に認証したかどうか、を検証するように構成された認証実施ハードウェアと、
を備え、
前記プロセッサは、ROMから前記認証プログラムを実行するように構成され、
前記認証実施ハードウェアは、前記ROMから所定の実行が実行されたことを検証した場合のみ、前記認証プログラムの前記所定の実行が正常に完了したと判断する、且つ、前記認証実施ハードウェアは、前記認証プログラムの命令が前記ROMからフェッチされたかどうかを検出することにより、前記所定の実行が前記ROMから実行されたかどうかを検証するように構成されており、
前記認証実施ハードウェアは、
2つの認証OK信号の受信間の時間をカウントするタイマーと、
前記タイマーによって出力された前記時間を予め設定された閾値と比較し、前記時間が前記閾値に等しい場合にシステムを再起動するための信号を生成するコンパレータと、
ロジックゲートと、
認証表示有効化フリップ・フロップと、
ROM命令フェッチ検出器と、
RAM命令フェッチ検出器と、
を含み、
前記認証表示有効化フリップフロップが設定されている場合にのみ、前記ロジックゲートは前記プロセッサーから前記タイマーに前記認証OK信号を転送し、
前記プロセッサーが前記メモリにアクセスすることを監視するための前記ROM命令フェッチ検出器が、前記プロセッサーが前記ROMから命令をフェッチしたことを検出した場合にのみ、前記フリップフロップはセットされ、
前記RAM命令フェッチ検出器が前記プロセッサーがRAMから前記命令をフェッチしたことを検出した場合にのみ、前記認証表示有効化フリップ・フロップはリセットされ、
前記ROMから前記命令をフェッチされた以降、且つ前記RAMから前記命令をフェッチされる以前の前記認証OK信号だけによって、前記タイマーはリセットされる
ことを特徴とするコンピューターシステム。
【請求項2】
前記認証実施ハードウェアは、前記プロセッサが少なくとも前記所定の頻度で前記認証プログラムを実行できなかった場合に、応答アクションを開始するように構成されている請求項1に記載のコンピューターシステム。
【請求項3】
前記認証実施ハードウェアは、前記認証プログラムが前記データを認証できなかった場合に、応答アクションを開始するように構成されている請求項1に記載のコンピューターシステム。
【請求項4】
前記認証プログラムは、前記データを認証に正常した場合に、前記プロセッサに信号をアサートするように指示し、
前記認証実施ハードウェアは、少なくとも前記所定の頻度で前記信号が定期的にアサートされたかどうかを検証するように設定されたタイマーを含む請求項1に記載のコンピューターシステム。
【請求項5】
メモリに保存されたデータを認証する認証プログラムを含むソフトウェアを実行するように構成されたプロセッサを使用することと、
前記プロセッサに結合され、前記プロセッサが少なくとも所定の頻度で定期的に前記認証プログラムを実行したかどうか、及び前記認証プログラムが前記データを正常に認証したかどうか、を検証するように構成された認証実施ハードウェアを使用することと、
を含み、
前記ソフトを実行することは、
ROMから前記認証プログラムを実行することを含み、
前記認証プログラムが前記データを正常に認証したかどうか、を検証することは、
前記ROMから所定の実行が実行されたことを検証した場合のみ、前記認証プログラムの前記所定の実行が正常に完了したと判断することと、を含み、
前記所定の実行が前記ROMから実行されたかどうかを検証することは、
前記認証実施ハードウェアにより、前記認証プログラムの命令が前記ROMからフェッチされたかどうかを検出することと、を含み、
前記認証実施ハードウェアは、
2つの認証OK信号の受信間の時間をカウントするタイマーと、
前記タイマーによって出力された前記時間を予め設定された閾値と比較し、前記時間が前記閾値に等しい場合にシステムを再起動するための信号を生成するコンパレータと、
ロジックゲートと、
認証表示有効化フリップ・フロップと、
ROM命令フェッチ検出器と、
RAM命令フェッチ検出器と、
を含み、
前記認証表示有効化フリップフロップが設定されている場合にのみ、前記ロジックゲートは前記プロセッサーから前記タイマーに前記認証OK信号を転送し、
前記プロセッサーが前記メモリにアクセスすることを監視するための前記ROM命令フェッチ検出器が、前記プロセッサーが前記ROMから命令をフェッチしたことを検出した場合にのみ、前記フリップフロップはセットされ、
前記RAM命令フェッチ検出器が前記プロセッサーがRAMから前記命令をフェッチしたことを検出した場合にのみ、前記認証表示有効化フリップ・フロップはリセットされ、
前記ROMから前記命令をフェッチされた以降、且つ前記RAMから前記命令をフェッチされる以前の前記認証OK信号だけによって、前記タイマーはリセットされる
ことを特徴とする強制自己認証方法。
【請求項6】
前記プロセッサが少なくとも前記所定の頻度で前記認証プログラムを実行できなかった場合に、応答アクションを開始することをさらに含む請求項5に記載の強制自己認証方法。
【請求項7】
前記認証プログラムが前記データを認証できなかった場合に、応答アクションを開始することをさらに含む請求項5に記載の強制自己認証方法。
【請求項8】
前記認証プログラムは、前記データを認証に正常した場合に、前記プロセッサに信号をアサートするように指示し、
前記プロセッサが少なくとも所定の頻度で定期的に前記認証プログラムを実行することは、
前記認証実施ハードウェアのタイマーを使用して、少なくとも前記所定の頻度で前記信号が定期的にアサートされたかどうかを検証することを含む請求項5に記載の強制自己認証方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セキュアコンピューティング環境において、特に、強制自己認証機能を有するコンピューターシステム及び強制自己認証方法に関する。
【背景技術】
【0002】
コンピュータシステムは通常、1つまたは複数の中央処理装置(CPU)とメモリを備え、CPUはメモリに格納されているソフトウェアプログラムを実行する。一部のコンピューターシステムでは、コンピューターは、暗号化技術を使用して、実行するソフトウェアの認証を行う。
【0003】
ファームウェア(およびその他のソフトウェアまたはデータ)の信頼性を検証する方法について、以下のような様々の文献に記載されている。例えば、2003年3月28日に最初にリリースされた「暗号モジュールのセキュリティ要件、実装ガイドライン」 NIST-FIPS 140-2、「キー付きハッシュメッセージ認証コード」 FIPS PUB 198-1 2008年7月、「Secure Hash Standard(SHS)」 NIST-FIPS 180-4 2015年8月、及び「UEFI(Unified Extensible Firmware Interface Forum)仕様」バージョン2.7(Errata A) 2017年8月。
【先行技術文献】
【非特許文献】
【0004】
【文献】「暗号モジュールのセキュリティ要件実装ガイドライン」 NIST-FIPS 140-2 2003年3月28日
【文献】「キー付きハッシュメッセージ認証コード」 FIPS PUB 198-1 2008年7月
【文献】「Secure Hash Standard(SHS)」 NIST-FIPS 180-4 2015年8月
【文献】「UEFI(Unified Extensible Firmware Interface Forum)仕様」バージョン2.7(Errata A) 2017年8月
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の目的は、定期的に自己認証を強制し、セキュリティリスクを低減する強制自己認証機能を備えるコンピューターシステム及び強制自己認証方法を提供することにある。
【課題を解決するための手段】
【0006】
本発明の1つの実施形態に係るコンピューターシステムは、メモリと、前記メモリに保存されたデータを認証する認証プログラムを含むソフトウェアを実行するように構成されたプロセッサと、前記プロセッサに結合され、前記プロセッサが少なくとも所定の頻度で定期的に前記認証プログラムを実行したかどうか、及び前記認証プログラムが前記データを正常に認証したかどうか、を検証するように構成された認証実施ハードウェア(authentication enforcement hardware)と、を備える。
【0007】
本発明の1つの実施形態に係るコンピューターシステムにおいて、前記認証実施ハードウェアは、前記プロセッサが少なくとも前記所定の頻度で前記認証プログラムを実行できなかった場合に、応答アクションを開始するように構成されている。本発明の1つの実施形態に係るコンピューターシステムにおいて、前記認証実施ハードウェアは、前記認証プログラムが前記データを認証できなかった場合に、応答アクションを開始するように構成されている。
【0008】
本発明の1つの実施形態に係るコンピューターシステムにおいて、前記認証プログラムは、前記データの認証に正常した場合に、前記プロセッサに信号をアサートするように指示し、前記認証実施ハードウェアは、少なくとも前記所定の頻度で前記信号が定期的にアサートされたかどうかを検証するように設定されたタイマーを含む。本発明の1つの実施形態に係るコンピューターシステムにおいて、前記プロセッサは、ROM(ROM)から前記認証プログラムを実行するように構成され、前記認証実施ハードウェアは、前記ROMから所定の実行(given run)が実行されたことを検証した場合のみ、前記認証プログラムの前記所定の実行が正常に完了したと判断するように構成されている。本発明の1つの実施形態に係るコンピューターシステムにおいて、前記認証実施ハードウェアは、前記認証プログラムの命令が前記ROMからフェッチされたかどうかを検出することにより、前記所定の実行が前記ROMから実行されたかどうかを検証するように構成される。
【0009】
本発明の実施形態に係る強制自己認証方法は、メモリに保存されたデータを認証する認証プログラムを含むソフトウェアを実行するように構成されたプロセッサを使用することと、前記プロセッサに結合され、前記プロセッサが少なくとも所定の頻度で定期的に前記認証プログラムを実行したかどうか、及び前記認証プログラムが前記データを正常に認証したかどうか、を検証するように構成された認証実施ハードウェアを使用することと、を含む。
【図面の簡単な説明】
【0010】
図1図1は本発明の実施形態による、強制認証機能を備えたコンピュータシステムを概略的に示すブロック図である。
図2図2は、本発明の一実施形態による、自己認証が失敗した場合の図1のコンピュータシステムに対する保護を概略的に示すタイミング波形である。
図3図3は、ソフトウェアが自己認証ソフトウェアの実行に失敗した場合の図1のコンピュータシステムに対する保護を概略的に示すタイミング波形である。
図4図4は、本発明の実施形態による、コンピュータシステム内で自己認証を強制する回路の構成を概略的に示すブロック図である。
【発明を実施するための形態】
【0011】
以下、図に示す実施形態に基づいて説明する。なお、各図面は模式図であり、必ずしも実際の寸法を厳密に反映したものではない。なお、各図面において、同様な符号は、同じ構成要素を示す。
【0012】
コンピューターシステム(特にマイクロコントローラー)は、通常、ファームウェアコード(FWコード)とデータを格納するランダムアクセスメモリ(RAM)を備えている。例えば、FWコードは、ROM(ROM)に格納されているブートローダーによって外部シリアルフラッシュからダウンロードされ、RAMから実行される。他の例では、FWコードは、有線または無線のパラレルバスまたはシリアルバスを介して、ネットワークまたは別の外部ソースからダウンロードできる。
【0013】
ブートローダーは、ダウンロードしたFWコードを認証でき(キーベースの署名などの暗号化技術を使用)、ROMコードが安全であると見なされた場合、ダウンロードしたFWコードは信頼される。ただし、一旦FWコードをダウンロードすると、コンピューターシステムへの電力供給が中断されない限り、FWコードが長時間(たとえば、数か月または数年)実行される場合がある。もし、ハッカーがコンピューターシステムのセキュリティを破り、変更されたコードを読み込ませた(たとえば、チップの電源をグリッチする、デバッグポートを有効にする、RAMに直接データを注入するなど)場合、この変更されたコードは、実質的に永久に実行され、セキュリティに対して重大な影響を与えることになる(変更されたFWコードは、以下では「悪意FWコード」または「悪意コード」と呼ぶ)。
【0014】
本明細書で開示される本発明の実施形態は、コンピュータシステムに定期的に自己認証を強制し、悪意FWコードが真正FWコード(authentic FWコード)を置き換えて長期間実行するリスクを低減するコンピュータシステムおよびを強制自己認証方法を提供する。一実施形態では、FWコードは、メモリコンテンツまたはその一部を定期的に認証する(例えば、プログラム可能なタイマーによってトリガーされる)認証機能を備える。もし認証が失敗した場合、コンピューターシステムはリセット信号を発行する(別の実施形態では、ノンマスカブル割り込み(Non-maskable interrupt(NMI))を発行し、さらに別の実施形態では、実行を停止する場合もある)。その後、コンピューターシステムは再起動し、RAMに保存されているFWコードを破棄する。
【0015】
一部の実施形態では、コンピュータシステムは、(1)FWコードが十分の頻度で定期的に認証機能を実行したかどうか、及び(2)認証が正常に完了したかどうか、を検証する強制認証回路(FAC)を備える。例示的な一実施形態では、FWコードは、認証プログラムが正常に完了した場合(すなわち、FWコードまたはその一部が認証された場合)、認証OK信号(通常、レジスタ内の単一ビット)をアサートする。この例では、FACは、認証OK信号がアサートされるとリセットされるタイマーを含み、このタイマーは、実際には、最後に完了した認証から時間をカウントするようになっている。タイマーのカウント値が予め設定されたしきい値に達すると、FACはコンピューターシステムを強制的に再起動する(たとえば、リセットまたはNMIを発行する)。
【0016】
実施形態では、ソフトウェアは、認証OK信号を設定することができるが、FACにはアクセスできない。一部の実施形態では、認証機能はROMに格納され、FWコードは認証機能を定期的に呼び出す。一実施形態では、正常の認証に従わない偽造された認証OK信号を回避するために、FACは、最後の命令がROMからフェッチされたものではない場合、その認証OK信号を無視する。したがって、認証OK信号は、絶対に安全なROMに格納されている認証機能によって認証された場合にのみ、受け入れられる。
【0017】
上記の説明はFWコード認証に関するものであったが、本発明の実施形態は必ずしもすべてのFWコードを認証する必要はなく、FWコードの一部、またはコンピュータシステムメモリ内のデータのみ認証してもよい。
【0018】
以上のように、本発明の実施形態にかかるコンピュータシステムは、RAMに格納されたデータ(例えば、すべてのFWコード)を定期的に認証する。コンピュータシステム内の回路は、予め設定された時間内にRAMデータを認証できなかった場合、システムのリセット、NMIの発行、FWコードの実行停止、又はその他の応答アクションを実行する。認証の成功を通知できるROMベースのFWコード以外のFWコードは、回路にアクセスできないため、成功した認証を偽造できない。ユーザーソフトウェアのパフォーマンスは、認証機能の定期的な呼び出しを除き、追加されたメカニズムからの影響を受けない。
【0019】
システムの説明
【0020】
本明細書では、本発明の実施形態によるいくつかの実施例を提示するが、決して本発明の範囲を限定するものではない。
【0021】
図1は、本発明の実施形態による、強制認証を備えたコンピュータシステム102を概略的に示すブロック図100である。
【0022】
コンピュータシステム102は、メモリに格納されているプログラムを実行するCPU104(プロセッサとも呼ぶ)と、初期ブートコード(initial boot code)と、信頼できるFWコード機能を含むその他の機能とデータを格納するROM106と、FWコードとデータを保存するRAM108と、を備える。ROM106およびRAM108は、共にコンピュータシステムメモリと呼ばれる。
【0023】
FWコードをダウンロードするために、コンピュータシステム102は、コンピュータシステムの外部でFWコードを保存できるシリアルフラッシュ112と通信する外部フラッシュインターフェース110をさらに備える。また、コンピュータシステム102は、オプションで、FWコードをダウンロードするための他のインターフェース、すなわち、コンピュータシステムとネットワーク(例えば、イーサネット)との間で通信し、ネットワークからFWコードをダウンロードするよネットワークインターフェース114と、シリアルバスを介してFWコードをダウンロードするために、シリアルバス(例えば、集積回路間(I2C))を介してコンピュータシステムと外部デバイスとの間で通信するように構成されたシリアルバスインターフェース116と、を備えても良い。また、コンピュータシステム102は、選択的にで、外部ソースからFWコードをダウンロードする他のインターフェースを備えてもよい(以下は、いくつかの例を説明する)。
【0024】
本発明の実施形態によれば、コンピュータシステム102がFWコードをロードすると、コンピュータシステムは、例えば暗号署名を使用してFWコード(またはその一部)を認証する。認証プログラムは通常、少なくとも部分的にROM 106に格納され、認証が失敗した場合、コンピューターシステムはFWコードをロードしない(その場合、コンピューターシステムは、例えば、システムの停止、リセット、またはNMI(ノンマスカブル割り込み)を発行する)。一方、認証が成功した場合、CPU 104はRAM 108にFWコードをロードさせ、その後、CPU 104はRAMからFWコードを実行する(このとき、シリアルフラッシュ112は切断される場合もある)。
【0025】
コンピューターシステムの一部のアプリケーションでは、CPUがFWを長時間実行する場合がある。たとえば、生産フロアのコンピューターシステムは、安定的且つ成熟したプロセス制御FWコードをダウンロードし、(電源が遮断されない限り)数か月から数年にわたって実行する。このような長い期間では、ハッカーにコンピューターシステムを攻撃させたり、FWコードを変更させたりする機会を与えてしまう可能性がある。したがって、FWコードをロードする前にコンピューターシステムが認証を実行するのは安全性に不十分である。
【0026】
上記リスクを軽減するために、本発明の実施形態にかかるコンピュータシステムが実行するFWコードには、RAMデータに対する定期的な認証(例えば、10秒ごとに1回)を含む(実際の頻度は、パフォーマンスと認証に費やされる電力との間の望ましいトレードオフポイントによって、数秒から数時間まで異なる場合がある)。一部の実施形態では、認証の頻度は一定ではなく、コンピューターシステムが次の認証実行までの最大時間が定義されている。
【0027】
しかし、ハッカーは定期的な認証を無効にして、悪意FWコードを長期間実行させることができる。このリスクを軽減するために、コンピューターシステム102は、強制認証回路(FAC)118をさらに備えている。FAC118は、認証実行が正常に完了するたびに認証の成功を示す信号をCPU104から受信する。FAC118は、タイマーを備え、CPU104によって予め設定されたしきい値以下の間隔で新しい認証実行の通知が発行されたかどうかを検証できる。
【0028】
図1の実施形態によれば、認証プログラムは、少なくとも部分的にROM106に格納され、RAMのFWコードは、ROMベースの機能を呼び出すことにより認証を実行する。FACは、CPUのメモリアクセスを監視し、ROMベースの命令の実行の結果として認証が生成されない限り、認証成功の表示をブロックする。したがって、ハッカーは成功した認証実行を偽ることができず、FAC118は時間内に認証に失敗したことを検出することになる。その結果、悪意FWコードの実行は、認証の失敗、または予め定義された期間内に認証の実行に失敗したことにより終了することになる。
【0029】
図1に示されるコンピューティングシステム102は、あくまでも一例である。本発明は、それに限定されるものではない。別の実施形態では、例えば、外部フラッシュインターフェース110、ネットワークインターフェース114およびシリアルバスインターフェース116のいずれかまたはすべてを使用して、シリアルフラッシュ、および/またはネットワークおよび/またはシリアルバスからのFWコードをダウンロードすることができる。さらに別の実施形態では、FWコードは、適切なインターフェースを介して無線でダウンロードされてもよい。さらに他の実施形態では、FWは、周辺機器相互接続エクスプレス(PCIe)などの高速システムバスを介してダウンロードされてもよい。インターフェース110、114、116のそれぞれは、複数のデバイスとインターフェースするように構成されてもよい。
【0030】
実施形態では、CPU104は、同じタイプまたは異なるタイプの2つ以上のCPUの集合体であってもよい。ROM106および/またはRAM108は、複数のROM/RAMインスタンスを備えてもよい。
【0031】
図2は、本発明の一実施形態による、自己認証が失敗した場合のコンピューティングシステムに対する保護を概略的に示すタイミング波形200である。タイミング波形200は、さまざまなFWコードの実行ソースを示すFWコード実行波形202と、認証実行の失敗または合格を示す認証結果の波形204と、繰り返し認証実行を検証するタイマーの動作を示すタイマー波形206と、コンピュータシステムのリセットを示すリセット波形208と、を含む。
【0032】
フローチャート200には、認証インジケータの開始と停止をそれぞれ示す時間インジケータ210、212と、CPUが悪意コードの実行を開始する時点を示す時間インジケータ214と、認証の失敗に応答して、コンピュータシステムのリセットを示す時間インジケータ216と、を含まれている。
【0033】
最初に、FWコードはRAMから実行される。 次に、時間インジケータ210で、FWコードはROMに格納されている認証プログラムを呼び出す。次に、時間インジケータ212で認証が完了し、FWコードは認証OK信号を生成する(図1のFAC118に転送される)。
【0034】
タイマーは、FACが認証OK信号を受信すると、カウント値の増加とリセットを繰り返して経過時間を測定する。この時、新しい信号は常にタイムリーに受信されるため、タイマーがしきい値に達することはない。
【0035】
上記シーケンスは、時間インジケータ214で、FWが破損した(悪意)コードの実行を開始するまで、RAMからのFW実行とそれに続くROMからの認証実行及び3回繰り返される認証パスインジケータを含む。したがって、認証ソフトウェアの次の実行では、認証失敗信号(時間インジケータ216)が発生し、その結果、コンピュータシステムがリセットされる。
【0036】
図3は、本発明の一実施形態による、ソフトウェアが自己認証ソフトウェアの実行に失敗した場合のコンピューティングシステムに対する保護を概略的に示すタイミング波形300である。
【0037】
波形300は波形200のように始まり、時間インジケータ210までは波形200と同一である。ただし、時間インジケータ214でRAMにロードされた悪意のあるFWは、ROMに格納されている認証機能を呼び出さない。その結果、認証OK表示は生成されず、タイマーはリセットされず、時間インジケータ310でタイマーは閾値に達する。その後、FACはリセット信号を生成し、コンピューターシステムが再起動する。
【0038】
以上のように、図2、3にかかる実施形態によれば、時間インジケータ214でダウンロードされたFWコードが真正コードではなかった場合、FWコードはRAMデータの定期認証に失敗するか、予め設定された時間閾値内での認証に成功しなくなる。どちらの場合でも、タイマーがしきい値に達すると、認証の失敗の結果として、直接またはFACによってコンピューターシステムがリセットされる。
【0039】
図2および図3に示されるコンピューティングシステムの波形は、例として引用される例示的な実施形態である。本発明によるコンピュータシステムの波形は、上記の説明に限定されない。代替実施形態では、たとえば、認証プログラムはセグメントに分割され、セグメント間でFWコードがRAMから実行される(たとえば、高速応答時間が重要であり、FWが完全な認証セッションのために停止すると満たすことができないアプリケーションの場合)。他の実施形態では、リセットはFAC118によって生成されない代わりに、FACによってすべてのCPU実行を停止する場合がある。一実施形態では、FACはNMIを生成し、別の実施形態では、認証が失敗した場合、FACは、リセット信号を生成し、タイマーが閾値に達した場合、NMIを生成してもよい。
【0040】
さらに、追加または代替として、FAC 118は、(i)認証プログラムが少なくとも指定された頻度で呼び出されない場合、または(ii)認証プログラムの特定の呼び出しが認証成功で完了しない場合、他の適切な応答アクションを開始することができる。
【0041】
図4は、本発明の実施形態による、コンピュータシステム(FAC)における自己認証を強制する回路の構造を概略的に示すブロック図400である。CPU104は、ROM106およびRAM108と通信する。FAC 118は、CPU、ROM、およびRAM間のトランザクションを監視する。FACは、認証ソフトウェアが正常に完了したことを示すためにCPUによって使用される認証OKワイヤ(AUTHENTICATION-OK wire)を介してCPU104に結合される。
【0042】
FAC 118は、2つの認証OK表示の受信間の時間(例えば、固定周波数クロック信号のカウントサイクル)をカウントするタイマー402と、タイマー402によって出力された時間を予め設定された閾値と比較し、時間が閾値に等しい場合にリセット信号を生成するコンパレータ404と、を含む。図4の例示的な実施形態では、認証OK信号はCPU104のIOピンの1つであり、認証OKはCPUの出力命令によって示される。
【0043】
悪意FWコードは、認証OK表示を定期的に設定することにより、上記強制認証メカニズムをだまそうとする場合がある。だから、以下に説明するように、ROMに格納されている命令を実行した結果としてCPUが認証OKを示した場合にのみ、タイマー402のリセットを許可することにより、上記リスクに対応することができる。
【0044】
FAC118は、ロジックゲート406と、認証表示有効化フリップ・フロップ(Enable Authentication Indication Flipflop)408と、ROM命令フェッチ検出器410と、RAM命令フェッチ検出器412と、をさらに含む。ロジックゲート406は、認証表示有効化フリップフロップ408が設定されている場合(図には「SET」を表示されている場合)にのみ、CPU104からタイマー402に認証OK表示を転送する。フリップフロップは、CPUメモリアクセスを監視するROM命令フェッチ検出器410が、CPUがROMから命令をフェッチしたことを検出すると、セットされ、CPUがRAMから命令をフェッチしたことをRAM命令フェッチ検出器412が検出すると、リセットされる(図には「Clear」と表示される)。したがって、ROMから命令をフェッチした以降、且つRAMから命令をフェッチする以前の認証OK表示だげが、タイマー402をリセットするための唯一の方法である。
【0045】
コンピュータシステム102のいくつかの実施形態では、実行パイプラインは、対応する命令フェッチに関連する書き込み動作の遅延をもたらし得る。したがって、認証OK指示をアサートするROM命令は、1つ以上の命令によって対応する命令フェッチを遅らすことができ、次の命令がRAMから実行された場合、タイマーのリセットがブロックすることができる。それらの実施形態では、認証ソフトウェアは、例えば、予め設定された数のNOP命令を実行することにより、実行パイプラインが空になるまで、数サイクルの間、ROMからの実行を継続しなければならない。
【0046】
別の実施形態では、ROM命令フェッチ検出器410は、ROM内の認証ルーチンの最初のアドレスからのフェッチに応答して、「認証識別フラグを有効にする(enable authentication identification flag)」を設定する。したがって、悪意FWコードは(認証OKをアサートするための)ルーチンの最後にジャンプできず、ROMルーチンは完全に実行されることになる。
【0047】
図4に示されるFAC118の実施形態は、あくまでも例として引用される例示的な実施形態である。本発明が開示した技術によるFACは、上記の説明に限定されない。別の実施形態では、例えば、CPU104は、メモリアドレス(既存のメモリまたは存在しないメモリを指す)に書き込むことにより認証OKを示す。そのような実施形態では、FAC118は、CPUメモリアクセスを監視し、認証OKシグナリングを検出する認証OK検出器を備える。 検出器の出力は、CPU 104からのワイヤの代わりにロジックゲート406に入力される。一実施形態では、CMP404はリセットの代わりにNMIを生成し、別の実施形態では、CMP404はCPUを停止するHALT信号を生成する。
【0048】
したがって、上記で提示された本発明の実施形態によれば、RAMからFWコードを長期間実行するコンピュータシステムに、FWの不正な変更に対する保護を提供することができる。保護は、具体的に、a)FWは、RAMに保存されたデータ(FW全体またはその一部を含む)を定期的に認証する必要があることと、b)認証ソフトウェアは、少なくとも部分的にROMに格納されているため、ハッキングからある程度保護されていることと、c)コンピュータの回路は、タイマーを備え、認証が予め設定されたしきい値を超えて遅延した場合、回路はCPUをリセット、停止、または中断することと、d)回路は、ROMベースの命令によって表示が開始されたことを確認することにより、認証OK指示をハッキングから保護することと、を含む。
【0049】
図1から図4に示されるコンピュータシステムおよびFACの実施形態は、あくまでの例として引用される例示的な実施形態である。 本発明によるコンピュータシステムおよFACは、上記の実施形態に限定されない。別の実施形態では、例えば、FWコードは、定期的に自己認証する必要のある(RAMからではなく)外部フラッシュから実行されてもよい。RAM108は、静的または動的に組み込みRAM、または外付けのRAMであってもよい。CPU104は、任意の種類のマイクロコントローラ(例えば、RISC、CISC)、または複数のプロセッサであってもよい。
【0050】
本発明によるいくつかの実施形態では、CPUは、データに頻繁にアクセスするためのキャッシュメモリを備えてもよい(そして、これらの実施形態では、認証ソフトウェアの少なくとも一部は、通常、非キャッシュモードで実行される)。
【0051】
コンピュータシステム102、またはそれらの構成要素は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などの任意の適切なハードウェアを使用して実現してもよい。いくつかの実施形態では、コントローラの一部またはすべての要素は、ソフトウェア、ハードウェア、またはハードウェアとソフトウェアの組み合わせを使用して実現してもよい。
【0052】
通常、CPU104は、本明細書で説明する機能を実行するためにソフトウェアでプログラムされる汎用プロセッサを含んでもよい。ソフトウェアは、例えばネットワークを介して電子形式でプロセッサにダウンロードされてもよく、あるいは、代替的または追加的に、磁気、光学、または電子メモリなどの非一時的な有形媒体に提供および/または格納されてもよい。
【0053】
ROM106は、フラッシュ、RAMまたはワンタイムプログラミングメモリ(OTP)のような他のタイプのメモリによってエミュレートされ、書き込み/消去ディスエーブルロジック回路を含んでもよい。したがって、変更不能なROMをエミュレートすることができる。
【0054】
上述の実施例は、一例として引用されたものであり、本発明は、特に上で示され説明されたものに限定されないことである。むしろ、本発明の範囲は、上述した様々な特徴の組み合わせ及び部分的な組み合わせ、ならびに前述の説明を読むことによって当業者に想到し得る変形および修正の両方を含む。
【符号の説明】
【0055】
100…ブロック図
102…コンピューターシステム
104…CPU
106…ROM
108…RAM
110…外部フラッシュインターフェース
112…シリアルフラッシュメモリ
114…ネットワークインターフェース
116…シリアルバスインターフェース
118…強制認証回路
200、300…タイミング波形
202、204、206、208、302、304、306、308…波形
210、212、214、216、310…時間インジケータ
400…ブロック図
402…タイマー
404…コンパレータ
406…ロジックゲート
408…認証表示有効化フリップ・フロップ
410…ROM命令フェッチ検出器
412…RAM命令フェッチ検出器













図1
図2
図3
図4