Welke beveiliging voor mijn wachtwoorden?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Chris -

Chris -

20/08/2012 11:03:01
Quote Anchor link
John, je berekeningen kloppen gewoon en ik ben het met je eens dat MD5 in sommige gevallen wel degelijk veilig is. Kun je me meer info geven over de string van 4 karakters? Je geeft aan:

Quote:
En hier een hash van slechts 4 tekens, met UTF-8 characterset:
98c3fb05726ecc2c96153ec6e4bf2895


Bedoel je hier letterlijk álle karakters mee, dus ook de éáí e.d.?
 
PHP hulp

PHP hulp

25/11/2024 01:45:56
 
Chris PHP

Chris PHP

20/08/2012 11:04:23
Quote Anchor link
John Berg op 20/08/2012 10:36:08:
Chris NVT op 20/08/2012 10:22:58:
Het gaat hier niet over goed of niet goed, het gaat hier om wat veiliger is, en dat is MD5 niet. Nogmaals zoals ik in mijn eerdere post al zij, kijk eens naar sha() met een salt en pepper of naar crypt().

Dit is van een vorige poster link.


Als ik google op "MD5 veilig", dan staat hier dat SHA "gekraakt" is, en MD5 nog steeds veilig. http://www.security.nl/article/14293/1/%22SHA-1_algoritme_in_principe_gekraakt%22.html

Het zal allemaal wel, veel geroep maar geen bewijs!

Oh ja. .. het linkje met de reverse hashing geeft voor alle 3 de opgeven hashes geen oplossing. Had ik ook niet verwacht.


Anders zoek er nog wat berichten van 6 jaar oud bij! Je link is van 28-08-2006.

Met jou methode is collision gewoon veel voorkomender, en waarom? Dat is heel makkelijk.

Mensen die site's gebruiken zoals die link wordt het niet alleen omgezet, maar ook gelijk toegevoegd aan een database. Dus jou mooie dubbele MD5 kan zomaar ook 'iamgod' betekenen of iets dergelijks. Z'n databases zoeken of de hash voorkomt in hun database, en zoja welke plaintext daar aan vast hangt. Dit kan zomaar iets heel anders zijn dan jij gemaakt hebt, dit wordt bedoeld met collision.

Maarja ik ga niet tegen een muur praten, MD5 kan gewoon gebruikt worden, echter raad ik en sommige andere mede forum leden dit niet aan. Ga naar nieuwere modellen.

En je mooie post van de sha() in principe gehacked is leuk, maar met een goede salt en pepper lukt dat natuurlijk ook niet!
Gewijzigd op 20/08/2012 11:05:58 door Chris PHP
 
John Berg

John Berg

20/08/2012 11:17:07
Quote Anchor link
Chris op 20/08/2012 11:03:01:
John, je berekeningen kloppen gewoon en ik ben het met je eens dat MD5 in sommige gevallen wel degelijk veilig is. Kun je me meer info geven over de string van 4 karakters? Je geeft aan:

Quote:
En hier een hash van slechts 4 tekens, met UTF-8 characterset:
98c3fb05726ecc2c96153ec6e4bf2895


Bedoel je hier letterlijk álle karakters mee, dus ook de éáí e.d.?


Natuurlijk, het is utf-8. Er zijn dus ook multi byte combi's mogelijk. Tja .. en utf-8 chars kunnen 1,2 of 3 bytes lang zijn .. Dus €ö@! is een geldige 4 char utf-8 string.

Ik wilde een voorbeeld geven, maar het forum accepteerd helaas geen UTF-8 chars. De editor wel, maar als je dan post komen er ????

linkje met voorbeeld van 3 chars http://translate.google.nl/#nl/zh-TW/vrede
Gewijzigd op 20/08/2012 11:28:55 door John Berg
 
Chris -

Chris -

20/08/2012 11:40:55
Quote Anchor link
Pfoe, dan wordt het best lastig ja ;-) Hépíng zelf zou nog wel lukken, maar met de chinese karakters zelf wordt het ondoenlijk haha!
 
