Mystiskt om avkryptering

TL;DR I veckan gick polisen ut med klagomål om att de har problem med att avlyssna krypterade samtal via internet, som Skype och Viber. Informationen var dock knapphändig vilket ledde till spekulationer på twitter. Går det verkligen att avlyssna Skype? I så fall, hur?

Utveckling (för de som orkar läsa)

Läs/lyssna först på följande två radioinslag för att få ett hum om vad det handlar om.

I första inslaget fastnade jag för:

Anna Björkegren på polisens IT-brottsektion vill inte berätta exakt vilka möjligheter polisen har, men ett alternativ skulle kunna vara att helt enkelt placera en mikrofon i rummet där datorn står. Då handlar det i stället om hemlig rumsavlyssning, eller buggning.

Ekot har också sökt efter domar där avlyssnade Skype-samtal använts som bevisning, men inte hittat några. Däremot finns domar […] där textchattar från Skype eller så kallade skärmdumpar, stillbilder från videosamtal, funnits kvar i datorerna och i stället kunnat användas som bevis.

I andra inslaget kom lite mer information:

Sen 2012 har polisen möjlighet att avlyssna elektronisk kommunikation och inte bara utföra traditionell telefonavlyssning. Men när det gäller olika IP-telefonitjänster, som Skype eller Viber, så ställer krypteringen av tjänsterna till det.

– Vi har inte lagstöd för att använda den typ av programvara som behövs för att avkryptera den, säger Anna Björkegren, vid IT-brottssektionen på polisens nationella operativa avdelning.

Vän av ordning fastnar för den (av mig) fetmarkerade meningen ovan. Går det att ”avkryptera” Skype? … ?? … ??! Det borde väl inte gå! Till och med en person som bara läst en grundkurs om kryptering på högskolan kan skriva ett enkelt kommunikationsprogram som inte går att dekryptera. Inte via attacken brute force i alla fall*.

Attackerna som beskrivs i faktarutan längst ner är enkla att undvika och t.o.m. vår tänkta högskolestudent borde klara av det. Därför förutsätter jag att även Skype har fixat detta. Skype som ju ursprungligen skapades av geniet Zennström och hans vänner.

Vidare borde det i så fall finnas någon annan metod som polisen kan avlyssna Skype med (men i dagsläget saknar lagstöd för). Metoden (eller gränsytan) som används kallas med tekniska termer för en attackvektor. Så låt oss lista några sådana.

Mikrofon i samma rum som datorn

Detta är egentligen inte en attackvektor mot Skype utan en attack mot själva samtalet, utanför Skype. Björkegren nämnde uttryckligen den här vektorn så det lär garanterat vara ett av alternativen på bordet. Men andra inslaget antyder att det finns fler alternativ.

Resten av denna bloggpost blir av naturliga skäl enbart spekulationer. Jag har ingen aning om vad polisen tänkt använda sig av. Men några alternativ jag kan fantisera fram är:

Statstrojan

I Tyskland avslöjade gruppen CCC 2011 att den tyska polisen – trots att det förklarades olagligt enligt domstolsbeslut redan 2008 – använt sig av en trojan (ett slags malware, elak programvara) för att infektera misstänktas datorer och spana på dem via deras egna datorer. Inom hackerkretsar kallas denna typ av programvara RAT. Sedan dess har myndigheter börjat formalisera denna typ av användande av elak programvara under namnet Lawful Interception (LI). Är det möjligen offensiv infektion av misstänktas datorer som Björkegren syftar på? Detta är inte lagligt i Sverige … än, men det är inte omöjligt att minister Ygeman, på sitt lite smygiga sätt, vill ändra lagstiftningen.

Arbetsnamnet för trojanen innan den godkändes av myndigheterna i Tyskland var för övrigt ”Bundestrojan” (Förbundstrojan, eng. Federal trojan) och den tekniska termen var ”källavlyssning” (Quellen-TKÜ). Federal/förbund syftar här på att Tyskland är en förbundsrepublik. En trojan som spänner över hela EU skulle istället kunna kallas något med prefixet pan- istället, om man följer samma terminologi (alternativt prefixet euro- eller bara eu-, tänk ”EUROglider”, ”Pan Europe Observation” eller ”EU-pervision”).

Lite lustigt är för övrigt att enheten inom svenska militären som är tänkt att i framtiden skydda landet mot cyber-attacker (samt numera även inriktar sig på ”offensiva förmågor”) valt en trojansk hjälm som logotyp 😉

Forensik

