Schlüssel erzeugen



  • @xcxcyxcyc:
    Dein Verfahren basiert darauf das es geheim bleibt. Und das ist einfach nicht gegeben.

    Sobald dein System interresant wird, wird jeder deinen Chip auslesen und die Daten analysieren. Und dann weis ein jeder dein Verschlüsselungssystem inklusive Schlüsselgenerierung. 😞

    Eine konstante Byte Folge ist da sogar noch schlimmer als deine erste Variante, da ein geknacktes System alle Chipkarten betrifft. Aber die zweite Variante ist auch nicht besser: die Seriennummer eines Chips zu bestimmen ist kein Problem. Im schlimmsten Fall reduziert sich das Knacken darauf alle Seriennumern zwischen 100000001 und 200000000 auszuprobieren. Und das sind schlichtweg Peanuts.



  • Das ist wahr, Security through obscurity hat schon immer versagt.



  • die verschlüsselte Kommunikation ist grundsätzlich hardwareseitig implementiert.
    Somit kann ich theoretisch meine Daten in Klartext raufschreiben.

    Praktisch aber ist bei einem gewünschten Hardwaresystem die Verschlüsselung bereits geknackt (Mifare Classic). Der Kunde besteht aber auf diesem Kartentyp.

    Um Skript Kiddies davon abzuhalten, eine Karte mit Geld zu bespielen und dann ein Image zu ziehen und dieses auf eine andere Karte zu spielen, ist es wichtig, dass die Daten in verschlüsselter Form zumindest nicht auf jeder Karte gleich aussehen.
    Dadurch, dass ein Teil von der Chipkarten Nummer abhängt, ist zumindest ausgeschlossen, dass jemand mal schnell mit einer App irgendsolche Dinge macht.
    Dazu müsste man schon mal die Daten entschlüsseln, mit dem neuen Schlüssel verschlüsseln und dann wieder auf die Karte spielen.

    **Welche andere Möglichkeit gibt es denn? Ich bin offen für neue Ideen.**Wie bereits gesagt - der Kartentyp ist vorgegeben und bekannterweise unsicher.
    Es gibt die Funktionen Lesen von Blöcken und Schreiben von Blöcken, welche jeweils 16byte groß sind.
    Aus Performancegründen muss mit diesen Funktionen aber sparsam umgegangen werden.
    Die Anzahl zu sammelnder "Samples" ist aufgrund der Anwendung eher gering. Es wird kaum möglich sein, mit einer Karte mehr als 100 Transaktionen durchzuführen.



  • vor allem auch die Frage: Ist es überhaupt möglich, mit diesen max. ca. 100 Transaktionen auf den Schlüssel + Verschlüsselungsalgorithmus zu kommen?
    Wenn ja, wie?
    Es werden geschätzt ca. 1000-2000 Karten in Umlauf kommen.

    Vor allem liegen die entschlüsselten Daten ja auch nur als Bitstrom mit eingefügten Zufallszahlen vor, sodass man erstmal merken muss, dass es sich bei den Daten jetzt um die entschlüsselten Daten handelt.
    Die mit dem richtigen Schlüssel entschlüssten Daten sehen nicht viel anders aus als die mit dem falschen Schlüssel entschlüsstelten Daten.


  • Mod

    Mehr als ein Scriptkiddieschutz ist mit den gegebenen Bedingungen einfach nicht drin. Wenn der Feind der Besitzer der Karte selbst ist, nützt ja nicht einmal ein Passwort. Ein etwas begabteres Scriptkiddie lacht über diese Pseudosicherheit und lädt einmal viel Geld auf die Karte, speichert das zugehörige Datenmuster und nutzt die Karte nur für sich selbst. Braucht man Geld, spielt man das alte Muster wieder auf. Falls die Karten mit einem Namen verbunden sind, dann stiehlt man einmalig eine Karte. Außerdem verkauft man das Gelddruckgeheimnis noch für ein paar Tacken an den interessierten Laien, denn mit einer Anleitung braucht man nicht einmal Scriptkiddie sein, um die Methode nach zu machen.

    Eine ganz andere Möglichkeit wäre, dass nicht die Karte die Daten speichert, sondern einen Schlüssel und das System die Daten online speichert. Dafür bräuchten alle Terminals ein Verbindung zum Server. Die Karte dient dann als Ausweis für die Daten im Nutzerkonto, das geschützt auf dem Server liegt. Sofern der Schlüssel auf der Karte noch durch ein Passwort gesichert ist, nützt nicht einmal eine gestohlene Karte ohne Passwort. Das wäre dann so ungefähr das System der EC-Karte. Entsprechend aufwändig, aber halbwegs sicher. Natürlich ebenso anfällig gegen die bekannten Attacken auf EC-Karten (manipulierte Terminals), aber das ist schon ein sehr großer Schritt über Scriptkiddie und benötigt organisierte Bandenkriminalität zur Durchführung. Je nach Einsatzzweck lohnt sich das dann nicht.



  • Was wird denn überhaupt genau verschlüsselt? Wie viel Geld auf der Karte ist?



  • Speicher doch einfach die Einheiten des Geldes als eindeutige Nummer einmal auf die Karte und einmal auf den Server. Diese Nummer wird auf dem Server raus gelöscht wenn abgebucht wurde und somit ist diese Nummer nur exakt einmal gültig. Wenn die Nummer geklaut wird, ist sie halt weg, aber kann trotzdem nur einmal gebucht werden. Es ist dann auch egal, ob sie zusätzlich noch einmal verschlüsselt auf der Karte ist, Sie halt nur einmal benutzbar, von dem der sie als erster einsetzt.

    Oder geht so was mit deinem System gar nicht?



  • SeppJ schrieb:

    Eine ganz andere Möglichkeit wäre, dass nicht die Karte die Daten speichert, sondern einen Schlüssel und das System die Daten online speichert. Dafür bräuchten alle Terminals ein Verbindung zum Server. Die Karte dient dann als Ausweis für die Daten im Nutzerkonto, das geschützt auf dem Server liegt.

    Mit Chip-Karten, also Intelligenz in der Karte selbst, sollten diese ganzen Angriffe unmöglich werden, vorausgesetzt es ist ordentlich implementiert. Dann bleibt höchstens noch Seitenkanäle ausnutzen, z.B. den Chip aufätzen und mit dem Mikroskop untersuchen oder ähnliches. Und selbst dann ist das schlimmste, was passieren kann, dass jemand eine Karte kopieren kann. Es findet dabei aber keine Geld-Verdopplung statt, weil auf dem Server zu jeder Zeit der Geldbetrag jeder Karte gespeichert ist.

    Dafür gibt es aber schon fertige Systeme. Oft haben die einen RFID-Chip, weil das für den Nutzer einfach deutlich praktischer ist und beim Bezahlen viel schneller geht, weil man die Karte nicht aus dem Portmonee holen muss. Ohne ordentliches Kryptografie-Wissen seh ich aber keine Chance, das korrekt zu implementieren. Auch größere Firmen haben schon Probleme gehabt, sowas hinzubekommen, siehe https://en.wikipedia.org/wiki/MIFARE#Security_of_MIFARE_Classic.2C_MIFARE_DESFire_and_MIFARE_Ultralight .

    Die U-Bahn- und Eisenbahn-Fahrkarten in manchen Großstädten oder teilweise ganzen Ländern (Japan) funktionieren auf die Weise; in Deutschland seh ich das oft bei Mensa-Karten. Die Mensa-Karten an meiner Uni waren ältere Mifare-Karten und mussten (zu hohen Kosten) ausgetauscht werden, nachdem die im Wikipedia-Artikel genannten Lücken aufgetaucht ist.



  • es ist nicht garantiert, dass ständig eine Online Verbindung vorhanden ist.
    Und es darf hier auch zu keinen Wartezeiten kommen, die Buchung muss in 1s erledigt sein.
    Es ist aber garantiert, dass "ab und zu" (auf jeden Fall mehrmals am Tag) eine Verbindung vorhanden ist.

    Jedenfalls ist die Möglichkeit vorhanden, im Backoffice System die Buchungen zu prüfen. Falls es tatsächlich nicht nachvollziehbare Buchungen gibt, könnte man überlegen, Blacklists zu versenden. Denn zumindest die Chipkartennummer ist fix in der Karte integriert und lässt sich nicht verändern. Auch lässt sich prüfen, ob die Karte tatsächlich vom Unternehmen ausgegeben wurde. Alle anderen Karten kann man von vornherein mal sperren.

    Danke für den Input, werde das mit den zuständigen Leuten nochmal besprechen.



  • Christoph schrieb:

    SeppJ schrieb:

    Eine ganz andere Möglichkeit wäre, dass nicht die Karte die Daten speichert, sondern einen Schlüssel und das System die Daten online speichert. Dafür bräuchten alle Terminals ein Verbindung zum Server. Die Karte dient dann als Ausweis für die Daten im Nutzerkonto, das geschützt auf dem Server liegt.

    Mit Chip-Karten, also Intelligenz in der Karte selbst, sollten diese ganzen Angriffe unmöglich werden, vorausgesetzt es ist ordentlich implementiert. Dann bleibt höchstens noch Seitenkanäle ausnutzen, z.B. den Chip aufätzen und mit dem Mikroskop untersuchen oder ähnliches. Und selbst dann ist das schlimmste, was passieren kann, dass jemand eine Karte kopieren kann. Es findet dabei aber keine Geld-Verdopplung statt, weil auf dem Server zu jeder Zeit der Geldbetrag jeder Karte gespeichert ist.

    Dafür gibt es aber schon fertige Systeme. Oft haben die einen RFID-Chip, weil das für den Nutzer einfach deutlich praktischer ist und beim Bezahlen viel schneller geht, weil man die Karte nicht aus dem Portmonee holen muss. Ohne ordentliches Kryptografie-Wissen seh ich aber keine Chance, das korrekt zu implementieren. Auch größere Firmen haben schon Probleme gehabt, sowas hinzubekommen, siehe https://en.wikipedia.org/wiki/MIFARE#Security_of_MIFARE_Classic.2C_MIFARE_DESFire_and_MIFARE_Ultralight .

    Die U-Bahn- und Eisenbahn-Fahrkarten in manchen Großstädten oder teilweise ganzen Ländern (Japan) funktionieren auf die Weise; in Deutschland seh ich das oft bei Mensa-Karten. Die Mensa-Karten an meiner Uni waren ältere Mifare-Karten und mussten (zu hohen Kosten) ausgetauscht werden, nachdem die im Wikipedia-Artikel genannten Lücken aufgetaucht ist.

    wir stellen nicht die Karten selbst her - sondern müssen eben genau die von dir genannte, unsichere Mifare Karte verwenden.


Anmelden zum Antworten