salt

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Software Developer

Functie omschrijving In deze functie ga je aan de slag met het door ontwikkelen van de interne software. Zij maken gebruik van een CRM, wat door de hele organisatie gebruikt wordt. Andere taken: Je gaat het CRM-systeem door middel van PHP verder ontwikkelen; Verder bouw je verschillende API's en koppelingen tussen systemen; Ook ga je collega's ondersteunen bij vragen over de software en applicaties; Deelnemen aan overleggen met het development team; Bij interesse is er de mogelijkheid om junioren te gaan begeleiden. Bedrijfsprofiel Dit bedrijf is actief binnen de telecombranche. Het hoofdkantoor zit in regio van Den Bosch en er

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 »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Core developer wordt jij onderdeel van ons team met drie breed ontwikkelde software engineers en een flexibele schil met zes ervaren freelancers. Jij gaat mee in de visie van onze organisatie om als IoT partner in deze branche specifieke markt “het” platform te blijven innoveren en deze ook steeds slimmer te maken. Wij hopen dan ook zeker dit in de toekomst te kunnen realiseren met bijvoorbeeld Artificial Intelligence. De architectuur van ons platform is opgemaakt uit een deel eigen protocol, een interface laag en een laag welke de protocollen van derde partijen vertaald naar het eigen

Bekijk vacature »

.Net ontwikkelaars voor de zorgsector

Bedrijfsomschrijving Voor onze klant in de omgeving van Zwolle zijn wij op zoek naar een ervaren .Net ontwikkelaar, bij voorkeur met ervaring binnen de belangrijkste sector van Nederland, namelijk: de zorgsector. Deze internationale organisatie ontwikkelt software voor de zorgsector. Er werken zo'n 25 medewerkers hard aan een oplossing die gebruikt wordt door heel Nederland. Er heerst een informele sfeer waarbij er altijd ruimte is voor een grapje. Je collega's zijn stuk voor stuk sterke ontwikkelaars vanuit verschillende achtergronden en met verschillende leeftijden. Je komt hier terecht in een organisatie die zich hard inzet om de zorgsector te verbeteren. De mogelijkheden

Bekijk vacature »

3D BIM Add-on Developer

As a 3D BIM add- on developer at KUBUS, you will develop add-ons (called BCF- Managers) to the leading building information modeling (BIM) programs Revit, Navisworks, Archicad, AutoCAD and Tekla Structures. BCF Managers enable data transfer between BIM software and BIMcollab. You will work on both the front- and the back-end. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact in the market, but small enough that as an individual

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 »

.NET developer

Functie Als .NET developer werk jij samen in een multidisciplinair ontwikkel team met 1-2 Senior .NET developers, twee front-end developers, Data Scientists en één UX designer. Als team werken jullie aan het ontwikkelen van een Cloud based applicatie en aan het stabieler maken van deze applicatie. Ook unit testing gaat erg belangrijk worden in jouw nieuwe functie. Samen met de Senior .NET ontwikkelaar wordt jij verantwoordelijk voor het ontwikkelen van de API. Jullie werken met veel data en incidenteel komen er ook data vraagstukken en zullen er wat queries gedraaid moeten worden. Dit betekend dat jij veel gaat werken met

Bekijk vacature »

C# Developer

Functie omschrijving Voor een softwarebedrijf in de omgeving van Veghel zijn we op zoek naar een C# developer. Word jij blij van ontwikkelen in C# en .NET? Lees dan snel verder! Jouw werkzaamheden zullen er als volgt uit gaan zien: Door middel van ASP.NET, MVC Framework en C# ga je webshops, websites en webapplicaties ontwikkelen. Je zorgt voor de optimalisatie van bestaande software en de automatisering van bedrijfsprocessen. Op basis van de wensen van de klant ga je samen met je collega's ga je op zoek naar de juiste oplossingen en je gaat dit uitwerken tot een mooi eindproduct. Bedrijfsprofiel

