70
Ein EAP Supplicant in JavaScript Wäre es technisch möglich, eduroam Accounts als Web-Login zu verwenden – unter Beibehalten des Ende-zu-Ende-Tunnels? oder: Wie schwer ist es, einen EAP Supplikanten in JavaScript zu schreiben? Steffen Klemer Gesellschaft für Wissenschaftliche Datenverarbeitung Göttingen 2017-03-21 Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 1 / 24

Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

Ein EAP Supplicant in JavaScript

Wäre es technisch möglich, eduroam Accounts alsWeb-Login

zu verwenden – unter Beibehalten des Ende-zu-Ende-Tunnels?

oder: Wie schwer ist es, einen EAP Supplikanten in JavaScript

zu schreiben?

Steffen Klemer

Gesellschaft fürWissenschaftliche Datenverarbeitung Göttingen

2017-03-21

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 1 / 24

Page 2: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

1 eduroam und EAP

2 EAP und dasWeb

3 Sicherheit und Sinnhaftigkeit

4 tl,dl

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 2 / 24

Page 3: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

Die GWDG

…ist ein Rechen- und IT-Kompetenzzentrums für die

Max-Planck-Gesellschaft und Hochschulrechenzentrum für die

Universität Göttingen. Ihre wissenschaftlichen

Forschungsaufgaben liegen im Bereich der Angewandten

Informatik. Ferner fördert sie die Ausbildung von Fachkräften für

Informationstechnologie.

Steffen Klemer

– AG Infrastruktur, Netzwerk-Team

[email protected]

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 3 / 24

Page 4: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

Die GWDG

…ist ein Rechen- und IT-Kompetenzzentrums für die

Max-Planck-Gesellschaft und Hochschulrechenzentrum für die

Universität Göttingen. Ihre wissenschaftlichen

Forschungsaufgaben liegen im Bereich der Angewandten

Informatik. Ferner fördert sie die Ausbildung von Fachkräften für

Informationstechnologie.

Steffen Klemer

– AG Infrastruktur, Netzwerk-Team

[email protected]

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 3 / 24

Page 5: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

eduroam und EAP

Table of Contents

1 eduroam und EAP

2 EAP und dasWeb

3 Sicherheit und Sinnhaftigkeit

4 tl,dl

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 4 / 24

Page 6: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

eduroam und EAP

eduroam bietet uns

• ein föderiertes Authentifizierung-Netzwerk (AAI)

• an über 15 000 Orten

• in 76 Ländern

• auf 5 von 6 Kontinenten

• seit jetzt ∼17 Jahren• >1 Milliarde Logins bisher1

1https://www.eduroam.org/2016/05/18/

1-billion-authentications-for-eduroam/

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 5 / 24

Page 7: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

eduroam und EAP

Warum erzähle ich das?

Wir haben eine riesige, funktionierende,produktive, föderierte

Authentifizierungs-Infrastruktur!!!

→Warum benutzen wir dieeigentlich nur fürWiFi (Netzwerk)?

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 6 / 24

Page 8: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

eduroam und EAP

Warum erzähle ich das?

Wir haben eine riesige, funktionierende,produktive, föderierte

Authentifizierungs-Infrastruktur!!!

→Warum benutzen wir dieeigentlich nur fürWiFi (Netzwerk)?

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 6 / 24

Page 9: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

eduroam und EAP

Warum wird eduroam nur fürWiFi

verwendet?

• Weil der Vertrag das sagt.

←wird man sehen

• Weil es an passenderTechnik mangelt.

←dieserVortrag

Zielstellung: Könnte ich mich sicher mit einem eduroam-Account

auf einerWebseite anmelden?

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 7 / 24

Page 10: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

eduroam und EAP

Warum wird eduroam nur fürWiFi

verwendet?

• Weil der Vertrag das sagt.

←wird man sehen

• Weil es an passenderTechnik mangelt.

←dieserVortrag

Zielstellung: Könnte ich mich sicher mit einem eduroam-Account

auf einerWebseite anmelden?

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 7 / 24

Page 11: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

eduroam und EAP

Warum wird eduroam nur fürWiFi

verwendet?

• Weil der Vertrag das sagt.

←wird man sehen

• Weil es an passenderTechnik mangelt.←dieserVortrag

Zielstellung: Könnte ich mich sicher mit einem eduroam-Account

auf einerWebseite anmelden?

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 7 / 24

Page 12: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

eduroam und EAP

Warum wird eduroam nur fürWiFi

verwendet?

• Weil der Vertrag das sagt.←wird man sehen

• Weil es an passenderTechnik mangelt.←dieserVortrag

Zielstellung: Könnte ich mich sicher mit einem eduroam-Account

auf einerWebseite anmelden?

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 7 / 24

Page 13: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

eduroam und EAP

