Hårddiskkryptering
De flesta minns
säkert ”Skelettkvinnan”, hon som samlade på olagliga människoben och som krypterade sin hårddisk med Truecrypt för att försvåra polisutredningen. Enligt sociala medier var diskarnas kryptering baserade på ett fyrtio tecken långt lösenord. Polisen lyckades aldrig forcera krypteringen.

Samtidigt hör man talas om angrepp, ”cold boot”- angrepp och dma-attacker, där kryptonyckeln enkelt utvinns ur ram-minnet.

Det finns flera frågeställningar som detta ger upphov till. Den viktigaste är: Under vilka förutsättningar kan hårddiskkryptering anses vara säker?

Vi kommer i artikeln gå igenom tre olika system – Truecrypt, Bitlocker och Filevault – och diskutera deras säkerhet. Vi kommer även utföra vissa experiment för att bedöma svårigheten avseende olika typer av sidokanalsangrepp mot hårddiskkrypteringslösningar.

Det finns en uppsjö av produkter för hårddiskkryptering, och alla fungerar på liknande sätt. Den här artikeln handlar inte om att utse en vinnare bland dem, utan att utforska inom vilka ramar diskkryptering kan anses säker.

Bitlocker är Microsofts lösning för hårddiskkryptering, som dels kan kryptera hela hårddiskar och dels användas för att kryptera usb-minnen, ”Bitlocker to go”.

Den första versionen av Bitlocker introducerades i samband med Windows Vista år 2007. Lösningen bygger sin kryptering på att datorn har ett fungerande tpm-chip, trusted platform module, där krypteringsnycklarna lagras och hämtas när datorn startas.

Filevault är Apples variant, men den är helt mjukvarubaserad. I den bygger krypteringen i stället på användarens inloggningslösenord.

Eftersom många misstror både Bitlocker och Filevault har Truecrypt lyfts fram som ett säkert alternativ. Det var länge känt som den bästa programvaran för kryptering, med ett stort urval av krypteringsalgoritmer, öppen källkod och flertal krypteringsalternativ. Men historien om Truecrypt fick ett abrupt slut i början av sommaren 2014 då utvecklarna valde att inte längre utveckla programvaran. Vad som ledde till nedläggningen är ännu inte känt. I den här artikeln använder vi dock Truecrypt som referens vid olika typer av angrepp – vi har tidigare testat liknande angrepp mot Truecrypt och vet att de fungerar mot den mjukvaran.

Det finns i huvudsak tre typer av angrepp för att utvinna krypteringsnyckeln från hårddiskkryptot.

Det första fallet bygger på att en brute forceattack genomförs. Den här typen av angrepp kan göras då krypteringen är helt mjukvarubaserad. Angriparen letar då efter den sträng där kryptonyckeln är lagrad och försöker sedan forcera kryptosystemet genom att gissa det användarvalda lösenordet.

Det spelar ingen roll på vilket sätt nyckeln är lagrad. Eftersom det finns en stark länk mellan användarens lösenord och krypteringen kan angriparen hela tiden på något sätt gissa sig till vilket lösenord som valts.

Det enda skyddet i det här fallet är att lösenordet är tillräckligt starkt. För er som undrar hur starka lösenord ska vara – läs vår tidigare artikelserie ”Lösenordens död” (tinytw.se/losendod1).

Det andra angreppsfallet bygger på en strategi som ofta förekommer vid forensiska utredningar av krypterade diskar; en så kallad ”boot-attack”. Det är ett angrepp där ett körande system som befinner sig i ett låst läge stängs ner, för att sedan startas upp med ett annat operativsystem från ett externt medium, till exempel ett usb-minne eller cd-skiva. Ram-minnet kan därefter extraheras och analyseras för att hitta viktig information, till exempel krypteringsnycklar.

Problemet är att ram-minnet bara lagrar information medan minnet är strömsatt – när enheten stängs av försvinner informationen gradvis och snabbt från minnet. Lösningen kom i form av en upptäckt där ram-minnen analyserades vid olika temperaturer för att se hur fort data förloras. Resultatet visade att ett nerkylt ram-minne bevarade data mycket längre tid än vad ett ram-minne vid arbetstemperatur gör, och från den upptäckten utvecklades så kallade ”cold boot”-angreppet.

Det innebär att om personen stänger av datorn i samband med en räd kan kryptonyckeln räddas om minnet kyls ned. En enklare variant av cold bootattack är så kallade warm boot-attacker, där datorn gått ned i sömnläge. Ram-minnet är då fortfarande strömsatt eller lagrat i klartext på annan del av hårddisken.

Den tredje angreppstypen är en så kallad dma-attack, där nyckeln utvinns ur en körande dator. En variant av dma-attacker är de som utförs via firewire-porten, alltså Apples svar på usb. Firewire har ett välkänt problem som tillåter en användare att utvinna de första fyra gigabyten av ram-minnet på en maskin. Angreppet har sin grund i hur Firewire-tekniken är uppbyggd.

När en enhet kontaktar en dator via en firewireport optimeras läs- och skrivhastigheter genom att enheten får direkt tillgång till datorns interna buss via dma-kontrollern, och därmed också kontroll över huvudminnet på datorn. Skulle en angripare ansluta en preparerad enhet till Firewire-porten går det att utvinna information och även skriva in ny information i ram-minnet.

Firewire-standarden är inte ensam om detta problem – samma svaghet finns bland annat även för Expresscard och i Apples senare version av Firewire, Thunderbolt.

Cold boot och warm boot i praktiken

nerkylt ram-minne
I ett nerkylt ram-minne degraderas data mycket långsammare än i ett minne i arbetstemperatur. Vi kyler ram-minnet till uppskattningsvis minus 30 grader Celsius med hjälp av vanlig kylspray.

Eftersom Truecrypt är den mest väldokumenterade programvaran testade vi den först, för att få ett bevis på att metoderna fungerar.

Vi började enkelt. Till att börja med krypterades måldatorn med Truecrypt där fulldiskkrypterings-alternativet valdes. Alla standardinställningar användes och aes valdes som krypteringsalgoritm. Verktyget Scraper installerades därefter på ett usb-minne – det används vid ett senare skede för att skapa en kopia av ram-minnet.

För att säkerställa att vår labbuppställning fungerade började vi med en warm boot-attack. Först startade vi datorn och matade in lösenordet för Truecrypt så att krypteringsnycklarna sparades ned i ram-minnet.

Därefter startades datorn om så att starten gjordes på usb-minnet, det med Scraper. Verktyget påbörjade då automatiskt en utvinning av ram-minnet och sparade ner avbilder av detta på usb-minnet. Avbildningen laddades sedan ned i en fristående dator där den kunde genomsökas efter nycklar. För detta ändamål användes verktyget Aeskeyfind. Det funkade utan problem.

Sedan gjorde vi om förfarandet som en cold boot-attack: Minnet kyldes ned med kylspray, lyftes ur datorn under en viss period, och sattes sedan tillbaka igen. Vi testade intervallen 2 minuter, 5 minuter och 10 minuter då minneskretsen var utanför datorn.

Vid test med Truecrypt kunde nycklarna hittas när datorn var avstängd i tjugo sekunder (alltså warm boot), när ramminnet var utlyft, alltså garanterat strömlöst, i både två och fem minuter.

När vi testade att låta ram-minnet vara strömlöst i 10 minuter kunde vi inte återskapa nycklarna. Det innebär att en angripare kan ha tid på sig att plocka ut ett ram-minne från en dator till sin egen dator för analys.

Det är viktigt att ha i åtanke att resultat kan variera beroende på flera faktorer. Saker som modell av ramminnet, temperatur och ren tur kan påverka vilken information som kan utvinnas ram-minnet.

För Bitlocker används i princip samma uppsättning av verktyg för utvinning av nycklar som vid Truecrypttesterna. Standardförfarandet följdes vid vår installation av Bitlocker, det vill säga utan att använda tpm-relaterade funktioner som till exempel pin-on-boot. Därefter startades datorn upp till skärmlåsläget, vilket innebär att tpm lämnat av kryptonycklarna till ram-minnet, innan datorn stängdes av och statades via usb-stickan för att dumpa ram-minnet.

Aeskeyfind fungerade inte, men nycklarna kunde återfinnas med programmet Elcomsoft Forensic Disc Decryptor.

