(57)【特許請求の範囲】
【請求項１】
第１のパーティションと第２のパーティションとを有するコンピュータ・システムにおいて、
前記第１のパーティションは、
第１のＣＰＵと、
第１のメモリ・モジュールとを備え、前記第１のメモリ・モジュールは
少なくとも１つのプログラム・コード用メモリ・アドレス範囲であって、プログラム・コードはコンピュータ実行可能コードを含んでなり、前記プログラム・コード用メモリ・アドレス範囲はハードウェア・スイッチによって変更からハードウェアの保護がなされる、プログラム・コード用メモリ・アドレス範囲と、
第１のパーティション・データ用の少なくとも１つのメモリ・アドレス範囲と、
前記第２のパーティションから読み取ったデータのための少なくとも１つのメモリ・アドレス範囲とを有し、
前記第１のＣＰＵは前記プログラム・コード用メモリ・アドレス範囲で前記コンピュータ実行可能コードのみを実行するようにハードウェア的に構成してあり、
前記第２のパーティションは、
第２のＣＰＵと、
第２のメモリ・モジュールと、
ネットワークに接続されるための少なくとも１つの通信モジュールとを備え、
前記第１のＣＰＵは前記第２のメモリ・モジュールにアクセスするように構成され、
前記第１のＣＰＵは、前記第２のパーティションから読み取ったデータのための少なくとも１つのメモリ・アドレス範囲のみに前記第２のパーティションからのデータを読み取るように構成され、
前記第２のＣＰＵは前記第１のＣＰＵ又は前記第１のメモリ―モジュールにアクセスすることを制限されている、コンピュータ・システム。
【請求項２】
少なくとも１つのプログラム・コード用メモリ・アドレス範囲はハードウェア回路によって構成される、請求項１に記載のコンピュータ・システム。
【請求項３】
前記ハードウェア・回路は少なくとも１つのフィールド・プログラマブル・ゲート・アレイを含んでなる、請求項２に記載のコンピュータ・システム。
【請求項４】
前記第１のメモリ・モジュールは、
前記少なくとも１つのプログラム・コード用メモリ・アドレス範囲を有する第１のメモリ・ユニットと、
前記第１のパーティション・データ用の少なくとも１つのメモリ・アドレス範囲を有する第２のメモリ・ユニットと、
前記第２のパーティションから読み取ったデータのための少なくとも１つのメモリ・アドレス範囲を有する第３のメモリ・ユニットとを備える、請求項１に記載のコンピュータ・システム。
【請求項５】
前記プログラム・コードはオペレーティング・システムを含んでなる、請求項１に記載のコンピュータ・システム。
【請求項６】
少なくとも１つのデータ・ストアを備える、請求項１に記載のコンピュータ・システム。
【請求項７】
前記第１のＣＰＵが前記第２のメモリ・モジュールにアクセスする能力はハードウェア回路によって実行され、
前記第２のパーティションに対する、第１のＣＰＵ又は第１のメモリ・モジュールへのアクセスの制限はハードウェア回路によって実行される、請求項１に記載のコンピュータ・システム。
【請求項８】
前記第１のパーティションに直接に接続した外部デバイスを使用するハードウェア要素は、前記第２のパーティションの入力デバイス及び出力デバイスの制御を行うよう前記第１のＣＰＵに命令することをユーザに可能にさせるように構成される、請求項１に記載のコンピュータ・システム。
【請求項９】
バスをさらに備え、
前記第１のパーティションは前記バスによって前記第２のパーティションと相互接続され、
前記第１のＣＰＵは、前記第２のパーティションからデータを読み出し、及び前記第２のパーティションから読み取ったデータのための少なくとも１つのメモリ・アドレス範囲のみにデータを書き込むために前記バスを通るプル・コマンドを実行するように構成され、
前記第１のＣＰＵは、前記第２のパーティションにデータを書き込むために前記バスを通るプッシュ・コマンドを実行するように構成され、
前記第１のパーティションは前記第２のパーティションからのプッシュ・コマンド又は前記第２のパーティションからのプル・コマンドを受け付けられず、
前記第２のパーティションに対する、第１のＣＰＵ又は第１のメモリ・モジュールへのアクセスの制限はハードウェア回路によって実行される、請求項１に記載のコンピュータ・システム。
【請求項１０】
前記ハードウェア・スイッチはオン及びオフに切り替えられる少なくとも１つの外部物理スイッチからなり、前記第１のＣＰＵは前記少なくとも１つのプログラム・コード用メモリ・アドレス範囲に記憶したデータを前記外部物理スイッチがオンの時にのみ変更することができる、請求項１に記載のコンピュータ・システム。
【請求項１１】
オン及びオフに切り替えられる少なくとも１つの外部物理スイッチと、
前記第１のＣＰＵは前記少なくとも１つのプログラム・コード用メモリ・アドレス範囲のコンテンツを前記外部物理スイッチがオンの時にのみ変更し、
前記外部物理スイッチがオンの時には、前記第１のＣＰＵは前記第２のパーティションからの読み出し、及び前記第２のパーティションへの書き込みができないようにされている、請求項１に記載のコンピュータ・システム。
【請求項１２】
前記第１のＣＰＵが前記第２のメモリ・モジュールにアクセスする能力は仮想パーティション構成によって実現し、
前記第２のＣＰＵが前記第１のＣＰＵ及び前記第１のメモリ・モジュールにアクセスする制限は仮想パーティション構成によって実現する、請求項１に記載のコンピュータ・システム。
【請求項１３】
前記第１のパーティションは少なくとも１つの入力／出力モジュールを備え、
複数の入力／出力デバイスは前記少なくとも１つの入力／出力モジュールに接続される、請求項１に記載のコンピュータ・システム。
【請求項１４】
前記第１のパーティション及び第２のパーティションを含んでなるチップをさらに備える、請求項１に記載のコンピュータ・システム。
【請求項１５】
前記第１のパーティションを含んでなる第１のチップと、前記第２のパーティションを含んでなる第２のチップとをさらに備える、請求項１に記載のコンピュータ・システム。
【請求項１６】
前記第１のパーティションに直接に接続された外部デバイスを用いるハードウェア機能は、前記第１のＣＰＵが前記少なくとも１つのプログラム・コード用メモリ・アドレス範囲、前記第１のパーティション・データ用の少なくとも１つのメモリ・アドレス範囲、又は前記第２のパーティションから読み取ったデータのための少なくとも１つのメモリ・アドレス範囲から前記第２のパーティションにデータを書き込むことを可能にするように構成される、請求項１に記載のコンピュータ・システム。
【請求項１７】
前記第１のパーティションは１つ以上の仮想サブ・パーティションを備え、
前記第２のパーティションは１つ以上の仮想サブ・パーティションを備える、請求項１に記載のコンピュータ・システム。
【請求項１８】
少なくとも１つのプログラム・コード用メモリ・アドレス範囲の書き込みの制限は仮想パーティション構成によって実現し、
前記仮想パーティション構成は前記制限のオンとオフのスイッチングを  行うように構成され、
前記第１のＣＰＵは前記仮想パーティション構成を通して、前記第２のパーティションからの読み出し又は前記第２のパーティションへの書き込みができないようにされている、請求項１に記載のコンピュータ・システム。
【請求項１９】
コンピュータ・システムにおいて、
第１のパーティションであって、
第１のＣＰＵと、
第１のメモリ・モジュールとを備え、前記第１のメモリ・モジュールは
第１のメモリ・アドレス範囲であって、前記第１のメモリ・アドレス範囲はプログラム・コードを含んでなり、前記プログラム・コードはコンピュータ実行可能コードを含んでなり、前記プログラム・コードはハードウェア・スイッチによって変更からハードウェアの保護がなされる、第１のメモリ・アドレス範囲と、
第２のメモリ・アドレス範囲とを有し、
前記第１のＣＰＵは前記第１のメモリ・アドレス範囲で前記コンピュータ実行可能コードのみを実行するようにハードウェア的に構成してある第１のパーティションと、
第２のパーティションであって、
第２のＣＰＵと、
第２のメモリ・モジュールと、
ネットワークに接続されるための少なくとも１つの通信モジュールとを備え、
前記第１のＣＰＵは前記第２のメモリ・モジュールにアクセスするように構成され、
前記第１のＣＰＵは、前記第２のメモリ・アドレス範囲のみに前記第２のパーティションからのデータを読み取るように構成され、
前記第２のＣＰＵは前記第１のＣＰＵ又は前記第１のメモリ―モジュールにアクセスすることを制限されている前記第２のパーティションと
を備える、コンピュータ・システム。
【請求項２０】
少なくとも１つのメモリ・アドレス範囲はハードウェア回路によって構成される、請求項１９に記載のコンピュータ・システム。
【請求項２１】
前記ハードウェア・回路は少なくとも１つのフィールド・プログラマブル・ゲート・アレイを含んでなる、請求項２０に記載のコンピュータ・システム。
【請求項２２】
前記第１のメモリ・モジュールは、
前記少なくとも１つのメモリ・アドレス範囲を有する第１のメモリ・ユニットと、
前記第２のメモリ・アドレス範囲を有する第２のメモリ・ユニットと
を備える、請求項１９に記載のコンピュータ・システム。
【請求項２３】
前記プログラム・コードはオペレーティング・システムを含んでなる、請求項１９に記載のコンピュータ・システム。
【請求項２４】
少なくとも１つのデータ・ストアを備える、請求項１９に記載のコンピュータ・システム。
【請求項２５】
前記第１のＣＰＵが前記第２のメモリ・モジュールにアクセスする能力はハードウェア回路によって実行され、
前記第２のパーティションに対する、第１のＣＰＵ又は第１のメモリ・モジュールへのアクセスの制限はハードウェア回路によって実行される、請求項１９に記載のコンピュータ・システム。
【請求項２６】
前記第１のパーティションに直接に接続した外部デバイスを使用するハードウェア要素は、前記第２のパーティションの入力デバイス及び出力デバイスの制御を行うよう前記第１のＣＰＵに命令することをユーザに可能にさせるように構成される、請求項１９に記載のコンピュータ・システム。
【請求項２７】
バスをさらに備え、
前記第１のパーティションは前記バスによって前記第２のパーティションと相互接続され、
前記第１のＣＰＵは、前記第２のパーティションからデータを読み出し、及び前記第２のメモリ・アドレス範囲のみにデータを書き込むために前記バスを通るプル・コマンドを実行するように構成され、
前記第１のＣＰＵは、前記第２のパーティションにデータを書き込むために前記バスを通るプッシュ・コマンドを実行するように構成され、
前記第１のパーティションは前記第２のパーティションからのプッシュ・コマンド又は前記第２のパーティションからのプル・コマンドを受け付けられず、
前記第２のパーティションに対する、第１のＣＰＵ又は第１のメモリ・モジュールへのアクセスの制限はハードウェア回路によって実行される、請求項１９に記載のコンピュータ・システム。
【請求項２８】
前記ハードウェア・スイッチはオン及びオフに切り替えられる少なくとも１つの外部物理スイッチからなり、前記第１のＣＰＵは前記第１のメモリ・アドレス範囲に記憶したデータを前記外部物理スイッチがオンの時にのみ変更するように構成されている、請求項１９に記載のコンピュータ・システム。
【請求項２９】
オン及びオフに切り替えられる少なくとも１つの外部物理スイッチと、
前記第１のＣＰＵは前記第１のメモリ・アドレス範囲のコンテンツを前記外部物理スイッチがオンの時にのみ変更し、
前記外部物理スイッチがオンの時には、前記第１のＣＰＵは前記第２のパーティションからの読み出し、及び前記第２のパーティションへの書き込みができないようにされている、請求項１９に記載のコンピュータ・システム。
【請求項３０】
前記第１のＣＰＵが前記第２のメモリ・モジュールにアクセスする能力は仮想パーティション構成によって実現し、
前記第２のＣＰＵが前記第１のＣＰＵ及び前記第１のメモリ・モジュールにアクセスする制限は仮想パーティション構成によって実現する、請求項１９に記載のコンピュータ・システム。
【請求項３１】
前記第１のパーティションは少なくとも１つの入力／出力モジュールを備え、
複数の入力／出力デバイスは前記少なくとも１つの入力／出力モジュールに接続される、請求項１９に記載のコンピュータ・システム。
【請求項３２】
前記第１のパーティション及び第２のパーティションを含んでなるチップをさらに備える、請求項１９に記載のコンピュータ・システム。
【請求項３３】
前記第１のパーティションを含んでなる第１のチップと、前記第２のパーティションを含んでなる第２のチップとをさらに備える、請求項１９に記載のコンピュータ・システム。
【請求項３４】
前記第１のパーティションに直接に接続された外部デバイスを用いるハードウェア機能は、前記第１のＣＰＵが前記第１のメモリ・アドレス範囲から前記第２のパーティションにデータを書き込むことを可能にするように構成される、請求項１９に記載のコンピュータ・システム。
【請求項３５】
前記第１のパーティションは１つ以上の仮想サブ・パーティションを備え、
前記第２のパーティションは１つ以上の仮想サブ・パーティションを備える、請求項１９に記載のコンピュータ・システム。
【請求項３６】
前記第１のメモリ・アドレス範囲の書き込みの制限は仮想パーティション構成によって実現し、
前記仮想パーティション構成は前記制限のオンとオフのスイッチングを  行うように構成され、
前記第１のＣＰＵは前記仮想パーティション構成を通して、前記第２のパーティションからの読み出し又は前記第２のパーティションへの書き込みが可能及び不能にするにされている、請求項１９に記載のコンピュータ・システム。
【請求項３７】
第１のパーティションと第２のパーティションとを有するコンピュータ・システムにおいて、
前記第１のパーティションは、
第１のＣＰＵと、
第１のメモリ・モジュールとを備え、前記第１のメモリ・モジュールは
少なくとも１つのプログラム・コード用メモリ・アドレス範囲であって、プログラム・コードはコンピュータ実行可能コードを含んでなり、前記プログラム・コード用メモリ・アドレス範囲はハードウェア回路から構成される、プログラム・コード用メモリ・アドレス範囲と、
他のデータ用の少なくとも１つのメモリ・アドレス範囲であって、前記他のデータには前記第２のパーティションから読み取ったデータが含まれる、他のデータ用の少なくとも１つのメモリ・アドレス範囲とを備え、
前記第１のＣＰＵは前記プログラム・コード用メモリ・アドレス範囲で前記コンピュータ実行可能コードのみを実行するようにハードウェア的に構成してあり、
前記第２のパーティションは、
第２のＣＰＵと、
第２のメモリ・モジュールと、
ネットワークに接続されるための少なくとも１つの通信モジュールとを備え、
前記第１のＣＰＵは前記第２のメモリ・モジュールにアクセスするように構成されるとともに、他のデータ用の少なくとも１つのメモリ・アドレス範囲のみに前記第２のパーティションからのデータを読み取るように構成され、
前記第２のＣＰＵは前記第１のメモリ・モジュールにアクセスすることを制限されている、コンピュータ・システム。
【請求項３８】
前記第１のメモリ・モジュールは、
前記少なくとも１つのプログラム・コード用メモリ・アドレス範囲を有する第１のメモリ・ユニットと、
前記他のデータ用の少なくとも１つのメモリ・アドレス範囲を有する第２のメモリ・ユニットと
を備える、請求項３７に記載のコンピュータ・システム。
【請求項３９】
前記他のデータ用の少なくとも１つのメモリ・アドレス範囲は、
前記第２のパーティションから読み取ったデータのための少なくとも１つのメモリ・アドレス範囲と、
第１のパーティション・データ用の少なくとも１つのメモリ・アドレス範囲とを含んでなる、請求項３７に記載のコンピュータ・システム。
【請求項４０】
前記第１のメモリ・モジュールは、
前記少なくとも１つのプログラム・コード用メモリ・アドレス範囲を有する第１のメモリ・ユニットと、
前記第２のパーティションから読み取ったデータのための第２のメモリ・ユニットと、
第１のパーティション・データのための第３のメモリ・ユニットと、
を備える、請求項３７に記載のコンピュータ・システム。
【請求項４１】
バスをさらに備え、
前記第１のパーティションは前記バスによって前記第２のパーティションと相互接続され、
前記第１のパーティションは、前記第２のパーティションからデータを読み出し、及び前記他のデータのための少なくとも１つのメモリ・アドレス範囲のみにデータを書き込むために前記バスを通るプル・コマンドを実行するように構成され、
前記第１のパーティションは、前記第２のパーティションにデータを書き込むために前記バスを通るプッシュ・コマンドを実行するように構成され、
前記第１のパーティションは前記第２のパーティションからのプッシュ・コマンド又は前記第２のパーティションからのプル・コマンドを受け付ないように構成され、
前記バスのハードウェア回路は前記第２のパーティションが前記第１のメモリ・モジュールにアクセスすることを許可しない、請求項３７に記載のコンピュータ・システム。
【請求項４２】
オン及びオフに切り替えられる少なくとも１つの外部物理スイッチをさらに備え、前記第１のＣＰＵは前記少なくとも１つのプログラム・コード用メモリ・アドレス範囲に記憶したデータを前記外部物理スイッチがオンの時にのみ変更するように構成される、請求項３７に記載のコンピュータ・システム。
【請求項４３】
コンピュータ・システムにおいて、
少なくとも１つのＣＰＵと、
少なくとも１つの他のコンピュータに接続する少なくとも１つのＩ／Оモジュールと、
少なくとも１つのメモリ・モジュールであって、
ハードウェア回路によって構成される、少なくとも１つのプログラム・コード用メモリ・アドレス範囲であって、プログラム・コードはコンピュータ実行可能コードを含んでなる、少なくとも１つのプログラム・コード用メモリ・アドレス範囲と、
他のデータ用の少なくとも１つのメモリ・アドレス範囲であって、前記他のデータは前記少なくとも１つの他のコンピュータから読み出したデータを含んでなる、他のデータ用の少なくとも１つのメモリ・アドレス範囲とを備えたメモリ・モジュールとを備え、
前記少なくとも１つのＣＰＵは前記プログラム・コード用メモリ・アドレス範囲で前記コンピュータ実行可能コードのみを実行するようにハードウェア的に構成してあり、
前記少なくとも１つの他のコンピュータから読み出したデータは前記他のデータ用の少なくとも１つのメモリ・アドレス範囲のみに書き込まれ、
前記少なくとも１つのメモリ・モジュールは前記少なくとも１つの他のコンピュータからアクセスすることができない、コンピュータ・システム。
【請求項４４】
前記少なくとも１つのメモリ・モジュールは、
前記少なくとも１つのプログラム・コード用メモリ・アドレス範囲のための第１のメモリ・ユニットと、
前記他のデータ用の少なくとも１つのメモリ・アドレス範囲のための第２のメモリ・ユニットとを備える、請求項４３に記載のコンピュータ・システム。
【請求項４５】
オン及びオフに切り替えられる少なくとも１つの外部物理スイッチをさらに備え、前記少なくとも１つのＣＰＵは前記少なくとも１つのプログラム・コード用メモリ・アドレス範囲に記憶したデータを前記外部物理スイッチがオンの時にのみ変更することができる、請求項４３に記載のコンピュータ・システム。
【請求項４６】
バスをさらに備え、
前記コンピュータ・システムは前記バスによって前記少なくとも１つの他のコンピュータと通信可能に接続され、
前記コンピュータ・システムは、前記少なくとも１つの他のコンピュータからデータを読み出し、及び前記他のデータ用の少なくとも１つのメモリ・アドレス範囲のみにデータを書き込むために前記バスを通るプル・コマンドを実行するように構成され、
前記コンピュータ・システムは、前記少なくとも１つの他のコンピュータにデータを書き込むために前記バスを通るプッシュ・コマンドを実行するように構成され、
前記コンピュータ・システムは前記少なくとも１つの他のコンピュータからのプッシュ・コマンド又は前記少なくとも１つの他のコンピュータからのプル・コマンドを受け付けないように構成され、
前記バスのハードウェア回路は前記少なくとも１つの他のコンピュータが前記少なくとも１つのメモリ・モジュールにアクセスすることを許可しない、請求項４３に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
ハッキング耐性のあるコンピューティング・デバイスを実施するためのコンピュータ・アーキテクチャが、開示される。
【背景技術】
【０００２】
コンピュータに侵入するための一般的な方法は、インターネット又は他のネットワーク接続を通して、悪意のあるコンピュータ実行可能コード（マルウェア）をコンピュータに入れることによる。そのようなハッキングは、大きな脅威になっており、ハッキングの重大な事例が、広く報告されている。そのようなハッキングを阻止するための広く普及している手法は、マルウェアを識別し、無効化又は除去するためのソフトウェアに依存している。しかしながら、ハッカは、ますます巧妙になっており、一般に行われている保護は、十分ではない。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
したがって、当技術分野には、ハードウェア手法を利用するハッキング耐性のあるコンピュータ・システム・アーキテクチャに対する必要性が存在する。そのようなハードウェア手法は、様々なアプリケーションのために様々なコンピュータから利用可能である。例えば、本発明で開示されるハードウェア手法を使用する銀行、企業、政府機関、又は個人は、それらのコンピュータの制御権を握って、コンピュータ上に記憶された機密データ、個人情報、又はパスワードを盗み、又は改ざんしようと試みることがあるハッカからかなりよく保護される。本明細書で開示されるハードウェア手法は、現在のソフトウェアベースのソリューションでは可能でない程度まで、ハッカを防御する。
【課題を解決するための手段】
【０００４】
ハッキング耐性のあるコンピューティング・デバイスを実施するためのコンピュータ・システム・アーキテクチャが、開示される。コンピュータ・システム・アーキテクチャは、インターネットから受け取った悪意あるコンピュータ実行可能コードが、重要なデータ・ファイルにアクセスすること、又は悪影響を及ぼすことを、重要なデータ・ファイルのインターネットへの直接アクセスをハードウェア的に制限すること、ならびに重要なデータ・ファイル、インターネットから受け取ったファイル、及びコンピュータ実行可能コードのメモリ・アドレスをハードウェア的に区分することによって防止する。メインフレーム・コンピュータ、パーソナル・コンピュータ、スマートフォン、又はネットワーク通信に適した他の任意のコンピューティング・デバイスとすることができる、コンピューティング・デバイスは、第１のパーティションと、第２のパーティションとを備える。第２のパーティションは、インターネットなどのネットワーク上で通信することができる。対照的に、第１のパーティションは、バスを通して第２のパーティションと、又は第１のパーティションに直接的に接続された入力／出力デバイスと直接的に通信することができる。結果として、第１のパーティションは、インターネット、及びインターネットに接続されたサーバなどの他の任意のデバイスに接続することをハードウェア的に制限される。第１のパーティションによるインターネットへのすべてのアクセスは、第１のパーティションと第２のパーティションとの間のハードウェア接続に限定され、その後、第２のパーティションが、インターネットに接続することができる。
【０００５】
さらに、第１のパーティションは、オペレーティング・システムを利用して、第１のパーティションのメモリ・アドレスを、コンピュータ実行可能コード、第１のパーティション上に記憶された重要なデータ・ファイル、及びバスを通して第２のパーティションから読み取られたデータ・ファイルの３つのセクションに区分する、ハードウェア回路を含む。この手法は、第１のパーティション内の３つの別個のメモリ・ユニットを使用することによっても、達成され得る。重要なデータ・ファイルを保護するために、第２のパーティションは、第１のパーティションのメモリ・アドレッシングから読み取る、又は第１のパーティションのメモリ・アドレッシングに書き込むことを、ハードウェア的に制限される。第２のパーティションのデータは、第１のパーティションのオペレーティング・システムによって実行される「プル」コマンドを通して、第１のパーティションに転送される。さらに、第２のパーティションは、第１のパーティションにデータを「プッシュ」すること、又は「プル」コマンドを送るように第１のパーティションを制御することはできない。第１のパーティションによって第２のパーティションからプルされるすべてのデータは、ハードウェア設計によって、第２のパーティションから読み取られたデータ・ファイル専用の第１のパーティションのメモリ・セクション内に記憶される。さらに、第１のパーティションは、ハードウェア制限によって、第２のパーティションから読み取られたデータ・ファイルが実行されることを防止する。結果として、第１のパーティション上に記憶された重要なプログラム及び重要なデータ・ファイルは、第２のパーティションに悪影響を及ぼすインターネット又は他の任意のソースからの悪意あるコードから保護される。
本発明の第１の実施態様によれば、第１のパーティションであって、
第１のＣＰＵと、
少なくとも１つのメモリ・モジュールと、
少なくとも１つの書き込みモジュールと、
少なくとも１つのＩ／Ｏモジュールと、
少なくとも１つのデータ・ファイルを含む、少なくとも１つのデータ・ストアと、
メモリ・アドレッシング構造であって、
少なくとも１つのプログラム・コード用アドレス範囲と、
少なくとも１つの第１のパーティション・データ用アドレス範囲と、
少なくとも１つの第２のパーティション・データ用アドレス範囲と、
を備えるメモリ・アドレッシング構造と、
少なくとも１つの重要なデータ・ファイルと、
前記プログラム・コード用アドレス範囲内に記憶されたコンピュータ実行可能コードであって、前記コンピュータ実行可能コードが、オペレーティング・システムを含む、コンピュータ実行可能コードとからなり、
前記第１のＣＰＵが、前記プログラム・コード用アドレス範囲内に記憶された前記コンピュータ実行可能コードだけを実行するように構成される、第１のパーティションと、
バスと、
第２のパーティションであって、
第２のＣＰＵと、
少なくとも１つのデータ・ファイルを含む、少なくとも１つのデータ・ストアと、
ネットワークに結合された通信モジュールと
からなる第２のパーティションとからなる、コンピュータ・システムにおいて、
前記第１のパーティションが、前記バスを通して、前記第２のパーティションに相互接続され、
前記第１のパーティションが、前記第２のパーティションからデータを読み取るための、プル・コマンドを実行するように構成され、
前記第１のパーティションが、前記第２のパーティションにデータを書き込むための、プッシュ・コマンドを実行するように構成され、
前記少なくとも１つの書き込みモジュールが、前記第２のパーティションの前記少なくとも１つのデータ・ファイルを、前記バスを通して、前記第１のパーティションの前記少なくとも１つの第２のパーティション・データ用アドレス範囲に書き込むように構成され、
前記少なくとも１つの書き込みモジュールが、前記第１のパーティションの前記少なくとも１つのデータ・ファイルを、前記バスを通して、前記第２のパーティションの前記少なくとも１つのデータ・ストアに書き込むように構成され、
前記第１のパーティションが、前記第２のパーティションからのプッシュ・コマンドを制限するように構成され、
前記第１のパーティションが、前記第２のパーティションからのプル・コマンドを制限するように構成され、
前記第１のパーティションが、ハードウェア的に構成され、
前記第２のパーティションが、ハードウェア的に構成され、
前記第２のパーティションが、前記メモリ・アドレッシング構造にアクセスすることをハードウェア的に制限される、
コンピュータ・システムを要旨とする。
本発明の第２の実施態様は、第１の実施態様において、複数の入力／出力デバイスが、前記第１のパーティションの前記Ｉ／Ｏモジュールに結合されることを要旨とする。
本発明の第３の実施態様は、第１の実施態様において、前記プログラム・コード用アドレス範囲が、第１のメモリ・ユニットからなり、
前記第１のパーティション・データ用アドレス範囲が、第２のメモリ・ユニットからなり、
前記第２のパーティション・データ用アドレス範囲が、第３のメモリ・ユニットからなることを要旨とする。
本発明の第４の実施態様は、第１の実施態様において、
前記第１のパーティション及び第２のパーティションからなるチップをさらに備えることを要旨とする。
本発明の第５の実施態様は、第１の実施態様において、前記第１のパーティションからなる第１のチップと、前記第２のパーティションからなる第２のチップとをさらに備えることを要旨とする。
本発明の第６の実施態様は、第１の実施態様において、オン位置及びオフ位置を備える、少なくとも１つの外部物理スイッチをさらに備え、前記外部物理スイッチの前記オン位置が、前記少なくとも１つの書き込みモジュールが、前記第１のパーティションの前記プログラム・コード用アドレス範囲にアクセスすることを可能にすることを要旨とする。
本発明の第７の実施態様は、第１の実施態様において、前記少なくとも１つの書き込みモジュールが、フィールド・プログラマブル・ゲート・アレイからなることを要旨とする。
本発明の第８の実施態様は、第１の実施態様において、前記書き込みモジュールが、前記第１のパーティションの前記少なくとも１つのデータ・ストア、前記少なくとも１つのプログラム・コード用アドレス範囲、前記少なくとも１つの第１のパーティション・データ用アドレス範囲、又は前記少なくとも１つの第２のパーティション・データ用アドレス範囲から、前記第２のパーティションに書き込むように構成されることを要旨とする。
本発明の第９の実施態様は、第１の実施態様において、前記第１のＣＰＵが、前記プログラム・コード用アドレス範囲内に記憶された前記コンピュータ実行可能コードだけを実行するようにハードウェア的に構成されることを要旨とする。
本発明の第１０の実施態様は、少なくとも１つのパーティション・コンピュータであって、
第１のパーティションであって、
少なくとも１つのＣＰＵと、
少なくとも１つのメモリ・モジュールと、
少なくとも１つの書き込みモジュールと、
少なくとも１つのＩ／Ｏモジュールと、
少なくとも１つのデータ・ストアと、
メモリ・アドレッシング構造であって、
少なくとも１つのプログラム・コード用アドレス範囲と、
少なくとも１つの第１のパーティション・データ用アドレス範囲と、
少なくとも１つの第２のパーティション・データ用アドレス範囲と、
を備えるメモリ・アドレッシング構造と
からなる第１のパーティションと、
バスと、
第２のパーティションであって、
少なくとも１つのＣＰＵと、
少なくとも１つのメモリ・モジュールと、
少なくとも１つのデータ・ファイルを含む、少なくとも１つのデータ・ストアと、
外部ネットワークに通信可能に結合された通信モジュールと
からなる第２のパーティションとからなり、
前記第１のパーティションが、前記バスを通して、前記第２のパーティションに相互接続され、
前記第１のパーティションの前記少なくとも１つのＣＰＵが、前記第２のパーティションからのプッシュ・コマンド及び前記第２のパーティションからのプル・コマンドを制限するように構成され、
前記第２のパーティションが、前記第２のパーティションの前記データ・ファイルを、前記第１のパーティションの前記メモリ・アドレスに書き込むことはできない、
少なくとも１つのパーティション・コンピュータと、
前記少なくとも１つのＩ／Ｏモジュールと通信可能に結合された、少なくとも１つの別個のコンピュータとからなる、コンピュータ・システムにおいて、
前記少なくとも１つの別個のコンピュータが、外部ネットワークに通信可能に結合されず、
前記少なくとも１つの別個のコンピュータが、少なくとも１つの重要なデータ・ファイル及び少なくとも１つのデータ・セグメントを含み、
前記少なくとも１つの書き込みモジュールが、前記少なくとも１つの別個のコンピュータから読み取り、又は前記少なくとも１つの別個のコンピュータに書き込むように構成され、
前記第２のパーティションが、前記少なくとも１つの別個のコンピュータから読み取ること、又は前記少なくとも１つの別個のコンピュータに書き込むことはできず、
前記少なくとも１つの別個のコンピュータが、前記第２のパーティションから読み取ること、又は前記第２のパーティションに書き込むことはできず、
前記第１のパーティションが、ハードウェア的に構成され、
前記第２のパーティションが、ハードウェア的に構成され、
前記第２のパーティションが、前記メモリ・アドレッシング構造にアクセスすることをハードウェア的に制限される、コンピュータ・システムを要旨とする。
本発明の第１１の実施態様は、第１０の実施態様において、前記第２のパーティションの前記通信モジュールが、ネットワークに結合されることを要旨とする。
本発明の第１２の実施態様は、第１１の実施態様において、前記少なくとも１つの書き込みモジュールが、フィールド・プログラマブル・ゲート・アレイからなることを要旨とする。
本発明の第１３の実施態様は、第１１の実施態様において、前記少なくとも１つのプログラム・コード用アドレス範囲が、第１のメモリ・ユニットからなり、前記少なくとも１つの第１のパーティション・データ用アドレス範囲が、第２のメモリ・ユニットからなり、前記少なくとも１つの第２のパーティション・データ用アドレス範囲が、第３のメモリ・ユニットからなることを要旨とする。
本発明の第１４の実施態様は、第１０の実施態様において、外部ネットワークに通信可能に結合された、第２の別個のコンピュータをさらに備え、
前記第２のパーティションが、Ｉ／Ｏモジュールを備え、
前記第２の別個のコンピュータが、前記第２のパーティションの前記Ｉ／Ｏモジュールに結合され、
前記第２の別個のコンピュータが、重要なファイルを保有せず、
前記第２の別個のコンピュータが、前記第２のパーティションに書き込むこと、及び前記第２のパーティションから読み取ることができることを要旨とする。
本発明の第１５の実施態様は、第１４の実施態様において、複数の入力／出力デバイスが、前記第１のパーティションの前記Ｉ／Ｏモジュールに結合されることを要旨とする。
本発明の第１６の実施態様は、第１４の実施態様において、前記第１のパーティション及び第２のパーティションからなるチップをさらに備えることを要旨とする。
本発明の第１７の実施態様は、第１４の実施態様において、前記第１のパーティションからなる第１のチップと、前記第２のパーティションからなる第２のチップとをさらに備えることを要旨とする。
本発明の第１８の実施態様は、第１４の実施態様において、オン位置及びオフ位置を備える、少なくとも１つの外部物理スイッチをさらに備え、前記外部物理スイッチの前記オン位置が、前記書き込みモジュールが、前記第１のパーティションの前記プログラム・コード用アドレス範囲にアクセスすることを可能にすることを要旨とする。
本発明の第１９の実施態様は、第１０の実施態様において、前記書き込みモジュールが、前記第１のパーティションの前記少なくとも１つのデータ・ストア、前記少なくとも１つのプログラム・コード用アドレス範囲、前記少なくとも１つの第１のパーティション・データ用アドレス範囲、又は前記少なくとも１つの第２のパーティション・データ用アドレス範囲から、前記第２のパーティションに書き込むように構成されることを要旨とする。
本発明の第２０の実施態様は、第１０の実施態様において、前記第１のパーティションの前記少なくとも１つのＣＰＵが、前記少なくとも１つのプログラム・コード用アドレス範囲内に記憶されたコンピュータ実行可能コードだけを実行するようにハードウェア的に構成されることを要旨とする。
【０００６】
詳細な説明は、添付の図を参照する。
【図面の簡単な説明】
【０００７】
【図１】例示的なネットワーク図。
【図２】本発明の様々な実施形態による、ハッキング耐性のあるコンピューティング・デバイスを実施するためのコンピュータ・システム・アーキテクチャを示すブロック図。
【図３】好適な実施形態による、コンピューティング・デバイスのメモリ・アドレッシングを示す図。
【図４】好適な実施形態による方法を示すフローチャート。
【図５】既存のコンピュータ・アーキテクチャを利用するコンピューティング・デバイスとともに使用するために適合させられた、本発明の実施形態を示すブロック図。
【図６】既存のコンピュータ・アーキテクチャを利用するコンピューティング・デバイスとともに使用するために適合させられた、本発明のソフトウェア実施形態を示すブロック図。
【発明を実施するための形態】
【０００８】
本発明の他の目的、特徴、及び特性、ならびに構造及び部分の組み合わせの関連要素の動作及び機能の方法は、添付の図面を参照して以下の詳細な説明を検討することでより明らかになるであろう。添付の図面のすべては、本明細書の一部を形成する。
【０００９】
本発明の詳細で説明的な実施形態が、本明細書で開示される。しかしながら、本発明による技法、方法、工程、システム、及び動作構造は、多種多様な形態及び様式で具体化されてよく、それらのいくつかは、開示された実施形態におけるそれらとまったく異なってよい。結果として、本明細書で開示される特定の構造的及び機能的詳細は、代表的なものにすぎないが、それでも、その点において、それらは、開示の目的で最良の実施形態を提供すると見なされる。
【００１０】
文脈が明らかに別のことを要求していない限り、本説明及び特許請求の範囲のどこにおいても、「ｃｏｍｐｒｉｓｅ（含む／備える）」及び「ｃｏｍｐｒｉｓｉｎｇ（含む／備える）」などの語は、排他的又は網羅的ではなく、包含的な意味に、すなわち、「ｉｎｃｌｕｄｉｎｇ，  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ（限定することなく、〜を含む）」の意味に解釈されるべきである。本明細書で使用される場合、「ｃｏｎｎｅｃｔｅｄ
（接続される）」、「ｃｏｕｐｌｅｄ（結合される）」という用語、又はそれらのいずれの変化形も、２つ以上の要素間の、直接的又は間接的な、電子的又は非電子的な、任意の接続又は結合を意味し、要素間の接続の結合は、物理的、論理的、又はそれらの組み合わせとすることができる。加えて、「ｈｅｒｅｉｎ（本明細書で）」、「ａｂｏｖｅ（上で）」、「ｂｅｌｏｗ（下で）」という語、及び同様の趣旨の語は、本明細書で使用される場合、本明細書のいずれか特定の部分ではなく、本明細書を全体として参照するものとする。文脈が許す場合、単数形又は複数形で使用される「発明を実施するための形態」内の語は、それぞれ、複数又は単数を含んでもよい。２つ以上の項目からなるリストに関する「ｏｒ（又は）」という語は、この語についての以下の解釈のすべて、すなわち、リスト内の項目のいずれか、リスト内の項目のすべて、及びリスト内の項目の任意の組み合わせを包含する。以下に、図を参照する、本発明の好適な実施形態についての詳細な説明を提示する。
【００１１】
最初に図１を参照すると、ハッキング耐性のあるコンピューティング・デバイスの例示的なネットワーク図が、示されている。コンピューティング・デバイス３００は、任意の大規模商用又は政府コンピュータ又は「メインフレーム」、タンデムで動作する１組のリンクされたコンピュータ、限定することなく、モバイル電話、セルラ電話、スマート電話、ラップトップ・コンピュータ、ネットブック、パーソナル・デジタル・アシスタント（ＰＤＡ）、家電、住宅用もしくは商用建物コントローラ、又はネットワーク通信に適した他の任意のコンピューティング・デバイスを含む、単一のパーソナル・コンピュータ（ＰＣ）又はモバイル通信デバイスを含むことができる。コンピューティング・デバイス３００は、第１のパーティション１００と、第２のパーティション２００とを備える。第１のパーティション１００は、キーボード、データ記憶デバイス、及びプリンタなどの、入力／出力デバイスに直接的に相互接続される。大規模使用のための実施形態では、第１のパーティションは、コンピューティング・デバイスのユーザの制御下にある物理的ロケーション内に存在する、より小型のコンピュータ又はＰＣに直接的な配線によって接続され得る。この実施形態では、ユーザは、より小型のコンピュータ又はＰＣが、ワイヤ、ケーブル、又はＷｉ−Ｆｉを含む任意の形態のインターネット接続を行えないようにすることができる。第２のパーティション２００は、ネットワーク５００上で端末６００と通信する。図２を参照して以下で詳細に説明されるように、第１のパーティション１００は、バスを使用して、第２のパーティション２００と直接的に通信することができるが、第１のパーティション１００は、ネットワーク５００と通信することを、ハードウェア的に制限される。好適な実施形態では、第１のパーティションのＣＰＵは、第２のパーティションのメモリ及び第２のパーティションのＣＰＵに直接的にアクセスすることができるが、第２のパーティションのＣＰＵは、第１のパーティションのメモリ及び第１のパーティションのＣＰＵにアクセスすることを、ハードウェア的に制限される。
【００１２】
ネットワーク５００は、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット、セルラ・ネットワーク、衛星ネットワーク、それらの組み合わせ、又はコンピューティング・デバイス３００へのデータの転送、及び／もしくはコンピューティング・デバイス３００からのデータの受信を可能にする他の任意のネットワークとすることができる。ネットワーク５００を通してコンピューティング・デバイス３００に送信されたデータ、又はコンピューティング・デバイス３００から端末６００に送信されたデータは、標準的な電気通信プロトコル又は標準的なネットワーキング・プロトコルを利用して、送信及び／又は受信され得る。好適な実施形態では、システムは、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）を利用し、ネットワーク５００は、インターネット及び／又はイントラネットである。データを送信及び／又は受信するためのプロトコルの他の例は、限定することなく、ボイス・オーバ・インターネット（ＶＯＩＰ）プロトコル、ショート・メッセージ・サービス（ＳＭＳ）、ＢＬＵＥＴＯＯＴＨ（登録商標）無線送信、及び移動体通信用グローバルシステム（Ｇ
ＳＭ（登録商標））を含む。ネットワーク５００は、コンピューティング・デバイス３００及び端末６００の１つ又は複数のプロトコルを利用することが可能である。さらに、ネットワーク５００は、他のプロトコルに変換すること、又は他のプロトコルから端末６００の１つもしくは複数のプロトコルに変換することができる。いくつかの状況では、セカンダリ・パーティション２００は、コンピューティング・デバイス３００上に記憶された重要なデータ・ファイルにアクセスしようと、又は悪影響を及ぼそうと試みる、悪意あるコンピュータ実行可能コードにさらされる。図２及び図３を参照して以下で説明されるように、好適な実施形態は、そのようなマルウェアが、第１のパーティション１００の重要なデータ・ファイル及びメモリにアクセスすること、又は悪影響を及ぼすことを防止する。
【００１３】
ここで図２を参照すると、インターネットからの、及びネットワーク５００を通して通信することができる他の任意のソースからの悪意あるコンピュータ実行可能コードの感染からハードウェア的に保護された、コンピューティング・デバイス３００を実施するための、コンピュータ・システム・アーキテクチャを示すブロック図が、示されている。コンピューティング・デバイス３００は、第１のパーティション１００を備える。第１のパーティション１００は、第１のパーティションのバス１０２に相互接続されたコンピュータ処理ユニット（ＣＰＵ）１０４を備える。第１のパーティションのメモリ１０６が、第１のパーティションのバス１０２を通して、ＣＰＵ１０４に相互接続される。図１を参照して上で説明されたように、第１のパーティション１００は、入力／出力モジュール１１０を通して、１つ又は複数の入力／出力デバイスに相互接続される。好適な実施形態では、パーティション１００は、データ・ストア１０７、１０８をさらに備える。重要なデータ・ファイルは、メモリ１０６及び／又はデータ・ストア１０７上に記憶される。データ・ストア１０８は、第１のパーティションが処理した第２のパーティション２００からのデータを含む、他のデータを記憶するために、第１のパーティションによって使用される。第１のパーティション１００は、コンピュータ実行可能コードを実行するためのオペレーティング・システムを含む。図３を参照して以下で詳細に説明されるように、ＣＰＵ１０４は、メモリ１０６及びデータ・ストア１０７、１０８のプログラム・コード用アドレス範囲上に記憶されたコンピュータ実行可能コードだけを実行することができる。これは、（この実施形態によって、それ自体がマルウェアから保護された）ＣＰＵ１０４のオペレーティング・システムによる、及びハードウェア回路による制御を通して達成される。現在のコンピュータ・システム・アーキテクチャの根本的な弱さは、インターネットを通してコンピュータに達した悪意あるコンピュータ実行可能コードに、しばしば実行制御が引き渡されることである。本実施形態は、インターネットから第２のパーティションにダウンロードされた悪意あるコンピュータ実行可能コードのいかなる実行も制限する。
【００１４】
コンピューティング・デバイス３００は、第２のパーティション２００をさらに備える。第２のパーティション２００は、第２のパーティションのバス２０２に相互接続されたＣＰＵ２０４を備える。少なくとも１つのメモリ２０６が、第２のパーティションのバス２０２を通して、ＣＰＵ２０４に相互接続される。通信モジュール２１０は、第２のパーティション２００が、ネットワークを通して端末と通信することを可能にする。コンピュータ・システム・アーキテクチャは、少なくとも１つのデータ・ストア２０８をさらに含む。データ・ストア２０８は、重要であると見なされないデータ・ファイルの記憶用である。第２のパーティション２００は、コンピュータ実行可能コードを実行するためのオペレーティング・システムを含む。図３を参照して以下で詳細に説明されるように、ＣＰＵ２０４は、メモリ２０６のアドレス範囲全体及びデータ・ストア２０８からのコンピュータ実行可能コードを実行することができる。
【００１５】
図２に示されるように、第１のパーティション１００は、バス３０２を通して、第２のパーティション２００に直接的に相互接続される。加えて、好適な実施形態では、ＣＰＵ
１０４は、セカンダリ・パーティション２００のメモリ２０６のアドレス範囲全体及びデータ・ストア２０８に書き込むことができる。この設計の１つの利点は、悪意あるコンピュータ実行可能コードによって悪影響を及ぼされた第２のパーティション２００のオペレーティング・システム及びデータ・ファイルを、第１のパーティション１００が回復できることである。加えて、ＣＰＵ１０４は、メモリ２０６のアドレス範囲全体及びデータ・ストア２０８からデータを読み取ることができるが、ＣＰＵ１０４による「読み取り」コマンド（プル）だけによって、それを行うことができる。ＣＰＵ１０４は、ハードウェア制限によって、第２のパーティション２００によってＣＰＵ１０４にプッシュされたいかなるデータ又は他のファイルも受け入れることはできない。加えて、第２のパーティション２００は、いかなるデータも第１のパーティション１００からプルすることはできない。さらに、第１のパーティション１００のオペレーティング・システム及びサポーティング・プログラムは、ＣＰＵ１０４が第２のパーティション２００から受け入れるデータのフォーマット及び他のファイル特性を定義する。適切な予想された形式を取らないファイルを第１のパーティション１００に提供しようとする、第２のパーティション２００によるいずれの試みも、ＣＰＵ１０４によって拒否される。図３を参照して以下で詳細に説明されるように、ＣＰＵ１０４によってセカンダリ・パーティション２００から読み取られるすべてのデータ・ファイルは、メモリ１０６の第２のパーティション用アドレス範囲及び／又はデータ・ストア１０８に書き込まれる。ＣＰＵ１０４は、メモリ１０６のプログラム・コード用アドレス範囲及びデータ・ストア１０７上に記憶されたコンピュータ実行可能コードだけしか実行できないので、第１のパーティション１００は、セカンダリ・パーティション２００上に記憶されたいかなる悪意あるコンピュータ実行可能コードからも保護される。
【００１６】
図２で説明されたコンピュータ・システム・アーキテクチャは、限定することなく、大型メインフレーム・コンピュータ、パーソナル・コンピュータ、パッド、タブレット、及びスマートフォンを含む、様々なコンピューティング・デバイスに適用され得る。さらに、コンピュータ・システム・アーキテクチャは、新しい製品に適用され得、又は既存のコンピュータ設計に適合させ得る。図２で説明されたコンピュータ・アーキテクチャは、１組のチップとして開示されるが、その技法は、コンピュータ・システムが、本明細書で開示される原理に従って設計されるならば、２つの別個のコンピュータ・システムを有するシステムに適用されてよい。２つの別個のコンピュータ・システムを有する実施形態では、（第１のパーティションのそれと同様の役割を有する）第１のコンピュータ・システムは、悪意あるコードから保護される重要なデータ・ファイルを記憶し、一方、（第２のパーティションのそれと同様の役割を有する）第２のコンピュータ・システムは、リモート端末と通信する。さらに、第１のコンピュータ・システムは、第２のコンピュータ・システムに直接的に接続される。
【００１７】
次に図３を参照すると、第１のパーティション及び第２のパーティションのメモリ・アドレッシングが、示されている。（図２に示されるメモリ１０６における）第１のパーティションのメモリ・アドレッシング７００は、少なくとも１つのプログラム・コード用アドレス・ブロック７０２と、少なくとも１つの第１のパーティション・データ用アドレス・ブロック７０４と、少なくとも１つの第２のパーティション・データ用アドレス・ブロック７０６とを含む。好適な実施形態では、第１のパーティションのメモリ・アドレッシング７００の各アドレス・ブロックに対するデータの書き込み及び読み取りは、使用可能なメモリ・アドレッシング空間を物理的に限定するように、第１のパーティションのＣＰＵを設計することによって制限される。例えば、３２ビット又は６４ビット・アドレッシングをサポートするＣＰＵは、コンピュータ実行可能コードを実行するためのオペレーティング・システムのアクセスを、プログラム・コード用アドレスにマッピングされたビットに限定することができる。結果として、第１のパーティション・データ用アドレス・ブロック７０４及び第２のパーティション・データ用アドレス・ブロック７０６上に配置さ
れた悪意あるコンピュータ実行可能コードは、そのようなデータ・ファイルのいくつかに、有効なコンピュータ実行可能コードであることを示すフラグが立てられていることがあっても、オペレーティング・システムによって実行されない。さらに、第１のパーティションのＣＰＵは、第２のパーティションから読み取られたいかなるデータも、第２のパーティション・データ用アドレス・ブロック７０６にだけ書き込み、それは、実行のために使用され得ない。この設計は、第２のパーティション内の悪意あるコンピュータ実行可能コードが、第１のパーティションのメモリ・アドレッシング７００のプログラム・コード用アドレス・ブロック７０２に書き込まれることを防止する。ハードウェア設計のさらなる利点は、書き込みコマンド及び読み取りコマンドのアドレス範囲が、悪意あるコンピュータ実行可能コードによって悪影響を及ぼされ得ないことであるが、その理由は、メモリ・アドレス範囲に悪影響を及ぼすためには、第１のパーティションのＣＰＵが、物理的に変更される必要があるからである。第１のパーティションのアドレッシングを分離するために、３つの別個のメモリを利用することも可能であることは、当業者に明らかである。
【００１８】
また別の程度のハードウェア保護が、プログラム・コード用アドレス・ブロック７０２内のプログラムに対して実施され得る。これは、頻繁には更新されず、プログラム・コード用アドレス・ブロック７０２内のプログラムと関連付けられた、非常に重要なデータ・ファイルを含むことができる。プログラム・コード用アドレス・ブロック７０２の内容を更新するためのアクセスは、第１のパーティション１００に直接的に接続されたデバイスに限定される。ＣＰＵ１０４、バス１０２、及びＩ／Ｏモジュール１１０の組み合わせは、オプションのハードウェア・スイッチを用いて、プログラム・コード用アドレス・ブロック７０２の内容を変更できるようになるには、権限を与えられた人員によってスイッチをオンにする必要があるように、制御され得る。結果として、プログラム・コード用アドレス・ブロック７０２に対するいかなる更新も、更新を提供する直接的に接続されたデバイスにおける権限を与えられた人員によるアクセスと、スイッチをオンにする権限を与えられた人員による独立したアクションとの両方を必要とする。非常に安全なシステムのために、この設計は、権限を与えられた直接的に接続されたユーザであっても、プログラム・コード用アドレス・ブロック７０２内に記憶されたプログラム又は非常に重要なデータを変更しようと不適切に（不注意から、又は意図的に）試みる場合には、それを防止する、より高い程度の保護を提供する。
【００１９】
対照的に、第２のパーティションのＣＰＵは、第２のパーティションのメモリ・アドレス８００を対象にした読み取り及び書き込みに限定される。図３に示されるように、データ又はプログラム・コードは、当技術分野において知られた技法を利用して、第２のパーティションのメモリ・アドレス８００のアドレス範囲全体を対象にして読み取られ得、又は書き込まれ得る。しかしながら、第２のパーティションのＣＰＵは、第１のパーティションのメモリ・アドレスにアクセスすること、又はそれを変更することを、ハードウェア的に制限される。この設計は、第２のパーティションのＣＰＵが、インターネットを通してリモート端末から来た第２のパーティションに悪影響を及ぼした悪意あるコンピュータ実行可能コードを、第１のパーティションに書き込むことを防止する。さらに、第１のパーティションのＣＰＵは、第２のパーティションのメモリ・アドレス８００に直接的にアクセスすることができ、それは、第１のパーティションと第２のパーティションとを相互接続するバス上でのアクティビティによって引き起こされる遅延を回避することによって、第１のパーティションのＣＰＵの読み取り及び書き込み性能を向上させる。第１のパーティションのＣＰＵは、メモリ・アドレス８００から読み取って、第２のパーティションから読み取られたデータに専用される第２のパーティション・データ用アドレス・ブロック７０６にだけ入れることができる。
【００２０】
図４は、第１のパーティション上に配置されたデータ・ファイルを獲得する、第２のパーティションの方法を表す、フローチャートを示している。最初に、工程９０２において
、第１のパーティションのＣＰＵは、第２のパーティションのＣＰＵを用いて、現在のデータ要求を定期的にチェックする。データ要求は、データのアイテムを獲得するための要求、データのアイテムを更新するための要求、又は第１のパーティションによるアクション、例えば、１つの口座から別の口座への資金の送金、もしくは建物内における温度設定の変更を要求するための要求とすることができる。次に、工程９０４において、第１のパーティション上に存在するプログラムが、データ要求の正当性を検証する。上で説明されたように、第１のパーティション上に存在するプログラムは、インターネット及び他の任意のネットワークからの悪意あるコンピュータ実行可能コードによる感染から、ハードウェア的に保護される。第１のパーティション上に存在するプログラムによって検証されたデータ要求の場合、方法は、工程９１０に進む。そうではなく、検証が失敗した場合、方法は、工程９０６に進む。工程９０６において、第１のパーティションのＣＰＵは、工程９０４において検出されたいずれかの疑わしいアクティビティに起因して、第１のパーティションに直接的に接続された権限を与えられた個人による確認を要求することができる。第１のパーティションに直接的に接続された権限を与えられた個人が、データ要求を確認した場合、方法は、工程９１０に進む。そうではない場合、方法は、工程９０８に進む。工程９０８において、第１のパーティションのＣＰＵは、データ要求が拒否されたことを、権限を与えられた個人に警告し、別のデータ要求に着手する。検証及び／又は確認に続いて、工程９１０において、第１のパーティションのＣＰＵは、データ・ファイルにアクセスし、データの適用可能な要素を第２のパーティションに提供する。この設計下では、第２のパーティションは、第１のパーティション上のいかなる重要なデータ・ファイルに対する直接アクセスも獲得することはできない。上で説明されたように、好適な実施形態において開示されるコンピュータ・システム・アーキテクチャのハードウェアは、データ・ファイルを第１のパーティションから送るためのコマンドが、第２のパーティションによって制御され得ないように構築される。結果として、第２のパーティション上に配置されたいかなる悪意あるコードも、悪意あるコードを第１のパーティションの実行可能コード内に入れることはできず、したがって、いかなる重要なデータ・ファイルにもアクセスすることができず、又はそれらに悪影響を及ぼすことができない。
【００２１】
第１のパーティションを保護するのに加えて、好適な本実施形態は、第１のパーティションが、悪意あるコンピュータ実行可能コードによって悪影響を及ぼされた第２のパーティションのデータ・ファイルを回復することを可能にすることができる。悪意あるコンピュータ実行可能コードは、第２のパーティション、ならびにスクリーン及びキーボードに対するそれの制御を混乱させることができ、それによって、ユーザが、第２のパーティションを通してリモート端末にアクセスすることを妨げる。１実施形態では、第１のパーティションは、キーストローク・シーケンスを利用して、第１のパーティションに直接的に接続されたユーザが、悪意あるコンピュータ実行可能コードによって悪影響を及ぼされたセカンダリ・パーティションのスクリーン及びキーボードの制御ならびにプログラム制御を行うように、第１のパーティションのＣＰＵに命令することを可能にする、ハードウェア機能を含む。第１のパーティションに直接的に接続された権限を与えられたユーザは、第１のパーティションを通して、第２のパーティション上の保護ソフトウェアを開始することができる。ユーザは、第２のパーティションのメモリ及び／もしくはデータ・ファイルを完全に消去して、悪意あるコンピュータ実行可能コードを削除するように、又は第２のパーティションを、そのような悪意あるコードのない以前にセーブされた状態に回復するように、第１のパーティションに命令することもできる。この実施形態では、第２のパーティションのオペレーティング・システム及びアプリケーションは、第１のパーティションによって記録される。結果として、第１のパーティションは、悪意あるコンピュータ実行可能コードを削除した後、第２のパーティションのオペレーティング・システム及びアプリケーションを回復することができる。第２のパーティションは、悪意あるコードの削除後、動作可能になり、それによって、コンピューティング・デバイスのための、リモート端末へのアクセスを可能にする。
【００２２】
加えて、好適な実施形態は、様々なタイプの保護ソフトウェアを導入することを現実的にする。上で説明されたように、好適な実施形態は、悪意あるコンピュータ実行可能コードが、第１のパーティションのプログラム・コード又はデータ・ファイルにアクセスし、悪影響を及ぼすことを防止するために、様々なハードウェア方法を利用する。そのような方法は、限定することなく、第１のパーティションのインターネットを通したリモート端末への直接アクセスを防止すること、及び第１のパーティションのメモリ・アドレッシングを制限することを含む。この設計は、セカンダリ・パーティションからの第１のパーティションのデータ・ファイルを求める要求を制限するが、コンピューティング・デバイスの他の態様は、当技術分野において知られた通常のコンピュータ・システムのように動作する。例えば、第１のパーティションのＣＰＵが、第２のパーティションからデータを読み取ったとき、第１のパーティションのＣＰＵは、データの個々のアイテムがセカンダリ・パーティションに送り戻されることを求める要求をしばしば受け取る。この要求された情報は、その後、第２のパーティションによって、ネットワーク上でリモート端末に転送され得る。好適な実施形態は、そのようなデータ要求が、個別に、又はある期間にわたるまとまりとして、疑わしくないかどうかをチェックするために、保護プログラムが第１のパーティションのＣＰＵによって実行されることを可能にする。例示的な疑わしいデータ要求は、第１のパーティション上のソフトウェアによって財務情報にマッピングされた重要なデータ・ファイルを第２のパーティション上のプログラムが要求するものである。結果として、第１のパーティションのＣＰＵは、疑わしいアクティビティが検出された場合、第１のパーティションに直接的に接続された権限を与えられた個人の介入を求める要求を含む、適切な検証の手段を開始することができる。さらなる例では、第１のパーティションのハードウェア保護されたプログラム・コードは、ファイル全体又は重要なデータ・ファイルのフル・セットの代わりに、データの特定のアイテムだけを第２のパーティションに送るようにプログラムされる。例示的なプログラムは、パスワード及びクレジットカードのセキュリティ・コードなどの機密データを第２のパーティションに送ることを、拒否することもできる。知られたシステムでは、悪意あるコンピュータ実行可能コードは、重要なデータ・ファイルに直接的にアクセスすることができ、保護プログラムを改変することができるので、そのようなプログラムは、現実的ではない。
【００２３】
本発明は、アプリケーションのためのハードウェア「サンドボックス」を生成することによって、モバイル・デバイスのアーキテクチャに組み込まれてもよい。現在、いくつかのセルフォン用オペレーティング・システム上で使用されている、ソフトウェア「サンドボックス」と同様に、これは、他の重要なメモリへのアクセスを制限しながら、いくつかの機能及びデータへのアクセスをアプリケーションに許可する。それら既存の方法とは異なり、この実施形態は、悪意あるコンピュータ実行可能コードのアクセスに対するハードウェア制限を提供する。すべての補助プログラムは、セカンダリ・パーティション内にロードされるので、重要なデータ及びオペレーティング・システム自体は、いかなるアプリケーションによる改変からも保護され得る。
【００２４】
加えて、本発明は、それのプライマリ・インターフェースが、コンピューティング以外の機能用である、ネットワーク接続されたデバイスを保護するために使用され得る。冷蔵庫及びエアコンなどの家電は、インターネットに接続するように設計されることが増えている。そのようなデバイスも、インターネット上で、又はネットワークを通して受け取られた、悪意あるコンピュータ実行可能コードから、プライマリ・パーティションの機能を遮蔽するために、好適な実施形態のコンピュータ・システム・アーキテクチャを用いるように設計され得る。他の「スマート・ホーム」及び「スマート・ビルディング」デバイス、ならびに乗物内のコンピュータ対応のコンソールも、対応するコンピュータ・システム・アーキテクチャの使用を行ってよい。
【００２５】
好適な実施形態は、統合された新しいコンピュータ・システム・アーキテクチャに関連して説明されたが、本発明は、好適な実施形態の主要な機能を利用するハードウェア及びソフトウェアの組み合わせと併せて、既存のアーキテクチャを利用する、コンピューティング・デバイスに適合され得る。そのような実施形態は、既存のコンピュータに大きな投資を行っており、それらを使用し続けたいが、ハッキングに対する改善された保護を望んでいるユーザに対して、有益なことがある。１実施形態では、統合されたシステムの第１のパーティションは、重要なファイル及びプログラムのほとんどを保有することができる、既存のコンピュータに接続され得る。結果として、そのコンピュータは、統合されたシステムの第１のパーティションについて上で説明されたように、インターネット及び他の外部ソースから隔離される。第１のパーティションは、バス又はＩ／Ｏモジュールを通して、コンピュータと通信し、それに対する読み取り及び書き込みを行うことができ、コンピュータは、ハードウェア及びオペレーティング・システムによって、マルウェアから保護される。
【００２６】
第１のコンピュータ１３００及び第２のコンピュータ１４００を備える、別の代替的実施形態が、図５に示されている。第１のコンピュータ１３００及び第２のコンピュータ１４００は、当技術分野において知られたコンピュータ・アーキテクチャ、例えば、ｘ８６、ＡＲＭ、及びＰｏｗｅｒＰＣを利用する。そのため、第１のコンピュータ１３００及び第２のコンピュータ１４００は、コンピュータ実行可能コードを実行するためのオペレーティング・システムを含む。上で説明されたように、これらの知られたアーキテクチャの不都合は、第１のコンピュータ１３００及び第２のコンピュータ１４００のプロセッサが、重要なデータ・ファイルにアクセスし、悪影響を及ぼすことができる、インターネットから受け取った悪意あるコンピュータ実行可能コードの実行を許しやすいことである。さらに、そのような悪意あるコンピュータ実行可能コードは、知られたソフトウェア・ソリューションの裏をかくことができる。本実施形態では、第２のコンピュータ１４００は、インターネットに接続することができる。結果として、第２のコンピュータ１４００は、インターネットからの悪意あるコンピュータ実行可能コードの影響を受けやすい。しかしながら、第１のコンピュータ１３００は、インターネットに接続されず、コンピューティング・デバイス１０００を通して、第２のコンピュータ１４００に相互接続される。第１のコンピュータ１３００は、図６を参照して以下で詳細に説明されるように、オペレーティング・システム手法の使用を通して、ある程度の保護を達成することができる。しかしながら、そのような保護は、限定的であり、巧妙なハッカによるセキュリティ侵害を受けやすい。好適な本実施形態のハードウェア設計及び技法を使用して、第２のコンピュータ１４００に悪影響を及ぼすいかなる悪意あるコンピュータ実行可能コードからも第１のコンピュータ１３００を保護する、コンピューティング・デバイス１０００も利用したほうが、はるかに高度な保護が得られる。コンピューティング・デバイス１０００は、上で説明された完全に統合されたシステムのアーキテクチャの多くを具体化して、第１のコンピュータ１３００が、第２のコンピュータ１４００によってインターネットから受け取られたデータ及び要求を、第１のコンピュータ１３００上でのハッキングの試みに耐える方法で、取り扱うことを可能にする。
【００２７】
図５に示されるように、コンピューティング・デバイス１０００は、第１のパーティション１１００と、第２のパーティション１２００とを備える。第２のパーティション１２００は、ＣＰＵ１２０４と、メモリ１２０６と、データ・ストア１２０８と、Ｉ／Ｏモジュール１２１２とを備え、それらは、バス１２０２によって相互接続される。ＣＰＵ１２０４は、データ・ストア１２０８及び／又はメモリ１２０６上に配置されたオペレーティング・システムを実行して、Ｉ／Ｏモジュール１２１２を通して、第２のコンピュータ１４００と通信する。Ｉ／Ｏモジュール１２１２は、ＵＳＢポート、ｅＳＡＴＡ、ＷｉＦｉ、又はコンピューティング・デバイス１０００を第２のコンピュータ１４００に接続するための他の任意の知られた通信インターフェースとすることができる。この実施形態では
、ソフトウェアは、第２のコンピュータ１４００上で動作しており、それは、ＣＰＵ１２０４が、第２のコンピュータ１４００からデータを受け取ることを可能にする。ＣＰＵ１２０４によって第２のコンピュータ１４００から読み取られたデータ・ファイルは、メモリ１２０６及び／又はデータ・ストア１２０８上に記憶される。ＣＰＵ１２０４は、第１のコンピュータ１３００と直接的に通信することを、ハードウェア的に制限される。第２のパーティション１２００は、通信モジュール１２１０をさらに備える。通信モジュール１２１０は、第２のパーティション１２００が、インターネットなどのネットワークを通して通信することを可能にする。結果として、通信モジュール１２１０は、インターネットからのデータにアクセスするために、第２のコンピュータ１４００を利用する代わりに、インターネットからのデータにアクセスするために、第１のコンピュータ１３００によって利用され得る。
【００２８】
コンピュータ１３００及びコンピューティング・デバイス１０００は、キーボード、データ記憶デバイス、及びプリンタなどの入力／出力デバイスに直接的に相互接続される。大規模使用のための実施形態では、コンピュータ１３００及びコンピューティング・デバイス１０００は、直接的な配線によって、コンピューティング・デバイスのユーザの制御下にある物理的ロケーションに存在する、より小型のコンピュータ又はＰＣに接続され得る。この実施形態では、ユーザは、より小型のコンピュータ又はＰＣが、ワイヤ、ケーブル、又はＷｉ−Ｆｉを含む任意の形態のインターネット接続を行えないようにすることができる。コンピューティング・デバイス１０００は、ネットワーク上でリモート端末と通信することを、ハードウェア的に制限される。コンピュータ１３００は、好適には、他の手段によって、例えば、コンピュータ１３００のオペレーティング・システムにおいてリモート接続を行えないようにすることによって、ネットワーク上でリモート端末と通信することを制限される。
【００２９】
第１のコンピュータ１３００は、第１のパーティション１１００のＩ／Ｏモジュール１１１０に直接的に接続される。Ｉ／Ｏモジュール１１１０は、ＵＳＢポート、ｅＳＡＴＡ、又はコンピューティング・デバイス１０００を第１のコンピュータ１３００に接続するための任意の知られた通信インターフェースとすることができる。第１のパーティション１１００は、ＣＰＵ１１０４と、メモリ１１０６と、少なくとも１つのデータ・ストア１１０８とをさらに備え、それらは、バス１１０２によって相互接続される。図３を参照して上で詳細に説明されたように、ＣＰＵ１１０４は、メモリ１１０６のプログラム・コード用アドレス範囲、及びデータ・ストア１１０８上に記憶されたコンピュータ実行可能コードだけを実行することができる。これは、（本実施形態によって、それ自体がマルウェアから保護された）ＣＰＵ１１０４のオペレーティング・システムによる、及びハードウェア回路による制御を通して達成される。
【００３０】
この実施形態では、ソフトウェアは、第１のコンピュータ１３００上で動作しており、それは、ＣＰＵ１１０４が、データを送り、第１のコンピュータ１３００からデータを受け取ることを可能にする。ソフトウェアは、第１のコンピュータ１３００のユーザが、第１のコンピュータ１３００のためのメモリのエリアを、重要なプログラムと、重要なデータ・ファイルと、コンピューティング・デバイス１０００から受け取ったデータ及び要求とに区分することを可能にする。加えて、ソフトウェアは、第１のコンピュータ１３００のＣＰＵが、コンピューティング・デバイス１０００から受け取ったファイルを有するメモリ・セグメントに対する実行制御を引き渡すことを防止する。実行制御からメモリ・セグメントを分離するためのコンピュータ・セキュリティの１例は、サンドボックス・セキュリティ・メカニズムの使用である。第１のパーティション１１００は、バス１００２を通して、第２のパーティション１２００に直接的に相互接続される。ＣＰＵ１１０４は、セカンダリ・パーティション１２００のメモリ１２０６のアドレス範囲全体及びデータ・ストア１２０８に書き込むことができる。加えて、ＣＰＵ１１０４は、メモリ１２０６の
アドレス範囲全体及びデータ・ストア１２０８からデータを読み取ることができるが、ＣＰＵ１１０４による「読み取り」コマンド（プル）だけによって、それを行うことができる。ＣＰＵ１１０４は、ハードウェア制限によって、第２のパーティション１２００によってそれにプッシュされた、いかなるデータ又は他のファイルも受け入れることはできない。この実施形態では、第１のパーティション１１００に直接的に接続された第１のコンピュータ１３００上で動作するソフトウェアは、第２のパーティション１２００からいずれかのデータをプルするように、ＣＰＵ１１０４に要求することができる。ＣＰＵ１１０４は、メモリ１１０６のプログラム・コード用アドレス範囲及びデータ・ストア１１０８上に記憶されたコンピュータ実行可能コードだけしか実行できないので、コンピューティング・デバイス１０００の第１のパーティション１１００は、第２のコンピュータ１４００又はメモリ１２０６上に記憶されたいかなる悪意あるコンピュータ実行可能コードからも保護される。
【００３１】
この実施形態では、第１のパーティション１１００は、書き込みモジュール１１１２を利用して、コンピューティング・デバイス１０００から受け取ったデータ・ファイルのための、第１のコンピュータ１３００上で動作するソフトウェアによって選択されたメモリのセグメントに、データを書き込む。書き込みモジュール１１１２は、コンピューティング・デバイス１０００から受け取ったデータ・ファイルとして区分された、第１のコンピュータ１３００のメモリのセグメントをマッピングするための、ハードウェア回路を備える。例示的なハードウェア回路は、コンピューティング・デバイス１０００に直接的に接続された権限を与えられたスタッフの制御によってプログラムされ得る、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）を含む。この実施形態では、コンピューティング・デバイス１０００は、イネーブル更新スイッチ１００４を備える。イネーブル更新スイッチ１００４は、オン位置と、オフ位置とを含む。イネーブル更新スイッチ１００４のオン位置は、コンピューティング・デバイス１０００から受け取ったデータ・ファイルのためのメモリのセグメントについての、書き込みモジュール１１１２のハードウェア回路のプログラミングを可能にする。加えて、イネーブル更新スイッチ１００４のオン位置は、コンピューティング・デバイス１０００が、データを第１のコンピュータ１３００に送ることを防止する。対照的に、イネーブル更新スイッチ１００４のオフ位置は、コンピューティング・デバイス１０００が、第１のコンピュータ１３００上で動作するソフトウェアにデータを送ることを許可する。イネーブル更新スイッチ１００４のオフ位置は、書き込みモジュール１１１２のハードウェア回路に対する権限なしの変更を防止する。コンピューティング・デバイス１０００及びコンピュータ１３００は、上で説明された追加の保護スイッチ及び保護ソフトウェアも利用することができる。
【００３２】
また別の実施形態では、図６は、ソフトウェア・ソリューションとともに既存のアーキテクチャを利用するコンピューティング・デバイスに適合された、本発明を示している。ソフトウェア・ソリューションは、悪意ある実行可能コンピュータ・コードの影響を受けやすいことがあるが、それは、重要なデータ・ファイルへのアクセスを制限すること、第１のコンピュータへのプログラム実行アクセスを制限すること、及び第２のコンピュータからのいかなる入力にもプログラム制御を与えないようにすることを含む、上で説明されたハードウェア・ソリューションの有益性のいくつかを提供することができる。この実施形態では、第１のコンピュータ１５００は、知られた通信インターフェース、例えば、ＵＳＢ、ｅＳＡＴＡ、ＷｉＦｉ、又はイーサネット（登録商標）を利用して、第２のコンピュータ１６００に接続される。第１のコンピュータ１５００及び第２のコンピュータ１６００は、当技術分野において知られたコンピュータ・アーキテクチャ、例えば、ｘ８６、ＡＲＭ、及びＰｏｗｅｒＰＣを利用する。そのため、第１のコンピュータ１５００及び第２のコンピュータ１６００は、コンピュータ実行可能コードを実行するためのオペレーティング・システムを含む。重要なファイル及びシステムは、第１のコンピュータ１５００上に存在し、一方、第２のコンピュータ１６００は、インターネットに接続するために使
用される。この設計は、第１のコンピュータ１５００のソフトウェアが、第１のコンピュータ１５００のハッキングのリスクを低減する方法で、第２のコンピュータ１６００と対話することを可能にする。第２のコンピュータ１６００によってインターネットから受け取られることがあるマルウェアは、第１のコンピュータ１５００上で動作するソフトウェアによって、第１のコンピュータ１５００上の実行可能コードのポイントに達することを阻止される。
【００３３】
第１のコンピュータ１５００は、第１のコンピュータ１５００上で動作する常駐ソフトウェアによって生成された、仮想パーティション１５１０を備える。仮想パーティション１５１０は、第１のコンピュータ１５００のコンピューティング・リソース（すなわち、ＣＰＵ及びストレージ）のいくつかを利用することができるが、仮想パーティション１５１０は、当技術分野において知られた技法、例えば、ソフトウェア「サンドボックス」を使用して、第１のコンピュータ１５００のオペレーティング・システムにアクセスすることから隔離される。結果として、仮想パーティション１５１０は、仮想パーティション１５１０が、第２のコンピュータ１６００の仮想パーティション１６０６から受け取った悪意あるコンピュータ実行可能コードによって悪影響を及ぼされた場合に、第１のコンピュータ１５００のオペレーティング・システムに悪影響を及ぼすことを制限される。さらに、仮想パーティション１５１０は、第１のコンピュータ１５００に直接的に接続された入力デバイス、及び第２のコンピュータ１６００の仮想パーティション１６０６からのデータだけにアクセスするように制限される。結果として、仮想パーティション１５１０は、ネットワーク上でリモート端末に接続することができる、第１のコンピュータ１５００のコンピューティング・リソースにアクセスすることを制限される。
【００３４】
この実施形態では、第１のコンピュータ１５００のオペレーティング・システムは、第１のコンピュータ１５００のメモリの一部を、仮想パーティション１５１０に割り当てる。仮想パーティション１５１０のオペレーティング・システム１５０２は、仮想パーティション１５１０のプログラム・コード用アドレス・ブロック１５０４に配置されたプログラム・コードだけを実行するようにプログラムされる。第２のコンピュータ１６００の仮想パーティション１６０６から受け取られたすべてのデータは、第２のパーティション・データ用アドレス・ブロック１５０８に記憶される。最後に、仮想パーティション１５１０の重要なデータ・ファイルは、第１のパーティション・データ用アドレス・ブロック１５０６内に記憶される。この設計では、第１のコンピュータ１５００の重要なデータ・ファイルは、第２のコンピュータ１６００内に配置されることがあるマルウェアによるアクセスから保護される。仮想パーティション１５１０は、図４を参照して上で詳細に説明された方法を使用して、第１のコンピュータ１５００上に記憶されたデータ・ファイルにアクセスするように、第１のコンピュータ１５００のオペレーティング・システムに要求することができる。第１のコンピュータ１５００のオペレーティング・システムは、仮想パーティション１５１０に割り当てられたメモリのアドレス範囲全体にアクセスすることができる。しかしながら、第２のコンピュータ１６００から読み取られたいかなるデータも、第１のコンピュータ１５００の第２のパーティション・データ用アドレス・ブロック１５０８内に記憶され、第１のコンピュータ１５００のオペレーティング・システムは、第２のパーティション・データ用アドレス・ブロック１５０８上に記憶されたデータ・ファイルを実行することを制限されるので、第１のコンピュータ１５００は、第２のコンピュータ１６００から転送されたいかなる悪意ある実行可能コードも実行しない。
【００３５】
第２のコンピュータ１６００は、第２のコンピュータ１６００上で動作する常駐ソフトウェアによって生成された、仮想パーティション１６０６を備える。この実施形態では、第２のコンピュータ１６００は、ネットワークを通して、リモート端末に接続される。仮想パーティション１６０６は、第２のコンピュータ１６００のコンピューティング・リソース（すなわち、ＣＰＵ及びストレージ）のいくつかを利用することができる。第２のコ
ンピュータ１６００のオペレーティング・システムは、第２のコンピュータ１６００のメモリの一部を、仮想パーティション１６０６に割り当てる。さらに、第２のコンピュータ１６００のオペレーティング・システムは、仮想パーティション１６０６が、ネットワークを通してリモート端末と通信するためのリソースにアクセスすることを可能にする。仮想パーティション１６０６は、オペレーティング・システム１６０２を備え、それは、第２のコンピュータ１６００のオペレーティング・システムによって仮想パーティション１６０６に割り当てられた、プログラム・コード／データ用アドレス・ブロック１６０４のアドレス範囲全体にアクセスし、実行することができる。仮想パーティション１５１０のオペレーティング・システム１５０２は、プログラム・コード／データ用アドレス・ブロック１６０４のアドレス範囲全体から、プル・コマンドを使用して、データを読み取るようにプログラムされる。しかしながら、オペレーティング・システム１５０２は、ソフトウェア制限によって、第２のコンピュータ１６００の仮想パーティション１６０６によって、それにプッシュされたいかなるデータ又は他のファイルも受け入れることはできない。第２のコンピュータ１６００内のソフトウェアは、第１のコンピュータ１５００によって読み取られるデータを、オペレーティング・システム１５０２によって必要とされる形式でフォーマットする。第２のコンピュータ１６００は、インターネット・ハッカによって侵入され得る。マルウェアが、第１のコンピュータ１５００に提供されるデータのフォーマットを改変した場合、オペレーティング・システム１５０２は、不適切にフォーマットされたデータを受け入れない。加えて、ソフトウェアは、第１のコンピュータが第２のコンピュータからデータを獲得するための、図４を参照して上で詳細に説明された方法を利用することができる。
【００３６】
図６で開示された実施形態は、第１のコンピュータのプログラム及びデータを、悪意あるコンピュータ実行可能コードから保護するために、仮想環境を利用するが、開示された技法（すなわち、重要なデータ・ファイルへのアクセスを制限し、第１のコンピュータへのプログラム実行アクセスを制限し、第２のコンピュータからのいかなる入力にもプログラム制御を与えないようにするソフトウェア）は、仮想環境を使用せずに、第１及び第２のコンピュータのオペレーティング・システムに直接的に適用されてよい。いずれのケースでも、そのような実施形態は、ハッキングのリスクを低減することができるが、ソフトウェア保護ばかりでなくハードウェアも利用することができる、好適な実施形態における完全に統合されたシステムによって与えられる、より高度な保護を提供することはできない。
【００３７】
本発明は、主に好適な実施形態を参照して説明され、その説明は、本発明の完全な開示を行うことを目的として、かなり詳細に行われたが、説明された好適な実施形態及び他の実施形態は、例示的なものにすぎず、限定的であること、又は本発明のすべての態様の網羅的な列挙を表すことは意図されていない。さらに、本発明の主旨及び原理から逸脱することなく、数々の変更がそのような詳細に施されてよいことが、当業者には明らかであろう。本発明は、それの必須の特性から逸脱することなく、他の形態でも具体化されることが可能であることを理解されたい。
【図１】
0006695885.tif 000002
【図２】
0006695885.tif 000003
【図３】
0006695885.tif 000004
【図４】
0006695885.tif 000005
【図５】
0006695885.tif 000006
【図６】
0006695885.tif 000007