Capability-based security
Capability ないし key (「鍵」)はセキュアなコンピューティングにおける中核となるコンセプトである。Capability とは、あるオブジェクトを参照するための値と、関連するアクセス権の集合とをセットにしたものである。capability-basedなOS上では、ユーザプログラムは capability なしにオブジェクトにアクセスすることができない。
Capability は、典型的には特権を表すデータ構造体 (privilege data structure) として実装される。これはアクセス権を詳細に明示したセクションと、アクセスの対象となるオブジェクトを一意に特定するためのセクションから成る。実際には、capability の使用法は伝統的なOSにおけるファイル記述子(ファイルデスクリプタ)の使用法に良く似ている。しかし伝統的なOSとは違い、システム内のいかなるオブジェクトに対しても capability が要求される。Capability はOS内にリストの形で格納されるのが典型例であり、その領域は(ユーザからは)直接操作できないように保護され、参照されるオブジェクトの挿げ替えやアクセス権の乗っ取りなどを防ぐようになっている。
Capability を扱うプログラムは、それらに関数を適用することができ、他のプログラムに渡したり、更に制約の多い(少ない特権しか持たない)バージョンに変換したり、消滅させたりできる。