MD5 vs Blowfish

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Applicatie ontwikkelaar

Functie omschrijving Zelfstandige applicatie ontwikkelaar gezocht voor familiair bedrijf in omgeving Barendrecht! Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! Binnen deze rol houdt jij je met het volgende bezig: Onderhouden en ontwikkelen van de IT systemen; Opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werken aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkelen en implementeren van MS PowerApps

Bekijk vacature »

.NET developer

Functie Als senior .NET ontwikkelaar en aankomend lead developer ben jij in één van de drie development teams verantwoordelijk voor het volgende: • Jij hebt een oogpunt op modernisering en bent verantwoordelijk voor de technische staat en architectuur van de applicatie; • Jij bent verantwoordelijk voor het reviewen van de technische haalbaarheid van verschillende onderwerpen; • Jij bent verantwoordelijk voor een goede aansluiting binnen het multidisciplinaire team en de bijbehorende taken; • Jij bent verantwoordelijk voor het aandragen van verbetervoorstellen en ontwikkelstandaarden in zowel de techniek als architectuur; • Jij bent meewerkend voorman en ondersteunt en coacht jouw team op

Bekijk vacature »

Medior/senior front end developer React Sportsoftw

Functie Voor deze functie ben ik op zoek naar een enthousiaste front end developer die communicatief vaardig is. Jij wordt onderdeel van een enthousiast jong team dat werkt aan grote websites. Binnen jouw rol ben jij diegene die de vertaling maakt van design naar functionele code en zorg jij voor goede experience op meerdere platformen. Dit doe je natuurlijk door gebruik te maken van onze stack; Javascript, HTML, CSS en React. Daarnaast wordt er gebruik gemaakt van Webcomponents en verschillende authenticatie tools. Doordat er hier gestreefd wordt naar de beste gebruikerservaringen, wordt het product constant doorontwikkeld. Hierdoor blijven ze voor

Bekijk vacature »

.Net Front-end Ontwikkelaar

Wij zoeken een .Net Front-end Ontwikkelaar! Omschrijving Kun jij snel schakelen en ben je stressbestendig? Dan zoeken wij jou! Als .Net Front-end Ontwikkelaar help je mee aan de webapplicatie die over de hele wereld door allerlei bedrijven wordt gebruikt. Je werkt daarnaast mee aan nieuwe en verbeterde functionaliteiten en helpt met het oplossen van bugs. Over de opdrachtgever Je komt te werken in een ambitieus team dat zich blijft ontwikkelen. Dit is alle informatie die we nu kunnen delen over de werkplek. Als jij de .Net Front-end Ontwikkelaar bent voor deze job, vertellen we je snel nóg meer. Eisen Heb

Bekijk vacature »

Software programmeur

Functieomschrijving Voor een erkende werkgever in de regio van Goes zijn wij op zoek naar een enthousiaste software programmeur met PHP/Symfony ervaring. Een gedreven persoon die het development team komt versterken met het aanpakken van complexe projecten. Ben jij op zoek naar een baan met veel uitdaging binnen een snelgroeiend e-commerce bedrijf, waar je de tijd en ruimte krijgt voor zowel professionele als persoonlijke groei? Lees dan snel verder! Dit ga je doen: Beheer en ontwikkeling van de serviceportal in Symfony en de webshops in de tweede versie van Magento; Testen en door ontwikkelen van software; Ontwikkelen van nieuwe functionaliteiten;

Bekijk vacature »

Leidinggevend Full Stack Developer

Hé jij, nieuwe Pinkcuber! Ga aan de slag bij Pinkcube, online leverancier van promotieartikelen! Een innovatieve organisatie waar extra stappen zetten voor klanten de normaalste zaak van de wereld is. Ambitieus zijn we ook. ‘Naoberschap’ staat bij Pinkcube hoog in het vaandel; we helpen elkaar en iedereen is welkom. Pinkcube is Great Place to Work Certified, erkend leerbedrijf, maatschappelijk betrokken partner van stichting Present en partner van CliniClowns. En misschien wel jouw nieuwe werkgever. Wij zoeken namelijk een enthousiaste: Leidinggevend Full Stack Developer (40 uur, medior/senior) Ben jij klaar om baanbrekende ideeën tot leven te brengen en deel uit te

