Senden Sie APDU-Befehle an USIM / SIM-Karte in Android

8

Ich habe bereits mit Smartcards gearbeitet und bin mit APDU-Befehlen vertraut (die in den Spezifikationen ISO / IEC 7816 und Globale Plattform definiert sind).

Nun möchte ich wissen, ob es eine Möglichkeit gibt, einen APDU-Befehl an meine USIM / SIM-Karte zu senden, die in mein Mobiltelefon eingefügt wird? (Samsung A3 mit Android v4.4.4 kitkat installiert.)

Ich habe bereits in Google gesucht und einige verwandte Themen und Tools namens SIM Toolkit Application und Seek for Android gefunden. Aber ich verstehe nicht wirklich was sind diese? Sind diese Artikel zwei Anwendungen, die ich auf meinem Mobiltelefon installieren muss? Oder sind diese beiden Tools bereits auf der USIM / SIM-Karte installiert und empfangen Befehle vom Mobiltelefon?

Was ist der Unterschied zwischen proaktiven Befehlen , APDU-Befehlen und AT-Befehlen ?

Sollte ich Android lernen, SIM-Karten-Anwendungen zu entwickeln, oder brauche ich nur Java Card-Spezifikationen und ETSI-Standards?

Vielen Dank im Voraus.

    
Jean 19.05.2015, 12:29
quelle

2 Antworten

11

Auf Ihrer SIM-Karte können zwei verschiedene Arten von Applets vorhanden sein.

Gemeinsame Applets

Allgemeine Applets, die in einfacher JavaCard geschrieben sind. Dies ist die Art von Applet, die Sie aus der Welt der gängigen Smartcards kennen. Es hat die Methode process und Smartcard ist das passive Subjekt in der Kommunikation: Ihre App sendet APDU-Befehle und die Kartenantworten.

Sie können mit diesen Applets kommunizieren, indem Sie eine spezielle Sammlung von Android-Bibliotheken namens SEEK für Android verwenden. Sehen Sie sich dieses Tutorial an, um zu erfahren, wie Sie eine solche Telefonanwendung erstellen können.

Ab API-Level 21 gibt es auch eine Möglichkeit, mit SIM zu kommunizieren. Verwenden Sie dazu Telefonie-Manager . Allerdings gibt es ein großes Hindernis: Ihre App benötigt MODIFY_PHONE_STATE Erlaubnis, die nur System-Apps gewährt werden kann. Eine reqular, non-system App darf nicht verwendet werden.

SIM-Toolkit-Applets

Eine SIM-Karte ist viel mehr als nur eine gewöhnliche Smartcard und das Schreiben eines Applets für eine SIM-Karte kann viel komplizierter sein als für eine gewöhnliche Smartcard, wenn Sie alle Möglichkeiten der SIM-Karte nutzen wollen. Ich empfehle Ihnen, dieses Papier zu lesen - es ist jemandes Bachelorarbeit, aber es ist ist der beste Überblick für einen Anfänger, den ich überall im Internet gefunden habe. Ich empfehle auch dieses Video von der DefConn-Konferenz .

Die Rolle des auf der SIM-Karte geladenen Applets ist anders: Das Applet ist keine passive Entität mehr. Das Telefon fragt regelmäßig nach deinem Applet: "Gibt es etwas Neues, das ich für dich tun kann?" und Ihr Applet kann antworten: "Ja, senden Sie diese SMS, bitte" oder "Sagen Sie mir, wie spät es ist" usw. Außerdem kann Ihr Applet ein Listener einiger Ereignisse werden: eingehender Anruf, empfangene SMS, abgelaufenes Zeitintervall usw. Ja scheint die SIM-Karte aus technischer Sicht passiv zu sein, aber ihre Rolle ist tatsächlich eine aktive: Es ist die SIM-Karte, die Befehle an das Telefon sendet.

Diese Befehle werden "proaktive Befehle" oder SIM-Anwendungstoolkit-Befehle genannt. Struktur ist gleich - CLA INS P1 P2 LC Daten LE; die Bedeutung ist anders.

Sie können sie aus Ihrem Applet mit Klassen in einem speziellen JavaCard-Paket namens sim.toolkit senden.

(SIM Application Toolkit ist ein Standard, der die proaktiven Befehle auf die gleiche Weise wie Global Platform spezifiziert, spezifiziert den Lebenszyklus des Applets.)

Beispiel für das SIM-Toolkit-Applet:

%Vor%

Ja, Sie sollten Android lernen - Sie benötigen es, um die SEEK-Bibliothek zu verwenden. Ihre Frage ist sehr breit, bitte fragen Sie mich nach Details, wenn Sie möchten.

    
vojta 19.05.2015, 21:00
quelle
4

Ab API-Stufe 22 (Android 5.1) gibt es eine weitere Option namens "Carrier Privileges". Es ermöglicht Nicht-System-Apps, APDUs mit Android TelephonyManager an die SIM-Karte zu senden. Sehen: Ссылка

Zum Beispiel Mobilnetzbetreiber (MNO) Apps, die bei Google Play vertrieben werden, können dies nutzen. Aber es ist nicht für jeden offen. In diesem Fall müssen Sie Zugang von der SIM erhalten. Die Zugriffsregeln auf der SIM werden vom MNO verwaltet, der sie ausgestellt hat. Siehe auch: Ссылка

    
Sirie A. 06.10.2016 17:01
quelle