Dies ist keine praktische Frage, sondern eher eine Frage der Neugier. Ich habe gehört, dass ein CS-Professor empfohlen hat, von md5ing-Passwörtern nicht zu SHA1, sondern zu AES zu wechseln, um das Passwort mit sich selbst als Schlüssel zu verschlüsseln. Hat jemand einen Einblick, ob dies tatsächlich mehr oder weniger sicher ist?
Einige Gedanken zu diesem Thema:
- SHA1 ist eine Einbahnstraße, die es mehr machen sollte Sicher als eine Funktion, die die Daten bewahrt.
- Andererseits kann der Hacker die entschlüsselbare Natur von AES unmöglich ausnutzen, da er das Passwort noch nicht kennt.
- Es sei denn, er ahnt es. Aber dann wäre er egal, wie ich es verschlüsselt habe.
- Da Sie wissen, dass das AES-Passwort entschlüsselt wird, wenn der Entschlüsselungsschlüssel mit der Ausgabe übereinstimmt, könnte es auf dem Computer des Hackers brutal erzwungen werden.
- Aber der Hacker weiß nicht, wie es verschlüsselt ist, also würde er das nicht versuchen.
- Aber der Hacker hätte auch den Verschlüsselungscode haben können. In diesem Fall ist es einfach eine Frage Die meisten Websites verwenden md5 oder sha1 (richtig?), sodass Nachschlagetabellen für diese Hashes weitaus weiter verbreitet sind als für die AES-Methode. Dadurch wird die AES-Methode sicherer.
- Wenn wir jedoch beide Methoden salzen, sind sie gleichermaßen immun gegen Nachschlagetabellen.
Einige häufig vorkommende Punkte in der Antworten und Gegenpunkte:
Die AES-Verschlüsselung ist nicht kollisionssicher und weist daher wahrscheinlich mehr Kollisionen bei gleicher Länge der Hash-Zeichenfolge auf.
Wenn wir ein längeres Salt verwenden, ist das verschlüsselte Passwort länger als ein SHA1-Hash. Dies kann ausreichen, um die Kollisionen auf ein vergleichbares Niveau zu bringen - oder auch nicht.
Die AES-Verschlüsselung gibt an, wie lange das Kennwort innerhalb von 16 Byte gedauert hat.
Wir können die AES-Methode ergänzen: Nach dem Verschlüsseln füllen oder schneiden wir sie auf eine angemessene Länge (die länger als die von SHA1 ist, um Kollisionen zu vermeiden).