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.
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).
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})
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.
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.
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
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.