<?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=Merkle-Signatur</id>
	<title>Merkle-Signatur - 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=Merkle-Signatur"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Merkle-Signatur&amp;action=history"/>
	<updated>2026-06-06T10:05:23Z</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=Merkle-Signatur&amp;diff=2232105&amp;oldid=prev</id>
		<title>imported&gt;Birkho am 11. November 2024 um 12:43 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Merkle-Signatur&amp;diff=2232105&amp;oldid=prev"/>
		<updated>2024-11-11T12:43:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Die &amp;#039;&amp;#039;&amp;#039;Merkle-Signatur&amp;#039;&amp;#039;&amp;#039; ist ein [[Digitale Signatur|digitales Signaturverfahren]], das auf [[Hash-Baum|Merkle-Bäumen]] sowie Einmalsignaturen wie etwa den [[Lamport-Einmal-Signaturverfahren|Lamport-Einmalsignaturen]] basiert. Es wurde von [[Ralph Merkle]] in den späten 1970er Jahren entwickelt und stellt eine Alternative zu traditionellen digitalen Signaturen wie dem [[Digital Signature Algorithm]] oder auf [[RSA-Kryptosystem|RSA]] basierenden Signaturen dar. Im Gegensatz zu diesen ist es resistent gegen Angriffe durch [[Quantencomputer]], da seine Sicherheit nur von der Existenz sicherer [[Hashfunktion]]en abhängt.&lt;br /&gt;
&lt;br /&gt;
== Idee ==&lt;br /&gt;
Ein Problem von Einmalsignaturen, wie der Lamport-Signatur, ist die Übertragung des öffentlichen Schlüssels. Da jeder Schlüssel nur genau einmal verwendet werden kann, kommt eine größere Datenmenge zusammen, die zuverlässig an den Empfänger weitergegeben werden muss.&lt;br /&gt;
&lt;br /&gt;
Das Merkle-Signaturverfahren löst dieses Problem, indem das gesamte (öffentliche) Schlüsselmaterial von &amp;lt;math&amp;gt;2^n&amp;lt;/math&amp;gt; Einmalsignaturen in einem mehrstufigen Hash-Verfahren zu einem einzigen Hashwert &amp;lt;math&amp;gt;pub&amp;lt;/math&amp;gt; zusammengefasst wird. Als öffentlicher Schlüssel braucht nur &amp;lt;math&amp;gt;pub&amp;lt;/math&amp;gt; veröffentlicht zu werden, anschließend lassen sich mit ihm &amp;lt;math&amp;gt;2^n&amp;lt;/math&amp;gt; Nachrichten signieren.&lt;br /&gt;
&lt;br /&gt;
Die Signatur einer Nachricht besteht dann aus zwei Teilen:&lt;br /&gt;
&lt;br /&gt;
* Einem der &amp;lt;math&amp;gt;2^n&amp;lt;/math&amp;gt; öffentlichen Schlüssel, sowie die mit dem entsprechenden privaten Schlüssel signierte Nachricht. Der Empfänger kann verifizieren, dass der Sender tatsächlich in Besitz des privaten Schlüssels war.&lt;br /&gt;
* Einem Nachweis, dass es sich bei dem öffentlichen Schlüssel um einen der &amp;lt;math&amp;gt;2^n&amp;lt;/math&amp;gt; Schlüssel handelt, aus denen der Hashwert &amp;lt;math&amp;gt;pub&amp;lt;/math&amp;gt; berechnet wurde.&lt;br /&gt;
&lt;br /&gt;
== Schlüsselerzeugung ==&lt;br /&gt;
[[Datei:MerkleTree1.svg|mini|Merkle-Baum mit 8 Blättern]]&lt;br /&gt;
&lt;br /&gt;
Das Merkle-Signaturverfahren kann nur verwendet werden, um eine begrenzte Anzahl von Nachrichten mit einem öffentlichen Schlüssel &amp;lt;math&amp;gt;pub&amp;lt;/math&amp;gt; zu signieren. Die Anzahl möglicher Nachrichten entspricht einer Zweierpotenz und wird daher als &amp;lt;math&amp;gt;N=2^n&amp;lt;/math&amp;gt; bezeichnet.&lt;br /&gt;
&lt;br /&gt;
Der erste Schritt bei der Generierung des öffentlichen Schlüssels &amp;lt;math&amp;gt;pub&amp;lt;/math&amp;gt; ist die Generierung des privaten Schlüssels &amp;lt;math&amp;gt;X_i&amp;lt;/math&amp;gt; und des öffentlichen Schlüssels &amp;lt;math&amp;gt;Y_i&amp;lt;/math&amp;gt; von &amp;lt;math&amp;gt;2^n&amp;lt;/math&amp;gt; Einmalsignaturen. Für jeden öffentlichen Schlüssel &amp;lt;math&amp;gt;Y_i&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;1 \leq i \leq 2^n&amp;lt;/math&amp;gt; wird ein Hash-Wert &amp;lt;math&amp;gt;h_i=H(Y_i)&amp;lt;/math&amp;gt; berechnet. Mit diesen Hash-Werten &amp;lt;math&amp;gt;h_i&amp;lt;/math&amp;gt; wird ein [[Hash-Baum]] aufgebaut.&lt;br /&gt;
&lt;br /&gt;
Ein Knoten des Baums wird mit &amp;lt;math&amp;gt;a_{i,j}&amp;lt;/math&amp;gt; identifiziert, wobei &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; die Ebene des Knotens bezeichnet. Die Ebene eines Knotens ist über seinen Abstand zu den Blättern definiert. Somit hat ein Blatt die Ebene &amp;lt;math&amp;gt;i=0&amp;lt;/math&amp;gt; und die Wurzel die Ebene &amp;lt;math&amp;gt;i=n&amp;lt;/math&amp;gt;. Die Knoten jeder Ebene sind von links nach rechts durchnummeriert, sodass &amp;lt;math&amp;gt;a_{i,0}&amp;lt;/math&amp;gt; der Knoten ganz links auf Ebene &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; ist.&lt;br /&gt;
&lt;br /&gt;
Im Merkle-Baum sind die Hash-Werte &amp;lt;math&amp;gt;h_i&amp;lt;/math&amp;gt; die Blätter des Binärbaums, sodass &amp;lt;math&amp;gt;h_i=a_{0,i}&amp;lt;/math&amp;gt;. Jeder innere Knoten des Baums ist der Hash-Wert der [[Konkatenation (Formale Sprache)|Konkatenation]] seiner beiden Kinder. Beispielsweise ist &amp;lt;math&amp;gt;a_{1,0}=H(a_{0,0}||a_{0,1})&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;a_{2,0}=H(a_{1,0}||a_{1,1})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Auf diese Weise wird ein Baum mit &amp;lt;math&amp;gt;2^n&amp;lt;/math&amp;gt; Blättern und &amp;lt;math&amp;gt;2^{n+1}-1&amp;lt;/math&amp;gt; Knoten aufgebaut. Die Wurzel des Baums &amp;lt;math&amp;gt;a_{n,0}&amp;lt;/math&amp;gt; ist der öffentliche Schlüssel &amp;lt;math&amp;gt;pub&amp;lt;/math&amp;gt; des Merkle-Signaturverfahrens.&lt;br /&gt;
&lt;br /&gt;
== Signierung ==&lt;br /&gt;
[[Datei:MerkleTree2.svg|mini|Merkle-Baum mit Pfad A und Authentifizierungspfad für i=2]]&lt;br /&gt;
&lt;br /&gt;
Um eine Nachricht &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; mit dem Merkle-Signaturverfahren zu signieren, wird die Nachricht &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; zuerst mit einem Einmalsignaturverfahren signiert, wodurch die Signatur &amp;lt;math&amp;gt;sig&amp;#039;&amp;lt;/math&amp;gt; entsteht. Dazu wird eines der Schlüsselpaare aus privatem und öffentlichem Schlüssel &amp;lt;math&amp;gt;(X_i, Y_i,)&amp;lt;/math&amp;gt; verwendet.&lt;br /&gt;
&lt;br /&gt;
Das einem privaten Einmalschlüssel &amp;lt;math&amp;gt;X_i&amp;lt;/math&amp;gt; zugehörige Blatt des Hash-Baums ist &amp;lt;math&amp;gt;a_{0,i}=H(Y_i)&amp;lt;/math&amp;gt;. Der Pfad im Hash-Baum von &amp;lt;math&amp;gt;a_{0,i}&amp;lt;/math&amp;gt; zur Wurzel wird mit &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; bezeichnet. Der Pfad &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; besteht aus &amp;lt;math&amp;gt;n+1&amp;lt;/math&amp;gt; Knoten, &amp;lt;math&amp;gt;A_0, \ldots, A_n&amp;lt;/math&amp;gt;, wobei &amp;lt;math&amp;gt;A_0=a_{0,i}&amp;lt;/math&amp;gt; die Blätter sind und &amp;lt;math&amp;gt;A_n=a_{n,0}=pub&amp;lt;/math&amp;gt; die Wurzel des Baums ist. Um diesen Pfad &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; zu berechnen, wird jedes Kind der Knoten &amp;lt;math&amp;gt;A_{1}, \ldots, A_{n}&amp;lt;/math&amp;gt; benötigt. Es ist bekannt, dass &amp;lt;math&amp;gt;A_i&amp;lt;/math&amp;gt; ein Kind von &amp;lt;math&amp;gt;A_{i+1}&amp;lt;/math&amp;gt; ist. Um den nächsten Knoten &amp;lt;math&amp;gt;A_{i+1}&amp;lt;/math&amp;gt; des Pfades &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; zu berechnen, müssen beide Kinder von &amp;lt;math&amp;gt;A_{i+1}&amp;lt;/math&amp;gt; bekannt sein. Daher wird der Bruder von &amp;lt;math&amp;gt;A_i&amp;lt;/math&amp;gt; benötigt. Dieser Knoten wird mit &amp;lt;math&amp;gt;auth_i&amp;lt;/math&amp;gt; bezeichnet, sodass &amp;lt;math&amp;gt;A_{i+1}=H(A_i||auth_i)&amp;lt;/math&amp;gt;. Deswegen werden &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; Knoten &amp;lt;math&amp;gt;auth_0,\ldots,auth_{n-1}&amp;lt;/math&amp;gt; benötigt, um jeden Knoten des Pfades &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; zu berechnen. Diese Knoten &amp;lt;math&amp;gt;auth_{0},\ldots, auth_{n-1}&amp;lt;/math&amp;gt; werden berechnet und gespeichert. Sie bilden zusammen mit einer Einmalsignatur &amp;lt;math&amp;gt;sig&amp;#039;&amp;lt;/math&amp;gt; von &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; die Signatur &amp;lt;math&amp;gt;sig=(sig&amp;#039;, auth_0, auth_1,\ldots, auth_{n-1})&amp;lt;/math&amp;gt; des Merkle-Signaturverfahrens.&lt;br /&gt;
&lt;br /&gt;
== Verifizierung ==&lt;br /&gt;
Der Empfänger kennt den öffentlichen Schlüssel &amp;lt;math&amp;gt;pub&amp;lt;/math&amp;gt;, die Nachricht &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;, und die Signatur &amp;lt;math&amp;gt;sig=(sig&amp;#039;, auth_0, auth_1, \ldots, auth_{n-1})&amp;lt;/math&amp;gt;. Zuerst verifiziert der Empfänger die Einmalsignatur &amp;lt;math&amp;gt;sig&amp;#039;&amp;lt;/math&amp;gt; der Nachricht &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;. Falls &amp;lt;math&amp;gt;sig&amp;#039;&amp;lt;/math&amp;gt; eine gültige Signatur von &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; ist, berechnet der Empfänger &amp;lt;math&amp;gt;A_0=H(Y_i)&amp;lt;/math&amp;gt;, indem er den Hash-Wert des öffentlichen Schlüssels der Einmalsignatur berechnet. Für &amp;lt;math&amp;gt;j=1,..,n-1&amp;lt;/math&amp;gt; werden die Knoten &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; des Pfades &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; berechnet, mit &amp;lt;math&amp;gt;A_j=H(a_{j-1}||b_{j-1})&amp;lt;/math&amp;gt;. Wenn &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; dem öffentlichen Schlüssel &amp;lt;math&amp;gt;pub&amp;lt;/math&amp;gt; des Merkle-Signaturverfahrens entspricht, so ist die Signatur gültig.&lt;br /&gt;
&lt;br /&gt;
== Weiterentwicklungen ==&lt;br /&gt;
Im Zuge der Suche nach [[Post-Quanten-Kryptographie|quantencomputerresistenten]] Signaturverfahren ist das Verfahren in der letzten Zeit wieder stärker in den Fokus gerückt. Inzwischen wurden verbesserte Varianten des Merkle-Signaturverfahrens veröffentlicht, u.&amp;amp;nbsp;a.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;XMSS&amp;#039;&amp;#039;&amp;#039; (eXtended Merkle Signature [[Scheme]]), das 2018 als &amp;lt;nowiki&amp;gt;RFC&amp;amp;nbsp;8391&amp;lt;/nowiki&amp;gt;&amp;lt;ref&amp;gt;{{RFC-Internet |RFC=8391 |Titel=XMSS: eXtended Merkle Signature Scheme |Datum=2018-09}}&amp;lt;/ref&amp;gt; standardisiert wurde&amp;lt;ref&amp;gt;{{Literatur |Autor=Johannes Buchmann, Erik Dahmen, Andreas Hülsing |Titel=XMSS – A Practical Forward Secure Signature Scheme Based on Minimal Security Assumptions |Sammelwerk=Post-Quantum Cryptography. PQCrypto 2011 |Reihe=Lecture Notes in Computer Science |BandReihe=7071 |Verlag=Springer |Ort=Berlin / Heidelberg |Datum=2011 |Seiten=117–129 |DOI=10.1007/978-3-642-25405-5_8}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;LMS&amp;#039;&amp;#039;&amp;#039; (Leighton-Micali Hash-Based Signatures), das 2019 als &amp;lt;nowiki&amp;gt;RFC&amp;amp;nbsp;8554&amp;lt;/nowiki&amp;gt; standardisiert wurde&amp;lt;ref name=&amp;quot;RFC8554&amp;quot; /&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SPHINCS&amp;#039;&amp;#039;&amp;#039; mit größeren Signaturen als XMSS, dafür aber zustandslos&amp;lt;ref&amp;gt;{{Literatur |Autor=Daniel J. Bernstein, Daira Hopwood, Andreas Hülsing, Tanja Lange, Ruben Niederhagen, Louiza Papachristodoulou, Michael Schneider, Peter Schwabe, Zooko Wilcox-O’Hearn |Hrsg=Elisabeth Oswald, Marc Fischlin |Titel=SPHINCS: practical stateless hash-based signatures |Sammelwerk=Advances in Cryptology – EUROCRYPT 2015 |Reihe=Lecture Notes in Computer Science |BandReihe=9056 |Verlag=Springer |Ort=Berlin / Heidelberg |Datum=2015 |ISBN=978-3-662-46799-2 |Seiten=368-397 |DOI=10.1007/978-3-662-46800-5_15}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Internetquelle |url=https://sphincs.cr.yp.to/ |titel=SPHINCS: Introduction |werk=sphincs.cr.yp.to |sprache=en |abruf=2019-01-25}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* G. Becker: &amp;#039;&amp;#039;Merkle Signature Schemes, Merkle Trees and Their Cryptanalysis&amp;#039;&amp;#039;. Seminar &amp;#039;Post Quantum Cryptology&amp;#039; an der [[Ruhr-Universität Bochum]].&lt;br /&gt;
* E. Dahmen, M. Dring, E. Klintsevich, J. Buchmann, L. C. Coronado Garca: [http://www.cdc.informatik.tu-darmstadt.de/reports/reports/BCDDK06.pdf &amp;#039;&amp;#039;CMSS – an improved merkle signature scheme&amp;#039;&amp;#039;.] (PDF; 264&amp;amp;nbsp;kB). Progress in Cryptology – Indocrypt 2006, 2006.&lt;br /&gt;
* E. Klintsevich, K. Okeya, C. Vuillaume, J. Buchmann, E. Dahmen: [http://www.cdc.informatik.tu-darmstadt.de/reports/reports/BDKOV07.pdf &amp;#039;&amp;#039;Merkle signatures with virtually unlimited signature capacity&amp;#039;&amp;#039;] (PDF; 179&amp;amp;nbsp;kB). 5th International Conference on Applied Cryptography and Network Security – ACNS07, 2007.&lt;br /&gt;
* Ralph Merkle: &amp;#039;&amp;#039;Secrecy, authentication and public key systems / A certified digital signature&amp;#039;&amp;#039;. Ph.D. dissertation, Dept. of Electrical Engineering, Stanford University, 1979; [http://www.merkle.com/papers/Thesis1979.pdf merkle.com] (PDF; 1,9&amp;amp;nbsp;MB)&lt;br /&gt;
* [[Silvio Micali]], M. Jakobsson, T. Leighton, M. Szydlo: &amp;#039;&amp;#039;Fractal merkle tree representation and traversal&amp;#039;&amp;#039;. RSA-CT 03, 2003.&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;RFC8554&amp;quot;&amp;gt;&lt;br /&gt;
{{RFC-Internet |RFC=8554 |Titel=Leighton-Micali Hash-Based Signatures |Datum=2019-04 |Autor=D. McGrew, M. Curcio, S. Fluhrer}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Signaturverfahren]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Birkho</name></author>
	</entry>
</feed>