Warum wird eduroam nur fürWiFi

verwendet?

• Weil der Vertrag das sagt.←wird man sehen

• Weil es an passenderTechnik mangelt.←dieserVortrag

Zielstellung: Könnte ich mich sicher mit einem eduroam-Account

auf einerWebseite anmelden?

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 7 / 24

Page 14: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

eduroam und EAP

Wie funktioniert nochmal eduroam?

EAPoL /IEEE 802.1x

RADIUS

RADIUSor

RADSEC (RADIUS over TLS)

user directory

(might be multiple Hops)(might be multiple Hops)

attribute 79 EAP-Messagee.g. LDAP

RADIUSserver

RADIUSserver

WiFi infrastructure

proxy to federation

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 8 / 24

Page 15: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

eduroam und EAP

Wie funktioniert nochmal eduroam? #2

• aWPA2-Enterprise (802.1x) securedWiFi

• access points as 802.1x Network Access Servers NAS• user devices as 802.1x supplicants

• a hierarchic network of RADIUS-servers

• a local RADIUS server (complex…)

• some IDM back end(s) (LDAP, AD…)

EAPoL /IEEE 802.1x

RADIUS

RADIUSor

RADSEC (RADIUS over TLS)

user directory

(might be multiple Hops)(might be multiple Hops)

attribute 79 EAP-Messagee.g. LDAP

RADIUSserver

RADIUSserver

WiFi infrastructure

proxy to federation

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 9 / 24

Page 16: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

eduroam und EAP

Extensible Authentication ProtocolEAP und 802.1x

• einfaches transportunabhängiges Protokoll• definiert nur das Nachrichtenformat und magische Zahlen,e.g.

• 4 … MD5 / PAP

• 25 … PEAP – oft genutzt

• 18 … EAP-SIM – GSM / mobile Authentifikation

• 4 wichtige Pakettypen• Request↔ Response

• Success↔ Failure

• 802.1x,WPA2-Enterprise: EAPoL – EAP über Ethernet

EAPoL /IEEE 802.1x

RADIUS

RADIUSor

RADSEC (RADIUS over TLS)

user directory

(might be multiple Hops)(might be multiple Hops)

attribute 79 EAP-Messagee.g. LDAP

RADIUSserver

RADIUSserver

WiFi infrastructure

proxy to federation

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 10 / 24

Page 17: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

eduroam und EAP

RADIUSRemote Authentication Dial-In User Service

• weniger einfaches Protokoll über udp oder tls

• gedacht um Authentifizierungs-Informationen zwischen

Netzwerkgeräten und Server zu transportieren

• oft von Netz-Providern genutzt

• besteht aus Attribut-Wert Paaren

• mit einem definierten Attribut für EAP-Nachrichten

EAPoL /IEEE 802.1x

RADIUS

RADIUSor

RADSEC (RADIUS over TLS)

user directory

(might be multiple Hops)(might be multiple Hops)

attribute 79 EAP-Messagee.g. LDAP

RADIUSserver

RADIUSserver

WiFi infrastructure

proxy to federation

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 11 / 24

Page 18: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

Table of Contents

1 eduroam und EAP

2 EAP und dasWeb

3 Sicherheit und Sinnhaftigkeit

4 tl,dl

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 12 / 24

Page 19: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

Naiver AnsatzWie könnte ich mich auf einerWebsite mit meinem eduroam Account anmelden?

HTTP POST with username/password in a html <form>

RADIUS

RADIUSor

RADSEC (RADIUS over TLS)

user directory

(might be multiple Hops)(might be multiple Hops)

attribute 79 EAP-Messagee.g. LDAP

RADIUSserver

RADIUSserver

web server(generates EAP stream;

puts into RADIUS)

proxy to federation

Problem: DerWeb-Server kennt das Passwort

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 13 / 24

Page 20: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

Naiver AnsatzWie könnte ich mich auf einerWebsite mit meinem eduroam Account anmelden?

HTTP POST with username/password in a html <form>

RADIUS

RADIUSor

RADSEC (RADIUS over TLS)

user directory

(might be multiple Hops)(might be multiple Hops)

attribute 79 EAP-Messagee.g. LDAP

RADIUSserver

RADIUSserver

web server(generates EAP stream;

puts into RADIUS)

proxy to federation

Problem: DerWeb-Server kennt das Passwort

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 13 / 24

Page 21: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

Naiver AnsatzWie könnte ich mich auf einerWebsite mit meinem eduroam Account anmelden?

HTTP POST with username/password in a html <form>

RADIUS

RADIUSor

RADSEC (RADIUS over TLS)

user directory

(might be multiple Hops)(might be multiple Hops)

attribute 79 EAP-Messagee.g. LDAP

RADIUSserver

RADIUSserver

