Skip to content
Snippets Groups Projects
Commit e3d9d670 authored by Frederic Aust's avatar Frederic Aust
Browse files

Kapitel zu X3DH fertiggestellt

parent f8d28a8e
No related branches found
No related tags found
1 merge request!6Added a documentation
...@@ -22,18 +22,31 @@ Signal ist ein kostenfreier, quelloffener Messenger, von gleichnamiger Stiftung ...@@ -22,18 +22,31 @@ Signal ist ein kostenfreier, quelloffener Messenger, von gleichnamiger Stiftung
\label{sec:einleitung_Signal_XEdDSA_VXEdDSA} \label{sec:einleitung_Signal_XEdDSA_VXEdDSA}
Die Signaturverfahren XEdDSA und VXEdDSA basieren auf den eliptischen Kurven Die Signaturverfahren XEdDSA und VXEdDSA basieren auf den eliptischen Kurven
Mit digitalen Signaturen wird sichergestellt, dass die Absender jene sind, für die sie sich ausgeben. Dafür wird das Public-Private-Key Verfahren angewendet. In diesem Anwendungsfall werden die Nachrichten mit dem Private-Key des Absenders verschlüsselt und beim Empfänger mit dem Public-Key des Absenders entschüsselt. So wird der Absender verifiziert. Die zu edDSA kompatiblen Signaturen XEdDSA und VXEdDSA Mit digitalen Signaturen wird sichergestellt, dass die Absender jene sind, für die sie sich ausgeben. Dafür wird das Public-Private-Key Verfahren angewendet. In diesem Anwendungsfall werden die Nachrichten mit dem Private-Key des Absenders verschlüsselt und beim Empfänger mit dem Public-Key des Absenders entschlüsselt. So wird der Absender verifiziert. Die zu edDSA kompatiblen Signaturen XEdDSA und VXEdDSA
- basiert auf Diffie-Hellmann-Schlüsselaustausch - basiert auf Diffie-Hellmann-Schlüsselaustausch
\subsection{X3DH} \subsection{X3DH}
\label{sec:einleitung_Signal_X3DH} \label{sec:einleitung_Signal_X3DH}
\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.\\ \ac{X3DH} steht für die dreifache Ausführung des Diffi-Hellman 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. Dabei werden Schlüsselpaare von den in \ref{sec:einleitung_Signal_XEdDSA_VXEdDSA} beschriebenen Verfahren verwendet.
\subsubsection{Diffi-Hellman Schlüsselaustausch}
\label{sec:einleitung_Signal_X3DH_Diffi_Hellman_Algorithmus}
Der Algorithmus ist nach den Erfindern Whitfield Diffie und Martin Hellman benannt. Dieser wurde 1976 veröffentlicht und ermöglicht es einen Schlüssel zwischen zwei Gesprächsteilnehmern (Alice und Bob) auszutauschen ohne Diesen zu übermitteln.\\
\begin{enumerate}
\item Für den Schlüsselaustausch einigen sich beide auf eine große Primzahl $g$ und eine maximale Schlüssellänge $n$, welche aktuell üblicherweise entweder 2048 Bit oder besser 4096 Bit groß ist. Diese Zahlen müssen nicht geheimgehalten werden.
\item Anschließend wählen beide Teilnehmer eine Zahl (a für Alice, b für Bob), welche zwischen 0 und $n$ liegt. Die ist der private Schlüssel und wird von Beiden geheim gehalten.
\item Der öffentliche Schlüssel wird mit $A = g^a mod(n)$ für Alice und $B = g^b mod(n)$ für Bob berechnet.
\item Die öffentlichen Schlüssel($A, B$) geben die beidem Teilnehmer dem jeweils anderen bekannt.
\item Zuletzt berechnen Beide jeweils mit $B^a mod(n)$ beziehungsweise $A^b mod(n)$ den gemeinsamen Schlüssel.
\end{enumerate}
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.
\subsubsection{Erster Gesprächsaufbau} \subsubsection{Erster Gesprächsaufbau}
\label{sec:einleitung_Signal_X3DH_ErsterGesprächsaufbau} \label{sec:einleitung_Signal_X3DH_ErsterGesprächsaufbau}
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.\\
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.
Bei dem \ac{X3DH} werden die folgenden Schlüssel beim ersten Gesprächsaufbau von Alice mit Bob eingesetzt: Bei dem \ac{X3DH} werden die folgenden Schlüssel beim ersten Gesprächsaufbau von Alice mit Bob eingesetzt:
\begin{itemize} \begin{itemize}
\item IK\textsubscript{A} (Alice Identitätsschlüssel) \item IK\textsubscript{A} (Alice Identitätsschlüssel)
...@@ -50,8 +63,16 @@ Die drei Diffi-Hellman Ausführungen sind: ...@@ -50,8 +63,16 @@ Die drei Diffi-Hellman Ausführungen sind:
\item EK\textsubscript{A} und SPK\textsubscript{B} \item EK\textsubscript{A} und SPK\textsubscript{B}
\end{enumerate} \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. \\ 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.\\ Sollte optional ein Einmalschlüssel von Bob in dem Keyset enthalten sein wird zusätzlich noch eine vierte Berechnung mit dem EK\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. \\ \begin{figure}[H]
\begin{center}
\includegraphics[width=0.5\textwidth]{X3DH.png}
\caption{Visualisierung des X3DH Quelle: https://signal.org/docs/specifications/x3dh/ Abgerufen am 19.10.2021
\label{fig:statictext}}
\end{center}
\end{figure}
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: Diese Nachricht enthält:
\begin{itemize} \begin{itemize}
\item IK\textsubscript{A} \item IK\textsubscript{A}
...@@ -63,7 +84,7 @@ Abhängig von den Sicherheitseinstellungen nutzt Alice den SK oder davon abgelei ...@@ -63,7 +84,7 @@ Abhängig von den Sicherheitseinstellungen nutzt Alice den SK oder davon abgelei
\subsubsection{Empfang der ersten Nachricht} \subsubsection{Empfang der ersten Nachricht}
\label{sec:einleitung_Signal_X3DH_EmpfangDerEstenNachricht} \label{sec:einleitung_Signal_X3DH_EmpfangDerEstenNachricht}
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. Analog zu den Berechnungen die Alice für den SK gemacht hat verwendet Bob die entsprechenden 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.
\subsection{Double Ratchet} \subsection{Double Ratchet}
\label{sec:einleitung_Signal_Double_Ratchet} \label{sec:einleitung_Signal_Double_Ratchet}
......
docs/_img/X3DH.png

32.8 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment