JP5335634B2 - システム管理モードの特権レベルを保護するコンピュータ - Google Patents

システム管理モードの特権レベルを保護するコンピュータ Download PDF

Info

Publication number
JP5335634B2
JP5335634B2 JP2009223662A JP2009223662A JP5335634B2 JP 5335634 B2 JP5335634 B2 JP 5335634B2 JP 2009223662 A JP2009223662 A JP 2009223662A JP 2009223662 A JP2009223662 A JP 2009223662A JP 5335634 B2 JP5335634 B2 JP 5335634B2
Authority
JP
Japan
Prior art keywords
program
computer
smm
code
bios
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2009223662A
Other languages
English (en)
Other versions
JP2011076134A (ja
Inventor
伯仁 石田
豊昭 稲田
栄太郎 笠松
典利 吉山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Singapore Pte Ltd
Original Assignee
Lenovo Singapore Pte Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lenovo Singapore Pte Ltd filed Critical Lenovo Singapore Pte Ltd
Priority to JP2009223662A priority Critical patent/JP5335634B2/ja
Priority to US12/874,622 priority patent/US8694794B2/en
Publication of JP2011076134A publication Critical patent/JP2011076134A/ja
Application granted granted Critical
Publication of JP5335634B2 publication Critical patent/JP5335634B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Description

本発明は、コンピュータ・システムの動作モードであるシステム管理モードの特権レベルを保護する技術に関する。
インテル(登録商標)では、同社のプロセッサとチップ・セットを使用してコンピュータを不正プログラムから保護するために、セキュリティ機能を強化するTXT(Intel Trusted Execution Technology)という保護メカニズムを提供している。TXTでは、同社のX86シリーズのプロセッサにおいて、システム管理モード(SMM)という動作モードを採用している。SMMは、コンピュータの電源、温度およびその他の制御のために、オペレーティング・システム(OS)から独立した動作環境を提供することを目的にしている。
OS動作環境におけるプロテクト・モードでは、カーネル・コードの実行を許可するリング0からユーザ・プログラムの実行を許可するリング3までの4つの特権レベルを提供する。これに対しSMMは、システム管理割り込み(SMI)がアサートされたときに専用の保護されたメモリ領域にロードされたコードが実行される動作モードでOS動作環境におけるプロテクト・モードのリング0の特権レベルに類似する特権レベルを提供する。したがって、SMMの特権レベル(以下、SMM特権という。)を不正プログラムが取得すると、コンピュータの枢要なコードが書き換えられてしまい、かつ、OSはSMM特権をどのプログラムが利用しているのか認識できないのでシステムの安全上大きな脅威になる。近年、非特許文献1のような論文がSMMの脆弱性を発表している。
特許文献1は、認証されていないBIOSイメージでフラッシュBIOSが書き換えられることを防止する技術を開示する。同文献の発明では書き換え前にBIOSイメージを認証するSMIハンドラが、システム管理メモリ部分に格納される。BIOSイメージのSMIハンドラによってのみ知られたオフセットに秘密のチェック・サムを埋め込んでおくことで、SMIハンドラは、適切なBIOSイメージであることを確認する。特許文献2は、プログラムからの通知に基づいてSMMに移行し、メモリの保護領域でセキュリティ処理を行うことで機密情報を扱う通信の秘匿性を確保する技術を開示する。
特開2001−75828号公報 特開2008−500655公報
Attacking Intel Trusted Execution Technology ( http://invisiblethingslab.com/itl/Resources.html )
OS動作環境におけるプロテクト・モードで実行されるプログラムは、SMIをアサートしてSMMに移行することができる。しかし、SMIがアサートされたときにはメイン・メモリの一部に確保されたシステム管理RAM(SMRAM)という領域にロードされたSMMコードが実行されるようにハードウエアが構成されているため、不正プログラムはSMIをアサートできてもSMMコードを書き換えることができない。また、SMMコードはBIOS_ROMにセキュアに格納されているため、SMMコードの正当性は一貫して保証される。よって、SMMでSMRAM領域にロードされたコードだけが実行される場合は、不正プログラムがSMM特権を支配することはない。
しかし、SMMではSMRAM領域にロードされたコードだけでなく、ハードウエアで保護されない一般領域にロードされたコードをSMMコードが呼び出す場合もある。そして一般領域にロードされたコードはコンピュータがOS動作環境におけるプロテクト・モードで動作している間に不正プログラムにより書き換えられる可能性がある。不正プログラムにより書き換えられた汚染コードもSMMコードから呼び出されてSMMで動作することがあるため、SMM特権が不正プログラムにより支配されてしまう可能性がある。図6は、SMM特権が不正プログラムで支配される様子を説明する図である。ここでは、SMMコードであるパスワードの認証コードがメイン・メモリのSMRAM領域にロードされ、ベクタ・テーブル、ビデオBIOSおよびシステムBIOSが一般領域にロードされている。そして、一般領域のコードやデータは不正プログラムによる書き換えが可能であると想定する。
SMMで動作する認証コードは、パスワード入力のためのプロンプトを画面に表示するために、ビデオBIOSを呼び出す必要がある。このときINT10命令でベクタ・テーブルからベクタ・アドレスを取得するが、ベクタ・アドレスが不正プログラムにより不正コードのアドレスに書き換えられることが予想される。また、ビデオBIOSが、システムが保有する情報を取得するためにさらにINT15命令でベクタ・アドレスを取得して、システムBIOSを呼び出す場合も、ベクタ・アドレスが不正プログラムにより書き換えられることが予想される。SMMで動作するコードは、すべてのI/Oポートに何ら制約を受けることなくアクセスすることができる。そしてSMMで動作した不正プログラムにより、SMM特権を利用してシステムに攻撃が加えられる。OSは不正プログラムによるメイン・メモリにロードされたプログラムやコードの改変を監視する機能も備えているが、OSはCPUがSMMで動作していることを認識できないのでその機能を利用することができない。
これを防ぐには、一般領域にロードされるコードのなかで、SMMで動作する間に呼び出される可能性があるすべてのコードのハッシュ値を毎回計算して汚染されていないときのハッシュ値と比較することが考えられる。しかし、ハッシュ値の計算には時間がかかるため、オーバヘッドが大きくなって好ましくない。また、一般領域にロードされるコードをすべてSMRAM領域にロードすることも考えられる。しかし一般領域にロードされるコードもプロテクト・モードで動作するOSに対してサービスを提供する必要がある一方で、OSはSMIをアサートするインタフェースを備えていないので、一般領域にも同じコードをロードしておく必要がありメイン・メモリを無駄に消費したり更新が煩雑になったりする。
そこで本発明の目的は、SMM特権を保護することができるコンピュータ・プログラムを提供することにある。さらに本発明の目的は、SMM特権を小さなオーバヘッドで保護することができるコンピュータ・プログラムを提供することにある。さらに本発明の目的は、SMM特権を保護することができるコンピュータを提供することにある。
本発明では、プロセッサがSMMで動作する間にSMRAM領域以外の一般領域にロードされている汚染されたプログラムが実行されてSMM特権が支配されることを防ぐコンピュータ・プログラムを提供する。本発明の原理は、SMMにおいてSMMプログラムが一般領域にロードされた第1のプログラムを呼び出して、または第1のプログラムを経由して第2のプログラムを呼び出して実行するときに、SMMプログラムがそれらのプログラムの正当性を検証してから、または安全性を確保してから呼び出す点にある。そして本発明はそのような正当性の検証または安全性の確保を小さなオーバヘッドで行うことができる。
SMMプログラム、第1のプログラム、第2のプログラムおよびベクタ・テーブルは、メイン・メモリにロードされる前は正当性が保証されている。メイン・メモリのSMRAM領域にはSMMプログラムがロードされ、一般領域には第1のプログラム、第2のプログラムおよびベクタ・テーブルがロードされる。SMMプログラムは正当性が保証された状態でロードされている第1のプログラムの基準ハッシュ値を計算する。基準ハッシュ値はオペレーティング・システムの環境で動作する不正プログラムにより第1のプログラムが汚染されていないことを検証するために計算する。コンピュータの電源が起動してからBIOSだけが動作している間は、BIOSの正当性が保証されている限り不正プログラムからの攻撃はないので、基準ハッシュ値の計算は安全な環境であるブートの完了前に行うことができる。
コンピュータがオペレーティング・システムの環境で動作すると、一般領域にロードされた第1のプログラム、第2のプログラムおよびベクタ・テーブルが不正プログラムで汚染される可能性がでてくる。したがって、SMMプログラムは第1のプログラムを呼び出すときには、事前にそれらの正当性および安全性を検証する必要がある。本発明ではSMMプログラムが、コンピュータがオペレーティング・システムの環境で動作したあとに計算した第1のプログラムのハッシュ値と基準ハッシュ値を比較する。そして計算したハッシュ値と基準ハッシュ値が一致した場合にSMMプログラムが第1のプログラムを呼び出す。
第1のプログラムの正当性が検証できたとしても、不正プログラムによりベクタ・アドレスが書き換えられてSMMプログラムが第1のプログラムをINT命令などで呼び出したときに、不正プログラムを呼び出す可能性がある。それを防ぐためにまず、オペレーティング・システムが動作する前にベクタ・テーブルから取得した第1のプログラムを呼び出す割り込みタイプに対応する信頼できるベクタ・アドレスをあらかじめSMMプログラムがSMRAM領域に記憶しておく。ここで、オペレーティング・システムが動作する前とは、メイン・メモリにロードされたプログラムが不正プログラムにより汚染される環境で動作する前という意味であり、メイン・メモリにロードされたプログラムの記憶が維持された状態でオペレーティング・システムの動作環境から他の動作環境に移行し、さらにオペレーティング・システムの動作環境に戻る場合における他の動作環境は含まない。
そして、第1のプログラムを呼び出す前に第1のプログラムを呼び出す割り込みタイプに対応するベクタ・アドレスをSMMプログラムがSMRAM領域に記憶しておいたベクタ・アドレスで書き換えることで、SMMプログラムが安全に第1のプログラムを呼び出せるようにすることができる。よって、SMMプログラムは、第1のプログラムを呼び出すことでSMM特権が不正プログラムにより支配されることを防ぐことができる。第1のプログラムを呼び出す割り込みタイプに対応するベクタ・アドレスは、SMMプログラムが第1のプログラムを呼び出す前に正当なプログラムにより書き換えられている可能性がある。したがって、第1のプログラムを呼び出したあとには、第1のプログラムを呼び出す割り込みタイプに対応する書き換えられたベクタ・アドレスをベクタ・テーブルに戻しておくことが望ましい。
またSMMにおいてINT命令などで呼び出された第1のプログラムが第2のプログラムをINT命令などで呼び出す場合がある。このとき第2のプログラムを呼び出す命令の実行によりSMM特権が不正プログラムにより支配されないようにする必要がある。第2のプログラムは、SMMで動作する間に第1のプログラムから呼び出されるときには、必ずしもその時点で第1のプログラムの要求に応える必要がないプログラムである。しかし、第1のプログラムはOS動作環境におけるプロテクト・モードで第2のプログラムを呼び出すときは第2のプログラムの実行が必要なので第1のプログラムから第2のプログラムを呼び出す命令コードを削除することはできない。本発明では、SMMで第1のプログラムから第2のプログラムを呼び出す命令が実行されたときには、第2のプログラムが実質的な命令コードを実行しないでIRET命令などのような第1のプログラムに戻る命令だけを実行するようにベクタ・アドレスおよび第1のプログラムに戻る命令コードまたはそれらのいずれか一方を書き換えることができる。
その結果、第2のプログラムおよびベクタ・テーブルまたはいずれか一方が汚染されていても、第2のプログラムを呼び出したときに汚染コードを実行することなく第1のプログラムに戻ることがSMMプログラムにより保証されるので、第1のプログラムから第2のプログラムを呼び出す命令を実行してもSMM特権が不正プログラムにより支配されることはない。第2のプログラムは、コンピュータがオペレーティング・システムの動作環境であるプロテクト・モードで動作するときにさまざまなプログラムから呼び出される。したがって、第1のプログラムが第2のプログラムを呼び出す命令を実行したあとには、書き換えたベクタ・アドレスおよび第1のプログラムに戻る命令コードまたはそれらのいずれか一方を書き換える前の状態に戻しておくことが望ましい。
SMMプログラムはパスワード認証を行うプログラムとすることができる。また、SMMプログラムによる第1のプログラムのハッシュ値の計算と第1のプログラムの呼び出しは、コンピュータがサスペンドからレジュームする間に行うことができる。
本発明により、SMM特権を保護することができるコンピュータ・プログラムを提供することができた。さらに本発明により、SMM特権を小さなオーバヘッドで保護することができるコンピュータ・プログラムを提供することができた。さらに本発明により、SMM特権を保護することができるコンピュータを提供することができた。
本実施の形態にかかるコンピュータの主要な構成を示すブロック図である。 メイン・メモリに本実施の形態の説明に必要なプログラムがロードされた様子を示す図である。 SMM特権を保護する手順を示すフローチャートである。 SMM特権を保護する手順を示すフローチャートである。 メイン・メモリの状態を示す図である。 SMM特権に対して予想される攻撃シナリオを説明する図である。
[ノートPCの構成]
図1は、本実施の形態にかかるコンピュータ10の主要な構成を示すブロック図である。図1(A)は全体の構成を示し、図1(B)はCPUとSMIに関連する部分的な構成を示す。本明細書の全体に渡って、同一の要素には同一の参照番号を付与する。CPU11は、インテル(登録商標)のX86シリーズのアーキテクチャで構成され、プロテクト・モードに加えてSMMで動作することができる。メモリ・コントローラ・ハブ(MCH)13は、メイン・メモリ15へのアクセス動作を制御するためのメモリ・コントローラ機能、およびCPU11と他のデバイスとの間のデータ転送速度の差を吸収するためのデータ・バッファ機能を含むチップ・セットである。MCHはSMIの発生要因を設定するSMIレジスタ14を含む。
CPU11がプログラムを実行したり、マザーボードに実装されたハードウエアが温度や電源に関するイベントを生成したりしてSMIレジスタ14を設定することでMCH13はSMI信号をCPU11のSMIピンに送りCPU11をSMMで動作させる。MCH13はCPU11がSMMで動作していることをSMIACTピンを通じて受け取ることで、メイン・メモリ15に対するアクセスをハードウエアにより制御してSMM環境を構築する。MCH13は、CPU11がSMMで動作している間は、SMRAM領域(図2)にロードされたコードがOSやアプリケーション・プログラムにより書き換えられないように保護する。MCH13にはCPU11、メイン・メモリ15、グラフィック・プロセッシング・ユニット(GPU)17、およびアイオー・コントローラ・ハブ(ICH)23が接続されている。
メイン・メモリ15は、CPU11が実行するプログラムの読み込み領域、処理データを書き込む作業領域として利用される揮発性のRAMである。メイン・メモリ15には、一般領域に加えてCPU11がSMMで動作するときに実行するコードをロードするための領域であるSMRAM領域が定義されている。GPU17には、ビデオ・メモリ(VRAM)21およびLCD19が接続されている。GPU17は、CPU11から受け取った描画命令に基づいてVRAM21にイメージを書き込み、所定のタイミングでLCD19に画像イメージのデータを送るための専用プロセッサで、グラフィックス・アクセラレータともいう。ICH23は周辺入出力デバイスに関するデータ転送を処理する。
ICH23は、USB(Universal Serial Bus)、シリアルATA(AT Attachment)、SPI (Serial Peripheral Interface)バス、 PCI(Peripheral Component Interconnect)バス、PCI−Expressバス、およびLPC(Low Pin Count)などのポートを備え、ハードディスク・ドライブ(HDD)25、26、USBコントローラ、およびLPCバス29などが接続されている。HDD25はブートディスクで、コンピュータ10が起動するときのブート・イメージを格納している。HDD26はセカンダリのドライブで、コンピュータ10は動作している間にHDD26を接続するいわゆるホットアタッチ機能をサポートする。
LPCバス29には、エンベデッド・コントローラ31およびBIOS_ROM33などの高速なデータ転送を要求しないデバイスが接続される。BIOS_ROM33は不揮発性で記憶内容の電気的な書き替えが可能なメモリであり、入出力デバイスを制御するためのデバイス・ドライバ、ACPI(Advanced Configuration and Power Interface)の規格に適合し電源およびシステム筐体内の温度などを管理するシステムBIOS、ベクタ・テーブル、コンピュータ10の起動時にハードウエアの試験や初期化を行うPOST(Power-On Self Test)コード、およびパスワード認証を行うための認証コードなどを格納する。
システムBIOSは、コンピュータ10の設定情報や固有情報を保有しており、他のプログラムから呼び出されたときに、保有する情報を提供するサービスを行う。システムBIOSの一部は、電源起動からのブートやサスペンドからのレジュームのタイミングのようにOSおよびビデオ・ドライバが実行されないときにLCD19に画像を表示するためのビデオBIOSで構成されている。BIOS_ROM33には周知の方法でハードウエアおよびソフトウエア上の保護が施され、そこに格納されているコードは正当性が保証されている。
[メイン・メモリのデータ構造]
図2は、メイン・メモリ15に本実施の形態の説明に必要なプログラムおよびベクタ・テーブルがロードされた様子を示す図である。メイン・メモリ15には、一般領域とSMRAM領域が定義されている。一般領域101には、BIOS_ROM33に格納されたプログラムおよびHDD25に格納されたオペレーティング・システム(OS)、デバイス・ドライバ、およびアプリケーション・プログラムなどがロードされる。BIOS_ROM33に格納されたプログラムがロードされるメイン・メモリ15の領域に対しては、通常MCH13により書き込み保護が施されているが、本実施の形態では不正プログラムにより書き込み保護が無効にされてプログラムが汚染されたり不正コードが埋め込まれたりする可能性があると想定する。
SMRAM領域103には、SMIハンドラ113と認証コード115がロードされ、さらにSSM(State Save Map)という領域が確保される。ベクタ・テーブル105は、それぞれセグメント・アドレスとオフセット・アドレスの4バイトで構成される256個のベクタ・アドレスを格納する。システムBIOS109は、INT命令で中断された元のルーチンに戻るためのIRET命令111を含む。IRET命令111は、ビデオBIOS107やPOSTコード108も含んでいるが、本実施の形態の説明に必要がないので図2からは省略している。
SMIハンドラ113は、SMIがアサートされたときに常に最初に実行されるコードある。SMIがアサートされたときにSMIハンドラ113は、MCH13のSMIレジスタ14を参照してSMIの発生要因を認識し、SMRAM領域103にロードされているプログラムまたは一般領域101にロードされているプログラムを呼び出してCPU11に実行させる。認証コード115は、コンピュータの起動時、サスペンド状態またはハイバネーション状態からの復帰時にパワーオン・パスワードまたはハードディスク・パスワードによる認証を処理するプログラムである。SSMは、CPU11がSMMに移行する直前のレジスタやポインタなどのコンテキストを格納する領域である。
BIOS_ROM33に格納されたコードは正当性が保証されている。したがって、コンピュータ10の電源が起動されてメイン・メモリ15にロードされOSに制御が移る前までは、正当性のあるプログラムだけが動作するので、図6で説明したような方法で不正プログラムがSMM特権を支配することはできない。しかし、OSが動作している間は、ネットワークや外部記録媒体を通じたりして、コンピュータ10に不正プログラムが進入し、一般領域101にロードされたプログラムを書き換えたり不正なコードを埋め込んだりしてSMM特権を支配する可能性が存在する。
[SMM特権を保護する手順]
SMM特権を保護する手順を図3および図4のフローチャートおよび図5のメイン・メモリの状態図に基づいて説明する。ブロック201でコンピュータ10の電源が投入されると、ブロック203でCPU11は、最初にBIOS_ROM33の所定のアドレスにアクセスしてPOSTコード108を実行しブートを開始する。POSTコード108はプロテクト・モードで実行されるが、ブート中に必要に応じてSMIをアサートしてCPU11をSMMで動作させる。POSTコード108は初期の段階でCPU11のレジスタ、MCH13、メイン・メモリ15などの検査と初期化を行い、メイン・メモリ15が利用可能な状態になるとブロック205でBIOS_ROM33のプログラムおよびベクタ・テーブル105を図2に示したようにメイン・メモリ15にロードする。
ブロック207でビデオBIOS107は、GPU17、VRAM21およびLCD19の検査と初期化を行う。ビデオBIOS107による検査と初期化の間にビデオBIOS107は初期化に使用したデータを削除したり、新たなデータを保有したりしてロードされたときの状態からコードの内容が変化するが、一旦初期化が完了するとそれ以降コードの内容が変化することはないので、ハッシュ値を計算して正当性の検証をすることができる。
ブロック209では、認証コード115を実行するためにPOSTコード108がSMIをアサートしてCPU11の動作をSMMに移行させる。POSTコード108が、MCH13のSMIレジスタ14を設定すると、MCH13はCPU11にSMI信号を送る。SMIがアサートされるとCPU11は、その時点でのレジスタやポインタの内容であるコンテキストをメイン・メモリ15のSSM117に格納して、MCH13に対してSMACTピンを通じてSMMで動作したことを通知する。CPU11がSMMで動作している間、MCH13はSMRAM領域のアドレスに対するアクセスは許容するが、SMMで動作していないときはSMRAM領域のアドレスに対するアクセスは、メイン・メモリ15の他のアドレスへのアクセスとして処理する。
CPU11は、SMMに移行すると最初に必ずSMIハンドラ113を実行する。SMIハンドラ113は、MCH13のSMIレジスタ14を参照してSMIの発生要因を調べ、POSTコード108により認証コード115の実行が要求されていることを知ると、認証コード115を実行する。ブロック211で認証コード115は、初期化の完了したビデオBIOS107のハッシュ値を計算してSMRAM領域103に格納する。この時点まではビデオBIOS107は不正プログラムで汚染される可能性がないため正当性が保証されている。ここで計算したビデオBIOS107のハッシュ値を基準ハッシュ値ということにする。
さらに認証コード115は、ベクタ・テーブル105からINT10hの割り込みタイプに対応するベクタ・アドレスを取得してSMRAM領域103に格納する。ビデオBIOS107は初期化が完了すると、自らコード内容を変更したり、正当なプログラムによりコード内容が変更されたりすることはない。したがってこれ以後のさまざまな段階で、ビデオBIOS107のハッシュ値を計算して基準ハッシュ値と比較することで、それぞれの段階でビデオBIOS107が不正プログラムにより汚染されているか否かを判断することができる。
ハッシュ値とベクタ・アドレスの格納が終わった認証コード115は、パワーオン・パスワード、ハードディスク・パスワード、ログオン・パスワードなどのパスワード認証を行う。ベクタ・テーブル105、ビデオBIOS107およびシステムBIOS109は不正プログラムで汚染されていないので、認証コードがINT10h命令を実行してビデオBIOS107を本来のエントリ・ポイントから実行し、ビデオBIOS107がINT15h命令を実行してシステムBIOS109を本来のエントリ・ポイントから実行することでパスワード認証をする。この時点では不正プログラムによりSMM特権が支配されることはない。
ブロック213で認証コード115はRSM(Return from System Management instruction)命令を実行して、MCH13がSMIをネゲートするようにSMIレジスタ14に設定する。認証コード115はSSM117に格納しておいたCPU11のコンテキストをCPU11に戻してCPU11をSMMからプロテクト・モードに移行させる。プロテクト・モードに移行したCPU11はSMMで動作する直前の状態からPOSTコード108の実行を再会する。図5(A)は、プロテクト・モードに移行する直前のメイン・メモリの状態を示している。その後残りのPOSTコード108が実行されてブートが完了する。
ブロック215ではOS、デバイス・ドライバおよびアプリケーション・プログラムのロードも含めてブートが完了し、コンピュータ10はプロテクト・モードで動作してOSの動作環境が構築される。ブロック217ではコンピュータ10がOSの動作環境で動作する間に、ベクタ・テーブル105、ビデオBIOS107、およびシステムBIOS109のすべてまたはいずれかが不正プログラムで汚染されることを想定する。汚染の形態には、不正プログラムがベクタ・テーブル105をフックしてINT命令による割り込み先を不正コードに誘導したり、ビデオBIOS107またはシステムBIOS109に不正コードを埋め込んだりすることが想定される。この様子を図5(B)に示す。
この状態でCPU11がSMMで動作するときに認証コード115がINT10h命令でビデオBIOS107を呼び出したり、ビデオBIOS107がINT15h命令でシステムBIOS109を呼び出したりすると、SMM特権が不正コードにより支配されてしまう。ブロック219では、コンピュータ10にセカンダリHDD26がホットアタッチされコンピュータ10の通常の動作として、一旦サスペンド状態に移行したあとただちに復帰動作(レジューム)が行われる。コンピュータ10は、レジュームのときにHDDパスワードの認証をすることになっているので、認証コード115はビデオBIOS107を呼び出す必要がある。サスペンド状態に移行するときにはBIOS_ROM33に格納された電源管理用のコードがMCH13に移行前の状態を設定する。
サスペンド状態からレジュームするときは、メイン・メモリ15にロードされていた図2に示すプログラムおよびベクタ・テーブル105は記憶が保持されているので、ブロック217での汚染が維持されている可能性がある。また、サスペンド状態ではGPU17、LCD19およびVRAM21の電源は停止するので、レジュームするときはPOSTコード108がそれらの検査および初期化を行う。CPU11はMCH13に設定された移行前の状態に応じて所定の位置からPOSTコード108の実行を開始する。
ブロック221でPOSTコード108はHDDパスワードの認証をするために、MCH13のSMIレジスタ14を設定してSMIをアサートする。SMI信号を受け取ったCPU11は、コンテキストをSSM117に格納するとSMIACK信号をMCH13に送ってSMMで動作していることを通知する。SMIハンドラ113は、SMIレジスタ14の内容を参照してSMIの発生要因を認識し認証コード115を実行する。
ブロック217で説明したように、コンピュータ10がOS環境で動作する間は、ベクタ・テーブル105およびビデオBIOS107は不正なプログラムで書き換えられることがある。認証コード115はLCD19にパスワードを要求するためのプロンプトを表示するためにビデオBIOS107を呼び出す必要があるが、SMM特権を保護するためには呼び出す前にビデオBIOS107とビデオBIOS107を呼び出すベクタ・アドレスの安全性を維持しておく必要がある。
ブロック223で認証コード115は、ベクタ・テーブル105のINT10hの割り込みタイプに対応するベクタ・アドレスが、ブロック211でSMRAM領域103に格納しておいたブート時のベクタ・アドレスと一致するか否かを検証し、一致していない場合は格納しておいたベクタ・アドレスに書き換える。なお、一致するか否かの検証を省いて、常に格納しておいたINT10hの割り込みタイプに対応するベクタ・アドレスをベクタ・テーブル105に書き込むようにしてもよい。そして、書き換える前のベクタ・アドレスをSMRAM領域103に格納する。認証コード115は、さらにビデオBIOS107のハッシュ値を計算する。
ブロック225で認証コード115は、ブロック223で計算したハッシュ値とブロック211でSMRAM領域103に格納しておいた基準ハッシュ値を比較して一致するか否かを判断する。ブロック225でハッシュ値が一致しないと判断した場合は、認証コード115はブロック227に移行してINT10h命令の実行を中止する。その結果、LCD19には、HDDパスワードの認証のためのプロンプトが表示されずセカンダリHDD26はコンピュータ10によって認識されない。その後認証コード115はブロック243でRSM命令を実行してCPU11をプロテクト・モードに移行させ、SSM117に格納したコンテキストをCPU11に設定してPOSTコード108を実行しサスペンド状態からのレジュームを完了する。
ブロック225でハッシュ値が一致すると判断した場合は、ビデオBIOS107は基準ハッシュ値を格納したときの状態から変更されていないことになるので認証コード115はビデオBIOS107の正当性を検証でき、かつINT10h命令を実行したときにビデオBIOS107の正しいエントリ・ポイントを呼ぶことも確保している。ただし認証コード115は、ビデオBIOS107がさらにINT15h命令で呼び出すシステムBIOS109の正当性を検証していないので、この時点ではまだINT10h命令を実行しない。
認証コード115はあらかじめメイン・メモリ15上でシステムBIOS109のIRET命令コード111が書き込まれているアドレスを知っている。また、システムBIOS109は、メイン・メモリ15にロードされている間に正当なプログラムまたは不正なプログラムにより、IRET命令コードのメイン・メモリ15上でのアドレスが変更される場合がある。認証コード115はブロック229で、ブロック229であらかじめ知っているIRET命令コード111が書き込まれているメイン・メモリ15上のアドレスに実際にIRET命令コード111が存在するか否かを検査する。
認証コード115はブロック231で、IRET命令111が既知のアドレスに存在すると判断した場合は、ブロック235に移動する。認証コードはブロック231で既知のアドレスにIRET命令コード111が存在しないと判断した場合は、ブロック233に移行してIRET命令コード111を既知のアドレスに書き込む。また、ベクタ・テーブル105のINT15hの割り込みタイプに対応するベクタ・アドレスがIRET命令コード111の既知のアドレスでない場合は、既知のアドレスになるようにベクタ・テーブル105を書き換えてブロック235に移行する。不正プログラムによりIRET命令111の既知のアドレスにジャンプ命令が埋め込まれていたり、INT15hの割り込みタイプに対応するベクタ・アドレスが不正コードのエントリ・ポイントにフックされていたりしても、この段階でINT15hのベクタ・アドレスが正当性のある認証コード115によりIRET命令コード111のアドレスになるように変更される。
なお、認証コード115はビデオBIOS107がINT15h命令を実行したときに、IRET命令コード111のアドレスがエントリ・ポイントになるようにベクタ・アドレス105およびIRET命令111またはそのいずれかを書き換えればよいので、認証コード115は自らが選択した任意のベクタ・アドレスとIRET命令コード111を書き込んでもよい。また、認証コード115は、ベクタ・アドレスおよびIRET命令コード111またはそのいずれかを書き換えた場合は、書き換える前の内容をSMRAM領域103に格納しておく。この手順ではシステムBIOS109が不正プログラムにより汚染されているか否かを検証することはできないが、ビデオBIOS107がINT15h命令を実行したときには、認証コード115によりIRET命令111だけが実行されることは保証される。したがって、INT15h命令の実行によりSMM特権が不正プログラムにより支配されることはなくなる。このときの様子を図5(C)に示す。
ブロック235では、認証コード115はLCD19にHDDパスワードの認証に必要なプロンプトを表示するために、INT10h命令を実行してビデオBIOS107の呼び出しを行う。その際認証コード115は、CPU11のその時点でのFLAGレジスタの値、CSレジスタの値、およびIPレジスタの値をメイン・メモリ15に確保されたスタック・セグメントにプッシュし、ベクタ・テーブル105のINT10hの割り込みタイプが示すアドレスに格納されているオフセット値とセグメント値をCPU11のIPレジスタとCSレジスタに設定すると、CPU11はビデオBIOS107を実行する。
ビデオBIOS107は、プロンプトの表示を行う作業を行う間にシステムBIOS109からシステムの設定情報やシステムの固有情報を取得することがある。たとえば、サスペンド状態からレジュームする際にはGPU17を再度設定する必要があるが、ビデオBIOS107はシステムの設定情報をシステムBIOS109から取得するために、INT15h命令を実行してシステムBIOS19を呼び出す。ビデオBIOS107は、CPU11のその時点でのFLAGレジスタの値、CSレジスタの値およびIPレジスタの値をメイン・メモリ15上のスタック・セグメントにプッシュし、ベクタ・テーブル105のINT15hが示すアドレスに格納されているオフセット値とセグメント値をCPU11のIPレジスタとCSレジスタに設定する。
INT15hの割り込みタイプに対応するベクタ・アドレスはブロック229〜ブロック233でIRET命令コード111のアドレスとなるように設定されているので、ブロック237ではINT15h命令が実行される。IRET命令111が実行されるとスタック・セグメントにプッシュされていたFLAGレジスタの値、CSレジスタの値およびIPレジスタの値がポップされCPU11はシステムBIOS109の実質的な命令コードを実行することなくビデオBIOS107の実行を再開する。
したがって、システムBIOS109やベクタ・テーブル105が不正プログラムで書き換えられても、ビデオBIOS107を実行する過程では不正プログラムの影響を排除することができる。ここでビデオBIOS107は、INT15h命令を実行してもシステムBIOS107から所定の情報を受け取ることはできないが、ビデオBIOS107はシステムBIOS109が保有する情報を受け取る必要がある場合はあらかじめ保有しているディフォルト値を使用することができる。ディフォルト値は、ビデオBIOS107がSMMにおける作業に必要な最低限の情報という意味もある。
本実施の形態は、ビデオBIOS107が呼び出すシステムBIOS109が、本来のエントリ・ポイントが指定されたときの命令コードをしないでもビデオBIOS107が認証コード115の要求に応えられる場合にだけ適用することができる。ここでの認証コード115からの要求はSMMで動作するときの要求である。プロテクト・モードで動作するときには、いずれかのプログラムがINT10h命令またはINT15h命令を実行したときにビデオBIOS107またはシステムBIOS109はそれぞれ本来のエントリ・ポイントから実行される必要がある。
ブロック239ではビデオBIOS107がIRET命令111を実行して認証コード115にCPU11の制御を移し、認証コード115はブロック223でSMRAM領域103に格納しておいたINT10hの割り込みタイプに対応する書き換えられたベクタ・アドレスを復元し、ブロック233でSMRAM領域103に格納しておいたINT15hの割り込みタイプに対応する書き換えられたIRET命令コード111およびベクタ・アドレスまたはいずれか一方を復元する。このときのメイン・メモリ15の状態を図5(D)に示す。
たとえば、OSが動作している間にユーザがプライマリのディスプレイを内部ディスプレイから外部ディスプレイに変更したときに、その設定情報をシステムBIOS107が保有しているような場合は、ビデオBIOS107がブロック237で設定情報としてディフォルト値を使用すると外部ディスプレイにはプロンプトが表示されない場合がある。プロンプトが外部ディスプレイに表示されるように設定する必要がある場合は、ブロック241で認証コード115は再度INT10h命令を実行してビデオBIOS107を実行する。このときのINT10h命令は、プロンプトを表示するディスプレイの選択といったような限定的なものであるため、ビデオBIOS107はシステムBIOS109を呼び出さないようにしたり、あるいは、ブロック233のようにIRET命令またはベクタ・アドレスを書き換えたりする。そして、CPU11のレジスタにプロンプトを表示するディスプレイを選択するためのファンクションを設定してINT10h命令を実行する。
ブロック243では、認証コード115がRSM命令を実行してSMIをネゲートしてSSM117に格納しておいたCPU11のコンテキストを元に戻すと、CPU11はブロック221でSMMに移行した直前の状態の動作をプロテクト・モードで再会する。CPU11は、ブロック221でSMIがアサートされブロック243でSMIがネゲートされるまでSMMで動作するが、この間にOSが動作するプロテクト・モードで不正プログラムにより汚染されうる一般領域101にロードされたビデオBIOS107が実行されても認証コード115によりそれらの正当性および安全性が確保されるのでSMM特権の剥奪の問題は生じない。ブロック243では、OSが動作するプロテクト・モードにおいて、OSやアプリケーションによって、ビデオBIOS107が実行されることがある。このとき、ビデオBIOS107やシステムBIOS109は、図5(D)に示すように不正プログラムで汚染されている可能性はあるが、OS動作環境におけるプロテクト・モードで実行されるので、SMM特権が不正プログラムにより支配されることはない。ブロック245では、いずれかのプログラムから他の理由でSMIアサートがありSMMで動作する間にビデオBIOS107を呼び出すことがある場合は、ブロック221に移行する。
SMM特権を保護する他の方法として、ビデオBIOS107だけでなくシステムBIOS109の基準ハッシュ値も計算して、ビデオBIOS109をコールする都度計算したシステムBIOS109のハッシュ値と基準ハッシュ値を比較する方法が考えられる。しかし、システムBIOS109のハッシュ値は、ブート時にだけ動作するコードだけでなくOSが動作している間に提供するランタイム・サービスのために動作するコードまで含めて計算する必要があるので時間がかかる。これに対して本発明では、システムBIOS109に対してINT15h命令で呼び出すときの安全性を確保するためのオーバヘッドは必要がない。
さらに、システムBIOS109はOSが動作している間に、自身のメイン・メモリ上での記憶領域にシステムの設定情報を記憶する場合がある。この場合には、ビデオBIOS107のようにハッシュ値による正当性の検証をすることはできないので、IRET命令によるSMM特権の保護は有効である。
上記の手順では、ビデオBIOSがINT15h命令を実行したときにシステムBIOS109のIRET命令111だけが実行されてビデオBIOS107にCPU11の制御が戻るようにしているが、本発明はIRET命令だけが実行される場合に限定するものではない。たとえば認証コード115は、みずから書き込んだベクタ・アドレスのエントリ・ポイントにジャンプ命令を書き込み、システムBIOS109が実質的な命令コードを実行しないでIRET命令を実行してビデオBIOSに制御が戻るようにすることもできる。
ビデオBIOS109が認証コード115の要求に応えるために、システムBIOS109のサービスが必要ないとすれば、認証コード115がINT10h命令を実行したときにはINT15h命令を実行しないようにビデオBIOS115のコードを作成することも考えられる。しかし、ビデオBIOS115は、プロテクト・モードで動作する他のプログラムからINT10h命令が実行されたときは、INT15h命令を実行してシステムBIOS109のサービスを利用する必要がある。そしてビデオBIOS115はINT10h命令がSMMで実行されたのかプロテクト・モードで実行されたのかを認識することはできないので、この方法の実現は困難である。
本発明は、SMMで動作する間に呼び出されるSMRAM領域以外の領域にロードされるコードは、ビデオBIOSに限定するものではなく、他のデバイス・コントローラを制御するコードに適用することが可能である。たとえば、SMMのコードがディスクのコントローラを制御するオプションROMのコードをコールし、オプションROMのコードがシステムBIOSをコールするような場合にも適用することができる。またIRET命令は、割り込みルーチンが元のルーチンに戻るときに実行するアセンブラ言語の命令コードであるが、BIOSのコードを他の言語で作成するときは同じ機能を果たす他の命令コードであってもよい。
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
15…メイン・メモリ
101…一般領域
103…SMRAM領域
105…ベクタ・テーブル
107…ビデオBIOS
109…システムBIOS
115…認証コード

Claims (14)

  1. システム管理モードで動作することが可能なプロセッサと、一般領域と前記システム管理モードで使用するSMRAM領域とが定義されたメイン・メモリを有するコンピュータに、
    前記SMRAM領域にSMMプログラムをロードし、前記一般領域に第1のプログラムと第2のプログラムとベクタ・テーブルをロードするステップと、
    前記SMMプログラムが前記第1のプログラムの基準ハッシュ値を計算して前記SMRAM領域に記憶するステップと、
    前記コンピュータがオペレーティング・システムの動作環境で動作したあとに前記SMMプログラムが前記第1のプログラムのハッシュ値を計算して前記基準ハッシュ値と比較するステップと、
    前記計算したハッシュ値と前記基準ハッシュ値が一致した場合に前記SMMプログラムが前記第1のプログラムを呼び出すステップと
    を有する処理を実行させるコンピュータ・プログラム。
  2. 前記基準ハッシュ値を計算するステップを、前記コンピュータのブートが完了する前に行う請求項1に記載のコンピュータ・プログラム。
  3. 前記オペレーティング・システムが動作する前に前記ベクタ・テーブルから取得した前記第1のプログラムを呼び出す割り込みタイプに対応するベクタ・アドレスを前記SMMプログラムが前記SMRAM領域に記憶するステップと、
    前記第1のプログラムを呼び出すステップを実行する前に前記第1のプログラムを呼び出す割り込みタイプに対応するベクタ・アドレスを前記SMMプログラムが前記SMRAM領域に記憶したベクタ・アドレスで書き換えるステップと
    を有する請求項1または請求項2に記載のコンピュータ・プログラム。
  4. 前記第1のプログラムを呼び出すステップを実行したあとに、前記第1のプログラムを呼び出す割り込みタイプに対応する前記書き換えられたベクタ・アドレスを前記ベクタ・テーブルに戻すステップを有する請求項3に記載のコンピュータ・プログラム。
  5. 前記第1のプログラムが前記システム管理モードにおいて前記第2のプログラムを呼び出す命令を実行したときに前記第2のプログラムが実質的な命令コードを実行しないで前記第1のプログラムに戻る命令コードを実行するように前記第2のプログラムを呼び出す割り込みタイプに対応するベクタ・アドレスおよび前記第1のプログラムに戻る命令コードまたはそれらのいずれか一方を前記SMMプログラムが書き換えるステップと、
    前記書き換えるステップを実行したあとに前記第1のプログラムが前記システム管理モードにおいて前記第2のプログラムを呼び出すステップと
    を有する請求項1から請求項4のいずれかに記載のコンピュータ・プログラム。
  6. 前記第1のプログラムに戻る命令コードがIRET命令コードである請求項5に記載のコンピュータ・プログラム。
  7. 前記第2のプログラムを呼び出すステップのあとに書き換えられた前記第2のプログラムを呼び出す割り込みタイプに対応するベクタ・アドレスおよび前記第1のプログラムに戻る命令コードまたはそれらのいずれか一方を書き換える前の状態に戻すステップを有する請求項5または請求項6に記載のコンピュータ・プログラム。
  8. 前記SMMプログラムがパスワード認証を行うプログラムであり、前記第1のプログラムがビデオ・チップを制御するビデオBIOSであり前記第2のプログラムがシステム情報を提供するシステムBIOSである請求項1から請求項7のいずれかに記載のコンピュータ・プログラム。
  9. 前記基準ハッシュ値と比較するステップおよび前記第1のプログラムを呼び出すステップを、前記コンピュータがサスペンドからレジュームする間に行う請求項1から請求項8のいずれかに記載のコンピュータ・プログラム。
  10. システム管理モードで動作することが可能なプロセッサを備えるコンピュータであって、
    SMIがアサートされたときに実行されるSMMプログラムを格納した不揮発性メモリと、
    前記プロセッサを前記システム管理モードで動作させるために前記SMIをアサートするチップ・セットと、
    前記SMMプログラムがロードされるSMRAM領域と、第1のプログラム、第2のプログラムおよびベクタ・テーブルがロードされる一般領域とが定義されたメイン・メモリとを有し、
    前記SMMプログラムは前記コンピュータに、前記第1のプログラムの基準ハッシュ値を計算させ、前記コンピュータがオペレーティング・システムの動作環境で動作したあとで前記チップ・セットが前記SMIをアサートしている間に、前記第1のプログラムのハッシュ値を計算し、該計算したハッシュ値と前記基準ハッシュ値とを比較してから前記システム管理モードで前記第1のプログラムを呼び出す処理を実行させるコンピュータ。
  11. 前記SMMプログラムは前記コンピュータに、前記オペレーティング・システムが動作する前にベクタ・テーブルから取得した前記第1のプログラムを呼び出す割り込みタイプに対応するベクタ・アドレスを前記SMRAM領域に記憶させ、前記第1のプログラムを呼び出す前に前記SMRAM領域に記憶したベクタ・アドレスを使って前記第1のプログラムを呼び出したときに前記第1のプログラムが呼び出されるように前記ベクタ・テーブルを構成する処理を実行させる請求項10に記載のコンピュータ。
  12. 前記SMMプログラムは前記コンピュータに、前記第1のプログラムが前記システム管理モードにおいて前記第2のプログラムを呼び出したときに前記第2のプログラムを実質的に実行しないで前記第1のプログラムに戻るように前記第2のプログラムのコードおよびベクタ・アドレスまたはいずれか一方を書き換える処理を実行させる請求項10または請求項11に記載のコンピュータ。
  13. 前記第1のプログラムが前記SMMプログラムからINT10h命令で呼び出されるビデオBIOSで前記第2のプログラムが前記ビデオBIOSからINT15h命令で呼び出されるシステムBIOSで、前記第2のプログラムのコードがIRET命令コードである請求項12に記載のコンピュータ。
  14. 前記チップ・セットは前記コンピュータがサスペンド状態からレジュームする際に前記SMIをアサートする請求項13に記載のコンピュータ。
JP2009223662A 2009-09-29 2009-09-29 システム管理モードの特権レベルを保護するコンピュータ Active JP5335634B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009223662A JP5335634B2 (ja) 2009-09-29 2009-09-29 システム管理モードの特権レベルを保護するコンピュータ
US12/874,622 US8694794B2 (en) 2009-09-29 2010-09-02 Method for protecting a privilege level of system management mode of a computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009223662A JP5335634B2 (ja) 2009-09-29 2009-09-29 システム管理モードの特権レベルを保護するコンピュータ

Publications (2)

Publication Number Publication Date
JP2011076134A JP2011076134A (ja) 2011-04-14
JP5335634B2 true JP5335634B2 (ja) 2013-11-06

Family

ID=43781594

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009223662A Active JP5335634B2 (ja) 2009-09-29 2009-09-29 システム管理モードの特権レベルを保護するコンピュータ

Country Status (2)

Country Link
US (1) US8694794B2 (ja)
JP (1) JP5335634B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819225B2 (en) * 2010-11-15 2014-08-26 George Mason Research Foundation, Inc. Hardware-assisted integrity monitor
JP5561791B2 (ja) * 2011-08-31 2014-07-30 エヌイーシーコンピュータテクノ株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
TWI467408B (zh) * 2011-11-15 2015-01-01 Mstar Semiconductor Inc 嵌入式元件與控制方法
US20140274305A1 (en) * 2013-03-15 2014-09-18 Wms Gaming, Inc. Smi for electronic gaming machine security and stability
US9690942B2 (en) * 2014-10-22 2017-06-27 Hong Fu Jin Precision Industry (Wuhan) Co., Ltd. SIO device with SPI bus gateway controller for write protection
DE102015211458A1 (de) * 2015-06-22 2016-12-22 Robert Bosch Gmbh Verfahren und Vorrichtung zum Absichern einer Programmzählerstruktur eines Prozessorsystems und zum Überwachen der Behandlung einer Unterbrechungsanfrage
US9996279B2 (en) * 2015-12-18 2018-06-12 Intel Corporation Integrity protection for system management mode
EP3314514B1 (en) * 2016-01-25 2020-01-22 Hewlett-Packard Development Company, L.P. Protecting basic input/output (bios) code
EP3314516B1 (en) * 2016-01-26 2022-04-13 Hewlett-Packard Development Company, L.P. System management mode privilege architecture
US11003461B2 (en) * 2019-03-29 2021-05-11 Dell Products L.P. Boot process security self-check system
US11386234B2 (en) * 2019-12-17 2022-07-12 Nuvoton Technology Corporation Security systems and methods for integrated circuits
KR102322887B1 (ko) * 2020-02-05 2021-11-05 효성중공업 주식회사 Hvdc 시스템의 프로그램 안전성 확보 방법 및 이를 이용한 hvdc 시스템
KR20220132161A (ko) * 2021-03-23 2022-09-30 삼성전자주식회사 뉴럴 네트워크에 대한 해시 인증을 수행하는 전자 장치 및 그 동작 방법

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6557104B2 (en) * 1997-05-02 2003-04-29 Phoenix Technologies Ltd. Method and apparatus for secure processing of cryptographic keys
US6715074B1 (en) 1999-07-27 2004-03-30 Hewlett-Packard Development Company, L.P. Virus resistant and hardware independent method of flashing system bios
JP3561211B2 (ja) * 2000-06-27 2004-09-02 株式会社東芝 情報処理装置および不揮発性記憶装置の書き換え制御方法
JP3863447B2 (ja) * 2002-03-08 2006-12-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 認証システム、ファームウェア装置、電気機器、及び認証方法
US20050289311A1 (en) 2004-06-29 2005-12-29 David Durham System and method for secure inter-platform and intra-platform communications
US8806224B2 (en) * 2005-06-28 2014-08-12 Intel Corporation Low cost trusted platform
US7433985B2 (en) * 2005-12-28 2008-10-07 Intel Corporation Conditional and vectored system management interrupts
JP4769608B2 (ja) * 2006-03-22 2011-09-07 富士通株式会社 起動検証機能を有する情報処理装置
US20090172639A1 (en) * 2007-12-27 2009-07-02 Mahesh Natu Firmware integrity verification
US7984286B2 (en) * 2008-06-25 2011-07-19 Intel Corporation Apparatus and method for secure boot environment
US8832454B2 (en) * 2008-12-30 2014-09-09 Intel Corporation Apparatus and method for runtime integrity verification
US8151027B2 (en) * 2009-04-08 2012-04-03 Intel Corporation System management mode inter-processor interrupt redirection

Also Published As

Publication number Publication date
US20110078408A1 (en) 2011-03-31
US8694794B2 (en) 2014-04-08
JP2011076134A (ja) 2011-04-14

Similar Documents

Publication Publication Date Title
JP5335634B2 (ja) システム管理モードの特権レベルを保護するコンピュータ
EP1209563B1 (en) Method and system for allowing code to be securely initialized in a computer
JP6404283B2 (ja) 安全な環境を初期化する命令を実行するシステムおよび方法
US7028149B2 (en) System and method for resetting a platform configuration register
KR101263061B1 (ko) 점대점 상호연결 시스템 상에서의 보안 환경 초기화 명령의실행
JP4793733B2 (ja) 高インテグリティファームウェア
TWI539320B (zh) 用以執行強制安全政策於作業系統獨立之防毒掃描器上的方法及裝置
JP5346608B2 (ja) 情報処理装置およびファイル検証システム
KR20150038574A (ko) 타겟 디바이스의 능동 모니터링, 메모리 보호 및 무결성 검증을 위한 방법, 시스템 및 컴퓨터 판독 가능 매체
WO2015174512A1 (ja) 情報処理装置、情報処理監視方法、プログラム、及び記録媒体
US11188321B2 (en) Processing device and software execution control method
KR20220070462A (ko) 부트로더를 위한 보안 버퍼
JP6204555B1 (ja) 不揮発性メモリに格納した変数を保護する方法、システム・ファームウェアおよびコンピュータ
BR102019017566A2 (pt) Sistema e método de identificação de ameaças e proteção de dados e informações armazenados em dispositivos eletrônicos
Vasudevan et al. Integrity-Protected Micro-Hypervisor on x86 and ARM Hardware Virtualized Platforms
Parno et al. How Do We Make Sense of Platform State?

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111005

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130521

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130708

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130730

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130731

R150 Certificate of patent or registration of utility model

Ref document number: 5335634

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250