155 Datasäkerhet. Här är ett antal konkreta hot problem vad avser säkerheten i datorsystem.

Storlek: px
Starta visningen från sidan:

Download "155 Datasäkerhet. Här är ett antal konkreta hot problem vad avser säkerheten i datorsystem."

Transkript

1 Mål, medel och tekniker Skydds- och datasäkerhetsfunktioner används av minst två skäl. Dels vet vi att alla program är behäftade med felaktigheter, som kan innebära driftstörningar mot vilka man vill skydda sina tillämpningars såväl som operativsystemets integritet. Vidare bör rimliga mått och steg tas visavi avsiktliga sk dataintrång. Datorer byggdes en gång i tiden för att "knäcka koder" som framställdes mekaniskt. I och med datorsystems allmänna användbarhet har de kommit att utnyttjas för sådan datahandling som kräver skydd. Kryptologin har därvid kommit till heders igen Syften eller mål De mål/tjänster som man vanligen vill uppnå är följande fem; efter ISO:s säkerhetsarkitektur [ISO88]. i. Konfidentialitet (sekretess, 'secrecy') Vissa data/viss information skulle om den kom i orätta händer förorsaka alltifrån mindre missnöje till katastrof. Dessa sekretessaspekter på säkerhet berör också det som på svenska lite felaktigt kallas den "personliga integriteten". ii. Autenticitet (äkthet) Med denna äkthetsfråga avses oftast verifierad identitet. Eftersom rättigheter att utnyttja systemresurser, att se information och att förändra system ofta förknippas med identiteter (processnamn, person etc) är subjektidentifiering av central roll. Otillbörlig användning ska förhindras via korrekta namn. iii. Integritet (helhet; jfr 'integer' = heltal och integral) Här avses förmågan hos ett system att hålla data/information hel eller oförvanskad. Borttappade, mångfaldigade eller förändrade meddelanden ska inte få förekomma. Ibland används benämningen 'message authenticity' eller bara 'authenticity'. iv. Åtkomstkontroll ('access control', 'protection') Denna tjänst reglerar vem som tillåts göra vad med vad. Begreppet åtkomstkontroll står också för en mekanism. Begrepp som som subjekt och objekt är centrala här. I dessa anteckningar delar vi in mekanismerna i minnesskydd och informationsflödeskontroll. v. Icke-förnekbarhet ('non-repudiation') Ett avsänt meddelande eller ett resursutnyttjande från ett subjekt (process) bör inte senare kunna "bortförklaras". Kan även vara dubbelriktad Intrång Här är ett antal konkreta hot problem vad avser säkerheten i datorsystem. i. Användande av system där någon annat är in-loggad: Här fungerar inte autenticeringen. Många gånger har en användare anlänt till en terminal eller arbetssatation som lämnats av en företrädare med ett program som simulerar den vanliga inloggningssekvensen i syfte att samla in par av användaridentiterer och lösenord. ii. Forcering av lösenord: Symptom på samma sjukdom. Lösenord allena ger svag autenticitet. En förskräckande liten andel utgörs av "rimliga" lösenord i verkliga system. iii. Genomläsning ('browsing') av gammalt minnesinnehåll: Att detta lyckas beror på att åtkomstkontrollen inte är korrekt implementerad. Återanvändning ('object reuse') tycks kräva korrekt initiering; radering, nollställning; skriv 0-or/1-or slumpmässigt många gånger på disk/band! iv. Avlyssning: Principiellt alltid möjlig på kommunikationskanaler: Det är möjligt att via kryptering skydda information även om data är åtkomligt för avlyssnaren. Avlyssningen kan vara passiv eller aktiv. En aktiv avlyssning innebär att informationsutvinningen paras med modifikation. Forcering av chiffer är dessutom inte sällan möjlig.

2 156 v. Fall-luckefunktioner ('trap doors'): Oavsiktligt tillgänglig sidoinformation om tex alternativa 'entry'-punkter i program eller annan "sidoinformation" kan utnyttjas för att komma förbi åtkomstspärrar. Vid tex systemanrop utgör operativsystems svagheter att validera parametrar en uppenbar risk. vi. Trojanska hästar: Programdelar som vid sidan av väl specificerad eller dokumenterad funktion även, för att kringgå systemets normala åtkomstkontroller, utnyttjar det faktum att de instansieras i ett "lånat" kontext med felaktiga (för stora) åtkomsträttigheter. vii.virus, maskar. Populära namn på program som innehåller trojanska hästar. De genererar kopior av sig själva och sprids ofta via oskyddade kommunikationskanaler inklusive lånade disketter och dåligt skyddade persondatorer eller tom ännu mer indirekt via "infekterade" kompilatorer, editorer, &c. Den 15 august 1989 kände man till ca 75 olika virus för PC-världen och cirka 25 för Macintosh. Maskar emanerade ursprungligen genom försök att åstadkomma god lastbalansering i lokala nät! Här är några förslag på definitioner: Definition # Virus Mask 1 Malign Benign 2 "Lever i" andra Fristående programdelar program 3 Sprids exponentiellt Vandrar från punkt till punkt Exempel 1. Studenten som i sin lab-lösning lade in en TH. Läraren provkörde och fick sin fil med kommande tentamensfrågor läst; ett sk kontextfel. 2. Skapa en "jättearray" för din process, "glöm" att initierade den, hoppas att OS inte raderar det som fanns i det virtuella minnet före allokeringen och skriv ut: Ibland bara skräp, ibland något "intressant"; jfr 'object reuse'. viii. En taxonomi. Helt nyligen har C. Landwehr et al [Lan94] publicerat följande taxonomi om säkerhetsfels ursprung. (Taxos, grek. ordning, nomos, grek. lag.) Säkerhetsfel Avsiktliga Förstörande Trojansk häst Replikerbar Virus Icke-replikerbar Fallucka Logisk bomb Bevarande Covert channel Tidskanal Minneskanal Diverse Oavsiktliga Valideringsfel Argument Kontextfel Synkroniseringsfel P(S) utan V(S) Resursfel Baklås Autenticeringsfel Jag är inte jag Övriga Pekare i C Mot finare indelnig. Jag hänvisar till artikeln för en diskussion om dessa fel och om system där dessa fel hittats.

3 157 Som komplement till denna "ursprungsklassificering" fortsätter författarna med en analys av platsen i system för felen. Inte överraskande finner de att det är programvaran och speciellt operativsystemen är de platser där de flesta felen sker. Vidare konstateras att felen oftast har sitt ursprung i utvecklingsfasen, speciellt vid specifikationen Medel Det är vanligt att dessa medel, som i andra sammanhang tex processhantering och minneshantering, delas in i 'policies' och mekanismer. De förra specificerar vad man vill åstadkomma, de senare hur detta realiseras. 'Policies' bygger på principer som - "minsta möjliga rättigheter" för användare, dvs små skyddsdomäner, - enkla och verifierbara mekanismer, - "öppen" konstruktion, - fullständigt utnyttjande, - separation av ansvar och - psykologisk acceptans. Mekanismerna ska vara snabba, penetrerande och öppna. - Snabba: Annars använder inga dem. - Penetrerande: Annars är det lätt att gå förbi dem. - Öppna: Annars har vi glömt att programvara har en benägenehet att spridas. i. Åtkomst'policies' kan klassificeras som - 'Mandatory access control' (MAC): Rättigheter åsätts oberoende av subjektens aktiviteter: av systemadministratören. Eftersom sådana (oftast) bygger på etikettering av information så är integritetsfrågan för sådana etiketter viktig. Etiketterna ordnas ofta i fler nivåer; man talar då om 'multi level security', MLS. - 'Discretionary access control' (DAC): Rättigheter kan sättas efter subjektens gottfinnande. Detta är normalt vad som sker i filsystem där användarna efter eget gottfinnande sätter rättigheter för sina filer och kataloger i sk 'access control lists'. Sid- och segmentdeskriptorer för minnesskydd klassas också som DAC eftersom rättigheterna däri tillkommer via kompileringar på användarnas uppdrag. Återanvändning ('object reuse') av tex primärminne måste beaktas: Radering av gamla data är nödvändig före reallokering. En filradering som normalt katalogiseras med en bit i en katalog är ibland otillräcklig: Här rekommenderas i stället upprepade faktiska överskrivningar med slumpbitmönster. I ett (virtuellt) minne bör man kunna vara övertygad om att det minne man själv användt "suddas ut" innan en annan användare allokeras detta block. ii. Mekanismer De vanligaste mekanismerna/teknikerna som används för att åstadkomma säkerhet i datorsystem är följande. - Direkt åtkomstkontroll (Minnesskydd, 'protection') Läs-, skriv- mfl rättigheter för subjekt till objekt. De helt dominerande teknikerna utgörs av kontroll av rättigheter till sidor och filer via sidtabeller respektive filkataloger. - Informationsflödeskontroll MAC för att reglera hur information tillåts spridas. Ett svårhanterligt problem är de sk 'covert channels'; informationsbärande kanaler som uppstår oavsiktligt. Att ett program för vissa indata går in i en oändlig singa är et tecken på en oplanerad kanal. - Kryptografi och chiffer Kan användas både för att skydda data (konfidentialitet och i viss mån integritet) och identiteter (autenticering). Tekniken bygger på att data må finnas tillgängliga för avlyssning (passiv eller aktiv (= avlyssning med modifiering)), men att informationen inte gör det.

4 158 - Digitala signaturer Används för att åstadkomma autenticitet. Realiseras oftast via kryptografiska funktioner. De är motsvarighten till handskrivna signaturer för att användas i en automatiserad värld. - Felkorrigerande koder (redundans och återhämtning) För att säkerställa integritet i samband med oavsiktliga felaktigheter vid lagring eller kommunikation av information. - Kompaktering En teknik i grunden avsedd för helt andra ändamål (sparande av utrymme) som ofta utnyttjas tillsammans med kryptografi. Många chiffer blir starkare om det underliggande klartextspråket framställs med minskad redundans. - Inferenskontroll för att förhindra utvinnande av information ur statistiska databaser. Ett 'query'-vilkor som uppfylls av en individ kan utnyttjas för att undersöka om denna har ytterligare katalogiserade attribut trots att de bör betraktas som konfidentiella Minnesskydd Avgörande för val av mekanism är ambitionsnivån avseende detta skydd. Ambitionsnivåerna kan formuleras som 'policies' på många olika sätt. Här är ett förslag Ambitionsnivåer - Oskyddade system. - 'All-or-nothing systems'. - Operativsystemkontrollerad delning. - Användarstyrd delning. Den första nivån avser operativsystem byggda på maskiner som saknar minnesskydd i maskinvara. Programvarumässigt interpreterad åtkomstkontroll är i allmänhet för kostsam för objekt i primärminnet, varför man väljer att avstå från skydd. Den andra typen av system har sin grund i kombinationen av 'supervisor/user state' och privilegierade instruktioner. Namnet kommer därav att operativsystemet tillåts utföra alla instruktioner; användarna är mer begränsade. Ett system med endast dessa faciliteter måste betraktas som fullständigt oskyddat. Bättre skydd erhålls om operativsystemet därutöver sätter läs- skriv- och exekveringsskydd på minnesdelar, sidor eller segment med maskinvarustöd och för filer, terminaler och noder implementerat i programvara. I de mer avancerade systemen sker styrningen av åtkomstkontrollen efter användarnas intentioner: Inte helt fritt, då skulle kaos uppstå, men efter ramar fastställda av operativsystemet då systemets 'policy' formuleras. Observera att benämningen vanligen är delning och inte skydd. Anledningen är att det just är delningen som gör skyddsaspekterna svårhanterliga och kanske intressanta Tekniker Följande metoder/tekniker är/var vanliga för skydd av primärminne. i. Gränsregister i kombination med 'user/supervisor state'. Åtkomstskyddat område där operativsystemet har allokerats sätts via ett register med hjälp av privilegierad instruktion. En användares försök till referens till skyddat område ger 'trap'. Ett anrop till en förutbestämd adress kan tolkas som ett systemanrop (i system där en 'trap'- instruktion saknas). I övrigt är operativsystemarean oåtkomlig för användarprocesser. Figur 10.1 illustrerar tekniken.

5 159 Primärminnet OS i 'supervisor state' Användare (en åt gången) i 'user state') Ett gränsregister som definieras av OS med privilegierad instruktion Figur 10.1 Gränsregister ii. Lås och nycklar. Minnesblock av fix storlek åsätts mha privilegierad instruktion ett låsvärde (tex 0-15). Endast processer som har motsvarande nyckel i 'process status word', psw, kan referera detta block. Detta är grundmodellen i OS/370. iii. Bas- och gränsregister. En modifikation av tekniken med gränsregister som möjliggör inkapsling av en process' namnrum inom visst område. Denna teknik har alltid vad jag vet kombinerats med dynamisk relokering via detta basregister. Bas- och gränsregistertekniken illustreras av figur Primärminnet OS Åtkomligt område En annan uppehållen process Dessa sätts av OS B L Adresser relokeras via B Kontroll av adress L görs Fig 10.2 Bas- och gränsregister Observera att dessa tre tekniker verkar i det fysiska adressrummmet. Nu till skydd i den logiska adressrymden. iv. Sid- eller segmentskydd. Läs- skriv- och exekveringsrättigheter (rwe) sätts av operativsystemet på basis av allokeringsenhet i respektive tabell. En otillåten operation ger ett 'trap'. Den helt dominerande tekniken idag går via sidsystem och sidskydd. v. Ringskydd. Detta kan sägas vara en generalisering av 'user/supervisor state' så att dels fler processortillstånd (ringnummer, pr.rn) kan lagras i processtatusordet, dels att varje objekt (segment) kan tilldelas ett ringnummer s.rn i segmenttabellelementet. De olika processtillstånden kan också låtas definiera olika klasser av privilegierade instruktioner. Vid varje referens kontrolleras att pr.rn s.rn. Om så inte är fallet fås en 'trap'. Detta skydd, där objekt och subjekt ordnas hierarkiskt (linjärt), verkar oberoende av rwebitarna. Eftersom en naiv tillämpning av denna regel skulle omöjliggöra anrop "inåt" från användare till systemrutiner måste regeln kompletteras. Ett sätt är att tillåta anrop, men bara anrop, inåt och då till förutsatt certifierade anropsställen [s, w] (sk 'protected calls').

