2010-11-24 11 views
2

Ich versuche herauszufinden, ob es in Ordnung ist, Kennwörter zu speichern, die mit dem AES-Algorithmus verschlüsselt sind, anstatt Kennwörter zu speichern, die mit SHA1 gesalzen und gehackt werden.Ist es in Ordnung, Passwörter zu speichern, die abgerufen werden können?

Der Grund, warum ich mich wundere, ist, weil meine Firma in der Mitte ist, unser Mitgliedschaftssystem zu aktualisieren, das mit unserem eigenen CMS enthalten ist. Derzeit verwenden wir die AES-Verschlüsselung für Passwörter. So können wir Admin-Passwörter leicht nachschlagen, wenn Kunden Support anfordern. Bei Personaländerungen gilt es, alle Administratorkennwörter zu ändern. Das Passwort-Lookup-Tool ermöglicht es uns, die neuen Passwörter leicht zu bekommen und unser Arbeitsablauf wird nicht unterbrochen.

Ich habe den Eindruck, dass die meisten Leute denken, dass gesalzene Passphrases die sicherere Methode sind, Passwörter zu handhaben, aber ich finde keine Möglichkeit, die aktuellen Unternehmensabläufe bei der Verwendung von Hash-Passwörtern einzuhalten. Und die Unternehmenskulturverschiebung, die erforderlich ist, um unsere Passwortoperationen zu ändern, wird wahrscheinlich nicht passieren, wenn ich ihnen keine sehr zwingenden Gründe geben kann, Passwörter zu hacken.

Wird ein Hash-Passwort im Allgemeinen als erforderlich im Vergleich zu einem verschlüsselten Passwort akzeptiert? Warum?

Antwort

3

Sie meinen, in einer Anwendung, die Passwörter für die Benutzerauthentifizierung speichert.

Normalerweise ist es die Motivation für das Hashing und das Speichern von verschlüsselten Daten, dass verhindert wird, dass jemand, der die Datenbank gestohlen oder den Server kompromittiert hat, die Kennwörter erhält.

Wenn Sie sie mit AES verschlüsseln, müssen Sie den Schlüssel eindeutig irgendwo aufbewahren und können ihn niemals ändern (es sei denn, Sie entschlüsseln sie alle und verschlüsseln sie erneut).

Wenn jemand die Maschine kompromittiert, kann er den Schlüssel erhalten, da er notwendigerweise (wenigstens) im Speicher gehalten wird, um die Kennwörter zu entschlüsseln.

Es ist entweder das, oder verwenden Sie einige ausgefallene PKI. AES ist eine symmetrische Chiffre.

Das Verschlüsseln der Passwörter wird der Anwendung nicht wirklich helfen, ihre Datenbank gegen irgendeinen zufälligen Angreifer zu verteidigen (da ein Angreifer MUSS den Schlüssel erhalten kann). Sie zu hacken macht es schwierig, den Klartext zu erhalten, wenn Passwörter stark sind.

+1

Vielen Dank für Ihre Antwort. Aufgrund Ihrer Antwort und der Rückmeldung von der UnhandledException konnte ich den Chef davon überzeugen, dass wir statt einer Verschlüsselung Hashing-Algorithmen verwenden sollten. – quakkels

4

Das Verschlüsseln von Kennwörtern mit einer reversiblen Verschlüsselung ist von zweifelhaftem Wert.

Offensichtlich hat das Nachschlageprogramm Zugriff auf den Schlüssel. Das heißt, Sie sollten davon ausgehen, dass jeder, der Zugriff auf das Programm hat, auch Zugriff auf den Schlüssel hat. Wenn Sie paranoid sind, sollten Sie auch davon ausgehen, dass ihre Ehepartner, Lebensgefährten, Zimmermädchen usw. Zugang zu diesem Schlüssel haben. Auch jeder, der jemals in das Netzwerk eingedrungen ist (seit der Schlüssel verwendet wurde), hat auch Zugriff auf den Schlüssel.

Das Problem mit einem solchen System ist, dass Sie nie wissen werden, dass es kaputt ist. Habe ich Zugriff auf den Schlüssel? Jetzt sofort? Kann ich das Passwort jederzeit einsehen? Sobald Sie es ändern, weiß ich, was es geändert wurde?

Verwendung von gesalzenem Hash (vs reversible Verschlüsselung) stellt seine eigenen Herausforderungen in der Implementierung, aber Sie können sicher sein, dass der Diebstahl der Passwortliste von geringem Wert ist (wenn richtig mit einem starken Algorithmus, mehrere Runden, min Passwortstandards und zufällig implementiert) pro Datensatz Salz). Ihr derzeitiges System ist "feel good encryption". Während es das Management "sicher" fühlen lässt, ist es nicht wirklich sicher.Es ist marginal besser als das Speichern von Passwörtern im Klartext oder auf einer Notiz, es ist im besten Fall eine minimale Geschwindigkeitsbegrenzung für einen entschlossenen Angreifer. Das größte Problem ist, dass Sie nie beweisen können, dass Sie "sicher" sind und keine Warnung haben, wenn Sie kompromittiert sind. Du könntest jetzt kompromittiert sein und es nicht wissen.

+0

Vielen Dank für die Information! – quakkels

+0

In diesem Fall ist der private Schlüssel nur "Schlüssel", da AES eine symmetrische Chiffre ist. Aber ja. das ist im Grunde, was ich gesagt habe, aber vielleicht erklärst du es besser. – MarkR

+0

@Markieren. Vielen Dank. "Privat" zur besseren Übersicht entfernt –

Verwandte Themen