Path: csiph.com!news.swapon.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: k@rl.pflaesterer.de (Karl =?utf-8?Q?Pfl=C3=A4sterer?=) Newsgroups: de.comp.lang.php Subject: Re: Wie kann man eine "Remember =?utf-8?Q?Me=22-Funktionalit?= =?utf-8?Q?=C3=A4t?= sicher erstellen? Date: Mon, 25 Apr 2016 19:50:02 +0200 Lines: 45 Message-ID: References: <1461540323.523787@alpaka.in-berlin.de> <1461571290.458319@alpaka.in-berlin.de> <1t571ddc4di2a51n3e8%sfroehli@Froehlich.Priv.at> <1461578514.714669@alpaka.in-berlin.de> <1461602441.746590@alpaka.in-berlin.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net VqdF9R5zq+s3u4usGRLyKAfM+5FjhCCHO655CRAH3bZZBiT1E= Cancel-Lock: sha1:ie9uCHl4ZD1P+U1KAHn/BzJ0dSY= sha1:qnUdTOmuSFAoHAKS8+K1CT6KaGQ= User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (darwin) Xref: csiph.com de.comp.lang.php:3902 Michael Vogel writes: > Am 25.04.2016 um 14:02 schrieb Karl Pflästerer: > >> Nimm doch eine Funktion, die für diesen Fall geschrieben wurde: http://www.php.net/hash_hmac > > Ganz blöde gefragt: Welchen Vorteil habe ich von dieser Funktion? Mir > geht es ja nur darum, einen Hash-Wert zu erhalten - wie auch immer er > entstanden ist. (https://de.wikipedia.org/wiki/Keyed-Hash_Message_Authentication_Code ) Du kannst dir sicher sein, dass dieser Hash-Wert so ermittelt wurde, dass du nicht die Sicherheit deines Systems schwächst Dies ist dein Code: return(hash("sha256", get_config("system", "site_prvkey"). $user["uprvkey"]. $user["password"])); get_config("system", "site_prvkey") und $user["uprvkey"] dienen als Salt. get_config("system", "site_prvkey") ist hierbei ja wohl für alle Nutzer dieses Systems gleich. Wenn ich es richtig lese, ist uprvkey ein privater Schlüssel (4096 Bit lang). Nutzt es wirklich etwas den System Schlüssel auch noch als Salt zu nehmen? Besser könnte es sein, statdessen mehrere Iterationen bei der Bildung des Hashes vorzunehmen. Alternativ (wird wahrscheinlich nicht gehen, weil es nur in PHP >= 5.5.0 geht) könntest dun auch password_hash nehmen. password_hash iteriert für dich und erzeugt ein neues Salt. Dabei kannst du dich darauf verlassen, dass diese Funktion von Programmierern entworfen wurde, die sich ausgiebig mit Cryptographie beschäftigt haben. Es gibt von Solar Designer phpass (http://www.openwall.com/phpass/ ). Schau dir mal an, wie dort Passwort-hashes gebildet werden. KP