\section{FIDO2}\label{sec:fido2}

FIDO steht für Fast Identity Online und wurde von der FIDO-Alliance entwickelt. Die FIDO-Alliance ist ein Bündnis aus mehreren großen Unternehmen, darunter Google, Microsoft, Apple, Amazon und viele weitere. Das Ziel der FIDO Alliance ist es, das FIDO-Verfahren bei den Diensten zu etablieren. Der FIDO2-Standard verfolgt den Ansatz der passwortlosen Authentifizierung. Das bedeutet, anstelle von Passwörtern werden zur Authentifizierung kryptografische Verfahren eingesetzt. So ist es nicht mehr notwendig, Passwörter über das Internet zu übertragen. Die Authentifizierung des Nutzers erfolgt mittels, den Nachweis das der Nutzer im Besitz seines vertraulichen Verschlüsselungspassworts ist. Bei dem Nachweis handelt es sich um eine Verschlüsselungsaufgabe, auch Challenge genannt.
(vgl.\:\cite{kebschull2023}, S.\,147\:f.)

\subsection{Technische Grundlagen}\label{subsec:technische-grundlagen}

Der FIDO2-Standard nutzt mehrere technische Komponenten, um eine sicher und benutzerfreundliche Authentifizierung zu ermöglichen. Diese Komponenten umfassen unter anderem das Client-to-Authenticator Protocol (CTAP), das Web Authentication (WebAuthn) Protokoll und Trusted Platform Module (TPM).

\subsubsection{Client-to-Authenticator Protocol}\label{subsubsec:ctap-protokoll}

Das Client-to-Authenticator Protocol kurz CTAP, ist ein Protokoll, welches die Kommunikation zwischen dem System eines Nutzers und em Token regelt. Es legt fest wie beide Komponenten miteinander zu kommunizieren haben. Dieses Protokoll gibt es in zwei Versionen. Das erste Protokoll ist auch unter dem Namen Universal Second Factor (U2F) bekannt und bezieht sich hauptsächlich auf die Zwei-Faktor-Authentifizierung. Die zweite Version CTAP2, wird im Zusammenhang mit FIDO2 eingesetzt und sorgt im Zusammenhang mit WebAuthn das FIDO2 funktionsfähig ist. (vgl.\:\cite{ionos2021})

\subsubsection{Web Authentication}\label{subsubsec:web-authentication}

In Zusammenarbeit der FIDO-Alliance und dem WWW-Consortium wurde die Web Authentication (WebAuthn) entwickelt. Sie hatten das Ziel einen Standard zu schaffen, welcher Phishing-Angriffe verhindert. WebAuthn wurde im März 2019 als offizieller Webstandard anerkannt und wird von den meisten Browsern, zur Anmeldung bei webbasierten Diensten, unterstützt. Der Unterschied zwischen dem FIDO2-Standard und WebAuthn liegt darin, dass WebAuthn zusätzlich zum privaten Schlüssel, auch die korrekte Domain des Dienstes im Endgerät speichert und miteinander verknüpft. Dies schränkt die Nutzung des Schlüssels auf die konkrete Domain ein, wodurch Man-in-the-Middle-Angriffe ausgehebelt werden. (vgl.\:\cite{kebschull2023}, S.\,150\:f.)

Beim WebAuthn ist genauso wie beim FIDO2-Standard in Registrierungs- und Anmeldeprozess zu unterscheiden. In \autoref{fig:webauthn-registrierung} ist der Registrierungsprozess dargestellt.

\begin{figure}[H]
    \centering
    \includegraphics[width=1.0\textwidth]{content/Bilder/WebAuthn_Registrierung}
    \caption[Registrierung über WebAuthn]{ (Quelle: in Anlehnung an \cite{kebschull2023}, S.\,150)}
    \label{fig:webauthn-registrierung}
\end{figure}

