<?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=HMAC</id>
	<title>HMAC - 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=HMAC"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=HMAC&amp;action=history"/>
	<updated>2026-05-27T23:34:12Z</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=HMAC&amp;diff=378164&amp;oldid=prev</id>
		<title>imported&gt;SchlurcherBot: Bot: http → https</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=HMAC&amp;diff=378164&amp;oldid=prev"/>
		<updated>2025-12-14T11:45:31Z</updated>

		<summary type="html">&lt;p&gt;Bot: http → https&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Ein &amp;#039;&amp;#039;&amp;#039;HMAC&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;hash-based message authentication code&amp;#039;&amp;#039; (Hash-basierter Nachrichtenauthentifizierungscode), manchmal erweitert als &amp;#039;&amp;#039;keyed-hash message authentication code&amp;#039;&amp;#039; (Schlüssel-Hash-Nachrichtenauthentifizierungscode)) ist ein [[Message Authentication Code]] (MAC), dessen Konstruktion auf einer [[Kryptologische Hash-Funktion|kryptografischen Hash-Funktion]], wie beispielsweise dem [[Secure Hash Algorithm]] (SHA), und einem geheimen [[Schlüssel (Kryptologie)|Schlüssel]] basiert.&amp;lt;ref&amp;gt;Stallings: &amp;#039;&amp;#039;Cryptography and Network Security. Principles and Practice.&amp;#039;&amp;#039; S.&amp;amp;nbsp;399–400.&amp;lt;/ref&amp;gt; HMACs werden in &amp;lt;nowiki&amp;gt;RFC&amp;amp;nbsp;2104&amp;lt;/nowiki&amp;gt;&amp;lt;ref name=&amp;quot;RFC2104&amp;quot; /&amp;gt; sowie im [[National Institute of Standards and Technology|NIST]] Standard FIPS 198 spezifiziert und in &amp;lt;nowiki&amp;gt;RFC&amp;amp;nbsp;4868&amp;lt;/nowiki&amp;gt;&amp;lt;ref&amp;gt;{{RFC-Internet |RFC=4868 |Titel=Using HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512 with IPsec |Datum=2007-05}}&amp;lt;/ref&amp;gt; für den Einsatz in [[IPsec]] erweitert. Zudem können sie beispielsweise in den Protokollen [[Transport Layer Security|TLS]]&amp;lt;ref name=&amp;quot;RFC5246&amp;quot; /&amp;gt; und [[Secure Shell|SSH]]&amp;lt;ref name=&amp;quot;RFC4253&amp;quot; /&amp;gt; eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== Konstruktion ==&lt;br /&gt;
