MD5 vs Blowfish

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Gezocht: .Net ontwikkelaars met een maatschappelij

Bedrijfsomschrijving Zoek jij als medior .Net ontwikkelaar een inspirerende werkplek bij een bedrijf met maatschappelijk verantwoordelijkheidsgevoel? Dan is deze vacature je op het lijf geschreven. De organisatie bestaat ruim 20 jaar en ze ontwikkelen in house applicaties waarmee de zorgsector enorm mee gebaat is. Jouw applicaties worden gebruikt door duizenden gebruikers waardoor je echt een waardevolle bijdrage kan leveren aan de maatschappij. Het bedrijf is zeer innovatief en vindt een goede werk/privé balans belangrijk. Je krijgt alle mogelijkheden om jezelf verder te ontwikkelen, je werktijden in te delen en daarnaast is het ook mogelijk om deels thuis te werken. Het

Bekijk vacature »

Back-end ontwikkelaar

Functie omschrijving Wil jij meebouwen aan diverse databasesystemen in een klein bedrijf met een platte organisatie? In een team van ruim 10 ontwikkelaars wordt er aan diverse ICT oplossingen gewerkt. Jouw taken hierbij zullen bestaan uit: Het onderhouden en door-ontwikkelen van bestaande databases. Denk hierbij aan schema verbeteringen en performance-tuning. Bij nieuwe ontwikkelingen ga jij ook bezig met het bouwen van het databaseschema. Omdat je in een klein team werkt zal je ook de C# routine verder uitbouwen en ontwikkelen. Ook kan je meedraaien in algemene refactory-, ontwikkel- of testwerkzaamheden. Je zal voornamelijk gebruik maken van de volgende technieken: .NET

Bekijk vacature »

Software Developer

Functie omschrijving Psst hé jij daar! Op zoek naar een nieuwe uitdaging als developer? Wacht niet langer en reageer direct. In deze functie ga je bij een familiebedrijf werken als developer. Je gaat maatwerk software ontwikkelen met de Microsoft stack. Je gebruikt technieken als C#, ASP.NET en MVC. Je werkt in een leuk team van andere developers. Je krijgt veel vrijheid in je werk en kan flexibel werken. Dagje thuiswerken? Geen probleem! Daarnaast is er veel ruimte om écht mee te denken met het bedrijf en met de klanten. Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Vanaf

Bekijk vacature »

Software Ontwikkelaar

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

PHP Developer

Functieomschrijving Vanuit het hoofdkantoor in de regio van Bergen op Zoom ben je als PHP Developer niet alleen gefocust op het ontwikkelen van Software. Daarnaast ben je ook voortdurend bezig met het zoeken naar nieuwe mogelijkheden en innovaties die essentieel kunnen zijn voor de efficiëntie van software ontwikkeling. Je deelt veel kennis en informatie met het team en ontvangt deze dan ook graag terug. Techstack: PHP, Symfony & mySQL. Bedrijfsprofiel Deze uitdagende opdrachtgever is ruim 20 jaar actief in de regio Bergen op Zoom. Het vooruitstrevende team staat de hele dag voor je klaar om je te helpen en ondersteunen.

Bekijk vacature »

PHP Developer - medior functie

Functieomschrijving Ben jij innovatief en wil jij je kennis graag delen met jouw nieuwe collega's? Lees dan snel verder! Voor een leuke opdrachtgever in de omgeving van Roosendaal zoeken wij een Symfony developer. Of je nou junior, medior of senior bent, je krijgt hier alle vrijheid en verantwoordelijkheid om jouw eigen loopbaan te ontwikkelen. Je gaat je hier bezig houden met en inspelen op de actualiteiten van jouw vakgebied. Techstack: Symfony, PHP, mySQL. Kennis van Svelte is helemaal mooi meegenomen. Bedrijfsprofiel Al sinds '99 is dit webbureau actief. De kernwaarden binnen het bedrijf zijn integer, dienstbaar en deskundig. Je komt

Bekijk vacature »

Medior .NET developer

Functie Jij gaat als Medior .NET ontwikkelaar aan de slag in ons scrumteam met 6 developers die gepassioneerd en actief bezig zijn om onze spelers kwalitatieve en mooie spelervaringen aan te bieden. Als medior .NET developer ga jij werken aan een technisch hoogwaardig platform welke bezoekerspieken verwerkt van tienduizenden tot honderdduizenden gebruikers per minuut! Ons scrumteam werkt in drie wekelijkse sprints en wij beginnen iedere ochtend met een stand-up. Jij werkt bij ons met C# .NET, .NET Core, React.JS, Xamarin, Azure, Docker en Kubernetes. Wij hechten enorm veel waarde aan het leveren van hoogwaardige en kwalitatieve code. Zodra jij de

Bekijk vacature »

Software Programmeur

