{"id":439,"date":"2007-12-28T23:52:52","date_gmt":"2007-12-28T21:52:52","guid":{"rendered":"http:\/\/www.mitternachtshacking.de\/blog\/439-24c3-mifare"},"modified":"2018-05-31T16:45:59","modified_gmt":"2018-05-31T15:45:59","slug":"24c3-mifare","status":"publish","type":"post","link":"https:\/\/www.mitternachtshacking.de\/blog\/439-24c3-mifare","title":{"rendered":"24C3: Mifare"},"content":{"rendered":"<p>Der Mifare-Chip von Philips ist ja schon seit geraumer Zeit ein Thema, insbesondere der Mifare Classic, weil Philips bei diesem Chip nicht herausr\u00fccken will, wie die Verschl\u00fcsselung funktioniert. Das Thema ist jetzt durch <a href=\"http:\/\/events.ccc.de\/congress\/2007\/Fahrplan\/events\/2378.en.html\">Henryk Pl\u00f6tz und Karsten Nohl<\/a> haben sich die Arbeit gemacht, den Chip aufzus\u00e4gen, zu analysieren und ein komplettes Reverse Engineering der Transistoren durchzuf\u00fchren. Das Ergebnis ist erschreckend.<\/p>\n<p>Ein gro\u00dfer Teil der Arbeit, insbesondere die Kommunikation zwischen Kartenleser und Chipkarte wurde mit Hilfe der hervorragenden Arbeit von Milosch Meriac durchgef\u00fchrt, der <a href=\"http:\/\/www.openpcd.org\/\">OpenPCD und OpenPICC<\/a> entwickelt hat.<\/p>\n<p>Bekannt ist schon l\u00e4nger, dass Mifare Classic einen propriet\u00e4ren Algorithmus verwendet, der einen 48-Bit Schl\u00fcssel verwendet (und damit eigentlich schon zu kurz f\u00fcr kommerzielle Anwendungen ist). Der Algorithmus war jedoch geheim. Henryk und Karsten haben den Algorithmus analysiert (allerdings noch nicht ver\u00f6ffentlicht), der auf einem einfachen LSFR basiert. Es gibt keine nicht-linearen Komponenten im Feedback, der Algorithmus bietet daher keine Forward Security. Hintergrund ist vermutlich, dass ein explizites Designziel eine geringe Komplexit\u00e4t war, um den Algorithmus mit wenig Transistoren und wenig Energie durchf\u00fchren zu k\u00f6nnen.<\/p>\n<p>Eine weitere Schwachstelle ist der Zufallszahlengenerator, der sich ausschlie\u00dflich \u00fcber die Zeit seit Aktivierung initialisiert. In Tests konnten die Referenten zeigen, dass durch geschicktes Timing immer die gleichen &#8222;Zufallszahlen&#8220; produziert werden.<\/p>\n<p>Eine dritte Schwachstelle ist die Verkn\u00fcpfung von UID und Key in der Verschl\u00fcsselung. Die UID l\u00e4sst sich beim Senden mit OpenPICC f\u00e4lschen (sie steht jedoch auch in Block 0 und kann dort nicht ver\u00e4ndert werden aber das pr\u00fcfen die meisten Leser nicht ab) und der Key passend w\u00e4hlen, so dass der Reader meint, er hat einen anderen User authentisiert. Das ist m\u00f6glich, ohne dass man den Key des eigentlichen Users kennen muss.<\/p>\n<p>Das Fazit:<\/p>\n<p>1. Security by Obscurity funktioniert nicht. Allerdings kriegt Philips ja <a href=\"http:\/\/www.amazon.de\/Philips-GoGear-SA-1110-MP3-Player\/dp\/customer-reviews\/B000FGWKWA\">bei MP3-Playern schlechte Kritiken<\/a>, warum soll das bei Chipkarten so viel besser sein?<\/p>\n<p>2. Mifare Classic ist quasi tot. Es ist nur noch eine Frage der Zeit bis der Algorithmus ver\u00f6ffentlicht ist und dann werden sich die Kryptoanalytiker drauf werfen und alle Schw\u00e4chen finden.<\/p>\n<p>3. Es wird Zeit zu migrieren.<\/p>\n<p>Eine Antwort von Philips steht \u00fcbrigens noch aus.<\/p>\n<p>F\u00fcr mein Verst\u00e4ndnis war das der wichtigste Vortrag bisher auf dem ganzen Congress. Was mich ein wenig wundert ist, dass Heise zu diesem Thema gar nichts schreibt. Immerhin ist der am weitesten verbreitete RFID-Chip betroffen. Aber vielleicht war das Marketing des Vortrags nicht gut genug? \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der Mifare-Chip von Philips ist ja schon seit geraumer Zeit ein Thema, insbesondere der Mifare Classic, weil Philips bei diesem Chip nicht herausr\u00fccken will, wie die Verschl\u00fcsselung funktioniert. Das Thema ist jetzt durch Henryk Pl\u00f6tz und Karsten Nohl haben sich die Arbeit gemacht, den Chip aufzus\u00e4gen, zu analysieren und ein komplettes Reverse Engineering der Transistoren [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[13,8],"tags":[],"_links":{"self":[{"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/posts\/439"}],"collection":[{"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/comments?post=439"}],"version-history":[{"count":0,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/posts\/439\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/media?parent=439"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/categories?post=439"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mitternachtshacking.de\/blog\/wp-json\/wp\/v2\/tags?post=439"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}