<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Hash-Baum</id>
	<title>Hash-Baum - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Hash-Baum"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Hash-Baum&amp;action=history"/>
	<updated>2026-05-28T11:51:19Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Hash-Baum&amp;diff=2228493&amp;oldid=prev</id>
		<title>~2026-10671-00: /* Funktionsweise */ Grammatik: &quot;deren Hash-Werte den Kindern … des … Hash-Baumes entsprechen&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Hash-Baum&amp;diff=2228493&amp;oldid=prev"/>
		<updated>2026-03-17T14:00:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Funktionsweise: &lt;/span&gt; Grammatik: &amp;quot;deren Hash-Werte den Kindern … des … Hash-Baumes entsprechen&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Datei:Hash Tree.svg|mini|Ein binärer Hash-Baum]]&lt;br /&gt;
&lt;br /&gt;
Ein &amp;#039;&amp;#039;&amp;#039;Hash-Baum&amp;#039;&amp;#039;&amp;#039; ({{enS|&amp;#039;&amp;#039;&amp;#039;hash tree&amp;#039;&amp;#039;&amp;#039;}} oder {{lang|en|&amp;#039;&amp;#039;&amp;#039;Merkle tree&amp;#039;&amp;#039;&amp;#039;}}, nach dem Wissenschaftler [[Ralph Merkle]]) ist eine [[Datenstruktur]] in der [[Kryptographie]] und [[Informatik]]. Ein Hash-Baum ist ein [[Baum (Datenstruktur)|Baum]] aus [[Hashfunktion|Hashwerten]] von [[Datenblock|Datenblöcken]], beispielsweise von einer [[Datei]]. Hash-Bäume sind eine Erweiterung von [[Hashliste|Hash-Listen]] und dienen gleichermaßen dazu, die [[Integrität (Informationssicherheit)|Integrität]] von Daten sicherzustellen. Wenn sie die [[Tiger (Hashfunktion)|Tiger]]-Hashfunktion als Grundlage verwenden, so werden sie als &amp;#039;&amp;#039;&amp;#039;Tiger Trees&amp;#039;&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;&amp;#039;Tiger Tree Hashes&amp;#039;&amp;#039;&amp;#039; bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
Hash-Bäume wurden 1979 von [[Ralph Merkle]] erfunden.&amp;lt;ref&amp;gt;R. C. Merkle: &amp;#039;&amp;#039;A digital signature based on a conventional encryption function&amp;#039;&amp;#039;, Crypto ’87&amp;lt;/ref&amp;gt; Der ursprüngliche Zweck war die effiziente Handhabung vieler [[Lamport-Einmal-Signaturverfahren|Lamport-Einmalsignaturen]], die zu den [[Post-Quanten-Kryptographie|quantensicheren]] Verfahren zählen. Jedoch kann ein einzelner Lamport-Schlüssel nur verwendet werden, um eine einzige Nachricht zu signieren. In Kombination mit Hash-Bäumen kann jedoch ein Lamport-Schlüssel für viele Nachrichten verwendet werden, was im [[Merkle-Signatur]]verfahren realisiert wird.&lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
Neben Signaturen können Hash-Bäume verwendet werden, um jegliche Art von Daten, die gespeichert und ausgetauscht werden, vor Veränderungen zu schützen. Die Hauptanwendung ist derzeit die Sicherstellung in [[Peer-to-Peer|P2P-Netzwerken]], dass [[Datenblock|Datenblöcke]], die von anderen Peers empfangen werden, unbeschädigt und unverändert sind. Es gibt Vorschläge, Hash-Bäume beim [[Trusted Computing]] einzusetzen. [[Sun Microsystems]] verwendet sie im [[ZFS (Dateisystem)|ZFS]].&amp;lt;ref&amp;gt;{{Webarchiv |url=http://blogs.sun.com/bonwick/entry/zfs_end_to_end_data |wayback=20101012070122 |text=&amp;#039;&amp;#039;ZFS End-to-End Data Integrity.&amp;#039;&amp;#039;}} In: &amp;#039;&amp;#039;Jeff Bonwick’s Blog&amp;#039;&amp;#039;&amp;lt;/ref&amp;gt; Hash-Bäume werden auch bei [[Google Wave]],&amp;lt;ref&amp;gt;{{Webarchiv |url=http://www.waveprotocol.org/protocol/whitepapers/wave-protocol-verification |wayback=20101112071410 |text=&amp;#039;&amp;#039;Wave Protocol Verification Paper.&amp;#039;&amp;#039;}} Google Wave Federation Protocol&amp;lt;/ref&amp;gt; Apples Signed System Volume und der [[Online-Datensicherung]] [[Tarsnap]] eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Bekannte Implementationen von Hash-Bäumen sind die [[Blockchain]] der [[Kryptowährung]] [[Bitcoin]],&amp;lt;ref&amp;gt;{{Internetquelle |autor=Satoshi Nakamoto |url=https://bitcoin.org/files/bitcoin-paper/bitcoin_de.pdf |titel=Bitcoin: Ein elektronisches Peer-to-Peer-Cash-System |titelerg=(Übersetzung des Original-Papers von Daniel Deckner) |format=PDF; 323&amp;amp;nbsp;kB |werk=bitcoin.org |hrsg= |datum= |abruf=2024-03-11 |sprache=de}}&amp;lt;/ref&amp;gt; Apples „Signed System Volume“&amp;lt;ref&amp;gt;{{Internetquelle |url=https://support.apple.com/de-de/guide/security/secd698747c9/web |titel=Sicherheit des Signed System Volume bei macOS |sprache=de |abruf=2022-01-09}}&amp;lt;/ref&amp;gt; sowie die [[Versionsverwaltung]] [[Git]].&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
Ein Hash-Baum ist ein [[Baum (Graphentheorie)|Baum]] von Hash-Werten, wobei die [[Blatt (Graphentheorie)|Blätter]] Hash-Werte von Datenblöcken sind, beispielsweise einer Datei. [[Knoten (Graphentheorie)|Knoten]] weiter oben im Baum sind Hash-Werte ihrer Kinder. Die meisten Implementierungen benutzen einen [[Binärbaum]] (jeder Knoten besitzt höchstens zwei Kindknoten), jedoch kann genauso gut ein höherer [[Ausgangsgrad]] verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Normalerweise wird eine [[kryptographische Hashfunktion]] wie [[Secure Hash Algorithm|SHA-1]], [[Whirlpool (Algorithmus)|Whirlpool]] oder Tiger verwendet. Soll der Hash-Baum lediglich gegen unbeabsichtigte Beschädigungen schützen, so kann eine (kryptografisch unsichere) [[Prüfsumme]] wie [[Zyklische Redundanzprüfung|CRC]] verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Wurzel des Hash-Baums wird als &amp;#039;&amp;#039;Top-Hash&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Root-Hash&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;Master-Hash&amp;#039;&amp;#039; bezeichnet. Vor dem Herunterladen einer Datei in einem P2P-Netzwerk wird meist der Top-Hash von einer vertrauenswürdigen Quelle bezogen, beispielsweise einem Freund oder einer Website mit guter Bewertung. Liegt der Top-Hash vor, so kann der restliche Hash-Baum auch von einer nicht vertrauenswürdigen Quelle bezogen werden, also auch von jedem Peer eines P2P-Netzwerks. Er kann dann gegen den vertrauenswürdigen Top-Hash geprüft und gegebenenfalls abgelehnt werden.&lt;br /&gt;
&lt;br /&gt;
Der Hauptunterschied zu einer [[Hashliste|Hash-Liste]] ist, dass jeder Zweig des Hash-Baums einzeln heruntergeladen und sofort auf Integrität geprüft werden kann, selbst wenn der komplette Baum noch nicht verfügbar ist. So kann zum Beispiel die Integrität des Datenblocks L2 im Bild überprüft werden, sobald der Baum die Hashwerte 0-0 und 1 enthält. Dazu wird zuerst aus dem Datenblock L2 der &amp;#039;&amp;#039;Hash 0-1&amp;#039;&amp;#039; berechnet und mit &amp;#039;&amp;#039;Hash 0-0&amp;#039;&amp;#039; verknüpft, um &amp;#039;&amp;#039;Hash 0&amp;#039;&amp;#039; zu erhalten. &amp;#039;&amp;#039;Hash 0&amp;#039;&amp;#039; wird schlussendlich mit &amp;#039;&amp;#039;Hash 1&amp;#039;&amp;#039; verknüpft und das Ergebnis mit dem (vertrauenswürdigen) &amp;#039;&amp;#039;Top-Hash&amp;#039;&amp;#039; verglichen. Es ist effizienter, Dateien zwecks Übertragung in sehr kleine Blöcke aufzuspalten, sodass bei Beschädigungen nur kleine Teile neu geladen werden müssen. Dadurch entstehen bei sehr großen Dateien allerdings auch relativ große Hash-Listen oder Hash-Bäume. Werden Bäume verwendet, so können aber einzelne Zweige schnell geladen und auf Integrität geprüft werden, sodass das Herunterladen der eigentlichen Datei beginnen kann. Ist der ganze Baum verfügbar, so kann ein fehlerhafter Datenblock in einer Datenintegritätsprüfung in &amp;lt;math&amp;gt;\mathcal{O}(\operatorname{ld}(n))&amp;lt;/math&amp;gt; ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
Da im Top-Hash keine Informationen über die Tiefe des Baumes enthalten sind, lassen sich zweite [[Preimage-Angriff|Urbild-Angriffe]] durchführen, indem ein Hash-Baum mit Datenblöcken erzeugt wird, deren Hash-Werte den Kindern des Top-Hashes des anzugreifenden Hash-Baumes entsprechen. So kann also ein Angriff auf den Hash-Baum im Bild ausgeführt werden, indem zwei Datenblöcke erzeugt werden, deren Hash-Werte jeweils &amp;#039;&amp;#039;Hash 0&amp;#039;&amp;#039; und &amp;#039;&amp;#039;Hash 1&amp;#039;&amp;#039; entsprechen, um so den gleichen Top-Hash zu erzeugen.&lt;br /&gt;
&lt;br /&gt;
== Tiger-Tree-Hash ==&lt;br /&gt;
Der &amp;#039;&amp;#039;&amp;#039;Tiger-Tree-Hash&amp;#039;&amp;#039;&amp;#039; ist ein weit verbreiteter [[Binärer Baum|binärer]] Hash-Baum, der auf der kryptographischen Hashfunktion [[Tiger (Hashfunktion)|Tiger]] basiert. Er wird häufig dazu genutzt, die Integrität großer Dateien bei oder nach der Übertragung zu überprüfen. Der Tiger-Tree-Hash hasht auf der Blattebene typischerweise je 1024 Byte große Datenblöcke aus der Datei. Der Roothash ist dann – mit hoher Wahrscheinlichkeit – ein eindeutiger Identifikator für die Datei. Liegt dem Client der vollständige Tiger-Hashbaum vor, kann er einerseits verifizieren, ob die einzelnen Dateiblöcke korrekt sind, sowie andererseits gleichzeitig überprüfen, ob der Hashbaum selbst korrekt ist.&lt;br /&gt;
&lt;br /&gt;
Tiger-Tree-Hashes werden von den [[Filesharing]]-Protokollen [[Gnutella]], [[Gnutella2]] und [[Direct Connect]] verwendet, sowie von Filesharing-Anwendungen wie [[Phex]], [[BearShare]], [[LimeWire]], [[Shareaza]] und [[DC++]].&amp;lt;ref&amp;gt;{{Internetquelle |url=https://dcplusplus.sourceforge.io/features.html |titel=Features |titelerg=Funktionen von D++ |werk=dcplusplus.sourceforge.io |abruf=2024-03-11 |sprache=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Textdarstellung werden die Werte üblicherweise als [[Base32]] kodiert angegeben, entweder direkt oder als [[Uniform Resource Name]], z.&amp;amp;nbsp;B. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;urn:tree:tiger:LWPNACQDBZRYXW3VHJVCJ64QBZNGHOHHHZWCLNQ&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; für eine 0-Byte-Datei.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* Gil Schmidt: [https://www.codeproject.com/Articles/9336/ThexCS-TTH-Tiger-Tree-Hash-Maker-in-Csharp Tiger Tree Hash (TTH) Quelltext in C#]&lt;br /&gt;
* [https://sourceforge.net/projects/tigertree/ Tiger Tree Hash (TTH) Implementierung in C und Java]&lt;br /&gt;
* [https://rhash.sourceforge.io/ RHash], ein [[Open Source]] Kommandozeilentool, welches TTHs und [[Magnet-Link]]s mit TTHs berechnen kann.&lt;br /&gt;
&lt;br /&gt;
== Quellen ==&lt;br /&gt;
* {{Patent|Land=US|V-Nr=4309569|Titel=Method of providing digital signatures|V-Datum=1982-01-05 |Erfinder=Ralph C. Merkle|Kommentar = Erklärt sowohl die Struktur von Hash-Bäumen als auch deren Verwendung für viele Einmalsignaturen}}&lt;br /&gt;
* {{Webarchiv |url=http://www.open-content.net/specs/draft-jchapweske-thex-02.html |wayback=20080316033726 |text=Tree Hash EXchange format (THEX)}} – Eine detaillierte Beschreibung von Tiger-Trees.&lt;br /&gt;
* {{Webarchiv |url=http://www.rsasecurity.com/rsalabs/node.asp?id=2003 |wayback=20061206235144 |text=Efficient Use of Merkle Trees}} – Erklärung von [[RSA Security]] zum ursprünglichen Zweck von Merkle-Bäumen: der Handhabung vieler Lamport-Einmalsignaturen.&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Hash]]&lt;br /&gt;
[[Kategorie:Datenstruktur]]&lt;/div&gt;</summary>
		<author><name>~2026-10671-00</name></author>
	</entry>
</feed>