2016-07-06 22 views
1

Die Mifare DESFire-Kommunikation wird auf mehreren Android-Geräten an HCE und nicht an den Host (UICC) weitergeleitet.M4M - Mifare DESFire EV1: Welche Mifare-AID muss der NFC-Routingtabelle für Off-Host-Routing zu einer virtuellen Mifare DESFire-Karte auf UICC hinzugefügt werden?

Von der OMAPI-basierten Kommunikation mit externen sicheren Elementen habe ich bereits gelernt, wie man AIDs in die Off-Host-Routingtabelle von Android einfügt, so dass ich sie auf UICC auswählen kann. (Danke an @MichaelRoland)

Mein aktuelles Problem: Ich habe eine virtuelle Mifare DESfire Karte auf meiner UICC. Jetzt routen einige Geräte meine nativen Mifare-Befehle nicht mehr an die UICC, und ich habe immer noch keinen Schalter, um das Standard-Routing zu ändern. Ich wollte also einen weiteren Eintrag in meiner Off-Host-Routing-Tabelle haben, aber ich weiß nicht, welche AID zu verwenden ist.

Es gibt eine PICC-Anwendungs-AID unserer MIFARE DESFire-Testanwendung F01010. Dies ist die AID, die für die Auswahl der Anwendung auf der CLT-Schnittstelle verwendet wird, aber diese kann nicht in die Android-Routingroute außerhalb des Hosts eingegeben werden. Darüber hinaus verfügen wir über zwei zusätzliche AIDs für die MIFARE DESFire-Anwendung. Dies ist die AID des Virtual Card Manager (A0000003964D344D1400000000000000) und die AID des Service Managers (A0000003964D344D2400000000000000).

Aber welche AID muss ich in die Routing-Tabelle einfügen?

Antwort

2

Android (und wahrscheinlich auch der NFC-Controller selbst) unterstützt derzeit nur Konfiguration Routing basierend auf ISO/IEC 7816-4 AID/DF-Namen. Sie können kein Routing für native DESFire-AIDs (d. H. Diese 3-Byte-AIDs) noch für die gesamte native Wrapped-Kommunikation hinzufügen.

Was Sie tun können:

  • Weisen Sie Ihre DESFire-Anwendungen ein ISO/IEC 716-4 DF-Name während der Anwendungserstellung. Dieser DF-Name ist eine AID, die in der Android-Off-Host-Routing-Konfiguration angegeben werden kann. Um das AID-basierte Routing auszulösen, müssen Sie jedoch den DESFire-ISO-Befehlssatz verwenden (und speziell einen Befehl SELECT FILE (nach DF-Name) ausgeben, um Ihre DESFire-Anwendung auszuwählen).

  • DESFire EV1 selbst hat den AID/DF-Namen D2 76 00 00 85 01 00. Wenn Ihr Leser diese AID auswählt (mit dem Befehl SELECT FILE (nach DF-Name)), wechselt die DESFire-Karte zum ISO-Framing (ISO-Befehle und umgebrochene native Befehle erlaubt) und wählt ihre Master-Datei aus. Sie können diese AID bei Android registrieren, um die gesamte DESFire-Kommunikation an die UICC weiterzuleiten. Jeder Leser muss jedoch die DESFire-Kommunikation starten, indem er den SELECT FILE-Befehl sendet.

-1

Sie müssen der ISO7816-5 link folgen, wenn Sie Ihre App auf eine breite Weise bereitstellen möchten, um keine Konflikte zwischen Apps zu bekommen, die dieselbe AID verwenden. Der zweite Weg besteht darin, eine proprietäre nicht registrierte AID zu verwenden, die immer mit 0x0F beginnt.

Beispiel: 0x0F, 0x11, 0x22, 0x33, 0x44

+0

Entschuldigung, ich habe eine AID, aber ich weiß nicht, was zur Routing-Tabelle hinzugefügt werden muss. Meine App stellt im Grunde nur sicher, dass alle Befehle für dieses Mifare Desfire VC (oder für Mifare Desfire) an UICC weitergeleitet werden. Und dazu muss ich wissen, welche und wie ein Mifare Desfire VC (AID) zum Off-Host-Routing hinzugefügt werden kann. –

+0

Hallo Andy, von der Anwendungsebene haben Sie keinen Zugriff auf die echte Routing-Tabelle. Was Sie im Manifest tun, ist im Grunde nur die Registrierung für das Android-System, welche Dienste welche AID nutzen. Die richtige Routing-Tabelle, die darüber entscheidet, was gehostet wird und was zur UICC geht, ist aus der Anwendungsebene meines Wissens nicht zugänglich.Wenn Sie das Standard-Routing ändern möchten, müssen Sie auf die Konfigurationsdatei für den NFC-Stack selbst zugreifen. zum Beispiel /etc/libnfc-brcm.conf, wenn das Telefon einen Broadcom-Chip hat. An dieser Stelle müssen Sie grundsätzlich Ihre Route hinzufügen. – ph10