機能ベースのセキュリティ

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

機能ベースのセキュリティ、既存のセキュリティモデルの1つであるセキュアコンピューティングシステムの設計における概念です。機能(のようないくつかのシステムで知られているキーは)通信、偽造されたトークンの権限。これは、関連するアクセス権のセットとともにオブジェクト参照する値を参照ます機能ベースのオペレーティングシステムユーザープログラムは、機能を使用してオブジェクトにアクセスする必要があります。機能ベースのセキュリティとは、ユーザープログラムが相互に機能を直接共有するようにユーザープログラムを設計する原則を指します。 最小特権の原則、およびそのようなトランザクションを効率的かつ安全にするために必要なオペレーティングシステムインフラストラクチャ。機能ベースのセキュリティは、階層的な保護ドメインを使用するアプローチとは対照的です。

ほとんどのオペレーティングシステムは機能に似た機能を実装していますが、通常、相互に信頼できない可能性のあるエンティティ間で機能を交換して、システム全体にアクセス権を付与および配布するための主要な手段を提供するのに十分なサポートを提供していません。対照的に、機能ベースのシステムは、その目標を念頭に置いて設計されています。

この記事で説明したような機能をと混同すべきではないPOSIX 1E / 2C「機能」。後者は、プロセス間で転送できない大まかな特権です。

はじめに

機能は、偽造可能な参照の代わりに使用されることにより、システムのセキュリティを向上させるという目的を達成します。偽造可能な参照(たとえば、パス名)はオブジェクトを識別しますが、そのオブジェクトとその参照を保持するユーザープログラムに適切なアクセス権は指定しません。したがって、参照されるオブジェクトにアクセスしようとする試みは、通常はアクセス制御リストを使用して、要求元のプログラムの周囲の権限基づいて、オペレーティングシステムによって検証される必要があります。(ACL)。代わりに、機能を備えたシステムでは、ユーザープログラムがその機能を所有しているという事実だけで、その機能によって指定された権限に従って、参照されるオブジェクトを使用する資格が与えられます。理論的には、機能を備えたシステムは、すべてのエンティティに実際に必要な機能のみを提供することにより、アクセス制御リストまたは同様のメカニズムの必要性を排除します。

機能は通常、アクセス権を指定するセクションと、アクセスするオブジェクトを一意に識別するセクションで構成される特権 データ構造として実装されます。ユーザーはデータ構造やオブジェクトに直接アクセスするのではなく、ハンドルを介してアクセスします。実際には、これは従来のオペレーティングシステム(従来のハンドル)のファイル記述子のように使用されますが、システム上のすべてのオブジェクトにアクセスするために使用されます。機能は通常、オペレーティングシステムによってリストに格納され、プログラムが機能の内容を直接変更するのを防ぐためのメカニズムが用意されています(アクセス権を偽造したり、オブジェクトが指すオブジェクトを変更したりするため)。一部のシステムは、機能ベースのアドレス指定にも基づいています(機能のハードウェアサポート)、Plessey System250など

機能を備えたプログラムは、他のプログラムへの受け渡し、特権の低いバージョンへの変換、削除などの機能を実行できます。オペレーティングシステムは、セキュリティポリシーの整合性を維持するために、システムの機能に対して特定の操作のみが発生することを保証する必要があります。

機能は、保護されたオブジェクト参照として定義され、ユーザープロセスが所有することにより、特定の方法でオブジェクトと対話する機能(したがって名前)をそのプロセスに付与します。これらの方法には、オブジェクトに関連付けられたデータの読み取り、オブジェクトの変更、プロセスとしてのオブジェクト内のデータの実行、およびその他の考えられるアクセス権が含まれる場合があります。この機能は、論理的には、特定のオブジェクトを一意に識別する参照と、これらの権限の1つ以上のセットで構成されます。

ユーザープロセスのメモリスペースに、次の文字列が存在するとします。

/ etc / passwd

これはシステム上の一意のオブジェクトを識別しますが、アクセス権を指定しないため、機能ではありません。代わりに、次の2つの値があるとします。

/ etc / passwd
O_RDWR

これにより、一連のアクセス権とともにオブジェクトが識別されます。ただし、ユーザープロセスがこれらの値を所有していても、そのアクセスが実際に正当であるかどうかについては何も述べられていないため、これはまだ機能ではありません

