-
Die Erfindung betrifft ein computerimplementiertes Verfahren zum Verschlüsseln von Daten, bei dem eine Hashfunktion verwendet wird.
-
Der Einsatz von Hashfunktionen zum Verschlüsseln von Daten ist grundsätzlich bekannt. So wird in der Internetenzyklopädie Wikipedia unter http://de.wikipedia.org/wiki/kryptologische_hashfunktion eine kryptologische Hashfunktion beschrieben, die eine Einwegfunktion ist.
-
-
Der Erfindung liegt die Aufgabe zugrunde, ein Verfahren der eingangs genannten Art zu schaffen, mit dem eine besonders zuverlässige Verschlüsselung von Daten, insbesondere von Passwörtern, möglich ist.
-
Die Lösung dieser Aufgabe erfolgt mit einem Verfahren mit den Merkmalen des Patentanspruchs 1. Bevorzugte Ausgestaltungen der Erfindung sind in den Unteransprüchen angegeben.
-
Bei einem computerimplementierten Verfahren zum Verschlüsseln von Daten mit einem Computer, bei dem eine Hashfunktion verwendet wird, ist erfindungswesentlich vorgesehen, dass die Hashfunktion auf ein frei wählbares Passwort angewandt wird, dass mit den dabei erzeugten Hashcodes ein Schlüsselstring erzeugt wird und dass der so erzeugte Schlüsselstring zur Verschlüsselung der zu verschlüsselnden Daten und/oder zur Entschlüsselung der verschlüsselten Daten verwendet wird. Mit einem solchen Verfahren wird eine besonders hohe Sicherheit erreicht. Das Hashverfahren wird nicht unmittelbar auf das zu verschlüsselnde Wort angewandt, sondern wird nur zur Erzeugung eines Schlüssels oder Schlüsselstrings verwendet, der erst dann zur Verschlüsselung der eigentlich zu verschlüsselnden Daten verwendet wird. Die ist besonders günstig, weil das Passwort so nicht zurückverfolgbar ist und die zu verschlüsselnden Daten erhalten bleiben.
-
In einer bevorzugten Ausgestaltung der Erfindung werden aus dem frei wählbaren Passwort durch Verknüpfung mit einer Saltlist mehrere Strings erzeugt. Eine Saltlist ist aber fest im Verfahren definiert und kann aus einer Matrix von leicht abgewandelten Zeichenfolgen bestehen. Grundsätzlich ist dieses Verfahren bekannt. Weiterhin ist es bevorzugt, dass das frei wählbare Passwort mit einem Pseudozufallssalt verknüpft wird. Die Verknüpfung ist dabei bevorzugt eine Addition. Das Pseudozufallssalt kann dabei durch einen festen String addiert durch die aktuelle Zeit erzeugt werden. Dadurch entsteht bei jeder neuen Chiffrierung ein anderer Wert. Dadurch wird Wiederholungen im Schlüssel bei großen Datenmengen vorgebeugt. Bevorzugt wird das frei wählbare Passwort, das auch als Masterpasswort bezeichnet wird, durch Addition des Pseudozufallssalt und der Saltlist verändert, wodurch eine Anzahl von Strings entsteht, deren Länge durch die Saltlist bestimmt wird und deren Anzahl durch die Länge des Masterpassworts bestimmt wird. Bevorzug wird ein Masterpasswort mit 8 Zeichen gewählt, so dass 8 Strings gebildet werden. Die Saltlist setzt sich bevorzugt aus 128 Strings zu je 8 Zeichen zusammen. Da die Saltlist ein fester Algorithmus ist, ist die Anzahl der Strings theoretisch unendlich. Die Anzahl der Strings ist unabhängig von der Länge des Passwortes.
-
In einer bevorzugten Ausgestaltung der Erfindung wird die Hashfunktion separat auf die erzeugten Strings angewendet. Bevorzugt wird ein Whirlpool-Hash verwendet. Dabei entstehen günstigerweise mehrere Strings mit einer bestimmten Anzahl, in einer bevorzugten Ausführungsform 64 hexadezimalen Zeichen. Besonders bevorzugt werden 8 Strings erzeugt, die jeweils 128 hexadezimale Zeichen enthalten. Dies entspricht 8 512Bit-Strings.
-
In einem nächsten Schritt werden die beim Hashing erzeugten hexadezimalen Zeichen günstigerweise auf Bits reduziert. Dies kann beispielsweise dadurch erfolgen, dass die Zeichen 0, 1, 2, 3, 4, 5, 6 und 7 als ”0” gesetzt werden und dass die Zeichen 8, 9, A, B, C, D, E, F als ”1” gesetzt werden. Es sind natürlich auch andere günstige Zuordnungen möglich.
-
Aus den so erzeugten Strings mit 128 Bits wird dann günstigerweise der Schlüsselstring erzeugt. Dies erfolgt bevorzugt durch Addition von Werten von verschiedenen Strings zu jeweils einem Wert des Schlüsselstrings. Bevorzugt wird dabei aus jedem String ein Bit genommen, wobei der Wert des ersten Schlüsselstrings mit 128 multipliziert wird, der Wert des zweiten Schlüsselstrings mit 64, der Wert des dritten Schlüsselstrings mit 32 und so weiter. Der Wert des achten Schlüsselstrings wird dann mit 1 multipliziert. Es ergibt sich dann ein 128 Zeichen langer Schlüsselstring, in dem jedes Zeichen einen pseudozufälligen 8Bit-Wert hat. Dies entspricht einem Wert von 0–255. In gleicher Weise können auch Schlüsselstrings anderer Länge erzeugt werden.
-
Bei diesem Verfahren kann ein Angreifer nicht auf das Masterpasswort zurückschließen, selbst wenn er diesen Schlüsselstring durch Wissen um die zu verschlüsselnden Daten und die dabei entstehende verschlüsselten Daten bzw. die Chiffre hätte.
-
In einem letzten Schritt bei der Erzeugung der eigentlich chiffrierten Daten, insbesondere eines verschlüsselten Textes, wird bevorzugt der zu verschlüsselnde Text mit einer entsprechenden Anzahl von Zeichen des Schlüsselstrings verknüpft, so dass die Daten, insbesondere der Text verschlüsselt werden. Besonders bevorzugt wird eine Addition vorgenommen. Sollte bei der Addition ein größerer Wert als 255 als Summe auftreten, wird vom Ergebnis 256 subtrahiert. Auf diese Weise kann ein Klartext, oftmals ein Passwort, zuverlässig durch einen sich immer wieder ändernden und nicht rückverfolgbaren Schlüsselstring codiert werden, so dass das Masterpasswort zuverlässig geschützt ist.
-
Bei der Entschlüsselung werden die zu entschlüsselnde Daten, insbesondere ein chiffrierter Text bevorzugt mit einer entsprechenden Anzahl von Zeichen des Schlüsselstrings invers zur Verschlüsselung verknüpft, so dass die Daten entschlüsselt wird. Wenn bei der Verschlüsselung eine Addition verwendet wird, so wird bei der Entschlüsselung bevorzugt eine Subtraktion verwendet. Dabei wird vom chiffrierten Text der zugehörige Wert des Schlüsselstrings subtrahiert. Sollte ein kleinerer Wert als 0 als Differenz auftreten, wird zum Ergebnis 256 addiert.
-
Ein weiterer Aspekt der Erfindung besteht in der Bereitstellung eines Computerprogramms mit Programmcodes zur Durchführung aller Verfahrensschritte nach einem der vorhergehenden Ansprüche, wenn das Computerprogramm in einem Computer ausgeführt wird. Ebenfalls wird die Verwendung von verschlüsselten Daten beansprucht, wenn diese nach dem oben beschriebenen Verfahren erzeugt worden sind.
-
Nachfolgend wird die Erfindung anhand eines in der Zeichnung dargestellten bevorzugten Ausführungsbeispiels weiter erläutert. Im Einzelnen zeigen die Darstellungen in:
-
1: einen Ablaufplan zur Erzeugung des Schlüsselstrings;
-
2: die Verschlüsselung eines zu verschlüsselnden Textes mit dem zuvor erzeugten Schlüsselstring; und
-
3: die Entschlüsselung eines verschlüsselten Textes mit dem zuvor erzeugten Schlüsselstring.
-
In 1 ist die Schlüsselerzeugung dargestellt. Insgesamt wird ein symmetrisches Verschlüsselungsverfahren zur sicheren Block- und Streamverschlüsselung von Daten bereitgestellt. Dabei wird ein individueller Schlüsselstring durch Hashing eines frei wählbaren Passworts erzeugt. Dieses frei wählbare Passwort ist in der 1 mit 1 bezeichnet. Der User gibt dieses im Verschlüsselungsverfahren ein. An der Stelle 4 erfolgt eine Addition des Passworts mit einer Saltlist 3. Diese Saltlist 3 ist fest im Verfahren definiert. In der Figur ist ein Beispiel für eine solche Saltlist angegeben. Diese dient im Wesentlichen zur Erzeugung einer Matrix, auf die das Passwort addiert wird, um so eine Grundlage für ein nachfolgendes Hashverfahren zu schaffen. Um Wiederholungen im Schlüssel bei großen Datenmengen vorzubeugen, wird bei jeder neuen Chiffrierung oder Verschlüsselung ein Pseudozufallssalt 2 addiert. Im dargestellten Ausführungsbeispiel besteht dies aus einer beliebigen Zeichenfolge, zu der jeweils die aktuelle Zeit addiert wird. Durch die Addition der sich stets ändernden aktuellen Zeit entsteht ein pseudozufälliger Wert. Auf diese Weise entstehen mehrere Strings 13. Bevorzugt werden 8 Strings gebildet. Im nächsten Schritt wird eine Hashfunktion 5 auf die 8 Strings angewandt. Dies ist bevorzugt ein Whirlpool-Hash. Das Ergebnis wird auch als Hashcode bezeichnet. Es werden dadurch 8 Strings mit 128 hexadezimalen Zeichen erzeugt. Dies entspricht 8 512Bit-Strings. Im Schritt 6 werden die hexadezimalen Zeichen auf Bits reduziert. Im dargestellten Ausführungsbeispiel werden die Zeichen 0, 1, 2, 3, 4, 5, 6 und 7 auf 0 gesetzt und die Zeichen 8, 9, A, B, C, D, E, F werden auf 1 gesetzt. Die Schlüsselerzeugung erfolgt im Schritt 7. Im dargestellten Ausführungsbeispiel erfolgt eine Addition der 8 × 128 Bits der Strings S1 bis S8. Dabei wird jeweils der erste der 128 Bits der Strings S1 bis S8 addiert, wobei der erste Wert mit 128, der zweite Wert mit 64, der dritte Wert mit 32, der vierte Wert mit 16, der fünfte Wert mit 8, der sechste Wert mit 4, der siebte Wert mit 2, und der achte Wert mit 1 multipliziert wird, so dass sich ein erster Wert des Schlüsselstrings KEY ergibt, der einen 8Bit-Wert hat, also Zeichen von 0–255 repräsentiert. Dies erfolgt für jeden der 128 Bits der Strings S1 bis S8, so dass sich ein 128 Zeichen langer Schlüsselstring KEY ergibt. Im folgenden Kasten ist der Schlüsselstring 8 dargestellt.
-
In 2 ist die Verschlüsselung dargestellt. Die zu verschlüsselnden Daten sind hier ein Text, oftmals ein Passwort. Dazu wird der zuvor erzeugte Schlüsselstring 8 mit dem zu verschlüsselnden Text 9 in einem Schritt 10 addiert. Der zu verschlüsselnde Text 9 wird dabei typischerweise ebenfalls als 8Bit-Wert dargestellt und mit den 8Bit-Werten des Schlüsselstrings 8 addiert. Der Klartext muss (in diesem beispiel) je Zeichen einen 8 Bit-Wert haben (z. B. ASCII) Bei der erfolgten Addition 10 wird, falls der Wert der Summe größer als 255 ist, vom Ergebnis 256 subtrahiert, so dass sich ein Ergebnis zwischen 0 und 255 einstellt. Auf diese Weise wird ein verschlüsselter Text 11 erzeugt, der auch als Chiffre bezeichnet wird. Vom erzeugten Schlüsselstring 8 werden nur so viele Zeichen verwendet, wie der zu verschlüsselnde Text 9 Zeichen hat.
-
In 3 ist die Entschlüsselung dargestellt. Dabei wird umgekehrt zu dem in 2 dargestellten Verschlüsselungsschritt vom verschlüsselten Text 11 der Schlüsselstring 8 bzw. die Werte der einzelnen Zeichen des Schlüsselstrings 8 subtrahiert. Dabei wird das Salt (Pseudozufallssalt) zusammen mit dem verschlüsselten Text gespeichert. Ansonsten wäre eine Entschlüsselung nicht möglich. Beim zweiten Mal der Erzeugung des Schlüsselstrings (Entschlüsselung) wird der abgespeicherte Wert für Block 2 genommen. Dies erfolgt in einem Subtraktionsschritt 12. Sollte dabei ein kleinerer Wert als 0 als Differenz auftreten, wird zum Ergebnis 256 addiert. So ist sichergestellt, dass das Ergebnis Werte zwischen 0 und 255 hat. Es ergibt sich dabei der zu verschlüsselnde Text 9 als Ergebnis.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- DE 102007018802 B3 [0003]
- DE 69829967 T2 [0003]
-
Zitierte Nicht-Patentliteratur
-
- http://de.wikipedia.org/wiki/kryptologische_hashfunktion [0002]