Teresa
Aus ProgrammingWiki
Inhaltsverzeichnis |
Hashfunktionen
- Definition
Merksatz: Eine Hashfunktion verwandelt Daten in eine eindeutige Zeichenkette fester Länge. Hash ist wie ein digitaler Fingerabdruck: kurz, einzigartig, und verrät nichts über das Original.
Eigenschaften
Determinismus: Die gleiche Eingabe liefert immer den gleichen Hashwert. Beispiel: „Hallo“ → immer e4d909c2..., egal wann oder wo.Kollisionresistenz: Es sollte extrem schwierig sein, zwei unterschiedliche Eingaben zu finden, die den gleichen Hashwert erzeugen. Beispiel: „Hallo“ ≠ „Hallo!“ → komplett unterschiedliche Hashwerte.
Einwegfunktion: Man kann den ursprünglichen Input nicht aus dem Hashwert zurückrechnen. Beispiel: Aus e4d909c2... lässt sich nicht auf „Hallo“ zurückschließen.
Effizienz: Die Hashfunktion sollte schnell berechnet werden können – auch bei großen Datenmengen.
Surjektivität: Kein Ergebniswert (Hashwert) soll unmöglich sein, jedes Ergebnis (jeder Hashwert im definierten Wertebereich) soll tatsächlich vorkommen können.
Anwendungen
Kryptographie
Digitale Unterschrift
Die digitale Signatur stützt auf den Gebrauch eines Hashing-Algorithmus, kombiniert mit einem asymmetrischen Verschlüsselungsalgorithmus (z.B. RSA). So wird ein Bericht unterschrieben:
- Der Absender berechnet erst den "Digest"-Wert (Hash 1) des Originalberichts mithilfe eines Hashing-Algorithmus.
- Anschließend verschlüsselt er diesen Digest-Wert über asymmetrische Verschlüsselung durch Verwendung eines persönlichen Schlüssels.
- Schließlich fügt er diesem letzten Ergebnis seine Identifikationsangaben hinzu, verfasst in einem Zertifikat. Er versendet alles (unverschlüsselten Bericht, verschlüsselten Digest und Zertifikat) an den Empfänger.
Der Empfänger des Berichts kann diese Technik umgekehrt anwenden, um die Gültigkeit der Signatur zu überprüfen:
- Er berechnet selbst den Digest-Wert (Hash 1) des empfangenen Berichts.
- Er holt das Zertifikat ab, um die Identität des vermutlichen Absenders und seinen öffentlichen Schlüssel zu bestimmen; er benutzt diesen öffentlichen Schlüssel, um den Digest (Hash 2) mittels desselben asymmetrischen Verschlüsselungsalgorithmus wie der Absender zu benutzen.
- Er vergleicht den Digest-Wert (Hash 1), den er berechnet hat, mit dem der Signatur (Hash 2): Die Übereinstimmung zwischen den Werten (Hash 1 und Hash 2) der zwei Digest-Werte garantiert die Echtheit des Berichts.
Passwort-Hashing
Viele Unternehmen verwenden Passwort-Hashing, um Passwörter sicher zu speichern und damit diese Bedenken zu erfüllen und die Sicherheit zu erhöhen. Wenn ein Benutzer ein Passwort festlegt, verwendet eine Passwort-Hashing-Anwendung einen Hashing-Algorithmus, um eine einzigartige Zeichenfolge zu generieren und in der Datenbank zu speichern. Die Größe dieser Zeichenfolge wird in „Bits“ (kurz für binäre Ziffern) gemessen, was die kleinste Dateneinheit ist, die ein Computer verarbeiten und speichern kann.
Wenn der Benutzer versucht, sich anzumelden, wendet die Anwendung denselben Hashing-Algorithmus auf das eingegebene Passwort an und vergleicht die resultierende Zeichenfolge mit dem in der Datenbank gespeicherten Wert, um den Benutzer zu authentifizieren.Datenstrukturen & Algorithmen
Hash-Tabellen
Eine Hashtabelle ist eine dynamische Datenstruktur, die verwendet wird, um Schlüssel (engl. keys) und ihre dazugehörigen Werte (engl. values) zu speichern und zu verwalten.
Blockchain
Eine Blockchain ist eine dezentrale Datenbank, die Transaktionen in sogenannten Blöcken speichert. Die Blöcke sind miteinander verknüpft und bilden eine Kette, daher der Name Blockchain. Die Technologie ist vor Manipulationen geschützt und kann für die Verfolgung von Vermögenswerten eingesetzt werden.Ein Blockchain-Hash ist der digitale Fingerabdruck eines Dokuments oder Datensatzes . Er dient dazu, zu überprüfen, ob die Informationen manipuliert oder verändert wurden. Ein Blockchain-Hash wird durch eine kryptografische Funktion generiert, die einen Eingabeblock mit einem zuvor generierten Hashwert vergleicht.
Prüfsummen
Der Begriff Prüfsumme wird manchmal auch als Checksumme, Hash-Summe oder Hash-Wert bezeichnet. Prüfsummen geben der Gegenstelle Informationen über die Übertragung, um sicherzustellen, dass alle Daten vollständig übertragen werden.
Der Prüfsummenwert selbst besteht in der Regel aus einer langen Reihe von Buchstaben und Zahlen, die als eine Art Fingerabdruck für eine Datei oder eine Reihe von Dateien dienen und die Anzahl der in der Übertragung enthaltenen Bits angeben.Schwächen und Angriffe
Kollisionen
Die Abbildung zeigt den Prozess einer Hashfunktion, bei dem vier verschiedene Passwörter jeweils in einen Hashwert umgewandelt werden.
Eine Kollision tritt auf, wenn zwei verschiedene Eingaben (Keys) denselben Hashwert erzeugen.
Das passiert, weil der Hashwert eine begrenzte Anzahl an Ausgaben hat, aber es unendlich viele mögliche Eingabewerte gibt.
Probleme sind z.B., wenn zwei Schlüssel denselben Platz beanspruchen und man sie irgendwie unterscheiden muss, zu viele Kollisionen können die Zugriffsgeschwindigkeit deutlich verschlechtern oder Angreifer könnten absichtlich Daten mit demselben Hashwert erzeugen.
Kollisionen lassen sich nicht vollständig vermeiden, aber mit einer guten Hashfunktion und ausreichend großem Speicher stark minimieren.
Preimage- und Second-Preimage-Angriffe
Ein Preimage-Angriff versucht, für einen gegebenen Hashwert den ursprünglichen Eingabewert (Nachricht) zu finden. Bei einem Second-Preimage-Angriff ist bereits eine Nachricht bekannt und der Angreifer will eine zweite, andere Nachricht finden, die denselben Hashwert ergibt. Wenn jemand ein Dokument hasht und unterschreibt, wäre ein erfolgreicher Second-Preimage-Angriff verheerend – man könnte ein anderes Dokument mit derselben Signatur erzeugen. Wenn Hashfunktionen also gegen diese Angriffe nicht resistent sind, gelten sie als unsicher.Rainbow Tables & Salting
Rainbow Tables sind vorgefertigte Tabellen mit Millionen von möglichen Passwörtern und ihren zugehörigen Hashwerten. das ist Ziel ist es einen Hashwert zurück in das ursprüngliche Passwort umzuwandeln – ohne zu raten, weil man schon eine Tabelle mit fertigen Antworten hat. Dies geht extrem schnell, weil die Rechenarbeit vorher erledigt wurde. Besonders gefährlich ist es bei häufigen, kurzen oder Standardpasswörtern.Um dagegen vorzugehen gibt es das sogenannte Salting - eine Technik, um Rainbow Tables nutzlos zu machen. Man fügt jedem Passwort einen zufälligen Zusatz (Salt) hinzu, bevor es gehasht wird. Vorteile sind also, dass Rainbow Table-Angriffe verhindert werden, selbst wenn zwei Personen dasselbe Passwort nutzen, sie unterschiedliche Hashes haben und Salts werden pro Benutzer individuell und zufällig erzeugt.
Quellen
Soziale Sicherheit Unternehmen


