Model objektových schopností - Object-capability model

Model schopností objektu je model zabezpečení počítače . Schopnost popisuje nepřenosné právo k provedení jedné (nebo více) operací na daném objektu. Lze jej získat následující kombinací:

  • Neodpustitelný odkaz (ve smyslu odkazů na objekty nebo chráněných ukazatelů), který lze odesílat ve zprávách.
  • Zpráva, která určuje operaci, která má být provedena.

Model zabezpečení spoléhá na to, že neumí vytvářet odkazy.

  • Objekty mohou interagovat pouze zasíláním zpráv o referencích.
  • Referenci lze získat:
  1. Počáteční podmínky: V počátečním stavu popisovaného výpočetního světa může objekt A již obsahovat odkaz na objekt B.
  2. Rodičovství: Pokud A vytvoří B, v tu chvíli A získá jediný odkaz na nově vytvořené B.
  3. Nadace: Pokud A vytvoří B, B se narodí s tou podmnožinou referencí A, kterou se A rozhodl obdařit.
  4. Úvod: Pokud má A odkazy na B i C, A může poslat B zprávu obsahující odkaz na C. B si může tento odkaz uchovat pro pozdější použití.

V modelu schopnosti objektu jsou všechny výpočty prováděny podle výše uvedených pravidel.

Výhody, které motivují objektově orientované programování , jako je zapouzdření nebo skrývání informací , modularita a oddělení problémů , odpovídají bezpečnostním cílům, jako je oddělování nejmenších oprávnění a privilegií při programování založeném na schopnostech.

Model objektové schopnosti poprvé navrhli Jack Dennis a Earl C. Van Horn v roce 1966.

Mezery v objektově orientovaných programovacích jazycích

Některé objektově založené programovací jazyky (např. JavaScript , Java a C# ) poskytují způsoby přístupu k prostředkům jinými způsoby, než podle výše uvedených pravidel, včetně následujících:

  • Přímý přiřazení do proměnných instance objektu v Java a C #.
  • Přímá reflexní kontrola metadat objektu v Javě a C#.
  • Všudypřítomná schopnost importovat primitivní moduly, např. Java.io.File, které umožňují externí efekty.

Takové použití nepopiratelné autority porušuje podmínky modelu objektových schopností. Caja a Joe-E jsou varianty JavaScriptu a Javy, které ukládají omezení k odstranění těchto mezer.

Výhody objektových schopností

Počítačový vědec E. Dean Tribble uvedl, že v inteligentních smlouvách řízení přístupu na základě identity nepodporovalo dobře dynamicky se měnící oprávnění ve srovnání s modelem objektové schopnosti. Analogoval model ocap tak, že dal komorníkovi klíč od auta, aniž by předal právo vlastnit auto.

Strukturální vlastnosti systémů schopností objektů upřednostňují modularitu v návrhu kódu a zajišťují spolehlivé zapouzdření při implementaci kódu.

Tyto strukturální vlastnosti usnadňují analýzu některých bezpečnostních vlastností programu nebo operačního systému s podporou objektů. Některé z nich - zejména vlastnosti toku informací - lze analyzovat na úrovni odkazů na objekty a připojení, nezávisle na jakékoli znalosti nebo analýze kódu, který určuje chování objektů. V důsledku toho lze tyto vlastnosti zabezpečení zavést a udržovat za přítomnosti nových objektů, které obsahují neznámý a případně škodlivý kód.

Tyto strukturální vlastnosti vyplývají ze dvou pravidel upravujících přístup ke stávajícím objektům:

1) Objekt může poslat zprávu B , pouze pokud objekt uchovává odkaz B .
2) Objekt může získat odkaz na C pouze tehdy, pokud objekt obdrží zprávu obsahující odkaz na C .

V důsledku těchto dvou pravidel může objekt získat odkaz na jiný objekt pouze prostřednictvím již existujícího řetězce odkazů. Stručně řečeno, „Pouze konektivita plodí konektivitu“.

Glosář souvisejících pojmů

systém objektových schopností
Výpočetní systém, který implementuje principy popsané v tomto článku.
objekt
Objekt má místní stav a chování. Objekt v tomto smyslu je subjekt i objekt ve smyslu použitém v literatuře řízení přístupu.
odkaz
Neodpustitelný komunikační kanál (chráněný ukazatel, neprůhledná adresa), který jednoznačně označuje jeden objekt a poskytuje oprávnění k odesílání zpráv tomuto objektu.
zpráva
Co je odesláno na referenci. V závislosti na systému mohou nebo nemusí být zprávy prvotřídními objekty.
žádost
Operace, při které je zpráva odeslána na odkaz. Po přijetí zprávy bude mít příjemce přístup ke všem referencím obsaženým ve zprávě.
útlum
Běžný vzorový design v systémech schopností objektu: vzhledem k jedné referenci na objekt vytvořte další odkaz na proxy objekt s určitými bezpečnostními omezeními, jako je například povolení přístupu pouze pro čtení nebo povolení zrušení. Objekt proxy provádí bezpečnostní kontroly u zpráv, které přijímá, a předává všechny povolené. Hluboký útlum se týká případu, kdy je stejný útlum aplikován přechodně na jakékoli objekty získané prostřednictvím původního zeslabeného předmětu, typicky použitím "membrány".

Implementace

Téměř všechny historické systémy, které byly popsány jako „systémy schopností“, lze modelovat jako systémy objektových schopností. (Všimněte si však, že některá použití výrazu „schopnosti“ nejsou v souladu s modelem, jako například „schopnosti“ POSIX.)

KeyKOS , EROS , Integrity (operační systém) , CapROS , Coyotos , seL4 , OKL4 a Fiasco.OC jsou zabezpečené operační systémy, které implementují model objektových schopností.

Jazyky, které implementují možnosti objektu

Viz také

Reference