Ein dezentrales System für
Online-Identität

Das Problem

Online-Identität heute:
Viele verstreute Accounts auf verschiedensten Websites.

Ergebnis: Kein Überblick
„Welchen Benutzernamen hatte ich nochmal bei dieser Seite?“
„Was hatte ich hier noch gleich als Passwort gesetzt?“
(Oder: „Ich weiß, dasselbe Passwort wie überall anders!“ …)

Ein Passwort für alles…

… ist auch keine Lösung.

Ein Lösungsansatz:
Identitäts-Provider (IdP)

Der Benutzer hat einen Account bei einem Dienst, der ihm einen zentrale Online-Identität zur Verfügung stellt.

Webseiten können diese Identität abfragen und so
auf eigene Login-Systeme verzichten.

Der Nutzer braucht dann kein zusätzliches Passwort pro Webseite, sondern nur das für seinen IdP-Account.

Potenzielle Probleme:
Abhängigkeit und Privatssphäre.

Existierende Systeme



Mozilla Persona

Im Juni 2011 wurde Persona (urspr. BrowserID) von Mozilla als einfachere und vor datenschutzfreundlichere Alternative zu OpenID vorgestellt.

Die Idee hinter Persona ist, die in der Praxis übliche
Verbindung von E-Mail-Adresse und Online-Identität
auszunutzen, indem E-Mail-Provider als Identity-Provider
für ihre Nutzer etabliert werden.

Persona ersetzt also Passwort und Bestätigungs-E-Mails.

„Privacy by Design“

Der Browser steht im Mittelpunkt der Kommunikation:
Der Identity-Provider kann nicht erfahren, welche Webseiten der Nutzer besucht.

Trotz zentraler Online-Identität erlaubt Persona
kein Tracking durch den Identity-Provider.

Wer nutzt Persona?

Persona aus Nutzersicht

Persona aus Nutzersicht (2)

Persona aus Nutzersicht (3)

Architektur

Protokoll-Flow: IdP (1)

Protokoll-Flow: IdP (2)

Browser:

GET /.well-known/browserid HTTP/1.1
Host: identity.org
…

Identity Provider:

200 OK
Content-Type: application/json
…

{
  "public-key": { … },
  "provisioning": "/provision",
  "authentication": "/login"
}

Protokoll-Flow: IdP (3)

Browser:

GET /provision HTTP/1.1
Host: identity.org
…
if (/* Anmeldung nötig */) {
  navigator.id.raiseProvisioningFailure(…);
}
GET /login HTTP/1.1

Identity Provider:

Protokoll-Flow: IdP (4)

Browser:

function onLoginClicked() {
// Sende E-Mail / Passwort zur Überprüfung
// an identity.org Server
if (/* Passwort stimmt */) {
    navigator.id.completeAuthentication();
  } else {
    navigator.id.raiseAuthenticationFailure(…);
  }
}

Identity Provider:

200 OK

Protokoll-Flow: IdP (5)

Browser:

GET /provision HTTP/1.1
navigator.id.genKeyPair(function(pubkey) {
// Sende Public Key an identity.org;
// Bei Erhalt des Zertifikats:
navigator.id.registerCertificate(…);
});

Identity Provider:

{
  "iss": "identity.org",
  "exp": "1313971280961",
  "public-key": { … },
  "principal": {
    "email": "johnny@identity.org"
  }
}
(+ Signatur)

Protokoll-Flow: Webseite (1)

Protokoll-Flow: Webseite (2)

Browser:

function onSignInClicked() {
  navigator.id.get(function(assertion) {
// Sende signierte Assertion zur
// Überprüfung an blogz.net;
// wenn Erfolg, ist der Nutzer eingeloggt!
});
}

Protokoll-Flow: Webseite (3)

Browser:

GET /.well-known/browserid HTTP/1.1
Host: identity.org

Identity Provider:

200 OK
…

{
"public-key": {
    "alg": "RS256",
    "n" : "4b3c34…",
    "e" : "93bc32…",
  },
  …
}

Secondary IdP

Vorteile von Persona

Persona bietet viel Komfort für Benutzer (meist keine Passworteingabe notwendig) bei voller Kompatibilität mit existierenden Browsern.

Das System ist dezentral und ermöglicht dem Nutzer (im Prinzip) die freie Wahl des Identitäts-Providers.

Der Identity-Provider erhält keine Informationen über die vom Nutzer besuchten Seiten.

Es gibt viel Freiraum bei der Umsetzung für den IdP, da dieser die meisten Protokoll-Details selbst festlegt. Das sorgt für leichte Integration in bestehende Infrastruktur.

Login mit Persona ist für Webseiten leicht zu implementieren; Browser und IdP nehmen einem die meiste Arbeit ab.

Probleme

Da Persona noch bei keinem E-Mail-Provider implementiert ist, gibt es in der Praxis zur Zeit keine Dezentralität.
(Es muss der Secondary IdP von Mozilla verwendet werden.)

Die Abhängigkeit von JavaScript ist für einige Zwecke ungeeignet und ein potenzielles Sicherheitsrisiko.

Ein IdP kann sich als jeder seiner Nutzer ausgeben. Es ist also
hohes Vertrauen in den Provider nötig.
Aber:
Dies ist ein generelles Problem von IdP-Systemen, nicht speziell von Persona. Da der IdP auch E-Mail-Provider ist, benötigt er sowieso hohes Vertrauen.

Roadmap

Native Persona-Oberflächen für Firefox Desktop und Mobile.

Unterstützung von Profildaten, die man optional mit Webseiten teilen kann.

BigTent:
Proxy-IdP für populäre Maildienste (GMail, Yahoo, Hotmail), der dank OpenID und OAuth kein eigenes Passwort braucht.

Fazit

Persona ist ein vielversprechendes Identitäts-System, das OpenID's Komplexitäts- und Privatspähre-Probleme zu vermeiden scheint.

Es ist aber fragwürdig, ob es sich verbreiten wird; trotz Vorteilen für Nutzer ist die Macht der OpenID-Lobby und deren kommerzielle Interessen womöglich ausschlaggebender.

Letztendlich gilt:
Die meisten Technologien setzen sich aus politischen und (leider) nicht aus technischen Gründen durch …

Es bleibt spannend!