Door Peter de Boer

Doktersteam

De diskGenie op de pijnbank gelegd

26-08-2010 • 09:00

195

Multipage-opmaak

De diskGenie

De diskGenie is een beveiligde externe harde schijf met een keypad. Via dit toetsenbordje kan een pincode worden ingetoetst die de inhoud van de schijf vrijgeeft. De pincode kan bestaan uit zes tot maximaal zestien cijfers en voor de versleuteling wordt gebruik gemaakt van 128bit- of 256bit-aes-encryptie. De prijzen variëren van ongeveer 110 euro voor de 250GB-variant met 128bits encryptie tot 280 euro voor een exemplaar met 256bits versleuteling en een opslagcapaciteit van 750GB. Een geïntegreerde chip zorgt voor de realtime hardwarematige versleuteling, zodat er bij het schrijven of lezen van de gegevens geen merkbare vertraging moet zijn.

iStorage diskGenie

Volgens de supportdesk van iStorage krijgt de diskGenie binnen twee weken het Claims Tested Mark-certificaat, daarnaast is de chip voor de versleuteling voorzien van een FIPS 140-2-certificaat. Op het eerste gezicht lijkt de schijf goed beveiligd - voor ons des te meer reden om de proef op de som te nemen.

Uitpakken

In de doos zit in ons geval een 250GB-versie van de diskGenie, en een hoesje. Er wordt een Y-kabel meegeleverd om de drive te kunnen gebruiken als een enkele usb-poort onvoldoende stroom levert.

diskGenie doos

De diskGenie ziet er netjes uit. Het omhulsel van de disk bestaat uit een soort rubber, zodat vlekken en vingerafdrukken weinig kans maken.

diskGenie -- Inhoud doos

De bijgeleverde snelstartgids geeft basisinformatie over de schijf, terwijl online een complete handleiding beschikbaar is. Standaard wordt de diskGenie geleverd met het wachtwoord '123456'. Als je deze code invoert en de unlock-toets indrukt, kun je de inhoud van de schijf lezen. Om het wachtwoord te wijzigen moet je de speciale beheersmodus opstarten door twee toetsen ingedrukt te houden, het nieuwe wachtwoord in te typen en de unlock-toets in te drukken.

Voor het invoeren van de juiste code zijn maximaal 50 pogingen toegestaan. Als binnen deze pogingen niet de juiste code is ingevoerd kun je nog een speciale code uit de handleiding invoeren waarna je nog eens 50 keer de kans krijgt de juiste code in te voeren. Als er na deze tweede serie van pogingen nog geen juiste code is ingevoerd is de enige manier om de schijf weer te kunnen gebruiken een complete reset, waarbij alle data wordt gewist. Frustrerend voor hackers is dat na iedere zes pogingen de schijf losgekoppeld moet worden. Via een rgb-led houdt de diskGenie de gebruiker op de hoogte van de modus en bijvoorbeeld of het wachtwoord foutief is.

Voor de eindgebruiker is het interessant om te weten dat de schijf niet afhankelijk is van een bepaald besturingssysteem. In de handleiding worden instructies gegeven voor het formatteren en partitioneren onder Windows en OS X, maar we kregen de schijf zonder enige problemen werkend onder Linux. Hoewel dit voor de eindgebruiker goed nieuws is, is het voor ons minder gunstig. De optie om de meegeleverde software te hacken, een optie die bij eerdere schijven snel tot resultaat leidde, vervalt direct. We zullen dus onze aandacht op de hardware moeten richten.

Echt uitpakken

Om de behuizing open te maken is het losdraaien van twee verborgen, beveiligde torx-schroeven voldoende. Het toepassen van dergelijke schroeven werpt in theorie een drempeltje op, maar in de praktijk is het vrij eenvoudig de schijf open te maken. Een setje met bijpassende schroevendraaiers kostte ons nog geen tientje.

diskGenie -- opengeschroeft

Nadat de behuizing is verwijderd kunnen we een blik werpen op de binnenkant. Het apparaat bestaat uit een printplaat met de elektronica en het keypad, en een 250GB grote WD Blue Scorpio-sata-laptopschijf.

diskGenie -- printplaat

Op de printplaat zijn drie chips aangebracht. Van links naar rechts zien we een chip met gele verf, een vierkante Initio INIC-1607 en een 25F010-eeprom. Er is helaas weinig documentatie te vinden over de Initio. Op de website van de fabrikant wordt zelfs helemaal geen melding van dit type gemaakt. Op de 25F010 staat waarschijnlijk de firmware van de Initio-chip opgeslagen.

Het is niet duidelijk waarom de gele verf op de eerste chip zit. Het is mogelijk dat het gedaan is om potentiële hackers niet wijzer te maken, maar dat heeft weinig zin: met een beetje terpentine is het typenummer eenvoudig te onthullen. De chip blijkt een PIC16F883, een redelijk gewone 8bits microcontroller. Na wat testen en meten blijkt ook waar de niet-bestukte connector voor gebruikt wordt: dit is de interface waarop een programmer kan worden aangesloten om de chip opnieuw te programmeren of te debuggen. Na behoorlijk wat speur- en meetwerk kunnen we met redelijke zekerheid zeggen dat onderstaand schema het ontwerp van de schijf weergeeft:

diskGenie -- schema

De Initio-chip zit tussen de usb-poort en de harde schijf. Wat speurwerk op het internet wees uit dat de chip realtime 256bits aes-encryptie kan uitvoeren. Omdat de gebruikte microcontroller bovendien te langzaam is om de versleuteling voor zijn rekening te nemen, mogen we concluderen dat de Initio verantwoordelijk is voor de versleuteling van de data op de aangesloten schijf. De microcontroller stuurt het ledje en het toetsenbord aan en communiceert met de Initio via een seriële bus.

Hoe het werkt

Als eerste kijken we naar de inhoud van de schijf. Om het debuggen makkelijker te maken hebben we de meegeleverde schijf vervangen door een kleiner exemplaar van 60GB; als we op byte-niveau willen kijken is dat eenvoudiger met een kleinere schijf.

Het installeren van de nieuwe schijf was simpel: na het monteren van de nieuwe schijf hoefden we alleen de diskGenie te resetten naar de standaard pincode om het apparaat weer te kunnen gebruiken. Daarna hebben we de schijf weer verwijderd en hem in een standaard usb-behuizing geplaatst. Daarbij viel direct op dat in de standaardbehuizing de werkelijke grootte van 60GB wordt weergegeven. In de diskGenie waren echter ruim 1,4 miljoen blokjes van 512 bytes gereserveerd, er was dus 700MiB minder beschikbaar.

De ruimte die door de diskGenie wordt vrijgehouden, wordt echter nauwelijks gebruikt: er worden maar 700 bytes daadwerkelijk beschreven. Een korte zoektocht leerde dat de controller ook gebruikt wordt voor drives zonder keypad. In dat geval toont de controller een niet versleutelde extra partitie, waarop software geïnstalleerd kan worden om een keypad te emuleren. De 700MiB bevat dan ook de data die gebruikt wordt om zaken als het aantal resterende pogingen op te slaan. Los van de vraag of dat wel net zo veilig is als de hardwareoplossing, is het vervelend dat ook de diskGenie domweg 700MiB opslagcapaciteit onbruikbaar maakt.

In het geval van de diskGenie hebben de ontwerpers het gedeelte dat een wachtwoord van software op de pc ontvangt, vervangen door een routine die het wachtwoord van de aangesloten microcontroller krijgt. De vraag die direct opkomt is of we de communicatie tussen de Initio-chip en de microcontroller kunnen uitlezen om zo het wachtwoord te achterhalen. Voor de communicatie tussen beide chips wordt gebruik gemaakt van SPI, een vrij eenvoudig serieel protocol. Als het juiste wachtwoord is ingevoerd stuurt de microcontroller de gegevens naar de Initio-chip, die op zijn beurt de harde schijf toegankelijk maakt. Het commando om de schijf vrij te geven ziet er bij ons als volgt uit:

00 78 80 00 00 4B C4 A9 26 B3 86
67 D3 62 05 74 AD 61 70 8D 7A 7F
FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF 80 00 00 00 00 00 00 00

De code bestaat uit zestien ogenschijnlijk willekeurige bytes. Als de drive naar de fabrieksinstellingen wordt gereset, wordt er een andere reeks verstuurd. Opvallend is dat de reeks niet wijzigt als de gebruiker het wachtwoord verandert. Op basis van deze informatie en onze ervaringen met vergelijkbare chips kunnen we met redelijke zekerheid vaststellen wat er tijdens het gebruik gebeurt:

Bij een volledige reset

  • De microcontroller zet de pincode op 123456;
  • De microcontroller genereert een random sleutel om naar de Initio-chip te versturen;
  • De Initio-chip genereert een random sleutel om de harde schijf mee te versleutelen. Met de sleutel die van de microcontroller is ontvangen, wordt de aes-key versleuteld en op het verborgen gedeelte van de hd opgeslagen.

Bij het ontgrendelen van de schijf

  • De gebruiker voert het wachtwoord in;
  • De microcontroller controleert het wachtwoord, als deze correct is wordt de eerder gegenereerde key naar de Initio-chip verzonden;
  • De Initio-chip gebruikt deze key om zijn eigen sleutel te ontcijferen en controleert vervolgens of de decryptie gelukt is;
  • De Initio-chip gebruikt die sleutel om de harde schijf te decrypten;
  • De gebruiker kan de data weer lezen.

Om zeker te zijn van bovenstaande procedure hebben we de reset op twee verschillende harde schijven geprobeerd. Als het beschreven scenario correct is, zal de microcontroller de pincode moeten accepteren en de sleutel voor de laatst geresette harde schijf naar de Inic chip moeten sturen. Als de eerste harde schijf in de behuizing zit zal de Initio-chip zijn eigen key niet kunnen ontcijferen en dus de harde schijf niet kunnen vrijgeven. Dat is ook precies wat er gebeurde: de microcontroller toonde een groen ledje ten teken dat het wachtwoord correct was, maar de pc kreeg geen toegang tot de harde schijf.

Ten Aanval

Op basis van de informatie die we tot nu toe hebben vergaard, zijn er verschillende mogelijkheden om de schijf te kraken. De eerste die in ons opkomt is de zogenaamde evil maid-aanval. Daarvoor moet de schijf ergens onbeheerd worden achtergelaten, zeg: in een hotelkamer. De hacker, de 'evil maid', kan vervolgens bijvoorbeeld een keylogger installeren. Als de eigenaar het apparaat daarna gebruikt, worden alle toetsaanslagen bewaard en bij een tweede bezoek kan de evil maid de gegevens uitlezen en alle sporen van zijn of haar aanwezigheid verwijderen. De diskGenie is kwetsbaar voor deze hack. Het apparaat kan eenvoudig worden geopend en er kan vervolgens door een kundige hacker mee geknoeid worden.

Bovenstaand scenario gaat uit van een doelgerichte hack die bovendien redelijk wat voorkennis en voorbereiding nodig heeft. Een situatie die natuurlijk vaker voorkomt is diefstal of verlies van de schijf, zodat een hacker zonder wachtwoord aan de slag moet. De eenvoudigste plek om de aanval te starten lijkt de microcontroller. De pincode bestaat uit zes tot maximaal zestien cijfers. Deze code is zelfs in het ongunstigste geval miljoenen keren eenvoudiger te kraken dan de 256bits aes-encryptie waarmee de inhoud van de schijf is versleuteld. Daarnaast is de Initio-chip gecertificeerd door het NIST, en dat kan niet van de microcontroller worden gezegd.

