# Java auf Smartcards?!



## Beiträge (27. Nov 2017)

Hi
Ich habe gelesen das man auf Smartcards Java sachen laufen lassen kann.
Was kann man da laufen lassen?
Ich habe von den Thema noch 0 ahnung.
Ich möchte für den Verein RFID/ NFC karten ausgeben womit sich die Leute bei Partner Ausweisen können. Dafür muss die Karte mit den Server einen Handshacke machen das der Partner weiss das die Karte:
a) Autentisch ist
b) Valide ist.
Geht das damit?


----------



## JuKu (3. Dez 2017)

Na normalerweise sind RFID / NFC Karten nur eine Art Speichermedium, auf denen die Authentifizierungsdaten gespeichert werden. D.h. auf den Karten selber läuft eig. kein Java, aber die Anwendung, die diese Daten ausliest oder speichert, kann in Java geschrieben sein.


----------



## krgewb (3. Dez 2017)

Wenn du eine RFID-Karte mit einen Lesegerät scannst wird einfach nur die Zahl eingegeben als ob man sie per Tastatur eingetippt hätte.
Da sind überhaupt keine zusätzliche Authentifizierung oder Validiuerung.

Wie es mit NFC ist weiß ich nicht.


----------



## Beiträge (3. Dez 2017)

Wie Kreditkarten arbeiten ja auch mit NFC/ RFID und trotzdem nutzen sie den Chip wo meines wissens Java drauf lauft?!


----------



## krgewb (3. Dez 2017)

Bankkarten haben einen Chip. Der Chip ist ein kompletter Computer.
Es gibt sogar einen Selbstzerstörungsmechanismus. Wenn jeman versucht die PIN auszulesen verglüht irgendetwas und dann ist die Karte unbrauchbar.


----------



## JuKu (3. Dez 2017)

krgewb hat gesagt.:


> Wenn du eine RFID-Karte mit einen Lesegerät scannst wird einfach nur die Zahl eingegeben als ob man sie per Tastatur eingetippt hätte.



Als Ergänzung noch ein kleines Beispiel:
https://www.myplastikkarten.de/de/rfid-karten.html
Diese Karten haben eine Speicherkapazität von 128 Bit bis mehrere KB.
Wenn du also 64 Bit für die UserID und 64 Bit für eine Art "Password" / Auth Token verwendest oder noch besser: Die ganzen 128 Bit eine gehaste ID darstellen, dann kannst du quasi auch ein Passwort auf der Karte mit speichern. Alles eine Frage der Aufteilung. 

Kreditkarten sind auch nur "einfache" RFID Chips mit solchen Datensätzen. D.h. da ist kein Akku oder sonstiges drin, der einen Prozessor o.ä. mit Strom versorgen können --> keine Programme und selbst der Chip sendet eig. nur fröhlich die Daten.
Aus diesem Grund ist es kriminellen bereits gelungen, diese Daten im Vorbeigehen auszulesen:
https://www.datenschutzbeauftragter-info.de/rfid-chips-in-kreditkarten-daten-in-gefahr/

Dass beim Auslesen der PIN irgendwas verglüht, wäre mit allerdings neu.
Lediglich bei einer manuellen Öffnung wird der Chip vollständig zerstört.


----------



## Beiträge (4. Dez 2017)

Ich möchte gerne ne Challange + Response geschichte machen.
Klar das ist ned 100% sicher aber sicher genug das man es ned so einfach kopieren kann.
Eine App soll dazu paar Zahlen an die Karte schicken und diese mit einer anderen Antworten.
Keine Ahnung ob es da andre Lösungen gibt.

Was machen andere eigentlich mit den Java Karten?


----------



## JuKu (4. Dez 2017)

Ich kenne mich nicht gut genug mit diesen Karten aus, aber vermute sehr stark, dass du so etwas nicht RFID / NFC Karten realisieren kannst. Wie ich bereits oben erwähnt habe, besitzen solche Karten normalerweise *keinen* Prozessor, können also auch nicht rechnen. Ob es dafür spezielle Chips gibt, kann ich nicht sagen, allerdings sind das dann keine "normalen" RFID / NFC Karten mehr.

Wie kommst du überhaupt darauf, dass andere Java auf Smartcards laufen lassen können?
Oracle definiert das so:


> *Java™ Smart Card I/O API*
> This specification describes the Java Smart Card I/O API defined by JSR 268. It defines a Java API for communication with Smart Cards using ISO/IEC 7816-4 APDUs. It thereby allows Java applications to interact with applications running on the Smart Card, to store and retrieve data on the card, etc.



Ich denke aber nicht, dass mit "applications running on the Smart Card" Java Anwendungen auf der Smartcard gemeint sind, sondern eher die Befehle zum Lesen & Schreiben der Daten.
Wikipedia sagt dazu folgendes:


> *Chipkarte*, oft auch als *Smartcard* oder *Integrated Circuit Card* (*ICC*) bezeichnet, ist eine spezielle Kunststoffkarte mit eingebautem integriertem Schaltkreis (Chip), der eine *Hardware-Logik*, Speicher oder auch einen Mikroprozessor enthält.



*EDIT*:
Ich habe mich geirrt. Tatsächlich sind kleine Anwendungen möglich, allerdings ist funktioniert das nur bei Stromzufuhr. Auf deutsch: Eher nicht bei NFC Karten, sondern z.B. bei Smartcards, die man in seinen Smart TV reinsteckt und die dann eine kostante Stromzufuhr erhalten.



> *Java Card* ist eine Variante der Programmiersprache Java, die es erlaubt, Java Card Applets, einem reduzierten Java-Standard folgend, Java Applets auf Chipkarten auszuführen.
> 
> Java Card Applets werden nur ausgeführt, wenn eine Chipkarte an eine externe Stromversorgung angeschlossen ist und die Java VM der Karte die Anweisung erhalten hat, ein bestimmtes Applet zu selektieren. Die Sicherheitsmechanismen von Java erlauben, dass eine Java Chipkarte mehrere Applets enthalten kann, die einander nicht beeinflussen, soweit die Speicherkapazität der Karte nicht überschritten wird. Java Card Applets können nachträglich auf einer Java-Chipkarte installiert werden und sind, wie Java-Programme, von der Hardware der Chipkarte unabhängig. Java Card Applets kommunizieren ausschließlich über APDUs (Application Protocol Data Units) mit einem angeschlossenen Kartenleser; ein mögliches Protokoll für diesen Datenkanal ist Java Card Remote Method Invocation, ein Protokoll zum Aufruf von Objektmethoden zwischen Java VMs.
> 
> *Java Card Applets dienen primär der sicheren Speicherung und Anwendung von kryptographischen Schlüsseln*. Die Schlüssel können zu diesem Zweck auf der Chipkarte erzeugt werden und ein Auslesen der privaten Schlüssel aus der Karte wird nach Möglichkeit verhindert.


Quelle: https://de.wikipedia.org/wiki/Java_Card
https://de.wikipedia.org/wiki/Java_Card
Sind also trotzdem keine "normalen" RFID / NFC Karten.


----------



## Beiträge (4. Dez 2017)

hmm blöd. Ich suche einen weg wie ich über NFC das fast jedes Smartphone drinnen hat die Karten verifizieren kann gegen meinen eigen Server.


----------



## JuKu (4. Dez 2017)

Das wird schwierig. Ich glaube dafür ist normales NFC einfach nicht gedacht.


----------

