NFC/RFID Software zum einfachen Bezahlen

bennemann8

Cadet 2nd Year
Registriert
Okt. 2010
Beiträge
21
Hallo zusammen,

Ich bin mir nicht sicher, ob ich auch nur ansatzweise im richtigen Forum unterwegs bin, aber eventuell kann mir der ein oder Andere ja trotzdem helfen

Also es geht um folgendes.. Und zwar möchte ich einfach mal etwas probieren, basteln, mein Wissen erweitern.
Viele von Euch kennen doch sicherlich das kontaklose Bezahlen während Großveranstaltungen, wie z.B. "Auf Schalke".
Dort wird mit der "Knappenkarte" bezahlt.

Man geht zu einem Aufladestand, lädt seine Karte mit einem gewünschten Geldbetrag auf und kann danach an Getränke- und Imbissständen in der Arena damit bezahlen.
Wenn man sich dann ein Bier kauft, gibt man seine Karte ab, diese wird eingelesen und der Preis des Bieres wird von dem Guthaben auf der Karte abgezogen, fertig..

Kann mir vielleicht jemand Informationen, bzgl. NFC oder RFID geben, ertwas genauer erklären, wie und mit welcher Technologie das ganze funktioniert und wie ich sowas selbst realisieren kann?

Ich würde das ganze gerne "nachbauen" für sagen wir folgendes Szenario:
Großes Stadtfest bei Dir zu Hause. 100te Besucher haben sich auf dem Marktplatz versammelt und wollen Getränke an den Ständen kaufen. Jeder Besucher hat so eine Karte und soll damit bezahlen. Die Kellner, bedienen auch an den Tischen, sodass Kunden auch bei den "mobilen" Kellnern bestellen und mit der Karte bezahlen können. Die Kellner sind dabei mit einem NFC Smartphone ausgerüstet.
Aufgeladen kann die Karte an einem der vielen Aufladestationen, oder bei den Kellnern. Außerdem soll jeder Besucher, der über ein passendes Smartphone verfügt, den aktuellen Kontostand seiner Karte und einen Log seiner letzen Bestellungen erfahren können.

Total egal, wie groß der Aufwand für ein solches Vorhaben ist, ich habe Zeit.
Es wäre der Hammer, wenn mir jemand ein wenig mehr über den ganzen Ablauf erklären könnte und was alles benötigt wird, um ein solches Vorhaben zu realisieren.

Vielen Dank schon einmal in Voraus und einen erfolgreichen Start in die neue Woche ;)
Jakob
 
Ganz einfach... jede Karte hat nur eine ID, ansonsten ist nichts auf der Karte gespeichert. Alles wichtig liegt in einer Datenbank. Die Lesegeräte stellen ne Verbindung zum Server her und fragen die Infos zu der ID ab. Bei deinem Szenario wäre das der Kontostand.
Dann können die Lese / Schreibgeräte diesen noch aktualisieren (Kontostand erhöhen oder senken). Fertig.
 
Benzer schrieb:
Ganz einfach... jede Karte hat nur eine ID, ansonsten ist nichts auf der Karte gespeichert. Alles wichtig liegt in einer Datenbank.
So die Theorie. In der Praxis sieht es stellenweise anders aus.
Die Universitäten in Dresden (+deren Außenstellen) hatten früher ein Mensa-Bezahlsystem namens eMeal, ein Chip für den Schlüsselanhänger. Ich weiß nicht, ob das Ding heute noch im Einsatz ist. Die erste Version des eMeal war tatsächlich so gestrickt, dass die Kontodaten auf dem Chip selbst gespeichert wurden. Das führte logischerweise dazu, dass Studenten sich einfach n Lesegerät gekauft haben und dann das Guthaben manipuliert wurde. Um das zu verhindern wurden dann Schattenkonten eingerichtet. Jeder Chip kannte sein Guthaben, aber parallel wurde immer mit einem Server abgeglichen. Dadurch sind die Manipulationen aufgeflogen.

Du kannst durchaus alle relevanten Daten auf dem Chip speichern, wenn:
- die Daten stark genug verschlüsselt sind, um Manipulation zu verhindern
- zur Sicherheit trotzdem immer wieder mit einer vertrauenswürdigen Stelle (dem Server) abgeglichen wird
 
Stimmt... jetzt wo du es sagst.. da war mal was. Man kann natürlich alles mögliche an Daten auf die Dinger legen bis sie voll sind.
Sinnvoll ist natürlich nur mein oben beschriebener Weg. Abgleiche mit sicherer Infrastruktur, verschlüsselte Karten & Verbindungen sind bei sowas natürlich eine Grundvoraussetzung.
 
Ja, vor 15 Jahren hatten sie's noch nicht so mit abgesicherter Infrastruktur. Vor ~15 Jahren konntest du auch in Dresdner Straßenbahnen gratis surfen, nachdem du mal ne Stunde deren Funk abgehört und die WEP-Verschlüsselung geknackt hast....
 
danke für die Antworten.
Meine erste Überlegung war auch, nur eine ID zu speichern und alles auf einer DB zu lagern. Aber eine MySQL DB ist ja theoretisch auch ziemlich einfach zu knacken, oder nicht?
Habt ihr irgendwelche Empfehlungen für bestimmte Karten und deren Verschlüsselung? Es gibt ja recht viele..
 