Inga tester utfördes på Filevault, men det är värt att veta att dessa angrepp bör fungera lika bra på en Mac-enhet. Apples Filevault är liksom Truecrypt helt mjukvarubaserad. Kryptonyckeln är hårt länkad till användarens lösenord som används vid inloggning till Macen. Om flera personer använder samma Mac så är det svagaste lösenordet som dimensionerar krypteringens säkerhet. Med andra ord bör inloggningslösenordet vara likt rekommendationerna för Truecrypt, alltså mycket långt.

Använd kryptering på rätt sätt Det finns ett antal inställningar som kan utföras för att ytterligare öka säkerheten och minska oddsen att hårddisken blir ofrivilligt dekrypterad.

För Truecrypt finns alternativet att använda en så kallad kaskadkryptering, där två eller flera algoritmer används för att kryptera hårddisken. Vi hittade inga verktyg som kunde dekryptera hårddiskar där kaskadkryptering användes. Kaskadkryptering av krypton gör angreppen mer arbetskrävande, men inte svårare – det är fler nycklar som ska utvinnas och fler algoritmer som ska tillämpas. Även risken för falsk positiv vid utvinning av nycklarna från ramminnet måste läggas till.

Att investera i en dator med ett tpm-chip kan också vara en bra idé, eftersom angreppen innebär manipulering av startsektorer eller om man vill skydda en avstängd dator. Det innebär dock att funktionen pin-on-boot måste användas, och att alla varianter av sömnlägen och energisparlägen måste deaktiveras. Användaren måste själv aktivera pin-onboot.

Tyvärr har varken Truecrypt eller Filevault stöd för att använda ett tpm-chip, men Bitlocker stöder alla tpm-chip som är version 1.2 eller senare. Men Bitlocker används primärt för att skydda mot skadlig kod, och inte mot ofrivillig insyn.

Firewire-angrepp i praktiken

Firewire-uttaget
Datorerna är sammankopplade via Firewire-uttaget på den angripna datorn. Enheten till höger kör programmet Inception, avsett för att utföra dma-angrepp av olika slag.

För att utföra ett Firewire-angrepp kopplas två datorer ihop via Firewire-porten. Angriparen utnyttjar sedan principen att en enhet kopplad i en Firewire-port har full tillgång till de fyra första gigabyten i datorns ram-minne, och kör en programvara för att skapa en avbild av detta.

Angreppet kräver att måldatorn är i gång och har krypteringen aktiverad, alltså att kryptonyckeln är lagrad i ram-minnet.

Vårt testangrepp genomfördes med hjälp av programmet Inception, som dels kopierar minnet, dels manipulerar det. I vårt fall var vi dock tvungna att logga in på själva klienten, det räckte inte med inloggningsskärmen. Anledningen är att måldatorn körde Windows 8.1, vilket har en inbyggd säkerhetsfunktion som stänger av Firewire-portar när en användare inte är inloggad. Alla Windows-operativsystem före Windows 8.1 är dock sårbara för ett Firewire-angrepp, även när en användare inte är inloggad.

Under våra tester påträffades samma Truecrypt-nycklar i den ram-avbildning som vi fick ut ur Inception som vid boot-angreppen. Även för Bitlocker kunde nycklarna utvinnas. För att verifiera att de fungerade skapades en avbild av hårddisken som sedan dekrypterades med Elcomsoft Forensic Disc Decryptor.

Så fungerar tpm

TPM-krets
Tpm-kretsen kan delas in i tre delar: Minnesarea, kryptodel och funktionsdel – inte olikt ett smart kort alltså. Minnesarean innehåller dels en generisk skyddad yta, dels pcr. De kryptofunktioner som minst ska finnas är rsa, sha-1 och en slumptalsgenerator (rng, random number generator). Funktionsdelen innehåller en exekveringsdel som exekverar anrop och interna beräkningar. Tpmkretsen har även egen kod och konfigurationsdata lagrat i sig.

Själva tpm-kretsen består av flera komponenter. I/o-komponenten hanterar alla in- och utdata till och från kretsen, och åtkomstkontrollen till denna. Standarden kräver att själva kryptoprocessorn som minst ska bestå av en slumptalsgenerator, sha-1-motor, rsa-nyckelgenereringsmodul och rsa-motor.

