<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://kryptowiki.eu/index.php?action=history&amp;feed=atom&amp;title=SHA-1</id>
	<title>SHA-1 - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://kryptowiki.eu/index.php?action=history&amp;feed=atom&amp;title=SHA-1"/>
	<link rel="alternate" type="text/html" href="https://kryptowiki.eu/index.php?title=SHA-1&amp;action=history"/>
	<updated>2026-05-13T03:22:13Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Kryptowiki - Die freie Enzyklopädie der Kryptowährungen</subtitle>
	<generator>MediaWiki 1.39.15</generator>
	<entry>
		<id>https://kryptowiki.eu/index.php?title=SHA-1&amp;diff=1630&amp;oldid=prev</id>
		<title>C1ph4: Die Seite wurde neu angelegt: „== SHA-1 == Aufbau einer Runde von SHA-0 und SHA-1  Die korrigierte Version des SHA unterscheidet sich von SHA-0 nur in einem kleinen…“</title>
		<link rel="alternate" type="text/html" href="https://kryptowiki.eu/index.php?title=SHA-1&amp;diff=1630&amp;oldid=prev"/>
		<updated>2017-11-17T20:57:44Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „== SHA-1 == &lt;a href=&quot;/index.php?title=Datei:SHA-1.svg&quot; title=&quot;Datei:SHA-1.svg&quot;&gt;mini|Aufbau einer Runde von SHA-0 und SHA-1&lt;/a&gt;  Die korrigierte Version des SHA unterscheidet sich von SHA-0 nur in einem kleinen…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== SHA-1 ==&lt;br /&gt;
