説明

不正な変更からオペレーティング・システムを保護するための方法及びシステム

【課題】 不正な変更からオペレーティング・システム(OS)を保護するためのコンピュータ化された方法、コンピュータ・システム、及びコンピュータ・プログラム製品を提供する。
【解決手段】 1つの実施形態が、不正な変更からオペレーティング・システム(OS)を保護するためのコンピュータ化された方法、コンピュータ・システム、及びコンピュータ・プログラム製品を提供する。コンピュータ・システムは、中央処理装置(CPU)及び作業メモリを有する。OSの部分が、書き込み保護されるように事前に定義される。コンピュータ・システムは、OSを作業メモリにロードすることによって開始される。CPUによって実行される書き込み保護機械コード命令を開始して、事前定義済みOS部分を含む作業メモリ部分を書き込み保護モードに不可逆的に切り換える特定のOSコマンドに達することによって、事前定義済みOS部分のロードが終了する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不正な(unauthorized)変更からオペレーティング・システムを保護するためのコンピュータ化された方法、コンピュータ・システム及びコンピュータ・プログラム製品に関する。
【背景技術】
【0002】
今日、多くのコンピュータ・システムは、ウイルス、トロイの木馬、ワーム、ルートキットなどから非常に攻撃を受けやすい。これらの攻撃は、甚大な経済的損失をもたらし得る。これらの攻撃は、システムの機能的性能を低下させるだけでなく、例えば、バンキング・システムにおける基幹データ及びプロセスのセキュリティ及び完全性を危険にさらすことがある。
【0003】
コンピュータ・ウィルスは、それ自体をコピーしてコンピュータに感染させ得るコンピュータ・プログラムである。ウイルス及び他のタイプの悪意のあるソフトウェア・プログラムは、ウイルスに属するコード・シーケンスが実行されるように、ネットワークを介して自動的に広がり、データ又は実行コードを操作することができる。一部のマルウェア(malware)プログラムは、コンピュータ・ユーザの目につくような兆候を有するが、多くのものは人目につかない。
【0004】
殆どのコンピュータ・システムは、ウイルス・チェッカー又はファイアウォールのような、何らかのタイプの保護システムを実装する。こうしたウイルス・スキャン・プログラムは、ウイルスを識別するものと考えられる特定のデータ・パターンの探索を行う。この手法の重大な欠点は、ウイルス・スキャナが、専門家によって分析されたウイルスの知識を必要とすることである。ウイルス感染を検出することができるにすぎず、これを防止するものではない。ウイルス・スキャナが定期的に更新されたとしても、システムは、依然として新しいウイルスに対して脆弱なままであり得る。さらに、誤って、探索されたバイト・シーケンスが感染していないデータ内に見出されることがある。コンピュータ・システムからのウイルスの除去は、扱いが難しく、エラーを起こしやすい。
【0005】
残念なことに、悪意のあるパーティ及びハッカーによる攻撃は、周知の保護システムを破るようにますます巧妙化している。ウイルスは、それ自体を暗号化するように、及び/又は、何らかの変異を起こすようにプログラムされ得る。その両方によりウイルスのバイナリ署名が変化し、そのためウイルスが検出されないままになることがある。
【0006】
さらに別の悪意のあるソフトウェアの例は、オペレーティング・システムにおける脆弱性を利用して殆どの周知の保護システムを完全に回避する、いわゆるルートキット(root kit)である。ルートキットという用語は、もともとは、ルート・アクセスを与えたUnixのようなオペレーティング・システムのための、悪意をもって変更された組の管理ツールを指すものであった。侵入者が、システム上の標準的な管理ツールをルートキットに置き換えることができた場合、変更されたツールは、正当なシステム管理者からこれらの動作を隠しながら、保護システムが開始される前に、侵入者が高い特権を得ることを可能にする。カーネル・ベースのルートキットは、オペレーティング・システムのカーネル又はドライバに直接インストールされ、例えば、アンチ・ウイルス又はアンチ・スパイウェア・スキャンによって、検出し、防止することが著しく困難である。ルートキットはまた、ログイン機構を、秘密のログインの組み合わせを受け入れる実行ファイルに置き換えることによって、「バックドア」をシステム内にインストールし、これにより、システム上の実際のアカウントへの変更には関係なく、攻撃者がシステムにアクセスすることが可能になる。
【0007】
特許文献1は、コンピュータ・システム内に格納されたコンピュータ・プログラム及びいずれかの種類のデータが操作されるのを防止するための方法及びデータ処理システムを開示する。コンピュータ・システムは、ストレージ手段と、ストレージ手段を書き込み保護(書き込み禁止、write-protected)モードに切り換えるための手段とを含む。起動の際、又はアプリケーション・プログラムのインストール・プロセス中、以下のステップ:すなわち、(a)ユーザに、書き込み保護可能(write-protectable)ストレージ領域への書き込みを一時的に許可する切換を実行するように促すステップであって、切換手段は、オペレーティング・システムの外部からのみ作動可能である、ステップ、(b)書き込み保護可能ストレージ領域内にセキュリティ関連情報を格納するステップ、(c)ユーザに、書き込み保護可能ストレージ領域への書き込みを制限するための手動切換を実行するように促すステップ、(d)手動切換に応答して、コンピュータ・システムのさらなるランタイムの間、書き込み保護されたストレージ領域へのいかなる書き込みアクセスも制限するステップ、が提案される。
【0008】
特許文献2は、仮想マシン・モニタ(VMM)技術を利用する、コンピュータ・システムの仮想保護システム(VPS)を開示している。コンピュータ・システムへの特権的アクセスによって、第1のオペレーティング・システムが起動される。付加的なオペレーティング・システムによるコンピュータ・システムのメモリの部分へのアクセスは、読み出し専用アクセスに制限される。しかしながら、第1のオペレーティング・システムを介して、メモリの部分への無制限アクセスがエミュレートされる。
【0009】
従来技術のコンピュータ・システムにおいては、オペレーティング・システムが、複数のユーザ及びカーネル・プロセスからのメモリ・アクセス動作を制御する。こうしたユーザ・プロセスは、例えば、eメ−ル・プログラム又はテキスト処理プログラムとすることができる。オペレーティング・システムは、1つ又は複数の特定のユーザ・プロセスに対する特定のメモリ部分への書き込みアクセスのみを許可し、この特定のメモリ部分を、他のユーザ・プロセスからの書き込みアクセス試行から保護する。オペレーティング・システムはまた、ユーザ・プロセスが、オペレーティング・システムのカーネル・プロセスに割り当てられたメモリ部分に書き込みアクセスするのを禁止する。しかしながら、このアクセス制御は、ハッカーの攻撃からオペレーティング・システムを保護できない。
【0010】
ソフトウェア・ベースの手法は、従来技術において長い間知られており、それらの手法は、いったんハッカーが保護されるべきコンピュータ・システム上の管理者特権を入手すると、回避することができるという主要な欠点を有する。従って、コンピュータ・システムを、ますます巧妙化した攻撃から保護し、周知の保護システムの欠陥を回避することが望ましい。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】国際公開第2008/138653 A1号パンフレット
【特許文献2】米国特許出願公開第2007/0005919 A1号明細書
【発明の概要】
【発明が解決しようとする課題】
【0012】
従って、本発明の実施形態の目的は、不正な変更からメモリを保護するためのコンピュータ化された方法及びコンピュータ・システムを提供することである。
【課題を解決するための手段】
【0013】
本発明の第1の態様によると、中央処理装置(CPU)及び作業メモリを有するコンピュータ・システムにおいて不正な変更からオペレーティング・システム(OS)を保護するためのコンピュータ化された方法を提供する。この方法は、以下のステップを含む。すなわち、OSの部分を、書き込み保護されるように事前に定義する。OSを作業メモリ内にロードすることによって、コンピュータ・システムを開始する。CPUによって実行される書き込み保護機械コード命令を開始して、事前定義済みOS部分を含む作業メモリ部分を書き込み保護モードに不可逆的に切り換える特定のOSコマンドに達することによって、事前定義済みOS部分のロードを終了する。
【0014】
本発明による代替的な態様において、事前定義済みOS部分を含む作業メモリ部分の書き込みイネーブル(write-enable)モードへの切り換え復帰を開始するOSコマンドが禁止される。書き込み保護機械コード命令が、CPUによって与えられる。書き込み保護機械コード命令は、特定のメモリ・アドレスにアクセスすることによってトリガされ得る。書き込み保護機械コード命令は、書き込み保護モードをCPUに示すことによって、事前定義済みOS部分を含む作業メモリ部分へのアクセス権を制御するストレージ・キーと関連付けられる。ストレージ・キーは、メモリ部分へのアクセス権を記述するストア情報に一般化することができる。
【0015】
本発明によるさらに別の代替態様において、所定の時間間隔が経過した後、時間コンポーネントが書き込み保護機械コード命令を開始する。所定の時間間隔の計測は、リアルタイム・クロックに基づいていることがより好ましい。代替的に、所定の時間間隔の計測は、OSによって実行される命令カウントに基づいている。この命令が仮想環境の仮想処理装置によって実行されることが、さらに一層好ましい。所定の時間間隔の計測は、仮想環境の仮想処理装置のサイクル・カウントに基づいていることがより好ましい。
【0016】
本発明による別の代替的態様において、書き込みイネーブル機械コード命令が、事前定義済みOS部分を含むメモリ部分を書き込みイネーブル・モードに切り換えるように、CPUによって実行されるOSの外部のリセット・プロセスによって開始される。リセット・プロセスはOSの外部のハイパーバイザによってもたらされ、ハイパーバイザはOSに仮想環境をもたらすことがより好ましい。
【0017】
本発明の第2の態様によると、書き込み保護機械コード命令を実行して、オペレーティング・システム(OS)の事前定義済み部分を含む作業メモリの部分を書き込み保護モードに不可逆的に切り換えるための適合された手段を含む中央処理装置(CPU)が提供される。OSを作業メモリにロードすることによってコンピュータ・システムを開始し、CPUによって実行される書き込み保護機械コード命令を開始する特定のOSコマンドに達して、事前定義済みOS部分のロードを終了する。
【0018】
本発明の第3の態様によると、不正な変更から保護されるオペレーティング・システム(OS)、中央処理装置(CPU)及び作業メモリを含むコンピュータ・システムが提供される。書き込み保護されるように、OSの部分が事前に定義される。コンピュータ・システムの適合された手段が、OSを作業メモリにロードすることによって開始し、CPUによって実行される書き込み保護機械コード命令を開始して、事前定義済みOS部分を含む作業メモリ部分を書き込み保護モードに不可逆的に切り換える特定のOSコマンドに達することによって、事前定義済みOS部分のロードを終了する。
【0019】
本発明の第4の態様によると、不正な変更からオペレーティング・システム(OS)を保護するためのコンピュータ・プログラム製品が提供される。このコンピュータ・プログラム製品は、コンピュータ使用可能プログラム・コードが具体化されたコンピュータ使用可能媒体を含む。コンピュータ使用可能プログラム・コードは、第1の態様のステップを実行するように構成される。
【0020】
付加的な特徴及び利点が、本発明の技術を通して実現される。本発明の他の実施形態及び態様は、本明細書において詳細に説明され、本発明の一部分と見なされる。利点及び特徴を有する本発明をより良く理解するために、説明及び図面を参照されたい。
【0021】
本発明と考えられる主題は、本明細書の終わりの特許請求の範囲において具体的に示され、明確に特許請求されている。本発明の前述及び他の目的、特徴、並びに利点は、添付図面と関連して用いられる以下の詳細な説明から明らかである。
【図面の簡単な説明】
【0022】
【図1】本発明の一実施形態による、オペレーティング・システムを保護する方法のフローチャートを示す。
【図2】本発明の一実施形態による、コンピュータ・システムの異なる段階のブロック図を示す。
【図3】本発明の一実施形態による、コンピュータ・システムの異なる段階のブロック図を示す。
【図4】本発明の一実施形態による、コンピュータ・システムの異なる段階のブロック図を示す。
【図5】本発明の一実施形態による、コンピュータ・システムの異なる段階のブロック図を示す。
【図6】従来技術によるコンピュータ・システムの詳細なブロック図を示す。
【図7】本発明の一実施形態による、コンピュータ・システムの詳細なブロック図を示す。
【発明を実施するための形態】
【0023】
好ましい実施形態において、従来技術のコンピュータ・システムのソフトウェア及びハードウェア能力を拡張することによって、メモリ・コンテンツの望ましくない操作からの保護が達成された。オペレーティング・システムは、典型的には、ウイルス又はハッカー攻撃によって変更されるセキュリティ上重要な(security-critical)情報を識別し、この情報を、書き込みイネーブル・モードから書き込み保護モードに切り換えることができるメモリの特定の部分にロードすることができる。このロード手続き中、メモリ部分は、書き込みイネーブル・モードにある、即ち、コンピュータ・システムのプロセッサの機械コード命令が、特定の記憶場所のコンテンツを変更することができる。このロードは、オペレーティング・システムの起動手続き、オペレーティング・システム・コンポーネントのインストール、又はオペレーティング・システムの初期化の一部とすることができる。このロードは、必ずしもオペレーティング・システムのカーネル・コンポーネントに制限されるわけではなく、基幹アプリケーションのセキュリティ関連コンポーネントに適用することもできる。このように保護される情報は、例えばWindows又はLinuxオペレーティング・システム・コアなどの幾つかの実行可能コード、並びに、例えばLinuxシステム呼び出しテーブルなどのセキュリティ上重要なデータ構造体を含むことができる。ロードが完了した後、特定のメモリ部分が書き込み保護モードに切り換えられ、オペレーティング・システムのカーネル及びアプリケーションは、通常のシステム動作を続ける。例えば、Linuxにおけるユーザ空間処理を管理するためのデータ構造体など、通常のシステム動作中に変更する必要があるデータ構造体は、書き込み保護可能でない通常のメモリ内に格納される。通常のシステム動作中、書き込み保護メモリ領域内に格納されたプログラム・コード及びセキュリティ上重要なデータは、あたかも通常のランダム・アクセス・メモリ(RAM)内に格納されているかのように読み出すことができる。しかしながら、書き込み保護が再びディスエーブルにされるまで、アプリケーション、オペレーティング・システム・カーネル、及びあらゆるプロセスに関する書き込みが禁止される。対応する機構を以下に説明する。書き込み保護は、攻撃者が、オペレーティング・システムの特定の部分におけるセキュリティ関連情報を変更するのを防止する。攻撃者が、こうした書き込み保護メモリ領域に書き込もうと試みると、警告を発して、攻撃の試行の検出を示すことができる。
【0024】
好ましい実施形態は、書き込み保護モードから書き込みイネーブル・モードへの遷移及びその逆の遷移に対するトリガ、並びにこれらのトリガについての一組の実装に基づいた、書き込み保護管理の実施を開示する。
【0025】
書き込み保護可能メモリ領域を書き込みイネーブル・モードに切り換えるトリガは、以下の3つのタイプのうちの1つとすることができる。
【0026】
第1に、ハードウェアの電源オン又はハードウェアのリセット動作は、典型的には、機械式スイッチ又はボタンを手動で作動させることによりトリガされる。代替的に、外部のハードウェア・コンポーネントによって制御される電気スイッチを考えることもできる。これらの電源オン又はリセット動作の後、書き込み保護可能メモリの初期モードは、書き込みイネーブルされるべきである。通常のシステム動作中、スイッチは、メモリの全ての部分に対して、又は特定の書き込み保護可能部分に対してのみ、効果を有することができる。
【0027】
第2に、トリガは、メモリの書き込みがイネーブルにされた特定の部分に対するソフトウェア・コマンドとすることができる。このソフトウェア・コマンドには、保護されるオペレーティング・システム内から発行することができないように特権を与える必要がある。仮想環境においては、仮想機械(VM)は、例えば、Linuxなどのゲスト・オペレーティング・システムを実行している。仮想環境を提供するハイパーバイザ、又はホスト・オペレーティング・システムは、ゲスト・オペレーティング・システムの外部にある。ハイパーバイザは、これらの特定のメモリ部分を書き込みイネーブル・モードに切り換えるためのソフト・コマンドを発行するように適合させることができる。保護されるオペレーティング・システムに関する管理者権限を有する特権ユーザは、このソフトウェア・コマンドの実行を許可してはならないことが極めて重要である。
【0028】
第3に、仮想環境において、ハードウェアの電源オン又はリセットと同じように、保護されるサブシステムの開始又はリセットが、書き込み保護可能メモリ領域を書き込みイネーブル・モードに切り換えることが可能である。サブシステムは、ゲスト・オペレーティング・システム又は特定のプロセス・コンテキストとすることができる。
【0029】
3つのタイプのトリガは、次のように書き込み保護可能メモリ領域を書き込み保護モードに切り換えることができる。
【0030】
第1に、GUI要素を選択すること又はソフトウェア・コマンドを入力することによって、機械若しくは電気式スイッチを介して又はグラフィカル・ユーザ・インターフェースを介して書き込み保護モードを作動させるように、ユーザに促すことができる。
【0031】
第2に、書き込み保護モードは、保護されるオペレーティング・システムにより発行されるソフトウェア・コマンドによって作動させることができる。このソフトウェア・コマンドは、保護される情報が書き込み保護可能メモリ領域に書き込まれた直後に実行されることが好ましい。ソフトウェア・コマンドは、起動又はインストール手続きの特定の初期段階が完了したときに発行することができる。これらの特定の初期段階は、典型的には、オペレーティング・システムの特定のコンポーネントに関連付けられる。これらの段階はまた、動的設定情報が決定され、書き込み保護可能メモリ領域に書き込まれたときのコンポーネントの初期化ステップを含むこともできる。ブート手続きの後の段階がユーザ・アプリケーション・プロセスへのアクセスを許可にする前に、この情報を書き込み保護することは有利である。ソフトウェア・コマンドは、メモリのどの部分を書き込み保護モードに切り換えるべきかを指定することができる。ソフトウェア・コマンドは、以下のうちの1つとすることができる。:すなわち、(a)切り換えを実行するためにプロセッサ・ハードウェアによって与えられる特定の機械コード命令、(b)プロセッサにその実行状態を保存させ、書き込み保護のモードを変更させるためのコード部分を含む割り込みハンドラの実行を開始させる特定のハードウェア割り込み、(c)プログラム・コード命令が、所定のメモリ・アドレス、又は所定のアドレス範囲の外部にあるメモリ・アドレスにアクセスしようと試みるとき、このことが、書き込みアクセスが有効になる前に、書き込み保護モードへのアクセス試行のメモリ・アドレスのスイッチをトリガすることができる。
【0032】
書き込みイネーブル・モードから書き込み保護モードへの遷移を、保護されるオペレーティング・システム内からのソフトウェア・コマンドによってトリガできるとき、モード変更は、「トラップドア・センマンティクス」を有する必要がある。これは、保護されるオペレーティング・システムに対して、切り換えが不可逆的であることを意味する。オペレーティング・システム内で書き込み保護モードから書き込みイネーブル・モードに再び変更することが可能であってはならない。
【0033】
第3に、書き込み保護モードへの切り換えは、所定の遅延時間が経過した後でタイマー・コンポーネントによって発行される信号又はソフトウェア・コマンドによってトリガすることができる。タイマー・コンポーネントは、保護されるオペレーティング・システムの外部にあることが好ましい。そのことは、ハードウェア、ファームウェア内で、又は仮想環境のハイパーバイザ内で実現することができる。タイマーは、所定の正の値に初期化されるカウンタとして実装することができる。以下のイベントは、カウンタ値をデクリメントさせる:すなわち、柱時計のタイマーのティック(tick)、ハードウェア・プロセッサの機械サイクル、及びハードウェア・プロセッサによって実行される書き込み命令である。仮想環境の場合、対応するデクリメント・イベントは、仮想機械の機械サイクル又は命令カウントである。保護されるメモリ部分は、カウンタ値が正である間は書き込みイネーブル・モードに留まり、ひとたびカウンタ値がゼロに達すると書き込み保護モードに移行する。
【0034】
ソフトウェア・コマンド又はタイマー信号による書き込み保護モードの自動作動は、管理を担当しているユーザによる忘れることができない手動作動に優る利点を有する。
【0035】
ソフトウェア・コマンドが、タイマー信号と組み合せられることが好ましい。プログラマがソフトウェア・コマンドを忘れたとき、又はプログラム障害若しくはハッカー攻撃がその発行を妨げたとき、それにもかかわらずメモリは、所定の遅延時間が経過した後、タイマー信号に応答して書き込み保護される。
【0036】
書き込み保護可能メモリを編成する2つの変形がある。両方の変形について好ましい実施形態を実現することができる。
【0037】
第1の変形において、メモリのアドレス空間が、2つの部分、即ち、書き込み保護することができる第1の部分、及び、書き込み保護可能ではない第2の部分に分割される。これは、メモリ・チップ毎の保護、又は特定のアーキテクチャに依存するメモリ・バンク毎の保護に基づいた簡単な手法を用いて実現可能である。この第1の変形は、低コストでの実現が簡単であり、ハッカー攻撃による悪用のリスクが低い。不利なことに、オペレーティング・システムのソフトウェアを、このメモリ・アーキテクチャをサポートするように適合させる必要がある。このことは、適合されたオペレーティング・システム設計、プログラミング言語の拡張、コンパイラの拡張、及びローダ/リンカーの拡張を必要とする。
【0038】
第2の変形において、ユーザ定義の保護スキームが、互いに独立している、メモリ・アドレス空間の複数の領域を含む。これらの領域は必ずしも連続していない。プログラマ又はシステム・オペレータが、どのアドレス範囲が保護されるかを自由に指定する。保護されるメモリ領域の指定リストを安全な記憶場所に格納し、保持する必要があるが、このことは達成するのが困難であり得る。有利なことに、第2の変形は高い柔軟性を提供し、オペレーティング・システム・ソフトウェアが好ましい実施形態のメモリ保護機構をサポートするように設計されていなかったとしても、全てのオペレーティング・システム・ソフトウェアと組み合せることができる。不利な点は、高いハードウェア・コスト、保護を必要とするメモリ範囲を決定するための大きな努力、及びプログラム・コード又はシステム・オペレータのアクションによる間違ったメモリ範囲の指定に起因するエラーの高いリスクである。
【0039】
本発明の実施形態は、情報を書き込み保護されたメモリ領域に格納しようとするあらゆる試行が防止されることを保証する。しかしながら、そのような試行は、オペレーティング・システム・ソフトウェアがプログラム・コード・エラーを有すること、又はオペレーティング・システムが攻撃されていることを示す。会計監査及びセキュリティのために、こうした不正なアクセス試行が、以下のセキュリティ関連アクションのうちの少なくとも1つをトリガすることがある。第1のアクションは、例えばランプを点滅させることによる、ハードウェア・コンポーネントを介した、システム・オペレータに対するアクセス試行の警告とすることができる。第2のアクションは、オペレーティング・システム又は他のソフトウェア・コンポーネントを介する通知とすることができる。入力を、Linux syslogなどのシステム・ログに記録することができ、又はeメールをシステム・オペレータに送ることができる。第3のアクションは、アクセス違反を引き起こしたオペレーティング・システム・プロセスを終了又は一時停止させることを含む。このオペレーティング・システム・プロセスは、カーネル又はアプリケーション・プロセスとすることができる。これらの第3のアクションは、不正な書き込み動作をコミットしたユーザ・アカウントの許可から開始される全てのオペレーティング・システム・プロセスに拡張することができる。
【0040】
好ましい実施形態によると、図1は、不正な変更からオペレーティング・システム(OS)を保護するための方法のフローチャートを示す。コンピュータ・システムは、中央処理装置(CPU)及び作業メモリを有する。ブロック101において、OSの一部分を、書き込み保護されるように事前に定義する。ブロック102において、OSを作業メモリにロードすることによって、コンピュータ・システムが開始される。ブロック103において、CPUによって実行される書き込み保護機械コード命令を開始して、事前定義済みOS部分を含む作業メモリ部分を書き込み保護モードに不可逆的に切り換える特定のOSコマンドに達することによって、事前定義済みOS部分のロードを終了する。
【0041】
図2乃至図5は、異なる段階のコンピュータ・システム200、300、400、及び500のブロック図を示す。コンピュータ・システムは、中央処理装置(CPU)201、301、401、及び501と、作業メモリ202、302、402、及び502と、オペレーティング・システム(OS)を提供するためのストレージ手段203、303、403、及び503とを有する。
【0042】
図2において、OS221の部分222が、書き込み保護されるように事前に定義される。この部分222は、OSの他の部分223、224より濃い陰影を有する。プログラム・コード部分211は、コンピュータ・システム200内に格納される。これらのプログラム・コード部分に従って、CPU201は、OSを作業メモリ内にロードすることによりコンピュータ・システムを開始する。ロードの開始は、ブロック矢印241で表される。オペレーティング・システム・データをメモリ領域231内にロードする間、このメモリ領域は、書き込みイネーブル・モードにある。このモードは、薄い陰影で示される。
【0043】
図3において、CPU301が、ステップ361において、CPUによって実行される書き込み保護機械コード命令351を開始し、ステップ362において、事前定義済みOS部分を含む作業メモリ部分332を書き込み保護モードに不可逆的に切り換える特定のOSコマンド312に達することによって、事前定義済みOS部分322のロードを終了する。事前定義済みOS部分のロードの終了は、ブロック矢印341の先端部のバーによって表される。OSの事前定義済み部分332は、書き込みがイネーブルにされた他のOS部分333、334より濃い陰影を有する。
【0044】
図4において、タイマー・コンポーネント404が、ステップ463において、所定の時間間隔が経過した後に、ステップ464においてCPU401によって実行される書き込み保護機械コード命令451を開始する。この時間間隔の測定は、OS421又は事前定義済みOS部分422の作業メモリ402へのロードが始まったときに、ステップ462において開始されることが好ましい。OSのロードの開始は、ブロック矢印441で示される。タイマー・コンポーネント404はOS431の外部にあることが好ましい。
【0045】
図5において、CPU501は、書き込みイネーブル機械コード命令552を開始し、事前定義済みOS部分522を含むメモリ部分532を、ステップ561において書き込みイネーブル・モードに切り換えることによって、OS531の外部のリセット・プロセスのプログラム・コード部分513を実行する。書き込みイネーブル・モードにおいて、このメモリ部分532及びOS531の他のメモリ部分533、534の両方とも、同じ薄い陰影を有する。
【0046】
図6は、従来技術によるコンピュータ・システム600の詳細なブロック図を示す。中央処理装置ハードウェアのコアは、メモリ制御ユニット602、算術論理演算ユニット(ALU)603、浮動小数点演算ユニット(FPU)604及び他のプロセッサ・コンポーネント605、レジスタ606、命令デコーダ607、命令ポインタ・コンポーネント608及びリセット・コンポーネント609を相互接続する、例えばバス・システムなどの内部通信手段601である。命令デコーダ及び命令ポインタ・コンポーネントは、プロセッサ・ハードウェアとオペレーティング・システム・ソフトウェア、即ち、実行される機械コード命令との間のインターフェースを提供する。機械コード命令のシーケンス611は、「ストア・アクセス権(store access right)」命令612及び613を含むことができる。従来技術の命令デコーダは、この「ストア・アクセス権」命令の1つのオペレーション・コードを処理することができる。第1のパラメータは、例えば、「書き込みイネーブル」に対する「0」及び「書き込み保護」に対する「1」といった2値のフラグを指定する。ストア・アクセス権命令のさらに別のパラメータが、少なくとも1つのメモリ・アドレスを指定することができる。このアドレスは、個々のメモリ・ページ、又はメモリ・アーキテクチャに依存するメモリ・ページ・フレームを指すことができる。メモリ・ページは、例えば、4キロバイト、8キロバイト、16キロバイトなどの同じサイズのブロックのストレージである。第2のメモリ・アドレス又はページ・カウントを用いて、複数のページのより大きいメモリ範囲を指定することができる。レジスタ606は、そのコンテンツが、例えば、ランダム・アクセス・メモリ内に格納されるデータよりも迅速にアクセスすることができる、少量のデータのためのストレージを提供する。算術論理演算ユニット603及び浮動小数点演算ユニット604は、算術及び論理演算、並びに浮動小数点演算を実行するデジタル回路である。メモリ制御ユニット602は、バス・システム601と、ランダム・アクセス・メモリ(RAM)614又は簡単に言うとメモリとの間のハードウェア・インターフェースであり、記憶場所に関係なくデータへの迅速なストレージ・アクセスを提供する。メモリは、過渡的又は一時的なデータ・ストレージのために用いられる。メモリ制御ユニット602は、頻繁なアクセスのためにデータを一時的に格納し、メモリ・アクセス動作による遅延時間を回避するためのキャッシュ615を含む。アクセス・チェック・コンポーネント616は、例えば書き込み保護などの、アクセスが制限されたメモリ領域を指定するメモリ・アクセス情報を格納する。アクセス権は、メモリ614の記憶場所と関連したテーブル・エントリ内に格納される数値にエンコードされる。これらのテーブルは、アクセス・チェック・コンポーネントに格納される。機械コード命令が記憶場所に書き込もうと試みるとき、この数値を用いて、機械コード命令が属するプロセスが、この記憶場所を変更するための適切なアクセス権を有するかどうかを検証することができる。メモリ・コントローラ617は、ALU、FPU、及び他のプロセッサ・コンポーネントとは無関係に、メモリに格納される又はメモリから取り出されるデータを処理する。リセット信号に応答して、リセット・コンポーネントが、プロセッサのストレージ・コンポーネントのコンテンツを初期状態にリセットすることができる。このことは、メモリ、キャッシュ及びレジスタから格納された情報を除去し、命令ポインタを、処理される第1の機械コード命令の初期アドレスに設定することを含むことができる。メモリ・アクセス情報をリセットして、メモリの大部分又は全ての部分への最大のアクセス権を許可することが好ましい。リセット・コンポーネントは、例えばリセット・ボタンなどの電気機械式スイッチ618によって、又はハードウェア電源オンによって開始することができる。
【0047】
従来技術の重要な問題は、メモリ部分の書き込みをイネーブルにする及び書き込みをディスエーブルにするために、同じ「ストア・アクセス権」機械コード命令が用いられることである。従って、両方のアクションが同じ特権レベルを有することになる。しかしながら、メモリ部分を、書き込みイネーブル・モードに切り換えることは、書き込み保護モードに切り換えるよりもセキュリティ面での配慮を要する。以下に説明されるように、本実施形態は、この問題を、書き込みイネーブル及び書き込み不能に関して、2つの別個の機械コード命令を与えることによって解決する。書き込みイネーブル機械コード命令には、これを保護されるべきオペレーティング・システム内で開始することはできないが、例えば、ファームウェア・コンポーネントから、仮想環境をオペレーティング・システムに提供するハイパーバイザからなど、オペレーティング・システムの外部からのみ開始できると言う意味で、特権を与える必要がある。
【0048】
図7は、好ましい実施形態によるコンピュータ・システム700の詳細なブロック図を示す。内部通信バス・システム701、ALU703、FPU704、他のプロセッサ・コンポーネント705、命令ポインタ・コンポーネント708、及びレジスタ706は、本質的に従来技術と同様に機能する。この実施形態は、メモリ614が保護可能メモリ718及び標準メモリ714に分割されるという点で、従来技術とは異なる。メモリ制御ユニット702のアクセス・チェック・コンポーネント716を用いて、図7に示されるような標準メモリ714の部分へのアクセス権を保持する。保護可能メモリ718のアクセス権は、メモリ制御ユニットの付加的なトラップドア・コンポーネント719によって制御される。メモリ・コントローラ717は、標準メモリ714及び保護可能メモリ718の両方から取り出され、かつ、標準メモリ714に格納されるデータを処理する。データは、書き込み保護モードへの切り換えの前にだけ、保護可能メモリ718に格納され得る。メモリ・コントローラ717は、ALU、FPU、及び他の処理装置から独立して動作する。本実施形態の命令デコーダ707は、保護可能メモリ718の一部分を書き込み保護モードに切り換えるための書き込み保護機械コード命令720を処理するように適合される。書き込み保護機械コード命令の1つ又は複数のパラメータが、保護可能メモリの1つ又は複数のメモリ・ページの少なくとも1つのメモリ・アドレスを指定することができる。オペレーティング・システム・ソフトウェアから独立して、超特権(super privilege)デコーダ722が、ファームウェア・コンポーネント又はハイパーバイザ721によって与えられる別個の機械コード命令723を処理することができる。超特権デコーダは、保護可能メモリ718の一部分を書き込みイネーブル・モードに切り換えるための書き込みイネーブル機械コード命令724を処理するように適合される。命令デコーダ707は、この書き込みイネーブル機械コード命令を処理するように適合されないことが望ましい。書き込みイネーブル機械コード命令の1つ又は複数のパラメータが、保護可能メモリの1又は複数のメモリ・ページの少なくとも1つのメモリ・アドレスを指定することができる。デコードされた書き込みイネーブル機械コード命令が、トラップドア・リセット・コンポーネント725を介して、超特権デコーダからメモリ制御ユニット702のトラップドア・コンポーネント719に送られる。次に、トラップドア・コンポーネントが、保護可能メモリの指定された部分を書き込みイネーブル・モードに切り換える。トラップドア・リセット・コンポーネント725は、内部バス・システム701から切り離されることが好ましい。リセット・コンポーネント709は、ハードウェア電源オン又はハードウェア・リセット信号を、バス・システム701にだけでなく、トラップドア・リセット・コンポーネント725にも切り換える。このコンポーネントは、リセット信号を処理して、保護可能メモリの大部分又は全ての部分を書き込みイネーブル・モードに切り換える。書き込み保護機械コード命令720及び書き込みイネーブル機械コード命令724は、異なる特権レベルを有する。オペレーティング・システムの機械コード命令711は、書き込み保護機械コード命令を開始できるだけにすぎず、書き込みイネーブル機械コード命令を開始することはできない。上述のように、オペレーティング・システムのための命令デコーダは、書き込みイネーブル機械コード命令をデコードすることができない。
【0049】
代替的な実施形態において、オペレーティング・システムの機械コード命令のコンパイラは、書き込み保護機械コード命令の生成をサポートできるだけであり、書き込みイネーブル機械コード命令の生成を抑制し得る。
【0050】
IBM z/OS(登録商標)及び他のオペレーティング・システムの下では、中央ストレージ内の情報は、複数のストレージ・キー又はストレージ保護キーによって不正な使用から保護される。ストレージ・キーと呼ばれるストレージ内の制御フィールドが、中央ストレージのそれぞれ4キロバイトと関連付けられる。特定キーが、システム内で実行されている各作業に割り当てられる。中央の記憶場所のコンテンツを変更するように要求がなされたとき、要求と関連した特定キーが、ストレージ・キーと比較される。キーが合致するか又はプログラムがマスター・キー0により実行されている場合、要求が満たされる。要求と関連したキーがストレージ・キーと合致しない場合、システムは、要求を拒絶し、プログラム例外割り込みを発行する。例えば、z/OSにおいて、特定キーは、各ジョブに割り当てられた4ビットのプログラム状態語(program status word、PSW)内に格納され、16個までのコンポーネントの分離を可能にする。ストレージ・キーは、例えば、z/OSにおいては、SET_STORAGE_KEY_EXTENDED(SSKE)命令などの「ストア・アクセス権」命令を用いて更新することができる。しかしながら、このストレージ・キーは、オペレーティング・システムの内部で実行されている悪意のあるコードからの保護を行わない。
【0051】
本発明の一実施形態によると、WRITE_PROTECTEDビットをストレージ・キーのビットに付加することができる。WRITE_PROTECTEDビットの値が「1」であるとき、対応するフレームは書き込み保護モードにあり、他の場合には、フレームは書き込みイネーブル・モードにある。SSKE命令は、WRITE_PROTECTEDビットを切り換えることができないが、プロセッサは、WRITE_PROTECT命令及びWRITE_ENABLE命令を与えて、WRITE_PROTECTEDビットの値を変更することができる。WRITE_PROTECT命令は、1つ又は複数のフレームに対してWRITE_PROTECTEDビットの値「1」を設定し、メモリの対応する部分に格納されたデータを変更から保護する。WRITE_ENABLE命令は、WRITE_PROTECTEDビットの値「0」を設定し、1つ又は複数のフレーム内に格納されたデータに対する書き込み動作を可能にする。
【0052】
代替的な実施形態において、SSKE命令は、WRITE_PROTECTEDビットを値「1」に設定することしかできず、WRITE_PROTECTEDビットを値「0」にすることはできない。付加的なWRITE_ENABLE命令のみが、WRITE_PROTECTEDビットを再び値「0」にすることが許可される。WRITE_PROTECTEDビットはまた、書き込み保護状態を表すように値「0」を有することもできる。
【0053】
さらに別の代替的な実施形態において、プロセッサは、1つ又は複数のメモリ・フレームに関するFINALIZE_STORAGE_KEY命令を与える。このFINALIZE_STORAGE_KEY命令は、あらゆる将来のSSKE命令が、以前のSSKE命令によって設定されたストレージ・キーの値を変更することを禁じる。FINALIZE_STORAGE_KEY命令は、対応するメモリ・フレームに関する特定のKEY_FINALIZEDフラグを設定することができる。付加的なINITIALIZE_STORAGE_KEY命令だけが、特定のKEY_FINALIZEDフラグをリセットすることが許容され、SSKE命令を用いたストレージ・キーの変更が可能であることを示す。INITIALIZE_STORAGE_KEY命令は、完全なストレージ・キーのコンテンツを初期値にリセットするように適合させることさえ可能である。
【0054】
本実施形態のハードウェア及びソフトウェア設計は、オペレーティング・システムのプログラム・コード部分及びインターフェースが、WRITE_ENABLE命令及びINITIALIZE_STORAGE_KEY命令を実行するのをサポートしない。外部の超特権デコーダ又はハイパーバイザ・コンポーネントだけが、これらのWRITE_ENABLE命令又はINITIALIZE_STORAGE_KEY命令をサポートできる。
【0055】
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「1つの(a)」、「1つの(an)」及び「その(the)」は、そうでないことが示されていない限り、複数形も同様に含むことを意図したものである。本明細書で用いられる場合、「含む(comprise)」及び/又は「含んでいる(comprising)」という用語は、提示された特徴、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を特定するものであるが、1つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び/又はそれらのグループの存在を排除するものではないことが、さらに理解されるであろう。
【0056】
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して上述される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを生成し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート図及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装するための手段を生成するようにすることができる。
【0057】
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスに特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納して、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装するための命令を含む製品を製造するようにすることもできる。
【0058】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスにロードし、一連の動作ステップをコンピュータ、他のプログラム可能装置、又は他のデバイスの上で実行させて、コンピュータ実施プロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装するためのプロセスを提供するようにすることもできる。
【0059】
図中のフローチャート及び/又はブロック図は、本発明の種々の実施形態による、システム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能及び動作を示すものである。この点で、フローチャート又はブロック図内の各ブロックは、モジュール、セグメント又はコードの一部を表すことができ、これらは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む。幾つかの代替的な実装においては、ブロックに記された機能が図に記された順序通りに行われない場合があることにも留意すべきである。例えば、連続して示された2つのブロックが、実際には実質的に同時に実行されることがあり、これらのブロックが、関与する機能に応じて、ときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図における各ブロック、並びに、ブロック図及び/又はフローチャート図におけるブロックの組み合わせは、指定された機能若しくは動作を行う専用ハードウェア・ベースのシステム又は専用ハードウェアとコンピュータ命令との組み合わせによって実装できることにも留意すべきである。
【0060】
上記は、本発明の特定の実施形態を参照しているが、当業者であれば、添付の特許請求の範囲によってその範囲が定められる本発明の原理及び趣旨から逸脱することなく、これらの実施形態における変更をなし得ることを認識するであろう。
【符号の説明】
【0061】
200、300、400、500、600、700:コンピュータ・システム
201、301、401、501:中央処理装置(CPU)
202、302、402、502:作業メモリ
203、303、403、503:ストレージ手段
211:プログラム・コードの部分
221、421、431、531:オペレーティング・システム(OS)
231:メモリ領域
312:OSコマンド
351、451:書き込み保護機械コード命令
404:タイマー・コンポーネント
532、533、534:メモリ部分
552:書き込みイネーブル機械コード命令
601、701:内部通信手段
602、702:メモリ制御ユニット
603、703:算術論理演算ユニット(ALU)
604、704:浮動小数点演算ユニット(FPU)
605、705:他のプロセッサ・コンポーネント
606、706:レジスタ
607、707:命令デコーダ
608、708:命令ポインタ・コンポーネント
609、709:リセット・コンポーネント
611:機械コード命令のシーケンス
612、613:ストア・アクセス権命令
614:ランダム・アクセス・メモリ(RAM)
615:キャッシュ
616、716:アクセス・チェック・コンポーネント
617、717:メモリ・コントローラ
711:機械コード命令
714:標準メモリ
718:保護可能メモリ
719:トラップドア・コンポーネント
720:書き込み保護機械コード命令
721:ハイパーバイザ
722:超特権デコータ
723:個別機械コード命令
724:書き込みイネーブル機械コード命令
725:トラップドア・リセット・コンポーネント

