errox Geschrieben 2. November 2013 Geschrieben 2. November 2013 Hallo Liebe Community, kurz was zu meinem Projekt: Es soll eine Art Open Source Projekt werden für Gutscheine / etc. Ähnlich wie eine Geldkarte. Die Idee: Auf einer Chipkarte ist ein Betrag gespeichert (Simple Zahl) und die hat einen Wert und kann verändert werden. Jedoch kommt hier der Knackpunkt bzw das Interessante. Das soll 110% Sicher sein. SIM Karten und Geldkarten / EC / Kreditkarten sind ja auch Fälschungssicher. Ich kenn niemanden der eine SIM Pin knacken kann. Oder den PIN einer EC Karte. Ich habe bereits auch etwas Rumexperimentiert. Hab mir ein Kartenlesegerät und eine Blanko Chipkarte bei eBay gekauft. Lesen kann ich den Wert. Aber schreiben nur wenn ich den PIN eingebe. 3 mal Falsch -> Karte gesperrt. Gibt es vielleicht andere möglichkeiten sowas zu machen? Das soll 110% Save sein. Es kann auch eine SD Karte sein oder was anderes. Der Lösungsansatz dass ich die ID der Karte nehme und eine Zentrale datenbank nutze in der die Daten gespeichert werden, leider Fehlanzeige. Das soll alles Offline gehen. Hat da jemand erfahrung? Gibts da was? Lesen soll ohne Probleme möglich sein, aber schreiben nur wenn man maximale Rechte hat. Unknackbar. Wie z.B. macht das eine Geldkarte? Ich kann SIe ja auch Über ein Terminal Aufladen, am Zigarettenautomat "leer machen". Aber daheim geht das ja nicht so einfach. Liebe Grüße Zitieren
Schiller256 Geschrieben 2. November 2013 Geschrieben 2. November 2013 (bearbeitet) SIM Karten und Geldkarten / EC / Kreditkarten sind ja auch Fälschungssicher. Ich kenn niemanden der eine SIM Pin knacken kann. Oder den PIN einer EC Karte. Jede Geld/ EC/ Kreditkarte kann man kopieren, soviel zum Thema Fälschungssicherheit. Nur weil diese Kartenkopien in Deutschland nicht an jedem Geldautomaten angenommen werden kann man noch lange nicht von Fälschungssicher sprechen. Du willst das dein System offline läuft also ohne Verbindung zu einer Zentralen Datenbank. Genau hier liegt schon dein Problem. Denn dann musst du wie auch immer die PIN auch auf der Karte speichern. Selbst wenn du sie x-fach gehashed hast liegt sie immer noch auf deiner Karte. Somit ist sie auch auslesbar und damit auch theoretisch knackbar. Hinzu kommt das Zahlen Pin sehr leicht durchzutesten sind. Denn ich habe meist eine range von 4-6 Ziffern die ich eingeben muss. Damit kann man das ganze automatisiert durchlaufen lassen und jeden Hash immer wieder gegen den aus der Karte gelesenen prüfen. Das dauert zwar etwas ist aber mit etwas Rechenleitung (z.B. Raspberry PI Cluster) durchaus machbar. Also für offline Gutscheine würde ich zum Guten alten Papier raten. ;-) Bearbeitet 2. November 2013 von Schiller256 Zitieren
HopelessFrag Geschrieben 6. November 2013 Geschrieben 6. November 2013 Da gibt es mehrere Möglichkeiten: a) Zero-Knowledge Protokolle, z.B. Fiat-Shamir Einfach ausgedrückt versucht hierbei deine Chipkarte das Lesegerät davon zu überzeugen ein Geheimnis zu kennen, ohne es Preis zu geben. Dabei geht man iterativ vor, wobei das Verfahren mit jeder Iteration sicherer wird. Nach n Runden beträgt die Rest-Unsicherheit, dass es sich um eine Fälschung handelt 2^⁻n. Asymmetrische Verschlüsselung, z.B. RSA Der Gutscheinkarten-Aussteller verschlüsselt den Betrag mit einem private key, die Lesegeräte haben einen entsprechenden public key und können die Betrag dementsprechend entschlüsseln. Es kann also nur derjenige einen gültigen Betrag auf die Karte schreiben, der den private key hat. Problem 1: Was ist wenn nur ein Teil des Betrages abgebucht wird und das Restguthaben wieder gut geschrieben wird? Dann müssten alle Lesegeräte auch den private key kennen und es würde einem Angreifer reichen solch ein Gerät in die Finger zu kriegen um beliebige Gutscheine zu erstellen. Problem 2: Was ist wenn der private key bekannt wird? Wie updated man sämtliche Lesegeräte mit einem neuen public key? c) Symmetrische Verschlüsselung, z.B. AES Der Betrag auf der Gutscheinkarte wird durch die Eingabe eines Keys (z.B. Pin) ver- und entschlüsselt. Problem: Jeder kann eine Gutscheinkarte mit beliebigem Pin erstellen. Die Authentizität ist hier nicht gewährleistet. Wie es bei der Geldkarte realisiert ist, wird hier grob erklärt: Sicherheits-Funktionen - Technik der GeldKarte - CHIP Online Zitieren
Crash2001 Geschrieben 7. November 2013 Geschrieben 7. November 2013 Soweit von der Theorie her schön und gut, nur alle von dir genannten Verfahren haben ihre Sicherheitslücken und/oder benötigen eine Anbindung ans Netz. Beim Fiat-Shamir-Protokoll wird eine dritte vertrauenswürdige Partei benötigt und zudem hat auch dieses Verfahren Sicherheitslücken und man muss sich mehrfach authentifizieren, damit es sicher ist. (1x => 50% unsicher, 2x => 25% unsicher, 3x => 12,5% unsicher, u.s.w.) siehe hier Wenn Schlüssel verwendet werden, muss der öffentliche Schlüssel auf der Karte bzw. auf der Lesestation hinterlegt sein, damit eine verschlüsselte Verbindung aufgebaut werden kann. Nur welche Schlüssel sind denn alle erlaubt und dürfen z.B. auf die Karte schreiben? So könnte sich jeder einfach einen Schlüssel generieren und dann darüber die Daten auf der Karte verändern. Reine symmetrische Verschlüsselungen sind ebenso unsicher. Da könnte man doch genausogut auch direkt eine reine Geldkarte nehmen und die Karte selber halt nur anders gestalten. Damit könnte man dann auch ohne neuartige Kartenlesegeräte die Karten direkt nutzen, wenn ein entsprechendes Gerät in dem Laden bereits verfügbar ist. Wer EC-Zahlung akzeptiert, der kann afaik normalerweise auch Geldkartenzahlungen akzeptieren mit dem gleichen Gerät. Zitieren
HopelessFrag Geschrieben 7. November 2013 Geschrieben 7. November 2013 Beim Fiat-Shamir-Protokoll wird eine dritte vertrauenswürdige Partei benötigt und zudem hat auch dieses Verfahren Sicherheitslücken und man muss sich mehrfach authentifizieren, damit es sicher ist. (1x => 50% unsicher, 2x => 25% unsicher, 3x => 12,5% unsicher, u.s.w.) siehe hier Falsch. Anscheinend hast du Fiat-Shamir nicht richtig verstanden, es wird keine dritte Partei benötigt: http://www-i1.informatik.rwth-aachen.de/Lehre/SS05/PSAuD/Handout_Kuz.pdf Die einzelnen Auth-Runden sind auch nicht das Problem. Der eigentliche Schwachpunkt bei Fiat-Shamir sind die Zufallszahlen (wie bei vielen anderen Kryptosystemen). Verwendet man die gleiche Zufallszahl mehrmals, ist das Verfahren anfällig für Replay Attacken. Das lässt sich aber relativ einfach vermeiden (z.B. die Zufallszahlen hashen, mit OTPs salzen und und und...) Wenn Schlüssel verwendet werden, muss der öffentliche Schlüssel auf der Karte bzw. auf der Lesestation hinterlegt sein, damit eine verschlüsselte Verbindung aufgebaut werden kann. Nur welche Schlüssel sind denn alle erlaubt und dürfen z.B. auf die Karte schreiben? So könnte sich jeder einfach einen Schlüssel generieren und dann darüber die Daten auf der Karte verändern. Auch Falsch. Wenn sich jeder einen eigenen private key generieren würde und damit Daten auf der Karte verschlüsselt, können die Daten nur mit dem entsprechenenden public key entschlüsselt werden. Das ist im Grunde nichts anderes als eine normale digitale Signatur: Digitale Signatur. Zitieren
Crash2001 Geschrieben 8. November 2013 Geschrieben 8. November 2013 Kann es eventuell sein, dass du das Feige-Fiat-Shamir-Protokoll meinst und nicht das "einfache" Fiat-Shamir-Protokoll? Oder aber natürlich die Informationen auf Wikipedia sind falsch. Dort steht folgendes: [...]Beim Fiat-Shamir-Protokoll wird eine vertrauenswürdige dritte Partei benötigt. Diese veröffentlicht einen RSA-Modul n = p \cdot q, dessen Primfaktoren p und q sie geheim hält. Die Beweiserin (Geheimnisträgerin) Peggy wählt eine zu n teilerfremde Zahl s als persönliches Geheimnis, mit dem sie sich Victor (V wie Verifizierer) gegenüber authentisieren will. Diese darf sie niemandem weitergeben. Sie berechnet v \equiv s^2 \bmod n und registriert v als öffentlichen Schlüssel bei der dritten Partei.[...] Quelle [...]Auch Falsch. Wenn sich jeder einen eigenen private key generieren würde und damit Daten auf der Karte verschlüsselt, können die Daten nur mit dem entsprechenenden public key entschlüsselt werden. Das ist im Grunde nichts anderes als eine normale digitale Signatur: Digitale Signatur.Ich glaube da hast du mich falsch verstanden. Die Frage ist, welche privaten Schlüssel erlaubt sind, bzw. welche öffentlichen Schlüssel auf dem Gerät hinterlegt werden müssen. Da der öffentliche Schlüssel ja bekannt sein muss, können nur diejenigen privaten Schlüssel zum schreiben verwendet werden, für die auch öffentliche Schlüssel auf dem Gerät vorhanden sind (ansonsten benötigt es ja einen Zugang zu einem Server, auf dem alle public keys hinterlegt sind). Es wird aber doch wohl nicht jeder "Laden" den gleichen private Key verwenden (man muss ja auch unter anderem nachvollziehen können, von wem / wo die Karte aufgeladen wurde und es soll doch sicherlich auch so sein, dass z.B. in einem Einkaufszentrum an allen Läden damit bezahlt werden kann und nciht nur an einem einzigen bzw. nur bei einer Kette, von der die Schlüssel alle hinterlegt sind, oder?), jedoch kann dann in einem anderen Laden keiner die entsprechenden Daten lesen, außer der gleiche private Key wird verwendet, oder aber es sind mehrere public keys hinterlegt. Wer Zugriff auf das Gerät bzw. auf den Speicher hat, in dem die Schlüssel hinterlegt sind, kann somit durchaus ein Schlüsselpärchen generieren, den entsprechenden Schlüssel auf der Karte hinterlegen und mit seinem eigenen Key dann Transaktionen ausführen, auch wenn er nicht der rechtmässige Besitzer des Geräts ist. Die Sicherheit von Zertifikaten basiert ja auf dem Schutz des physischen Zugangs zum private Key bzw. zur entsprechenden Hardware. Hat man zugang zur Hardware / zum private Key, kann man auch mit Zertifikaten Unfug treiben. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.