salt

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front-End React Developer

As a Front-End React Developer you improve the user-experience of our web applications for your colleagues in Coolblue. How do I become a Front-End React Developer at Coolblue? As a Front-End React Developer you are responsible for developing user interface components and implementing them using React.js concepts and workflows. You work with the UX Designer and get energy from coming up with creative solutions and present these within the team. During the day you gather and welcome feedback on your technical and soft skills. Would you like to become a Front-End React Developer at Coolblue? Read below if the job

Bekijk vacature »

Junior Back end developer PHP, Symfony

Functie Wij hebben onlangs onze eerste collega’s aangenomen, waardoor ons development team momenteel uit 4 personen bestaat. We bouwen onze software op basis van een PHP-framework (wat op zichzelf een Symfony framework is). Qua ontwikkeling focussen wij ons op 3 focus velden; – API-ontwikkeling/ Component Creatie – Implementatie – Framework ontwikkeling; het toevoegen van nieuwe functionaliteit of interne microservices Onze senior software engineer focust zich momenteel op de laatste twee punten, maar wij komen handen te kort op het eerste veld. Daarom zijn wij op zoek naar een enthousiaste junior software engineer die graag de kneepjes van het vak wil

Bekijk vacature »

Software ontwikkelaar

Ben jij graag bezig met verschillende projecten? Vind jij beleving van klanten én medewerkers ook belangrijk? Wij zijn vanwege de doorontwikkeling van het applicatielandschap van onze opdrachtgever op zoek naar een fulltime software ontwikkelaar. Omschrijving Jij en jouw collega’s zijn verantwoordelijk voor de continuïteit en waarborging van het applicatielandschap. Om de processen vloeiend te laten verlopen is software ontwikkeling daarom van essentieel belang. Onze opdrachtgever doet dit voornamelijk zelf, met door hun eigen ontwikkelde applicaties. Dit betekent dat jij: functionele eisen vertaalt naar gebruiksvriendelijke software; tijdens SCRUM sessies advies geeft over het te bouwen ontwerp; nieuwe software ontwikkelt en het

Bekijk vacature »

Back end developer PHP, Laravel

Functie Jij komt te werken in ons webdevelopment team, wat bestaat uit 8 ervaren collega’s. Hiernaast hebben wij nog een team van 2 ontwikkelaars die aan native applicaties werken. Bij ons zijn er korte lijntjes en er hangt een gezellige informele werksfeer. Maar het belangrijkste is natuurlijk dat je aan geweldige applicaties zult gaan werken! Wij willen als organisatie niet te groot worden, we willen gewoon toffe dingen maken. Onze techstack bestaat momenteel uit: PHP, Laravel, Javascript, Typescript, Git, MySQL, Java, Kotlin, Xamarin. Samen met ons ga jij zorgen dat we puik werk leveren! Waarbij je bij elke fase in

Bekijk vacature »

Senior Organisatieontwikkelaar

Als Organisatieontwikkelaar zorg je ervoor dat we in het magazijn van Coolblue altijd vooruit voetballen op het gebied Medewerker en Organisatie Ontwikkeling. Zo draag je bij aan een toekomstbestendig magazijn waar we klanten én medewerkers elke dag blijven verwonderen. Wat doe je als Senior Organisatieontwikkelaar bij Coolblue? Als Organisatieontwikkelaar werk je voor het magazijn van Coolblue. Je krijgt er energie van om continue te bouwen aan een toekomstbestendige organisatie. Dat doe je samen met 17 collega's in het HR-team, ieder met een eigen specialisme. Je werkt graag zelfstandig en je weet snel je weg te vinden als verandermanager. Ook ben

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 »

Front-end Developer