Der HMAC wird aus der Nachricht &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; und einem [[Geheimer Schlüssel|geheimen Schlüssel]] &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; mittels der Hash-Funktion &amp;lt;math&amp;gt;\mathrm{H}&amp;lt;/math&amp;gt; nach &amp;lt;nowiki&amp;gt;RFC&amp;amp;nbsp;2104&amp;lt;/nowiki&amp;gt; wie folgt berechnet.&amp;lt;ref name=&amp;quot;RFC2104&amp;quot; /&amp;gt; &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; wird durch Anhängen von Null-Bytes (&amp;#039;&amp;#039;padding&amp;#039;&amp;#039;) auf die Blocklänge &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; der Hash-Funktion aufgefüllt;&amp;lt;ref name=&amp;quot;RFC2104&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;padding&amp;quot;&amp;gt;Im Sample Code im Appendix des &amp;lt;nowiki&amp;gt;RFC&amp;amp;nbsp;2104&amp;lt;/nowiki&amp;gt; wird für das inner pad „0x36“ und für das outer pad „0x5c“ verwandt&amp;lt;/ref&amp;gt; das sind 64 Byte (512 Bit) für viele Hash-Funktionen, z.&amp;amp;nbsp;B. für SHA-256. Für SHA3-256 oder SHAKE256 ist &amp;lt;math&amp;gt;B=136&amp;lt;/math&amp;gt; (1088 Bit). Falls die Länge von &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; größer als die Blocklänge der Hash-Funktion ist, wird &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; durch &amp;lt;math&amp;gt;\mathrm{H}(K)&amp;lt;/math&amp;gt; ersetzt.&amp;lt;ref name=&amp;quot;RFC2104&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;\mathrm{HMAC}_K(M) = \mathrm{H}\Big( (K \oplus opad ) \;||\; \mathrm{H}\big( (K \oplus ipad ) \;||\; M\big)\Big)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Werte &amp;lt;math&amp;gt;opad&amp;lt;/math&amp;gt; (&amp;#039;&amp;#039;outer pad&amp;#039;&amp;#039;, ein String) und &amp;lt;math&amp;gt;ipad&amp;lt;/math&amp;gt; (&amp;#039;&amp;#039;inner pad&amp;#039;&amp;#039;, ein weiterer String) sind dabei Konstanten,&amp;lt;ref name=&amp;quot;padding&amp;quot; /&amp;gt; &amp;lt;math&amp;gt;\oplus&amp;lt;/math&amp;gt; steht für die bitweise XOR-Operation und &amp;lt;math&amp;gt;\;||\;&amp;lt;/math&amp;gt; für die Verknüpfung durch einfaches Zusammensetzen ([[Wort (Theoretische Informatik)#Konkatenation|Konkatenation]]).&lt;br /&gt;
&lt;br /&gt;
Nach &amp;lt;nowiki&amp;gt;RFC&amp;amp;nbsp;2104&amp;lt;/nowiki&amp;gt; sind beide Konstanten &amp;#039;&amp;#039;outer pad&amp;#039;&amp;#039; und &amp;#039;&amp;#039;inner pad&amp;#039;&amp;#039; wie folgt definiert:&amp;lt;ref name=&amp;quot;RFC2104&amp;quot; /&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;opad = \underbrace{\mathrm{0x5C}\dotso\mathrm{0x5C}}_{\text{B-mal}} \text{ und } ipad = \underbrace{\mathrm{0x36}\dotso\mathrm{0x36}}_{\text{B-mal}}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Entwurfsprinzipien ==&lt;br /&gt;
[[Datei:MerkleDamgard.svg|mini|hochkant=1.8|Merkle-Damgård-Konstruktion: Aus den Nachrichtenblöcken wird durch wiederholte Anwendung der Kompressionsfunktion der Hashwert erzeugt.]]&lt;br /&gt;
&lt;br /&gt;
Die auf den ersten Blick umständlich anmutende Konstruktion resultiert aus der Tatsache, dass die meisten älteren kryptographischen Hashfunktionen auf der [[Merkle-Damgård-Konstruktion]] beruhen, also auf der Iteration einer Kompressionsfunktion.&lt;br /&gt;
So gibt es beispielsweise einen einfachen Angriff auf eine Konstruktion eines MACs als &amp;lt;math&amp;gt;H(K \| M)&amp;lt;/math&amp;gt;. Aufgrund der Struktur der Hashfunktion kann leicht zu einem beliebigen &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; und dem Hashwert &amp;lt;math&amp;gt;H(M)&amp;lt;/math&amp;gt; einer unbekannten Nachricht M der Hashwert &amp;lt;math&amp;gt;H(M \| X)&amp;lt;/math&amp;gt; berechnet werden, wenn die Finalisierungsfunktion fehlt oder leicht umkehrbar ist. Damit kann aber auch &amp;lt;math&amp;gt;H(K \| M)&amp;lt;/math&amp;gt; zu &amp;lt;math&amp;gt;H(K \| M \| X)&amp;lt;/math&amp;gt; erweitert werden („length-extension“-Angriff).&amp;lt;ref name=&amp;quot;BCK96&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn die zugrundeliegende Hashfunktion als [[Kollisionsresistenz|kollisionsresistent]] angenommen wird, sind einfache MAC-Konstruktionen möglich, beispielsweise die Berechnung als &amp;lt;math&amp;gt;H(M \| K)&amp;lt;/math&amp;gt;. Die Konstruktion ist allerdings unsicher, sobald eine Kollision gefunden ist, denn wenn &amp;lt;math&amp;gt;H(M_1) = H(M_2)&amp;lt;/math&amp;gt;, dann ist aufgrund der Struktur unabhängig vom Schlüssel K auch &amp;lt;math&amp;gt;H(M_1 \| K) = H(M_2 \| K)&amp;lt;/math&amp;gt;.&amp;lt;ref name=&amp;quot;BCK96&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Idee der HMAC-Konstruktion ist, bei der Sicherheit nicht auf die Kollisionsresistenz der Hashfunktion, sondern auf schwächere Annahmen zu vertrauen. Aus diesem Grund ist ein auf [[Message-Digest Algorithm 5|MD5]] basierender HMAC immer noch sicher, obwohl für MD5 bereits Kollisionen gefunden wurden.&lt;br /&gt;
&lt;br /&gt;
== Sicherheit ==&lt;br /&gt;
&lt;br /&gt;
Falls die zugrundeliegende Kompressionsfunktion eine [[pseudozufällige Funktion]] ist, so ist auch die HMAC-Konstruktion eine pseudozufällige Funktion.&amp;lt;ref name=&amp;quot;Bell06&amp;quot; /&amp;gt; Da jede pseudozufällige Funktion auch ein guter MAC ist,&amp;lt;ref name=&amp;quot;BGM04&amp;quot; /&amp;gt; ist die HMAC-Konstruktion ebenfalls ein guter MAC. Der einfachste Angriff auf einen HMAC ist es, den zugrunde liegenden geheimen Schlüssel &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; beispielsweise mittels [[Brute-Force-Methode|Brute-Force]] zu erraten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;RFC&amp;amp;nbsp;6151&amp;lt;/nowiki&amp;gt; wurde 2011 veröffentlicht, um die Sicherheit von MD5 und HMAC-MD5 zu bewerten. Für letzteres fasst es zusammen, dass –&amp;amp;nbsp;obwohl MD5 als kompromittiert anzusehen ist&amp;amp;nbsp;– die aktuell bekannten Angriffe gegen HMAC-MD5 keine „praktische Sicherheitslücke“ darstellen, wenn dieses als „Message Authentication Code benutzt wird“. Dennoch fügt es hinzu, dass für neue Protokolldesigns „HMAC-MD5 nicht mehr benutzt werden sollte“.&amp;lt;ref name=&amp;quot;RFC6151&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=William Stallings&lt;br /&gt;
   |Titel=Cryptography and Network Security. Principles and Practice&lt;br /&gt;
   |Auflage=5.&lt;br /&gt;
   |Verlag=Pearson Education, publishing as Prentice Hall&lt;br /&gt;
   |Datum=2011&lt;br /&gt;
   |ISBN=978-0-13-705632-3&lt;br /&gt;
   |Sprache=en&lt;br /&gt;
   |Kommentar=International Edition}}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{RFC-Internet |RFC=2104 |Titel=HMAC: Keyed-Hashing for Message Authentication |Datum=}}&lt;br /&gt;
