<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
	>
<channel>
	<title>Kommentare zu: Revision 82: Wiederverwertbarkeit von CSS &amp; Web Security</title>
	<atom:link href="http://workingdraft.de/82/feed/" rel="self" type="application/rss+xml" />
	<link>http://workingdraft.de/82/</link>
	<description>Wöchentlicher News-Podcast für Webdesigner und -entwickler</description>
	<lastBuildDate>Sat, 18 May 2013 19:10:43 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<item>
		<title>Von: Manko10</title>
		<link>http://workingdraft.de/82/#comment-857</link>
		<dc:creator>Manko10</dc:creator>
		<pubDate>Sun, 05 Aug 2012 21:13:10 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-857</guid>
		<description><![CDATA[Sorry, x = hash(y) ist natürlich quatsch. Gemeint ist natürlich hash(x) = hash(y).]]></description>
		<content:encoded><![CDATA[<p>Sorry, x = hash(y) ist natürlich quatsch. Gemeint ist natürlich hash(x) = hash(y).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Manko10</title>
		<link>http://workingdraft.de/82/#comment-856</link>
		<dc:creator>Manko10</dc:creator>
		<pubDate>Sun, 05 Aug 2012 21:09:50 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-856</guid>
		<description><![CDATA[Whoops, Antwort ist verrutscht. Steht einen Thread weiter oben. :-)]]></description>
		<content:encoded><![CDATA[<p>Whoops, Antwort ist verrutscht. Steht einen Thread weiter oben. :-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Manko10</title>
		<link>http://workingdraft.de/82/#comment-855</link>
		<dc:creator>Manko10</dc:creator>
		<pubDate>Sun, 05 Aug 2012 21:08:56 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-855</guid>
		<description><![CDATA[@knalli

Sicher, es ist richtig, dass einem Kollisionen bei langen Passwörtern einen Strich durch die Rechnung machen können, aber du musst bedenken:

a) um die Kollisionen eines Hashing-Algorithmus&#039; voll auszunutzen, müsstest du eine Rainbow-Table erstellen, die für jeden möglichen Hash zumindest einen möglichen Klartext liefert. Das ist absolut unwirtschaftlich.
Ein MD5-Hash ist 128bit lang. Das heißt, du hast einen String bestehend aus 32 Hexadezimalzahlen. Rein rechnerisch müsstest du also eine Datenbank anlegen, die zumindest theoretische 340282366920938463463374607431768211456 Einträge umfasst (frage mich nicht, wie man diese Zahl ausspricht). Als Rainbow-Table bekommst du das wesentlich kompakter hin, aber die Größe ist dennoch immens. Bei SHA1 wächst die Anzahl bereits auf 1461501637330902918203684832716283019655932542976 und von SHA256 will ich gar nicht erst reden (nagut, doch, weil es so schön aussieht: 115792089237316195423570985008687907853269984665640564039457584007913129639936  und SHA512… auch lassen wir das…).

b) irgendwann fällt dir bei der Berechnung der Rainbow-Table deine eigene Reduktionsfunktion auf die Füße, denn auch die produziert selbstverständlich Kollisionen.

c) Kollisionen müssen nicht zwangsläufig auftreten. Es ist durchaus möglich, dass für Klartext-Phrase &quot;foo&quot; schlicht keine Kollision mit vertretbarem Aufwand zu finden ist. Insbesondere wenn der Hashwert länger ist als das Kennwort (was bei starken Algorithmen meist der Fall ist), wirst du mit Kollisionen nicht unbedingt weit kommen.

d) Kryptographische Funktionen wurden extra dazu designt, kollisionsresistent zu sein. Das heißt, dass dies explizit eine Anforderung an eine solche Funktion ist. Aus diesem Grund ist es nicht einfach möglich, einen Algorithmus zu schreiben, der zu x = hash(y) die Unbekannte x berechnet. Auch bei MD5 nicht. Hier bleibt dir also nur Bruteforce oder eine unglaublich große Rainbow-Table.

Bei schwachen Hash-Algorithmen (wie eben LM-Hashes) bekommst du also schnell eine Rainbow-Table zusammen, die 99% aller möglichen Kombinationen abdeckt, die notwendig sind, um Kennwörter sicher zu knacken. Bei stärkeren Algorithmen gelingt das nicht so einfach.]]></description>
		<content:encoded><![CDATA[<p>@knalli</p>
<p>Sicher, es ist richtig, dass einem Kollisionen bei langen Passwörtern einen Strich durch die Rechnung machen können, aber du musst bedenken:</p>
<p>a) um die Kollisionen eines Hashing-Algorithmus&#8217; voll auszunutzen, müsstest du eine Rainbow-Table erstellen, die für jeden möglichen Hash zumindest einen möglichen Klartext liefert. Das ist absolut unwirtschaftlich.<br />
Ein MD5-Hash ist 128bit lang. Das heißt, du hast einen String bestehend aus 32 Hexadezimalzahlen. Rein rechnerisch müsstest du also eine Datenbank anlegen, die zumindest theoretische 340282366920938463463374607431768211456 Einträge umfasst (frage mich nicht, wie man diese Zahl ausspricht). Als Rainbow-Table bekommst du das wesentlich kompakter hin, aber die Größe ist dennoch immens. Bei SHA1 wächst die Anzahl bereits auf 1461501637330902918203684832716283019655932542976 und von SHA256 will ich gar nicht erst reden (nagut, doch, weil es so schön aussieht: 115792089237316195423570985008687907853269984665640564039457584007913129639936  und SHA512… auch lassen wir das…).</p>
<p>b) irgendwann fällt dir bei der Berechnung der Rainbow-Table deine eigene Reduktionsfunktion auf die Füße, denn auch die produziert selbstverständlich Kollisionen.</p>
<p>c) Kollisionen müssen nicht zwangsläufig auftreten. Es ist durchaus möglich, dass für Klartext-Phrase &#8220;foo&#8221; schlicht keine Kollision mit vertretbarem Aufwand zu finden ist. Insbesondere wenn der Hashwert länger ist als das Kennwort (was bei starken Algorithmen meist der Fall ist), wirst du mit Kollisionen nicht unbedingt weit kommen.</p>
<p>d) Kryptographische Funktionen wurden extra dazu designt, kollisionsresistent zu sein. Das heißt, dass dies explizit eine Anforderung an eine solche Funktion ist. Aus diesem Grund ist es nicht einfach möglich, einen Algorithmus zu schreiben, der zu x = hash(y) die Unbekannte x berechnet. Auch bei MD5 nicht. Hier bleibt dir also nur Bruteforce oder eine unglaublich große Rainbow-Table.</p>
<p>Bei schwachen Hash-Algorithmen (wie eben LM-Hashes) bekommst du also schnell eine Rainbow-Table zusammen, die 99% aller möglichen Kombinationen abdeckt, die notwendig sind, um Kennwörter sicher zu knacken. Bei stärkeren Algorithmen gelingt das nicht so einfach.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Manko10</title>
		<link>http://workingdraft.de/82/#comment-854</link>
		<dc:creator>Manko10</dc:creator>
		<pubDate>Sun, 05 Aug 2012 20:49:00 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-854</guid>
		<description><![CDATA[Ist zu empfehlen.
Das, was Franky geschrieben hat, ist zwar nicht ganz korrekt, denn MD5 wurde durchaus als kryptographischer Algorithmus entwickelt (dass sich das Ding &quot;Message-Digest Algorithm&quot; nennt, heißt nur, dass damit Nachrichten verifiziert werden, d.h. Signaturen erstellt werden können, aber die müssen ja kryptographisch sicher sein). Aber trotzdem hat der Algorithmus seine Zeit überlebt.
Er ist dadurch aber nicht komplett unsicher (auch wenn manche Leute ihn als gebrochen ansehen). Es ist weiterhin nicht mit vertretbarem Aufwand möglich, zu gegebenen einem Hash direkt eine zweite passende aber gefälschte Nachricht zu erstellen. Du musst also keine Angst haben, dass jemand, der deine Passwort-Datenbank klaut, sofort für jeden Hash eine Kollision erzeugen kann.
Lediglich die Erstellung zweier Nachrichten, die den gleichen Hash ergeben ist möglich.

Wenn möglich, sollten aber stärkere Algorithmen wie SHA1 (wobei sich hier auch erste Schwächen abzeichnen) oder SHA2 (d.h. SHA256, SHA512 etc.) verwendet werden.]]></description>
		<content:encoded><![CDATA[<p>Ist zu empfehlen.<br />
Das, was Franky geschrieben hat, ist zwar nicht ganz korrekt, denn MD5 wurde durchaus als kryptographischer Algorithmus entwickelt (dass sich das Ding &#8220;Message-Digest Algorithm&#8221; nennt, heißt nur, dass damit Nachrichten verifiziert werden, d.h. Signaturen erstellt werden können, aber die müssen ja kryptographisch sicher sein). Aber trotzdem hat der Algorithmus seine Zeit überlebt.<br />
Er ist dadurch aber nicht komplett unsicher (auch wenn manche Leute ihn als gebrochen ansehen). Es ist weiterhin nicht mit vertretbarem Aufwand möglich, zu gegebenen einem Hash direkt eine zweite passende aber gefälschte Nachricht zu erstellen. Du musst also keine Angst haben, dass jemand, der deine Passwort-Datenbank klaut, sofort für jeden Hash eine Kollision erzeugen kann.<br />
Lediglich die Erstellung zweier Nachrichten, die den gleichen Hash ergeben ist möglich.</p>
<p>Wenn möglich, sollten aber stärkere Algorithmen wie SHA1 (wobei sich hier auch erste Schwächen abzeichnen) oder SHA2 (d.h. SHA256, SHA512 etc.) verwendet werden.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: knalli</title>
		<link>http://workingdraft.de/82/#comment-853</link>
		<dc:creator>knalli</dc:creator>
		<pubDate>Sun, 05 Aug 2012 19:32:25 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-853</guid>
		<description><![CDATA[Okay. Ansonsten gilt aber: Wenn der Hash exakt X Zeichen (bspw. 32) lang ist, muss es zwangsläufig zu Kollisionen kommen -- das ist aber auch eine Definition einer Hashfunktion. Die herbeigeführte Kollision (bei MD5) ist natürlich der GAU für eine Hashingfunktion, aber dabei kommt es bei Rainbow-Tabellen nicht nur an: Wenn der Hash drin ist, ist er drin. Wenn man Pech hat, dann ist hat das  ultra sichere Passwort bestehend aus 30 Sonderzeichen leider den gleichen Hash wie &quot;test12&quot;. Würde man das im Vorfeld bereits wissen, wäre ja die Kollision herbeigeführt. Ich will damit nur sagen: Ein langes Passwort schützt nicht gegen Rainbow-Tabellen. Das ist ein Trugschluss.

Nochmals: Ich sage nicht, das lange Passwörter nicht sicher wären (im Gegenteil). Aber gegen Rainbow-Tabellen helfen sie nur bedingt. Viel einfacher und besser ist ein (mehrfaches) Salting.

Der Hersteller von 1Password (AgileBits) bietet auf seinem Blog immer wieder nette Artikel, die die Passwort-Thematik gut beschreibt.
http://blog.agilebits.com/2011/06/21/toward-better-master-passwords/
http://blog.agilebits.com/2012/06/06/a-salt-free-diet-is-bad-for-your-security/
http://blog.agilebits.com/2012/06/07/flames-and-collisions/
und der schöne Antwort auf den vllt bekannten XKCD-Comic: http://blog.agilebits.com/2011/08/10/better-master-passwords-the-geek-edition/]]></description>
		<content:encoded><![CDATA[<p>Okay. Ansonsten gilt aber: Wenn der Hash exakt X Zeichen (bspw. 32) lang ist, muss es zwangsläufig zu Kollisionen kommen &#8212; das ist aber auch eine Definition einer Hashfunktion. Die herbeigeführte Kollision (bei MD5) ist natürlich der GAU für eine Hashingfunktion, aber dabei kommt es bei Rainbow-Tabellen nicht nur an: Wenn der Hash drin ist, ist er drin. Wenn man Pech hat, dann ist hat das  ultra sichere Passwort bestehend aus 30 Sonderzeichen leider den gleichen Hash wie &#8220;test12&#8243;. Würde man das im Vorfeld bereits wissen, wäre ja die Kollision herbeigeführt. Ich will damit nur sagen: Ein langes Passwort schützt nicht gegen Rainbow-Tabellen. Das ist ein Trugschluss.</p>
<p>Nochmals: Ich sage nicht, das lange Passwörter nicht sicher wären (im Gegenteil). Aber gegen Rainbow-Tabellen helfen sie nur bedingt. Viel einfacher und besser ist ein (mehrfaches) Salting.</p>
<p>Der Hersteller von 1Password (AgileBits) bietet auf seinem Blog immer wieder nette Artikel, die die Passwort-Thematik gut beschreibt.<br />
<a href="http://blog.agilebits.com/2011/06/21/toward-better-master-passwords/" rel="nofollow">http://blog.agilebits.com/2011/06/21/toward-better-master-passwords/</a><br />
<a href="http://blog.agilebits.com/2012/06/06/a-salt-free-diet-is-bad-for-your-security/" rel="nofollow">http://blog.agilebits.com/2012/06/06/a-salt-free-diet-is-bad-for-your-security/</a><br />
<a href="http://blog.agilebits.com/2012/06/07/flames-and-collisions/" rel="nofollow">http://blog.agilebits.com/2012/06/07/flames-and-collisions/</a><br />
und der schöne Antwort auf den vllt bekannten XKCD-Comic: <a href="http://blog.agilebits.com/2011/08/10/better-master-passwords-the-geek-edition/" rel="nofollow">http://blog.agilebits.com/2011/08/10/better-master-passwords-the-geek-edition/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Manko10</title>
		<link>http://workingdraft.de/82/#comment-852</link>
		<dc:creator>Manko10</dc:creator>
		<pubDate>Sun, 05 Aug 2012 19:18:03 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-852</guid>
		<description><![CDATA[Längere Passphrasen schützen sehr wohl auch gegen Rainbow-Table-Attacken. Wie schon geschrieben, muss für längere Passphrasen eine größere Tabelle angelegt werden. Das hingegen verbraucht wieder deutlich mehr Platz. Der Platzverbrauch könnte wieder ausgeglichen werden, indem die Chains verlängert werden, was dann aber wieder mehr Rechenzeit beim Cracking-Prozess in Anspruch nimmt.
Die meisten Rainbow-Tables sind auf Passwörter von maximal 14 Zeichen Länge ausgelegt. Die Verwendung von deutlich längeren Passphrasen kann eine Rainbow-Table-Attacke also u.U. unattraktiv machen.
Ist der Hashing-Algorithmus natürlich so schlecht, dass mit geringstem Aufwand Kollisionen erzeugt werden können, ist dieser Vorteil natürlich hin, aber in dem Falle würde man auch keine Rainbow-Table nehmen (denn die Effektivität von Rainbow-Tables sinkt dramatisch wenn der Hashing-Algorithmus viele Kollisionen erzeugt), sondern zu anderen kryptoanalytischen Mitteln greifen. Ein solcher Algorithmus würde übrigens als gebrochen gelten und sollte nicht benutzt werden.

Siehe auch: http://en.wikipedia.org/wiki/Rainbow_table]]></description>
		<content:encoded><![CDATA[<p>Längere Passphrasen schützen sehr wohl auch gegen Rainbow-Table-Attacken. Wie schon geschrieben, muss für längere Passphrasen eine größere Tabelle angelegt werden. Das hingegen verbraucht wieder deutlich mehr Platz. Der Platzverbrauch könnte wieder ausgeglichen werden, indem die Chains verlängert werden, was dann aber wieder mehr Rechenzeit beim Cracking-Prozess in Anspruch nimmt.<br />
Die meisten Rainbow-Tables sind auf Passwörter von maximal 14 Zeichen Länge ausgelegt. Die Verwendung von deutlich längeren Passphrasen kann eine Rainbow-Table-Attacke also u.U. unattraktiv machen.<br />
Ist der Hashing-Algorithmus natürlich so schlecht, dass mit geringstem Aufwand Kollisionen erzeugt werden können, ist dieser Vorteil natürlich hin, aber in dem Falle würde man auch keine Rainbow-Table nehmen (denn die Effektivität von Rainbow-Tables sinkt dramatisch wenn der Hashing-Algorithmus viele Kollisionen erzeugt), sondern zu anderen kryptoanalytischen Mitteln greifen. Ein solcher Algorithmus würde übrigens als gebrochen gelten und sollte nicht benutzt werden.</p>
<p>Siehe auch: <a href="http://en.wikipedia.org/wiki/Rainbow_table" rel="nofollow">http://en.wikipedia.org/wiki/Rainbow_table</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Schepp</title>
		<link>http://workingdraft.de/82/#comment-851</link>
		<dc:creator>Schepp</dc:creator>
		<pubDate>Sun, 05 Aug 2012 18:20:17 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-851</guid>
		<description><![CDATA[Es bleibt festzustellen, dass es nie verkehrt ist, einen expliziten Security-Experten am Start zu haben, der einem solche Details verklickert. MD5 werde ich dann demnächst wohl endgültig aufs Altenteil verbannen.]]></description>
		<content:encoded><![CDATA[<p>Es bleibt festzustellen, dass es nie verkehrt ist, einen expliziten Security-Experten am Start zu haben, der einem solche Details verklickert. MD5 werde ich dann demnächst wohl endgültig aufs Altenteil verbannen.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Schepp</title>
		<link>http://workingdraft.de/82/#comment-850</link>
		<dc:creator>Schepp</dc:creator>
		<pubDate>Sun, 05 Aug 2012 18:19:04 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-850</guid>
		<description><![CDATA[Gerne! Und danke :)]]></description>
		<content:encoded><![CDATA[<p>Gerne! Und danke :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Schepp</title>
		<link>http://workingdraft.de/82/#comment-849</link>
		<dc:creator>Schepp</dc:creator>
		<pubDate>Sun, 05 Aug 2012 18:18:17 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-849</guid>
		<description><![CDATA[Tatsächlich geht es bei OOCSS um CSS-Wiederverwertbarkeit, aber der Kontext ist die eien Webpräsenz selbst. Genau wie SMACSS ein tolles System, speziell bei großen Seiten. Uns ging es aber jetzt mehr um die Code-Wiederverwendbarkeit von Projekt zu Projekt. Ich glaube, deshalb kam es nicht zur Sprache.]]></description>
		<content:encoded><![CDATA[<p>Tatsächlich geht es bei OOCSS um CSS-Wiederverwertbarkeit, aber der Kontext ist die eien Webpräsenz selbst. Genau wie SMACSS ein tolles System, speziell bei großen Seiten. Uns ging es aber jetzt mehr um die Code-Wiederverwendbarkeit von Projekt zu Projekt. Ich glaube, deshalb kam es nicht zur Sprache.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: knalli</title>
		<link>http://workingdraft.de/82/#comment-848</link>
		<dc:creator>knalli</dc:creator>
		<pubDate>Sun, 05 Aug 2012 18:18:03 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-848</guid>
		<description><![CDATA[Zum besseren Verdeutlichen: Eine Rainbow-Tabelle besteht natürlich aus gängigen Wörtern bzw. Zeichen. Insofern kann man natürlich sagen, dass einfache Passwörter schneller über eine Rainbow-Tabelle ermittelbar wären.

Allerdings ist es beim Hashing überhaupt nicht erforderlich = gar nicht möglich, das originale Passwort zu besitzen/nutzen. Ich brauche als Angreifer nur ein passendes Passwort zum Hash. Wie bei einer mathematischen Funktion gibt es für den Wert y (Hash) mehrere verschiedene mögliche Werte für x. Dem Angreifer reicht einer. Jedes x kann eine andere Länge sein, es könnte theoretisch nur aus einem Zeichen bestehen.]]></description>
		<content:encoded><![CDATA[<p>Zum besseren Verdeutlichen: Eine Rainbow-Tabelle besteht natürlich aus gängigen Wörtern bzw. Zeichen. Insofern kann man natürlich sagen, dass einfache Passwörter schneller über eine Rainbow-Tabelle ermittelbar wären.</p>
<p>Allerdings ist es beim Hashing überhaupt nicht erforderlich = gar nicht möglich, das originale Passwort zu besitzen/nutzen. Ich brauche als Angreifer nur ein passendes Passwort zum Hash. Wie bei einer mathematischen Funktion gibt es für den Wert y (Hash) mehrere verschiedene mögliche Werte für x. Dem Angreifer reicht einer. Jedes x kann eine andere Länge sein, es könnte theoretisch nur aus einem Zeichen bestehen.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Schepp</title>
		<link>http://workingdraft.de/82/#comment-847</link>
		<dc:creator>Schepp</dc:creator>
		<pubDate>Sun, 05 Aug 2012 18:15:24 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-847</guid>
		<description><![CDATA[Dank Dir, und auch hier wieder einiges gelernt. Man merkt, unser Schwerpunkt liegt halt doch im Frontend. Danke!]]></description>
		<content:encoded><![CDATA[<p>Dank Dir, und auch hier wieder einiges gelernt. Man merkt, unser Schwerpunkt liegt halt doch im Frontend. Danke!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Schepp</title>
		<link>http://workingdraft.de/82/#comment-846</link>
		<dc:creator>Schepp</dc:creator>
		<pubDate>Sun, 05 Aug 2012 18:14:54 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-846</guid>
		<description><![CDATA[Unsere Hörer sind die besten, bitte so weitermachen! Keiner kann alles wissen. Danek :)]]></description>
		<content:encoded><![CDATA[<p>Unsere Hörer sind die besten, bitte so weitermachen! Keiner kann alles wissen. Danek :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Schepp</title>
		<link>http://workingdraft.de/82/#comment-845</link>
		<dc:creator>Schepp</dc:creator>
		<pubDate>Sun, 05 Aug 2012 18:14:14 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-845</guid>
		<description><![CDATA[Wow, auch Dir danke für Deinen Input!]]></description>
		<content:encoded><![CDATA[<p>Wow, auch Dir danke für Deinen Input!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: knalli</title>
		<link>http://workingdraft.de/82/#comment-844</link>
		<dc:creator>knalli</dc:creator>
		<pubDate>Sun, 05 Aug 2012 17:32:25 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-844</guid>
		<description><![CDATA[Längere Passphrasen erhöhen die Sicherheit des Passwort gegen Brute-Force-Angriffe. Gegen Rainbow-Tabellen haben sie keinen Einfluss, da das eigentliche Passwort völlig irrelevant ist. Hier zählen nur die anderen genannten Faktoren wie Hashing-Funktion, Schlüsselstärke und wiederholtes Hashen (Hash rounds).]]></description>
		<content:encoded><![CDATA[<p>Längere Passphrasen erhöhen die Sicherheit des Passwort gegen Brute-Force-Angriffe. Gegen Rainbow-Tabellen haben sie keinen Einfluss, da das eigentliche Passwort völlig irrelevant ist. Hier zählen nur die anderen genannten Faktoren wie Hashing-Funktion, Schlüsselstärke und wiederholtes Hashen (Hash rounds).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: knalli</title>
		<link>http://workingdraft.de/82/#comment-843</link>
		<dc:creator>knalli</dc:creator>
		<pubDate>Sun, 05 Aug 2012 17:30:17 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-843</guid>
		<description><![CDATA[Zum Thema SSL muss ich aber denn jetzt doch noch was niederschreiben. Man könnte beim Hören irgendwie fast den Anschein bekommen, das SSL ja eh nicht wirklich so sicher sei und man im Grunde darauf verzichten kann (ausgenommen ein Shop will heißen, wenn das Klientel es vorschreibt).

Ähm, in kurz: Nein.

Ich weiß nicht, wieso euer Gespräch überhaupt in diese Richtung verlaufen *g* ist, aber mittlerweile ist es sogar besser, wenn man seinen gesamten Service mit HTTPS kapselt (die sozialen Netzwerke machen das, Google selber mehr und mehr, GitHub auch). Der Grund ist u.a., dass man ohne SSL ganz einfach die Session (über das Session Cookie) kommt. Das war der technische Hintergrund, dass überhaupt Firesheep funktionieren konnte. Es wäre fatal, auf SSL zu verzichten, weil es überhaupt nichts bringen würde. Die Tragweite, den Netzverkehr unverschlüsselt zu übertragen, muss einem schließlich in jeder Position der Anwendung klar sein. Selbst bei einer simplen Aufgabenverwaltung kann ein Datenleck oder Account-Hijacking nicht erwünscht sein (wahrscheinlich eher die Standardvorgabe).

Tatsächlich kann man sogar soweit gehen, und alle statischen aber Code ausführenden Artefakte Ressourcen mit SSL sichern, damit erhöht man den Integritätsfaktor der eigenen Webanwendung (Server wird mehr und mehr integer, aber Browser ist natürlich weiterhin kompromitierbar).

Dass natürlich eine PKI wie bei den SSL-Zertifikaten nicht 100% sicher sein kann, ist ein anderes Thema. Aber die beiden Alternativen sind nicht besser: das Web Of Trust (WOT) wie bei PGP ist nur bedingt brauchbar und gar nichts zu tun ist einfach inakzeptabel.

Ich finde Euren Podcast weiterhin spitze, aber das musste jetzt mal beigesteuert werden. :)]]></description>
		<content:encoded><![CDATA[<p>Zum Thema SSL muss ich aber denn jetzt doch noch was niederschreiben. Man könnte beim Hören irgendwie fast den Anschein bekommen, das SSL ja eh nicht wirklich so sicher sei und man im Grunde darauf verzichten kann (ausgenommen ein Shop will heißen, wenn das Klientel es vorschreibt).</p>
<p>Ähm, in kurz: Nein.</p>
<p>Ich weiß nicht, wieso euer Gespräch überhaupt in diese Richtung verlaufen *g* ist, aber mittlerweile ist es sogar besser, wenn man seinen gesamten Service mit HTTPS kapselt (die sozialen Netzwerke machen das, Google selber mehr und mehr, GitHub auch). Der Grund ist u.a., dass man ohne SSL ganz einfach die Session (über das Session Cookie) kommt. Das war der technische Hintergrund, dass überhaupt Firesheep funktionieren konnte. Es wäre fatal, auf SSL zu verzichten, weil es überhaupt nichts bringen würde. Die Tragweite, den Netzverkehr unverschlüsselt zu übertragen, muss einem schließlich in jeder Position der Anwendung klar sein. Selbst bei einer simplen Aufgabenverwaltung kann ein Datenleck oder Account-Hijacking nicht erwünscht sein (wahrscheinlich eher die Standardvorgabe).</p>
<p>Tatsächlich kann man sogar soweit gehen, und alle statischen aber Code ausführenden Artefakte Ressourcen mit SSL sichern, damit erhöht man den Integritätsfaktor der eigenen Webanwendung (Server wird mehr und mehr integer, aber Browser ist natürlich weiterhin kompromitierbar).</p>
<p>Dass natürlich eine PKI wie bei den SSL-Zertifikaten nicht 100% sicher sein kann, ist ein anderes Thema. Aber die beiden Alternativen sind nicht besser: das Web Of Trust (WOT) wie bei PGP ist nur bedingt brauchbar und gar nichts zu tun ist einfach inakzeptabel.</p>
<p>Ich finde Euren Podcast weiterhin spitze, aber das musste jetzt mal beigesteuert werden. :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Manko10</title>
		<link>http://workingdraft.de/82/#comment-841</link>
		<dc:creator>Manko10</dc:creator>
		<pubDate>Fri, 03 Aug 2012 10:37:32 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-841</guid>
		<description><![CDATA[Kleine Ergänzung bzw. Konkretisierung zu Rainbow-Tables und Salts: anders als ein Wörterbuch, listet eine Rainbow-Table nicht bloß typische Trivialpasswörter, sondern im Idealfall einen Großteil aller möglichen Kombinationen (sofern bei einem Hashing-Verfahren wie LM-Hashes die maximale Passwortlänge begrenzt ist). Dies schließt nicht bloß Trivialpasswörter ein. Da hierdurch aber natürlich ab einer bestimmten Schlüssellänge die Festplattenkapazität der Menschheit überschritten würde, nutzt man ein intelligentes Verfahren, das in etwa so aussieht:

Man nimmt sich ein Klartextkennwort und schickt das durch die Hash-Funktion. Diesen generierten Hash schickt man durch eine Reduktionsfunktion, die aus dem Hash einen beliebigen weiteren Klartext erzeugt (z.B. indem es die ersten x Zeichen das Hash-Werts nutzt). Dieser neue Klartext wird dann wieder gehasht usw. Nach einer bestimmten Anzahl an Iterationen hört man auf und speichert den letzten Hash zusammen mit dem Klartext, mit dem man begonnen hat. Dann fängt man mit der nächsten (Chain) an, mit der man auf dieselbe Art verfährt.
So hat man hinterher eine umfangreiche Liste von Anfangs-Klartext-Kennwörtern und End-Hash-Werten. Alle Zwischenschritte werden nicht gespeichert.

Will man nun einen Hash knacken, guckt man in der Spalte mit den Hash-Werten, ob dieser dort vorhanden ist. Wenn nicht, wird der Hash durch die Reduktionsfunktion geschickt und wieder gehasht. Dann wird wieder geprüft usw. usf. Hat man irgendwann einen Treffer, muss man nur noch den gespeicherten Anfangs-Klartext der jeweiligen Chain entsprechend oft durch die Hash- und Reduktionsfunktion laufen lassen, bis man den Klartext zum Hash hat.

Ist ein Hash jedoch gesalzen, dann klappt das nicht mehr so gut. Der Angreifer müsste jetzt für jeden Hash eine neue Rainbow-Table errechnen, da dasselbe Kennwort plötzlich unterschiedliche Hashes produziert.
Den Aufwand kann sich der Angreifer auch sparen und gleich per Bruteforce stumpf alle Kombinationen durchprobieren.

Weitere Möglichkeiten, um Rainbow-Tables ineffektiv zu machen, sind stärkere Hashing-Algorithmen, Key-Strengthening durch wiederholtes Hashing und natürlich längere Passphrasen, da mit ihnen auch die Größe der Tabelle steigt.]]></description>
		<content:encoded><![CDATA[<p>Kleine Ergänzung bzw. Konkretisierung zu Rainbow-Tables und Salts: anders als ein Wörterbuch, listet eine Rainbow-Table nicht bloß typische Trivialpasswörter, sondern im Idealfall einen Großteil aller möglichen Kombinationen (sofern bei einem Hashing-Verfahren wie LM-Hashes die maximale Passwortlänge begrenzt ist). Dies schließt nicht bloß Trivialpasswörter ein. Da hierdurch aber natürlich ab einer bestimmten Schlüssellänge die Festplattenkapazität der Menschheit überschritten würde, nutzt man ein intelligentes Verfahren, das in etwa so aussieht:</p>
<p>Man nimmt sich ein Klartextkennwort und schickt das durch die Hash-Funktion. Diesen generierten Hash schickt man durch eine Reduktionsfunktion, die aus dem Hash einen beliebigen weiteren Klartext erzeugt (z.B. indem es die ersten x Zeichen das Hash-Werts nutzt). Dieser neue Klartext wird dann wieder gehasht usw. Nach einer bestimmten Anzahl an Iterationen hört man auf und speichert den letzten Hash zusammen mit dem Klartext, mit dem man begonnen hat. Dann fängt man mit der nächsten (Chain) an, mit der man auf dieselbe Art verfährt.<br />
So hat man hinterher eine umfangreiche Liste von Anfangs-Klartext-Kennwörtern und End-Hash-Werten. Alle Zwischenschritte werden nicht gespeichert.</p>
<p>Will man nun einen Hash knacken, guckt man in der Spalte mit den Hash-Werten, ob dieser dort vorhanden ist. Wenn nicht, wird der Hash durch die Reduktionsfunktion geschickt und wieder gehasht. Dann wird wieder geprüft usw. usf. Hat man irgendwann einen Treffer, muss man nur noch den gespeicherten Anfangs-Klartext der jeweiligen Chain entsprechend oft durch die Hash- und Reduktionsfunktion laufen lassen, bis man den Klartext zum Hash hat.</p>
<p>Ist ein Hash jedoch gesalzen, dann klappt das nicht mehr so gut. Der Angreifer müsste jetzt für jeden Hash eine neue Rainbow-Table errechnen, da dasselbe Kennwort plötzlich unterschiedliche Hashes produziert.<br />
Den Aufwand kann sich der Angreifer auch sparen und gleich per Bruteforce stumpf alle Kombinationen durchprobieren.</p>
<p>Weitere Möglichkeiten, um Rainbow-Tables ineffektiv zu machen, sind stärkere Hashing-Algorithmen, Key-Strengthening durch wiederholtes Hashing und natürlich längere Passphrasen, da mit ihnen auch die Größe der Tabelle steigt.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: nk</title>
		<link>http://workingdraft.de/82/#comment-840</link>
		<dc:creator>nk</dc:creator>
		<pubDate>Thu, 02 Aug 2012 16:19:12 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-840</guid>
		<description><![CDATA[Besonders gut wurde das Thema md5 ohnehin nicht beschrieben.

1. md5 ist keine Verschlüsselung, sondern ein Hashing-Algorithmus. Eine Eingabe wird dabei in einen möglichst einzigartigen (und stets gleichen) Hash überführt. Eine Prüfung gleicher Hashes legt gleiche Eingabestrings nahe. Gleiche Hashes verschiedener Eingaben nennt man Kollision.
2. Eine Rainbow Table „knackt“ nicht „irgendwie“ die Eingabe, sondern erzeught und listet Hashes typischer Eingabestrings (Trivialpasswörter etc.) und erlaubt so die Rückführung gefundener Hashes auf ein Passwort.
3. Salting hat die Aufgabe (auch Trivial-)Eingabestring so zu verlängern und durch Salts mit vielen Sonderzeichen die Entropie des Passworts zu erhöhen, so dass keine passende Rainbow-Table gefunden werden kann.
4. Natürlich kann für einen bekannten Salt eine eigenständige Rainbowtable für das Salting-Verfahren erstellt werden. Um diesen Prozess zu erschweren (die Erstellungszeit/den Aufwand für Angreifer zu erhöhen), können mehrstufige Hashing-Runden und vom jeweiligen User-Kontext abhängige dynamische Salts verwendet werden. Ist hier der Username involviert, macht es selbstredend wieder Sinn, die verfügbaren Usernamen nicht zu veröffentlichen. So erhöht sich selbt bei bekanntem Hashing-Verfahjren wiederum der Aufwand.

&gt; selber salten ist relativ blödsinn

Hier ging es nicht um „selber salten“, sondern darum ein möglichst langes und doch merkbares Passwort zu bekommen. Ist darauf die Bildungsvorschrift für das Passwort ersichtlich, ist das natürlich problematisch, wenn das Passwort im Klartext vorliegt. Eine Strategie könnte sein, den Dienst erst mit einem anderen Passwort zu testen (bspw. auch mal die Passwort-Recovery anzustoßen) und erst später auf ein merkbares PW umzusteigen, wenn man dem Dienst hinreichend vertraut.

Was XOXOCO anbelangt: Ist ne ziemliche Müll-Idee.
1. E-Mail-Speicher sind kein zuverlässiger Passwort-Safe. 
- Wie werden Daten gespeichert?
- Daten werden bspw. für Spam-Algorithmen vom Dienstanbieter verarbeitet
- Ist dem Dienstanbieter zu vertrauen
- Wie ist es um die Sicherheit von Client-Software bestellt?
2. E-Mail-Dienste können nicht erreichbar sein
3. E-Mail-Dienste können eingestellt werden
- Anbieter wird von anderem Unternehmen aufgekauft (Vertrauen)
- Anbieter geht pleite
- Anbieter ändert seine AGB
- Anbieter sperrt den Account (Google ist da ganz groß drin)
3a. Wenn es keine andere Auth-Methode gibt, wie kann ich nach XOXOCO die E-Mail-Angabe ändern? Es macht wohl kaum Sinn, hier die E-Mail-Adresse als Merkmal zu verwenden, wenn mein Account gehackt wurde oder der Mail-Service nicht mehr erreichbar ist.
4. Datenaufkommen
- eine E-Mail pro Anmeldung?
- Spam
- E-Mail ist so schon schwer genug zu verwalten
5. Nutzungskontext
- Aus einem Kontext (Browser) werden zwei (Browser, E-Mail-Client). Das Auth-Verfahren wird aufwendiger, wenn man nicht stets seinen E-Mail-Client laufen hat. 
6. Verbindungssicherheit
- Klartext-Passwort wird ständig durch die Welt geschickt
7. usw.]]></description>
		<content:encoded><![CDATA[<p>Besonders gut wurde das Thema md5 ohnehin nicht beschrieben.</p>
<p>1. md5 ist keine Verschlüsselung, sondern ein Hashing-Algorithmus. Eine Eingabe wird dabei in einen möglichst einzigartigen (und stets gleichen) Hash überführt. Eine Prüfung gleicher Hashes legt gleiche Eingabestrings nahe. Gleiche Hashes verschiedener Eingaben nennt man Kollision.<br />
2. Eine Rainbow Table „knackt“ nicht „irgendwie“ die Eingabe, sondern erzeught und listet Hashes typischer Eingabestrings (Trivialpasswörter etc.) und erlaubt so die Rückführung gefundener Hashes auf ein Passwort.<br />
3. Salting hat die Aufgabe (auch Trivial-)Eingabestring so zu verlängern und durch Salts mit vielen Sonderzeichen die Entropie des Passworts zu erhöhen, so dass keine passende Rainbow-Table gefunden werden kann.<br />
4. Natürlich kann für einen bekannten Salt eine eigenständige Rainbowtable für das Salting-Verfahren erstellt werden. Um diesen Prozess zu erschweren (die Erstellungszeit/den Aufwand für Angreifer zu erhöhen), können mehrstufige Hashing-Runden und vom jeweiligen User-Kontext abhängige dynamische Salts verwendet werden. Ist hier der Username involviert, macht es selbstredend wieder Sinn, die verfügbaren Usernamen nicht zu veröffentlichen. So erhöht sich selbt bei bekanntem Hashing-Verfahjren wiederum der Aufwand.</p>
<p>&gt; selber salten ist relativ blödsinn</p>
<p>Hier ging es nicht um „selber salten“, sondern darum ein möglichst langes und doch merkbares Passwort zu bekommen. Ist darauf die Bildungsvorschrift für das Passwort ersichtlich, ist das natürlich problematisch, wenn das Passwort im Klartext vorliegt. Eine Strategie könnte sein, den Dienst erst mit einem anderen Passwort zu testen (bspw. auch mal die Passwort-Recovery anzustoßen) und erst später auf ein merkbares PW umzusteigen, wenn man dem Dienst hinreichend vertraut.</p>
<p>Was XOXOCO anbelangt: Ist ne ziemliche Müll-Idee.<br />
1. E-Mail-Speicher sind kein zuverlässiger Passwort-Safe.<br />
- Wie werden Daten gespeichert?<br />
- Daten werden bspw. für Spam-Algorithmen vom Dienstanbieter verarbeitet<br />
- Ist dem Dienstanbieter zu vertrauen<br />
- Wie ist es um die Sicherheit von Client-Software bestellt?<br />
2. E-Mail-Dienste können nicht erreichbar sein<br />
3. E-Mail-Dienste können eingestellt werden<br />
- Anbieter wird von anderem Unternehmen aufgekauft (Vertrauen)<br />
- Anbieter geht pleite<br />
- Anbieter ändert seine AGB<br />
- Anbieter sperrt den Account (Google ist da ganz groß drin)<br />
3a. Wenn es keine andere Auth-Methode gibt, wie kann ich nach XOXOCO die E-Mail-Angabe ändern? Es macht wohl kaum Sinn, hier die E-Mail-Adresse als Merkmal zu verwenden, wenn mein Account gehackt wurde oder der Mail-Service nicht mehr erreichbar ist.<br />
4. Datenaufkommen<br />
- eine E-Mail pro Anmeldung?<br />
- Spam<br />
- E-Mail ist so schon schwer genug zu verwalten<br />
5. Nutzungskontext<br />
- Aus einem Kontext (Browser) werden zwei (Browser, E-Mail-Client). Das Auth-Verfahren wird aufwendiger, wenn man nicht stets seinen E-Mail-Client laufen hat.<br />
6. Verbindungssicherheit<br />
- Klartext-Passwort wird ständig durch die Welt geschickt<br />
7. usw.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: nk</title>
		<link>http://workingdraft.de/82/#comment-839</link>
		<dc:creator>nk</dc:creator>
		<pubDate>Thu, 02 Aug 2012 13:29:29 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-839</guid>
		<description><![CDATA[Eine Diskussion über CSS-Wiederverwertung ohne Hinweise auf Stubbornella? https://github.com/stubbornella/oocss]]></description>
		<content:encoded><![CDATA[<p>Eine Diskussion über CSS-Wiederverwertung ohne Hinweise auf Stubbornella? <a href="https://github.com/stubbornella/oocss" rel="nofollow">https://github.com/stubbornella/oocss</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Franky</title>
		<link>http://workingdraft.de/82/#comment-838</link>
		<dc:creator>Franky</dc:creator>
		<pubDate>Thu, 02 Aug 2012 11:09:48 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-838</guid>
		<description><![CDATA[ad Security:
- &quot;md5 nicht mehr sicher&quot;: das liegt vielleicht daran dass md5 nie dazu gedacht war was sicher zu &quot;verschlüsseln&quot; (tatsächlich hashen) sondern um korrektheit von großen Dateien zu überprüfen. Wenn man was brauchbares will muss man halt sowas wie SHA-1 oder wie auch immer nehmen da explizit drauf ausgelegt ist dass man eben keine Kollisionen zusammenkriegt etc. etc. .
- selber salten ist relativ blödsinn da einfach festzustellen. außerdem hilft einen das beste salt nicht wenn dann das passwort in entschlüsselbarer form (vorzugsweise natürlich plain-text ;)) und nicht als irreversibler hash gespeichert wurde.
- ganz das schlimmste: business-requirement dass das telefon-service-team das passwort vorlesen können muss :D]]></description>
		<content:encoded><![CDATA[<p>ad Security:<br />
- &#8220;md5 nicht mehr sicher&#8221;: das liegt vielleicht daran dass md5 nie dazu gedacht war was sicher zu &#8220;verschlüsseln&#8221; (tatsächlich hashen) sondern um korrektheit von großen Dateien zu überprüfen. Wenn man was brauchbares will muss man halt sowas wie SHA-1 oder wie auch immer nehmen da explizit drauf ausgelegt ist dass man eben keine Kollisionen zusammenkriegt etc. etc. .<br />
- selber salten ist relativ blödsinn da einfach festzustellen. außerdem hilft einen das beste salt nicht wenn dann das passwort in entschlüsselbarer form (vorzugsweise natürlich plain-text ;)) und nicht als irreversibler hash gespeichert wurde.<br />
- ganz das schlimmste: business-requirement dass das telefon-service-team das passwort vorlesen können muss :D</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Schnupp</title>
		<link>http://workingdraft.de/82/#comment-837</link>
		<dc:creator>Schnupp</dc:creator>
		<pubDate>Thu, 02 Aug 2012 10:37:02 +0000</pubDate>
		<guid isPermaLink="false">http://workingdraft.de/?p=1389#comment-837</guid>
		<description><![CDATA[Super Thema. Finde es immer gut wenn ihr über konkrete Workflows und eure tägliche Praxis redet.]]></description>
		<content:encoded><![CDATA[<p>Super Thema. Finde es immer gut wenn ihr über konkrete Workflows und eure tägliche Praxis redet.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
