(57)【特許請求の範囲】
【請求項１】
コンピュータ・システムであって、
内部通信バスと、算術論理演算ユニット（ＡＬＵ）と、浮動小数点演算ユニット（ＦＰＵ）と、他のプロセッサ・コンポーネントと、命令デコーダと、命令ポインタ・コンポーネントと、レジスタと、リセット・コンポーネントと、メモリと、前記メモリに接続され、メモリ・コントローラ、アクセス・チェック・コンポーネント及びキャッシュを有するメモリ制御ユニットとを含み、
前記ＡＬＵ、前記ＦＰＵ、前記他のプロセッサ・コンポーネント、前記命令デコーダ、前記命令ポインタ・コンポーネント、前記レジスタ、前記リセット・コンポーネント及び前記メモリ制御ユニットは、前記内部通信バスにより相互に接続され、
保護可能メモリをさらに含み、前記保護可能メモリは、前記メモリ制御ユニットに接続され、前記メモリ制御ユニットは、さらにトラップドア・コンポーネントを有し、前記保護可能メモリのアクセス権は、前記トラップドア・コンポーネントにより制御され、
前記命令デコーダは、前記保護可能メモリを書き込み保護モードに切り換えるための書き込み保護機械コード命令を処理し、
超特権デコーダをさらに含み、前記超特権デコーダは、ファームウェア・コンポーネント又はハイパーバイザによって与えられる前記保護可能メモリを書き込みイネーブル・モードに切り換えるための書き込みイネーブル機械コード命令を処理し、
トラップドア・リセット・コンポーネントをさらに含み、前記トラップドア・リセット・コンポーネントは、前記超特権デコーダ、前記リセット・コンポーネント及び前記トラップドア・コンポーネントに接続され、前記超特権デコーダでデコードされた前記書き込みイネーブル機械コード命令を前記トラップドア・コンポーネントに送り、
前記トラップドア・コンポーネントは、送られた前記書き込みイネーブル機械コード命令により、前記保護可能メモリを書き込みイネーブル・モードに切り換える、
コンピュータ・システム。
【請求項２】
前記命令デコーダは、前記書き込みイネーブル機械コード命令を処理しない、請求項１に記載のコンピュータ・システム。
【請求項３】
前記トラップドア・コンポーネントは、前記内部通信バスから切り離されている、請求項１又は２に記載のコンピュータ・システム。
【請求項４】
前記リセット・コンポーネントは、ハードウェア電源オン又はハードウェア・リセット信号を、前記内部通信バス及び前記トラップドア・リセット・コンポーネントに与える、請求項１、２又は３に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不正な（unauthorized）変更からオペレーティング・システムを保護するためのコンピュータ化された方法、コンピュータ・システム及びコンピュータ・プログラム製品に関する。
【背景技術】
【０００２】
今日、多くのコンピュータ・システムは、ウイルス、トロイの木馬、ワーム、ルートキットなどから非常に攻撃を受けやすい。これらの攻撃は、甚大な経済的損失をもたらし得る。これらの攻撃は、システムの機能的性能を低下させるだけでなく、例えば、バンキング・システムにおける基幹データ及びプロセスのセキュリティ及び完全性を危険にさらすことがある。
【０００３】
コンピュータ・ウィルスは、それ自体をコピーしてコンピュータに感染させ得るコンピュータ・プログラムである。ウイルス及び他のタイプの悪意のあるソフトウェア・プログラムは、ウイルスに属するコード・シーケンスが実行されるように、ネットワークを介して自動的に広がり、データ又は実行コードを操作することができる。一部のマルウェア（malware）プログラムは、コンピュータ・ユーザの目につくような兆候を有するが、多くのものは人目につかない。
【０００４】
殆どのコンピュータ・システムは、ウイルス・チェッカー又はファイアウォールのような、何らかのタイプの保護システムを実装する。こうしたウイルス・スキャン・プログラムは、ウイルスを識別するものと考えられる特定のデータ・パターンの探索を行う。この手法の重大な欠点は、ウイルス・スキャナが、専門家によって分析されたウイルスの知識を必要とすることである。ウイルス感染を検出することができるにすぎず、これを防止するものではない。ウイルス・スキャナが定期的に更新されたとしても、システムは、依然として新しいウイルスに対して脆弱なままであり得る。さらに、誤って、探索されたバイト・シーケンスが感染していないデータ内に見出されることがある。コンピュータ・システムからのウイルスの除去は、扱いが難しく、エラーを起こしやすい。
【０００５】
残念なことに、悪意のあるパーティ及びハッカーによる攻撃は、周知の保護システムを破るようにますます巧妙化している。ウイルスは、それ自体を暗号化するように、及び／又は、何らかの変異を起こすようにプログラムされ得る。その両方によりウイルスのバイナリ署名が変化し、そのためウイルスが検出されないままになることがある。
【０００６】
さらに別の悪意のあるソフトウェアの例は、オペレーティング・システムにおける脆弱性を利用して殆どの周知の保護システムを完全に回避する、いわゆるルートキット（root kit）である。ルートキットという用語は、もともとは、ルート・アクセスを与えたＵｎｉｘのようなオペレーティング・システムのための、悪意をもって変更された組の管理ツールを指すものであった。侵入者が、システム上の標準的な管理ツールをルートキットに置き換えることができた場合、変更されたツールは、正当なシステム管理者からこれらの動作を隠しながら、保護システムが開始される前に、侵入者が高い特権を得ることを可能にする。カーネル・ベースのルートキットは、オペレーティング・システムのカーネル又はドライバに直接インストールされ、例えば、アンチ・ウイルス又はアンチ・スパイウェア・スキャンによって、検出し、防止することが著しく困難である。ルートキットはまた、ログイン機構を、秘密のログインの組み合わせを受け入れる実行ファイルに置き換えることによって、「バックドア」をシステム内にインストールし、これにより、システム上の実際のアカウントへの変更には関係なく、攻撃者がシステムにアクセスすることが可能になる。
【０００７】
特許文献１は、コンピュータ・システム内に格納されたコンピュータ・プログラム及びいずれかの種類のデータが操作されるのを防止するための方法及びデータ処理システムを開示する。コンピュータ・システムは、ストレージ手段と、ストレージ手段を書き込み保護（書き込み禁止、write-protected）モードに切り換えるための手段とを含む。起動の際、又はアプリケーション・プログラムのインストール・プロセス中、以下のステップ：すなわち、（ａ）ユーザに、書き込み保護可能（write-protectable）ストレージ領域への書き込みを一時的に許可する切換を実行するように促すステップであって、切換手段は、オペレーティング・システムの外部からのみ作動可能である、ステップ、（ｂ）書き込み保護可能ストレージ領域内にセキュリティ関連情報を格納するステップ、（ｃ）ユーザに、書き込み保護可能ストレージ領域への書き込みを制限するための手動切換を実行するように促すステップ、（ｄ）手動切換に応答して、コンピュータ・システムのさらなるランタイムの間、書き込み保護されたストレージ領域へのいかなる書き込みアクセスも制限するステップ、が提案される。
【０００８】
特許文献２は、仮想マシン・モニタ（ＶＭＭ）技術を利用する、コンピュータ・システムの仮想保護システム（ＶＰＳ）を開示している。コンピュータ・システムへの特権的アクセスによって、第１のオペレーティング・システムが起動される。付加的なオペレーティング・システムによるコンピュータ・システムのメモリの部分へのアクセスは、読み出し専用アクセスに制限される。しかしながら、第１のオペレーティング・システムを介して、メモリの部分への無制限アクセスがエミュレートされる。
【０００９】
従来技術のコンピュータ・システムにおいては、オペレーティング・システムが、複数のユーザ及びカーネル・プロセスからのメモリ・アクセス動作を制御する。こうしたユーザ・プロセスは、例えば、ｅメ−ル・プログラム又はテキスト処理プログラムとすることができる。オペレーティング・システムは、１つ又は複数の特定のユーザ・プロセスに対する特定のメモリ部分への書き込みアクセスのみを許可し、この特定のメモリ部分を、他のユーザ・プロセスからの書き込みアクセス試行から保護する。オペレーティング・システムはまた、ユーザ・プロセスが、オペレーティング・システムのカーネル・プロセスに割り当てられたメモリ部分に書き込みアクセスするのを禁止する。しかしながら、このアクセス制御は、ハッカーの攻撃からオペレーティング・システムを保護できない。
【００１０】
ソフトウェア・ベースの手法は、従来技術において長い間知られており、それらの手法は、いったんハッカーが保護されるべきコンピュータ・システム上の管理者特権を入手すると、回避することができるという主要な欠点を有する。従って、コンピュータ・システムを、ますます巧妙化した攻撃から保護し、周知の保護システムの欠陥を回避することが望ましい。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】国際公開第２００８／１３８６５３  Ａ１号パンフレット
【特許文献２】米国特許出願公開第２００７／０００５９１９  Ａ１号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１２】
従って、本発明の実施形態の目的は、不正な変更からメモリを保護するためのコンピュータ化された方法及びコンピュータ・システムを提供することである。
【課題を解決するための手段】
【００１３】
本発明の第１の態様によると、中央処理装置（ＣＰＵ）及び作業メモリを有するコンピュータ・システムにおいて不正な変更からオペレーティング・システム（ＯＳ）を保護するためのコンピュータ化された方法を提供する。この方法は、以下のステップを含む。すなわち、ＯＳの部分を、書き込み保護されるように事前に定義する。ＯＳを作業メモリ内にロードすることによって、コンピュータ・システムを開始する。ＣＰＵによって実行される書き込み保護機械コード命令を開始して、事前定義済みＯＳ部分を含む作業メモリ部分を書き込み保護モードに不可逆的に切り換える特定のＯＳコマンドに達することによって、事前定義済みＯＳ部分のロードを終了する。
【００１４】
本発明による代替的な態様において、事前定義済みＯＳ部分を含む作業メモリ部分の書き込みイネーブル（write-enable）モードへの切り換え復帰を開始するＯＳコマンドが禁止される。書き込み保護機械コード命令が、ＣＰＵによって与えられる。書き込み保護機械コード命令は、特定のメモリ・アドレスにアクセスすることによってトリガされ得る。書き込み保護機械コード命令は、書き込み保護モードをＣＰＵに示すことによって、事前定義済みＯＳ部分を含む作業メモリ部分へのアクセス権を制御するストレージ・キーと関連付けられる。ストレージ・キーは、メモリ部分へのアクセス権を記述するストア情報に一般化することができる。
【００１５】
本発明によるさらに別の代替態様において、所定の時間間隔が経過した後、時間コンポーネントが書き込み保護機械コード命令を開始する。所定の時間間隔の計測は、リアルタイム・クロックに基づいていることがより好ましい。代替的に、所定の時間間隔の計測は、ＯＳによって実行される命令カウントに基づいている。この命令が仮想環境の仮想処理装置によって実行されることが、さらに一層好ましい。所定の時間間隔の計測は、仮想環境の仮想処理装置のサイクル・カウントに基づいていることがより好ましい。
【００１６】
本発明による別の代替的態様において、書き込みイネーブル機械コード命令が、事前定義済みＯＳ部分を含むメモリ部分を書き込みイネーブル・モードに切り換えるように、ＣＰＵによって実行されるＯＳの外部のリセット・プロセスによって開始される。リセット・プロセスはＯＳの外部のハイパーバイザによってもたらされ、ハイパーバイザはＯＳに仮想環境をもたらすことがより好ましい。
【００１７】
本発明の第２の態様によると、書き込み保護機械コード命令を実行して、オペレーティング・システム（ＯＳ）の事前定義済み部分を含む作業メモリの部分を書き込み保護モードに不可逆的に切り換えるための適合された手段を含む中央処理装置（ＣＰＵ）が提供される。ＯＳを作業メモリにロードすることによってコンピュータ・システムを開始し、ＣＰＵによって実行される書き込み保護機械コード命令を開始する特定のＯＳコマンドに達して、事前定義済みＯＳ部分のロードを終了する。
【００１８】
本発明の第３の態様によると、不正な変更から保護されるオペレーティング・システム（ＯＳ）、中央処理装置（ＣＰＵ）及び作業メモリを含むコンピュータ・システムが提供される。書き込み保護されるように、ＯＳの部分が事前に定義される。コンピュータ・システムの適合された手段が、ＯＳを作業メモリにロードすることによって開始し、ＣＰＵによって実行される書き込み保護機械コード命令を開始して、事前定義済みＯＳ部分を含む作業メモリ部分を書き込み保護モードに不可逆的に切り換える特定のＯＳコマンドに達することによって、事前定義済みＯＳ部分のロードを終了する。
【００１９】
本発明の第４の態様によると、不正な変更からオペレーティング・システム（ＯＳ）を保護するためのコンピュータ・プログラム製品が提供される。このコンピュータ・プログラム製品は、コンピュータ使用可能プログラム・コードが具体化されたコンピュータ使用可能媒体を含む。コンピュータ使用可能プログラム・コードは、第１の態様のステップを実行するように構成される。
【００２０】
付加的な特徴及び利点が、本発明の技術を通して実現される。本発明の他の実施形態及び態様は、本明細書において詳細に説明され、本発明の一部分と見なされる。利点及び特徴を有する本発明をより良く理解するために、説明及び図面を参照されたい。
【００２１】
本発明と考えられる主題は、本明細書の終わりの特許請求の範囲において具体的に示され、明確に特許請求されている。本発明の前述及び他の目的、特徴、並びに利点は、添付図面と関連して用いられる以下の詳細な説明から明らかである。
【図面の簡単な説明】
【００２２】
【図１】本発明の一実施形態による、オペレーティング・システムを保護する方法のフローチャートを示す。
【図２】本発明の一実施形態による、コンピュータ・システムの異なる段階のブロック図を示す。
【図３】本発明の一実施形態による、コンピュータ・システムの異なる段階のブロック図を示す。
【図４】本発明の一実施形態による、コンピュータ・システムの異なる段階のブロック図を示す。
【図５】本発明の一実施形態による、コンピュータ・システムの異なる段階のブロック図を示す。
【図６】従来技術によるコンピュータ・システムの詳細なブロック図を示す。
【図７】本発明の一実施形態による、コンピュータ・システムの詳細なブロック図を示す。
【発明を実施するための形態】
【００２３】
好ましい実施形態において、従来技術のコンピュータ・システムのソフトウェア及びハードウェア能力を拡張することによって、メモリ・コンテンツの望ましくない操作からの保護が達成された。オペレーティング・システムは、典型的には、ウイルス又はハッカー攻撃によって変更されるセキュリティ上重要な（security-critical）情報を識別し、この情報を、書き込みイネーブル・モードから書き込み保護モードに切り換えることができるメモリの特定の部分にロードすることができる。このロード手続き中、メモリ部分は、書き込みイネーブル・モードにある、即ち、コンピュータ・システムのプロセッサの機械コード命令が、特定の記憶場所のコンテンツを変更することができる。このロードは、オペレーティング・システムの起動手続き、オペレーティング・システム・コンポーネントのインストール、又はオペレーティング・システムの初期化の一部とすることができる。このロードは、必ずしもオペレーティング・システムのカーネル・コンポーネントに制限されるわけではなく、基幹アプリケーションのセキュリティ関連コンポーネントに適用することもできる。このように保護される情報は、例えばＷｉｎｄｏｗｓ又はＬｉｎｕｘオペレーティング・システム・コアなどの幾つかの実行可能コード、並びに、例えばＬｉｎｕｘシステム呼び出しテーブルなどのセキュリティ上重要なデータ構造体を含むことができる。ロードが完了した後、特定のメモリ部分が書き込み保護モードに切り換えられ、オペレーティング・システムのカーネル及びアプリケーションは、通常のシステム動作を続ける。例えば、Ｌｉｎｕｘにおけるユーザ空間処理を管理するためのデータ構造体など、通常のシステム動作中に変更する必要があるデータ構造体は、書き込み保護可能でない通常のメモリ内に格納される。通常のシステム動作中、書き込み保護メモリ領域内に格納されたプログラム・コード及びセキュリティ上重要なデータは、あたかも通常のランダム・アクセス・メモリ（ＲＡＭ）内に格納されているかのように読み出すことができる。しかしながら、書き込み保護が再びディスエーブルにされるまで、アプリケーション、オペレーティング・システム・カーネル、及びあらゆるプロセスに関する書き込みが禁止される。対応する機構を以下に説明する。書き込み保護は、攻撃者が、オペレーティング・システムの特定の部分におけるセキュリティ関連情報を変更するのを防止する。攻撃者が、こうした書き込み保護メモリ領域に書き込もうと試みると、警告を発して、攻撃の試行の検出を示すことができる。
【００２４】
好ましい実施形態は、書き込み保護モードから書き込みイネーブル・モードへの遷移及びその逆の遷移に対するトリガ、並びにこれらのトリガについての一組の実装に基づいた、書き込み保護管理の実施を開示する。
【００２５】
書き込み保護可能メモリ領域を書き込みイネーブル・モードに切り換えるトリガは、以下の３つのタイプのうちの１つとすることができる。
【００２６】
第１に、ハードウェアの電源オン又はハードウェアのリセット動作は、典型的には、機械式スイッチ又はボタンを手動で作動させることによりトリガされる。代替的に、外部のハードウェア・コンポーネントによって制御される電気スイッチを考えることもできる。これらの電源オン又はリセット動作の後、書き込み保護可能メモリの初期モードは、書き込みイネーブルされるべきである。通常のシステム動作中、スイッチは、メモリの全ての部分に対して、又は特定の書き込み保護可能部分に対してのみ、効果を有することができる。
【００２７】
第２に、トリガは、メモリの書き込みがイネーブルにされた特定の部分に対するソフトウェア・コマンドとすることができる。このソフトウェア・コマンドには、保護されるオペレーティング・システム内から発行することができないように特権を与える必要がある。仮想環境においては、仮想機械（ＶＭ）は、例えば、Ｌｉｎｕｘなどのゲスト・オペレーティング・システムを実行している。仮想環境を提供するハイパーバイザ、又はホスト・オペレーティング・システムは、ゲスト・オペレーティング・システムの外部にある。ハイパーバイザは、これらの特定のメモリ部分を書き込みイネーブル・モードに切り換えるためのソフト・コマンドを発行するように適合させることができる。保護されるオペレーティング・システムに関する管理者権限を有する特権ユーザは、このソフトウェア・コマンドの実行を許可してはならないことが極めて重要である。
【００２８】
第３に、仮想環境において、ハードウェアの電源オン又はリセットと同じように、保護されるサブシステムの開始又はリセットが、書き込み保護可能メモリ領域を書き込みイネーブル・モードに切り換えることが可能である。サブシステムは、ゲスト・オペレーティング・システム又は特定のプロセス・コンテキストとすることができる。
【００２９】
３つのタイプのトリガは、次のように書き込み保護可能メモリ領域を書き込み保護モードに切り換えることができる。
【００３０】
第１に、ＧＵＩ要素を選択すること又はソフトウェア・コマンドを入力することによって、機械若しくは電気式スイッチを介して又はグラフィカル・ユーザ・インターフェースを介して書き込み保護モードを作動させるように、ユーザに促すことができる。
【００３１】
第２に、書き込み保護モードは、保護されるオペレーティング・システムにより発行されるソフトウェア・コマンドによって作動させることができる。このソフトウェア・コマンドは、保護される情報が書き込み保護可能メモリ領域に書き込まれた直後に実行されることが好ましい。ソフトウェア・コマンドは、起動又はインストール手続きの特定の初期段階が完了したときに発行することができる。これらの特定の初期段階は、典型的には、オペレーティング・システムの特定のコンポーネントに関連付けられる。これらの段階はまた、動的設定情報が決定され、書き込み保護可能メモリ領域に書き込まれたときのコンポーネントの初期化ステップを含むこともできる。ブート手続きの後の段階がユーザ・アプリケーション・プロセスへのアクセスを許可にする前に、この情報を書き込み保護することは有利である。ソフトウェア・コマンドは、メモリのどの部分を書き込み保護モードに切り換えるべきかを指定することができる。ソフトウェア・コマンドは、以下のうちの１つとすることができる。：すなわち、（ａ）切り換えを実行するためにプロセッサ・ハードウェアによって与えられる特定の機械コード命令、（ｂ）プロセッサにその実行状態を保存させ、書き込み保護のモードを変更させるためのコード部分を含む割り込みハンドラの実行を開始させる特定のハードウェア割り込み、（ｃ）プログラム・コード命令が、所定のメモリ・アドレス、又は所定のアドレス範囲の外部にあるメモリ・アドレスにアクセスしようと試みるとき、このことが、書き込みアクセスが有効になる前に、書き込み保護モードへのアクセス試行のメモリ・アドレスのスイッチをトリガすることができる。
【００３２】
書き込みイネーブル・モードから書き込み保護モードへの遷移を、保護されるオペレーティング・システム内からのソフトウェア・コマンドによってトリガできるとき、モード変更は、「トラップドア・センマンティクス」を有する必要がある。これは、保護されるオペレーティング・システムに対して、切り換えが不可逆的であることを意味する。オペレーティング・システム内で書き込み保護モードから書き込みイネーブル・モードに再び変更することが可能であってはならない。
【００３３】
第３に、書き込み保護モードへの切り換えは、所定の遅延時間が経過した後でタイマー・コンポーネントによって発行される信号又はソフトウェア・コマンドによってトリガすることができる。タイマー・コンポーネントは、保護されるオペレーティング・システムの外部にあることが好ましい。そのことは、ハードウェア、ファームウェア内で、又は仮想環境のハイパーバイザ内で実現することができる。タイマーは、所定の正の値に初期化されるカウンタとして実装することができる。以下のイベントは、カウンタ値をデクリメントさせる：すなわち、柱時計のタイマーのティック(tick）、ハードウェア・プロセッサの機械サイクル、及びハードウェア・プロセッサによって実行される書き込み命令である。仮想環境の場合、対応するデクリメント・イベントは、仮想機械の機械サイクル又は命令カウントである。保護されるメモリ部分は、カウンタ値が正である間は書き込みイネーブル・モードに留まり、ひとたびカウンタ値がゼロに達すると書き込み保護モードに移行する。
【００３４】
ソフトウェア・コマンド又はタイマー信号による書き込み保護モードの自動作動は、管理を担当しているユーザによる忘れることができない手動作動に優る利点を有する。
【００３５】
ソフトウェア・コマンドが、タイマー信号と組み合せられることが好ましい。プログラマがソフトウェア・コマンドを忘れたとき、又はプログラム障害若しくはハッカー攻撃がその発行を妨げたとき、それにもかかわらずメモリは、所定の遅延時間が経過した後、タイマー信号に応答して書き込み保護される。
【００３６】
書き込み保護可能メモリを編成する２つの変形がある。両方の変形について好ましい実施形態を実現することができる。
【００３７】
第１の変形において、メモリのアドレス空間が、２つの部分、即ち、書き込み保護することができる第１の部分、及び、書き込み保護可能ではない第２の部分に分割される。これは、メモリ・チップ毎の保護、又は特定のアーキテクチャに依存するメモリ・バンク毎の保護に基づいた簡単な手法を用いて実現可能である。この第１の変形は、低コストでの実現が簡単であり、ハッカー攻撃による悪用のリスクが低い。不利なことに、オペレーティング・システムのソフトウェアを、このメモリ・アーキテクチャをサポートするように適合させる必要がある。このことは、適合されたオペレーティング・システム設計、プログラミング言語の拡張、コンパイラの拡張、及びローダ／リンカーの拡張を必要とする。
【００３８】
第２の変形において、ユーザ定義の保護スキームが、互いに独立している、メモリ・アドレス空間の複数の領域を含む。これらの領域は必ずしも連続していない。プログラマ又はシステム・オペレータが、どのアドレス範囲が保護されるかを自由に指定する。保護されるメモリ領域の指定リストを安全な記憶場所に格納し、保持する必要があるが、このことは達成するのが困難であり得る。有利なことに、第２の変形は高い柔軟性を提供し、オペレーティング・システム・ソフトウェアが好ましい実施形態のメモリ保護機構をサポートするように設計されていなかったとしても、全てのオペレーティング・システム・ソフトウェアと組み合せることができる。不利な点は、高いハードウェア・コスト、保護を必要とするメモリ範囲を決定するための大きな努力、及びプログラム・コード又はシステム・オペレータのアクションによる間違ったメモリ範囲の指定に起因するエラーの高いリスクである。
【００３９】
本発明の実施形態は、情報を書き込み保護されたメモリ領域に格納しようとするあらゆる試行が防止されることを保証する。しかしながら、そのような試行は、オペレーティング・システム・ソフトウェアがプログラム・コード・エラーを有すること、又はオペレーティング・システムが攻撃されていることを示す。会計監査及びセキュリティのために、こうした不正なアクセス試行が、以下のセキュリティ関連アクションのうちの少なくとも１つをトリガすることがある。第１のアクションは、例えばランプを点滅させることによる、ハードウェア・コンポーネントを介した、システム・オペレータに対するアクセス試行の警告とすることができる。第２のアクションは、オペレーティング・システム又は他のソフトウェア・コンポーネントを介する通知とすることができる。入力を、Ｌｉｎｕｘ  ｓｙｓｌｏｇなどのシステム・ログに記録することができ、又はｅメールをシステム・オペレータに送ることができる。第３のアクションは、アクセス違反を引き起こしたオペレーティング・システム・プロセスを終了又は一時停止させることを含む。このオペレーティング・システム・プロセスは、カーネル又はアプリケーション・プロセスとすることができる。これらの第３のアクションは、不正な書き込み動作をコミットしたユーザ・アカウントの許可から開始される全てのオペレーティング・システム・プロセスに拡張することができる。
【００４０】
好ましい実施形態によると、図１は、不正な変更からオペレーティング・システム（ＯＳ）を保護するための方法のフローチャートを示す。コンピュータ・システムは、中央処理装置（ＣＰＵ）及び作業メモリを有する。ブロック１０１において、ＯＳの一部分を、書き込み保護されるように事前に定義する。ブロック１０２において、ＯＳを作業メモリにロードすることによって、コンピュータ・システムが開始される。ブロック１０３において、ＣＰＵによって実行される書き込み保護機械コード命令を開始して、事前定義済みＯＳ部分を含む作業メモリ部分を書き込み保護モードに不可逆的に切り換える特定のＯＳコマンドに達することによって、事前定義済みＯＳ部分のロードを終了する。
【００４１】
図２乃至図５は、異なる段階のコンピュータ・システム２００、３００、４００、及び５００のブロック図を示す。コンピュータ・システムは、中央処理装置（ＣＰＵ）２０１、３０１、４０１、及び５０１と、作業メモリ２０２、３０２、４０２、及び５０２と、オペレーティング・システム（ＯＳ）を提供するためのストレージ手段２０３、３０３、４０３、及び５０３とを有する。
【００４２】
図２において、ＯＳ２２１の部分２２２が、書き込み保護されるように事前に定義される。この部分２２２は、ＯＳの他の部分２２３、２２４より濃い陰影を有する。プログラム・コード部分２１１は、コンピュータ・システム２００内に格納される。これらのプログラム・コード部分に従って、ＣＰＵ２０１は、ＯＳを作業メモリ内にロードすることによりコンピュータ・システムを開始する。ロードの開始は、ブロック矢印２４１で表される。オペレーティング・システム・データをメモリ領域２３１内にロードする間、このメモリ領域は、書き込みイネーブル・モードにある。このモードは、薄い陰影で示される。
【００４３】
図３において、ＣＰＵ３０１が、ステップ３６１において、ＣＰＵによって実行される書き込み保護機械コード命令３５１を開始し、ステップ３６２において、事前定義済みＯＳ部分を含む作業メモリ部分３３２を書き込み保護モードに不可逆的に切り換える特定のＯＳコマンド３１２に達することによって、事前定義済みＯＳ部分３２２のロードを終了する。事前定義済みＯＳ部分のロードの終了は、ブロック矢印３４１の先端部のバーによって表される。ＯＳの事前定義済み部分３３２は、書き込みがイネーブルにされた他のＯＳ部分３３３、３３４より濃い陰影を有する。
【００４４】
図４において、タイマー・コンポーネント４０４が、ステップ４６３において、所定の時間間隔が経過した後に、ステップ４６４においてＣＰＵ４０１によって実行される書き込み保護機械コード命令４５１を開始する。この時間間隔の測定は、ＯＳ４２１又は事前定義済みＯＳ部分４２２の作業メモリ４０２へのロードが始まったときに、ステップ４６２において開始されることが好ましい。ＯＳのロードの開始は、ブロック矢印４４１で示される。タイマー・コンポーネント４０４はＯＳ４３１の外部にあることが好ましい。
【００４５】
図５において、ＣＰＵ５０１は、書き込みイネーブル機械コード命令５５２を開始し、事前定義済みＯＳ部分５２２を含むメモリ部分５３２を、ステップ５６１において書き込みイネーブル・モードに切り換えることによって、ＯＳ５３１の外部のリセット・プロセスのプログラム・コード部分５１３を実行する。書き込みイネーブル・モードにおいて、このメモリ部分５３２及びＯＳ５３１の他のメモリ部分５３３、５３４の両方とも、同じ薄い陰影を有する。
【００４６】
図６は、従来技術によるコンピュータ・システム６００の詳細なブロック図を示す。中央処理装置ハードウェアのコアは、メモリ制御ユニット６０２、算術論理演算ユニット（ＡＬＵ）６０３、浮動小数点演算ユニット（ＦＰＵ）６０４及び他のプロセッサ・コンポーネント６０５、レジスタ６０６、命令デコーダ６０７、命令ポインタ・コンポーネント６０８及びリセット・コンポーネント６０９を相互接続する、例えばバス・システムなどの内部通信手段６０１である。命令デコーダ及び命令ポインタ・コンポーネントは、プロセッサ・ハードウェアとオペレーティング・システム・ソフトウェア、即ち、実行される機械コード命令との間のインターフェースを提供する。機械コード命令のシーケンス６１１は、「ストア・アクセス権（store access right）」命令６１２及び６１３を含むことができる。従来技術の命令デコーダは、この「ストア・アクセス権」命令の１つのオペレーション・コードを処理することができる。第１のパラメータは、例えば、「書き込みイネーブル」に対する「０」及び「書き込み保護」に対する「１」といった２値のフラグを指定する。ストア・アクセス権命令のさらに別のパラメータが、少なくとも１つのメモリ・アドレスを指定することができる。このアドレスは、個々のメモリ・ページ、又はメモリ・アーキテクチャに依存するメモリ・ページ・フレームを指すことができる。メモリ・ページは、例えば、４キロバイト、８キロバイト、１６キロバイトなどの同じサイズのブロックのストレージである。第２のメモリ・アドレス又はページ・カウントを用いて、複数のページのより大きいメモリ範囲を指定することができる。レジスタ６０６は、そのコンテンツが、例えば、ランダム・アクセス・メモリ内に格納されるデータよりも迅速にアクセスすることができる、少量のデータのためのストレージを提供する。算術論理演算ユニット６０３及び浮動小数点演算ユニット６０４は、算術及び論理演算、並びに浮動小数点演算を実行するデジタル回路である。メモリ制御ユニット６０２は、バス・システム６０１と、ランダム・アクセス・メモリ（ＲＡＭ）６１４又は簡単に言うとメモリとの間のハードウェア・インターフェースであり、記憶場所に関係なくデータへの迅速なストレージ・アクセスを提供する。メモリは、過渡的又は一時的なデータ・ストレージのために用いられる。メモリ制御ユニット６０２は、頻繁なアクセスのためにデータを一時的に格納し、メモリ・アクセス動作による遅延時間を回避するためのキャッシュ６１５を含む。アクセス・チェック・コンポーネント６１６は、例えば書き込み保護などの、アクセスが制限されたメモリ領域を指定するメモリ・アクセス情報を格納する。アクセス権は、メモリ６１４の記憶場所と関連したテーブル・エントリ内に格納される数値にエンコードされる。これらのテーブルは、アクセス・チェック・コンポーネントに格納される。機械コード命令が記憶場所に書き込もうと試みるとき、この数値を用いて、機械コード命令が属するプロセスが、この記憶場所を変更するための適切なアクセス権を有するかどうかを検証することができる。メモリ・コントローラ６１７は、ＡＬＵ、ＦＰＵ、及び他のプロセッサ・コンポーネントとは無関係に、メモリに格納される又はメモリから取り出されるデータを処理する。リセット信号に応答して、リセット・コンポーネントが、プロセッサのストレージ・コンポーネントのコンテンツを初期状態にリセットすることができる。このことは、メモリ、キャッシュ及びレジスタから格納された情報を除去し、命令ポインタを、処理される第１の機械コード命令の初期アドレスに設定することを含むことができる。メモリ・アクセス情報をリセットして、メモリの大部分又は全ての部分への最大のアクセス権を許可することが好ましい。リセット・コンポーネントは、例えばリセット・ボタンなどの電気機械式スイッチ６１８によって、又はハードウェア電源オンによって開始することができる。
【００４７】
従来技術の重要な問題は、メモリ部分の書き込みをイネーブルにする及び書き込みをディスエーブルにするために、同じ「ストア・アクセス権」機械コード命令が用いられることである。従って、両方のアクションが同じ特権レベルを有することになる。しかしながら、メモリ部分を、書き込みイネーブル・モードに切り換えることは、書き込み保護モードに切り換えるよりもセキュリティ面での配慮を要する。以下に説明されるように、本実施形態は、この問題を、書き込みイネーブル及び書き込み不能に関して、２つの別個の機械コード命令を与えることによって解決する。書き込みイネーブル機械コード命令には、これを保護されるべきオペレーティング・システム内で開始することはできないが、例えば、ファームウェア・コンポーネントから、仮想環境をオペレーティング・システムに提供するハイパーバイザからなど、オペレーティング・システムの外部からのみ開始できると言う意味で、特権を与える必要がある。
【００４８】
図７は、好ましい実施形態によるコンピュータ・システム７００の詳細なブロック図を示す。内部通信バス・システム７０１、ＡＬＵ７０３、ＦＰＵ７０４、他のプロセッサ・コンポーネント７０５、命令ポインタ・コンポーネント７０８、及びレジスタ７０６は、本質的に従来技術と同様に機能する。この実施形態は、メモリ６１４が保護可能メモリ７１８及び標準メモリ７１４に分割されるという点で、従来技術とは異なる。メモリ制御ユニット７０２のアクセス・チェック・コンポーネント７１６を用いて、図７に示されるような標準メモリ７１４の部分へのアクセス権を保持する。保護可能メモリ７１８のアクセス権は、メモリ制御ユニットの付加的なトラップドア・コンポーネント７１９によって制御される。メモリ・コントローラ７１７は、標準メモリ７１４及び保護可能メモリ７１８の両方から取り出され、かつ、標準メモリ７１４に格納されるデータを処理する。データは、書き込み保護モードへの切り換えの前にだけ、保護可能メモリ７１８に格納され得る。メモリ・コントローラ７１７は、ＡＬＵ、ＦＰＵ、及び他の処理装置から独立して動作する。本実施形態の命令デコーダ７０７は、保護可能メモリ７１８の一部分を書き込み保護モードに切り換えるための書き込み保護機械コード命令７２０を処理するように適合される。書き込み保護機械コード命令の１つ又は複数のパラメータが、保護可能メモリの１つ又は複数のメモリ・ページの少なくとも１つのメモリ・アドレスを指定することができる。オペレーティング・システム・ソフトウェアから独立して、超特権（super privilege）デコーダ７２２が、ファームウェア・コンポーネント又はハイパーバイザ７２１によって与えられる別個の機械コード命令７２３を処理することができる。超特権デコーダは、保護可能メモリ７１８の一部分を書き込みイネーブル・モードに切り換えるための書き込みイネーブル機械コード命令７２４を処理するように適合される。命令デコーダ７０７は、この書き込みイネーブル機械コード命令を処理するように適合されないことが望ましい。書き込みイネーブル機械コード命令の１つ又は複数のパラメータが、保護可能メモリの１又は複数のメモリ・ページの少なくとも１つのメモリ・アドレスを指定することができる。デコードされた書き込みイネーブル機械コード命令が、トラップドア・リセット・コンポーネント７２５を介して、超特権デコーダからメモリ制御ユニット７０２のトラップドア・コンポーネント７１９に送られる。次に、トラップドア・コンポーネントが、保護可能メモリの指定された部分を書き込みイネーブル・モードに切り換える。トラップドア・リセット・コンポーネント７２５は、内部バス・システム７０１から切り離されることが好ましい。リセット・コンポーネント７０９は、ハードウェア電源オン又はハードウェア・リセット信号を、バス・システム７０１にだけでなく、トラップドア・リセット・コンポーネント７２５にも切り換える。このコンポーネントは、リセット信号を処理して、保護可能メモリの大部分又は全ての部分を書き込みイネーブル・モードに切り換える。書き込み保護機械コード命令７２０及び書き込みイネーブル機械コード命令７２４は、異なる特権レベルを有する。オペレーティング・システムの機械コード命令７１１は、書き込み保護機械コード命令を開始できるだけにすぎず、書き込みイネーブル機械コード命令を開始することはできない。上述のように、オペレーティング・システムのための命令デコーダは、書き込みイネーブル機械コード命令をデコードすることができない。
【００４９】
代替的な実施形態において、オペレーティング・システムの機械コード命令のコンパイラは、書き込み保護機械コード命令の生成をサポートできるだけであり、書き込みイネーブル機械コード命令の生成を抑制し得る。
【００５０】
ＩＢＭ  ｚ／ＯＳ（登録商標）及び他のオペレーティング・システムの下では、中央ストレージ内の情報は、複数のストレージ・キー又はストレージ保護キーによって不正な使用から保護される。ストレージ・キーと呼ばれるストレージ内の制御フィールドが、中央ストレージのそれぞれ４キロバイトと関連付けられる。特定キーが、システム内で実行されている各作業に割り当てられる。中央の記憶場所のコンテンツを変更するように要求がなされたとき、要求と関連した特定キーが、ストレージ・キーと比較される。キーが合致するか又はプログラムがマスター・キー０により実行されている場合、要求が満たされる。要求と関連したキーがストレージ・キーと合致しない場合、システムは、要求を拒絶し、プログラム例外割り込みを発行する。例えば、ｚ／ＯＳにおいて、特定キーは、各ジョブに割り当てられた４ビットのプログラム状態語（program status word、ＰＳＷ）内に格納され、１６個までのコンポーネントの分離を可能にする。ストレージ・キーは、例えば、ｚ／ＯＳにおいては、ＳＥＴ＿ＳＴＯＲＡＧＥ＿ＫＥＹ＿ＥＸＴＥＮＤＥＤ（ＳＳＫＥ）命令などの「ストア・アクセス権」命令を用いて更新することができる。しかしながら、このストレージ・キーは、オペレーティング・システムの内部で実行されている悪意のあるコードからの保護を行わない。
【００５１】
本発明の一実施形態によると、ＷＲＩＴＥ＿ＰＲＯＴＥＣＴＥＤビットをストレージ・キーのビットに付加することができる。ＷＲＩＴＥ＿ＰＲＯＴＥＣＴＥＤビットの値が「１」であるとき、対応するフレームは書き込み保護モードにあり、他の場合には、フレームは書き込みイネーブル・モードにある。ＳＳＫＥ命令は、ＷＲＩＴＥ＿ＰＲＯＴＥＣＴＥＤビットを切り換えることができないが、プロセッサは、ＷＲＩＴＥ＿ＰＲＯＴＥＣＴ命令及びＷＲＩＴＥ＿ＥＮＡＢＬＥ命令を与えて、ＷＲＩＴＥ＿ＰＲＯＴＥＣＴＥＤビットの値を変更することができる。ＷＲＩＴＥ＿ＰＲＯＴＥＣＴ命令は、１つ又は複数のフレームに対してＷＲＩＴＥ＿ＰＲＯＴＥＣＴＥＤビットの値「１」を設定し、メモリの対応する部分に格納されたデータを変更から保護する。ＷＲＩＴＥ＿ＥＮＡＢＬＥ命令は、ＷＲＩＴＥ＿ＰＲＯＴＥＣＴＥＤビットの値「０」を設定し、１つ又は複数のフレーム内に格納されたデータに対する書き込み動作を可能にする。
【００５２】
代替的な実施形態において、ＳＳＫＥ命令は、ＷＲＩＴＥ＿ＰＲＯＴＥＣＴＥＤビットを値「１」に設定することしかできず、ＷＲＩＴＥ＿ＰＲＯＴＥＣＴＥＤビットを値「０」にすることはできない。付加的なＷＲＩＴＥ＿ＥＮＡＢＬＥ命令のみが、ＷＲＩＴＥ＿ＰＲＯＴＥＣＴＥＤビットを再び値「０」にすることが許可される。ＷＲＩＴＥ＿ＰＲＯＴＥＣＴＥＤビットはまた、書き込み保護状態を表すように値「０」を有することもできる。
【００５３】
さらに別の代替的な実施形態において、プロセッサは、１つ又は複数のメモリ・フレームに関するＦＩＮＡＬＩＺＥ＿ＳＴＯＲＡＧＥ＿ＫＥＹ命令を与える。このＦＩＮＡＬＩＺＥ＿ＳＴＯＲＡＧＥ＿ＫＥＹ命令は、あらゆる将来のＳＳＫＥ命令が、以前のＳＳＫＥ命令によって設定されたストレージ・キーの値を変更することを禁じる。ＦＩＮＡＬＩＺＥ＿ＳＴＯＲＡＧＥ＿ＫＥＹ命令は、対応するメモリ・フレームに関する特定のＫＥＹ＿ＦＩＮＡＬＩＺＥＤフラグを設定することができる。付加的なＩＮＩＴＩＡＬＩＺＥ＿ＳＴＯＲＡＧＥ＿ＫＥＹ命令だけが、特定のＫＥＹ＿ＦＩＮＡＬＩＺＥＤフラグをリセットすることが許容され、ＳＳＫＥ命令を用いたストレージ・キーの変更が可能であることを示す。ＩＮＩＴＩＡＬＩＺＥ＿ＳＴＯＲＡＧＥ＿ＫＥＹ命令は、完全なストレージ・キーのコンテンツを初期値にリセットするように適合させることさえ可能である。
【００５４】
本実施形態のハードウェア及びソフトウェア設計は、オペレーティング・システムのプログラム・コード部分及びインターフェースが、ＷＲＩＴＥ＿ＥＮＡＢＬＥ命令及びＩＮＩＴＩＡＬＩＺＥ＿ＳＴＯＲＡＧＥ＿ＫＥＹ命令を実行するのをサポートしない。外部の超特権デコーダ又はハイパーバイザ・コンポーネントだけが、これらのＷＲＩＴＥ＿ＥＮＡＢＬＥ命令又はＩＮＩＴＩＡＬＩＺＥ＿ＳＴＯＲＡＧＥ＿ＫＥＹ命令をサポートできる。
【００５５】
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「１つの（a）」、「１つの（an）」及び「その（the）」は、そうでないことが示されていない限り、複数形も同様に含むことを意図したものである。本明細書で用いられる場合、「含む（comprise）」及び／又は「含んでいる（comprising）」という用語は、提示された特徴、整数、ステップ、動作、要素、及び／又はコンポーネントの存在を特定するものであるが、１つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び／又はそれらのグループの存在を排除するものではないことが、さらに理解されるであろう。
【００５６】
本発明の態様は、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して上述される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを生成し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート図及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するための手段を生成するようにすることができる。
【００５７】
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスに特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納して、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するための命令を含む製品を製造するようにすることもできる。
【００５８】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスにロードし、一連の動作ステップをコンピュータ、他のプログラム可能装置、又は他のデバイスの上で実行させて、コンピュータ実施プロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するためのプロセスを提供するようにすることもできる。
【００５９】
図中のフローチャート及び／又はブロック図は、本発明の種々の実施形態による、システム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能及び動作を示すものである。この点で、フローチャート又はブロック図内の各ブロックは、モジュール、セグメント又はコードの一部を表すことができ、これらは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む。幾つかの代替的な実装においては、ブロックに記された機能が図に記された順序通りに行われない場合があることにも留意すべきである。例えば、連続して示された２つのブロックが、実際には実質的に同時に実行されることがあり、これらのブロックが、関与する機能に応じて、ときとして逆順で実行されることもある。ブロック図及び／又はフローチャート図における各ブロック、並びに、ブロック図及び／又はフローチャート図におけるブロックの組み合わせは、指定された機能若しくは動作を行う専用ハードウェア・ベースのシステム又は専用ハードウェアとコンピュータ命令との組み合わせによって実装できることにも留意すべきである。
【００６０】
上記は、本発明の特定の実施形態を参照しているが、当業者であれば、添付の特許請求の範囲によってその範囲が定められる本発明の原理及び趣旨から逸脱することなく、これらの実施形態における変更をなし得ることを認識するであろう。
【符号の説明】
【００６１】
２００、３００、４００、５００、６００、７００：コンピュータ・システム
２０１、３０１、４０１、５０１：中央処理装置（ＣＰＵ）
２０２、３０２、４０２、５０２：作業メモリ
２０３、３０３、４０３、５０３：ストレージ手段
２１１：プログラム・コードの部分
２２１、４２１、４３１、５３１：オペレーティング・システム（ＯＳ）
２３１：メモリ領域
３１２：ＯＳコマンド
３５１、４５１：書き込み保護機械コード命令
４０４：タイマー・コンポーネント
５３２、５３３、５３４：メモリ部分
５５２：書き込みイネーブル機械コード命令
６０１、７０１：内部通信手段
６０２、７０２：メモリ制御ユニット
６０３、７０３：算術論理演算ユニット（ＡＬＵ）
６０４、７０４：浮動小数点演算ユニット（ＦＰＵ）
６０５、７０５：他のプロセッサ・コンポーネント
６０６、７０６：レジスタ
６０７、７０７：命令デコーダ
６０８、７０８：命令ポインタ・コンポーネント
６０９、７０９：リセット・コンポーネント
６１１：機械コード命令のシーケンス
６１２、６１３：ストア・アクセス権命令
６１４：ランダム・アクセス・メモリ（ＲＡＭ）
６１５：キャッシュ
６１６、７１６：アクセス・チェック・コンポーネント
６１７、７１７：メモリ・コントローラ
７１１：機械コード命令
７１４：標準メモリ
７１８：保護可能メモリ
７１９：トラップドア・コンポーネント
７２０：書き込み保護機械コード命令
７２１：ハイパーバイザ
７２２：超特権デコータ
７２３：個別機械コード命令
７２４：書き込みイネーブル機械コード命令
７２５：トラップドア・リセット・コンポーネント
【図１】
0005607752.tif 000002
【図２】
0005607752.tif 000003
【図３】
0005607752.tif 000004
【図４】
0005607752.tif 000005
【図５】
0005607752.tif 000006
【図６】
0005607752.tif 000007
【図７】
0005607752.tif 000008