John Berg

John Berg

20/08/2012 11:55:57
Quote Anchor link
Chris op 20/08/2012 11:40:55:
Pfoe, dan wordt het best lastig ja ;-) Hépíng zelf zou nog wel lukken, maar met de chinese karakters zelf wordt het ondoenlijk haha!

Het waren russische chars, de plain text was € + het russisch van vrede. ;-)

Waar het om ging, als je 4 char utt chars als salt gebruikt moet je in beginsel alle 256 chars berekenen, en dan uitgaan van 12 bytes.

Dat geeft 256^12 mogelijkheden = 7,9 x 10^28 .. zelfs als je 1 miljard hashes per seconde kunt berekenen (wat sommige GPU's claimen te kunnen, nooit bewijs gezien) dan duurt het nog steeds 2,5 triljoen jaar om alle combinaties door te rekenen :-)))

n.b. Het opnemen van een UTF-8 teken, zoals € of ? (griekse P ) in je password doet de veiligheid dus enorm toenemen. TIP!
Gewijzigd op 20/08/2012 12:02:03 door John Berg
 
Sander Heuv

Sander Heuv

20/08/2012 12:39:34
Quote Anchor link
Wow zeg, toen ik zojuist ging kijken of ik al wat reacties had gekregen op mijn topic, leek het net of er oorlog was uitgebroken :P

Enorm bedankt voor de berichten en informatie. Ik heb nu bijna alleen berichten gezien die over de veiligheid van MD5 gaan. zouden jullie misschien ook nog voor/nadelen kunnen noemen van Sha1 en bijv bcrypt?(kan ik alle manieren met elkaar afwegen). Ik wil graag een beveiliging opstellen die nog een poos mee kan gaan.

alvast thx!!
 
John Berg

John Berg

20/08/2012 12:47:31
Quote Anchor link
Sander Heuv op 20/08/2012 12:39:34:
Wow zeg, toen ik zojuist ging kijken of ik al wat reacties had gekregen op mijn topic, leek het net of er oorlog was uitgebroken :P

Enorm bedankt voor de berichten en informatie. Ik heb nu bijna alleen berichten gezien die over de veiligheid van MD5 gaan. zouden jullie misschien ook nog voor/nadelen kunnen noemen van Sha1 en bijv bcrypt?(kan ik alle manieren met elkaar afwegen). Ik wil graag een beveiliging opstellen die nog een poos mee kan gaan.

alvast thx!!

Ik denk dat de moraal van het verhaal er eigenlijk op neer komt dat het niet zoveel uitmaakt welk (bekend) algoritme je voor de versleuteling gebruikt.

Belangrijker is het dat je password gesalt wordt met een voldoende lange string, die waar mogelijk multibyte characters bevat.

En wat totaal onderbelicht is gebleven, als een hacker de hashes niet kan bemachtigen valt er ook niks te kraken. Zou je je password in een msql database opslaan en je kiest voor de mysqli driver dan ben je veel gevoeliger voor SQL injection (en dus het verlies van hashes aan hackers) dan wanneer je de pdo_mysql driver met parameter binding gebruikt.
 
Chris PHP

Chris PHP

20/08/2012 12:50:13
Quote Anchor link
Ik raad je aan om voor crypt() te gaan. Kijk op de site voor gebruik en voorbeelden.
 
John Berg

John Berg

20/08/2012 12:56:40
Quote Anchor link
Chris NVT op 20/08/2012 12:50:13:
Ik raad je aan om voor crypt() te gaan. Kijk op de site voor gebruik en voorbeelden.


Haha .. grapjes. Uit het linkje dat je gaf (2e regel):
Some operating systems support more than one type of hash. In fact, sometimes the standard DES-based algorithm is replaced by an MD5-based algorithm.
 
Chris PHP

Chris PHP

20/08/2012 12:58:56
Quote Anchor link
John Berg op 20/08/2012 12:56:40:
Haha .. grapjes. Uit het linkje dat je gaf (2e regel):
Some operating systems support more than one type of hash. In fact, sometimes the standard DES-based algorithm is replaced by an MD5-based algorithm.


Wat wil je hier mee zeggen? Raad ik hier ergens aan om DES of MD5 te gebruiken? crypt ondersteunt ook gewoon sha vriend.
Gewijzigd op 20/08/2012 13:00:02 door Chris PHP
 
John Berg

John Berg

20/08/2012 13:04:14
Quote Anchor link
Chris NVT op 20/08/2012 12:58:56:
John Berg op 20/08/2012 12:56:40:
Haha .. grapjes. Uit het linkje dat je gaf (2e regel):
Some operating systems support more than one type of hash. In fact, sometimes the standard DES-based algorithm is replaced by an MD5-based algorithm.


Wat wil je hier mee zeggen? Raad ik hier ergens aan om DES of MD5 te gebruiken? crypt ondersteunt ook gewoon sha vriend.

Vriend .. ik raad je aan om dat wat in het linkje staat eens goed te lezen. De Crypt() functie gebruikt een algoritme dat afhankelijk is van de libraries die op het host systeem staan. Als je Crypt gebruikt weet je vooraf niet welk algoritme hij zal gebruiken, tenzij je zelf de host beheert en een algoritme dwingend oplegt!!

Lekker om iets te beveiligen waarbij je vooraf niet weet welk algoritme het systeem zal gebruiken. Het wordt vast ik zeker heel veilig wat je gaat maken.
 
Chris PHP

Chris PHP

20/08/2012 13:08:07
Quote Anchor link
John Berg op 20/08/2012 13:04:14:
Chris NVT op 20/08/2012 12:58:56:
John Berg op 20/08/2012 12:56:40:
Haha .. grapjes. Uit het linkje dat je gaf (2e regel):
Some operating systems support more than one type of hash. In fact, sometimes the standard DES-based algorithm is replaced by an MD5-based algorithm.


Wat wil je hier mee zeggen? Raad ik hier ergens aan om DES of MD5 te gebruiken? crypt ondersteunt ook gewoon sha vriend.

Vriend .. ik raad je aan om dat wat in het linkje staat eens goed te lezen. De Crypt() functie gebruikt een algoritme dat afhankelijk is van de libraries die op het host systeem staan. Als je Crypt gebruikt weet je vooraf niet welk algoritme hij zal gebruiken, tenzij je zelf de host beheert en een algoritme dwingend oplegt!!

Lekker om iets te beveiligen waarbij je vooraf niet weet welk algoritme het systeem zal gebruiken. Het wordt vast ik zeker heel veilig wat je gaat maken.


=.= voordat je nu nog meer gaat roepen, kijk eens naar de eerste voorbeelden. Ik zal ze hieronder zetten voor je.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
/* These salts are examples only, and should not be used verbatim in your code.
   You should generate a distinct, correctly-formatted salt for each password.
*/

if (CRYPT_STD_DES == 1) {
    echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl') . "\n";
}


if (CRYPT_EXT_DES == 1) {
    echo 'Extended DES: ' . crypt('rasmuslerdorf', '_J9..rasm') . "\n";
}


if (CRYPT_MD5 == 1) {
    echo 'MD5:          ' . crypt('rasmuslerdorf', '$1$rasmusle$') . "\n";
}


if (CRYPT_BLOWFISH == 1) {
    echo 'Blowfish:     ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "\n";
}


if (CRYPT_SHA256 == 1) {
    echo 'SHA-256:      ' . crypt('rasmuslerdorf', '$5$rounds=5000$usesomesillystringforsalt$') . "\n";
}


if (CRYPT_SHA512 == 1) {
    echo 'SHA-512:      ' . crypt('rasmuslerdorf', '$6$rounds=5000$usesomesillystringforsalt$') . "\n";
}

?>


Zo gebruik je crypt, niemand gebruikt crypt zonder aan te geven welke methode hij wil gebruiken. Ik ga hier nu niet verder in discussie, aangezien dit niet mijn topic is.
 
Write Down

Write Down

20/08/2012 16:44:39
Quote Anchor link
Ik ben het er mee eens dat als je extreem ver gaat een MD5 lastiger te kraken is. Ikzelf ga de uitdaging ook niet aan, ik heb nooit beweerd dat ik het zelf kan. Ik heb echter al op 'onderwereld' forums verbazingwekkende zaken gezien.

Om op dat laatste nog even door te gaan... Je berekeningen zijn wellicht correct, ik heb ze niet gecontroleerd. Alleen voor zover ik ze bekeken heb, ga je er altijd vanuit dat een hacker maar 1 machine gebruikt. Dat is niet erg realistisch... Er zijn in het verleden al enorme botnets blootgelegd. Ik zeg niet dat deze daarom voor een MD5 te kraken gebruikt worden (lijkt me eerder uitzonderlijk), maar het zou wel kunnen. Ik herinner me bijvoorbeeld nog het Grum botnet, dat maar liefst (even gegoogeled) 560 000 840 000 'slachtoffers' had.

Of MD5 nu lastig te kraken is of niet, ik vind het naïef wanneer je beweerd dat MD5 de beste oplossing is. Er zijn nu eenmaal sterkere algoritmes beschikbaar. Waarom zou je dan ook niet gebruiken? Dit is ook eerder het punt dat ik wou maken en wellicht ook Chris.
 
Sander Heuv

Sander Heuv

21/08/2012 20:45:56
Quote Anchor link
Ik heb de volgende beveiliging gemaakt. Ik hoop dat deze een beetje veilig is, en dat ik het een beetje heb begrepen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$wachtwoord
= sha1($_POST['wachtwoord']);
$salt = md5($_POST['gebruikersnaam']);
$pepper = "l81hb42asv52";   <-- heb ik ff veranderd ofc :P

$wachtwoordencrypt = $salt . $wachtwoord . $pepper;
?>


Wat ik in feite heb gedaan is een sha1 encryptie over het wachtwoord gedaan, een md5 encryptie over de gebruikersnaam gedaan (wat dus de salt moet worden), en vervolgens een random getal ingevoerd als pepper. vervolgens dit achter elkaar geplaatst.

als jullie hier een oordeel over kunnen vellen zou dat nice wezen.

alvast bedankt!
Gewijzigd op 21/08/2012 20:47:10 door Sander Heuv
 
Marco PHPJunky

Marco PHPJunky

21/08/2012 23:26:32
Quote Anchor link
had je er al over na gedacht hoe je het bij het opvragen gaat controleren ?

maar ik zou hellemaal geen md5 meer gebruiken.
ik zou het dan zo doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?PHP
$wachtwoordencrypt
= hash('sha512', $wachtwoord . $pepper_string);
?>

(met eventueel nog een salt erbij)

Je kan dan beter ipv dat random getal een vaste waarde pakken en daar een leuke berekening op los laten. Voorbeeld: Gebruikers registratie datum van de gebruiker en daar 1000 dagen vanaf halen dan heb je gelijk een leuke pepper
 
John Berg

John Berg

21/08/2012 23:28:56
Quote Anchor link
Wel wat "over the top". Salt en Pepper!

Het is de bedoeling dat je de salt in de sha1 stopt.

Dit lijkt me meer dan voldoende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$salt
= "l81hb42asv52";   <-- heb ik ff veranderd ofc :P
$wachtwoordhash = sha1( $salt . $_POST['wachtwoord'] );
?>
Gewijzigd op 21/08/2012 23:31:14 door John Berg
 
Dos Moonen

Dos Moonen

21/08/2012 23:59:19
 
Leon blabla

Leon blabla

22/08/2012 00:26:38
 

Pagina: « vorige 1 2



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.