Im ersten Schritt der Registrierung wird die Webseite des Webdienstes aufgerufen (1). Voraussetzung für die Nutzung von WebAuthn ist, dass der Webdienst diesen auch als Authentifizierungsmethode anbietet. Nach der Auswahl der WebAuthn-Authentifizierungsmethode wird das zu verschlüsselnde Datenwort (Challenge) mit dem Benutzernamen an den Client zurückgesendet (2). Die erhaltenden Daten werden mit der Domain des Webdienstes an den Authentifikator geben (3). Dieser erstellte eine dazugehörige ID, den privaten und öffentlichen Schlüssel und speichert diese auf dem Gerät. Im Anschluss wird die Challenge mit dem privaten Schlüssel verschlüsselt. Die verschlüsselte Challenge wird zusammen mit der ID und dem öffentlichen Schlüssel zurückgesendet (4). Der Client leitet die Daten an den Webdienst weiter (5) und schließt damit die Registrierung ab.

Der Anmeldeprozess ist in der folgenden \autoref{fig:webauthn-anmeldung} dargestellt.

\begin{figure}[H]
    \centering
    \includegraphics[width=1.0\textwidth]{content/Bilder/WebAuthn_Anmeldung}
    \caption[Anmeldung über WebAuthn]{ (Quelle: in Anlehnung an \cite{kebschull2023}, S.\,151)}
    \label{fig:webauthn-anmeldung}
\end{figure}

Für die Anmeldung muss der Benutzer sich mit dem gleichen Sicherheitsverfahren gegenüber dem Browser authentifizieren. Darauf folgend wird über das FIDO2-Protokoll die passwortlose Anmeldung zwischen dem Browser und dem Dienst durchgeführt.

Die Vorteile der Nutzung von Webauthn sind:
\begin{itemize}
    \item Erhöhung der Sicherheit und des Komforts, da zu keinem Zeitpunkt Passwörter übertragen werden müssen
    \item Es ist nicht mehr notwendig, Passwörter zu merken oder zu verwalten
    \item Jeder Webdienst erhält einen spezifischen Zugang und dieser kann somit nicht über verschiedene Dienste hinweg zugeordnet werden
    \item Ist ein wirksames Mittel gegen Man-in-the-Middle-Angriffe
    \item die Sicherheit von WebAuthn kann durch die zusätzliche Verwendung eines USB-Tokens erhöht werden
\end{itemize}
(vgl.\:\cite{kebschull2023}, S.\,151)

\subsubsection{Trusted Platform Module}\label{subsubsec:trusted-platform-module}

Auf dem Mainboard moderner Computers ist häufig das sogenannte Trusted Platform Module (TPM) verbaut. Es dient zur Sicherung der Hardware mit integrierten kryptografischen Schlüsseln und hilft zusätzlich dabei die Identität eines Benutzers nachzuweisen und das Gerät zu authentifizieren. Außerdem trägt es zur Sicherheit vor Bedrohungen wie Firmware- und Ransomware-Angriffen bei und bietet die Funktion Passwörter, Zertifikate und Verschlüsselungsschlüssel zu speichern. Alle gängigen Betriebssysteme unterstützen TPM\@. Eine Kombination mit weiteren Sicherheitstechnologien kann die Funktionalität von TPM verbessern. Technologien wie Firewalls, Antivirus-Software, Smartcards und biometrische Überprüfung sind Beispiele dafür.

In jedem TPM-Chip ist ein RSA-Schlüsselpaar gespeichert, mit der Bezeichnung Endorsement Key (EK). Das Schlüsselpaar wird ausschließlich innerhalb des TPM-Chips verwaltet und kann von keiner Software aufgerufen werden. Übernimmt ein Administrator oder ein Benutzer den Besitz eines Systems, so wird auf der Basis des EK und das Passwort vom Eigentümer der Storage Root Key generiert.

Ein weiterer Schlüssel, der im TPM-Chip gespeichert ist, ist der Attestation Identity Key (AIK). Dieser ist zum Schutz des Gerätes vor nicht autorisierter Firmware- und Softwareänderungen. Zur überprüfung werden vor der Ausführung der Software oder Firmware kritische Abschnitte gehasht. Baut das System dann eine Netzwerkverbindung auf, so wird der Hashwert an einen Server gesendet. Werden bei der Überprüfung der Hashwerte Abweichungen an den geänderten Komponenten festgestellt, so erhält das System keinen Zugriff auf das Netzwerk.