web server(generates EAP stream;

puts into RADIUS)

proxy to federation

Problem: DerWeb-Server kennt das Passwort

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 13 / 24

Page 22: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

Richtiger AnsatzWie könnte ich mich auf einerWebsite mit meinem eduroam Account anmelden?

Der EAP supplicant gehört in den Browser!

…und muss dann in JavaScript programmiert werden.

EAPoW /HTTP POST

RADIUS

RADIUSor

RADSEC (RADIUS over TLS)

user directory

(might be multiple Hops)(might be multiple Hops)

attribute 79 EAP-Messagee.g. LDAP

RADIUSserver

RADIUSserver

web server

proxy to federation

Ende-zu-Ende EAPVerbindung vom Browser zum Heimat-RADIUS

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 14 / 24

Page 23: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

Richtiger AnsatzWie könnte ich mich auf einerWebsite mit meinem eduroam Account anmelden?

Der EAP supplicant gehört in den Browser!

…und muss dann in JavaScript programmiert werden.

EAPoW /HTTP POST

RADIUS

RADIUSor

RADSEC (RADIUS over TLS)

user directory

(might be multiple Hops)(might be multiple Hops)

attribute 79 EAP-Messagee.g. LDAP

RADIUSserver

RADIUSserver

web server

proxy to federation

Ende-zu-Ende EAPVerbindung vom Browser zum Heimat-RADIUS

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 14 / 24

Page 24: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

Richtiger AnsatzWie könnte ich mich auf einerWebsite mit meinem eduroam Account anmelden?

Der EAP supplicant gehört in den Browser!

…und muss dann in JavaScript programmiert werden.

EAPoW /HTTP POST

RADIUS

RADIUSor

RADSEC (RADIUS over TLS)

user directory

(might be multiple Hops)(might be multiple Hops)

attribute 79 EAP-Messagee.g. LDAP

RADIUSserver

RADIUSserver

web server

proxy to federation

Ende-zu-Ende EAPVerbindung vom Browser zum Heimat-RADIUS

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 14 / 24

Page 25: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

Richtiger AnsatzWie könnte ich mich auf einerWebsite mit meinem eduroam Account anmelden?

Der EAP supplicant gehört in den Browser!

…und muss dann in JavaScript programmiert werden.

EAPoW /HTTP POST

RADIUS

RADIUSor

RADSEC (RADIUS over TLS)

user directory

(might be multiple Hops)(might be multiple Hops)

attribute 79 EAP-Messagee.g. LDAP

RADIUSserver

RADIUSserver

web server

proxy to federation

Ende-zu-Ende EAPVerbindung vom Browser zum Heimat-RADIUS

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 14 / 24

Page 26: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

EAPoW – Bausteine

Browser

Browser

Web Server

Web Server

RADIUS Server

RADIUS Server

LDAP Server

LDAP Server

GET auth.html

create session

auth.html (with EAPoW js)

POST EAPoW 'Login'

EAP in RADIUS Return

EAP in RADIUS Request 'go on'

EAPoW 'go on'

POST EAPoW 'init handshake'

EAP in RADIUS Return '...'

EAP in RADIUS Request '...'

EAPoW '...'

...many packets...

query password

Password

password correct

EAP in RADIUS Accept 'Hello Alice.'

user logged in

EAPoW 'Hello Alice.'

• Browser

• EAP supplicant

• EAP in HTTP einpacken (nennen wir es doch EAPoW™)

• Web-Server

• EAPoW↔ EAP-in-RADIUS transkodieren

• Einfacher RADIUS Zustandsautomat

• RADIUS Server

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 15 / 24

Page 27: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

EAPoW – Bausteine

Browser

Browser

Web Server

Web Server

RADIUS Server

RADIUS Server

LDAP Server

LDAP Server

GET auth.html

create session

auth.html (with EAPoW js)

POST EAPoW 'Login'

EAP in RADIUS Return

EAP in RADIUS Request 'go on'

EAPoW 'go on'

POST EAPoW 'init handshake'

EAP in RADIUS Return '...'

EAP in RADIUS Request '...'

EAPoW '...'

...many packets...

query password

Password

password correct

EAP in RADIUS Accept 'Hello Alice.'

user logged in

EAPoW 'Hello Alice.'

• Browser

• → EAP supplicant

• EAP in HTTP einpacken (nennen wir es doch EAPoW™)

• Web-Server

• EAPoW↔ EAP-in-RADIUS transkodieren

• Einfacher RADIUS Zustandsautomat

• RADIUS Server

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 15 / 24

Page 28: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

Exkurs: emscriptenc 2 javascript

Emscripten is an LLVM-based project that compiles C and C++ into

highly-optimizable JavaScript in asm.js format. This lets you run C

and C++ on the web at near-native speed, without plugins.