Front-end Developers opgelet! Bij Luminis zijn ze opzoek naar jou. Lees de vacature en solliciteer direct. Luminis is een software- en technologiebedrijf met meerdere vestigingen. Vanuit deze vestigingen werken 200 professionals aan technisch hoogwaardige oplossingen voor klanten zoals KLM, Nike en Bol.com. Ook ontwikkelt Luminis eigen oplossingen op het gebied van cloud, Internet of Things, data intelligence, e-sports en e-learning. Luminis onderscheidt zich door aantoonbaar voorop te lopen in technologie en innovatie. Luminis heeft drie kernpunten die verankerd zitten in alles wat we doen: het omarmen van nieuwe technologie, meesterschap en kennis delen. Functiebeschrijving First things first! Het is belangrijk

Bekijk vacature »

Senior Software developer PHP

Functie Jij als senior PHP ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 developers binnen onze organisatie Jij gaat de brug zijn tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je je taken op voor de dag. Een greep van jouw taken zijn: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden met Security & Privacy Eisen • Minimaal 4

Bekijk vacature »

Front end developer React Sportgames

Functie Als Front end developer ga jij aan de slag bij een gave en bekende organisatie op het gebied van sportgames. Jij gaat aan de slag in een scrumteam met 6 developers die gepassioneerd en actief bezig zijn om spelers kwalitatieve en mooie spelervaringen aan te bieden. Als scrumteam werken ze in drie wekelijkse sprints en begin je iedere ochtend met een stand-up. Als Front end developer werk jij bij deze organisatie voornamelijk met Javascript, html, css en React. Er wordt veel gebruikt gemaakt ook van C#, Docker en Kubernetes. Het team hecht veel waarde aan het leveren van hoogwaardige

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

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 »

C#.NET ontwikkelaar

Functieomschrijving Voor een gewaardeerde werkgever in regio Tilburg zijn wij op zoek naar een C#.NET ontwikkelaar. Je bent verantwoordelijk voor het ontwikkelen van dashboards, webapplicaties en apps voor de eigen IOT-oplossingen. Samen met een vooruitstrevend team van ontwikkelaars en engineers krijgen jullie de opdracht om de sensoren in de apparatuur te scannen en vervolgens de data om te zetten in belangrijke inzichten voor de klanten. Taken en verantwoordelijkheden: Heb jij ideeën over nieuwe technieken die jullie kunnen implementeren? Hier wordt echt naar je geluisterd en gekeken of jouw idee daadwerkelijk ingezet kan worden; Je gaat aan de slag met de

Bekijk vacature »

Software developer - senior

Functie omschrijving Voor een echt softwarebedrijf in omgeving Gouda zijn wij op zoek naar versterking voor de afdeling Software Development! Ben jij op zoek naar een werkgever waar meerdere software developers werken aan interessante projecten? Ben jij op zoek naar een werkgever waar je onderdeel wordt van een team dat echt passie heeft voor het ontwikkelen van software? Dan ben je hier aan het juiste adres! Als softwareontwikkelaar kom je terecht bij een onafhankelijk, door kwaliteit gedreven, doortastend en daarbij op een Agile wijze werkend bedrijf. Ben jij een expert in het vertalen van Componenten van Functionaliteit naar Business lagen?

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 »

SAP HANA Cloud Application Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 12662 Introductie HANA Cloud Application Developer at a High Tech company. The company is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. This role is situated in the Big Data Analytics (BDA) Domain. The teams have mixture of young talent and senior specialists and have a

Bekijk vacature »

Pagina: 1 2 volgende »

Ozzie PHP

Ozzie PHP

31/03/2014 01:27:19
Quote Anchor link
Hallo,

Op een website las ik:

Quote:
If you salt 350 different passwords, you should have 350 different salts. If someone changes their password 293 times, you should generate 293 salts, one for each password.

Ik snap dit niet zo goed wat hier wordt bedoeld. Hoezo moet je voor ieder wachtwoord een andere salt maken? Die salt moet je dan per user toch ook weer opslaan, anders kun je het wachtwoord toch niet controleren? Mis ik iets? Wat is het nut als ik voor iedere user een unieke salt maak, en er in de database zoiets als dit staat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
user_id  salt  hash
   12    foo   as3#@ada4q34asdq23
   15    bar   sdfljkew4533^%$sdf
 