6 160 Maskinvarumodellen är funktionellt identisk med 'scope'- reglerna för många blockorienterade språk. vi. 'Capability-' (CL) och/eller åtkomstlistor (ACL). Dessa tekniker eller dess ekvivalenser är mig veterligen de enda som gör användarstyrd åtkomstkontroll möjlig. Listorna (registren, segmenten) med 'capabilities' laddas ju av processerna från certifierade platser i operativsystemet. De objekt som innehåller 'capabilities' kan läsas/skrivas om användaren har rättighet i en "primär" 'capability' rc/wc till detta (rc/wc = 'read/write capability'). Figur 10.3 illustrerar CL. Processlista CL Process x Process y (Subjekt) En annan CL Figur 10.3 CL Segment Rättigheter Ett segment (objekt) eller en underordnad CL Byten mellan olika listor (domän) blir också möjligt, så att tex beroende på i vilken funktion en process befinner sig i så kan rättigheterna vara olika. Rätt använd ger tekniken ett bra skydd mot trojanska hästar, den möjliggör små skyddsdomäner ('least priviledge') och kan integreras med namnhanteringen (av segment). Åtkomstlistorna associerar rättigheter för subjekt per objekt och är funktionellt ekvivalent med cap-listor. Cap-listor har fördelen att de är effektivare att utnyttja vid exekveringen av program (processens domän finns ju samlad där), de förra att de är lättare att administrera. De är dessa aspekter som gör att åtkomstlistor är vanliga i filsystem, medan domän-listorna är nödvändiga vid skydd av primärminnet. I 'capability'-orienterade system är återkallande ('revocation') av rättigheter till ett objekt omständligt. Detta beror på att flera subjekt kan ha 'capabilities' till samma objekt. Om en rättighet ska tas bort för samtliga subjekt till ett objekt måste systemet söka genom alla 'capability lists'. Ett sätt att förenkla detta återkallande är att använda 'capabilities' indirekt. Dessa pekar ut EN deskriptor som i sin tur pekar ut objektet. Fullständigt återkallande kan då ske genom att ta bort denna deskriptor (O' i figuren). Figur 10.4 visar caps som används indirekt. C' CL(användare) Global segmenttabell Objektet O O' CL(ägare) O C' C Ägaren av O (dvs C) delar ut en begränsad kopia C' till användaren som utnyttjar den indirekt. Figur 10.4 'Capabilities' för återkallande av rättigheter

7 161 Selektivt återkallande är fortfarande omständligt. Här har 'access control lists' en definitiv fördel. CL-metoden har ibland kallats biljettorienterad eftersom blotta ägandet av en 'capability' visar rättigheten till ett objekt (tex en plats i en teatersalong). ACL-metoden kallas analogt för listorienterad: Användaren anger sin identitet för en kontrollant som avgör om tjänsten kan utföras genom att konsultera en lista (kan liknas vid passkontrollen i vissa länder). vii. 'Capabilities med kryptochecksumma. I distribuerade system kan 'capabilities' användas för att definiera och adressera objekt i de ingående delsystemen. En 'capability' kan bestå av följande fyra delar (från Amoeba). Maskin, 48 bits Objekt, 24 bits Rättighet, 8 bits 48 'checkbits' Eftersom dessa skickas via datanät är de utsatta för risker för manipulation. I en 'capability' ingår därför det fjärde fältet (, som inte brukar finnas i centraliserade system). Detta kan framställas via kryptering som en digital signatur beräknad utgående från de första tre fälten Accessmatrismodellen Modellen har utvecklats för att systematisera den myriad av tekniker som förekommer och för att kunna syntetisera och analysera konkreta skyddssystem. Modellen består av tillstånd (matriser) och tillståndsövergångar (kommandon). Matrisen definierar ett skyddsystems momentana tillstånd och ges av följande tre delar. - En mängd subjekt ({s}). -- kolumnindex - En mängd objekt ({o}). -- radindex - Sekvenser av rättigheter A[s, o]. Subjekten är systemets aktiva agenter. Beroende på om studieobjektet är maskinvara, operativsystem, programspråk, kommunikationssystem eller databashanterare så ser vi olika subjekt. I operativsystem tänker vi oss vanligen subjekten som instruktioner, funktioner, processer eller användare. Objekten är dessa element som man avser åtkomstskydda. Exempel på objekt är segment, filer, terminaler och portar. Alla subjekt betraktas som objekt eftersom processer eller funktioner kan referera andra processer eller funktioner eller dessas rättigheter. Elementen A[s, o] anger de operationer som s tillåts utföra på o. En matrisrad brukar kallas ett domän ('protection domain') och definierar samtidigt ett kontext kompletterat med rättigheter. De rättigheter som kan ingå i elementen (sekvenserna) A[s, o] är av tre typer: - För verkställighet av skyddet - För att flytta rättigheter - För att byta matrisrad (domän) Modellens attribut i. Skyddets verkställighet ('enforcement') Rättigheter som beskriver de vanliga operationer som ett subjekt kan utföra på ett objekt: läsa, skriva, lägga till (på filer), starta (processer) osv. Förutsättningar för att skyddet ska kunna upprätthållas är att skyddskontrollen alltid genomförs korrekt. För att detta ska vara möjligt måste subjekt och objekt identifieras korrekt, dvs

8 162 - entydigt, - oförfalskat och - alltid. För 'enforcement' brukar det i praktiken finnas en 'protection monitor' för varje typ av objekt: filsystemet för filer, drivrutiner för i/o-enheter, adresseringslogiken för segment, schemaläggaren för processer osv, som kontrollerar om referensen är tillåten eller inte. Den del som påverkar skyddsystemet i sig ('rights movement') kontrolleras av 'kärnan' i skyddsystemet. En operation a som s önskar utförd på o handhas som följer a1. s startar operationen a genom att skicka <s, o, a> till aktuell 'protection monitor'. a2. Denna kontollerar med skyddsystemet om a A[s, o]. a3. Om så är fallet utförs a, annars sker 'trap' ('access violation'). ii. Förändringar i matrisen ('rights movement'); tillståndsövergångar. De speciella rättigheterna own, control, + och * anger huruvida ett subjekt får ändra ett objekts (subjekts) rättigheter. En ägare kan lägga till rättigheter för subjekt till ett objekt vilket han äger. 'Control' kan användas för att definiera möjligheter att återkalla rättigheter,* för att ange att kopiering av rättigheter är möjlig och + för att ange att rättigheter kan flyttas. Det är denna klass som gör ett skyddsystem dynamiskt. Exempel på regler (kommandon, se nedan) för 'rights movement' är b1. Om own A[s, o] kan s lägga till en godtycklig rättighet till A[s', o] för alla s'. b2. Om control A[s, s'] kan s ta bort en godtycklig rättighet från A[s', o] för alla o. b3. Om *a A[s, o] så kan s lägga till a eller *a i A[s', o] för alla s'. b4. Om +a A[s, o] så kan s flytta a eller +a från A[s, o] till A[s', o] för alla s'. Om objekten är subjekt kan man också införa rättigheter som 'read/write capability'. iii. Domänbyte. Rättigheten som används är 'enter'. Den kan ses som en rättighet att göra ett funktionsanrop som samtidigt ger ett domänbyte. Vi skiftar sas rad i matrisen och erhåller 'domain switching'. c. Om enter A[s, s'] så kan subjektet/processen s anropa subjektet/processen s'. Rättigheten används för att implementera en något generaliserad 'call gate' och betyder i praktiken att en aktiv process/användare omfattar fler subjekt (s, s',...) och att operationen enter s' utförd av s resulterar i ett byte av aktuell rad ('protection domain') från s till s' i matrisen Kommandon Matrisen beskriver i varje ögonblick ett specifikt tillstånd hos skyddsystemet. Tillståndsövergångar modelleras av kommandon som sammansätts av primitiva operationer. Följande är ett exempel på en uppsättning primitiva operationer. PRIMITIVA Tilläggande Borttagande OPERATIONER Subjekt create subject s destroy subject s Objekt create object o destroy object o Rättighet enter r into A[s, o] delete r from A[s, o] Semantiken kan formuleras i termer av matrisens utseende före och efter de primitiva operationerna. Observera att create subject skapar såväl en ny rad som en ny kolumn i matrisen A. Kommandon består av parametriserade och villkorade sekvenser av primitiva operationer. Som exempel kan följande tre tjäna:

9 163 command create-file (p, f): command confer-read(x, y, f): create object f if own A[x, f] enter own into A[p, f] then enter read into A[y, f]; enter read into A[p, f] enter write into A[p, f] command take-subordinate-read (p,q,m): if control A[p,q] and read A[q,m] then enter read into A[p,m] Figur 10.5 visar matriser före och efter några kommandon. Starttillstånd P1 P2 M1 M2 F1 F2 P1 P2 rwe rwe own rw own re Subjekten är processerna P1 och P2 Objekten är filer (F) och minnessegment (M) och processerna (P) Transitioner Motsvarande sk accessgraf är Antag att följande sekvens utförs create.subordinate (P2, P3, M3) take.subordinate.read (P2, P3, M3) take.subordinate.write (P2, P3,M3) confer.read (P2, P3, F2) own, rw P1 rwe M1 P2 own, re F1 rwe F2 M2 Då erhålls med lämpliga (vilka?) definitioner av dessa kommandon Nytt tillstånd P1 P2 M1 M2 M3 F1 F2 P1 P2 P3 rwe rwe rw own rw own rw control P3 rwe r Figur 10.5 Accessmatrismodellen 'Policy/mechanism' Säkerhetssystemets mekanismer specificeras av begynnelsetillståndet och möjliga sekvenser av kommandon. Systemets policy kan specificeras som en mängd A av auktoriserade tillstånd. Om mekanismerna kan skapa exakt den mängden så sägs systemet vara precist. Om de möjliga tillstånden är en delmängd av A kallas systemet säkert ('secure'). I övrigt finns problem (fel) i specifikationen eller i implementeringen.

10 Generiska versus typspecifika rättigheter Rättigheter (operationer, funktioner) som är tillämpbara på objekt av olika typer brukar kallas generiska. Exempel är 'read' som kan avse tex filer, terminaler och brevlådor. Observera att 'extended type objects' tex brevlådor bör ha såväl generiska som typspecifika rättigheter. Rättigheten 'read' kan avse att utnyttjande subjekt har rättighet att läsa representationen av brevlådan, dvs godtyckliga element i brevlådestrukturen: pekare, låsfält och andra attribut. Detta blir då en rättighet som operativsystemet bör besitta. Användarprocesser ska inte tillåtas ha denna rättighet. En användare kan däremot behöva rättigheten 'receive', som innebär att processen tillåts utföra motsvarande brevlådeoperation. Samma resonemang kan föras för alla abstrakta datatyper. Observera att det finns rättigheter som inte går att kontrollera redan vid kompileringen. Speciellt gäller detta dynamiska strukturer eller processer. Typdeskriptorer måste då finnas med under exekveringen. De kan användas endera av ett 'run time system' associerat till språket eller administreras av operativsystemet. Figur 10.6 visar delarna som är inblandade vid åtkomstkontroll. Subjekt 'Protection monitor' Objekt Attribut (exempel på operation) (predikat) (kan vara subjekt) (predikativt?) S: (f) Filsystemet S: read-file (f) Filer 'Enforcement' S: move d1, [s,w] Adresseringslogik Segment ibid S: send (to process) Schemaläggare Processer ibid S: doio(...) Drivrutin Enhet ibid S: enter (S') Avkodning Instr. 'Domain switching' S:change access right Skyddsystemet 'Rights movement' Kan skriva s r o Accessmatrisen Läser här (som ACL eller CL) Figur 10.6 Allmän översikt av direkt åtkomstkontroll

11 Informationsflödeskontroll Den direkta (och 'discretionary') åtkomstkontrollen löser inte alla frågeställningar. Exempel. Om subjekt A har läsrättighet till filen F och B saknar sådan hindrar inget att A kopierar F's innehåll till ett objekt F' som är läsbart av B. För att förhindra detta kringgående av rättigheter behövs flödeskontroll: Till varje subjekt s och till varje objekt o associeras en etikett (label, class) c(s) respektive c(o). Etiketterna kan ordnas linjärt ( ), tex öppen, konfidentiell, hemlig, topphemlig, eller mer generellt via en partiell ordning ( ): - en reflexiv: c(a) c(a), för alla a, - antisymmetrisk: c(a) c(b) och c(b) c(a) medför c(a) = c(b), och - transitiv relation: c(a) c(b) och c(b) c(c) medför c(a) c(c). En obligatorisk ('mandatory') flödessäker åtkomstkontroll införs genom att kontrollera att information inte kan flöda "nedåt" utan bara "uppåt". En säkerhetskärna ('security kernel') specificeras i grunden precis som den allmänna modellen för åtkomstkontroll men kompletteras med flera säkerhetsklasser Relationer Här kommer en kort repetition av (eller möjligen introduktion till) de vanligaste begreppen om relationer, mm. i. Definitioner Givet två (ändliga) mändger X och Y kan man bilda den sk Cartesiska produkten X Y def { (x, y), x X, y Y}, dvs mängden av par där första komponeneten tillhör X och den andra komponenten tillhör Y. I många sammanhang är X och Y samma mängd. En (binär) relation R över X och Y (eller från X till Y) är en delmängd av X Y; X Y R. För att uttrycka att paret (x, y) R skriver man ofta x R y eller ibland (sällan) y = R(x). Mängden X kallas relationens definitionsområde ('domain') och Y dess värdeförråd ('range'). En funktion är en relation där x R y och x R z implicerar att y z: "Entydigt funktionsvärde". Här är det normala skrivsättet y = R(x). Relationer brukar ibland betecknas med specialsymboler som tex, <, ~,, etc. ii. Representationer Tre vanliga sätt att illustrera/representera en relation på X är: - Linjär form: Här räknas helt enkelt de par som ingår i relationen upp. Ett alternativ är att göra en entydig karakteristik tex via mängdoperationer och logiska konnektiv. - Grafform: Här placeras elementen x, y,... i X ut på ett plan och vi ritar en båge från x till y precis då x R y. - Matrisform: Här införs ett matriselement M ij för varje par (x i, x j ) där x i,x j X och vi sätter M ij = 1 = true om (x i, x j ) R och M ij = 0 = false annars. iii. Typer av relationer. Här kommer definitioner på några vanliga typer av relationer. Namn Definition Reflexiv x R x Irreflexiv not x R x Symmetrisk x R y y R x. Antisymmetrisk x R y, y R x x y. Asymmetrisk x R y not y R x. Transitiv x R y, y R z x R z.

12 166 Det finns många samband mellan dessa typer av relationer och karakteristika för motsvarande matris/graf. Några exempel är följande. - För en reflexiv/irreflexiv relation gäller att dess matris har 1-or/0-or på diagonalen. - En symmetrisk relation har en symmetrisk matris M = M T, där M T är den till M transponerade matrisen; rader byts mot kolumner och vice versa. - En reflexiv relation har en slinga i varje nod i graf- formen. - En irreflexiv relation saknar 'loops'. - I en symmetrisk relations graf är alla bågar dubbelriktade. - Matrisen M T definierar den omvända relationen. Notera att en asymmetrisk relation alltid är irreflexiv. Namn Strikt partiell ordning Partiell ordning Ekvivalensrelation Kompatibilitetsrelation Total ordning (kedja) Karakteristika Asymmetrisk, irreflexiv, transitiv Reflexiv, Antisymmetrisk, transitiv Reflexiv, Symmetrisk, transitiv Reflexiv, Symmetrisk Alla element är linjärt ordnade En total ordning är ett specialfall av en partiell ordning. I många tillämpningar vill man inte ordna alla symboler i "nummerordning", eftersom fler av de objekt som symbolerna representerar är oberoende; tex 'concurrent' eller lika säkerhetskänsliga. Två relationer P och R är konsistenta om P R = P + R kan utvidgas till en total ordning. Detta är möjligt precis då dess transitiva hölje (se nedan) är irreflexivt, dvs då dess graf är utan slingor. Exempel. En relation E, en exekveringsordning, är korrekt om och endast om den är konsistent med programordningen P. E är i sin tur en acyklisk orientering av den sk konfliktrelationen C, som definieras av "interfererande minnesreferenser" och som är symmetrisk och irreflexiv (men inte nödvändigtvis transitiv). Om man vill ta hänsyn till atomära operationer kan man representera dessa mha en ekvivalensrelation. Följande figur 10.7 visar ett exempel på en relation. En ekvivalensrelation inducerar en uppdelning av elementen i sk ekvivalensklasser bestående av klasser av element som är ekvivalenta. Utgå från ett element x och låt [x] R bestå av alla element som är (R-) ekvivalenta med x. Föreningsmängden av alla ekvivalensklasser är X. Exempel. Ett exempel på en relation som genererar ekvivalensklasser är ekvivalensrelationen a b (mod n). För tex n = 3 och b = 1 är tex [2] mod 3 = {2, 5, 8,... } = { 3k + 2 k = 0, 1, 2,... }. Ett annat exempel är en 'hash'-funktion h. Ekvivalenta symboler eller adresser 'hash'as till samma länkade överskottslista (samma h-värde) respektive avbildas associativt till samma 'cache'-rad.

13 167 En relation hb ('happended before') defineras över en mängd av händelser eller processer p1, p2, p3 och p4 via följande uppräkning: hb = < (p1, p2), (p2, p4), p3, p4)> Motsvarande graf-form blir Motsvarande matrisform blir p1 p2 p3 p4 p p p p p1 p2 p3 p4 Relationen är irreflexiv, aymmetrisk och transitiv, dvs en strikt partiell ordning. Figur 10.7 En relation iv. Operationer på relationer Givet en relation P från X till Y och en relation R från Y till Z kan man bilda sammansättningen P R = { (x, z) x X, z Z, ( y) ((x, y) P, (y, z) R )}. En sammansättning av P med sig själv upprepeade gånger skrivs också P n = P P (n gånger) P P. P 0 = I står för identitetsrelationen. Sammansättning på matrisrepresentationen ges av matrismultiplikation. Eftersom en relation är en mängd kan vi bilda förenings- och snittmängderna mellan två relationer. Föreningsmängden av P och R skrivs oftast P + R. Det transitiva höljet till en relation över en mängd med n komponenter R är R + = R + R 2 + R R n. Det reflexiva transitiva höljet är R* = I + R +. Relationen R + är den minsta transitiva relation som innehåller R. Warshalls algoritm för att bilda det reflexiva transitiva höljet rp till r är for i, j := 1 to n do rp (i,j) := r (i,j); for k := 1 to n do for i := 1 to n do for j := 1 to n do if not rp (i,j) then rp (i,j) := rp (i,k) and rp (k,j); -- r antas vara definierad R + och R * svarar mot en upprepad tillämpning av R; en eller fler respektive 0 eller fler upprepningar Bell-LaPadulamodellen Varje objekt och subjekt tilldelas förutom rättigheter i matrisen en fix etikett (linjärt ordnade) och enligt den modell som föreslagits av Bell och LaPadula skall följande axiom gälla. - En process p kan inte läsa ett object o försåvitt inte c(o) c(p). Detta kallas vanligen simple security ' ('no read up'). - En process kan inte läsa ett objekt x och skriva ett objekt y om inte c(x) c(y). Detta kallas vanligen '*-property ' eller 'confinement property' ('no write down').

14 168 Detta är hårdare krav än nödvändigt. Processen låter inte nödvändigtvis information flöda från x till y. I praktiken räcker det att kräva att c(x) c(y) i de fall då y är funktionellt beroende av x. Modellen tillåter inte heller dynamiska (databeroende, tidsberoende) eller partiellt ordnade etiketter. Observera också att denna flödeskontroll avser konfidentialitetsaspekten. Integritet berös inte: En process i klassen 'öppen' tillåts skriva nonsens i ett objekt i klassen 'topphemlig'! Figur 10.8 illustrerar Bells och LaPadulas modell. Subjekt Objekt Top secret Secret Classified Unclassified 'Clearence' 'Classification' Flöde EJ tillåtet Flöde OK Biba-modellen Figur 10.8 Flödeskontroll via BLP-modellen En modell för integritet som kan sägas vara dual till BLP är den sk Biba-modellen. Den bygger på integritetsklasser i(x) och består av följande regler. - En process p kan inte modifiera ett object o endast ifall i(o) i(p). Detta kallas vanligen 'simple integrity. - Om en process s kan läsa ett objekt o, så kan s kriva ett objekt y endast ifall i(y) i(o). Detta kallas vanligen '*-integrity property '. Att samtidigt garantera både konfidentialitet och integritet med enbart dessa metoder (BLP och Biba) ger starka inskränkningar! Dennings modell För att hantera dynamiska säkerhetsklasser (etiketter) och för att bättre kunna validera processer som hanterar information av olika klass har Dorothy Denning utvecklat en modell i vilken processens interna tillståndsövergångar studeras. i. Allmänt. Modellen bygger på lattices definierade av en partiell ordning ( ) av säkerhetsklasser med minimum ('greatest lower bound', ) och maximum ('least upper bound', ). Ett lattice är en partiellt ordnad mängd där varje par har ett entydigt minimum och maximum. - Existensen av medför att om c(x i ) c(y) så finns en klass c(x) = c(x i ) så att c(x) c(y). Det betyder att alla flöden från x i till y är tillåtna om c(x) c(y). Detta kan tilläpas på explicita flöden:

15 169 För y := expression (x 1,..., x n ); Kontrollera att c(x i ) c (y). En sats y := x ger ett explicit flöde x y. - Existensen av medför att om c(x) c(y i ) så finns en klass c(y) = c(y i ) så att c(x) c(y). Det betyder att alla flöden från x till y i är tillåtna om c(x) c(y). Detta kan tillämpas på implicita flöden: if predicate(x) then y 1 :=...;...; y n :=...; end if; Kontrollera att c(predicate(x)) c(y i ). I en sats if x then y := 1; ger en observation av y information om x; dvs ett implicit flöde x y. Som vid tex programverifiering kan vi sedan sätta upp axiom för alla programspråkskonstruktioner, som alla kan uttryckas med - EN "tillräckligt bra" aritmetisk/logisk operation (tex nand); jfr 'expression' ovan - EN villkorlig hopp-instruktion; jfr if ovan, och "tillräckligt med minne" att lagra resultaten i (Turing). Konstruktioner som sekventiella sammansättningar säkerställs genom att utnyttja transitivitets- egenskapen. Certifieringen kan ske under 'compile time' (statiskt) eller under exekveringen (dynamiskt). ii. Exempel: Satsen if x > y then z := w; i := k + j end if; kräver att c(w ) c(z) och c(k) c(j) c(i) c(x) c(y) c (z) c(i) -- tilldelningarna; expicita flöden -- if-satsen; implicita flöden Notera att kontrollen implementeras av en 'security kernel'. Tekniken är alltså avsedd för applikationer och inte för att användas i en operativsystemkärna. Notera också att det som kan uppfattas som (enkla) variabler i tex exemplet också kan stå för mer sammansatta objekt som tex filer och databaser. iii. Certifieringsregler. Följande är en sammanfattning av regler för kontroll av auktoriserade flöden med avseende på några vanliga programkonstruktioner. Sats Kontroll av var := exp c(exp) c(var) {s1,..., sn} s1, s1,..., sn if exp then s1 [else s2] a. s1 [och s2] while exp do s b. c(exp) c(a), där c(a) = c(s1) [ c(s2)] och där c(si) = {c(z) z tilldelas värde i si} a. Satsen terminerar b. s c. c(exp) c(s), där c(s) = { c(a) info flödar till a i satsen s}

16 170 iv. Flödessäker åtkomstkontroll. En grov kontroll som ibland görs är att kräva för en process p och dess in- och utdata {xi} respektive {yi} att i c(xi) c(p) i c(yi). En begränsning med detta metod är att den inte "kan skilja på" vad som är känsliga klasser och inte. En finmaskigare kontroll erhålls om man särskiljer de enskilda objektens klasser Exempel; Unix V/MLS AT&T har lanserat en version Unix V/MLS ('multi level security') som bygger på BLP. Det är i grunden ett Unix system V med tillägg av funktioner för 'mandatory access control', MAC. Etiketter implementeras via Unix's 'group identifier' och de innehåller - 'level', ett 16 bitars heltal som definierar en linjär ordning - 'category', en 64 bitars 'boolean array' som definierar ett delmängdslattice. Cartesiska produkten av dessa blir också ett lattice och används för att etikettera subjekt och objekt. Systemet hanterar filer, inodes, kataloger, ipc-mekanismer och processer. För de olika operationerna på de olika objekten (objekttyp följer av operationstyp) måste dominansrelationer enligt följande tabell vara uppfyllda för att en referens ska kunna ske. Operation Read, Search, Execute Write (Overwrite, Append) Create, Link, Unlink Read-file/I-node status Change status ReadIPC WriteIPC Send a signal Relation s o s = o s = o s o s = o s o s = o s = o Lilla s står för klassen för inblandat subjekt och o för objektsklassen. Systemadministratörerna definierar klasserna för objekten och subjekten 'Covert channels' Helt omöjligt blir det att i praktiken stänga alla oönskade kanaler i ett system. Delade skivminnen, medier och utnyttjandegrad hos system skapar alltid ett minimum av informationsflöde som inte var avsett. Exempel på "lustigheter": Kodning av ett meddelande med de minst signifikanta bitarna hos en sekvens bilder (en bit per bild). Ett exempel på en "synkroniseringskanal" (troligen 'covert') illusteras av följande. parbegin process 1: if x = 0 then signal (s0) else signal (s1) process 2: wait (s0); y := 1; signal (s1) process 3: wait (s1); y := 0; signal (s0); parend; Om x = 0 så exekverar process 2 före process 3 så y blir 0. Om x 0 så kommer process 3 före process 2 och y blir 1. Systemet ger altså ett flöde x y trots att x och y inte är gemensamma. Eftersom dock satser efter wait-operationerna är betingade av signaloperationer, så föreligger ett implicit flöde från semaforerna. Ett rättframt sätt att förhindra sådana flöden är att kräva att c(s) c(y), där y är sådana "betingade variabler". Även variabler av annan typ än semaforer kan orsaka flöden om de är globala. En signalerande process kan i allmänhet läcka information genom att orsaka en annan process att vänta en tid som är proportionell mot värdet av en variabel. Någon allmän lösning på denna frågeställning finns inte vad man vet.

17 'Security kernels' En säkerhetskärna integrerar samtliga säkerhetsfunktioner till en isolerad plats i arkitekturen. Ett exempel är en sk 'reference monitor' för åtkomstkontroll. Kärnan ligger principiellt i gränslandet mellan operativsystemet och maskinvaran och är altså inte direkt åtkomlig för användaren. Några grundförutsättningar är att kärnan inte kan förstöras och inte förbipasseras. Vidare bör den efter konstruktionen valideras eller verifieras med avseende på funktionalitet. Många delar implementeras gärna i maskinvara. Den bör vara av minimal komplexitet och feltolerant. En TCB, 'trusted computing base', är mängden av maskin- och programvara ansvarig för säkerheten. En TCB är funktionellt lika en säkerhetskärna men kan vara distribuerad i systemet. En TCB kan dessutom byggas i flera skikt. TCB-minimering ger enklare validering. Honeywells Secure Communications Processor (SCOMP) konstrueras väsentligen soom en säkerhets-front-end till Multics. SCOMP består av en program- och en maskinvarudel vardera arbetande mot en "databas"; de kallas "security attributes" respektive "descriptor base". Ett anrop (kommando eller systemanrop) från användaren tas om hand av programvarudelen, som ger en fysisk accessförfrågan riktad till maskinvarudelen. Denna svarar med att godta eller vägra utföra anropet. Programvarudelen innehåller funktioner för accesskontroll, filtjänster, konsistenskontroller för filer och 'auditing'. Säkerhetskärnor återfinns också för datornät. För TCP/IP finns tex en variant MLS/TCP för 'multi-level security'. NSA har också "sponsrat" ett projekt/datornät kallat SDNS, Secure Data Network System. SDNS bygger på OSI-modellen och innehåller kryptering på länk-, nät- och transportskikten (end-to-end) och protokoll för e-post och nyckelhantering på skikt 7. Ah, ett slutcitat (F. T. Grampp & R. H. Morris): "It is easy to run a secure computer system. You merely have to disconnect all dial-up connections and permit only direct-wired terminals, put the machine and its terminals in a shielded room, and post a guard at the door." Kryptologi Allmänt Kryptologin som studiemråde kan uppdelas i konstruktion av chiffer och deras forcering; kryptografi respektive kryptoanalys. Krypto kommer från grekiskans kryptos som betyder dold eller hemlig. Grafi härleds från grekiskans grafeinsom betyder skrift. Data som sänds över kanaler som kan avlyssnas eller modifieras kan inte skyddas via vanliga åtkomstkontrolltekniker som baseras på läs/skrivrättigheter. Informationen kan däremot skyddas genom att den kodas så att motsvarande data blir obegripliga ('secrecy') eller så att modifikationer av data kan upptäckas eller korrigeras ('integrity'). En sådan kodning kallas ett chiffer (fr. chiffre, siffra av arabiska sifr, nolla). Det är en avbildning från en mängd klartexter till en mängd kryptogram. Informationen chiffreras (krypteras) på ena sidan innan den sänds och dechiffreras (dekrypteras) på mottagande sidan innan den vidarebehandlas. Chiffer antas vanligen bygga på kända (öppna) algoritmer. Konfidentialitet eller integitet och autenticitet säkerställs genom att en chifferparameter (nyckel) k hålls hemlig. Ett chiffer betraktas vanligen som en funktion som avbildar klartexter på kryptogram. Som vanligt sammanblandas ofta funktionen med funktionsvärdet så att kryptogram också kallas chiffer.

18 172 Givet en klartextmängd {m} och en kryptogram/chiffermängd {c} kan ett chiffersystem ses som en mängd {E k } av transformationer så att c = E k (m) och m = D k (c). Sambandet D k E k = I (= enhetstransformationen) gäller alltså alltid. Figur 10.9 visar ett kryptosystem i bildform. Figuren antyder att kryptografernas motspelare heter forcörer. En sådan har i uppgift att härleda m eller k eller approximationer av dessa utan att känna till nycken k. En kryptoforcör Chiffrering F m' (skattning av m) eller k' Dechiffrering m E(k,.) c D(k,.) m k Kanal för distribution av k Figur Ett kryptosystem Några önsvärda egenskaper hos chiffer är 1. E k och D k måste kunna beräknas snabbt. 2. Algoritmerna förutsatts vara öppet tillgängliga 3. Det ska vara svårt att systematiskt beräkna a. för konfidentialitet - D k från c även om visst m är känt. - klartexten m från c. b. för integitet/autenticitet - E k från c även om visst m är känt. - ett c' så att Dk(c') utgör ett meningsfullt meddelande Symmetriska system I de sk klassiska systemen (symmetriska) är nyckeln k för E och D densamma, eller så kan två nycklar beräknas trivialt ur varandra, så att konfidentilitet och integritet kan upprätthållas samtidigt. Så gott som alla chiffer bygger på upprepade substitutioner och permutationer. Det enklast tänkbara chiffret är det sk Caesarchiffret, som inebär att klartextens boktäver subsitueras en efter en genom ett alfabetiskt skift tre steg (a d,..., z c) eller med en formel E k=3 : m char (ord(m) + 3) mod 26). Sägnen hävdar att G. J. Caesar använde denna kod i sin konversation med Cicero. Man brukar tala om två typer av chiffer; blockchiffer och flödeschiffer ('stream ciphers'). i. Blockchiffer. En standardalgoritm kallas DES. ('Data Encryption Standard'): I denna chiffreras 64-bits block med en 56-bits nyckel via 33 (sic!) transpositioner och substitutioner.

19 173 Ett meddelande delas inledningsvis upp i 64-bits block. Samma nyckel används vanligen för flera block. Denna tillämpning av DES (eller ett annat blockchiffer) kallas vanligen 'electronic code book'; ECB. För att undvika att lika klartextblock resulterar i lika chifferblock, vilket är ett problem i filoch databassystem, kan en algoritm som tex DES tillämpas för att framställa 'kedjade' chifferblock. Metoden kallas CBC, 'cipher block chaining': C i = DES k (M i xor C i-1 ). Processen startar med ett valt C 0, kallas startvektor eller 'seed'. Sista chifferblocket blir funktionellt beroende av alla klartextblock och kan därför också tjäna som checksumma, så att (vissa) överföringsfel kan upptäckas eller korrigeras (integritetsaspekten). Dechiffereringen blir M i = DES -1 k (C i ) xor C i-1. Övning. Vad innebär följande? a := a xor b; b := a xor b; a := a xor b; ii. Flödeschiffer. Alla sådan chiffer fungerar enligt följande mall: Klartexten M = m 1 m 2... krypteras bitvis eller teckenvis till C = c 1 c 2... via c i = m i xor k i, Bland de klassiska chiffren kan nämnas den sk 'one time pad', som är det enda teoretiskt oforcerbara chiffret man känner till. I detta är nyckelsekvensen {k i } en icke-repetitiv slumpföljd (minst lika lång som M) som alltså används bara en gång. Ingen information (statistik) om M överförs därför till C och forcörens uppgift är omöjlig. För varje givet chiffer är varje klartext lika möjlig/sannolik. Nyckelhanteringen blir emellertid ett svårt problem varför approximationer till 'one time pad' oftast används. Vissa slumptalsgeneratorer eller ett blockchiffer tex DES kan då användas för att ge {k i }. Två typer av flödeschiffer brukar omnämnas. a. I sk synkrona flödeschiffer härleds nyckesekvensen oberoende av klartextsymbolerna. - 'Output block feedback mode' (OBF): Ett initialvärde transformeras via ett blockchiffer (tex DES). Ur detta plockas en bit/byte ut som [ny] nyckesysmbol, varefter utdata från blockchiffret återkopplas och blir nytt indata till nästa transformation för nästa nyckelsymbol. b. I sk självsynkroniserande flödeschiffer härleds nyckelsekvensen ur en begränsad mängd av föregående klartextsymboler; sådana chiffer kallas därför ibland autoklavsystem. - 'Cipher feedback mode' (CFM): Detta liknar lite grand OBF i så måtto att ett blockchiffer används. Indata till detta utgörs denna gång av ett skiftregister med givet initialvärde. Från utdata omhändertas en bit/byte som [ny] nyckelsysmbol och resten kastas. I detta fall återkopplas emellertid erhållet chiffer c = m xor k till skiftregistret. Observera att de flesta pseudoslumptalsgeneratorer, tex x i+1 = ax i + b mod n är olämpliga eftersom nyckelsekvensen x i bestäms av bara tre kvantiter (a, b och n), som om de kan härledas av forcören gör chiffter obrukbart.

20 Asymmetriska system Idag finns (från 1976) system som är sådana att bara endera av E k eller D k behöver hemlighållas; den andra kan vara öppen (publik). Man talar då om 'public key systems' (PKS) eller system med öppna nycklar. i. Konfidentialitet. Om D k hålls privat men E k är öppen kan alla tillverka kryptogram men bara den rättmätiga mottagaren återvinna klartexten. ii. Integritet. I det omvända fallet kan information återvinnas av alla bara om den rättmätlige sändaren har tillverkat chiffret. Detta brukar användas för att erhålla integritet och autenticitet. En identifierare (eller lösenord) transformeras privat men kan verifieras av alla. iii. Både/och. För att samtidigt få konfidentilitet och integritet måste dubbla transformationer användas; en för vardera syfte. Detta kräver att E k D k = D k E k = I. Det mest använda PKS, den så kallade RSA-algoritmen, uppfyller detta (under vissa förutsättningar). Antag att A har tranformationer E a och D a och B har motsvarande E b och D b, där E är publika och D är privata. För att säkerställa konfidentialitet och äkthet för ett meddelande M framställer A kvantiteten X = E b (D a (M)) som sänds till B. D a garanterar äktheten. Mottagaren B beräknar E a (D b (X) ) = E a (D b (E b (D a (M)))) = M (enligt förutsättningarna). D b garanterar konfidentialitet. I ett PKS råder naturligtvis ett matematiskt förhållande mellan E och D så att det i teorin är möjligt att härleda den ena ur den andra. Konfidentialitet/integritet säkerställs genom att det beräkningsmässigt är ogörligt att (inom rimlig tid/rimligt stort minne) praktiskt härleda den ena ur den andra. Den mycket omtalade RSA-algoritmen (från 1978) bygger på att E är "lätt" att beräkna men att D i praktiken låter sig beräknas endast via tillgång till extra information (kallas ibland fall-lucke-parameter); dvs den privata nyckeln. Metoden består av ett blockchiffer som bygger på exponentiering (modulo n) och svårigheterna att forcera genom att beräkna den diskreta logaritmen eller att faktorisera (stora) primtal. Kryptokonstruktören utgår från två stora, tex 100 siffriga, primtal p och q och bildar n = p*q. Faktorerna i n hålls hemliga medan n kan ges ut publikt. Att återvinna p och q kräver att det är möjligt att primtalsfaktorisera STORA tal. Ingen har ännu konstruerat en tillräckligt snabb metod för detta ändamål. Med givna p och q bildas φ(n) = (p - 1)*(q - 1) = antalet tal som är prima relativt n. Relationen mellan den privata och den publika nyckeln är e*d mod φ(n) = 1; dvs e*d = konst*φ(n) + 1, en ekvation som är enkel att lösa, men bara om φ(n) är given. Kryptering ges av ekvation (1). C = E (n,e) (M) = M e mod n. (1)

21 175 Den publika nyckeln är alltså (n,e). Klartexten uppdelas i block om log n bitar och resulterande bitsekvens tolkas som ett heltal. Dekryptering sker genom att beräkna M = D (n,d) (C) = C d mod n. (2) med den hemliga nyckeln (n,d). I beviset för att (2) inverterar (1) kan användas Eulers sats: gcd (M, n) = 1 ==> M φ(n) - 1 mod n = 1, med förutsättningen att n = p*q, där p och q är olika primtal. Noter. Forcörens möjlighet att göra kryptoanalys genom att invertera (1) är beräkningsmässigt utesluten (lika svårt som att faktorisera primtal). Exponeneten e bör vara så stor att (1) innebär en modulo-reduktion, annars kan man "lätt" bräkna e:te roten Kryptoanalys Att forcera ett chiffer eller att lyckas med kryptoanalys innebär att man tillförskansar sig kunskap om klartexten eller nyckeln tvärtemot användarnas avsikt med chiffret. Oftast är detta möjligt genom att förutsättningslöst prova alla nycklar till dess framgång nås. Med att forcera chiffer förstås dock vanligen ett tillvägagångssätt där kartext eller nyckel kan härledas med mycket mindre arbete än uttömmande nyckeprövning ('brute force'). En attack kan rikta sig mot både kryptoalgoritmen i sig med ofta också mot det sätt på vilket den används, dvs på protokollet. i. Algoritmforcering. Beroende på förutsättningarna räknar man med olika klasser av forcering. -Endast chiffer. I detta fall antas forcören bara ha tillgång till chiffer. Detta ur användarens synpunkt mest ideala fallt är knappast realistiskt. - Känd klartext. I många fall vet forcören (med stor sannaoliket) vissa par <m, c>. Forcering med känd kartext innebär att dennes uppgift är att med dessa uppskatta andra klartexter och/eller nycklar. Text som tex "login" brukar inleda många sessioner. - Vald klartext. Ibland är forcörens läge ännu mer gynnsamt. Detta kan vara för handen i tex databassystem om samtliga användare tillåts lägga in poster i systemet. Vid denna attack är det alltså möjligt för forcören att lista ut chiffer för vissa valda klartexter. - Valt chiffer. I PKS (med öppen chiffreringsnyckel) utgör detta en fjärde typ av möjlighet för kryptoanalytikern. ii. Protokollforcering. Även om en algoritm i sig förefaller svår/omöjlig att forcera är det ibland möjligt forcera användningen. Kryptologin som vetenskap består dels av kryptografi, dels av kryptoanalys; två grenar som fortlöpande tävlar med varandra. Man brukar kalla ett kryptosystem för ovilkorligt säkert om det oberoende av forcörens beräkningkapacitet motstår analys. Endast ett chiffer brukar räknas till denna klass; 'one time pad'. Många system är däremot beräkningsmässigt säkra. Egenskapen betyder att den tid det tar för forcören att lyckas överstiger den tid användarnas policy anger; tex µsek. iii. Ett exempel. Följande är från [Kon81]: I en restaurang finns ett anslag: Red ut vad följande betyder DFOR KIBUC TECRELOHV DONSHU GEDOD LADCLIAC

11 Informationsflöden

11 Informationsflöden 257 11 M. von Platen. Föresatsen är den lates njutningsmedel. 11.1 Allmänt Den direkta (och 'discretionary') åtkomstkontrollen löser inte alla frågeställningar. Exempel. Om subjekt A har läsrättighet till

Läs mer

Behörighetssystem. Ska kontrollera att ingen läser, skriver, ändrar och/eller på annat sätt använder data utan rätt att göra det

Behörighetssystem. Ska kontrollera att ingen läser, skriver, ändrar och/eller på annat sätt använder data utan rätt att göra det Behörighetssystem Ska kontrollera att ingen läser, skriver, ändrar och/eller på annat sätt använder data utan rätt att göra det Systemet måste kunna registrera vilka resurser, d v s data och databärande

Läs mer

Grundfrågor för kryptosystem

Grundfrågor för kryptosystem Kryptering Ett verktyg, inte en tjänst! Kryptering förvandlar normalt ett kommunikationssäkerhetsproblem till ett nyckelhanteringsproblem Så nu måste du lösa nycklarnas säkerhet! 1 Kryptering fungerar

Läs mer

Kryptering HEMLIG SKRIFT SUBSTITUTION STEGANOGRAFI KRYPTOGRAFI

Kryptering HEMLIG SKRIFT SUBSTITUTION STEGANOGRAFI KRYPTOGRAFI 1/7 Kryptering Se kap. 6 HEMLIG SKRIFT STEGANOGRAFI Dolt data KRYPTOGRAFI Transformerat data - Transposition (Permutation) Kasta om ordningen på symbolerna/tecknen/bitarna. - Substitution Byt ut, ersätt.

Läs mer

Kryptografi - När är det säkert? Föreläsningens innehåll. Kryptografi - Kryptoanalys. Kryptering - Huvudsyfte. Kryptografi - Viktiga roller

Kryptografi - När är det säkert? Föreläsningens innehåll. Kryptografi - Kryptoanalys. Kryptering - Huvudsyfte. Kryptografi - Viktiga roller Föreläsningens innehåll Grunder Kryptografiska verktygslådan Symmetriska algoritmer MAC Envägs hashfunktioner Asymmetriska algoritmer Digitala signaturer Slumptalsgeneratorer Kryptering i sitt sammanhang

Läs mer

Notera att skyddet avser data såväl som både maskinvara och programkod.

Notera att skyddet avser data såväl som både maskinvara och programkod. 1 1 C. F. Gauss. Upptäckter är resultatet av planmässigt famlande. 1.1 Datasäkerhet En önskvärd egenskap vid databehandling är pålitlighet. Ett delmål av detta är datasäkerhet. Funktioner för detta ändamål

Läs mer

Kryptoteknik. Marcus Bendtsen Institutionen för Datavetenskap (IDA) Avdelningen för Databas- och Informationsteknik (ADIT)

Kryptoteknik. Marcus Bendtsen Institutionen för Datavetenskap (IDA) Avdelningen för Databas- och Informationsteknik (ADIT) Kryptoteknik Marcus Bendtsen Institutionen för Datavetenskap (IDA) Avdelningen för Databas- och Informationsteknik (ADIT) XOR XOR används ofta i kryptering: A B A B 0 0 0 0 1 1 1 0 1 Bit-flipping Om XOR

Läs mer

256bit Security AB Offentligt dokument 2013-01-08

256bit Security AB Offentligt dokument 2013-01-08 Säkerhetsbeskrivning 1 Syfte Syftet med det här dokumentet är att översiktligt beskriva säkerhetsfunktionerna i The Secure Channel för att på så vis öka den offentliga förståelsen för hur systemet fungerar.

Läs mer

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2010-10-08 Sal Tid 8-12 Kurskod Provkod Kursnamn/benämning TDDD36 TEN2 Projekttermin: Säkra Mobila System Institution

Läs mer

Krypteringteknologier. Sidorna 580-582 (647-668) i boken

Krypteringteknologier. Sidorna 580-582 (647-668) i boken Krypteringteknologier Sidorna 580-582 (647-668) i boken Introduktion Kryptering har traditionellt handlat om skydda konfidentialiteten genom att koda meddelandet så att endast mottagaren kan öppna det

Läs mer

Datasäkerhet. Petter Ericson pettter@cs.umu.se

Datasäkerhet. Petter Ericson pettter@cs.umu.se Datasäkerhet Petter Ericson pettter@cs.umu.se Vad vet jag? Doktorand i datavetenskap (naturliga och formella språk) Ordförande Umeå Hackerspace Sysadmin CS 07-09 (typ) Aktiv från och till i ACC m.fl. andra

Läs mer

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud. Analog Digitalitet Kontinuerlig Direkt proportionerlig mot källan Ex. sprittermometer Elektrisk signal som representerar ljud Diskret Digital Representation som siffror/symboler Ex. CD-skiva Varje siffra

Läs mer

Några satser ur talteorin

Några satser ur talteorin Några satser ur talteorin LCB 997/2000 Fermats, Eulers och Wilsons satser Vi skall studera några klassiska satser i talteori, vilka är av betydelse bland annat i kodningsteknik och kryptoteknik. De kan

Läs mer

Metoder för sekretess, integritet och autenticering

Metoder för sekretess, integritet och autenticering Metoder för sekretess, integritet och autenticering Kryptering Att dölja (grekiska) Sekretess Algoritmen Att dölja Ordet kryptering kommer från grekiskan och betyder dölja. Rent historiskt sett har man

Läs mer

241 Åtkomstkontroll. Följande metoder/tekniker är/var vanliga för skydd av primärminne, filer, mm.

241 Åtkomstkontroll. Följande metoder/tekniker är/var vanliga för skydd av primärminne, filer, mm. 241 10 S. Sontag. Tolkningen är intellektets hämnd på konsten. är som bekant tekniken att reglera subjekts (användares, processers, funktioners,...) möjligheter att operera (skriva, läsa, exekvera) på

Läs mer

NÅGOT OM KRYPTERING. Kapitel 1

NÅGOT OM KRYPTERING. Kapitel 1 Kapitel 1 NÅGOT OM KRYPTERING Behovet av att skydda information har funnits mycket länge, men först i samband med utvecklingen av datatekniken har det blivit ett allmänt problem för alla moderna samhällen.

Läs mer

Designprinciper för säkerhet och Epilog. Marcus Bendtsen Institutionen för Datavetenskap (IDA) Avdelningen för Databas- och Informationsteknik (ADIT)

Designprinciper för säkerhet och Epilog. Marcus Bendtsen Institutionen för Datavetenskap (IDA) Avdelningen för Databas- och Informationsteknik (ADIT) Designprinciper för säkerhet och Epilog Marcus Bendtsen Institutionen för Datavetenskap (IDA) Avdelningen för Databas- och Informationsteknik (ADIT) Designprinciper för säkerhet Tumregler och utgångspunkter

Läs mer

Classes och Interfaces, Objects och References, Initialization

Classes och Interfaces, Objects och References, Initialization Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class

Läs mer

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Introduktion till formella metoder Programmeringsmetodik 1. Inledning Introduktion till formella metoder Programmeringsmetodik 1. Inledning Fokus på imperativa program (ex. C, Java) program betyder härefter ett imperativt program Program bestäms i en abstrakt mening av hur

Läs mer

RSA-kryptering och primalitetstest

RSA-kryptering och primalitetstest Matematik, KTH Bengt Ek augusti 2016 Material till kurserna SF1630 och SF1679, Diskret matematik: RSA-kryptering och primalitetstest Hemliga koder (dvs koder som används för att göra meddelanden oläsbara

Läs mer

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Tentamen ID1004 Objektorienterad programmering October 29, 2013 Tentamen för ID1004 Objektorienterad programmering (vilande kurs), 29 oktober 2013, 9-13 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av tre sektioner.

Läs mer

Operativsystem - input/output, skydd, virtualisering

Operativsystem - input/output, skydd, virtualisering Operativsystem - input/output, skydd, virtualisering Mats Björkman 2015-03-12 Lärandemål, I/O n Typer av I/O-enheter n Character, Block & Special n Minnesmappad I/O n Typer av I/O-programmering n Programmerad,

Läs mer

Relationer. 1. Relationer. UPPSALA UNIVERSITET Matematiska institutionen Erik Melin. Specialkursen HT07 23 oktober 2007

Relationer. 1. Relationer. UPPSALA UNIVERSITET Matematiska institutionen Erik Melin. Specialkursen HT07 23 oktober 2007 UPPSALA UNIVERSITET Matematiska institutionen Erik Melin Specialkursen HT07 23 oktober 2007 Relationer Dessa blad utgör skissartade föreläsningsanteckningar kombinerat med övningar. Framställningen är

Läs mer

Introduktion till protokoll för nätverkssäkerhet

Introduktion till protokoll för nätverkssäkerhet Tekn.dr. Göran Pulkkis Överlärare i Datateknik Introduktion till protokoll för nätverkssäkerhet Innehåll Varför behövs och hur realiseras datasäkerhet? Datasäkerhetshot Datasäkerhetsteknik Datasäkerhetsprogramvara

Läs mer

Modul 3 Föreläsningsinnehåll

Modul 3 Föreläsningsinnehåll 2015-02-03 2015 Jacob Lindehoff, Linnéuniversitetet 1 Modul 3 Föreläsningsinnehåll Vad är ett certifikat? Användningsområden Microsoft Certificate Services Installation Laboration Ingår i Klustringslabben

Läs mer

Hjälpmedel: Inga hjälpmedel förutom penna, suddgummi och glatt humör.

Hjälpmedel: Inga hjälpmedel förutom penna, suddgummi och glatt humör. Tentamen Inst. för Informationsteknologi Avdelningen för Datorteknik Herbert P Sander Tel: 070 376 06 87 Ämne: Operativsystem Lokal: Post Scriptum, sal 2 Datum: Måndagen den 13 maj 2002 Tid: Kl 09.00-14.00

Läs mer

Ekvivalensrelationer

Ekvivalensrelationer Abstrakt datatyp för disjunkta mängder Vi skall presentera en abstrakt datatyp för att representera disjunkta mängder Kan bl.a. användas för att lösa ekvivalensproblemet avgör om två godtyckliga element

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data via

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering 1 F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data

Läs mer

Föreläsning 8 i kursen Ma III, #IX1305, HT 07. (Fjärde föreläsningen av Bo Åhlander)

Föreläsning 8 i kursen Ma III, #IX1305, HT 07. (Fjärde föreläsningen av Bo Åhlander) Föreläsning 8 i kursen Ma III, #IX1305, HT 07. (Fjärde föreläsningen av Bo Åhlander) Böiers 5.3 Relationer. Vi har definierat en funktion f: A B som en regel som kopplar ihop ett element a A, med ett element

Läs mer

MA2047 Algebra och diskret matematik

MA2047 Algebra och diskret matematik MA2047 Algebra och diskret matematik Något om restklassaritmetik Mikael Hindgren 19 september 2018 Exempel 1 Klockan är nu 8.00 Vad är klockan om 78 timmar? Vad var klockan för 53 timmar sedan? 8 + 78

Läs mer

Kryptering. Krypteringsmetoder

Kryptering. Krypteringsmetoder Kryptering Kryptering är att göra information svårläslig för alla som inte ska kunna läsa den. För att göra informationen läslig igen krävs dekryptering. Kryptering består av två delar, en algoritm och

Läs mer

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

Läs mer

Säkerhet. Vad är det vi pratar om??

Säkerhet. Vad är det vi pratar om?? Vad är det vi pratar om?? Hindra personer att komma in i ett system? Hindra personer att läsa data? Hindra personer att ändra data? Hindra personer att modifiera systemet? Hindra personer att läsa information

Läs mer

Relationer och funktioner

Relationer och funktioner Relationer och funktioner Joakim Nivre Uppsala universitet Institutionen för lingvistik och filologi Översikt Relationer: Binära relationer på mängder Mängd-, graf- och matrisnotation Egenskaper hos relationer

Läs mer

Protokollbeskrivning av OKI

Protokollbeskrivning av OKI Protokollbeskrivning av OKI Dokument: Protokollbeskrivning av OKI Sida 1 / 17 1 Syfte Det här dokumentet har som syfte att beskriva protokollet OKI. 2 Sammanfattning OKI är tänkt som en öppen standard

Läs mer

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:

Läs mer

Säkerhet. Säker kommunikation - Nivå. Secure e-mail. Alice wants to send secret e-mail message, m, to Bob.

Säkerhet. Säker kommunikation - Nivå. Secure e-mail. Alice wants to send secret e-mail message, m, to Bob. Säkerhet Förra gången Introduktion till säkerhet och nätverkssäkerhet Kryptografi Grunder Kryptografiska verktygslådan Symmetriska algoritmer Envägs hashfunktioner Asymmetriska algoritmer Digitala signaturer

Läs mer

Att använda kryptering. Nyckelhantering och protokoll som bygger på kryptering

Att använda kryptering. Nyckelhantering och protokoll som bygger på kryptering Att använda kryptering Nyckelhantering och protokoll som bygger på kryptering 1 Nyckelhantering Nycklar måste genereras på säkert sätt Nycklar måste distribueras på säkert sätt Ägaren av en nyckel måste

Läs mer

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION Laborationsansvarig: Anders Arvidsson Utskriftsdatum: 2005-08-31 Laborant(er): 1 Syfte Laborationen ska ge studenten möjlighet att genom assemblerinlägg

Läs mer

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

Läs mer

Kryptografi: en blandning av datavetenskap, matematik och tillämpningar

Kryptografi: en blandning av datavetenskap, matematik och tillämpningar Kryptografi: en blandning av datavetenskap, matematik och tillämpningar Björn von Sydow 21 november 2006 Kryptografins historia Fyra faser Kryptografins historia Fyra faser Antiken ca 1920 Papper och penna.

Läs mer

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion Introduktion till programmering D0009E Föreläsning 6: Iteration Multipel tilldelning Helt ok att tilldela en variabel flera gånger: bruce = bruce, bruce = 7 bruce Output: 7 Som tillståndsdiagram: bruce

Läs mer

Vektorgeometri för gymnasister

Vektorgeometri för gymnasister Vektorgeometri för gymnasister Per-Anders Svensson http://homepage.lnu.se/staff/psvmsi/vektorgeometri/gymnasiet.html Fakulteten för teknik Linnéuniversitetet Linjära avbildningar II Innehåll Repetition:

Läs mer

Kryptering. Av: Johan Westerlund Kurs: Utveckling av webbapplicationer Termin: VT2015 Lärare: Per Sahlin

Kryptering. Av: Johan Westerlund Kurs: Utveckling av webbapplicationer Termin: VT2015 Lärare: Per Sahlin Kryptering Av: Johan Westerlund Kurs: Utveckling av webbapplicationer Termin: VT2015 Lärare: Per Sahlin Inledning Den här rapporten ska hjälpa en att få insikt och förståelse om kryptering. Vad betyder

Läs mer

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler 21-1-2 1 Dagens föreläsning Hur fungerar ett Lisp system intern struktur av symbolen, tal, listan pekare - delade strukturer - eq minneshantering fri lista - sophämtning/garbage collection stack Diverse

Läs mer

Lösning till tentamensskrivning på kursen Diskret Matematik, moment B, för D2 och F, SF1631 och SF1630, den 1 juni 2011 kl

Lösning till tentamensskrivning på kursen Diskret Matematik, moment B, för D2 och F, SF1631 och SF1630, den 1 juni 2011 kl Matematiska Institutionen KTH Lösning till tentamensskrivning på kursen Diskret Matematik moment B för D2 och F SF63 och SF63 den juni 2 kl 8.- 3.. Examinator: Olof Heden tel. 7354789. Hjälpmedel: Inga

Läs mer

Grafer och grannmatriser

Grafer och grannmatriser Föreläsning 2, Linjär algebra IT VT2008 Som avslutning på kursen ska vi knyta samman linjär algebra med grafteori och sannolikhetsteori från första kursen. Resultatet blir så kallade slumpvandringar på

Läs mer

CE_O3. Nios II. Inför lab nios2time

CE_O3. Nios II. Inför lab nios2time IS1200 Exempelsamling till övning CE_O3, 2015 CE_O3. Nios II. Inför lab nios2time 3.1. Logiska operationer (se uppgift 1.2 c) Repetera (eller lär dig) innebörden av de logiska operationerna "bitvis AND",

Läs mer

Dagens agenda. Lagring & berarbetning av data. Filer och filformat Metadata Komprimering Kryptering Olika typer av data Filsystem Databaser

Dagens agenda. Lagring & berarbetning av data. Filer och filformat Metadata Komprimering Kryptering Olika typer av data Filsystem Databaser Lagring & berarbetning av data 1IK426 Introduktion till informationsteknik Patrik Brandt Filer och filformat Metadata Komprimering Kryptering Olika typer av data Filsystem Databaser Dagens agenda Filer

Läs mer

Lösning till tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610 och 5B1118, tisdagen den 7 januari 2014, kl

Lösning till tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610 och 5B1118, tisdagen den 7 januari 2014, kl 1 Matematiska Institutionen KTH Lösning till tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610 och 5B1118, tisdagen den 7 januari 2014, kl 14.00-19.00. Examinator: Olof Heden Hjälpmedel:

Läs mer

Filosofisk logik Kapitel 15. Robin Stenwall Lunds universitet

Filosofisk logik Kapitel 15. Robin Stenwall Lunds universitet Filosofisk logik Kapitel 15 Robin Stenwall Lunds universitet Dagens upplägg Första ordningens mängdlära Naiv mängdlära Abstraktionsaxiomet (eg. comprehension) Extensionalitetsaxiomet Små mängder Ordnade

Läs mer

DD1361 Programmeringsparadigm. Carina Edlund

DD1361 Programmeringsparadigm. Carina Edlund DD1361 Programmeringsparadigm Carina Edlund carina@nada.kth.se Funktionell programmering Grundidéen med funktionell programmering är att härma matematiken och dess funktionsbegrepp. Matematiskt funktionsbegrepp

Läs mer

Flernivåsäkerhet och multilateral säkerhet

Flernivåsäkerhet och multilateral säkerhet Flernivåsäkerhet och multilateral säkerhet Daniel Bosk 1 Avdelningen för informations- och kommunikationssytem (IKS), Mittuniversitetet, Sundsvall. lvlltrl.tex 1093 2013-05-28 08:29:16Z danbos 1 Detta

Läs mer

Läsanvisning till Discrete matematics av Norman Biggs - 5B1118 Diskret matematik

Läsanvisning till Discrete matematics av Norman Biggs - 5B1118 Diskret matematik Läsanvisning till Discrete matematics av Norman Biggs - 5B1118 Diskret matematik Mats Boij 28 oktober 2001 1 Heltalen Det första kapitlet handlar om heltalen och deras aritmetik, dvs deras egenskaper som

Läs mer

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1. Schenker har interna system som handhar information som är av intresse för våra kunder/partners. Idag finns ett flertal av dem tillgängliga via Internet, sk Online-tjänster. Dessa erbjuder inte bara hämtning

Läs mer

Programmering B med Visual C++ 2008

Programmering B med Visual C++ 2008 Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,

Läs mer

Parameteröverföring. Exempel. Exempel. Metodkropp

Parameteröverföring. Exempel. Exempel. Metodkropp Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I

Läs mer

Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne.

Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne. Fö 8: Operativsystem II Minneshantering och Virtuelltminne. Virtuella I/O enheter och Filsystemet. Flerprocessorsystem. Minneshantering Uniprogrammering: Minnet delas mellan operativsystem och användarprogrammet.

Läs mer

Datum: 2011-02-10 Version: Författare: Christina Danielsson Senast ändrad:

Datum: 2011-02-10 Version: Författare: Christina Danielsson Senast ändrad: I N T E R N T Säkerhetskrav på extern part För enskild individs direktåtkomst till Datum: 2011-02-10 Version: Författare: Christina Danielsson Senast ändrad: Dokumentnamn: Säkerhetskrav på extern part

Läs mer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1 Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut

Läs mer

Tildatenta Lösningsskiss

Tildatenta Lösningsskiss Tildatenta 2017-10-20 Lösningsskiss E-delen 1. KMP PAPPAPARTY next[i] = 0 1 0 2 1 0 4 3 1 1 2. Parent-pekare Utskriftfunktionen fungerar så här: 1. Om noden inte är None a. gör vi först ett rekursivt anrop

Läs mer

Tentamen Datastrukturer D DAT 035/INN960

Tentamen Datastrukturer D DAT 035/INN960 Tentamen Datastrukturer D DAT 035/INN960 21 december 2007 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.) Betygsgränser,

Läs mer

Explorativ övning 9 RELATIONER OCH FUNKTIONER

Explorativ övning 9 RELATIONER OCH FUNKTIONER Explorativ övning 9 RELATIONER OCH FUNKTIONER Övningens syfte är att bekanta sig med begreppet relation på en mängd M. Begreppet relation i matematiska sammanhang anknyter till betydelsen av samma ord

Läs mer

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621 Lunds Universitet LTH Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621 Skrivtid: 8.00-13.00 Inga tillåtna hjälpmedel Uppgifterna i tentamen ger maximalt 60 poäng. Uppgifterna är

Läs mer

1 De fyra fundamentala underrummen till en matris

1 De fyra fundamentala underrummen till en matris Krister Svanberg, mars 2012 1 De fyra fundamentala underrummen till en matris 1.1 Definition av underrum En given delmängd M av IR n säges vara ett underrum i IR n om följande gäller: För varje v 1 M,

Läs mer

Definitionsmängd, urbild, domän

Definitionsmängd, urbild, domän 5B1493, lekt 5, HT06 Funktioner Definition av begreppet Definition: Låt X och Y vara två mängder. En funktion f av typ X Y är detsamma som en delmängd av X Y, sådan att 1. Om (x, y) och (x, z) f, så är

Läs mer

Testning av program. Verklig modell för programutveckling

Testning av program. Verklig modell för programutveckling Fel i program När man skriver program uppkommer alltid fel. Felen kan indelas i följande kategorier: Under kompileringen upptäcker kompilatorn fel som handlar om att man använt konstruktionerna i programspråket

Läs mer

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse GRUNDER I VHDL Innehåll Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse KOMPONENTMODELL Modell för att beskriva komponenter Externt interface Intern funktion

Läs mer

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn? Fö 7: Operativsystem Introduktion. Klassificering. Vad är ett operativsystem? Program som kontrollerar andra andra program. Gränssnitt mellan användare och hårdvaran. Kärnan. Historisk översikt. Typeset

Läs mer

Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl

Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl Matematiska Institutionen KTH Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL och Media, SF60 och 5B8, onsdagen den 7 augusti 0, kl 4.00-9.00. Examinator: Olof Heden Hjälpmedel: Inga

Läs mer

International Olympiad in Informatics 2011 22 29 July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor

International Olympiad in Informatics 2011 22 29 July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor Papegojor Yanee är fågelentusiast. Sedan hon läst om IP over Avian Carriers (IPoAC), har hon spenderat mycket tid med att träna en flock papegojor att leverera meddelanden över långa avstånd. Yanees dröm

Läs mer

Datasäkerhet. Informationsteknologi sommarkurs 5p, 2004. Agenda. Slideset 10. Hot mot datorsystem. Datorsäkerhet viktigare och viktigare.

Datasäkerhet. Informationsteknologi sommarkurs 5p, 2004. Agenda. Slideset 10. Hot mot datorsystem. Datorsäkerhet viktigare och viktigare. Informationsteknologi sommarkurs 5p, 2004 Mattias Wiggberg Dept. of Information Technology Box 337 SE751 05 Uppsala +46 18471 31 76 Collaboration Jakob Carlström Datasäkerhet Slideset 10 Agenda Hot mot

Läs mer

Typkonvertering. Java versus C

Typkonvertering. Java versus C Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då

Läs mer

Databasdesign. E-R-modellen

Databasdesign. E-R-modellen Databasdesign Kapitel 6 Databasdesign E-R-modellen sid Modellering och design av databaser 1 E-R-modellen 3 Grundläggande begrepp 4 Begränsningar 10 E-R-diagram 14 E-R-design 16 Svaga entitetsmängder 19

Läs mer

Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON Datorteknik ERIK LARSSON Inledning Ken Thompson och Dennis M. Ritchie utvecklade C Turingpriset( Nobelpris i datavetenskap ), 1983 Alan Turing (1912-1954) För deras utveckling av generell OS teori och

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad

Läs mer

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i

Läs mer

Föreläsning 5: Introduktion av pekare

Föreläsning 5: Introduktion av pekare Föreläsning 5: Introduktion av pekare Det bör påpekas att det som tas upp i introduktionen inte är reella exempel på kod. Man anväder inte pekare till att peka på enstaka heltal som i exemplen nedan, men

Läs mer

Introduktion. 1DV425 Nätverkssäkerhet. Patrik Brandt

Introduktion. 1DV425 Nätverkssäkerhet. Patrik Brandt Introduktion 1DV425 Nätverkssäkerhet dagens agenda Viktiga begrepp och mål Verktyg för att upprätthålla målen Principer Grunderna i kryptering Åtkomstlista (ACL) Attacker (Läs delvis själva) Litteratur

Läs mer

Lösning till tentamensskrivning i Diskret Matematik, SF1610 och 5B1118, torsdagen den 21 oktober 2010, kl

Lösning till tentamensskrivning i Diskret Matematik, SF1610 och 5B1118, torsdagen den 21 oktober 2010, kl Matematiska Institutionen KTH Lösning till tentamensskrivning i Diskret Matematik, SF6 och 5B8, torsdagen den 2 oktober 2, kl 4-9 Examinator: Olof Heden Hjälpmedel: Inga hjälpmedel är tillåtna på tentamensskrivningen

Läs mer

Föreläsning 2. Operativsystem och programmering

Föreläsning 2. Operativsystem och programmering Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data

Läs mer

Pascal... Pascal. Pascal... Pascal...

Pascal... Pascal. Pascal... Pascal... ... Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken

Läs mer

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken

Läs mer

Kravspecifikation Fredrik Berntsson Version 1.1

Kravspecifikation Fredrik Berntsson Version 1.1 Kravspecifikation Fredrik Berntsson Version 1.1 Status Granskad FB 2016-02-01 Godkänd FB 2015-02-01 Dokumenthistorik Version Datum Utförda ändringar Utförda av Granskad 1.0 2015-02-01 Första versionen

Läs mer

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo Objektorienterade språk Historik Simula 67 Smalltalk 80 Procedurorienterad programmering Subprogram Programbibliotek Dataorienterad programmering Abstrakta datatyper Objektbaserade språk, föregångare till

Läs mer

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad 1 Datatyper Tobias Wrigstad Det finns flera olika typer av (slags) data Olika datatyper har olika egenskaper. T.ex. är ett personnummer inte ett tal. (Den sista siffran skall stämma enligt den s.k. Luhnalgoritmen

Läs mer

Introduktion till programmering. Undervisning. Litteratur och examination. Lärare. Föreläsning 1

Introduktion till programmering. Undervisning. Litteratur och examination. Lärare. Föreläsning 1 Kursinfo Introduktion till programmering Undervisning Föreläsning 1 Kursinformation Inloggning, filsystem, kommandotolk några inledande exempel Föreläsningar Fem föreläsningar, vardera 45 minuter. Allmänna

Läs mer

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp Institutionen för elektro- och informationsteknik Campus Helsingborg, LTH 2018-01-09 8.00-13.00 (förlängd 14.00) Uppgifterna i tentamen

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 12 Anton Grensjö grensjo@csc.kth.se 10 december 2015 Anton Grensjö ADK Övning 12 10 december 2015 1 / 19 Idag Idag Komplexitetsklasser Blandade uppgifter

Läs mer

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

Läs mer

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor http://w3.msi.vxu.se/multimedia Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor Rune Körnefors Innehåll Variabler i JavaScript

Läs mer

Introduktion till arv

Introduktion till arv Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering

Läs mer

Operativsystem ID2200 Tentamen TEN1 3.8 hp :00-18:00

Operativsystem ID2200 Tentamen TEN1 3.8 hp :00-18:00 Operativsystem ID2200 Tentamen TEN1 3.8 hp 2018-04-03 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Svaren skall lämnas på dessa

Läs mer

Stora bilden av Linjära algebran. Vektorrum, linjära transformationer, matriser (sammanfattning av begrepp)

Stora bilden av Linjära algebran. Vektorrum, linjära transformationer, matriser (sammanfattning av begrepp) Stora bilden av Linjära algebran. Vektorrum, linjära transformationer, matriser (sammanfattning av begrepp) Linjär algebra består av tre grenar eller koncept: geometriska begreppet av vektorrum, analysbegreppet

Läs mer

Filsäkerhet i Windows NT (NTFS)

Filsäkerhet i Windows NT (NTFS) Filsäkerhet i Windows NT (NTFS) Jens Granlund 19.10.2000 Introduktion Detta dokument försöker att beskriva säkerhetsmekanismerna i Windows NTs filsystem NTFS på ett lättbegripligt sätt. Access Control

Läs mer

Algebra och kryptografi Facit till udda uppgifter

Algebra och kryptografi Facit till udda uppgifter VK Algebra och kryptografi Facit till udda uppgifter Tomas Ekholm Niklas Eriksen Magnus Rosenlund Matematiska institutionen, 2002 48 Grupper. Lösning 1.1. Vi väljer att studera varje element i G H för

Läs mer

1 Positivt definita och positivt semidefinita matriser

1 Positivt definita och positivt semidefinita matriser Krister Svanberg, april 1 1 Positivt definita och positivt semidefinita matriser Inom ickelinjär optimering, speciellt kvadratisk optimering, är det viktigt att på ett effektivt sätt kunna avgöra huruvida

Läs mer

Föreläsninsanteckningar till föreläsning 3: Entropi

Föreläsninsanteckningar till föreläsning 3: Entropi Föreläsninsanteckningar till föreläsning 3: Entropi Johan Håstad, transkriberat av Pehr Söderman 2006-01-20 1 Entropi Entropi är, inom kryptografin, ett mått på informationsinnehållet i en slumpvariabel.

Läs mer

Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {

Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container { Innehåll EDAF30 Programmering i C++ Arv. Polymorfism. Sven Gestegård Robertz Datavetenskap, LTH 2015 1 Kort om dynamisk polymorfism Virtuella funktioner 2 Arv i C++ Konstruktorer och destruktorer Tillgänglighet

Läs mer