Archiv der Kategorie: Kryptographie

Diese Seite zeigt alle Beiträge an, die einen Bezug zum Themenbereich der Kryptographie haben.

Quantenkryptographie einfach erklärt: Das BB84 Protokoll

Im dritten Beitrag meiner Reihe "Quantencomputing und Quantenkryptographie einfach erklärt" werde ich ein Hauptthema der Quantenkryptographie näher erläutern: Quantenschlüsselaustauschprotokolle, im Detail das Protokoll BB84. Klingt kompliziert, aber keine Angst - bevor wir uns das Protokoll näher anschauen, werden wir uns vorab erst einmal mit dem Sinn und Zweck von solchen Protokollen im Allgemeinen beschäftigen und dies völlig unabhängig von der Quantenkryptographie. Hierbei werden wir recht schnell erkennen, dass Schlüsselaustauschprotokolle alltäglich im Einsatz sind - auch in den Moment, in dem Du diese Webseite geöffnet hast.

Vorab der übliche Disclaimer: Ich bin weder Mathematiker, noch Physiker. Aus diesem Grund werde ich sicherlich nicht alle Punkte mit mathematisch/ physischer Präzision korrekt formuliert darlegen können. Insofern du Verbesserungsvorschläge für die Beiträge hast, so freue ich mich selbstverständlich über einen Kommentar oder Feedback.

Dieser Artikel ist Teil einer Serie:

- Teil 1: Was ist Spin?
- Teil 2: Die Grundlagen der Quanten-Mathematik
- Teil 3: Das Quantenschlüsselaustauschprotokoll BB84

Kapitel 1: Grundlagen Verschlüsselung

Beginnen werde ich dieses Mal mit einer Problembeschreibung, die völlig unabhängig von der Quantenkryptographie ist: Wie können zwei oder mehr Personen sicher miteinander kommunizieren? In meinen Kursen habe ich zur Darstellung des Problems sehr gerne das folgende Szenario genommen: Wir stellen uns für einen Moment vor, dass wir uns mitten auf einer belebten Kreuzung befinden, beispielsweise hier:

Alice und Bob auf einer Kreuzung
Alice und Bob auf einer Kreuzung [1]

Die Aufgabenstellung: Wie können die beiden rot markierten Person eine Nachricht austauschen, ohne dass diese sich näher kommen dürfen? Natürlich sind wir in einer modernen Welt, Smartphones existieren bereits. Aber wie stellt beispielsweise ein Smartphone sicher, dass eine Nachricht unverändert und vertraulich beim Empfänger ankommt?
Quantenkryptographie einfach erklärt: Das BB84 Protokoll weiterlesen

Quantencomputing und Quantenkryptographie einfach erklärt: Grundlagen Mathematik

Nachdem ich im ersten Beitrag die Grundlagen der Quantenphysik erläutert habe, werde ich in diesem Beitrag versuchen, die grundlegende Mathematik möglichst einfach zu erklären. Spätestens wenn wir uns manche Eigenschaften wie die Verschränkung oder Quantenteleportation anschauen, dann wird die Thematik mit etwas Mathematik erheblich leichter verständlich. Vorab der übliche Disclaimer: Ich bin weder Mathematiker, noch Physiker. Aus diesem Grund werde ich sicherlich nicht alle Punkte mit mathematisch/ physischer Präzision korrekt formuliert darlegen können. Insofern du Verbesserungsvorschläge für die Beiträge hast, so freue ich mich selbstverständlich über einen Kommentar oder Feedback.

Dieser Artikel ist Teil einer Serie:

- Teil 1: Was ist Spin?
- Teil 2: Die Grundlagen der Quanten-Mathematik
- Teil 3: Das Quantenschlüsselaustauschprotokoll BB84

Kapitel 1: Zahlenmengen

