Kapacitetsbaseret sikkerhed

Kapacitetsbaseret sikkerhed ( tysk  rettighedsbaseret sikkerhed [-srichtlinien] ) er et sikkerhedskoncept inden for computeradministration.

En evne / højre ( engelsk kapacitet ), som også er kendt i nogle systemer som en nøgle, er et overførbart og uforanderligt godkendelsestoken. Dette henviser til en værdi, der repræsenterer et objekt og et matchende sæt af adgangsrettigheder rettigheder. En brugers computerprogram, der kører på et færdighedsbaseret operativsystem, skal have tilsvarende færdigheder / rettigheder for at kunne få adgang til objekter.

Rettighedsbaseret sikkerhed henviser til princippet om, at computerprogrammer kommunikerer med hinanden i henhold til princippet om mindst privilegium og dermed tildeler kapaciteter / rettigheder, og at operativsystemet har den rette infrastruktur til at arbejde effektivt og sikkert. Færdighedsbaseret sikkerhed står i kontrast til metoden ring / domæne ( hierarkiske beskyttelsesdomæner ).

De fleste operativsystemer implementerer værktøjer, der ligner disse muligheder. Disse tilbyder ofte ikke tilstrækkelig support til at udveksle færdigheder / rettigheder mellem operativsystemets ukendte forekomster for at være den primære autoritet for adgangsrettigheder. Derimod er et færdighedsbaseret system designet til dette.

De færdigheder / rettigheder, der diskuteres i denne artikel, bør ikke forveksles med POSIX .

Rettigheder og rettighedsbaseret sikkerhed

Rettigheder forbedrer systemsikkerheden ved at bruge dem i stedet for skiftende referencer . En foranderlig reference (f.eks. Et stienavn ) identificerer et objekt, men angiver ikke, hvilke adgangsrettigheder der er tilgængelige for dette objekt og det brugerprogram, der indeholder denne reference. Derfor skal enhver adgang til det refererede objekt valideres af operativsystemet på baggrund af autorisationerne for det anmodende program, hvilket typisk sker ved brug af en adgangskontrolliste (ACL). Tværtimod, i et system med rettigheder er den blotte besiddelse af visse rettigheder tilstrækkelig til at kunne få adgang til refererede objekter. I teorien er adgangskontrollister eller lignende teknologier ikke påkrævet i disse systemer, da alle enheder kun har de muligheder, de faktisk har brug for.

En rettighed / evne implementeres typisk som en privilegeret datastruktur bestående af to dele, den ene angiver adgangsrettigheder og den anden entydigt identificerer det objekt, der skal tildeles. Brugeren har ikke direkte adgang til datastrukturen eller objektet, men via et håndtag . I praksis bruges det meget som en filhåndtag i et traditionelt operativsystem (et traditionelt håndtag), men for at få adgang til ethvert objekt på systemet. Funktionerne lagres typisk på en liste af operativsystemet, med en eller anden mekanisme på plads for at forhindre, at programmet direkte ændrer indholdet af kapaciteten. Nogle systemer er også baseret på færdighedsorienteret adressering (≈ hardwaresupport til færdigheder), såsom Plessey System 250.

Programmer, der har færdigheder, kan udføre funktioner på dem, såsom: B. videregive dem til andre programmer, konvertere dem til en mindre privilegeret version eller slette dem. Operativsystemet skal sikre, at kun visse funktioner for funktionerne kan forekomme i systemet for at opretholde integriteten af ​​sikkerhedspolitikken.

Introduktion til rettighedsbaseret sikkerhed

En evne / ret defineres som en beskyttet objektreference, der i kraft af dens egenskab giver en proces tilladelse / evne til at interagere med et objekt. Dette kan være at læse data tilknyttet et objekt, ændre objektet, udføre dataene og andre tænkelige adgangsrettigheder. Evnen består derfor logisk af en reference, der entydigt identificerer et bestemt objekt og har en eller flere af disse rettigheder.

