Frage:
Ist AES die Verschlüsselung eines Passworts mit sich selbst sicherer als SHA1?
skier88
2012-01-04 14:36:23 UTC
view on stackexchange narkive permalink

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).

Ich denke nicht, dass die Funktion in eine Richtung sicherer ist als eine Funktion in eine Richtung. Das sind zwei verschiedene Dinge.
Nun, ich dachte, es wäre nur weniger sicher, wenn es eine Möglichkeit gibt, den Entschlüsselungsschlüssel zu erraten oder brutal zu erzwingen, aber Punkt 5 beseitigt das ...
Ich würde Dinge nicht als "unerwartet" betrachten, um Gewicht in einer "wie sicher ist diese" Frage zu tragen. Ich überlasse Krypto auch viel lieber den Leuten, die es verstehen - es ist viel zu einfach, Fehler zu machen
Heh ... Ich hoffe, es gibt zumindest ein paar Leute, die Krypto nicht so sehen. Ich glaube auch, dass ich in den letzten beiden Aufzählungszeichen unklar war - Frage bearbeitet.
Die Hash-Funktion selbst spielt keine Rolle, solange sie anständig ist. Es ist viel wichtiger, es richtig zu verwenden (ein Salz und ein langsames Schema wie PBKDF2)
Wie werden Sie es auf eine Mindestgröße auffüllen? Wenn mit 0s, dann ist es für den Hacker offensichtlich. Wie können Sie es so auffüllen, dass nicht umkehrbar erkennbar ist, was Auffüllen und was Verschlüsselung ist?
@Thr4wn, Da Sie nicht versuchen, es umzukehren, können Sie es auch mit dem Passwort auffüllen.
"Sie wissen, dass das AES-Passwort entschlüsselt wird, wenn der Entschlüsselungsschlüssel mit der Ausgabe übereinstimmt" - dies scheint anzunehmen, dass in einem solchen Setup das wahre Passwort der einzige feste Punkt von AES ist.Warum sollte es keinen anderen Schlüsselkandidaten x geben, der bei Verwendung dazu führt, dass AES x ausspuckt?Unwahrscheinlich, aber unmöglich?
Sieben antworten:
Thomas Pornin
2012-01-08 22:00:24 UTC
view on stackexchange narkive permalink

Kurze Antwort: schlechte Idee, tu es nicht.


Längere Antwort: Der Sinn der Übung besteht darin, Speichern Sie etwas, mit dem der Server ein bestimmtes Kennwort überprüfen , das Kennwort jedoch nicht neu erstellen erstellen kann. Die letztere Eigenschaft ist wünschenswert, damit die Folgen eines unzulässigen Lesezugriffs eines Angreifers auf die Serverdatenbank begrenzt bleiben.

Wir wollen also eine deterministische Einwegtransformation , die a konvertiert Passwort in den Bestätigungswert gegeben. Die Transformation muss:

  • konfigurierbar langsam sein, um Wörterbuchangriffe zu vereiteln;
  • für jede Instanz unterschiedlich, um parallele Wörterbuchangriffe, einschließlich vorberechneter Tabellen, zu verhindern (das ist es, was salzt sind ungefähr).

Ein einzelner Aufruf von MD5 oder SHA-1 schlägt auf beiden Konten fehl, da diese Funktionen sehr schnell und nicht gesalzen sind. Langsamkeit kann durch Verschachteln vieler Anrufungen (Tausende, möglicherweise Millionen) erreicht werden, und das Salz kann "irgendwo" injiziert werden, obwohl es gute und schlechte Möglichkeiten gibt, dies zu tun. PBKDF2 ist eine Standardtransformation, die genau das tut, und sie ist nicht schlecht darin (obwohl bcrypt etwas vorzuziehen sein sollte).

Allerdings MD5 und SHA-1 machen mindestens eines richtig: Sie wurden so konzipiert, dass sie nur in eine Richtung funktionieren. Das ist schwer zu machen; Es ist nicht einmal theoretisch bewiesen, dass Einwegfunktionen überhaupt existieren können. Kryptografen auf der ganzen Welt nehmen derzeit an einem Wettbewerb teil, um eine neue, bessere Einweg-Hash-Funktion zu entwickeln.

