NO332737B1 - System og fremgangsmate for beskyttet oppstart av operativsystemet gjennom bruk av statusvalidering. - Google Patents
System og fremgangsmate for beskyttet oppstart av operativsystemet gjennom bruk av statusvalidering. Download PDFInfo
- Publication number
- NO332737B1 NO332737B1 NO20052391A NO20052391A NO332737B1 NO 332737 B1 NO332737 B1 NO 332737B1 NO 20052391 A NO20052391 A NO 20052391A NO 20052391 A NO20052391 A NO 20052391A NO 332737 B1 NO332737 B1 NO 332737B1
- Authority
- NO
- Norway
- Prior art keywords
- operating system
- machine
- loader
- key
- program
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 90
- 238000010200 validation analysis Methods 0.000 title description 36
- 238000005192 partition Methods 0.000 claims description 9
- 238000002955 isolation Methods 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 abstract description 15
- 230000008569 process Effects 0.000 description 47
- 230000006399 behavior Effects 0.000 description 19
- 230000006870 function Effects 0.000 description 14
- 238000012545 processing Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 7
- 230000001419 dependent effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000007789 sealing Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- CDFKCKUONRRKJD-UHFFFAOYSA-N 1-(3-chlorophenoxy)-3-[2-[[3-(3-chlorophenoxy)-2-hydroxypropyl]amino]ethylamino]propan-2-ol;methanesulfonic acid Chemical compound CS(O)(=O)=O.CS(O)(=O)=O.C=1C=CC(Cl)=CC=1OCC(O)CNCCNCC(O)COC1=CC=CC(Cl)=C1 CDFKCKUONRRKJD-UHFFFAOYSA-N 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
- Exchange Systems With Centralized Control (AREA)
- Manipulator (AREA)
- Numerical Control (AREA)
- Operation Control Of Excavators (AREA)
- Sealing Devices (AREA)
- Spinning Or Twisting Of Yarns (AREA)
Abstract
En mekanisme for beskyttet operativsystemoppstart som forhindrer skadelige komponenter fra å bli lastet med operativsystemet og derfor forhindrer avsløring av systemnøkkelen på fell grunnlag. Etter at en del av maskinoppstartsprosedyren har blitt gjennomført eksekverer operativsystemlasteprogrammet, laste- programmet blir validert, og en korrekt maskinstatus blir enten verifisert til å eksistere og/eller blir opprettet. Når lasteprogrammet er blitt verifisert til å være et legitimt lasteprogram, og maskinstatus under den det eksekverer er verifisert til å være korrekt, er lasteprogrammets fremtidig oppførselkjent for å beskytte mot lastingen av skadelige komponenter som kan forårsake avsløringen av systemnøkkelen. Med lasteprogrammets oppførsel kjent for å være trygg for systenmøkkelen kan gyldighetsovervåkeren bryte forseglingen til systenmøkkelen og levere den til lasteprogrammet.
Description
Oppfinnelsens område
Den foreliggende oppfinnelsen relaterer generelt sett til feltet data-behandling. Spesielt tilveiebringer oppfinnelsen en mekanisme til å sikre at et system fortsetter fra en kjent trygg status og denne mekanismen kan brukes ti å starte opp et system på en måte som tilveiebringer tilstrekkelig sikkerhet for at systemet oppfører seg riktig. Denne sikkerheten for riktige oppførsel kan i sin tur hindre at én eller flere nøkler blir frigitt på feil grunnlag.
Oppfinnelsens bakgrunn
Datamaskinsikkerhet er ofte avhengig av at en er i stand til å forutsi oppførselen av programvarekomponenter. Generelt kan sikkerheten til et system bevege seg bort fra forutsetningen, at et kjent program, dens oppførsel er forstått, som fortsetter fra en kjent legal status, fungere på en forutsigbar måte. Omvendt kan ødeleggelsen av sikkerheten - som kan innbefatte at et datamaskinsystem oppfører seg på måter som er utenfor designerens tankegang - generelt sett bli gjennomført ved å erstatte eller endre et kjent program, eller kjøre det i en tilstand hvor oppførselen ikke er forstått. Derfor innbefatter én side ved å tilveiebringe sikkerhet for et databehandlingsmiljø å kontrollere at et kjent program blir brukt og at det tar utgangspunkt i en godkjent tilstand.
Ett område hvor forutsigbarhet av oppførselen er spesielt viktig er ved lasting av et operativsystem og dens komponenter. Til tross for at operativsystemet selv kan være utformet for å tilveiebringe tillit mht dens oppførsel, er tiden før operativsystemet er i gang en tid, da systemet er spesielt sårbart for angrep, siden infrastrukturen som beskytter operativsystemet mot angrep muligens ikke er etablert ennå (eller er under etablering). For å beskytte operativsystemet mot visse klasser av angrep er det derfor viktig å sørge for at det starter opp på en forutsigbar måte.
Én type sikkerhetssprekk som kan forplante seg fra en ikke-sikret oppstart av et operativsystem relaterer til beskyttelse av nøkkelen (eller nøkler) som begrenser funksjonaliteten. Som et ikke begrensende eksempel anvender
MICROSOFT WINDOWS operativsystemer en systemnøkkel, eller "SYSKEY", som brukes til å beskytte forskjellige prosesser ved å gjøre den riktige ytelsen av disse prosesser avhengig av tilgjengeligheten av SYSKEY. For eksempel kan nøkkelen som trengs for å dekryptere privat informasjon som er lagret av operativsystemet i kryptert form være deriverbar fra SYSKEY.
Vanligvis er nøklene som trengs for å gjennomføre begrensede operasjoner, beskyttet av innloggingsprosedyren. Typisk må brukeren legitimere seg (f. eks. ved å tilveiebringe riktige innloggingsakkreditiver, så som en kombinasjon av brukernavn og passord) i forveien for å innlede bruken av systemet. Bruken av nøklene er muliggjort bare dersom brukeren legitimerer seg riktig, og systemet skal bare tillate brukeren et begrenset antall forsøk (f. eks. tre) før det trekkes slutningen at brukeren har feilet å logge inn riktig. (Denne typen av begrensning på antallet forsøk å logge inn hindrer uautoriserte brukere å gjøre bruken av beskyttet funksjonalitet mulig ved å bruke et "brute-force"-angrep for å gjette passordet i tilfellet av f eks en stjålen bærbar datamaskin.) Å bruke innloggingsprosedyren for å beskytte tilgang til nøkler forutsetter imidlertid at operativsystemnedlastingsprogrammet lastet ned operativsystemet på en riktig måte og med det riktige innloggingsprogrammet, og at bruken av nøklene ikke på annen måte har blitt muliggjort av skadelig kode som evt. eksekverer. Dersom det istedenfor ble brukt et skadelig lasteprogram, og det skadelige lasteprogram forårsaker et skadelig innloggingsprogram som lastes med operativsystemet, ville bruken av nøkler kan være muliggjort eller nøklene kan til og med vært avslørt uten at de riktige akkreditivene hadde blitt lagt inn. Siden nedlastingen av operativsystemet tilveiebringer en anledning for en sikkerhetssprekk krever beskyttelse av nøklene i en slik situasjon at lastingen av operativsystemet finner sted under forhold hvor det kan bli verifisert at det foregår korrekt.
Ett problem som oppstår med verifiseringen av sikkerheten i en operativsystemladeprosess er at legitime operativsystemlastinger kan involvere mange forskjellige programmer (f. eks. finnes det mange forskjellige "tilleggs-ROM," som inneholder programmer, som kjører før operativsystemet under en systemoppstartsprosedyre), og det finnes mange forskjellige prosedyrer som kan bli utført som del av operativsystemoppstarten. Derfor finnes det nesten utallige mengder av forskjellige legitime maskintilstander under oppstarten og å identifisere alle slike tilstander og å verifisere at maskinen er i en godkjent tilstand kan vise seg å være en umulig oppgave. Imidlertid har ikke alle deler av lastepro-sedyren sikkerhetskonsekvenser. Det kan være mer effektivt å la lastingen fortsette uten noe forsøk å evaluere dens sikkerhet for så å sette miljøet til en godkjent tilstand før en starter prosedyrer som kan berøre en sikkerhetsrelatert funksjon, så som distribusjonen av nøkler. Generelt kan et vilkårlig system få lov å kjøre en tid uten noe form av sikkerhetsevaluering så lenge systemet kan settes i en godkjent tilstand før handlinger blir tillatt som har sikkerhetskonsekvenser.
US 2003/0196085 A1 beskriver et system og en fremgangsmåte for autentisering av et operativsystem som i samsvar med et aspekt inkluderer en fremgangsmåte i et datamaskinsystem som har en prosessor, et operativsystem, og et programvare-identitetsregister som inneholder en identitet av operativsystemet, idet prosessoren har en privat nøkkel.
På bakgrunn av det foregående finnes det behov for en mekanisme som overvinner ulempene med den kjente teknikken.
Oppsummering av oppfinnelsen
Den foreliggende oppfinnelse vedrører et datamaskinlesbart medium kodet med datamaskineksekverbare instruksjoner for å utføre en fremgangsmåte, kjennetegnet ved at den omfatter: å starte et operativsystemlasteprogram; å validere identiteten eller riktigheten av lasteprogrammet; å sikre at maskinen på hvilken operativsystemlasteprogrammet eksekverer, er i en kjent tilstand; og dersom identiteten eller riktigheten av lasteprogram viser seg, og dersom maskinen hvor operativsystemet eksekverer er i en kjent tilstand, da: tilveiebringe en nøkkel til lasteprogrammet; og tillate lasteprogrammet å laste et operativsystem.
Den foreliggende oppfinnelse vedrører også et system for å utføre en oppstart av et operativsystem under forhold som tilveiebringer sikkerhet i forhold til påliteligheten av oppstarten, kjennetegnet ved at systemet omfatter: en gyldighetsovervåker som evaluerer riktigheten eller identiteten til et operativsystemlasteprogram som skal laste operativsystemet, og som videre evaluerer tilstanden til en maskin på hvilken operativsystemlasteprogrammet skal operere som enten tillater eller forbyr operativsystemlasteprogrammet til å fortsette med å laste operativsystemet avhengig av om riktigheten eller identiteten av operativsystemlasteprogrammet er verifisert eller ikke, og som plasserer denne maskinen i en kjent tilstand før den tillater operativsystemlasteprogrammet å fortsette.
Den foreliggende oppfinnelse vedrører videre en fremgangsmåte med å starte et operativsystem, kjennetegnet ved at den omfatter: å eksekvere et grunnleggende inn/ut-system, en tilleggs-ROM, et hovedoppstartsdatasett og en oppstart sektor; å starte et operativsystemlasteprogram; å godkjenne operativsystemlasteprogrammet; å godkjenne en tilstand til en maskin på hvilken operativsystemlasteprogrammet eksekverer; dersom operativsystemlasteprogrammet og tilstanden av maskinen er validert til å være rett, å tillate at operativsystemlasteprogrammet laster et operativsystem.
Andre utførelsesformer av det datamaskinlesbare medium i henhold til oppfinnelsen, systemet i henhold til oppfinnelsen og fremgangsmåten i henhold til oppfinnelsen fremgår av de uselvstendige patentkrav.
Det beskrives oppstart av et operativsystem under forhold hvor oppstarten kan verifiseres å bli gjennomført korrekt. Når en maskin startes utføres den initiale oppstartsprosedyren (f. eks. BIOS, tilleggs-ROM, hovedoppstartsdatasett, oppstartsektor, etc). Etter at disse tidlige prosedyrene er utført startes lasteprogrammet til operativsystemet som utfører forskjellige foreløpige oppgaver. Etter at operativsystemlasteprogrammet er startet og har utført slike foreløpige oppgaver utføres en validering av operativsystemlasteprogrammet.
Valideringen omfatter gyldighetstester på lasteprogrammet selv eller en del av lasteprogrammet (f. eks., kontrollsummer eller andre tester som er rettet mot å evaluere identiteten og korrektheten av lasteprogrammet) så vel som å evaluere den løpende maskintilstanden (eller å tvinge maskinen til å overholde en godkjent tilstand). Dersom lasteprogrammet (eller en relevant del av dette) er erkjent å være rett, og maskintilstanden er én hvor lasteprogrammet før har blitt verifisert til å oppføre seg korrekt kan oppførselen av lasteprogrammet bli forutsagt. Derfor kan en være sikker på at et korrekt lasteprogram som arbeider i en korrekt maskintilstand, ikke henter en komponent som ville forårsake at data som muliggjør beskyttede funksjoner (f. eks. kryptografiske nøkler så som systemnøkkelen), blir frigitt på feil grunnlag.
Fortrinnsvis utføres valideringen av en gyldighetsovervåker som eksekverer i et høysikkerhetsmiljø. Et høysikkerhetsmiljø er et miljø hvor det er mulig å tilveiebringe en forholdsvis høy grad av sikkerhet for at prosesser som utføres der, vil eksekvere på den måten de er forventet å eksekvere. Derfor er sikkerheten at gyldighetsovervåkeren opererer korrekt utledet fra det faktum at gyldighetsovervåkeren er verifisert av en prosess som eksekverer i høysikkerhets-miljøet (f. eks. ved å verifisere en signatur av dens binærfil) og fra den under-liggende tillitten at prosesser i høysikkerhetsmiljøet vil bli utført korrekt. (Eller i det minste at det finnes et minstemål av sikkerhet at høysikkerhetsmiljøet ikke skal komme i konflikt eller tillate interferens med den rette driften av en prosess som opererer innenfor et slikt miljø; én må fortsatt ha et separat tillitsgrunnlag for at programmet som implementerer en prosess innenfor høysikkerhetsmiljøet vil eksekvere korrekt på den måten, at den utfører oppgaven som forventet.) Et høysikkerhetsmiljø kan tilveiebringe forseglet lagring som er en lagringsanordning hvor data kan være knyttet sammen med et spesielt objekt (f eks med et spesielt program), og at høysikkerhetsmiljøet kontrollerer på en måte at de forseglede data ikke gis til noe annet objekt enn det éne som dataene er koblet til (som verifisert av høysikkerhetsmiljøet). Gyldighetsovervåkeren kan bruke det forseglende lager til å knytte en nøkkel (f. eks. SYSKEY) til seg selv og kan nekte å bryte forseglingen unntatt for det riktige objektet og når forholdene (f. eks. maskintilstanden) oppfyller standarden på en tilfredsstillende måte.
Andre kjennetegn av oppfinnelsen er beskrevet nedenfor.
Kort beskrivelse av tegningene
Den foregående oppsummeringen så vel som den følgende detaljerte beskrivelsen av foretrukne utførelsesformer er bedre forstått når den leses sammen med de vedlagte tegningene. For å illustrere oppfinnelsen finnes i tegningene eksempelkonstruksjoner av oppfinnelsen; imidlertid er oppfinnelsen ikke begrenset til den spesifikke fremgangsmåten og fremlagde hjelpemidler. I tegningene er
figur 1 et blokkdiagram av et eksempelvis databehandlingsmiljø hvor sider av oppfinnelsen kan være implementert;
figur 2 er et blokkdiagram av et system som anvender en prosess dens korrekte drift er avhengig av en systemnøkkel;
figur 3 et blokkdiagram av et kryptert filsystem som beskytter kryptert data fra uautorisert dekryptering ved å gjøre dekrypteringen avhengig av en systemnøkkel;
figur 4 et flytdiagram av en eksempelvis oppstartsprosess med validering i samsvar med sider ved oppfinnelsen;
figur 5 et blokkdiagram av en eksempelvis gyldighetsovervåker i samsvar med sider ved oppfinnelsen; og
figur 6 et flytdiagram av en eksempelprosess som beskytter en systemnøkkel i samsvar med sider ved oppfinnelsen.
Detaljert beskrivelse av illustrative utførelsesformer
Oversikt
Flere prosesser som kan eksekvere under et operativsystem er avhengig av én eller flere nøkler for å fungere riktig. Tilgangen til nøklene kan være kontrollert av et autentiseringsprogram så som et innloggingsprogram som nekter å frigi bruk av nøkkelen (nøklene) med mindre brukeren tilveiebringer riktige akkreditiver, så som en brukernavn/passordkombinasjon. Pga innloggings-programmets nektelse å frigi nøkler ved fravær av riktige akkreditiver kan derfor flere prosesser (f. eks. dekryptert av krypterte filer) være forstyrret (eller helt stanset) for brukere som ikke kjenner passordet. Mens innloggingsprogrammet kan være effektivt med å styre tilgangen til nøklene kan et operativsystemlasteprogram bli lurt til å laste en annen komponent som ville distribuere nøklene utenfor legitimeringsreglene pålagt av innloggingsprogrammet. Når nøkler blir frigitt på denne måten kreves det derfor å beskytte operativsystemlasteprosessen når nøklene skal beskyttes. Den foreliggende oppfinnelsen tilveiebringer mekanismer som kan brukes til å beskytte lasteprosessen.
Eksempelvis databehandlingsoppsett
Figur 1 viser et eksempelvis databehandlingsmiljø hvor sider av oppfinnelsen kan være implementert. Databehandlingsmiljøet 100 er bare ett eksempel av et passende databehandlingsmiljø og skal ikke antyde noen begrensninger mht bruksomfanget eller funksjonaliteten av oppfinnelsen. Heller ikke burde databehandlingsmiljøet 100 være tolket som å ha noe avhengighet eller krav relatert til en enkel eller kombinasjon av komponenter illustrert i det eksempelvise miljø 100.
Oppfinnelsen kan brukes med mange andre universelle eller spesielle databehandlingsmiljøer eller konfigurasjoner. Eksempler av kjente databe-handlingssystemer, miljøer og/eller konfigurasjoner som kan passe til bruk med oppfinnelsen, innbefatter, men er ikke begrenset til, personlige datamaskiner, serverdatamaskiner, håndholdte eller bærbare anordninger, flerprosessor-systemer, mikroprosessorbaserte systemer, TV-konvertere, programmerbar forbrukerelektronikk, nettverks-PCer, minidatamaskiner, stordatamaskiner, integrerte systemer, spredte databehandlingsmiljøer, som innbefatter hvilken som helst av de ovenfor stående systemene eller anordninger og liknende.
Oppfinnelsen kan beskrives i den generelle sammenhengen med datamaskineksekverbare instruksjoner, så som programmoduler som utføres av en datamaskin. Generelt innbefatter programmoduler rutiner, programmer, objekter, komponenter, datastrukturer osv. som utfører spesielle oppgaver eller implementerer spesielle abstrakte datatyper. Oppfinnelsen kan også utøves i spredte databehandlingsmiljøer hvor oppgaver utføres av fjerntliggende behand-lingsanordninger som er tilkoblet gjennom et kommunikasjonsnettverk eller andre dataoverføringsmedier. I et spredt databehandlingsmiljø kan programmoduler og andre data være lokalisert i både lokale og fjerntliggende lagringsmedia for datamaskiner omfattende minneanordninger.
Med referanse til figur 1 innbefatter et eksempelvis system for å implementere oppfinnelsen en universell databehandlingsanordning utformet som en datamaskin 110. Komponentene av datamaskin 110 kan innbefatte, men er ikke begrenset til, en prosessor 120, et systemminne 130 og en systembuss 121 som kobler forskjellige systemkomponenter omfattende systemminnet til prosessorenheten 120 sammen. Prosessoren 120 kan representere mangfoldige logiske prosessorenheter, så som slike støttet på en flertrådsprosessor. Systembussen 121 kan være hvilken som helst av flere typer av busstrukturer omfattende en minnebuss eller en minnekontrollenhet, en periferibuss og en lokal buss som bruker hvilken som helst av et mangfold av bussarkitekturer. Som eksempel og ikke en begrensning innbefatter slike arkitekturer 'Industry Standard Architecture' (ISA)-buss, 'Micro Channel Architecture' (MCA)-buss, 'Enhanced ISA'
(EISA)-buss, 'Video Electronics Standards Association' (VESA)-lokalbuss og 'Peripheral Component Interconnect' (PCI)-buss (også kjent som Mezzanine buss). Systembussen 121 kan også være implementert som en punkt-til-punkt-kobling, svitsjende struktur, eller liknende bland kommunikasjonsanordningene.
Datamaskinen 110 innbefatter typisk et mangfold av datamaskinlesbare medier. Datamaskinlesbare medier kan være et hvilket som helst tilgjengelig medium som kan aksesseres av datamaskinen 110 og innbefatter både flyktige og ikke-flyktige medier, fjernbare og ikke-fjernbare medier. Som et eksempel og ikke en begrensning kan datamaskinlesbare medier innbefatte lagringsmedier for datamaskiner og kommunikasjonsmedier. Lagringsmedier for datamaskiner innbefatter både flyktige og ikke-flyktige, fjernbare og ikke-fjernbare medier implementert med hvilken som helst fremgangsmåte eller teknologi for lagring av informasjon så som datamaskinlesbare instruksjoner, datastrukturer, programmoduler eller andre data. Lagringsmedia for datamaskiner omfatter, men oppfinnelsen er ikke begrenset til det, RAM, ROM, EEPROM, flash-minne eller andre minneteknologier, CD-ROM, 'digital versatile disks' (DVD) eller andre optiske platelager, magnetiske kassetter, magnetisk bånd, magnetiske platelager eller andre magnetiske lagringsanordninger eller hvilken som helst andre medier som kan brukes til å lagre den ønskede informasjon og som kan aksesseres av datamaskinen 110. Kommunikasjonsmedier rommer typisk datamaskinlesbare instruksjoner, datastrukturer, programmoduler eller andre data i et modulert datasignal så som en bærebølge eller andre transportmekanismer og innbefatter et hvilken som helst informasjonsleveringsmedium. Uttrykket "modulert datasignal" betyr et signal som har én eller flere av dens karakteristika satt eller endret på en slik måte, at informasjonen preges på signalet. Som et eksempel og ikke en begrensning innbefatter kommunikasjonsmedier kablede medier så som et kablet nettverk eller en direkte kabeltilkobling og trådløse medier så som akustiske, radiobølge, infrarød og andre trådløse medier. Kombinasjoner av hvilken som helst av det ovenfor stående burde også være inkludert innenfor omfanget av datamaskinlesbare medier.
Systemminnet 130 innbefatter lagringsmedier for datamaskiner i form av flyktig og/eller ikke-flyktig minne så som ROM 131 og lese/skrive-minne (RAM) 132. Et grunnleggende inn/ut-system 133 (BIOS) inneholdende de grunnleggende rutinene som hjelper å overføre informasjon mellom elementer innenfor datamaskin 110, så som under oppstart, er typisk lagret i ROM 131. RAM 132 inneholder typisk data og/eller programmoduler som er umiddelbart aksesserbare for og/eller i øyeblikket under behandlingen av prosessoren 120. Som et eksempel og ikke en begrensning illustrerer figur 1 operativsystemet 134, applikasjonsprogrammer 135, andre programmoduler 136 og programdata 137.
Datamaskinen 110 kan også innbefatte andre fjernbare/ikke-fjernbare, flyktige/ikke-flyktig lagringsmedier for datamaskiner. Bare som et eksempel illustrerer figur 1 en platelagerstasjon 141 som leser fra eller skriver til ikke-fjernbare, ikke-flyktige magnetiske medier, en magnetisk platestasjon 151, som leser fra eller skriver til en fjernbar, ikke-flyktig magnetisk plate 152 og en optisk platestasjon 155, som leser fra eller skriver til en fjernbar, ikke-flyktig optisk plate 156, så som en CD-ROM eller andre optiske medier. Andre fjernbare/ikke-fjernbare, flyktige/ikke-flyktige lagringsmedier for datamaskiner som kan brukes i det eksempelvise driftsmiljøet innbefatter, men er ikke begrenset til, magnetiske bånd kassetter, flash-minnekort, 'digital versatile disks' (DVD), digital videobånd, halvleder-RAM, halvleder-ROM og liknende. Platelagerstasjonen 141 er typisk tilkoblet systembussen 121 gjennom et ikke-fjernbart minnegrensesnitt så som grensesnitt 140 og den magnetiske platestasjon 151 og optiske platestasjon 155 er typisk tilkoblet systembussen 121 vha et grensesnitt for fjernbare lagringsen-heter så som grensesnitt 150.
Stasjonene og dens assosierte lagringsmedier for datamaskiner diskutert ovenfor og illustrert i figur 1 tilveiebringer lagring av datamaskinlesbare instruksjoner, datastrukturer, programmoduler og andre data for datamaskinen 110.1 figur 1 for eksempel er platelagerstasjonen 141 illustrert som at den lagrer operativsystemet 144, applikasjonsprogrammer 145, andre programmoduler 146 og programdata 147. Bemerk at disse komponentene kan enten være det samme eller forskjellig fra operativsystem 134, applikasjonsprogrammer 135, andre programmoduler 136 og programdata 137. Operativsystem 144, applikasjonsprogrammer 145, andre programmoduler 146 og programdata 147 er gitt forskjellige nummer her for å vise at det er minst forskjellige kopier. En bruker kan legge inn kommandoer og informasjon i datamaskin 20 gjennom innmatingsanordninger så som et tastatur 162 og en pekeanordning 161, vanligvis kalt mus, trackball eller navigeringsplate. Andre innmatingsanordninger (ikke vist) kan innbefatte mikrofon, joystick, spillpute, parabolantenne, skanner eller liknende. Disse og andre innmatingsanordninger er ofte tilkoblet prosessorenheten 120 gjennom et brukerinputgrensesnitt 160 som er koblet til systembussen, men kan være tilkoblet med andre grensesnitt og busstrukturer så som en parallelport, spillport eller en 'universal serial bus' (USB)-buss. En monitor 191 eller annen type av fremvisningsanordning er også tilkoblet systembussen 121 via et grensesnitt så som et videogrensesnitt 190.1 tillegg til monitoren kan datamaskiner også innbefatte andre perifere utgangsanordninger så som høyttalere 197 og skrivere 196 som kan være tilkoblet gjennom et grensesnitt 195 for utmatingsperiferi.
Datamaskinen 110 kan operere i et nettverksmiljø som bruker logiske tilkoblinger til én eller flere fjerntliggende datamaskiner så som en fjerntliggende datamaskin 180. Den fjerntliggende datamaskinen 180 kan være en personlig datamaskin, en server, en router, et nettverks-PC, en likestilt anordning ('peer') eller en annen vanlig nettverksnode og innbefatter typisk mange eller alle av de elementene beskrevet ovenfor i forhold til datamaskinen 110, til tross for at bare en minneanordning 181 er illustrert i figur 1. De logiske tilkoblingene beskrevet i figur 1 innbefatter et lokalnett (LAN) 171 og et 'wide area network ' (WAN) 173, men kan også innbefatte andre nettverk. Slike nettverksmiljøer er vanlig i kontorer, bedriftsomfattende datamaskinnettverk, intranett og internettet.
Når brukt i et LAN-nettverksmiljø er datamaskinen 110 tilkoblet LAN 171 gjennom et nettverkskort eller -adapter 170. Når brukt i et WAN-nettverksmiljø innbefatter datamaskin 110 typisk et modem 172 eller andre midler for etablering av kommunikasjon over WAN 173, så som internettet. Modemet 172 som kan være internt eller eksternt, kan være tilkoblet systembussen 121 via brukerinputgrensesnitt 160 eller andre passende mekanismer. I et nettverkstilkoblet miljø kan programmoduler beskrevet i forhold til datamaskinen 110, eller deler derav, være lagret i den fjerntliggende minneanordningen. Som et eksempel og ikke en be grensning illustrerer figur 1 fjerntliggende applikasjonsprogrammer 185 som ligger på minneanordning 181. Det skal forstås at de illustrerte nettverkstilkoblingene står som eksempler, og andre hjelpemidler til etablering av en kommunikasjons-kanal mellom datamaskinene kan brukes.
Handlinger beskyttet av nøkler
Et databehandlingsmiljø kan anvende en nøkkel som visse prosesser som eksekverer innenfor miljøet, er avhengig av for å fungere riktig. System-nøkkelen, eller "SYSKEY", brukt i MICROSOFT WINDOWS operativsystemer er ett eksempel av en slik nøkkel, men er ikke et begrensende eksempel. I en foretrukket utførelsesform er en nøkkel som en prosess er avhengig av, en unik, kryptografisk tilfeldig nøkkel på plattformbasis, - dvs. gitt to maskiner er det sannsynlig at de to maskiner har forskjellige nøkler. Derfor er en prosess som er avhengig av slike nøkler sannsynligvis ikke porterbar fra én plattform til en annen - i det minste i den utstrekning som effektive mekanismer brukes for å trygge at den ene plattformens nøkkel er utilgjengelig utenfor denne plattformen.
Figur 2 viser et eksempelsystem hvor en prosess eksekverer som er avhengig av en nøkkel. Prosess 202 er avhengig av nøkkel 204 for å operere riktig. Det skal bemerkes at prosess 202 ikke er begrenset til det tradisjonelle begrep av en prosess - dvs. en eksekveringsenhet som kan være styrt av et operativsystem og tilordnet et adresserom - men heller refererer mer generelt til en operasjon eller serie av operasjoner som kan utføres på en datamaskin. Videre burde det vært nevnt at, mens dette eksempel viser en prosess som er avhengig av en kryptografisk nøkkel, er uttrykket "prosess" som brukes her ikke begrenset på prosesser som utfører kryptogråfiske operasjoner.
Som vist i figur 2 opererer prosess 202 korrekt dersom nøkkel 204 er tilgjengelig som input for prosess 202. Dersom nøkkel 204 på den andre siden ikke er tilgjengelig som en input for prosess 202 fungerer prosess 202 ikke riktig. En nøkkelbeskyttelsesmekanisme 206 kontrollerer tilgangen til nøkkel 204 - dvs. mekanismen 206 enten forsyner eller ikke forsyner prosess 202 med nøkkel 204, avhengig av om de relevante sikkerhetsbetingelsene har blitt oppfylt. For eksempel må en bruker logge inn og tilveiebringe et riktig passord før mekanisme 206 skal frigi bruken av nøkkel 204.
Det skal bemerkes at nektelsen av nøkkel 204 for å forhindre at prosess 202 fungerer riktig er noen ganger et ønskelig resultat. For eksempel er krypteringen/dekrypteringen av filer ett eksempel for en prosess 202 som er beskyttet av nøkkel 204. Den riktige dekrypteringen av en fil kan være avhengig av tilgang til nøkkel 204. Dersom brukeren ikke kan logge inn og legitimere seg selv kan det være ønskelig for dekrypteringen av en fil å ikke fortsette siden en bruker som ikke er i stand til å logge inn, kan indikere at datamaskinen brukes av en annen enn dens tiltenkte bruker (f. eks. i tilfellet av en stjålen laptop-datamaskin). Derfor kan nøkkelbeskyttelsesmekanisme 206 gi tilgang til nøkkel 204 avhengig av oppfyllelsen av relevante sikkerhetsbetingelser og kan nekte bruken av nøkkel 204 for å stanse prosesser som skal avbrytes når disse sikkerhetsbetingelsene ikke er oppfylt. Mekanisme 206 sin evne å avbryte prosesser på denne måten er avhengig av at disse prosesser krever nøkkel 204 for å fungere korrekt siden det er denne avhengigheten som gjør det mulig å nekte nøkkel 204 for å avbryte prosessen.
Figur 3 viser et spesifikt (men ikke begrensende) eksempel av en prosess som er avhengig av nøkkel 204.1 eksempelet i figur 3 er eksempel-prosessen et krypterende filsystem (EFS) 302 som lagrer filer i kryptert form og dekrypterer også de krypterte filene. Det skal bemerkes at ett formål av slike filkrypteringer er å beskytte data på en bærbar datamaskin fra å bli hentet ut av en tyv i tilfelle hvor laptop-datamaskinen er stjålet. Når en fil 304 er generert for lagring leveres den til EFS 302. EFS 302 krypterer da filen 304 og omformer fil 304 til den krypterte filen 306 som lagres på platelager 141. Når en anmodning kommer for å hente kryptert fil 306, henter EFS 302 den krypterte filen 306 og dekrypterer den for å generere den dekrypterte fil 308. (I praksis er innholdet av den dekrypterte fil 308 det samme som original fil 304 til tross for at figur 3 viser disse to forekomstene av filen separat for klarhetens skyld: fil 304 er den originale filen, og den dekrypterte fil 308 er samme fil etter at den har vært kryptert, lagret, hentet opp igjen og dekryptert av EFS 302.)
Det skal bemerkes at én input til EFS 302 er innholdsnøkkel 310. Innholdsnøkkel 310 er fortrinnsvis en symmetrisk nøkkel som fungerer som input til en kryptografisk fremgangsmåte. Innholdsnøkkel 310 er brukt for å kryptere fil 304 for å opprette den krypterte filen 306 og er også brukt for å dekryptere den krypterte filen 306 for å opprette den dekrypterte filen 308. Det skal forstås at å lagre nøkkelen 310 i noen lett tilgjengelige plasser kan raskt gjøre EFS 302's evne å beskytte data ineffektiv. Dersom innholdsnøkkelen er lett tilgjengelig på et platelager, eller dersom det enkelt kan utledes fra noen kjennetegn av laptop-datamaskinen (f. eks., prosessorens serienummer) ville det ikke gjøre noen forskjell om filene var lagret i kryptert form siden en tyv lett kan finne nøkkelen og dekryptere de. For å beskytte nøkkelen er det derfor ønskelig å utlede den på en måte som bare kan bli gjort i samarbeid med den rette eieren. Én vei å beskytte nøkkelen er å bruke en nøkkelgeneratormodul 312 som mottar nøkkel 204 som input og utleder innholdsnøkkel 310 som en funksjon av nøkkel 204.1 den utstrekning at nøkkel 204 bare skal tilveiebringes under tilstrekkelig sikre forhold, er det derfor likeså sant at innholdsnøkkel 310 bare skal være deriverbar under passende forhold. Med andre ord: ved å gjøre utledningen av innholdsnøkkelen 310 avhengig av tilgjengeligheten av nøkkel 204 kan hvilken som helst beskyttelse en tar seg råd til for nøkkel 204, videreføres til innholdsnøkkelen 310. Dersom for eksempel tilveiebringelse av nøkkel 204 krever at brukeren logger inn ved å tilveiebringe det riktig passord, kan en være sikker på at innholdsnøkkelen 310 ikke vil være tilgjengelig med mindre brukeren logger inn korrekt.
Derfor er det viktig å beskytte nøkkel 204 fra å bli utlevert på feil grunnlag siden andre prosesser kan være avhengig av at nøkkel 204 er utlevert bare i den riktige sikkerhetssammenhengen (f. eks. en legitim, pålogget bruker som
oppgir det riktige passordet). Som beskrevet nedenfor er én vei å få en maskin til å distribuere nøkkel 204 på en måte som kan føre til misbruk, å oppstarte maskinen i et usikkert miljø hvor skadelige komponenter av operativsystemet kan erstatte de legale komponentene (hvor de legale komponentene er antatt å være i stand til å beskytte nøkkel 204). Mekanismer som sørger for at en maskin er oppstartet i et kjent (trygd) miljø før nøkkel 204 kan bli frigitt blir derfor beskrevet nedenfor.
Oppstartsprosess med tilstandsvalidering
Figur 4 viser en typisk rekkefølge av hendelser som brukes i en oppstartsprosedyre.
Til å begynne med blir maskinen slått på. En typisk maskin er konfigurert til å begynne å eksekvere instruksjoner ved en fast adresse ved det tidspunktet den er slått på. Instruksjonene som typisk finnes ved denne adressen er kjent som "BIOS" 402, eller det "grunnleggende inn/ut-system". Ved slutten av BIOS 402 sin eksekvering begynner BIOS 402 eksekveringen av små programmer kalt "tilleggs-ROM" 404. Tilleggs-ROM er programmer som utfører veldig grunnleggende funksjoner i den tidlige fasen av oppstarten, så som å sette maskinvare-passordet for maskinen eller velge ut hvilken av flere operativsystemer som skal hentes. Etter at tilleggs-ROM'ene 404 er eksekvert blir maskinen instruert til å laste hovedoppstartsdatasettet (MBR) 406.
MBR 406 er et eksekverbart program. Typisk befinner MBR 406 seg på den første sektoren av datamaskinens platelager og begynner ved å slå opp i partisjonstabellen hvilken partisjon som skal brukes i den videre oppstarten. (For eksempel kan en plate være partisjonert for bruk med forskjellige operativsystemer og hvert operativsystem kan kreve en annen oppstartsprosedyre.) Etter at den riktige partisjonen har blitt slått opp overfører MBR 406 kontrollen til oppstartssektoren 408 som er assosiert med denne partisjonen. Oppstartssektoren innleder da prosessen med å laste operativsystemlasteprogrammet 410 som til slutt skal hente operativsystemet. Det skal bemerkes at MBR 406 vises i figur 4 bare for å vise hvordan en slik komponent ville passe i en eksempelvis oppstartsprosess og oppfinnelsen er ikke begrenset til oppstartsprosedyrer som bruker MBR 406.
I tiden hvor operativsystemlasteprogrammet 410 kjører er lasteprogrammet og maskintilstanden godkjent (450). ("Maskin" kan i denne sammenheng henvise til enten en fysisk maskin eller en virtuell maskin. Godkjennelsen blir utført av en programvarekomponent med tillit som opererer i et høysikkerhetsmiljø (en utførelsesform av det som er beskrevet nærmere nedenfor), og derfor finnes noen grad av sikkerhet/tillit at valideringen av lasteprogrammet 410 blir gjort riktig. Ved i hovedsak å godkjenne de relevante sidene av maskinens tilstand mens operativsystemlasteprogrammet 410 har kontroll med maskinen og ved å godkjenne lasteprogrammet 410 er det mulig å tilveiebringe en viss sikkerhet for at illegitime eller skadelige versjoner av operativsystemkomponenter (f eks. maskinvareabstraksjonslaget, kjernen, drivere, osv.) 416 ikke lastes inn senere, frem til den tiden hvor innloggingsprogrammet 418 eksekverer. Å hindre skadelige komponenter å bli lastet inn frem til den tiden hvor innloggingsprogram 418 starter er viktig, fordi én av de første tingene operativsystemet skal gjøre etter at det er lastet, er å kjøre et innloggingsprogram 418 som styrer tilgangen til nøkkel 204, og dersom skadelige komponenter kan være lastet ville disse komponentene kan forårsake at innloggingsprogram 418 oppfører seg feil på en måte som kan resultere i at nøkkel 204 blir frigitt på feil grunnlag og dermed kompromittere sikkerheten av alle komponentene som avhenger av beskyttelsen av nøkkel 204 som beskrevet ovenfor. Derfor kan beskyttelsen av nøkkel 204 være oppnådd ved å utøve tett kontroll over maskinens tilstand fra tiden da operativsystemlasteprogrammet 410 startes til innloggingsprogrammet har avsluttet.
Validering 450 finner sted i den tiden når operativsystemlasteprogrammet 410 eksekverer. Valideringen innbefatter å godkjenne lasteprogrammet og maskintilstanden og kan også innbefatte å sette maskintilstanden til en godkjent tilstand. Den grunnleggende ideen bak å godkjenne og innstille maskintilstanden er å bringe maskinen i en tilstand hvor, dersom lasteprogrammet eksekverer mens maskinen er i denne tilstanden, lasteprogrammet ikke vil laste skadelige komponenter eller ellers oppføre seg på måter som ville føre til sikker-hetsproblemer. Validering 450 sørger for at lasteprogramkoden er faktisk den koden som har vært verifisert før, at den oppfører seg riktig, og sørger også for at maskinen er i en tilstand, i hvilken denne kjente koden vil oppføre seg riktig (enten ved å verifisere at maskinen allerede er i denne tilstanden eller ved å sette maskinen i denne tilstanden). Det skal forstås at denne teknikken er i stand til å forbedre den eksisterende (trygge) tilstanden av maskinen for å sikre at fremtidige tilstander av maskinen også skal være trygg, og dette løft er gjort mulig av det faktum at oppførselen av operativsystemlasteprogrammet 410 ikke bare er kjent og forstått, men også tett avgrenset. Basert på denne observasjon skal det forstås at validering 450 burde ikke skje for tidlig (f eks. ved tidspunktet når tilleggs-ROMs 404 eller MBR 406 eksekverer) siden det store mangfold av kode fra mange forskjellige kilder og den store bredden av tilstander som maskinen kan inneha som et resultat av å eksekvere slik kode, gjør det vanskelig, hvis ikke umulig, å bestemme oppførselen til maskinen mens den eksekverer alle disse forskjellige kodemoduler. Derfor skal en helst ikke bry seg om i hvilke tilstander maskinen er før kjøringen av lasteprogrammet 410, så lenge maskinen kan settes i en legitim tilstand ved tidspunktet når lasteprogrammet 410 eksekverer.
I en foretrukket utførelsesform er eksekveringen av lasteprogram 410 delt opp i to trinn: trinn 1 (412) og trinn 2 (414). Fortrinnsvis er koden som implementerer trinn 2 godkjent (450) før trinn 2 begynner, og koden med tillitt som utfører validering 450 hopper da inn i trinn 2 ved et klart angitt startpunkt.
("Tillitskoden" som utfører valideringen er ovenfor nevnt program som eksekverer i et høysikkerhetsmiljø. Fagpersonen vil forstå at "tillitt" ikke impliserer absolutt ufeilbarlighet, men bare betyr at det finnes noe grunnlag for å anta at koden skal gjøre jobben riktig. Å utføre "tillitskode" i et høysikkerhetsmiljø betyr at tillitskoden skal operere riktig, siden oppførselen av et program kan bli berørt av miljøet hvor det eksekverer: (1) i et miljø som oppfyller noen forventninger kan en stole på at tillitskoden utfører sin funksjon korrekt og (2) en kan stole på at et høysikkerhets-miljøet på en korrekt måte tilveiebringer et miljø som oppfyller slike forventninger. Trinn 2 kan da godkjenne (i henhold til noen definerte standarder) hvilken som helst informasjon som det har mottatt fra trinn 1. Skillelinjen mellom trinn 1 og trinn 2 reflekterer det faktum at det kan være noen sider ved en oppstartsprosedyre som kan utføres uten noen sikkerhetskontroll og uten å ha konsekvenser for noen sikkerhetsrelaterte oppgaver (så som distribusjonen av nøkkel 204), så lenge de relevante programmene og tilstanden kan godkjennes et sted før hendelser kan bli satt i gang som kan forårsake at en slik sikkerhetsrelatert oppgave ikke utføres riktig. Videre kan det være problematisk å forsøke å godkjenne tilstanden for tidlig i oppstartsprosessen: det aktuelle programforløp som en legitim oppstartsprosedyre kan ta, er ganske variabel slik at det blir vanskelig å definere forskjellen mellom gyldige eller ugyldige maskintilstander under slike variable forhold. Det kan være fornuftig å ganske enkelt tillate at lastingen fortsetter gjennom disse variable tilstander uten å prøve å bestemme om tilstandene som maskinen går gjennom er rett. Trinn 1 representerer derfor den delen av lastingen som fortsetter uten noe validering. Ved slutten av trinn 1 er lasteprogrammet og maskintilstanden godkjent og trinn 2 begynner. Antakelsen av en slik skillelinje er at prosesser kan eksekvere uten sikkerhetsbegrensninger opp til et visst punkt
hvor alle faktorer om maskinen er godkjente og maskinen er satt i en godkjent tilstand, som i praksis tilintetgjør effekten av tidligere handlinger som kan ha fått maskinen i en tilstand som er uakseptabel fra et sikkerhetsstandpunkt. Det eksakte punkt i lasteprosessen hvor skillelinjen mellom trinn 1 og trinn 2 ligger, er meget spesifikt for forholdene (f. eks. hvordan ser lasteprogramkoden ut, hvilke oppgaver trenger å bli gjort som del av lastingen?) og er et kompromiss: på den ene siden burde skillelinjen ligge sent nok at, for fremtidige handlinger, mengden av variasjon i legitim lastingsoppførsel er liten nok til at legitim oppførsel er mulig å bli skilt fra illegitim oppførsel. (Som nevnt ovenfor gjør det store antall av tilleggs-ROM og andre variabler tidlig i lastingsprosedyren antallet av mulige program-forløp så stor at det er vanskelig å skjelne legitim oppførsel fra illegitim oppførsel.) På den andre siden burde skillelinjen ligge tidlig nok til at den kommer før hendelser (f. eks. lastingen av innloggingsprogrammet) som kan har berørt sikkerheten, så som å forårsake at nøkler, blir frigitt på feil grunnlag. Generelt tillater skillelinjen mellom trinn 1 og trinn 2 at en eksekverer et vilkårlig system i en "rå" (eller "åpen" eller "ikke-godkjent") tilstand i en tid og så starter alle nødvendige komponenter (f. eks. et høysikkerhetsmiljø) for å verifisere oppførselen og så bruke slike komponenter for å godkjenne maskinens tilstand (eller tvinge maskinen i en godkjent tilstand), på hvilket punkt prosessen som gjør noe som senere kan påvirke sikkerheten (f. eks. distribusjonen av nøkler) kan få tillatelse å fortsette.
Valideringen 450
Validering 450 er i hovedsak å verifisere at operativsystemlasteprogrammet 410 (eller rettere sagt: i en foretrukket utførelsesform å verifisere at trinn 2 av lasteprogrammet) er et kjent program med tillitt, og å sikre at maskinen det eksekverer på, er i en godkjent tilstand. Derfor har valideringen to deler: (1) å sjekke lasteprogrammet (eller trinn 2 av lasteprogrammet) for å sikre at det er det kjente program med tillitt som det en tror det er, og (2) endre den relevante maskintilstanden til en godkjent tilstand under hvilken lasteprogrammet er kjent til å oppføre seg riktig. Forutsetningen med å utføre (1) og (2) er at et kjent program som eksekverer under en kjent maskintilstand, vil oppføre seg på en kjent måte.
Den første delen av valideringen - dvs. å kontrollere lasteprogrammet - kan være utført på mange måter. I det enkleste eksempel kan en hash-kode av det kjente programmet (som kan være kryptografisk signert til å opprette en digital signatur eller alternativt lagret på en trygg måte) testes mot det aktuelle programmet som eksekverer. Problemet med å lage en hash-kode over hele programmet er at forskjellige forekomster av et legitimt program kan ha litt forskjellige avbildninger. Så en hash-kode som er beregnet på en måte som krever fullstendig identitet mellom det kjente programmet og den aktuelle forekomsten av programmet kan være for restriktivt. Fortrinnsvis utføres valideringen på en måte som sikrer at programmet er hva det er forutsatt å være, men som ikke er overdreven restriktiv, dvs. valideringsprosessen kan sammenlikne hash-koder av programkomponenter som er kjent til å være fast og kan utføre andre tester på programkomponenter som kan endres i løpet av tiden. Komponenten som utfører valideringen burde være skreddersydd til de spesifikke egenskapene av programmet som skal godkjennes; oppfinnelsen er ikke begrenset på en spesiell teknikk for å godkjenne et program.
Den andre delen av valideringen - dvs. å verifisere/sette maskintilstanden - er fortrinnsvis utført ved å sette alle relevante "kilder" av tilstanden til kjente verdier. Typisk kommer den relevant tilstanden som kan berøre et operativt program fra tre kilder: hovedprosessoren, brikkesettet og minnet. Ved tidspunktet for valideringen kan f. eks. hovedprosessoren settes i en kjent tilstand - f. eks. ring 0 med programtelleren satt til en kjent adresse, alle dataregistrene settes til null og all minne, bortsett fra minnet hvor lasteprogrammet er lagret, settes til null. Når lasteprogrammet har blitt verifisert å oppføre seg riktig når det eksekverer med maskinen i denne tilstanden burde kombinasjonen av å undersøke lasteprogrammet og å plassere maskinen i den godkjente tilstanden sikre riktig oppførsel frem til den tiden når innloggingsprogrammet 418 kjører. Som diskutert ovenfor er én av fordelene (enn om ikke den eneste) av riktig oppførsel opp til kjøringen av innloggingsprogram 418, at skadelige komponenter som ville forårsake at nøkkelen 204 ville bli frigitt på feil grunnlag, ikke lastes.
Det skal bemerkes at for at valideringsprosessen skal beskytte lastingen av operativsystemet mot skadelige komponenter, burde det være tilstrekkelig sikker at valideringsprosessen selv eksekverer korrekt. Riktigheten av valideringsprosessen kan sikres ved å utføre gyldighetsovervåkeren som en agent med tillitt som eksekverer på eller i et høysikkerhetsdatabehandlingsmiljø. For eksempel kan det være et lite operativsystem som utfører et begrenset sett av funksjoner, men som tilveiebringer en høy grad av sikkerhet som slike operativsystemer skal utføre i henhold til spesifikasjonene. Et slikt operativsystem kan eksekvere sammen med andre operativsystemer på en enkel maskin og isolasjonen av et slikt høysikkerhetsoperativsystem fra de andre (mindre trygge) miljøer på systemet kan vært påtvunget av en overvåkende komponent, så som en "hypervisor" eller virtuellmaskinmonitor (VM-monitor). (I én utførelsesform påtvinger en VM-monitor partisjoner som er miljøer som VM-monitoren vedlike-holder i en tilstand av gjensidig isolasjon fra hverandre, og hvor et operativsystem kan eksekvere.) Videre kan høysikkerhetskomponenten har eksklusiv tilgang til en tillitsbase, så som en maskinvaremodul som anvender og beskytter kryptogråfiske nøkler på plattformbasis. Gyldighetsovervåkeren kan være et program (eller "agent") som eksekverer i et slikt høysikkerhetsmiljø, som ville tilveiebringe sikkerhet at - i den utstrekning en kan stole på at høysikkerhetsmiljøet selv motstår angrep - gyldighetsovervåkeren ville ikke bli angrepet fra utenfor høysikkerhets-miljøet som ville forårsake at den oppfører seg uriktig. Som nevnt ovenfor kan høysikkerhetsmiljøet i tillegg tilveiebringe forseglet lagring (dvs. evnen til å lagre dataenheter og å frigi disse bare til et spesielt objekt som denne dataenheten er koblet til), og gyldighetsovervåkeren kan bruke det forseglede lager til å lagre nøkler som skal bli frigitt. Det skal bemerkes at gyldighetsovervåkeren kan være en integrert del av høysikkerhetsmiljøet, men kan også være en separat komponent som eksekverer i høysikkerhetsmiljøet.
Figur 5 viser et eksempel med en gyldighetsovervåker 550 som utfører validering i samsvar med prosedyren beskrevet ovenfor. Gyldighetsovervåker 550 har evnen å evaluere lasteprogram 410 på riktighet og/eller samsvar med et sett med kjente standarder. I tillegg har gyldighetsovervåker 550 evnen å evaluere og/eller påvirke maskinstatus 502. Ved å bruke kombinasjonen av disse evnene kan gyldighetsovervåkeren 550 sikre at lasteprogram 410 oppfører seg riktig ved å sikre at lasteprogrammet 410 er akkurat det lasteprogram som er forventet at det kjører og ved å sikre at maskinen som det eksekverer på, er i en tilstand hvor lasteprogrammet 410 er kjent for å oppføre riktig.
Strukturelt kan gyldighetsovervåkeren 550 innbefatte to komponenter: en generell del 504 og en lasteprogram-spesifikk del 506. Den generelle delen 504 omfatter kode som er felles til et stort mangfold av gyldighetsovervåkere (eller alle gyldighetsovervåkere). Den lasteprogram-spesifikke delen 506 omfatter kode som spesifikk relaterer til valideringen av et spesielt lasteprogram 410 - dvs. kode som forstår hvordan en legal forekomst av lasteprogrammet 410 (eller trinn 2 av lasteprogram 410) ville se ut og som utfører tester for å sikre at lasteprogram 410 over-holder denne forståelsen. Derfor kan den lasteprogram-spesifikke delen 506 kombineres med den generelle delen 504 for å danne en fullstendig gyldighetsovervåker.
Gyldighetsovervåker 550 er komponenten som ultimativ bestemmer om nøkkel 204 skal gis til lasteprogrammet (som så senere skal gi den til operativsystemet for bruk innenfor operativsystemet i samsvar med måten det er tillatt av et innloggingsprogram, som beskrevet ovenfor). Gyldighetsovervåker 550 kan beskytte nøkkel 204 ved å forsegle nøkkel 204 til gyldighetsovervåker 550 i en forseglet lagringsanordning 508. Den forseglede lagringsanordning 508 kan være et kjennetegn av et høysikkerhetsdatabehandlingsmiljø. Den forseglende lagringsanordning 508 kan tillate komponenter å eksekvere i et høysikkerhetsmiljø for å knytte vilkårlige data til seg selv, slik at ingen andre komponent kan få tak i disse data. For eksempel kan den lasteprogramspesifikke delen 506 av gyldighetsovervåker 550 knytte nøkkel 204 til seg selv. Den forseglende lagringsanordning 508 skal hindre alle komponenter bortsett fra den lasteprogramspesifikke delen 506 å bryte forseglingen av nøkkelen 204. Nøkkel 204 er da beskyttet fordi den bare kan hentes frem av den lasteprogramspesifikke delen 506 og lasteprogram-spesifikk del 506 vil bare distribuere nøkkel 204 til et lasteprogram som lasteprogram-spesifikk del 506 stoler på at det ikke er årsak for at nøkkel 204 blir frigitt på feil grunnlag. I en annen utførelsesform er nøkkelen forseglet basert på en kombinasjon av komponenter som innbefatter gyldighetsovervåkeren og trinn 2 av lasteprogram 410.1 en slik utførelsesform kan den lasteprogramspesifikke delen av gyldighetsovervåkeren 506 være fjernet fordi forseglingslagrings-mekanismen hovedsakelig selv sikrer tilstedeværelsen av et korrekt trinn-2-lasteprogram før forseglingen til nøkkelen brytes, siden binærfilen for et korrekt trinn-2-lasteprogram er del av grunnlaget for å lage forseglingen.
Eksempelprosess med å beskytte SYSKEY
Figur 6 viser en eksempelprosess hvordan en nøkkel beskyttes i samsvar med aspekter av oppfinnelsen beskrevet ovenfor. Et sted etter at en maskin er startet, utføres et operativsystemlasteprogram (602). Under utføringen av operativsystemlasteprogrammet godkjennes lasteprogrammet og maskinstatus
(604) for derved å sikre at lasteprogrammet oppfører seg på en forutsigbar måte pga det skrevet ovenfor. Etter at lasteprogrammet og maskinstatus har blitt godkjent brukes lasteprogrammet til å laste operativsystemet mens det forhindres at skadelige komponenter blir hentet (606). (Som diskutert ovenfor betyr validering av lasteprogrammet og maskinstatus at den fremtidige oppførselen av lasteprogrammet er kjent til ikke å resultere i nedlastingen av skadelige komponenter.) Etter at operativsystemet er lastet kjøres innloggingsprogrammet som styrer tilgangen til nøkkelen.
Andre eksempelutførelsesformer
Det skal bemerkes at mekanismene av foreliggende oppfinnelse ikke bare kan brukes til å utføre nedlastingen av et operativsystem men kan generelt brukes til å få et system til å utføre en funksjon i en "rå" (ikke-godkjent) tilstand mens det kreves validering for å fortsette med visse funksjoner. For eksempel kan en datamaskin utføre noen funksjoner uten noen slags validering. (F. eks. kan datamaskinen få lov til å virke som en radio, men valideringen må gjennomføres før datamaskinen kan utføre mer sensitive funksjoner - f. eks. lese filer fra plate-lageret). Generelt kan en maskin betraktes som både et husholdningsapparat og en generell PC og at husholdningsapparatdelen ikke krever validering/innlogging mens den generelle PCen gjør det.
Videre er gyldighetsovervåkeren ikke begrenset til enten å frigi/ikke frigi et spesielt sett av nøkler til innloggingsprogrammet men kan være konfigurert til å frigi spesifikke sett av nøkler til spesielle programvaregrupper - dvs. det finnes én programvaregruppe som kan få en første nøkkel, men gyldighetsovervåkeren kan frigi en annen nøkkel bare til en programvaregruppe som har blitt validert mer grundig.
I tillegg har nøkler ikke nødvendigvis behov for å bli frigitt gjennom en innloggingsprosedyre men kan heller være tilveiebrakt gjennom vilkårlige valideringsprosedyrer. For eksempel kan et binærprogram som avspiller DVD'er, få f eks utlevert DVD-funksjonsnøkler etter at gyldighetsovervåkeren har bestemt at spilleren er den legale binærfilen, og dette uten å kreve innlogging.
I tillegg kan noen programmer arbeide i én form uten validering, men kreve validering for å få lov å vise en annen spesifikk funksjonalitet. For eksempel kan telefonianvendelser starte uten innloggingskrav, men kan kreve innlogging før nøklene frigis som ville tillate at kryptografiske funksjoner kan brukes.
Det ble nevnt at foregående eksemplene har blitt tilveiebrakt bare til forklaringsformål og skal overhode ikke oppfattes som begrensende på foreliggende oppfinnelse. Mens oppfinnelsen har vært beskrevet med referanse til forskjellige utførelsesformer skal det forstås at dette heller er gjort som en beskrivelse og illustrasjon enn som en begrensning. Videre er oppfinnelsen - til tross for den har vært beskrevet her med referanse til spesielle hjelpemidler, materialer og utførelsesformer - ikke tenkt til å bli begrenset på de her fremlagde detaljene; heller strekker oppfinnelsen seg til alle funksjonelle ekvivalente strukturer, fremgangsmåter og bruk som er innenfor omfanget av vedlagte kravene.
Claims (30)
1. Et datamaskinlesbart medium kodet med datamaskineksekverbare instruksjoner for å utføre en fremgangsmåte,
karakterisert vedat den omfatter: - å starte et operativsystemlasteprogram (602); - å validere identiteten eller riktigheten av lasteprogrammet (604); - å sikre at maskinen på hvilken operativsystemlasteprogrammet eksekverer, er i en kjent tilstand (604); og - dersom identiteten eller riktigheten av lasteprogram viser seg, og dersom maskinen hvor operativsystemet eksekverer er i en kjent tilstand, da: - tilveiebringe en nøkkel til lasteprogrammet (606); og - tillate lasteprogrammet å laste et operativsystem (606).
2. Maskinlesbart medium ifølge krav 1,
karakterisert vedat fremgangsmåten videre omfatter å kjøre et innloggingsprogram som styrer tilgangen til nøkkelen (608).
3. Maskinlesbart medium ifølge krav 2,
karakterisert vedat innloggingsprogrammet sikrer at en bruker tilveiebringer akkreditiver som en betingelse for at innloggingsprogrammet innrømmer tilgang til nøkkelen.
4. Maskinlesbart medium ifølge krav 1,
karakterisert vedat nøkkelen kan brukes til å dekryptere en kryptert operativsystempartisjon.
5. Maskinlesbart medium ifølge krav 1,
karakterisert vedat handlingen med å godkjenne identiteten eller riktigheten av lasteprogrammet og handlingen med å sikre at en maskin er i en kjent tilstand (604), er utført etter at alt av det følgende har blitt eksekvert: - et grunnleggende inn/ut-system; - en tilleggs-ROM; - et hovedoppstartsdatasett; og - en oppstartssektor.
6. Maskinlesbart medium ifølge krav 5,
karakterisert vedat handlingen med å godkjenne identiteten eller riktigheten til lasteprogrammet og handlingen med å sikre at en maskin er i en kjent tilstand (604), er utført etter at en del av operativsystemlasteprogrammet har eksekvert.
7. Maskinlesbart medium ifølge krav 6,
karakterisert vedat handlingen med å godkjenne (604) er utført etter at alt, eller i det vesentlige alt, av et operativsystem har startet, eller etter at noen av partisjonene har startet, hvor hver partisjon omfatter et miljø i hvilket noen grad av isolasjon fra andre partisjoner er oppretthold av en VM-monitor.
8. Maskinlesbart medium ifølge krav 1,
karakterisert vedat nøkkelen er knyttet til en gyldighetsovervåker som utfører den godkjennende handling og den sikrende handling, og hvor fremgangsmåten videre omfatter at gyldighetsovervåkeren åpner forseglingen til nøkkelen.
9. Maskinlesbart medium ifølge krav 8,
karakterisert vedat nøkkelen er knyttet til minst gyldighetsovervåkeren, og at gyldighetsovervåkeren godkjenner (604) minst en del av lasteprogrammet.
10. Maskinlesbart medium ifølge krav 8,
karakterisert vedat nøkkelen er knyttet til gyldighetsovervåkeren og til minst en del av lasteprogrammet.
11. Maskinlesbart medium ifølge krav 1,
karakterisert vedat maskinen omfatter en fysisk maskin.
12. Maskinlesbart medium ifølge krav 1,
karakterisert vedat maskinen omfatter en virtuell maskin.
13. Maskinlesbart medium ifølge krav 12,
karakterisert vedat nøkkelen bare blir frigitt dersom en arkitektur av den virtuelle maskinen ikke har endret seg eller er gyldig.
14. Maskinlesbart medium ifølge krav 1,
karakterisert vedat handlingen med å sikre at en maskin er i en kjent tilstand (604) omfatter: - å evaluerende den løpende tilstanden til maskinen og sammenlikne den løpende tilstanden med den kjente tilstanden.
15. Maskinlesbart medium ifølge krav 1,
karakterisert vedat handlingen med å sikre at en maskin er i en kjent tilstand (604) omfatter: - sette den løpende tilstanden til maskinen til å bli konsistent med den kjente tilstanden.
16. Maskinlesbart medium ifølge krav 1,
karakterisert vedat lasteprogrammet er et helt operativsystem eller en hel forekomst av et operativsystem.
17. System for å utføre en oppstart av et operativsystem (134) under forhold som tilveiebringer sikkerhet i forhold til påliteligheten av oppstarten,karakterisert vedat systemet omfatter: - en gyldighetsovervåker (550) som evaluerer riktigheten eller identiteten til et operativsystemlasteprogram (410) som skal laste operativsystemet (134), og som videre evaluerer tilstanden til en maskin (502) på hvilken operativsystemlasteprogrammet (410) skal operere som enten tillater eller forbyr operativsystemlasteprogrammet (410) til å fortsette med å laste operativsystemet (134) avhengig av om riktigheten eller identiteten av operativsystemlasteprogrammet (410) er verifisert eller ikke, og som plasserer denne maskinen i en kjent tilstand (502) før den tillater operativsystemlasteprogrammet (410) å fortsette.
18. System ifølge krav 17,
karakterisert vedat en nøkkel (204) er knyttet til denne gyldighetsovervåker (550) og hvori gyldighetsovervåkeren (550) åpner forseglingen til nøkkelen (204) og leverer nøkkelen (204) til operativsystemlasteprogrammet (410) dersom operativsystemlasteprogrammet (410) har lov å fortsette.
19. System ifølge krav 17,
karakterisert vedat gyldighetsovervåkeren (550) evaluerer riktigheten eller identiteten til operativsystemlasteprogrammet (410) og evaluerer tilstanden av maskinen (502) etter operativsystemlasteprogrammet (410) har startet, men før operativsystemlasteprogrammet (410) har initialisert en kjerne (416) eller en driver.
20. System ifølge krav 17,
karakterisert vedat gyldighetsovervåkeren (550) omfatter: - en generell del som er felles for en klasse av gyldighetsovervåkere; og - en spesifikk del som er spesifikk for operativsystemlasteprogrammet (410) og som kan erstattes med en annen del i tilfellet gyldighetsovervåkeren (550) brukes til å godkjenne et annet operativsystemlasteprogram (410).
21. System ifølge krav 17,
karakterisert vedat maskinen omfatter en fysisk maskin.
22. System ifølge krav 17,
karakterisert vedat maskinen omfatter en virtuell maskin.
23. Fremgangsmåte med å starte et operativsystem,
karakterisert vedat den omfatter: - å eksekvere et grunnleggende inn/ut-system, en tilleggs-ROM, et hovedoppstartsdatasett og en oppstart sektor; - å starte et operativsystemlasteprogram (602); - å godkjenne operativsystemlasteprogrammet (604); - å godkjenne en tilstand til en maskin (604) på hvilken
operativsystemlasteprogrammet eksekverer; - dersom operativsystemlasteprogrammet og tilstanden av maskinen er validert til å være rett, å tillate at operativsystemlasteprogrammet laster et operativsystem (606).
24. Fremgangsmåte ifølge krav 23,
karakterisert vedat en nøkkel som er nødvendig for å utføre korrekt minst én funksjon under operativsystemet er knyttet til en gyldighetsovervåker som utfører handlingene med å godkjenne et operativsystemlasteprogram og å godkjenne en maskinstatus (604), og hvor fremgangsmåten videre omfatter: - dersom operativsystemlasteprogrammet og maskinstatus er gyldige, bryte forseglingen til nøkkelen og levere nøkkelen til operativsystemlasteprogrammet (606).
25. Fremgangsmåte ifølge krav 23,
karakterisert vedat den videre omfatter: å eksekvere et innloggingsprogram etter at operativsystemet er lastet som styrer tilgangen til nøkkelen (608).
26. Fremgangsmåte ifølge krav 23,
karakterisert vedat innloggingsprogrammet enten tillater eller ikke tillater komponenter av operativsystemet å bruke nøkkelen avhengig av om en bruker med suksess fullfører en legitimeringsprosedyre.
27. Fremgangsmåte ifølge krav 23,
karakterisert vedat handlingene med å godkjenne operativsystemlasteprogrammet og å godkjenne maskintilstanden (604) er utført etter at operativsystemlasteprogrammet har utført minst én handling.
28. Fremgangsmåte ifølge krav 27,
karakterisert vedat handlingene med å godkjenne operativsystemlasteprogrammet og å godkjenne maskintilstanden (604) er utført ved et tidspunkt før det å tilbakestille maskintilstanden vil hindre lasteprogrammet å fungere riktig når det laster operativsystemet.
29. Fremgangsmåte ifølge krav 23,
karakterisert vedat maskinen omfatter en fysisk maskin.
30. Fremgangsmåte ifølge krav 23,
karakterisert vedat maskinen omfatter en virtuell maskin.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/882,134 US7694121B2 (en) | 2004-06-30 | 2004-06-30 | System and method for protected operating system boot using state validation |
Publications (3)
Publication Number | Publication Date |
---|---|
NO20052391D0 NO20052391D0 (no) | 2005-05-18 |
NO20052391L NO20052391L (no) | 2006-01-02 |
NO332737B1 true NO332737B1 (no) | 2012-12-27 |
Family
ID=35106886
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
NO20052391A NO332737B1 (no) | 2004-06-30 | 2005-05-18 | System og fremgangsmate for beskyttet oppstart av operativsystemet gjennom bruk av statusvalidering. |
Country Status (21)
Country | Link |
---|---|
US (1) | US7694121B2 (no) |
EP (1) | EP1612666B1 (no) |
JP (2) | JP4796340B2 (no) |
KR (1) | KR101176646B1 (no) |
CN (1) | CN100454246C (no) |
AT (1) | ATE488800T1 (no) |
AU (1) | AU2005201995B2 (no) |
BR (1) | BRPI0501783B1 (no) |
CA (1) | CA2507793C (no) |
CO (1) | CO5700184A1 (no) |
DE (1) | DE602005024744D1 (no) |
HK (1) | HK1087216A1 (no) |
IL (1) | IL168907A (no) |
MX (1) | MXPA05005764A (no) |
MY (1) | MY143926A (no) |
NO (1) | NO332737B1 (no) |
NZ (1) | NZ540356A (no) |
RU (1) | RU2413295C2 (no) |
SG (1) | SG118327A1 (no) |
TW (1) | TWI438686B (no) |
ZA (1) | ZA200504397B (no) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8972590B2 (en) * | 2000-09-14 | 2015-03-03 | Kirsten Aldrich | Highly accurate security and filtering software |
US20060075236A1 (en) * | 2004-09-30 | 2006-04-06 | Marek James A | Method and apparatus for high assurance processing |
WO2007000993A1 (ja) * | 2005-06-28 | 2007-01-04 | Matsushita Electric Industrial Co., Ltd. | 検証方法、情報処理装置、記録媒体、検証システム、証明プログラム及び検証プログラム |
KR100736083B1 (ko) * | 2005-10-28 | 2007-07-06 | 삼성전자주식회사 | 멀티 로딩 장치 및 방법 |
US8291226B2 (en) * | 2006-02-10 | 2012-10-16 | Qualcomm Incorporated | Method and apparatus for securely booting from an external storage device |
US8234717B2 (en) * | 2006-04-12 | 2012-07-31 | Eugrid, Inc. | Accessing and checking the validity of control information stored in external storage |
JP4822544B2 (ja) * | 2006-04-26 | 2011-11-24 | 株式会社リコー | 複数のモジュール構成情報を管理できる画像形成装置 |
JP4898823B2 (ja) * | 2006-10-20 | 2012-03-21 | パナソニック株式会社 | アプリケーション情報改竄監視装置及び方法 |
US7765374B2 (en) * | 2007-01-25 | 2010-07-27 | Microsoft Corporation | Protecting operating-system resources |
US8380987B2 (en) * | 2007-01-25 | 2013-02-19 | Microsoft Corporation | Protection agents and privilege modes |
KR101209252B1 (ko) | 2007-02-02 | 2012-12-06 | 삼성전자주식회사 | 전자기기의 부팅 방법 및 부팅 인증 방법 |
US20090007100A1 (en) * | 2007-06-28 | 2009-01-01 | Microsoft Corporation | Suspending a Running Operating System to Enable Security Scanning |
US8458460B2 (en) * | 2007-09-27 | 2013-06-04 | Intel Corporation | Digest generation from instruction op-codes |
US8683213B2 (en) * | 2007-10-26 | 2014-03-25 | Qualcomm Incorporated | Progressive boot for a wireless device |
US7865712B2 (en) * | 2007-12-26 | 2011-01-04 | Intel Corporation | Method and apparatus for booting a processing system |
JP5062687B2 (ja) * | 2008-03-31 | 2012-10-31 | Eugrid株式会社 | 情報処理装置 |
RU2481616C2 (ru) * | 2008-06-16 | 2013-05-10 | Нокиа Сименс Нетуоркс Ой | Способ и устройство для загрузки программного обеспечения |
KR101013419B1 (ko) * | 2008-08-29 | 2011-02-14 | 주식회사 안철수연구소 | 시스템 보호 장치 및 방법 |
US8302182B2 (en) * | 2008-09-01 | 2012-10-30 | Mediatek Inc. | Embedded system with authentication, and associated authentication method |
KR101197182B1 (ko) * | 2008-12-23 | 2012-11-02 | 한국전자통신연구원 | 컴퓨터 시스템에서의 해킹 방지 장치 및 방법 |
GB2471282B (en) * | 2009-06-22 | 2015-02-18 | Barclays Bank Plc | Method and system for provision of cryptographic services |
GB2471464A (en) * | 2009-06-29 | 2011-01-05 | Nokia Corp | Procedure for generating a merged command list form the static lists to be used to start up or boot up the host device. |
KR20130020734A (ko) * | 2010-04-12 | 2013-02-27 | 인터디지탈 패튼 홀딩스, 인크 | 부팅 처리에서의 단계화 제어 해제 |
CN102024105A (zh) * | 2010-11-16 | 2011-04-20 | 深圳市文鼎创数据科技有限公司 | 安全认证方法和装置 |
US9154299B2 (en) * | 2010-12-13 | 2015-10-06 | Novell, Inc. | Remote management of endpoint computing device with full disk encryption |
KR20140068867A (ko) * | 2011-07-08 | 2014-06-09 | 오픈픽 아이엔씨. | 부팅 프로세스 동안 구성요소들을 인증하기 위한 시스템 및 방법 |
US20130086371A1 (en) * | 2011-09-30 | 2013-04-04 | Pradeep Bisht | Method for device-less option-rom bios load and execution |
TWI450194B (zh) | 2011-11-10 | 2014-08-21 | Inst Information Industry | 作業系統處理方法以及系統、以及儲存其之電腦可讀取記錄媒體 |
US8572410B1 (en) | 2012-07-18 | 2013-10-29 | Freescale Semiconductor, Inc. | Virtualized protected storage |
US9058504B1 (en) * | 2013-05-21 | 2015-06-16 | Malwarebytes Corporation | Anti-malware digital-signature verification |
US9053216B1 (en) | 2013-08-09 | 2015-06-09 | Datto, Inc. | CPU register assisted virtual machine screenshot capture timing apparatuses, methods and systems |
US9167002B2 (en) | 2013-08-15 | 2015-10-20 | Microsoft Technology Licensing, Llc | Global platform health management |
US9304887B2 (en) | 2013-09-16 | 2016-04-05 | International Business Machines Corporation | Method and system for operating system (OS) verification |
US9195831B1 (en) | 2014-05-02 | 2015-11-24 | Google Inc. | Verified boot |
US10140454B1 (en) * | 2015-09-29 | 2018-11-27 | Symantec Corporation | Systems and methods for restarting computing devices into security-application-configured safe modes |
US10177910B2 (en) * | 2016-08-31 | 2019-01-08 | Microsoft Technology Licensing, Llc | Preserving protected secrets across a secure boot update |
US10069633B2 (en) * | 2016-09-30 | 2018-09-04 | Data I/O Corporation | Unified programming environment for programmable devices |
KR101887974B1 (ko) | 2016-12-01 | 2018-08-13 | 현대오트론 주식회사 | 엔진제어기의 안전부팅을 위한 시스템 및 방법 |
EP3333748A1 (de) | 2016-12-08 | 2018-06-13 | Siemens Aktiengesellschaft | Geräteeinheit geeignet für den betrieb im geschützten und/oder offenen betriebszustand sowie zugehöriges verfahren |
TWI616774B (zh) * | 2016-12-08 | 2018-03-01 | 緯創資通股份有限公司 | 電子裝置及其安全起動方法 |
US9817675B1 (en) * | 2017-01-31 | 2017-11-14 | Hytrust, Inc. | Methods and systems for attaching an encrypted data partition during the startup of an operating system |
JP6990994B2 (ja) * | 2017-05-26 | 2022-01-12 | キヤノン株式会社 | 情報処理装置、その制御方法、及びプログラム |
CN109040088B (zh) * | 2018-08-16 | 2022-02-25 | 腾讯科技(深圳)有限公司 | 认证信息传输方法、密钥管理客户端及计算机设备 |
JP7077873B2 (ja) * | 2018-08-29 | 2022-05-31 | 日本電気株式会社 | 情報処理装置、情報処理方法、およびプログラム |
JP7077872B2 (ja) * | 2018-08-29 | 2022-05-31 | 日本電気株式会社 | 情報処理装置、情報処理方法、およびプログラム |
RU2720220C1 (ru) * | 2019-06-21 | 2020-04-28 | Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" (Госкорпорация "Росатом") | Способ загрузки программного обеспечения |
CN114600108A (zh) * | 2019-08-16 | 2022-06-07 | 边信联科技股份有限公司 | 异构处理器通过开放式连接器进行具有远距认证及信息独立的可信运算系统及方法 |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5022077A (en) * | 1989-08-25 | 1991-06-04 | International Business Machines Corp. | Apparatus and method for preventing unauthorized access to BIOS in a personal computer system |
US5210875A (en) * | 1989-08-25 | 1993-05-11 | International Business Machines Corporation | Initial bios load for a personal computer system |
US5892900A (en) | 1996-08-30 | 1999-04-06 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
CN1869997A (zh) | 1995-02-13 | 2006-11-29 | 英特特拉斯特技术公司 | 用于安全交易管理和电子权利保护的系统和方法 |
US5943422A (en) | 1996-08-12 | 1999-08-24 | Intertrust Technologies Corp. | Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels |
US6658568B1 (en) | 1995-02-13 | 2003-12-02 | Intertrust Technologies Corporation | Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management |
US6157721A (en) | 1996-08-12 | 2000-12-05 | Intertrust Technologies Corp. | Systems and methods using cryptography to protect secure computing environments |
NL1000530C2 (nl) | 1995-06-08 | 1996-12-10 | Defil N V Holland Intertrust A | Filtreerwerkwijze. |
JPH096232A (ja) * | 1995-06-21 | 1997-01-10 | Ricoh Elemex Corp | 暗号化システム、復号化システム、情報秘匿処理システムおよび情報秘匿通信システム |
US5920861A (en) | 1997-02-25 | 1999-07-06 | Intertrust Technologies Corp. | Techniques for defining using and manipulating rights management data structures |
US6668325B1 (en) | 1997-06-09 | 2003-12-23 | Intertrust Technologies | Obfuscation techniques for enhancing software security |
US6249866B1 (en) | 1997-09-16 | 2001-06-19 | Microsoft Corporation | Encrypting file system and method |
US6112181A (en) | 1997-11-06 | 2000-08-29 | Intertrust Technologies Corporation | Systems and methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information |
US6397242B1 (en) | 1998-05-15 | 2002-05-28 | Vmware, Inc. | Virtualization system including a virtual machine monitor for a computer with a segmented architecture |
US6496847B1 (en) | 1998-05-15 | 2002-12-17 | Vmware, Inc. | System and method for virtualizing computer systems |
US6189100B1 (en) | 1998-06-30 | 2001-02-13 | Microsoft Corporation | Ensuring the integrity of remote boot client data |
US6209088B1 (en) | 1998-09-21 | 2001-03-27 | Microsoft Corporation | Computer hibernation implemented by a computer operating system |
US6327652B1 (en) | 1998-10-26 | 2001-12-04 | Microsoft Corporation | Loading and identifying a digital rights management operating system |
US7194092B1 (en) | 1998-10-26 | 2007-03-20 | Microsoft Corporation | Key-based secure storage |
US6330670B1 (en) | 1998-10-26 | 2001-12-11 | Microsoft Corporation | Digital rights management operating system |
JP3273926B2 (ja) * | 1999-02-12 | 2002-04-15 | 株式会社神戸製鋼所 | ディジタル信号処理装置 |
US6651171B1 (en) | 1999-04-06 | 2003-11-18 | Microsoft Corporation | Secure execution of program code |
US6757824B1 (en) | 1999-12-10 | 2004-06-29 | Microsoft Corporation | Client-side boot domains and boot rules |
US6711675B1 (en) | 2000-02-11 | 2004-03-23 | Intel Corporation | Protected boot flow |
FI114416B (fi) * | 2001-06-15 | 2004-10-15 | Nokia Corp | Menetelmä elektroniikkalaitteen varmistamiseksi, varmistusjärjestelmä ja elektroniikkalaite |
DE60228027D1 (de) * | 2001-07-06 | 2008-09-18 | Texas Instruments Inc | Sicherer Bootloader zum Sichern digitaler Geräte |
US20030028765A1 (en) | 2001-07-31 | 2003-02-06 | Cromer Daryl Carvis | Protecting information on a computer readable medium |
US7191464B2 (en) * | 2001-10-16 | 2007-03-13 | Lenovo Pte. Ltd. | Method and system for tracking a secure boot in a trusted computing environment |
US7159240B2 (en) | 2001-11-16 | 2007-01-02 | Microsoft Corporation | Operating system upgrades in a trusted operating system environment |
US7137004B2 (en) | 2001-11-16 | 2006-11-14 | Microsoft Corporation | Manifest-based trusted agent management in a trusted operating system environment |
US7243230B2 (en) | 2001-11-16 | 2007-07-10 | Microsoft Corporation | Transferring application secrets in a trusted operating system environment |
GB2382419B (en) | 2001-11-22 | 2005-12-14 | Hewlett Packard Co | Apparatus and method for creating a trusted environment |
US7631196B2 (en) | 2002-02-25 | 2009-12-08 | Intel Corporation | Method and apparatus for loading a trustable operating system |
JP3863447B2 (ja) * | 2002-03-08 | 2006-12-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 認証システム、ファームウェア装置、電気機器、及び認証方法 |
US7343493B2 (en) | 2002-03-28 | 2008-03-11 | Lenovo (Singapore) Pte. Ltd. | Encrypted file system using TCPA |
US7565509B2 (en) | 2002-04-17 | 2009-07-21 | Microsoft Corporation | Using limits on address translation to control access to an addressable entity |
US6986006B2 (en) | 2002-04-17 | 2006-01-10 | Microsoft Corporation | Page granular curtained memory via mapping control |
US7058768B2 (en) | 2002-04-17 | 2006-06-06 | Microsoft Corporation | Memory isolation through address translation data edit control |
EP1495401B1 (en) | 2002-04-18 | 2007-01-24 | Advanced Micro Devices, Inc. | Initialization of a computer system including a secure execution mode-capable processor |
US6907522B2 (en) * | 2002-06-07 | 2005-06-14 | Microsoft Corporation | Use of hashing in a secure boot loader |
US7085933B2 (en) | 2002-06-11 | 2006-08-01 | Lenvo (Singapore) Pte, Ltd. | Computer system apparatus and method for improved assurance of authentication |
US7200758B2 (en) * | 2002-10-09 | 2007-04-03 | Intel Corporation | Encapsulation of a TCPA trusted platform module functionality within a server management coprocessor subsystem |
US7974416B2 (en) | 2002-11-27 | 2011-07-05 | Intel Corporation | Providing a secure execution mode in a pre-boot environment |
US6959262B2 (en) | 2003-02-27 | 2005-10-25 | Hewlett-Packard Development Company, L.P. | Diagnostic monitor for use with an operating system and methods therefor |
-
2004
- 2004-06-30 US US10/882,134 patent/US7694121B2/en active Active
-
2005
- 2005-05-09 SG SG200503030A patent/SG118327A1/en unknown
- 2005-05-10 AU AU2005201995A patent/AU2005201995B2/en not_active Ceased
- 2005-05-13 KR KR1020050040209A patent/KR101176646B1/ko active IP Right Grant
- 2005-05-16 TW TW094115799A patent/TWI438686B/zh not_active IP Right Cessation
- 2005-05-17 CA CA2507793A patent/CA2507793C/en active Active
- 2005-05-18 NO NO20052391A patent/NO332737B1/no not_active IP Right Cessation
- 2005-05-23 BR BRPI0501783A patent/BRPI0501783B1/pt not_active IP Right Cessation
- 2005-05-25 RU RU2005115918/08A patent/RU2413295C2/ru active
- 2005-05-27 NZ NZ540356A patent/NZ540356A/en not_active IP Right Cessation
- 2005-05-27 CO CO05051825A patent/CO5700184A1/es not_active Application Discontinuation
- 2005-05-30 CN CNB200510076073XA patent/CN100454246C/zh active Active
- 2005-05-30 MY MYPI20052444A patent/MY143926A/en unknown
- 2005-05-30 ZA ZA200504397A patent/ZA200504397B/xx unknown
- 2005-05-30 MX MXPA05005764A patent/MXPA05005764A/es active IP Right Grant
- 2005-06-01 IL IL168907A patent/IL168907A/en active IP Right Grant
- 2005-06-20 JP JP2005179527A patent/JP4796340B2/ja active Active
- 2005-06-23 AT AT05105591T patent/ATE488800T1/de not_active IP Right Cessation
- 2005-06-23 DE DE602005024744T patent/DE602005024744D1/de active Active
- 2005-06-23 EP EP05105591A patent/EP1612666B1/en active Active
-
2006
- 2006-06-27 HK HK06107239.0A patent/HK1087216A1/xx unknown
-
2011
- 2011-07-01 JP JP2011147422A patent/JP5378460B2/ja active Active
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
NO332737B1 (no) | System og fremgangsmate for beskyttet oppstart av operativsystemet gjennom bruk av statusvalidering. | |
US8656146B2 (en) | Computer system comprising a secure boot mechanism | |
US9372699B2 (en) | System and method for processing requests to alter system security databases and firmware stores in a unified extensible firmware interface-compliant computing device | |
CN109840430B (zh) | Plc的安全处理单元及其总线仲裁方法 | |
US8464037B2 (en) | Computer system comprising a secure boot mechanism on the basis of symmetric key encryption | |
KR101231561B1 (ko) | 서비스 커넬 설계에 의한 보안 정책 차별화 | |
US8166304B2 (en) | Support for multiple security policies on a unified authentication architecture | |
US20210334381A1 (en) | Method and electronic device capable of securely storing and loading firmware | |
US8024579B2 (en) | Authenticating suspect data using key tables | |
US20090063108A1 (en) | Compatible trust in a computing device | |
JP2007514994A (ja) | 耐タンパ・トラステッド仮想マシン | |
US20040151319A1 (en) | Method and apparatus for managing a hierarchy of nodes | |
US20060130130A1 (en) | Programmable processor supporting secure mode | |
JP2007310688A (ja) | マイクロコンピュータおよびそのソフトウェア改竄防止方法 | |
KR20130114703A (ko) | 보안 상태 전환을 관리하기 위한 방법 및 장치 | |
EP3440586B1 (en) | Method for write-protecting boot code if boot sequence integrity check fails | |
Safford et al. | Trusted computing and open source |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
CHAD | Change of the owner's name or address (par. 44 patent law, par. patentforskriften) |
Owner name: MICROSOFT TECHNOLOGY LICENSING, US |
|
MM1K | Lapsed by not paying the annual fees |