Bekijk vacature »

PHP Developer (junior functie)

Functie omschrijving Ben jij een starter en wil je werken bij een jong en leuk bedrijf? Lees dan verder! Wij zijn op zoek naar een PHP Developer binnen een junior functie. Binnen dit bedrijf gaat het om persoonlijke aandacht en ontwikkeling! Je komt te werken voor een leuk communicatiebureau die alles op het gebied van online en offline communicatie doet. Dit doen zij voor verschillende branches, waardoor je aan diverse soorten projecten mag werken, dit maakt deze baan erg leuk! Daarbij werk je aan een door hun zelf ontwikkeld framework welke goed leesbaar is. Je maakt voor bedrijven op maat

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

Freelance JAVA / C# Developer

Functieomschrijving Voor een opdrachtgever in omgeving Zoetermeer zijn wij op zoek naar ervaren JAVA of C# Developers die graag op projectbasis willen werken. Je komt terecht bij een informele developers club die mooie projecten uitvoeren voor grote klanten. Ben je een ervaren freelancer of werk je in loondienst en ben je toe aan een nieuwe uitdaging? Lees dan snel verder want wie weet is dit een leuke vacature voor jou! Het fijne van deze werkgever is dat je zelf mag beslissen hoe je te werk wilt gaan. Wil je als freelancer werken dan is dat OK. Wil je de zekerheid

Bekijk vacature »

Ervaren PHP ontwikkelaar

Functie Jij als PHP ontwikkelaar komt te werken in een team van 4 andere PHP ontwikkelaars. Je zult je voornamelijk bezig houden met: – Het ontwikkelen van nieuwe features – Doorontwikkelen van de API – Nadenken over de technische infrastructuur – Datakwaliteit Samen met het team ben jij verantwoordelijk voor de verdere ontwikkeling van de software en om de positie als marktleider in Europa te behouden. Ze werken volgens SCRUM in 2 wekelijkse sprints, werken met Jira voor alle tickets en communiceren veel via Slack. Eisen • Minimaal 3 jaar ervaring als back end developer • Je hebt affiniteit met

Bekijk vacature »

Digital Agency is looking for PHP developers!

Functie The team currently has 20 colleagues, consisting of developers (front and backend) and the operations team, which also includes management and two scrum masters. They are looking for a PHP developer who is able to work independently. You will work in one of the three scrum teams and start working on a project for the customer. The interesting thing about this is that you do have variety in terms of work, but at the same time continuously work for existing customers. This also gives you the opportunity to really go into depth and develop innovative technical solutions. In terms

Bekijk vacature »

Airport Developer / System engineer

De functie Als onze nieuwe Airport Developer / System Engineer is je doel om uit nieuwbouw- en onderhoudsprojecten maximale waarde te creëren voor Schiphol Group en haar stakeholders. Vanuit je visie en expertise, maar ook (technologische) ontwikkelingen, wetgeving en beleid vertaal je klantwensen naar een gedegen programma van eisen. In de planontwikkelingsfase werk je nauw samen met Plan Ontwikkelaars om je kennis in te brengen ten behoeve van de kwaliteit van het investeringsvoorstel. Je overlegt met diverse partijen, stelt de vraag achter de vraag en verbindt zo de belangen van de luchthaven, proceseigenaar en asseteigenaar om tot een gedragen ontwikkelopgave

Bekijk vacature »

Junior .NET developer

Functie Om half 9 kom jij binnen en pak jij als eerst natuurlijk een bakje koffie of thee. Vervolgens ga jij je voorbereiden op de stand-up van kwart voor 9. Zijn er bijvoorbeeld dingen waar jij nog tegen aan loopt? Of is er nog code die getest of gereviewd moet worden? Vervolgens starten jullie met de stand up en na de stand up zoeken jullie elkaar op en gaan jullie aan de slag. Als team met 6 developers werken jullie in drie wekelijkse sprints. Het einde van een sprint is altijd op een donderdag zodat jullie op vrijdag de demo

Bekijk vacature »

Software programmeur

Functieomschrijving Voor een uitdagende werkgever in regio Breda zijn wij op zoek naar een Full Stack C#.NET programmeur. Je bent verantwoordelijk voor het ontwikkelen van apps, webapplicaties en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere developers en engineers om de sensoren in machines te scannen en vervolgens de data om te zetten in management informatie voor de klanten. Taken en verantwoordelijkheden: Je gaat aan de slag met de volgende technologieën en frameworks: C#, JS frameworks, HTML, TypeScript, SQL & C++, CSS. Geen ervaring met één van deze technologieën is dan ook geen enkel probleem! Deze werkgever biedt

Bekijk vacature »

Java developer Zorgsysteem

Dit ga je doen Werken aan het eigen gebouwde zorgsysteem; Verbeteringen maken en toepassen binnen de applicatie; Jij gaat werken aan de Back-end van de applicatie en sporadisch werk je mee aan de Front-end; Samenwerken met andere teams voor een optimaal resultaat; Jij kan 'clean' werken en high quality code schrijven; Jij werkt resultaatgericht. Hier ga je werken De organisatie houdt zich bezig met diverse applicaties met betrekking tot zorgregistratie. Dankzij hun systeem komt alle informatie, omtrent de zorg van een patiënt, op een overzichtelijke en toegankelijke manier samen in één systeem te staan. Op deze manier is deze informatie

Bekijk vacature »
Gee Bee

Gee Bee

12/01/2017 15:39:57
Quote Anchor link
Heb afgelopen Kerst op diverse fora en zo gelezen dat MD5 zwaar verouderd, achterhaald en ook al 'gekraakt' is en dat het daarom beter is om Blowfish te gebruiken. Nu geloof ik dat meteen als zovelen dat zeggen. Toch is mij wel iets frappants opgevallen waarvan ik graag wil weten hoe anderen, op dit terrein meer deskundigen hier tegenaan kijken.

Als ik een serie wachtwoorden met MD5 hash krijg ik daar per wachtwoord een totaal verschillende string uit. Als ik dezelfde serie wachtwoorden met Blowfisch hash ( gebruik hiervoor password_hash('wachtwoord',PASSWORD_BCRYPT) waarbij 'wachtwoord' natuurlijk niet het letterlijk wachtwoord is ) krijg ik per wachtwoord een string waarvan de eerste 7 karakters hetzelfde is!!!

Nu heb ik uit de documentatie begrepen dat dit te maken heeft met de 'salt' binnen de 'hash' ... of zoiets. De vraag die ik nu probeer te stellen is of zo'n hash nou juist niet gevoeliger is? Als iemand - met een beetje verstand van zaken - een tabel opent en daarin een serie gehaste wachtwoorden met dezelfde 7 beginkarakters ziet, kan die dat gemakkelijk(er) als een 'Blowfish' hash herkennen en dan heeft die stap 1 naar het kraken van die hash al gezet. MD5 hashes zijn, juist door de volledige random karakters die het genereert, op dit punt minder 'herkenbaar'.

Nogmaals, ik ben op dit terrein een volledige novice en dus bij voorbaat 'sorry' als ik een - voor het op dit forum gebruikelijke niveau - domme vraag stel. Ben gewoon zeer benieuwd en nieuwsgierig.

Groet,
Gerard
Gewijzigd op 12/01/2017 15:41:50 door Gee Bee
 
PHP hulp

PHP hulp

21/11/2024 22:32:36
 
Ivo P

Ivo P

12/01/2017 16:18:37
Quote Anchor link
ik zou naar php's eigen functies kijken:

http://php.net/manual/en/ref.password.php
 
Ward van der Put
Moderator

Ward van der Put

12/01/2017 16:45:45
Quote Anchor link
Kijk voor achtergrondinformatie ook eens naar de functie crypt():

http://php.net/crypt