Ihr Professor scheint also zu empfehlen, eine Funktion für Einbahnstraßen durch eine Funktion zu ersetzen, die nicht für Einbahnstraßen ausgelegt ist. Es korrigiert nichts an Langsamkeit und Salzen, aber es entfernt das einzig Gute an MD5 und SHA-1. Darüber hinaus ist bekannt, dass AES in Bezug auf Angriffe mit verwandten Schlüsseln relativ schwach ist - dies ist kein Problem, solange AES für das verwendet wird, wofür es gedacht war, dh für die Verschlüsselung, aber es wird wichtig Problem, wenn es in einen Baustein für eine Einweg-Hash-Funktion umgewandelt wird. Es scheint möglich zu sein, eine sichere Hash-Funktion zu erstellen, indem Teile des AES-Designs wiederverwendet werden. Dies erfordert jedoch umfangreiche Nacharbeiten (siehe z. B. Whirlpool und ECHO).

Verwenden Sie daher kein hausgemachtes AES-basiertes Passwort-Hashing-Schema. Verwenden Sie im Übrigen nichts, was "hausgemacht" ist: Das ist ein Rezept für eine Katastrophe. Sicherheit kann nicht getestet werden; Die einzige bekannte Möglichkeit, einen sicheren Algorithmus zu erstellen, besteht darin, dass Hunderte von ausgebildeten Kryptographen ihn einige Jahre lang genau betrachten. Das kannst du nicht alleine machen. Selbst ein einzelner Kryptograf wird dies nicht riskieren.

Verwenden Sie stattdessen bcrypt. PBKDF2 ist auch nicht schlecht.

Die Verwendung von AES zum Verschlüsseln eines Kennworts mit dem Kennwort als Schlüssel scheint ebenso eine Einwegfunktion zu sein wie die Verwendung von SHA1 zum Hashing. Der einzige Unterschied ist, dass es nicht dafür entwickelt wurde, wie Sie sagten.
Ich stimme Gudradain zu. Darüber hinaus wurde bcrypt zum Beispiel * in eine Richtung * konzipiert und basiert auf der Verschlüsselung eines bekannten Textes mit dem Kennwort (in mehreren Runden).
nyarlathotep
2012-01-04 15:03:54 UTC
view on stackexchange narkive permalink

Die meisten Websites verwendeten md5 oder sha1 (richtig?). Dies ist also das, was ein Hacker erwarten würde. Dadurch wird die AES-Methode sicherer.

Selbst wenn die meisten Websites MD5 oder SHA1 verwenden, würde ein Wechsel zu AES nur aus dem Grund erfolgen, dass es dort normalerweise nicht verwendet wird. Machen Sie es nicht sicherer - das ist nur Sicherheit durch Dunkelheit, was normalerweise nicht effektiv zur Erhöhung der Sicherheit beiträgt. Es ist weitaus sicherer, einen guten Algorithmus (der für den jeweiligen Zweck gut getestet wurde) zu verwenden und öffentlich zu dokumentieren, als einen Algorithmus zu verwenden, bei dem Sie nicht sicher sein können, ob er gut ist, und nicht sagen, dass Sie es sind Verwendung.

