it-swarm-eu.dev

Ist es möglich, Passwörter mit reversibler Verschlüsselung sicher zu speichern?

Jeder sagt, dass Sie beim Speichern von Passwörtern einen nicht umkehrbaren Hash verwenden müssen, damit die Passwörter selbst dann sicher sind, wenn Ihre Datenbank durchgesickert ist. Ich frage mich, ob es sowieso eine reversible Verschlüsselung zum Speichern von Passwörtern gibt.

Zumindest müssten Sie verlangen, dass bei einem Exploit, bei dem die Datenbank verloren geht (SQL-Injection, Server-Shell-Zugriff usw.), der Verschlüsselungsschlüssel nicht verloren geht und der Verschlüsselungsschlüssel nicht vernünftigerweise ermittelt werden kann ein bekanntes Klartext-Passwort, wenn Sie die durchgesickerte Datenbank haben.

Ich denke nicht ernsthaft darüber nach, weil es so aussieht, als wäre es schwierig, es richtig zu machen, auch wenn es technisch möglich ist, aber es scheint ein interessantes Problem zu sein.

23
Steve

Reversible Verschlüsselung wird normalerweise nicht für Kennwörter verwendet, da die spezifischen Anforderungen und Parameter der Kennwortauthentifizierung nicht mit der Schwäche der reversiblen Verschlüsselung kompatibel sind.

Die Hauptschwäche der reversiblen Verschlüsselung ist einfach: Wenn der Schlüssel kompromittiert wird, werden die verschlüsselten Daten kompromittiert.

Kennwörter werden immer verwendet, wenn sich Benutzer anmelden. Daher muss der Authentifizierungsprozess in der Lage sein, jederzeit und ohne behindernde Kontrollen automatisch auf die Anmeldeinformationen der Benutzer zuzugreifen. Das bedeutet, dass sich der Schlüssel für die reversible Verschlüsselung ständig auf der Festplatte oder im Speicher befinden muss. Wenn dieses Programm, diese Festplatte oder dieser Speicher irgendwie kompromittiert werden, werden alle diese reversibel verschlüsselten Passwörter auf einen Schlag kompromittiert.

Betrachten Sie im Gegensatz dazu die Verwendung von nicht reversiblen Hashes. Wenn das Programm, die Festplatte oder der Speicher gefährdet sind, erhält der Angreifer die "gesperrten" Hashes, und es gibt keinen Schlüssel. Sie können dann weiter angreifen - bekannte Chiffretext-Angriffe, Brute Force usw. - aber sie haben noch nicht "gewonnen".

Wir verwenden ständig reversible (sagen wir verschlüsselte) Verschlüsselung - Festplatten, Dateien, E-Mail-Anhänge. Allen diesen Anwendungen ist jedoch gemeinsam, dass sie das Eingreifen des Menschen zur Bereitstellung des Schlüssels fördern (falls nicht erforderlich).

Ich bin mir nicht sicher, warum Sie danach fragen, aber was ist mit einem Hybridmodell? Bedenken Sie, dass es möglicherweise sinnvoll ist, beide reversiblen und nicht reversiblen Chiffretext für Benutzerkennwörter zu speichern. Speichern Sie beim Erstellen von Kennwörtern zwei verschlüsselte Versionen: eine mit einer Einweg-Hashing-Funktion und die andere mit einem asymmetrischen Verschlüsselungsalgorithmus ("Public Key Cryptography"). Alle automatisierten Authentifizierungsprozesse verwenden die nicht umkehrbaren Hashes für Authentifizierungszwecke. Behalten Sie die Hälfte des Paares "öffentlicher Schlüssel" auf dem System, um die verschlüsselten Passwörter zu generieren, und speichern Sie die Hälfte des Paares "privater Schlüssel" offline . . Wenn der Kennwort-Klartext benötigt wird, schalten Sie das verschlüsselte Kennwort offline und entschlüsseln Sie es mit dem entsprechenden Schlüssel. Solange der Entschlüsselungsschlüssel für das Authentifizierungssystem nicht zugänglich ist, kann ein Angreifer die Tatsache nicht ausnutzen, dass Sie zum Speichern von Klartextkennwörtern eine "reversible" Verschlüsselung verwendet haben.

Dies ist nur dann hilfreich, wenn Sie nicht automatisch auf die Klartext-Passwörter zugreifen müssen. Aber es scheint mir eine gute Idee zu sein.

21
gowenfawr

Ist es möglich, Passwörter mit reversibler Verschlüsselung sicher zu speichern?

Ja, aber es ist viel schwieriger und erfordert viel mehr Aufwand und Kosten. Keying ist schwer gut zu machen.

Um die reversible Verschlüsselung zu unterstützen (nicht unbedingt symmetrisch wie @goenfawr feststellt ), benötigen Sie mindestens einen Schlüssel (zwei für die Kryptografie mit öffentlichen Schlüsseln). Sie müssen den Schlüssel generieren, sicher aufbewahren, vor Beschädigung oder Zerstörung schützen, zur Verwendung abrufen, während der Verwendung schützen und regelmäßig ersetzen.

Ein wesentlicher Teil des Problems besteht darin, wie der Schlüssel geschützt werden kann, wenn er nicht verwendet wird. Wenn Sie den Schlüssel verschlüsseln, benötigen Sie einen anderen Schlüssel, um ihn zu entschlüsseln. In diesem Fall sind Sie wieder da, wo Sie angefangen haben. Andere Schutzmethoden verwenden spezielle Hardware oder sichere Betriebssysteme oder sogar benutzerdefinierte Computer mit separatem Speicher und Prozessoren für Sicherheitsparameter. Alle diese Lösungen erfordern zusätzliche Schulungs- und Supportkosten.

Vergleichen Sie diese Lösungen mit einem Einzelhandelscomputer, einem Einzelhandelsbetriebssystem und einer Hash-Funktion.

6
this.josh

Eine Sache, die zu vorhandenen Antworten hinzugefügt werden muss, ist, dass es möglich ist, eine symmetrische (reversible) Verschlüsselung zum Speichern von Geheimnissen (einschließlich Passwörtern) zu verwenden, diese jedoch etwas komplexer/teurer ist.

Ein gutes Beispiel hierfür sind Geldautomaten-/Geldautomaten-Netzwerke, die traditionell die symmetrische Schlüsselverwaltung verwendeten (obwohl sie diese auf eine PKI-basierte Lösung übertragen).

Der Schlüssel (kein Wortspiel beabsichtigt) dafür ist, dass die Verschlüsselungsschlüssel an einem vertrauenswürdigen Ort gespeichert werden. In diesem Fall müssen ein Hardware-Sicherheitsmodul (HSM) und strenge Verfahren zum Laden und Verwalten von Schlüsseln befolgt werden, um sicherzustellen, dass die Schlüssel erhalten bleiben Geheimnis.

4
Rory McCune

Schauen Sie sich die Wiki-Seite für Chiffren an. Obwohl es viele sichere Chiffren gibt, besteht immer die Gefahr, dass der Schlüssel ausläuft. Die Verwendung eines Einweg-Hashs vermeidet dieses Risiko, da kein Schlüssel vorhanden ist.

Ein Grundsatz der Sicherheitstechnik besteht darin, die verfügbaren Informationen zu minimieren, wenn das System kompromittiert wird.

2
nik3daz