bennemann8 schrieb:
Meine erste Überlegung war auch, nur eine ID zu speichern und alles auf einer DB zu lagern. Aber eine MySQL DB ist ja theoretisch auch ziemlich einfach zu knacken, oder nicht?
Auch wenn MySQL, wie jedes andere Stück Software, gelegentlich mit Sicherheitslücken zu kämpfen hat, so ist MySQL doch alles andere als einfach zu knacken. Wie willst du in die Datenbank eindringen, wenn sie nur vom Localhost oder einigen wenigen vertrauenswürdigen IPs (Mitglieder eines Clusters, z.B.) angesprochen werden kann?

Die Sicherheit deiner Daten hängt fast ausschließlich von der Sicherheit deiner Abstraktionsschicht ab. Die Software, die zwischen der Hardware (dem Lesegerät) und der Datenbank vermittelt, entscheidet über Wohl und Wehe. Ist dasselbe wie bei anfälligen Webseiten: Wenn der Programmierer der Seite geschlampt hat, können Unbefugte Schabernack in der Datenbank treiben, obwohl der Datenbank-Dienst selbst nicht verwundbar ist.

Dein Flow wird am Ende in etwa folgender sein:
Hardware-Lesegerät => Client-Software, die das Lesegerät selbst steuert => Server-Schnittstelle, die von den Clients angesprochen wird => Datenbank, die von der Server-Schnittstelle angesprochen wird
Sicherheitsprobleme könnten hier z.B. bei der Kommunikation zwischen der Clientsoftware und dem Server stattfinden, wenn du z.B: nicht verschlüsselst.

NIE NIE NIE sollte eine Einzelplatz-Anwendung direkt mit einer globalen Datenbank kommunizieren dürfen.
 
Daaron schrieb:
Du kannst durchaus alle relevanten Daten auf dem Chip speichern, wenn:
- die Daten stark genug verschlüsselt sind, um Manipulation zu verhindern
- zur Sicherheit trotzdem immer wieder mit einer vertrauenswürdigen Stelle (dem Server) abgeglichen wird

Wenn du den Betrag eh vom Server holst brauchst du auch nicht verschlüsseln, oder übersehe ich da was? Also ich würde auf der Karte einfach eine zufallsgenerierte Id und den aktuellen Betrag als Text speichern, dann braucht er sich auch keinen Kopf mehr um ein Webfrontend zur Abfrage der Beträge machen. Wer wissen will, wieviel noch auf der Karte ist hält sein Handy dran und bekommt einen Betrag als Klartext zurück.

Edit: Mal weitergesponnen hieße das, dass wirklich nur die Kellnerhandies an die Daten kommen müssen, dann könnte man das mit einem Raspberry Pi und ein paar W-Lan Extendern auf den Bierwagen schön im eigenen Netzwerk lassen (und hat keine weiteren Kosten für einen Server).

Edit2: Für die Leute ohne NFC Handy könnte man an jeden Bierwagen noch einen Raspi hängen, Raspbi kommt 50€, NFC Modul 20€, dann kann man da noch ganz posh einen Quittungsdrucker dranhängen und am Ende wenn abgerechnet wird könenn die Bedienungen zur Not gleich noch eine Quittung mitgeben.
 
Zuletzt bearbeitet von einem Moderator: (Typo)
mambokurt schrieb:
Wenn du den Betrag eh vom Server holst brauchst du auch nicht verschlüsseln, oder übersehe ich da was?
Wahrscheinlich nicht, nein.
Eine Variante ist eben die mit Schattenkonten. Der Chip kennt durchaus seinen Wert und kann ihn auch nem Lesegerät mitteilen, aber gebucht wird nie vom Chip sondern von einem realen Konto auf dem Server.
 
Du solltest dich als erstes in die Materie RFID belesen. Hierzu empfehle ich dir das Buch: RFID Handbuch von Klaus Finkenzeller

Die heutigen Transponder sind schon ziemlich sicher und Passwortgeschützt. Dazu zählen unter anderem Mifare Plus (mit AES-128), Mifare DESFire, Mifare Ultralight C und die NTAG´s 21x (ECDAS). Siehe auch Gedanken für Fahrscheine. Du kannst eine Datenbank verwenden, musst du aber nicht (Prepaid-System).

Du wirst viel Programmieren und dich auch in die Architektur dieser Transponder einlesen müssen. Dazu kannst du dessen Datenblätter von NXP verwenden.

Benzer liegt erstmal falsch. Du kannst einiges auf die Karte speichern. Auf die UID des Transponders sollte man sich nicht festlegen, da diese simuliert werden kann, wie hier schon beschrieben wurde. Du solltest also die Nutzer-ID in einen Passwortgeschützten Sektor des Transponders ablegen

Na dann viel Erfolg...

Edit: RFID Reader gibt es auch für wenig Geld
http://www.amazon.de/Reader-Arduino...F8&qid=1430214482&sr=8-9&keywords=rfid+reader

Edit2: Eine Peer-to-Peer Verbindung mit einem NFC-fähigem Handy wäre auch sinnvoll. Es muss aber eine sichere App geschrieben werden.
 
Zuletzt bearbeitet:
Zurück
Oben