コンピュータサイエンスにおいて、ケイパビリティベースアドレッシングは、ケイパビリティベースセキュリティの効率的な実装として、一部のコンピュータでメモリへのアクセスを制御するために使用される方式です。ケイパビリティベースアドレッシング方式では、ポインターは、メモリ内の場所と、メモリ場所で実行できる一連の操作を定義するアクセス権の両方を指定する保護されたオブジェクト(ケイパビリティ)に置き換えられます。 [1]ケイパビリティは、カーネルまたは権限のある他の特権プロセスによってのみ実行できる特権命令を使用することによってのみ作成または変更できます。したがって、カーネルは、別のアドレス空間を使用する必要がなく、したがってアクセスが発生したときに コンテキストスイッチを必要とすることなく、アプリケーションコードと他のサブシステムによるメモリの必要最小限の部分へのアクセスを制限し(適切な場合は書き込みアクセスを無効にし)、
実践的な実装
実装には 2 つの手法が利用できます。
- 機能は、それを使用するプロセスによって書き込むことができない特定のメモリ領域に保存する必要があります。たとえば、Plessey System 250 では、すべての機能が機能リスト セグメントに保存される必要がありました。
- 特定の場所が機能であることを示す追加ビット(スーパーバイザー モードでのみ書き込み可能)でメモリを拡張します。これは、Burroughs の大規模システムでセグメント記述子を保護するためにタグ ビットを使用する方法を一般化したものであり、 IBM System/38で機能を保護するために使用されました。
IBM System/38 および AS/400 における機能アドレッシング
System/38 CPFオペレーティング システムは、許可されたポインタと許可されていないポインタの 2 種類のオブジェクト ポインタをサポートしていました。前者は、プラットフォームの機能ベース アドレッシングの実装でした。[2]両方の種類のポインタは特権命令を使用してのみ操作でき、オブジェクト許可 (アクセス権) がポインタの内容にエンコードされているかどうかのみが異なっていました。許可されていないポインタはオブジェクト許可をエンコードせず、オブジェクトへのアクセスが許可されているかどうかを判断するために、オペレーティング システムがオブジェクトの許可を別途確認する必要がありました。許可されたポインタはオブジェクト許可をエンコードします。つまり、ポインタを所有することはアクセスを暗示し、オペレーティング システムが許可を別途確認する必要はありませんでした。許可されたポインタは設計上取り消し不可であり、オブジェクトの許可が変更されても、既存の許可されたポインタにエンコードされた許可は変更されません。
AS/400用のOS/400オペレーティング システムの初期バージョンでは、許可されたポインターと、拡張機能による機能ベースのアドレス指定もサポートされていました。ただし、許可されたポインターは、取り消し不可能な性質がセキュリティ上の問題と見なされるようになったため、OS/400 の V1R3 リリースで削除されました。[3]それ以降の OS/400 のすべてのバージョン (後の IBM i) は、機能ベースのアドレス指定をサポートしない許可されていないポインターのみに依存しています。
機能ベースアドレス指定を採用したシステムの年表
- 1969:システム 250 –プレッシー社
- 1970~77年: CAPコンピュータ–ケンブリッジ大学コンピュータ研究所
- 1978: System/38 – IBM
- 1980:フレックスマシン–王立信号・レーダー研究所(RSRE) マルバーン
- 1981:インテル iAPX 432 – インテル
- 2014: CHERI ( CおよびC++でもより安全なプログラミングのために既存のISAに機能を追加)
- 2020: CHEx86
- 2022: ARM Morello ( CHERI 機能を備えたAArch64 )
参考文献
- ^ Levy, Henry M. (2014-05-16). 「Capability and Object-Based System Concepts」(PDF) . Capability-Based Computer Systems . Digital Press. p. 3-4. ISBN 978-1-4831-0106-4。
- ^ Levy, Henry M. (2014-05-16). 「IBM System/38」(PDF) .能力ベースコンピュータシステム. Digital Press. ISBN 978-1-4831-0106-4。
- ^ ソルティス、フランク (1997)。AS/400 の内部 – AS400e シリーズ (第 2 版)。デューク プレス。ISBN 978-1-882419-66-1。
さらに読む
- Fabry, RS (1974). 「Capability-based addressing」. Communications of the ACM . 17 (7): 403–412. doi : 10.1145/361011.361070 . S2CID 5702682.
- Wulf, W. ; Cohen, E.; Corwin, W.; Jones, A.; Levin, R.; Pierson, C.; Pollack, F. (1974 年 6 月)。「HYDRA: マルチプロセッサ オペレーティング システムのカーネル」。Communications of the ACM。17 ( 6): 337–345。doi : 10.1145 / 355616.364017。ISSN 0001-0782。S2CID 8011765 。
- Denning, PJ ( 1976 年 12 月)。「フォールト トレラント オペレーティング システム」。ACM コンピューティング調査。8 (4): 359–389。doi : 10.1145/356678.356680。ISSN 0360-0300。S2CID 207736773 。
- Levy, Henry M. (1984)。ケイパビリティベースのコンピュータシステム。マサチューセッツ州メイナード:デジタルプレス。ISBN 978-0-932376-22-0。
- Linden, Theodore A. (1976 年 12 月)。「セキュリティと信頼性の高いソフトウェア をサポートするオペレーティング システム構造」。ACMコンピューティング調査。8 (4): 409–445。doi : 10.1145 /356678.356682。hdl : 2027/ mdp.39015086560037。ISSN 0360-0300。S2CID 16720589 。米国NISTの報告書と同じ文書
- Berstis, Viktors ( 1980年 5 月 6 ~ 8 日)。「IBM System/38 におけるデータのセキュリティと保護」。第 7 回コンピュータ アーキテクチャに関する年次シンポジウムの議事録。ラ ボール、米国。pp. 245 ~ 252。doi : 10.1145/800053.801932。
- Sincoskie, W. David ; Farber, David J. (1980 年 7 月)。「SODS/OS: IBM Series/1 向け分散オペレーティング システム」。ACM SIGOPSオペレーティング システム レビュー。14 (3): 46–54。doi : 10.1145 /850697.850704。S2CID 14245116 。
- Myers, GJ ; Buckingham, BRS (1980 年 10 月)。「機能ベース アドレッシングのハードウェア実装」。ACM SIGOPSオペレーティング システム レビュー。14 (4): 13–25。doi : 10.1145 /641914.641916。S2CID 17390439 。
- Houdek, ME; Soltis, FG ; Hoffman, RL (1981 年 5 月)。「IBM System/38 の能力ベース アドレス指定のサポート」。第 8 回 ACM 国際コンピュータ アーキテクチャ シンポジウムの議事録。ACM/IEEE。341 ~ 348 ページ。
- Buzzard, GD; Mudge, TN (1983 年 8 月)。オブジェクトベースのコンピュータ システムと Ada プログラミング言語 (レポート)。ミシガン大学 – コンピュータ リサーチ ラボおよびロボット リサーチ ラボ、電気およびコンピュータ エンジニアリング学部。hdl :2027.42/3992。
外部リンク
- 「能力アプローチの普及について」。cap -talk (メーリングリスト)。2013-04-14 にオリジナルからアーカイブ。2007-07-16に取得。