We zouden als eerste graag wat informatie over de pincode krijgen. Dat blijkt niet erg moeilijk. Het valt direct op dat de led verschillende signalen kan geven als er foutieve pincodes worden ingevoerd. Als het wachtwoord verkeerd is maar wel het juiste aantal cijfers bevat, knippert de led drie keer; als het aantal cijfers verkeerd is knippert het ledje vier keer. Dit is voor een hacker uiteraard bijzonder nuttige informatie. Als je weet hoe lang het wachtwoord is kun je op basis daarvan beter bepalen welke methode je moet toepassen om het apparaat te kraken.

Timing attack

Een veelgebruikte techniek om informatie over een wachtwoord te krijgen, is de timing attack. Deze aanval is mogelijk als de microcontroller simpelweg de karakters van het opgeslagen wachtwoord vergelijkt met de invoer. Als het wachtwoord 12345 is en er wordt 23456 ingevoerd kan de microcontroller al aan het eerste cijfer zien dat het wachtwoord fout is. Als er 12346 wordt ingevoerd, ziet de controller pas bij het laatste cijfer dat het wachtwoord fout is. Als er dus een gedeelte van het wachtwoord juist is, is het mogelijk dat de microcontroller er een fractie korter over doet om het wachtwoord te valideren. Dit verschil kan meetbaar zijn, en door deze informatie te gebruiken kan een wachtwoord een stuk sneller achterhaald worden.

We moeten als eerste proberen te ontdekken in welke orde van grootte deze tijdsverschillen vallen. Het verschil in reactietijd tussen een goede en een foutieve invoer zal slechts enkele processortikken bedragen, zodat het belangrijk is om te weten hoeveel tijd een kloktik kost. Als de microcontroller zijn klokfrequentie van een extern kristal zou krijgen was deze informatie simpelweg van het kristal af te lezen; in dit geval wordt de frequentie echter intern door de microcontroller bijgehouden.

Nu moeten we even wat achtergrondinformatie over de interne werking van een microcontroller geven. Die voert elke actie uit in één cyclus van de klok. Als een nieuwe klokcyclus wordt gestart, wordt bijvoorbeeld een instructie ingelezen, een berekening uitgevoerd of data weggeschreven. Omdat het begin van al deze bewerkingen samenvalt met het begin van de klokcyclus, gebruikt de microcontroller op dat moment het meeste energie. Door het energieverbruik nauwkeurig te monitoren moet je dus kunnen vaststellen wat de klokfrequentie is.

diskGenie -- weerstand

Wij hebben dat gedaan door in de verbinding tussen de voeding en de microcontroller een weerstand van 330 ohm te plaatsen en daar een oscilloscoop op aan te sluiten. In het geval van de diskGenie konden we aflezen dat deze chip op 8MHz is geklokt, en dat komt overeen met de frequentie waarop de chip volgens de specificaties kan draaien.

Nu we de kloksnelheid hadden bepaald werd het tijd voor de timing attack. Om deze aanval goed uit te kunnen voeren, moeten we de tijd meten tussen het moment waarop begonnen wordt met het valideren van de pincode en de afwijzing van een foutieve pincode. De eenvoudigste manier is het meten van de tijd tussen het indrukken van de knop op het keypad en het oplichten van de led. Dat zou echter betekenen dat we nauwkeurig een tijdsverschil van een achtmiljoenste van een seconde moeten kunnen registreren. Dat is vrijwel onmogelijk, zeker gezien het feit dat kleine afwijkingen in het kloksignaal de meting volledig in de war kunnen schoppen.

Er waren echter nog twee andere signalen die we mogelijk zouden kunnen gebruiken. Als alternatief voor het startsdiskGenie -- scannen matrix keypadignaal keken we naar de matrix van de keypad. Deze wordt sequentieel uitgelezen. Eerst wordt in de eerste rij gekeken of er een toets is ingedrukt, vervolgens de tweede rij en als laatste de derde rij waarna het geheel weer van voren af aan begint. Er is een veel uitgebreidere uitleg beschikbaar, maar voor ons is het genoeg om te weten dat het uitlezen van het toetsenbord te zien is als drie pulserende lijnen.

Op het moment dat de unlock toets wordt ingedrukt krijgt de microcontroller het even zó druk, dat het uitlezen van het toetsenbord een fractie van een seconde wordt onderbroken, terwijl wordt bepaald of de pincode correct is. Dit proces neemt ongeveer 25ms in beslag. Binnen deze tijd is een timing attack nog steeds moeilijk, maar wel iets eenvoudiger. Helaas bleek tijdens het meten dat er een relatief groot verschil zat tussendiskGenie -- controleren wachtwoord twee identieke pogingen.

Gelukkig bedachten we ons dat de microcontroller onthoudt hoeveel pogingen er al gedaan zijn om het juiste wachtwoord in te vullen. Dit wordt zelfs onthouden als de stroom van het apparaat afgehaald wordt. Deze gegevens moeten dus ergens worden weggeschreven, vermoedelijk op een eeprom die in de chip is meegebakken.

Het beschrijven van een eeprom is een complexe aangelegenheid. De microcontroller moet een op de chip meegebakken spanningsconverter aanslingeren om een spanning te genereren die hoog genoeg is om de cellen van de eeprom te wissen. Daarna moet enige tijd worden gewacht totdat de nieuwe data is weggeschreven. Die wachttijd wordt bepaald door een soort analoge klok.

Het bleek niet erg moeilijk om vast te stellen op welk moment de eeprom werd beschreven. De spanningsconverters die voor het wissen van de eeprom worden gebruikt, gebruiken veel meer stroom dan de microcontroller zelf. Omdat de oscilloscoop nog was aangesloten, konden we eenvoudig een dip in de stroomtoevoer ontdekken.

Helaas bleek dat ons niet verder te brengen. De gemeten verschillen tussen twee identieke pogingen liepen nog steeds te ver uiteen. Tussen twee keer dezelfde invoer zat soms een verschil van meer dan 100 klokcycli. We weten niet of dit een doelbewuste bescherming is tegen een timing attack, maar het werd wel duidelijk dat we hier niet verder gingen komen. Toch had dit verhaal een aantal nieuwe inzichten opgeleverd.

De eeprom

Toen we ontdekten dat we het moment van schrijven van de eeprom konden bepalen, werden we nieuwsgierig of dat misschien een zwakke plek in het ontwerp van de diskGenie zou kunnen zijn. Als we immers kunnen bepalen wanneer de eeprom beschreven wordt, kunnen we wellicht de microcontroller willekeurige data of -nog beter- helemaal niks laten schrijven. Om dit voor elkaar te krijgen hebben we onderstaand schema in elkaar geklust. De microcontroller van de diskGenie staat links en de avr-microcontroller die we hebben gebruikt zie je aan de rechterkant.

diskGenie -- eeprom schema

Een kleine uitleg is wellicht op zijn plaats. De weerstand is gebruikt als een kortsluitleiding. Als de microcontroller meer stroom gebruikt om naar de eeprom te schrijven, zal de spanning over de weerstand iets oplopen en de spanning op de input van de avr zal juist iets teruglopen. De avr vergelijkt het verschil in spanning met een bepaalde drempel. Als deze drempel wordt overschreden weet de avr dat er een schrijfactie is begonnen.

Zodra dat gebeurt, kan de avr de schrijfactie frustreren door een bepaalde hoeveelheid spanning op de microcontroller te zetten. De hoeveelheid spanning wordt bepaald door de BC560-transistor met de daarop aangesloten potmeter. Het idee is dat de spanning op de BC560 voldoende laag is, zodat de microcontroller gewoon blijft draaien maar het schrijven naar de eeprom mislukt.

Het doelwit van deze hele constructie is de ingebouwde resetprocedure van de diskGenie. Zoals we al meldden, wordt bij een reset een nieuwe key naar de Initio-chip verzonden. Deze key en de nieuwe pincode worden vervolgens opgeslagen in de eeprom, waarbij de oude key en de pincode worden overschreven. Als we kunnen voorkomen dat de nieuwe key wordt weggeschreven, weten we na een reset de juiste pincode, maar is de bestaande data met de oude key nog steeds beschikbaar en kunnen we deze eenvoudig lezen.

Helaas lukte dit maar gedeeltelijk. Het is gelukt om de spanning zo aan te passen dat het schrijven naar de eeprom mislukte, maar het lukte niet om de eeprom helemaal niet te beschrijven. Er werd niet naar de eeprom geschreven wat de microcontroller wilde, maar omdat er nog wel iets geschreven werd, was de hele schijf niet meer te gebruiken.

Het is via deze methode echter wel gelukt om de twee bytes te beïnvloeden die gebruikt worden om het aantal verkeerd ingevoerde pincodes te bij te houden. Dat zette de deur voor een brute force aanval open. Het invoeren van pincodes werkt echter veel te traag omdat er alleen al twee seconden nodig zijn om de led te laten knipperen als het wachtwoord fout is.

Brute force

Omdat onze listige pogingen niet erg succesvol bleken, hebben we een stapje teruggedaan en zijn we gaan onderzoeken hoe realistisch een brute-forceaanval is. We hebben al een kwetsbaarheid ontdekt in de methode die een brute-forceaanval tegen moet gaan: door de microcontroller dwars te zitten als deze het aantal resterende pogingen probeert weg te schrijven, hoeven we ons geen zorgen meer te maken over het maximale aantal pogingen.

Het probleem blijft echter dat iedere poging drie à vier seconden kost. Dat is veel te veel als de pincode uit zes of meer cijfers bestaat. We zullen dus proberen deze tijd drastisch in te korten, en dat doen we met behulp van de lessen die we hebben geleerd bij de timing-aanval. We zijn benieuwd naar het verschil in tijd tussen het stoppen van het uitlezen van het keypad en het beschrijven van de eeprom bij een helemaal goede en een helemaal foutieve pincode:

diskGenie -- brute force aanval

Aan de linkerkant is de poging te zien met een foutieve pincode, aan de rechterkant is te zien wat er gebeurt als de correcte code wordt ingevoerd. De witte lijnen op de afbeeldingen bakenen identieke intervallen af, waarmee duidelijk is dat de eeprom een fractie van een seconde eerder wordt beschreven als de pincode fout is.

Het is vrij simpel om deze informatie toe te passen. We haalden het circuit dat we gebruikten om de schrijfactie naar de eeprom te frustreren er weer bij, en voegden een lijn tussen de avr en de matrix van het toetsenbord toe. Daarmee konden we de tijd meten die verstrijkt tussen het verwerken van de pincode en het beschrijven van de eeprom. We voegden nog een tweede lijn naar de reset van de microcontroller toe, en schreven een klein stukje software dat ervoor zorgt dat de avr de tijd meet die nodig is om de invoer te verwerken.

Als de avr nu op basis van de verstreken tijd kan concluderen dat de pincode fout is, wordt de microcontroller gereset voordat het aantal resterende pogingen wordt weggeschreven. Op deze manier kunnen de pincodes snel achter elkaar worden ingevoerd, zonder dat er gewacht hoeft te worden op een reactie van de microcontroller en zonder dat het apparaat na honderd foutieve pincodes volledig is geblokkeerd.

Een snelle rekensom leert dat een brute-forceaanval haalbaar is bij korte pincodes. Op basis van onze ervaring schatten we dat het maximaal een seconde duurt om een pincode in te voeren en te testen. Als we het invoerproces kunnen automatiseren en alle mogelijkheden van een pincode van zes cijfers proberen, zouden we 10*10*10*10*10*10=1000000 seconden nodig hebben: ongeveer elf dagen.

Met wat extra informatie zou deze tijd nog behoorlijk ingekort kunnen worden. Als het apparaat bijvoorbeeld intensief wordt gebuikt, zullen de toetsen van de cijfers die in de pincode voorkomen wellicht iets sneller slijten of wat extra vuil zijn. Als we er achter kunnen komen welke cijfers in de pincode worden gebruikt neemt de tijd voor een brute-forceaanval op een zescijferige pincode af naar 6*5*4*3*2*1 seconden, ongeveer 12 minuten. Bij langere pincodes neemt deze tijd echter exponentieel toe. Bij zeven cijfers kost het al bijna anderhalf uur, acht cijfers kosten elf uur en bij tien cijfers zijn we anderhalve maand bezig.

Conclusie

Is de diskGenie veilig? Dat hangt, zoals wel vaker, van de toepassing af. Voor de gemiddelde gebruiker is het apparaat een uitstekende oplossing. Voor het opslaan van bedrijfsgeheimen is de diskGenie ook prima te gebruiken, als de pincode tenminste voldoende lang is: we raden minimaal elf karakters aan. Voor nog gevoeliger data, bijvoorbeeld de lanceercodes van het kernwapenarsenaal van het land waarvan je president bent, zijn er waarschijnlijk betere opties.

Er is geen software waarmee geknoeid kan worden, zodat een hacker in ieder geval ervaring met de hardware moet hebben. De gebruikte microcontroller is echter geen beveiligde chip en zal in een laboratorium waarschijnlijk zijn geheimen wel prijsgeven.

diskGenie -- scoreDe diskGenie is voldoende beveiligd om de gemiddelde hacker buiten de deur te houden, maar iemand met heel diepe zakken en de mogelijkheid om chips uit elkaar te halen kan waarschijnlijk wel bij de data komen. Ook met de 'evil maid'-aanval moet rekening worden gehouden: iemand met de technische vaardigheden om een microcontroller te gebruiken om de pincode of de key te onderscheppen, zal niet door de diskGenie worden tegengehouden. De gelegenheid voor een dergelijke aanval zal zich echter niet al te vaak voordoen, en vooralsnog is de diskGenie de enige beveiligde draagbare harddisk die op onze testbank niet zonder meer zijn geheimen prijsgaf.

Onze dank gaat wederom uit naar Sprite_tm voor het beschikbaar stellen van zijn technische kennis en tijd.

Reacties (195)

195
191
154
25
0
6
Wijzig sortering

Sorteer op:

Weergave:

Leuk stukje hardware deze beveiligde disk. Echter waar ik dan weer grote vraagtekens bij zet is het gebruik van een WD Scorpio disk als gebruikte HDD.

Seagate heeft mooie self encrypting oplossingen (http://www.seagate.com/ww...s/self-encrypting-drives/) welke mij bijzonder geschikt lijken voor gebruik in dit apparaat. Zo heb je encryptie in de enclosure en encryptie in de disk.

Op moment dat de encryptie faalt in de enclosure gaat de encryptie verder op de disk. Zo blijft je data ten alle tijden onleesbaar wanneer je de disk kwijtraakt in b.v. het Openbaar Vervoer.

Uiteraard hebben deze SED HDD's een meerprijs t.o.v. een consumenten drive als de Scorpio Blue echter weegt dit niet op tegen de voordelen van dergelijke encryptie.
Dat had hier niet geholpen. De Initio plus een normale HD is feitelijk wat de Seagate ook is: een HD waar je en password heen verstuurt en dan toegankelijk word. De zwakheid zit hier in de PIC: een chip die het goede drive-wachtwoord weet maar door de hacker 'gekieteld' moet worden om die ook aan de HD/Initio te vertellen.
Wat ik mij afvraag is waarom hebben ze niet geprobeerd de PIC uit te lezen met een pic programmer. Als de fabrikant is vergeten de protect bit te zetten kun je de eeprom gewoon uitlezen en de pincode achterhalen. Of denk ik nu te simpel?

Ook zou ik meten op welke momenten gecommuniceerd wordt met de initio chip. Als de pincode met de initio chip wordt gecheckt kun je de PIC vervangen en op die manier brute force toepassen. Dat zal misschien eerder in nano seconden gaan ipv seconden.

Verder een leuk artikel hoor!
Dat is geprobeerd en niet gelukt; de fuse-bits zijn waarschijnlijk idd geset. (Zou ook wel erg faal zijn als dat niet zo was, btw.)

De communicatie met de Initio gebeurt alleen als de juiste pincode ingetikt is (of als de hele HD gereset is) en hetgeen wat dan meegestuurd word is een 128-bit sleutel. Die ga je niet makkelijker bruiteforcen dan de pincode zelf :)
Interessant artikel :)

Wat ik begrijp is dat de microcontroller op basis van de ingevoerde pincode en informatie in de eprom kan achterhalen of die pincode correct is. Als ik dat goed begrijp, betekent dat dus dat je alleen maar de microcode van de microcontroller en de data in de eprom nodig hebt om een bruteforce-aanval te doen.

De vraag is dan dus: kun je de code van de uC niet simpelweg uitlezen en dan de chip emuleren om te bruteforcen?
Ik heb het geprobeerd, maar het lijkt erop dat de makers (terecht) een stel fuse-bits geset hebben om dat te voorkomen. Die dingen zijn in theorie wel weer uit te zetten, maar in het slechtste geval vereist dat het decappen van de chip en het uitlezen ervan met een electronenmicroscoop ofzo, en de zaken daarvoor had ik toevallig net niet in huis :+
De read fuses zijn beveiligd middels een EEPROM, hebben jullie geprobeerd om met een voedingsspanning van Vpp - 0,5V en dan alleen de read fuses opnieuw programmeren geprobeerd? Hier staat hoe ze dat deden.
Schijnt bij meedere IC's te werken.
Verder was het een leuk artikel om te lezen, ik volg ook je topic op got waar je het over de beveiliging en het kraken van µC hebt (deze).

Edit: Als je het echt graag wilt kraken even dit bedrijf inschakelen.

[Reactie gewijzigd door Lethalshot op 23 juli 2024 14:32]

Niet geprobeerd: ten eerste is het stukje geschreven voor 16C84s die ondertussen al antiek zijn. In de tussentijd zal er wel het een en ander verbeterd zijn. Ten tweede loop je een goede kans de chip ermee te slopen, en dat wilde ik niet echt terwijl ik nog verder moest reviewen :)
Kan er iemand mij vertellen waarom er wordt uitgegaan van 1seconde om een pincode in te voeren en verifiëren? Is dit omdat de check (juist/fout) zo lang duurt?
Een pincode invoeren zou toch max 0.1s moeten duren (ik neem aan dat jullie toch niet van plan waren om de toetsen mechanisch in te drukken?) denk ik.

Of zit het grootste deel van die seconde in de verificatie?
Of zit er een ingebouwde beperking dat hij zo'n snelle "toetsaanslagen" niet verwerkt?

Los daarvan: prachtreview, meer van dat!
Dat hangt ermee samen dat het apparaat ervanuitgaat dat een mens de toetsen indrukt. Dat betekent dat elke toetsindruk die korter dan x milliseconden duurt, waarschijnlijk onbedoeld of een meetfout is, en de firmware reageert daar dan ook niet op. Je bent dus zowiezo een tijd bezig met natuurgetrouwe toetsenindrukken simuleren. Verder moet de pincode ook nog gechecked worden inderdaad, en op de een of andere manier duurt het vrij lang voordat dat gebeurd is. Al met al is de 1 seconde is misschien wat aan de hoge kant geschat, maar zeker voor langere pincodes zal het toch akelig dicht in de buurt daarvan komen.
Maar als ik het goed begrepen heb stuurd de micro controler steeds de zelfde code om aan te geven dat de juiste pincode is ingevoerd, is het niet mogelijk om daar wat in te gaan knoeien om zo sneller een ontgrendeling te krijgen?
De code duie de microcontroller stuurt bevat meteen de AES256-key om de HD te unlocken. Als je dat bericht nog niet eerder gezien hebt is er no way dat je die gaat faken.
Verder moet de pincode ook nog gechecked worden inderdaad, en op de een of andere manier duurt het vrij lang voordat dat gebeurd is.
Zou dat niet gewoon opzet zijn? Hoe langer je erover doet om de code te controleren hoe moeilijker een timing attack wordt (zelfde variatie op groter totaal is lastiger meten, toch?).
Een andere mogelijke reden is het vertragen van een brute-force aanval. Iemand die de code meteen (of desnoods na drie pogingen) correct invoert heeft er niet echt last van, maar bij zeer veel pogingen gaat het aantellen. (Zolang het niet mogelijk is om de delay te skippen, zoals het knipperen van de LED; chip gewoon botweg resetten: geniaal! :) )
Je kan zelfs gebruiken dat het invoeren zelf een bepaalde tijd moet duren om te detecteren dat er gehackt wordt.

Het Kaba Mas X09 kluis slot kijkt bijvoorbeeld hoe snel je de knop draait en of je de knop wel 'los laat'. Te snel of meer dan x graden draaien (Mens kan zijn arm niet uit de kom draaien :) ), dan concludeert het slot dat je een robot bent, reset hij de zaak en audit een hackpoging in het interne geheugen.
Ook leuk: Bij Linksom -> Rechtsom en Rechtsom -> Linksom draaien wordt het nummer waar de ring nu staat random gekozen, dus het is nooit '20 graden links, dan 90 graden rechts, dan 40 graden links'. Dat voorkomt naspelen als je de bewegingen van een afstandje ziet en forceert dat een robot het scherm moet kunnen aflezen :-)

Errug mooi slot, wil ik nog een keer hebben voor de leuk... :P
Kost alleen wel een beetje veel geld... Ongeveer 1200 dollar voor het slot alleen... :(
Na het invoeren van een pincode geeft het apparaat feedback via leds. Pas daarna kun je weer invoeren (luistert de controller weer naar invoer). Het knipperen van de leds doet hij nogal langzaam. Vandaar dat je pas na 1 of 2 seconden weer een volgende poging kunt doen.

edit: ik had niet goed gelezen. zie uitleg van Sprite_tm hieronder.

[Reactie gewijzigd door mddd op 23 juli 2024 14:32]

Da's niet helemaal zo: als ik dat ook nog meegenomen had had elke poging 5 seconden geduurd :) Het geintje is juist dat al veel eerder dan dat de LEDs knipperen, gezien kan worden dat de code fout is. Op dat moment reset ik de chip gewoon en kan ik meteen aan een nieuwe poging beginnen.
Excuus. Die alinea had ik niet goed gelezen. Na herlezing zie ik inderdaad dat je hem reset voor de poging daadwerkelijk naar het geheugen wordt gescheven.
Wat vindt iStorage hiervan? Er zijn links en rechts wat mogelijke openingen. Zijn ze op de hoogte gesteld van jullie hack-pogingen en de resultaten daarvan? Misschien kan het leiden tot een nog veiliger product!
Wat vindt iStorage hiervan? Er zijn links en rechts wat mogelijke openingen. Zijn ze op de hoogte gesteld van jullie hack-pogingen en de resultaten daarvan? Misschien kan het leiden tot een nog veiliger product!
Volgens mij weet je als bedrijf dat als je een beveiligde USB storage of beveiligde schijf opstuurt naar tweakers.net, je blootgesteld wordt aan alles wat ze uit de kast kunnen halen. :)

