myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Rund um die Programmierung » Kennwortsicherheit - Hashing von Kennwörtern
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Kennwortsicherheit - Hashing von Kennwörtern

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
myCSharp.de
Moderationshinweis von herbivore (30.03.2008 16:36):

Dies ist ein Thread, auf den aus der FAQ verwiesen wird. Bitte keine weitere Diskussion, sondern nur wichtige Ergänzungen und diese bitte knapp und präzise. Vielen Dank!
 
Xynratron
myCSharp.de-Mitglied

Dabei seit: 24.09.2006
Beiträge: 1.177
Entwicklungsumgebung: VS 2005 - 2015


Xynratron ist offline

Kennwortsicherheit - Hashing von Kennwörtern

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo zusammen,

Immer wieder stößt man auf die Frage, „Wie soll ich denn nun Kennwörter speichern“ – und diverse Tipps dazu. Nachdem das Deutsche Support-Forum von  phpBB gehackt wurde habe ich mich auch endlich mal intensiver mit diesem Thema beschäftigt und bin  hier auf einen sehr schönen Artikel dazu gestoßen, welchen ich etwas zusammenfassen möchte um eine für jeden einfach zu implementierende Lösung vorzustellen.

Im Grunde gibt es zwei große Bedrohungszenarien:

Jemand erhält Zugriff auf die Datenbank in welcher die Benutzer gespeichert sind

Die Lösung sollte jedem klar sein, die Kennwörter müssen verschlüsselt werden, damit unsere Datenbank nicht z.B.  hier zu finden ist. Die Art der Verschlüsselung ist da schon kniffliger, hier herrscht die einhellige Meinung, dass ein Hash des Kennwortes reicht, bzw. auch zwingend verwendet werden sollte, da mit einer (umkehrbaren) Verschlüsselung das Klartext-Kennwort wieder zu errechnen wäre.
Gerne wird z.B. der viel zitierte MD5-Algorithmus verwendet, leider gibt es hierfür Tabellen welche die Kennwort-Hashes für Kennwörter bis 12 (!) Zeichen Länge bereits berechnet haben (Rainbow-Tables). Dann wird eben Salting vorgeschlagen (ein verlängern des Kennwortes ohne Benutzereingriff auf mehr Stellen) - hier kommen wir direkt zu

Der Code, welchen wir zum verschlüsseln verwenden ist bekannt.

Wenn jemand die Art des Hashings kennt, kann er im mindesten durch einen Brut-Force-Angriff versuchen die Kennwörter zu erraten. Hier mag man einwenden, dass dies Rechenzeit benötigt und Informationen nur dann wertvoll sind, solange sie aktuell sind. Und genau dass ist die Lösung: Der Angreifer muss soviel Rechenzeit verbrauchen, dass er schlichtweg in der ihm zur Verfügung stehenden Zeit nicht zu einem zufrieden stellenden Ergebnis kommt. Dies ist leider mit den „gebräuchlichen“ Hash-Algorithmen nicht möglich, da diese auf Geschwindigkeit optimiert wurden. Dies bedeutet eben im Umkehrschluss auch MD5/DES/SHA ist ungeeignet für Kennwörter.

Aber genau aus diesem Grund gibt es Algorithmen welche auf benötigte Rechenleistung optimiert wurden z.B. „bcrypt“ von Neils Provos und David Mazieres welcher für OpenBSD 1999(!!) eingeführt wurde. Dieser ist eine Blowfish-Implementation welche angenehm viel Rechenzeit benötigt – und dies auch noch „einstellbar“. Wenn in 4 Jahren ein gebräuchlicher PC bcrypt schnell berechnen kann, so ändert man den eigenen Code einfach auf eine höhere Iterationsrate und ist wieder sicherer.

Eine schöne Implementation für C# ist  hier zu finden. Es ist in der Tat sehr wenig Code, welcher einfach einzubinden und unsere Applikationen deutlich sicherer machen kann. Das erstellen eines Kennwort-Hashes der Stärke 12 dauert ca. 1 Sekunde, hochgerechnet auf die maximal verfügbare Stärke 31 sind das ca. 6 Tage pro Hash. Na, dann mal viel Spaß beim Brut-Force.

