Přeskočit na obsah

Zabezpečení založené na způsobilosti

Z Wikipedie, otevřené encyklopedie

Zabezpečení založené na způsobilosti (Capability-based security) je koncept v návrhu zabezpečených výpočetních systémů, jeden ze stávajících modelů zabezpečení. Způsobilost (známé v některých systémech jako klíč) je přenosným a nepadělatelným projev autority. Odkazuje na hodnotu, která jedinečně odkazuje na objekt spolu s přidruženou sadou přístupových práv. Na základě svého držení procesem, který používá odkazovaný objekt, token způsobilosti uděluje tomuto procesu způsobilost komunikovat s objektem určitými způsoby. V systému založeném na způsobilostech je to uživatel, který musí předložit svou autorizační způsobilost (a prokázat, že je jejím vlastníkem) poskytovateli služeb, zatímco v tradičním systému ACL je to poskytovatel služeb, který musí kontrolovat, zda je uživatel přímo nebo nepřímo (například prostřednictvím role vlastněné uživatelem) oprávněn provádět požadovanou operaci na požadovaném prostředku. [1]

Termín „způsobilost“ pochází z článku z roku 1966, který napsali Dennis a Van Horn. Ackerman a Plummer poté pro PDP-1 vytvořili operační systém založený na těchto myšlenkách. Existovaly však dřívější systémy, které implementují funkce přímo do hardwaru. Všechny „akce“ v systémech, které využívají schopnosti, spočívají v implementaci a dosažení jejich nepadělatelnosti. [2]

Zabezpečení založené na způsobilosti bylo poprvé vyvinuto v kontextu operačních systémů a bylo aplikováno na programovací jazyky a síťové protokoly. IBM System / 38, který byl předchůdcem úspěšného AS / 400, používal funkce pro správu přístupu k objektům. V 90. letech kombinoval programovací jazyk E se zabezpečením založeném na způsobilostech s objektově orientovaným programováním a vytvořilo zabezpečení založené na objektových schopnostech, kde jsou odkazy na objekty v programovacím jazyce OO bezpečně v paměti. Zabezpečení založené na objektových schopnostech dobře zapadá do konvenční moudrosti týkající se dobrého OO designu a návrhových vzorů, protože oba zdůrazňují eliminaci globálních proměnných a vyhýbání se statickým metodám, které mají vedlejší účinky. E také zahrnoval zabezpečený protokol pro volání metod přes síť pomocí funkcí. Tento protokol byl přijat a aktualizován Cap'n Proto framewokem, který poskytuje efektivní binární protokol pro implementaci API na základě vzdálených volacích procedur. Funkce se nyní také objevují na populárních webech a rozhraních REST API, včetně těch od Google a Dropboxu. [3]

Zabezpečení založené na způsobilostech je podstatně lepší přístup k dnešnímu rámci ACL pro správu identit a přístupu pro vytváření zabezpečeného systému správy identit a přístupu.[4] Systému se způsobilostmi stačí pouhá skutečnost, že uživatelský program vlastní způsobilost, jenž jej opravňuje používat odkazovaný objekt v souladu s právy, která jsou specifikována touto způsobilostí. Teoreticky systém s funkcemi odstraňuje potřebu jakéhokoli seznamu řízení přístupu nebo podobného mechanismu tím, že poskytuje všem entitám všechny a pouze funkce, které skutečně budou potřebovat.

Díky způsobilostem mohou vývojáři velmi snadno psát kód, který podrobně definuje bezpečnostní oprávnění. Po vytvoření nelze pravidla v rámci způsobilosti změnit bez změny samotného klíče. To umožňuje vývojářům automaticky zachycovat Ambient Authority, protože způsobilost je vázána na samotný objekt.[4]

Způsobilost lze chápat jako dvojici (x, r), kde x je název objektu a r je množina výsad a práv. U každého subjektu můžeme uložit jeho způsobilost. A předmět prezentuje strážci způsobilosti k získání přístupu k objektu. Funkce je zcela přenositelná, nezáleží na tom, kdo tuto způsobilost představuje. Tento framework zcela eliminuje potřebu ověřování. S ACL jsme však předpokládali, že autentizace je neodpustitelná. Díky funkcím nyní potřebujeme způsob, jak učinit funkce neodpustitelnými. Na tom závisí úspěch mechanismu založeného na způsobilostech.[2]

Další funkce

[editovat | editovat zdroj]

Ve srovnání s předchozími přístupy autorizace založenými na způsobilostech, tato poskytuje následující další funkce, které představují zásadní inovaci oproti předchozím technikám založeným na způsobilostech:

  • Podpora delegování - Subjekt může udělit přístupová práva jinému subjektu a také udělit právo na další delegování všech nebo části udělených práv, hloubku delegování lze řídit v každé fázi.
  • Odvolání schopností - Způsobilosti mohou být zrušeny řádně autorizovanými subjekty, čímž se řeší jeden z problémů přístupů založených na způsobilostech v distribuovaných prostředích.
  • Granularity informací - Způsobilost může dokonce specifikovat dynamickou adaptaci udělených práv (např. specifikovat „úroveň podrobností“ pro přístupové právo ke čtení na konkrétní informaci). Tímto způsobem může poskytovatel služeb vylepšit své chování a data, která musí poskytnout, podle toho, co je uvedeno v tokenu schopností.[1]
  1. a b Sergio Gusmeroli, Salvatore Piccione, Domenico Rotondi, A capability-based security approach to manage access control in the Internet of Things, September 2013, https://www.sciencedirect.com/science/article/pii/S089571771300054X, 25-06-2024
  2. a b Schneider, Fred B., Capability-based Access Control Mechanisms, http://www.cs.cornell.edu/courses/cs513/2005fa/L08.html, 25-06-2024
  3. Capability-Based Security and Macaroons, https://freecontent.manning.com/capability-based-security-and-macaroons, 25-06-2024
  4. a b Leffew, Kevin, What is Capability-based Security?, Nov 7, 2019, https://medium.com/@kleffew/what-is-capability-based-security-227c6e5483a5, 25-06-2024