NPA: AusweisApp: Difference between revisions

From
Jump to navigation Jump to search
 
(7 intermediate revisions by 2 users not shown)
Line 3: Line 3:


==Einleitung==
==Einleitung==
Bei unserem Projektthema ging es um die Kommunikation der AusweisApp mit einem im Internet sich befindenen Dienst und eventuelle Sicherheitslücken.
Bei unserem Projektthema ging es um die Kommunikation der AusweisApp mit einem sich im Internet befindlichen Dienst, der Kommunikation mit dem Lesegerät und eventuell dabei auftretene Sicherheitslücken.
Um das Thema etwas genauer betrachten zu können, muss man erst einmal die Vorraussetzungen und die Funktionen
Um das Thema etwas genauer betrachten zu können, muss man erst einmal die Vorraussetzungen und die Funktionen
dieser Software kennen um weitere Aussagen machen zu können.
dieser Software kennen um weitere Aussagen machen zu können.
Line 14: Line 14:


===Funktionen===
===Funktionen===
Mit dem neuen Personalausweis (nPA) und der neu erstelleten, bzw. noch im Aufbau befindlichen IT-Infrastruktur sollen folgende Funktionen möglich sein:
Mit dem neuen Personalausweis (nPA) und der neu erstelleten bzw. noch im Aufbau befindlichen IT-Infrastruktur sollen folgende Funktionen möglich sein:
# elektronischer Identitätsnachweises zum Online-Ausweisen
# elektronischer Identitätsnachweises zum Online-Ausweisen
## Altersverifikation
## Altersverifikation
Line 25: Line 25:
==Kommunikation der AusweisApp==
==Kommunikation der AusweisApp==
==Vorwort==
==Vorwort==
Die Kommunikation der AusweisApp erfolgt in zwei Richtungen. Die erste ist die Kommunikation mit dem
Die Kommunikation der AusweisApp erfolgt in zwei Richtungen. Die eine Richtung ist die Kommunikation hin zum Lesegerät.
Lesegerät. Die zweite ist die Kommunikation mit dem Dienst und die Übermittlung zum nPA.
Die andere Richtung ist die Kommunikation mit dem Dienst und die Übermittlung zum nPA.
Uns stand zum Anfang des Seminars ein Basislesegerät und ein nPA zur Verfügung. Im Laufe des
Uns stand zum Anfang des Seminars ein Basislesegerät und ein nPA zur Verfügung. Im Laufe des
Seminars erhielten wir dann einen Comfort-Reader und einen zweiten nPA.
Seminars erhielten wir dann einen Komfort-Lesegerät und einen zweiten nPA.


==Verwendete Software==
==Verwendete Software==
Da wir die AusweisApp untersuchen brauchen wir natürlich diese. Hier gab es mehrere Versionen, wir haben uns für die zur Zeit neueste Version 4.01 entschieden.
Da wir die AusweisApp untersuchen wollten, brauchten wir natürlich diese. Die Software stand uns in mehreren Versionen zur Verfügung, wir haben uns für den zur Zeit aktuellsten Entwicklungsstand entschieden, die Version 4.01.
Diese wollten wir einmal auf Windows 7 und auf Ubuntu 10.04 testen.
Diese wollten wir einmal auf Windows 7 und auf Ubuntu 10.04 testen.