PHP hulp

PHP hulp

29/11/2024 00:46:22
 
Willem vp

Willem vp

31/03/2014 01:33:39
Quote Anchor link
Het idee achter een salt is dat wanneer twee personen hetzelfde wachtwoord hebben, de gecrypte versie ervan anders is. Het is anders heel eenvoudig om een dictionary attack op de wachtwoordenlijst uit te voeren. Door steeds een andere salt te gebruiken, moet je voor elke salt het complete woordenboek encrypten om te kijken of je een match hebt.
 
Ozzie PHP

Ozzie PHP

31/03/2014 01:35:55
Quote Anchor link
Willem, oké. Dat stukje is me duidelijk. Maar ik snap niet hoe je zo'n unieke salt dan moet genereren. En die salt moet je dan toch ook in de database opslaan? En dat laatste wil je toch niet lijkt mij? Als iemand dan je database hackt, dan staan alle salts erin. Of begrijp ik het niet goed?
 
Willem vp

Willem vp

31/03/2014 01:46:37
Quote Anchor link
Een salt is gewoon een string van willekeurige tekens. De modernere PHP-versies hebben een functie openssl_random_pseudo_bytes() die zo'n string kan genereren, maar het zou ook gewoon kunnen met iets als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
for (i=0; i<$saltlen; $i++) $salt .= chr(rand(65,90));
?>


Op zich is het geen probleem om de salt in de database op te slaan. Het gaat erom dat een computercrimineel niet van tevoren een lijst met vaak gebruikte wachtwoorden kan crypten/hashen en de gecrypte versies vergelijken met de waarde in de database. Door de salt moet hij nu voor elke gebruiker elk wachtwoord opnieuw crypten, en dat kost tijd. Veel tijd. En daar is het nou precies om te doen. ;-)
Gewijzigd op 31/03/2014 01:46:59 door Willem vp
 
Ozzie PHP

Ozzie PHP

31/03/2014 01:56:25
Quote Anchor link
Willem... ik denk dat ik iets verkeerd begrijp.

Als ik de salt in de database opsla... laten we even zeggen dat de salt "foo" is... dan ziet de crimineel, ah... de salt is 'foo'.

Vervolgens kan de crimineel met deze salt zijn woordenboek doorlopen. Als de crimineel de salt niet weet, dan heeft ie toch een veel groter probleem?
 
Willem vp

Willem vp

31/03/2014 02:33:30
Quote Anchor link
Klopt. Maar stel nu dat je 1000 gebruikers hebt die allemaal als wachtwoord "bar" hebben. Als ze allemaal een andere salt hebben, hebben ze dus ook allemaal een ander gecrypt wachtwoord. Als je van gebruiker 1 het wachtwoord hebt weten te achterhalen, kun je dus niet aan de hand van dat gecrypte wachtwoord zien dat je nog 999 andere gebruikers hebt die hetzelfde wachtwoord hebben.

Het is een illusie om te denken dat als iemand achter je lijst met gecrypte wachtwoorden kan komen, het hem niet lukt om ook de bijbehorende salts te vinden. Ga er maar vanuit dat dat lukt. Het beste wat je dus kan doen, is ervoor zorgen dat het in ieder geval vertragend werkt.

Laten we eens 30 jaar teruggaan in de tijd. Onder Unix had je toen gecrypte wachtwoorden met een salt van 2 tekens. Elk teken had 64 mogelijke waardes, zodat je dus 4096 verschillende salts had. Als je een systeem wilde kraken, kon je dus van tevoren de (bijvoorbeeld) 1000 meest populaire wachtwoorden crypten met elke mogelijke salt. Je had dan net iets meer dan 4 miljoen gecrypte wachtwoorden. Ik geloof dat een gecrypt wachtwoord destijds 15 tekens was (inclusief salt) en dus had je een tabel van 61 MB (destijds erg groot, trouwens). Zoiets wordt overigens een rainbow table genoemd.

