Skein
Vorlage:Hinweisbaustein Vorlage:Infobox Kryptologische Hashfunktion
Skein (englisch für „Strang“) bezeichnet eine Familie von kryptographischen Hashfunktionen und wurde von Niels Ferguson, Stefan Lucks, Bruce Schneier, Doug Whiting, Mihir Bellare, Tadayoshi Kohno, Jon Callas und Jesse Walker entwickelt. Skein war ein Kandidat im Wettbewerb für den zukünftigen Standard SHA-3, in dem er im Dezember 2010 die Runde der Finalisten erreichte.
Aufbau
Speziell für Skein wurde die Konstruktionsmethode Unique Block Iteration (UBI) entwickelt, die die früher übliche Merkle-Damgård-Konstruktion ersetzt. UBI funktioniert ähnlich wie die HAIFA-Konstruktion. Die Nachricht wird erweitert und in Blöcke geteilt, die nacheinander verarbeitet werden. Jeder Nachrichtenblock wird zusammen mit einem Verkettungswert und einigen Verwaltungsdaten, unter anderem einem Zähler für die schon verarbeiteten Nachrichtenbits, in eine Kompressionsfunktion eingegeben, die den nächsten Verkettungswert liefert. Der letzte Verkettungswert wird durch einen weiteren Aufruf der Kompressionsfunktion finalisiert, was den Hashwert ergibt.
Skein verwendet eine Matyas–Meyer–Oseas-Kompressionsfunktion, die auf der Blockverschlüsselung Threefish basiert. Der Nachrichtenblock wird als Klartext und der Verkettungswert mit den Verwaltungsdaten als Schlüssel/Tweak eingegeben. Der nächste Verkettungswert entsteht durch XOR von Klar- und Schlüsseltext. Threefish verschlüsselt in 72 Runden bei einer Blockgröße von 256 oder 512 Bit. Für die Blockgröße 1024 Bit kommen 80 Runden zur Anwendung.
Das Design ist optimiert, um auf 64-Bit-Prozessoren eine hohe Performance zu erreichen. Bei einer Blockgröße von 512 Bit beträgt der Rechenaufwand auf einem Intel Core 2 Duo etwa 6 Zyklen pro Byte.<ref>Ferguson et al.: The Skein Hash Function Family, 1. Oktober 2010, <templatestyles src="Webarchiv/styles.css" />{{#if:20140824053109
| {{#ifeq: 20140824053109 | *
| {{#if: Online | {{#invoke:WLink|getEscapedTitle|Online}} | {{#invoke:Webarchiv|getdomain|http://www.skein-hash.info/sites/default/files/skein1.3.pdf}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20140824053109}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: Online | {{#invoke:WLink|getEscapedTitle|Online}} | {{#invoke:Webarchiv|getdomain|http://www.skein-hash.info/sites/default/files/skein1.3.pdf}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20140824053109}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: Online | {{#invoke:WLink|getEscapedTitle|Online}} | {{#invoke:Webarchiv|getdomain|http://www.skein-hash.info/sites/default/files/skein1.3.pdf}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: Online | {{#invoke:WLink|getEscapedTitle|Online}} | {{#invoke:Webarchiv|getdomain|http://www.skein-hash.info/sites/default/files/skein1.3.pdf}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: Online | {{#invoke:WLink|getEscapedTitle|Online}} | {{#invoke:Webarchiv|getdomain|http://www.skein-hash.info/sites/default/files/skein1.3.pdf}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: Online | {{#invoke:WLink|getEscapedTitle|Online}} | {{#invoke:Webarchiv|getdomain|http://www.skein-hash.info/sites/default/files/skein1.3.pdf}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20140824053109|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.skein-hash.info/sites/default/files/skein1.3.pdf}}
|| {{#if: || }}
}}{{#if: Online
| {{#if: {{#invoke:WLink|isBracketedLink|Online}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://www.skein-hash.info/sites/default/files/skein1.3.pdf%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.skein-hash.info/sites/default/files/skein1.3.pdf%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://www.skein-hash.info/sites/default/files/skein1.3.pdf }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}} (PDF; 479 kB)</ref>
Schwächen
Auf der zweiten SHA-3-Konferenz zeigten Dmitry Khovratovich, Ivica Nikolié und Christian Rechberger eine mögliche Schwäche in Threefish und der Kompressionsfunktion von Skein.<ref>http://csrc.nist.gov/groups/ST/hash/sha-3/Round2/Aug2010/documents/papers/RECHBERGER_rot-rebound.pdf</ref> Daraufhin passten die Autoren den Algorithmus geringfügig an.<ref>http://www.schneier.com/blog/archives/2010/09/more_skein_news.html</ref>
Weblinks
- Offizielle Website
- Skein auf der Website von Bruce Schneier
- Skein im SHA-3 Zoo mit einer Auflistung von Kryptoanalysen
- Skein FreeBSD's libcrypt Version
Einzelnachweise
<references />