Für die Kommunikation mit dem Kartenlesegerät brauchten wir Sniffer-Programme. Hierfür kamen folgende Programme in Frage:
Für die Kommunikation mit dem Kartenlesegerät brauchten wir Programme die uns das Mitlesen der Kommuniaktion ermöglichen. Hierfür kamen folgende Programme in Frage:
# Wireshark ( unter Linux kann er USB mithören )
# Wireshark ( unter Linux kann er USB mithören )
# Sniff USB ( nur für Windows XP )
# Sniff USB ( nur für Windows XP )
Line 49: Line 49:
==Probleme==
==Probleme==
Folgende Probleme traten bei der Einrichtung bzw. beim Testen der Kommunikation auf.
Folgende Probleme traten bei der Einrichtung bzw. beim Testen der Kommunikation auf.
* Die AusweisApp ließ sich zwar wunderbar unter Ubuntu 10.04, dank eines Debianpaketes installieren, sie ließ sich aber nicht zur Kommunikation mit dem Lesegerät überzeugen.
* Die AusweisApp ließ sich zwar wunderbar unter Ubuntu 10.04, dank eines Debianpaketes installieren. Sie ließ sich aber nicht zur Kommunikation mit dem Lesegerät überzeugen.
Zuerst dachte ich das es ein Problem beim Treiber des Basislesegerätes ist und das dieses unter Linux nicht erkannt wird. Nach einigen Tests mit dem dazugehörigen Dämon ( pcscd, mit den Parametern -af gestartet ) und dem Testtool ( pcs_scan) kam heraus das es nicht am Treiber des Kartenleser lag. Mit Hilfe der beiden eben genannten Programm wurden der nPA und das Lesegerät auf der Kommandozeile erkannt, nur leider erkannte die AusweisApp, weder den Leser noch die Karte. Da die Kommunikation des Kartenlesers und der AusweisApp essentiell zum testen ist mussten wir uns auf Winsdows 7 beschränken, da es hier weniger Probleme gab.
Zuerst dachte ich das es ein Problem beim Treiber des Basislesegerätes ist und das dieses unter Linux nicht erkannt wird. Nach einigen Tests mit dem dazugehörigen Dämon ( pcscd, mit den Parametern -af gestartet ) und dem passenden Testtool ( pcsc_scan) kam heraus das es nicht am Treiber des Kartenleser lag. Mit Hilfe der beiden eben genannten Programm wurden der nPA und das Lesegerät auf der Kommandozeile erkannt, nur leider erkannte die AusweisApp, weder den Leser noch die Karte. Da die Kommunikation des Kartenlesers und der AusweisApp essentiell zum testen ist mussten wir uns auf Winsdows 7 beschränken, da es hier weniger Probleme gab.
* Das Basislesegerät machte unter Windows 7 am Anfang kurze Probleme, da es zwar erkannt wurde, aber ein entsprechender Treiber nicht geladen werden konnte. Abhilfe schaffte der Treiberdownload von der Herstellerfirma SCM Microsystems.
* Das Basislesegerät machte unter Windows 7 am Anfang kurze Probleme, da es zwar erkannt wurde, aber ein entsprechender Treiber nicht geladen werden konnte. Abhilfe schaffte der Treiberdownload von der Herstellerfirma SCM Microsystems.


* USB-Sniffer: Durch den Wegfall der Testumgebung in Linux ( siehe oben) konnten wir Wireshark nicht als USB-Sniffer nehmen, da dies nur unter Linux möglich ist. Blieben noch zwei weitere Kandidaten. Der eine viel aus der er sich wie angegebn nicht auf Windows 7, installieren ließ. Kandidat Nummer zwei USBSnoop wollte sich leider nicht überreden lassen die USB-Ports zu belauschen, also mussten wir uns nach einer dritten Variante umsehen. Diese fanden wir im Programm USBTrace. Da dieses Stück Software im Gegensatz zu den beiden erst genannten Programmen kommerziell ist, gab es nur eine 14-Tage Testversion mit der Einschränkung, das maximal 256k an Logfiles aufgezeichnet werden. Die 14-Tägige Einschränkung war für die Länge des Seminars optimal. Auf die Füße viel uns nachher beim Comfort-Reader die begrentzte Länge der Logfiles, da im Gegensatz zum Basisreader, der Comfort-Reader eine ständige Datenübertragung
* USB-Sniffer: Durch den Wegfall der Testumgebung in Linux ( siehe oben ) konnten wir Wireshark nicht als USB-Sniffer nehmen, da dies nur unter Linux möglich ist. Blieben noch zwei weitere Kandidaten. Der eine viel aus, da er sich wie oben angegeben nicht auf Windows 7 installieren ließ und tatsächlich nur unter Windopws XP funktioniert. Kandidat Nummer zwei USBSnoop wollte sich leider nicht überreden lassen die USB-Ports zu belauschen, also mussten wir uns nach einer dritten Variante umsehen. Diese fanden wir im Programm USBTrace. Da dieses Stück Software im Gegensatz zu den beiden erst genannten Programmen kommerziell ist, gab es nur eine 14-Tage Testversion mit der Einschränkung, das maximal 256k an Logfiles aufgezeichnet werden. Die 14-Tägige Einschränkung war für die Länge des Seminars optimal. Auf die Füße viel uns nachher beim Komfort-Lesegerät die begrenzte Länge der Logfiles. Das Komfort-Lesegerät sprach nämlich auch ohne das ein nPA eingelegt wurde ständig mit dem Betriebssystem und produzierte dabei sehr viele Logfiles, was dazu führte das wir schnell an die Grenze der 256k-Logfiles kamen. Der Basisleser dagegen kommunizierte nur kurz beim anbinden an den PC und dann als der nPA eingesteckt wurde. Hieraus folgt, dass die Kommunikation hauptsächlich beim Basisleser untersucht wurde.
zum Rechner hatte, die beim Basis-Reader erst mit Anfang der Kommunikation zum Dienst began.