Als het je was gelukt een lijst met gecrypte wachtwoorden te vinden, kon je met een script vrij snel je rainbow table matchen met de wachtwoordenlijst.

Stel nu dat je salt niet 2 tekens is, maar 12 tekens (van elk 64 mogelijkheden), dan heb je 4,7 triljard mogelijke salts. Het werken met een rainbow table kun je dan gevoeglijk op je buik schrijven. Je zult dan gebruiker voor gebruiker alle wachtwoorden moeten crypten met de voor die gebruiker ingestelde salt. Dat kost veel meer tijd dan het opzoeken van een gecrypt wachtwoord in een tabel. Wanneer twee gebruikers dezelfde salt zouden hebben, maak je het de boosdoener dus gemakkelijker, want dan kan hij de gecrypte versies checken tegen meerdere gebruikers.
Gewijzigd op 31/03/2014 02:34:44 door Willem vp
 
Dos Moonen

Dos Moonen

31/03/2014 07:43:59
Quote Anchor link
Antwoord op de oorspronkelijke vraag: http://programmers.stackexchange.com/questions/234228/when-allowing-a-user-to-change-passwords-should-i-generate-a-new-salt

Een salt hoort uniek te zijn. Het liefst is de salt niet alleen uniek in het hier en nu, maar ook op elk ander moment in het verleden.
Een salt hoort random gegenereerd te worden waardoor je deze niet voorspelt kan worden.
Een salt is niet heel geheim, de salt opslaan in de database is geen enkel probleem. Het doel van een salt is dat een nieuwe rainbow table gegenereerd moet worden voor die salt. Dat lukt.
Je zou de salt nog kunnen encrypten, maar dan maak je het jezelf vooral lastig. Voor kwaadwillende is het al lastig genoeg.

PS. gebruik Bcrypt, dit algoritme slaat de salt in de hash op.
Gewijzigd op 31/03/2014 08:18:55 door Dos Moonen
 
B a s
Beheerder

B a s

31/03/2014 11:37:30
Quote Anchor link
Kijk anders eens naar bcrypt class. Werkt net zo, ieder wachtwoord is iedere keer een andere hash.
 
Ozzie PHP

Ozzie PHP

31/03/2014 12:55:22
Quote Anchor link
>> Het is een illusie om te denken dat als iemand achter je lijst met gecrypte wachtwoorden kan komen, het hem niet lukt om ook de bijbehorende salts te vinden. Ga er maar vanuit dat dat lukt. Het beste wat je dus kan doen, is ervoor zorgen dat het in ieder geval vertragend werkt.

Dus stel iemand heeft een lijst met mijn gehashte wachtwoorden, en ik heb een goed algoritme gebruikt, dan nog kunnen ze de salt vinden, ook als ik die salt bijv. "asd34*&âksjhdas';';alr(*&$%kjsdfkjwh5kjsfhi8wy4543ksdfkh" ?

>> Antwoord op de oorspronkelijke vraag: http://programmers.stackexchange.com/questions/234228/when-allowing-a-user-to-change-passwords-should-i-generate-a-new-salt

Even voor de goede orde... ik ben niet de steller van die vraag mocht je die indruk hebben.

>> PS. gebruik Bcrypt, dit algoritme slaat de salt in de hash op.

>> Kijk anders eens naar bcrypt class. Werkt net zo, ieder wachtwoord is iedere keer een andere hash.

Bedankt voor de tip. Ik zal er naar gaan kijken. Kan een potentiële hacker aan zo'n hash zien wat de salt is, of is dat niet duidelijk?

Hebben jullie dit trouwens al gezien? Is dat wat?

http://nl1.php.net/manual/en/function.password-hash.php
 
Wouter J

Wouter J

31/03/2014 13:01:47
Quote Anchor link
Ozzie, ik denk dat je het nut van een salt verkeerd begrijpt. Het maakt namelijk niet uit of die salt in de database is opgeslagen of niet. Als die hacker immers al toegang heeft tot de database zou het hem een worst wezen wat het wachtwoord van gebruikers is, de rest is allemaal veel belangrijker (bankrekeningnummers enzo :P). Het achterhalen van een wachtwoord is alleen een methode om toegang te krijgen tot deze informatie.

