Objekt -evne modell - Object-capability model
Den objekt evne modellen er en datamaskin sikkerhetsmodell . En evne beskriver en overførbar rett til å utføre en (eller flere) operasjoner på et gitt objekt. Det kan oppnås ved følgende kombinasjon:
- En uforglemmelig referanse (i betydningen objektreferanser eller beskyttede tips) som kan sendes i meldinger.
- En melding som angir operasjonen som skal utføres.
Sikkerhetsmodellen er avhengig av at man ikke kan smi referanser.
-
- Objekter kan bare samhandle ved å sende meldinger på referanser.
- En referanse kan fås ved å:
- Innledende forhold: I den opprinnelige tilstanden til beregningsverdenen som beskrives, kan objekt A allerede ha en referanse til objekt B.
- Foreldre: Hvis A oppretter B, får A i det øyeblikket den eneste referansen til det nyopprettede B.
- Begavelse: Hvis A oppretter B, blir B født med den undergruppen av As referanser som A valgte å tildele den.
- Innledning: Hvis A har referanser til både B og C, kan A sende til B en melding som inneholder en referanse til C. B kan beholde denne referansen for senere bruk.
I objektet-kapasitetsmodellen utføres all beregning etter reglene ovenfor.
Fordeler som motiverer objektorientert programmering , for eksempel innkapsling eller skjuling av informasjon , modularitet og separasjon av bekymringer , tilsvarer sikkerhetsmål som minst privilegium og privilegieseparasjon i funksjonsbasert programmering.
Objektkapasitetsmodellen ble først foreslått av Jack Dennis og Earl C. Van Horn i 1966.
Smutthull i objektorienterte programmeringsspråk
Noen objektbaserte programmeringsspråk (f.eks. JavaScript , Java og C# ) gir måter å få tilgang til ressurser på andre måter enn i henhold til reglene ovenfor, inkludert følgende:
- Direkte tildeling til forekomstvariablene til et objekt i Java og C#.
- Direkte refleksiv inspeksjon av metadataene til et objekt i Java og C#.
- Den gjennomgripende evnen til å importere primitive moduler, f.eks. Java.io.File som muliggjør eksterne effekter.
Slik bruk av ubestridelig autoritet bryter vilkårene i modellen for objekt-evne. Caja og Joe-E er varianter av henholdsvis JavaScript og Java som pålegger restriksjoner for å eliminere disse smutthullene.
Fordeler med objektfunksjoner
Datavitenskapsmann E. Dean Tribble uttalte at i smarte kontrakter støtter identitetsbasert tilgangskontroll ikke godt dynamisk endrede tillatelser, sammenlignet med objektkapasitetsmodellen. Han analogiserte ocap -modellen med å gi betjent nøkkelen til bilen, uten å overlate retten til bileierskap.
De strukturelle egenskapene til objektsystemer favoriserer modularitet i kodedesign og sikrer pålitelig innkapsling i kodeimplementering.
Disse strukturelle egenskapene forenkler analysen av noen sikkerhetsegenskaper for et objektkapasitetsprogram eller operativsystem. Noen av disse - spesielt informasjonsflytegenskapene - kan analyseres på nivået med objektreferanser og tilkobling, uavhengig av kunnskap eller analyse av koden som bestemmer objekternes oppførsel. Som en konsekvens kan disse sikkerhetsegenskapene etableres og vedlikeholdes i nærvær av nye objekter som inneholder ukjent og muligens ondsinnet kode.
Disse strukturelle egenskapene stammer fra de to reglene for tilgang til eksisterende objekter:
- 1) Et objekt A kan sende en melding til B bare hvis objekt A har en referanse til B .
- 2) Et objekt En kan oppnå en referanse til C bare dersom gjenstanden A mottar en melding som inneholder en referanse til C .
Som en konsekvens av disse to reglene kan et objekt bare få en referanse til et annet objekt gjennom en eksisterende kjede av referanser. Kort sagt, "Bare tilkobling skaper tilkobling."
- objekt-evne system
- Et beregningssystem som implementerer prinsipper beskrevet i denne artikkelen.
- gjenstand
- Et objekt har lokal tilstand og atferd. Et objekt i denne forstand er både et subjekt og et objekt i den forstand som brukes i tilgangskontrolllitteraturen.
- referanse
- En uforglemmelig kommunikasjonskanal (beskyttet peker, ugjennomsiktig adresse) som utvetydig angir et enkelt objekt, og gir tillatelse til å sende meldinger til det objektet.
- beskjed
- Hva sendes på en referanse. Avhengig av systemet kan det hende at meldinger i seg selv ikke er førsteklasses objekter.
- be om
- En operasjon der en melding blir sendt på en referanse. Når meldingen er mottatt, vil mottakeren ha tilgang til eventuelle referanser som er inkludert i meldingen.
- demping
- Et vanlig designmønster i objektsystemer: gitt én referanse til et objekt, opprett en annen referanse for et proxyobjekt med visse sikkerhetsbegrensninger, for eksempel bare å tillate skrivebeskyttet tilgang eller tillate tilbakekalling. Proxyobjektet utfører sikkerhetskontroller av meldinger det mottar og videresender alle som er tillatt. Dyp demping refererer til tilfellet der den samme dempningen påføres midlertidig på gjenstander som er oppnådd via det opprinnelige dempede objektet, vanligvis ved bruk av en "membran".
Implementeringer
Nesten alle historiske systemer som har blitt beskrevet som "evnesystemer" kan modelleres som objektsystemer. (Vær imidlertid oppmerksom på at noen bruksområder av begrepet "evne" ikke stemmer overens med modellen, for eksempel POSIX "evner".)
KeyKOS , EROS , Integrity (operativsystem) , CapROS , Coyotos , seL4 , OKL4 og Fiasco.OC er sikre operativsystemer som implementerer objektkapasitetsmodellen.
Språk som implementerer objektfunksjoner
- Lov 1 (1981)
- Eden (1985),
- Emerald (1987),
- Trusty Scheme (1992),
- W7 (1995),
- Joule (1996),
- Original-E (1997),
- Oz-E (2005),
- Joe-E (2005),
- CaPerl (2006),
- Emily (2006)
- Caja (2007 - i dag)
- Monte (2008 - i dag)
- Ponni (2014 - i dag)
- Wyvern (2012 - i dag)
- Newspeak (2007 - i dag)
- Hacklang (2021-nåtid)
- Rholang (2018-nåtid)
Se også
- Kapasitetsbasert sikkerhet
- Kapasitetsbasert adressering
- Skuespiller modell