Hallo! Da ich ein sensibles Projekt mit Mifare-Chipkarten plane brauche ich so viele Informationen wie möglich zur Sicherheit dieser Karten. Was ich schon rausgefunden habe: - die Karte hat einen EEPROM mit 1 KB, unterteilt in 16 fixe Sektoren mit je 4 Blöcken a 16 Byte - für jeden Sektor gibt es zwei Schlüssel A und (optional) B mit 48 Bit Länge zur Verschlüsselung - die Schlüssel sind im EEPROM der Karte hinterlegt - will man mit einem Lese/Schreibterminal Daten bearbeiten muss man durch einen 3-stufigen Authentifizierungsprozess, bei dem vom Lesegerät und der Karte testweise zufällige Daten generiert werden, dieser werden verschlüsselt. Wenn die Verschlüsselung gleich ist, sind die Schlüssel gleich und der Zugang wird vom Crypto-Prozessor gewährt Mögliche Angriffsmöglichkeiten: - Brute-Force: sollte bei 48 Bit möglich sein - aber: die Karte braucht rund 500 ms für eine Antwort, d.h. es würde dann doch 4,5*106 Jahre dauern - EEPROM direkt auslesen: wenn man die Karte physisch zerstört und irgendwie an das EEPROM rankommt, die verschlüsselten Daten ausliest (da man ja die Authentifzierung durch den Crypto-Prozessor umgeht) und nun den 1KB-Block verschlüsselt auf der Festplatte liegen hat. Vielleicht kann man nun eine schnellere Brute-Force-Attacke starten? Oder liegt dort der Schlüssel im Klartext? - Lesegerät angreifen: Im EEPROM eines Leseterminals ist auch der Schlüssel gespeichert. Wenn man an diese EEPROM rankommt kann man evtl. auch den (im Klartext vorliegenden?) Schlüssel auslesen? Bin für Hinweise dankbar und hoffe dass sich Mifare wirklich als sehr sicheres System herausstellt. Viele Dank an alle für Antworten! Gruß Alan
die frage wäre auch noch der eingesetzte verschlusselungsalgorithmus. auf viele gibt es mitlerweile optimierte angriffsmethoden
Das stimmt. Allerdings kann ich mir vostellen dass man die Daten entschlüsseln kann wenn man mal an die Daten rangekommen ist. 48-Bit ist nicht eine allzu sichere Schlüssellänge. Das EEPROM wird wahrscheinlich zusammen mit dem Crypto-Prozessor in einem Chip sein. Kommt man dann da noch ran?
würde es nicht reichen, wenn man die kommuniaktion zwischen der karte und dem terminal mitschneidet? wenn der algorithmus schwachstellen hat könnte das auch schon zum zurückrechnen reichen. mit einer man-in-the-middle ähnlichen attcke bräuchte man die karte dann nicht aufschnibbeln
also meiner ansicht nach ist die einzige methode den schlüssel herauszufinden den algorythmus zu kennen. Dann sollte man die kommunikation mitschneiden. Wenn der algorythmus nicht sicher ist, dann könnte man den schlüssel zurückberechnen. (das wär die optimale methode) andernfalls muss man eine brute force routine mit dem algorythmus schreiben, was wesntlich schneller ist als, weil ein PC sicher schneller ist als 500 ms pro berechnung. wenn es immernoch zu lange dauert, muss man halt mehrere rechner rechnen lassen. Aber das a und o ist, den Algorythmus zu kennen. Ohne den stehst du dumm da. Auf was besiert denn das system ? ist da auf der einen seite ein terminal mit einem Prozessor drinne ? oder ein µC ? vielleicht kommt man ja da auf irgendeine weisen an den algorythmus. Alan Graves: hast du ein paar fotos von so einer anlage ? Grundsätzlich würd ich sagen, das system ist knackbar. Gruß
Der Algorithmus könnte DES sein. Und eine Brute-Force-Attacke mit einem oder mehreren PCs ist schon möglich. Nur die Frage ist, wie man das EEPROM auslesen kann. Ein normales Lesegerät lässt einen da ja nicht ran, d.h. man muss den Crypto-Prozessor der Karte umgehen (und somit das Authentifizierungsverfahren) um die 1 KB Daten aus dem EEPROM zu lesen. Nur wie geht das? Und schafft man das überhaupt? Außerdem steht im Datenblatt, das in jedem Sektor auch die beiden Schlüssel gespeichert sind. Sind diese dann im Klartext gespeichert? Irgendein Ur-Schlüssel muss doch mal im Klartext gespeichert sein... Infos und Datenblatt gibts unter http://www.semiconductors.philips.com/markets/identification/products/mifare @Simon: Fotos von der Anlage? Was meinst Du mit Anlage? Gruß Alan
@alan: wenn man sich zwischen die karte und das leseterminal hängt kann man an die daten der karte rankommen. zwar nur verschlüsselt aber es ist möglich. ausserdem würd ich keiner lösung vertraun, wenn nicht angegeben, welchen verschlüsselungsalgorithmus sie benutzt, weil die meisten eigebaulösungen mehr security by obscurity verwenden, und das ist nich so ganz das wahre.
Das heißt also man müsste als Angreifer während der Kommunikation zwischen einem authentifizierten Lesegerät und der Karte die Funkübertragung mitschneiden? Die Frequenz und das Funkprotokoll sind in der Norm ISO14443A geregelt...es sollte also für einen elektronik-versierten Angreifer möglich sein, eine solche "Abhöreinrichtung" zu bauen? Hat man aber nur die Karte, kommt man dann an die (noch verschlüsselten) Daten ran? Das EEPROM muss doch auslesbar sein, wenn man die Karte auseinander nimmt, oder?
Der verwendete Verschlüsselungsalgorithmus nennt sich CRYPTO1. Dabei handelt es sich um einen properitären, geheimen Algorithmus von Philips. Diesen Algorithmus rauszukriegen wird wohl sehr schwer bis unmöglich sein.
Da die Datenübertragng per Funk erfolgt wär es schwachsinnig anzunehmen das die Entwickler der Karten diese Übertragung unverschlüsselt ablaufen lassen. Viel eher wird es sein das man die Daten + zufallswerte verschlüsselt überträgt. Hat man den Schlüssel nicht so kann man auch nichts relevantes aus dem Abhören der Datenübertragung in Erfahrung bringen. Desweiteren kann man vermuten das die Daten in den EEPROM Sektionen ebenfalls verschlüsselt gespeichert sind. Selbst wenn man also diese "einbruchsichere" hardware analysieren könnte so muß man nach dem Auslesen der Daten diese noch entschlüsseln. Dort wäre der Aufwand eine Brute Force Attacke mit 2^48 Schlüsselmöglichkeiten. Man hätte dann aber nur einen einzigsten Schlüssel gekackt und kann damit nur eine der EEPROM Sektionen lesen. RFID Systeme sind durch Kryptoexperten entwickelt mit den Schwerpunkten: sichere Authentifizierung, sichere Datenübertragung, sichere Datenspeicherung, einbruchsichere Hardware. Gruß Hagen
@Hagen: Keiner hat davon gesprochen dass die Übertragung nicht verschlüsselt sein sollte...selbstverständlich ist sie das. Es geht nur darum wie sicher das ganze ist und welche Angriffsmöglichkeiten vorhanden sind. Mifare-Karten sind für mehrere Anwendungen ausgelegt. Meist genügt einer Anwendung ein Sektor, so dass 16 verschiedene Anwendungen auf einer Karte möglich sind. Will man die Daten von einer bestimmten Anwendung entschlüsseln, genügen die zwei Schlüssel dieses einen Sektors. Allerdings ist der Schlüssel im EEPROM hinterlegt (siehe Datenblatt). Und hier muss er ja dann im Klartext vorliegen bzw. mit einem festen Algorithmus verdrehten Code, sonst kann die Karte selbst ja auch nicht mehr darauf zugreifen. Die Frage ist nun: Kommt man an das EEPROM ran und an die Schlüssel?
@hagen ein kleines gegenbeispiel namens wep... ich denk du weisst worauf ich hinaus will ;) wurde auch von experten lange dran rumgewerkelt und als gut erachtet, ist aber mitlerweile selbst bei längeren schlüsseln als 48bit innerhalb weniger stunden zu knacken... das ein verfahren noch nicht geknackt wurde heisst evtl nur, dass es nur noch nicht der richtige versucht hat... deshalb würde ich mehr auf lösungen vertrauen, die erprobte verschlüsselungsverfahren einsetzten, die in einem offenen wettbewerb gezeigt haben, was sie halten, wie z.b AES. daran hat sich schon bevor es als neuer standard auserkoren wurde die kryptoexperten elite dieser welt dran versucht und auch jetzt hat man es nur geschafft die dauer zum knacken eines schlüssels von zig milliarden jahren auf einige tausend milliarden jahre zu drücken. die frage ist, ob das beim ominösen crypto1 auch so lange halten würde. eine gute verschlüsselung sollte auch absolut sicher sein, wenn der algorithmus bekannt ist, denn sonst kann es mit der sicherheit sehr schnell am ende sein weil du keinen direkten einfluss mehr drauf hast. ein sicherheitsleck bei philips, ein erfolgreicher hack, ein korrupter mitarbeiter, eine neugierige putzfrau, usw... das findet sich alles locker in unter 100 milliarden jahren ;)
Tobi, ich stimme dir da in allen Punkten zu. Klar sollte man Algos wie AES nutzen statt Crypto1, nur sehe ich da eben auch ein technisches Problem der Mifare Architektur. Immerhin ist da drauf kein 1GHz Prozessor und somit wird der Crypto1 Cipher ziemlich schlecht sein. Auch ein Grund warum er wahrscheinlich nicht veröffentlicht wurde. Meine Vermutung, ausgehend von der geringen Rechenpower die verfügbar ist, wäre das Crypto1 nichts anderes als eine XOR Verschlüselung ist die durch ein/zwei gekoppelte LFSR gefüffert wird. Dies würde auch die Schlüssellänge von nur 48 Bits erklären, die ist ideal für größere LFSR's oder SR-LFSR (Self Shrinking LFSR). Die BasicCard hat auch lange zeit ein solches Verfahren verwendet. Ok das sind alles Spekulationen. Eine nützliche Frage ist ob in den Datenblättern irgendwas über zwei getrennte Schlüssel-teile steht. Also einmal der 48 Bit Schlüssel und dann noch ein "fester" Schlüssel mit 48 oder 96 Bit Größe. Falls ja dann wäre der zweite Schlüsselteil nichts anderes als das Polynom der LFSR's. Es wäre also ein Indiz. Gruß Hagen
Und den internen Controller irgendwie anzapfen und so an den Algorithmus kommen, das geht nicht? Praktisch den Quellcode lesen?
http://events.ccc.de/congress/2007/Fahrplan/attachments/1049_CCC-07-Mifare-v2.pdf Seite 17. Hagens Vermutung passt
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.