Untersuchung NFC Interface auf Android Telefonen: Difference between revisions
(Created page with "Wie schon im Vorjahr im Artikel NFC unter Android ist auch dieses Jahr Near-field communication (NFC) ein Thema des Seminars [[W2013-ITS|IT Security Worksho…") |
|||
Line 18: | Line 18: | ||
Android stellt für die Kommunikation mit dem NFC-Chip lediglich eine High-Level-API in Java bereit, die keine Kommunikation auf dem Raw-Device zulässt. Aus dieser Tatsache entstehen zwei Probleme: Eine einfache Anbindung von in C-geschriebener Software (z.B. mfoc, zum Brechen der Schlüssel von Mifare Classic Karten) ist nicht möglich. Hierzu muss ein Binding zwischen der Java-NFC-API mittels JNI (Java Native Interface) erstellt werden. Das weitaus größere Problem ist jedoch die fehlende direkte Kommunikationsmöglichkeit mit dem NFC-Chip auf device-level. |
Android stellt für die Kommunikation mit dem NFC-Chip lediglich eine High-Level-API in Java bereit, die keine Kommunikation auf dem Raw-Device zulässt. Aus dieser Tatsache entstehen zwei Probleme: Eine einfache Anbindung von in C-geschriebener Software (z.B. mfoc, zum Brechen der Schlüssel von Mifare Classic Karten) ist nicht möglich. Hierzu muss ein Binding zwischen der Java-NFC-API mittels JNI (Java Native Interface) erstellt werden. Das weitaus größere Problem ist jedoch die fehlende direkte Kommunikationsmöglichkeit mit dem NFC-Chip auf device-level. |
||
Der Android Kern basiert auf dem Linux Kernel und es gibt diverse Projekte, die zum Ziel haben auf Android-fähigen Geräten einen Linux-Kernel mit zugehörigem Userland zu betreiben. Hierfür existieren prinzipiell drei Methoden: Eine Variante besteht darin Linux innerhalb des Android-Systems in einem Container zu betreiben oder zu emulieren <ref> http://www.archlinuxuser.com/2013/01/how-to-install-archlinux-arm-on-any.html</ref>. Die andere Möglichkeit ist eine native Installation auf dem Android-Gerät <ref>http://www.ubuntu.com/phone</ref>. Als weitere Variante ist noch der parallele Einsatz des Linux-Userlands zu nennen, das die Möglichkeiten des Android-Userlands um bekannte GNU-Tools erweitert<ref> http://www.awa.tohoku.ac.jp/~benda/projects/android.html</ref>. |
|||
= Einzelnachweise = |
= Einzelnachweise = |
Revision as of 14:24, 20 September 2013
Wie schon im Vorjahr im Artikel NFC unter Android ist auch dieses Jahr Near-field communication (NFC) ein Thema des Seminars IT Security Workshop WS2013.
Ziele
Evaluation der Hardware
Im Rahmen des Seminars wird ein Samsung Galaxy Nexus <ref>http://www.areamobile.de/handys/3014-samsung-galaxy-nexus/datenblatt</ref> zu Verfügung gestellt. Auf diesem ist als NFC-fähiger Chip ein NXP PN65N <ref>http://www.nfc-tag.de/was-sind-nfc-tags/nfc-tag-kompatibilitatsliste/</ref><ref>http://www.nxp.com/news/press-releases/2011/11/nxp-nfc-solution-implemented-in-galaxy-nexus-from-google.html</ref> verbaut, der aus einem NXP PN544 und einem SecureElement SmartMX besteht.
Als weitere NFC-fähige Geräte stehen ein Google Nexus 7 (2013) und ein Samsung Galaxy S4 Mini zu Verfügung. Diese besitzen jedoch mit einem Broadcom BCM20793M (Nexus 7) bzw. BCM20794 (S4 Mini) einen im Grunde NFC-fähigen Chip, der aber durch die fehlenden proprietären Protokollerweiterung von NXP Tags vom Typ Mifare Classic nicht mehr unterstützt. Lediglich ein Auslesen der UID ist möglich; ein lesender oder schreibender Zugriff auf weitere Daten schlägt fehl.<ref>http://www.andytags.com/nfc-tags-compatibility-issues.html</ref>
Die zur Verfügung stehenden NFC-Transponder sind meist vom Typ Mifare Classic. Hier ist die klassische Mensakarte und die Karte für das Zugangssystem zum Johann von Neumann Haus zu erwähnen.
Da Nexus Geräte generell eine gute Treiberunterstützung bieten und das Galaxy Nexus schon seit 2011 auf dem Markt ist, ist dieses für die Zwecke des Seminarthemas gegenüber den neueren Geräten zu bevorzugen. Die fehlende Kompatibilität der zur Verfügung stehenden Karten unterstützt diese Entscheidung zusätzlich.
Evaluation der Software
Android stellt für die Kommunikation mit dem NFC-Chip lediglich eine High-Level-API in Java bereit, die keine Kommunikation auf dem Raw-Device zulässt. Aus dieser Tatsache entstehen zwei Probleme: Eine einfache Anbindung von in C-geschriebener Software (z.B. mfoc, zum Brechen der Schlüssel von Mifare Classic Karten) ist nicht möglich. Hierzu muss ein Binding zwischen der Java-NFC-API mittels JNI (Java Native Interface) erstellt werden. Das weitaus größere Problem ist jedoch die fehlende direkte Kommunikationsmöglichkeit mit dem NFC-Chip auf device-level.
Der Android Kern basiert auf dem Linux Kernel und es gibt diverse Projekte, die zum Ziel haben auf Android-fähigen Geräten einen Linux-Kernel mit zugehörigem Userland zu betreiben. Hierfür existieren prinzipiell drei Methoden: Eine Variante besteht darin Linux innerhalb des Android-Systems in einem Container zu betreiben oder zu emulieren <ref> http://www.archlinuxuser.com/2013/01/how-to-install-archlinux-arm-on-any.html</ref>. Die andere Möglichkeit ist eine native Installation auf dem Android-Gerät <ref>http://www.ubuntu.com/phone</ref>. Als weitere Variante ist noch der parallele Einsatz des Linux-Userlands zu nennen, das die Möglichkeiten des Android-Userlands um bekannte GNU-Tools erweitert<ref> http://www.awa.tohoku.ac.jp/~benda/projects/android.html</ref>.
Einzelnachweise
<references />