[[Datei:SHA-1.svg|mini|Aufbau einer Runde von SHA-0 und SHA-1]]&lt;br /&gt;
&lt;br /&gt;
Die korrigierte Version des SHA unterscheidet sich von SHA-0 nur in einem kleinen Detail (Linksshift in der Schlüsseleinteilung), nicht jedoch in der Anzahl der durchlaufenen Runden oder sonstiger Maßnahmen, die unmittelbar eine wesentlich höhere Sicherheit erwarten lassen. Die [[Kryptoanalyse]] bestätigt jedoch, dass der Linksshift die Berechnung von Kollisionen offenbar erheblich erschwert.&lt;br /&gt;
&lt;br /&gt;
Prinzipiell wurde von den gleichen Entwurfszielen wie beim MD4 ausgegangen. Mit seinem längeren Hash-Wert von 160&amp;amp;nbsp;Bit ist SHA aber widerstandsfähiger gegen [[Brute-Force-Methode|Brute-Force-Angriffe]] zum Auffinden von Kollisionen.&lt;br /&gt;
&lt;br /&gt;
=== Schwächen ===&lt;br /&gt;
Am 15. Februar 2005 meldete der [[Kryptographie]]experte [[Bruce Schneier]] in seinem [[Blog]]&amp;lt;ref&amp;gt;{{Internetquelle| autor=[[Bruce Schneier]]| url=http://www.schneier.com/blog/archives/2005/02/sha1_broken.html| sprache=en| titel=SHA-1 Broken| datum=2005-02-15| zugriff=2011-12-10}}&amp;lt;/ref&amp;gt;, dass die Wissenschaftler Xiaoyun Wang, Yiqun Lisa Yin und Hongbo Yu von [[Shandong University]] in China erfolgreich SHA-1 gebrochen hätten. Ihnen war es gelungen, den Aufwand zur [[Kollisionsangriff|Kollisionsberechnung]] von 2&amp;lt;sup&amp;gt;80&amp;lt;/sup&amp;gt; auf 2&amp;lt;sup&amp;gt;69&amp;lt;/sup&amp;gt; zu verringern.&amp;lt;ref&amp;gt;{{Literatur | Autor=Xiaoyun Wang, Yiqun Lisa Yin und Hongbo Yu | Titel=Finding Collisions in the Full SHA-1 | Sammelwerk=CRYPTO | Jahr=2005 | Seiten=17−36 | Online=[http://people.csail.mit.edu/yiqun/SHA1AttackProceedingVersion.pdf PDF]}}&amp;lt;/ref&amp;gt; 2&amp;lt;sup&amp;gt;69&amp;lt;/sup&amp;gt; Berechnungen könnten eventuell mit Hochleistungsrechnern durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Kurze Zeit später, am 17. August 2005, wurde von Xiaoyun Wang, [[Andrew Yao]] und [[Frances Yao]] auf der Konferenz [[CRYPTO (Veranstaltung)|CRYPTO 2005]] ein weiterer, effizienterer Kollisionsangriff auf SHA-1 vorgestellt, welcher den Berechnungsaufwand auf 2&amp;lt;sup&amp;gt;63&amp;lt;/sup&amp;gt; reduziert.&lt;br /&gt;
&lt;br /&gt;
Im August 2006 wurde auf der CRYPTO 2006 ein weiterer, wesentlich schwerwiegenderer Angriff gegen SHA-1 präsentiert, der möglicherweise auch in der Praxis Auswirkungen zeigen kann. Bei diesem Angriff kann ein Teil der gefälschten Nachricht (derzeit bis zu 25 %) im Inhalt frei gewählt werden. Bei den bisherigen [[Kollisionsangriff]]en wurden die so genannten Hash-Zwillinge lediglich mit sinnlosen Buchstabenkombinationen des Klartextes gebildet und waren damit leicht zu erkennen.&lt;br /&gt;
&lt;br /&gt;
Ein kritisches Angriffsszenario setzt aber voraus, dass der Angreifer eine zweite, zumindest in Teilen sinnvolle Variante eines Dokuments erzeugen kann, die den gleichen SHA-1-Wert und damit auch die gleiche Signatur ergibt. Die bei der neuen Angriffsmethode derzeit verbleibenden 75 % sinnloser Buchstabenkombinationen (also Datenmüll) können vor den Augen eines ungeschulten Betrachters ggf. technisch leicht verborgen werden. Der Angreifer kann daher behaupten, die gefälschte Variante sei an Stelle der originalen Variante signiert worden.&lt;br /&gt;
&lt;br /&gt;
Vom 8. August 2007 bis 12. Mai 2009 versuchte eine Forschungsgruppe der [[Technische Universität Graz|Technischen Universität Graz]] mittels eines [[Verteiltes Rechnen|Distributed-Computing]]-Projektes Kollisionen im SHA-1-Algorithmus zu finden (''SHA-1 Collision Search Graz''). Das Projekt wurde aufgrund zu geringen Fortschritts beendet.&amp;lt;ref&amp;gt;http://www.rechenkraft.net/wiki/index.php?title=SHA-1_Collision_Search_Graz&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Oktober 2015 veröffentlichten die Forscher Marc Stevens, Pierre Karpman und Thomas Peyrin eine Freestart-Kollision für die Kompressionsfunktion von SHA1. Aufgrund dieses Ergebnisses korrigierten sie die bis dahin akzeptierten Vorausberechnungen, wann es zu welchen Kosten möglich ist, für SHA-1 aufgrund der kontinuierlichen Erhöhung der Rechenleistung Chosen-Prefix-Kollisionen zu finden, die zur Fälschung von TLS-Zertifikaten notwendig sind.&amp;lt;ref&amp;gt;https://sites.google.com/site/itstheshappening/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Schneier-SHA1&amp;quot;&amp;gt;https://www.schneier.com/blog/archives/2015/10/sha-1_freestart.html&amp;lt;/ref&amp;gt; Sie empfahlen, die Nutzung von SHA-1 so bald wie möglich einzustellen und zu SHA-2 oder SHA-3 überzugehen.&lt;br /&gt;
&lt;br /&gt;
Im Februar 2017 wurde die erste Kollision von SHA-1 veröffentlicht. Google-Mitarbeiter hatten zwei unterschiedliche und funktionierende [[PDF-Datei]]en erzeugt, welche dieselbe SHA-1-Prüfsumme aufweisen.&amp;lt;ref&amp;gt;Marc Stevens, Elie Bursztein, Pierre Karpman, Ange Albertini, Yarik Markov: [https://shattered.io/static/shattered.pdf The first collision for full SHA-1], shattered.io&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Empfehlungen ===&lt;br /&gt;
Als Reaktion auf die bekanntgewordenen Angriffe gegen SHA-1 hielt das [[National Institute of Standards and Technology]] (NIST) im Oktober 2005 einen Workshop ab, in dem der aktuelle Stand kryptologischer Hashfunktionen diskutiert wurde. NIST empfiehlt den Übergang von SHA-1 zu Hashfunktionen der SHA-2-Familie (SHA-224, SHA-256, SHA-384, SHA-512). Langfristig sollen diese durch den neuen Standard [[SHA-3]] ersetzt werden. Dazu rief das NIST nach Vorbild des [[Advanced Encryption Standard]] (AES) zu einer Ausschreibung auf. Die endgültige Wahl und Benennung fiel dann im Oktober 2012 auf [[Keccak]].&lt;br /&gt;
&lt;br /&gt;
Im Oktober 2015 empfahl Bruce Schneier zu [[SHA-3]] überzugehen.&amp;lt;ref name=&amp;quot;Schneier-SHA1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beispiel-Hashes ===&lt;br /&gt;
 SHA1(&amp;quot;'''F'''ranz jagt im komplett verwahrlosten Taxi quer durch Bayern&amp;quot;)&lt;br /&gt;
  = 68ac906495480a3404beee4874ed853a037a7a8f&lt;br /&gt;
&lt;br /&gt;
Ein Tippfehler (G statt F) ändert den Text um nur ein Bit (ASCII-Code 0x47 statt 0x46):&lt;br /&gt;
&lt;br /&gt;
 SHA1(&amp;quot;'''G'''ranz jagt im komplett verwahrlosten Taxi quer durch Bayern&amp;quot;)&lt;br /&gt;
  = 89fdde0b28373dc4f361cfb810b35342cc2c3232&lt;br /&gt;
&lt;br /&gt;
Eine kleine Änderung der Nachricht erzeugt also einen komplett anderen Hash. Diese Eigenschaft wird in der [[Kryptographie]] auch als [[Lawineneffekt (Kryptographie)|Lawineneffekt]] bezeichnet.&lt;br /&gt;
&lt;br /&gt;
Der Hash eines Strings der Länge Null ist:&lt;br /&gt;
&lt;br /&gt;
 SHA1(&amp;quot;&amp;quot;)&lt;br /&gt;
  = da39a3ee5e6b4b0d3255bfef95601890afd80709&lt;br /&gt;
&lt;br /&gt;
=== Pseudocode ===&lt;br /&gt;
Es folgt der [[Pseudocode]] für den SHA-1.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;// ''Beachte: Alle Variablen sind vorzeichenlose 32-Bit-Werte und''&lt;br /&gt;
 // ''verhalten sich bei Berechnungen [[Kongruenz (Zahlentheorie)|kongruent (≡)]] modulo 2^32''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;// ''Initialisiere die Variablen:''&amp;lt;/span&amp;gt;&lt;br /&gt;
 '''var''' ''int'' h0 := 0x67452301&lt;br /&gt;
 '''var''' ''int'' h1 := 0xEFCDAB89&lt;br /&gt;
 '''var''' ''int'' h2 := 0x98BADCFE&lt;br /&gt;
 '''var''' ''int'' h3 := 0x10325476&lt;br /&gt;
 '''var''' ''int'' h4 := 0xC3D2E1F0&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;// ''Vorbereitung der Nachricht 'message':''&amp;lt;/span&amp;gt;&lt;br /&gt;
 '''var''' ''int'' message_laenge := bit_length(message)&lt;br /&gt;
 '''erweitere''' message '''um''' bit &amp;quot;1&amp;quot;&lt;br /&gt;
 '''erweitere''' message '''um''' bits &amp;quot;0&amp;quot; '''bis''' Länge von message in bits [[Kongruenz (Zahlentheorie)|≡]] 448 (mod 512)&lt;br /&gt;
 '''erweitere''' message '''um''' message_laenge als ''64-Bit [[Big endian|big-endian]] Integer''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;// ''Verarbeite die Nachricht in aufeinander folgenden 512-Bit-Blöcken:''&amp;lt;/span&amp;gt;&lt;br /&gt;
 '''für alle''' ''512-Bit'' Block '''von''' message&lt;br /&gt;
    unterteile Block in 16 32-bit [[Big endian|big-endian]] Worte w(i), 0 ≤ i ≤ 15&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;// ''Erweitere die 16 32-Bit-Worte auf 80 32-Bit-Worte:''&amp;lt;/span&amp;gt;&lt;br /&gt;
    '''für alle''' i '''von''' 16 '''bis''' 79&lt;br /&gt;
        w(i) := (w(i-3) '''xor''' w(i-8) '''xor''' w(i-14) '''xor''' w(i-16)) '''leftrotate''' 1&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;// ''Initialisiere den Hash-Wert für diesen Block:''&amp;lt;/span&amp;gt;&lt;br /&gt;
    '''var''' ''int'' a := h0&lt;br /&gt;
    '''var''' ''int'' b := h1&lt;br /&gt;
    '''var''' ''int'' c := h2&lt;br /&gt;
    '''var''' ''int'' d := h3&lt;br /&gt;
    '''var''' ''int'' e := h4&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;// ''Hauptschleife:''&amp;lt;/span&amp;gt;&lt;br /&gt;
    '''für alle''' i '''von''' 0 '''bis''' 79&lt;br /&gt;
        '''wenn''' 0 ≤ i ≤ 19 '''dann'''&lt;br /&gt;
            f := (b '''and''' c) '''or''' (('''not''' b) '''and''' d)&lt;br /&gt;
            k := 0x5A827999&lt;br /&gt;
        '''sonst wenn''' 20 ≤ i ≤ 39 '''dann'''&lt;br /&gt;
            f := b '''xor''' c '''xor''' d&lt;br /&gt;
            k := 0x6ED9EBA1&lt;br /&gt;
        '''sonst wenn''' 40 ≤ i ≤ 59 '''dann'''&lt;br /&gt;
            f := (b '''and''' c) '''or''' (b '''and''' d) '''or''' (c '''and''' d)&lt;br /&gt;
            k := 0x8F1BBCDC&lt;br /&gt;
        '''sonst wenn''' 60 ≤ i ≤ 79 '''dann'''&lt;br /&gt;
            f := b '''xor''' c '''xor''' d&lt;br /&gt;
            k := 0xCA62C1D6&lt;br /&gt;
        '''wenn_ende'''&lt;br /&gt;
&lt;br /&gt;
        temp := (a '''leftrotate''' 5) + f + e + k + w(i)&lt;br /&gt;
        e := d&lt;br /&gt;
        d := c&lt;br /&gt;
        c := b '''leftrotate''' 30&lt;br /&gt;
        b := a&lt;br /&gt;
        a := temp&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;// ''Addiere den Hash-Wert des Blocks zur Summe der vorherigen Hashes:''&amp;lt;/span&amp;gt;&lt;br /&gt;
    h0 := h0 + a&lt;br /&gt;
    h1 := h1 + b&lt;br /&gt;
    h2 := h2 + c&lt;br /&gt;
    h3 := h3 + d&lt;br /&gt;
    h4 := h4 + e&lt;br /&gt;
&lt;br /&gt;
 digest = hash = h0 '''append''' h1 '''append''' h2 '''append''' h3 '''append''' h4 &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;//''(Darstellung als [[Big endian|big-endian]])''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Beachte: Anstatt der Original-Formulierung aus dem FIPS PUB 180-1 können alternativ auch folgende Formulierungen verwendet werden:''&lt;br /&gt;
 (0 ≤ i ≤ 19): f := d '''xor''' (b '''and''' (c '''xor''' d)) &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;''(Alternative)''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 (40 ≤ i ≤ 59): f := (b '''and''' c) '''or''' (d '''and''' (b '''or''' c)) &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;''(Alternative 1)''&amp;lt;/span&amp;gt;&lt;br /&gt;
 (40 ≤ i ≤ 59): f := (b '''and''' c) '''or''' (d '''and''' (b '''xor''' c)) &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;''(Alternative 2)''&amp;lt;/span&amp;gt;&lt;br /&gt;
 (40 ≤ i ≤ 59): f := (b '''and''' c) + (d '''and''' (b '''xor''' c)) &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;''(Alternative 3)''&amp;lt;/span&amp;gt;&lt;br /&gt;
 (40 ≤ i ≤ 59): f := (b '''and''' c) '''xor''' (d '''and''' (b '''xor''' c)) &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;''(Alternative 4)''&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>C1ph4</name></author>
	</entry>
</feed>