Antag, at følgende streng findes i hukommelsesplaceringen for et program:

/etc/passwd

Selvom dette identificerer et unikt objekt på systemet, specificerer det ikke adgangsrettigheder og er derfor ikke en mulighed. Antag for eksempel, at der er to værdier i stedet:

/etc/passwd
O_RDWR

Dette identificerer et objekt sammen med dets adgangsrettigheder. Det er dog endnu ikke en færdighed, fordi besiddelse af disse værdier ikke siger noget om, hvorvidt denne adgang faktisk ville være legitim.

Lad os nu antage, at brugerprogrammet med succes udfører følgende instruktion:

int fd = open("/etc/passwd", O_RDWR);

Variablen fd indeholder nu indekset for en filhåndtag i proceshåndteringstabellen. Denne filhåndtag er en mulighed. Dens eksistens i procesfilhåndteringstabellen er tilstrækkelig til at vide, at processen faktisk har legitim adgang til objektet. Et væsentligt træk ved dette arrangement er, at filhåndtagetabellen er placeret i kernehukommelsen og ikke kan manipuleres direkte af brugerprogrammet.

Udveksling af færdigheder mellem processer

I traditionelle operativsystemer kommunikerer programmer ofte med hinanden og sender ofte stienavne som kommandolinjeparametre eller sender dem over sockets. Disse referencer er ikke færdigheder og skal valideres, før de kan bruges. I disse systemer er det centrale spørgsmål "på hvis autoritet en given reference skal bedømmes?" Dette bliver et kritisk problem for processer, der udføres af to forskellige enheder med forskellige rettigheder. Dette kan føre til en ofte forekommende programmeringsfejl, der er kendt som det forvirrede stedfortræderproblem ( tysk  forvirret stedfortræderproblem ) og kan føre til sikkerhedshuller.

I et færdighedsbaseret system overføres færdigheder mellem processer og lagring gennem en mekanisme, der er kendt af operativsystemet for at opretholde integriteten af ​​disse færdigheder.

En ny tilgang til løsning af dette problem involverer brugen af ​​et ortogonalt vedvarende operativsystem. (Dette blev implementeret i Flex-maskinen) I et sådant system er der ikke behov for at kassere enheder og ugyldiggøre deres kapaciteter og kræver derfor en ACL- lignende mekanisme for at kunne gendanne disse kapaciteter på et senere tidspunkt. Operativsystemet opretholder integriteten og sikkerheden i kapaciteterne i al hukommelse, både ustabil og ikke-ustabil. Dels ved at udføre alle serialiseringsopgaverne i stedet for at lade brugeragenterne gøre det, som de fleste operativsystemer gør. Da brugerprogrammerne er fritaget for dette ansvar, er der ikke behov for at validere deres rettigheder og muligheder eller deres adgangsanmodninger.

POSIX vs. Capsicum færdigheder

POSIX-udkast 1003.1e specificerer et begreb autorisationer kaldet "kapaciteter". POSIX-funktioner er dog forskellige fra funktionerne i denne artikel. En POSIX-funktion er ikke knyttet til et objekt. En proces med CAP_NET_BIND_SERVICE-kapacitet kan få adgang til TCP-port 1024. I modsætning hertil kombinerer Capsicum-funktioner på FreeBSD og Linux et ægte kapacitetssystem med UNIX-design og POSIX API. Capsicum-funktioner er en raffineret form for filhåndtering. En ret, der kan delegeres mellem processer og yderligere objekttyper, der strækker sig ud over den klassiske POSIX (f.eks. Proces), kan henvises til via kapaciteter. I Capsicum-kapacitetstilstand kan processer bruge ikke-globale navneområder (såsom filsystemets filnavn) til at finde objekter og skal i stedet arves eller de kan få objekterne fra andre processer.

Forskning og kommercielle systemer

Se også

litteratur

Weblinks

Individuelle beviser

  1. engadget.com