TPM kann auf fünf verschiedenen Arten implementiert werden. Die verschiedenen Arten sind:
\begin{itemize}
    \item \textbf{Diskrete TPMs} sind als dedizierter Chip auf dem Mainboard verbaut und von den fünf Arten wohl die sicherste Variante. Aus dem Grund das sie in der Regel fast gar nicht fehleranfällig und nicht zu manipulieren sind.
    \item \textbf{Physisch-basierte TPMs} werden in den Prozessor integriert und enthalten Mechanismen, welche sie sichern vor Manipulationen.
    \item \textbf{Firmware-basierte TPMs} laufen auf einem Prozessor in einer vertrauenswürdigen Umgebung. Sie sind fast so sicher wie diskrete TPMs.
    \item \textbf{Software-basierte TPMs}: bieten keinen erhöhten Schutz, da sie fehleranfällig und leicht angreifbar sind.
    \item \textbf{Virtualisierte TPMs}: werden durch den Hypervisor bereitgestellt. Der Hypervisor tuft die Sicherheitscodes unabhängig der virtuellen Maschine auf.
\end{itemize}

Der Einsatz von TPMs hat folgende Vorteile:
\begin{itemize}
    \item Erzeugung, sichere Aufbewahrung und kontrollierte Nutzung kryptografischer Schlüssel
    \item Wahrung der Plattformintegrität durch den Einsatz von Metriken, die Änderungen an früheren Systemkonfigurationen erkennen
    \item Authentifizierung des Plattformgeräts mittels des RSA-Schlüssels im TPM
    \item Schutz vor Bedrohungen wie manipulierte Firmware, Ransomware, Wörterbuchangriffe und Phishing durch geeignete Sicherheitsmechanismen
    \item Wahrung von Urheberrechten digitaler Inhalte durch den Einsatz von Digital Rights Management (DRM)
    \item Absicherung und Schutz von Softwarelizenzen gegen unbefugte Nutzung oder Manipulation
\end{itemize}
(vgl.\:\cite{gillis2024})

\subsection{Funktionsweise und Ablauf}\label{subsec:funktionsweise-und-ablauf}

In der Funktionsweise ähnelt das FIDO2-Protokoll einem Public-Key-Verfahren.
Im groben Ablauf wird bei der Registrierung ein Schlüsselpaar aus einen privaten und einem öffentlichen Schlüssel generiert.
Der private Schlüssel ist nur auf dem Endgerät des Nutzers im TPM gespeichert und kann nicht ausgelesen werden.
An den Dienstleister wird der öffentliche Schlüssel übermittelt.
Bei der Anmeldung des Nutzers dient der private Schlüssel zur Verschlüsselung eines Datenpakets und wird ausschließlich im TPM eingesetzt.
So weisst das Endgerät des Nutzers nach, dass der Nutzer im Besitz des privaten Schlüssels ist.

Bei genauerer Betrachtung des Ablaufs der FIDO2-Authentifizierung, ist zu erkennen, dass in zwei Authentifizierungsschritte unterschieden wird.
Zum einen die Registrierung und zum anderen die Anmeldung.
Bei der Registrierung wird dem Nutzer ein FIDO2-Authentifikator angeboten.
Dem gegenüber muss der Nutzer sich über biometrische Faktoren, einer PIN, einer beliebigen anderen sicheren Methode oder dem Besitz authentifizieren.
Auf Basis dessen wird für den Dienst vom Authentifikator ein Schlüsselpaar generiert.
Der private Schlüssel wird im Authentifikator gespeichert und der öffentliche Schlüssel wird an den Dienst übermittelt.

Der zweite Authentifizierungsschritt ist die Anmeldung.
In diesem Schritt fordert der Dienst den Nutzer auf, sich mit demselben FIDO2-Authentifikator zu authentifizieren, den er bereits bei der Registrierung verwendet hat.
Um den Authentifizierungsprozess zu starten, muss der Nutzer auf seinem Gerät dieselbe Authentifizierungsmethode verwenden, die er ursprünglich für die Anmeldung genutzt hat.