Im Moment kann ich mir die folgenden möglichen Nachteile bei der Verwendung von AES oder einem anderen Verschlüsselungsalgorithmus wie diesem vorstellen:

  1. Verschlüsselungsalgorithmen sind normalerweise nicht zum Vermeiden gedacht Kollisionen: Wie in den Kommentaren unten ausgeführt, ist dies aufgrund des erwarteten pseudozufälligen Verhaltens der Blockverschlüsselung möglicherweise kein Problem. Trotzdem verwenden Sie einen Verschlüsselungsalgorithmus für etwas, für das er nicht entwickelt wurde.
  2. Es ist vorstellbar, dass es Angriffe auf Verschlüsselungsalgorithmen gibt, die weitaus einfacher durchzuführen sind, wenn man weiß, dass Klartext und Kennwort vorhanden sind tatsächlich ein und dasselbe (sollte die Tatsache über den Algorithmus, den Sie verwenden, irgendwie lecken, was nicht so unwahrscheinlich ist, da es zB hier diskutiert wird).
  3. Verschlüsselungsalgorithmen erzeugen Daten, die in vielen Fällen mit dem variieren Länge des Klartextes. Das heißt, der Chiffretext enthält Informationen darüber, wie lang das Passwort ist. Im Fall von AES ist dies ein Vielfaches von 16 Bytes, soweit ich das beurteilen kann; Hash-Werte haben andererseits eine feste Größe (z. B. 160 Bit / 20 Bytes für SHA1); Dies bedeutet, dass ein potenzieller Hacker die Chance hat, mehr Informationen aus einem verschlüsselten Text als aus einem Hashwert zu erhalten.
  4. In der Kryptografie ist es normalerweise immer weniger sicher, etwas selbst zu kochen (was später wahrscheinlich auch nur von Ihnen verwendet wird), als etwas zu verwenden, das bereits lange Zeit in der Community getestet wurde (was bedeutet, dass es Zeit dafür hatte) (
  5. ) Sie möchten sicherstellen, dass Ihr Passwort-Hashing-Algorithmus langsam ist, damit potenzielle Angreifer daran gehindert werden, ihren Weg in Ihr System brutal zu erzwingen. Eine Möglichkeit, dies zu erreichen, besteht beispielsweise darin, das Hashing iterativ in mehreren Runden durchzuführen, wie dies beispielsweise bei PKBDF2 der Fall ist. Weitere Informationen finden Sie unter http://security.blogoverflow.com/2013/09/about-secure-password-hashing/