Hier wordt kort maar krachtig uitgelegd hoe de strings die worden toegevoegd voor de salt zijn opgebouwd. Dat die strings vervolgens voor het versleutelde wachtwoord worden geplakt (waardoor de eerste tekens hetzelfde zijn), is geen risico.
 
Marlies Maalderink

Marlies Maalderink

13/01/2017 10:18:43
Quote Anchor link
Informatie die gehashed is kan nooit meer terug veranderd worden, ook al weet de hacker welke encryptie er is gebruikt. Dus het maakt niet zoveel uit of een hacker zo kan zien of de data met MD5 of met bcrypt is gehashed.

Iedere hash moet uniek zijn. Daarom wordt MD5 niet meer gebruikt, MD5 maakt soms van verschillende invoer dezelfde hash. Voor wachtwoorden in een database maakt dat niet zoveel uit maar dat is wel waarom hij 'gekraakt' is.

Er zijn 2 veel gebruikte manieren voor een hacker om wachtwoorden uit een database te cracken. In het verleden werd er veel gebruikt gemaakt van zgn 'rainbow lists', lijsten met gigantische hoeveelheden mogelijke wachtwoorden, die allemaal gehashed waren, waarbij dan de wachtwoorden in de database vergeleken werden met de wachtwoorden op de lijst en er een match gevonden kon worden. (er is altijd wel iemand die niet zo'n sterk wachtwoord gebruikt)

Toen kwam salt en was het gebruik van deze lijsten niet meer zinvol, immers, alle wachtwoorden die je maar kunt bedenken worden nu gecombineerd met een salt en dán gehashd.

Daarom is nu denk ik de beste mogelijkheid voor een hacker een 'brute force' attack, in het inlogscherm oneindig veel wachtwoorden invoeren, niet met hand natuurlijk ;)

Hierbij is er een belangerijk verschil tussen MD5, crypt en bcrypt. MD5 is razendsnel. Binnen een seconde kan de hacker miljoenen wachtwoorden invoeren. ook crypt is redelijk snel. bcrypt daarintegen is erg langzaam, ongeveer een seconde per invoer. (bovendien kun je als je password_hash gebruikt met $cost de tijdsduur nog aanpassen). Hierdoor duurt meestal het dagen of weken in plaats van uren om een wachtwoord dat matched te vinden en is de kans groot dat de hacker er bij voorbaat al niet aan begint.

Hoe het precies zit met die zelfde tekens aan het begin van de hash weet ik niet, het zal met de salt te maken hebben maar het zal niet zo zijn dat die tekens de salt zijn en de rest het wachtwoord want zo werkt een hash niet en bovendien zou dat het hele nut van de salt weg zijn...

Overigens kun je beter password_hash('wachtwoord',PASSWORD_DEFAULT)gebruiken. Momenteel gebruiken beide opties Bcrypt, maar PASSWORD_BCRYPT zal altijd bcrypt blijven gebruiken, en default kan in de toekomst een nieuwe, betere, encryptie methode gaan gebruiken als die er zou komen. Dus met default heb je altijd het beste.
 
Gee Bee

Gee Bee

13/01/2017 10:30:26
Quote Anchor link
Hoi Marlies,

Dank voor je antwoord! Daar heb ik iets aan!

Groet, Gee
 
Ivo P

Ivo P

13/01/2017 10:50:57
Quote Anchor link
"Iedere hash moet uniek zijn"

Dat gaat nooit lukken. Bijvoorbeeld een md5 hash is altijd 32 tekens lang. (en dan ook nog beperkt tot 0-9A-F)

Wat voor "breedte" je een hash ook geeft: er zullen altijd meer strings zijn dan de mogelijke hashes.

Om het even in vatbare begrippen te gooien: stel dat ik een hashing bedenk die alleen op getallen werkt en dan ook een getal oplevert. Die uitkomst is beperkt tot 2 tekens (cijfers).
Dat betekent dan dat ik dus maar 100 uitkomsten heb (00-99)