* {{RFC-Internet |RFC=2202 |Titel=Test Cases for HMAC-MD5 and HMAC-SHA-1 |Datum=}}&lt;br /&gt;
* [https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.198-1.pdf FIPS PUB 198-1, &amp;#039;&amp;#039;The Keyed-Hash Message Authentication Code&amp;#039;&amp;#039;.] (PDF; 126&amp;amp;nbsp;kB) nist.gov&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;RFC2104&amp;quot;&amp;gt;&lt;br /&gt;
{{RFC-Internet |RFC=2104 |Titel=HMAC: Keyed-Hashing for Message Authentication |Datum= |Autor=H. Krawczyk, M. Bellare, R. Canetti}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;RFC5246&amp;quot;&amp;gt;&lt;br /&gt;
{{RFC-Internet |RFC=5246 |Titel=The Transport Layer Security (TLS) Protocol Version 1.2 |Datum= |Autor=T. Dierks, E. Rescorla}} {{&amp;quot; |Sprache=en |Text=The TLS record layer uses a keyed Message Authentication Code (MAC) to protect message integrity. The cipher suites defined in this document use a construction known as HMAC, described in [HMAC], which is based on a hash function. Other cipher suites MAY define their own MAC constructions, if needed.}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;RFC4253&amp;quot;&amp;gt;&lt;br /&gt;
{{RFC-Internet |RFC=4253 |Titel=The Secure Shell (SSH) Transport Layer Protocol |Datum= |Autor=T. Ylonen, C. Lonvick}} {{&amp;quot; |Sprache=en |Text=The “hmac-*” algorithms are described in [RFC2104].}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;BCK96&amp;quot;&amp;gt;&lt;br /&gt;
{{Literatur&lt;br /&gt;
 |Autor=Mihir Bellare, Ran Canetti, Hugo Krawczyk&lt;br /&gt;
 |Titel=Keying Hash Functions for Message Authentication&lt;br /&gt;
 |Sammelwerk=Advances in Cryptology – Crypto 96 Proceedings&lt;br /&gt;
 |Reihe=Lecture Notes in Computer Science&lt;br /&gt;
 |BandReihe=1109&lt;br /&gt;
 |Verlag=Springer&lt;br /&gt;
 |Datum=1996&lt;br /&gt;
 |Seiten=1–15&lt;br /&gt;
 |Sprache=en&lt;br /&gt;
 |Online=[https://cseweb.ucsd.edu/~mihir/papers/kmd5.pdf cseweb.ucsd.edu]&lt;br /&gt;
 |DOI=10.1007/3-540-68697-5_1}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Bell06&amp;quot;&amp;gt;&lt;br /&gt;
{{Literatur&lt;br /&gt;
 |Autor=Mihir Bellare&lt;br /&gt;
 |Titel=New Proofs for NMAC and HMAC: Security without Collision-Resistance&lt;br /&gt;
 |Sammelwerk=Advances in Cryptology – Crypto 2006 Proceedings&lt;br /&gt;
 |Reihe=Lecture Notes in Computer Science&lt;br /&gt;
 |BandReihe=4117&lt;br /&gt;
 |Verlag=Springer&lt;br /&gt;
 |Datum=2006&lt;br /&gt;
 |Seiten=602–619&lt;br /&gt;
 |Sprache=en&lt;br /&gt;
 |Online=[http://cseweb.ucsd.edu/~mihir/papers/hmac-new.html cseweb.ucsd.edu]&lt;br /&gt;
 |DOI=10.1007/11818175_36}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;BGM04&amp;quot;&amp;gt;&lt;br /&gt;
{{Literatur&lt;br /&gt;
 |Autor=Mihir Bellare, Oded Goldreich, Anton Mityagin&lt;br /&gt;
 |Titel=The Power of Verification Queries in Message Authentication and Authenticated Encryption&lt;br /&gt;
 |Datum=2004&lt;br /&gt;
 |Sprache=en&lt;br /&gt;
 |Online=https://eprint.iacr.org/2004/309}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;RFC6151&amp;quot;&amp;gt;&lt;br /&gt;
{{RFC-Internet |RFC=6151 |Titel=Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms |Datum=2011-03 |Autor=Sean Turner, Lily Chen}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Symmetrisches Kryptosystem]]&lt;br /&gt;
[[Kategorie:Abkürzung]]&lt;/div&gt;</summary>
		<author><name>imported&gt;SchlurcherBot</name></author>
	</entry>
</feed>