Sie machen sehr gute Punkte. Dies lässt mich jedoch fragen: Wenn das durchschnittliche Kennwort> 20 Zeichen beträgt, würde die AES-Methode im Durchschnitt längere verschlüsselte Kennwörter erzeugen. Wäre dies genug, um Ihrem ersten Punkt entgegenzuwirken? (Das durchschnittliche Benutzerpasswort besteht sicherlich aus weniger als 20 Zeichen, aber nehmen wir an, wir salzen es oder etwas anderes für einen Moment.)
Informationen zu Ihrer Bearbeitung finden Sie in Punkt 6. Selbst wenn der Hacker genau weiß, wie das Kennwort verschlüsselt wurde, bin ich mir ziemlich sicher, dass er es dennoch brutal erzwingen müsste.
@skier88: für die Länge: könnte ein theoretischer Punkt sein, da es ziemlich schwierig ist, Passwörter mit einer Länge von mehr als 16 Bytes zu erzwingen, aber es ist sicherlich ein Vorteil zu wissen, dass das Passwort zwischen 16 und 32 Bytes lang ist, als nichts über das zu wissen Passwort überhaupt
Eigentlich habe ich das gerade gemerkt. Sie könnten das resultierende AES leicht auffüllen oder zuschneiden - sie würden wissen, was Sie getan haben, wenn sie Ihren Code erhalten hätten, aber sie würden immer noch nicht wissen, wie lange das Passwort war. Aber ich vermute, es wäre immer noch anfälliger für Kollisionen.
Kollisionen sind nur dann ein Problem, wenn der Angreifer auswählen kann, was gehasht werden soll. Für das Passwort sollten sie kein Problem sein. Alle anderen Gründe bleiben jedoch bestehen :)
@Kosta: stimmt, ein Angreifer kann nicht auswählen, was er hashen möchte. Es besteht jedoch immer noch die Möglichkeit von mehr Kollisionen als mit einem Hash-Algorithmus - was einen Brute-Force-Angriff erheblich erleichtern könnte, da das erste Passwort, das den gewünschten "verschlüsselten Hash" erzeugt, für den Angreifer in Ordnung ist!
Ich denke Punkt 1. ist hier kein Problem. Wenn solche Kollisionen auftreten würden (häufiger als die theoretische Grenze), würde dies bedeuten, dass die Blockverschlüsselung nicht das erwartete pseudozufällige Verhalten aufweist, wodurch sie nach modernen Standards effektiv gebrochen wird. Dies sollte also keiner derzeit verwendeten Blockverschlüsselung passieren, insbesondere AES.
-1 für die Empfehlung von Keccak für das Passwort-Hashing. Sie vergessen auch, dass das Passwort immer wieder mehrere Runden lang gehasht werden muss, und Sie erwähnen auch nicht, dass Salze eindeutig sein sollten.
@LucasKauffman richtig, die Empfehlung einer soeben entwickelten Hashing-Methode widerspricht tatsächlich meinen anderen Ratschlägen zur Verwendung gut getesteter Algorithmen - oder gibt es spezielle andere Bedenken gegen die Verwendung von Keccak?
Geschwindigkeit, Keccak ist so konzipiert, dass es sehr schnell ist, was Sie beim Passwort-Hashing vermeiden möchten.
Was @LucasKauffman wirklich sagt, ist, dass weder Ihre Vorschläge (SHA2 noch SHA3 (Keccack)) richtig sind. Beide sind schnell und das Passwort-Hashing sollte langsam sein. Die richtigen Optionen finden Sie unter [Antwort von Thomas Pornin] (http://security.stackexchange.com/a/10496/12).
Krystian
2012-01-04 15:50:15 UTC
view on stackexchange narkive permalink

Ein unmittelbares Problem, das ich bei diesem Ansatz sehe, ist die feste Schlüssellänge von AES. Bei Verwendung von AES-128 wäre das Kennwort auf 16 Byte beschränkt. Was ist mit längeren Passwörtern oder langen Passphrasen?

Um eine beliebige Passwortlänge zu berücksichtigen, benötigen Sie eine Hash-Funktion, also zurück zum Anfangspunkt.

Beachten Sie, dass es gute Passwörter gibt. untersuchte und sichere * Möglichkeiten, eine Blockverschlüsselung in eine Hash-Funktion umzuwandeln, sogenannte PGV-Modi wie Davies-Meyer, Matyas-Meyer-Oseas oder Miyaguchi-Preneel.

(*) Für eine angemessene Definition von "sicher".

Daran hatte ich nicht gedacht, aber würde es es wirklich weniger sicher machen? Und müssten Sie es wirklich hashen und nicht nur abschneiden?
Ja, wenn Sie abschneiden, verlieren Sie einen Teil der Stärke des Passworts. Z.B. Brute-Force-Wörterbuch-Suche Angreifer * weiß * Ihr Passwort ist höchstens 16 Zeichen.
Richtig, aber 16 gehashte Charaktere werden nicht sicherer sein ... denke ich. (und wir reden nur über den Schlüssel, nicht über das, was er hasht, das ist das ursprüngliche Passwort + ein Salz)
Ja, der Unterschied gilt nur für Passwörter mit mehr als 16 Zeichen. Ja, das Hashing kürzerer Passwörter macht es nicht sicherer.
StrangeWill
2012-01-09 08:45:13 UTC
view on stackexchange narkive permalink

Beachten Sie jedoch Folgendes:

Ich breche in Ihre Site ein und erhalte genügend Zugriff, um festzustellen, dass Sie AES-Schlüssel für Ihr System konfiguriert haben. Das einzige, was "verschlüsselt" aussieht, sind Ihre Passwörter ... raten Sie mal Was ich tun werde.

Ich würde sie gehasht halten, lässt viel weniger Raum für das einfache Scrapen Ihrer gesamten Passwortdatenbank.

Darüber hinaus als Websitebesitzer Ich möchte nicht die Möglichkeit haben, die Passwörter meines Benutzers zu entschlüsseln. Andernfalls wird die Option zum "Wiederherstellen von Passwörtern" zu einer möglichen Funktion, nach der höhere Unternehmen fragen können, und technisch können wir dies tun, weil das zugrunde liegende System aufgebaut ist Verwenden eines Verschlüsselungssystems anstelle eines Hashing-Systems (ein lahmer Grund, aber Softwareentwickler bearbeiten Anfragen wie diese).

Hauptsächlich: Wenn es um Sicherheit geht, versuchen Sie nicht, etwas Verrücktes und Unkonventionelles zu tun Sie werden sich wahrscheinlich eine große Sicherheitslücke schreiben, weil Sie nicht in der Lage sein werden, die Menge an Recherchen in ein Team von Leuten zu stecken, die an einem Algorithmus für einen bestimmten Zweck arbeiten Wir müssten.

Kosta
2012-01-04 15:19:11 UTC
view on stackexchange narkive permalink

Die richtige Antwort lautet: Es spielt überhaupt keine Rolle.

Bei Passwörtern besteht der einzige praktische Angriff darin, eine Liste von Passwörtern auszuprobieren, bis Sie mit brutaler Gewalt das richtige finden . Niemand wird versuchen, SHA1 oder AES direkt anzugreifen, um dies zu tun. Selbst zum gegenwärtigen Zeitpunkt der Forschung wäre ein Angriff auf SHA1 zehntausendmal einfacher als ein AES, beide sind immer noch völlig unmöglich (zum Umkehren von Passwort-Hashes, da Kollisionen hier keine Rolle spielen). Und da ein Forscher einen anderen Weg findet, um den anderen Algorithmus anzugreifen, könnten sich die Chancen im nächsten Jahr umkehren.

Was wichtig sein könnte, ist, wie schnell Sie Ihren Hash ableiten / Ihr Passwort verschlüsseln. Aber wenn z.B. SHA1 ist schneller und Sie möchten, dass es langsamer ist (um Brute-Force-Angriffe abzuwehren). Sie können nur mehrmals hashen.

Was ein Hacker "erwartet", ist nicht so relevant, was etwas "Unerwartetes" macht. ist nur Dunkelheit. Es ist wie zu sagen "Ich kehre alle Passwortbuchstaben um, jetzt ist es sicherer". Es wird nicht sein. Wenn der Hacker auf Ihre Kennwortdatenbank zugreifen kann, wie können Sie sicher sein, dass er keinen Zugriff auf Ihre Kennwort-Hash-Ableitungsfunktion hat?

Ein Fehler beim "Verschlüsseln eines Kennworts mit sich selbst": Die Länge des Chiffretextes könnte dem Angreifer einen Hinweis auf die Länge des Passworts geben. Das ist schrecklich.

In jedem Fall sollten Sie das Passwort salzen, vorzugsweise mit etwas, das für den Benutzer einzigartig ist.

Ich kann sehen, dass Sie sich viel Mühe geben, weil Sie meine Änderungen noch nicht gesehen haben;). Aber im Ernst, danke, Sie machen gute Punkte. In den Kommentaren zu Nyarlathoteps Antwort finden Sie eine Art Kontrapunkt, obwohl ich denke, dass die Kombination von Kollisionen und gemeinsamen Längen dies regeln wird.
Ich weiß nicht, warum ich "gemeinsame Längen" eingegeben habe. Machen Sie diese indikativen Längen.
Während ich meine Antwort tippte, ging das Internet aus und es dauerte ein paar Minuten, bis ich wieder aufstand. Ich hätte die Frage vielleicht noch einmal lesen sollen :)
Nick Johnson
2012-01-05 06:27:36 UTC
view on stackexchange narkive permalink

