@@ -28,11 +28,42 @@ Mit digitalen Signaturen wird sichergestellt, dass die Absender jene sind, für
...
@@ -28,11 +28,42 @@ Mit digitalen Signaturen wird sichergestellt, dass die Absender jene sind, für
\subsection{X3DH}
\subsection{X3DH}
\label{sec:einleitung_Signal_X3DH}
\label{sec:einleitung_Signal_X3DH}
Extended Triple Diffie-Hellmann
\ac{X3DH} steht für die dreifache Ausführung des Diffi-Hellmann Algorithmus mit verschiedenen Schlüsselkombinationen, um schlussendlich ein Shared Secret zu berechnen. Für alle verwendeten Schlüsselpaare werden entweder die Funktionen X25519 oder X448 verwendet, welche beide auf eliptischen Kurven basieren. Für die Signierung von Bytesequenzen werden die Privaten Schlüssel und die in \ref{sec:einleitung_Signal_XEdDSA_VXEdDSA} beschriebenen Verfahren verwendet. Für die verständlichere Erklärung des Ablaufs und welche Schlüssel verwendet werden, wird beispielhaft von zwei Gesprächsteilnehmern Alice und Bob ausgegangen.\\
drei \ac{KDF}-Ketten.
- Schlüssel bauen vorwärts auf einander auf
- Mit Teile des verschlüsselten Textes werden als Grundlage für die weitere Verschlüsselung genommen
Damit eine Kommunikation aufgebaut werden kann, sollte Bob offline sein, hinterlegt Bob bei der Registrierung auf dem Signal Server seinen Identitätsschlüssel, einen signierten und mehrere Einmalschlüssel. Sollten die Einmalschlüssel nahezu aufgebraucht sein wird Bob aufgefordert neue Einmalschlüssel auf dem Server zu hinterlegen.
\item IK\textsubscript{A} und SPK\textsubscript{B}
\item EK\textsubscript{A} und IK\textsubscript{B}
\item EK\textsubscript{A} und SPK\textsubscript{B}
\end{enumerate}
Die drei Ergebnisse werden aneinander gehangen und einer \ac{KDF} übergeben. Das Ergebnis ist der geheime Schlüssel mit dem die Nachricht schlussendlich verschlüsselt wird. \\
Sollte optional ein Einmalschlüssel von Bob in dem Keyset enthalten sein wird zusätzlich noch eine vierte Berechnung mit dem EL\textsubscript{A} und OPK\textsubscript{B} durchgeführt und zusammen mit den anderen der \ac{KDF} übergeben.\\
Nach der Berechnung löscht Alice ihren privaten Einmalschlüssel und berechnet eine Bytesequenz AD aus dem IK\textsubscript{A} und IK\textsubscript{B}, welche optional mit weiteren Informationen wie den Nutzernamen ergänzt wird. Anschließend kann Alice die erste Nachricht an Bob senden und damit das Gespräch beginnen. \\
Diese Nachricht enthält:
\begin{itemize}
\item IK\textsubscript{A}
\item EK\textsubscript{A}
\item welcher EK\textsubscript{B} verwendet wurde
\item die mit dem SK verschlüsselte Nachricht und dem AD als Anhang
\end{itemize}
Abhängig von den Sicherheitseinstellungen nutzt Alice den SK oder davon abgeleitete Schlüssel um Nachrichten an Bob zu senden.
Analog zu den BErechnungen die Alice für den SK gemacht hat verwendet Bob die ensprechenden privaten Schlüssel und Alice öffentliche Schlüssel. Durch den Zusammenhang des Public-Private-Key verfahrens erhält Bob den gleichen SK und kann damit die empfangene Nachricht entschlüsseln.