Volgens mij is dit de eerste dergelijke oplossing die reviewed is op de site, die niet te kraken was binnen een redelijk tijdsbestek.
Volgens mij is dit de eerste dergelijke oplossing die reviewed is op de site, die niet te kraken was binnen een redelijk tijdsbestek.
Laatste zin artikel:
vooralsnog is de diskGenie de enige beveiligde draagbare harddisk die op onze testbank niet zonder meer zijn geheimen heeft prijsgaf.
Respect voor iStorage! Zowel dat ze het lef hadden om hieraan mee te werken als dat ze het behoorlijk overleefd hebben.
Inderdaad, zo'n review kan je nieuwe product in 1 klap een flop maken als duidelijk wordt dat de beveiliging niet werkt.
Deels ook wel terecht omdat dat *het* unique selling point van je hardware is ;).
dit soort apparaten zijn al blootgesteld aan hackers die het bedrijf zelf inhuurt, dus waarachijnlijk is deze methode bekend bij iStorage
Er zijn anders wel eens van die beveiligde USB sticks langsgekomen die heel simpel te kraken waren.
Ja, wie heeft er ooit bedacht om het ledje 3x te laten knipperen bij het juiste aantal cijfers? Een gebruiker die niet kan onthouden hoeveel cijfers zijn pincode bevatte verdient het om al zijn data te verliezen...
Doet me denken aan het genereren van hiërogliefen bij het inloggen in Lotus Notes...
toch vind ik het dom om het ledje 3x te laten knipperen als het aantal cijfers niet goed is. (dan bedoel ik dus niet het juiste wachtwoord) heb het artikel niet helemaal gelezen maar als beany Atlas85 gelijk heeft vind ik dat hij wel een punt heeft

edit: verkeerde naam :P

[Reactie gewijzigd door Proxx op 23 juli 2024 14:32]

Lijkt wel "Mastermind".... lol
Eveneens mijn complimenten ... hier leert een mens nog wat van bij.
Voor nog gevoeliger data, bijvoorbeeld de lanceercodes van het kenwapenarsenaal van het land waarvan je president bent, zijn er waarschijnlijk betere opties.
Voor data die zo gevoelig is, is het trouwens altijd beter om voor een NIET-commerciële oplossing te gaan ... daar kunnen ze namelijk geen van bijkopen om op te proberen.
Als je hackpogingen kan ondernemen op een identiek apparaat waar GEEN gevoelige data opstaat en vervolgens een succesvolle poging kan uitvoeren op het apparaat dat de gevoelige wel draagt, heb je minder kans op beschadiging van de data.
De keuze om dit product met een microcontroller te maken is ook wel erg matig. Een FPGA zou er zo voor kunnen zorgen dat een aantal van de hack methodes niet mogelijk zijn, verander dan ook nog dat LED gedrag en het product is een stuk veiliger.
Als in een PIC de fuse-bit is geactiveerd kan dan de interne registers of RAM nog worden gelezen?
Als ik de datasheet erbij pakt is alleen de eeprom en flash afgeschermt. Terwijl de registers en RAM nog te lezen en schrijven is.

Dan kan je namelijk de oscout activeren en wordt alles een stuk makkelijker.
Bij de registers en het ram kan je uberhaupt niet :)
Waarom is de EEPROM niet uitlezen en waarom is de code van de PIC ook niet uitgelezen?

Daar zal vast ook genoeg leuke info te vinden zijn. Het kan ook zo zijn dat de PIN code plain text in het interne EEPROM van de PIC staat....?

Door de code door een disassembler te halen krijg je ook veel meer info hoe de boel in elkaar steekt.

[Reactie gewijzigd door jDuke op 23 juli 2024 14:32]

Dat zou het wel heel makkelijk maken :) maar zo'n Pic heeft fuse-bits die in dit geval geset waren, waardoor het programma- en datageheugen niet meer toegankelijk zijn voor externe programmers. Had dat gekund was ik uberhaupt niet aan voltage-spiking e.d. begonnen :)
Ja daar twijfelde ik niet aan dat je er niet aan gedacht had maar het stond nergens. Het is voor mij jaren terug dat ik nog druk met PICs bezig was. Er zijn inderdaad modellen met fuses en OTP :)

Wel mooie review. Ik wil graag weer de electronica weer oppakken als hobby maar no time :).

Wellicht een tip, tussen de PIC en EEPROM zou je nog een extra microcontroller plaatsen die als slave werkt en zo de schrijf acties eruit vissen. Ipv de voltage te sabboteren :) Dus selectief de SPI commando's doorsturen.

[Reactie gewijzigd door jDuke op 23 juli 2024 14:32]

Dat zou cool zijn en iets wat ik meteen zou uitproberen als de EEPROM extern hing. Het punt is dus dat de PIC het naar z'n interne EEPROM schrijft, waar je dus met geen mogelijkheid bij kan komen zonder de chip te decappen en de electronenmicroscoop boven tafel te halen.
Lol tuurlijk, stupid me 8)7 . Ik vergiste me met de EEPROM van de Initio firmware....

Blijkt een PIC toch handiger dan ik dacht. :D
Aangezien ons bedrijf de diskGenie verkoopt, was ik erg benieuwd naar de review die op Tweakers zou komen. Maar zo'n goed onderbouwd verhaal kom je niet vaak tegen, zeker niet als je die vergelijkt me bijvoorbeeld die van ComputerTotaal :-P
Wat ik dan wel weer interessant vind aan het CT-ding is de reactie van iemand die hem formatteert en vervolgens recovery-programma's gebruikt. Hij vraagt zich af of de data niet alsnog zichtbaar wordt, dus misschien is het ook nog handig te schrijven hoe de schijf geformatteerd wordt.
Dat maakt natuurlijk niets uit. De data die op de schijf geschreven wordt, is versleuteld. Het is niet zo dat je niet bij de data kunt. Als je de schijf in een andere behuizing haalt kun je gewoon zien wat er op staat. Alleen je kunt er geen touw aan vastknopen.

Daarom is dit juist een goed systeem. Als je data op een normale manier wegschrijft en vervolgens de toegang probeert te blokkeren, zijn er altijd omwegen. In dit geval is de data gewoon onbegrijpelijk. Punt.

Of je de schijf nu formatteert of recovery tools gebruikt, daarmee wordt die onbegrijpelijke data niet opeens begrijpelijk. Dat kan alleen als je het door de juiste decoder haalt, met de juiste key.

[Reactie gewijzigd door mddd op 23 juli 2024 14:32]

Die data is toch AES-geëncrypteerd.
Gevonden data zal dan sowieso niet bruikbaar zijn ... als er al data gevonden wordt.
Aangezien de pincode mee wordt gebruikt in de encryptie, is het niet mogelijk om aan 'leesbare' data te komen met een andere pincode.

Hetzelfde principe met de harde schijf die verwisseld werd.
Verwissel de schijf, reset de pincode en verwissel de schijf opnieuw.
Dat leverde wel een groen lampje op, maar de schijf was nog steeds niet leesbaar.
Dan kan je hem ook gewoon uit de behuizing halen en in een laptop of PC hangen. Formatteren en daarna recoveryprogramma's gebruiken is een omweg wat dat betreft. Of het moet zo zijn dat die data helemaal niet uit te lezen is zonder hem eerst te formatteren. Hoe dan ook, alle data die je van de schijf haalt is gecodeerd. Alleen met de juiste pincode en controller kan je hem leeghalen.

De data staat immers versleuteld. De sleutel zit in de chip en kan je met de juiste pincode eruit halen. Die pincode gaat dan naar de decoder die realtime de data vertaald in voor jouw PC bruikbare data.

Als je hem dus recovert heb je enkel een brei waar je niks van bakt en mag je de AES encryptie gaan breken. Succes!
de data wordt versleuteld weggeschreven op de schijf.

de voorgestelde methode is dus even effectief als de ingebouwde schijf fysiek loskoppelen en aan een gewone schijfcontroller hangen.

In plaats van de (relatief 'doenbaar' te kraken, mits korte code) pincode beveiliging krijg je dan te maken met de AES256 encryptie, waar je met huis/tuin&keuken computer apparatuur met geen mogelijkheid doorheen komt.
Is het toeval of hebben we gewoon veel (de) Boertjes in de IT wereld ;)

Zie reviewers van de artikelen
Uit ComputerTotaal: "Er kan bijvoorbeeld een onbedoelde zwakte in de implementatie zitten."

En daar gaat Tweakers.net verder, die probeert em te vinden!
Maar uiteindelijk weet je bij het tweakers artikel niets meer dan bij CT. Je kan namelijk niet aantonen dat de schijf veilig is. Enkel dat een schijf onveilig is (als je een methode vindt om hem te kraken) of dat degene die het geprobeerd heeft te kraken daar niet in geslaagd is. De conclusie van tweakers is dus in feite precies hetzelfde als die van Computer Totaal. Ook tweakers kan niet beweren dat er geen onbedoelde zakte in de implementatie zit.

Nu richt CT zich op andere mensen als Tweakers en is het artikel dan ook anders van opzet, maar de boodschap is uiteindelijk hetzelfde. Leuke schijf voor het MKB en prive gebruik, maar ga er geen echt waardevolle informatie op zetten.
Bravo tweakers.net, weer eens wat meer techniek! Waar is mijn soldeerbout? Helder geschreven en voor iedereen te volgen.
@chickn: Wij willen toch ook altijd meer,beter en mooier? ;)
Maar ComputerTotaal en T.net hebben dan ook een totaal ander doelpubliek. Van T.net mag je verwachten dat ze hun artikelen zeer technisch onderbouwen. ComputerTotaal is meer een bron voor mensen met minder kennis.
Mooi artikel.

Echter is er niet gekeken of de sleutel waarmee de verborgen data op de schijf geschreven wordt telkens hetzelfde blijft. Als deze hetzelfde is dan kun je daarmee de AES decryptiesleutel ophalen (deze veranderd wel elke keer).

Het opnieuw programmeren van de chip zou natuurlijk ook het een en ander kunnen versnellen, als je via de chip bijvoorbeeld het gedeelte van de pincode zelf laat kraken (ik neem aan dat de pincode een deel is van de beveiligde sleutel, indien dit niet zo is dan kun je hem misschien zo programmeren zodat hij de pincode helemaal overslaat en direct de sleutel aan de decryptiechip doorstuurt).

Het zijn maar ideetjes en ik ken het apparaat niet goed genoeg om te beoordelen op de uitvoerbaarheid.
Ik heb het niet kunnen uitproberen omdat ik niet weet hoe de verborgen data op de schijf encrypted word, maar met hetgene wat ik van AES weet in het achterhoofd en wat ik gezien heb kan ik met redelijke zekerheid zeggen dat de encryptie daarvan samen met de encryptie van de HD zelf veranderd. Zou me weinig verbazen als het zelfs dezelfde sleutel is.

Opnieuw programmeren van de chip: klinkt leuk, maar zodra je de chip programmeert ben je zowel het ouwe programma als alle data (incl pincode en key) kwijt. Not a chance dat dat je helpt dus.
Dat lijkt me dan een hele mooie ingang voor een hackpoging. Als er een eenvoudig verband bestaat tussen de gebruikte AES key en de pincode, dan zou je daarna de schijf gewoon aan een normale controller kunnen hangen en kunnen brute-forcen. Stel dat de AES key gewoon de MD5 hash van de pincode is (of erger nog, de pincode zelf), dan kun je in enkele minuten bij de data.
Dat is het punt dus: Ik gok dat er wel een verband bestaat tussen het 'geheime' stukje data op de HD en de versleuteling van de 'echte' data, maar dat zou zijn dat beide versleuteld zijn met dezelfde 128-bit key die random gegenereerd word wanneer de diskGenie gereset word. Er is compleet geen verband tussen deze 128-bit key en de pincode: je kunt de pincode vrolijk wijzigen, maar de key die naar de Initio gestuurd word blijft hetzelfde.

Op dit item kan niet meer gereageerd worden.