De Secustick
For your convenience, an
English translation of this article is available.
De laatste tijd is onder meer de overheid een aantal keren in verlegenheid gebracht omdat geheimen via een verloren memorystick naar buiten kwamen. Beveiliging van deze gegevensdragers is dan ook een hot issue. De Secustick belooft de ultieme beveiliging.
De meest gebruikte techniek om gegevens te beveiligen zal encryptie zijn, maar het Franse bedrijf Sipal International kwam enige tijd geleden met een alternatief dat velen wel uit de Mission Impossible-films zullen herkennen: een beveiligde stick die zichzelf vernietigt als er te vaak een verkeerd wachtwoord wordt ingevoerd. De stick is ontwikkeld in opdracht van de Franse overheid, en - volgens het persbericht van het bedrijf - revolutionair, superveilig en goedgekeurd door de Franse veiligheidsdienst. Naast de Franse overheid zouden ook de defensie-industrie en het bankwezen, respectievelijk met name Dassault en Crédit Agricole, van de stick gebruik maken.

De Secustick, met een opslagcapaciteit van 1GB, is in Nederland voor 130 euro verkrijgbaar. Een fors bedrag vergeleken met normale geheugensticks van deze grootte, die voor een bedrag van minder dan 20 euro over de toonbank gaan. De Secustick onderscheidt zich echter van andere beveiligde sticks door zichzelf te vernietigen als er te vaak een foutief wachtwoord wordt ingevoerd. Op papier zien de mogelijkheden er goed uit en zou de Secustick zijn forse aanschafprijs waard kunnen zijn. Tweakers.net kreeg een aantal sticks in handen en besloot te onderzoeken of de stick zijn belofte en prijskaartje waar kan maken.
De eerste indruk
De metalen Secustick wordt in een mooi afgewerkt doosje geleverd. Daarin zitten de Secustick en een koord dat het mogelijk maakt de waardevolle gegevens om de nek te hangen. We hebben een van de sticks aan een grondige inspectie onderworpen en het lijkt erop dat het om gerelabelde Netac U220-sticks gaat; de gebruikte componenten zijn exact gelijk. Ter vergelijking: de Netac moet ongeveer 40 euro opbrengen, maar biedt geen zelfdestructiemogelijkheden.

De eerste keer dat de stick wordt gebruikt moet een wachtwoord worden gekozen. Naast het wachtwoord moet het aantal toegestane inlogpogingen ingesteld worden. Als dit aantal is bereikt voordat er een juist wachtwoord is ingevoerd, zal de zelfdestructie in werking treden. Als de stick eenmaal klaar is voor gebruik, is er zonder het invoeren van een wachtwoord slechts een partitie van 2MB zichtbaar. Hierop staat het - alleen voor Windows geschikte - programma password.exe. Na het opstarten van het programma verschijnt een dialoogvenster dat om het wachtwoord vraagt. Als een foutief wachtwoord wordt ingevoerd toont het programma de resterende inlogpogingen.
Zelfvernietiging
Omdat de stick zichzelf vernietigt na een aantal foute inlogpogingen leek het ons een goed idee dit mechanisme als eerste aan een nader onderzoek te onderwerpen; we wilden natuurlijk niet het risico lopen dat we binnen de kortste keren met een aantal defecte sticks zouden zitten. De meest geschikte manier om dit te na te gaan, is uiteraard iets wat een tweaker eigen is: openschroeven. De angst dat de stick in rook op zou gaan bij het openen bleek al snel ongegrond: het losdraaien van een enkele schroef bleek voldoende om het hele apparaatje te demonteren. Bij het openen bleek overigens meteen dat er geen epoxy is gebruikt om de printplaat tegen eventuele creatieve aanpassingen met een soldeerbout te beveiligen.

Het binnenwerk van de Secustick.
Na het openen van de behuizing zijn de twee basiselementen van een geheugenstick zichtbaar: een flashcontroller en een stukje nand-geheugen, in dit geval van leverancier Hynix. Enig onderzoek naar het type flashcontroller leerde al snel dat het om een eenvoudig model gaat dat niet over specifieke beveiligingstechnieken lijkt te beschikken. Van het geheugen konden we geen exacte datasheet vinden, maar die van een gelijksoortig model was wel via internet beschikbaar. We kwamen er al snel achter dat de geheugenchip uitgerust was met een pinnetje wat afhankelijk van het spanningsniveau, het beschrijven van de chip wel of niet kan toestaan. De stick heeft hier zelf ook al een knopje voor, maar die loopt naar de controller en niet naar de geheugenchip. Dat betekent dat de controller alsnog zelf kan beslissen om een schrijfactie uit te voeren. Door echter een draad te leggen tussen de pin aan de geheugenchip en de aarde, konden we er zeker van zijn dat er geen gegevens op de chip veranderd konden worden.