• ein c zu Javascript Compiler!

• Übersetzt große Projekte wie die Unreal-Spiele-Engine

• Kinderleicht: Im Grunde setzt man nur export CC=emcc.

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 16 / 24

Page 29: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

EAP supplicant im Browserwpa_supplicant nach Javascript

• EAP Zustandsautomaten des Unix wpa_supplicant nachJavascript kompilieren und im Browser ausführen

• Das funktioniert tatsächlich!

• Sehr wenige Änderungen nötig.

• OpenSSL fehlt noch⇒bisher nurTLS 1.0

Es gibt jetzt einen funktionierenden Javascript EAP supplicant.

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 17 / 24

Page 30: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

EAP supplicant im Browserwpa_supplicant nach Javascript

• EAP Zustandsautomaten des Unix wpa_supplicant nachJavascript kompilieren und im Browser ausführen

• Das funktioniert tatsächlich!

• Sehr wenige Änderungen nötig.

• OpenSSL fehlt noch⇒bisher nurTLS 1.0

Es gibt jetzt einen funktionierenden Javascript EAP supplicant.

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 17 / 24

Page 31: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

EAP supplicant im Browserwpa_supplicant nach Javascript

• EAP Zustandsautomaten des Unix wpa_supplicant nachJavascript kompilieren und im Browser ausführen

• Das funktioniert tatsächlich.

• Sehr wenige Änderungen nötig.

• OpenSSL fehlt noch⇒bisher nurTLS 1.0

Es gibt jetzt einen funktionierenden Javascript EAP supplicant.

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 17 / 24

Page 32: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

EAP supplicant im Browserwpa_supplicant nach Javascript

• EAP Zustandsautomaten des Unix wpa_supplicant nachJavascript kompilieren und im Browser ausführen

• Das funktioniert tatsächlich.

• Sehr wenige Änderungen nötig.

• OpenSSL fehlt noch⇒bisher nurTLS 1.0

Es gibt jetzt einen funktionierenden Javascript EAP supplicant.

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 17 / 24

Page 33: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

EAP supplicant im Browserwpa_supplicant nach Javascript

• EAP Zustandsautomaten des Unix wpa_supplicant nachJavascript kompilieren und im Browser ausführen

• Das funktioniert tatsächlich.

• Sehr wenige Änderungen nötig.

• OpenSSL fehlt noch⇒bisher nurTLS 1.0

Es gibt jetzt einen funktionierenden Javascript EAP supplicant.

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 17 / 24

Page 34: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

wpa_supplicant im BrowserWas bringt uns das?

• Alle erfundenen und zu erfindenden EAPVerfahren

• Stabile Code-Basis

• Peer-Reviewed Crypto

• Zügige Sicherheitsupdates

• Ich muss nichts selber programmieren…

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 18 / 24

Page 35: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

wpa_supplicant im BrowserWas bringt uns das?

• Alle erfundenen und zu erfindenden EAPVerfahren

• Stabile Code-Basis

• Peer-Reviewed Crypto

• Zügige Sicherheitsupdates

• Ich muss nichts selber programmieren…

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 18 / 24

Page 36: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP und dasWeb

EAPoW Software StackNochmal im Überblick

native JavaScript *

eap_auth *

- send / recv EAPoW

wpa_supplicant

- eap state machine

c to JS converted *

browser (plugin or web site)

glue code *

native php *

EAPoW *

- RADIUS state machine

- use tags for roles

- php session

php-radius

- send / recv RADIUS

- also handle EAP *

c library

web server

glue code *

freeradius

- map attributes to

RADIUS tags *

(multiple?) LDAP

- user accounts

- special attributes *

RADIUS server

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 19 / 24

Page 37: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

Sicherheit und Sinnhaftigkeit

Table of Contents

1 eduroam und EAP

2 EAP und dasWeb

3 Sicherheit und Sinnhaftigkeit

4 tl,dl

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 20 / 24

Page 38: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

Sicherheit und Sinnhaftigkeit

Sicherheits-ÜberlegungenKann und sollte man das machen?

• Warum sollte ich als User dem JS einer beliebigenWebsitetrauen?

• Sollte ich nicht!

• Wo und wie möchte ich EAPoW eigentlich einsetzen?

• Zwischen einzelnen Instituten?

• Stabile, reviewedVersionen

• Vlt. als Browser-Plugin im Store?

• Als eduroam SAML-IdP?

• Ein SAML IdP, der alle eduroam-User authentifizieren könnte

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 21 / 24

Page 39: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

Sicherheit und Sinnhaftigkeit

Sicherheits-ÜberlegungenKann und sollte man das machen?

• Warum sollte ich als User dem JS einer beliebigenWebsitetrauen?

• Sollte ich nicht!

• Wo und wie möchte ich EAPoW eigentlich einsetzen?

• Zwischen einzelnen Instituten?

• Stabile, reviewedVersionen

• Vlt. als Browser-Plugin im Store?

• Als eduroam SAML-IdP?

• Ein SAML IdP, der alle eduroam-User authentifizieren könnte

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 21 / 24

Page 40: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

Sicherheit und Sinnhaftigkeit

Sicherheits-ÜberlegungenKann und sollte man das machen?

• Warum sollte ich als User dem JS einer beliebigenWebsitetrauen?

• Sollte ich nicht!

• Wo und wie möchte ich EAPoW eigentlich einsetzen?

• Zwischen einzelnen Instituten?

• Stabile, reviewedVersionen

• Vlt. als Browser-Plugin im Store?

• Als eduroam SAML-IdP?

• Ein SAML IdP, der alle eduroam-User authentifizieren könnte

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 21 / 24

Page 41: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

Sicherheit und Sinnhaftigkeit

Sicherheits-ÜberlegungenKann und sollte man das machen?

• Warum sollte ich als User dem JS einer beliebigenWebsitetrauen?

• Sollte ich nicht!

• Wo und wie möchte ich EAPoW eigentlich einsetzen?

• Zwischen einzelnen Instituten?

• Stabile, reviewedVersionen

• Vlt. als Browser-Plugin im Store?

• Als eduroam SAML-IdP?

• Ein SAML IdP, der alle eduroam-User authentifizieren könnte

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 21 / 24

Page 42: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

Sicherheit und Sinnhaftigkeit

EAPoW und SAML

• → ein einziger, vertrauenswürdiger SAML eduroam IdP (bei

GÉANT?)

• → SAML Attribute könnten auf RADIUS Attribute gemappt

werden

Service Providere.g. ownCloud

browser

Identity ProviderSAML eduroam IdP

(EAPoW on web site)

1 GET

2 REDIRECT

24 GET

3 GET

4 - 22 POST /EAPoW

23 REDIRECT

native php *

EAPoW *

- RADIUS state machine

- use tags for roles

- php session

php-radius

- send / recv RADIUS

- also handle EAP *

c library

glue code *

native JavaScript *

eap_auth *

- send / recv EAPoW

wpa_supplicant

- eap state machine

c to JS converted *

glue code *

freeradius

- map attributes to

RADIUS tags *

(multiple?) LDAP

- user accounts

- special attributes *

RADIUS server

Service Providere.g. ownCloud

Service Providere.g. ownCloud

Service Providere.g. ownCloud

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 22 / 24

Page 43: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

tl,dl

Table of Contents

1 eduroam und EAP

2 EAP und dasWeb

3 Sicherheit und Sinnhaftigkeit

4 tl,dl

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 23 / 24

Page 44: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

tl,dl

Too long, didn’t listen

• Technisch ist es möglich, eduroam-User Ende-zu-Ende

verschlüsselt anWebseiten anzumelden.

• Es gibt einen Prototypen.

• Möchte man das?

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 24 / 24

Page 45: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

tl,dl

Too long, didn’t listen

• Technisch ist es möglich, eduroam-User Ende-zu-Ende

verschlüsselt anWebseiten anzumelden.

• Es gibt einen Prototypen.

• Möchte man das?

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 24 / 24

Page 46: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

Anhang

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 25 / 24

Page 47: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

A look deeperBrowser

Browser

Web Server

Web Server

RADIUS Server

RADIUS Server

LDAP Server

LDAP Server

GET auth.html

create session

auth.html (with EAPoW js)

POST EAPoW 'Login'

EAP in RADIUS Return

EAP in RADIUS Request 'go on'

EAPoW 'go on'

POST EAPoW 'init handshake'

EAP in RADIUS Return '...'

EAP in RADIUS Request '...'

EAPoW '...'

...many packets...

query password

Password

password correct

EAP in RADIUS Accept 'Hello Alice.'

user logged in

EAPoW 'Hello Alice.'

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 26 / 24

Page 48: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAPoW – building blocks

Browser

Browser

Web Server

Web Server

RADIUS Server

RADIUS Server

LDAP Server

LDAP Server

GET auth.html

create session

auth.html (with EAPoW js)

POST EAPoW 'Login'

EAP in RADIUS Return

EAP in RADIUS Request 'go on'

EAPoW 'go on'

POST EAPoW 'init handshake'

EAP in RADIUS Return '...'

EAP in RADIUS Request '...'

EAPoW '...'

...many packets...

query password

Password

password correct

EAP in RADIUS Accept 'Hello Alice.'

user logged in

EAPoW 'Hello Alice.'

• client

• EAP supplicant / state machine in browser

• EAP in HTTP encapsulator (let’s call it EAPoW™)

• web server

• transcode EAPoW↔ EAP in RADIUS

• basic RADIUS state machine

• RADIUS server

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 27 / 24

Page 49: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAPoW – building blocks

Browser

Browser

Web Server

Web Server

RADIUS Server

RADIUS Server

LDAP Server

LDAP Server

GET auth.html

create session

auth.html (with EAPoW js)

POST EAPoW 'Login'

EAP in RADIUS Return

EAP in RADIUS Request 'go on'

EAPoW 'go on'

POST EAPoW 'init handshake'

EAP in RADIUS Return '...'

EAP in RADIUS Request '...'

EAPoW '...'

...many packets...

query password

Password

password correct

EAP in RADIUS Accept 'Hello Alice.'

user logged in

EAPoW 'Hello Alice.'

• client

• → EAP supplicant / state machine in browser

• EAP in HTTP encapsulator (let’s call it EAPoW™)

• web server

• transcode EAPoW↔ EAP in RADIUS

• basic RADIUS state machine

• RADIUS server

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 27 / 24

Page 50: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP supplicant in a browser

• send, receive EAPoW via HTTP POST + JSON + jquery

• implement EAP state machine (e.g. RFC 4137)

• implement a zillion EAP auth methods

• md5, PEAP,TTLS,TLS, SIM, MSCHAPv2, PAP, PWD, PSK, GTC…

• in Javascript with reliable, peer reviewed crypto

• …no way!

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 28 / 24

Page 51: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP supplicant in a browser

• send, receive EAPoW via HTTP POST + JSON + jquery

• implement EAP state machine (e.g. RFC 4137)

• implement a zillion EAP auth methods

• md5, PEAP,TTLS,TLS, SIM, MSCHAPv2, PAP, PWD, PSK, GTC…

• in Javascript with reliable, peer reviewed crypto

• …no way!

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 28 / 24

Page 52: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP supplicant in a browser

UCT

UCTignore

IDLE

SEND_REQUEST

retransCount = 0lastReqData = eapReqDataeapResp = FALSEeapReq = TRUE

UCT

DISABLED

INITIALIZE

currentId = NONEeapSuccess = FALSEeapFail = FALSEeapTimeout = FALSEeapKeyData = NONEeapKeyAvailable = FALSEeapRestart = FALSE

DISCARD

eapResp = FALSEeapNoReq = TRUE

SUCCESS

eapReqData = buildSuccess(currentId)if (eapKeyData != NONE) eapKeyAvailable = TRUEeapSuccess = TRUE

FAILURE

eapReqData = buildFailure(currentId)eapFail = TRUE

NAK

m.reset()Policy.update(<...>)

UCT

decision == FAILURE decision == SUCCESS

methodState == END

SELECT_ACTION

decision = Policy.getDecision()

rxResp &&(respId == currentId) &&

(respMethod == currentMethod)

rxResp &&(respId == currentId) &&

(respMethod==NAK ||respMethod==EXPANDED_NAK) &&

(me t hodSt at e == PROPOSED)

RETRANSMIT

retransCount++if (retransCount <= MaxRetrans) { eapReqData = lastReqData eapReq = TRUE}

elseeapResp

else

retransWhile==0

!portEnabled

retransCount > MaxRetrans

portEnabledUCT

TIMEOUT_FAILURE

eapTimeout = TRUE

INTEGRITY_CHECK

ignore = m.check(eapRespData)

METHOD_RESPONSE

m.process(eapRespData)if (m.isDone()) { Policy.update(<...>) eapKeyData = m.getKey() methodState = END} else methodState = CONTINUE

METHOD_REQUEST

currentId = nextId(currentId)eapReqData = m.buildReq(currentId)methodTimeout = m.getTimeout()

PROPOSE_METHOD

currentMethod = Policy.getNextMethod()m.init()if (currentMethod==IDENTITY || currentMethod==NOTIFICATION) methodState = CONTINUEelse methodState = PROPOSED

else!ignore

else

UCT

retransWhile = calculateTimeout(retransCount, eapSRTT, eapRTTVAR, methodTimeout)

decision==PASSTHROUGH/* SUCCESS, FAILURE, CONTINUE, or PASSTHROUGH */

RECEIVED

(rxResp,respId,respMethod)= parseEapResp(eapRespData)

eapRestart && portEnabled

• send, receive EAPoW via HTTP POST + JSON + jquery

• implement EAP state machine (e.g. RFC 4137)

• implement a zillion EAP auth methods

• md5, PEAP,TTLS,TLS, SIM, MSCHAPv2, PAP, PWD, PSK, GTC…

• in Javascript with reliable, peer reviewed crypto

• …no way!

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 28 / 24

Page 53: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP supplicant in a browser

• send, receive EAPoW via HTTP POST + JSON + jquery

• implement EAP state machine (e.g. RFC 4137)

• implement a zillion EAP auth methods

• md5, PEAP,TTLS,TLS, SIM, MSCHAPv2, PAP, PWD, PSK, GTC…

• in Javascript with reliable, peer reviewed crypto

• …no way!

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 28 / 24

Page 54: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP supplicant in a browser

• send, receive EAPoW via HTTP POST + JSON + jquery

• implement EAP state machine (e.g. RFC 4137)

• implement a zillion EAP auth methods

• md5, PEAP,TTLS,TLS, SIM, MSCHAPv2, PAP, PWD, PSK, GTC…

• in Javascript with reliable, peer reviewed crypto

• …no way!

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 28 / 24

Page 55: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP supplicant in a browser

• send, receive EAPoW via HTTP POST + JSON + jquery

• implement EAP state machine (e.g. RFC 4137)

• implement a zillion EAP auth methods

• md5, PEAP,TTLS,TLS, SIM, MSCHAPv2, PAP, PWD, PSK, GTC…

• in Javascript with reliable, peer reviewed crypto

• …no way!

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 28 / 24

Page 56: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP supplicant in a browser #2c 2 javascript

Emscripten is an LLVM-based project that compiles C and C++ into

highly-optimizable JavaScript in asm.js format. This lets you run C

and C++ on the web at near-native speed, without plugins.

• a c to Javascript compiler! yeaahaa

• even projects like the Unreal game engine

• idea: port the EAP state machine from wpa_supplicant

• wpa_supplicant: WiFi auth tool for most Unix systems incl.

Android

• works already!

• few major changes; hope to live in tree later on

• most features available, sadly no OpenSSL atm→ working at it

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 29 / 24

Page 57: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP supplicant in a browser #2c 2 javascript

Emscripten is an LLVM-based project that compiles C and C++ into

highly-optimizable JavaScript in asm.js format. This lets you run C

and C++ on the web at near-native speed, without plugins.

• a c to Javascript compiler! yeaahaa

• even projects like the Unreal game engine

• idea: port the EAP state machine from wpa_supplicant

• wpa_supplicant: WiFi auth tool for most Unix systems incl.

Android

• works already!

• few major changes; hope to live in tree later on

• most features available, sadly no OpenSSL atm→ working at it

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 29 / 24

Page 58: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP supplicant in a browser #2c 2 javascript

Emscripten is an LLVM-based project that compiles C and C++ into

highly-optimizable JavaScript in asm.js format. This lets you run C

and C++ on the web at near-native speed, without plugins.

• a c to Javascript compiler! yeaahaa

• even projects like the Unreal game engine

• idea: port the EAP state machine from wpa_supplicant

• wpa_supplicant: WiFi auth tool for most Unix systems incl.

Android

• works already!

• few major changes; hope to live in tree later on

• most features available, sadly no OpenSSL atm→ working at it

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 29 / 24

Page 59: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP supplicant in a browser #2c 2 javascript

Emscripten is an LLVM-based project that compiles C and C++ into

highly-optimizable JavaScript in asm.js format. This lets you run C

and C++ on the web at near-native speed, without plugins.

• a c to Javascript compiler! yeaahaa

• even projects like the Unreal game engine

• idea: port the EAP state machine from wpa_supplicant

• wpa_supplicant: WiFi auth tool for most Unix systems incl.

Android

• works already!

• few major changes; hope to live in tree later on

• most features available, sadly no OpenSSL atm→ working at it

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 29 / 24

Page 60: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP supplicant in browser #3Security considerations

• peer reviewed crypto

• EAP end2end client2home-institute transport

• is our JS trustworthy?

• Open source it for review!• Is the version from our web server reviewed?

• stable browser plugin versions

• also solves storing of settings of EAP methods (credentials,

certificates…)

• how about different browsers and mobile?

• → this is a problem; especially on mobile

• we’ll come to this

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 30 / 24

Page 61: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP supplicant in browser #3Security considerations

• peer reviewed crypto

• EAP end2end client2home-institute transport • is our JS trustworthy?

• Open source it for review!• Is the version from our web server reviewed?

• stable browser plugin versions

• also solves storing of settings of EAP methods (credentials,

certificates…)

• how about different browsers and mobile?

• → this is a problem; especially on mobile

• we’ll come to this

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 30 / 24

Page 62: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP supplicant in browser #3Security considerations

• peer reviewed crypto

• EAP end2end client2home-institute transport • is our JS trustworthy?

• Open source it for review!

• Is the version from our web server reviewed?

• stable browser plugin versions

• also solves storing of settings of EAP methods (credentials,

certificates…)

• how about different browsers and mobile?

• → this is a problem; especially on mobile

• we’ll come to this

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 30 / 24

Page 63: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP supplicant in browser #3Security considerations

• peer reviewed crypto

• EAP end2end client2home-institute transport • is our JS trustworthy?

• Open source it for review!• Is the version from our web server reviewed?

• stable browser plugin versions

• also solves storing of settings of EAP methods (credentials,

certificates…)

• how about different browsers and mobile?

• → this is a problem; especially on mobile

• we’ll come to this

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 30 / 24

Page 64: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP supplicant in browser #3Security considerations

• peer reviewed crypto

• EAP end2end client2home-institute transport • is our JS trustworthy?

• Open source it for review!• Is the version from our web server reviewed?

• stable browser plugin versions

• also solves storing of settings of EAP methods (credentials,

certificates…)

• how about different browsers and mobile?

• → this is a problem; especially on mobile

• we’ll come to this

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 30 / 24

Page 65: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP supplicant in browser #3Security considerations

• peer reviewed crypto

• EAP end2end client2home-institute transport • is our JS trustworthy?

• Open source it for review!• Is the version from our web server reviewed?

• stable browser plugin versions

• also solves storing of settings of EAP methods (credentials,

certificates…)

• how about different browsers and mobile?

• → this is a problem; especially on mobile

• we’ll come to this

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 30 / 24

Page 66: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAP supplicant in browser #3Security considerations

• peer reviewed crypto

• EAP end2end client2home-institute transport • is our JS trustworthy?

• Open source it for review!• Is the version from our web server reviewed?

• stable browser plugin versions

• also solves storing of settings of EAP methods (credentials,

certificates…)

• how about different browsers and mobile?

• → this is a problem; especially on mobile

• we’ll come to this

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 30 / 24

Page 67: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAPoW software stackso, what’s there?

native JavaScript *

eap_auth *

- send / recv EAPoW

wpa_supplicant

- eap state machine

c to JS converted *

browser (plugin or web site)

glue code *

native php *

EAPoW *

- RADIUS state machine

- use tags for roles

- php session

php-radius

- send / recv RADIUS

- also handle EAP *

c library

web server

glue code *

freeradius

- map attributes to

RADIUS tags *

(multiple?) LDAP

- user accounts

- special attributes *

RADIUS server

* part of my thesis

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 31 / 24

Page 68: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAPoW and Single-Sign-On

Table of Contents

5 EAPoW and Single-Sign-On

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 32 / 24

Page 69: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAPoW and Single-Sign-On

Single-Sign-On on the webteaser

• idea: marry EAPoW with SAML, Oauth and / or OpenID

• → a single trusted SAML eduroam IdP

• → we could map SAML attributes (e.g. roles) to RADIUS

attributes

Service Providere.g. ownCloud

browser

Identity ProviderSAML eduroam IdP

(EAPoW on web site)

1 GET

2 REDIRECT

24 GET

3 GET

4 - 22 POST /EAPoW

23 REDIRECT

native php *

EAPoW *

- RADIUS state machine

- use tags for roles

- php session

php-radius

- send / recv RADIUS

- also handle EAP *

c library

glue code *

native JavaScript *

eap_auth *

- send / recv EAPoW

wpa_supplicant

- eap state machine

c to JS converted *

glue code *

freeradius

- map attributes to

RADIUS tags *

(multiple?) LDAP

- user accounts

- special attributes *

RADIUS server

Service Providere.g. ownCloud

Service Providere.g. ownCloud

Service Providere.g. ownCloud

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 33 / 24

Page 70: Ein EAP Supplicant in JavaScript - Wäre es technisch ... · EAPunddasWeb EAPoW–Bausteine Browser Browser Web Server Web Server RADIUS Server RADIUS Server LDAP Server LDAP Server

EAPoW and Single-Sign-On

Single-Sign-On on the webteaser

• idea: marry EAPoW with SAML, Oauth and / or OpenID

• → a single trusted SAML eduroam IdP

• → we could map SAML attributes (e.g. roles) to RADIUS

attributes

Service Providere.g. ownCloud

browser

Identity ProviderSAML eduroam IdP

(EAPoW on web site)

1 GET

2 REDIRECT

24 GET

3 GET

4 - 22 POST /EAPoW

23 REDIRECT

native php *

EAPoW *

- RADIUS state machine

- use tags for roles

- php session

php-radius

- send / recv RADIUS

- also handle EAP *

c library

glue code *

native JavaScript *

eap_auth *

- send / recv EAPoW

wpa_supplicant

- eap state machine

c to JS converted *

glue code *

freeradius

- map attributes to

RADIUS tags *

(multiple?) LDAP

- user accounts

- special attributes *

RADIUS server

Service Providere.g. ownCloud

Service Providere.g. ownCloud

Service Providere.g. ownCloud

Steffen Klemer (GWDG) Ein EAP Supplicant in JavaScript 2017-03-21 33 / 24