Hallo liebe Experten, da ich mir nun schon Tage im Netz die Finger wund suche, dachte ich ich frage mal hier. Ich habe mit einem Atmega wichtige Daten auf einer MMC-Karte abgelegt. Die Daten werden vom Controller auf die Karte geschrieben und mittels PC ausgelesen. Jetzt ist es aber wichtig, dass wenn die Karte in falsche Hände gerät sie nicht auf den ersten Blick (vielleicht auch nicht auf den zweiten, dritten,...) direkt gelesen werden kann. Klar habe ich im Netz alles mögliche gefunden. Meist brauchen die Verfahren aber riesen RAM (max. 512 könnte ich noch liefern) und sind gähnend langsam bzw. brauchen viel Platz im Flash. Ich habe auch schon versucht den eingebauten Passwortschutz der MMC-Karte selbst zu nutzen. Ich kann diese zwar mit dem Controller sperren und entsperren, dann kann aber Windows bzw. der Kartenleser nicht mehr darauf zugreifen. So wie ich das sehe gibts 2 Möglichkeiten. Entweder eine gute Verschlüsselung bei der sich Controller und PC über das Passwort einig sind, oder ich kann Windows dazu bewegen die Karte irgendwie kurz per SPI anzusteuern oder so um sie zu "unlock"en. Kennt vielleicht jemand eine fertige "verschluesselung.c" oder hat andere Ideen? Wäre euch sehr dankbar.
Hm.. also nen CBC ( http://de.wikipedia.org/wiki/Cipher_Block_Chaining_Mode ) sollte auf nem MC recht leicht zu machen sein, vieleicht reicht dir aber auch schon eine Cäsar Chiffre (http://de.wikipedia.org/wiki/C%C3%A4sar-Chiffre) mit täglich wechseldem Schlüssel (also du machst dir halt ne interne Liste so das jeden Tag ein anderer Schlüssel verwendet wird)
Hallo, keine Ahnung, wie sicher die Daten wirklich sein müssen, also wieviel Aufwand derjenige reinsteckt, wenn er die Karte in die Hände bekommt. Gegen verlorene und zufällig gefundene Karte würde es vermutlich schon reichen, wenn ohne Dateisystem geschrieben und gelesen wird. Die Karte also formatiert lassen, aber RAW-Daten schreiben und am PC lesen. Dann muß die PC-Software nur wissen, in welchen Sektoren die Daten liegen. Wenn ich so eine Karte finden würde, würde ich sie in meinen Reader stecken, feststellen, daß es eine leere formatierte Karte ist und die für mich benutzen. Wenn die Daten so kritisch sind, daß jemand die Karte klaut, weil er an die Daten will, wird es wohl schwieriger, das wäre dann wohl der "zweite Blick". Da wäre ja dann auch die Frage zu klären, ob er die passende PC-Software auch gleich mit klauen kann... Gruß aus Berlin Michael
Ich würde auch ein Dateisystem draufspielen mit ein paar Dummy-Dateien, und die echten Daten dann Sektorweise woandershin schreiben (wie schon von Michael U. gesagt, umhüllt von ein paar Sektoren mit zufälligen Daten). Außerdem kannst Du noch relativ einfach "verschlüsseln", indem Du Dir einen Satz ausdenkst, diesen als String im uC speicherst und jedes zu schreibende Byte mit einem Offset speicherst, das dem nächsten Zeichen in dem Satz entspricht. Das PC-Programm machst Du so, daß man diesen Satz eingeben muß beim Programmstart. Wenn der Dieb nicht gerade in der Lage ist, mit dem uC Testdaten zu erzeugen, sollte das nicht so leicht zu lesen sein. Die o.g. Verfahren sind natürlich noch sicherer.
Hallo, @Carsten Pietsch: Deine Idee mit dem Satz gefällt, muß ich mir mal merken. Offset würde ich aber vermutlich nicht nehmen, daß könnte Chaos geben, ein simples XOR mit dem ASCII des Buchstaben sollte es auch tun. Ob ich Dummy-Dateien rauflegen würde, weiß ich nicht so recht, die Karte formatieren und dann alle Datensektoren mit Zufallswerten belegen außer FAT usw. natürlich, das kann ja das PC-Programm erledigen. Irgendwo mittendrin noch eine Kennung, an der der ATMega erkennt, daß es eine gültige Karte ist. Das sollte auch Hexeditor-Freaks erstmal etwas hilflos schauen lassen. Bei geziehlten Angriffen sieht das sowieso anders aus, da beschafft sich der Interessent dann sicher auch mehr Informationen und er weiß dann sicher auch, was er als Daten erwartet. Gruß aus Berlin Michael
Hallo, ich würde auf das Verstecken der Daten irgendwo im Dateisystem verzichten. Das macht die Programmierung der PC Software unnötig kompliziert. Es gibt auch Verschlüsselungsalgorithmen, die sehr wenig Speicher brauchen und problemlos auf einem µC implementiert werden können. Beispiele dafür sind XXTEA und RC4. Gruss Jakob
Schreibe doch einfach die invertierten Daten als Rohdaten auf die Karte. Wenn jemand die Karte in seinen Kartenleser steckt, hat er nichts davon, da kein Dateisystem vorhanden ist. Und wenn jemand genauer hinschaut, sieht er nur Bytes und keinen Klartext oder ähnliches und wer kommt schon auf die Idee, dass er es einfach nur invertieren muss.
Hallo, wow das ging ja schnell! Schonmal danke für die guten Antworten. Ein Dateisystem nutze ich momentan sowieso keines. Allerdings beginnen meine Daten ab Sektor "0" und dadurch wird ja die FAT schon unbrauchbar (das könnte man aber ja noch ändern). Allerdings ist mir "etwas mehr" Sicherheit schon wichtig. AES oder sowas kommt wohl wegen den großen S-Boxen nicht in Frage. Mit gefällt die Idee von Carsten Pietsch mit dem Satz und der XOR-Erweiterung von Michael U. ebenfalls ganz gut. Danke. @ Jakob Lell RC4 habe ich mir schon angesehen, das wäre eine Idee. Allerdings stört mich bei Wikipedia dazu der Text: "Die Sicherheit eines solchen Verfahrens ist nur gewährleistet, wenn sich die Zufallsfolge nicht wiederholt. Daher darf der Schlüssel bzw. das Passwort nur einmalig verwendet werden." Soll das jetzt heißen ich müsste im Programm und im µC für jede Karte und jede Übertragung das PW wechseln. Eigentlich wollte ich sowas wie EIN PW für ALLE meine Karten. Aber: VIELEN DANK bis hierher!!!
Hallo, das Problem mit der Widerholung des Passwortes kann man umgehen, indem man jedes mal, wenn man mit dem Beschreiben einer Karte anfängt, der Karte eine eindeutige Nummer vergibt. Das Passwort wird dann aus einem globalen Passwort und der eindeutigen Kartennummer zusammengesetzt. Die Kartennummer kann man als Klartext am Anfang der Karte schreiben. Wenn die Karte nach dem Auslesen erneut verwendet wird, dann braucht man auch wieder eine neue Nummer. Wenn die Nummern auf irgendeinem Grund doppelt vergeben werden, dann wird das ganze jedoch wieder unsicher (dieser Fehler wurde z.B. bei WEP gemacht). Noch besser wäre allerdings ein Blockchiffrieralgorithmus. XXTEA ist auch klein genug für die Implementierung auf einem µC. Gruss Jakob
Man kann uebertreiben. Ein 20bit rueckgekoppeltes Schieberegister genereiert einen Code der sich erst nach 1MBit wiederholt. Damit die Daten verXORt, sollte fuer normale Faelle genuegen.
@ Michael > Wenn ich so eine Karte finden würde, würde ich sie in meinen Reader > stecken, feststellen, daß es eine leere formatierte Karte ist und die > für mich benutzen. Ah, Du bist auch einer von denen, die auf diesen feinen Ausspähtrick abfahren... Beitrag "USB-Stick gesperrt?"
Hallo, @Uhu Uhuhu: ja. Mein Vertrauen in ein paar aufschreiende Tools, falls da was drauf ist und in die Abschottung einer VM ist im Moment noch groß genug. Ich gehe aber davon aus, daß "Otto-Normaluser" das mit einer gefundenen Karte auch auf einem unsicheren System machen würde. Ist aber eigentlich nicht Gegenstand seiner Problematik, denke ich. Gruß aus Berlin Michael
Das mit der 'Standard-Malware' ist nicht das Problem. Wenn ich jemanden ausspähen wollte, würde ich mir die Quellen für einen Trojaner besorgen, kräftig abändern und auf irgend so ein Flashteil packen, das ich dann 'zufällig' dort 'verliere', wo es mit einiger Wahrscheinlichkeit von meinem Opfer gefunden würde. Da hilft der beste Virenscanner nix... Aber vielleicht ist das ja auch eine geschickte Methode, den Inhalt der Karte vor zu langen Augen zu schützen - man muß nur die eigenen Rechner gegen das eigene Zeug immunisieren. Der Trojaner kann gleich den unehrlichen Finder übers Internet melden!
@Uhu Uhuhu genau so werd ichs machen ;-) Man könnte aber auch noch nen Controller einbauen, der die Karte automatisch selbst zerstört, wenn sie in einen fremden Rechner kommt. ... Jetzt aber Spass beiseite. Ich denke, ich werde die XXTEA-Methode mal probieren oder weil einfacher die Sache mit dem Schieberegister.
Hallo, ein 20 bit Schieberegister ist sehr unsicher. Wenn man einige Megabyte Daten bekommt, die damit verschlüsselt sind, und die Daten eine gewisse Redundanz haben, dann ist ein Wiederherstellen der Daten möglich. Es wäre selbst dann möglich, wenn das Schieberegister "echte" Zufallszahlen erzeugen würde, die sich lediglich alle 1 Mbit wiederholen. In der Realität ist die Zahl der möglichen Rückkopplungen im Schieberegister begrenzt, so dass man durch ausprobieren aller möglichen Varianten relativ schnell den Schlüssel bekommen würde. Gegen zufällige Finder, die nur die Speicherkarte wollen und kein ernsthaftes Interesse an den Daten haben, ist das natürlich ausreichend. Wenn die Daten wichtig sind und der Angreifer bereit ist, ein paar Tage/Wochen Arbeit und CPU Leistung einzusetzen, dann ist die Sache definitiv zu unsicher. Gruss Jakob
Also doch am besten XXTEA. Ich habe jetzt da auch schon ein bisschen was dazu gelesen. Es scheint für einen µC wirklich ganz gut geeignet zu sein... Wie steht es denn da mit der Sicherheit, wenn z.B. µC und PC immer das selbe Passwort für alle Karten verwenden. Mal abgesehen davon, dass man es aus dem PC Programm extrahieren könnte... Ich denke da an sowas wie: PW wird in PC und µC einmal gesetzt und bleibt solange bis der Nutzer es irgendwann bei Bedarf mal ändert. Angenommen ein Kartenfinder kennt das PW von PC und µC NICHT, hat aber mehrere Karten in die Finger bekommen. Hat er dann eine Möglichkeit das PW bei XXTEA schnell zu entschlüsseln?
Hallo, bei XXTEA kommt der Angreifer nicht weiter, wenn er mehrere Karten bekommt, die mit dem gleichen Schlüssel verschlüsselt wurden (Es sei denn er findet eine Schwachstelle in XXTEA). Das ist auf jeden Fall wesentlich sicherer als ein einfaches Schieberegister. Allerdings sollte man einen Modus wie CBC verwenden, damit der Angreifer nicht einfach erkennen kann, dass zwei bestimmte Datenblöcke identisch sind. Gruss Jakob
@ Jakob Lell Alles klar, dann werd ich das mal versuchen... VIELEN DANK!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.