So erhalten Sie AID für den Reader Host-basierte Kartenemulation

7

Ich versuche Hostkarten-Emulation auf einem Android-Gerät mit diesem Beispiel mit ACR1281U NFC-Tag-Reader.

Dies ist die Art von Anwendung, die ich machen möchte.

Laut der Android-Dokumentation und dem Beispiel ist es erforderlich, eine AID im Android-Projekt zu registrieren:

%Vor%

Woher weiß ich , welche AID ich in meiner Android-Anwendung registrieren muss, damit der Leser die HCE Android App lesen kann?

Hier ist eine weitere Frage, die ich bezüglich des gleichen geschrieben habe: Nein unterstütztes Kartenterminal gefunden ARC1281U nfc Kartenleser

Ich habe auf die folgenden Links verwiesen, aber es gab nicht viel Hilfe:

Bitte helfen Sie, da auf HCE nur sehr wenige Ressourcen verfügbar sind!

BEARBEITEN

Das Beispiel verwendet die AID F0010203040506 im Befehl SELECT (by AID), aber mein ACR128-Lesegerät konnte das HCE-Gerät nicht lesen.

%Vor%

Dann habe ich die AID in F00000000A0101 geändert (was von einer anderen Beispiel-App verwendet wurde) und diese auch im AID-Filter verwendet. Nach dem Wechsel zu dieser AID konnte der ACR-Reader das HCE-Gerät erkennen.

  • Die beiden AIDs (die im Beispiel) verwendet werden , das nicht funktioniert hat und ein anderes, das in der App verwendet wurde die funktionierten) entsprechen der Spezifikation, wie kann ich wissen, welche AID zu verwenden?
  • In diesem Beispiel werden mehrere AIDs im AID-Filter hinzugefügt, aber nur eine davon in der SELECT (by AID) APDU. Sollte ich auch mehrere AIDs im AID-Filter hinzufügen? Was nützt es?
Rachita Nanda 10.01.2015, 14:39
quelle

1 Antwort

19

Die AID ist ein "Name", den Sie Ihrer Smartcard-Anwendung zuweisen (im Fall von HCE: die Android-App, die die Kartenanwendung emuliert). Eine Leseanwendung verwendet diesen "Namen", um Ihre Kartenanwendung (HCE) mit einem SELECT-Befehl (nach DF-Name / AID) zu adressieren (siehe ISO / IEC 7816-4). Sie können einen beliebigen Wert verwenden, solange er ISO / IEC 7816-4 entspricht.

In Ihrem speziellen Fall die Reader-Beispielanwendung verwendet die AID F0010203040506

%Vor%

Um mit diesem Beispiel kompatibel zu sein, müssen Sie daher Ihren HCE-Dienst für die AID F0010203040506 registrieren.

Wie weisen Sie eine AID zu und verwenden sie?

Normalerweise definieren Sie zuerst einen "Namen" für Ihre HCE App:

%Vor%

Später können Leseranwendungen diesen Namen verwenden, um Ihre HCE-App auszuwählen und dann mit ihr zu kommunizieren (in Java z. B. mit Java Smart Card IO):

%Vor%

Wie finden Sie einen Wert für eine AID?

Dies hängt von Ihrem Anwendungsszenario ab.

  • In Ihrem Closed-Loop-Szenario, in dem Sie sowohl auf der HCE-Seite als auch auf der Leserseite die volle Kontrolle haben, können Sie ein beliebiges auswählen (beachten Sie, dass dort sind einige Regeln für AIDs ) AID und weisen Sie es Ihrer HCE App zu. Sie können diese AID später in Ihrer Leseranwendung verwenden, um die HCE-App zu adressieren.

  • In realen HCE-Szenarien entwerfen Sie Ihre HCE-App häufig so, dass sie mit einer vorhandenen Leserinfrastruktur interagieren. Folglich wird Ihre HCE-App bestimmte Spezifikationen implementieren. In diesem Fall bestimmt eine solche Spezifikation die AID (oder AIDs), die Ihre HCE-App verwenden muss, damit sie von der vorhandenen Leserinfrastruktur erkannt werden können. Ein Beispiel für eine solche Spezifikation ist die EMV-Spezifikation für kontaktlose Bezahlsysteme.

Warum sind einige HCE-Anwendungen für mehrere AIDs registriert?

Manchmal ist es notwendig, dass eine Anwendung über mehrere "Namen" (AIDs) adressierbar ist. Gründe könnten sein:

  • Eine Anwendung bietet mehrere verschiedene Schnittstellen (d. h. die einen anderen Befehlssatz haben oder andere Daten bereitstellen).
  • Es gibt vorhandene Leser, die (aus irgendeinem Grund) unterschiedliche AIDs verwenden, um dieselbe Anwendung zu adressieren.

Wie wählen Sie eine AID?

Die Regeln für Smartcard-Anwendungs-IDs (AIDs) sind in ISO / IEC 7816-4 definiert. Eine AID hat mindestens 5 Byte und kann aus bis zu 16 Byte bestehen (siehe diese Antwort zu AID-Größenbeschränkungen). Basierend auf den ersten 4 Bits werden AIDs in verschiedene Gruppen unterteilt. Die relevantesten Gruppen, die in ISO / IEC 7816-4 definiert sind, sind:

  • AIDs beginnend mit 'A' : international registrierte AIDs
  • AIDs beginnend mit 'D' : national registrierte AIDs
  • AIDs beginnend mit 'F' : proprietäre AIDs (keine Registrierung)

Bei (inter) national registrierten AIDs besteht die AID aus zwei Teilen, einem obligatorischen 5-Byte-RID (registrierter Anwendungsanbieter-Identifikator) und einer optionalen PIX (proprietäre Anwendungsidentifikator-Erweiterung) mit bis zu 11 Byte.

Für proprietäre AIDs ( F... ) können Sie einen beliebigen Wert verwenden.

Warum hat die AID F00000000A0101 gearbeitet, während F0010203040506 nicht funktioniert hat?

Ich weiß es nicht und Sie haben nicht genügend Informationen zur Verfügung gestellt, um dies zu diagnostizieren. Z.B. Wo gibt es irgendwelche Nachrichten in adb-Protokoll, wenn Sie versucht haben, F0010203040506 zu wählen?

Wie auch immer, beide AIDs sind gültig und sollten funktionieren. Eine Möglichkeit könnte sein, dass Sie bereits eine andere HCE-Anwendung auf Ihrem Gerät installiert haben, die sich für diesen AID registriert hat. In diesem Fall hätten zwei Anwendungen auf denselben Namen gehört, was nicht möglich ist.

    
Michael Roland 17.01.2015, 09:01
quelle

Tags und Links