Hierzu sendet der Dienst ein Datenpaket an den Authentifikator. Dieser verschlüsselt es mithilfe des privaten Schlüssels, der beispielsweise in der Hardware eines USB-Tokens hinterlegt ist, und übermittelt das verschlüsselte Ergebnis zurück an den Dienst.
Anschließend überprüft der Dienst die Authentizität, indem er das empfangene Datenpaket mit dem zugehörigen öffentlichen Schlüssel entschlüsselt und mit dem ursprünglich gesendeten Datenpaket vergleicht. Stimmen beide überein, ist nachgewiesen, dass der Nutzer im Besitz des privaten Schlüssels ist.
Die Authentisierung gilt in diesem Fall als erfolgreich, und der Dienst gewährt dem Nutzer den Zugriff.

\subsection{Weitere Arten von FIDO-Protokollen}\label{subsec:weitere-fido-protokollen}

Neben dem FIDO2-Standard hat die FIDO-Alliance noch zwei weitere Protokolle entwickelt.
Dies sind das Universal Second Factor (U2F) und das Universal Authentication Framework (UAF)\@.
Jeder von ihnen hat durch ihre Umsetzung bestimmte Vor- und Nachteile.
In den nächsten Abschnitten werden die beiden Protokolle kurz vorgestellt.

\subsubsection{Universal Second Factor}\label{subsubsec:universal-second-factor}

Das Universal Second Factor (U2F) Protokoll ersetzt das Passwort nicht vollständig, sondern arbeitet nebenher.
Es fordert den Nutzer auf seine Identität, zusätzlich zu seinem Passwort mit einem zweiten Faktor zu verifizieren.
Das kann aus etwas sein was der Kategorie Wissen oder Besitz sein.
Wurde der Sicherheitsschlüssel aktiviert, verwendet der Browser diesen, um den Zugang zum gewünschten Dienst zu ermöglichen.
(vgl.\:\cite{nevis2022})

\subsubsection{Universal Authentication Framework}\label{subsubsec:universal-authentication-framework}

Ein weiteres Protokoll ist das Universal Authentication Framework (UAF), welches eine passwortfreie Authentifizierung ermöglicht.
Gleichzeitig unterstützt es eine Multi-Faktor-Authentifizierung, für erhöhte Sicherheit.
Entwickelt würde es hauptsächlich für mobile Endgeräte, wie Smartphones.
Weit verbreitet ist das UAF im Finanzsektor in den Vereinigten Staaten und Europa.
(vgl.\:\cite{nevis2022})

\subsection{Vorteile und Herausforderungen}\label{subsec:vorteile-und-herausforderungen}

Der FIDO2-Standard bietet mehrere Vorteile, die ihn zu einer attraktiven Wahl für moderne Authentifizierungsmethoden machen:
\begin{itemize}
    \item Nutzer müssen sich nie mit einem komplexen Passwort auseinandersetzen
    \item Private Schlüssel verlassen das Endgerät nicht
    \item Jeder Dienst erhält ein eigenes Passwort
    \item Jede Authentifizierung hat immer ein unterschiedliches Datenpaket
    \item Passwort oder Schlüssel wird niemals über das internet übertragen, was heißt es kann nicht abgefangen werden
\end{itemize}

Jedoch hat auch dieses Authentifizierungsverfahren seine Herausforderungen:
\begin{itemize}
    \item Der Betreiber des Dienstes muss sicherstellen, dass es keine alternativen Authentifizierungsmethoden gibt, die das FIDO2-Verfahren umgehen können
    \item Erhöhter administrative Aufwand, da ein robustes Verfahren für den Einsatz des FIDO2-Authenfikators geschaffen werden muss
    \item Es ist trotzdem grundsätzlich über einen Man-in-the-Middle-Angriff angreifbar
\end{itemize}

(vgl.\:\cite{kebschull2023}, S.\,148\:f.)