Beginnen wir mit dem ersten Thema: Zahlenmengen. Zahlenmengen werden die meisten von uns sicherlich schon einmal im Laufe der Schulzeit gehört haben. So gibt beispielsweise die natürlichen Zahlen, ganze Zahlen oder auch die rationalen Zahlen. Da es ein Großteil der Literatur zu Quantentheorien primär auf englisch gibt, werde ich die wichtigsten englischen Übersetzungen im Folgenden ergänzen, um eine Recherche zu Details zu erleichtern.

Zahlenmengen
Verschiedene Zahlenmengen [1]

Eine kurze Wiederholung der bekanntesten Zahlenmengen:

Natürliche Zahlen, mathematisch mit zusammengefasst, sind alle positiven ganzen Zahlen, je nach Definition mit oder oder Null:

Quantencomputing und Quantenkryptographie einfach erklärt: Grundlagen Mathematik weiterlesen

Quantencomputing und Quantenkryptographie einfach erklärt: Was ist Spin?

Nachdem es relativ wenig Beiträge gibt, die die Grundlagen des Quantencomputings bzw. der Quantenkryptographie einfach verständlich erklären, möchte ich im Folgenden mit einer Beitragsreihe das Themenfeld erklären. Vorab: Ich bin weder Mathematiker, noch Physiker, was vielleicht auch ein Vorteil sein kann, wenn man komplexe Sachverhalte aus den genannten Themengebieten einfach erklären möchte. Sicherlich werde ich nicht alle Punkte mit mathematisch/ physischer Präzision korrekt formuliert darlegen können - was für ein Grundverständnis jedoch auch nicht notwendig ist.

Dieser Artikel ist Teil einer Serie:

- Teil 1: Was ist Spin?
- Teil 2: Die Grundlagen der Quanten-Mathematik
- Teil 3: Das Quantenschlüsselaustauschprotokoll BB84

Insofern du Verbesserungsvorschläge für die Beiträge hast, so freue ich mich selbstverständlich über einen Kommentar oder Feedback. Letztendlich ist es ein Thema, welches mich selbst seit einigen Monaten sehr interessiert - und es gibt keinen Weg, etwas besser zu lernen, als es selbst für andere verständlich aufzubereiten. Natürlich werde ich den Fokus auf die relevanten IT-Security Themen aus dem Bereich nicht aussparen.

Kapitel 1: Der Einstieg

Ich habe in den letzten Monaten relativ viele Bücher zum Thema gelesen, eins hatten fast alle gemeinsam: den Einsteig ins Thema. Als guter Einstieg wird oftmals das Stern-Gerlach Experiment verwendet. Im Februar 1922 wurden von Otto Stern und Walther Gerlach erstmals bestimmte für uns im Folgenden relevante Eigenschaften anhand von Silberatomen experimentell bestätigt.

Stern-Gerlach
Otto Stern/ Walther Gerlach Gedenktafel am Haus des Physikalischen Vereins [1]

Aber der Reihe nach: Bevor ich das Experiment selbst erklären möchte, müssen wir auf eine Besonderheit bei Silberatomen eingehen - denn genau diese wurden im Experiment von Gerlach-Stern verwendet.

Quantencomputing und Quantenkryptographie einfach erklärt: Was ist Spin? weiterlesen

2FA: Zwei-Faktor-Authentifizierung mit TOTP

Zwei-Faktor-Authentifizierung (2FA) oder allgemein Mehr-Faktor-Authentifizierung (MFA) hat in den letzten Jahren stark an Bekanntheit und Bedeutung zugenommen. In diesem Beiträge möchte ich mich auf das Time-based One-time Password (TOTP) Verfahren beschränken, dass wohl bekannteste Verfahren, welches in unzähligen Anwendungen Einzug gehalten hat. Das TOTP Verfahren wird beispielsweise von der 2FA Google Authenticator App verwendet. Viele werden es auch von den kleinen Hardware-Token kennen, welche alle 60 Sekunden ein neues Einmalpasswort generieren und anzeigen.