Det är viktigt att notera att tpm inte är en kryptoaccelerator som underlättar datorns kryptooperationer, utan endast handhar nyckelhanteringen.

Alla nycklar som genereras av tpm måste vara minst 2 048 bitar.

Värt att nämna är att slumptalsgeneratorn inte är en äkta hårdvaruslumptalsgenerator som mäter brus direkt och tar samplingar från bruset, utan att den fungerar på samma premisser som en vanlig pseudoslumptalsgenerator i mjukvara som samlar in slumpdata från maskinen och använder dem som ett frö i en matematisk algoritm. En äkta hårdvaruslumptalsgenerator har troligen betraktats som för dyrt i detta sammanhang.

Komponenten pcr (platform configuration registers) består av ett antal 160-bitars lagringsboxar. Det ska finnas minst sexton stycken sådana enligt specifikationen. De är skapade för att lagra hashsummor som genererats i samband med aktiveringen av tpm.

Vid aktiveringen av tpm läser tpm-kretsen av olika delar av hårdvara och mjukvara – bios-kod, moderkortets konfiguration, ipl/mbr (initial program loader/master boot record), Ipl/mbrkonfiguration, uppstartssektor, uppstartsblock och uppstartshanteraren – som den sedan skapar hashsummor av och lagrar i respektive pcr. Hashsummorna används sedan för att skapa en säker inladdning av operativsystemet.


Jämförande tabell
 

tabell (klicka på bilden för att förstora den)


TechWorlds slutsats

Hårddiskkryptering är ett alternativ som i grund och botten kan vara väldigt säker, men som vi har visat i den här artikeln finns det attacker som fungera effektivt för att dekryptera hårddiskar. Angreppen är alla baserade på att användaren inte förstår i vilka sammanhang krypteringen ger ett skydd. Skulle du själv bestämma dig att ta steget och kryptera din hårddisk, se då till att du vet vad för risker som finns och hur du bäst undviker dem.

Fakta

  • Var varsam med hur viloläge och energisparläge används. Om du vet att datorn kommer att stå tillgänglig för andra bör du överväga att stänga av datorn när du inte använder den. Krypteringsnycklarna bevaras fortfarande i ramminnet när datorn är i viloläge. Deaktivera därför alla möjliga vilolägen och energisparlägen.
 
  • Använd starka lösenord. Det spelar ingen roll hur bra algoritm du använder om ditt lösenord kan gissas fram. Truecrypt rekommenderade ett lösenord på minst 24 tecken.
 
  • Pin-on-boot. En hårddisk som är krypterad med Bitlocker och inte har pin-on-boot aktiverad är speciellt sårbar mot cold boot-angrepp eftersom en angripare bara behöver starta datorn för att nycklarna ska lagras i ram-minnet. För tidigare Windowsversioner än Windows 8.1 räcker det för en angripare att koppla in sig via en firewire-port för att dumpa ram-minnet. Pin-on-boot får datorn att fungera som ett smart kort där nycklarna är inlåsta på tpm-chipet när datorn inte används. Operativsystemet kan därför inte startas förrän pin för tpm har angivits.
  • Deaktivera Firewire, Cardbus och Thunderbolt. Om man deaktiverar denna typ av portar är det svårare att genomföra dma-angrepp. Sådana angrepp kan fortfarande göras via pci-bussen eller andra bus-gränssnitt, men inte via usb. Deaktivering görs bäst i bios, om den möjligheten finns. Glöm inte att också passordsskydda bios.

tinytw.se/svikeraldrig – ”Minnet sviker aldrig – Att utnyttja volatil data i krypterade system”, Peter Hildebloms examensarbete (pdf).

tinytw.se/aeskeyfind – Aeskeyfind är ett simpelt program vars enda syfte är att hitta scheman som liknar aes-nycklar i filer.

tinytw.se/scraper – Scraper är ett verktyg för att på ett så smidigt sätt som möjligt utvinna ram-minnets innehåll.

tinytw.se/efdd – Elcomsoft Forensic Disc Decryptor är ett program för dekryptera med hjälp av nycklar utvunna ur ram-minnet.

tinytw.se/incep – Inception är ett av de mest välanvända verktygen för dma-angrepp. Det fungerar mot vilken dator som helst med en dma-kompatibel port.