Um es noch einmal zu betonen, dies hier ist eine Zusammenfassung, damit jemand der etwas sucht auch hier im Forum fündig wird. All meine Informationen sind aus den verlinkten Quellen. Für Kritik und Anregungen bin ich natürlich trotzdem offen.

Quellen:

 heise.de
 Thomas Ptacek
 Derek Slager

:-)

Xynratron

Edit: Dead-Links ersetzt

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Xynratron am 21.11.2010 12:38.

30.03.2008 14:44 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.474
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Xynratron,

vielen Dank dafür. Damit dein Beitrag nicht so schnell untergeht, habe ich ihn mal aus der FAQ verlinkt.

herbivore
30.03.2008 16:37 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Xynratron
myCSharp.de-Mitglied

Dabei seit: 24.09.2006
Beiträge: 1.177
Entwicklungsumgebung: VS 2005 - 2015

Themenstarter Thema begonnen von Xynratron

Xynratron ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Herbivore,

Hauptsache es spricht sich langsam rum^^

:-)

Xynratron
30.03.2008 23:18 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegen mehr als 2 Monate.
Joetempes Joetempes ist männlich
myCSharp.de-Mitglied

avatar-3309.jpg


Dabei seit: 29.03.2007
Beiträge: 888
Herkunft: Germany


Joetempes ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke, sowas hab ich gesucht!
23.06.2008 15:38 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Siassei Siassei ist männlich
myCSharp.de-Mitglied

Dabei seit: 15.02.2008
Beiträge: 401


Siassei ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Xynratron,

danke für diesen Artikel Daumen hoch

Zitat:
... Wenn in 4 Jahren ein gebräuchlicher PC bcrypt schnell berechnen kann, so ändert man ...

Wie immer gibt's einen Haken Augenzwinkern Leider unglücklich
23.06.2008 19:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
kleines_eichhoernchen kleines_eichhoernchen ist männlich
myCSharp.de-Mitglied

avatar-2079.jpg


Dabei seit: 07.11.2006
Beiträge: 3.971
Entwicklungsumgebung: Visual Studio 2005 (C#)
Herkunft: Ursprünglich Vogtland, jetzt Much


kleines_eichhoernchen ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Es gibt auf der Welt viele Gruppen von Wissenschaftlern und Mathematikern, die bestehende Verschlüsselungsalgorithmen, Hashing-Verfahren sowie Verfahren zum Key-Austausch knacken. Beispiel  Wiki: Geburtstagsangriff. Es werden dabei Algorithmen entwickelt, die den Rechenaufwand von Brute-Force um einen Faktor von 1000 und mehr mindert. So sind beispielsweise nicht nur performanterer Rechner für das knacken schuld, sondern auch hochqualifizierte und vorallem hochbezahlte Mathematiker. Doch mittels einfachen zusätzlichen Möglichkeiten kann man das ganze wieder erschwären (Salted Hash beispielsweise), aber NIE verhindern.

Weiteres Beispiel, Asymetrische Verschlüsselung (2 unterschiedliche Keys) basiert auf der Annahme, das es keinen Algorithmus gibt, der Primzahlen von der Größe von 2 ^ 1024 Bit in wenigen Millisekunden Faktorisieren kann. Kleine Zahlen lernt man bereits in der Grundschule zu Faktorisieren. Wenn morgen allerdings ein neuer Algorithmus entwickelt wird, der die Zeit zum Faktorisieren um den Faktor 5.000 bis 10.000 verringert, gelten die meisten Schlüssel im Netz bereits wieder als unsicher. Möglichkeiten zum Gegenwirken: Die Größe des Keys erhöhen (auf zum Beispiel 2 ^ 8192) oder aber neuer Verschlüsselungsalgorithmus
23.06.2008 20:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 12 Jahre.
Der letzte Beitrag ist älter als 11 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 29.05.2020 16:21