D07-QM Technische Spezifikation der Open- Source-Basisbibliothek



Ähnliche Dokumente
VVA Webservice Online Lieferbarkeits-Abfrage

Containerformat Spezifikation

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Verteilte Systeme: Übung 4

Auszug aus JAX-WS Folien

ACCOUNTINFO 1.01 VERWENDEN DER ACCOUNTINFO-SCHNITTSTELLE ABFARGE VON ACCOUNT-INFORMATIONEN IN ECHTZEIT 02. MÄRZ 2010

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Workflow, Business Process Management, 4.Teil

Wiederholung: Beginn

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

WebService in Java SE und EE

Java und XML 2. Java und XML

Containerformat Spezifikation

END USER GUIDE IBS TICKET SYSTEM HOW-TO. Dokumenten Kontrolle. Version 1.1. Datum IBS Ticket System End User How-To D.doc.

SIMP 1.01 Protokollspezifikation (Mindestanforderung)

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand Copyright

Anwendungsprotokolle: HTTP, POP, SMTP

IEEE 802.1x Authentifizierung. IEEE 802.1x Authentifizierung IACBOX.COM. Version Deutsch

How-to: Webserver NAT. Securepoint Security System Version 2007nx

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

Benutzerhandbuch für die Verwendung des viavac HL7 Forcast Webservices (VAC-CDSS)

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Eine Anwendung mit InstantRails 1.7

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

Zertifikate Swiss Government SSL CA 01

KURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE

HSR git und subversion HowTo

Skript Pilotphase für Arbeitsgelegenheiten

Support-Tipp Mai Release Management in Altium Designer

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Implementierung von Web Services: Teil I: Einleitung / SOAP

Objektorientierte Programmierung. Kapitel 12: Interfaces

OP-LOG

Windows 8 Lizenzierung in Szenarien

Betr.: Neuerungen eps Online-Überweisung

Installation der SAS Foundation Software auf Windows

KNX BAOS Gadget. Installations- und Bedienanleitung. WEINZIERL ENGINEERING GmbH. DE Burgkirchen Web:

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP)

SEPA Lastschriften. Ergänzung zur Dokumentation vom Workshop Software GmbH Siemensstr Kleve / /

4D Server v12 64-bit Version BETA VERSION

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Beschreibung und Bedienungsanleitung. Inhaltsverzeichnis: Abbildungsverzeichnis: Werkzeug für verschlüsselte bpks. Dipl.-Ing.

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java

Lizenzierung von System Center 2012

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

FlowFact Alle Versionen

Version Deutsch In diesem HOWTO wird beschrieben wie Sie Ihren Gästen die Anmeldung über eine SMS ermöglichen.

2. Kommunikation und Synchronisation von Prozessen 2.2 Kommunikation zwischen Prozessen

Task: Nmap Skripte ausführen

Schumacher, Chris Druckdatum :11:00

Leitfaden zur Nutzung von binder CryptShare

Diese Kurzanleitung beschreibt die nötigen Einstellungen, um mit pixafe Transfer Bilder auf einem Facebook Konto veröffentlichen zu können.

Remote Access Service (RAS) für iphone und ipad

ESB - Elektronischer Service Bericht

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

SDD System Design Document

Installation und Inbetriebnahme von Microsoft Visual C Express

STARFACE SugarCRM Connector

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Anforderungen an die HIS

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung

Installationsanleitung

SDK zur CRM-Word-Schnittstelle

Hilfe zur Urlaubsplanung und Zeiterfassung

Persönliches Adressbuch

4. Network Interfaces Welches verwenden? 5. Anwendung : Laden einer einfachen Internetseite 6. Kapselung von Paketen

ARCHITEKTUR VON INFORMATIONSSYSTEMEN

Norm 240 Versionierung

Übung: Verwendung von Java-Threads

Mobiles SAP für Entscheider. Permanente Verfügbarkeit der aktuellen Unternehmenskennzahlen durch den mobilen Zugriff auf SAP ERP.

Technische Dokumentation SilentStatistikTool

Lizenzen auschecken. Was ist zu tun?

Einbindung des Web Map Service für Gemeinden Anleitung

Webservices. 1 Einführung 2 Verwendete Standards 3 Web Services mit Java 4 Zusammenfassung. Hauptseminar Internet Dienste

openk platform Dokumentation Setup Liferay Version 0.9.1