Eller vad det nu heter på svenska. Det innebär att polisen stormar in – oftast under vargtimmen – och beslagtar alla datorer hos den misstänkta (exempel). Sen plockas lagringsmedia ut ur datorn (hårddiskar, SSD m.m.) och stoppas försiktigt in i specialutrustning som försöker att undersöka diskarna utan att förstöra någon information på dem. Men forensik nämns ju i det första inslaget som något som polisen redan använder sig av. Så det måste vara någon annan vektor Björkegren syftar på. Vad kan det vara?

Mystiskt patent från Microsoft

Signaturen blaufish_ på twitter postade en länk till ett patent som Microsoft ansökte om strax efter att de köpte upp Skype från Zennström & Co. Patentet handlar om något som MS kallar Legal Intercept (inte helt olikt det etablerade begreppet Lawful Interception). Läs artikeln för mera information, men om MS sedan artikeln skrevs (2011) har beviljats patentet är det inte omöjligt att svenska myndigheter vill ha en väg in via LI för att avlyssna Skypesamtal.

Det finns några till vektorer man kan tänka sig, som t.ex. att att koppla in sig på Core Audio i OS X eller ALSA i Linux för att avlyssna ljudet innan/efter det kodats/avkodats av Skype-klienten. Men detta är bara varianter av vad en RAT-trojan skulle kunna göra så det räknar jag in i kategorin ”Statstrojan”.

Blaufish nämnde också en evil maid attack där man knäcker själva krypteringen i Skype genom att besöka klienten några gånger när den befinner sig i olika tillstånd (hur funkar det här egentligen?). Även detta skulle jag räkna in i kategorin Statstrojan.

Avslutning

Hur som helst så är det här bara spekulationer. Fortsättning följer. Under tiden vore det intressant om några läsare kunde hitta på fler alternativ och posta som kommentarer till den här bloggposten. Det spelar ingen roll om de är sannolika eller ej.

En sak jag kom att tänka på när jag skrev det här var F-Secures Mikko Hyppönen. Han nämnde i hans första TED-talk ett intressant dilemma. Hur ska egentligen anti-virus agera när de träffar på en ”Statstrojan”. Ska de larma eller ska de tyst släppa igenom den? Vad tycker ni?

* Faktaruta brute force. Läs endast det här om du verkligen är intresserad. Brute force betyder att gå igenom alla tänkbara kombinationer av nyckeln (aka nyckelrymden). Om nyckeln är 64 bitar lång finns det 2 upphöjt till 64 kombinationer av ettor och nollor som nyckeln kan bestå av. Det är för mycket för att en vanlig PC ska orka räkna igenom inom rimlig tid. Däremot kan ett kluster av några tusen datorer klara av det, eller en superdator hos, låt säga FRA eller NSA. Men om nyckellängden ökas till c:a 90 bitar förmodas inte ens de klara av det (källa: Dan Boneh, Coursera Crypto I). Så en AES nyckel som är 128 bitar lång uppskattas i nuläget vara säker mot en brute force attack från både privatpersoner och världens mest avancerade myndigheter.

Moores lag säger att datorkraften fördubblas ungefär var 18:de månad. Om vi avrundar kan vi säga ungefär vart annat år (framtiden är ändå osäker så vi vet inte exakt). För varje bit som läggs till nyckeln fördubblas antalet kombinationer. Så om 50 år behövs teoretiskt en c:a 25 bitar längre nyckel för att vara säker mot en brute force attack än vad som behövs idag. Alltså ungefär 128 bitar (med lite marginal för oväntad teknikutveckling). Det betyder att AES 128 kommer vara brute-force-säkert mot myndigheter som NSA även om 50 år. Om 100 år däremot börjar det bli tveksamt. Då är det bäst att uppgradera till en längre nyckel, t.ex. AES 256 (eller någon ny standard, som rimligtvis borde kommit till vid det laget).

Allt det här är förutsatt att attacken måste söka igenom alla kombinationer i nyckelrymden. Då och då kommer dock attacker som knipsar av delar av nyckelrymden på grund av svagheter i algoritmerna och därmed minskar antalet iterationer som behövs. Exakt vilka sådana attacker som kommer upptäckas i framtiden är svårt att förutsäga.

Om en kvantdator – mot förmodan – skulle kunna byggas om några år så kommer dessa siffror reduceras till roten ur nuvarande värde (Grovers algoritm). En AES 128 kommer alltså ta 2 upphöjt till 128/2 iterationer = 2 upphöjt till 64. AES 256 tar då 2 upphöjt till 128 iterationer, och det kom vi ju fram till var säkert. Kontentan är alltså att AES 256 till och med är säkert om en kvantdator, hypotetiskt, kommer uppfinnas i framtiden. Till och med AES 128 skulle bli jobbigt för kvantdatorn att knäcka. Däremot blir public key kryptering som förlitar sig på svårigheten att faktorisera stora tal till primtalsfaktorer – exempelvis RSA – helt osäkra om en kvantdator uppfinns (pga Shors algoritm).

