| Visa föregående ämne :: Visa nästa ämne |
| Startad av: |
Meddelande |
Makkesk8
Medlem i: 783 dagar Från: Polen & danmark
Status: Offline
#710128
|
Skrivet: 2011-07-11 13:45
Ämne: Säkrare lösenord (md5 trick)
|
|
|
Yo pojkar och flickor tänkte jag skulle dela med mig av något jag kom på medans jag dushade.
alla vet ju hur ett login script funkar till en databas.. alla lösenord e ofast md5 hashade men jag tänkte vi skulle fucka up det för den som vill decompila lösenordet.
Här är ett vanligt exempel
1: $losenord = md5(mysql_real_espace_string($_POST['losenord']); 2: 3: mysql_query blbalbal
|
Funkar fint men det e rätt lätt att decompila.
Min metod :
1: $losenord = md5(mysql_real_espace_string($_POST['losenord']); 2: 3: $losenord = substr($losenord, 0, -5); 4: 5: mysql_query blbalbal
|
Det funkar så här att substr är en funktion som kan ta bort bokstäver så vi tog bort 5 bokstäver från hashen vilket gör den oläsbar.[/php]
Mer om substr: http://php.net/manual/en/function.substr.php
Använder just nu denna metod i min egna CMS och det funkar jätte bra.
PS. du kan ta bort hur manga bokstäver du vill men kom ihag att du måste använda substr när du skapar ditt konto också.
Mvh Marcus |
|
|
_________________ http://kz-extreme.net/ |
| Till toppen på sidan |
|
kanske
Medlem i: 2144 dagar
Status: Offline
#710130
|
Skrivet: 2011-07-11 13:54
Ämne:
|
|
|
Nu är jag rätt så ny på php, men mysql_real_escape_string på något som hashats känns väl jävligt onödigt?
Sen vet jag inte om det ger så mycket mer säkerhet att ta bort några tecken i en hash, går ju fortfarande enkelt att söka i en regnbågstabell, eller tänker jag fel? Salt borde vara bättre. |
|
|
|
| Till toppen på sidan |
|
Makkesk8
Medlem i: 783 dagar Från: Polen & danmark
Status: Offline
#710131
|
Skrivet: 2011-07-11 14:01
Ämne:
|
|
|
| kanske skrev: |
Nu är jag rätt så ny på php, men mysql_real_escape_string på något som hashats känns väl jävligt onödigt?
Sen vet jag inte om det ger så mycket mer säkerhet att ta bort några tecken i en hash, går ju fortfarande enkelt att söka i en regnbågstabell, eller tänker jag fel? Salt borde vara bättre. |
Nu e du inte på rätt spår kan jag säga dig.
Du kan läsa om mysql_real_escape_string här : http://se.php.net/manual/en/function.mysql-real-escape-string.php |
|
|
_________________ http://kz-extreme.net/ |
| Till toppen på sidan |
|
Wedge


Medlem i: 3921 dagar Från: Järfälla
Status: Offline
#710136
|
Skrivet: 2011-07-11 14:46
Ämne:
|
|
|
| kanske skrev: |
| Nu är jag rätt så ny på php, men mysql_real_escape_string på något som hashats känns väl jävligt onödigt? | Du läser koden fel, eller råkar skriva fel.
Det är inte något som hashats, det är något som hashas.
hash(escape(input)) är inte samma som escape(hash(input)), men ingen av varianterna är vettig.
Att det fattas fem tecken i hashen är knappast något problem för en envis inkräktare. En loop som kör en miljon gånger och testar alla saknade teckenkombinationer tar inte särskilt lång tid att köra.
Använd salt istället för att hitta på osäkra konstigheter. |
|
|
_________________ Qualitum Webbhotell | Gomoku.se | PHP6.se
Skådebröd är fullt av optisk fiber |
| Till toppen på sidan |
|
kanske
Medlem i: 2144 dagar
Status: Offline
#710137
|
Skrivet: 2011-07-11 14:54
Ämne:
|
|
|
| Wedge skrev: |
| kanske skrev: |
| Nu är jag rätt så ny på php, men mysql_real_escape_string på något som hashats känns väl jävligt onödigt? | Du läser koden fel, eller råkar skriva fel.
Det är inte något som hashats, det är något som hashas.
hash(escape(input)) är inte samma som escape(hash(input)), men ingen av varianterna är vettig.
Att det fattas fem tecken i hashen är knappast något problem för en envis inkräktare. En loop som kör en miljon gånger och testar alla saknade teckenkombinationer tar inte särskilt lång tid att köra.
Använd salt istället för att hitta på osäkra konstigheter. |
Jag skrev såklart tokigt. Det jag menar är att det är väl onödigt att köra mysq_real_escape_string på något som ska hashas innan det ska in i databasen. |
|
|
|
| Till toppen på sidan |
|
Wedge


Medlem i: 3921 dagar Från: Järfälla
Status: Offline
#710139
|
Skrivet: 2011-07-11 15:11
Ämne:
|
|
|
| kanske skrev: |
| Jag skrev såklart tokigt. Det jag menar är att det är väl onödigt att köra mysq_real_escape_string på något som ska hashas innan det ska in i databasen. | Precis. |
|
|
_________________ Qualitum Webbhotell | Gomoku.se | PHP6.se
Skådebröd är fullt av optisk fiber |
| Till toppen på sidan |
|
EmilV


Medlem i: 3795 dagar Från: Upplands Väsby
Status: Offline
#710167
|
Skrivet: 2011-07-12 10:07
Ämne:
|
|
|
Att ta bort tecken från hashen gör ditt system mindre säkert, inte mer. Tar du bort tecken minskar du helt enkelt målmängden och det blir lättare att gissa ett lösenord.
Istället för md5:s vanliga målmängd på 16^32 = 3.4*10^38 element har du minskat mängden till 16^27 = 3.2*10^32, det vill säga att du dividerat målmängden med cirka en miljon och därmed teoretiskt minskat tiden för en råkraftsattack (brute force) till en miljondel av det ursprungliga värdet.
Har någon en regnbågstabell och vill ta reda på vad hashen "betyder" är det ju fortfarande bara att söka på början av hashen och hitta alla alternativ som finns i tabellen så den effekt du tror att du uppnått finns helt enkelt inte.
Du har därmed inte uppnått ditt syfte, samtidigt som du minskat tiden för en råkraftsattack. Det finns bara nackdelar med din lösning.
Det du försöker med kallas security by obscurity och innebär att du försöker lura "motståndaren" genom att göra oväntade saker. Det krävs dock bara att motståndaren får tag på din kod eller lyckas gissa sig till vad du gjort så är du tillbaka på ruta ett, med ett osäkert system. Därför brukar man räkna med att alla vet hur säkerhetssystemet fungerar. Riktig säkerhet byggs då genom att man använder välbeprövade metoder som är säkra trots att motståndaren känner till vilken metod som använts. De välanvända metoderna har testats och utvecklats av matematiker och kryptologer i årtionden, och deras resultat publiceras offentligt för andra inom fältet att analysera, testa och förbättra. Det är så vetenskapen fungerar.
En säker metod är att lägga på salt (gärna både statiskt och dynamiskt) och välja en säker hashalgoritm (till exempel sha1), det vill säga precis det som vi alltid pratar om i dessa sammanhang på PHPportalen. |
|
|
_________________ Tänk!
EmilVikström.se | GeHjärta.se |
| Till toppen på sidan |
|
Makkesk8
Medlem i: 783 dagar Från: Polen & danmark
Status: Offline
#710175
|
Skrivet: 2011-07-12 13:13
Ämne:
|
|
|
| EmilV skrev: |
Att ta bort tecken från hashen gör ditt system mindre säkert, inte mer. Tar du bort tecken minskar du helt enkelt målmängden och det blir lättare att gissa ett lösenord.
Istället för md5:s vanliga målmängd på 16^32 = 3.4*10^38 element har du minskat mängden till 16^27 = 3.2*10^32, det vill säga att du dividerat målmängden med cirka en miljon och därmed teoretiskt minskat tiden för en råkraftsattack (brute force) till en miljondel av det ursprungliga värdet.
Har någon en regnbågstabell och vill ta reda på vad hashen "betyder" är det ju fortfarande bara att söka på början av hashen och hitta alla alternativ som finns i tabellen så den effekt du tror att du uppnått finns helt enkelt inte.
Du har därmed inte uppnått ditt syfte, samtidigt som du minskat tiden för en råkraftsattack. Det finns bara nackdelar med din lösning.
Det du försöker med kallas security by obscurity och innebär att du försöker lura "motståndaren" genom att göra oväntade saker. Det krävs dock bara att motståndaren får tag på din kod eller lyckas gissa sig till vad du gjort så är du tillbaka på ruta ett, med ett osäkert system. Därför brukar man räkna med att alla vet hur säkerhetssystemet fungerar. Riktig säkerhet byggs då genom att man använder välbeprövade metoder som är säkra trots att motståndaren känner till vilken metod som använts. De välanvända metoderna har testats och utvecklats av matematiker och kryptologer i årtionden, och deras resultat publiceras offentligt för andra inom fältet att analysera, testa och förbättra. Det är så vetenskapen fungerar.
En säker metod är att lägga på salt (gärna både statiskt och dynamiskt) och välja en säker hashalgoritm (till exempel sha1), det vill säga precis det som vi alltid pratar om i dessa sammanhang på PHPportalen. |
Mjo jag kom på detta strax efter en timme jag skrev tråden och då tänkte jag att man kunde göra det svårare istallet med användning av str_repeat(md5(mt_rand()), mt_rand(1, 5)); av något slag, Ska prova salt och sha1 aldrig haft tanke på att använda dom
Tack  |
|
|
_________________ http://kz-extreme.net/ |
| Till toppen på sidan |
|
gurragustaf

Medlem i: 2826 dagar Från: Vänersborg
Status: Offline
#710303
|
Skrivet: 2011-07-16 00:16
Ämne:
|
|
|
| Jag skulle föreslå att du även blandar in användarnamnet i lösenordsgenarationen. På så sätt blir varje lösenord unikt gentemot varje användare då säg, lösenordet "M1ttlosenord" blir två olika värden för anv1 och anv2. |
|
|
_________________ Hur hör man en ljudlös signal? |
| Till toppen på sidan |
|
intedinmamma
Medlem i: 1380 dagar Från: Göteborg
Status: Offline
#710306
|
Skrivet: 2011-07-16 01:21
Ämne:
|
|
|
Läsvärt.
Lägger folk ner lika mycket energi på att se till så att hashen inte går att komma åt som att den inte ska gå att knäcka? Självklart är det bra om hashen kan vara publik, det är ett tecken på väldigt hög säkerhet, men vad spelar det för roll när all annan data för applikationen i det läget finns tillgänglig som klartext? Att behöva byta lösenord är inte lika illa som att veta om att ens privata meddelanden är på vift. |
|
|
_________________ Statistiskt sett? Kanske. |
| Till toppen på sidan |
|
thedragon
Medlem i: 3575 dagar Från: Skoghall
Status: Offline
#710667
|
|
|
|
| Till toppen på sidan |
|
Sawny
Medlem i: 1006 dagar
Status: Offline
#710677
|
|
|
_________________ HTML, CSS, PHP, JS |
| Till toppen på sidan |
|
thedragon
Medlem i: 3575 dagar Från: Skoghall
Status: Offline
#710682
|
Skrivet: 2011-07-22 23:25
Ämne:
|
|
|
| Sawny skrev: |
Salt är alltid viktigt, skyddar jätte bra (helt?) från regnbågstabeller.
Och bruteforce tar längre tid då du först måste hitta saltet. Om saltet är "/&#/&"(&¤#"()87283"84jdjDSJ så blir det omöjligt att brute forca fram saltet. |
I och för sig, så är ju det sant  |
|
|
|
| Till toppen på sidan |
|
Sawny
Medlem i: 1006 dagar
Status: Offline
#710711
|
Skrivet: 2011-07-23 15:36
Ämne:
|
|
|
Angående Whirlpool på wikipedia står det "Two of the first widely-used mainstream cryptographic programs that started using Whirlpool were FreeOTFE, followed by TrueCrypt in 2005."
Truecrypt krypterar och dekrypterar data, så whirlpool är ingen en gångs algoritm eller? Blir förvirrad av wikipedia artikeln. |
|
|
_________________ HTML, CSS, PHP, JS |
| Till toppen på sidan |
|
Wedge


Medlem i: 3921 dagar Från: Järfälla
Status: Offline
#710712
|
Skrivet: 2011-07-23 15:51
Ämne:
|
|
|
| Sawny skrev: |
Angående Whirlpool på wikipedia står det "Two of the first widely-used mainstream cryptographic programs that started using Whirlpool were FreeOTFE, followed by TrueCrypt in 2005."
Truecrypt krypterar och dekrypterar data, så whirlpool är ingen en gångs algoritm eller? Blir förvirrad av wikipedia artikeln. | Att en hashfunktion används i en kryptering gör inte hashfunktionen till kryptering. |
|
|
_________________ Qualitum Webbhotell | Gomoku.se | PHP6.se
Skådebröd är fullt av optisk fiber |
| Till toppen på sidan |
|
|