Maar en zijn veel meer invoeren te bedenken. Bijvoorbeeld de getallen 100-1000. Dat betekent dus inderdaad dat er de nodige dubbelen voor kunnen komen in mijn beperkte voorbeeld.

Maar dat principe gaat ook op voor een hash van 3, 4 of 32 karakters en zelfs als je naast cijfers ook nog andere tekens in de hash laat voorkomen.

Nu schijn je voor het vinden van dubbele md5's al een heel grote string te moeten hebben. Maar in principe kun je ook heel de inhoud van de Dikke Van Dale als invoer in md5() stoppen. Daar zal ook een string van 32 tekens uit komen.

Maar probleem lijken vooral de rainbow tables te zijn. En dan met name ook door het ontbreken van de salt in veel gevallen.
Wat niet wegneemt dat je md5 intussen beter links kunt laten liggen.

NB:
Ik heb wel eens de indruk dat er gedacht wordt dat elke site die de passwords alleen met md5 gehasht opslaat nu direct gehackt kan worden. Daarvoor heb je wel eerst toegang tot de lijst met gehashte passwords nodig
 
Thomas van den Heuvel

Thomas van den Heuvel

13/01/2017 14:55:08
Quote Anchor link
Quote:
MD5 maakt soms van verschillende invoer dezelfde hash.

Dit is inherent aan hashing, en niet zozeer van MD5. Bij MD5 treden er echter meer "collisions" op (verschillende soorten invoer die leiden tot dezelfde hash) geloof ik, waardoor de eerdergenoemde rainbow tables inzetbaar zijn voor het kraken.

Quote:
Overigens kun je beter password_hash('wachtwoord',PASSWORD_DEFAULT)gebruiken

Is dit zo? Bij dit soort zaken moet je niets aan het toeval overlaten lijkt mij, dus mogelijk is het beter om expliciet in te stellen wat je gebruikt, anders valt PASSWORD_DEFAULT mogelijk terug op een snellere/makkelijker te bruteforcen methode. Was dit niet precies dezelfde wijze waarop een lek in HTTPS werd uitgebuit? Door manipulatie werd teruggevallen op standaard encryptie (dit is overigens niet hetzelfde als hashing) waardoor het mogelijk was om dataverkeer te ontcijferen.

Daarnaast hebben verschillende algoritmes mogelijk verschillende formaten (die een verschillende opslag of controle vereisen), tenzij dit helemaal gestandaardiseerd is (maar dan zul je dus deze standaardisatie ook in je wachtwoord-opslag moeten verwerken)? Maar dan kun je je afvragen waarom die functie een algoritme-parameter heeft, als je toch altijd dezelfde gebruikt.

Los van dit alles: bij veiligheid is het beter om met lagen te werken, en niet alles te gooien op één "(first and last) line of defense".

Quote:
Wat niet wegneemt dat je md5 intussen beter links kunt laten liggen.

Beschouw het volgende scenario: je gebruikt een modern hashing algoritme (post md5/sha1) maar je bouwt geen enkele beveiliging in voor een gelimiteerd aantal inlogpogingen noch functionaliteit voor het volgen van inlogpogingen. Het is dan nog steeds mogelijk, al duurt het wat langer, om te bruteforcen.

Stel hier tegenover een loginsysteem met md5 die maximaal X onjuiste logins accepteert per tijdseenheid Y en die bijhoudt waar deze vandaan komen waarbij tevens wordt verwacht dat het wachtwoord aan zekere kenmerken voldoet en eens in de zoveel tijd vernieuwd moet worden.

Welk systeem is veiliger?
 
Marlies Maalderink

Marlies Maalderink

13/01/2017 15:13:04
Quote Anchor link
Thomas van den Heuvel op 13/01/2017 14:55:08:
Quote:
Overigens kun je beter password_hash('wachtwoord',PASSWORD_DEFAULT)gebruiken

Is dit zo? Bij dit soort zaken moet je niets aan het toeval overlaten lijkt mij, dus mogelijk is het beter om expliciet in te stellen wat je gebruikt, anders valt PASSWORD_DEFAULT mogelijk terug op een snellere/makkelijker te bruteforcen methode. Was dit niet precies dezelfde wijze waarop een lek in HTTPS werd uitgebuit? Door manipulatie werd teruggevallen op standaard encryptie (dit is overigens niet hetzelfde als hashing) waardoor het mogelijk was om dataverkeer te ontcijferen.


