機能ベースのセキュリティは、セキュア コンピューティングシステムの設計における概念であり、既存のセキュリティ モデルの 1 つです。機能(一部のシステムではキーと呼ばれる) は、伝達可能で偽造不可能な権限トークンです。これは、関連付けられたアクセス権のセットとともにオブジェクトを参照する値を指します。機能ベースのオペレーティング システム上のユーザープログラムは、オブジェクトにアクセスするために機能を使用する必要があります。機能ベースのセキュリティとは、最小権限の原則に従ってユーザー プログラムが互いに機能を直接共有するように設計する原則、およびこのようなトランザクションを効率的かつ安全にするために必要なオペレーティング システム インフラストラクチャを指します。機能ベースのセキュリティは、従来の UNIX 権限とアクセス制御リストを使用するアプローチとは対照的です。
ほとんどのオペレーティング システムは機能に似た機能を実装していますが、通常、相互に信頼していない可能性のあるエンティティ間での機能の交換を、システム全体でアクセス権を付与および配布するための主な手段とするための十分なサポートは提供していません。これとは対照的に、機能ベースのシステムは、その目標を念頭に置いて設計されています。
導入
機能は、偽造可能な参照の代わりに使用することで、システム セキュリティを向上させるという目的を達成します。偽造可能な参照 (パス名など) はオブジェクトを識別しますが、そのオブジェクトやその参照を保持するユーザー プログラムに適切なアクセス権は指定しません。したがって、参照先のオブジェクトにアクセスしようとすると、通常はアクセス制御リスト(ACL)を使用して、要求元プログラムの周囲の権限に基づいてオペレーティング システムによって検証される必要があります。代わりに、機能を備えたシステムでは、ユーザー プログラムがその機能を所有しているという単なる事実により、その機能によって指定された権限に従って、参照先のオブジェクトを使用する権限が与えられます。理論上、機能を備えたシステムでは、すべてのエンティティに実際に必要な機能だけを与えることで、アクセス制御リストや同様のメカニズムが不要になります。
ケイパビリティは通常、アクセス権を指定するセクションと、アクセスするオブジェクトを一意に識別するセクションで構成される特権 データ構造として実装されます。ユーザーはデータ構造またはオブジェクトに直接アクセスするのではなく、ハンドルを介してアクセスします。実際には、ハンドルは従来のオペレーティング システムのファイル記述子(従来のハンドル) とほぼ同じように使用されますが、システム上のすべてのオブジェクトにアクセスします。ケイパビリティは通常、オペレーティング システムによってリストに格納され、プログラムがケイパビリティの内容を直接変更する (アクセス権を偽造したり、ケイパビリティが指すオブジェクトを変更したりする) ことを防ぐための何らかのメカニズムが採用されています。Plessey System 250など、一部のシステムはケイパビリティ ベースのアドレッシング(ケイパビリティのハードウェア サポート) に基づいています。
機能を持つプログラムは、機能を他のプログラムに渡したり、権限の低いバージョンに変換したり、削除したりするなど、機能に対して機能を実行できます。セキュリティ ポリシーの整合性を維持するために、オペレーティング システムは、システム内の機能に対して特定の操作のみが実行されるようにする必要があります。
この記事で説明する機能は、Portable Operating System Interface ( POSIX ) 1e/2c の「機能」と混同しないでください。後者は、プロセス間で転送できない粒度の粗い権限です。
例
機能は、保護されたオブジェクト参照として定義され、ユーザー プロセスが所有することで、そのプロセスに特定の方法でオブジェクトと対話する機能 (名前の由来) を付与します。これらの方法には、オブジェクトに関連付けられたデータの読み取り、オブジェクトの変更、オブジェクト内のデータのプロセスとしての実行、およびその他の考えられるアクセス権が含まれます。機能は、論理的には、特定のオブジェクトを一意に識別する参照と、これらの権限の 1 つ以上のセットで構成されます。
ユーザー プロセスのメモリ空間に次の文字列が存在するとします。
/etc/passwd
これはシステム上の一意のオブジェクトを識別しますが、アクセス権を指定するものではないため、機能ではありません。代わりに次の値のペアがあるとします。
/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 は真のケイパビリティ システム モデルを Unix 設計と POSIX API と融合しています。Capsicum ケイパビリティはファイル記述子の洗練された形式であり、プロセス間の委任可能な権限であり、プロセスなどの従来の POSIX 以外のオブジェクト タイプはケイパビリティを介して参照できます。Capsicum ケイパビリティ モードでは、プロセスはグローバル名前空間 (ファイルシステム名前空間など) を使用してオブジェクトを検索することができず、代わりに継承するか委任される必要があります。このシステムは FreeBSD にネイティブで存在しますが、他のシステムへのパッチも利用可能です。[2]
実装
機能ベースのセキュリティを採用している注目すべき研究および商用システムには、次のものがあります。
- Tahoe-LAFS、オープンソースの機能ベースのファイルシステム
- Tymshareで開発されたオペレーティングシステム、GNOSIS
- GNOSISの後継である
KeyKOS
- EROS、極めて信頼性の高いオペレーティングシステム、KeyKOSの後継
- CapROS は、EROS コードベースを商用利用向けにさらに開発するプロジェクトです。
- EROS、極めて信頼性の高いオペレーティングシステム、KeyKOSの後継
- GNOSISの後継である
KeyKOS
- ケンブリッジCAPコンピュータ
- Hydra (オペレーティング システム) 、カーネギー メロン大学のC.mmpプロジェクトの一部
- StarOS、カーネギーメロン大学のCM*プロジェクトの一部
- IBM System/38およびAS/400
- インテル iAPX 432
- プレッシーシステム250
- フレックス
- L4 マイクロカーネル ファミリ:
- Open Kernel Labs の OKL4
- NICTA の seL4
- ドレスデン工科大学のFiasco.OCとNOVA
- Amoeba分散オペレーティングシステム
- FreeBSD カプシカム[3] [4]
- ジェノデ[5]
- グーグルフクシア[6]
- ハーモニーOS ( OpenHarmony ) [7] [8] [9]
- ファントムOS [10]
- WebAssemblyシステム インターフェース (WASI)
参考文献
- ^ – Linuxプログラマーズマニュアル– 概要、規則、その他
- ^ – FreeBSDカーネル インターフェースマニュアル
- ^ 「カプシカム(4)」.
- ^ Capsicum: UNIX の実用的な機能。2024 年 7 月 9 日閲覧
- ^ 「Genode OS: オペレーティングシステムとソフトウェアのセキュリティに新風を吹き込む」Rudd-O.com 。 2023年12月21日閲覧。
- ^ 「GoogleのFuchsiaオペレーティングシステムは事実上あらゆるデバイスで動作します」。Engadget 2016年8月14日。2023年12月21日閲覧。
- ^ Děcký, Martin. 「マイクロカーネルベースおよび機能ベースのオペレーティングシステム」(PDF) . D3S . 2023年12月23日閲覧。
- ^ 「docs/en/application-dev/security/accesstoken-overview.md at master · openharmony/docs」。GitHub 。 2024年5月4日閲覧。
- ^ DARKNAVY (2024-06-11). 「AVSSレポート:iOS、Android、HarmonyOSのシステムセキュリティ攻撃能力の予備評価 - カーネル」。DARKNAVY 。 2024年7月4日閲覧。
- ^ Dziuba, Ted. 「ロシア人がファントムに乗ってOSの不滅の地位を獲得」The Register . 2023年12月31日閲覧。
- Levy, Henry M.、「Capability-Based Computer Systems」、Digital Equipment Corporation 1984 年。ISBN 0-932376-22-3 。電子版はここから入手できます。
- EROSプロジェクト
- E、機能セキュリティに基づいたプログラミング言語 (ERights.org)
- Mark S. Miller、Ka-Ping Yee、Jonathan Shapiro。Capability Myths Demolished、技術レポート SRL2003-02、Systems Research Laboratory、Johns Hopkins University。オンラインで入手可能。
- ケンブリッジ CAP コンピュータ、レヴィ、1988 年
さらに読む
- 機能ベースのアドレッシング: Theodore A. Linden (1976年12 月)。「セキュリティと信頼性の高いソフトウェアをサポートするオペレーティング システム構造」。ACM Computing Surveys。8 ( 4): 409–445。doi : 10.1145 /356678.356682。hdl : 2027/ mdp.39015086560037。ISSN 0360-0300。S2CID 16720589 。
- Li Gong、「安全なアイデンティティベースの機能システム」、sp、p. 56、1989 IEEE セキュリティとプライバシーに関するシンポジウム、1989
- 機能ベースのアドレス指定
- 機能ベースアドレス指定のハードウェア実装
- PDP-11/45の機能の実装
- IBM System/38 の能力ベースアドレッシングのサポート
- EROS: 高速機能システム
Linux の POSIX「機能」:
- POSIX 機能とファイル
- POSIX ファイル機能: ルート権限の分割
- ルート権限を非特権にする
- POSIX ファイル機能に関連するセキュリティ問題と新たなリスク
- Linux マニュアルページ「capabilities(7)」
- Linuxの機能を活用する
外部リンク
- 「ケイパビリティとは何ですか?」
- 「能力神話の打破」のレビュー
- Sound Bytes による能力理論
