web-dev-qa-db-ja.com

リング1およびリング2のメモリ保護アーキテクチャ

Ring 1とRing 2のメモリ保護 は基本的に現代のシステムでは使用されなくなったと聞いています。

しかし、物事を調べたところ、これらのリングが何らかの形でドライバーとドライバーアクセスに関連付けられていることがわかりました。

これらは本当に完全に段階的に廃止されていますか、またはこれらの2つの保護リングの要素がシステムOS内にまだ一般的に使用されていますか(たとえば、OSX、Windows 7-10、およびMintやUbuntuなどの一般的なLinuxディストリビューション)?もしそうなら、システムのこれらの部分へのアクセスを要求するためにどのような種類のコードを書いているでしょうか?それらが実際に段階的に廃止された場合、または段階的に廃止される場合、この変更の理由は何ですか?

2つのリングは、カーネル(リング0)とアプリケーションレイヤー(リング3)の間で、ミドルウェアのようなある種の中間層として機能すると思います...

6
Guy Incognito

4リングシステムはIntelが誰でも使用できるように設計されており、マイクロソフトは開発作業を簡素化し、セキュリティを犠牲にしてより高速なOSを提供するスキームを選択しました。 Microsoftに関する限り、当初は使用されていなかったため、段階的に廃止されていません。 MicrosoftはIntelに2リングシステムの作成を要求しなかった。 Intelは4リングの汎用システムを提供し、Microsoftはそれを適切な方法で使用することを決定しました。

Intelは、OSが悪意のあるドライバーによるシステムのクラッシュを防ぐための追加のセキュリティを提供する方法を提供しており、Microsoftは32ビットモードのオプションである別の方法( signed drivers )を選択しました。 64ビットモードでは必須です。マイクロソフトは、ドライバがバイナリに署名する前に、システムに影響を与えないことの検証を要求しています。 Windows 95/98がクラッシュすることで悪名が高かったことを思い出してください。これは、ドライバーがすべてバグ0であり、OSがそれらのドライバーから保護されていなかったためです。

2つ以上のリングレベルを使用する現代のオペレーティングシステムが現在も使用されていると思います。下位互換性の問題として、ハードウェアメーカーはこれら2つの「未使用」のリングを除外できません。 MicrosoftもメインのLinuxカーネルも2つ以上のレベルを使用しているからといって、リング1とリング2が提供する追加の保護を使用するOSを誰かが作成できなかったということではありません。悪意のあるソフトウェアまたは欠陥のあるソフトウェアからのハードウェア保護は、プログラムの動作を事前に確認できず、プロセッサがソフトウェアのすべての保護を行うには遅すぎた時代には絶対に必要でした。

マイクロソフトは Singularity と呼ばれる研究プロジェクトと、すべてのコードがリング0で実行され、メモリ内のすべてのページがセグメントセレクターを使用しないオペレーティングシステムもリリースしました。つまり、悪意のあるプログラムに対するハードウェア保護はありません。これにより、プログラムはカーネルコードを呼び出すためにリングレベルを通過する必要がなくなるため、速度が大幅に向上しますが、「unsafe」キーワードを使用せずに.NETで記述した場合と同様に、すべてのコードは静的に検証可能である必要があります。 OSは、プログラムが実行前に悪意がないことを静的に検証できます。完全なソースコードは無料で入手できます。

ハードウェア保護に依存するシステムが多すぎるため、ハードウェア保護が段階的に廃止されることはありません。ハードウェアベンダーとソフトウェアベンダーの間で調整された努力が必要であり、おそらく長期的には数十億または数兆ドルのコストがかかりますが、動作電力/速度などに関して大幅なコスト削減はありません。 2つのリング、0と3は、3つの主要な競合OS(Microsoft、Apple、Linux)しかない限り、近い将来使用される可能性があります。現状を混乱させるには、市場を大きく変える必要があります。

5
phyrfox

X86には4つの保護リングがありましたが、x86-64には2つしかありませんが、AMDはx86-64の設計時にリング1と2を削除しましたが、仮想化に関して問題が発生しました。IntelとAMDはVT- xとAMD-Vはそれぞれ、仮想化のためのリング-1を効果的に追加します。したがって、いいえ、それらのOSはいずれも追加のリングを使用していませんが、仮想化のために追加のリングを使用しています。

リング1と2の考え方は、特定のドライバーがシステム全体をクラッシュすることを許可せずに、追加のアクセス権を与えることができるということです。@ phyrfoxが書いた内容を繰り返すことはしません。

4つの保護リングすべてを使用するオペレーティングシステムの観点からは、OpenVMSがおそらく最も有名であり、これがセキュリティに対して非常に高い評価を得ている理由の1つです。 OpenVMSはもともと4リングのVAXアーキテクチャ用に作成されたもので、次に2リングのみの64ビットアーキテクチャであるAXP(Dec Alpha)に移植されましたが、PALコードを使用すると、必要な他の2をエミュレートするのはかなり簡単でした。 DECは、ハードウェアとソフトウェアの両方のすべての設計者の後に存在し、それ以降、4つの特権レベルを持つIA-64(Intel Itanium)に移植されました。

OpenVMSは現在x86-64に移植されており、追加の2つの保護リングをエミュレートすることの主な問題の1つになっています。

1
jaz9090