En annan attack kan ske mot svagheter i implementationen. Exempelvis baseras RSA på ett stort känt tal N som är produkten av två hemliga primtal, p och q. Säkerheten i RSA försämras om p och q väljs på ett osäkert sätt. Exempelvis kan de vara för nära varandra, (i storleksordningen roten ur N), då blir det relativt enkelt att hitta p och q (kolla om det finns något primtal i närheten av roten ur N som är jämt delbart med N, om avståndet från roten ur N är tillräckligt litet går det blixtsnabbt att hitta faktorerna, även med en billig laptop).

Eller så kan flera olika N ha valts (till olika nycklar) med en gemensam faktor p eller q, då kan algoritmen GCD användas för att hitta den gemensamma faktorn mellan två olika N (från två olika nycklar) och säkerheten försvinner ut genom fönstret (om man hittar p kan ju q beräknas som N/p).

Överkursfaktaruta om slumptal

Ett tredje fel är att slumptalet till nyckeln valts med en dålig slumptalsgenerator. Då kan en attack genomföras som gissar värden från slumptalsgeneratorn och härmar beräkningarna fram till valet av p och q. En dålig slumptalsgenerator kan begränsa stora delar av nyckelrymden, vilket kan möjliggöra en brute force attack mot resten av nyckelrymden. Denna attack kan genomföras mot många olika typer av krypton. Dåliga slumptal är katastrofalt för säkerheten i ett kryptosystem.

Ett vanligt nybörjarfel av det här slaget är att använda time(NULL) som huvudkälla till slumptalet i implementationen. Det returnerar en tid på sekundnivå. Det är inget bra slumptal för det finns bara några miljoner sekunder per år… En nyckelrymd måste vara mycket, mycket, mycket större än så för att vara säker mot brute force (hur mycket slump det finns i slumptalsgeneratorn kallas för övrigt för entropi och det är ett hett forskningsämne som det skrivits många och långa böcker om). Dessutom kanske det via annan information går att gissa ungefär tidpunkten för när funktionen time(NULL) anropades vilket ytterligare begränsar nyckelrymden.

Ett bättre sätt är att använda en daemon som samlar in slump från många olika källor i datorn och hela tiden uppskattar hur mycket entropi det finns i den s.k. entropipoolen. Se t.ex. Fortuna (det finns många fler).

För tillämpningar som kräver extrem säkerhet brukar speciella externa slumptalsgeneratorer – som t.ex. kan baseras på fysikaliska processer som sönderfall av atomer – användas för att mata entropipoolen. Nya CPU:er från Intel har t.ex. internt stöd för att mata entropipoolen via instruktionen rdrand (men man ska så klart använda många källor till poolen, inte bara den från rdrand). I Linux försöker kärnan administrera en egen entropipool och man kan plocka ut slumpdata från den via /dev/urandom (eller /dev/random, som dock kan blockera om den tycker det finns för lite entropi i poolen och därför inte bör användas om blockering på obestämd tid är ett problem). Om man inte litar på Linux entropipool kan man ändå använda /dev/urandom som en entropikälla och kombinera den med egna källor i sin applikation (exempelvis brus från ljudkortet, interrupträknare m.m.). Tekniskt kan det här t.ex. ske med hjälp av en hashfunktion för att få källdata in till poolen till en lagom längd och xor för att kombinera data från olika källor (xor och xnor är de enda logiska bitoperationerna som inte förstör slumpdata vid kombination mellan flera källor, resultatet kan då aldrig få sämre entropi än den bästa källan in till xor-operationen).

Annonser

Om albertveli

Grävande programmerare.
Det här inlägget postades i Dingding, humor, konspiration, Krypto, Matematik, Säkerhet. Bokmärk permalänken.

2 kommentarer till Mystiskt om avkryptering

  1. ”Skype’s encryption is inherent in the Skype Protocol and is transparent to callers. Skype is not considered to be a secure VoIP system and the calls made over the network are routinely monitored by Microsoft and by Government agencies” Från: http://en.wikipedia.org/wiki/Skype_security

  2. albertveli skriver:

    Intressant Anders. Jag hade missat den här wikipediasidan. Framför allt är en av länkarna bland källorna längst ner intressant: http://www.theguardian.com/world/2013/jul/11/microsoft-nsa-collaboration-user-data

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s