(57)【特許請求の範囲】
【請求項１】
シグネチャ発生器が、暗号化キー・ハッシュ関数を実施することによって、実行可能プログラムに対するシグネチャ構成要素を発生するステップにして、暗号化キー・ハッシュ関数で用いられる第１のキーは、予め前記実行可能なプログラムに対して割り当てられたアクセス権を含み、該アクセス権は、オブジェクト及び各オブジェクトに対して呼び出すことができる動作のタイプを定義したものである、ステップと、
前記シグネチャ発生器からシグネチャ構成要素を受け取る暗号化器が、該シグネチャ構成要素を第２のキーとして使用して、実行可能プログラムに対して暗号化アルゴリズムを実施するステップと
を含む符号化された実行可能イメージを発生する方法。
【請求項２】
暗号化された実行可能イメージおよびシグネチャ構成要素を含んでいるデータのブロックを記憶ユニットから受け取る分離ユニットが、そのブロックの、シグネチャ構成要素と暗号化された実行可能イメージとを分離するステップと、
前記シグネチャ構成要素と前記暗号化された実行可能イメージとを前記分離ユニットから受け取る暗号解読ユニットが、該シグネチャ構成要素を第１のキーとして使用して、前記暗号化された実行可能イメージを暗号解読して、実行可能プログラムにするステップと、
前記暗号解読ユニットから前記実行可能プログラムを受け取る識別ユニットが、前記実行可能プログラム内の識別マークから該実行可能プログラムに割り当てられたアクセス権の関連する組を有する第２のキーを識別するステップと、
前記実行可能プログラムと前記第２のキーを受け取るシグネチャ発生ユニットが、前記第２のキーを使用して、前記実行可能プログラムの暗号キー・ハッシュ値を計算するステップと、
前記シグネチャ構成要素と前記暗号キー・ハッシュ値とを受け取る検証ユニットが、それらを比較することによって、前記データのブロックに修正がなされていないことを検証するステップと
を含むアクセス制御方法。
【請求項３】
暗号化キー・ハッシュ関数を実施することによって、実行可能プログラムに対するシグネチャ構成要素を発生するシグネチャ発生器にして、暗号化キー・ハッシュ関数で用いられる第１のキーは、予め前記実行可能なプログラムに対して割り当てられたアクセス権を含み、該アクセス権は、オブジェクト及び各オブジェクトに対して呼び出すことができる動作のタイプを定義したものである、シグネチャ発生器と、
該シグネチャ発生器に結合され、シグネチャ構成要素を第２のキーとして使用して、実行可能プログラムを暗号化する第１の暗号化器と
を含む実行可能プログラムを符号化するデバイス。
【請求項４】
第１の実行可能プログラムに対してキー・ハッシュ関数を実施するステップから得られたシグネチャ構成要素を、データのブロック内の暗号化された実行可能イメージから分離する分離ユニットと、
該分離ユニットに結合され、シグネチャ構成要素を使用して、暗号化された実行可能イメージを暗号解読して、第２の実行可能プログラムにする暗号解読ユニットと、
該暗号解読ユニットに結合され、前記第２の実行可能プログラム内の識別マークから識別される該実行可能プログラムに割り当てられたアクセス権の関連する組を有するキーを使用して、前記第２の実行可能プログラムの暗号キー・ハッシュ値を計算するシグネチャ発生ユニットと、
該シグネチャ発生ユニットに結合され、前記暗号キー・ハッシュ値と前記シグネチャ構成要素とを比較する検証ユニットと
を含むアクセス・コントローラ。
【請求項５】
バスと、
該バスに結合されたメモリと、
シグネチャ構成要素をデータのブロック内の暗号化された実行可能イメージから分離する分離ユニットと、
この分離ユニットに結合され、シグネチャ構成要素を使用して暗号化された実行可能イメージを暗号解読して、実行可能プログラムにする暗号解読ユニット、
該暗号解読ユニットに結合され、前記実行可能プログラム内の識別マークから識別される該実行可能プログラムに割り当てられたアクセス権の関連する組を有するキーを使用して実行可能プログラムの暗号キー・ハッシュ値を演算するシグネチャ発生ユニットと、
該シグネチャ発生ユニットに結合され、暗号キー・ハッシュ値とシグネチャ構成要素とを比較する検証ユニットと
を含むコンピュータ・システム。
【発明の詳細な説明】
発明の分野
本発明は、コンピュータ・システム内のアクセス制御に関する。さらに詳細には、本発明は、実行可能イメージの出所を識別し、その識別を使用して、実行可能イメージに与えられるアクセス権のレベルを決定する装置および方法に関する。
発明の背景
コンピュータ・システムのセキュリティ侵害は、故意の侵害と偶然の侵害に分類することができる。故意のアクセスの形には、データの無許可の読出し、データの無許可の修正、およびデータの無許可の破壊がある。たいていのオペレーティング・システムは、他のプロセスを作成するプロセス用の手段を備えている。そのような環境内では、オペレーティング・システム資源およびユーザ・ファイルが誤用される状況をつくり出すことができる。ワームおよびビールスは、２つの一般的な誤用の方法である。コンピュータ・システムの保護は、実行すべきプログラムのソースを識別し、かつこれらのプログラムが、その時にシステムに対するセキュリティ脅威をもたらす形で修正されていないことを確かめる能力に依存する。
プログラムのソースの認証を確かめる以外にも、オペレーティング・システムから適切な許可を得たプロセスだけがコンピュータ・システムのファイル、メモリ・セグメント、ＣＰＵ、および他の資源を使用できるようにする必要がある。この保護を実施するのにはいくつかの理由がある。最も明らかな理由は、いたずらによるアクセス制限の故意の侵害を防ぐ必要があることである。より一般的に重要なことは、システム内で活動している各プログラム構成要素が、システム資源のユーザに対する定まった方針に一致する形でこれらのシステム資源を使用するようにする必要があることである。保護は、構成要素サブシステム間のインタフェースにおいて待ち時間エラーを検出することによって信頼性を向上させることができる。インタフェース・エラーの初期の検出は、誤動作している他のサブシステムによる健康なサブシステムの汚染を防ぐことができる。
プロセスは、一般に、保護ドメイン内で動作する。そのドメインは、プロセスがアクセスすることができる資源を指定する。各ドメインは、１組のオブジェクトおよび各オブジェクトに対して呼び出すことができる動作のタイプを定義する。オブジェクトに対して動作を実行する能力はアクセス権である。ドメインはアクセス権の集合であり、各アクセス権は、一般に順序付けされた対：＜オブジェクト名、権利セット＞である。例えば、ドメインＤがアクセス権＜ファイルＦ、｛読取り、書込み｝＞を有する場合、ドメインＤ内で実行しているプロセスは、ファイルＦの読取りならびに書込みを行うことができる。ただし、そのオブジェクトに対して他の動作を実行することは許されない。ドメインは、非結合であるか、またはアクセス権を共有する。また、プロセスとドメインの関係は、静的であることもあり、動的であることもある。したがって、各プロセスにアクセスできる保護ドメインを制限することが重要である。
したがって、実行可能イメージの出所、実行可能イメージが修正されていないかどうか、および実行可能イメージがオペレーティング・システムによって許可されるアクセス権のレベル又は信頼性を識別するために利用することができる実行可能イメージの許されないシグネチャを与える装置および方法が必要である。
発明の概要
コンピュータ・システム内でアクセス制御を行う方法および装置を開示する。アクセス・コントローラの一実施態様は、記憶ユニットを含んでいる。記憶ユニットは、シグネチャ構成要素と暗号化された実行可能イメージとを有するデータのブロックを含んでいる。分離ユニットが記憶ユニットに結合される。分離ユニットは、データのブロックを受け取り、シグネチャ構成要素を暗号化された実行可能イメージから分離する。暗号解読ユニットが分離ユニットに結合される。暗号解読ユニットは、暗号化された実行可能イメージを受け取り、暗号化された実行可能イメージを実行可能プログラムに解読する。これは、シグネチャ構成要素をキーとして使用して、暗号化された実行可能イメージを暗号解読する暗号解読アルゴリズムを実施することによって行うことができる。識別ユニットが暗号解読ユニットに結合される。識別ユニットは、使用すべき実行可能プログラムを受け取り、実行可能プログラムの暗号キー・ハッシュ値を計算するために実行可能プログラム内の識別マークに指定されたキーを識別する。シグネチャ発生装置が暗号解読ユニットに結合される。シグネチャ発生装置は、実行可能プログラムを受け取り、識別ユニットによって識別された記憶キーを使用して、実行可能プログラムの暗号キー・ハッシュ値を計算する。検証ユニットがハッシュ・ユニットに結合される。検証ユニットは、データブロックのソースを検証し、またデータのブロックが修正されていないことを検証するために、キー・ハッシュ値とシグネチャ構成要素とを比較する。権利割当てユニットがハッシュ・ユニットに結合される。権利割当てユニットは、実行可能プログラムのキー・ハッシュ値を計算するために使用されるキーを受け取り、キーに関連する権利に従って実行可能プログラムに権利を割り当てる。
本発明の第２の実施態様では、コンピュータ・システム内でアクセス制御を行う方法を開示する。まず、シグネチャ構成要素および暗号化された実行可能イメージを有するデータのブロックを受け取る。データのブロックを受け取った後、シグネチャ構成要素を暗号化された実行可能イメージから分離する。次に、シグネチャ構成要素をキーとして使用する暗号解読アルゴリズムを実施することによって実行可能イメージを暗号解読する。実行可能プログラム内の識別マークに対応する複合キーを識別する。複合キーを使用して、実行可能プログラムのキー・ハッシュ値を計算する。キー・ハッシュ値を計算した後、データのブロックのソースを検証するためにキー・ハッシュ値とシグネチャ構成要素とを比較する。キーに事前に割り当てられた権利に従って実行可能プログラムに権利を割り当てる。
【図面の簡単な説明】
本発明は、以下で行う詳細な説明、および本発明において実施される様々な特徴および要素の添付の図面からより完全に理解できよう。説明および図面は、本発明を特定の実施形態に限定するものではない。それらは、説明および理解のために与えられる。
第１図は、コンピュータ・システム内で実施されるアクセス・コントローラの一実施形態を示す図である。
第２図は、本発明の符号化ユニットの一実施形態のブロック図である。
第３図は、本発明の符号化ユニットを使用して、メッセージをどのようにして符号化するかを示す図である。
第４図は、本発明のアクセス・コントローラの第１の実施形態のブロック図である。
第５図は、本発明のビデオ処理システムの第３の実施形態のブロック図である。
第６図は、符号化の方法を示す流れ図である。
第７図は、コンピュータ・コンピュータのアクセス制御を行う方法を示す流れ図である。
詳細な説明
新規のアクセス・コントローラ・ユニットを開示する。以下の詳細な説明では、本発明を完全に理解することができるように多数の特定の詳細を記載する。しかしながら、本発明は、これらの特定の詳細なしに実施できることが当業者なら理解できよう。他の場合には、周知の方法、手順、構成要素、および回路については、本発明を曖昧にしないために詳細には説明していない。
以下の詳細な説明のいくつかの部分は、コンピュータ・メモリ内のデータ・ビットに対する動作のアルゴリズムおよび記号表現の形で示される。これらのアルゴリズム記述および表現は、データ処理分野の当業者が、その仕事の要旨を他の当業者に最も効率的に伝達するために使用する手段である。アルゴリズムは、所望の結果をもたらすステップの自己矛盾のないシーケンスであると考えられる。ステップは、物理量の物理操作を必要とするステップである。通常、必ずしもそうではないが、これらの量は、記憶、転送、組合せ、比較、他の形の操作が可能な電気信号または磁気信号である。主として慣用法の理由で、これらの信号をビット、値、要素、記号、文字、項、数などと呼ぶことが便利であることが分かっている。ただし、これらおよび同様の用語はすべて適切な物理量に関連するものとし、これらの量に適用される便利なラベルにすぎないことに留意されたい。以下の議論から明らかなように特に別段の指定がなければ、「処理」、「演算（ｃｏｍｐｕｔｉｎｇ）」、「計算（ｃａｌｃｕｌａｔｉｎｇ）」、「決定」、「表示」などの用語を使用する議論は、コンピュータ・システムのレジスタおよびメモリ内で物理（電子）量として表されるデータを操作し、コンピュータ・システムのメモリまたはレジスタまたは他のそのような情報記憶デバイス、情報伝送デバイスまたは情報ディスプレイ・デバイス内で同様に物理量として表される他のデータに変換するコンピュータ・システムまたは同様の電子計算装置の処理およびプロセスをさす。
第１図に、本発明の一実施形態のコンピュータ・システムをブロック図の形で示す。コンピュータ・システムは、バス１００、キーボード・インタフェース１０１、外部メモリ１０２、大容量記憶装置１０３、プロセッサ１０４およびディスプレイ・デバイス・コントローラ１０５を含んでいる。バス１００は、ディスプレイ・デバイス・コントローラ１０５、キーボード・インタフェース１０１、マイクロプロセッサ１０４、メモリ１０２および大容量記憶装置１０３に結合される。ディスプレイ・デバイス・コントローラ１０５は、ディスプレイ・デバイスに結合することができる。キーボード・インタフェース１０１は、キーボードに結合することができる。
バス１００は、単一のバスか、または複数のバスの組合せである。一例として、バス１００は、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒａｌ（ＩＳＡ）バス、Ｅｘｔｅｎｄｅｄ  Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＥＩＳＡ）バス、システム・バス、Ｘバス、ＰＳ／２バス、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バス、Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ（ＰＣＭＣＩＡ）バス、または他のバスを含む。バス１００はまた、これらのバスの任意の組合せを含む。バス１００は、コンピュータ・システム内の構成要素間の通信リンクを与える。キーボード・インタフェース１０１は、キーボード・コントローラまたは他のキーボード・インタフェースである。キーボード・インタフェース１０１は、専用デバイスであるか、またはバス・コントローラまたは他のコントローラなど他のデバイス内に常駐することができる。キーボード・インタフェース１０１は、キーボードをコンピュータ・システムに結合することを可能にし、キーボードからコンピュータ・システムに信号を伝送する。外部メモリ１０２は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）デバイス、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）デバイス、または他のメモリ・デバイスを含む。外部メモリ１０２は、大容量記憶装置１０３およびプロセッサ１０４からの情報およびデータをプロセッサ１０４が使用することができるように記憶する。大容量記憶装置１０３は、ハードディスク・ドライブ、フロッピーディスク・ドライブ、ＣＤ−ＲＯＭデバイス、フラッシュ・メモリ・デバイスまたは他の大容量記憶装置である。大容量記憶装置１０３は、情報およびデータを外部メモリ１０２に与える。
プロセッサ１０４は、外部メモリ１０２からの情報およびデータを処理し、情報およびデータを外部メモリ１０２内に記憶する。プロセッサ１０４はまた、キーボード・コントローラ１０１から信号を受け取り、情報およびデータをディスプレイ・デバイス上に表示するためにディスプレイ・デバイス・コントローラ１０５に伝送する。プロセッサ１０４はまた、ビデオ・イメージをディスプレイ・デバイス上に表示するためにディスプレイ・コントローラに伝送する。プロセッサ１０４は、複雑命令セット演算（ＣＩＳＣ）マイクロプロセッサ、簡単命令セット演算（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、または他のプロセッサ・デバイスである。ディスプレイ・デバイス・コントローラ１０５は、ディスプレイ・デバイスをコンピュータ・システムに結合することを可能にし、ディスプレイ・デバイスとコンピュータ・システムの間のインタフェースの働きをする。ディスプレイ・デバイス・コントローラ１０５は、モノクローム・ディスプレイ・アダプタ（ＭＤＡ）カード、カラー・グラフィックス・アダプタ（ＣＧＡ）カード、エンハンスド・グラフィックス・アレイ（ＥＧＡ）カード、マルチカラー・グラフィックス・アレイ（ＭＣＧＡ）カード、ビデオ・グラフィックス・アレイ（ＶＧＡ）カード、エクステンデッド・グラフィックス・アレイ（ＸＧＡ）カード、または他のディスプレイ・デバイス・コントローラである。ディスプレイ・デバイスは、テレビ、コンピュータ・モニタ、フラット・パネル・ディスプレイ、または他のディスプレイ・デバイスである。ディスプレイ・デバイスは、ディスプレイ・デバイス・コントローラ１０５を介してプロセッサ１０４からの情報およびデータを受け取り、情報およびデータをコンピュータ・システムのユーザに表示する。
コンピュータ・システムはまた、アクセス・コントローラ・ユニット１０６を含んでいる。アクセス・コントローラ・ユニット１０６はバス１００に結合される。コンピュータ・システム内のアクセス権に関連する一組のキーがアクセス・コントローラ・ユニット１０６内に記憶される。各キーは、プログラムがその中で動作するドメインを定義する。キーはまた、プログラム・シグネチャを発生するために暗号ハッシュ関数内でパラメータとして使用される１つまたは複数の複合キーを定義する。プログラム・シグネチャはさらに、実行可能プログラムを暗号化するための暗号化キーとして使用される。
アクセス・コントローラ・ユニット１０６は、大容量記憶装置１０３またはバス１００に結合された他の入出力デバイスから、プログラム１０４が実行すべきプロセスを受け取る。プロセスは、暗号化された実行可能イメージおよびシグネチャ構成要素を含んでいる。コンピュータ・システムがプログラムを実行する前に、アクセス・コントローラ・ユニット１０６は、プログラムのシグネチャが法的に既知の複合キーから構成されていることを検証する。プロセスのシグネチャ構成要素を検査することによって、アクセス・コントローラ・ユニット１０６は、プロセスの出所を識別し、プロセスがコンピュータ・システムに対する脅威をもたらす形で修正されていないことを検証し、オペレーティング・システムがプロセスに許可するアクセス権のレベルを決定する。次いで、アクセス・コントローラ・ユニット１０６は、実行可能プログラムが、複合キーを得る際に使用されるキーに割り当てられた権利を使用して実行することを可能にする。
第２図に、本発明のファイル符号化ユニットの一実施形態のブロック図を示す。ファイル符号化ユニット２１０は、シグネチャ発生器２２１および暗号化器２３０を含んでいる。シグネチャ発生器２２１は、プログラム１０４が実行すべき実行可能プログラムのシグネチャを発生するように動作する。暗号化器２３０は、シグネチャをキーとして使用して、実行可能プログラムを含んでいるファイル暗号化する。シグネチャ発生器２２１は、実行可能プログラムの平文に対して暗号キー・ハッシュ関数を実行し、暗号文を発生する。シグネチャ発生器２２１は、アクセス・コントローラ・ユニット１０６内に記憶されたキーの複合キーであるキーを使用する。暗号ハッシュ関数内で使用される各複合キーは、一組のアクセス権に関連する。これらの権利は、実行前に実行可能プログラムに割り当てられる。
シグネチャ発生器２２１は、演算ユニット２２２および暗号化ユニット２２３を含んでいる。シグネチャ発生器２２１は、演算ユニット２２２および暗号化ユニット２２３を使用して、実行可能プログラムの平文に対して任意の数の暗号キー・ハッシュ関数または暗号化アルゴリズムを実施することができる。キーは、対称型プライベート・キーか、または非対称型パブリック・キーである。違いは、キーのオペレーティング・システムのコピーに必要な保護の範囲である。シグネチャ発生器２２１は、Ｌｕｃｉｆｅｒ、Ｍａｄｒｙｇａ、ＮｅｗＤＥＳ、ＦＥＡＬ、ＲＥＤＯＣ、ＬＯＫＩ、Ｋｈｕｆｕ、Ｋｈａｆｒｅ、またはＩＤＥＡなどの従来のアルゴリズムを使用して、実行可能プログラムの暗号キー・ハッシュ値を発生することができる。本発明の一実施形態では、演算ユニット２２２および暗号化ユニット２２３は、データ暗号化標準（ＤＥＳ）暗号ブロック連鎖（ＣＢＣ）を使用して、実行可能プログラムの暗号ハー・ハッシュ値を発生することができる。
第３図に、演算ユニット２２２および暗号化ユニット２２３が、ＣＢＣを使用して、実行可能プログラムの暗号キー・ハッシュ値を発生する場合に行うステップを示す。連鎖は、フィードバック機構を使用する。前のブロックの暗号化の結果は、現在のブロックの暗号化にフィードバックされる。言い換えれば、前のブロックを使用して、次のブロックの暗号化を修正する。各暗号文ブロックは、それを発生した平文ブロックならびに前の平文ブロックに依存する。ＣＢＣでは、平文は、暗号化される前に前の暗号文ブロックとの排他的論理的をとられる。
この例では、符号化ユニット２１０は、２４バイトのサイズを有する実行可能プログラムを含んでいるファイルを受け取る。シグネチャ発生器２２１は、２４バイト・ファイルを３つの８バイト・セクションに分割する。平文の第１の８バイトは、ブロック３０１内にＰ１として表される。Ｐ１は、演算ユニット２２２内に記憶された開始ベクトル（ＩＶ）との排他的論理和をとられる。これは、第１の積をもたらす。開始ベクトルは、実行可能プログラムに割り当てるべき一組のアクセス権に関連する第１の複合キーの関数である。Ｐ１がＩＶとの排他的論理和をとられた後、暗号化ユニット２２３は、第２の複合キーを使用して、第１の積に対してキー暗号化アルゴリズムを実施し、暗号化された第１の積Ｃ1を生成する。キー暗号化アルゴリズムは、前に記載したいずれかのキー暗号化アルゴリズムを含めて、様々な異なるキー暗号化アルゴリズムの１つである。演算ユニット２２２は、暗号化された第１の積と、Ｐ２として表される第２の８バイト・セクションとの排他的論理和をとり、第２の８バイト積を生成する。暗号化ユニット２２３は、第２の積に対して第２の複合キーを使用して、キー暗号化アルゴリズムを実施し、暗号化された第２の積Ｃ2を生成する。演算ユニット２２２は、暗号化された第２の積と、第３の８バイト・セクションとの排他的論理和をとり、第３の８バイト積を生成する。暗号化ユニット２２３は、第３の積に対して第２の複合キーを使用して、キー暗号化アルゴリズムを実施する。これは、実行可能プログラムのシグネチャとして使用される第３の暗号化された積Ｃ3を生成する。
シグネチャ発生器２２１は、ファイル中のすべての文字の関数である実行可能プログラムのシグネチャを発生する。したがって、実行可能プログラムが修正された場合、暗号キー・ハッシュ値を再演算し、再演算した値と元のシグネチャとを比較することによって修正を検出することができる
暗号化器２３０は、キー暗号ハッシュ・アルゴリズムから発生したシグネチャをキーとして使用して、暗号化アルゴリズムを実施することによって実行可能プログラムを暗号化するように動作する。これは、暗号化された実行可能イメージを生成する。実行可能プログラムの暗号化は、無許可の第三者が実行可能プログラムを読み出すのを防ぐための追加の保護レベルを与える。どんな形の暗号化アルゴリズムも暗号化器２３０によって使用される。暗号化された実行可能イメージならびにシグネチャは、実行のためにコンピュータ・システムにファイルとして送られる。
第４図に、本発明のアクセス・コントローラの第２の実施形態のブロック図を示す。アクセス制御ユニット４００は、記憶ユニット４１０、分離ユニット４２０、暗号解読ユニット４３０、識別ユニット４４０、シグネチャ発生ユニット４５０、検証ユニット４６０、および権利割当てユニット４７０を含んでいる。
記憶ユニット４１０は、暗号化された実行可能イメージおよびシグネチャ構成要素を含んでいるデータのブロックを受け取る。記憶ユニット４１０は、ＤＲＡＭデバイス、ＳＲＡＭデバイス、または他のメモリ・デバイスを含む。記憶ユニット４１０は、ポインタを使用して、記憶されたファイルが実行可能イメージであるか、または実行可能プログラムであるかをコンピュータ・システムに示す。ポインタは、記憶されたファイルが実行可能イメージである場合には、記憶ユニット４１０が一時記憶装置として使用されていることをコンピュータ・システムに示す。ポインタは、ファイルが実行可能プログラムである場合には、記憶ユニット４１０が実行可能空間として使用されていることをコンピュータ・システムに示す。
分離ユニット４２０は、記憶ユニット４１０に結合される。分離ユニット４２０は、記憶ユニット４１０からデータのブロックを受け取り、暗号化された実行可能イメージをシグネチャ構成要素から分離する。これにより、アクセス制御ユニット４００は、暗号化された実行可能イメージとシグネチャ構成要素を別々に処理することができる。
暗号解読ユニット４３０は、分離ユニット４２０および記憶ユニット４１０に結合される。暗号解読ユニット４３０は、分離ユニット４２０から暗号文形式の暗号化された実行可能イメージおよびシグネチャ構成要素を受け取る。暗号解読ユニット４３０は、シグネチャ構成要素をキーとして使用して、暗号化された実行可能イメージを暗号解読する。暗号解読ユニット４３０は、暗号化された実行可能イメージを暗号解読された実行可能プログラムに変換する。
識別ユニット４４０は、暗号解読ユニット４３０および記憶ユニット４１０に結合される。識別ユニット４４０は、暗号解読ユニット４３０から実行可能プログラムを受け取る。識別ユニット４４０は、実行可能プログラム内の識別マークを読み取り、識別マークに割り当てられる対応する複合キーの識別を得る。この複合キーは、一般に実行可能プログラムのキー・ハッシュ値を発生するためにシグネチャ発生ユニット２２１によって使用されるのと同じキーである。本発明の一実施形態では、識別プロセッサ４４０は様々な識別マークを様々な複合キーに一致させる参照テーブルを含んでいる。複合キーは、実行可能プログラムに与えられる特定のアクセス権に関連する。
シグネチャ発生ユニット４５０は、識別ユニット４４０および記憶ユニット４１０に結合される。シグネチャ発生ユニット４５０は、実行可能プログラムの識別マークに割り当てられた複合キーの識別を受け取る。シグネチャ発生ユニット４５０は、識別ユニット４４０によって受け取られた複合キーの識別を使用して、識別ユニット４４０によって受け取られた暗号解読された実行可能プログラムの暗号キー・ハッシュ値を計算するように動作する。シグネチャ発生ユニット４５０は、コンピュータ・システムへの特定のアクセス権を割り当てられた複数のキーを記憶する。これらのキーは、実行可能プログラムおよび暗号解読された実行可能プログラムを符号化し、復号するために使用される複数の複合キーを与える。
検証ユニット４６０は、シグネチャ発生ユニット４５０および記憶ユニット４１０に結合される。検証ユニット４６０は、記憶ユニット４１０から実行可能イメージの構成要素を受け取り、シグネチャ発生ユニット４５０から暗号解読された実行可能プログラムのキー・ハッシュ値を受け取る。検証ユニット４６０は、暗号解読された実行可能プログラムのキー・ハッシュ値と実行可能イメージの構成要素とを比較する。２つが同じである場合、検証ユニット４６０は、コンピュータ・システムが暗号解読された実行可能プログラムを実行することができるようにする。２つが同じでない場合、検証ユニット４６０は、実行可能イメージが修正されており、コンピュータ・システムが実行すべきでないことを理解する。
本発明の一実施形態では、シグネチャ発生ユニット４５０は、暗号解読された実行可能プログラムのキー・ハッシュ半数を計算するために使用される複合キーの識別を受け取らない。代わりに、シグネチャ発生ユニット４５０は、シグネチャ発生ユニット４５０内の記憶キーの置換によって得られる複合キーを使用して、暗号解読された実行可能プログラムの複数のキー・ハッシュ値を計算する。これらのキー・ハッシュ値は、いずれかのキー・ハッシュ値が元のシグネチャ構成要素に一致するかどうかを決定する検証ユニット４６０によって受け取られる。同様に、実行可能イメージのシグネチャ構成要素と、暗号解読された実行可能プログラムの計算したいずれかのキー・ハッシュ値とが一致する場合、検証ユニット４６０は、コンピュータ・システムが暗号解読された実行可能プログラムを実行することができるようにする。一致しない場合、検証ユニット４６０は、実行可能イメージが修正されており、コンピュータ・システムが実行すべきでないことを理解する。
権利割当てユニット４７０は、検証ユニット４６０および記憶ユニット４１０に結合される。権利割当てユニット４７０は、実行可能イメージのシグネチャ構成要素に対して一致するキー・ハッシュ値を計算するために使用される複合キーの識別を受け取る。権利割当てユニット４７０は、コンピュータ・システムが暗号解読された実行可能プログラムを実行すべきことを示す信号を検証ユニット４６０から受け取ったとき、一致するキー・ハッシュ値を計算するために使用される特定の複合キーに関連する権利を識別することによって使用可能な権利をプログラムに割り当てるように動作する。本発明の一実施形態では、権利割当てユニット４７０は、様々な複合キーを様々なアクセス権レベルに一致させる参照テーブルを含む。権利割当てユニット４７０は、暗号解読された実行可能プログラムに適切な権利を割り当てた後、記憶ユニット４１０が実行可能スペースとして使用されていることをコンピュータ・システムに示すために記憶ユニット４１０内のポインタを移動する。コンピュータ・システムは、記憶ユニット４１０が実行可能プログラムを含んでいることを認識し、実行可能プログラムを実行し始める。
第５図に、本発明の第４の実施形態の代表的なコンピュータ・システムをブロック図の形で示す。コンピュータ・システムは、バス５００、マイクロプロセッサ５１０、メモリ５２０、データ記憶装置５３０、キーボード・コントローラ５４０、およびディスプレイ・デバイス・コントローラ５５０を含んでいる。
マイクロプロセッサ５１０は、複雑命令セット計算（ＣＩＳＣ）マイクロプロセッサ、簡単命令セット計算（ＲＩＳＣ）マイクロプロセッサ、または他のプロセッサ・デバイスである。マイクロプロセッサは、メモリ５２０内に記憶された命令またはコードを実行し、メモリ５２０内に記憶されたデータに対して動作を実施する。コンピュータ・システム５００はさらに、バス５１５に結合されるハードディスク・ドライブ、フロッピーディスク・ドライブ、光ディスク・ドライブなどデータ記憶装置５３０を含んでいる。ディスプレイ・デバイス・コントローラ５５０もバス５１５に結合される。ディスプレイ・デバイス・コントローラ５５０は、ディスプレイ・デバイスをコンピュータ・システムに結合することを可能にする。キーボード・コントローラ５４０は、キーボードをコンピュータ・システムに結合することを可能にし、キーボードからコンピュータ・システムに信号を伝送する。
メモリ５２０は、バス５００を介してマイクロプロセッサ５１０に結合される。メモリ５２０は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）デバイス、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）デバイス、または他のメモリ・デバイスである。メモリ５２０は、アプリケーション・プログラム、オペレーティング・システム・プログラムまたは他のコンピュータ・プログラムの一部であるプログラム５１０が実行することができる命令またはコードを記憶することができる。メモリ５２０は、記憶モジュール５２１、分離モジュール５２２、暗号解読モジュール５２３、識別モジュール５２４、シグネチャ発生モジュール５２５、検証モジュール５２６、および権利割当てモジュール５２７を含んでいる。記憶モジュール５２１は、第７図に示される形でプロセッサ５１０によって実行される第１の複数のプロセッサ実行可能命令を含んでいる。記憶モジュールは、第４図の記憶ユニット４１０と同じ役目を果たす。分離モジュール５２２は、第７図に示される形でプロセッサ５１０によって実行される第２の複数のプロセッサ実行可能命令を含んでいる。分離モジュール５２２は、第４図の分離ユニット４２０と同じ役目を果たす。暗号解読モジュール５２３は、第７図に示される形でプロセッサ５１０によって実行される第３の複数のプロセッサ実行可能命令を含んでいる。暗号解読モジュール５２３は、第４図の暗号解読ユニット４３０と同じ役目を果たす。識別モジュール５２４は、第７図に示される形でプロセッサ５１０によって実行される第４の複数のプロセッサ実行可能命令を含んでいる。識別モジュール５２４は、第４図の識別ユニット４４０と同じ役目を果たす。シグネチャ発生モジュール５２５は、第７図に示される形でプロセッサ５１０によって実行される第５の複数のプロセッサ実行可能命令を含んでいる。シグネチャ発生モジュール５２５は、第４図のシグネチャ発生ユニット４５０と同じ役目を果たす。検証モジュール５２６は、第７図に示される形でプロセッサ５１０によって実行される第６の複数のプロセッサ実行可能命令を含んでいる。検証モジュール５２６は、第４図の検証ユニット４６０と同じ役目を果たす。権利割当てモジュール５２７は、第７図に示される形でプロセッサ５１０によって実行される第７の複数のプロセッサ実行可能命令を含んでいる。権利割当てモジュール５２７は、第４図の権利割当てユニット４７０と同じ役目を果たす。
第６図は、コンピュータ・システムが実行すべき実行可能プログラムを符号化する方法を示す流れ図である。まず、ブロック６０１に示すように実行可能プログラムを受け取る。次に、ブロック６０２に示すように、実行可能プログラムに割り当てるべき関連する権利を定義する複合キーを受け取る。実行可能プログラムに対してキー暗号ハッシュ・アルゴリズムを実施する。使用される複合キーは、対称型プライベート・キーか、または非対称型パブリック・キーである。これは、実行可能プログラムのシグネチャまたはフィンガープリントの役目をする暗号キー・ハッシュ値をもたらす。これをブロック６０３に示す。
次に、暗号キー・ハッシュ値を使用して、実行可能プログラムを暗号化する。これは、実行可能イメージを生成する。これをブロック６０４に示す。実行可能プログラムを実行可能イメージに暗号化した後、実行可能イメージならびにシグネチャ構成要素を処理および実行のためにコンピュータ・システムに送る。これをブロック６０５に示す。
第７図は、コンピュータ・コンピュータ内でアクセス制御を行う方法を示す流れ図である。まず、ブロック７０１に示すように、シグネチャ構成要素および実行可能イメージを有するデータのブロックを受け取る。ブロック７０２に示すように、シグネチャ構成要素を実行可能イメージから分離する。シグネチャ構成要素をキーとして使用して、実行可能イメージを暗号解読する。これは、暗号解読された実行可能プログラムをもたらす。これをブロック７０３に示す。
次に、ブロック７０４に示すように、暗号解読された実行可能プログラム内の識別マークを見つける。識別マークに関連する複合キーを識別する。これをブロック７０５に示す。ブロック７０６に示すように、識別マークに関連する複合キーを使用して、暗号解読された実行可能プログラムのキー暗号ハッシュ値を演算する。次に、データのブロック内のシグネチャ構成要素と、暗号解読された実行可能プログラムの計算したキー暗号ハッシュ値とを比較することによって、データのブロックのソースを検証し、またブロックが修正されていないかどうかを検証する。これをブロック７０７に示す。データのブロック内のシグネチャ構成要素が計算したキー暗号ハッシュ値に一致しない場合、暗号解読された実行可能プログラムを実行しない。これをブロック７０８に示す。データのブロック内のシグネチャ構成要素が計算したキー暗号ハッシュ値に一致する場合、複合キーによって識別された暗号解読された実行可能プログラムに適切な権利を割り当てる。これをブロック７０９に示す。最後に、ブロック７１０に示すように、暗号解読された実行可能プログラムを実行する。
以上、本発明について、その特定の例示的な実施形態に関して説明した。しかしながら、以下の請求の範囲に記載する本発明のより広い精神および範囲から逸脱することなく本発明に様々な修正および変更を加えることができることは明らかであろう。したがって、説明および図面は、限定的なものではなく例示的なものと考えられたい。
以下の説明を読めば、本発明の多数の変更および修正を当業者なら理解できるであろうが、説明のために図示し、説明した特定の実施形態は、限定的なものではないことを理解されたい。したがって、特定の実施形態の詳細への言及は、本発明にとって重要であると考えられる特徴のみを記載した請求の範囲を制限するものではない。
【図１】
0004087442.tif 000002
【図２】
0004087442.tif 000003
【図３】
0004087442.tif 000004
【図４】
0004087442.tif 000005
【図５】
0004087442.tif 000006
【図６】
0004087442.tif 000007
【図７】
0004087442.tif 000008