Senden von strukturierten Berichten über das SFTP Häufig gestellte Fragen

Auto-Provisionierung tiptel 30x0 mit Yeastar MyPBX

Inhaltsverzeichnis. 1. Empfängerübersicht / Empfänger hinzufügen 2. Erstellen eines neuen Newsletters / Mailings 3. Versand eines Newsletters

Typo3. Installationsanleitung um bei genotec auf einem unix system ein Typo3 zu installieren.

VENTA KVM mit Office Schnittstelle

Updateseite_BuV-PlugIn-NERZ-Gesamt

goalio Documentation Release goalio UG

Synchronisations- Assistent

Virtuopolis Ticket System ( VTS ) ist eine verteilte Internetanwendung für den Vertrieb

Tips, Tricks und HOWTOs Virtualisierung für Profis und Einsteiger Serverkonsolidierung, Testumgebung, mobile Demo

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Zustandsgebundene Webservices

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Anleitung mtan (SMS-Authentisierung) mit SSLVPN.TG.CH

Benutzerhandbuch. bintec elmeg GmbH. Benutzerhandbuch. be.ip. Workshops. Copyright Version 1.0, 2015 bintec elmeg GmbH

Step by Step Remotedesktopfreigabe unter Windows Server von Christian Bartl

Programmierung für Mathematik (HS13)

Man liest sich: POP3/IMAP

Transkript:

D07-QM Technische Spezifikation der Open- Source-Basisbibliothek Prüfung: Sven Wohlgemuth (TU Darmstadt/CASED) Typ: [TECHNISCHER BERICHT] Projekt: Version: 1.0 Datum: 30. September 2013 Status: [FREIGABE] Klasse: [ÖFFENTLICHKEIT] Datei: D07-QM_Technische_Spezifikation_der_Open-Source- Basisbibliothek.doc Zusammenfassung Das vorliegende Dokument D07-QM beschreibt die technische Umsetzung der Kernkomponenten der Basisbibliothek der PersoApp. Dies erfolgt aufbauend auf den Architekturbetrachtungen in D06-QM. Konsortialleitung: Prof. Dr. Ahmad-Reza Sadeghi und Dr. Sven Wohlgemuth System Security Lab, TU Darmstadt/CASED, Mornewegstr. 32, 64293 Darmstadt Tel.: +49-6151-16-75561 Fax: +49-6151-16-7215 E-Mail: persoapp@trust.cased.de Web: http://www.persoapp.de

Nutzungslizenz Die Nutzungslizenz dieses Dokumentes ist die Creative Commons Nutzungslizenz Attribution-ShareAlike 3.0 Unported. 1 Mitglieder des Konsortiums 1. AGETO Service GmbH, Deutschland 2. Center for Advanced Security Research Darmstadt (CASED), Deutschland 3. Fraunhofer Institut für Sichere Informationstechnologie (SIT), Deutschland 4. Technische Universität (TU) Darmstadt, Deutschland Versionen Version Datum Beschreibung (Editor) 0.8 2013-09-27 Initiale Version 0.9 2013-09-30 Reviewkommentare 1.0 2013-09-30 Finale Version (Reviewkommentare eingearbeitet) Autoren Autoren AGETO Beiträge Initiale Version des Dokumentes erstellt 1 http://creativecommons.org/licenses/by-sa/3.0/ Version 1.0 30. September 2013 Seite 2/18

Inhaltsverzeichnis 1 Ziel des Dokumentes... 4 2 Anwendungsbereich... 4 3 Abkürzungen und Begriffsdefinitionen... 4 3.1 Abkürzungen... 4 3.2 Begriffsdefinitionen... 5 4 Zuständigkeiten und Verantwortlichkeiten... 5 5 Technische Spezifikation... 5 5.1 Überblick... 5 5.2 Network-Layer... 7 5.2.1 Der lokale HTTP-Server und ECApiHttpHandler... 7 5.2.2 ECardWorker... 11 5.2.3 PAOS-Client... 12 5.2.4 TLS 1.1+, Bouncy-Castle... 15 5.3 ISO-24727 Services... 16 5.4 ecardhandler... 16 6 Mitgeltende Dokumente... 18 Version 1.0 30. September 2013 Seite 3/18

1 Ziel des Dokumentes Ziel dieses Dokumentes ist die Ergänzung des Architekturkonzeptes (D06) um detaillierte technische Beschreibungen der Haupt-Basiskomponenten (siehe untenstehende Auflistung). 2 Anwendungsbereich Das Dokument D07-QM Technische Spezifikation der Open-Source- Basisbibliothek ist für die Software-Entwicklung und das Release Management bestimmt. Es soll aktuellen und künftigen Entwicklern Aufschluss über den Aufbau und die Struktur der Software geben. Dies ermöglicht es, einen schnellen Einstieg in die Entwicklung zu erhalten. 3 Abkürzungen und Begriffsdefinitionen 3.1 Abkürzungen Abkürzung API BSI CASED CC CRM eid GUI HAL HCI HTTP IFD ios JDK JRE npa OS P3P PACE PAOS Erläuterung Application Programming Interface Bundesamt für Sicherheit in der Informationstechnik Center for Advanced Security Research Darmstadt Creative Commons Customer Relationship Management Elektronische IDentität Graphical User Interface Hardware Abstraction Layer Human Computing Interface Hypertext Transfer Protocol Interface Device Apple ios (iphone OS) Java Development Kit Java Runtime Environment neuer Personalausweis Operating System Platform for Privacy Preferences Project Password Authenticated Connection Establishment (Protokoll) Reversed HTTP Binding for SOAP Version 1.0 30. September 2013 Seite 4/18

PC/SC PIN PKI QM SAL SIT SOAP TLS TR TU WSDL XSD XML Personal Computer/Smart Card Persönliche Identifikations-Nummer Public-Key-Infrastruktur Qualitätsmanagement Service Access Layer Sichere Informationstechnologie (s. Fraunhofer SIT) Simple Object Access Protocol Transport Layer Security Technische Richtlinie Technische Universität WebServices Description Language XML Schema Definition extensible Markup Language 3.2 Begriffsdefinitionen Begriff Open-Source-Core Definition Open-Source-Software-Bibliothek mit den Modulen zur Implementierung der Online-Ausweisfunktion des neuen Personalausweises nach den Technischen Richtlinien des BSI 4 Zuständigkeiten und Verantwortlichkeiten Das Dokument wurde von dem Projektpartner AGETO Service GmbH entwickelt. Hinweis: Wesentliche Teile des technischen Konzeptes bauen auf den Technischen Richtlinien des BSI, insbesondere auf BSI TR-03112 [21], auf. Es zeichnet sich ab, dass Teile dieser Richtlinie in der nächsten Zukunft auf die TRs 03116-4 und 03124-1 aufgeteilt werden. Durch diese Änderungen können daher Anpassungen an der hier beschriebenen Architektur notwendig werden. 5 Technische Spezifikation 5.1 Überblick Im Dokument D06-QM [1] wurde das Architekturkonzept behandelt, das die Grobstruktur und Funktion der Komponenten, sowie den modularen Aufbau der PersoApp beschreibt. Das Architekturkonzept dient als Ausgangspunkt für eine weiterführende technische Spezifikation, die Inhalt dieses Dokuments (D07-QM) ist. Gleichzeitig ist damit die Abgrenzung zu D06-QM gegeben. Analog zu D06-QM sind die technischen Richtlinien des BSI grundlegend, insbesondere TR 03112 [2] (bzw. TR 03116-4 und TR 03124-1, siehe [3, 4]). Zusammen mit Version 1.0 30. September 2013 Seite 5/18

ISO 24727 [5] bilden sie die technische Basis für die Umsetzung eines eid-clients basierend auf der PersoApp-Open-Source-Basisbibliothek. Der Aufbau des weiteren Dokumentes orientiert sich im wesentlichen an der Gliederung aus D06-QM (vgl. Abb. 1), d.h. 1. Network-Layer: Webservice-Container, PAOS-Client, TLS 1.1+, lokaler HTTP-Server 2. ISO-24727-Services: SAL-Service, IFD-Service, ecard-api (vgl. auch TR 03112-1, v.1.1.2) 3. Card-Services: ecardhandler, PACE, Transport-Provider, PC/SC 4. (MISC: GUI, Crypto-Algs., Configuration) - siehe D06-QM Die Applikation ist auf zwei Projekte aufgeteilt, dem Core-Projekt und dem Desktop- Projekt. Einstiegspunkt in die Applikation ist die Main-Methode der Klasse "Per- soapp.java", die im Desktop-Projekt zu finden ist. Dort werden die Hauptkomponenten der verschiedenen Layer innerhalb eines eigenen Threads initialisiert und gestartet. Die folgende Liste gibt die wichtigsten Bestandteile dieses Ablaufes wieder: Inititalisierung und Start des HTTP-Servers und des ECApiHttpHandler zur Verarbeitung des lokalen Requests ("alternativer Aufruf") Initialisierung des ECardHandlers Initialisierung des Webservice-Containers bzw. Webservice-Kontextes wsctx, sowie der einzelnen ISO-24727 Services (SAL-Service, IFD-Service, Protokoll-Service, etc.) Erzeugen des "MainView" Nach der Initialisierung ist die Applikation bereit und es kann über den "alternativen Aufruf" eine eid-session initiiert werden. Eine Beispiel-URL für diese Aufruf ist: http://127.0.0.1:24727/eid- Client?tcTokenURL=https://eid.services.ageto.net/persoapp/eidtest.jsp In den folgenden Abschnitten gehen wir näher auf die einzelnen Komponenten und ihrer Abhängigkeiten ein. Version 1.0 30. September 2013 Seite 6/18