Bekijk vacature »

Cloud Engineer

Ben jij een ervaren Cloud Engineer die complexe omgevingen kan overzien en wil je graag in vaste dienst werken bij een professioneel en kleinschalig bedrijf waar je een belangrijke rol kan spelen? Wij, IntelliMagic in Leiden, ontwikkelen specialistische IT monitoring software die we als SaaS oplossing verkopen aan grote bedrijven in Europa en de VS. We zijn een Nederlands bedrijf met een goede sfeer en met grote waardering voor de persoonlijke inbreng en kwaliteiten van onze medewerkers. Wij zoeken een ervaren Cloud Engineer met academisch denkniveau die verantwoordelijk wordt voor het beheer van de cloud infrastructuur voor onze Europese klanten.

Bekijk vacature »

.NET developer

Functie Als .NET developer start jij in een development team met één Senior .NET developer en één junior .NET developer. Als team zijn jullie verantwoordelijk voor het schrijven van software voor onze toonaangevende Automatiseringssystemen. Jij gaat aan de slag met de onderhoud van de kernsoftware, ondersteund de software van derden door het gebruik van onze webservices en als team zijn jullie verantwoordelijk voor het ontwikkelen van onze backend oplossingen. Wij maken op dit moment veel gebruik van .NET met ASP.NET. Komend kwartaal gaan wij wel gedeeltelijk overstappen naar .NET Core. Verder werken wij ook met SOAP, REST, JSON, HTML5, CSS3

Bekijk vacature »

Junior .NET developer

Functie Ons programma is voor afgestudeerde enthousiastelingen die het als een uitdaging zien om met een klein dynamisch team bij de grootste bedrijven van Nederland aan de slag te gaan. Tijdens jouw dienstverband word jij begeleid door een talent manager. Het ontwikkelen van jouw talent staat hierbij centraal. Het programma doorloop je met een team van circa 8 Mede- trainees. De eerste maand start je met een fulltime inhouse opleiding. Deze staat geheel in het teken van de werkzaamheden die jij verder in het programma zult uitvoeren. Na deze opleidingsmaand ga je aan de slag in een dynamische omgeving bij

Bekijk vacature »

Ontwikkelaar Identity & Access Management

Dit ga je doen Als Identity & Access Management Ontwikkelaar zorg jij er voor dat studenten, medewerkers en docenten de juiste benodigdheden op het juiste moment kunnen gebruiken; Het juist opslaan van onderzoeksdata en het openbaar beschikbaar stellen van publicaties (Open Access); Studenten, collega's en wetenschappers ondersteunen; Agile en Scrum werken; Technisch Applicatiebeheer; Ontwikkelen in One Identity Manager en VB.NET. Hier ga je werken Als Ontwikkelaar kom je terecht in een hecht team die zich richt op wetenschappelijke informatie en ICT. Jij bent degene die er voor zorgt dat alle informatie, uit diverse onderzoeken, bij de juiste personen terecht komt.

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

PHP Laravel developer

Functie omschrijving Weet jij alles van Laravel en krijg je energie van het ontwikkelen van software hiermee? Laat snel wat van je horen want wij zoeken een PHP/Laravel developer in regio 's-Hertogenbosch. Jouw taken zullen bestaan uit: Softwareapplicaties ontwikkelen en verder optimaliseren in veel diverse projecten op basis van Agile/Scrum. Uitleg geven over software en applicaties Klantcontact hebben over bestaande applicaties. Documentatie schrijven over applicaties. Techstack: PHP, Laravel, HTML, CSS, Javascript. Bedrijfsprofiel Deze organisatie zit in de regio van 's-Hertogenbosch en is een klein softwarebedrijf. Er werken ongeveer 15 medewerkers, verdeeld in meerdere teams, zoals back-end en front-end development, projectmanagement

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

05/05/2024 10:38: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.