Hashing-Algorithmen

Hashing-Algorithmen sind mathematische Funktionen, die Eingabedaten beliebiger Größe in eine Ausgabe fester Größe (Hash) umwandeln, die für Datenintegrität, Passwortspeicherung und Blockchain-Konsens verwendet wird.

Hashing-Algorithmen sind grundlegende kryptografische Primitive, die eine beliebige Eingabe nehmen und eine Ausgabe fester Länge erzeugen, die Hash oder Digest genannt wird. Sie sind so konzipiert, dass sie deterministisch sind (dieselbe Eingabe erzeugt immer dieselbe Ausgabe), schnell zu berechnen und nicht umkehrbar sind (Einwegfunktion).

Kryptografische Hash-Funktionen müssen zusätzliche Eigenschaften erfüllen: Kollisionsresistenz (schwer, zwei Eingaben mit demselben Hash zu finden), Urbildresistenz (schwer, die Eingabe aus dem Hash zu finden) und Lawineneffekt (kleine Eingabeänderungen verursachen große Ausgabeänderungen).

Zu den wichtigsten Algorithmen gehören: SHA-256 (Bitcoin, weit verbreitet), Keccak-256 (Ethereum), SHA-3 (NIST-Standard), Blake2/Blake3 (schnell, sicher) und Poseidon (ZK-freundlich). Verschiedene Algorithmen bieten Kompromisse hinsichtlich Sicherheit, Geschwindigkeit und Eignung für bestimmte Anwendungen wie Zero-Knowledge-Proofs.

Blockchain-Anwendungen umfassen: Proof-of-Work-Mining, Merkle-Bäume für Datenintegrität, Adressgenerierung, Transaktions-IDs und Commitment-Schemata. Das Verständnis von Hashing ist für die Sicherheit und Entwicklung von Blockchains unerlässlich.

        graph LR
  Center["Hashing-Algorithmen"]:::main
  Pre_cryptography["cryptography"]:::pre --> Center
  click Pre_cryptography "/terms/cryptography"
  Pre_mathematics["mathematics"]:::pre --> Center
  click Pre_mathematics "/terms/mathematics"
  Rel_proof_of_work["proof-of-work"]:::related -.-> Center
  click Rel_proof_of_work "/terms/proof-of-work"
  Rel_digital_signatures["digital-signatures"]:::related -.-> Center
  click Rel_digital_signatures "/terms/digital-signatures"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Erkläre es wie einem 5-Jährigen

Generated ELI5 content

🤓 Expert Deep Dive

Generated expert content

❓ Häufig gestellte Fragen

Warum kann man einen Hash nicht umkehren, um die ursprüngliche Eingabe zu erhalten?

Hash-Funktionen komprimieren beliebige Mengen an Eingaben in eine Ausgabe fester Größe, sodass viele mögliche Eingaben auf jeden Hash abgebildet werden (Informationen gehen verloren). Sie sind auch mit einer mathematischen Komplexität entworfen, die eine Umkehrung rechnerisch unmöglich macht. Dies wird als Urbildresistenz bezeichnet.

Welchen Hashing-Algorithmus verwendet Bitcoin?

Bitcoin verwendet SHA-256 (SHA-256d, eigentlich doppeltes SHA-256) für Proof-of-Work-Mining und Transaktions-Hashing sowie RIPEMD-160 kombiniert mit SHA-256 für die Adressgenerierung. Diese Entscheidungen gleichen Sicherheit, Leistung und Beständigkeit gegen bekannte Angriffe aus.

Was macht eine Hash-Funktion 'ZK-freundlich'?

ZK-freundliche Hash-Funktionen wie Poseidon und Pedersen sind so konzipiert, dass sie effizient sind, wenn sie innerhalb von Zero-Knowledge-Proof-Schaltungen verwendet werden. Herkömmliche Hashes wie SHA-256 sind in ZK-Proofs teuer, da sie bitweise Operationen verwenden, die kostspielig zu beweisen sind. ZK-freundliche Hashes verwenden arithmetische Operationen, die in den Beweissystemen nativ sind.

🔗 Verwandte Begriffe

Voraussetzungen:

📚 Quellen