Upload
steffen-gebert
View
11.235
Download
1
Tags:
Embed Size (px)
DESCRIPTION
English version available here: http://www.slideshare.net/StephenKing/secure-password-storing-with-saltedpasswords-in-typo3 Erklärung der Systemextension "saltedpasswords" zur sicheren Speicherung von Passwörtern in TYPO3-Installationen. Vortrag auf dem TYPO3camp Munich 2010 http://www.typo3camp-munich.de
Citation preview
Inspiring people toshare
TYPO3-Camp München - 11./12. September 2010
Passwörter sicher speichern mit saltedpasswords
Image: Carlos Porto / FreeDigitalPhotos.net
Inspiring people tosharePasswörter sicher speichern mit saltedpasswords
Passwörter sicher speichern mit derSystemextension saltedpasswords
Steffen Gebert <[email protected]>
TYPO3-Camp München - 11./12. September 2010
Inspiring people tosharePasswörter sicher speichern mit saltedpasswords
Einführung
Vorstellung
Steffen Gebert
Student, Freelancer
TYPO3 Core Team Member
Inspiring people toshare
Einführung
Passwörter sicher speichern mit saltedpasswords
Upps..TYPO3 Assicciation, 3rd Quarterly Report 2008
“What happened? An unauthorized person gained administrative access to the typo3.org website. As far as we can tell, an admin password was stolen and used to find out more passwords on typo3.org.”
Speicherung sensibler Daten (z.B. Passwörter) bestmöglichst vermeiden!
Inspiring people toshare
Einführung
Passwörter sicher speichern mit saltedpasswords
Speicherung von PasswörternAbsolutes No-Go: Speicherung des Klartextpassworts
Stattdessen
Speicherung eines Hashes (“Prüfsumme”)
Bei Login nur Vergleich mit dieser Prüfsumme
Inspiring people toshare
Einführung
Passwörter sicher speichern mit saltedpasswords
Grundlagen HashingEinwegfunktion
gleiche Eingabe => gleiches Ergebnismd5(‘joh316’) = ‘bacb98acf97e0b6112b1d1b650b84971’
Rückrichtung algorithmisch nicht möglich
Meistgenutzter Algorithmus: MD5
gilt nicht mehr als sicher (Kollisionen relativ einfach, riesige Rainbowtables verfügbar)
Alternativen (SHA) liefern nur größeren Ergebnisraum=> Verschiebung des Problems auf neue Rainbowtables
Inspiring people toshare
Einführung
Passwörter sicher speichern mit saltedpasswords
Abspeichern eines salted PasswortsBenutzereingabe: ‘joh316’
Salt generieren, z.B. ‘7deb882cf’
Berechnung des Hashesmd5(‘7deb882cf’ . ‘joh316’) = ‘bacedc598493cb316044207d95f7ad54’
Abspeichern von Salt und Hash
Inspiring people toshare
Einführung
Passwörter sicher speichern mit saltedpasswords
Überprüfen eines PasswortsBenutzereingabe: ‘joh316’
Genutztes Salt aus Datenbank auslesen: ‘7deb882cf’
Berechnung des Hashesmd5(‘7deb882cf’ . ‘joh316’) = ‘bacedc598493cb316044207d95f7ad54’
Vergleich mit abgespeichertem Hash
Inspiring people toshare
Die Extension
Passwörter sicher speichern mit saltedpasswords
Systemextension saltedpasswordsUrsprünglich t3sec_saltedpasswords von Marcus Krause
Aufnahme in den Core in Version 4.3 mit Hilfe von Steffen Ritter
Inspiring people toshare
Die Extension
Passwörter sicher speichern mit saltedpasswords
Implementierte salting-MethodenSalted MD5
Portable PHP password hashing framework
Verfügbar für diverse PHP Applikationen (Drupal etc.)
Wiederholte Anwendung von MD5 (langsam)
Blowfish
Verfügbarkeit systemabhängig
Ab PHP 5.3 eigene Implementierung
Inspiring people toshare
Die Extension
Passwörter sicher speichern mit saltedpasswords
Der KnackpunktPasswort muss im Klartext vorliegen
TYPO3 übermittelt standardmäßig nur MD5-Hash
Klartextübertragung jedoch unsicher
Voraussetzung (mind. eine)
SSL-Verbindung
Systemextension rsaauthVerschlüsselt Passwörter vor Übertragung mit RSA-Algorithmus
Inspiring people toshare
Installation & Konfiguration
Passwörter sicher speichern mit saltedpasswords
rsaauthVoraussetzungen
OpenSSL: PHP-Erweiterung empfohlen, Binary als Fallback
JavaScript
Aktivierung
Frontend$TYPO3_CONF_VARS[FE][loginSecurityLevel] = ‘rsa’
Backend$TYPO3_CONF_VARS[BE][loginSecurityLevel] = ‘rsa’;
Inspiring people toshare
Installation & Konfiguration
Passwörter sicher speichern mit saltedpasswords
saltedpasswords mit SSL-VerbindungFrontend
$TYPO3_CONF_VARS[FE][loginSecurityLevel] = ‘normal’
Backend
$TYPO3_CONF_VARS[BE][lockSSL] > 0
Inspiring people toshare
Installation & Konfiguration
Passwörter sicher speichern mit saltedpasswords
Installation saltedpasswordsPrüft Verfügbarkeit von rsaauth oder lockSSL
Aktivierung für FE / BE getrennt
Wahl des Hashing-Algorithmus
Inspiring people toshare
Kompatibilität
Passwörter sicher speichern mit saltedpasswords
AbwärtskompatibilitätExistierende Passwörter? (unsalted MD5)
können nicht sofort konvertiert werden, da nicht im Klartext abgespeichert
einzig möglicher Zeitpunkt: während Login
Inspiring people toshare
Kompatibilität
Passwörter sicher speichern mit saltedpasswords
ExtensionsFrontend
felogin kompatibel
srfeuserregister_t3secsaltedpw
Alternative FE-User Registrierungen?
Ggf. Anpassungen nötig (Single-Signon etc.)
Inspiring people toshare
Hintergrundwissen
Passwörter sicher speichern mit saltedpasswords
PasswortformateMD5 ohne Salt (zur Erinnerung)bacb98acf97e0b6112b1d1b650b84971
MD5 mit Saltbeginnt mit $1$, 12 Zeichen Salt$1$13NETowd$WFpl6npZF71YKkCCzGds2.
Blowfishbeginnt mit $2a$, 22 Zeichen Salt$2a$07$DZpLLz7wtIfhSSMwyEXjA.Nbh6rpDlqbgwVKa.IoDLyuLe5C7Jp8W
PHPASSbeginnt mit $P$$P$Ccw7UIZ..SkvKBXDWnZlZ.qHcbktrB.
Inspiring people toshare
Hintergrundwissen
Passwörter sicher speichern mit saltedpasswords
Passwortformate Pro & ContraPHPASS
niedrige Systemvoraussetzungen (zu jeder PHP-Version kompatibel)
setzt PHPASS-Implementierung in Applikation voraus
MD5 / Blowfish
Unix crypt() Format, kompatibel zu Systemdiensten (/etc/passwd)
vielleicht doch die bessere Wahl (?)
Algorithmen von PHP/System abhängig
mit PHP 5.3.2 auch SHA-256/512 möglich
Inspiring people toshare
Hintergrundwissen
Passwörter sicher speichern mit saltedpasswords
Nutzung von crypt() [3]Passwortüberprüfung:crypt($user_input, $encrypted_password) == $encrypted_password);
Gespeicherter Hash (incl. Salt):$1$13NETowd$WFpl6npZF71YKkCCzGds2.
crypt(joh316, $1$13NETowd$WFpl6npZF71YKkCCzGds2.) = $1$13NETowd$WFpl6npZF71YKkCCzGds2.
crypt(password, $1$13NETowd$WFpl6npZF71YKkCCzGds2.) = $1$13NETowd$SeAArtswHd8jzc9SQvH691
Inspiring people tosharePasswörter sicher speichern mit saltedpasswords
WeblinksFree Rainbow Tableshttp://www.freerainbowtables.com
PHPASShttp://www.openwall.com/phpass/
PHP Manual: crypt()http://de2.php.net/manual/en/function.crypt.php
Wikipedia: crypt (Unix)http://en.wikipedia.org/wiki/Crypt_(Unix)#Library_Function
Inspiring people tosharePasswörter sicher speichern mit saltedpasswords
?????????????
inspiring people to share.