(57)【要約】【課題】無許可のエージェントによって、ファームウェアなどのデータを読まれたり、破壊されたりするのを防ぐ手段を提供する。【解決手段】データ保護回路が、記憶場所に記憶されたデータへのアクセスを選択的に許可する。具体的には、回路は、認可キーを受け取り、その認可キーが所定の値と等しい場合だけデータへのアクセスを許可する。保護回路を備えていない集積回路（ＩＣ）の記憶場所を保護できるように、データ保護回路を個別ＩＣ上に配置することができる。【選択図】図２
2004021984.tif 000002
【特許請求の範囲】
【請求項１】
第１の集積回路内に配置されかつアドレスを有する記憶場所へのアクセスを選択的に許可するデータ保護回路であって、
認可キーを受け取り、該認可キーが所定の値と等しい場合に、前記記憶場所へのアクセスを許可するように動作可能な認証機構を含むデータ保護回路。
【請求項２】
前記認証機構が、
前記認可キーを算術演算し、
前記算術演算によって所定の結果が得られた場合に前記記憶場所へのアクセスを許可するように動作可能な請求項１記載のデータ保護回路。
【請求項３】
結果レジスタを含み、
前記認証機構が、前記レジスタに結合されており、
前記認可キーに算術演算を行い、
前記算術演算の結果を前記レジスタに記憶するように動作可能であり、前記記憶した結果が所定の値と等しい場合に、該記憶した結果が、前記記憶場所へのアクセスをイネーブルするように動作可能な請求項１記載のデータ保護回路。
【請求項４】
アンロック値を記憶するレジスタをさらに含み、
前記認証機構が、前記レジスタに結合されており、
前記認可キーと前記アンロック値を算術演算し
前記算術演算によって所定の結果が得られた場合に、前記記憶場所へのアクセスを許可するように動作可能な請求項１記載のデータ保護回路。
【請求項５】
マスク回路をさらに含み、
前記認証機構が前記マスク回路に結合されており、前記認可キーが前記所定の値と等しい場合に、該マスク回路が前記記憶場所へのアクセスを許可するように動作可能な請求項１に記載のデータ保護回路。
【請求項６】
前記認証機構が、前記認可キーが前記所定の値と等しくない場合に前記記憶場所へのアクセスを許可しないように動作可能な請求項１に記載のデータ保護回路。
【請求項７】
前記認証機構に結合されており、アドレスを受け取り、該受け取ったアドレスが前記記憶場所のアドレスかどうかを決定するように動作可能なアドレス検出器をさらに含み、
前記受け取ったアドレスが前記記憶場所のアドレスの場合と、前記認可キーが前記所定の値と等しい場合に、前記認証機構が、前記記憶場所へのアクセスを許可するように動作可能な請求項１に記載のデータ保護回路。
【請求項８】
前記認証機構が、前記第１の集積回路と別の第２の集積回路上に配置された請求項１に記載のデータ保護回路。
【請求項９】
第１の集積回路内に配置されかつアドレスを有する記憶場所へのアクセスを選択的に許可しないデータ保護回路であって、
認可キーを受け取り、該認可キーが所定の値と等しくない場合に前記記憶場所へのアクセスを許可しないように動作可能な認証機構を含む回路。
【請求項１０】
前記認証機構が、
前記認可キーを算術演算し、
前記算術演算によって所定の結果が得られない場合に前記記憶場所へのアクセスを許可しないように動作可能な請求項９に記載のデータ保護回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータセキュリティに関する。より詳細には、本発明は、認証機構によるデータ保護に関する。
【０００２】
【従来の技術】
無許可のソフトウェア更新パッケージ、コンピュータ「ウィルス」、「ハッカー」などの無許可のエージェントによって、コンピュータ・システムが破壊されることがある。認可されたソフトウェア更新パッケージは、一般にコンピュータ・メーカまたは認可されたサードパーティ・サポート・サービスから提供される、コンピュータの機能を更新するソフトウェアである。しかしながら、システム管理者は、悪意がないにしても、コンピュータをカスタマイズするときに、無許可の更新パッケージでコンピュータ・ソフトウェアをアップグレードすることがある。残念ながら、そのような無許可のアップグレードによって、ファイル破損やデータ・セキュリティの侵害など、予期せずかつ望ましくない結果が生じることがある。ウィルスは、「感染した」コンピュータ・システムに、そのシステムがアクセスした電子ファイルを削除するような望ましくなくまたは破壊的なタスクを実行させるソフトウェア・コードである。ウィルスは、一般に、感染したコンピュータ・システムにウィルスを複製させ、その複製物を電子メールに添付し、その電子メールをシステムに記憶されたアドレスに送ることによって広まる。そのような電子メールの受信者が、ウィルス添付物を（このウィルス添付物は、通常、正当な添付物の形を取る）開いたときに、ウィルスが、受信者のコンピュータ・システムに感染する。また、ウィルスは、電子ファイル内に自分自身を埋め込むことによって広がることもある。受信者が、そのファイルを、例えばフロッピ・ディスクやＣＤ−ＲＯＭなどを介して自分のコンピュータ・システムに転送して、感染したファイルを開いたとき、ウィルスがシステムに感染する。ハッカーは、コンピュータ・システムに無許可でアクセスし、一般にシステムに望ましくないタスクを実行させたりシステムを破損させたりする人のことである。
【０００３】
コンピュータ回路１０のブロック図である図１を参照すると、無許可のエージェントがコンピュータ・システムを破損させる１つの方法は、システムのファームウェアを変更することによるものである。回路１０は、コンピュータ・システム（図１には示していない）に属し、プロセッサ１２、メモリ１４、アドレス・バス１６、データ・バス１８および読み出し／書き込み線２０を含む。メモリ１４は、プロセッサ１２がコンピュータ・システムの「起動中」、すなわちオペレーティング・システムがワーキング・メモリ（図示せず）にロードされる前に実行する、ファームウェアを記憶する。ファームウェアは、プロセッサ１２に、プロセッサと周辺ハードウェア（図示せず）を設定したり、オペレーティング・システムをロードしたりするようなタスクを実行させる。コンピュータ・システムが完全に起動した後で、メーカーのファームウェア更新パッケージなどの認可されたエージェントが、新しいファームウェア・コードを、そのファームウェアが記憶されるメモリ１４の記憶場所（図示せず）に書き込むことによって、ファームウェアをアップグレードすることができる。残念ながら、無許可のエージェントが、コンピュータ・システムに侵入したときに、ファームウェアが望ましくない形に変更されることがある。したがって、その後でコンピュータ・システムが起動する際に、プロセッサ１２は、望ましくなく変更されたファームウェアを実行し、それにより一般に、プロセッサが、前に述べたように１つまたは複数の望ましくないタスクを実行したり望ましくない形で動作したりする。
【０００４】
【発明が解決しようとする課題】
無許可のアップデートパッケージ、ウィルスやハッカーといった無許可のエージェントによって、ファームウェアなどのデータを読まれたり、破壊されたりするのを防ぐ手段に対するニーズが高まっている。
【０００５】
【課題を解決するための手段】
本発明の１つの態様において、データ保護回路が、記憶場所に記憶されたデータへのアクセスを選択的に許可する。具体的には、回路は、認可キーを受け取り、その認可キーが所定の値と等しい場合だけデータへのアクセスを許可する。保護回路を備えていない集積回路（ＩＣ）の記憶場所を保護できるように、データ保護回路を個別ＩＣ上に配置することができる。
【０００６】
無許可のエージェントは、おそらく認可キーを持ったり取得したりすることができないので、そのような回路を使用して、無許可のエージェントが、ファームウェアなどのデータを読み出したり変更したりしないようにすることができる。さらに、データ保護回路を、メモリＩＣと別個のＩＣ上に配置するこによって、当業者は、メモリＩＣの設計を変更せずにデータ保護を実現することができる。これにより、当業者は、一体型保護回路を含まない既製のメモリＩＣのデータ保護を実現することができる。例えば、１つは、メモリＩＣに結合されるが別個の書替え可能ゲート・アレイ（ＦＰＧＡ）でデータ保護回路を実現することができる。
【０００７】
【発明の実施の形態】
以下の説明は、当業者が本発明を作成しかつ使用することができるように提示される。開示した実施形態に対する様々な修正は、当業者にとって容易に明らであり、本明細書の包括的な原理は、併記の特許請求の範囲によって定義されたような本発明の趣旨および範囲から逸脱することなく他の実施形態および用途に適用することができる。したがって、本発明は、示した実施形態に限定されることなく、本明細書に開示した原理および特徴と一致する最も広い範囲が与えられる。
【０００８】
図２は、本発明の実施形態によるデータ保護回路３２を含むコンピュータ回路３０の概略ブロック図であり、図１の回路１０と共通の構成要素を同様の番号で示している。コンピュータ回路３０は、データ保護回路３２が、メモリ１４に記憶されたファームウェアへの無許可のアクセスを防ぎ、これにより無許可のエージェントがコンピュータ・システムを破壊するのを防ぐことができる点以外、コンピュータ回路１０と類似している。さらに、回路３２は、メモリ１４から分離しており、すなわちメモリ１４の外部にあるので、メモリを変更することなく回路３２がデータ保護を実現することができる。したがって、この技術によって、回路３２は、内部データ保護回路のない既製のメモリＩＣに記憶されたデータを保護することができる。
【０００９】
動作において、データ保護回路３２は、エージェントが所定の認可キーを持つ場合には、認可されたエージェントのメモリ１４に対する読み書きを許可するが、無許可のエージェントが認可キーを持たない場合には、読み書きできないようにする。
【００１０】
第１の例において、システム管理者によってインストールされ認可キーを有するファームウェア・アップグレード・パッケージなどの認可されたエージェントは、新しいファームウェア・コードをメモリ１４に書き込むことによるファームウェアのアップグレードを許可される。認可されたエージェントは、プロセッサ１２に書き込みコマンドを発行することにより書き込みサイクルを開始する。第１の書き込みサイクルの間、読み出し／書き込み線２０上の書き込みロジック・レベルをアサート（ａｓｓｅｒｔ）するプロセッサ１２は、書き込む記憶場所のアドレスをバス１６上に送り、認可キーをデータ・バス上に送る。保護回路３２は、最初に、バス１６上のアドレスが、保護アドレスかどうかを判定する。アドレスが保護されているので、回路３２は、次に、認可キーが有効かどうかを判定する。回路３２が、認可キーが無効であると判定した場合、書き込むことができないようにメモリ１４をディセーブル（ｄｉｓａｂｌｅ）する。これと反対に、回路３２が、この例のように認可キーが有効であると判定した場合、回路３２は、書き込みができるようにメモリ１４をイネーブル（ｅｎａｂｌｅ）する。第２の書き込みサイクルにおいて、プロセッサ１２は、読み出し／書き込み線２０の書き込みロジック・レベルと、バス１６上の記憶場所のアドレスを維持し、アップグレードされたファームウェア・コードをデータ・バス１８上に駆動する。回路３２が、メモリ１４をディセーブルした場合、メモリは、データ・バス１８から新しいファームウェア・コードをロードできないので、アドレス指定された記憶場所に記憶されたコードは上書きされない。但し、回路３２が、この例のようにメモリ１４をイネーブルした場合、メモリは、アップグレードされたファームウェア・コードを、アドレス指定された記憶場所にロードする。プロセッサ１２は、ファームウェアに対する所望のアップグレードを完了するまで、そのような書き込みサイクルを行い続ける。
【００１１】
第２の例において、認可キーを持つ認可されたエージェントは、メモリ１４内のファームウェアを読み出すことができる。認可されたエージェントは、前に述べたような書き込みサイクルを開始し、その結果、プロセッサ１２は、読み出し／書き込み線２０上の読み出しロジック・レベルをアサートし、読み出す記憶場所のアドレスをバス１６上に送り、認可キーをデータ・バス１８上に送る。線２０上の読み出しロジック・レベルは、認可されたエージェントが、アドレス指定された記憶場所を読み出そうとしていることを示す。アドレスが保護されており、認可キーが有効であるため、回路３２は、読み出しができるようにメモリ１４をイネーブルする。次の読み出しサイクルの際、プロセッサ１２は、読み出し／書き込み線２０上の読み出しロジック・レベルとバス１６上の記憶場所アドレスを維持し、メモリ１４は、アドレス指定された記憶場所に記憶されたファームウェア・コードをデータ・バス１８上に送る。プロセッサ１２は、そのような書き込みサイクルと読み出しサイクルを、ファームウェアの所望の部分の読み出しを終えるまで行い続ける。
【００１２】
第３の例では、認可キーを持たないウィルスなどの無許可のエージェントが、メモリ１４内のファームウェアを変更できないようにされる。無許可のエージェントは、書き込みコマンドをプロセッサ１２に発行することにより書き込みサイクルを開始する。書き込みサイクルの間、プロセッサ１２は、読み出し／書き込み線２０上の書き込みロジック・レベルをアサートし、書き込まれる記憶場所のアドレスをバス１６上に送る。無許可のエージェントは、認可キーを持たず、また認可キーを必要とすることを「知らない」ので、プロセッサ１２は、システムを破損させるファームウェア・コードをデータ・バス１８上に送るだけである。したがって、バス１８上のデータが、無効な認可キーなので、保護回路３２は、メモリ１４をディセーブルし、これにより無許可のエージェントがファームウェアを変更できないようにする。
【００１３】
第４の例において、認可キーを持たない無許可のエージェントは、メモリ１４内のファームウェアを読み出しできないようにされる。無許可のエージェントは、プロセッサ１２に読み出しコマンドを発行することによって、読み出しサイクルを開始する。無許可のエージェントが、最初に、認可キーを回路３２に書き込まないので、回路は、メモリ１４をディセーブルし、それにより、無許可のエージェントがファームウェアを読み取ることができないようにされる。
【００１４】
さらに図２を参照して、データ保護回路３２の他の実施形態を検討する。例えば、認可キーを１サイクルでロードするように説明するが、回路３２は、無許可のエージェントが認可キーを解読できる可能性を小さくするために、キーを複数サイクルでロードすることができる。さらに、回路３２は、読み出し保護と書き込み保護の両方ではなく一方だけを提供することができる。但し、回路３２が、読み出し保護と書き込み保護の両方を提供する場合は、バス１６上に保護アドレスが現われたときだけ両方を保護することができ、したがって回路が読み出し／書き込み信号を受け取る必要がなくなる。さらに、回路３２は、ファームウェア・メモリ以外のメモリまたは回路を保護することができる。さらに、回路３２は、メモリ１４と別であるように説明するが、回路３２は、メモリ１４に一体化されていてもよい。さらに、前述の読み出しサイクルと書き込みサイクルのパラメータは、回路３２が、アクセスするエージェントによって提供される認可キーに基づいてメモリ１４をイネーブル／ディセーブルする限り所望ものでよい。そのようなパラメータは、回路３２が受け取る信号とその信号のタイミングとを含む。さらに、回路３２は、メモリ１４内の記憶場所のすべてまたは一部分を保護することもでき、他のメモリ回路（図示せず）内の記憶場所を保護することもできる。さらに、イネーブル／ディセーブル信号を生成するように示したが、回路３２は、読み出し／書き込み信号を選択的にマスクして、メモリ１４に対する読み出しまたは書き込みをディセーブルすることができる。コンピュータ３０が、個別の読み出し線と書き込み線を含む場合、回路３２は、読み出し信号および／または書き込み信号を選択的にマスクすることによって、読み出し、書き込み、あるいは読み出しと書き込み両方をディセーブルすることができる。
【００１５】
図３は、本発明の実施形態による図２のデータ保護回路３２のブロック図である。回路３２は、アドレスが読み出し保護および／または書き込み保護されているかどうかを判定する決定機構（ｄｅｔｅｒｍｉｎａｔｏｒ）４０と、受け取った認可キーを記憶するレジスタ４２と、アンロック値を記憶するレジスタ４４と、レジスタ４２内のキーが有効かどうかを判定する認証機構（ａｕｔｈｅｎｔｉｃａｔｏｒ）４６と、認証機構４６によって実行されたアルゴリズムの結果を記憶するレジスタ４８と、その結果をデコードしてメモリ・イネーブル／ディセーブル信号を生成するデコーダ５０とを含む。回路３２は、また、メモリ１４への読み出し／書き込み信号をマスクするマスク回路５２を含むことができる。回路３２が、マスク回路５２を含む場合は、レジスタ４８とデコーダ５０を省略することができる。単一の読み出し／書き込み線２０しかない場合は、回路５２は、メモリ１４に対する読み出しと書き込みの両方ではなく一方だけをディセーブルすることができる。しかし、個別の読み出し線と書き込み線（図示せず）がある場合、回路５２は、メモリ１４に対する読み出し、書き込み、または読み出しと書き込みの両方をディセーブルすることができる。決定機構４０は、保護アドレスがバス１６上にあり、適切なレベルの読み出し／書き込み信号が線２０上にあるときに、認証機構４６をイネーブルするようにプログラムされており、レジスタ４４は、所定のアンロック値を記憶するようにプログラムまたは配線される。認証機構４６は、レジスタ４２および４４にそれぞれ記憶されたキーとアンロック値に基づいて動作するアルゴリズムを実行し、キーが有効な場合に所定の結果を生成するようにプログラムされている。結果が、複数ビット長の場合、デコーダ５０は、その結果を、一般にメモリ１４のイネーブル端子に結合されたシングル・ビット・イネーブル／ディセーブル信号に変換する。
【００１６】
コンピュータ・システムの起動中、回路３２は、メモリ１４をディセーブルしてメモリ１４に対する無許可の読み出しおよび／または書き込みを防ぐ状態に初期化される。具体的には、レジスタ４８の内容が、ディセーブル値に初期化される。回路３２がマスク回路５２を含む場合、回路５２は、読み出し／書き込み信号をマスクするように初期化される。
【００１７】
動作において、決定機構４０が、バス１６からアドレスを受け取り、線２０から読み出しまたは書き込みレベルを受け取り、認証機構４６を活動化するべきかどうか決定する。バス１６上のアドレスが保護され、要求されたアクセス（読み出しまたは書き込み）が許可される場合、決定機構４０は、認証機構４６を活動化する。しかしながら、バス１６上のアドレスが保護されていないか、要求されたアクセスが許可されない場合、　決定機構４０は、認証機構４６を非活動状態のままにし、その結果メモリ１４がディセーブルされたままになる。
【００１８】
決定機構４０によって認証機構４６が活動化される場合、認証機構は、データ・バス１８上の認可キーが有効かどうか判定する。認証機構４６は、データ・バス１８上の値をキー・レジスタ４２にロードする。次に、認証機構４６は、レジスタ４２および４４内の値を算術的に演算して結果を生成し、その結果を、レジスタ４８および／またはマスク回路５２にロードする。キーが有効な場合、その結果は、デコーダ５０および／またはマスク回路５２が、メモリ１４の要求されたアクセス（読み出しまたは書き込み）をイネーブルするようなイネーブル値を有する。但し、キーが無効の場合、デコーダ５０および／またはマスク回路５２は、メモリ１４を引き続きディセーブルする。当業者は、レジスタ４２および４４内の値に、周知のＡＥＳ（Ａｄｖａｎｃｅｄ　Ｅｎｃｒｙｐｔｉｏｎ　Ｓｔａｎｄａｒｄ）アルゴリズムなどの実質的に任意のアルゴリズムを実行して結果を生成するように認証機構４６を設計することができる。
【００１９】
認証機構４６が、認可キーが有効でありかつメモリ１４の要求アクセスが完了したことを決定した後で、認証機構は、レジスタ４２と４８およびマスク回路５２をリセットする。レジスタ４２および４８ならびに回路５２をリセットすることによって、認証機構４６は、認可キーを「隠し」、メモリ１４を再びディセーブルする。
【００２０】
図２と関連して前に述べたように、当業者は、様々な回路構成と信号タイミングを使って、データ保護回路３２と前述の保護シーケンスをそれぞれ実現することができ、アドレス、データおよび読み出し／書き込み信号以外の信号を使用することができる。例えば、当業者は、書替え可能ゲート・アレイ（ＦＰＧＡ）や他のプログラマブル論理回路内に回路３２を実現することができる。そのような実施態様により、当業者は、必要に応じて認可キー、結果の長さ、アンロック値、および／またはデコーダ５０を変更できるように、認証機構４６が実行するアルゴリズムを容易に修正することができる。当然ながら、当業者は、回路３２を個別の論理構成要素で設計することもできる。
【００２１】
さらに図３を参照して、回路３２の他の実施形態を検討する。例えば、認証機構４６が１ビットの結果を生成するか、またはメモリ１４のイネーブル／ディセーブル・ポートが複数のビット幅の信号を受け取ることができる場合は、デコーダ５０を省略することができる。さらに、アドレス決定機構４０は、読み出し／書き込み信号から切り離されても良く、したがって保護アドレスか非保護アドレスかをアドレスのみに基ついて決定できる。
【００２２】
図４は、コンピュータ・システムなど、本発明の実施形態による図２のコンピュータ回路３０を含む電子システム６０のブロック図である。システム６０は、所望の計算およびタスクを行うソフトウェアを実行するような、コンピュータの機能を実行するコンピュータ回路３０を含む。キーボードやマウスなどの１つまたは複数の入力装置６６が、コンピュータ回路３０に結合され、オペレータ（図示せず）が、データを手動で回路３０に入力できるようにする。コンピュータ回路によって生成されたデータをオペレータに提供するために、１つまたは複数の出力装置６８がコンピュータ回路３０に結合される。そのような出力装置６８の例には、プリンタやビデオ表示装置がある。外部記憶媒体（図示せず）にデータを記憶しまたそこから取り出すために、１つまたは複数のデータ記憶装置７０が、コンピュータ回路３０に結合される。記憶装置７０とそれに対応する記憶媒体の例には、ハード・ディスク、フロッピ・ディスク、テープ・カセット、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）を受け入れるドライブがある。
【図面の簡単な説明】
【図１】従来のコンピュータ回路の概略的なブロック図である。
【図２】本発明の実施形態によるデータ保護回路を含むコンピュータ回路の概略的なブロック図である。
【図３】本発明の実施形態による図２のデータ保護回路の概略的なブロック図である。
【図４】本発明の実施形態による図２のコンピュータ回路を含む電子計算機システムの概略的なブロック図である。
【符号の説明】
１４　集積回路
３２　データ保護回路
４０　アドレス検出器
４４　レジスタ
４６　認証機構
４８　結果レジスタ
【図１】
2004021984.tif 000003
【図２】
2004021984.tif 000004
【図３】
2004021984.tif 000005
【図４】
2004021984.tif 000006