5.2 Network-Layer Abbildung 1: Module im Kern der PersoApp und Außenkomponenten 5.2.1 Der lokale HTTP-Server und ECApiHttpHandler Der lokale HTTP-Server ist eine HTTP 1.1 konformer Server. Er wird im Fall der PersoApp durch Standardkomponenten aus Java 1.6 realisiert, genauer durch final HttpServer server = hsp.createhttpserver( ); Dabei ist hsp eine Instanz der Klasse new InetSocketAddress("127.0.0.1", "24727"), 10 sun.net.httpserver.defaulthttpserverprovider Die Aufgabe des HTTP-Servers betrifft den "alternativen Aufruf" der eid-funktion. Zur eigentlichen Umsetzung dieses Aufrufmechanismus muss ein entsprechender HTTP-Kontext erstellt werden, der dann mit dem ecardapihandler assoziiert wird. Version 1.0 30. September 2013 Seite 7/18

Dies erfolgt durch server.createcontext("eid- Client").setHandler( ); new ECApiHttpHandler() Die Klasse ECApiHttpHandler implementiert demnach das Interface com.sun.net.httpserver.httphandler d.h. insbesondere, dass die spezifische Request-Response-Abwicklungslogik in der Methode @Override public final void handle(final HttpExchange he) throws IOException; gekapselt wird. Das "HttpExchange"-Object dient dabei als das eigentliche Kommunikations-Objekt für die zugehörigen HTTP-Requests bzw. HTTP-Responses. final HttpServer server = hsp.createhttpserver( new InetSocketAddress("127.0.0.1", "24727"), 10 ); Wir geben nun in vereinfachter Form die in der "handle"-methode enthaltene Kommunikations-Logik an, ohne aber dabei näher auf den Umgang mit "Redirects" einzugehen. 1. Ermittlung des URL-Parameters "tctokenurl" 2. GET-Request auf die in Punkt 1 ermittelte URL, falls das Protokoll "HTTPS" ist, sonst Fehlermeldung. Die Server-Zertifikate werden überprüft und als Liste ("sourcecerts") gespeichert (vgl. TR-03124-1). 3. Verarbeitung zu Punkt 2 gehörenden Responses und Ermittlung der Parameter für Schritt 4. 4. Initialisierung und Start des ECardWorkers mit den in Punkt 3 ermittelten Parametern 5. Auswertung des ECardWorker-Ergebnisses (Callback) Die in Schritt 3 ermittelten Parameter sind Server-Adresse Session-Identifier Refresh-Adresse Version 1.0 30. September 2013 Seite 8/18

PSK (Pre-Shared-Key) Sie werden in Form von "text/xml"-kontent als "TCTokenType" übergeben. Ein Beispiel ist: <TCTokenType> <ServerAddress>https://eid.vx4.net:443/eid/ws/paos/</ServerAddre ss> <SessionIdentifier>6D43337443A95CD1A6A49FC4656D68A1</SessionIden tifier> <RefreshAddress>https://eid.services.ageto.net/gw/_auth/exec?id= DAF067DDABE411048CC5BF8658C94D33DEE26196F9EEA5A0A9FE274EB6B0F1E6</Re freshaddress> <Binding>urn:liberty:paos:2006-08</Binding> <PathSecurity- Protocol>urn:ietf:rfc:4279</PathSecurity- Protocol> <PathSecurity- Parameters> <PSK>2C542F99BEB91B9D3B342962F9F854566A281289266F7503FBBD23E F68B6E273</PSK> </PathSecurity- Parameters> </TCTokenType> Diese Daten werden für den weiteren Prozess in einer Map: String -> String "params" abgelegt. Obiges Beispiel übersetzt sich dann zu: { SessionIdentifier=6D43337443A95CD1A6A49FC4656D68A1, ServerAddress=https://eid.vx4.net:443/eid/ws/paos/, RefreshAddress=https://eid.services.ageto.net/gw/_auth/exec?id=DAF067 DDABE411048CC5BF8658C94D33DEE26196F9EEA5A0A9FE274EB6B0F1E6, PathSecurity- Protocol=urn:ietf:rfc:4279, Binding=urn:liberty:paos:2006-08, PathSecurity- Parameters=2C542F99BEB91B9D3B342962F9F854566A281289266F7503FBBD23EF68B6E273 } In Schritt 4 wird anschließend der sogenannte "ECardWorker" gestartet. Dies geschieht durch den Aufruf startecardworker(params, sourcecerts, tctokenurl, he); bzw. durch Version 1.0 30. September 2013 Seite 9/18

Object Callback = ECardWorker.start(ch, psk, tctokenurl, sourcecerts); Der Wert ch ist vom Typ iso.std.iso_iec._24727.tech.schema.channelhandletype und enthält einerseits die Serveradresse des eid-server iso.std.iso_iec._24727.tech.schema.channelhandletype.setprotocoltermi nationpoint und andererseits den Session-Identifier fier iso.std.iso_iec._24727.tech.schema.channelhandletype.setsessionidenti Daneben werden die Werte psk Pre-Shared-Key und die in Schritt 2 ermittelten Server-Zertifikate sourcecerts übergeben. Der weitere Ablauf im ECardworker, das betrifft insbesondere den Aufruf des PAOS-Stacks, wird im nächsten Abschnitt "E- CardWorker" angegeben. Erläuterungen zu Schritt 5 Das Ergebnis des ECardWorkers wird über eine Callback-Funktion übergeben, die technisch durch ein "wait-notifiyall" realisiert wird. Mögliche Callback-Werte (Objects) sind: PROCESSING FINALLY TA_OK CANCEL TA_ERROR Beispielsweise wird im positiven Callback-Fall, der durch ECardWorker.CALLBACK_RESULT.TA_OK definiert wird, zusätzlich noch die "Refresh-URL" geprüft. War diese Prüfung in Ordnung, so erfolgt die Generierung des Redirect-Response durch sendresponse(he, 303, addparam(refreshuri, "ResultMajor=ok"), null) Version 1.0 30. September 2013 Seite 10/18

Dies markiert den Austritt aus dem lokalen Request, also dem "alternativen Aufruf" aus dem Browser. 5.2.2 ECardWorker Wie erwähnt, ist die Aufgabe des ecardworkers die Verarbeitung des initialen Requests aus dem "alternativen Aufruf" und der anschließenden Etablierung einer, mit den aus dem "TCTokenType" stammenden Werten parametrisierten, PAOS- Kommunikation zwischen eid-server und den integrierten ISO 24727 WebServices (SAL-Service, IFD-Service, etc.). Dies wurde in D06-QM angedeutet und im vorherigen Abschnitt näher beschrieben. Wir werden nun Schritt 4 aus dem vorherigen Abschnitt aufgreifen und die gerade erwähnte Etablierung einer PAOS-Kommunikation, auf die wir bisher noch nicht eingegangen sind, in groben Zügen erläutern. Bevor der PAOS-Client gestartet werden kann, müssen jedoch noch einige Werte zu Verfügung gestellt werden. Diese Werte-Initialisierung des PAOS-Clients gliedert sich in drei Schritte. Erstens der Erzeugung eine PAOS-Initiator-Instanz, durch paosinitiator = PAOSInitiator.getInstance(wsCtx, serveradress, sessionidentifier, psk); zweitens der Initialisierung der beiden Werte slothandle, contexthandle welche gemäß den Vorgaben in TR-03112-6 (IFD) generiert werden, etwa durch private final byte[] contexthandle = new byte[32]; private final byte[] slothandle = new byte[32]; final Random sr = new Random(); sr.nextbytes(contexthandle); sr.nextbytes(slothandle); und drittens der Erstellung einer ECardSession-Instanz Version 1.0 30. September 2013 Seite 11/18

session = new ECardSession(..., ecardhandler); session.setattribute(ecardworker.class.getname(), this); session.setattribute("spservercert", servercerts); session.setattribute("tctokenurl", tctokenurl); session.setattribute(paosinitiator.class.getname(), paosinitiator); in der die gesammelten Initialisierungswerte zusammengefasst werden. Die ECardSession wird zusätztlich noch dem WebserviceContext wsctx durch folgenden Aufruf wsctx.getmessagecontext().put(ecardsession.class.getname(), session); zugeordnet. (Der WebserviceContainer/Context wurde bereits ganz am Anfang beim Start der Applikation (in der "Main"-Methode) erstellt.) Nachdem diese Vorarbeit, die Initialisierung, erfolgt ist, wird der PAOS-Client durch den Aufruf ResponseType startpaosresponse = paosinitiator.start(contexthandle, slothandle); gestartet, die PAOS-Kommunikation beginnt. (Die beiden übergebenen Werte hatten wir oben bereits erwähnt. Sie dienen während der Dauer einer PAOS-Sitzung der Zuordnung zu einer konkreten Session bzw. der Adressierung eine vom IFD gelieferten Karte. Eine genaue Beschreibung ist in TR-03112-6 enthalten. ) Den internen Ablauf der PAOS-Kommunikation werden wir, zur besseren Übersicht, in einem eigenen Abschnitt (PAOS-Client) ausführlicher betrachteten. 5.2.3 PAOS-Client Der PAOS-Client fungiert, wie in D06 beschrieben, sowohl als SOAP- und HTTP- Client, als auch als PAOS-Server gegenüber dem eid-server. D.h., er vermittelt die Nachrichten zwischen eid-server und Client, bei der der eid-server als Client auftritt (das ist das PAOS-Spezifikum). Bei PAOS wird, im Gegensatz zum üblichen HTTP- SOAP, ein PAOS-SOAP-Request an einen HTTP-Response gebunden, auch "Reverse HTTP binding for SOAP" genannt. Die eid-server-anfragen werden dabei kontinuierlich in einer Schleife, bis hin zu einem gewissen Abbruchkriterium, durch einen Dispatcher, genauer einen JAXB- Dispatcher, entgegengenommen und die erzeugten Antworten (siehe unten) zurückgegeben. Die Kommunikation zum eid-server erfolgt, nach Spezifikation XML- Version 1.0 30. September 2013 Seite 12/18

basiert, über einen eigenen HTTP-Client (MiniHttpClient), der insbesondere ein "TLS- PSK-Client" ist (vgl. hierzu auch Abschnitt TLS 1.1+). Der vom JAXB-Dispatcher benötigte JAXB-Kontext zur (De-) Serialisierung enthält folgende Objekte (Object-Factories): SOAP-Envelope: "org.xmlsoap.schemas.soap.envelope.objectfactory.class" SOAP-Adressing Header: "org.w3._2005._03.addressing.objectfactory.class" PAOS-Header: "liberty.paos._2006_08.objectfactory.class" ISO-24727 messages: "iso.std.iso_iec._24727.tech.schema.objectfactory.class" Generierung der Antworten Die Ergebnisse werden erzeugt durch den Aufruf des internen, von aussen nicht erreichbaren Web-Service Containers (wsctx). An diesen Web-Service-Container bzw. Web-Service-Context sind bereits früher alle benötigten ISO 24727 Services im JAX-WS 2.0 Stil (JAX-WS: "Java API for XML Web Services") gebunden und initialisiert worden. Der prinzipielle Ablauf einer PAOS-Sitzung besteht aus drei Teilen 1. StartPAOS 2. RESPONSE -> REQUEST (= eid-server-request -> Client-Response) 3. StartPAOSResponse Jeder HTTP-Request des Clients beginnt mit: POST /eid/ws/paos/ HTTP/1.1 Host: eid.vx4.net Connection: keep- alive Accept- Encoding: gzip Content- Length:... PAOS: ver="urn:liberty:2003-08","urn:liberty:2006-08"; http://www.bsi.bund.de/ecard/api/1.0/paos/getnextcommand Content- Type: application/vnd.paos+xml; charset=utf- 8 Accept: application/vnd.paos+xml Zum Vergleich für den konkreten Ablauf dient [2] Teil 7, Kapitel 2.3, S. 1-14 und Bild 2, PAOS Binding im Besonderen der Bildabschnitt Application Logic. Der wesentliche Ablauf ist wie folgt: StartPAOS Ist der initialer Request vom Client zur Eröffnung der PAOS-Sitzung. Es werden die Parameter SessionIdentifier, ContextHandle und SlotHandle übertragen: Version 1.0 30. September 2013 Seite 13/18

<ns5:startpaos> <ns5:sessionidentifier>5a2957b56bc66626e12e126cefc0d7e3</ns5:sessionidentif ier> <ns5:connectionhandle> <ns5:contexthandle>49bc2442d2b87a22deb521193723e1351dd4202745227024775fa3c6 4E38FB5B</ns5:ContextHandle> <ns5:slothandle>7a56a25d0c3ab90f2e23d77a645861c8ee917f1eaec0217ed75c9e4a892 B96B2</ns5:SlotHandle> </ns5:connectionhandle> <ns5:useragent> <ns5:name>persoapp</ns5:name> <ns5:versionmajor>0</ns5:versionmajor> <ns5:versionminor>1</ns5:versionminor> </ns5:useragent> <ns5:supportedapiversions> <ns5:major>1</ns5:major> <ns5:minor>1</ns5:minor> <ns5:subminor>3</ns5:subminor> </ns5:supportedapiversions> </ns5:startpaos> StartPAOSResponse Ist der finale Response vom eid-server, der die PAOS-Sitzung beendet. <ns3:startpaosresponse xmlns="urn:oasis:names:tc:dss:1.0:core:schema" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" xmlns:ns3="urn:iso:std:iso- iec:24727:tech:schema" xmlns:ns4="http://www.bsi.bund.de/ecard/api/1.1" xmlns:ns5="http://uri.etsi.org/02231/v2.1.1#" xmlns:ns6="http://uri.etsi.org/02231/v2.x#" xmlns:ns7="http://uri.etsi.org/02231/v3.1.2#" xmlns:ns8="http://www.setcce.org/schemas/ers"> <Result> <ResultMajor>http://www.bsi.bund.de/ecard/api/1.1/resultmajor#o k</resultmajor> </Result> </ns3:startpaosresponse> Mittelteil der PAOS-Kommunikation Der mittlere Teil der PAOS-Kommunikation beginnt mit einem HTTP-Reponse vom eid-server, d.h. mit einer PAOS-Anfrage vom eid-server. Der anschliessende HTTP-Request vom Client ist die zugehörige Antwort. Nach diesem Schema werden dann Terminal-Authentification, Chip-Authentification, etc. abgewickelt. Version 1.0 30. September 2013 Seite 14/18

