In PHP ist die Funktion von Hash_PBKDF2 ein häufig verwendetes Kryptographie -Tool, mit dem häufig Kennwörter verschlüsselt und gespeichert werden. Diese Funktion basiert auf dem Algorithmus PBKDF2 (kennwortbasierte Schlüsselabgabefunktion 2). Durch wiederholtes Hashing wird die kryptografische Berechnung komplexer und verbessert damit die Sicherheit des Kennworts. Ein Schlüsselparameter der Funktion von Hash_PBKDF2 ist Iterationen , dh die Anzahl der Iterationen. Dieser Parameter wirkt sich direkt auf die Berechnungskomplexität des Kennworthashings und die Gesamtsicherheit des Systems aus.
Die Anzahl der Iterationen bezieht sich darauf, wie oft die Hash -Funktion auf denselben Daten ausgeführt wird. Im PBKDF2 -Algorithmus wird jede zusätzliche Iteration ein neues Hashing mit dem Passwort und des Salzwerts durchgeführt, wodurch die vom Angreifer erforderlichen Rechenkosten auf Brute das Passwort erzwingen.
Der Funktionsprototyp lautet wie folgt:
<span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">hash_pbkdf2</span></span><span>(
</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$algo</span></span><span>,
</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$password</span></span><span>,
</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$salt</span></span><span>,
</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$iterations</span></span><span>,
</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$length</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>,
</span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$binary</span></span><span> = </span><span><span class="hljs-literal">false</span></span><span>
)
</span></span>
Unter ihnen ist $ Iterations der Parameter, der die Anzahl der Hash -Iterationen steuert.
Die direkte Auswirkung der Erhöhung der Anzahl der Iterationen besteht darin, die Berechnungskosten zu erhöhen. Für legitime Benutzer dauert die Anmeldung in der Anmeldung möglicherweise nur ein paar Millisekunden mehr, aber bei der Durchführung großer Brute-Force-Angriffe auf Angreifer bedeutet jede zusätzliche Iteration mehrere Erhöhungen des Rechenvolumens. Wenn beispielsweise 1000 Iterationen verwendet werden, können 1000 Passwörter pro Sekunde ausprobiert werden. Wenn es auf 100.000 steigt, können Sie nur 10 Passwörter pro Sekunde ausprobieren und die Angriffseffizienz erheblich verringern.
Moderne Angreifer verwenden häufig GPU-, FPGA- oder ASIC -Geräte, um parallel zu knacken. Aufgrund seiner seriellen Struktur kann PBKDF2 diese hardwarebeschleunigten Angriffe in gewissem Maße unterdrücken. Durch die Erhöhung der Anzahl der Iterationen können die Vorteile dieser Geräte weiter reduziert werden, so dass selbst wenn der Angreifer eine leistungsstarke Hardware hat, die Schwierigkeit des Knackens erheblich zunimmt.
Dictionary-Angriffe stützen sich auf vorbereitete Kennwort-Hash-Listen für die Übereinstimmung. Da der iterative Mechanismus von PBKDF2 mit der Verwendung von Salzwerten ( $ SALT ) kombiniert wird, werden unterschiedliche Hash -Ergebnisse auch dann erzielt, wenn dasselbe Kennwort unterschiedliche Salzwerte verwendet. Die hohe Anzahl von Iterationen wird den Prozess der Wörterbuchgenerierung extrem langsam machen und die Durchführbarkeit solcher Angriffe weiter schwächen.
Obwohl höhere Iterationen eine größere Sicherheit bringen, können sie nicht ohne Grenzen verbessert werden. Jedes Mal, wenn ein Server eine Anmeldeanforderung verarbeitet, muss er entsprechende Hashing -Operationen ausführen. Eine zu hohe Anzahl von Iterationen führt zu offensichtlichen Leistungs Engpässen und wird sogar zu einer Angriffsfläche für die Ablehnung von Dienstangaben. Daher ist es wichtig, eine angemessene Anzahl von Iterationen auszuwählen.
Nach den Empfehlungen von OWASP (Open Web Application Security Project) beträgt die empfohlene Anzahl der empfohlenen Iterationen bis 2025 mindestens 310.000. Dieser Wert sollte von Jahr für Jahr angepasst werden, wobei die Computerhardware fortgesetzt werden kann, um einen relativen Gleichgewicht mit der Rechenleistung des Angreifers des Angreifers aufrechtzuerhalten.
Verwenden Sie die Mindestanzahl von Iterationen, die derzeit von der Branche empfohlen werden, z. B. 310.000 oder höher;
Bewerten Sie regelmäßig die Leistungstoleranz des Systems und optimieren Sie sie gemäß der tatsächlichen Hardware.
Passwortrichtlinien sollten in Kombination mit Hashing-Richtlinien wie starken Kennwortanforderungen, Multi-Faktor-Authentifizierung usw. Verwendet werden.
Stellen Sie sicher, dass ein einzigartiger und ausreichend zufälliger Salzwert verwendet wird, um Regenbogentischangriffe zu verhindern.
Die Anzahl der Iterationen in der Funktion von Hash_PBKDF2 ist einer der Schlüsselfaktoren für den Schutz der Passwortsicherheit. Das Festlegen dieses Parameters verbessert nicht nur die Fähigkeit des Systems, Brute-Force-Risse zu widerstehen, sondern verhindert auch verschiedene Formen kryptografischer Angriffe. Beim Entwerfen eines Zertifizierungssystems sollten Sie diesen Parameter vollständig verstehen und angemessen nutzen, um eine stärkere Sicherheitslinie zu erstellen.