Capabilities
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:
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.
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 vermogenDrie 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.
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.
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.
Kopiëren en Versterker CapabilitiesHet 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).
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.
Intrekking van de rechtenIn 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.
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 ListsTwee vragen liggen ten grondslag aan het gebruik van de toegang controles:
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
|
|||||||||||
|