2FA: Wie funktioniert das TOTP Verfahren?

Das TOTP Verfahren wurde 2011 im Rahmen der Internet Engineering Task Force (IETF) als RFC 6238 veröffentlicht. Beim TOTP Algorithmus handelt es sich um eine Hashfunktion, in welcher ein geheimes Passwort zusammen mit der aktuellen Uhrzeit gehasht wird.

Hinter steckt der HMAC-based One-time Password Algorithmus nach RFC 4226 - vereinfacht gesagt nichts weiter als ein Standard, der auf bestimmte Weise einen Hash bildet.

2FA: Zwei-Faktor-Authentifizierung mit TOTP weiterlesen

Timing-Angriffe und deren Auswirkungen

Bei einem Timing-Angriff ("Timing Attack") handelt es sich um eine Form eines Seitenkanalangriffs auf eine bestimmte Implementierung in Hard- oder Software. Die Möglichkeit eines Timing-Angriffs kann selbst bei einfachsten Entwicklungen zu erheblichen Auswirkungen auf die Sicherheit eines Systems führen.

Was ist ein Timing-Angriff?

Bei einem Timing-Angriff werden statistische Verfahren genutzt, um Unterschiede in der Zeitdauer einer bestimmten Operation zu erfahren. Es wird also beispielsweise gemessen, wie lange ein Webserver braucht, um auf eine Loginanfrage zu reagieren. Sollten sich bei den Messungen bestimmte Muster feststellen lassen, so könnten aus diesen Informationen extrahiert werden, die eigentlich geheim gehalten werden sollten. Klingt recht kompliziert, lässt sich aber anhand eines einfachen Beispiels recht eindrucksvoll demonstrieren.

In meinem Github Repository habe ich unter anderem ein in PHP geschriebenes Loginsystem hinterlegt. Der eigentliche, serverseitige Login wird von der Datei "do-login.php" ausgeführt. Im folgenden Beispiel habe ich den Code zur Demonstration etwas modifiziert und auf das wesentliche reduziert:

<?php

// Username & Password als Variable speichern
$username = $_POST['username'];
$password = $_POST['password'];

// Datenbankabfrage des Usernamens
$query = "SELECT * FROM users WHERE username='" .  $_POST['username'] . "'";
$result = mysql_query($query);

// Wenn der Username existiert, dann ...
if (mysql_num_rows($result) == 1)
{ 

	// Speicher den Datensatz des Users in $row
	$row = mysql_fetch_assoc($result);
 
	// Generiere einen Hash des Userpassworts	
	$hash = password_hash($password);

	// Vergleiche Hash mit gespeichertem Hash
	if ( $hash == $row['password'] )
	{
		echo "Authentication successfully.";
	}
	else
	{
		echo "Authentication failed.";
	}
}
// Es existiert kein User mit dem Usernamen
else
{
	echo "Authentication failed.";
}

?>

Zum Login in eine Anwendung bzw. auf einer Webseite wird ein Code wie oberer nahezu als Standard eingesetzt. Schlecht ist er auf dem ersten Blick nicht:

  • Es ist für den Benutzer nicht ersichtlich, ob ein Username existiert. Er bekommt auch bei einem nicht existenten Usernamen stets die Meldung "Authentication failed" zurück.
  • Der Code ist aufgeräumt, auf das wesentliche reduziert. Der Hash wird erst berechnet, wenn der User auch tatsächlich existiert, was effizient ist.
  • Die SQL Abfrage wurde einfach gehalten, um Fehler durch Komplexität zu vermeiden.

Bei genauerem Hinsehen hat der Code jedoch einige erhebliche Schwachstellen.

Schwachstellen

Wer sich etwas mit PHP auskennt, kann versuchen, die Probleme im Quellcode vor dem Weiterlesen des Textes zu identifizieren.

Timing-Angriffe und deren Auswirkungen weiterlesen