Sikkerhed 2013 Q4 Tobias Brixen Mark Gottenborg Troels Thorsen Mads Buch 2013 1
Sikkerhed Dispositioner - Dispo 0 2013 Contents 1 Cryptography, confidentiality 3 2 Cryptography, authentication 8 3 Key management and Infrastructures 10 4 Network Security 14 5 System Security and Models for Security Policies 18 6 Threats and Pitfalls 21 Side 2 af 22
Sikkerhed Dispositioner - Dispo 1 2013 1 Cryptography, confidentiality Disposition Confidentiality Unconditional - The OTP Computational Streamciphers Block Ciphers Public-key Padding Intro: Vi starter med en oversigt over modellen. Confidentiality Sikre at data ikke bliver uønsket tilgået Authenticity Sikre hvem der skriver beskeden, men garantere ikke at de ikke bliver læst af andre. Avalibitity Systemet skal være tilgængelig når vi har brug for det. Confidentiality vs Autheticity Confidentiality dækker over at andre ikke skal have mulighed for at fortolke dataen, altså læse den. Confidentiality sikre ikke nødvendigvis integritet. Med det sagt, man ved ikke om den besked der bliver sendt, er den samme som ankommer til modtageren. Authentication er processen i at sikre, at beskeden der modtages også er den som sendes. Dette gøres typisk med an MAC (Messages Authentication Code), der er en funtion over dataen der sendes. Ligger ofte i tæt sammenhæng, da vi ofte ønsker både at holde vores beskeder hemmelige fra evt. angribere, men samtidig er det også af står relevans sikre hvem der har sendt en given besked således at en angriber ikke har mulighed for at udgive sig for at være en anden. Unconditional vs computational security. Unconditional security er sikkerhed for ingen, uanset viden, tid og computerkraft har mulighed for at knække krypteringen. det er næsten umuligt at bruge i praktisk, og meget dyrt. Computational security er langt mere praktiske i brug, men kommer med den catch at de er mindst teoretisk muligt at bryde, hvis en angriber får nok tid og computer kraft, dette er dog betegnet for umuligt i praktisk. Side 3 af 22
Sikkerhed Dispositioner - Dispo 1 2013 Eksempel på unconditional security Idéen er at vi har en besked M bestående af en masse bits m 1,..., m t, og en key K, som er tilfældigt k 1,..., k t. Ciphertexten c 1,..., c t bliver beregnet ved at XOR den i te bit i m og den i te bit i k m 1... m t k 1... k t c 1... c t Vi kan med samme nøgle dekryptere da c i = m i k i Truthtable for XOR c i k i = (m i k i ) k i = m i (k i k i ) = m i 0 1 0 0 1 1 1 0 Grunden til at den er perfekt er at cipherteksten er uafhængig af beskeden da chanchen for at få et 0 i cipherteksten er 1/2: P (c = 0) =P (m = 0, k = 0) + P (m = 1, k = 1) =P (m = 0)P (k = 0) + P (m = 1)P (k = 1) (da k er valgt uafhængigt af m) =P (m = 0)1/2 + P (m = 1)1/2 =1/2(P (m = 0) + P (m = 1)) =1/2 Sandsynligheden for at har en t stk. af 0 er er: P (c = 0 t ) = P (m = x, c = x) x {0,1} t = P (m = x)p (c = x) x {0,1} t = P (m = x) x {0,1} t = 2 t P (m = x) x {0,1} t = 2 t Så men det her holder dog kun når vi kun bruger den samme key-pad én gang. Side 4 af 22
Sikkerhed Dispositioner - Dispo 1 2013 Computational security I praktiske systemer bliver vi dog nødt til at bruge den samme key flere gange, med det opstår der et par problemer som skal løses: For at første skal vi kunne bruge et system flere gange, hvor angriberen ikke ved at vi gentager beskeder. Han skal altså ikke kunne se forskel på at den samme beskede bliver sendt. Til det bruger vi nonce (number only used once). Nonce bliver så sat med ind til krypteringsalgoritmen, og giver så en anderledes ciphertekst ud. Så for secret-key kryptering er det altså givet at samt c = E k (m, n) m = D k (E k (m, n)) Et andet problem er også at ved så små keys kan en angriber kan være heldig at opsnappe plaintekst m og dens ciphertekst c og så, for alle keys, prøve at dekryptere c, og se om den er lig m. Hvis det er tilfældet kan han konkludere, at han har fundet keyen. (kaldt exhaustive search) For at lave exhaustive search ubrugligt bruger man lange keys, omkring de 128 bits alt efter kryptering. Symmetric-key Stream-ciphers Streamciphers er algoritmer der, givet en key k og nonce n, giver en random looking string, som vi bruger til at kyptere vores besked som om det var en One Time Pad. Den kan dog aldrig være helt tilfældig da den bliver givet en 128 bit streng, og outputter, måske, en 1000 bit streng. Der er altså kun 2 128 forskellige output, hvor en virkelig tilfældighedsgenerator vil give 2 1000. Block ciphers Man dele meddelelsen op i blokke, som man så krypterer forskelligt. f.eks.: OFB Output Feedback: En block cipher der fungere som en stream cipher algoritme. En pseudo-tilfældig streng generes ved AES K (IV ), AES K (AES K (IV )),... Den bruges herefter som ved stream ciphers CBC Cipher Block Chaining hver block XOR es med den foregående. Det sikre at en block er afhængige af alle foregående blocks. Første block er en såkald IV (initialiation vector), der agere nounce. CTR Counter: IV en initialiseres med en for hver block. Beskeden deles op i blokke, og krypteres og XOR es med den tilhørende (inkremeneterede) IV. Kort intro af alle tre, men hvor vi går i dybden med CBC Side 5 af 22
Sikkerhed Dispositioner - Dispo 1 2013 Public key RSA IN A NUTSHELL 1. Vælg to primtal p og q tilfældigt. 2. Udregn n = p q. Denne bruges til modulus for både vores secret key og public key. 3. d er givet ved en funktion af p, q og e. 4. Herefter er vores public key givet ved : (n, e) samt private key: (n, d) 5. Vi krypterer herefter m ved at beregne c = m e mod n og dekrypterer ved m = c d mod n Padding Hvis små mængder data skal sendes via f.eks. RSA (mindre end n (ofte ca. 2000 bit)), så er padding nødvendigt. Dette er for at sørge for at beskeden bliver større end n. Er dette ikke tilfældet kan besked dekrypteres med den public key den blev krypteret under. Side 6 af 22
Sikkerhed Dispositioner - Dispo 1 2013 Padding er også nødvendigt ved block encrypting. Som oftest går størrelse af beskeden der skal krypteres ikke op i blokstørrelsen, og her bliver man nødt til at padde den sidste blok. Ved padding er det vigtigt at tistræbe tilfældig data, så en modstander ikke kan udlede noget fra paddingen. Side 7 af 22
Sikkerhed Dispositioner - Dispo 2 2013 2 Cryptography, authentication Disposition Motivation Unconditional Sikkerhed MAC-lister Computational Sikkerhed Mac generering med CBC-MAC Hashing Digital Signatur med public key (replay attacks) Intro: Idéen med at kunne verificere data, er at man ikke skal kunne ændre data undetected. En secret-key system består altså af af to algoritmer S og V, hvor S authenticater en besked, og V verifier. S tager en meddelelse m og en key k, og outputter en Message Authentication Code (MAC), c = S k (m). Idéen er så at man sender denne MAC sammen med beskeden m, og modtageren kører så V på inputtet k, m, c, som enten acceptere eller rejecter. Hvis en besked ikke bliver modificeret skal vi altså have at V k (m, S k (m)) = accept Men hertil skal der også være noget sikkerhed: givet at en adversary får x antal meddelelser og deres MAC, skal han ikke kunne konstruere en meddelelse og en MAC som validere. Unconditional authentication Igen er det muligt, med upraktisk. Giv eksempel med tabelopslag. Man kan inden man begynder at sende beskeder til hinanden kan man aftale en tabel med mindst en MAC for hver besked der skal sendes. Disse MAC er tilfældigt valgt, som ved OTP. Jo flere beskeder der skal sendes, jo flere MAC skal aftales. hvilket er grund til at dette ikke virker i praktisk. Practical systems Mere anvendeliget er det at genbruge en mindre key flere gange som vi kender der fra fx. CBC-MAC og HMAC. Disse algoritmer lider under alle at kunne brydes ved en exhaustive search, men dette betragtes som værende umuligt. MAC algos: Side 8 af 22
Sikkerhed Dispositioner - Dispo 2 2013 CBC-MAC MAC en er den sidste blok efter man kørte CBC på beskeden (IV = all zero) HMAC En sikker hash funktion. Du inputter beskeden, og den spytter en hash ud som bruges som MAC. Autheticity, public-key Systems Idéen her er at gøre noget ved en meddelelse som kun afsenderen kan have gjort. Fx at kryptere den med sin s k. Det er en bedre ide, da B nu kan vise at den meddelelse han modtog fra A, ikke er en han selv har craftet (som han nemt kunne ved symetric key). Digital signatur Digital signatur er som ved symetrisk, men hvor vi signerer med vores secret key, og verifier med vores public key V pk (m, S sk (m)) = accept Idéen er at man gør noget ved beskeder som kun personen med sk kan gøre. I RSA tilfældet ville det være at få signaturen s ved s = m d mod n ud fra hvordan d og e er valgt, har det den egenskab er vi kan få meddelelsen ved at påløfte signaturen i e Problemer med digital signatur 1. Den er langsom s e mod n = (m d mod n) e mod n = m 2. Vi kan lave en tilfældig s og udregne m = s e mod n, og sende den som om den er signed. Hash funktioner Hvad gør de godt for? Hvilke problemer løser de? Den løser de problemer der har været med digital signatur. Hvad skal der til for at være en hash-function. Hvor sikkert er det (birthday paradoxet) I praksis hvad er der af problemer? mht at rapportere sin key stjålet; det kan man udnytte til at signet en kontrakt; rapportere sin nøgle stjålet, og derved kommer ud af den kontrakt A digital signature commits the signer to exactly what was signed and nothing else eksempel på hvad man signer er vigtigt (beskeden fra Bob) Side 9 af 22
Sikkerhed Dispositioner - Dispo 3 2013 3 Key management and Infrastructures Disposition Intro Key Management Session Keys Key Distribution Center Certificate Authority Passwords Don t keep your secrets constant for too long! Key Management Bekymringer Opbevarelse og Udskiftning af Keys Autencitet af Keys Adgang til Keys Session Keys Den primære motivation er tid! Des længere tid djævlen har til at opsnappe beskeder til kryptoanalyse, des lettere har han ved at bryde dem. Individuelt bliver disse keys opbevaret i en keystore som er unik mellem to folk, e.g. Alice og Bob. A KeystoreAB A KeystoreAB E KAB (K session ) E Ksession (M) B KeystoreAB B KeystoreAB Problemet her er at ved et multibruger system vil antallet af keys vokse kvaratisk med antallet af brugere. n(n 1)/2 keys med n brugere. Key Distribution Center Ved flere brugere kan vi ikke antage at alle har et keystore på alle. Derfor: OBS Tegningen er forkert. Der bliver ikke brugt public key, men symmetrisk key. Der findes altså en K A som A og KDC har, samt en K B som B og KDC har. Side 10 af 22
Sikkerhed Dispositioner - Dispo 3 2013 Bekymringer Kan vi stole på KDC? Er vores KDC pålidelig? (Downtime) Eksempler på KDC: Dankort, Kerberos. Certificate Authority Vi vil vide hvem vi snakker med! Især KDC en. Gennemløb af ovenstående A vil gerne snakke med B. A vil gerne have en P K B på en sikker måde. 1. B sender sit eget unikke ID og dennes P K B til CA 2. CA laver et certifikat 3. B sender sit certifikat til A, som verificerer det med CA. 4. A sender derefter sin besked til B under E P KB Side 11 af 22
Sikkerhed Dispositioner - Dispo 3 2013 Certifikatet i dette tilfælde: Cert B : [B, P K B, S SKCA (B, P K B )] Certification Authority bliver nødt til at lave non-crypto authentication af B på et tidspunkt. Et certifikat består af ID af ejeren Validitetsperiode Algoritmer brugt Udgiver Signatur af CA Passwords En bruger viser sig kodeord for at påvise hans identitet. spørgsmål når vi snakker kodeord. Hvordan er kodeordet Der er 4 vigtige 1. valgt (Kan det gættes?) Passphrases Løsninger: frys efter 3 forsøg 2. overført (Kan det opsnappes?) Se over skulderen Kortlæsere over ATM maskiner Cleartext over LAN 3. gemt hos brugeren (Det kan blive stjålet?) Social engeneering 4. gemt hos serveren (Det kan blive stjålet?) Problem: Tabellen bliver hugget Løsning: (slow)hashing Andre typer af sikkerhed Hardware (IBM 4758) Biometrics (Irisscanner, fingeraftryk) Two-factor (challenge som bruger hardware løser) Side 12 af 22
Sikkerhed Dispositioner - Dispo 3 2013 Slow Hash Vi gemmer en Secret Key på vores pc. Vi krypterer den med et password. Sikkerheden er nu i vores passwords styrke. Hvis vi antager vi kun har gemt et hash som verifikation, så skal vi derfor have benyttet en langsom hashfunktion. Dette gør at et exhaustive search vil tage lang tid. Side 13 af 22
Sikkerhed Dispositioner - Dispo 4 2013 4 Network Security Disposition Motivation Authenticaticated Key Exchange (AKE) SSL IPSec (Password-authenticated key exchange) Intro: Konteksten vi står i er at vi har to parter A og B hvor de her har hinandens public key. Spørgsmålet er hvordan får vi kommunikeret en en key mellem A og B, hvor de begge er sikre på at de også snakker med hinanden, og ikke en angriber. Essentielt set skal en authenticated key exchange protokol give begge parter en frisk sessionkey, og lade dem være sikre på hvem de snakker med. Samt det værste en adversary kan gøre, er at stoppe kommunikationen. SSL En af de oftest brugte AKE protokoller er Secure Socket Layer protokol (SSL). Den bliver brugt mange steder, bl.a. til Secure HTTP (HTTPS), hvor det data SSL transporterer bliver sat ind i TCP/IP netværks pakker. SSL består af en del protokoller, hvor vi vil tage fat i Handshake protokollen. Protokollen Den basale idé er at hver part må signe en nonce valgt af den anden. S autentificere sig ved at kunne sende en korrekt MAC med PMS som key, viser han derved at han har kunnet dekryptere PMS (og han kender derfor sk s + PMS er ikke sendt andre steder hen = han er S). C autentificere ved at kunne signe en krypteret PMS; det er dog ikke nok da at signe en ciphertext ikke betyder at du har cleartekst. Dette bliver dog vist ved da han sender MAC en med PMS som secret key Ydermere ser S en signed nounce som S har valgt, hvilket betyder at det ikke er et replay attack. En vigtig detalje er MAC ing til sidst i protokollen. Der forcer adversary til ikke at kunne gøre andet end at se på beskederne og forwarde dem videre. Så hvis man tror på at protokollen før MAC ing virker, hvor adversary kun ser på pakker, holder protokollen. (Teknikken kaldes Final Authentication of Views) Side 14 af 22
Sikkerhed Dispositioner - Dispo 4 2013 IPSec IPSec er et sæt at protokoller som gør ca det samme som SSL, men bare på et andet niveau: Transport laget. At den ligger så langt nede, betyder at sådan noget som selv sekvensnummer og andet kontrolinfo også bliver krypteret. At det ligger længere nede betyder også, at data fra forskellige HTTP forbindelse, men til samme IP bliver transporteret over samme tunnel. Det betyder at applikationen ikke behøver kende noget til sikkerhed, det bliver krypteret uden at den ved det. IPSec bruger Internet Key Exchange (IKE) for key exchange. Den bruger public-key for authentifikation, og Diffie-Hellman key exchange for at få en shared key. Diffie-Hellman p er et primtal. g bliver valgt i intervaller 0 til p 1. A vælger random a og sender g a B vælger random b og sender g b mod p til B mod p til A A udregner (g b mod p) a mod p B udregner (g a mod p) b mod p Tricket ligger i at det tal som A og B udregner er ens, nemlig g ab mod p. Modulus er underordnet for eksponentregning så det er klart at (g a ) b = g ab = g ba = (g b ) a Ved et stort nok p tror man at det er infeasable at bryde g ab mod p. (kendt som Diffie-Hellman problemet) Det skal nok understreges at Diffie-Hellman ikke Side 15 af 22
Sikkerhed Dispositioner - Dispo 4 2013 giver authentification, men dette bliver der dog taget højde for i hele IPSec, og bliver essentielt gjort ved en Final authentification of Views. SSL vs IPsec Da SSL og IPSec er forskellige er det svært at lave en sammenligning IPSec laver sikre tunneler mellem devices med IP nummer, dvs fx fra adapter til adapter. Alle applikationer der kommunikerer til IP er hvor denne sikre tunnel er lavet, får derved gratis adgang til kryptering af data; de behøver ikke kende til nogle sikre protokoller. Downside er at det er kun sikkert fra vores adapter indtil den rammer adapteren på den anden side. Det står i kontrast til SSL, hvor der er sikkerhed helt oppe fra applikationen til serveren. Her skal applikationen så dog kende til SSL og skal implementere dette. Hvad kan vi bruge det til HTTPS. VPN. Higher level channels. (Password-authenticated key exchange) Man kan også bruge SSL til one-way authentication - dette bliver gjort når klienten ikke har et certifikat. Idéen går ud på at når serveren har lave en forbindelse til klienten, ved serveren stadig ikke hvem han snakker med. Klienten kan autentificere sig selv ved at sende sit kodeord til serveren. Da serveren er autentificeret og kanalen er krypteret, sender klienten ikke koden til en malicious server. Det er selfølgelig ikke nogen perfekt løsning. En bruger kan kun autentificere sig mod en server der har brugeren kodeord. Det er også sværere at bevise sikkerhed, da kodeordet bliver sendt efter den bevist sikre SSL. Man kunne Side 16 af 22
Sikkerhed Dispositioner - Dispo 4 2013 nedda gå så langt som til at sige at user auth kun ligger på kodeordet, så vi bare skulle droppe certifikaterne. Så skulle man istedet bare bruge den fælles hemmelighed (kodeordet) til at kryptere og MAC e med. Det duer dog ikke at bruge en key af den type på så mange mængder data. Keyen er jo så kort at man skal kunne huske den. Det skulle ikke være noget problem at brute-force den. Side 17 af 22
Sikkerhed Dispositioner - Dispo 5 2013 5 System Security and Models for Security Policies Disposition Intro 3 types of Firewalls Malware Detection Security Policies Hvor netværkssikkerhed dækker over sikkerheden ved kommunikation fra et system til et andet, dækker systemsikkerhed over mekanismer til at forsvare os imod eksterne angribere der prøver at komme ind i vores system, samt angreb fra interne brugere. Ethvert sikkert system skal altså have en instans der siger om en bruger må udføre bestemte handlinger, denne kalder vi Trusted Computing Base. Ofte er TCB en spreds over forskellige hardware/software enheder (ofte kernel i OS), så den ligger sjældent ét sted. En del af en TCB kan være en firewall. Firewalls Tre typer firewalls: 1. Packet filter Vi dropper pakker (og sender en error response) hvis nogle opsatte regler ikke bliver overholdt. Et Packet Filter filtrerer kun i forhold til selve indholdet af pakken (port, protokol, adresse er det mest brugte). 2. Proxy Side 18 af 22
Sikkerhed Dispositioner - Dispo 5 2013 3. Stateful Er lidt en kombination af de to foregående. Der holdes øje med forbindelser i stedet for. Der bliver pakkefiltreret i forhold til hver forbindelse. Med denne form for firewall er det muligt at skjule lokale computere under en adresse (masquerading firewall) - og på den måde undgå IP Address Scanning! Malware Trojan horses Programmer som ser brugbare ud eller usynlige, Spyware Viruses Inficerer programmer på computeren, hæfter sig til programmer, passiv distribution Worms Aktiv distribution, standalone programmer Detection Virus Scannere: Leder efter instruktionsmønstre DB af virus signaturer Intrusion Detection Regelbaseret (Prøver brugeren at logge på med høj frekvens?) Statistik (Er det normalt du besøger så mange pornosider?) Honeypot (Vi laver falske ressourcer, som vi overvåger) Security Policies Security Policy Hvad vi vil opnå med vores sikkerheds-system, og high-level forklaring på hvordan. Threat Model Hvilke angreb vi vil undgå. Security Mechanisms Vores tekniske løsninger på ovenstående problemer. Latticemodellen Det vigtigste at vide om Lattices er at det er et sæt, hvor alle elementer har et entydigt øverste element (upper bound, eller joint) og nederste element (lower bound eller meet). Tjek wikipedia for mere. Bell-Lapadula Eksemplet med top secret info! Vi må ikke lade information løbe nedad! (No read up; no write down) Biba Eksemplet med togene. Vi lader ikke information løbe opad (Korrupt reliability) (No read down; no write up) Side 19 af 22
Sikkerhed Dispositioner - Dispo 5 2013 Ikke-lattice Chinese Wall Modstandere får ikke lov til at se hinandens arbejde! Prevent-Detect-Recover Samlet policy - antivirus-agtigt. Separation of Duty Dual control Præsidenten og generalen trykker på samme tid knappen ned! Functional Separation Sekventiel ordering Multilevel Lateral Confidentiality Lapadula Chinese Wall and Sandbox Authenticity Biba Sandbox Access Control Access control matricen: Windows lader brugeren definere hvilke filer denne har rettigheder til. Unix lader filerne definere hvilke brugere der har rettigheder til dem. Side 20 af 22
Sikkerhed Dispositioner - Dispo 6 2013 6 Threats and Pitfalls Disposition Modeller Cases intro: Modeller STRIDE STRIDE EINOO X.800 TPM IBM4758 CBC og SSL STRIDE har til formål at katagorisere målene med angreb, denne model er universel og kan bruges på alle typer angreb. Hvert bogstav representere de mål en angriber typisk kunne være ude efter at opnå S Spoofing Identity - er forsøg på at opnå evnen til at imitere andre brugere T Tampering er når angriberen er efter muligheden for at modificere data uden at dette bliver opdaget, R Repudiation resultere i at angriberen er i stand til at benægte at have gjort noget han rent faktisk har gjort. I Information disclosure er når angriberen forsøger at opnår information/data som han ikke burde have adgang til. D Er når en angriber forhindre brugere i at bruge en givet service. E Når angriberen forsøger at skaffe sig flere rettigheder (fx. Admin) EINOO EINOO modellen fortæller os hvem angriberen er, den er opdelt i 2 faser, den første angiver hvem angriberen er, og den anden hvordan de kan gøre det. E External Attackers. I Internal Attackers. N Network attacks, begrænser angriperen til at bruge angrebs typer beskrevet i X.800 modellen. Side 21 af 22
Sikkerhed Dispositioner - Dispo 6 2013 O Off-line attack hvor angriberen opnår adgang til data, som han stjæler og ved senere lejlighed han decryptere uden at behøve at være i kontakt med serveren. O Online attack, Angriberen observere i realtime programmer og operationer, og kan på den måde opnå viden, eller finde huller i sikkerheden. TPM Klassifikation af årsag til angreb. Hvor lå problemet? Thread model Var det pga. vores thread model at angrebet kunne lade sig gøre? Policy Var det vore security policy den var gal med? Mechanism Var der programmer eller procedurer der blev udført forkert (i forhold til policy) X.800 X.800 modellen er lavet specielt til netværks angreb, og er indelt i to kategorier. Særligt er formålet med X.800 at tydeliggøre hvorden et angreb er blevet udført, for at bedre kunne sikre systemet. modellen indeholder Passive attacks kommer i to varianter Eavesdropping og Traffic analysis. generelt gælder det for pasive angreb at de er meget svære at opdage, hvorfro man ofte bruger encryptering til at beskytte mod eavesdropping. Aktive attacks kommer også i to varianter Replay og modification. Cases IBM 4758 - EINOO, STRIDE Hardware sikkerhed, IBM 4758, bagudkompatibel, Single DES ikke sikker, misuse of API, 2 single-keys made into new one 2-part key, giving access for extraction of other keys. EINOO: Internal attackers. STRIDE: Tampering, information disclosure. CBC - X.800 Anbreb bestående af 2 faser, først Eavesdropper angriberen på komunikationen. Anden fase går angriberen over at aktivt at modificere en besked udfra svar tiden kan angriberen så se hvorvidt ciphertexten bliver accepteret eller afvist, hvis de er tæt nok på serveren. X.800: Tampering, information disclosure. Side 22 af 22