5.2.4 TLS 1.1+, Bouncy-Castle Diese Komponente bezeichnet einen TLS-Protokollstack, welcher für die verschlüsselte Kommunikation zwischen eid-client und Diensteanbieter-System sowie zwischen eid-client und eid-server verantwortlich ist. Bei letzterem ist zu beachten, dass TLS-RSA-PSK mit mindestens AES-128 unterstützt werden muss (vgl. hierzu [2] Teil, Kap. 2.4.1.1-2). Damit scheiden die Standard-Bibliotheken im Regelfall aus. Im Open-Source-Projekt "PersoApp" kommt Bouncy-Castle (http://www.bouncycastle.org/) zum Einsatz, welches alle erforderlichen, oben genannten, Voraussetzungen erfüllt. Die Anbindung von Bouncy-Castle erfolgt durch eine Corekomponente (Wrapper), die im Java-Paket de.persoapp.core.tls zu finden ist. Dieses Paket beinhaltet folgende Klassen/Interfaces: BCTlsAuthentication (implements org.bouncycastle.crypto.tls.tlsauthentication) TLSClient (org.bouncycastle.crypto.tls.defaulttlsclient) TLSPSKClient (org.bouncycastle.crypto.tls.psktlsclient) sowie BCTlsSession (javax.net.ssl.sslsession) BCTlsSocketImpl (javax.net.ssl.sslsocket) BCTlsSocketFactoryImpl (javax.net.ssl.sslsocketfactory) Die Schnittstelle nach "Außen" stellt die Klasse "BCTlsSocketFactoryImpl" dar. Sie besitzt entsprechende Konstruktoren für PSK-basierte Clients, als auch für nicht PSK-basiete Client, genauer: 1. BCTlsSocketFactoryImpl() 2. BCTlsSocketFactoryImpl(sessionID, psk) Version 1.0 30. September 2013 Seite 15/18

Im PersoApp-Kontext wird der erste Konstruktor im Fall der Kommunikation mit dem Dienstanbietersystem ohne PSK (d.h. im "ECApiHttpHandler") genutzt und der zweite wird zur Kommunikation mit dem eid-server mit PSK benötigt (siehe: Initialisierung des MinitHttpClients im PAOS-Stack). 5.3 ISO-24727 Services In BSI-TR 03112-3, -4 und -6 werden generisch die von der -Open- Source-Software-Bibliothek unterstützten Dienste eines eid-clients definiert, dazu gehören Management Interface : BSI TR-03112-3 Service Access Layer (SAL): BSI TR-03112-3, 4 Interface Device (IFD): BSI TR-03112-6 Protocol Service : BSI TR-03112-3, 4 Die Interfaces dieser Services sind im Paket zu finden. iso.std.iso_iec._24727.tech.schema 5.4 ecardhandler Der ecardhandler stellt eine abstrakte Schnittstelle zu den Funktionen der eid-karte dar. U.a. wird beim Einsatz eines Basislesers das PACE-Protokoll (Password Authenticated Connection Establishment) aber auch weite Teile der Terminal- und Chip- Authentication hier direkt abgebildet. Zu diesem Zweck wird durch die Klasse das Interface de.persoapp.core.card.ecardhandler de.persoapp.core.card.icardhandler bereitgestellt, welches die folgenden Methoden beinhaltet: Version 1.0 30. September 2013 Seite 16/18

TransportProvider getecard(); int haspace(object transport); int dopinunblock(transportprovider tp, byte verifysecret, SecureHolder verifysecretinput, byte unblocksecret); int dopinchange(transportprovider tp, byte verifysecret, SecureHolder verifysecretinput, byte modifysecret, SecureHolder modifysecretinput); public int doesigninit(transportprovider tp0); public int doesignchange(transportprovider tp0); public int doesignunblock(transportprovider tp0); public int doesignterminate(transportprovider tp0); boolean startauthentication(byte[] CHAT, SecureHolder secret, byte[] termdesc); void reset(); byte[] getidpicc(); List<byte[]> getcareferences(); byte[] getefcardaccess(); boolean verifycertificate(byte[] cvc); void initta(byte[] ephemeralkey, byte[] auxdata); byte[] gettachallenge(); boolean verifytasignature(byte[] tasignature); byte[] getefcardsecurity(); byte[] execca(); byte[] transmit(byte[] cmd); TransportProvider Da nicht nur die PC/SC-Schnittstelle eine Möglichkeit darstellt auf Lesegeräte (IFDs) zuzugreifen wurde der TransportProvider eingeführt. Darüber werden die Fähigkeiten der Lesegeräte abstrakt abgebildet. Beispielsweise existieren Transportprovider Implementierungen auf PC/SC, USB CCID, die im Desktop-Projekt relevant sind. Version 1.0 30. September 2013 Seite 17/18

Aus Sicht eines hypothetischen Generic Card Access Layer bildet der Transport- Provider den Übergang in Hardware-nahe Schichten. 6 Mitgeltende Dokumente [1] D06-QM-Architekturkonzept-der-Open-Source-Core v 1.0 (https://www.persoapp.de/wp-content/uploads/2013/07/d06-qm-architekturkonzeptder-open-source-core.pdf) [2] BSI - Technische Richtlinie TR 03112-(1-7), Version 1.1.2, Bundesamt für Sicherheit in der Informationstechnik, 2012. [3] BSI - Technische Richtlinie TR 03116-4 ecard-projekte der Bundesregierung, Teil 4 Vorgaben für Kommunikationsverfahren im egovernment, 2013. [4] BSI - Technische Richtlinie TR 03124-1 eid-client Part 1: Specifications. Bundesamt für Sicherheit in der Informationstechnik, 2013 [5] ISO/IEC 24727-(1-3): Identification cards, 2007/2008. [6] Liberty Reverse HTTP Binding for SOAP Specification (PAOS). Liberty Alliance Project: Version: v1.1 (http://www.projectliberty.org/liberty/content/download/1219/7957/file/liberty-paosv1.1.pdf) [7] The Legion of the Bouncy Castle (http://www.bouncycastle.org/) Version 1.0 30. September 2013 Seite 18/18