* Verschlüsselung der Kommunikation: Da die Kommunikation des nPA und des Dienste sowie die Kommunikation mit dem Lesegerät ( PACE-Protokoll) verschlüsselt ist müssen wir diese entschlüsseln, bzw. nach Mustern suchen die sich wiederholen.
* Verschlüsselung der Kommunikation: Da die Kommunikation des nPA und des Dienste sowie die Kommunikation mit dem Lesegerät ( PACE-Protokoll) verschlüsselt ist müssen wir diese entschlüsseln, bzw. nach Mustern suchen die sich wiederholen.


==Erkenntnisse==
==Erkenntnisse==
Trotz der vielen Rückschläge konnten wir doch eine sicherheitslück finden.
Trotz der vielen Rückschläge konnten wir doch eine Sicherheitslück finden.
Beim Standardlesegerät ist es möglich die Pineingabe mit Hilfe eines Keyloggers mitzulesen und somit an eines
Beim Basis-Reader ist es möglich die Pineingabe mit Hilfe eines Keyloggers mitzulesen und somit an eines
der zwei Sicherheitsmerkmale ( Wissen und Besitz) des Ausweises zu gelangen. Kann man nun noch den Bais-Reader per Remote-Verbindung an
der zwei Sicherheitsmerkmale ( Wissen und Besitz) des Ausweises zu gelangen. Kann man nun noch den Bais-Reader per Remote-Verbindung an seinen eigenen Rechner anschließen, so wäre ein Identitätsdiebstahl möglich.
seinen eigenen Rechner anschließen, so wäre ein Identitätsdiebstahl möglich.


==Literatur und Links==
==Literatur und Links==

Latest revision as of 16:27, 7 October 2010

Alt text
Logo der AusweisApp

Die AusweisApp

Einleitung

Bei unserem Projektthema ging es um die Kommunikation der AusweisApp mit einem sich im Internet befindlichen Dienst, der Kommunikation mit dem Lesegerät und eventuell dabei auftretene Sicherheitslücken. Um das Thema etwas genauer betrachten zu können, muss man erst einmal die Vorraussetzungen und die Funktionen dieser Software kennen um weitere Aussagen machen zu können.

Vorraussetzungen

Um die AusweisApp und die im späteren Verlauf noch genannten Funktionen des Personalausweises nutzen zu können wird folgende Hard- und Software benötigt:

  1. Kartenlesegerät, das für Karten mit kontaktloser Schnittstelle ausgelegt ist(1)
  2. Computer mit Internetanbindung
  3. Betriebssystem auf dem die AusweisApp läuft (Windows 7, Ubuntu 10.04, Mac OS)
  4. neuer Personalausweis

Funktionen

Mit dem neuen Personalausweis (nPA) und der neu erstelleten bzw. noch im Aufbau befindlichen IT-Infrastruktur sollen folgende Funktionen möglich sein:

  1. elektronischer Identitätsnachweises zum Online-Ausweisen
    1. Altersverifikation
    2. Online-Behördengänge
    3. Zugang mit Pseudonym
    4. Zutrittskontrollen
    5. etc.
  2. elektronische Signatur von Dokumenten

Kommunikation der AusweisApp

Vorwort

Die Kommunikation der AusweisApp erfolgt in zwei Richtungen. Die eine Richtung ist die Kommunikation hin zum Lesegerät. Die andere Richtung ist die Kommunikation mit dem Dienst und die Übermittlung zum nPA. Uns stand zum Anfang des Seminars ein Basislesegerät und ein nPA zur Verfügung. Im Laufe des Seminars erhielten wir dann einen Komfort-Lesegerät und einen zweiten nPA.

Verwendete Software

Da wir die AusweisApp untersuchen wollten, brauchten wir natürlich diese. Die Software stand uns in mehreren Versionen zur Verfügung, wir haben uns für den zur Zeit aktuellsten Entwicklungsstand entschieden, die Version 4.01. Diese wollten wir einmal auf Windows 7 und auf Ubuntu 10.04 testen.

Für die Kommunikation mit dem Kartenlesegerät brauchten wir Programme die uns das Mitlesen der Kommuniaktion ermöglichen. Hierfür kamen folgende Programme in Frage:

  1. Wireshark ( unter Linux kann er USB mithören )
  2. Sniff USB ( nur für Windows XP )
  3. USBSnoop ( Windows 7 )
  4. USBTrace ( Windows 7, 14-Tage-Testversion, 256k Log beschränkung)
  5. VMWare kann wohl mit bestimmten Parametern dazu gebracht werden den USB-Verkehr in der VM mitzusniffen, dies Information bekamen wir leider erst am Ende des Seminars und damit zu spät.

