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 som skickas via nätverk? Hindra program att förstöra system? Hindra program att förstöra kommunikationen? Vara säker på att en person är den person personen utger sig för att vara? Vara säker på att en dator är den dator datorn utger sig för att vara? etc
Upplägg Området är stort och komplext Vissa saker hör till datorkommunikation Andra saker är mera matte och ett specialområde i sig (kryptering). Idag: jag ger en snabb översikt och Pelle berättar lite om de praktiska problem som kan uppstå.
Kryptering Inga detaljer men Symmetric-key encryption Public-key cryptography One-way functions Digitala signaturer
Vem är vem Lösenord (behöver väl inte kommentera så mycket??) Skickas öppet (ftp, telnet, POP3) För lätta Engångslösenord Kort Mätning av kroppsliga egenskaper
Bryta sig in i systemet innifrån Trojansk häst Fejka inloggningssekvensen Program som innehåller speciell kod (logic bombs) Bakdörr
Buffer overflow MYCKET vanligt Returadr Stack Variabler Exempel: char myline[100]; strcpy(myline,gets()); SP Array SP Kod
Hur undvika detta? KISS Se till att kolla längden!!! Kodgranskning (hjälper också mot annat) OS koden öppen (det hjälper aldrig att försöka hindra genom att dölja) Slå inte på saker som default (vissa OS kommer med alla möjliga saker påslagna... för att göra det enklare!!) Kolla rättigheterna vid flera tillfällen: Vad är rättigheten just nu? Så lite access som möjligt Den accesskontroll man har ska vara enkel, lättfattlig och ligga i grunden av systemet Måste vara enkelt att hantera om det är jobbigt att använda pga säkerhet så kommer folk att strunta i det.
Virus Byta ut program (man tror att man kör A men i själva verkat så kör man B) Exempel: com/exe i dos, sökväg i Unix Virus som läggs in i programfilen Minnesresident Boot sector virus Device driver Macro virus
Hur hindra virus? Leta efter: Storleksskillnader (men viruset kan ju fixa detta med komprimering) Leta efter vissa mönster (men viruset kan kryptera, ändra koden, etc) Kolla innehållet i filer (hasha filerna) Kolla efter olika uppföranden Undvik virus!!!
Andra faror Applets Agenter Postscript Skydd Sandbox Kolla att man inte modifierar det man inte får eller sig själv Lätt att kolla statiska adresser, svårt med dynamiska Går långsammare, svårt att göra
Interpreterande kod, tex Java Försöker appleten att modifiera pekare Försöker den bryta mot accessmodifierare Försöker den bryta mot typlagarna Försöker den att skapa göra så att stacken går utanför sina gränser Gör den felaktiga typkonverteringar Javas accessprotokoll Utgående från URL och vem som signerade appleten
Flera sätt att kolla rättigheter etc Man brukar skilja på policy (vad ska skyddas från vem) och mekanism (hur man gör det) Reference monitor kollar att saker är OK Tabell med objekt och par Access Control Lists
Varför och hur? Varför uppstår alla problem? Förslag på hur man kan bygga säkra system Bell-La Padula (militären) På nivå X så kan man bara läsa nivå X På nivå X så kan man bara skriva till X Biba (företag) På nivå X så kan man bara skriva nivå X På nivå X så kan man bara läsa X Orange Book Nivå D - Windows 98/SE etc, Mac OS 9 Nivå C1 - Unix, Mac, C2 - Windows 2000 Nivå B1-B3, A1
Andra metoder att skicka information Låsning av filer CPU aktivitet Kommunikationsaktivitet Gömma information i annan information