En om een wachtwoord te achterhalen ga je gewoon elke mogelijke optie af in het inlogformulier. En dan is een dynamische salt dus heel handig. Het is dan erg ingewikkeld om het wachtwoord te vinden.
 
Ozzie PHP

Ozzie PHP

31/03/2014 13:15:21
Quote Anchor link
@Wouter,

Ah oké. Ik snap wat je bedoelt. Maar het is een hacker toch ook om wachtwoorden te doen? Tenminste dat is wat ik altijd lees waarom er gewaarschuwd wordt om de wachtwoorden als hashes op te slaan en niet als plain text. Mocht een hacker je database in handen krijgen dan zijn de wachtwoorden niet zichtbaar, zodat hij deze niet kan gebruiken om op andere sites in te loggen (mensen gebruiken vaak hetzelfde wachtwoord). Ik dacht dus dat dat ook een belangrijke reden was om wachtwoorden te hashen. En dan moet je dus zorgen dat het zo lastig mogelijk is om aan de hand van de hashes het wachtwoord terug te vinden. En daarom lijkt het mij dus raar om de salt erbij op te slaan. De hacker weet dan al 100% zeker dat hij de juiste salt heeft. Ja, dan moet ie nog steeds per salt een nieuwe hash-tabel maken, maar het maakt het wel makkelijker zou je denken.
 
Dos Moonen

Dos Moonen

31/03/2014 13:38:25
Quote Anchor link
Met de oorspronkelijke vraag bedoelde ik "Hoezo moet je voor ieder wachtwoord een andere salt maken?"
Ik had beter "eerste" kunnen schrijven...

"maar het maakt het wel makkelijker zou je denken." Klopt, dat de salt geheim is is geen eis.
Het enige doel van een salt is dat het er voor zorgt dat je voor iedere hash opnieuw moet beginnen. Zo is het van de rekenkracht die het koste om alle vorige hashes te kraken niet herbruikbaar.

Dat je salt alleen in de database te vinden is en je er niet via de website achter kunt komen zou je voor een deel kunnen zien als security through obscurity.

Wat je kunt doen is bcrypt(hmac(password, pepper), salt)

Een salt is voor iedere hash uniek, een pepper is voor iedere hash het zelfde. Dat wint je ongeveer evenveel tijd als dat je de salts zou encrypten.
De enige onbekende voor het kraken van zijn eigen hash is namelijk de pepper aangezien de kwaadwillende zijn eigen wachtwoord en de uiteindelijke hash weet.

password_hash() is wat ik aanraad om je wachtwoorden mee te hashen (op het moment is alleen Bcrypt mogelijk)
Gewijzigd op 31/03/2014 13:44:31 door Dos Moonen
 
Ozzie PHP

Ozzie PHP

31/03/2014 13:49:11
Quote Anchor link
>> Het enige doel van een salt is dat het er voor zorgt dat je voor iedere hash opnieuw moet beginnen. Zo is het van de rekenkracht die het koste om alle vorige hashes te kraken niet herbruikbaar.

Oké. Dus alle moeite die je bij het eerste wachtwoord hebt moeten doen, moet je bij het 2e wachtwoord weer doen. Dit begrijp ik en is inderdaad een goed argument.

>> Klopt, dat de salt geheim is is geen eis.

Dit begrijp ik niet. Stel ik heb een rainbow table:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
geheim
GeH31M
test
test1
qwerty

Op het moment dat een hacker de salt kent, wordt het toch veel makkelijker voor hem? Stel de salt is 'foo', dan krijg je:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
foogeheim
fooGeH31M
footest
footest1
fooqwerty

Op het moment dat de hacker de salt niet kent, en ik gebruik een salt van 30 tekens, maak ik het hem dan niet veel lastiger?

