Open Source 2FA

Eine Bestandsaufnahme
Cornelius Kölbel, Kieler Linuxtage, 21.09.2019
Cornelius Kölbel
  • 2FA seit 2005
    • eToken, Smartcards, OTP
    • Hardware-Security-Modules / PKI
  • 2014
    • privacyIDEA Projekt
    • Gründung NetKnights GmbH

Zwei-Faktor-Authentifizierung

Zusammenfassung und Quiz

Wissen, Besitz, Eigenschaft

  • Zwei Faktoren
  • Zwei Wege

Was ist keine 2FA...?

Zwei Passwörter

Zwei Apps auf einem Smartphone!

Was ist kein Besitzfaktor...?

(Hinweis: i.d.R. wird hierfür eine eindeutige kryptographische Komponente verwendet)

SMS!

Was verwendet einen Hash-basierten Message Authentication Code (HMAC)?

HOTP, TOTP (RFC 4226, 6238)

Was verwendet asymmetrische Krypto wie RSA oder ECC?

Smartcards, U2F, FIDO2

Was nutzt starke, nicht gebrochene Hash-Algorithmen?

Passwörter

Was verwendet proprietäre Algorithmen?

Biometrie

Realitätscheck

Das Problem mit dem Google Authenticator

Blog Post

Das Problem mit proprietärer Software

Das Problem mit Biometrie

  • Immer wieder brechbar (Schäubletest)
  • Nicht änderbar
  • Nicht OSS

Das Problem mit manchen Applikationen

  • Wollt Ihr wirklich ein 2FA-Management bauen? (Nextcloud, FreeIPA, Keycloak)
  • Selbst Microsoft macht das nicht im AD.

Das Problem with U2F / FIDO2

privacyIDEA Authentication System

  • privacyIDEA 2.23: August 2018
  • privacyIDEA 3.0: 28.04.2019
  • privacyIDEA 3.1: 04.09.2019
  • privacyIDEA 3.2: November 2019

privacyIDEA 3.0

Python 3
  • Abhängigkeiten von Modulen - für Python 3 verfügbar?
  • Distributionen mit 3.5, 3.6, 3.7 -> unterschiedliches Verhalten
  • 25.000 Zeilen Code anpassen
  • Seiteneffekte treten nicht notwendiger Weise bei Unittests zutage

privacyIDEA 3.0 hat 8 Monate gedauert. (2.23 -> 2.23.5)

privacyIDEA 3.0
  • Benutzer-Zuordnung zu Tokens
  • Push-Token
  • Queue, um manche Dinge assynchron auszuführen (Senden von Emails)
  • Statistik-DB Basisklasse (SQL nur suboptimal für Zeitreihen)
  • Im Audit-Log werden die verwendeten Policies aufgeführt
Fazit zu privacyIDEA 3.0
  • Wir sind zukunftssicher,
  • die Administrierbarkeit wird einfacher und
  • Support-Anfragen sind leichter zu bearbeiten.

pivacyIDEA 3.1

  • Admin-Read policies für Config und Token
  • Beliebige Attribute im Policy-Matching
    (Erstes Modul: Benutzer-Attribute)
  • Migration
Migration
  • (passthru)
  • auto-assign
  • auto-pin

Fazit zu privacyIDEA 3.1

  • Leichtere Migration,
  • flexibilität in größeren Installationen,
  • Bessere Mandantenfähigkeit
  • Policies müssen nicht an kompletten Resolver gebunden sein.

Projektraum @FrOSCon

UI

  • Erhofft: Dashboard
  • Bekommen: Kleineres Feedback zur Bedienbarkeit

Smartcards

  • Erhofft: Projekte und Entwickler
  • Bekommen: Angeregte Diskussion, Eindrücke für Notwendigkeit, aber keine nächsten Schritte.

privacyIDEA 3.2

November 2019

Event Handler

  • Request Mangler
  • Response Mangler
  • Notification File Writer

Fazit: Bessere Workflows.

WebAuthN / FIDO2

Fazit: Besseres Marketing

File Audit

Audit Log kann gleichzeitig in SQL und in File geschrieben werden.

Fazit: Bessere Einbindung in Splunk und Co.

privacyIDEA ist hoch-integrierbar.

privacyIDEA wird diese Führungsposition weiter ausbauen.

Successful 2FA is a matter of smooth workflows.

Push

The id3a
  • Use the smartphone
  • Use asymmetric crypto
  • No need to type
  • Keep it open
  • Just another toketype
Google Firebase Push service
  • No other open connections on smartphone
  • Each privacyIDEA installation has it's own Firebase project
asymmetric crypto
  • Smartphone generates it's own private key
  • privacyIDEA has it's own private key
  • Messages to and from the smartphone are digitally signed
Not typing - but swiping
  • User simply approves authentication request
  • Signed message is sent to privacyIDEA
Open - as in come in an join
  • Specification: Github Wiki
  • Server (privacyIDEA): AGPLv3
  • Smartphone Apps / privacyIDEA Authenticator: Apache 2.0

Token Type

To privacyIDEA it is a normal token type,
  • that works with any workflows and policies,
  • and can be combined in any way.

Credits

  • Nils Behlen
  • Micha Preußer