Dit staat letterlijk in de php documentatie. default en bcrypt gebruiken nu bcrypt. default kan vervangen worden, in de toekomst, als er een veiligere methode zou komen die ook al een test periode heeft doorstaan. Maar snap jouw punt ook wel, je moet maar afwachten of dat dan op de lange termijn ook echt beter is.
 
Thomas van den Heuvel

Thomas van den Heuvel

13/01/2017 15:25:26
Quote Anchor link
Dat is mijn punt min of meer: als een default op een gegeven moment wijzigt (of verdwijnt) kan dit functionaliteit breken. Je schrijft sowieso geen code voor de eeuwigheid. En met name security-gerelateerde code, daar zou je bovenop moeten zitten (of zou iig eens in de zoveel tijd gereviewd moeten worden).

Misschien is er wel iets voor te zeggen om ergens instelbaar te maken welk algoritme gebruikt wordt. Maar deze instelling is dan een "hoofdschakelaar" waarmee de creatie, opslag en verificatie van wachtwoorden centraal omgaat.
 
Ward van der Put
Moderator

Ward van der Put

13/01/2017 15:39:09
Quote Anchor link
Marlies Maalderink op 13/01/2017 15:13:04:
default en bcrypt gebruiken nu bcrypt. default kan vervangen worden, in de toekomst, als er een veiligere methode zou komen die ook al een test periode heeft doorstaan.

Daarom kun je juist beter niet "automagisch" de default gebruiken: als de default verandert, loop je het risico dat in één keer alle met de vorige default versleutelde wachtwoorden ongeldig zijn. Dan zit je na een PHP-update met een onbruikbare database. Of omgekeerd: je kunt PHP niet updaten omdat anders je database onbruikbaar wordt.

Je kunt beter de cost c.q. work factor opkrikken, zodat de hardware 5 seconden staat te stampen op één wachtwoord. Dat is namelijk niet te brute forcen als de tabel met wachtwoorden in verkeerde handen valt (en iemand dus zeeën van tijd heeft om er op een eigen machine op los te gaan).

Verder kun je, zoals Thomas zegt, beter exact vastleggen welk algoritme je met welke instellingen gebruikt. Dan kun je namelijk bij een update of na een inbraak gericht die wachtwoorden updaten. En standaard gebeurt dat al bij een sterke encryptie: aan het begin van de resulterende string worden tussen $ algoritme, work factor en salt toegevoegd. Dat is niet voor niets, hè? ;-)
 
Marlies Maalderink

Marlies Maalderink

13/01/2017 17:39:54
Quote Anchor link
Ik snap jullie punt en het klinkt logisch. Ik gebruik default omdat dat in de documentatie aangeraden wordt maar begin nu te twijfelen of dat dan wel zo handig is...

Toevoeging op 13/01/2017 17:48:04:

Als aanvulling, ik heb net de documentatie doorgelezen maar het staat er ook helemaal niet. Weet ook even niet hoe ik er dan bij kwam, mijn excuses.. Zal wel in de war zijn geweest...
 
Frank Nietbelangrijk

Frank Nietbelangrijk

13/01/2017 21:01:13
Quote Anchor link
>> Stel hier tegenover een loginsysteem met md5 die maximaal X onjuiste logins accepteert per tijdseenheid Y en die bijhoudt waar deze vandaan komen waarbij tevens wordt verwacht dat het wachtwoord aan zekere kenmerken voldoet en eens in de zoveel tijd vernieuwd moet worden.


Dit is ook een leuke discussie. De functionaliteit van een login is om van een anonieme gebruiker een bekende gebruiker te maken. Even aannemende dat je een login hebt met gebruikersnaam + wachtwoord kan een hacker telkens van gebruikersnaam en wachtwoord wisselen. Gebuikt hij hier ook nog een aantal verschillende proxies dan is de mix compleet. Hoe ga je deze brute force methode tegenhouden dan?

