Unterschied zwischen Hash ein Passwort und Verschlüsseln
Den aktuellen top-stimmten diese Frage Staaten:
Einen anderen, der nicht so sehr eine Frage der Sicherheit, obwohl es sicherheitsrelevante, komplett und elendem scheitern zu grok der Unterschied zwischen Hash ein Passwort und verschlüsseln Sie. Am häufigsten im code gefunden, wo ist der Programmierer versucht, unsichere "Erinnern mich an mein Passwort" - Funktion.
Was genau ist der Unterschied? Ich hatte immer den Eindruck, dass die Vermischung war eine form der Verschlüsselung. Was ist die unsichere Funktionalität der poster beziehen?
Ein gut geschriebener Artikel darüber, warum Sie sollten nicht einfach den hash, der Sie Geheimnisse/Passwörter. Stattdessen HMAC. benlog.com/articles/2008/06/19/dont-hash-secrets
Gute Zusammenfassung des Thema auf StackExchange security blog: security.blogoverflow.com/2011/11/...
Der Artikel, den Sie verlinkt, ist sehr irreführend. Es verbindet Kennwort Salze (die erwartet werden, um sichtbar zu werden, um Angreifer) mit MAC-Tasten (die voraussichtlich auch geheim bleiben). David J. Liszewski link bietet eine viel genauere Beschreibung.
Gute Zusammenfassung des Thema auf StackExchange security blog: security.blogoverflow.com/2011/11/...
Der Artikel, den Sie verlinkt, ist sehr irreführend. Es verbindet Kennwort Salze (die erwartet werden, um sichtbar zu werden, um Angreifer) mit MAC-Tasten (die voraussichtlich auch geheim bleiben). David J. Liszewski link bietet eine viel genauere Beschreibung.
InformationsquelleAutor Claudiu | 2008-11-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hash ist eine Einweg-Funktion (gut, eine mapping). Es ist irreversibel, Sie gelten secure hash algorithm und man kann nicht den original-string zurück. Die meisten Sie tun können, ist zu generieren, was heißt "Kollision", d.h. das finden einer anderen Zeichenfolge, die den gleichen hash. Kryptografisch sichere hash-algorithmen sind so konzipiert, um zu verhindern, dass das auftreten von Kollisionen. Sie können angreifen, eine sichere hash-durch die Verwendung einer rainbow-table, dem können Sie entgegenwirken, indem eine Salz der hash, bevor es zu speichern.
Verschlüsselung ist eine richtige (zwei-Wege) - Funktion. Es ist beidseitig verwendbar, Sie können Sie entschlüsseln die entstellten string, um original zu erhalten string, wenn Sie den Schlüssel haben.
Unsichere Funktionalität bezieht es sich auf das ist, dass, wenn Sie verschlüsseln der Kennwörter, die in Ihrer Anwendung den Schlüssel irgendwo gespeichert, und ein Angreifer erhält Zugriff auf Ihre Datenbank (und/oder code) kann man die original-Passwörter, indem man sowohl den Schlüssel und den verschlüsselten text in der Erwägung, dass mit einer hash-es ist unmöglich.
Menschen in der Regel sagen, wenn ein Pirat besitzt Ihre Datenbank oder Ihr code braucht er auch kein Passwort, also der Unterschied ist irrelevant. Das ist naiv, denn Sie haben noch die Pflicht, Sie zu schützen Sie Ihre Kennwörter von Benutzern, vor allem, weil die meisten von Ihnen tun das gleiche Passwort immer und immer wieder, wodurch Sie in einem größeren Risiko von undichten Ihre Passwörter.
Ja und Nein... Hash-Kollisionen werden müssen, schwer zu generieren, die zum Wohle Ihrer eigenen Anwendung die Sicherheit, aber nicht reversability ist ausreichend für die Vermeidung von Passwort-Lecks.
silky: und wie genau sind Sie gehen, um das ursprüngliche Kennwort wieder von Ihrer miesen hash-Funktion? Ich schlage vor, Sie Lesen Daves Kommentar
Wenn überhaupt, dann eine hash-Funktion, die eine große Anzahl von Kollisionen ist besser für die Sicherheit der Passwörter, aber es würde natürlich bedeuten, dass mehr Passwörter verwendet werden könnte, um Anmeldung auf das Konto.
Salz ist nicht fest codiert werden, da jede Hash-Element sollte eine separate Salz. Der Punkt, der ein Salz ist, wenn beide BenutzerA und BenutzerB verwendet Passwort "1234", wenn Sie herausfinden, benutzer_a Kennwort Sie können nicht sagen, UserB verwendet das gleiche Passwort, weil Sie hatten verschiedene Salze. Es ist nicht die Sicherheit entscheidend, dass eine Salze wird geheim gehalten, die meisten Implementierungen einfach verketten, das Salz auf der Vorder-oder der Rückseite der binäre blob, das ist der hash.
InformationsquelleAutor Vinko Vrsalovic
Hashing ist ein one-way-Funktion, was bedeutet, dass, sobald Sie ein Kennwort hash ist sehr schwierig, sich das original-Passwort wieder aus dem hash. Verschlüsselung ist ein zwei-Wege-Funktion, wo es viel einfacher ist, den ursprünglichen text wieder aus dem verschlüsselten text.
Plain hashing wird leicht besiegt mit einem Wörterbuch-Angriff, wo ein Angreifer einfach nur vor hashes jedes Wort in einem Wörterbuch (oder jede Kombination von Zeichen, bis zu einer bestimmten Länge), dann nutzt diese neue Wörterbuch look-up-Hash-Passwörter. Mit eine einzigartige random-Salz für jeden Hash gespeicherte Passwort macht es viel schwieriger für einen Angreifer verwenden diese Methode. Würden Sie im Grunde benötigen, um erstellen Sie eine neue einzigartige Wörterbuch für jeden salt-Wert, den Sie verwenden, verlangsamen Ihren Angriff furchtbar.
Es ist unsichere speichern von Passwörtern mit einem Verschlüsselungs-Algorithmus, denn wenn es einfacher für die Benutzer oder den administrator, um das ursprüngliche Kennwort wieder aus dem verschlüsselten text, es ist auch einfacher für einen Angreifer, das gleiche zu tun.
InformationsquelleAutor Bill the Lizard
Wie oben gezeigt Bild, wenn das Passwort verschlüsselt wird, ist es immer ein verstecktes Geheimnis, wo jemand zu extrahieren, können die nur-text-Kennwort. Allerdings, wenn das Passwort gehasht, Sie sind entspannt, denn es gibt kaum eine Methode der Wiederherstellung des Passworts aus dem hash-Wert.
Extrahiert aus Verschlüsselte vs Hash-Passwörter - Was ist besser?
Ist die Verschlüsselung gut ist?
Plain-text-Passwörter können verschlüsselt (symmetrische Verschlüsselungsalgorithmen wie DES, AES oder mit anderen algorithmen und werden innerhalb der Datenbank gespeichert. Bei der Authentifizierung (Bestätigung der Identität mit user-name und Passwort), die Anwendung entschlüsselt das verschlüsselte Passwort in der Datenbank gespeichert und vergleichen Sie mit den vom Benutzer bereitgestellte Passwort für die Gleichstellung. In dieser Art von eine Passwort-handling-Ansatz, selbst wenn jemand Zugang zu Datenbank-Tabellen die Passwörter werden nicht einfach wiederverwendbar. Allerdings gibt es eine schlechte Nachricht in diesem Ansatz als gut. Wenn jemand irgendwie erhalten, den kryptografischen Algorithmus zusammen mit dem Schlüssel verwendet, der von Ihrer Anwendung, wird er/Sie in der Lage sein, um alle Benutzer-Passwörter in Ihrer Datenbank gespeichert, die durch die Entschlüsselung. "Dies ist die beste option, die ich bekam", ein software-Entwickler kann Schreien, aber gibt es einen besseren Weg?
Kryptographischen hash-Funktion (one-way-only)
Ja die gibt es, vielleicht haben Sie den Punkt verpasst hier. Haben Sie bemerkt, dass es keine Anforderung zu entschlüsseln und zu vergleichen? Wenn es one-way-nur conversion-Ansatz, bei dem das Passwort umgewandelt werden kann in etwas umgewandelt-Wort, aber der umgekehrte Vorgang (Generierung von Passwort von bekehrt-Wort) ist nicht möglich. Nun, selbst wenn jemand erhält Zugang zu der Datenbank, es gibt keine Möglichkeit, die Passwörter kopiert oder extrahiert unter Verwendung der konvertiert-Worte. In diesem Ansatz, es wird kaum jedenfalls, dass einige wissen könnten, dass Ihre Benutzer' top-secret-Kennwörter; und dies schützt den Benutzer mit dem gleichen Passwort für mehrere Anwendungen. Welche algorithmen verwendet werden können für diesen Ansatz?
InformationsquelleAutor lkamal
Ich habe immer gedacht, dass die Verschlüsselung umgewandelt werden können, beide Möglichkeiten, in einer Weise, dass der end-Wert können Sie bringen zu ursprünglichen Wert und mit Hashing-Sie werden nicht in der Lage sein, um wieder aus dem Ergebnis auf den ursprünglichen Wert.
InformationsquelleAutor CheGueVerra
Hashing-algorithmen werden in der Regel kryptographische in der Natur, aber der wichtigste Unterschied ist, dass die Verschlüsselung ist umkehrbar durch ver-und Entschlüsselung und hashing ist das nicht.
Einer Verschlüsselungs-Funktion dauert in der Regel Eingaben und erzeugt verschlüsselte Ausgabe, die gleich oder etwas größer.
Eine Hash-Funktion nimmt die Eingabe und produziert eine in der Regel kleinere Ausgabe, in der Regel eine Feste Größe.
Während es nicht möglich, ein Hash-Ergebnis und "dehash" um wieder die ursprüngliche eingegeben haben, können Sie in der Regel brute-force Ihren Weg zu etwas, das produziert den gleichen hash.
In anderen Worten, wenn ein Authentifizierung Schema nimmt einen Passwort-hashes, und vergleicht Sie mit einer Hash-version der Kennwort erfordert, ist es möglicherweise nicht erforderlich, dass Sie eigentlich wissen, das original-Passwort, sondern nur dessen hash", und Sie können brute-force Ihren Weg, um etwas zu entsprechen, wird, auch wenn es mit einem anderen Passwort.
Hash-Funktionen sind in der Regel erstellt, um zu minimieren die Wahrscheinlichkeit von Kollisionen und machen es schwer, nur etwas berechnen, die den gleichen hash als etwas anderes.
InformationsquelleAutor Lasse Vågsæther Karlsen
Im Idealfall sollten Sie beides tun.
Ersten Hash-pass-Passwort für das one-way-Sicherheit. Verwenden Sie ein Salz für zusätzliche Sicherheit.
Dann verschlüsseln des hash-zur Abwehr von Wörterbuch-Angriffen, wenn die Datenbank des Passwort-hashes gefährdet ist.
Das durfte nicht sein downvoted. Es ist eine Möglichkeit, die sollte nicht ausgeschlossen werden, dass einfach, dass die Datenbank kompromittiert ist, während die Anwendung nicht. Deshalb das verschlüsseln des hash ist eine zusätzliche Ebene der Sicherheit.
Ich Stimme mit Ihnen, meine früheren selbst. Ich habe gesehen, zu viele SQL-Injektionen, nicht Kompromiss, den code der Anwendung (oder Konfigurations-Dateien) und ich bin jetzt der Meinung, dass Sie hinzufügen ein Geheimnis ist hilfreich, sei es in form von Verschlüsselung oder in form von Paprika, aber es darf nicht ersetzt hashing. Für eine vollständige Antwort finden Sie hier: security.stackexchange.com/a/31846/10863
InformationsquelleAutor LogicMagic
Hashing:
Es ist ein one-way-Algorithmus und einmal Hash kann nicht rollback-und das ist seine süße Punkt gegen Verschlüsselung.
Verschlüsselung
Wenn wir Verschlüsselung gibt es einen Schlüssel, dies zu tun. Wenn dieser Schlüssel wird zugespielt werden alle Ihre Passwörter könnten entschlüsselt werden leicht.
Auf der anderen Seite, auch wenn Ihre Datenbank gehackt werden oder der server-admin habe Daten von DB und Sie verwendet, Hash-Passwörter, die hacker werden nicht in der Lage zu brechen diese Hash-Passwörter. Dies wäre eigentlich praktisch unmöglich, wenn wir hashing mit der richtigen Salz-und zusätzliche Sicherheit mit PBKDF2.
Wenn Sie möchten, werfen Sie einen Blick auf, wie sollte Sie schreiben, Ihre hash-Funktionen, können Sie besuchen hier.
Gibt es viele algorithmen, hashing durchführen.
MD5 - Verwendet den Message-Digest-Algorithmus 5 (MD5) hash-Funktion. Der Ausgabe-Hashwert ist 128 bit lang. Der MD5-Algorithmus wurde von Ron Rivest in den frühen 1990er Jahren und ist nicht die bevorzugte option heute.
SHA1 - - Sicherheit Verwendet Hash-Algorithmus (SHA1-Hash) hash-1995 veröffentlicht. Der Ausgabe-Hashwert von 160 bit Länge. Obwohl die meisten weit verbreitet, dies ist nicht die bevorzugte option heute.
HMACSHA256, HMACSHA384, HMACSHA512 - Verwenden Sie die Funktionen SHA-256, SHA-384, SHA-512 und der SHA-2-Familie. SHA-2 wurde 2001 veröffentlicht. Die Ausgabe von hash-Längen von 256, 384 und 512 bits, die jeweils als hash-Funktionen " Namen geben.
InformationsquelleAutor Rahul Garg
Als richtig wie die anderen Antworten auch sein mögen, im Kontext, dass das Zitat wurde in die hashing-Methode ist ein Werkzeug, das verwendet werden kann, sichern von Informationen, die Verschlüsselung ist ein Vorgang, der die Informationen und macht es sehr schwierig für unberechtigte Personen zu Lesen/zu verwenden.
InformationsquelleAutor Peter Coulton
Hier ist ein Grund, möchten Sie möglicherweise verwenden Sie einen über den anderen - Passwort abrufen.
Wenn Sie speichern nur einen hash des Kennworts eines Benutzers können Sie nicht bieten eine "Passwort vergessen" - Funktion.
woops, ja das habe ich falsch gelesen, danke für den Hinweis!
Tut mir Leid viel zu wütend. Ich sehe zu viele websites die Speicherung der Passwörter im Klartext und es frustriert mich. Als kleiner Hinweis: manche Sicherheits-minded-websites wie, Nutzer ändern Ihre Passwörter nicht regelmäßig. Sie wollen sicherstellen, dass die person nicht ändern, sein Passwort von "Password1" , "Password2". So behalten Sie die nur-text-Kennwort, um zu tun, diese Vergleiche zu einem späteren Zeitpunkt. Das ist keine gute Praxis. Was Sie tun müssen, in diesem Fall ist die Durchführung einer Analyse, die auf Sie ZUNÄCHST das Kennwort ein, wodurch eine Reihe ähnlicher Passwörter-hash jeder -- die hashes.
Kein problem, es machte mich gehen Sie zurück und Lesen Sie die Frage und auch die weitere Forschung zu tun, so ist nicht alles verloren 🙂 ich bin mir nicht sicher, was ich dachte, als ich schrieb, die Antwort. cheers
InformationsquelleAutor Philtron