>> password_hash() is wat ik aanraad om je wachtwoorden mee te hashen (op het moment is alleen Bcrypt mogelijk)

Waarom is password_hash niet mogelijk? Php 5.5 is toch al uit?
 
Dos Moonen

Dos Moonen

31/03/2014 14:00:56
Quote Anchor link
> Op het moment dat een hacker de salt kent, wordt het toch veel makkelijker voor hem?
Moeilijker dan wanneer je geen salt gebruikt? Nee.
In tegenstelling tot het plaintext password moet je een salt zo opslaan dat je de plaintext versie weer kunt achterhalen.

Gebruik gewoon Bcrypt, deze slaat de salt op in de hash dus je hebt geen keus. Slechte wachtwoorden weren geeft meer veiligheid dan de salt proberen te verbergen.

"Waarom is password_hash niet mogelijk? Php 5.5 is toch al uit?"
Waar zeg ik precies dat het niet mogelijk is? :p
Voor PHP >= 5.3.7 is er zelfs een userland compatibility library die gelinkt staat op de documentatie van password_hash()
Ik zeg alleen dat voorlopig het enige hashing algoritme waarmee password_hash() overweg kan Bcrypt is.
 
Willem vp

Willem vp

31/03/2014 14:01:34
Quote Anchor link
Ozzie PHP op 31/03/2014 13:49:11:
Op het moment dat de hacker de salt niet kent, en ik gebruik een salt van 30 tekens, maak ik het hem dan niet veel lastiger?

Een salt is er niet zozeer om het achterhalen van 1 wachtwoord te bemoeilijken, maar om het achterhalen van een heleboel wachtwoorden te vertragen, doordat je de resultaten van eerdere kraakpogingen niet kunt hergebruiken.
 
Ozzie PHP

Ozzie PHP

31/03/2014 14:14:27
Quote Anchor link
>> Moeilijker dan wanneer je geen salt gebruikt? Nee.

Nee, moeilijker dan wanneer je een onbekende salt gebruikt.
Of zie ik dat verkeerd?

>> In tegenstelling tot het plaintext password moet je een salt zo opslaan dat je de plaintext versie weer kunt achterhalen.

Eenmaal gehasht kun je de plaintext versie van het password toch niet meer terugkrijgen? Of mis ik iets?

>> Gebruik gewoon Bcrypt, deze slaat de salt op in de hash dus je hebt geen keus.

Is Bcrypt een algoritme? Heeft het iets te maken met de class die Bas Kreleger hierboven noemt?

>> Waar zeg ik precies dat het niet mogelijk is? :p

Oooh, haha... verkeerd begrepen :D
Is dat Bcrypt algoritme goed? Beter dan SHA512 bijvoorbeeld?

>> Een salt is er niet zozeer om het achterhalen van 1 wachtwoord te bemoeilijken, maar om het achterhalen van een heleboel wachtwoorden te vertragen, doordat je de resultaten van eerdere kraakpogingen niet kunt hergebruiken.

Oké... deze gedachte snap ik inmiddels. Alleen stel dat een hacker je database te pakken krijgt, dan vind ik het wel raar dat de salts daar gewoon in staan. Het is bijna alsof je zegt: "hier, cadeautje, heb je alvast de goede salt!".
 
Dos Moonen

Dos Moonen

31/03/2014 14:31:39
Quote Anchor link
Bcrypt is een hashing algoritme. Veel beter (voor het hashen van wachtwoorden) dan sha512() aangezien Bcrypt ontworpen is om wachtwoorden mee te hashen.
SHA512 is snel, Bcrypt is traag. Hoe traag hangt af van de cost die je instelt. Speel met de cost tot een hash tussen de 100 en 300 miliseconden cost om te berekenen. Snel genoeg dat wanneer een gebruiker inlogt er weinig last van heeft. Traag genoeg om kwaadwillende erg veel langer over te laten doen.