De gesoldeerde draad op de Secustick.
Nadat de stick weer op de pc was aangesloten voerden we een willekeurig wachtwoord in: 'Wachtwoord fout, nog 6 resterende pogingen' wist de software ons te melden. Nog een keer proberen: 'Wachtwoord fout, nog 6 resterende pogingen', was het antwoord weer. Mooi! De stick kon het aantal gebruikte inlogpogingen niet meer opslaan; we hadden dus in feite een ongelimiteerd aantal pogingen om een wachtwoord in te voeren. Tijd om de software aan een nadere blik te onderwerpen.
De software
Het programma password.exe schrijft bij het opstarten twee bestanden in een tijdelijke directory: SinglePWD.exe en USB20.dll. Met W32Dasm, een disassembler annex debugger, keken we naar de software. De executable is zoals verwacht verantwoordelijk voor het tonen van de userinterface en USB20.dll zorgt voor de communicatie met de stick. Wat wel verrassend was, is de opbouw van het dll-bestand. In plaats van low-level commando's zoals SendToStick() waren routines als GetWriteProtectState(), RefreshFileBrowser() en de belangrijkste VerifyPassWord() zichtbaar.

Schermafbeelding van de debugvensters (klik voor groter)
Vanzelfsprekend trok deze laatste de meeste aandacht. Met de debugger keken we naar de VerifyPassWord-routine. Het bleek dat via een eax-register het resultaat van de routine aan het hoofdprogramma werd doorgegeven. We plaatsten met de debugger een breakpoint direct na de functie, en voerden een fictief wachtwoord in. Het programma werd door de debugger gestopt en de returnwaarde 0 werd door ons in 1 veranderd. Het programma werd daarna vervolgd. We hoopten op een foutmelding die ons iets meer inzicht in het proces zou geven. Dat was helaas niet het geval. Hoewel helaas? We kregen veel meer dan waar we op gerekend hadden.
Door de mand gevallen
Het bleek dat we al volledige toegang tot de 'beveiligde' bestanden hadden. Blijkbaar wordt alleen in het programma gecontroleerd of het wachtwoord correct is ingevoerd, en wordt op basis daarvan het vrijgavecommando via de dll aan de stick gezonden. Door eenvoudigweg de returnwaarde van de VerifyPassWord-routine te veranderen gaf de schijf zijn - niet versleutelde - inhoud prijs.

De controle van het wachtwoord en het vrijgeven van de bestanden zijn twee aparte processen. Dit mag een ernstige ontwerpfout genoemd worden. De best beveiligde sticks voeren het versleutelen en vrijgeven van de bestanden volledig uit op de chip. Een iets minder goede methode is het vergelijken van een wachtwoord dat versleuteld in de controller is opgeslagen, met een wachtwoord dat door de pc wordt aangeleverd. Deze methode voorkomt in ieder geval dat het wachtwoord van het flashgeheugen gehaald kan worden. Een nog minder goede methode is het opslaan van het wachtwoord op het geheugen van de stick, het risico dat het wachtwoord van de chip gelezen wordt is reëel. De Secustick staat nog een stapje lager op de ladder: de controle van het wachtwoord en het vrijgeven van de stick vindt volledig plaats vanaf de pc. Een pc waar je uiteraard geen controle over hebt als de stick gestolen wordt.
Ten slotte
De beveiliging van de stick is dus zo goed als waardeloos: een eenvoudig programma kan het vrijgavecommando aan de stick sturen zonder het wachtwoord te weten. Daarnaast kan het password.exe programma aangepast worden om ieder willekeurig wachtwoord te accepteren. Als een aangepaste versie van het programma publiekelijk beschikbaar gemaakt zou worden kan iedereen die de weg naar een zoekmachine weet de Secustick zonder enige moeite uitlezen. Het lijkt er tevens op dat de zelfvernietiging - the flash memory is burned volgens de datasheet - ook niet veel te betekenen heeft. Er zit voor zover we hebben kunnen vaststellen geen extra hardware op de chip - zoals een dc-dc-converter - die het geheugen fysiek kan vernietigen door er bijvoorbeeld een te hoge spanning op te zetten.
In een reactie geeft importeur Walter Preij aan verrast te zijn door onze bevindingen. 'De fabrikant heeft mij verzekerd dat het systeem volledig veilig is,' zo reageert hij. De Franse leverancier stelt desgevraagd dat de Secustick niet bedoeld is als ultiem beveiligingsmiddel. 'Iedere vorm van beveiliging is te kraken. We vertellen onze klanten altijd zelf te testen of de stick aan hun verwachtingen voldoet. Onze klanten zijn tevreden met de mate van beveiliging die ons product biedt. Normaal gesproken is onze beveiliging voldoende, niet iedereen heeft de technische kennis in huis die jullie hebben,' zo vertelt de Franse leverancier, daarbij voorbijgaand aan de mogelijkheden die een kwaadwillende ter beschikking kan hebben of de mogelijkheid om een gekraakte versie van de software online te zetten. De directeur van het bedrijf geeft wel aan met een verbeterde versie bezig te zijn. Deze versie zal binnen twee maanden gereed zijn. Voor de echt grote geheimen heeft het bedrijf nog een aparte productlijn 'die nog beter beveiligd is'.
Ons advies mag duidelijk zijn: iemand die 130 euro over heeft voor een mooie metalen usbstick met ophangkoordje kan gerust een Secustick aanschaffen; degene die graag zijn gegevens veilig meeneemt doet er verstandiger aan een beter exemplaar te zoeken of een gewone stick te gebruiken met een programma als TrueCrypt.
Wij willen Sprite_tm bedanken voor zijn uitgebreide technische bijdrage aan dit artikel.
Plug this story