# Authentifizierung
## Inhalt * Motivation * Zugriffskontrolle * Authenticationfactors * Authenticationmethods * Standards
## Motivation
## Zugriffskontrolle

Zugriffstyp

Discretionary Access Control

  • Benutzerzentriert
  • Objektbezogen
  • Typisch: Read, Write, Execute
  • Lack of Competence

Mandatory Access Control

  • Systemweit
  • Das System dominiert
  • lack of overview
### Identitybased Access Control * Zugriff wird anhand der Identät bestimmt * Access Control Matrix
### Rolebased Access Control * Zugriff wird über eine Rolle gesteuert * Access Control List
### Attributebased Access Control * ein Attribut entscheidet über den Zugriff
## Authenticationfactors
### Typen * Wissen * Password, Sicherheitsfragen ... * Besitz * Security token, Smart Card ... * Inhärenz * Biometrische Verfahren ...

Wissen: Passwort

Wissen: Passwort

Besitz

### Biometrische Verfahren * Fingerabdruck * Iriserkennung * Gesichtserkennung * Venenerkennung * Brainwave basiert (noch in der Entwicklung)

Biometrische Verfahren: Sicherheit?

### Exkurs Brainwave Based Authentication * Aktuell Forschungsgebiet * Misst die Gehirnströme * Mögliche Messarten: * einmalige Sequenz * dauerhaftes Messen und überprüfen
### Exkurs Brainwave Based Authentication: Probleme * Performance * Akzeptanz * Erfassung der Daten

Exkurs Brainwave Based Authentication

## Authentifizierungsarten * Direkt * über einen dritten Abiter

Direkt

Vorteil: Anwendung hat die Hoheit über die Daten. Nachteil: Nutzer muss der Anwendung möglicherweise mehr Daten bereitstellen (mindestens: Password).

Arbiter

Vorteil: Der Anwender muss seine persönlichen Daten gegenüber der Anwendung nicht sichtbar machen. Nachteil: Beide müssen dem Arbiter vertrauen.

### Multi Faktor * meist zwei Faktor * erhöht die Sicherheit signifikant * mindestens zwei unterschiedliche Authentifizierungsfaktoren (Wissen+Besitz) * gängige Arten: Zeitbasiert (OTP), Tokens (SMS), Smart Cards
### Gängige Verfahren * OTP * TOTP * U2F
#### OTP * One Time Password * meist von der Anwendung generiert und an den Nutzer über einen getrennten Kanal übermittelt * E-Mail * SMS * WhatsApp (neuerdings bspw: Paypal) * nicht mit One Time Pad verwechseln
#### TOTP * OTP wird aus einem Secret und Timestamp generiert * Secret wird zunächst zwischen Anwendung und Client ausgetauscht
#### U2F * spezielles Challenge Response Verfahren der FIDO Allianz * alle gängigen Browser unterstützen mittlerweile U2F * mittlerweile auch viele unterstütze Anwendungen * Nextcloud * Gitlab * Spezielle USB Keys * Yubikey * Nitro
### Multi Faktor: Probleme * bei generierten Tokens (bspw. OTP, TOTP) * Generierung sollte nicht auf gleichem Gerät stattfinden wie auf dem Benutzergerät
## Probleme in der Praxis
### Notwendigkeit Session * HTTP ist zustandslos * Zustand für Authentifizierung nötig * Abstraktes Konstrukt: Session

Speicherung der Sessions

#### Cookies * Zustimmung erforderlich * Session Riding nicht möglich
#### URL-Rewriting * Client unanbhängig * Session-ID offensichtlich * Gefahr durch "Session Riding"

Probleme in verteilten Anwendungen

Probleme in verteilten Anwendungen

### Mögliche Lösungen * Nutzer wird nach der initialen Zuweisung an eine Instanz dauerhaft gebunden * Sessions werden Instanz übergreifend gespeichert * Session Gateway * Session ist tokenbasiert beim Nutzer

Instanzbindung

Instanzübergreifend

Sessiongateway

Tokenbasierte Sessions

## mögliche Authentifizierungverfahren
### HTTP Basic Authentication * Browser stellt Forumlar bereit * Credentials-Tupel username:password * meist authentifiziert der Server * Formular nicht editierbar

HTTP Basic Authentication: Ablauf

### Form Based Authentication * Formular wird von der Anwendung erzeugt * Anwendung entscheidet über Zugang * bessere Fehlerbehandlung
### Protokolle * Security Assertion Markup Language (SAML) * OAuth2
#### Authorisation gewährt Usern Zugriff auf Resourcen
#### Authentication stellt sicher, dass der Nutzer auch wirklich der ist für den er sich ausgibt

Terminologie

SAML * Client * Identity Provider (IDP) * Service Provider (SP)
OAuth2 * Client * Authorisation Server * Resource Server
#### Security Assertion Markup Language * XML basiertes Authentication Protokoll * Single Sign On (SSO) * Optional Single Sign Off (SLO) * Identity Management
#### OAuth2 * meist JSON Web Tokens (JWT) * Client muss nicht zwingend ein Browser sein * Autorisierungsprotokoll * Access and Refreshtokens
### Ablage der Tokens * Besondere Vorsicht wo die Tokens gespeichert werden * NICHT im Local- / Sessionstorage * Auth0 Doku bietet Best Practices für verschiedene Szenarien

Public/Private Key Kryptographie

Grundlagen Verschlüsselung

  • immer Key Pair aus Public und Private Key
  • Private Key meistens zum entschlüsseln genutzt
  • Public Key meistens zum verschlüsseln genutzt

Verschlüsselung Beispiel

  • Private Key: Schlüssel des Schloss
  • Public Key: geöffnetes Schloss
  • Verschlüsselung: Schloss verschließt Truhe
  • Entschlüsseln: Private Key öffnet Schloss

Unterschied Signaturverfahren / Verschlüsselungsverfahren

  • Signaturverfahren: prüft ob Nachricht verändert wurde
  • Verschlüsselungsverfahren: verhindert einen Leak des Nachrichteninhalt

Grundlagen Signaturverfahren

  • Alice erzeugte eine Signatur mit einem Private Key zu einer Nachricht.
  • Bob erhält Nachricht und Signatur.
  • Bob kann mit Hilfe des Public Keys und der Signatur die Nachricht auf Veränderung prüfen.

Signaturverfahren am Beispiel RSA

  • Grundlegende Verwendung der Keys vertauscht mit der Verschlüsselung durch RSA
    • Encryption Key => private Key
    • Decryption Key => public Key
  • NICHT jedes Verschlüsselungsverfahren wird durch das Tauschen der Keys zu Signaturverfahren.
## JSON Web Token
### Generelles * von AUTH0 bereitgestellt * mittlerweile Libraries für alle gängigen Sprachen * Framework für Autorisierungstokens

Aufbau JWT

### Token lifecycle 1. JWT wird mit Header und Payload wird vom Autorisierungsserver bestückt 2. Autorisierungsserver signiert den Token mit dem Secret und sendet ihn an den Client 3. Client sendet den Token an die Anwendung 4. Anwendung prüft mithilfe des Secret den Token