> Het is bijna alsof je zegt: "hier, cadeautje, heb je alvast de goede salt!".
Absoluut niet, je zegt juist "HAHAHAHA! Je moet voor iedere hash overnieuw beginnen! LEKKER PUH!"
Door te salten moet een attacker voor iedere hash overnieuw beginnen.
Door te hashen moet een attacker veel CPU/GPU kracht aan aanvallen besteden.
Ga uit van het slechte senario, de aanvaller weet alles wat jij weet, dus ook de salt.

http://security.stackexchange.com/questions/211/how-to-securely-hash-passwords
Gewijzigd op 31/03/2014 14:49:00 door Dos Moonen
 
Ozzie PHP

Ozzie PHP

31/03/2014 15:08:56
Quote Anchor link
Ah oké, thanks :)
Dus samengevat, op dit moment is de beste manier om een wachtwoord te beveiligen via password_hash?

En als ik simpelweg een string wil hashen (dus geen wachtwoord) en naderhand wil kunnen controleren of die string niet is veranderd, welke hash-methode raad jij dan aan?

Deze vraag heeft overigens betrekking op dit topic.

Ward raadde mij het md5 algoritme aan omdat dit erg snel is. Ik heb even gebenchmarked, en omdat ik maar 1 keer per pagina-aanroep de hash hoef te genereren, maakt het qua tijd niks uit. Zowel md5 als SHA512 zijn hartstikke snel. Alleen meen ik dat SHA512 minder kans heeft op collision? Ik zou ook nog SHA256 kunnen kiezen, maar ik weet niet waar ik mijn keuze op moet baseren eerlijk gezegd. Hoe bepaal je of je moet kiezen voor MD5, sha1, sha256 of sha512? Wat ik lees op internet zijn md5 en sha1 niet geheel veilig omdat er kans is op collision. Dan blijven sha256 en sha512 over. Maar wanneer kies je voor wat? het verschil in snelheid is verwaarloosbaar.
 
Dos Moonen

Dos Moonen

31/03/2014 16:41:38
Quote Anchor link
Persoonlijk vind ik dat iedereen af moet stappen van MD5 aangezien we op de hoogte zijn van fouten.

SHA2 is prima
 
Ozzie PHP

Ozzie PHP

31/03/2014 16:44:47
Quote Anchor link
>> Persoonlijk vind ik dat iedereen af moet stappen van MD5 aangezien we op de hoogte zijn van fouten.

Dat lijkt me een prima argument.

>> SHA2 is prima

En dan sha256 of sha512? Maakt dat iets uit?

Buiten md5 en sha staan op mijn server ook nog deze algoritmes. Zie je er hier nog een tussen die beter is dan sha? Of is sha gewoon het beste wat er is?

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
29
30
31
32
33
34
35
    [8] => ripemd128
    [9] => ripemd160
    [10] => ripemd256
    [11] => ripemd320
    [12] => whirlpool
    [13] => tiger128,3
    [14] => tiger160,3
    [15] => tiger192,3
    [16] => tiger128,4
    [17] => tiger160,4
    [18] => tiger192,4
    [19] => snefru
    [20] => snefru256
    [21] => gost
    [22] => adler32
    [23] => crc32
    [24] => crc32b
    [25] => fnv132
    [26] => fnv164
    [27] => joaat
    [28] => haval128,3
    [29] => haval160,3
    [30] => haval192,3
    [31] => haval224,3
    [32] => haval256,3
    [33] => haval128,4
    [34] => haval160,4
    [35] => haval192,4
    [36] => haval224,4
    [37] => haval256,4
    [38] => haval128,5
    [39] => haval160,5
    [40] => haval192,5
    [41] => haval224,5
    [42] => haval256,5
 
Ward van der Put
Moderator

Ward van der Put

31/03/2014 16:57:39
Quote Anchor link
Voor de sessiebeveiliging die je nu op $_SERVER['HTTP_USER_AGENT'] wilt baseren, maakt het geen *** (fluit) uit of je nu MD5, SHA-1 of SHA-2 gebruikt.

Je sleutelt aan schijnveiligheid.
 

Pagina: 1 2 volgende »



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.