salt

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

.NET developer

Functie Als developer heb jij de keuze om aan te sluiten bij het team (13 developers) die op locatie projectmatig bij klanten werkt. Wanneer jij liever intern bij de werkgever werkt is er ook alle ruimte voor jou in het interne team (8 developers) van dit bedrijf. Je werkt samen aan verschillende projecten bij of voor de klant. Het project wordt aangeleverd door sales aan de project manager. Die maakt samen met de Resourcer een planning en op basis daarvan wordt uit het development team een “projectgroep” opgesteld. Hoeveel en welke projecten jij wilt oppakken gebeurt geheel in samenspraak met

Bekijk vacature »

.NET Developer Microservices

Dit ga je doen Je taken zullen voornamelijk bestaan uit: Het ontwikkelen van software, inclusief vormgeving, implementaties, integraties en (automatisch) testen (.NET, C#, Azure, Docker, Microservices, Angular); Het in kaart brengen van software requirements; Zorgen dat jouw code kwalitatief hoogstaand is; Het uitvoeren van risico analyses; Een bijdrage leveren aan het continuous quality improvement process. Hier ga je werken Dat kanker een verschrikkelijke ziekte is die de wereld uit geholpen moet worden, is duidelijk. Binnen deze Gelderse organisatie die duizenden ziekenhuizen van producten voorziet, proberen ze daar via technische innovaties aan bij te dragen. Samen met 10 collega .NET developers

Bekijk vacature »

No-Code Betty Blocks ontwikkelaar

Bedrijfsomschrijving Wil jij de bedrijfsprocessen van klanten revolutionair digitaliseren en optimaliseren zonder beperkt te worden door programmeertalen? Kom werken bij een snelgroeiende en professionele organisatie met een gezonde dosis humor en veel vrijheid om jezelf te ontwikkelen. Als No-Code Betty Blocks ontwikkelaar werk je vanuit ons kantoor in het hart van Nederland, je thuiswerkplek of op locatie bij de klant. We faciliteren de juiste trainingen en ondersteuning zodat je een echte Betty Blocks expert wordt. Naast het werk zijn er bij ons bijzondere events, zoals een jaarlijkse zeildag, een zomerse barbecue en een knus kerstdiner om de grillige maanden door

Bekijk vacature »

Senior .NET Developer I goed salaris en deels thui

Bedrijfsomschrijving Mijn opdrachtgever is al ruim 20 jaar een gevestigde naam in de wereld van software ontwikkeling, met drie kantoren in de Randstad, waaronder Alphen aan den Rijn. Zij richten zich op het bouwen van IT-oplossingen die ervoor zorgen dat de productiviteit van klanten te allen tijden optimaal is. Hiervoor neemt jouw nieuwe werkgever het volledige ontwikkelproces tot haar rekening; van het eerste gesprek om de klantwensen in kaart te brengen, tot aan het uiteindelijke onderhoud van de opgeleverde oplossing. In totaal werken er inmiddels bijna 200 gemotiveerde IT-ers binnen deze organisatie. De gemiddelde leeftijd ligt rond de 35. Het

Bekijk vacature »

SQL Database Ontwikkelaar

Functie omschrijving Kan jij goed overweg met complexe algoritmes en het schrijven van procedures in T-SQL? Heb jij al wat ervaring opgedaan met SQL en vind je het tijd voor de volgende stap? Lees dan snel verder! Dit software bedrijf, gespecialiseerd in de ontwikkeling van logistieke software, is op zoek naar een ervaren SQL database developer. Jouw werkzaamheden zullen onder andere bestaan uit: Je houdt je bezig met het ontwerp en de ontwikkeling van MS SQL server databases, dit doe je met T-SQL als programmeer laag. De begeleiding van projecten van A tot Z, je zult aansluiten bij meetings met

Bekijk vacature »

Software Ontwikkelaar

Functie omschrijving Voor een echt familiebedrijf in de omgeving van 's-Hertogenbosch ben ik op zoek naar een Software Developer. Jij gaat in de functie van Software Developer werken met C# en .NET framework Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Deze organisatie is

Bekijk vacature »

Social Media Specialist

Social Media Specialist locatie: Rotterdam (Zuid Holland) Wij zoeken op korte termijn een nieuwe collega, een social media specialist/ adviseur sociale media (24 uur), voor ons sprankelende team Communicatie van CJG Rijnmond. Onze focus ligt op het informeren en binden van onze in- en externe klanten en stakeholders en het versterken van onze naamsbekendheid en zichtbaarheid. Dat doen we in nauwe samenwerking met elkaar. Over de functie Ons team bestaat uit 7 communicatieprofessionals met ieder een eigen expertise. Als lid van het online team ben je verantwoordelijk voor het ontwikkelen, uitvoeren en analyseren van onze socialemediastrategie. Ook stel je campagnes

Bekijk vacature »

Java Front-end Developer

Dit ga je doen Ontwikkelen van nieuwe functionaliteiten in Java met tools als Springboot, MS SQL Server (T-SQL) en JavaScript; Het onderhouden van de (web-)applicaties binnen een complexe omgeving; Werken aan de migratie van een monolithisch systeem naar een architectuur gebaseerd op Kubernetes; Code reviews met collega's en actieve kennisuitdelingsessies voeren; Het uitvoeren van unit- en systeemtests Experimenteren met nieuwe tools en technieken. Hier ga je werken Binnen deze organisatie kom je te werken op de afdeling die gegevens verzamelt vanuit het hele land. Denk hierbij aan vertrouwelijke persoonsgegevens. Het team verwerkt al deze data met als doel het waarborgen

Bekijk vacature »

Java developer

Functie Je gaat aan de slag als Tester voor een aantal mooie projecten. Je komt terecht in een DevOps team waar jij aan de slag gaat om de kwaliteit te waarborgen omtrent de maatwerk software voor de klanten. Je draait je hand er niet voor om de adviserende rol te bekleden op het gebied van testautomatisering en het opzetten van testframeworks. Zoals aangegeven ga je daadwerkelijk in het eigen team aan de slag en is het daarnaast ook gebruikelijk bij de klanten op locatie te komen om te werken aan de opdrachten. Je krijgt zodoende echt een mooie kijk in

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Developer start jij in een team met 15 developers. In het team is er genoeg senioriteit om ervoor te zorgen dat jij de juiste begeleiding krijgt. Jij begint als eerst alle software pakketten en processen eigen te maken. Vervolgens ga jij deze software programmeren, onderhouden en testen. Ook ga jij research doen naar nieuwe mogelijkheden en zoek jij uit hoe je dit kan implementeren. Jullie werken intern op project basis en afhankelijk van het project werken jullie wel of niet iedere ochtend met een standup. Je gaat als Full stack developer aan de slag en gaat

Bekijk vacature »

Mendix Developer

Functie Wat ga je doen als Mendix Developer? We leven in een wereld die snel ontwikkelt en veranderd, ook nemen bedrijfsbelangen toe en blijken risico’s moeilijker in te schatten, daarom wij op zoek naar Junior, Medior en Senior Developers die bedrijven kunnen helpen met hun screeningproces en zorgen dat deze efficiënt en 100 procent AVG compliant is. Het concept achter Mendix is duidelijk. De klant heeft een vraag/probleem. Dit kunnen we door middel van slimme software oplossen. In plaats van te werken met de nieuwste technieken en tools, wordt er gekozen voor het implementeren en maken van software dat op

Bekijk vacature »

Medior PHP developer

Functie Het team bestaat inmiddels uit zo’n 25 collega’s met specialisten op het gebied van development, data(analyse), marketing, infrastructuur en finance. Ze hebben een supermodern pand en bieden hiernaast veel vrijheid en verantwoordelijkheid. Ze doen er alles aan om jou op te gemak te stellen. Zo kun je je eigen werkplek inrichten naar persoonlijke wensen, maar gaan ze bijvoorbeeld ook jaarlijks met elkaar wintersporten en zijn er andere leuke uitjes. Als onderdeel van één van de scrumteams ga je aan de slag, samen ben je medeverantwoordelijk voor het doorontwikkelen van hun business applicatie waar het traffic team dagelijks mee werkt.

Bekijk vacature »

Junior Software Developer

Functie omschrijving Wij zijn op zoek naar een Junior Software Developer .NET, C# voor een gaaf bedrijf in de omgeving van Utrecht! Sta jij aan het begin van je carrière en heb je net je HBO of WO-diploma in de richting van ICT of Techniek mogen ontvangen? En heb jij grote affiniteit met software development? Lees dan snel verder! Voor een opdrachtgever in de omgeving van Utrecht, zijn wij op zoek naar een Junior Software Developer. Werk jij graag aan verschillende projecten en ga je graag klanten op bezoek? Dan is dit de ideale functie voor jou! Binnen deze functie

Bekijk vacature »

.NET developer

Functie The position we have for you As a .NET developer you will work for one of our customers active in the High Tech Industry. Our customers are mainly located in the Eindhoven area. We are very selective when it comes to the projects we accept and therefore only focus on innovative and complex projects. Because our customers are mainly specialized in machine construction, you often work close to the machines. Our team currently consists of Embedded engineers, IOT developers and Cloud engineers. We mainly work on Microsoft projects where WPF, UWP, .NET Core and Microsoft Azure are used. Eisen

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:43:23
 
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.