Ik bedoel:
- Je kunt je login helemaal op slot zetten maar dan kan niemand meer binnen komen
- je kunt bij meerdere logins vanaf 1 en dezelfde ip blokkeren maar het risico bestaat dat je hiermee een bedrijf met 5000 werknemers de toegang ontzegt.
- Je kunt als de hacker al een bestaande gebruikersnaam gebruikt natuurlijk deze gebruikersnaam blokkeren maar zelfs dan kun je een boze reactie verwachten.

Hoe gaan jullie daar mee om dan?
 
Thomas van den Heuvel

Thomas van den Heuvel

13/01/2017 23:41:16
Quote Anchor link
Je telt het aantal pogingen per gebruiker lijkt mij (los van IP)? Ik wilde daarmee alleen maar laten zien dat wanneer je meerdere lagen aanbrengt (beperkt aantal pogingen per tijdseenheid per gebruiker) dat het daardoor ook al een aanzienlijk stuk moeilijker wordt om dingen te kraken. Je kunt dan namelijk simpelweg niet meer bruteforcen.

Je kunt het voorbeeld binnen een bedrijf ook omdraaien: je zou ook een whitelist van IP's kunnen introduceren via welke je enkel kunt inloggen. Dan hoef je de hacker ook niet ver te zoeken :].

En als je server zodanig onder vuur ligt dan wordt het tijd voor andere oplossingen.
 
Marlies Maalderink

Marlies Maalderink

23/01/2017 15:05:22
Quote Anchor link
Gee Bee op 12/01/2017 15:39:57:
Als ik een serie wachtwoorden met MD5 hash krijg ik daar per wachtwoord een totaal verschillende string uit. Als ik dezelfde serie wachtwoorden met Blowfisch hash ( gebruik hiervoor password_hash('wachtwoord',PASSWORD_BCRYPT) waarbij 'wachtwoord' natuurlijk niet het letterlijk wachtwoord is ) krijg ik per wachtwoord een string waarvan de eerste 7 karakters hetzelfde is!!!


Het is geen nieuw topic meer maar toevallig las ik vanmiddag hoe het zit met de eerste 7 characters van de bcrypt hash, voor het geval iemand zich het toch nog afvraagt...

Het heeft niets met de salt te maken maar met de hash methode zelf.
Bcrypt hashes beginnen altijd met $2y$1(nog 1 cijfer)
waarbij $2y staat voor bcrypt, $10 (of $11 of $12) voor de cost. Dan komt pas de salt. Het enige wat de mogelijke hacker hier dus uit kan afleiden is de hash methode en de cost die is ingesteld, maar niet wat de salt is...
 
Ward van der Put
Moderator

Ward van der Put

24/01/2017 07:19:43
Quote Anchor link
Marlies Maalderink op 23/01/2017 15:05:22:
Bcrypt hashes beginnen altijd met $2y$1(nog 1 cijfer)
waarbij $2y staat voor bcrypt, $10 (of $11 of $12) voor de cost. Dan komt pas de salt. Het enige wat de mogelijke hacker hier dus uit kan afleiden is de hash methode en de cost die is ingesteld, maar niet wat de salt is...

Wel de salt maar niet de salt? ¯\_(?)_/¯

Een hacker kán de salt zien, want die staat achteraan. Bij Blowfish is de string namelijk:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
'$2y$' . $work_factor . '$' . $salt . '$'

En bij SHA-512:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
'$6$rounds=' . $work_factor . '$' . $salt . '$'
 
Marlies Maalderink

Marlies Maalderink

24/01/2017 10:23:29
Quote Anchor link
Ward van der Put op 24/01/2017 07:19:43:

Wel de salt maar niet de salt? ¯\_(?)_/¯


Ja, beetje onduidelijk gefomuleerd ;) Wat ik bedoelde te zeggen is dat de salt niet de eerste 7 identieke tekens van de hash is, waar de topic starter bang voor was.
 



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.