BitLocker : Hoe werkt het en is het veilig? Luuk van de Wiel - 4088212
[email protected] 17 juni 2015 Samenvatting BitLocker is Microsoft’s encryptiesoftware voor gegevensstationsversleuteling. In deze paper wordt onder de loep genomen hoe BitLocker technisch in elkaar zit. Ook worden zaken die de wenkbrauwen van menig cryptoexpert doen fronsen besproken. Dit loopt over in de aanvallen die mogelijk zijn op BitLocker, waaruit blijkt dat BitLocker absoluut geen waterdicht systeem is, al zijn de lekken niet mega groot waardoor de gemiddelde gebruiker zeker profijt kan hebben bij het gebruik van BitLocker.
1 1.1
Inleiding Algemene informatie
BitLocker is een encryptieproduct van Microsoft dat hele gegevensstations versleutelt. Het werd voor het eerst gebruikt in Windows Vista. In tegenstelling tot EFS (Encrypting File System) versleutel je niet afzonderlijke bestanden, maar een heel station. Dit kan je versleutelen met een wachtwoord, al zijn er andere methoden die later aan bod komen. Zo’n station kan een station zijn waar Windows op staat, of een ander station. In het geval dat een gebruiker een station met Windows erop versleutelt, is er eerst authenticatie nodig alvorens hij de computer op kan starten. In andere gevallen is authenticatie pas nodig op het moment dat toegang gezocht wordt tot een gegevensstation. Het is ook mogelijk om verwisselbare gegevensstations (zoals USB-sticks) hiermee te vergrendelen, zoals Microsoft aangeeft. Al deze functies zitten alleen in de duurdere versies van Windows, zoals Windows 7 Ultimate en Windows 8.1 Pro. Als een gebruiker nieuwe bestanden toevoegt aan een station dat vergrendeld is met BitLocker, dan worden deze automatisch versleuteld. Verplaatst een gebruiker een bestand van een vergrendeld station naar een nietvergrendeld station, dan wordt het ontsleuteld. Soortgelijke encryptieproducten zijn TrueCrypt, diens opvolger VeraCrypt en Apple’s FileVault.
1.2
Waarom is het nodig?
Zoals aangegeven in Ferguson [2006] is BitLocker speciaal bedoeld voor verloren laptops. Natuurlijk werkt het ook voor gestolen of gevonden harddisks/USB-sticks, het principe blijft hetzelfde. Op een harde schijf kan veel gevoelige informatie staan, die in de handen van journalisten of concurrenten erg veel waard kan zijn. Om te voorkomen dat indringers aan de informatie kunnen komen, wordt BitLocker gebruikt. Zonder BitLocker is het vrij simpel om een schijf uit een laptop te halen en je er toegang tot te verschaffen, of zelfs een scriptje op een laptop te laten draaien waardoor het administratorwachtwoord gereset wordt en een aanvaller toegang kan krijgen.
2
Hoe werkt het?
Eerst wordt er wat uitgelegd over de modi waarin BitLocker kan werken. Daarna wordt de beveiliging uitgelegd hoe het was bij de lancering van Windows Vista.
1
BitLocker kan gebruik maken van een zogenaamde Trusted Platform Module (TPM). Dit is een veilig chipje met een crypto-processor die beveiligde informatie kan opslaan. TPM wordt in alle versies van BitLocker ondersteund, al heeft een gebruiker natuurlijk wel een TPM-chip nodig. Naast het opslaan van sleutels in TPM is het ook mogelijk om sleutels (deels) op te slaan op een USB-stick.
2.1
Oorspronkelijke werking
Een volledige technische weergave wordt gegeven in Kumar and Kumar [2008], maar is te groot voor dit werk. De weergave die hier gegeven wordt is ook volledig, maar gaat minder in op hoe de schijfbits veranderen door de encryptie. De cryptografische stappen worden natuurlijk wel behandeld. BitLocker had toentertijd een paar verschillende operatiemodi. Deze zijn volgens Kumar and Kumar [2008] : • Sleutel wordt op een USB-stick opgeslagen. • Sleutel wordt in de TPM opgeslagen. • Sleutel wordt voor de helft in de TPM en voor de helft op een USB-stick opgeslagen. • Van de twee modes hierboven zijn nog twee extra varianten, namelijk varianten waarbij een gebruikersspecifieke PIN (wachtwoord) nodig is. BitLocker gebruikt het AES-algoritme in Cipher Block Chaining (CBC) mode. CBC is een encryptiemode waarbij elk blok plaintekst geXORred wordt met het vorige blok ciphertekst voordat het wordt ge¨encrypt. Deze CBC wordt niet over een heel station gebruikt (anders heb je een groot probleem bij ´e´en disk error), maar per individuele schijfsector. Van AES kan zowel de 128-bits als 256-bits variant gebruikt worden. Op beide varianten is het mogelijk de Elephant Diffuser te gebruiken. Deze Elephant Diffuser zorgt voor extra stationsbeveiliging die niet wordt gegeven door AES. Over de diffuser volgt later meer. In feite is dit alles waar BitLocker op neerkomt.
2.2
Versleutelproces
Figuur 1: Versleutelproces, deels overgenomen uit Ferguson [2006] Zoals Ferguson [2006] beschrijft, komt het hele proces neer op het XORren van de plaintext met een sector key, het dan door twee diffusers (de Elephant Diffuser) laten rollen en uiteindelijk via AES in CBC mode encrypten. De AES-component en de algemene sector key zijn onafhankelijk van elkaar en zijn beide 128 bits of 256 bits. Bij elkaar wordt dit 512 bits, waarvan mogelijk 256 bits niet gebruikt worden (indien de beide keys 128 bits zijn). De grootte van de blokken die versleuteld worden zijn tussen 4096 en 65536 bits (512, 1024, 2048, 4096, of 8192 bytes).
2
2.2.1
Sector Key
Zoals verwacht is de sector key alleen afhankelijk van de sector. Ter verduidelijking: de sector is het huidige blok wat versleuteld wordt. Om deze te berekenen wordt E(Ksec , e(s)) uitgerekend. Ksec is de algemene sector key. De algemene sector key is anders dan de sector key van een blok. E() is de gewone AES-encryptiefunctie en e() is een functie die elk sector nummer mapt naar een unieke 16 byte waarde. Deze functie hangt dus totaal niet af van de data, maar alleen van het sector nummer en de sleutel. De e() is bij BitLocker een hele simpele functie die als eerste 8 bytes de byte offset van de sector op de schijf pakt, en er 8 nullen achter plakt. Deze uitkomst wordt twee keer herhaald en de allerlaatste byte wordt op 128 gezet. Resulterend hebben we een Sector Key van 256 of 512 bits. Deze wordt net zovaak herhaald als de grootte van een blok en wordt met de plaintekst geXORred.
2.2.2
Diffusers
Na de Sector Key stap zijn de A en B Diffusers aan de beurt. Deze twee Diffusers zijn bijna hetzelfde, maar er is een klein verschil. De A Diffuser komt als eerste. Deze krijgt sectordata als een array van 32-bit waardes. Een sector heeft d aantal waardes, van d0 t’m dn−1 . Er wordt modulo n gerekend, aangezien waardes anders buiten de array kunnen vallen. Nu komt er een loop, die van 0 tot n ∗ A gaat. A is een waarde die experimenteel is vastgesteld op 5, dus alle waardes uit de array worden 5 keer langsgegaan. De decryptiefunctie die nu gebruikt wordt (binnen de loop) is: (a) di ← di + (di−2 ⊕ (di−5 <<< Ri mod 4 )) Deze berekening gebeurt n ∗ A keer. <<< is de links-roteer operatie. De linkerbit van een veld wordt dan rechts geplakt. R(a) is de array [9,0,13,0] waar een waarde uit wordt gepakt. Deze waarde geeft aan hoe vaak de links-roteer operatie uitgevoerd moet worden. De encryptiefunctie is bijna hetzelfde, alleen nu gaat de loop van achter naar voren en wordt de + na di een -. Oftewel: (a) mod 4 ))
di ← di − (di−2 ⊕ (di−5 <<< Ri
De B Diffuser is bijna hetzelfde. De waarde B (de loop gaat van 0 tot n ∗ B) is nu 3, in plaats van 5 bij A. Verder worden in plaats van di−2 en di−5 nu di+2 en di+5 gepakt. Dit resulteert in de decryptiefunctie: (b) mod 4 ))
di ← di + (di+2 ⊕ (di+5 <<< Ri
Deze berekening gebeurt n ∗ B keer. De array R(b) die gebruikt wordt is [0,10,0,25]. Wederom is de encryptiefunctie bijna hetzelfde, en weer gaat de loop van achter naar voren en wordt de + na di een -. De encryptiefunctie in formulevorm is dan: (b) di ← di − (di+2 ⊕ (di+5 <<< Ri mod 4 )) De oplettende lezer ziet dat op plekken waar R(a) een 0 heeft bij R(b) een waarde > 0 staat en andersom. Dit is zodat de A diffuser voor goede diffusie zorgt de ene kant op (de decryptierichting), en de B diffuser de andere kant op (encryptie). De combinatie van deze Diffusers zorgt dus voor een goede diffusie beide kanten op. Fun fact: de naam Elephant Diffuser wordt gebruikt omdat er twee block ciphers bestaan die Bear en Lion heten. Elephant past hier goed tussen qua naam.
2.2.3
AES
Om precies te zijn, is het niet de data verkregen uit de diffusers die meteen door AES wordt gegooid. De functie die wordt berekend voor sector s is: IVs = E(KAES , e(s)) E() is de gewone AES-encryptiefunctie, KAES de gebruikte AES-sleutel en e() dezelfde functie als bij de Sector Key. Deze IV wordt gebruikt om het resultaat van de diffusers (wat oorspronkelijke plaintekst was) te encrypten met AES-CBC. Decryptie is hiervan de inverse. Nu zijn we klaar, en is de schijf versleuteld! 3
3 3.1
Controverse over veiligheid Source code
Door experts wordt BitLocker niet als een goedwerkende, veilige standaard gezien. Een reden hiervoor is dat de source code van BitLocker niet beschikbaar is voor inspectie, zoals Lee [2015] aangeeft. Hierdoor zou het kunnen dat Microsoft backdoors, expres geplaatste veiligheidslekken, heeft geplaatst waardoor overheden of andere groeperingen (NSA?) toegang zouden kunnen krijgen.
3.2
Random nummers
Andere angsten die spelen rondom BitLocker hebben te maken met random nummers. Windows heeft namelijk een algoritme voor willekeurige nummers dat, volgens Lee [2015], al lang bekend staat om potenti¨ele kwetsbaarheden. Zo’n random nummers worden gebruikt voor de generatie van sleutels, en afhankelijk van de gebruikte operatiemodus gebeurt dit samen met het wachtwoord dat de gebruiker opgeeft. Het blijkt dat zo’n algoritme van Microsoft zeer waarschijnlijk een backdoor heeft ingebouwd door de NSA. Om precies te zijn, dit algoritme maakt gebruik van een door N.I.S.T (National Institute of Standards and Technology) goedgekeurde standaard (Dual EC DRBG). Of Microsoft dit wist bij het gebruiken van het algoritme in Windows of niet, dat blijft een vraag. Feit is wel dat, volgens Microsoft, dit algoritme tegenwoordig nog wel in Windows zit, maar normaal gesproken niet wordt gebruikt. Het standaard-algoritme in Windows is CTR DRBG, dat ook in BitLocker gebruikt wordt. Dit algoritme zou veilig moeten zijn en geen backdoor van de NSA hebben. Het lijkt erop dat de sleutelgeneratie dus totaal veilig gebeurt.
3.3
Elephant Diffuser weggehaald
In het paper van Ferguson [2006] wordt gezegd dat de Elephant Diffuser extra veiligheid geeft aan schijfencryptie die door normale AES-CBC niet geleverd wordt. Er wordt gezegd dat zelfs als de Diffuser gebroken wordt, er altijd nog de AES-CBC encryptie is om op terug te vallen. De enige taak van de Diffuser is om manipulatieaanvallen n´ og lastiger te maken. Een manipulatie-aanval is een aanval waarbij data veranderd wordt. Dit kan bijvoorbeeld gedaan worden door met dezelfde harde schijf via een andere partitie een ander OS te starten. De data van de ge¨encrypte partitie wordt door BitLocker ge¨encrypt opgeslagen waardoor het niet als plaintekst te lezen is. Wel kan een aanvaller de ciphertekst aanpassen om zo te proberen een zwakte te zoeken. Juist voor dit stuk wordt de diffuser gebruikt. De aanvaller kan nog steeds data veranderen, maar hij heeft dan namelijk niet de volledige controle over de aanpassingen die hij maakt, aangezien door de diffuser waardes ”door elkaar” komen te staan. Maar wat is er nou vanaf Windows 8 gebeurd? Microsoft heeft de diffuser weggehaald! En dat terwijl een Microsoft-werknemer zelf heeft geschreven dat de diffuser een belangrijk onderdeel is van de schijfencryptie. Microsoft heeft volgens Lee [2015] aangegeven dit gedaan te hebben omdat BitLocker te traag was, waardoor veel gebruikers het niet gebruikten. Ook zou de Elephant Diffuser niet hebben voldaan aan bepaalde standaarden waar bepaalde bedrijven en overheden aan moeten voldoen, waardoor deze groeperingen BitLocker niet mogen gebruiken. BitLocker is hierdoor niet helemaal gebroken, maar de bescherming is minder geworden aangezien manipulatieaanvallen mogelijk worden. Een hacker kan weliswaar niet simpel je gegevens decrypten als hij jouw schijf/laptop steelt, maar hij kan wel data aanpassen zodat malafide code gedraaid wordt zodra jij de computer opstart.
4
Aanvallen
Zoals eerder al gezegd is er de mogelijkheid tot een manipulatie-aanval en lijkt het dat er geen backdoor van de NSA in BitLocker zit. De aanwezigheid van een backdoor van de NSA is hiermee echter niet uitgesloten. Ook is een backdoor van Microsoft zelf mogelijk, aangezien de source code niet open beschikbaar is. Zijn er dan nog andere aanvallen mogelijk?
4
4.1
FireWire
Zo’n soort aanvallen bestaan, volgens B¨ ock [2009]. Hierin wordt een aanval beschreven die gebruikt maakt van FireWire. FireWire is een bustechnologie, die een beetje op USB lijkt. Hiermee is het mogelijk om direct het geheugen van een computer te lezen. Het punt bij BitLocker is nu dat de sleutel voor schijfdecryptie en -encryptie automatisch in het geheugen wordt geladen voordat een gebruiken inlogt. In B¨ock [2009] kon er toegang tot een met BitLocker versleuteld systeem verschaft worden wanneer het systeem op het log-in scherm van Windows was, of wanneer het systeem uit standby modus kwam. Dit lukte zowel in BitLocker met alleen de USB modus als in de modus met TPM + PIN.
4.2
Cold boot en BitUnlocker
Een cold boot is het opstarten van een computer vanuit het uitstaan. Reboots worden hier dus niet onder geteld. Vooral de simpelste modus van BitLocker (degene waarbij alleen maar TPM en geen wachtwoord van de gebruiker wordt gebruikt) schijnt zeer gevoelig te zijn voor het ontfutselen van sleutels uit het geheugen. Microsoft schijnt hiervan op de hoogte te zijn en raad gebruikers aan om een geavanceerdere mode (bijvoorbeeld TPM + PIN + USB) te gebruiken. Een geavanceerdere hack vanuit cold boot is mogelijk, zelfs met een geavanceerde beveiligingsmodus. Dit blijkt uit en wordt uitvoerig beschreven in Halderman et al. [2008]. Hier wordt een externe harde schijf met Linux erop gebruikt. Hier staat een speciale bootloader en driver op zodat BitLocker volumes gebruikt kunnen worden in Linux. Deze hack, genaamd BitUnlocker, werkt als volgt: Eerst moet er de stroom van een draaiend systeem afgehaald worden. Nu moet de USB schijf aangesloten worden, waarna het systeem via de externe schijf gereboot moet worden. BitUnlocker gaat nu automatisch een kopie van het geheugen naar de externe schijf verplaatsen. Het geheugen is bij deze specifieke aanval opgeslagen in DRAM. Deze soort van RAM (en variaties erop) worden tegenwoordig veel gebruikt. Het schijnt dat waardes in dit geheugen niet meteen wegvallen na het uitzetten van een computer, maar dat ze nog een tijdje aanwezig blijven. Zeker bij koeling van het geheugen blijven de waardes nog langer behouden. Nu het geheugen gekopieerd is, kan er een algoritme (keyfind genoemd in deze hack) gedraaid worden om kandidaatsleutels te vinden. Dit zijn er niet mega veel, waardoor uit deze lijst kandidaatsleutels de echte sleutels gevonden kunnen worden door te bruteforcen. Als de goede sleutels zijn gevonden, dan kan de met BitLocker versleutelde schijf door Linux gelezen worden. Deze hack gebeurde 7 jaar terug al, daar duurde dit proces met een laptop met 2GB RAM maar 25 minuten. Het is voor bovengenoemde aanval wel belangrijk dat de computer niet uit staat wanneer een aanvaller erbij komt. Als het scherm van de computer vergrendeld is, of de computer in slaapstand staat (dus legitieme BitLocker decryptie al een keer plaatsgevonden heeft en waarden in het geheugen staan), dan kan op deze manier toegang verkregen worden tot het systeem. Dit verschilt van de simpelste modus, aangezien daar een aanvaller makkelijker toegang kan krijgen, zelfs als de computer al lang uit heeft gestaan. Dit is, zoals gezegd, omdat de sleutel automatisch in het geheugen geladen wordt. BitLocker is niet het enige systeem dat op deze manier gekraakt werd. Andere manieren, zoals TrueCrypt (alternatief voor BitLocker), FileVault (Apple’s variant op BitLocker) en Loop-AES (on-the-fly schijfencryptie) voor Linux zijn ook op deze manieren gekraakt. Je zou hierdoor kunnen zeggen dat al deze systemen onveilig zijn. Men zou echter ook kunnen zeggen dat deze aanvallen niet mega praktisch zijn (zeker niet met geavanceerde beveiligingsmode en een oplettende gebruiker die zijn laptop / computer uitzet in plaats van op schermvergrendeling / slaapstand zet). Het feit blijft wel dat er een gat is ondekt in de beveiliging.
4.3
Plausibel herstel
In T¨ urpe et al. [2009] worden nog een aantal aanvallen beschreven. Een aantal hiervan worden hier beschreven. De eerste van deze aanvallen is de plausibele herstel aanval. Hierbij modificeert de aanvaller de BitLocker code op de schijf en voegt een backdoor toe. Deze backdoor kan zo simpel zijn als het laten opslaan van een sleutel. De echte gebruiker zal merken dat dit gebeurd is (aangezien hij een herstel prompt krijgt vanwege aanpassingen in de code). De aanvaller gaat ervan uit dat de gebruiker dit normaal vindt (bijvoorbeeld door zich te vermommen als reparateur) en kan later de sleutel op komen halen en toegang krijgen tot de data. Bij deze aanval is het wel nodig voor de aanvaller om tenminste twee keer aan het systeem te komen. Social engineering en slimmigheden van de aanvaller kunnen hiervoor zorgen, al zijn er best wat aannames nodig waardoor deze aanval niet super 5
praktisch is.
4.4
Spoofed prompt en uitbreidingen
Een variant op de vorige aanval is de spoofed prompt aanval. Het principe is hetzelfde, alleen nu wordt de normale UI of de herstelprocedure nagedaan. Het kan dat een echte gebruiker dit nadoen niet merkt, en zijn geheimen deelt met het gespoofde prompt. Een aanvaller kan nu op meerdere manieren de data naar hem laten stromen. Deze aanval is een situatie die praktisch mogelijk is, maar ook niet erg kritisch is, aangezien hij niet vaak voor lijkt te komen. Een uitbreiding hiervan is de tamper en revert aanval. Hierbij valt de aanvaller het systeem aan met een spoofed prompt aanval, maar nu probeert de aanvaller niet te laten tonen dat het systeem aangepast is. De aanvaller wilt dat het systeem na de spoofed prompt aanval opnieuw opstart en dat de malafide code zichzelf weggooit waardoor het systeem in de status van voor de aanval is. Sleutels die gebruikt worden zijn natuurlijk al wel ergens opgeslagen door de aanvaller. Deze sleutels kan hij weer op verschillende manieren terugsluizen, zoals via WLAN of hij kan de sleutels op het systeem zelf opslaan en ze later verkrijgen.
4.5
Replace and relay
Een interessante hardwarematige aanval is de replace and relay attack. Bij deze aanval vervangt de aanvaller het doelsysteem door een andere computer/laptop die voorbereid is voor de aanval. Op het vervangend systeem worden alle berichten en prompts van het doelsysteem nagemaakt. Vanaf het punt dat BitLocker normaal zou starten, wordt invoer van de gebruiker (via USB of toetsenbord) doorgestuurd naar de aanvaller. De aanvaller heeft nu informatie in zijn bezit om de gestolen computer op te kunnen starten en data te kunnen verkrijgen. Een moeilijkheid hier is dat de aanvaller (of een apparaatje) in de buurt moet blijven van het systeem, omdat de invoer doorgestuurd moet worden. Ook is het lastig om een hele computer of laptop ineens te vervangen door een andere. Wellicht biedt social engineering hier de oplossing voor de aanvaller.
5
Conclusies en aanbevelingen
We hebben gezien hoe BitLocker werkt, welke eigenschappen van het systeem argwaan opwekken bij gebruikers en experts en welke aanvallen ertegen mogelijk zijn. Het mag gezegd worden dat BitLocker er in principe redelijk goed uit ziet qua ontwerp, al zitten hier wel wat haken en ogen aan. Denk aan het beschermd houden van de source code en het weghalen van de Elephant Diffuser. Ook is er een hele waslijst met aanvallen genoemd op BitLocker. Dit zijn wellicht geen hele simpele aanvallen, maar voor de doorgewinterde hacker zijn dit aanvallen die zeker niet onmogelijk moeten zijn. Concluderend kan gezegd worden dat BitLocker een programma is dat voor super belangrijke documenten simpelweg niet goed genoeg is. Er is wel bescherming, maar niet genoeg voor documenten die absoluut niet uit mogen lekken. Voor de doorsnee Windowsgebruiker ligt dit echter anders. De meeste mensen zullen geen enorm belangrijke documenten hebben die koste wat het kost niet mogen lekken. Deze gebruikers kunnen BitLocker dan ook gewoon gebruiken, tenzij in de toekomst blijkt dat Microsoft stiekem toch een backdoor erin heeft geplaatst. In de toekomst zal er onderzoek nodig zijn naar betere alternatieven. Er bestaan momenteel alternatieven, maar vanwege verschillende redenen zijn deze niet goed genoeg. Een nieuwe standaard voor schijf-encryptie, zoals AES dat voor algemene encryptie is, zou niet misstaan.
6
Referenties B. B¨ ock. Firewire-based Physical Security Attacks on Windows 7, EFS and BitLocker. Security Research Lab, 2009. N. Ferguson. AES-CBC + Elephant diffuser : A Disk Encryption Algorithm for Windows Vista . Microsoft, 2006. J. A. Halderman, S. D. Schoen, N. Heninger, W. Clarkson, W. Paul, J. A. Calandrino, A. J. Feldman, J. Appelbaum, and E. W. Felten. Lest We Remember: Cold Boot Attacks on Encryption Keys. Communications of the ACM, Volume 52 , Issue 5, 2008. N. Kumar and V. Kumar. BitLocker and Windows Vista. http: // www. nvlabs. in/ uploads/ projects/ nvbit/ nvbit_ bitlocker_ white_ paper. pdf , 2008. M. Lee. Microsoft gives details about its controversial disk encryption. theintercept/2015/06/04/microsoft-disk-encryption/, 2015.
https://firstlook.org/
Microsoft. Uw bestanden beveiligen met behulp van bitlocker-stationsversleuteling. http://windows. microsoft.com/nl-nl/windows/protect-files-bitlocker-drive-encryption#1TC=windows-7. S. T¨ urpe, A. Poller, J. Steffan, J.-P. Stotz, and J. Trukenm¨ uller. Attacking the BitLocker Boot Process. Proceedings of the International Conference on Trusted Computing, 2009.
7