JP7027664B2 - ハッキング耐性のあるコンピュータ設計 - Google Patents

ハッキング耐性のあるコンピュータ設計 Download PDF

Info

Publication number
JP7027664B2
JP7027664B2 JP2017540073A JP2017540073A JP7027664B2 JP 7027664 B2 JP7027664 B2 JP 7027664B2 JP 2017540073 A JP2017540073 A JP 2017540073A JP 2017540073 A JP2017540073 A JP 2017540073A JP 7027664 B2 JP7027664 B2 JP 7027664B2
Authority
JP
Japan
Prior art keywords
partition
computer
data
memory
cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017540073A
Other languages
English (en)
Other versions
JP2020508499A (ja
Inventor
エヌ. ニューマン、フランク
ニューマン、ダン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Pathguard LLC
Original Assignee
Pathguard LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Pathguard LLC filed Critical Pathguard LLC
Publication of JP2020508499A publication Critical patent/JP2020508499A/ja
Application granted granted Critical
Publication of JP7027664B2 publication Critical patent/JP7027664B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/76Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

ハッキング耐性のあるコンピューティング・デバイスを実施するためのコンピュータ・アーキテクチャが、開示される。
コンピュータに侵入するための一般的な方法は、インターネット又は他のネットワーク接続を通して、悪意のあるコンピュータ実行可能コード(マルウェア)をコンピュータに入れることによる。そのようなハッキングは、大きな脅威になっており、ハッキングの重大な事例が、広く報告されている。そのようなハッキングを阻止するための広く普及している手法は、マルウェアを識別し、無効化又は除去するためのソフトウェアに依存している。しかしながら、ハッカは、ますます巧妙になっており、一般に行われている保護は、十分ではない。
したがって、当技術分野には、ハードウェア手法を利用するハッキング耐性のあるコンピュータ・システム・アーキテクチャに対する必要性が存在する。そのようなハードウェア手法は、様々なアプリケーションのために様々なコンピュータから利用可能である。例えば、本明細書で開示されるようなハードウェア手法を使用する銀行、企業、政府機関、又は個人は、それらのコンピュータの制御権を握って、コンピュータ上に記憶された機密データ、個人情報、又はパスワードを盗み、又は改ざんしようと試みることがあるハッカからかなりよく保護される。本明細書で開示されるハードウェア手法は、現在のソリューションでは可能でない程度まで、ハッカを防御する。
ハッキング耐性のあるコンピューティング・デバイスを実施するためのコンピュータ・システム・アーキテクチャが、開示される。コンピュータ・システム・アーキテクチャは、インターネットから受け取った悪意あるコンピュータ実行可能コードが、重要なデータ・ファイルにアクセスすること、又は悪影響を及ぼすことを、重要なデータ・ファイルのインターネットへの直接アクセスをハードウェア的に制限することによって防止する。メインフレーム・コンピュータ、パーソナル・コンピュータ、スマートフォン、又はネットワーク通信に適した他の任意のコンピューティング・デバイスとすることができる、コンピューティング・デバイスは、第1のパーティションと、第2のパーティションとを備える。第2のパーティションは、インターネットなどのネットワーク上で通信することができる。対照的に、第1のパーティションは、第2のパーティションと、又は第1のパーティションに直接的に接続された入力/出力デバイスと直接的に通信することができる。結果として、第1のパーティションは、インターネット、及びインターネットに接続されたサーバなどの他の任意のデバイスに接続することをハードウェア的に制限される。第1のパーティションによるインターネットへのすべてのアクセスは、第1のパーティションと第2のパーティションとの間のハードウェア接続に限定され、その後、第2のパーティションが、インターネットに接続することができる。
さらに、第1のパーティションは、オペレーティング・システムを利用して、第1のパーティションのメモリ・アドレスをセクションに区分する、ハードウェア回路を含む。コンピュータ実行可能コード及び関連する非常に重要なデータを含む、プログラム・コードのためのメモリ・アドレッシングは、区分され、改変からハードウェア的に保護される。この手法は、第1のパーティション内の別個のメモリ・ユニットを使用することによって
も、達成され得る。重要なデータ・ファイルを保護するために、第2のパーティションは、第1のパーティションのメモリ・アドレッシングから読み取る、又は第1のパーティションのメモリ・アドレッシングに書き込むことを、ハードウェア的に制限される。第2のパーティションのデータは、第1のパーティションのオペレーティング・システムによって実行される「プル」コマンドを通して、第1のパーティションに転送される。さらに、第2のパーティションは、第1のパーティションにデータを「プッシュ」すること、又は「プル」コマンドを送るように第1のパーティションを制御することはできない。第1のパーティションによって第2のパーティションからプルされるすべてのデータは、ハードウェア設計によって、第2のパーティションから読み取られたデータ・ファイル専用の第1のパーティションのメモリ・セクション内に記憶される。さらに、第1のパーティションは、ハードウェア制限によって、第2のパーティションから読み取られたデータ・ファイルが実行されることを防止する。結果として、第1のパーティション上に記憶された重要なプログラム及び重要なデータ・ファイルは、第2のパーティションに悪影響を及ぼすインターネット又は他の任意のソースからの悪意あるコードから保護される。
第1の態様は、第1のパーティションであって、
第1のCPUと、
第1のメモリ・モジュールであって、
プログラム・コード用の少なくとも1つのメモリ・アドレス範囲であって、前記プログラム・コードが、コンピュータ実行可能コードを含み、プログラム・コード用の前記少なくとも1つのメモリ・アドレス範囲が、ハードウェア回路によって改変から保護されるように構成される、プログラム・コード用の少なくとも1つのメモリ・アドレス範囲と、
第2のパーティションから読み取られたデータを含む、他のデータ用の少なくとも1つのメモリ・アドレス範囲と
を備える第1のメモリ・モジュールと
からなり、
前記第1のCPUが、プログラム・コード用の前記メモリ・アドレス範囲内の前記コンピュータ実行可能コードだけを実行するようにハードウェア的に構成される、
第1のパーティションと、
第2のパーティションであって、
第2のCPUと、
第2のメモリ・モジュールと、
ネットワークに結合するように構成された少なくとも1つの通信モジュールと
からなる第2のパーティションと
からなり、
前記第1のCPUが、前記第2のCPU及び前記第2のメモリ・モジュールにアクセスすることができ、
前記第2のCPUが、前記第1のCPU又は前記第1のメモリ・モジュールにアクセスすることを制限される、
コンピュータ・システムを要旨とする。
第2の態様は、第1の態様のコンピュータ・システムにおいて、メモリ・アドレッシング構造が、
プログラム・コード用の前記少なくとも1つのメモリ・アドレス範囲のための第1のメモリ・ユニットと、
他のデータ用の前記少なくとも1つのメモリ・アドレス範囲のための第2のメモリ・ユニットと
からなることを要旨とする。
第3の態様は、第1の態様のコンピュータ・システムにおいて、プログラム・コード用の前記メモリ・アドレッシング構造をマッピングする前記ハードウェア回路が、少なくとも1つのフィールド・プログラマブル・ゲート・アレイからなる、ことを要旨とする。
第4の態様は、第1の態様のコンピュータ・システムにおいて、他のデータ用の前記少なくとも1つのメモリ・アドレス範囲が、
前記第2のパーティションから読み取られたデータ用の少なくとも1つのメモリ・アドレス範囲と、
他の第1のパーティション・データ用の少なくとも1つのメモリ・アドレス範囲と
を備えることを要旨とする。
第5の態様は、第1の態様のコンピュータ・システムにおいて、前記メモリ・アドレッシング構造が、
プログラム・コード用の前記少なくとも1つのメモリ・アドレス範囲のための第1のメモリ・ユニットと、
前記第2のパーティションから読み取られたデータ用の第2のメモリ・ユニットと、
他の第1のパーティション・データ用の第3のメモリ・ユニットと
からなることを要旨とする。
第6の態様は、第1の態様のコンピュータ・システムにおいて、オン又はオフにすることができる少なくとも1つの外部物理スイッチを備え、前記外部物理スイッチがオンのときだけ、前記第1のCPUが、プログラム・コード用の前記少なくとも1つのアドレス範囲内に記憶されたデータを変更することができることを要旨とする。
第7の態様は、第1の態様のコンピュータ・システムにおいて、オン又はオフにすることができる少なくとも1つの外部物理スイッチを備え、
前記外部物理スイッチがオンのときだけ、前記第1のCPUが、プログラム・コード用の前記少なくとも1つのアドレス範囲内に記憶されたデータを変更することができ、
前記少なくとも1つの外部物理スイッチがオンの間、前記第1のCPUが前記第2のCPU及び前記第2のメモリ・モジュールにアクセスする能力が、無効化されることを要旨とする。
第8の態様は、第1の態様のコンピュータ・システムにおいて、前記第1のパーティションに直接的に接続された外部デバイスを利用するハードウェア機能が、ユーザが、前記第2のパーティションの1つ又は複数の入力/出力デバイスの制御を行うように、前記第1のCPUに命令することを可能にするように構成されることを要旨とする。
第9の態様は、第1の態様のコンピュータ・システムにおいて、プログラム・コード用の前記少なくとも1つのアドレス範囲が、オペレーティング・システムを含むことを要旨とする。
第10の態様は、第1の態様のコンピュータ・システムにおいて、少なくとも1つのデータ・ストアを備えることを要旨とする。
第11の態様は、第1の態様のコンピュータ・システムにおいて、複数の入力/出力デバイスが、少なくとも1つのI/Oモジュールに結合されることを要旨とする。
第12の態様は、第1の態様のコンピュータ・システムにおいて、前記第1のパーティション及び第2のパーティションからなるチップをさらに備えることを要旨とする。
第13の態様は、第1の態様のコンピュータ・システムにおいて、前記第1のパーティションからなる第1のチップと、前記第2のパーティションからなる第2のチップとをさらに備えることを要旨とする。
第14の態様は、第1の態様のコンピュータ・システムにおいて、前記第1のCPUが前記第2のメモリ・モジュール及び前記第2のCPUにアクセスする前記能力が、ハードウェア回路によって実施され、
前記第1のCPUが、前記第2のパーティションから他のデータ用の前記少なくとも1つのメモリ・アドレス範囲内だけに読み取ることができ、
前記第1のCPU又は前記第1のメモリ・モジュールへのアクセスについての前記第2のCPUに対する制限が、ハードウェア回路によって実施されることを要旨とする。
第15の態様は、第1の態様のコンピュータ・システムにおいて、バスをさらに備え、
前記第1のパーティションが、前記バスを通して、前記第2のパーティションに相互接続され、
前記第1のパーティションが、前記バスを通して、プル・コマンドを実行して、データを前記第2のパーティションから読み取り、前記データを前記第2のパーティションから読み取られたデータに適用可能な前記少なくとも1つのメモリ・アドレス範囲だけに書き込むように構成され、
前記第1のパーティションが、前記バスを通して、プッシュ・コマンドを実行して、データを前記第2のパーティションに書き込むように構成されることを要旨とする。
第16の態様は、第1の態様のコンピュータ・システムにおいて、ハードウェア・ユニットを備え、
前記ユニットが、インターネットを通して、1つ又は複数の事前に定められたサービスだけに接続されて、新しい重要なアプリケーションをダウンロードするように、又は既存の重要なアプリケーションを更新するように構成され、
前記ユニットが、前記第1のパーティションに接続するように、又は更新データを不揮発性メモリ上に書き込むように構成され、
前記第1のパーティションが、ハードウェア・スイッチがオンのときだけ、前記ユニット又は前記不揮発性メモリからデータを受け入れるように構成されることを要旨とする。
第17の態様は、第1の態様のコンピュータ・システムにおいて、前記システムに組み込まれたハードウェア・ユニットを備え、
前記ユニットが、インターネットを通して、1つ又は複数の事前に定められたサービスだけに接続するように構成された、固定されたハードウェア又はファームウェアを備え、
前記第1のパーティションが、ハードウェア・スイッチがオンのときだけ、前記ユニットからデータを受け入れるように構成されることを要旨とする。
第18の態様は、第1の態様のコンピュータ・システムにおいて、インターネットなどのネットワーク上で、又は限定することなく、Bluetooth及びRFID送信を含む、ローカル無線通信を通して、通信することができるデバイスに接続され、前記デバイス又は前記コンピュータ・システムが、流通前に、製造業者によって、保護されたメモリ内に1つ又は複数のセキュリティ・キーを入れて準備されることを要旨とする。
第19の態様は、第1の態様のコンピュータ・システムにおいて、2つ以上の第1のパーティション、又は2つ以上の第2のパーティション、又は2つ以上の第1及び第2のパーティションを備えるように構成され、
各第2のパーティションの前記CPUが、各第1のパーティションの前記CPU又はメモリ・モジュールにアクセスすることをハードウェア的に制限されることを要旨とする。
第20の態様は、第1の態様のコンピュータ・システムにおいて、前記第1のパーティションが、1つ又は複数の仮想サブパーティションからなり、
前記第2のパーティションが、1つ又は複数の仮想サブパーティションからなることを要旨とする。
第21の態様は、第1の仮想パーティション・ファミリであって、
少なくとも1つのパーティションと、
少なくとも1つのCPUと、
少なくとも1つのメモリ・モジュールであって、
プログラム・コード用の少なくとも1つのアドレス範囲であって、前記プログラム・コードが、コンピュータ実行可能コードを含み、プログラム・コード用の前記少なくとも1つのアドレス範囲が、通常の動作状態では、読み取り専用として構成される、プログラム・コード用の少なくとも1つのアドレス範囲と、
第2のパーティションから読み取られたデータを含む、他のデータ用の少なくとも1つのメモリ・アドレス範囲と
を備える少なくとも1つのメモリ・モジュールと
からなり、
前記第1の仮想パーティション・ファミリの前記少なくとも1つのCPUが、プログラム・コード用の前記少なくとも1つのアドレス範囲内に記憶された前記コンピュータ実行可能コードだけを実行するように構成される、
第1の仮想パーティション・ファミリと、
第2の仮想パーティション・ファミリであって、
少なくとも1つのパーティションと、
少なくとも1つのCPUと、
少なくとも1つのメモリ・モジュールと、
ネットワークに結合することが可能な少なくとも1つの通信モジュールと
からなる第2の仮想パーティション・ファミリと
からなり、
前記第1の仮想パーティション・ファミリの前記少なくとも1つのCPUが、前記第2の仮想パーティション・ファミリの前記少なくとも1つのCPU及び前記少なくとも1つのメモリ・モジュールにアクセスすることができるように構成され、
前記第2の仮想パーティション・ファミリの前記少なくとも1つのCPUが、前記第1の仮想パーティション・ファミリの前記少なくとも1つのCPU又は前記第1の仮想パーティション・ファミリの前記少なくとも1つのメモリ・モジュールにアクセスすることができないように構成される、
コンピュータ・システムを要旨とする。
第22の態様は、第21の態様のコンピュータ・システムにおいて、前記コンピュータに接続された少なくとも1つのデバイスを利用し、オン又はオフにすることができるハードウェア機能を備え、前記ハードウェア・デバイスがオンでない限り、前記第1の仮想パーティション・ファミリの前記少なくとも1つのCPUが、プログラム・コード用の前記第1の仮想パーティション・ファミリ・アドレス範囲内のデータを変更することはできないことを要旨とする。
第23の態様は、第21の態様のコンピュータ・システムにおいて、前記コンピュータに接続された少なくとも1つのデバイスからなり、オン位置及びオフ位置を含むハードウェア機能
を備え、
前記ハードウェア・デバイスが前記オン位置にない限り、前記第1の仮想パーティション・ファミリの前記少なくとも1つのCPUが、プログラム・コード用の前記第1の仮想パーティション・ファミリ・アドレス範囲内のデータを変更することはできず、
前記少なくとも1つのハードウェア・デバイスが前記オン位置にある間、前記第1の仮想パーティション・ファミリの前記少なくとも1つのCPUが前記第2の仮想パーティション・ファミリにアクセスする能力が、無効化されることを要旨とする。
第24の態様は、第21の態様のコンピュータ・システムにおいて、ハードウェア・デバイスが、仮想サーバをホストするサーバ・バンクと、インターネットなどのネットワークに接続するために使用されるルータとの間に配置され、
前記第1のパーティションによって開始された場合、又はハードウェア・スイッチによって許可された場合を除いて、コード又はデータが前記第1のパーティションに書き込まれ得ないように、前記デバイスが、前記パーティション間、又は前記パーティションに接続された外部ユニットもしくはコンピュータ間のすべてのトラフィックを管理し、
前記デバイス自体が、それの構成スイッチがオン位置にあるときだけ、トラフィックをそれの3つの別個の進路(読み取り及び書き込み、読み取り専用、ならびに接続なし/要求の拒否)に向かわせるように構成されてよいことを要旨とする。
第25の態様は、第21の態様のコンピュータ・システムにおいて、前記コンピュータに接続された少なくとも1つのハードウェア・デバイスを備え、前記少なくとも1つのハードウェア・デバイスは、オン又はオフにすることができ、前記少なくとも1つのハードウェア・デバイスがオンでない限り、前記第1の仮想パーティション・ファミリの仮想構成が、変更され得ないことを要旨とする。
第26の態様は、第1のコンピュータであって、
CPUと、
メモリ・モジュールであって、
プログラム・コード用の少なくとも1つのメモリ・アドレス範囲であって、前記プログラム・コードが、コンピュータ実行可能コードを含み、プログラム・コード用の前記少なくとも1つのメモリ・アドレス範囲が、ハードウェア回路によって改変から保護されるように構成される、プログラム・コード用の少なくとも1つのメモリ・アドレス範囲と、
第2のコンピュータから読み取られたデータを含む、他のデータ用の少なくとも1つのメモリ・アドレス範囲と
を備えるメモリ・モジュールと
からなり、
前記少なくとも1つのCPUが、プログラム・コード用の前記メモリ・アドレス範囲内の前記コンピュータ実行可能コードだけを実行するようにハードウェア的に構成される、
第1のコンピュータと、
第2のコンピュータであって、
CPUと、
ネットワークに結合するように構成された少なくとも1つの通信モジュールと
からなる第2のコンピュータと、
バスと
からなり、
前記第1のコンピュータと前記第2のコンピュータとが、前記バスを通してだけ相互接続され、
前記第1のコンピュータが、前記バスを通して、プル・コマンドを実行して、データを前記第2のコンピュータから読み取り、前記データを前記第2のコンピュータから読み取られたデータに適用可能な前記少なくとも1つのメモリ・アドレス範囲だけに書き込むように、前記バスが、構成され、
前記第1のコンピュータが、前記バスを通して、プッシュ・コマンドを実行して、データを前記第2のコンピュータに送るように、前記バスが、構成され、
前記バスが、前記第2のコンピュータからのプッシュ・コマンド、又は前記第2のコンピュータからのプル・コマンドを受け入れることはできず、
前記バスのハードウェア回路が、前記第2のコンピュータが、前記第1のコンピュータの前記CPU又は前記メモリ・モジュールにアクセスすることを許可しない、
コンピュータ・システムを要旨とする。
第27の態様は、第26の態様のコンピュータ・システムにおいて、メモリ・アドレッシング構造が、
プログラム・コード用の前記少なくとも1つのメモリ・アドレス範囲のための第1のメモリ・ユニットと、
他のデータ用の前記少なくとも1つのメモリ・アドレス範囲のための第2のメモリ・ユニットと
からなることを要旨とする。
第28の態様は、第26の態様のコンピュータ・システムにおいて、プログラム・コード用の前記メモリ・アドレッシング構造をマッピングする前記ハードウェア回路が、少なくとも1つのフィールド・プログラマブル・ゲート・アレイからなることを要旨とする。
第29の態様は、第26の態様のコンピュータ・システムにおいて、他のデータ用の前記少なくとも1つのメモリ・アドレス範囲が、
前記第2のコンピュータから読み取られたデータ用の少なくとも1つのメモリ・アドレス範囲と、
他の第1のコンピュータ・データ用の少なくとも1つのメモリ・アドレス範囲と
を備えることを要旨とする。
第30の態様は、第26の態様のコンピュータ・システムにおいて、前記メモリ・アドレッシング構造が、
プログラム・コード用の前記少なくとも1つのメモリ・アドレス範囲のための第1のメモリ・ユニットと、
前記第2のコンピュータから読み取られたデータ用の第2のメモリ・ユニットと、
他の第1のコンピュータ・データ用の第3のメモリ・ユニットと
からなることを要旨とする。
第31の態様は、第26の態様のコンピュータ・システムにおいて、オン又はオフにすることができる少なくとも1つの外部物理スイッチを備え、前記外部物理スイッチがオンのときだけ、前記第1のコンピュータの前記CPUが、プログラム・コード用の前記少なくとも1つのアドレス範囲内に記憶されたデータを変更することができることを要旨とする。
第32の態様は、第26の態様のコンピュータ・システムにおいて、プログラム・コード用の前記少なくとも1つのアドレス範囲が、オペレーティング・システムを含むことを要旨とする。
第33の態様は、第26の態様のコンピュータ・システムにおいて、少なくとも1つのデータ・ストアを備えることを要旨とする。
第34の態様は、第26の態様のコンピュータ・システムにおいて、前記第1のコンピュータが、少なくとも1つの入力/出力モジュールを備え、
複数の入力/出力デバイスが、少なくとも1つのI/Oモジュールに結合されることを要旨とする。
第35の態様は、2つのコンピュータを接続するように設計されたバスであって、
第1のコンピュータが、前記バスを通して、プル・コマンドを実行して、データを第2のコンピュータから読み取り、それを前記第1のコンピュータに配送するように、前記バスが、構成され、
前記第1のコンピュータが、前記バスを通して、プッシュ・コマンドを実行して、データを前記第2のコンピュータに送るように、前記バスが、構成され、
前記バスが、前記第2のコンピュータからのプッシュ・コマンド、又は前記第2のコンピュータからのプル・コマンドを許可せず、
前記バスのハードウェア回路が、前記第2のコンピュータが、前記第1のコンピュータのCPU又はメモリ・モジュールにアクセスすることを許可しない、
バスを要旨とする。
詳細な説明は、添付の図を参照する。
例示的なネットワーク図。 本明細書で提示される様々な実施形態による、ハッキング耐性のあるコンピューティング・デバイスを実施するためのコンピュータ・システム・アーキテクチャを示すブロック図。 本明細書で提示される様々な実施形態による、ハッキング耐性のあるコンピューティング・デバイスを実施するためのコンピュータ・システム・アーキテクチャを示すブロック図。 本明細書で提示される様々な実施形態による、コンピュータ・システム・アーキテクチャを示すブロック図。 好適な実施形態による、コンピューティング・デバイスのメモリ・アドレッシングを示す図。 好適な実施形態による、コンピューティング・デバイスのメモリ・アドレッシングを示す図。 好適な実施形態による方法を示すフローチャート。 既存のコンピュータ・アーキテクチャを利用するコンピューティング・デバイスとともに使用するために適合させられた、実施形態を示すブロック図。 既存のコンピュータ・アーキテクチャを利用するコンピューティング・デバイスとともに使用するために適合させられた、ソフトウェア実施形態を示すブロック図。 既存のコンピュータ・アーキテクチャを利用するコンピューティング・デバイスとともに使用するために適合させられた、ソフトウェア実施形態を示すブロック図。 コンピューティング・デバイス上で仮想パーティションを実施する実施形態を示すブロック図。
他の目的、特徴、及び特性、ならびに構造及び部分の組み合わせの関連要素の動作及び機能の方法は、添付の図面を参照して以下の詳細な説明を検討することでより明らかになるであろう。添付の図面のすべては、本明細書の一部を形成する。
詳細で説明的な実施形態が、本明細書で開示される。しかしながら、開示される原理による技法、方法、工程、システム、及び動作構造は、多種多様な形態及び様式で具体化さ
れてよく、それらのいくつかは、開示された実施形態におけるそれらと全く異なってよい。結果として、本明細書で開示される特定の構造的及び機能的詳細は、代表的なものにすぎないが、それでも、その点において、それらは、開示の目的で最良の実施形態を提供すると見なされる。
文脈が明らかに別のことを要求していない限り、本説明及び特許請求の範囲のどこにおいても、「comprise(含む/備える)」及び「comprising(含む/備える)」などの語は、排他的又は網羅的ではなく、包含的な意味に、すなわち、「including, but not limited to(限定することなく、~を含む)」の意味に解釈されるべきである。本明細書で使用される場合、「connected(接続される)」、「coupled(結合される)」という用語、又はそれらのいずれの変化形も、2つ以上の要素間の、直接的又は間接的な、電子的又は非電子的な、任意の接続又は結合を意味し、要素間の接続の結合は、物理的、論理的、又はそれらの組み合わせとすることができる。加えて、「herein(本明細書で)」、「above(上で)」、「below(下で)」という語、及び同様の趣旨の語は、本明細書で使用される場合、本明細書のいずれか特定の部分ではなく、本明細書を全体として参照するものとする。文脈が許す場合、単数形又は複数形で使用される「発明を実施するための形態」内の語は、それぞれ、複数又は単数を含んでもよい。2つ以上の項目からなるリストに関する「or(又は)」という語は、この語についての以下の解釈のすべて、すなわち、リスト内の項目のいずれか、リスト内の項目のすべて、及びリスト内の項目の任意の組み合わせを包含する。以下に、図を参照する、詳細な説明を提示する。
最初に図1を参照すると、ハッキング耐性のあるコンピューティング・デバイスの例示的なネットワーク図が、示されている。コンピューティング・デバイス300は、任意の大規模商用又は政府コンピュータ又は「メインフレーム」、タンデムで動作する1組のリンクされたコンピュータ、限定することなく、モバイル電話、セルラ電話、スマート電話、ラップトップ・コンピュータ、ネットブック、パーソナル・デジタル・アシスタント(PDA)、家電、住宅用もしくは商用建物コントローラ、又はネットワーク通信に適した他の任意のコンピューティング・デバイスを含む、単一のパーソナル・コンピュータ(PC)又はモバイル通信デバイスを含むことができる。コンピューティング・デバイス300は、第1のパーティション100と、第2のパーティション200とを備える。第1のパーティション100は、キーボード、データ記憶デバイス、及びプリンタなどの、入力/出力デバイスに直接的に相互接続される。大規模使用のための実施形態では、第1のパーティションは、コンピューティング・デバイスのユーザの制御下にある物理的ロケーション内に存在する、より小型のコンピュータ又はPCに直接的な配線によって接続され得る。この実施形態では、ユーザは、より小型のコンピュータ又はPCが、ワイヤ、ケーブル、又はWi-Fiを含む任意の形態のインターネット接続を行えないようにすることができる。第2のパーティション200は、ネットワーク500上で端末600と通信する。図2Aを参照して以下で詳細に説明されるように、第1のパーティション100は、バスを使用して、第2のパーティション200と直接的に通信することができるが、第1のパーティション100は、ネットワーク500と通信することを、ハードウェア的に制限される。好適な実施形態では、第1のパーティションのCPUは、第2のパーティションのメモリ及び第2のパーティションのCPUに直接的にアクセスすることができるが、第2のパーティションのCPUは、第1のパーティションのメモリ及び第1のパーティションのCPUにアクセスすることを、ハードウェア的に制限される。例えば、第2のパーティションのCPUは、バスのインターフェースに結合される。インターフェースは、第1のパーティションのCPUを第2のパーティションのCPU及びメモリに相互接続するための物理的ワイヤを備える、物理的ポートである。しかしながら、いくつかの実施形態では、インターフェースは、第2のパーティションのCPUが、第1のパーティションのメモリ又は第1のパーティションのCPUにアクセスするための、物理的ワイヤを含まない
ネットワーク500は、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、セルラ・ネットワーク、衛星ネットワーク、それらの組み合わせ、又はコンピューティング・デバイス300へのデータの転送、及び/もしくはコンピューティング・デバイス300からのデータの受信を可能にする他の任意のネットワークとすることができる。ネットワーク500を通してコンピューティング・デバイス300に送信されたデータ、又はコンピューティング・デバイス300又は端末600に送信されたデータは、標準的な電気通信プロトコル又は標準的なネットワーキング・プロトコルを利用して、送信及び/又は受信され得る。好適な実施形態では、システムは、伝送制御プロトコル/インターネット・プロトコル(TCP/IP)を利用し、ネットワーク500は、インターネット及び/又はイントラネットである。データを送信及び/又は受信するためのプロトコルの他の例は、限定することなく、ボイス・オーバ・インターネット(VOIP)プロトコル、ショート・メッセージ・サービス(SMS)、Bluetooth無線送信、及び移動体通信用グローバルシステム(GSM)を含む。ネットワーク500は、コンピューティング・デバイス300及び端末600の1つ又は複数のプロトコルを利用することが可能である。さらに、ネットワーク500は、他のプロトコルに変換すること、又は他のプロトコルから端末600の1つもしくは複数のプロトコルに変換することができる。いくつかの状況では、第2のパーティション200は、コンピューティング・デバイス300上に記憶された重要なデータ・ファイルにアクセスしようと、又は悪影響を及ぼそうと試みる、悪意あるコンピュータ実行可能コードにさらされる。図2A及び図3Aを参照して以下で説明されるように、好適な実施形態は、そのようなマルウェアが、第1のパーティション100の重要なデータ・ファイル及びメモリにアクセスすること、又は悪影響を及ぼすことを防止する。
ここで図2Aを参照すると、インターネットからの、及びネットワーク500を通して通信することができる他の任意のソースからの悪意あるコンピュータ実行可能コードの感染からハードウェア的に保護された、コンピューティング・デバイス300を実施するための、コンピュータ・システム・アーキテクチャを示すブロック図が、示されている。コンピューティング・デバイス300は、第1のパーティション100を備える。第1のパーティション100は、第1のパーティションのバス102に相互接続されたコンピュータ処理ユニット(CPU)104を備える。第1のパーティションのメモリ106が、第1のパーティションのバス102を通して、CPU104に相互接続される。図1を参照して上で説明されたように、第1のパーティション100は、入力/出力モジュール110を通して、1つ又は複数の入力/出力デバイスに相互接続される。好適な実施形態では、パーティション100は、データ・ストア107、108をさらに備える。重要なデータ・ファイルは、メモリ106及び/又はデータ・ストア107上に記憶される。データ・ストア108は、第1のパーティションが処理した第2のパーティション200からのデータを含む、他のデータを記憶するために、第1のパーティションによって使用される。第1のパーティション100は、コンピュータ実行可能コードを実行するためのオペレーティング・システムを含む。図3Aを参照して以下で詳細に説明されるように、CPU104は、メモリ106のプログラム・コード用アドレス範囲上に記憶されたコンピュータ実行可能コードだけを実行することができる。これは、(この実施形態によって、それ自体がマルウェアから保護された)CPU104のオペレーティング・システムによる、及びハードウェア回路による制御を通して達成される。現在のコンピュータ・システム・アーキテクチャの根本的な弱さは、インターネットを通してコンピュータに達した悪意あるコンピュータ実行可能コードに、しばしば実行制御が引き渡されることである。本実施形態は、インターネットから第2のパーティションにダウンロードされた悪意あるコンピュータ実行可能コードのいかなる実行も制限する。
コンピューティング・デバイス300は、第2のパーティション200をさらに備える。第2のパーティション200は、第2のパーティションのバス202に相互接続されたCPU204を備える。少なくとも1つのメモリ206が、第2のパーティションのバス202を通して、CPU204に相互接続される。通信モジュール210は、第2のパーティション200が、ネットワークを通して端末と通信することを可能にする。コンピュータ・システム・アーキテクチャは、少なくとも1つのデータ・ストア208をさらに含む。データ・ストア208は、重要であると見なされないデータ・ファイルの記憶用である。第2のパーティション200は、コンピュータ実行可能コードを実行するためのオペレーティング・システムを含む。図3Aを参照して以下で詳細に説明されるように、CPU204は、メモリ206のアドレス範囲全体及びデータ・ストア208からのコンピュータ実行可能コードを実行することができる。
図2Aに示されるように、第1のパーティション100は、バス302を通して、第2のパーティション200に直接的に相互接続される。バス302は、制御線304、アドレス線306、及びデータ線308を含む、複数の物理的ワイヤを備える。データ線308は、バス302を通して、パーティション間で送信される情報を運ぶ。アドレス線306は、データのアドレス、及びデータを送るアドレスを含む。最後に、制御線304は、限定することなく、転送の方向を含む、アドレス及びデータの転送を管理する。例示的な制御線は、限定することなく、読み取り、書き込み、クロック、肯定応答、及びリセットを含む。そのような実施形態では、CPU104からバス302への制御線は、単方向である。さらに、CPU204からバス302への制御線は、もっぱらデータを受け取るように構成され、それによって、CPU104がCPU204を制御することを可能にするが、CPU204は、CPU104を制御することはできない。図2Aに示されるように、メモリ106及びデータ・ストア107、108は、バス302に直接的に接続されない。したがって、CPU204は、第1のパーティション100のメモリを制御することはできない。対照的に、第2のパーティションのメモリ206及びデータ・ストア208は、バス302に接続される。好適な実施形態では、CPU104は、制御線304、アドレス線306、及びデータ線308を利用して、第2のパーティション200のメモリ206及びデータ・ストア208のアドレス範囲全体に書き込むことができる。この設計の1つの利点は、悪意あるコンピュータ実行可能コードによって悪影響を及ぼされた第2のパーティション200のオペレーティング・システム及びデータ・ファイルを、第1のパーティション100が回復できることである。加えて、CPU104は、メモリ206のアドレス範囲全体及びデータ・ストア208からデータを読み取ることができるが、CPU104による「読み取り」コマンド(プル)だけによって、それを行うことができる。CPU104からバス302への制御線は、単方向であるので、CPU104は、ハードウェア制限によって、第2のパーティション200によってそれにプッシュされたいかなるデータ又は他のファイルも受け入れることはできない。加えて、CPU204は、CPU104の制御線に接続されないので、第2のパーティション200は、いかなるデータも第1のパーティション100からプルすることはできない。さらに、第1のパーティション100のオペレーティング・システム及びサポーティング・プログラムは、CPU104が第2のパーティション200から受け入れるデータのフォーマット及び他のファイル特性を定義する。適切な予想された形式を取らないファイルを第1のパーティション100に提供しようとする、第2のパーティション200によるいずれの試みも、CPU104によって拒否される。図3Aを参照して以下で詳細に説明されるように、CPU104によって第2のパーティション200から読み取られるすべてのデータ・ファイルは、メモリ106の第2のパーティション用アドレス範囲及び/又はデータ・ストア108に書き込まれる。CPU104は、メモリ106のプログラム・コード用アドレス範囲上に記憶されたコンピュータ実行可能コードだけしか実行できないので、第1のパーティション100は、第2のパーティション200上に記憶されたいかなる悪意あるコンピュータ実行可能コードからも保護される。
図2Bは、メモリ・コントローラ410を利用して、第2のパーティションの第1のパーティションのメモリ及びデータ・ストアへのアクセスを制限する、ハードウェアの例示的なブロック図を示している。示されるように、第1のパーティション400のCPU404は、バス416を通して、第2のパーティション418のCPU422、メモリ424、及びデータ・ストア426を直接的に制御することができる。第1のパーティション400は、メモリ・コントローラ410を備える。メモリ・コントローラ410は、第1のパーティション400のメモリ406及びデータ・ストア407、408へのデータの流れ、ならびにそれらからのデータの流れを管理する。この実施形態では、メモリ・コントローラ410は、フロントエンド412と、バックエンド414とを備える。フロントエンド412は、第1のパーティションのバス402と、バス416とに結合される。フロントエンド412は、第2のパーティション418から発生したアドレスを有する、読み取り及び書き込み制御線を無視するように構成されたハードウェアである。フロントエンド412は、発生アドレスを、リード・オンリ・メモリ(ROM)又は消去可能プログラム可能リード・オンリ・メモリ(EEPROM)内に記憶されたアドレスと比較する、比較器を備える。ROM又はEEPROMは、第1のパーティション400のメモリ406及びデータ・ストア407、408にアクセスすることを制限された、デバイスのアドレスを含む。フロントエンド412は、制限されていない要求を、バックエンド414に渡す。この実施形態では、バックエンド414は、要求を、メモリ406及びデータ・ストア407、408に送信する。メモリ・コントローラ410は、別個のコンポーネントとして示されているが、それは、CPU404を有するメモリ・コントローラと統合されてもよい。
また別の実施形態では、第1のパーティションは、比較器を利用して、第2のパーティションによって伝達されたメッセージをハードウェア的に制限する。第1のパーティションは、第2のパーティションのCPUのアドレスを含む、リード・オンリ・メモリ(ROM)を含む。好適には、ROMは、再プログラム可能ではない。この実施形態では、第2のパーティションのCPUは、送信先アドレス、CPUのアドレス、及びメッセージとして送られるデータのバイトを含むメッセージ・フレームを有するメッセージを、バスを通して送る。例示的なメッセージは、情報に対するプッシュ又はプル要求である。第1のパーティションのCPU及び第1のパーティションのメモリは、比較器を含む。比較器は、バスを通して送られるメッセージの送信元のアドレスとROMとを比較する。比較器は、送信元のアドレスがROM内のアドレスと一致した場合、制御信号を送って、第1のパーティションのCPU及びメモリが、メッセージ・フレームの実行を行えないようにする。したがって、第1のパーティションのCPUは、第2のパーティションのCPUからのプッシュ又はプル・コマンドを受け入れることを、ハードウェア的に制限される。
図2Cは、バス・コントローラを利用して、第2のパーティションが第1のパーティションにアクセスすることを制限する、ハードウェアの例示的なブロック図を示している。第1のパーティションと第2のパーティションとを相互接続するために汎用バスを利用する、図2A及び図2Bに示された実施形態とは異なり、バス・コントローラ512が、バス510に結合された第1のパーティションのコンポーネントと、バス510に結合された第2のパーティションのコンポーネントとの間の、要求及びデータの流れを管理する。示されるように、第1のパーティション502のCPU504が、バス510に結合され、一方、第2のパーティションのCPU518、メモリ520、及びデータ・ストア522が、バス510に結合される。バス・コントローラ512は、少なくとも1つのメッセージ待ち行列514を備える。メッセージ待ち行列514は、第2のパーティション516に送る、第1のパーティション502からの複数のメッセージを含む。この実施形態では、バス・コントローラ512は、第1のパーティション502上に存在するコンポーネントの識別アドレスを有する、リード・オンリ・メモリ内に記憶されたルックアップ・テ
ーブルを含む。したがって、バス・コントローラ512は、比較器を利用して、バス510を通してメッセージを送るコンポーネントのアドレスを比較して、メッセージの発生元を決定することができる。第1のパーティション502から発生したことが認証されたメッセージだけが、メッセージ待ち行列514内に記憶される。バス・コントローラ512は、メッセージ待ち行列514内に待ち行列化されたメッセージを送信するように構成される。結果として、バス・コントローラ512は、第2のパーティション516のコンポーネントが、メッセージ待ち行列514にメッセージを追加することを防止するので、バス・コントローラ512のハードウェア回路は、第2のパーティション516のコンポーネントが、第1のパーティション502のコンポーネント(例えば、CPU504及びメモリ506)と通信すること、又はそれらにアクセスすることを制限する。
図2Aで説明されたコンピュータ・システム・アーキテクチャは、限定することなく、大型メインフレーム・コンピュータ、パーソナル・コンピュータ、パッド、タブレット、及びスマートフォンを含む、様々なコンピューティング・デバイスに適用され得る。さらに、コンピュータ・システム・アーキテクチャは、新しい製品に適用され得、又は既存のコンピュータ設計に適合させ得る。図2Aで説明されたコンピュータ・アーキテクチャは、1組のチップとして開示されるが、その技法は、コンピュータ・システムが、本明細書で開示される原理に従って設計されるならば、2つの別個のコンピュータ・システムを有するシステムに適用されてよい。2つの別個のコンピュータ・システムを有する実施形態では、(第1のパーティションのそれと同様の役割を有する)第1のコンピュータ・システムは、悪意あるコードから保護される重要なデータ・ファイルを記憶し、一方、(第2のパーティションのそれと同様の役割を有する)第2のコンピュータ・システムは、リモート端末と通信する。さらに、第1のコンピュータ・システムは、第2のコンピュータ・システムに直接的に接続される。
次に図3Aを参照すると、第1のパーティション及び第2のパーティションのメモリ・アドレッシングが、示されている。(図2Aに示されるメモリ106における)第1のパーティションのメモリ・アドレッシング700は、少なくとも1つのプログラム・コード用アドレス・ブロック702と、少なくとも1つの第1のパーティション・データ用アドレス・ブロック704と、少なくとも1つの第2のパーティション・データ用アドレス・ブロック706とを含む。好適な実施形態では、第1のパーティションのメモリ・アドレッシング700の各アドレス・ブロックに対するデータの書き込み及び読み取りは、使用可能なメモリ・アドレッシング空間を物理的に限定するように、第1のパーティションのCPUを設計することによって制限される。例えば、32ビット又は64ビット・アドレッシングをサポートするCPUは、コンピュータ実行可能コードを実行するためのオペレーティング・システムのアクセスを、プログラム・コード用アドレスにマッピングされたビットに限定することができる。結果として、第1のパーティション・データ用アドレス・ブロック704及び第2のパーティション・データ用アドレス・ブロック706上に配置された悪意あるコンピュータ実行可能コードは、そのようなデータ・ファイルのいくつかに、有効なコンピュータ実行可能コードであることを示すフラグが立てられていることがあっても、オペレーティング・システムによって実行されない。さらに、第1のパーティションのCPUは、第2のパーティションから読み取られたいかなるデータも、第2のパーティション・データ用アドレス・ブロック706にだけ書き込み、それは、実行のために使用され得ない。この設計は、第2のパーティション内の悪意あるコンピュータ実行可能コードが、第1のパーティションのメモリ・アドレッシング700のプログラム・コード用アドレス・ブロック702に書き込まれることを防止する。ハードウェア設計のさらなる利点は、書き込みコマンド及び読み取りコマンドのアドレス範囲が、悪意あるコンピュータ実行可能コードによって悪影響を及ぼされ得ないことであるが、その理由は、メモリ・アドレス範囲に悪影響を及ぼすためには、第1のパーティションのCPUが、物理的に変更される必要があるからである。第1のパーティションのアドレッシングを分離す
るために、3つの別個のメモリを利用することも可能であることは、当業者に明らかである。
また別の程度のハードウェア保護が、プログラム・コード用アドレス・ブロック702内のプログラムに対して実施され得る。これは、頻繁には更新されず、プログラム・コード用アドレス・ブロック702内のプログラムと関連付けられた、非常に重要なデータ・ファイルを含むことができる。プログラム・コード用アドレス・ブロック702の内容を更新するためのアクセスは、第1のパーティション100に直接的に接続されたデバイスに限定される。CPU104、バス102、及びI/Oモジュール110の組み合わせは、オプションのハードウェア・スイッチを用いて、プログラム・コード用アドレス・ブロック702の内容を変更できるようになるには、権限を与えられた人員によってスイッチをオンにする必要があるように、制御され得る。結果として、プログラム・コード用アドレス・ブロック702に対するいかなる更新も、更新を提供する直接的に接続されたデバイスにおける権限を与えられた人員によるアクセスと、スイッチをオンにする権限を与えられた人員による独立したアクションとの両方を必要とする。非常に安全なシステムのために、この設計は、権限を与えられた直接的に接続されたユーザであっても、プログラム・コード用アドレス・ブロック702内に記憶されたプログラム又は非常に重要なデータを変更しようと不適切に(不注意から、又は意図的に)試みる場合には、それを防止する、より高い程度の保護を提供する。
対照的に、第2のパーティションのCPUは、第2のパーティションのメモリ・アドレス800を対象にした読み取り及び書き込みに限定される。例示的なハードウェア制限は、第2のパーティションのCPUの物理的制御ワイヤを、第2のパーティションのメモリ・アドレス800を備える物理的メモリ・コンポーネントに制限することを含む。図3Aに示されるように、データ又はプログラム・コードは、当技術分野において知られた技法を利用して、第2のパーティションのメモリ・アドレス800のアドレス範囲全体を対象にして読み取られ得、又は書き込まれ得る。しかしながら、第2のパーティションのCPUは、第1のパーティションのメモリ・アドレスにアクセスすること、又はそれを変更することを、ハードウェア的に制限される。上で説明されたように、第2のパーティションのCPUは、メモリ・コントローラを利用して、ハードウェア的に制限され得る。メモリ・コントローラは、メモリ内に記憶された第1のパーティションのメモリにアクセスすること、又はそれを変更することを制限された、デバイスのアドレスを含む。例えば、第2のパーティションのCPUのデバイス・アドレスが、記憶され得る。結果として、メモリ・コントローラは、比較器又は当技術分野において知れた他の技法を使用して、第1のパーティションのメモリが、制限されたデバイス・アドレスからの要求に応答できないようにすることができる。この設計は、第2のパーティションのCPUが、インターネットを通してリモート端末から来た第2のパーティションに悪影響を及ぼした悪意あるコンピュータ実行可能コードを、第1のパーティションに書き込むことを防止する。さらに、第1のパーティションのCPUは、第2のパーティションのメモリ・アドレス800に直接的にアクセスすることができ、それは、第1のパーティションと第2のパーティションとを相互接続するバス上でのアクティビティによって引き起こされる遅延を回避することによって、第1のパーティションのCPUの読み取り及び書き込み性能を向上させる。第1のパーティションのCPUは、メモリ・アドレス800から読み取って、第2のパーティションから読み取られたデータに専用される第2のパーティション・データ用アドレス・ブロック706にだけ入れることができる。
図3Aに関して、アドレス範囲は、1つ又は複数のメモリ・ユニットの一部に割り当てられ得、又はメモリ・ユニットの全体を含むことができる。プログラム・コード702は、コンピュータ実行可能コードと、関連する非常に重要なデータとを含む。プログラム・コード702へのアクセスは、メモリ・コントローラを利用して、制限され得る。メモリ
・コントローラは、制限された動作の送信先メモリ・アドレスへのマッピングを用いて、送信元アドレスと要求された動作(読み取り、書き込み、読み取り、リセット)とを比較することができる。結果として、メモリ・コントローラは、制限された動作が要求された場合、プログラム・コード・アドレスにマッピングするメモリ・ユニット又はメモリ・ユニットの一部を無効化することができる。プログラム・コード・アドレスが、単一のメモリ・ユニットにマッピングされる、実施形態では、メモリ・ユニットの書き込み制御線は、その線をグランド又はスイッチに接続することによって、無効化され得る。
図3Aは、3つのアドレス範囲を含む、第1のパーティションのメモリ・アドレスを示しているが、2つ以上のアドレス範囲が、使用されてよい。図3Bは、第1のパーティションのメモリ・アドレッシング708が、プログラム・コード用アドレス範囲710と、第1のパーティション・データ用アドレス・ブロック712との、2つのアドレス・ブロックを含む、構成を示している。この構成では、プログラム・コード用アドレス・ブロック710は、第1のパーティションのCPUによって実行されてよいコードを記憶するために使用される。第1のパーティション・データ用アドレス・ブロック712は、第1のパーティションのCPUによる実行用ではない他のデータを記憶するために使用される。第1のパーティション・データ用アドレス・ブロック712は、第2のパーティションから第1のパーティション上に読み取られるデータを記憶するためにも使用される。
図4は、第1のパーティション上に配置されたデータ・ファイルを獲得する、第2のパーティションの方法を表す、フローチャートを示している。最初に、工程902において、第1のパーティションのCPUは、第2のパーティションのCPUを用いて、現在のデータ要求を定期的にチェックする。データ要求は、データのアイテムを獲得するための要求、データのアイテムを更新するための要求、又は第1のパーティションによるアクション、例えば、1つの口座から別の口座への資金の送金、もしくは建物内における温度設定の変更を要求するための要求とすることができる。次に、工程904において、第1のパーティション上に存在するプログラムが、データ要求の正当性を検証する。上で説明されたように、第1のパーティション上に存在するプログラムは、インターネット及び他の任意のネットワークからの悪意あるコンピュータ実行可能コードによる感染から、ハードウェア的に保護される。第1のパーティション上に存在するプログラムによって検証されたデータ要求の場合、方法は、工程910に進む。そうではなく、検証が失敗した場合、方法は、工程906に進む。工程906において、第1のパーティションのCPUは、工程904において検出されたいずれかの疑わしいアクティビティに起因して、第1のパーティションに直接的に接続された権限を与えられた個人による確認を要求することができる。第1のパーティションに直接的に接続された権限を与えられた個人が、データ要求を確認した場合、方法は、工程910に進む。そうではない場合、方法は、工程908に進む。工程908において、第1のパーティションのCPUは、データ要求が拒否されたことを、権限を与えられた個人に警告し、別のデータ要求に着手する。検証及び/又は確認に続いて、工程910において、第1のパーティションのCPUは、データ・ファイルにアクセスし、データの適用可能な要素を第2のパーティションに提供する。この設計下では、第2のパーティションは、第1のパーティション上のいかなる重要なデータ・ファイルに対する直接アクセスも獲得することはできない。上で説明されたように、好適な実施形態において開示されるコンピュータ・システム・アーキテクチャのハードウェアは、データ・ファイルを第1のパーティションから送るためのコマンドが、第2のパーティションによって制御され得ないように構築される。結果として、第2のパーティション上に配置されたいかなる悪意あるコードも、悪意あるコードを第1のパーティションの実行可能コード内に入れることはできず、したがって、いかなる重要なデータ・ファイルにもアクセスすることができず、又はそれらに悪影響を及ぼすことができない。
第1のパーティションを保護するのに加えて、好適な本実施形態は、第1のパーティシ
ョンが、悪意あるコンピュータ実行可能コードによって悪影響を及ぼされた第2のパーティションのデータ・ファイルを回復することを可能にすることができる。悪意あるコンピュータ実行可能コードは、第2のパーティション、ならびにスクリーン及びキーボードに対するそれの制御を混乱させることができ、それによって、ユーザが、第2のパーティションを通してリモート端末にアクセスすることを妨げる。1実施形態では、第1のパーティションは、キーストローク・シーケンスを利用して、第1のパーティションに直接的に接続されたユーザが、悪意あるコンピュータ実行可能コードによって悪影響を及ぼされたセカンダリ・パーティションのスクリーン及びキーボードの制御ならびにプログラム制御を行うように、第1のパーティションのCPUに命令することを可能にする、ハードウェア機能を含む。第1のパーティションに直接的に接続された権限を与えられたユーザは、第1のパーティションを通して、第2のパーティション上の保護ソフトウェアを開始することができる。ユーザは、第2のパーティションのメモリ及び/もしくはデータ・ファイルを完全に消去して、悪意あるコンピュータ実行可能コードを削除するように、又は第2のパーティションを、そのような悪意あるコードのない以前にセーブされた状態に回復するように、第1のパーティションに命令することもできる。この実施形態では、第2のパーティションのオペレーティング・システム及びアプリケーションは、第1のパーティションによって記録される。結果として、第1のパーティションは、悪意あるコンピュータ実行可能コードを削除した後、第2のパーティションのオペレーティング・システム及びアプリケーションを回復することができる。第2のパーティションは、悪意あるコードの削除後、動作可能になり、それによって、コンピューティング・デバイスのための、リモート端末へのアクセスを可能にする。
加えて、好適な実施形態は、様々なタイプの保護ソフトウェアを導入することを現実的にする。上で説明されたように、好適な実施形態は、悪意あるコンピュータ実行可能コードが、第1のパーティションのプログラム・コード又はデータ・ファイルにアクセスし、悪影響を及ぼすことを防止するために、様々なハードウェア方法を利用する。そのような方法は、限定することなく、第1のパーティションのインターネットを通したリモート端末への直接アクセスを防止すること、及び第1のパーティションのメモリ・アドレッシングを制限することを含む。この設計は、第2のパーティションからの第1のパーティションのデータ・ファイルを求める要求を制限するが、コンピューティング・デバイスの他の態様は、当技術分野において知られた通常のコンピュータ・システムのように動作する。例えば、第1のパーティションのCPUが、第2のパーティションからデータを読み取ったとき、第1のパーティションのCPUは、データの個々のアイテムが第2のパーティションに送り戻されることを求める要求をしばしば受け取る。この要求された情報は、その後、第2のパーティションによって、ネットワーク上でリモート端末に転送され得る。好適な実施形態は、そのようなデータ要求が、個別に、又はある期間にわたるまとまりとして、疑わしくないかどうかをチェックするために、保護プログラムが第1のパーティションのCPUによって実行されることを可能にする。例示的な疑わしいデータ要求は、第1のパーティション上のソフトウェアによって財務情報にマッピングされた重要なデータ・ファイルを第2のパーティション上のプログラムが要求するものである。結果として、第1のパーティションのCPUは、疑わしいアクティビティが検出された場合、第1のパーティションに直接的に接続された権限を与えられた個人の介入を求める要求を含む、適切な検証の手段を開始することができる。さらなる例では、第1のパーティションのハードウェア保護されたプログラム・コードは、ファイル全体又は重要なデータ・ファイルのフル・セットの代わりに、データの特定のアイテムだけを第2のパーティションに送るようにプログラムされる。例示的なプログラムは、パスワード及びクレジットカードのセキュリティ・コードなどの機密データを第2のパーティションに送ることを、拒否することもできる。知られたシステムでは、悪意あるコンピュータ実行可能コードは、重要なデータ・ファイルに直接的にアクセスすることができ、保護プログラムを改変することができるので、そのようなプログラムは、現実的ではない。
本明細書で開示される原理は、アプリケーションのためのハードウェア「サンドボックス」を生成することによって、モバイル・デバイスのアーキテクチャに組み込まれてもよい。現在、いくつかのセルフォン用オペレーティング・システム上で使用されている、ソフトウェア「サンドボックス」と同様に、これは、他の重要なメモリへのアクセスを制限しながら、いくつかの機能及びデータへのアクセスをアプリケーションに許可する。それら既存の方法とは異なり、この実施形態は、悪意あるコンピュータ実行可能コードのアクセスに対するハードウェア制限を提供する。すべての補助プログラムは、セカンダリ・パーティション内にロードされるので、重要なデータ及びオペレーティング・システム自体は、いかなるアプリケーションによる改変からも保護され得る。
加えて、本明細書で開示される原理は、それのプライマリ・インターフェースが、コンピューティング以外の機能用である、ネットワーク接続されたデバイスを保護するために使用され得る。冷蔵庫及びエアコンなどの家電は、インターネットに接続するように設計されることが増えている。そのようなデバイスも、インターネット上で、又はネットワークを通して受け取られた、悪意あるコンピュータ実行可能コードから、プライマリ・パーティションの機能を遮蔽するために、好適な実施形態のコンピュータ・システム・アーキテクチャを用いるように設計され得る。他の「スマート・ホーム」及び「スマート・ビルディング」デバイス、ならびに乗物内のコンピュータ対応のコンソールも、対応するコンピュータ・システム・アーキテクチャの使用を行ってよい。
好適な実施形態は、統合された新しいコンピュータ・システム・アーキテクチャに関連して説明されたが、本明細書で開示される原理は、好適な実施形態の主要な機能を利用するハードウェア及びソフトウェアの組み合わせと併せて、既存のアーキテクチャを利用する、コンピューティング・デバイスに適合され得る。そのような実施形態は、既存のコンピュータに大きな投資を行っており、それらを使用し続けたいが、ハッキングに対する改善された保護を望んでいるユーザに対して、有益なことがある。1実施形態では、統合されたシステムの第1のパーティションは、重要なファイル及びプログラムのほとんどを保有することができる、既存のコンピュータに接続され得る。結果として、そのコンピュータは、統合されたシステムの第1のパーティションについて上で説明されたように、インターネット及び他の外部ソースから隔離される。第1のパーティションは、バス又はI/Oモジュールを通して、コンピュータと通信し、それに対する読み取り及び書き込みを行うことができ、コンピュータは、ハードウェア及びオペレーティング・システムによって、マルウェアから保護される。
第1のコンピュータ1300及び第2のコンピュータ1400を備える、別の代替的実施形態が、図5に示されている。第1のコンピュータ1300及び第2のコンピュータ1400は、当技術分野において知られたコンピュータ・アーキテクチャ、例えば、x86、ARM、及びPowerPCを利用する。そのため、第1のコンピュータ1300及び第2のコンピュータ1400は、コンピュータ実行可能コードを実行するためのオペレーティング・システムを含む。上で説明されたように、これらの知られたアーキテクチャの不都合は、第1のコンピュータ1300及び第2のコンピュータ1400のプロセッサが、重要なデータ・ファイルにアクセスし、悪影響を及ぼすことができる、インターネットから受け取った悪意あるコンピュータ実行可能コードの実行を許しやすいことである。さらに、そのような悪意あるコンピュータ実行可能コードは、知られたソフトウェア・ソリューションの裏をかくことができる。本実施形態では、第2のコンピュータ1400は、インターネットに接続することができる。結果として、第2のコンピュータ1400は、インターネットからの悪意あるコンピュータ実行可能コードの影響を受けやすい。しかしながら、第1のコンピュータ1300は、インターネットに接続されず、コンピューティング・デバイス1000を通して、第2のコンピュータ1400に相互接続される。第1
のコンピュータ1300は、図6Aを参照して以下で詳細に説明されるように、オペレーティング・システム手法の使用を通して、ある程度の保護を達成することができる。しかしながら、そのような保護は、限定的であり、巧妙なハッカによるセキュリティ侵害を受けやすい。好適な本実施形態のハードウェア設計及び技法を使用して、第2のコンピュータ1400に悪影響を及ぼすいかなる悪意あるコンピュータ実行可能コードからも第1のコンピュータ1300を保護する、コンピューティング・デバイス1000も利用したほうが、はるかに高度な保護が得られる。コンピューティング・デバイス1000は、上で説明された完全に統合されたシステムのアーキテクチャの多くを具体化して、第1のコンピュータ1300が、第2のコンピュータ1400によってインターネットから受け取られたデータ及び要求を、第1のコンピュータ1300上でのハッキングの試みに耐える方法で、取り扱うことを可能にする。
図5に示されるように、コンピューティング・デバイス1000は、第1のパーティション1100と、第2のパーティション1200とを備える。第2のパーティション1200は、CPU1204と、メモリ1206と、データ・ストア1208と、I/Oモジュール1212とを備え、それらは、バス1202によって相互接続される。CPU1204は、データ・ストア1208及び/又はメモリ1206上に配置されたオペレーティング・システムを実行して、I/Oモジュール1212を通して、第2のコンピュータ1400と通信する。I/Oモジュール1212は、USBポート、eSATA、WiFi、又はコンピューティング・デバイス1000を第2のコンピュータ1400に接続するための他の任意の知られた通信インターフェースとすることができる。この実施形態では、ソフトウェアは、第2のコンピュータ1400上で動作しており、それは、CPU1204が、第2のコンピュータ1400からデータを受け取ることを可能にする。CPU1204によって第2のコンピュータ1400から読み取られたデータ・ファイルは、メモリ1206及び/又はデータ・ストア1208上に記憶される。CPU1204は、第1のコンピュータ1300と直接的に通信することを、ハードウェア的に制限される。1実施形態では、バス1002は、図3Cを参照して上で説明されたバス・コントローラ技法を利用して、第2のコンピュータ1400が、第1のコンピュータ1300のCPU及びメモリにアクセスすることを制限することができる。第2のパーティション1200は、通信モジュール1210をさらに備える。通信モジュール1210は、第2のパーティション1200が、インターネットなどのネットワークを通して通信することを可能にする。結果として、通信モジュール1210は、インターネットからのデータにアクセスするために、第2のコンピュータ1400を利用する代わりに、インターネットからのデータにアクセスするために、第1のコンピュータ1300によって利用され得る。
コンピュータ1300及びコンピューティング・デバイス1000は、キーボード、データ記憶デバイス、及びプリンタなどの入力/出力デバイスに直接的に相互接続される。大規模使用のための実施形態では、コンピュータ1300及びコンピューティング・デバイス1000は、直接的な配線によって、コンピューティング・デバイスのユーザの制御下にある物理的ロケーションに存在する、より小型のコンピュータ又はPCに接続され得る。この実施形態では、ユーザは、より小型のコンピュータ又はPCが、ワイヤ、ケーブル、又はWi-Fiを含む任意の形態のインターネット接続を行えないようにすることができる。コンピューティング・デバイス1000は、ネットワーク上でリモート端末と通信することを、ハードウェア的に制限される。コンピュータ1300は、好適には、他の手段によって、例えば、コンピュータ1300のオペレーティング・システムにおいてリモート接続を行えないようにすることによって、ネットワーク上でリモート端末と通信することを制限される。
第1のコンピュータ1300は、第1のパーティション1100のI/Oモジュール1110に直接的に接続される。I/Oモジュール1110は、USBポート、eSATA
、又はコンピューティング・デバイス1000を第1のコンピュータ1300に接続するための任意の知られた通信インターフェースとすることができる。第1のパーティション1100は、CPU1104と、メモリ1106と、少なくとも1つのデータ・ストア1108とをさらに備え、それらは、バス1102によって相互接続される。図3Aを参照して上で詳細に説明されたように、CPU1104は、メモリ1106のプログラム・コード用アドレス範囲、及びデータ・ストア1108上に記憶されたコンピュータ実行可能コードだけを実行することができる。これは、(本実施形態によって、それ自体がマルウェアから保護された)CPU1104のオペレーティング・システムによる、及びハードウェア回路による制御を通して達成される。
この実施形態では、ソフトウェアは、第1のコンピュータ1300上で動作しており、それは、CPU1104が、データを送り、第1のコンピュータ1300からデータを受け取ることを可能にする。ソフトウェアは、第1のコンピュータ1300のユーザが、第1のコンピュータ1300のためのメモリのエリアを、重要なプログラムと、重要なデータ・ファイルと、コンピューティング・デバイス1000から受け取ったデータ及び要求とに区分することを可能にする。加えて、ソフトウェアは、第1のコンピュータ1300のCPUが、コンピューティング・デバイス1000から受け取ったファイルを有するメモリ・セグメントに対する実行制御を引き渡すことを防止する。実行制御からメモリ・セグメントを分離するためのコンピュータ・セキュリティの1例は、サンドボックス・セキュリティ・メカニズムの使用である。第1のパーティション1100は、バス1002を通して、第2のパーティション1200に直接的に相互接続される。CPU1104は、第2のパーティション1200のメモリ1206のアドレス範囲全体及びデータ・ストア1208に書き込むことができる。加えて、CPU1104は、メモリ1206のアドレス範囲全体及びデータ・ストア1208からデータを読み取ることができるが、CPU1104による「読み取り」コマンド(プル)だけによって、それを行うことができる。CPU1104は、ハードウェア制限によって、第2のパーティション1200によってそれにプッシュされた、いかなるデータ又は他のファイルも受け入れることはできない。この実施形態では、第1のパーティション1100に直接的に接続された第1のコンピュータ1300上で動作するソフトウェアは、第2のパーティション1200からいずれかのデータをプルするように、CPU1104に要求することができる。CPU1104は、メモリ1106のプログラム・コード用アドレス範囲及びデータ・ストア1108上に記憶されたコンピュータ実行可能コードだけしか実行できないので、コンピューティング・デバイス1000の第1のパーティション1100は、第2のコンピュータ1400又はメモリ1206上に記憶されたいかなる悪意あるコンピュータ実行可能コードからも保護される。
この実施形態では、第1のパーティション1100は、書き込みモジュール1112を利用して、コンピューティング・デバイス1000から受け取ったデータ・ファイルのための、第1のコンピュータ1300上で動作するソフトウェアによって選択されたメモリのセグメントに、データを書き込む。書き込みモジュール1112は、コンピューティング・デバイス1000から受け取ったデータ・ファイルとして区分された、第1のコンピュータ1300のメモリのセグメントをマッピングするための、ハードウェア回路を備える。例示的なハードウェア回路は、コンピューティング・デバイス1000に直接的に接続された権限を与えられたスタッフの制御によってプログラムされ得る、フィールド・プログラマブル・ゲート・アレイ(FPGA)を含む。この実施形態では、コンピューティング・デバイス1000は、イネーブル更新スイッチ1004を備える。イネーブル更新スイッチ1004は、オン位置と、オフ位置とを含む。イネーブル更新スイッチ1004のオン位置は、コンピューティング・デバイス1000から受け取ったデータ・ファイルのためのメモリのセグメントについての、書き込みモジュール1112のハードウェア回路のプログラミングを可能にする。加えて、イネーブル更新スイッチ1004のオン位置
は、コンピューティング・デバイス1000が、データを第1のコンピュータ1300に送ることを防止する。対照的に、イネーブル更新スイッチ1004のオフ位置は、コンピューティング・デバイス1000が、第1のコンピュータ1300上で動作するソフトウェアにデータを送ることを許可する。イネーブル更新スイッチ1004のオフ位置は、書き込みモジュール1112のハードウェア回路に対する権限なしの変更を防止する。コンピューティング・デバイス1000及びコンピュータ1300は、上で説明された追加の保護スイッチ及び保護ソフトウェアも利用することができる。
いくつかの実施形態では、図5を参照して上で説明された機能に加えて、更新中に第1のパーティションを第2のパーティションのデータから保護するためのさらなる安全機能を開始するために、スイッチが使用される。スイッチがアクティブ化されると、第1のパーティションが、更新工程中に、第2のパーティション上のデータへのアクセスを行わず、第1のパーティションが、第2のパーティションにデータを送ること、又は第2のパーティションからデータを読み取ることができないように、2つのパーティション間の接続が、やはり無効化され得る。通常の動作状態にある通常の動作中、第1のパーティションは、第1のパーティションから第2のパーティションへのフローに対するコマンドを許可するように設定された、論理ゲート又はトランジスタを利用するスイッチを使用し、ハードウェア回路を用いて実施される直接接続を通して、又はバスを通して、第2のパーティションにアクセスすることができる。しかし、更新モード中は、そのアクセスは、(トライステート・ゲート又は任意の種類の切り換え可能バスなどの)スイッチ又はバスを選択し、それを「オフ」位置に動かすことによって、行えないようにされ、したがって、更新工程中、第1のパーティションに追加の保護を提供する。「AND」ゲートは、それの論理条件が満たされた場合、通信を許可する(「TRUE」を読み取る)スイッチ位置によって、トリガされ得る。加えて、第1のパーティションのCPUが、モニタ、キーボード、入力デバイス、プリンタ、及び他の周辺機器などの、任意の接続されたデバイスを制御することを可能にするために、第1のパーティションに直接的に接続された外部デバイスが、利用され得る。これは、「KVM」スイッチの形態を通して実施され得、2つのパーティションが周辺デバイスの使用を共有している場合に、特に有益なことがあり、例えば、第2のパーティション内にマルウェア問題が存在する場合、アクションが第1のパーティション上で独立に行われ得るように、ユーザは、イネーブリング・デバイスをオンにして、第1のパーティションが、マルウェアを避けて、モニタ及びキーボードの制御を行うことを可能にする。
多くの使用について、図5を参照して上で説明されたスイッチは、更新システムにとって重要であり、スイッチがオンでない限り、プログラム・コード・メモリに書き込むことが可能でないように、プログラム・コード用メモリは、論理ゲートなどのデジタル回路を利用して、そのメモリを読み取り専用にする。しかしながら、更新が予想されない、いくつかの使用が存在することがあるが、プログラム・コード用メモリ・アドレス範囲は、改変からハードウェア的に保護されるべきである。代替的実施形態が、利用され得、その中では、スイッチは、省かれ得る。プログラム・コード用メモリ範囲は、製造の工程においてロードされ、その後、ハードウェア回路を用いて、改変から永遠に制限され得る。これは、ハードウェア回路内の論理ゲートなど、当技術分野において知られた様々な技法を通して達成され得る。したがって、基本的な実施形態は、スイッチを参照することなく、プログラム・コード用メモリ・アドレス範囲をハードウェア的に保護し、スイッチを追加する能力は、潜在的な追加機能とすることができる。
第1のパーティションのためのオペレーティング・システム及び/又は主要なアプリケーションを更新する際の便利さ及び安全を促進するために、別個のユニットが使用され得る。このユニットは、物理的に別個であることができ、又はそれは、異なる別個のハードウェア回路を有して、システムのための全体的な筐体内に組み込まれ、第1のパーティシ
ョンに接続され得る。ユニットは、新しい重要なアプリケーションのダウンロード、又は既存のアプリケーションの更新という特定の目的のために、イーサネット・ケーブル、Wi-Fi、又は類似の手段を通して、インターネットに接続されることが可能である。ユニットは、それが、この目的のために、1つ又は複数の事前に定められたサービスだけにインターネットを通して接続することを可能にする、固定されたハードウェア又はファームウェアを有することができる。そのような事前に設定されたアドレスは、例えば、コンピュータ及びソフトウェアの主要なサプライヤの公式な更新アドレスを含んでよい。インターネット・アドレスがタイプ入力されること、又はソフトウェアによって設定されることを許可する、通常のコンピュータと対照的に、このデバイスは、それのハードウェア又はファームウェアで事前に設定されたもの以外の、いかなるインターネット・アドレスに対しても、接続要求を送ることはできない。これは、デバイスによるアクセスを、事前に承認されたアドレスだけに制限する。
通常の動作では、第1のパーティションは、この方式では、いかなるデータを受け入れることも可能にされない。更新時に、ユーザは、図5を参照して上で説明されたスイッチをオンにして、ユニットをインターネットに接続し、ユニットは、この目的のために、事前に定められたインターネット・アドレスだけに直接的に接続して、適用可能な更新をダウンロードする。
ユニットが、スタンドアロンである場合、それは、更新データを、フラッシュ・ドライブなどの不揮発性メモリ上に書き込むことができる。図5を参照して説明されたスイッチは、第1のパーティションが、第1のパーティションに接続されたUSBドライブ又は類似の設備を通して、そのような更新データを受け入れることを可能にする。その場合、フラッシュ・ドライブ又は類似のデバイスは、USBドライブ内に挿入され得、更新が、完了され得、ユーザは、デバイスを取り外し、スイッチをオフにし、通常の動作に着手することができる。
ユニットが、全体的なシステム筐体内に組み込まれる場合、図5で説明されたスイッチは、スイッチがオンにされた場合に、それの使用を可能にする。更新が、完了され得、ユーザは、スイッチをオフにし、通常の動作に着手することができる。
本明細書で開示される原理は、いずれのコンピューティング・デバイスにも製造時に、又はそのようなデバイスがサプライヤによって出荷準備されるときにインストールされるものである、セキュリティ・キーを保護することによって、リモート・ロケーションからの安全な更新を可能にするために使用されてもよい。ほとんどの現代の暗号化システムは、実際的に安全であり続ける数学的アルゴリズムを使用するが(AES-256規格は、一般に、破るのに標準的な処理能力で数百万年を必要とすると見なされている)、理論的には依然として破られ得、暗号学会は、ある者達が2048ビット長までのキーを破ることができると主張している。ランダムな数字からなるセキュリティ・キーは、キーを所有する任意の2つの当事者間で完全に安全なメッセージについてのより高い標準を提供する。2回以上の通信を望んでいる当事者は、第2次世界大戦においてスパイがしたように、複数のバージョンの使い捨てキーを持っていることができ、コンピューティング・デバイスは、メモリ内に多くのバージョンを保持することができる。しかし、本明細書で開示されるハードウェア保護を用いなければ、そのようなキーのいかなるファイルも、それ自体が、改ざんに対して脆弱である。そのようなファイルを第1のパーティションの保護されたメモリ内に置くことによって、離れた当事者どうしが、安全に繰り返し通信することができる。
図6Aは、ソフトウェア・ソリューションとともに既存のアーキテクチャを利用するコンピューティング・デバイスに適合された、実施形態を示している。ソフトウェア・ソリ
ューションは、悪意ある実行可能コンピュータ・コードの影響を受けやすいことがあるが、それは、重要なデータ・ファイルへのアクセスを制限すること、第1のコンピュータへのプログラム実行アクセスを制限すること、及び第2のコンピュータからのいかなる入力にもプログラム制御を与えないようにすることを含む、上で説明されたハードウェア・ソリューションの有益性のいくつかを提供することができる。この実施形態では、第1のコンピュータ1500は、知られた通信インターフェース、例えば、USB、eSATA、WiFi、又はイーサネットを利用して、第2のコンピュータ1600に接続される。第1のコンピュータ1500及び第2のコンピュータ1600は、当技術分野において知られたコンピュータ・アーキテクチャ、例えば、x86、ARM、及びPowerPCを利用する。そのため、第1のコンピュータ1500及び第2のコンピュータ1600は、コンピュータ実行可能コードを実行するためのオペレーティング・システムを含む。重要なファイル及びシステムは、第1のコンピュータ1500上に存在し、一方、第2のコンピュータ1600は、インターネットに接続するために使用される。この設計は、第1のコンピュータ1500のソフトウェアが、第1のコンピュータ1500のハッキングのリスクを低減する方法で、第2のコンピュータ1600と対話することを可能にする。第2のコンピュータ1600によってインターネットから受け取られることがあるマルウェアは、第1のコンピュータ1500上で動作するソフトウェアによって、第1のコンピュータ1500上の実行可能コードのポイントに達することを阻止される。
第1のコンピュータ1500は、第1のコンピュータ1500上で動作する仮想パーティション1510を備える。仮想パーティション1510は、第1のコンピュータ1500のコンピューティング・リソース(すなわち、CPU及びストレージ)のいくつかを利用することができるが、仮想パーティション1510は、当技術分野において知られた技法、例えば、ソフトウェア「サンドボックス」を使用して、第1のコンピュータ1500のオペレーティング・システムにアクセスすることから隔離される。結果として、仮想パーティション1510は、仮想パーティション1510が、第2のコンピュータ1600の仮想パーティション1606から受け取った悪意あるコンピュータ実行可能コードによって悪影響を及ぼされた場合に、第1のコンピュータ1500のオペレーティング・システムに悪影響を及ぼすことを制限される。さらに、仮想パーティション1510は、第1のコンピュータ1500に直接的に接続された入力デバイス、及び第2のコンピュータ1600の仮想パーティション1606からのデータだけにアクセスするように制限される。結果として、仮想パーティション1510は、ネットワーク上でリモート端末に接続することができる、第1のコンピュータ1500のコンピューティング・リソースにアクセスすることを制限される。
この実施形態では、第1のコンピュータ1500のオペレーティング・システムは、第1のコンピュータ1500のメモリの一部を、仮想パーティション1510に割り当てる。仮想パーティション1510のオペレーティング・システム1502は、仮想パーティション1510のプログラム・コード用アドレス・ブロック1504に配置されたプログラム・コードだけを実行するようにプログラムされる。第2のコンピュータ1600の仮想パーティション1606から受け取られたすべてのデータは、第2のパーティション・データ用アドレス・ブロック1508に記憶される。最後に、仮想パーティション1510の重要なデータ・ファイルは、第1のパーティション・データ用アドレス・ブロック1506内に記憶される。この設計では、第1のコンピュータ1500の重要なデータ・ファイルは、第2のコンピュータ1600内に配置されることがあるマルウェアによるアクセスから保護される。仮想パーティション1510は、図4を参照して上で詳細に説明された方法を使用して、第1のコンピュータ1500上に記憶されたデータ・ファイルにアクセスするように、第1のコンピュータ1500のオペレーティング・システムに要求することができる。第1のコンピュータ1500のオペレーティング・システムは、仮想パーティション1510に割り当てられたメモリのアドレス範囲全体にアクセスすることが
できる。しかしながら、第2のコンピュータ1600から読み取られたいかなるデータも、第1のコンピュータ1500の第2のパーティション・データ用アドレス・ブロック1508内に記憶され、第1のコンピュータ1500のオペレーティング・システムは、第2のパーティション・データ用アドレス・ブロック1508上に記憶されたデータ・ファイルを実行することを制限されるので、第1のコンピュータ1500は、第2のコンピュータ1600から転送されたいかなる悪意ある実行可能コードも実行しない。
第2のコンピュータ1600は、第2のコンピュータ1600上で動作する常駐ソフトウェアによって生成された、仮想パーティション1606を備える。この実施形態では、第2のコンピュータ1600は、ネットワークを通して、リモート端末に接続される。仮想パーティション1606は、第2のコンピュータ1600のコンピューティング・リソース(すなわち、CPU及びストレージ)のいくつかを利用することができる。第2のコンピュータ1600のオペレーティング・システムは、第2のコンピュータ1600のメモリの一部を、仮想パーティション1606に割り当てる。さらに、第2のコンピュータ1600のオペレーティング・システムは、仮想パーティション1606が、ネットワークを通してリモート端末と通信するためのリソースにアクセスすることを可能にする。仮想パーティション1606は、オペレーティング・システム1602を備え、それは、第2のコンピュータ1600のオペレーティング・システムによって仮想パーティション1606に割り当てられた、プログラム・コード/データ用アドレス・ブロック1604のアドレス範囲全体にアクセスし、実行することができる。仮想パーティション1510のオペレーティング・システム1502は、プログラム・コード/データ用アドレス・ブロック1604のアドレス範囲全体から、プル・コマンドを使用して、データを読み取るようにプログラムされる。しかしながら、オペレーティング・システム1502は、ソフトウェア制限によって、第2のコンピュータ1600の仮想パーティション1606によって、それにプッシュされたいかなるデータ又は他のファイルも受け入れることはできない。第2のコンピュータ1600内のソフトウェアは、第1のコンピュータ1500によって読み取られるデータを、オペレーティング・システム1502によって必要とされる形式でフォーマットする。第2のコンピュータ1600は、インターネット・ハッカによって侵入され得る。マルウェアが、第1のコンピュータ1500に提供されるデータのフォーマットを改変した場合、オペレーティング・システム1502は、不適切にフォーマットされたデータを受け入れない。加えて、ソフトウェアは、第1のコンピュータが第2のコンピュータからデータを獲得するための、図4を参照して上で詳細に説明された方法を利用することができる。
図6Aは、3つのアドレス・ブロックを含む、第1のコンピュータを示しているが、2つ以上のアドレス・ブロックが、使用されてよい。図6Bは、第1のコンピュータ1520が、プログラム・コード用アドレス・ブロック1524と、第1のパーティション・データ用アドレス・ブロック1526との、2つのアドレス・ブロックを含む、構成を示している。この構成では、プログラム・コード用アドレス・ブロック1524は、オペレーティング・システム1522によって実行されてよいコードを記憶するために使用される。第1のパーティション・データ用アドレス・ブロック1526は、オペレーティング・システム1522による実行用ではない他のデータを記憶するために使用される。第1のパーティション・データ用アドレス・ブロック1526は、第2のコンピュータ1620から第1のコンピュータ1520上に読み取られるデータを記憶するためにも使用される。
図6A及び図6Bで開示された実施形態は、第1のコンピュータのプログラム及びデータを、悪意あるコンピュータ実行可能コードから保護するために、仮想パーティションを利用するが、開示された技法(すなわち、重要なデータ・ファイルへのアクセスを制限し、第1のコンピュータへのプログラム実行アクセスを制限し、第2のコンピュータからの
いかなる入力にもプログラム制御を与えないようにするソフトウェア)は、仮想パーティションを使用せずに、第1及び第2のコンピュータのオペレーティング・システムに直接的に適用されてよい。いずれのケースでも、そのような実施形態は、ハッキングのリスクを低減することができるが、ソフトウェア保護ばかりでなくハードウェアも利用することができる、好適な実施形態における完全に統合されたシステムによって与えられる、より高度な保護を提供することはできない。
図2Aを参照して上で説明されたコンピュータ・システム・アーキテクチャは、第1のパーティション及び第2のパーティションの各々の上で、仮想環境を利用することもできる。これらのパーティションは、様々なオペレーティング・システム及びプログラムのアクティビティを分割する目的で、使用され得る。図6Aを参照して上で説明されたソフトウェア・ソリューションとは異なり、第1のパーティション上で実施される仮想環境は、図2Aを参照して上で説明されたように、第2のパーティションからハードウェア的に保護される。
別の実施形態では、既存のアーキテクチャを利用するコンピューティング・デバイスは、広範な本発明の開示の趣旨から逸脱することなく、2つの物理的に別個のパーティションの代わりに、仮想パーティションを利用することができる。仮想パーティションを利用するそのような実施形態は、インターネット・ハッキングを妨げること、重要なデータ・ファイルへのアクセスを制限すること、プログラム実行アクセスを制限すること、及びプログラム制御を制限することを含む、上で説明されたハードウェア・ソリューションの有益性のいくつかを提供することができる。
そのような実施形態は、仮想マシン能力を有する、当技術分野において知られたコンピュータ・アーキテクチャ、例えば、x86、ARM、及びPowerPCを利用することができ、仮想パーティション・システム内で仮想パーティショニング及び処理の主要な態様を管理するための「ハイパーバイザ」(又は変更された「カーネル」もしくは「コンテナ」システム)を備える。第1の仮想パーティションと、第2の仮想パーティションとの、2つの主要な仮想パーティションが存在し、それらは、上で詳細に説明された、物理的に別個の第1のパーティションと、第2のパーティションとに対応する。仮想パーティションは、通常の動作の前に、ハイパーバイザ又は同等物を用いて作業する、仮想パーティショニング構成工程を使用して、管理者によって構成される。各仮想パーティションは、コンピュータの能力に応じて、メモリ、ネットワーク接続性、入力/出力接続性、CPU、及び様々な他の特徴を含む、コンピュータのハードウェア・リソースに対するアクセス可能性を割り当てられる。さらに、ハイパーバイザは、仮想パーティションを再割り当てすること、又は動的に変更することができる。
第1の仮想パーティション(FVP)は、コンピュータ実行可能コードを実行するための、CPUと、少なくとも1つのオペレーティング・システムとを備え、FVPに属する仮想パーティションのサブパーティションを有してよい。参照を容易にするため、FVP及びそれのサブパーティションは、仮想パーティションのFVP「ファミリ」と呼ばれる。
少なくとも1つの第2の主要な仮想パーティション(SVP)は、コンピュータ実行可能コードを実行するための、CPUと、少なくとも1つのオペレーティング・システムとを備え、少なくとも1つのサブパーティションを有してよい。参照を容易にするため、SVP及びそれのサブパーティションは、仮想パーティションのSVP「ファミリ」と呼ばれる。
FVPファミリ及びSVPファミリは、ともに、メモリ及びI/Oモジュールを含む、
コンピュータにとって一般的な追加の機能性を有してよい。重要なファイル及びシステムは、FVPファミリ内に存在し、一方、SVPファミリは、インターネットなどのネットワーク上で通信することができる。対照的に、FVPファミリは、SVPファミリ、又はFVPファミリに直接的に接続されたI/Oデバイスとだけ、直接的に通信することができる。仮想パーティショニングは、FVPファミリが、インターネット、又はインターネットに接続されたサーバなどの他の任意のデバイスに接続されないように構成される。重要なデータ・ファイルを保護するために、SVPファミリ全体は、FVPファミリのいかなるメモリからの読み取りも、又はそれへの書き込みも禁止されるように構成される。
この設計は、FVPファミリが、FVPファミリのインターネット・ハッキングのリスクを低減する方法で、SVPファミリと対話することを可能にする。SVPファミリの任意の部分によってインターネットから受け取られることがあるマルウェアは、FVPファミリ上で実行されることを妨げられる。さらに、FVPファミリの重要なファイルは、SVPファミリ上に存在すること、又はSVPファミリに書き込まれていることがあるマルウェアによって、改変されること、又は読み取られることを妨げられる。
FVPファミリは、それのメモリ・アドレスが、コンピュータ実行可能コード及び非常に重要なデータのための1つを含む、少なくとも2つのセクションに区分されるように構成される。他の構成は、少なくとも3つのメモリ範囲又はパーティション、すなわち、コンピュータ実行可能コード及び非常に重要なデータのための1つと、SVPファミリから読み取られたデータのための1つと、他のFVPファミリ・データのための少なくとも1つとを含んでよい。
図7は、コンピューティング・デバイス上で仮想パーティションを実施する例示的な実施形態を示す、簡略ブロック図である。コンピューティング・デバイス1900は、CPU1902と、メモリ1904と、ネットワーク・アダプタ1906と、入力/出力1908とを備え、既存のコンピュータ・アーキテクチャを利用する。さらに、コンピューティング・デバイス1900は、オペレーティング・システム・レベルの仮想化、又はIntel VT-xもしくはAMD-Vを利用するハードウェア仮想化を用いて、仮想パーティションを生成する能力を有する。ハイパーバイザ1910は、複数の仮想パーティションを生成し、構成し、管理するために利用される。示されるように、ハイパーバイザ1910は、仮想パーティションのCPU1902、メモリ1904、ネットワーク・アダプタ1906、及び入力/出力1908との通信を管理する。ハイパーバイザ1910は、ホスト・オペレーティング・システム内で動作するアプリケーションとすることができる。この実施形態では、ハイパーバイザ1910は、コンピューティング・デバイス1900上で直接的に動作する(「タイプ-1」ハイパーバイザ)。ハイパーバイザ1910は、商用に利用可能な仮想ソリューションの1つであり得る。オペレーティング・システム・レベルの仮想化は、本明細書で開示される原理から逸脱することなく、仮想パーティションを隔離し、コンピューティング・デバイスのリソースを管理するために使用され得る。
図7に示されるように、ハイパーバイザ1910は、サブパーティションのファミリを含む、FVP1700を生成及び構成してあり、ハイパーバイザ1910は、やはりサブパーティションのファミリを含む、SVP1800を構成してある。さらに、ハイパーバイザ1910は、FVP1700とSVP1800との間の通信を管理する。この実施形態では、ハイパーバイザ1910は、SVP1800にネットワーク・アダプタ1906へのアクセスを割り当ててあり、FVP1700がネットワーク・アダプタ1906にアクセスすることを制限してある。結果として、FVP1700は、インターネット、及びネットワーク・アダプタ1906を通して通信することができる他の任意のソースからの、悪意あるコンピュータ実行可能コードの感染から保護される。FVP1700ファミリ
は、FVP1701と、FVP1702と、FVP1703とを含む。FVP1701は、実行可能コード及び非常に重要なデータを含み、FVP1702は、SVP1800から読み取られたデータを含み、FVP1703は、他のFVPデータを含む。FVP1700のオペレーティング・システムは、FVP1701内のプログラム・コード・アドレスに配置されたプログラム・コードだけを実行するように構成される。SVP1801は、SVP1800によって利用されるデータを含む。SVP1801からFVP1700によって読み取られるすべてのデータは、サブパーティションFVP1702内に記憶される。この実施形態では、ハイパーバイザ1910は、SVP1801のコンピューティング・デバイス1900のCPU1902へのアクセスを制限してある。
FVP1700の主要なデータ・ファイルは、FVP1701内に記憶され得る。ハイパーバイザ1910は、FVP1700及びSVP1800に割り当てられたメモリ1904のアドレス範囲全体にアクセスするように、FVP1700を構成する。さらに、ハイパーバイザ1910は、SVP1800からFVP1702に割り当てられたメモリにデータを送るように求める、FVP1700による要求を送るように構成される。FVP1700のオペレーティング・システムは、FVP1701内のプログラム・コード・アドレスに配置されたプログラム・コードを実行するように制限されるので、FVP1700は、SVP1800から転送されたいかなる悪意ある実行可能コードの実行からも保護される。
この実施形態では、ハイパーバイザ1910は、FVP1700に割り当てられたCPUリソースが、FVP1700ファミリに割り当てられたいずれかのメモリ又はCPUだけから読み取ること、又はそれらに書き込むことができるように、仮想パーティションを構成してある。SVP1800ファミリ内のソフトウェアは、FVP1700ファミリによって読み取られるデータを、データに応じた特定の形式及び長さにフォーマットする。上で説明されたように、ハイパーバイザ1910は、ネットワーク・アダプタ1906へのアクセスをSVP1800に割り当ててある。したがって、SVP1800は、インターネット・ハッカによって侵入され得る。ハイパーバイザ1910は、FVP1700によって受け入れられるデータ・フォーマットのリストを含む。FVP1700によって要求されたデータをSVP1800から転送する前に、ハイパーバイザ1910は、受け入れられるデータ・フォーマットのリストを用いて、データをチェックする。SVP1800に悪影響を及ぼすマルウェアが、FVP1700に提供されるデータのフォーマット又は長さを改変した場合、ハイパーバイザ1910は、不適切にフォーマットされたデータをFVP1700に転送することを拒否することができる。別の実施形態では、FVP1700が、データのフォーマットをチェックし、不適切にフォーマットされたデータを受け入れることを拒否することができる。
セキュリティを向上させるため、ハイパーバイザは、FVP及びそれのサブパーティションのファミリを、他の仮想パーティションから隔離するように、仮想パーティションを構成することができる。したがって、FVPファミリの外部の仮想パーティションは、FVPファミリに割り当てられたCPU、メモリ、及び任意のファイルにアクセスすることを制限される。さらに、ハイパーバイザは、FVPファミリを最初に生成及び構成するとき、又は仮想パーティションのリソース及びサイズを動的に割り当てる工程中を含む、任意の時間に、アクセスを制限することができる。多くのシステムは、仮想パーティションに対する動的調整を使用するので、またパーティショニング構成は、メモリの共用エリアを生成し得るので、FVPファミリとFVPファミリの外部の他の任意のパーティションとの間の基本的な分離が、仮想パーティションに対する動的調整によって侵犯されないようにする配慮が、払われなければならない。
通常の動作中、ハイパーバイザは、FVP1701上に実行可能コード用に割り当てら
れたメモリを、読み取り専用として構成する。FVP1701上において重要なプログラムがインストール又は更新される、更新モードの場合、ハイパーバイザは、FVPファミリの動作を一時的に中断することができる。その後、ハイパーバイザは、FVP1701上において重要なプログラムをインストール又は更新するために、書き込みを許可するように、FVP1701を再構成する。重要なプログラムの更新が完了した後、ハイパーバイザは、FVP1701を読み取り専用として再構成し、FVP1700が通常の動作を再開することを可能にする。代替として、更新モードを可能にするために、FVP1701に書き込むことができるかどうかを制御するスイッチの形態を取るハードウェア変更が、システム内に導入され得る。このスイッチは、SVPファミリにアクセスするFVPファミリの能力も、オン又はオフにすることができる。加えて、そのスイッチ又は別個のスイッチは、FVPファミリに関して改変される仮想構成の能力を制限することができる。そのようなスイッチは、図5を参照して上で説明されたスイッチと同様に、論理ゲート、ファームウェア、フィールド・プログラマブル・ゲート・アレイ、又は他の類似の既存の技術を利用することができる。
SVPパーティション内に構成されるいかなる仮想サーバも、本明細書で開示される原理によるハードウェア実施形態を、入力及び出力のためのゲートキーパとして用いて、さらに保護され得る。別個のユニットが、ルータとサーバ・バンクとの間の仮想サーバに接続する。1つのそのようなユニットが、著しい地理的距離によって隔てられていても、仮想パーティション内で使用される任意の1組のサーバの中に配置されてよい。
すべてのトラフィックは、他のコンピュータもしくはユニットへのすべての情報、又は他のコンピュータもしくはユニットからのすべての情報が、インターネット上などでは、ルータを通って流れなければならないのと全く同様に、ユニットを通って流れる。仮想パーティションの初期セットアップ中、ユニットは、トラフィックをFVP及びSVPに向けるようにも構成される。例えば、ユニットが、それを許可しないので、情報は、リモート・コンピュータからFVPに書き込まれ得ず、すべての到来したデータ及びコードは、SVPパーティションだけに行くことができる。
同様に、SVPが、FVPと情報を共有することを望む場合、それが、転送を開始することはできず、そのようないかなる要求も、ユニットよって許可されることはない。SVPからのデータは、SVP1801だけに行くことができ、それは、FVP1700が開始することで、アクセスされ得る。FVP1703内のデータは、SVP1800にプッシュされ得ない。
したがって、ユニットは、ハードウェア保護の実施形態及びそれの追加のセキュリティを適用して、それの監督機能がオペレーティング・システムのインストールに先立つ、タイプ-1・ハイパーバイザの機能を実行する。それのアーキテクチャは、いくつかのパス(ネットワークからSVP1800)については、直接アクセスを許可し、他のパス(FVP1702からSVP1800)については、読み取り専用接続を許可し、その他(FVP1703からSVP1800)については、アクセスを全く許可しない。デバイスは、仮想パーティションのセットアップ時に、どのアドレス範囲がどのパーティションに対応するかを知るように構成される。ユニットは、図5を参照して上で説明されたスイッチと同様に、読み取り/書き込みスイッチの使用によって、権限のない再構成から保護され得る。そのようなスイッチは、手動とすること、又はトランジスタを用いるなど、電気的とすることができる。スイッチの使用を現地でのアクティブ化に限定することによって、ユニットの構成は、リモート・ロケーションから改変され得ない。
システムは、1つの第2のパーティションと組み合わされる2つ以上の第1のパーティション、又は1つの第1のパーティションと組み合わされる2つ以上の第2のパーティシ
ョン、又は2つ以上の第2のパーティションと組み合わされる2つ以上の第1のパーティションを用いても構成され得る。第1のパーティションの各々は、保護された実行可能コード及び非常に重要なデータを含む、メモリ構造を含む、単一の第1のパーティションの実施形態の基本的な特性を有し、各第1のパーティションは、論理ゲートなどのハードウェア回路を使用して、第2のパーティションのいずれによるアクセスからも、ハードウェア的に制限される。これは、例えば、単一のシステム上で複数のクライアントを動作させ、各クライアントの重要なファイルが、別個の保護された第1のパーティション上に保持されることを可能にする。それは、システムが、2つ以上の第2のパーティションを通して通信することも可能にし、それは、1つの第2のパーティションが、マルウェアによって悪影響を及ぼされた場合に、特に役立ち得る。
本明細書で開示された原理は、主に好適な実施形態を参照して説明され、その説明は、本発明の完全な開示を行うことを目的として、かなり詳細に行われたが、説明された実施形態は、例示的なものにすぎず、限定的であること、又は本明細書で開示された原理のすべての態様の網羅的な列挙を表すことは意図されていない。さらに、本明細書で開示された趣旨及び原理から逸脱することなく、数々の変更がそのような詳細に施されてよいことが、当業者には明らかであろう。これらの原理は、それらの必須の特性から逸脱することなく、他の形態でも具体化されることが可能であることを理解されたい。

Claims (35)

  1. 第1のパーティションであって、
    第1のCPUと、
    第1のメモリ・モジュールであって、
    プログラム・コード用の少なくとも1つのメモリ・アドレス範囲であって、前記プログラム・コードが、コンピュータ実行可能コードを含み、プログラム・コード用の前記少なくとも1つのメモリ・アドレス範囲が、ハードウェア回路によって改変から保護されるように構成される、プログラム・コード用の少なくとも1つのメモリ・アドレス範囲と、
    第2のパーティションから読み取られたデータを含む、他のデータ用の少なくとも1つのメモリ・アドレス範囲と
    を備える第1のメモリ・モジュールと
    からなり、
    前記第1のCPUが、プログラム・コード用の前記メモリ・アドレス範囲内の前記コンピュータ実行可能コードだけを実行するようにハードウェア的に構成される、
    第1のパーティションと、
    第2のパーティションであって、
    第2のCPUと、
    第2のメモリ・モジュールと、
    ネットワークに結合するように構成された少なくとも1つの通信モジュールと
    からなる第2のパーティションと
    からなり、
    前記第1のCPUが、前記第2のCPU及び前記第2のメモリ・モジュールにアクセスすることができ、
    前記第2のCPUが、前記第1のCPU又は前記第1のメモリ・モジュールにアクセスすることを制限される、
    コンピュータ・システム。
  2. メモリ・アドレッシング構造が、
    プログラム・コード用の前記少なくとも1つのメモリ・アドレス範囲のための第1のメモリ・ユニットと、
    他のデータ用の前記少なくとも1つのメモリ・アドレス範囲のための第2のメモリ・ユニットと
    からなる、請求項1に記載のコンピュータ・システム。
  3. プログラム・コード用のメモリ・アドレッシング構造をマッピングする前記ハードウェア回路が、少なくとも1つのフィールド・プログラマブル・ゲート・アレイからなる、請求項1に記載のコンピュータ・システム。
  4. 他のデータ用の前記少なくとも1つのメモリ・アドレス範囲が、
    前記第2のパーティションから読み取られたデータ用の少なくとも1つのメモリ・アドレス範囲と、
    他の第1のパーティション・データ用の少なくとも1つのメモリ・アドレス範囲と
    を備える、請求項1に記載のコンピュータ・システム。
  5. モリ・アドレッシング構造が、
    プログラム・コード用の前記少なくとも1つのメモリ・アドレス範囲のための第1のメモリ・ユニットと、
    前記第2のパーティションから読み取られたデータ用の第2のメモリ・ユニットと、
    他の第1のパーティション・データ用の第3のメモリ・ユニットと
    からなる、請求項1に記載のコンピュータ・システム。
  6. オン又はオフにすることができる少なくとも1つの外部物理スイッチを備え、前記外部物理スイッチがオンのときだけ、前記第1のCPUが、プログラム・コード用の前記少なくとも1つのアドレス範囲内に記憶されたデータを変更することができる、請求項1に記載のコンピュータ・システム。
  7. オン又はオフにすることができる少なくとも1つの外部物理スイッチを備え、
    前記外部物理スイッチがオンのときだけ、前記第1のCPUが、プログラム・コード用の前記少なくとも1つのアドレス範囲内に記憶されたデータを変更することができ、
    前記少なくとも1つの外部物理スイッチがオンの間、前記第1のCPUが前記第2のCPU及び前記第2のメモリ・モジュールにアクセスする能力が、無効化される、
    請求項1に記載のコンピュータ・システム。
  8. 前記第1のパーティションに直接的に接続された外部デバイスを利用するハードウェア機能が、ユーザが、前記第2のパーティションの1つ又は複数の入力/出力デバイスの制御を行うように、前記第1のCPUに命令することを可能にするように構成される、請求項1に記載のコンピュータ・システム。
  9. プログラム・コード用の前記少なくとも1つのアドレス範囲が、オペレーティング・システムを含む、請求項1に記載のコンピュータ・システム。
  10. 少なくとも1つのデータ・ストアを備える、請求項1に記載のコンピュータ・システム。
  11. 複数の入力/出力デバイスが、少なくとも1つのI/Oモジュールに結合される、請求項1に記載のコンピュータ・システム。
  12. 前記第1のパーティション及び第2のパーティションからなるチップをさらに備える、請求項1に記載のコンピュータ・システム。
  13. 前記第1のパーティションからなる第1のチップと、前記第2のパーティションからなる第2のチップとをさらに備える、請求項1に記載のコンピュータ・システム。
  14. 前記第1のCPUが前記第2のメモリ・モジュール及び前記第2のCPUにアクセスする力が、ハードウェア回路によって実施され、
    前記第1のCPUが、前記第2のパーティションから他のデータ用の前記少なくとも1つのメモリ・アドレス範囲内だけに読み取ることができ、
    前記第1のCPU又は前記第1のメモリ・モジュールへのアクセスについての前記第2のCPUに対する制限が、ハードウェア回路によって実施される、
    請求項1に記載のコンピュータ・システム。
  15. バスをさらに備え、
    前記第1のパーティションが、前記バスを通して、前記第2のパーティションに相互接続され、
    前記第1のパーティションが、前記バスを通して、プル・コマンドを実行して、データを前記第2のパーティションから読み取り、前記データを前記第2のパーティションから読み取られたデータに適用可能な前記少なくとも1つのメモリ・アドレス範囲だけに書き込むように構成され、
    前記第1のパーティションが、前記バスを通して、プッシュ・コマンドを実行して、データを前記第2のパーティションに書き込むように構成される、
    請求項1に記載のコンピュータ・システム。
  16. ハードウェア・ユニットを備え、
    前記ユニットが、インターネットを通して、1つ又は複数の事前に定められたサービスだけに接続されて、新しい重要なアプリケーションをダウンロードするように、又は既存の重要なアプリケーションを更新するように構成され、
    前記ユニットが、前記第1のパーティションに接続するように、又は更新データを不揮発性メモリ上に書き込むように構成され、
    前記第1のパーティションが、ハードウェア・スイッチがオンのときだけ、前記ユニット又は前記不揮発性メモリからデータを受け入れるように構成される、
    請求項1に記載のコンピュータ・システム。
  17. 前記システムに組み込まれたハードウェア・ユニットを備え、
    前記ユニットが、インターネットを通して、1つ又は複数の事前に定められたサービスだけに接続するように構成された、固定されたハードウェア又はファームウェアを備え、
    前記第1のパーティションが、ハードウェア・スイッチがオンのときだけ、前記ユニットからデータを受け入れるように構成される、
    請求項1に記載のコンピュータ・システム。
  18. ットワーク上で、又は限定することなく、Bluetooth及びRFID送信を含む、ローカル無線通信を通して、通信することができるデバイスに接続され、前記デバイス又は前記コンピュータ・システムが、流通前に、製造業者によって、保護されたメモリ内に1つ又は複数のセキュリティ・キーを入れて準備される、請求項1に記載のコンピュータ・システム。
  19. 2つ以上の第1のパーティション、又は2つ以上の第2のパーティション、又は2つ以上の第1及び第2のパーティションを備えるように構成され、
    各第2のパーティションの前記CPUが、各第1のパーティションの前記CPU又はメモリ・モジュールにアクセスすることをハードウェア的に制限される、
    請求項1に記載のコンピュータ・システム。
  20. 前記第1のパーティションが、1つ又は複数の仮想サブパーティションからなり、
    前記第2のパーティションが、1つ又は複数の仮想サブパーティションからなる、
    請求項1に記載のコンピュータ・システム。
  21. 第1の仮想パーティション・ファミリであって、
    少なくとも1つのパーティションと、
    少なくとも1つのCPUと、
    少なくとも1つのメモリ・モジュールであって、
    プログラム・コード用の少なくとも1つのアドレス範囲であって、前記プログラム・コードが、コンピュータ実行可能コードを含み、プログラム・コード用の前記少なくとも1つのアドレス範囲が、通常の動作状態では、読み取り専用として構成される、プログラム・コード用の少なくとも1つのアドレス範囲と、
    第2のパーティションから読み取られたデータを含む、他のデータ用の少なくとも1つのメモリ・アドレス範囲と
    を備える少なくとも1つのメモリ・モジュールと
    からなり、
    前記第1の仮想パーティション・ファミリの前記少なくとも1つのCPUが、プログラム・コード用の前記少なくとも1つのアドレス範囲内に記憶された前記コンピュータ実行可能コードだけを実行するように構成される、
    第1の仮想パーティション・ファミリと、
    第2の仮想パーティション・ファミリであって、
    少なくとも1つのパーティションと、
    少なくとも1つのCPUと、
    少なくとも1つのメモリ・モジュールと、
    ネットワークに結合することが可能な少なくとも1つの通信モジュールと
    からなる第2の仮想パーティション・ファミリと
    からなり、
    前記第1の仮想パーティション・ファミリの前記少なくとも1つのCPUが、前記第2の仮想パーティション・ファミリの前記少なくとも1つのCPU及び前記少なくとも1つのメモリ・モジュールにアクセスすることができるように構成され、
    前記第2の仮想パーティション・ファミリの前記少なくとも1つのCPUが、前記第1の仮想パーティション・ファミリの前記少なくとも1つのCPU又は前記第1の仮想パーティション・ファミリの前記少なくとも1つのメモリ・モジュールにアクセスすることができないように構成される、
    コンピュータ・システム。
  22. 前記コンピュータ・システムに接続された少なくとも1つのデバイスを利用し、オン又はオフにすることができるハードウェア機能を備え、前記ハードウェア・デバイスがオンでない限り、前記第1の仮想パーティション・ファミリの前記少なくとも1つのCPUが、第1の仮想パーティション・ファミリの前記プログラム・コード用の少なくとも1つのアドレス範囲内のデータを変更することはできない、請求項21に記載のコンピュータ・システム。
  23. 前記コンピュータ・システムに接続された少なくとも1つのデバイスからなり、オン位置及びオフ位置を含むハードウェア機能
    を備え、
    前記ハードウェア・デバイスが前記オン位置にない限り、前記第1の仮想パーティション・ファミリの前記少なくとも1つのCPUが、プログラム・コード用の前記第1の仮想パーティション・ファミリ・アドレス範囲内のデータを変更することはできず、
    前記少なくとも1つのハードウェア・デバイスが前記オン位置にある間、前記第1の仮想パーティション・ファミリの前記少なくとも1つのCPUが前記第2の仮想パーティション・ファミリにアクセスする能力が、無効化される、
    請求項21に記載のコンピュータ・システム。
  24. ハードウェア・デバイスが、仮想サーバをホストするサーバ・バンクと、インターネットなどのネットワークに接続するために使用されるルータとの間に配置され、
    書き込みが第1のパーティションによって開始された場合、又はハードウェア・スイッチによって許可された場合を除いて、コード又はデータが前記第1のパーティションに書き込まれ得ないように、前記ハードウェア・デバイスが、前記パーティション間、又は前記パーティションに接続された外部ユニットもしくはコンピュータ間のすべてのトラフィックを管理し、
    前記ハードウェア・デバイス自体が、前記ハードウェア・デバイスの構成スイッチがオン位置にあるときだけ、トラフィックに、3つの別個の動作である、読み取り及び書き込み、読み取り専用と、接続なし又は要求の拒否とのうちのいずれかを可能とさせる
    請求項21に記載のコンピュータ・システム。
  25. 前記コンピュータ・システムに接続された少なくとも1つのハードウェア・デバイスを備え、前記少なくとも1つのハードウェア・デバイスは、オン又はオフにすることができ、前記少なくとも1つのハードウェア・デバイスがオンでない限り、前記第1の仮想パーティション・ファミリの仮想構成が、変更され得ない、請求項21に記載のコンピュータ・システム。
  26. 第1のコンピュータであって、
    CPUと、
    メモリ・モジュールであって、
    プログラム・コード用の少なくとも1つのメモリ・アドレス範囲であって、前記プログラム・コードが、コンピュータ実行可能コードを含み、プログラム・コード用の前記少なくとも1つのメモリ・アドレス範囲が、ハードウェア回路によって改変から保護されるように構成される、プログラム・コード用の少なくとも1つのメモリ・アドレス範囲と、
    第2のコンピュータから読み取られたデータを含む、他のデータ用の少なくとも1つのメモリ・アドレス範囲と
    を備えるメモリ・モジュールと
    からなり、
    前記少なくとも1つのCPUが、プログラム・コード用の前記メモリ・アドレス範囲内の前記コンピュータ実行可能コードだけを実行するようにハードウェア的に構成される、
    第1のコンピュータと、
    第2のコンピュータであって、
    CPUと、
    ネットワークに結合するように構成された少なくとも1つの通信モジュールと
    からなる第2のコンピュータと、
    バスと
    からなり、
    前記第1のコンピュータと前記第2のコンピュータとが、前記バスを通してだけ相互接続され、
    前記第1のコンピュータが、前記バスを通して、プル・コマンドを実行して、データを前記第2のコンピュータから読み取り、前記データを前記第2のコンピュータから読み取られたデータに適用可能な前記少なくとも1つのメモリ・アドレス範囲だけに書き込むように、前記バスが、構成され、
    前記第1のコンピュータが、前記バスを通して、プッシュ・コマンドを実行して、データを前記第2のコンピュータに送るように、前記バスが、構成され、
    前記バスが、前記第2のコンピュータからのプッシュ・コマンド、又は前記第2のコンピュータからのプル・コマンドを受け入れることはできず、
    前記バスのハードウェア回路が、前記第2のコンピュータが、前記第1のコンピュータの前記CPU又は前記メモリ・モジュールにアクセスすることを許可しない、
    コンピュータ・システム。
  27. メモリ・アドレッシング構造が、
    プログラム・コード用の前記少なくとも1つのメモリ・アドレス範囲のための第1のメモリ・ユニットと、
    他のデータ用の前記少なくとも1つのメモリ・アドレス範囲のための第2のメモリ・ユニットと
    からなる、請求項26に記載のコンピュータ・システム。
  28. プログラム・コード用のメモリ・アドレッシング構造をマッピングする前記ハードウェア回路が、少なくとも1つのフィールド・プログラマブル・ゲート・アレイからなる、請求項26に記載のコンピュータ・システム。
  29. 他のデータ用の前記少なくとも1つのメモリ・アドレス範囲が、
    前記第2のコンピュータから読み取られたデータ用の少なくとも1つのメモリ・アドレス範囲と、
    他の第1のコンピュータ・データ用の少なくとも1つのメモリ・アドレス範囲と
    を備える、請求項26に記載のコンピュータ・システム。
  30. モリ・アドレッシング構造が、
    プログラム・コード用の前記少なくとも1つのメモリ・アドレス範囲のための第1のメモリ・ユニットと、
    前記第2のコンピュータから読み取られたデータ用の第2のメモリ・ユニットと、
    他の第1のコンピュータ・データ用の第3のメモリ・ユニットと
    からなる、請求項26に記載のコンピュータ・システム。
  31. オン又はオフにすることができる少なくとも1つの外部物理スイッチを備え、前記外部物理スイッチがオンのときだけ、前記第1のコンピュータの前記CPUが、プログラム・コード用の前記少なくとも1つのアドレス範囲内に記憶されたデータを変更することができる、請求項26に記載のコンピュータ・システム。
  32. プログラム・コード用の前記少なくとも1つのアドレス範囲が、オペレーティング・システムを含む、請求項26に記載のコンピュータ・システム。
  33. 少なくとも1つのデータ・ストアを備える、請求項26に記載のコンピュータ・システム。
  34. 前記第1のコンピュータが、少なくとも1つの入力/出力モジュールを備え、
    複数の入力/出力デバイスが、少なくとも1つのI/Oモジュールに結合される、
    請求項26に記載のコンピュータ・システム。
  35. 2つのコンピュータを接続するように設計されたバスであって、
    第1のコンピュータが、前記バスを通して、プル・コマンドを実行して、データを第2のコンピュータから読み取り、それを前記第1のコンピュータに配送するように、前記バスが、構成され、
    前記第1のコンピュータが、前記バスを通して、プッシュ・コマンドを実行して、データを前記第2のコンピュータに送るように、前記バスが、構成され、
    前記バスが、前記第2のコンピュータからのプッシュ・コマンド、又は前記第2のコンピュータからのプル・コマンドを許可せず、
    前記バスのハードウェア回路が、前記第2のコンピュータが、前記第1のコンピュータのCPU又はメモリ・モジュールにアクセスすることを許可しない、
    バス。
JP2017540073A 2017-02-20 2017-02-20 ハッキング耐性のあるコンピュータ設計 Active JP7027664B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2017/018578 WO2018151735A1 (en) 2017-02-20 2017-02-20 Hacking-resistant computer design

Publications (2)

Publication Number Publication Date
JP2020508499A JP2020508499A (ja) 2020-03-19
JP7027664B2 true JP7027664B2 (ja) 2022-03-02

Family

ID=63170619

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017540073A Active JP7027664B2 (ja) 2017-02-20 2017-02-20 ハッキング耐性のあるコンピュータ設計

Country Status (5)

Country Link
EP (1) EP3583538A4 (ja)
JP (1) JP7027664B2 (ja)
CN (1) CN110337651A (ja)
SG (1) SG11201706338WA (ja)
WO (1) WO2018151735A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111428235A (zh) * 2020-02-21 2020-07-17 华东师范大学 一种面向类mil-std-1553b的总线控制器决策防护方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007304954A (ja) 2006-05-12 2007-11-22 Sharp Corp メモリ保護機能を有するコンピュータシステム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3873260B2 (ja) * 1996-04-08 2007-01-24 ソニー株式会社 情報処理システム、並びに情報処理装置および方法
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US7845005B2 (en) * 2006-02-07 2010-11-30 International Business Machines Corporation Method for preventing malicious software installation on an internet-connected computer
US8571598B2 (en) * 2006-12-18 2013-10-29 Intel Corporation Method and apparatus for location-based wireless connection and pairing
CN101632083A (zh) * 2007-05-09 2010-01-20 国际商业机器公司 用于防止计算机系统被操控的方法和数据处理系统
US9152200B2 (en) * 2009-06-23 2015-10-06 Hewlett-Packard Development Company, L.P. Resource and power management using nested heterogeneous hypervisors
US8429735B2 (en) * 2010-01-26 2013-04-23 Frampton E. Ellis Method of using one or more secure private networks to actively configure the hardware of a computer or microchip
US11228427B2 (en) * 2014-02-11 2022-01-18 Ericsson Ab System and method for securing content keys delivered in manifest files
US9479331B2 (en) * 2014-08-20 2016-10-25 Apple Inc. Managing security in a system on a chip (SOC) that powers down a secure processor
US10063375B2 (en) * 2015-04-20 2018-08-28 Microsoft Technology Licensing, Llc Isolation of trusted input/output devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007304954A (ja) 2006-05-12 2007-11-22 Sharp Corp メモリ保護機能を有するコンピュータシステム

Also Published As

Publication number Publication date
EP3583538A1 (en) 2019-12-25
SG11201706338WA (en) 2018-09-27
WO2018151735A1 (en) 2018-08-23
CN110337651A (zh) 2019-10-15
EP3583538A4 (en) 2020-11-04
JP2020508499A (ja) 2020-03-19

Similar Documents

Publication Publication Date Title
US11061832B2 (en) Hacking-resistant computer design
US11507654B2 (en) Secure environment in a non-secure microcontroller
CN106605233B (zh) 使用处理器提供可信执行环境
US10972449B1 (en) Communication with components of secure environment
KR102465738B1 (ko) 하드웨어-가속화된 암호 기법을 위한 키들의 스레드 소유권
US10474589B1 (en) Method and apparatus for side-band management of security for a server computer
US9830457B2 (en) Unified extensible firmware interface (UEFI) credential-based access of hardware resources
EP3329416B1 (en) Secure input/output device management
US9886408B2 (en) Data access protection for computer systems
US20210397700A1 (en) Method and apparatus for isolating sensitive untrusted program code on mobile device
US10250595B2 (en) Embedded trusted network security perimeter in computing systems based on ARM processors
RU130429U1 (ru) Терминал и защищенная компьютерная система, включающая терминал
JP7027664B2 (ja) ハッキング耐性のあるコンピュータ設計
CN116881987A (zh) Pcie设备直通虚拟机的方法、装置及相关设备
CN112181860B (zh) 具有快闪存储器仿真功能的控制器及其控制方法
US10938857B2 (en) Management of a distributed universally secure execution environment
JP7244527B2 (ja) ストレージリソースの安全な共用

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200219

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210331

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210406

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210705

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20211227

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20220124

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20220124

R150 Certificate of patent or registration of utility model

Ref document number: 7027664

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150