Eberhardt-Karls-Universität Tübingen Mathematisch-Naturwissenschaftliche Fakultät Wilhelm-Schickard-Institut für Informatik DIPLOMARBEIT Ein zentrales Identitätsportal für die Benutzer-Authentizierung im Internet mit 2D-Barcodes Kevin Kempfer Mat-Nr. 2371481 Betreuer: Apl. Prof. Klaus Reinhardt, Dr. Bernd Borchert Eberhardt-Karls-Universität Tübingen Wilhelm-Schickard-Institut für Informatik Tübingen, Juli 2013 ii Eidesstattliche Erklärung Hiermit versichere ich, diese Arbeit selbständig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt zu haben. Tübingen, den 12. Juli 2013 Kevin Kempfer iii iv Inhaltsverzeichnis 1 Einleitung 1 1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Thema und Ziel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 eKaay 5 2.1 Das eKaay-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Das eKaay-Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 Registrierungsprozess am eKaay-Portal . . . . . . . . . . . . . . . . . . 7 2.3.1 Benutzerregistrierung . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3.2 Portaloberäche . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3.3 Registrierung am Smartphone . . . . . . . . . . . . . . . . . . . 7 2.3.4 Verwaltung des Accounts . . . . . . . . . . . . . . . . . . . . . . 15 3 OpenID 17 3.1 Begrie und zusätzliche Protokolle . . . . . . . . . . . . . . . . . . . . 17 3.2 Konzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.3 Technischer Ablauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.4 Bewertung OpenID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.5 OpenID am eKaay-Portal . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.5.1 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.5.2 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4 oAuth 27 4.1 Begrie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.2 Konzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.3 Technischer Ablauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.4 Bewertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.5 oAuth am eKaay-Portal . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.5.1 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.5.2 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 v Inhaltsverzeichnis 5 Vergleich OpenID vs. oAuth 35 6 Login auf externen Websites 37 6.1 Demo des OpenID Logins 6.2 Demo des oAuth Logins . . . . . . . . . . . . . . . . . . . . . . . . . 37 . . . . . . . . . . . . . . . . . . . . . . . . . . 40 7 Diskussion 41 8 Ausblick 43 Abkürzungen 45 Abbildungsverzeichnis 47 Literaturverzeichnis 49 vi 1 Einleitung Internet-Benutzer haben heute die Möglichkeit auf vielfältige, zum Teil sicherheitskritische Dienste zuzugreifen, z.B. Online Banking, eGovernment und Online Shopping. Von zentraler Bedeutung ist dabei, dass der Zugang zu diesen Diensten und Ressourcen so gesichert ist, dass nur der rechtmäÿige Benutzer darauf zugreifen kann. Dabei genügt es nicht, dass der Benutzer sich identiziert, also dem Dienst-Anbieter bekannt gibt, wer er ist. Vielmehr muss der Benutzer dies gegenüber dem Dienst-Anbieter beweisen. Diese Sicherheitsüberprüfung, d.h. den Nachweis darüber, derjenige zu sein, der man zu sein behauptet, nennt man Authentizierung. Man unterscheidet im Wesentlichen drei Ansätze zur Authentizierung eines Benutzers gegenüber einem Dienst im Internet: Wissen Besitz z.B. ein Passwort, eine PIN 1 oder die Antwort auf eine Frage 2 ein physikalisches Gerät, z.B. eine SmartCard, ein Security-Token oder ein Schlüssel Eigenschaften meist Biometrie, z.B. ein Fingerabdruck, die Retina oder ein anderes fälschungssicheres biometrisches Merkmal Mit fortschreitender Technik und der Verlagerung von immer mehr Diensten in das Internet steigt die Gefahr kriminellen Miÿbrauchs der Benutzerkonten von InternetNutzern. Die Schäden durch Betrug mit Zugangsdaten zu Kommunikationsdiensten lagen im Jahr 2011 in Deutschland bei etwa 21,2 Mio. Euro [Bundeskriminalamt 2012]. Um sich auszuweisen, ist seit dem Beginn des Internetzeitalters die Kombination aus Benutzername und Passwort gängig. Dabei erstellt der Benutzer bei jedem Dienst-Anbieter ein Benutzer-Konto und gibt den gewünschten Benutzernamen und das Passwort an. Damit kann der Dienst-Anbieter den Benutzer erkennen und ihm Zugang zum angebotenen Dienst gewähren. Die Sicherheit dieses Systems beruht allein auf der Sicherheit des angegebenen Passworts und dessen sicherer Übertragung 1 Personal 2 z.B. Identication Number in Form eines speziellen USB-Sticks 1 1 Einleitung zur Website. Ist es leicht zu erraten (Namen, Geburtstage, etc.) oder zu kurz und so durch einfaches Ausprobieren herauszunden, kann ein Angreifer im Namen des Opfers agieren und so z.B. auf Kosten des Opfers einkaufen oder beim Online Banking das Guthaben des Opfers auf vom Angreifer verwaltete Bankkonten umleiten. Aufgrund der Fülle an Benutzer-Konten bei verschiedensten Dienst-Anbietern, die ein einzelner Benutzer heute besitzt, wird von vielen Benutzern das gleiche Passwort für mehrere Dienste verwendet [Florencio und Herley 2007]. Damit reicht bereits ein gehacktes Konto bzw. der Zugri auf ein einzelnes Passwort zu einem bestimmten Konto, um dem Angreifer Zugri auf verschiedenste Dienste im Namen des Opfers zu gewähren. Erschwerend kommt hinzu, dass Benutzer zu selten ihre Passwörter ändern [Florencio und Herley 2007]. Zu kurze Passwörter machen es einem Angreifer möglich, einfach alle möglichen Zeichenkombinationen auszuprobieren und so auf das richtige Passwort zu stoÿen. Geht man beispielsweise von einem Passwort aus, das aus acht Kleinbuchstaben besteht, so benötigt ein handelsüblicher Computer, der ca. vier Milliarden Rechenoperationen pro Sekunde leistet, nur etwa eine Minute, um die richtige Kombination zu nden. Selbst bei der Wahl eines sicheren Passworts mit derzeit 3 mindestens zwölf alphanumerischen Zeichen sowie Sonderzeichen bleibt das Risiko, dass Schadsoftware, die möglicherweise im Betriebssystem des benutzten Computers läuft, das Passwort mitlesen könnte. Es ist die Aufgabe des Benutzers sich vor derlei Gefahren aktiv zu schützen, indem Virusscanner und Firewalls auf dem verwendeten Computer installiert und aktuell gehalten werden. In vielen Situationen, z.B. bei der Benutzung öentlich zugänglicher Computer, hat der Benutzer allerdings keinerlei Einuss auf die Sicherheitsausstattung und deren Wartung. Die Authentizierung durch Besitz oder durch Eigenschaften, beispielsweise einer SmartCard oder des Fingerabdrucks, setzt oft das Vorhandensein spezieller Lesegeräte voraus, was an öentlich zugänglichen Computern meist nicht der Fall ist. Neue Verfahren wie eKaay 4 setzen daher auf Geräte wie Smartphones, die viele Benutzer ständig bei sich tragen. 1.1 Motivation eKaay ist ein Authentizierungssystem, mit dem sich der Benutzer statt mit Benutzername und Passwort mit Hilfe seines Smartphones bei Websites anmelden kann. eKaay 3 Rechendauer hier: über 100000 Jahre 4 http://www.ekaay.com/ 2 1.1 Motivation ist ein SpinO der Universität Tübingen und wird dort seit 2011 produktiv zur Anmeldung beim Webmail-Service 5 der Universität genutzt. Der Name eKaay ist abgeleitet von friesisch Kaay = Schlüssel (verwandt mit englisch key). Auÿerdem bedeutet eKaay - ausgesprochen als 易开 - auf Chinesisch leicht zu önen. [Borchert 2013b] Das eKaay-System besteht aus einem serverseitigen Teil, der die Anmeldung des Benutzers koordiniert und mit der eigentlichen Website kommuniziert und einem Programm, das auf dem Smartphone des Benutzers läuft, einer sogenannten App. 6 7 Beim eKaay-Verfahren wird auf dem PC -Bildschirm ein QR -Code angezeigt, der von der eKaay-App auf dem Smartphone gelesen wird. Die App führt den Anmeldevorgang über die vom PC unabhängige Internet-Verbindung des Smartphones durch und der Benutzer wird so automatisch am PC eingeloggt. Das eigentliche Passwort bzw. der Schlüssel für die Anmeldung wird dabei auf dem Smartphone abgelegt. Die Website, die das eKaay-System nutzen will, muss dafür das eKaay-Verfahren lizenzieren und 8 mit Hilfe des bereitgestellten SDK implementieren. Der Benutzer muss sich also weder Benutzername noch Passwort merken. Gleichzeitig kommt für jedes Konto bei jedem Diensteanbieter ein eigener kryptographisch abgesicherter Schlüssel zum Einsatz. Da der PC, an dem der Benutzer einen Dienst benutzen möchte, nie mit den Zugangsdaten des Benutzers in Berührung kommt, ist das eKaay-System auch dafür geeignet, potentiell unsichere Computer, z.B. in Internetcafés und an anderen öentlichen Orten für den Zugri auf sicherheitskritische Dienste im Internet zu nutzen. Optional kann die eKaay-App auf dem Smartphone durch eine PIN gesichert werden. Damit realisiert eKaay die Kombination aus Authentizierung durch Wissen der PIN - und Besitz - des Smartphones selbst mit dem darauf gespeicherten Schlüssel zum Online-Account. Diese besonders sichere Kombination nennt man 2-FaktorAuthentizierung. Ein Manko des eKaay-Systems ist die immernoch vorhandene Notwendigkeit, bei jedem Dienst-Anbieter ein Konto einrichten, persönliche Daten wie Name, E-MailAdresse usw. angeben und aktuell halten zu müssen. 5 http://www.zdv.uni-tuebingen.de/dienstleistungen/Sonstiges/Anleitungen/ eKaay-Login/ 6 Personal Computer Response Code, ein 2D-Barcode 8 Software Development Kit 7 Quick 3 1 Einleitung 1.2 Thema und Ziel Ziel dieser Arbeit ist es, eine zentrale Website, das eKaay-Portal, zu schaen, das beliebige andere Websites zur Authentizierung ihrer Benutzer unter Nutzung der oenen Standard-Protokolle OpenID und oAuth nutzen können. Somit wird es für den Benutzer möglich, sich mit einer zentral am eKaay-Portal gespeicherten Identität auf verschiedenen Websites anzumelden, ohne dort jeweils ein neues Benutzerkonto erönen, persönliche Daten angeben und sich jeweils Passwörter merken zu müssen. Auÿerdem entfällt der Aufwand für den Benutzer, auf den verschiedenen Websites seine persönlichen Daten pegen zu müssen, da diese zentral vom eKaay-Portal zur Verfügung gestellt und dort verwaltet werden können. Da es nicht mehr nötig ist, auf jeder Website zunächst ein Konto anlegen zu müssen, das meist erst per E-Mail rückbestätigt werden muss, ist auch der Zeitaufwand für den Benutzer deutlich geringer. Für Website-Betreiber besteht die Möglichkeit, die Benutzerverwaltung vollständig dezentral auszulagern, womit auch der Aufwand zur Sicherung der persönlichen Daten und Passwörter der Benutzer entfällt. Diese Aufgabe käme dann dem eKaay-Portal zu. Im Folgenden wird die Implementation des Systems beschrieben und auf die Vor- und Nachteile der eingesetzten Authentizierungsprotokolle eingegangen. Schlieÿlich wird ein Ausblick auf denkbare zukünftige Entwicklungen gegeben. 4 2 eKaay 2.1 Das eKaay-Verfahren Hinter eKaay steckt die Idee, die Authentizierung auf Websites gegen mitlauschende Schadsoftware abzusichern. In Abb. 2.1 wird der Ablauf schematisch dargestellt. Abb. 2.1: Ablauf des Login-Vorgangs bei Nutzung von eKaay [Borchert 2013a] 1. Der Benutzer möchte sich auf einer Website anmelden. Neben dem normalen Benutzername/Passwort-Loginformular wird auch der eKaay QR-Code angezeigt. 2. Mit Hilfe der eKaay-App auf dem Smartphone scannt der Benutzer den QR-Code 3. Nachdem die eKaay-App die Anmeldung durchgeführt hat, ist der Benutzer am Computerbildschirm bei dem gewünschten Dienst angemeldet. Damit ein Benutzer den eKaay-Zugang zur Website nutzen kann, muss dort zunächst ein herkömmliches Konto für den Benutzer existieren. Danach kann der eKaay-Zugang für das Konto freigeschalten werden. Dazu zeigt der eKaay-Server einen speziellen QRCode, der die benötigten Informationen wie Server-Adressen, Benutzername und die 5 2 eKaay Session-ID enthält. Die eKaay-App erzeugt daraufhin einen neuen asymetrischen kryp- 9 tographischen RSA -Schlüssel für das Konto. Bei der Verwendung von asymetrischer Verschlüsselung wird ein Schlüsselpaar erzeugt, das einen öentlichen Teil enthält, der frei verteilt werden kann sowie einen privaten Teil, der nur dem Besitzer zugänglich ist. Mit dem öentlichen Teil des Paares kann eine Klartext-Nachricht verschlüsselt werden, die danach nur mit Hilfe des privaten Teils des Schlüsselpaars wieder entschlüsselt werden kann. Auÿerdem kann der Besitzer des Schlüsselpaares mit seinem privaten Schlüssel eine Klartext-Nachricht signieren, sodass der Empfänger mit Hilfe des öentlichen Teils überprüfen kann, ob die Nachricht tatsächlich vom richtigen Absender kommt und nicht verändert wurde. Da das Schlüsselpaar beim eKaay-Verfahren lokal auf dem Smartphone des Benutzers erzeugt und gespeichert wird, ist sichergestellt, dass ausschlieÿlich der Besitzer an ihn gerichtete, verschlüsselte Nachrichten dekodieren sowie Klartext-Nachrichten signieren kann. Auch dem eKaay-Server ist dies nicht möglich. Die eKaay-App registriert den öentlichen Teil beim eKaay-Server. Beim späteren Login durch das Smartphone kann der eKaay-Server anhand der kryptographischen Signatur des Smartphones erkennen, ob der rechtmäÿige Benutzer sich anmeldet. Abb 2.2 zeigt schematisch die Einbindung von eKaay in bestehende Portale. Parallel zum bestehenden Benutzername/Passwort-Login wird der eKaay-Server eingebunden, der seinerseits die Anmeldung am Account Server des Portals übernimmt. Dabei müssen Account Server und eKaay-Server nicht zwingend auf dem selben physischen Server laufen - der eKaay-Server kommuniziert mit dem Portal über HTTP 10 -Aufrufe. Bei der Aktivierung eines neuen eKaay-Zugangs für ein bestehendes Konto wird vom Account Server, der die Authentizierung der Nutzer verwaltet, ein zufälliges Token 11 erzeugt und in den Abruf des eKaay-QR-Codes integriert. Dieser Token wird vom eKaay-Server über einen eigenen HTTP-Aufruf, also ohne dass der Internet-Browser des Benutzers involviert ist, beim Account-Server auf Gültigkeit überprüft, sodass nur dem authentizierten Benutzer die Aktivierung ermöglicht wird. Umgekehrt überprüft der Account-Server bei jedem Login via eKaay anhand eines solchen Tokens, ob der Loginversuch am eKaay-System tatsächlich authorisiert wurde. In Abb. 2.3 sind beide Vorgänge dargestellt. Kryptosystem, benannt nach seinen Erndern Rivest, Shamir und Adleman [Rivest et al. 1978] Transfer Protocol 11 eine lange Zeichenkette aus Buchstaben und Zahlen 9 ein 10 Hypertext 6 2.2 Das eKaay-Portal 2.2 Das eKaay-Portal 12 Das eKaay-Portal läuft auf dem verbreiteten Apache 13 vollständig in PHP Webserver unter Linux und ist realisiert [Netcraft 2013]. Als Datenbank kommt das Open- 14 Source-Datenbankverwaltungssystem MySQL zum Einsatz. Grundsätzlich ist das eKaay-System allerdings dank der verwendeten (Skript-)Sprachen plattformunabhän- 15 gig und mit beliebigen SQL -basierten Datenbanksystemen zu betreiben. Mit Hilfe der beiden oenen, standardisierten Protokolle OpenID und oAuth können Diensteanbieter die Authentizierung ihrer Benutzer über das eKaay-Portal abwickeln. 2.3 Registrierungsprozess am eKaay-Portal 2.3.1 Benutzerregistrierung In Abb. 2.4 ist das Registrierungsformular zur Auswahl eines Benutzernamens dargestellt. Sollte der gewünschte Benutzername bereits vergeben sein, ist eine erneute Registrierung dieses Benutzernamens nicht möglich. 2.3.2 Portaloberäche In Abb. 2.5 ist die Benutzeroberäche nach der Registrierung eines neues Nutzers dargestellt. Das System fordert den Benutzer zunächst auf, den eKaay-Zugang auch am Smartphone mit Hilfe der eKaay-App zu aktivieren. 2.3.3 Registrierung am Smartphone Um die Account-Daten zum Smartphone zu transportieren, wird ein QR-Code angezeigt, der alle nötigen Daten enthält, um die Registrierung durchzuführen (Abb. 2.6). Am Smartphone scannt die eKaay-App den Code (Abb. 2.7), extrahiert daraus die Server-URL und den Benutzernamen und lässt den Benutzer den neuen Account bestätigen (Abb. 2.8). Danach wird lokal auf dem Smartphone ein Schlüsselpaar zur Kommunikation mit dem Server erzeugt. Über die Internetverbindung des Smartphones wird danach der Account am Server bestätigt und das eKaay-Portal meldet die erfolg- 12 http://httpd.apache.org/ 13 PHP: Hypertext Preprocessor, eine Skriptsprache 14 http://www.mysql.com/ 15 Structured Query Language 7 2 eKaay reiche Aktivierung des Accounts am PC-Bildschirm (Abb. 2.10). Gleichzeitig werden die relevanten Informationen auch am Smartphone nochmals angezeigt (Abb. 2.9). 8 2.3 Registrierungsprozess am eKaay-Portal Abb. 2.2: Einbindung von eKaay in bestehende Portale [Borchert 2013a] 9 2 eKaay Abb. 2.3: 10 Verizierung der Login/Registrierungsanfragen durch Token [Borchert 2013a] 2.3 Registrierungsprozess am eKaay-Portal Abb. 2.4: Registrierungsformular zur Wahl eines Benutzernamens Abb. 2.5: Benutzeroberäche des eKaay-Portals 11 2 eKaay Abb. 2.6: 12 Initialisierung des neuen Accounts am Smartphone durch QR-Code 2.3 Registrierungsprozess am eKaay-Portal Abb. 2.7: Scannen des QR-Codes durch die eKaay-App am Smartphone Bestätigung durch den Benut- Abb. 2.9: Rückmeldung am Smartphone zer am Smartphone nach erfolgreicher Aktivierung des eKaayAccounts Abb. 2.8: 13 2 eKaay Rückmeldung am Computer nach erfolgreicher Aktivierung des eKaay-Accounts am Smartphone Abb. 2.10: 14 2.3 Registrierungsprozess am eKaay-Portal 2.3.4 Verwaltung des Accounts Abb. 2.11: Verwaltungsoberäche des Portals Sobald der Account vom Smartphone aktiviert wurde, kann der Benutzer seine persönlichen Daten am Portal speichern und bei Bedarf ein Notfall-Passwort setzen, das bei Verlust des Smartphones verwendet werden kann. Zunächst ist die Liste der vertrauenswürdigen Websites leer (Abb. 2.11). Damit ist das Benutzer-Konto am eKaay-Portal bereit für die Nutzung auf externen Websites. Diese können frei wählen, welches der beiden unterstützten Protokolle verwendet werden soll. Im Folgenden wird auf beide Varianten eingegangen. 15 2 eKaay 16 3 OpenID 3.1 Begrie und zusätzliche Protokolle Benutzer Der Benutzer ist die reale Person, die das OpenID System nutzen will, um sich bei webbasierten Diensten zu authentizieren. Consumer Website oder Relying Party Die Consumer Website bzw. in der OpenID- Terminologie auch als Relying Party bezeichnet, ist die Website, auf der sich Benutzer mittels OpenID anmelden können. Die Website konsumiert also die persönlichen Daten des Nutzers, die vom Identity Provider zur Verfügung gestellt werden [Rehman 2008]. Identier 16 Die URL , die die digitale Identität des Benutzers identiziert, wird auch Identier genannt. Identity Provider Der Identity Provider ist der Server, der die Benutzerdaten verwal- tet. Im vorliegenden Fall ist dies das eKaay-Portal - beide Bezeichnungen werden daher synonym verwendet. Der Identier zeigt auf den Identity Provider. Während der Authentizierung tauschen Consumer Website und Identity Provider diverse Nachrichten aus, um den Identier zu validieren (angelehnt an Rehman 2008). Yadis Discovery Protocol Yadis bietet einen Mechanismus um verfügbare Services an einer bestimmten URL aufzunden. Yadis ist ein einfaches, XML 17 -basiertes Protokoll, das es der Consumer Website erlaubt, die verfügbaren Authentizierungsmechanismen und -protokolle eines Identity Providers zu identizieren und die nötigen Metadaten abzufragen [Rehman 2008, Recordon und Reed 2006]. 18 Typischerweise wird ein XML-Dokument im XRD Format zurückgeliefert. Bei- spielweise liefert das eKaay-Portal: 16 Uniform Resource Locator Markup Language, eine Auszeichnungssprache zur Darstellung hierarchisch strukturierter Daten 18 eXtensible Resource Descriptor 17 Extensible 17 3 OpenID <?xml version="1.0" encoding="UTF-8"?> <xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)" xmlns:openid="http://openid.net/xmlns/1.0"> <XRD ref="xri://=example"> <Query>*example</Query> <Status ceid="off" cid="verified" code="100"/> <Expires>2013-02-17T00:00:00.000Z</Expires> <ProviderID>xri://=</ProviderID> <!-- OpenID 2.0 Authentifizierungsdienst --> <Service xmlns="xri://$xrd*($v*2.0)"> <Type>http://specs.openid.net/auth/2.0/server</Type> <Type>http://specs.openid.net/extensions/pape/1.0</Type> <URI>http://ekaay.kkdevs.com/server/server.php</URI> </Service> <Service xmlns="xri://$xrd*($v*2.0)"> <Type>http://specs.openid.net/auth/2.0/signon</Type> <Type>http://specs.openid.net/extensions/pape/1.0</Type> <URI>http://ekaay.kkdevs.com/server/server.php</URI> <LocalID>http://specs.openid.net/auth/2.0/identifier_select</LocalID> </Service> <!-- OpenID 1.0 Authentifizierungsdienst --> <Service> <Type>http://openid.net/server/1.0</Type> <URI>http://ekaay.kkdevs.com/server/server.php</URI> <openid:Delegate>http://specs.openid.net/auth/2.0/identifier_select</openid:Delegate> </Service> </XRD> </xrds:XRDS> Im obigen Beispiel stehen mit OpenID 1.0 und OpenID 2.0 zwei verschiedene Authentizierungsmechanismen zur Verfügung, sodass die Consumer Website nach eigenem Ermessen entscheiden kann, welche Version benutzt werden soll. Die-Hellmann-Protokoll Das Die-Hellmann-Protokoll ermöglicht es zwei Kom- munikationspartnern ein gemeinsames Geheimnis auszutauschen, ohne dass dieses Geheimnis jemals übertragen werden müsste. Dafür einigen sich beide Kommunikationspartner auf eine Primzahl und eine Primwurzel und berechnen daraus jeweils mit Hilfe einer Zufallszahl den geheimen Schlüssel. Aus den Nachrichten, die die Partner im Verlaufe der Schlüsselberechnung austauschen, lässt sich der geheime Schlüssel im Allgemeinen nicht berechnen. [Rescorla 1999] 3.2 Konzept OpenID setzt das Konzept der URL-basierten Identität um, d.h. ein Benutzer wird über eine eindeutige URL, den Identier, identiziert. Dabei kommen bei OpenID 18 3.2 Konzept HTTP-Adressen als URL zum Einsatz. Ein gültiger OpenID-fähiger Identier zur Verwendung mit dem eKaay-Portal wäre also z.B.: http://ekaay.kkdevs.com/server/server.php/idpage?user=KevinKempfer Wenn sich ein Benutzer auf einer Website anmelden möchte, die OpenID als LoginVerfahren akzeptiert, genügt es, dort als Benutzername http://ekaay.kkdevs.com anzugeben. Das eKaay-Portal (als Identity Provider) unterstützt dabei sowohl OpenID 1.0 als auch OpenID 2.0. Die Consumer Website wird zunächst selbst eine HTTP- 19 Verbindung zu der angegebenen URL herstellen und aus den dort vorhandenen HTML Meta-Elementen 20 die korrekte URL des Identity Providers extrahieren. Alternativ kann das Yadis Discovery Protocol zum Einsatz kommen, das eine feinere Steuerung erlaubt. In beiden Fällen erhält die Consumer Website Informationen darüber, wie die URL zum eigentlichen Identity Provider lautet. Dieser, als Delegation bekannte Mechanismus, ermöglicht es auch, dass Benutzer auf ihrem eigenen, privat gehosteten Webspace diese Informationen hinterlegen und so unabhängig vom eKaay-Portal eine eigene URL als Identier verwenden können, beispielsweise eine eigene Domain (siehe dazu auch Kapitel 3.3, Schritt 5) [Recordon und Reed 2006]. Im nächsten Schritt wird der Browser des Benutzers mit Hilfe eines HTTP Redirects an die URL des Identity Providers umgeleitet, wobei weitere Informationen wie die RücksprungAdresse der Website und, mit der sogenannten OpenID Simple Registration , bis zu neun gewünschte Benutzerinformationen, wie z.B. die E-Mail-Adresse, Vorname und Nachname, Spitzname oder die Zeitzone des Benutzers übermittelt werden. Der Identity Provider authentiziert nun den Benutzer über eKaay, indem ein QR-Code angezeigt wird, den der Benutzer mit der eKaay-App auf seinem Smartphone scannt. Diese authentiziert sich gegenüber dem eKaay-System, welches schlieÿlich Zugang zum Identity Provider gewährt. Beim ersten Anmeldeversuch auf einer externen Website wird der Benutzer nun gefragt, ob der Consumer Website vertraut wird und die gewünschten persönlichen Informationen übermittelt werden sollen. Dabei wird dem Benutzer auch die URL der Consumer Website angezeigt. Wenn der Benutzer die Authentizierung bestätigt, speichert der Identity Provider dies in der lokalen Datenbank und leitet den Benutzer zurück zur Consumer Website, wobei die gewünschten persönlichen Daten, z.B. Benutzername, E-Mail und vollständiger Name sowie die eindeutige OpenID URL des Benutzers ebenfalls übermittelt werden. Damit ist der 19 Hypertext Markup Language, eine Auszeichnungssprache zur Strukturierung von Inhalten in Dokumenten 20 spezielle HTML-Elemente, die Metadaten zum Dokument enthalten 19 3 OpenID Login-Vorgang abgeschlossen und die Consumer Website kann normal weiterarbeiten. Sollte die Consumer Website beim Anmelden am Identity Provider bereits bekannt und bestätigt sein, entfällt die Rückfrage für den Benutzer. Sollte auÿerdem bereits eine aktive Session am Identity Provider bestehen - der Benutzer also bereits via eKaay angemeldet sein - entfällt auch der eKaay-Login und der Benutzer wird sofort wieder zurück zur Consumer Website geleitet. Im Optimalfall - der Benutzer ist bereits am Identity Provider angemeldet, die Session ist noch nicht abgelaufen und die Consumer Website ist bereits bekannt und bestätigt - verlässt der Benutzer die Consumer Website also faktisch nie; Sein Internet-Browser wird lediglich zweimal umgeleitet um schlieÿlich wieder auf der Consumer Website zu landen. Damit ist die Anmeldung also mit Angabe der Portal-URL und einem Klick erledigt. 3.3 Technischer Ablauf In Abb. 3.1 wird der technische Ablauf der Interaktion zwischen Endbenutzer, Consumer Website und Identity Provider dargestellt. 1. Aufruf der Consumer Website Der Benutzer ruft die Login-Seite der Consumer Website auf 2. Die Website liefert ein Login-Formular, in das der Benutzer seinen Identier eingeben kann. 3. Der Benutzer schickt das Formular ab, der Identier wird zur Consumer Website übertragen. 4. Die Consumer Website normalisiert den Identier, sodass eine gültige URL inklusive Protokoll-Präx wie http:// entsteht. 5. Mit Hilfe des Yadis-Protokolls wird die korrekte URL des Identity Providers gesucht. Sollte die Suche fehlschlagen, wird versucht, diese Information durch einen einfachen HTTP-Request, wobei eventuellen HTTP-Redirects gefolgt wird, und anschlieÿendem Suchen in den HTML-Meta-Elementen des zurückgegebenen Dokuments zu ermitteln. Ein Beispiel für solche Meta-Elemente ist: <link <link <link <link <link <meta 20 rel="openid.server" href="http://ekaay.kkdevs.com/server/server.php" /> rel="openid.delegate" href="http://specs.openid.net/auth/2.0/identifier_select"/> rel="openid2.provider" href="http://ekaay.kkdevs.com/server/server.php" /> rel="openid2.local_id" href="http://specs.openid.net/auth/2.0/identifier_select"/> rel="openid2.claimed_id" href="http://specs.openid.net/auth/2.0/identifier_select"/> http-equiv="X-XRDS-Location" content="http://ekaay.kkdevs.com/server.xrds" /> 3.3 Technischer Ablauf Abb. 3.1: Ablauf des Login-Vorgangs bei Nutzung von OpenID (angelehnt an Stepka 2007) Im obigen Beispiel werden beide OpenID Protokollversionen unterstützt. 6. Schlüsselaustausch Die Consumer Website kontaktiert den Identity Provider um per Die-HellmannSchlüsselaustausch ein Shared Secret auszutauschen, mit dem die nachfolgende Kommunikation gesichert wird (optional) [Rescorla 1999]. 21 3 OpenID 7. Schlüsselaustausch Der Identity Provider liefert das gewünschte Shared Secret bzw. AssoziationsHandle. 8. checkid_setup oder checkid_immediate Aufruf Die Consumer Website leitet den Benutzer mittels HTTP Redirect zum Identity Provider um. Dabei wird dem Identity Provider mit dem OpenID-Parameter Mode mitgeteilt, ob eine Interaktion des Identity Providers mit dem Benutzer erwünscht ist (checkid_setup) oder ob der Identity Provider ohne direkte Interaktion das Ergebnis der Authentizierung zurückliefern soll (checkid_immediate). 21 Letzteres ist vor allem bei asynchronen Aufrufen mittels JavaScript (AJAX ) nützlich. 9. Login Falls der Benutzer noch nicht angemeldet ist, wird die Login-Seite des Identity Providers dargestellt. 10. Login OpenID Endpoint Server Der Benutzer meldet sich mit dem eKaay-Login auf seinem Smartphone an. Falls der Benutzer die Consumer Website noch nicht authorisiert hat, wird er nach der Erlaubnis gefragt, seine Identität an die Consumer Website liefern zu dürfen. 11. Ergebnislieferung Das Ergebnis der Authorisierung wird der Consumer Website mitgeteilt, indem der Browser des Benutzers per HTTP-Redirect zurück zur Consumer Website umgeleitet wird. 12. check_authentication Request/Response Wenn die Anmeldung erfolgreich war, veriziert die Consumer Website über eine eigene Verbindung zum Identity Provider, ob die empfangenen Daten valide sind. Dies ist optional, falls die Schritte 6 und 7 durchgeführt wurden. In diesem Fall kann und muss die Consumer Website die empfangenen Daten anhand der Server-Signatur verizieren. 13. Login Consumer Response Der Login-Vorgang wird abgeschlossen und der Benutzer hat eine aktive Session auf der Consumer Website. 21 Asynchronous 22 JavaScript and XML 3.4 Bewertung OpenID 3.4 Bewertung OpenID Für OpenID spricht die relativ groÿe Verbreitung: Es gab bereits im Jahr 2009 etwa neun Millionen Websites, die OpenID als Login-Verfahren akzeptieren und die somit ohne Anpassungen für das eKaay-Verfahren nutzbar sind [Kissel 2009]. Auÿerdem gibt es Plugins für viele gröÿere Software-Pakete wie Blogs, Content Management Systeme und andere internetbasierte Dienste, die OpenID als Login-Verfahren nachrüsten. Im Vergleich zu oAuth (siehe Kapitel 4) ist die Komplexität der Implementation deutlich geringer, was ebenfalls zu mehr Akzeptanz bei Website-Betreibern führen dürfte. Weiterhin treten viele groÿe Dienst-Anbieter wie Google, Yahoo oder AOL für Ihre Nutzer als Identity Provider auf, womit sehr viele Internet-Nutzer bereits über eine OpenID-URL verfügen. Ein Nachteil des OpenID-Verfahrens ist die Notwendigkeit, den Benutzer-Browser zum Identity Provider umzuleiten. Eine bösartige Website könnte statt zum echten Identity Provider umzuleiten, auf eine eigene, identisch aussehende Seite umleiten und so Benutzername und Passwort des Benutzers abgreifen. Dieses Szenario ist beim eKaay-Portal nicht möglich, da der Benutzer keine Passwörter eingibt und sich die Smartphone-App nur beim eKaay-Server authentizieren kann. Ein anderes Szenario wurde von Wang et al. (2012) gezeigt: Einige Websites, die OpenID als LoginVerfahren anbieten, prüfen die zurückgegebenen persönlichen Daten des Benutzers nicht vollständig auf Validität, womit ein Angreifer sich als jemand anderes ausgeben könnte, indem z.B. eine E-Mail-Adresse zu den zurückgegebenen Daten hinzugefügt wird, die von der Consumer Website ursprünglich gar nicht angefordert wurde und damit auch nicht durch die Server-Signatur abgedeckt ist. Es obliegt hierbei natürlich der Consumer Website, die empfangenen Daten auch zu validieren. Da die Spezikation von OpenID keinerlei Verschlüsselung vorsieht, ist die Kommunikation zwischen dem Browser des Benutzers und dem Identity Provider genau wie die Kommunikation zwischen Consumer Website und Identity Provider grundsätzlich abhörbar und anfällig für Man-In-The-Middle-Angrie, bei denen sich ein Angreifer in die Kommunikation der beiden Kommunikationspartner einschaltet, die Nachrichten jeweils auf dem Weg vom einen zum anderen Kommunikationspartner abfängt und möglicherweise ändert. Abhilfe schat hier laut Spezikation die Nutzung von 22 SSL 23 /TLS 22 Secure zur Sicherung des HTTP-Verkehrs. [OpenID 2007] Aus Betreiber-Sicht Sockets Layer, heute Transport Layer Security Layer Security 23 Transport 23 3 OpenID gibt es zudem weitere bedenkliche Eigenarten. So gibt der Benutzer eine beliebige, für den Betreiber meist unbekannte URL an, zu der sich der Betreiber-Server im weiteren Ablauf verbinden muss. Daraus ergeben sich oensichtlich Probleme, z.B. die Rückgabe groÿer Dateien oder sehr langsame Antworten, was bei Denial-of-Service-Angrien genutzt werden könnte. Bei dieser Art von Angrien wird versucht, das Zielsystem mit einer Flut von Daten oder einer hohen Anzahl gleichzeitiger Verbindungen zu überlasten und es ihm so unmöglich zu machen, die Anfragen legitimer Nutzer zu beantworten. Die Betreiber-Server könnten so auch für Port-Scans fremder Systeme missbraucht werden, indem URLs so gewählt werden, dass sich aus den Antworten Rückschlüsse auf die Konguration des Zielsystems ziehen lassen. Nicht zuletzt könnten bei mangelnder Absicherung auch interne Systeme des Service Providers durch Angabe entsprechender URLs angegrien werden. Darüber hinaus formuliert Dussa (2010) einige grundsätzliche Sicherheitsprobleme, die es je nach Einsatzzweck zu bedenken gilt: Die Identität eines Benutzers wird bestätigt von einer dritten Instanz, die vorher nicht bekannt ist, deren Sicherheitsstandards unklar sind und auf die der Nutzer verweist. Diese Tatsachen machen einen Einsatz von OpenID als Authentizierungsmechanismus in sicherheitskritischen Bereichen, wie z.B. Online Banking nur dann sinnvoll, wenn der Identity Provider dem Betreiber der Consumer Website bekannt ist und dessen Sicherheitsrichtlinien und -standards überprüft wurden und ausreichend sind. Weiterhin muss zwingend gewährleistet sein, dass die Kommunikation z.B. über SSL/TLS abgesichert und die empfangenen Daten validiert werden. 3.5 OpenID am eKaay-Portal 3.5.1 Server Das eKaay-Portal wurde auf Basis der frei verfügbaren PHP OpenID library von Jan- 24 Rain erstellt. Diese stellt einen OpenID Server Endpoint, der das OpenID-Protokoll implementiert, und ein einfaches Portal-Beispiel bereit, das die Authentizierung via OpenID ermöglicht und beide derzeit verbreiteten OpenID Protokoll-Versionen (1.0 und 2.0) unterstützt. Das System wurde mit Hilfe des eKaay-SDKs um den eKaayZugang erweitert. Es wurde eine Benutzerverwaltung mit angeschlossener MySQL-Datenbank imple- 24 http://janrain.com/openid-enabled/ 24 3.5 OpenID am eKaay-Portal mentiert, sodass neue Benutzer sich selbst registrieren und anschlieÿend durch Scannen des angezeigten QR-Codes den eKaay-Zugang zum eKaay-Portal auf dem Smartphone freischalten können. Darüber hinaus kann der Benutzer nach dem Login am Portal seine persönlichen Daten bearbeiten und für seinen Account ein herkömmliches Passwort setzen. Dieses Passwort kann z.B. zum Einsatz kommen, wenn das Smartphone gestohlen wurde oder momentan nicht verfügbar ist. Des Weiteren kann der Benutzer die Liste der vertrauenswürdigen Websites, die Zugri auf die persönlichen Daten des Nutzers haben, ansehen und die Einwilligung zur Datenweitergabe zu jedem Zeitpunkt widerrufen. Ohne Anpassungen kann somit jede Website, die OpenID als Login-Verfahren unterstützt, direkt das eKaay-Verfahren nutzen, um seine Benutzer authentizieren zu lassen. Dabei genügt es, als Benutzername http://ekaay.kkdevs.com zu verwenden. 3.5.2 Client Um externen Websites die Nutzung von eKaay via OpenID möglichst leicht zu machen, wurde ein ebenfalls in PHP geschriebenes Beispiel-Skript entwickelt (siehe auch Kapitel 6.2), dass die Authentizierung via OpenID durchführt. Dies ist nicht auf das eKaay-Portal beschränkt, sondern funktioniert mit jedem Dienstanbieter, der OpenID als Login-Mechanismus unterstützt. Basierend auf der LightOpenID library 25 be- schränkt sich der Programmieraufwand für die Betreiber einer Website auf weniger als 20 Zeilen PHP-Code: <? require('openid.php'); try { $openid = new LightOpenID('client.ekaay.kkdevs.com'); //your local URL, displayed to the user if(!$openid->mode) { if(isset($_POST['login'])) { $openid->identity = "http://ekaay.kkdevs.com"; $openid->required = array('contact/email'); $openid->optional = array('namePerson', 'namePerson/friendly'); header('Location: ' . $openid->authUrl()); } } elseif($openid->mode == 'cancel') { echo 'User has canceled authentication!'; } else { echo 'User <b>' . ($openid->validate() ? $openid->identity . '</b> has ' : '</b> has not ') . 'logged in.<br/><br/><pre>'; print_r($openid->getAttributes()); echo "</pre>"; 25 http://mewp.s4w.pl/post/17 25 3 OpenID } } catch(ErrorException $e) { echo $e->getMessage(); }?> Im ersten Schritt wird der Browser des Benutzers zum eKaay-Portal umgeleitet, um sich dort zu authentizieren. Dabei werden auch die gewünschten Datenfelder übertragen, z.B. E-Mail-Adresse und Name des Benutzers. Nachdem der Benutzer vom eKaay-Portal zurückgeleitet wurde, wird die Authentizierung validiert und die mitgelieferten Datenfelder ausgegeben. Um den gleichen Code zur Authentizierung gegenüber beliebigen OpenID Providern zu nutzen, genügt es, die Variable $openid->identity nicht fest vorzugeben, sondern beispielsweise durch den Benutzer in einem OpenIDLogin-Formular ausfüllen zu lassen. 26 4 oAuth 4.1 Begrie Abweichend von den Begrien der OpenID-Terminologie verwendet oAuth folgende Begrie: Service Provider Der Service Provider ist der Server, der die zu schützenden Ressour- cen zur Verfügung stellt. Im vorliegenden Fall ist dies das eKaay-Portal - beide Bezeichnungen werden daher synonym verwendet. Während der Authentizierung tauschen Consumer Website und Service Provider diverse Nachrichten aus, um den Zugri auf die gewünschten Daten zu autorisieren. Token oAuth unterscheidet zwischen Abfrage-Token (Request Token), Zugangs-Token (Access Token) und Erneuerungs-Token (Refresh Token). Diese werden anstelle von einer Benutzer-Name/Passwort-Kombination verwendet und können eine zeitlich limitierte Gültigkeit haben. Client ID Jede Consumer Website erhält vom Service Provider eine eindeutige Client ID, eine Art Benutzername, mit dem sich die Consumer Website gegenüber dem Service Provider identiziert. Client Secret Jede Consumer Website erhält vom Service Provider ein Client Secret, mit dem sich die Consumer Website bei direkten Anfragen beim Service Provider authentiziert. Das Client Secret wird nie an den Internet-Browser des Benutzers übertragen. 4.2 Konzept Grundsätzlich ist oAuth nicht grundsätzlich dafür entwickelt worden, die Identität des Benutzers zu bestätigen, sondern es dem Benutzer möglich zu machen, einer dritten Instanz den Zugri auf seine Daten, Dokumente, Bilder oder beliebige andere Ressourcen beim Service Provider zu gewähren, ohne dass der Benutzer dafür seine Login-Daten an die dritte Instanz abgeben muss. oAuth ist somit eher als Framework 27 4 oAuth für API 26 -Zugrie im Namen des Benutzers zu denieren. Daher gestaltet sich die Implementation des eKaay-Portals über oAuth etwas aufwändiger als bei OpenID. Zunächst muss die Consumer Website sich grundsätzlich gegenüber dem eKaayPortal, das als Service Provider auftritt, authentizieren und erhält daher vom Service Provider eine Client ID und ein Client Secret , die bei jeder direkten Anfrage zwischen Consumer Website und Service Provider zur Authentizierung der Consumer Website mitgeschickt wird. Somit kann das eKaay-Portal sicherstellen, dass die Consumer Website berechtigt ist, die gewünschte Aktion durchzuführen. Da oAuth nicht für Authentizierungsanfragen speziziert ist und es daher keinen vordenierten Protokolluÿ zur Authentizierung gibt, muss die Consumer Website das vom eKaay-Portal bereitgestellte PHP-SDK implementieren, indem über den spezizierten oAuth ProtokollAblauf hinaus auch die nötigen API-Aufrufe zum Abruf der persönlichen Daten des Benutzers festgelegt sind. Danach ist der grundsätzliche Ablauf aus Sicht des Benutzers identisch mit dem Ablauf bei OpenID: (1) Anmeldung am eKaay-Portal via eKaayLogin am Smartphone, (2) Bestätigung der Datenfreigabe und (3) Umleitung zurück zur Consumer Website. Eine Angabe eines Benutzernamens wie bei OpenID ist wegen der fest vorgegebenen Parameter dabei nicht nötig. Der Login-Vorgang auf der Consumer Website ist also tatsächlich mit einem Mausklick möglich. Als Rückgabe erhält die Consumer Website wie bei OpenID die freigegebenen persönlichen Daten des Benutzers. Die Consumer Website kann den vom Service Provider erhaltenen Access Token speichern, um nachfolgende Zugrie auf die API des Service Providers - auch ohne dass der Benutzer involviert ist - durchzuführen. Im Zusammenspiel mit dem eKaayPortal könnte eine Consumer Website also regelmäÿig die persönlichen Daten des Benutzers aktualisieren, ohne dass der Benutzer dies erneut authorisieren oder auch nur die Consumer Website nutzen müsste. Da sich Access Tokens nicht widerrufen lassen, sind diese meist mit einer Verfallszeit versehen. Nach Ablauf dieser Zeit verliert der Access Token seine Gültigkeit. Es steht der Consumer Website in diesem Fall frei, mit Hilfe eines Refresh Tokens erneut einen Access Token anzufordern. 4.3 Technischer Ablauf In Abb. 4.1 wird der technische Ablauf der Interaktion zwischen Endbenutzer, Consumer Website und Service Provider dargestellt. 26 Application 28 Programming Interface 4.3 Technischer Ablauf Abb. 4.1: Ablauf des Login-Vorgangs bei Nutzung von oAuth 1.0a 1. Durch Klick auf den eKaay-Login-Button o.ä. wird der Login-Vorgang durch den Benutzer gestartet. 2. Die Consumer Website fordert beim Service Provider (hier: das eKaay-Portal) einen unauthorized request token an und übermittelt dabei seine individuelle Client ID und optional eine Redirect-URL, zu der der Service Provider den Benutzer umleitet. 29 4 oAuth 3. Der Service Provider überprüft Client ID und die Redirect-URL und liefert den unauthorized request token zurück. 4. Die Consumer Website leitet den Benutzer zur Login-Seite des eKaay-Portals um und liefert dabei den unauthorized request token mit. 5. Das eKaay-Portal liefert dem Benutzer die Login-Seite aus. Dabei wird der QRCode zum Login via Smartphone angezeigt. 6. Der Benutzer meldet sich mit seinem Smartphone an und authorisiert die Consumer Website für den Zugri auf seine persönlichen Daten. 7. Das eKaay-Portal leitet den Endbenutzer zurück zur Consumer Website und übermittelt dabei auch einen authorized request token . 8. Der Browser des Benutzers ruft die angegebene Redirect-URL ab. 9. Die Consumer Website fordert mit dem mitgelieferten einen access token authorized request token an, wobei Client ID und Client Secret ebenfalls übermittelt werden. 10. Das eKaay-Portal erzeugt und übermittelt den angeforderten access token . 11. Die Consumer Website hat nun Zugri auf eine bestätigte Authentizierung des Nutzers und kann optional die persönlichen Daten des Benutzers anfordern. 12. Das eKaay-Portal liefert die gewünschten Daten. 13. Der Login-Vorgang ist damit abgeschlossen und die Consumer Website liefert dem Benutzer die angeforderte Website mit aktiver Login-Session aus. Davon abweichend ist der Protokoll-Fluÿ von oAuth 2.0 in Abb. 4.2 dargestellt. Hier entfällt der Abruf des unauthorized request token. Der Benutzer wird direkt zum eKaay-Portal umgeleitet. Die restlichen Vorgänge sind analog zu oAuth 1.0a, allerdings gibt es keine Signaturen der Anfragen mehr. Seit Version 2.0 wird ausschlieÿlich auf SSL/TLS zur Absicherung der Kommunikation gesetzt [oAuth 2012]. 30 4.4 Bewertung Abb. 4.2: Ablauf des Login-Vorgangs bei Nutzung von oAuth 2.0 4.4 Bewertung Ein Vorteil des oAuth Verfahrens sind die wiederverwendbaren Access Tokens, die die Consumer Website speichern kann. Innerhalb der Gültigkeitsdauer des Access Tokens (meist mehrere Tage oder Wochen) kann die Consumer Website jederzeit erneut eine Authentizierung beim Identity Provider anfragen, ohne dafür den Benutzer zu involvieren. Ein einmal auf der Consumer Website angemeldeter Benutzer könnte 31 4 oAuth also z.B. mittels Cookies markiert und so bei jedem Besuch wiedererkannt werden. Die Consumer Website könnte in diesem Fall im Hintergrund vom Identity Provider die persönlichen Daten des Benutzers aktualisieren, ohne dass der Benutzer dafür etwas tun muss. Selbst nach Ablauf der Gültigkeitsdauer des Access Tokens kann die Consumer Website diesen erneuern. Sollte der Benutzer zwischenzeitlich sein Einverständnis zum Zugri auf die Identität oder die persönlichen Daten widerrufen haben, schlägt der Versuch fehl und die Authentizierung und Bestätigung der Freigabe muss erneut stattnden. Der Consumer Website steht es aber auch frei, den Access Token nach erfolgreicher Authentizierung direkt zu verwerfen und ähnlich wie OpenID bei jedem neuen Besuch des Benutzers erneut die Authentizierung zu starten - wovon der Benutzer im Optimalfall nichts bemerkt. Negativ fällt auf, dass in der aktuellen Version 2.0 von oAuth alle Signaturen zur Absicherung der übermittelten Daten entfernt wurden und die gesamte Sicherheit des Protokolls nun auf der Absicherung des HTTP-Verkehrs beruht, üblicherweise durch TLS 27 . Viele groÿe Service Provider ha- ben allerdings abweichend vom Standard nach wie vor die Anforderung an ihre Nutzer, die gesamte Kommunikation mit Signaturen abzusichern. 4.5 oAuth am eKaay-Portal 4.5.1 Server Der OpenID Server Endpoint wurde um oAuth als weiteres Authentizierungsprotokoll erweitert. Hierzu kam die ebenfalls frei verfügbare oAuth2-server-php library von 28 Brent Shaer zum Einsatz. Nach erfolgreicher Authentizierung via oAuth wird da- bei der Benutzer in einem weiteren internen Schritt auch am OpenID Server Endpoint angemeldet, was die Nutzung beider Protokolle auch parallel je nach Belieben der Consumer Website möglich macht. Somit wird die gesamte Verwaltung der laufenden Sitzung vom OpenID Server Endpoint übernommen, auch wenn oAuth zur Authentizierung verwendet wird. Die Einbindung weiterer Authentizierungsprotokolle ist somit einfach möglich. 27 Transport Layer Security 28 https://github.com/bshaffer/oauth2-server-php 32 4.5 oAuth am eKaay-Portal 4.5.2 Client Auch für die oAuth-Variante des eKaay-Logins wurde ein PHP-SDK bereitgestellt, dass beispielhaft die Einbindung in bestehende Websites demonstriert. Dabei kommt oAuth 2.0 zum Einsatz: $endpoint = "http://ekaay.kkdevs.com/oauth/"; if(isset($_GET['code'])){ $code= $_GET['code']; $query = array( 'grant_type' => 'authorization_code', 'code' => $code, 'client_id' => 'test', 'client_secret' => 'testkey', 'redirect_uri' => 'http://client.ekaay.kkdevs.com/client/oauth.php', ); $curl = new Curl(); $response = $curl->request($endpoint, $query, 'POST'); $arr_response = json_decode($response['response']); if(isset($arr_response->user_id)){ echo "User <b>".$arr_response->user_id."</b> has successfully logged in.<br/><br/>"; $query = array( "access_token" => $arr_response->access_token, "action" => "getUserDetails" ); $response = $curl->request($endpoint, $query, 'GET'); $arr_response = json_decode($response['response']); echo "<pre>"; print_r($arr_response); echo "</pre>"; } }else{ header("Location: $endpoint/?client_id=test&response_type=code". "&redirect_uri=http://client.ekaay.kkdevs.com/client/oauth.php&state=".uniqid(null,true)); } Zunächst wird der Browser der Benutzers zum eKaay-Portal umgeleitet, um den Authentizierungsvorgang zu starten. Nachdem eine Bestätigung in Form eines authorized request tokens vorliegt, wird dieser mittels einer eigenen HTTP-Verbindung zwischen Anbieter-Server und eKaay-Portal in einen authorisierten Code getauscht (authorized access token), mit dem der Zugri auf die persönlichen Daten des Nutzers möglich wird. Aus Gründen der Übersichtlichkeit wurde hier auf Fehlerbehandlungen etc. verzichtet. Facebook Login Websites, die bereits Facebooks serverseitiges Login-Verfahren 29 nutzen, haben bei der Implementierung von oAuth für eKaay einen besonders geringen Aufwand. Facebook 29 https://developers.facebook.com/docs/facebook-login/login-flow-for-web-no-jssdk/ 33 4 oAuth benutzt ebenfalls oAuth zur Authentizierung. Grundsätzlich kann daher für die Verwendung von eKaay der gleiche serverseitige Code zum Einsatz kommen, der auch für den Facebook-Login verwendet wird 30 . Lediglich die URL des oAuth Endpoints muss auf das eKaay-Portal zeigen und die Client ID bzw. Client Secret müssen entsprechend angepasst werden. Um die persönlichen Daten des Benutzers abzurufen, kann danach der obige getUserDetails-Aufruf verwendet werden. 30 genauso 34 wie obiger Code mit wenigen Anpassungen auch mit dem Facebook Login funktioniert 5 Vergleich OpenID vs. oAuth Zusammenfassend fällt im direkten Vergleich von OpenID und oAuth auf: • OpenID + OpenID ist für Authentizierung erdacht worden. Es besteht eine hohe Interoperalität zwischen Websites, die OpenID implementieren und Identity Providern. + Einfache Implementierung für Consumer Websites, daher bereits hohe Verbreitung. - Identier, die frei vom Benutzer übermittelt werden können, bergen Sicherheitsrisiken (siehe Kapitel 3.4). - Datenaustausch nur innerhalb der Grenzen des Protokolls. • oAuth + deutlich höhere Flexibilität gegenüber OpenID für nachfolgende API-Zugrie + keine Vorgaben zum Datenaustausch durch das Protokoll - oAuth ist eher ein API-Framework. Zur Nutzung für Authentizierung sind enge Absprachen zwischen Consumer Website und Identity Provider nötig. Daher vergleichsweise wenig Verbreitung. - Sicherheit ist nur durch TLS- bzw. SSL-Verschlüsselung gegeben, seit oAuth 2.0 gibt es keine Signaturen mehr. Allerdings implementieren viele Service Provider eigenmächtig Signaturen, die jede Anfrage und Antwort absichern. Zwischenzeitlich gibt es erste Ansätze, die Vorteile beider Protokolle zu vereinen und die Nachteile dabei zu beheben. Beispielsweise setzt Google bei seinem Federated Login for Google Account Users 31 32 das Protokoll step2 ein, ein OpenID+OAuth Hybrid-Protokoll, das auch bereits als Erweiterung zu oAuth vorgeschlagen 33 wurde. 31 https://developers.google.com/accounts/docs/OpenID 32 https://code.google.com/p/step2/ 33 http://step2.googlecode.com/svn/spec/openid_oauth_extension/latest/openid_oauth_ extension.html 35 5 Vergleich OpenID vs. oAuth 36 6 Login auf externen Websites 6.1 Demo des OpenID Logins Abb. 6.1: Login mit OpenID am Beispiel von stackoverow.com Am Beispiel von stackoverow.com, das auf eigene Benutzerkonten optional verzichtet, zeigt Abb. 6.1 ein Login-Formular mit der Möglichkeit, sich via OpenID anzumelden. Stackoverow.com benötigt dafür keine Kenntnis des eKaay-Portals. Nach Eingabe des generischen Identiers und der Hintergrund-Abläufe am Server (siehe Kapitel 3.3), wird der Benutzer in Abb. 6.2 zum eKaay-Portal umgeleitet. Nach dem Scannen des QR-Codes und erfolgreichem Login fragt das Portal in Abb. 6.3 den Benutzer, ob stackoverow.com auf seine Identität zugreifen darf. Wird dies bestätigt, speichert das eKaay-Portal die Entscheidung in der lokalen Datenbank und leitet den Benutzer zurück zu stackoverow.com. Damit ist der Login-Vorgang abgeschlossen. 37 6 Login auf externen Websites Abb. 6.2: Automatische Weiterleitung zum eKaay-Portal und Login Abb. 6.3: 38 Bestätigung durch den Benutzer 6.1 Demo des OpenID Logins Abb. 6.4: Verwaltungsoberäche des Portals mit bereits bestätigter Consumer Website In Abb. 6.4 ist nun auch in der Verwaltungsoberäche des eKaay-Portals die eben bestätigte Website aufgeführt. Der Zugri durch stackoverow.com kann hier jederzeit widerrufen werden. 39 6 Login auf externen Websites 6.2 Demo des oAuth Logins Da bei Verwendung von oAuth auch die Consumer Website aktiv das eKaay-PortalSDK implentieren muss, wurde im Zuge dieser Arbeit auch eine Demonstration dieser Funktionalität entwickelt. Dazu wurde eine vom eKaay-Portal vollständig unabhängige Website 34 erstellt, die zu Demonstrationszwecken neben den beiden eKaay-Login- Möglichkeiten oAuth und OpenID auch den Facebook-Login zur Verfügung stellt. Da Facebook intern ebenfalls oAuth einsetzt, sind beide Varianten vergleichbar. Abb. 6.5 zeigt die Demo-Seite nach erfolgreichem Login mittels oAuth. Abb. 6.5: Demo-Seite nach Login mit oAuth 34 http://client.ekaay.kkdevs.com/client/ 40 7 Diskussion Auch das eKaay-Verfahren ist nicht der heilige Gral des Datenschutzes. Durch die Zentralisierung der Benutzer-Identitäten wäre es durchaus möglich, sämtliche LoginVorgänge der Endbenutzer zu protokollieren und zur Erstellung individueller Prole auszuwerten. Diese Prole könnten ein detailliertes Bild der Vorlieben einzelner Nutzer ergeben und wären daher insbesondere für die Marketing-Branche ein lohnendes Ziel - nicht ohne Grund bieten Branchenriesen wie Google oder Yahoo ihren Nutzern an, den jeweiligen Account als OpenID-Identier auf beliebigen Websites einzusetzen - und jedes Mal darüber informiert zu werden, wo der Benutzer sie einsetzt. Aus Sicht des Nutzers kann es ebenfalls problematisch sein, seine digitale Identität in die Hände eines zentralen Portals zu legen. Das Portal selbst wäre für Hacker und Daten- bzw. Identitätsdiebe ein lukratives Ziel. Sollte der Portal-Server kompromittiert werden, stünden einem Angreifer die persönlichen Daten und - noch schlimmer - direkte Zugänge zu den von den Benutzern genutzten Accounts zur Verfügung. Dabei spielt es keine Rolle, dass die eigentlichen Kryptoschlüssel sicher auf den Smartphones der Benutzer abgelegt sind. Mit der Kontrolle über den Portal-Server könnte ein Angreifer jede Authentizierungsanfrage positiv beantworten und so Zugang zum gewünschten Account erhalten. Es ist also die mit Abstand dringlichste Aufgabe des eKaay-Portal-Betreibers, die eingesetzte Infrastruktur bestmöglich gegen Angrie zu schützen, um das Vertrauen der Benutzer zu gewinnen. Aus Sicht des Betreibers einer Consumer Website ist es eventuell problematisch, sich an einen externen Authentizierungsanbieter wie eKaay zu binden, ohne die verwendete Technik selbst kontrollieren zu können. Damit begibt sich der Anbieter in eine (auch kommerzielle) Abhängigkeit - immerhin könnte der Betreiber des eKaay-Portals jederzeit sein Geschäftsmodell ändern oder dieses ganz aufgeben. Die dezentrale Auslagerung des Authentizierungsmechanismus hat also neben den genannten Vorteilen auch einige Nachteile. Daher wird es aus Betreiber-Sicht immer abzuwägen sein, ob die Vorteile der unabhängigen, bilateralen Lösung, das eKaay-Verfahren zu lizensieren und im eigenen Hause zu betreiben, die Nachteile, die sich aus der Abhängigkeit vom 41 7 Diskussion eKaay-Portal-Betreiber bei der zentralisierten Lösung ergeben, überwiegen: • bilaterale in-house-Lösung + keine Abhängigkeit vom Betreiber eines zentralen Portals + eigenes Branding möglich + direkte Kontrolle über den Authentizierungsmechanismus - Website-Nutzer müssen weiterhin ihren Account bei der Website anlegen und pegen - höherer Implementierungsaufwand • zentrale Portal-Lösung + minimaler Implementierungsaufwand + hoher Komfort für den Benutzer - Abhängigkeit von Verfügbarkeit und Geschäftsmodell des Portal-Betreibers 42 8 Ausblick Zusätzlich zur bestehenden Implementation sind in der Praxis verschiedene Erweiterungen denkbar: Weitere Protokolle Die Einbindung weiterer Authentizierungsprotokolle für die Be- 35 nutzerauthentizierung am eKaay-Portal, wie CAS 36 , Shibboleth oder LDAP , ist analog zur Erweiterung um oAuth einfach und schnell durchführbar. Mehrere Identitäten Der Benutzer könnte mehrere unterschiedliche virtuelle Iden- titäten am eKaay-Portal anlegen und über einen einzigen Account verwalten. Somit könnten beispielsweise private und geschäftliche Identitäten voneinander getrennt werden oder unterschiedliche Nicknames zur Benutzung in InternetForen oder sozialen Netzwerken benutzt werden. Damit erhöht sich die Anonymität des Benutzers. Während des Daten-Freigabe-Dialogs bei der Authorisierung einer Consumer Website könnte der Benutzer dabei die gewünschte Identität auswählen. feingranulare Freigabe persönlicher Daten Der Benutzer könnte selbst und für je- de Consumer Website einzeln entscheiden, auf welche der angefragten persönlichen Daten die jeweilige Consumer Website Zugri haben darf. Damit wird die Kontrolle über die persönlichen Daten weitestgehend dem Benutzer selbst gegeben. Wegwerf-Identitäten Das System könnte dem Benutzer anbieten, während einer Identitätsanfrage selbständig ktive Identitäten zu erzeugen und an die Consumer Website zu übermitteln, evtl. sogar inklusive einer Wegwerf-E-Mail-Adresse, die nur eine kurze Lebensdauer hat. Damit ist maximale Anonymität des Benutzers und Schutz vor Spam-E-Mails gewährleistet, ohne dass sich der Benutzer selbst um die Erstellung solcher Wegwerf-Identitäten kümmern müsste. 35 Central Authentication Service Directory Access Protocol 36 Lightweight 43 8 Ausblick Sicherheit der eKaay-App Um auch das Smartphone gegen Lauschangrie zu schüt- zen, kann die eKaay-App selbst erweitert werden, sodass nicht die App die notwendigen kryptographischen Operationen durchführen muss, sondern diese Auf- 37 gabe z.B. einer SmartCard, die mit der eKaay-App z.B. per NFC kommuniziert, zufällt. Damit wird das Smartphone zum Kartenleser degradiert, die Speicherung der Krypto-Schlüssel und die Verschlüsselung fände auf der SmartCard statt [Borchert und Gunther 2013]. 37 Near 44 Field Communication, ein Nahfunk-Standard Abkürzungen AJAX Asynchronous JavaScript and XML API Application Programming Interface CAS Central Authentication Service HTML Hypertext Markup Language, eine Auszeichnungssprache zur Strukturierung von Inhalten in Dokumenten HTTP Hypertext Transfer Protocol LDAP Lightweight Directory Access Protocol NFC Near Field Communication, ein Nahfunk-Standard PC Personal Computer PHP PHP: Hypertext Preprocessor, eine Skriptsprache PIN Personal Identication Number QR Quick Response Code, ein 2D-Barcode RSA ein Kryptosystem, benannt nach seinen Erndern Rivest, Shamir und Adleman [Rivest et al. 1978] SDK Software Development Kit SQL Structured Query Language SSL Secure Sockets Layer, heute Transport Layer Security TLS Transport Layer Security URL Uniform Resource Locator XML Extensible Markup Language, eine Auszeichnungssprache zur Darstellung hierarchisch strukturierter Daten 45 8 Ausblick XRD 46 eXtensible Resource Descriptor Abbildungsverzeichnis 2.1 Schematischer Ablauf eKaay . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Einbindung von eKaay in bestehende Portale . . . . . . . . . . . . . . . 9 2.3 Verizierung durch Tokens . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.4 Registrierungsprozess . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.5 eKaay-Portal Oberäche . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.6 Account-Initialisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.7 Scannen des QR-Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.8 Bestätigung am Smartphone . . . . . . . . . . . . . . . . . . . . . . . . 13 2.9 Rückmeldung am Smartphone . . . . . . . . . . . . . . . . . . . . . . . 13 2.10 Rückmeldung am Computer . . . . . . . . . . . . . . . . . . . . . . . . 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.1 Schematischer Ablauf OpenID . . . . . . . . . . . . . . . . . . . . . . . 21 4.1 Schematischer Ablauf oAuth 1.0a . . . . . . . . . . . . . . . . . . . . . 29 4.2 Schematischer Ablauf oAuth 2.0 . . . . . . . . . . . . . . . . . . . . . . 31 6.1 Beispiel stackoverow.com . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.2 Login am eKaay-Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.3 Bestätigung durch den Benutzer . . . . . . . . . . . . . . . . . . . . . . 38 6.4 Verwaltungsoberäche mit bestätigter Consumer Website . . . . . . . . 39 6.5 Demo-Seite mit oAuth-Login . . . . . . . . . . . . . . . . . . . . . . . . 40 2.11 Verwaltungsoberäche 47 Abbildungsverzeichnis 48 Literaturverzeichnis eKaay Borchert, Bernd (2013a). . http://www.ekaay.com online. Abruf am 21.05.2013. Borchert, Bernd (2013b). about/ eKaay - Über uns . http://www.ekaay.com/ online. Abruf am 20.05.2013. Indirect NFC-Login http:// www-ti.informatik.uni-tuebingen.de/~borchert/papers/NFC-Login.pdf Ab- Borchert, Bernd und M. Gunther (2013). . online. ruf am 02.07.2013. Bundeskriminalamt (2012). CYBERCRIME Bundeslagebild 2011 . online. http://www.bka.de/nn_205994/SharedDocs/Downloads/DE/Publikationen/ JahresberichteUndLagebilder/Cybercrime/cybercrime2011,templateId= raw,property=publicationFile.pdf/cybercrime2011.pdf Abruf am 20.05.2013. Dussa, Tobias (2010). OpenID-Sicherheit . 3. DFN-Forum KT In: . https://www.dfn.de/fileadmin/3Beratung/DFN-Forum3/Dussa-OpenID_ unter_Sicherheitsgesichtspunkten.pdf Abruf am 13.05.2013. A large-scale study of web password Proceedings of the 16th international conference on World Wide Web Florencio, Dinei und C. Herley (2007). habits . In: , WWW '07, S. 657666, New York, NY, USA. ACM. Kissel, Brian (2009). OpenID 2009 Year in Review 2009/12/16/openid-2009-year-in-review/ . online. http://openid.net/ Abruf am 21.05.2013. May 2013 Web Server Survey http://news. netcraft.com/archives/2013/05/03/may-2013-web-server-survey.html Ab- Netcraft (2013). . online. ruf am 20.05.2013. oAuth (2012). The OAuth 2.0 Authorization Framework ietf.org/html/rfc6749 . online. http://tools. Abruf vom 02.07.2013. 49 Literaturverzeichnis OpenID (2007). OpenID Authentication 2.0 - Final specs/openid-authentication-2_0.html . online. http://openid.net/ Abruf vom 20.05.2013. OpenID 2.0: a platform for user-centric Proceedings of the second ACM workshop on Digital Recordon, David und D. Reed (2006). identity management identity management . In: , DIM '06, S. 1116, New York, NY, USA. ACM. Get Ready for Openid Die-Hellman Key Agreement Method Rehman, Rafeeq Ur (2008). Rescorla, E. (1999). . Conformix Technologies Inc. . RFC 2631 (Proposed Standard). Rivest, R. L., A. Shamir und L. Adleman (1978). signatures and public-key cryptosystems What is OpenID? A method for obtaining digital . Commun. ACM, 21(2):120126. Stepka, Justen (2007). . [https://www.dfn.de/fileadmin/ 3Beratung/DFN-Forum3/Dussa-OpenID_unter_Sicherheitsgesichtspunkten. pdf Abruf vom 13.05.2013]. Signing Me onto Your Accounts through Facebook and Google: A Trac-Guided Security Study of Commercially Deployed Single-Sign-On Web Services Proceedings of the 2012 IEEE Symposium on Security and Privacy Wang, Rui, S. Chen und X. Wang (2012). . In: , SP '12, S. 365379, Washington, DC, USA. IEEE Computer Society. 50