【特許請求の範囲】
【請求項1】
中央処理装置(CPU)及び作業メモリを有するコンピュータ・システムにおいて不正な変更からオペレーティング・システム(OS)を保護するためのコンピュータ化された方法であって、
前記OSの部分を、書き込み保護されるように事前に定義するステップと、
前記OSを前記作業メモリにロードすることによって、前記コンピュータ・システムを開始するステップと、
前記CPUによって実行される書き込み保護機械コード命令を開始して、前記事前定義済みOS部分を含む前記作業メモリ部分を書き込み保護モードに不可逆的に切り換える特定のOSコマンドに達することによって、前記事前定義済みOS部分のロードを終了するステップと、
を含む方法。
【請求項2】
前記事前定義済みOS部分を含む前記作業メモリ部分の書き込みイネーブル・モードへの切り換え復帰を開始するOSコマンドが禁止される、請求項1に記載の方法。
【請求項3】
前記書き込み保護機械コード命令は、前記CPUによって与えられる、請求項1に記載の方法。
【請求項4】
前記書き込み保護機械コード命令は、特定のメモリ・アドレスにアクセスすることによってトリガされる、請求項1に記載の方法。
【請求項5】
前記書き込み保護機械コード命令は、前記書き込み保護モードを前記CPUに指し示すことによって、前記事前定義済みOS部分を含む前記作業メモリ部分へのアクセス権を制御するストレージ・キーと関連付けられる、請求項1に記載の方法。
【請求項6】
所定の時間間隔が経過した後、タイマー・コンポーネントが、前記書き込み保護機械コード命令を開始する、請求項1に記載の方法。
【請求項7】
前記所定の時間間隔の計測は、リアルタイム・クロックに基づいている、請求項6に記載の方法。
【請求項8】
前記所定の時間間隔の計測は、前記OSによって実行される命令カウントに基づいている、請求項6に記載の方法。
【請求項9】
前記命令は、仮想環境の仮想処理装置によって実行される、請求項8に記載の方法。
【請求項10】
前記所定の時間間隔の計測は、仮想環境の仮想処理装置のサイクル・カウントに基づいている、請求項6に記載の方法。
【請求項11】
書き込みイネーブル機械コード命令は、前記事前定義済みOS部分を含む前記メモリ部分を書き込みイネーブル・モードに切り換えるように、前記CPUによって実行される前記OSの外部のリセット・プロセスによって開始される、請求項1に記載の方法。
【請求項12】
前記リセット・プロセスは前記OSの外部のハイパーバイザによってもたらされ、前記ハイパーバイザは前記OSに仮想環境をもたらす、請求項11に記載の方法。
【請求項13】
書き込み保護機械コード命令を実行して、オペレーティング・システム(OS)の事前定義部分を含む作業メモリの部分を書き込み保護モードに不可逆的に切り換えるための適合された手段を含む中央処理装置(CPU)であって、コンピュータ・システムが、前記OSを前記作業メモリにロードすることによって開始され、前記事前定義済みOSは、実行される前記書き込み保護機械コード命令を開始する特定のOSコマンドに達することによって終了される、中央処理装置。
【請求項14】
コンピュータ・システムであって、オペレーティング・システム(OS)の部分を、不正な変更から書き込み保護されるように事前に定義するためのオペレーティング・システム(OS)と、中央処理装置(CPU)と、作業メモリと、前記OSを前記作業メモリにロードすることによって前記コンピュータ・システムを開始し、かつ、前記CPUによって実行される書き込み保護機械コード命令を開始して、前記事前定義済みOS部分を含む前記作業メモリ部分を書き込み保護モードに不可逆的に切り換える特定のOSコマンドに達することによって、前記事前定義済みOS部分のロードを終了するための、前記コンピュータ・システムの適合された手段とを含むコンピュータ・システム。
【請求項15】
不正な変更からオペレーティング・システムを保護するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、コンピュータ使用可能プログラム・コードが具体化されたコンピュータ使用可能媒体を含み、前記コンピュータ使用可能プログラム・コードは、請求項1から請求項12までのいずれかに記載の前記ステップを実行するように構成される、コンピュータ・プログラム製品。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公表番号】特表2013−515989(P2013−515989A)
【公表日】平成25年5月9日(2013.5.9)
【国際特許分類】
【出願番号】特願2012−545174(P2012−545174)
【出願日】平成22年10月25日(2010.10.25)
【国際出願番号】PCT/EP2010/066049
【国際公開番号】WO2011/076464
【国際公開日】平成23年6月30日(2011.6.30)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.UNIX
2.WINDOWS
3.Linux
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【Fターム(参考)】