ここで、ユーザープログラムが次のステートメントを正常に実行するとします。

int  fd  =  open "/ etc / passwd"  O_RDWR );

変数にfdは、プロセスのファイル記述子テーブル内のファイル記述子のインデックスが含まれるようになりました。このファイル記述子機能です。プロセスのファイル記述子テーブルに存在することは、プロセスが実際にオブジェクトへの正当なアクセス権を持っていることを知るのに十分です。この配置の重要な機能は、ファイル記述子テーブルがカーネルメモリ内にあり、ユーザープログラムで直接操作できないことです。

プロセス間の共有

従来のオペレーティングシステムでは、プログラムは、最初の2つの例のような参照を使用して、相互に通信したり、ストレージと通信したりすることがよくあります。多くの場合、パス名はコマンドラインパラメータとして渡され、ソケットを介して送信され、ディスクに保存されます。これらの参照は機能ではないため、使用する前に検証する必要があります。これらのシステムでは、中心的な質問は「誰の権限が評価される特定の参照であるか」です。これは、特に2つの異なる権限を持つエンティティに代わって動作する必要があるプロセスにとって重要な問題になります。それらは、混乱した副問題として知られるプログラミングエラーの影響を受けやすくなり、非常に頻繁にセキュリティホールが発生します。

機能ベースのシステムでは、機能自体は、それらの機能の整合性を維持するためにオペレーティングシステムによって認識されているメカニズムを使用して、プロセスとストレージの間で受け渡されます。

この問題を解決するための1つの新しいアプローチには、直交する永続的なオペレーティングシステムの使用が含まれます。このようなシステムでは、エンティティを破棄してその機能を無効にする必要がないため、後でこれらの機能を復元するためにACLのようなメカニズムが必要です。オペレーティングシステムは、揮発性と不揮発性の両方のすべてのストレージに含まれる機能の整合性とセキュリティを常に維持します。ほとんどのオペレーティングシステムの場合のように、ユーザープログラムに実行を要求するのではなく、すべてのシリアル化タスクを単独で実行することによって部分的に実行します。ユーザープログラムはこの責任から解放されるため、法的機能のみを複製したり、を使用してアクセス要求を検証したりするために、ユーザープログラムを信頼する必要はありません。アクセス制御メカニズム。実装例は、1980年代初頭のFlexマシンです。

POSIX機能

POSIXドラフト1003.1eは、「機能」と呼ばれる権限の概念を指定しています。ただし、POSIX機能はこの記事の機能とは異なります。POSIX機能はどのオブジェクトにも関連付けられていません。CAP_NET_BIND_SERVICE機能を持つプロセスは、1024未満の任意のTCPポートでリッスンできます。このシステムはLinuxにあります。[1]

対照的に、Capsicumは、真の機能システムモデルをUNIX設計およびPOSIXAPIとハイブリッド化します。Capsicum機能は、ファイル記述子の洗練された形式であり、プロセス間の委任可能な権利であり、プロセスなどの従来のPOSIXを超える追加のオブジェクトタイプは、機能を介して参照できます。Capsicum機能モードでは、プロセスはグローバル名前空間(ファイルシステム名前空間など)を利用してオブジェクトを検索することができず、代わりにそれらを継承または委任する必要があります。このシステムはFreeBSDにネイティブにありますが、パッチは他のシステムでも利用できます。[2]

実装

機能ベースのセキュリティを採用している注目すべき研究および商用システムには、次のものがあります。

参考文献

  1. ^ capabilities(7)  –  Linuxプログラマーマニュアル–概要、規則、その他
  2. ^ capsicum(4)  -  FreeBSDのカーネルインタフェースのマニュアル
  3. ^ https://www.freebsd.org/cgi/man.cgi?capsicum(4)
  4. ^ https://www.cl.cam.ac.uk/research/security/capsicum/papers/2010usenix-security-capsicum-website.pdf
  5. ^ 「GenodeOS:オペレーティングシステムとソフトウェアセキュリティの新鮮な空気の息吹」
  6. ^ https://www.engadget.com/2016/08/13/google-fuchsia- Operating-system /

さらに読む

LinuxのPOSIX「機能」:

外部リンク