Für die Kommunikation zum Dienst im Internet kam Wireshark zum Einsatz, da es unter Windows, wie Linux nutzbar ist.

Da beim Testen auch viel schief gehen kann wurde das Ubuntu in einer Virtuellen Maschine unter VirtualBox installiert. Hierfür gab es schon fertige Images, so das man das Ubuntu-System nicht neu aufsetzen musste, sondern sofort loslegen kann.

Probleme

Folgende Probleme traten bei der Einrichtung bzw. beim Testen der Kommunikation auf.

  • Die AusweisApp ließ sich zwar wunderbar unter Ubuntu 10.04, dank eines Debianpaketes installieren. Sie ließ sich aber nicht zur Kommunikation mit dem Lesegerät überzeugen.

Zuerst dachte ich das es ein Problem beim Treiber des Basislesegerätes ist und das dieses unter Linux nicht erkannt wird. Nach einigen Tests mit dem dazugehörigen Dämon ( pcscd, mit den Parametern -af gestartet ) und dem passenden Testtool ( pcsc_scan) kam heraus das es nicht am Treiber des Kartenleser lag. Mit Hilfe der beiden eben genannten Programm wurden der nPA und das Lesegerät auf der Kommandozeile erkannt, nur leider erkannte die AusweisApp, weder den Leser noch die Karte. Da die Kommunikation des Kartenlesers und der AusweisApp essentiell zum testen ist mussten wir uns auf Winsdows 7 beschränken, da es hier weniger Probleme gab.

  • Das Basislesegerät machte unter Windows 7 am Anfang kurze Probleme, da es zwar erkannt wurde, aber ein entsprechender Treiber nicht geladen werden konnte. Abhilfe schaffte der Treiberdownload von der Herstellerfirma SCM Microsystems.
  • USB-Sniffer: Durch den Wegfall der Testumgebung in Linux ( siehe oben ) konnten wir Wireshark nicht als USB-Sniffer nehmen, da dies nur unter Linux möglich ist. Blieben noch zwei weitere Kandidaten. Der eine viel aus, da er sich wie oben angegeben nicht auf Windows 7 installieren ließ und tatsächlich nur unter Windopws XP funktioniert. Kandidat Nummer zwei USBSnoop wollte sich leider nicht überreden lassen die USB-Ports zu belauschen, also mussten wir uns nach einer dritten Variante umsehen. Diese fanden wir im Programm USBTrace. Da dieses Stück Software im Gegensatz zu den beiden erst genannten Programmen kommerziell ist, gab es nur eine 14-Tage Testversion mit der Einschränkung, das maximal 256k an Logfiles aufgezeichnet werden. Die 14-Tägige Einschränkung war für die Länge des Seminars optimal. Auf die Füße viel uns nachher beim Komfort-Lesegerät die begrenzte Länge der Logfiles. Das Komfort-Lesegerät sprach nämlich auch ohne das ein nPA eingelegt wurde ständig mit dem Betriebssystem und produzierte dabei sehr viele Logfiles, was dazu führte das wir schnell an die Grenze der 256k-Logfiles kamen. Der Basisleser dagegen kommunizierte nur kurz beim anbinden an den PC und dann als der nPA eingesteckt wurde. Hieraus folgt, dass die Kommunikation hauptsächlich beim Basisleser untersucht wurde.
  • Verschlüsselung der Kommunikation: Da die Kommunikation des nPA und des Dienste sowie die Kommunikation mit dem Lesegerät ( PACE-Protokoll) verschlüsselt ist müssen wir diese entschlüsseln, bzw. nach Mustern suchen die sich wiederholen.

Erkenntnisse

Trotz der vielen Rückschläge konnten wir doch eine Sicherheitslück finden. Beim Basis-Reader ist es möglich die Pineingabe mit Hilfe eines Keyloggers mitzulesen und somit an eines der zwei Sicherheitsmerkmale ( Wissen und Besitz) des Ausweises zu gelangen. Kann man nun noch den Bais-Reader per Remote-Verbindung an seinen eigenen Rechner anschließen, so wäre ein Identitätsdiebstahl möglich.

Literatur und Links

OpenLimit

BSI PersonalAusweis

BSI AusweisAPP

PerosnalausweisPortal

Kompetenzzentrum neuer Personalausweis

Infomappe zum neuen Personalausweis

USBTrace

Wireshark