© rassco/Shutterstock.com
Rubinrote Sicherheit - Teil 2

Nichtdeterministische Verschlüsselung


Im ersten Teil dieser Artikelserie haben wir an Beispielen gesehen, dass eine deterministische Verschlüsselung zu Problemen führen kann. Die Beispiele haben unsere Definition von Sicherheit, nämlich nicht zuzulassen, dass Information gewonnen werden, verletzt.

Deterministische Verschlüsselungsverfahren, d. h. immer gleiche Ciphertexte bei immer gleichen Plaintexten unter denselben Schlüssel, können grundsätzlich nicht zu einer sicheren Mehrfachverschlüsselung mit dem gleichen Schlüssel führen [1]. Natürlich ist es für die Praxis wichtig, dass wir mehr als einmal mit dem gleichen Schlüssel verschlüsseln können, gerade in Hinblick darauf, welch großes Problem der sichere Schlüsselaustausch darstellt. Allzu häufiger Schlüsseltausch zwischen zwei Parteien ist unerwünscht. Die Lösung ist nichtdeterministische Verschlüsselung („Randomized Encryption“). Wenn man mit diesem Verfahren den gleichen Plaintext zigmal verschlüsselt, erhält man mit sehr großer Wahrscheinlichkeit zig unterschiedliche Ergebnisse. Die Stream-Cipher-Konstruktion, wie wir sie bisher kennengelernt haben, ist im Kern ein zutiefst deterministischer Prozess. Zwar setzen wir für die Sicherheit auf einen sicheren Pseudozufallsgenerator, doch dieser wirkt nur auf den Uneingeweihten wie zufällig. Für alle im Besitz des Schlüssels ist der Pseudozufallsgenerator auch nur ein deterministischer Prozess, der, wenn er mit dem Schlüssel gefüttert wird, immer das exakt gleiche Ergebnis ausspucken wird.

Um unsere Verschlüsselung also schlussendlich nichtdeterministisch zu machen, müssen wir auf einem anderen Weg Zufälligkeit in die Berechnung einstreuen, da der Verschlüsselungsalgorithmus als solcher streng deterministisch arbeitet. Wer mit Passwörtern und Passwortsicherheit hantiert hat, findet sich jetzt vielleicht an die „Salt“-Idee erinnert – genau diese Idee liefert auch hier die Lösung. Wir erzeugen ein einmaliges, zufälliges Wegwerfelement, das wir in die Berechnung mit einfließen lassen. Damit der Empfänger dieses Element seinerseits in der Entschlüsselung berücksichtigen kann, teilt der Sender dieses Element dem Empfänger einfach mit. Das Geniale daran: In diesem Wegwerfelement steckt keine Sicherheit, wir können es getrost öffentlich publizieren, ohne dass wir die Sicherheit unserer Verschlüsselung gefährden.

Ausführen der Codebeispiele

Sollten Sie Ruby noch nicht installiert haben, können Sie dies über www.ruby-lang.org/de vornehmen oder mit einem Tool wie www.rvm.io oder www.github.com/rbenv/r...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang