Die moderne Kryptographie bietet eine breite Palette von Tools und Techniken zum Schutz von Daten im Durchgang und in Ruhe. Kryptografische Hash -Funktionen gehören zu der Art des kryptografischen Protokolls, das auf Blockveränderungen basiert. Sie spielen eine wichtige Rolle bei der Sicherung moderner Kommunikationssysteme und arbeiten als Hindernis für Eindringlinge, indem sie die Datenauthentizität sicherstellen. Sicheres Speichern und Abrufen von Passwörtern und anonymen kryptografischen Transaktionen sind einige der vielen Hash -Funktionsanwendungen.
Der Artikel bietet einen umfassenden Überblick und eine Verwendung kryptografischer Hash -Funktionen. Wir erklären Hash -Eigenschaften, ihre Verwendung in verschiedenen Bereichen, mögliche Angriffe und Schwächen und vor allem Möglichkeiten, Hashes zu stärken und die Hash -Funktionen zu verbessern.
Was ist eine Hash -Funktion?
Es handelt sich um eine Einweg-Funktion oder eine eindeutige Kennung. Die Länge des Ausgangs hängt jedoch vom Hashing -Algorithmus ab. Im Allgemeinen haben die am häufigsten bekannten Algorithmen eine Hash-Länge von 160-512 Bits.
Um die Daten jedoch auf eine feste Länge auszugeben, beauftragen Hash zuerst einen voreingestellten Datenblock, der als Datenblöcke bezeichnet wird. Die Größe des Datenblocks variiert von einem Algorithmus zum anderen, ist jedoch für einen Algorithmus immer gleich. Zum Beispiel akzeptiert die SHA-1-Hash-Funktion eine Blockgröße von 512 Bits, und wenn der Eingang gleich groß ist, läuft sie nur einmal, das sind 80 Runden. Wenn die Eingangsgröße 1024 beträgt, wird der Algorithmus zweimal ausgeführt.
Realistisch gesehen ist die Eingangsgröße selten ein Vielfaches von 512-Bit. In solchen Fällen verwenden wir eine Technik, die als Padding bekannt ist, die die Nachricht/Daten in Datenblöcke gleicherer Länge unterteilt. So dass die Funktion auf der Grundlage einer Gesamtzahl von Datenblöcken und -verfahren jeweils auf den Datenblock ausgeführt wird. Es nimmt die Ausgabe des ersten Blocks als Eingang mit dem zweiten Block und so weiter. Daher ist der endgültige Hash der kombinierte Wert aller Ausgangswerte.
Hashing vs. Verschlüsselung
Hashing und Verschlüsselung sind einzigartige und getrennte Prozesse mit eigenen Funktionen, Eigenschaften und Verfahren.
Die Verschlüsselung ist ein wechselseitiger/reversibler Prozess, da sie die Verwendung eines Schlüssels, der entweder geteilt wird oder mathematisch verwandte, aber nicht identische öffentliche und private Schlüssel ist. Im Gegensatz zur Verschlüsselung sind Hashes leicht zu berechnen und schwierig in den ursprünglichen Klartext umzukehren.
Hashing bietet Integrität der Daten. Die Verschlüsselung hingegen macht die Vertraulichkeit der Daten um die Daten.
Das Wohl von Hashes
Obwohl Hashing keine Verschlüsselung ist, ist es eine Form der Kryptographie, die bietet:
Passwortschutz
Wenn ein Benutzer ein Kennwort zur Authentifizierung eingibt, wird der Kennwort -Hash mit der Datei mit Systemhashes im Computer verglichen. Das System ermöglicht den Zugriff erst nach erfolgreicher Authentifizierung. Zum Beispiel speichert Windows Kennworthashes in der SAM -Datei (Security Account Manager), während Linux Kennworthashes in der Datei /etc /schattenspeichert wird.
Dateiüberprüfung
In ähnlicher Weise teilen einige Websites einen Hash -Wert, um die Integrität der heruntergeladenen Software zu überprüfen, die sicherstellt.
Zum Beispiel die Website zum Herunterladen von Linux Mint 20.2 „Uma“ -Cinnamon (64-Bit) ISO-Bild teilt seinen SHA256-Hash im SHA256SUM mit.TXT -Datei. Um die Integrität des Bildes zu überprüfen, CD in das heruntergeladene Bildverzeichnis und generieren Sie die SHA256 -Summe wie folgt:
Ubuntu@Ubuntu: ~ $ SHA256SUM -B *.ISODer SHA256SUM.txt Die Datei enthält vier Hashes, abhängig von den verschiedenen Desktop -Veröffentlichungen. Vergleichen Sie den generierten Hash -Wert mit dem Cinnamon Desktop ISO Image Hash in der Datei, um die Integrität zu überprüfen, wenn sie übereinstimmen. Das heißt, das ISO -Bild ist bereit zu verwenden.
Vor SHA256 wurde der MD5-Hashing-Algorithmus verwendet, um die Integrität einer heruntergeladenen Datei zu überprüfen, aber es ist kein echter kryptografischer Hash-Algorithmus mehr, da er nicht kollisionsresistent ist (dazu später mehr).
Digitale Signaturen
Eine digitale Signatur authentifiziert den Absender, indem es die ursprüngliche Nachricht mit dem verschlüsselten Nachrichtendigest angeht. Der Absender verschlüsselt mit dem privaten Schlüssel, um eine Nichtrepudiation zu gewährleisten, während der Hash vor Datenmanipulationen schützt und Integrität bietet I.e., Digital Signature = Sender privater Schlüssel (Hash (Nachricht)).
Der Empfänger entschlüsselt die Nachricht mit dem öffentlichen Schlüssel des Absenders und nimmt den Hash der ursprünglichen Nachricht, um sich mit dem entschlüsselten Hash zu vergleichen.
Virussignaturen
Antivirenlösungen verwenden verschiedene Ansätze, um Malware zu identifizieren. Einer von ihnen ist Hash -Matching. Sie nehmen einen Teil oder einen ausführbaren Block.
Eigenschaften von Hashes
Die Set von Eigenschaften, die Hash-Funktionen in der Kryptographie öffentlich-Schlüssel-Funktionen zu einer entscheidenden Rolle spielen, sind wie folgt:
Modi von Hashes
Die bekanntesten Hash-Funktionen sind Nachrichten-Digest-Algorithmus (MDA), sicherer Hash-Algorithmus (SHA), NTLM usw.
Das Schlechte von Hashes
Wie bereits erwähnt, können große Hashes mit großer Blockgröße die Angreifer verlangsamen, und die Rückwärtsentwicklung eines kryptografischen Hashs könnte schwierig sein, aber es ist nicht unmöglich, es ist nicht unmöglich. Alles, was Angreifer benötigen. Der Abschnitt erörtert einige der Wege der Hash -Ausbeutung.
Kollision
Kollision im Hashing tritt auf, wenn zwei Eingänge den gleichen Ausgangswert zurückgeben. Zuverlässige Hash -Funktionen sind so konzipiert, dass sie Kollisionsbeständigkeit liefern. Aber es ist unvermeidbar aufgrund eines Taubenloch -Effekts. Gemäß dem Pigeonhole -Effekt gibt es eine festgelegte Anzahl von Ausgangswerten gegen die Eingabe einer beliebigen Größe. Das heißt, da es immer mehr Eingänge als die Ausgabe geben wird, ist die Kollision ein unvermeidbares Ereignis.
Regenbogentische
Wie bereits erwähnt, speichern Betriebssysteme keine Passwörter in Plaintext nicht. Daher sind Regenbogentabellen vorbereitete Datenbanken oder Nachschlagtabellen, die Hashes auf das Klartextkennwort zuordnen. Die CrackStation -Website bietet beispielsweise eine massive Datenbank zum Knacken von Hashes zu Passwörtern ohne Salzen. Die Regenbogentische handeln jedoch, um Hashes mit einer großen Menge an Stauraum zu knacken.
Der Vorteil von Regenbogentabellen gegen Brute-Forcing ist eine einfache Suche und Vergleich des Betriebs im Gegensatz zu den automatisierten Versuchsversuchen mit Versuch und Erreger mit einem Problem der Hash-Berechnung. Darüber hinaus erfordert es keine genaue Passwortübereinstimmung, dh wenn der Hash gegen Passwort/Phrase übereinstimmt, ermöglicht das System eine Authentifizierung.
Johannes der Ripper
John ist ein leistungsstarkes und vielseitiges Werkzeug, das das Hashes hilft. Es ähnelt einem automatisierten Wörterbuchangriff, bei dem eine WordList oder ein Wörterbuch verwendet wird, um den Hash zu berechnen und zu vergleichen. Daher ermöglicht es Brute Kraft auf einer Reihe von Hash -Modi. Ein Beispiel für die WordList ist ein Rockyou.TXT -Datei, die Passwörter aus einem Verstoß gegen das Rockyou enthält.com Website. Die WordList ist bei Github Seclists unter verfügbar /Passwörter/durchgesickerte Datenabasen.
Der einfachste Weg, um den Hash zu knacken, besteht darin, die zu verwenden John Befehl mit der Formatoption, um den Hash -Typ, den Pfad zur WordList und die Datei mit dem Hash -Wert anzugeben. In Kali Linux, dem Weg zum Rouckyou.TXT -Datei ist /usr/share/wordlists.
Ubuntu@Ubuntu: ~ $ John -Format = -Wortlist =/usr/sharle/wordlists/rockyou.txt Hash.txtPass den Hash
Pass-the-Hash ist ein Diebstahl, der das Potenzial für horizontale Eskalation hat. Obwohl der Angriff auf Linux/Unix -Systemen auftreten kann, ist er in Windows häufiger vorkommt. Windows authentifiziert einen legitimen Benutzer, indem er den Hash des eingegebenen Kennworts entspricht, was statisch ist und sich nur ändert, wenn sich das Kennwort ändert. Außerdem sind Passwörter an verschiedenen Stellen in Windows verfügbar, z.
Daher manipulieren die Angreifer das Herausforderungs- und Antwortmodell des NTLM -Sicherheitsprotokolls, das es ihnen ermöglicht, sich als gültige Benutzer zu authentifizieren. Der Angreifer entpackt die Hashes eines Zielsystems und verwendet das "Pass-the-Hash" -Tool, um sich als authentischer Benutzer auszugeben. Daher muss der Angreifer das Kennwort nicht eingeben oder bruten oder den Hash-Wert umgekehrt. Weitere Informationen zum Angriff finden Sie hier.
Geburtstagsangriff
Der Angriff gehört zur Klasse des Brute-Force-Angriffs und basiert auf einem Geburtstagsparadox in der Wahrscheinlichkeitstheorie. Es verwendet das Geburtstagsproblem, um zwei verschiedene Nachrichten mit demselben kryptografischen Hash -Protokoll zu senden, um eine Kollision zu verursachen. Der Angriff zielt im Allgemeinen darauf ab, die Kommunikation zu manipulieren. Weitere Details zum Geburtstagsangriff finden Sie hier.
Hashes aufführen
Es gibt verschiedene Möglichkeiten, sich vor Angriffen auf Hashes zu schützen und sie gegen kryptografische Hash -Funktionen zu beschränken.
Gesalzene Hashes
Salben ist das Hinzufügen von zufällig generierten Daten (Salz) zur Eingabe einer Hash -Funktion. Der Prozess schützt vor Regenbogentischangriffen. Benutzer können den Salzwert zu Beginn oder am Ende des Kennworts einbeziehen, bevor ein Hash erstellt wird, das unterschiedliche Ausgänge generiert, auch wenn die Kennwörter ähnlich sind. Außerdem kann ein Benutzer das Salz öffentlich halten.
Keyed Hashes
HMAC ist ein Beispiel für Keyed -Hashes, das kryptografische Schlüssel und Hash -Funktionen verwendet. Es hilft gleichzeitig Vertraulichkeit und Integrität von Informationen.
Adaptive Hash -Funktion
Adaptive Hash -Funktionen sollen ihre innere Arbeit wiederholen, da der Name darauf hindeutet, dass der Benutzer die Anzahl der Iterationen anpassen kann. Die Taste-Struding ist eine Technik, die einen schwachen Schlüssel als Eingabe einnimmt, verarbeitet sie und iteriert den Prozess, um einen leistungsstarken großen Taste auszugeben. Der Prozess kann die Schlüsselgröße um bis zu 128 Bit erhöhen, was für den Brute-Force-Angriff schwierig ist. PBKDF2 und BCrypt sind Beispiele für adaptive Hash -Funktionen.
Abschluss
Der Artikel bietet einen umfangreichen Überblick über kryptografische Hash -Protokolle. Es zeigt, wie die Dateiintegrität überprüft wird, und gibt einen Überblick darüber, wie es möglich ist, Passwort -Hashes über das Johannes -The Ripper -Tool zu knacken. Wir diskutieren auch eine Reihe von Angriffen und Maßnahmen zur Erzeugung von ungekrönbaren Hashes über Salz-, Key -Hashes- und adaptive Hash -Funktionen.