Introduktion til Kryptologi September 22, 2014
Kryptologi Datasikkerhed Sikker kommunikation over usikre kanaler Kryptografi: Bygge systemer Kryptoanalyse: Bryde systemer Avancerede Protokoller Data er ikke passiv men noget der regnes på men uden at lække den! Elektroniske Valg Elektroniske Skjult-Bud Auktioner Benchmarking
Datasikkerhed Videnskaben om at lave sikker kommunikation over usikre kanaler To vigtige målsætninger: Konfidentialitet: Hemmeligholdelse, Beskyt mod lækage Autenticitet: Ægthed, Beskyt data mod forvanskning Kan overvejes i forhold til mange ting: Besked Sender
Datasikkerhed Konfidentialitet Autenticitet Konfidentialitet Integritet Anonymitet Autenticitet
Vælg det rigtige værktøj Kryptologi stiller en række tekniske værktøjer til rådighed såsom kryptosystemer og signatursystemer Konfidentialitet og autenticitet er meget forskellige behov, og derfor er de tekniske løsninger også meget forskellige! Vigtigt at gøre sig klart hvilket problem man står med når man vælger sit værktøj!
Vælg det rigtige værktøj Kryptosystemer bruges til at sikre konfidentialitet Signatursystemer bruges til at sikre autenticitet
Mål: Konfidentialitet Værktøj: Kryptosystem Enkryptering ke Meddelelse Nøgle Generering Ciffertekst kd Dekryptering ke: nøgle til enkryptering kd: nøgle til dekryptering
Krypteret Kommunikation ke kd A E ke (M) B Modstanderen kender ikke kd, og har derfor ingen ide om hvad M er Modstanderen Kerkhof: man er nødt til at antage at modstanderen kender krypteringsalgoritmerne sikkerhed kan kun baseres på at han ikke kender nøglen
To Typer Kryptosystemer Symmetrisk (konventionelt) kryptosystem: ke = kd Den samme nøgle skal først på plads i begge ender før man kan komme i gang ofte svært i praksis Public-key kryptosystem: (ke, kd) ejes af en bestemt person A som har lavet dem Nøglerne er forskellige ke er offentlig må kendes af enhver kd er hemmelig kendes kun af A Enhver kan sende data krypteret med A s offentlige nøgle ke, og kun A vil kunne pakke det ud Ikke nødvendigt at aftale en nøgle først!
Hvor sikkert kan det blive? Der findes kryptosystemer, der er absolut ubrydelige! Men kun hvis nøglen er lige så lang som meddelelsen og kun bruges én gang Ikke særlig praktisk! Alle kryptosystemer der bruges i praksis har nøgler der er meget kortere end det data der krypteres Kan derfor brydes hvis man har tid nok Man prøver bare alle muligheder for nøglen Kendt som udtømmende søgning Sikkerhed af sådanne systemer afhænger derfor af hvor lang tid det tager at bryde systemmet
Mål: Autentifikation Værktøj: Autentifikationssystemer Autentificering ka Meddelelse Nøgle Generering Checkværdi kv Verificering ka: nøgle til autentificering accept eller afvist kv: nøgle til verifikation
Autentificeret Kommunikation ka kv A M, c=aut ka (M) M, c? B Modstanderen Modstanderen kan ikke ændre M til M det kræver han kan finde en ny checkværdi som B vil acceptere, og det kræver kendskab til ka
To Typer Autentifikationssystemer Message authentication codes (MACs): ka = kv Begge parter kan lave og checke checkværdier Digitale signaturer: Nøglerne (ka,kv) ejes af en bestemt person A kv er offentlig må kendes af enhver ka er hemmelig kendes kun af A Betyder at kun A kan lave gyldige checkværdier, men enhver kan verificere dem Dermed får vi en funktionalitet der ligner håndskrevne underskrifter Nødvendig funktion hvis elektroniske dokumenter skal have juridisk gyldighed
Old-School Krypto 1. Byg et system som ser sikkert ud 2. Sæt det i brug 3. Hvis det viser sig at være usikkert, så prøv at fixe det og gå så til 2. Kan være tidskrævende, dyrt og pinligt Og man ved aldrig om ens system er sikkert
Anatomi af Moderne Krypto Antagelser: Veldefinerede, simple antagelser som kan falsificeres Helst studeret i 100er af år uden at blive falsificeret Fx at det er nemmere at gange end at faktorisere Primitiver: Simple værktøjer med deres sikkerhed baseret på antagelser Fx envejsfunktioner Systemer Avancerede værktøjer bygget vha. primitiver Fx signatursystemer og kryptosystemer Protokoller: Detaljerede beskrivelser af hvordan man sikkert bruger fx signatursystemer og kryptosystemer i en større kontekst Fx dankortsystemet, elektroniske valg, elektroniske skjult bud auktioner, NemID,
Den Reduktionistiske Metode Sikkerhed på det avancerede niveau bevises formelt/matematisk under antagelse af at det simplere niveau er sikker: Hvis antagelserne er sande, så er primitivet sikkert Hvis primitiverne er sikre, så er systemet sikkert Hvis systemerne er sikre, så er protokollen sikker Så, hvis antagelserne er sikre, så er protokollen sikker Fordel over old-school krypto: Meget nemmere at vurdere om nogle simple antagelser er sikre end om et avanceret system er sikkert Kan fx bevise at et online dankort-system er sikkert hvis det er sværere at faktorise end det er at gange
Nogle One-liners Old-school krypto: En protokol er sikker indtil den er bevist usikker Moderne krypto: En protokol er usikker indtil den er bevist sikker
Antagelser Skal være veldefinerede, dvs. matematisk Helst så nemme at falsificere som muligt hvis falske Helst så simple som muligt Helst så gamle så muligt Eksempel: Intet Boolsk kredsløb med 2 160 gates kan faktorisere et produkt af 2 tilfældige 256-cifre primtal med sandsynlighed bedre end 2-60 Dette er en præcis matematisk antagelse. Den kan falsificeres ved at demonstrere et sådan kredsløb som virker bedre en med sandsynlighed 2-60 Den kan bruges til at bygge både public-key kryptosystemer og signatursystemer
Eksempel på Primitiv Vi kalder f: A B en one-way function hvis: Nem fremad: Nemt at beregne f(x) fra x Hård bagud: Givet tilfældig y=f(x) er det svært at beregne x så y=f(x ) med god sandsynlighed Skal desuden definere nemt, svært og god sandsynlighed matematisk En del af kompleksitetsteorien
Kryptosystem Givet ved tre algoritmer (G, E, D) Nøglegeneratoren G laver tilfældige nøglepar (ke, kd) En enkrypteringnøgle ke definerer en funktion: E ke : M C fra klartekstrum M til ciffertekstrum C En dekrypteringnøgle ke definerer en funktion: D kd : C M Korrekthed: For all m M : D kd (E ke (m))=m
Kryptosystem Symmetrisk: kd=ke Går mindst tilbage til Cæsar Public-key kryptosystem Sikker at gøre ke offentlig så alle kan enkryptere ke kaldes så public key Går tilbage til 1976 Diffie, Hellman: New Directions in Cryptography in IEEE Transactions on Information Theory, Volume 22, Issue 6
Cæsar Substitution Nøglerum: K = {0,1,2,,25} Klartekstrum, Ciffertekstrum: M={A,B,,Z} dk=ek E ke (m) = gå ek skridt frem i alfabetet fra m D kd (c) = gå dk skridt baglæns i alfabetet fra c
Vernam s One-time Pad Nøglerum = bitstrenge af længde L Samme for klartekstrum og ciffertekstrum m 01011101100100100100101 ke 00110110010011010101001 c=m ke 01101011110111110001100 kd 00110110010011010101001 m=c kd 01011101100100100100101 Perfekt konfidentialitet så længe nøglen kun bruges én gang En given klartekstbit giver anledning til begge ciffertekstbits med samme sandsynlighed
Typer af Sikkerhed Betinget sikkerhed: Systemets sikkerhed kan reduceres til beregningsmæssige antagelser såsom sværhed af faktorisering Sikkert mod modstander med begrænset regnekraft Sikkerhed måles vha. kompleksitetsteori Ubetinget sikkerhed: Sikkerhed kan bevises uden antagelser Sikkert mod modstander med uendelig regnekraft Sikkerhed måles vha. informationsteori
Resten af Foredraget Detaljer om hvordan sikkerhed af et kryptosystem defineres Eksempel på hvordan primitivet pseudorandom funktion (PRF) bygges Eksempler på hvordan PRF bruges forkert og rigtigt Eksempel på ubetinget sikkert autentificeringssystem Eksempel på sikre flerpartsberegninger
Generisk Angrebsmodel O: Orakel Input A: Angriber Output Vind/ Tab Angriber: Angriberen modelleret som et program Effektiv for betinget sikkerhed Input: Al offentlig information såsom public key ke Orakel: Program der forsyner A med ekstra information under angrebet, for at modellere den kontekst angrebet finder sted i Output: Angriber kan fx prøve at beregne kd og outputte denne Vind/Tab: Ud fra Output besluttes om A vandt eller tabte Sikkerhed: Et system kaldes sikker hvis alle (effektive) A vinder med lille sandsynlighed
Orakler for Kryptosystemer Ciphertext only: O outputter E ke (m) for tilfældige m valgt af O Known plaintext: Som ovenfor, men O outputter (m, E ke (m)) Chosen plaintext: Som ovenfor, men A vælger m Chosen ciphertext: A giver ciffertekster c til O og får D kd (c) tilbage
Tab/Vind for Kryptosystemer Total break: A vinder hvis den outputter kd Instance deduction: A bliver givet c=e ke (m) af O og vinder ved at outputte m Information deduction: A bliver givet c=e ke (m) af O og vinder hvis den kan outputte en enkelt bit af information om m Fx om der er et lige eller ulige antal 0 er i m
Eksempel på Reduktion Muligt at bygge et kryptosystem som er sikker mod information deduction under chosen ciphertext angreb Kan bygges fra en vilkårlig one-way function Så, hvis en af de simpleste primitiver findes, så kan man bygge et af de stærkeste systemer J
Resten af Foredraget Detaljer om hvordan sikkerhed af et kryptosystem defineres Eksempel på hvordan primitivet pseudorandom funktion (PRF) bygges Eksempler på hvordan PRF bruges forkert og rigtigt Eksempel på ubetinget sikkert autentificeringssystem Eksempel på sikre flerpartsberegninger
Kryptering med Fuldstændig Tilfældig Funktion ke: For hver mulig klartekst m vælg en fuldstændig tilfældig klartekst c Eneste krav er at til forskellige m ikke rammer samme c Nøglen består af tabellen over m og c ke=kd Er intuitivt ubetinget sikkert, da angriberen kun ser fuldstændigt tilfældige værdier Hvis klartekstrummet er alle bitstrenge af længde 64 fylder nøglen dog omkring 10 20 bits Fylder 10,000,000,000 DVD er (150,000 ton) I praksis bruges en funktion som ligner en fuldstændig tilfældig funktion og som har en meget kortere nøgle
Pseudo-Random Function Ingen input data Orakel O: Lav en tilfældig nøgle ke og en tilfældig bit b: Hvis b=0: På input en klartekst m, svar E ke (m) Hvis b=1: På input m svar med en tilfældig c C Output data: en bit c Tab/Vind: A vinder hvis c=b Sikkerhed: E ke kaldes en PRF hvis alle effektive algoritmer A vinder med sandsynlighed ½ + ε for et meget lille ε (fx 2-60 ) En PRF kan bruges i stedet for en fuldstændig tilfældig funktion så længe man kan tåle usikkerhed med sandsynlighed ε og tror at modstanderen har begrænset regnekraft
PRF? One-time Pad Nøgle, Klartekst, Ciffertekst = 16 bits E ke (m) = m ke En meget dårlig PRF, da tilsvarende bits i hver blok krypteres på samme måde
Friedman Brød mange kryptosystemer omkring anden verdenskrig
PRF? One-time Pad Koloner er krypteret med samme bit, hvilket nemt ses!!
PRF? Transposition 0 1 1 1 0 1 0 1 1 0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 0 1 0 0 1 0 1 1 16*15*14* *2*1 muligheder Fylder log 2 (16*15*14* *2*1) < 45 bits
PRF? Transposition Bevarer antal 0 ere og 1 ere og derfor lyse og mørke flader!!
Substitution af Små Blokke 0 1 1 1 0 1 1 1 1 0 0 0 0 0 1 1 Substitution Substitution Substitution Substitution 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 2 4 = 16 bitstrenge af længde 4 log 2 (16*15*14* *2*1) ~ 45 bits i nøglen
PRF? Substitution Samme 4 bits bliver altid til samme 4 bits, så ensfarvede flader skinner igennem!!
Avalanche Effect Ved at gentage substitution af små blokke og permutation kan man få en såkaldt avalanche effect Hvis man ændrer en enkelt bit i inputtet så ændrer alle bits i outputtet sig tilfældigt Får funktionen til at ligne en tilfældig funktion Princippet bag moderne PRF er som DES og AES
Substitution Substitution Substitution Substitution Substitution Substitution Substitution Substitution
Eksempel PRF Vi bruger vores transposition og substitution skiftevis i 5 omgange 45-bits + 45-bits = 90-bits nøgle 2 90 ~ 10 27 forskellige nøgler, så udtømmende søgning er udelukket Overraskende sikker PRF! Krypterer nu Friedman blokvis med denne PRF
PRF = 5*(Subst+Perm) Samme 16 bits bliver altid til samme 16 bits, hvilket stadig ses!! Godt kryptosystem, men forkert brug!
Løsning: Cipher Block Chaining m1 m2 m3 m4 ke E ke E ke E ke E c1 c2 c3 c4 Hvis én blok ændres, så ændres alle de følgende
5*(Subst+Trans) og CBC Nice!
Resten af Foredraget Detaljer om hvordan sikkerhed af et kryptosystem defineres Eksempel på hvordan primitivet pseudo-random funktion (PRF) bygges Eksempler på hvordan PRF bruges forkert og rigtigt Eksempel på ubetinget sikkert autentificeringssystem Eksempel på sikre flerpartsberegninger
Autentifikationssystem Givet ved tre algoritmer (G,A,V) Nøglegeneratoren G outputter tilfældige nøglepar (ka,kv) hvor ka er autentifikationsnøglen og kv er verifikationsnøglen c = A ka (m) kaldes en checkværdi V kv (m,c) outputter accept eller afvis Korrekthed: V kv (m,a ka (m))=accept for alle m Message Authentication Code (MAC): kv=ka Digital signatur: vk kan gøres offentlig
Sikkerhed af Autentifikationssystemer Orakler: Known message attack: O outputter (m,a ka (m)) for tilfældige m Chosen message attack: A vælger m Vind/Tab: A vinder ved at outputte (m,c ) hvor: V kv (m,c )=accept A fik ikke c fra oraklet O Sikkerhed: Alle effektive A vinder med meget lav sandsynlighed
Eksempel på en MAC ak=(a,b,n) hvor N er en øvre grænse på størrelsen af de tal der regnes med og a og b er tilfældige tal fra {0,,N-1} kv=ka c = A ka (m) = a + b m mod N V kv (m,c): Er c = a + b m mod N? Ubetinget sikkert så længe det kun bruges én gang (a la Vernams one-time pad) Chancen for at gætte checkværdi c for nyt m er 1/N
c Alle nøgler gennem (m,c) er stadig mulige c? Alle checkværdier er stadig mulige! c? a b m m
Resten af Foredraget Detaljer om hvordan sikkerhed af et kryptosystem defineres Eksempel på hvordan primitivet pseudo-random funktion (PRF) bygges Eksempler på hvordan PRF bruges forkert og rigtigt Eksempel på ubetinget sikkert autentificeringssystem Eksempel på sikre flerpartsberegninger
Sikre Distribuerede Beregninger Muligt at lade flere parter som ikke stoler på hinanden lave beregninger på deres samlede datasæt uden at samle data på nogen enkelt maskine Bruger fx tre servere hvor hver enkelt server på intet tidspunkt ved noget som helst om dataene
Modulær Aritmetik (1/2) I nogle af opgaverne bruges modulær aritmetik Eksempel: Plus og gange modulo 10 Man plusser og ganger som sædvanligt, men trækker så 10 fra så mange gange man kan indtil man ender i intervalet [0..9] Gemmer altså resten efter division med 10 Computere regner modulo fx. 2 32 og 2 64
Modulær Aritmetik (2/2) 7 + 5 mod 10 = 12 mod 10 = 2 7*12 mod 10 = 84 mod 10 = 4 Vigtige regler: (a + b mod n) + c mod n = a + (b + c mod n) mod n (a*b mod n)*c mod n = a*(b*c mod n) mod n 5 8 mod 11 = 390625 mod 11 = 4 5 8 mod 11 = (5*5 mod 11)*(5*5 mod 11)*(5*5 mod 11)*(5*5 mod 11) mod 11 = (25 mod 11)*(25 mod 11)*(25 mod 11)*(25 mod 11) mod 11 = 3 * 3 * 3 * 3 mod 11 = 81 mod 11 = 81-77 = 4
Sikker Distribuering Eksempel med tre servere: En hemmelighed s {0,,9} som skal distribueres sikkert Vælg tre tilfældige tal s 1,s 2,s 3 {0,,9} hvor s = s 1 +s 2 +s 3 mod 10 og send s j til server nummer j
Sikker Distribuering 5 8 + 3 + 4 mod 10 = 15 mod 10 = 5 8 3 4
Addition af Distribuerede Ønsker at beregne distribueret version af 5+7 mod 10 = 2 Værdier 8 4 6 4 5 7 2 6 9 2 3 2 Lækker ingen information da der ikke er kommunikation!
Multiplikation 8 6 4 2 8 5 7 5 (8+4+3)(6+2+9) = 8 6 + 8 2 + 8 9 (s + 1 4 6 +s 2 + +s4 2 3 )(t 1 + +t 4 9 2 +t 3 + ) 3 6 = + 3 2 + 3 9 = s 1 t 1 + s 1 t 2 + s 1 t 3 + s 2 t 1 + 255 s 2 t 2 + s 2 t 3 + s 3 t 1 + s 3 t 2 + s 3 t 3 8 3 9 9
Generelle Beregninger Nu kan vi addére og multiplicere sikkert modulo et tal N Tillader at udføre en vilkårlig beregning sikkert Computere regner jo fx typisk modulo 2 32 eller 2 64 En sidste one-liner: Alt hvad der kan beregnes med et distribueret system, kan også beregnes sikker