Capabilities


  Share  
|


Conceptueel, een mogelijkheid is, zoals de rij van een toegangscontrole matrix. Elk onderwerp is gekoppeld aan een reeks van paren, met elk paar met een voorwerp en een set van rechten. Het onderwerp in verband met deze lijst kan toegang tot de genoemde object in een van de manieren aangegeven door de genoemde rechten. Meer formeel:

Laat O de verzameling van objecten, en R de set van rechten, van een systeem. Een lijst van bekwaamheden C is een set van paren c = ((o, r): o opgenomen in O, R in R). Laat dop een functie die de lijst van bekwaamheden c geassocieerd met een bepaald onderwerp bepaalt s. De interpretatie van de lijst van bekwaamheden dop (s) = ((oi, RI): 1 <= i <= n) is dat onderworpen is, kan de toegang oi met behulp van enig recht op ri.

We korten "lijst van bekwaamheden" als C-lijst.

Mogelijkheden vatten object identiteit. Wanneer een proces een mogelijkheid biedt voor rekening van een gebruiker, het besturingssysteem onderzoekt de mogelijkheid om zowel het object en de toegang tot dat het proces recht heeft. Dit weerspiegelt hoe capabiliies voor het geheugen beheer werk; de locatie van het object in het geheugen is ingekapseld in het vermogen. Zonder een vermogen, kan het proces niet de naam van het object op een manier die zal geven het de gewenste toegang.

VOORBEELD: Om een UNIX-bestand te openen, een proces geeft de bestandsnaam aan de kernel. De kernel krijgt inode nummer van het bestand door het oplossen van de naam door het bestand hiërarchie. Zodra de inode wordt verkregen, het systeem bepaalt of de gevraagde toegang moet worden verleend met behulp van de controle op de toegang machtigingen. Als de toegang wordt verleend, het besturingssysteem geeft een mogelijkheid genoemd een file descriptor. De mogelijkheid is strak gebonden aan het bestand object, dus zelfs als het bestand wordt verwijderd en een nieuw bestand met dezelfde naam is aangemaakt, de file descriptor verwijst nog steeds naar het vorige bestand.


De 'codewoorden' van Iliffe zijn vergelijkbaar met vermogens. "mogelijkheden" zijn een manier om toegang tot objecten in het geheugen of secundaire opslag controle. Fabry gegeneraliseerde dit idee om de mogelijkheden van-uitvoering op basis van de aanpak.

De architectuur van de vermogens is interessanter dan die van de lijsten toegangscontrole. De Access Control List en het proces identiteit onder de controle van het besturingssysteem. Bij afwezigheid van gebreken, kan de gebruiker processen veranderen ze alleen met een beroep op het besturingssysteem diensten. Moet echter een proces identificeren van een mogelijkheid om het te gebruiken, zodat het proces moet enige controle over de capaciteiten hebben. Als het proces een vermogen kan smeden en gebruik het dan, toegangscontrole mislukken.

Implementatie van het vermogen

Drie mechanismen worden gebruikt om mogelijkheden te beschermen: tags, beschermd geheugen, en cryptografie.

Een tagged architectuur heeft een reeks van bits die bij elke hardware-woord. De tag heeft twee toestanden: ingeschakeld en uitgeschakeld. Als de tag is ingesteld, kan een gewoon proces lezen, maar niet wijzigen het woord. Als de tag unset is, kan een gewone proces lezen en wijzigen van het woord. Verder kan een gewone proces geen verandering in de toestand van de tag, de verwerker moet worden in een bevoorrechte modus te doen.

VOORBEELD: De B5700 gebruikt een tagged architectuur (hoewel het geen vermogens gebruiken als bescherming mechanismen). De tag veld bestond uit drie bits en aangegeven hoe de architectuur was om het woord te behandelen (aanwijzer, tem, type, enzovoort).


Meer gebruikelijk is het gebruik van de bescherming bits geassocieerd met paginering of segmentatie. Alle mogelijkheden zijn opgeslagen in een pagina (segment) dat het proces kan lezen maar niet wijzigen. Dit vereist geen speciale hardware-doeleinden, andere dan die gebruikt door de memory management regeling. Maar het proces moet referentie vermogens indirect, meestal door middel van pointers, in plaats van rechtstreeks.

VOORBEELD: Het GLB-systeem niet mogelijk processen om het segment waarin de instructies lag te wijzigen. Ook opgeslagen mogelijkheden in dit segment. Een hek register gescheiden instructies en mogelijkheden.