Functie omschrijving Voor onze opdrachtgever in omgeving Rotterdam zijn wij opzoek naar een software programmeur die goed kan schrijven in de talen C of C++ en die het leuk vind om te werken met Linux! Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed verloopt. Je zult klanten ondersteunen. Verder zul je technische ontwerpen en gebruikersdocumentaties schrijven en deze onderhouden. Bedrijfsprofiel Dit bedrijf wil de klanten een volledige oplossing kunnen bieden, waarbij ze een

Bekijk vacature »

Front end developer

Functie Jij als front end developer gaat werken binnen de teams van onze klant, uiteraard met alle moderne technieken. Opdrachten worden echt gericht op jouw leerdoelen en jouw behoeftes. Wij hebben een omgeving gecreëerd waarin je echt jezelf kan zijn en waar echt gekeken wordt naar jouw voorkeuren. Maak je een fout? Geen probleem, leer ervan en dan ga weer door. Door de variëteit aan werk kun je in verschillende omgevingen een kijkje nemen en dus jezelf snel ontwikkelen. Eisen Je bent communicatief vaardig en houdt van een dynamische omgeving Je hebt HBO werk- en denkniveau Je hebt gedegen kennis

Bekijk vacature »

Backend Developer Scrummaster .NET

Samengevat: Deze werkgever is een ambitieus internetbedrijf met een passie voor digitale communicatie. Ben jij geschikt als Backend Developer? Heb je ervaring met .NET platform? Vaste baan: Backend Developer / SCRUM Master Scrum HBO WO €3.800 - €6.000 Deze werkgever is een innovatief bedrijf met enthousiaste mensen die jarenlang ervaring hebben met het ontwikkelen internet- en intranetoplossingen. Wij houden van korte lijnen en open en eerlijke communicatie. Wij zetten graag onze jarenlange ervaring in om perfect werkende oplossingen te ontwikkelen. Wij ondersteunen dienstverlenende organisaties bij het ontwikkelen en realiseren van een effectief, adaptief communicatieplatform. Je ontwikkelt met ons de meest

Bekijk vacature »

Full Stack Developer

Dit ga je doen Ontwikkelen van Product Informatie Management (PIM) systemen; Werken aan zowel grotere als kleine projecten voor toonaangevende klanten binnen o.a. de retail; Verantwoordelijk voor de front-end werkzaamheden; Naast de front-end werk je ook aan de backend. Hier ga je werken Als Full Stack Developer komt je te werken binnen een vooruitstrevende organisatie die Product Informatie Management (PIM) systemen levert aan hun klanten. Hun klanten zijn toonaangevende bedrijven binnen o.a. de retail. De organisatie zit gevestigd in regio Zwolle en bestaat uit zo'n 35 medewerkers, waarvan 30 IT. Je komt te werken binnen één van de zelfsturende development

Bekijk vacature »

Junior Outsystems developer

Functie Als junior Outsystems developer wordt jij onderdeel van een multidisciplinair team van 23 software engineers. Ons team werkt agile en termen als Continuous Integration en Continuous Delivery zijn bij ons dagelijkse koek. Wij werken aan uitdagende en afwisselende projecten met als doel onze klanten een totaal oplossing aan te bieden. Als junior Outsystems developer krijg jij bij ons de kans om jezelf te ontwikkelen naar een volwaardige ervaren en gecertificeerde Outsystems developer. Jij een team met ervaren mensen (10+ ervaring) om je heen. Zo heb jij niet het gevoel dat jij meteen in het diepe wordt gegooid en uiteraard

Bekijk vacature »

Full stack developer Node.js, React Remote

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

Bekijk vacature »

PHP Developer

Functie Middels Scrum en sprints bouw jij in deze functie mee aan complexe webapplicaties en ons SaaS platform. Hierbij hoort ook architectuur tot een van je taken. Daarnaast ben je één van de leden van het Scrum team. Dat betekent dat je naast je kerntaken ook in contact staat met de product owner. Oftewel, je bent bij het gehele ontwikkelproces betrokken. Tools die hierbij gebruikt worden zijn o.a. PHP, Symfony en Git. Eisen • Minimaal HBO werk- en denkniveau • Minimaal 3 jaar aantoonbare ervaring met PHP • Kennis en ervaring Symfony (Laravel is pré) & Lando • Kennis van

Bekijk vacature »

Lasrobot Programmeur

Over de functie Off-line programma’s maken die het beste resultaat bij de lasrobot mogelijk maken De programma’s met behulp van teach verder optimaliseren Proactief meedenken over oplossingen en over de juiste invulling van lasmallen Het lasrobotproces zoveel mogelijk optimaliseren Over het bedrijf Onze opdrachtgever is gespecialiseerd in de engineering, productie en assemblage van samengestelde plaatwerkproducten en monodelen uit metaal. Onze klant werkt samen met het team aan de mooiste producten van de toekomst. Binnen dit bedrijf staat een sterk team van specialisten op het gebied van industrial design, mechanical engineering, in-house prototyping en all-round projectmanagement. Met daarbij uiteenlopende kennis in

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

25/03/2025 02:28:40
 
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.