Es gibt MACs (Message Authentication Codes), die aus Blockchiffren aufgebaut sind. Das bekannteste ist wahrscheinlich CBC-MAC. Im Vergleich zu einem Hash-Mac treten Probleme auf, insbesondere:

Bei einer sicheren Blockverschlüsselung ist CBC-MAC für Nachrichten mit fester Länge sicher. An sich ist es jedoch nicht sicher für Nachrichten mit variabler Länge. Ein Angreifer, der die richtigen Nachrichten-Tag-Paare (dh CBC-MAC) (m, t) und (m ', t') kennt, kann eine dritte Nachricht m '' generieren, deren CBC-MAC ebenfalls t 'ist.

[...‹

Dieses Problem kann nicht durch Hinzufügen eines Blocks mit Nachrichtengröße (z. B. mit Merkle-Damgård-Verstärkung) gelöst werden. Daher wird empfohlen, eine andere Betriebsart zu verwenden, z Beispiel: CMAC zum Schutz der Integrität von Nachrichten mit variabler Länge.

Die kürzere Antwort: Die Sicherheit eines MAC, der aus einer Blockverschlüsselung erstellt wurde, hängt davon ab, wie Sie ihn erstellen. Eine naive Konstruktion wird mit ziemlicher Sicherheit erhebliche Mängel aufweisen.

Vielen Dank für die Antwort, aber ich bin ein wenig verloren (wie Sie wahrscheinlich sehen können, weiß ich nicht viel über Kryptographie). Warum werden MACs generiert? Und wie wirken sie sich auf den Vergleich eines Eingabekennworts mit gespeichertem Chiffretext aus?
@skier88 Ein MAC ist ein Nachrichtenauthentifizierungscode und eine übliche Methode zur Verwendung eines Hashs. Das Hashing von Passwörtern unterscheidet sich geringfügig, es gelten jedoch ähnliche Überlegungen. Mein Hauptanliegen war es zu veranschaulichen, dass das Erstellen eigener Kryptosysteme, selbst wenn sie scheinbar sicher sind, überraschende unerwünschte Nebenwirkungen haben kann. Sie sollten sich also an Grundelemente und Systeme halten, die sich als sicher erwiesen haben.
Danke, ich verstehe Ihren Hauptpunkt, aber ich möchte auch ein wenig Terminologie lernen. Ich verstehe jetzt, dass MACs eine Anwendung von Hashes sind, aber was sind im Anführungszeichen die "Tags" in den "Message-Tag-Paaren"?
@skier88 In diesem Zusammenhang ist das 'Tag' die Ausgabe des CBC-MAC. Weitere Informationen finden Sie im Wikipedia-Artikel. Wenn es eine Hashing-Funktion wäre, wäre es der 'Hash' anstelle des 'Tags'.
Ah, ok, danke. Es scheint also, dass CBC-MAC nicht direkt auf die Frage anwendbar ist, sondern ein Beispiel dafür, warum Sie vorsichtig sein müssen. Andererseits habe ich deshalb diese Frage gestellt - in der Hoffnung, dass jemand diese Methode abschließend analysieren kann.
@skier88 Nun, CBC-MAC ist ein Ansatz, bei dem Sie versuchen könnten, eine Verschlüsselung wie eine Hash-Funktion zu verwenden, und wie Sie sehen können, weist sie Fehler auf. Ich würde Ihre Konstruktion analysieren, aber Sie haben sie nicht vollständig spezifiziert: Wie funktioniert sie? Was ist die IV, falls zutreffend? Welchen Teil der Ausgabe verwenden Sie als Hash?
Entschuldigung, aber ich weiß wirklich nicht genug, um darauf zu antworten. Ich würde versuchen, es herauszufinden, aber ich denke, Sie und andere haben bereits ziemlich genau festgestellt, dass dies eine schlechte Idee wäre, abgesehen davon, dass es viel komplizierter ist, als nur Funktionsaufrufe zu ersetzen. Aber danke für das Angebot.
mentallurg
2018-06-10 01:16:14 UTC
view on stackexchange narkive permalink

Die Tatsache, dass Sie einen ungewöhnlichen Algorithmus entworfen haben, macht ihn nicht sicher. "Selbstgemachte" Algorithmen sind gefährlich, da niemand eine kryptografische Analyse durchgeführt hat.

Wie @Thomas Pornin oben schrieb, war AES nicht kollisionssicher. Außerdem ist AES relativ schnell, was Angriffe vereinfacht.

SHA1 ist kollisionssicher, SHA1 ist jedoch auch sehr schnell, da es dazu dient, Hashes mit großen Daten- oder Dateivolumina zu generieren eine kurze Zeit. Der Zweck besteht nicht darin, Angriffe auf gehashte Kennwörter zu verhindern.

Wenn Sie einen Kennwort-Hash generieren möchten, der gegen verschiedene Arten von Angriffen resistent ist, sollten Sie die Kennwortverlängerung in Betracht ziehen. Abhängig von Ihrem Technologie-Stack und den verfügbaren Bibliotheken sollten Sie bcrypt, scrypt, argon2 .

berücksichtigen


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...