Wanneer het proces een mogelijkheid biedt aan het besturingssysteem, het systeem recomputes eerst de cryptografische controlesom in verband met de mogelijkheid. Vervolgens codeert de checksum hetzij met behulp van de cryptografische sleutel en vergelijkt deze met de ene opgeslagen in het vermogen, of ontcijfert de checksum die met de mogelijkheid en vergelijkt deze met de berekende controlesom. Als ze overeenkomen, is de mogelijkheid ongewijzigd. Zo niet, is de mogelijkheid verworpen.

VOORBEELD: de amoebe-systeem is een gedistribueerd systeem dat gebruik maakt van mogelijkheden om objecten naam. Op creatie, een vermogen dat overeenkomt met het object wordt geretourneerd. Voor het gebruik van het object, het programma presenteert de bijbehorende mogelijkheden. De mogelijkheid codeert de naam van het object (24 bits), de server die zij (48 bits) gemaakt, en de rechten (8 bits) in een 128-bits hoeveelheid. Aanvankelijk zijn alle rechten ingeschakeld.

De laatste 48 bits worden gebruikt als een controle veld. Dit is een willekeurig getal gekozen moment van de creatie. (Omdat de mogelijkheid is gegeven aan de eigenaar van het object, kan de eigenaar van de rechten vrij te wijzigen zonder gevaar.) Het nummer wordt opgeslagen in een tabel die overeenkomt met de server die het object gemaakt, dus wanneer de mogelijkheid wordt aangeboden aan die server, zij controleert of de willekeurige nummer correct is. Een aanvaller zou moeten weten de random number, om in staat zijn om een vermogen te smeden. Echter, zoals Tanenbaum merkt, is het systeem kwetsbaar als er een mogelijkheid is bekendgemaakt.


Kopiëren en Versterker Capabilities

Het vermogen om mogelijkheden te kopiëren impliceert de mogelijkheid om rechten te geven. Om processen te voorkomen dat klakkeloos rechten weg te geven, is een kopie vlag geassocieerd met mogelijkheden. Een proces kan niet een kopie van een mogelijkheid om een ander proces, tenzij de kopie vlag is ingesteld. Als het proces van het vermogen heeft te kopiëren, kan de kopie vlag worden uitgeschakeld (naar keuze van zowel het proces of de kernel).

VOORBEELD: Amoeba maakt gebruik van een interessant programma. Het heeft geen controle over het kopiëren van rechten. Echter, om die van de toepassingen die gekopieerd rechten kunnen worden gebracht zijn beperkt.

Stel dat de gebruiker mat wil geven hulst gebruiker om een object dat hij eigenaar lezen. Hij geeft zijn vermogen om dat object naar de server en verzoekt om een beperkte capaciteit om te lezen. De server creëert een nieuwe mogelijkheid voor het object, maar met alleen het lezen rechter ingeschakeld. De rechten veld is nu alle 0's, behalve voor de lees-bit, dat is een 1. Dit is xor'ed met de willekeurige controle en input voor een cryptografische hash-functie. De output is de nieuwe willekeurig nummer voor deze mogelijkheid. De beperkte mogelijkheid is weer terug naar de mat gepasseerd, die geeft het aan Holly.

Wanneer Holly maakt gebruik van het vermogen, de server merkt op dat ten minste een beetje in de rechten veld is 0. Het neemt de rechten veld, xor is het met de random nummer van de oorspronkelijke capaciteit (opgeslagen in de tabellen), en hashes het resultaat. Als de resulterende hash de random nummer in de capaciteit wedstrijden, is de mogelijkheid geldig is, anders is het niet.


Versterking is de verhoging van privileges. Het idee van modulair programmeren, en vooral van abstracte data types, vereist dat de rechten van een proces heeft meer dan een object worden versterkt.

Om te begrijpen waarom, rekening met de volgende abstracte data type voor een teller.

module tegen te gaan; procedure entry aanwas (var ctr: integer); beginnen ctr: = CTR + 1; einde; functie binnenkomst getval (CTR: integer); beginnen getval: = CTR; einde; procedure binnenkomst duidelijk (var ctr: integer); beginnen ctr: = 0; end; einde.

Stel x is verklaard een teller. De regels van abstracte data types toestaan dat object alleen worden geopend door de teller module. Dus, in eerste instantie de mogelijkheid voor x zou bevatten het recht op de teller module beroepen alleen. Maar wanneer het object wordt doorgegeven aan de balie module, moet het proces nu kunnen lezen en schrijven naar dat object. Daarom moet de capaciteit tijdelijk worden versterkt, terwijl de module teller actief is.

VOORBEELD: De baanbrekende systeem HYDRA gebruikt amplificatie sjablonen de rechten van een proces 'versterken. Aangesloten bij elke procedure in de module is een sjabloon dat de rechten van de capaciteiten als nodig toevoegt. Bijvoorbeeld, de sjabloon voor de getval procedure zou toevoegen leesrechten terwijl de procedure actief was. Het sjabloon voor de aanwas procedure zou toevoegen lees-en schrijfrechten.


VOORBEELD: De Intel iAPX 432 systeem implementeert een vergelijkbaar mechanisme in hardware. Zijn "toegang descriptoren" overeen met vermogens. Drie bits in de mogelijkheid diverse controle-systeem functies. Een van deze stukjes controles versterking van de rechten. Wanneer een abstracte data type module is gebouwd, de toestemming bits van het type controle-object (waarop de gegevens definieert) zijn ingesteld op de machtigingen die de procedure behoeften. Wanneer de procedure wordt aangeroepen, controleert het systeem de amplificatie beetje. Als dit is ingesteld, zijn de rechten in het soort controle-object "OR" gekoppeld met de rechten in het tem van het object worden doorgegeven. Deze combinatie bepaalt de rechten ter beschikking van de procedure.


Intrekking van de rechten

In een vermogen systeem, intrekking toegang tot een object vereist dat alle mogelijkheden verlenen van toegang tot dat object worden herroepen. In theorie zou elk proces worden gecontroleerd, en de mogelijkheden geschrapt. De kosten van een dergelijke operatie zou onaanvaardbaar zijn echter zo alternatieve methoden worden gebruikt.

De eenvoudigste mechanisme is indirectie. Definieer een of meer globale object tabellen. In deze regeling, elk object heeft een overeenkomstige vermelding in een tabel. Mogelijkheden geen naam niet het object direct, zij de naam van de vermelding in de tabel die overeenkomt met het object.

Deze regeling heeft verscheidene voordelen. Ten eerste, om mogelijkheden te trekken, de vermelding in het globale doel tafel is ontkracht. Dan alle verwijzingen krijgt een ongeldige de tabel en zal worden afgewezen. Ten tweede, indien slechts enkele van de mogelijkheden moeten worden ingetrokken, kan het object meerdere items, die elk met een andere set van rechten of een andere groep gebruikers.

VOORBEELD: Amoeba gebruikt wezen deze regeling. Te trekken een vermogen, de eigenaar van het object verzoeken dat de server veranderen willekeurig nummer en een nieuw vermogen. Dit ontkracht alle bestaande mogelijkheden.


Een alternatief mechanisme maakt gebruik herroeping abstracte data type managers. Inbegrepen bij elke abstracte data type is een herroeping procedure. Wanneer de toegang moet worden ingetrokken, het type manager simpy verbiedt verdere toegangen door het voorwerp waarvan de rechten worden ingetrokken. Dit heeft geen invloed alternatieve methoden voor de toegang tot de objecten die ten grondslag liggen aan de abstracte data types. Kan bijvoorbeeld de toegang tot een bestand worden ingetrokken, maar deze techniek zou geen toegang tot de onderliggende segmenten te blokkeren via een alternatief type manager. Het SCP3 systeem gebruikt deze techniek.

Vergelijking met Access Control Lists

Twee vragen liggen ten grondslag aan het gebruik van de toegang controles:

  1. Gegeven een onderwerp, welke voorwerpen kan toegang tot, en hoe?

  2. Gegeven een voorwerp, welke onderwerpen er toegang tot hebt, en hoe?

In theorie kan een access control lists of vermogens antwoord op deze vragen. Voor de eerste vraag, mogelijkheden zijn de eenvoudigste, maar een lijst van de elementen van het onderwerp verbonden C-List. Voor de tweede vraag, ACL's zijn de eenvoudigste, maar een lijst van de elementen van de toegang van het object controle lijst. In een ACL-gebaseerd systeem, de beantwoording van de eerste vraag moeten alle objecten die moeten worden gescand. Het systeem uittreksels alle ACL-entries geassocieerd met het onderwerp in kwestie. In een vermogen-gebaseerd systeem, het beantwoorden van de tweede vraag moeten alle onderwerpen worden gescand. Het systeem extracten alle mogelijkheden in verband met het object in kwestie.

Karger en Herbert speculeren dat de praktische verschil in de beantwoording van de tweede vraag is de reden meer systemen maken gebruik van access control lists dan mogelijkheden. Deze vraag wordt gesteld vaker dan de eerste. Het accent van de verschuivingen incident reactie van "die toegankelijk is voor het object" om "wat anders dat deed de toegang voor," capability-gebaseerde systemen kunnen meer gemeengoed worden.

een artikel afkomstig van Fred Foster


Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions