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 Vid sändning: När du inte kan vara säker på var data slutligen dyker upp Vid lagring: När fysisk säkerhet inte kan garanteras Vid avlyssning: När fysisk skärmning (övervakade optiska kablar o. s. v.) inte är en praktisk lösning 2
Grundfrågor för kryptosystem Är algoritmen säker nog? Fungerar algoritmen mot just mitt hot? Är nyckelhanteringen säker? Finns standard? Försök aldrig att skapa ett eget krypto!!!! Använd något allmänt testat och pålitligt 3
Algoritmstyrka Moderna krypton knäcks inte utan mycket stora resurser Bara äkta blankettchiffer, OTP, är teoretiskt säkert mot alla attacker. Men tyvärr praktiskt oanvändbart i alla normala situationer Algoritmsvaghet är normalt inget problem för beprövade men inte alltför gamla algoritmer Dåligt nyckelval och felaktiga implementationer är vanligaste problemen 4
Är inte kvantkrypto säkert? Kvantkrypto bygger på att ingen kan avlyssna kommunikation utan att det märks. Man kan alltså utväxla hemligheter, men för full säkerhet (delar avslöjas alltid!) och för att det är så dyrt och bökigt, så bör man använda det till att utväxla nycklar till annan kryptering. Man måste försäkra sig om vem man har säker kontakt med! Man-in-the-middle. 5
Nyckelstyrka Man kan alltid prova alla tänkbara nycklar på ett uppsnappat kryptogram. Endast korrekt nyckel ger dekryptering med verkliga meddelandens struktur. Kallas uttömmande sökning ( brute force ) Meddelandets struktur kombinerat med kryptometoden kan göra att man snabbt kan utesluta majoriteten av teoretiskt möjliga nycklar Med alla tänkbara nycklar menas alla som kan ha genererats, inte alla som ryms i nyckelns antal bitar 6
Exempel: Caesarchiffer Enkel beskrivning: Byt alla klartextbokstäver mot bokstaven x steg framför klartextbokstaven i alfabetet. Ange nyckel som bokstaven x steg framför A Nyckeln är den bokstav K som klartext-a byts till. Som tabell med nyckel T, x=19 steg: Klartextbokstav A B C D E F G H Kryptobokstav T U V W X Y Z A 7
Uttömmande nyckelprovning för Caesarchiffer Kryptogram: Icnnkc qopkc fkxkuc guv kp.. Språket är okänt! Men bokstäverna förutsätts ha normala ljudvärden (engelskt alfabet A-Z) Skriv alla tänkbara nyckelvärdena på första raden Skriv på nästa rad under varje nyckelvärde dess lösning för första kryptogrambokstaven. Fortsätt på samma sätt en kryptogrambokstav i taget. Uteslut nyckelbokstaven då klartexten blir klart omöjlig 8
Resultat vid uttömmande nyckelprovning A B C D E F G H I J K L M N O P Q R S T U V W X Y Z I H G F E D C B A Z Y X W V U T S R Q P O N M L K J c b a z y x w v u t s r q p o n m l k j i h g f e d n - l k j - h g f e d c - - z y x - - u t s r - p o n l - j h - f e d - z y - u t - - p o k i g - c b - w v r q m l c a y - t o n j i e d q o m h c b x w s r o m k f a - v u q p p n - - b - v r - 9
Uttömmande nyckelprovning för realistiska nyckelstorlelar Att prova alla värden för en 56-bits-nyckel tar 1142 år med en provad nyckel per µs, men bara10 timmar med 1000 parallella datorer som tar en nyckel per ns Kryptokorsord har c:a 75 bits nyckel... Men meddelandestruktur utesluter snabbt de flesta nyckelvärdena AES har minst 128 bits-nyckel. Uttömmande provning tar 1.000.000.000.000.000.000 år 10
Användningskriterier Algoritmer för sekretess ska dölja klartexten väl, även då den är repetitiv Algoritmer för dataintegritet ska inte ge någon ledtråd från kryptogrammet för en klartext till kryptogrammet för en liknande klartext Algoritmer för signering har samma krav som för dataintegritet 11
Algoritmtyper Det finns tre grundtyper, varav bara två egentligen är kryptering (dekrypterbar) Strömchiffer (löpande krypto), snabbt och utmärkt för sekretess, olämpligt för integritet Blockchiffer, långsammare (symmetriska) till ytterst långsamma (asymmetriska), och passar för både sekretess och integritet Enkelriktade funktioner, som kan kontrollera om viss text stämmer med annan text 12
Strömchiffer Det vanligaste är överlagringskrypton, d. v. s. vi använder en nyckel för att skapa en lång sträng av tecken, som adderas tecken för tecken till klartexten: c i =k i +m i Upprepade klartexttecken ger olika kryptogramtecken beroende på att k i växlar med positionen i Om du inte vet något om teckensträngens värden, kan du inte heller få fram något om klartexten Om du redan vet klartexten, är det en barnlek att ändra, så att mottagaren godkänner den nya klartexten 13
Ändring vid överlagringskrypto Behandla ett kryptogramtecken, c i Du vet att motsvarande klartext är m i, men du vill att mottagaren ska läsa x i Nyckeltecknet är uppenbart k i =c i -m i Så du (attackeraren) ändrar c i till y i, y i =c i -m i +x i Mottagaren dekrypterar detta: y i - k i = c i -m i +x i -k i = m i +k i -m i +x i -k i = x i 14
Blockchiffer Meddelanden behandlas i block med fast storlek Nyckeln är oförändrad för minst en session Vi kan skriva kryptering av ett block som C i =E(K,M i ) 15
Svaghet hos blockchiffer Antag att flera block, M i, M j, M k, M l, har samma värde X Antag att E(K,X)=Y C i, C j, C k,c l har uppenbart allihop värdet Y Om du vet klartexten för C i, så vet du nu också klartexten för C j, C k, C l Om du vill sända mottagaren ett block till med klartext X, så sänd Y. 16
Kedjning (Block chaining) Kryptering med C i =E(K,M i ) kallas Electronic CodeBook mode, ECB Använd aldrig ECB för repetitiva data eller då du kräver dataintegritet Med CBC, Cipher Block Chaining, är C i =E(K,M i +C i-1 ), C 0 =IV, initialiseringsvektor Om två meddelanden har olika IV eller M 1, kommer alla deras C i också att vara olika 17
Enkelriktade funktioner och hash En enkelriktad funktion är sådan att y=f(x) beräknas lätt för alla x, men det är praktiskt ogörligt att beräkna x=f -1 (y) Hash-funktioner komprimerar data av godtycklig storlek till ett block med fast storlek En kollisionsfri hash-funktion är enkelriktad, och det är omöjligt att finna (x,z) sådana att F(x)=F(z) (utom genom uttömmande provning) Om du bara vill veta om â=a, lagra F(a)=y och kontrollera om F(â)=y 18
Symmetrisk och asymmetrisk I klassisk kryptering har sändare och mottagare tillgång till samma nyckel Problemet är att föra över nyckeln från den ena till den andra utan att dess värde läcker till tredje part Med asymmetrisk kryptering används olika nycklar för kryptering och för dekryptering Krypteringsnyckeln behöver inte var hemlig, då den inte ger någon ledtråd till värdet för dekrypteringsnyckeln Vi talar om öppna, publika nycklar 19
Asymmetrisk kryptering Varje användare har ett nyckelpar, en publik nyckel e, en hemlig nyckel d e är en enkelriktad funktion av d eller också har de beräknats från en gemensam rot och transformationen från roten till e,d är enkelriktad Vid fallet med gemensam rot talar vi om lönndörrssystem Det finns två enkelriktade funktioner f och g sådana att g(d,f(e,x)=x 20
Exempel: RSA Välj två stora primtal (c:a 1024 bitar) p och q Beräkna och publicera n=pq Välj en publik nyckel e, där e inte har någon faktor gemensam med (p-1)(q-1) Beräkna d=e -1 modulo (p-1)(q-1) Kryptera med c=m e modulo n Tack vare algebrans lagar är c d =m ed =m modulo n 21
MAC och digitala signaturer Om man kan bevisa att data kommer orörda från en given avsändare, så har vi dataintegritet Om data bevisligen krypterats med en nyckel som bara en enda person har, så måste data komma från den personen Om data dekrypteras med en nyckel, och resultatet har en överenskommen, redundant struktur, då kommer data bevisligen från innehavaren av krypteringsnyckeln Om sändare och mottagare har samma nyckel kallar vi det krypterade värdet MAC (Message Authentication Code) Om data skapas med en asymmetrisk nyckel kallar vi värdet en digital signatur 22
MAC En MAC kan vara kryptering av en kollisionsfri hash av meddelandet En MAC kan vara vilket som helst annat värde av full kryptografisk styrka, som beror på hela meddelandet och en symmetrisk nyckel, som t. ex. sista blocket i CBC Den som kan kontrollera en MAC kan också skapa en korrekt MAC för nya meddelanden med samma nyckel 23
Digital signatur En digital signatur är det kollisionsfria hashvärdet för meddelandet krypterat med en asymmetrisk nyckel För att kontrollera signaturen måste man beräkna hash för meddelandet, dekryptera signaturen med den publika nyckeln, och jämföra de två värdena Den som kontrollerar har inte den privata nyckeln, och kan alltså inte signera själv 24
Om kollisionsfria hashfunktioner Dessa kan behandla argument som är mångdubbelt större än resultaten, så kollisionsfri betyder uppenbart inte att inga meddelanden får samma hashvärde Alla som ska kontrollera, måste också kunna beräkna en hash, så det finns uppenbart ingen dataintegritet i att bara hasha! Knepet är att man krypterar hashvärdet, och trots att åtskilliga meddelanden signeras med samma värde, så har man ingen aning om vilka de är 25
Standard? ISO (International Standards Organisation) standardiserar uttryckligen inte algoritmer NIST (National Institute for Standards and Technology), som utvecklar standard för USAs federala myndigheter, har tagit fram två algoritmer, DES och AES Många andra välkända algoritmer fungerar som en slags standard 26
Vanliga algoritmer, exempel DES, 40 år gammal symmetrisk med 56-bitars nyckel, fortfarande vanlig men för osäker för högre krav (kort nyckel) Trippel-DES: Kryptera med en DES-nyckel, dekryptera med en annan och kryptera igen, ger effektiv 112-bitarsnyckel och kräver ingen ny utrustning eller processtillägg AES (Rijndael), symmetrisk ny standard, minst 128 bitars nyckel, snabb RSA, vanligaste asymmetriska fortfarande, långsam Elliptiska kurvor (EEC) snabbare asymmetrisk uppstickare RC4, strömchiffer MD5 och SHA-familjen, hash-algoritmer (SHA-1 ska ej användas för hög säkerhet längre). 27