Het begrip - functie en het behoud van de

wachtwoord, wachtwoord hasj en veiligheid te begrijpen,,,,,,,,,, 35, 32 aandelen,,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen., van tijd tot tijd server en een gegevensbank voor gestolen of beschadigd.Er een beetje van dit, is het belangrijk om ervoor te zorgen dat de gebruikers van een aantal belangrijke gegevens, zoals codes, niet kan worden hersteld.Vandaag moeten we leren van de hasj en het beschermen van je internet paswoord.,,,, overgenomen, training, elke paar weken hebben we opnieuw een aantal van onze lezers favoriete uit de geschiedenis van het hele gebied.Deze handleiding gepubliceerd in januari, 1.Waarschuwing, cryptografie is een uiterst ingewikkeld probleem, ik ben geen expert.Het onderzoek op dit gebied plaatsvindt, in vele universiteiten en de instellingen, in dit verslag, en ik zal proberen de dingen zo eenvoudig mogelijk wordt, en een veilige methode, in een netwerk van toepassing is opslag van wachtwoorden, 2."-" doen?Een deel van de gegevens, worden omgezet in een relatief korte gegevens, zoals een touw of een getal, en door het gebruik van een enkele functie te vervullen.Een weg "betekent dat het heel moeilijk is (of bijna onmogelijk om het).,, een hasj. Dit is een voorbeeld van een md5 (), die in veel verschillende talen en het systeem is erg populair.,,," hallo "; de gegevens = = 5 dollar... ($gegevens); ECHO $hasj; ///////b10a8db164e0754105b7a99be72e3fe5 md5 (,,,,), het resultaat is altijd een maximaal 32 een string.Maar het bevat slechts de hex karakter; - technisch is het ook kan worden uitgedrukt als een 128 (16 bytes) bedragen.Je kunt md5 (), meer. En je zou nog steeds aan het einde van de gegevens, de lengte van een hasj.Het feit dat je een tip geven, waarom dit wordt beschouwd als een van de functies van een enkele ",,, 3.Het gebruik van hasj opslag van wachtwoorden, registratie van het algemene proces:,, de gebruikers, de voltooiing van de registratie, met inbegrip van de code op het gebied van web - script.,, opslag van alle informatie in de database.,, maar, het wachtwoord is door de hasj voor de opslag, de oorspronkelijke versie,. Het wachtwoord niet worden opgeslagen in een lokale dus het is technisch weggegooid.,,,,,,, - proces: een gebruikersnaam (of e - mail) en een wachtwoord, wachtwoord scripts, door dezelfde hasj, SCRIPT gevonden in de database, voor de gebruikers van gegevens opgeslagen, en van de code, Deze twee waarden worden vergeleken. De toegang is verleend, als met de,,, toen we besloten.- het wachtwoord op een goede manier, zullen we in de verwezenlijking van dit proces achter.Als de gegevensbank voor gestolen, de gebruikers van het compromis niet, hè?Oké, het antwoord is "het hangt ervan af. Laten we eens kijken wat de potentiële problemen.Vraag 1:# hasj, hasj - botsing botsing plaatsvindt, in twee verschillende data die voor dezelfde hasj.De kans dat dit gebeurt, hangt af van de functie die je gebruikt.Als een voorbeeld van, en ik heb gezien wat oude SCRIPT met crc32 () - wachtwoord.De functie van het creëren van een 32 - bit als resultaat.Dit betekent dat slechts 2 ^ 32 (d.w.z. 4294967296) mogelijk., laat de hasj wachtwoord:,, ECHO crc32 ('supersecretpassword "); de produktie van: ///////323322056, nu, laten we aannemen dat iemand gestolen van een gegevensbank met de rol en de hasj.We kunnen niet in de 323322056 supersecretpassword ", maar we kan worden berekend aan de hand van een andere code, worden omgezet in dezelfde - waarde, met een simpel scenario:,, set_time_limit (0); $I = 0; overwegende dat de (echt) {als (crc32 (base64_encode (me) 323322056) (ECHO) = = = = = = = base64_encode (me); intrekking;}, ik kan dit + + + + + +;}, die voor een tijdje, maar uiteindelijk, moet het een string.We kunnen gebruik maken van de draad terug, in plaats van "supersecretpassword", het ons zal lukken in de persoonlijke rekeningen. En, zoals bijvoorbeeld in mijn computer het script, en na een paar minuten, ik heb, mtixmjy5mtawng = =, ".Laten we het testen: ('supersecretpassword crc32, ECHO, "); de produktie: ///////323322056 ('mtixmjy5mtawng = =" ECHO crc32); ///////323322056 output:,, hoe dit kan worden voorkomen?En nu, een krachtige computer thuis kunnen worden gebruikt om een bijna een miljard keer per seconde hasj.Dus we moeten een hasj, een zeer grote omvang, zoals md5 (,,,), kan het nodig zijn, omdat het kan leiden tot 128 bit - waarde.Dit is omgezet in 340282366920938463463374607431768211456 mogelijk resultaat.Door zo veel herhalingen op zoek naar botsing niet mogelijk is.Maar sommige mensen vinden er nog steeds doen methode (zie hier),,,, sha1 Sha (), is een betere optie, die een langere 160 - waarde.,,, 5.Vraag 2:# Regenboog, zelfs als we het probleem oplossen van de botsing, we zijn nog steeds niet veilig.,,, de Regenboog - waarde is bij de berekening van de tabel van de woorden en hun gecombineerde gebouwd.,,, van deze tabel kan hebben op het gedrag van de miljoenen of miljarden,,. Bijvoorbeeld, Je kan met het oog op de aanneming van een woordenboek, die elk woord van de hasj.Je kan ook in combinatie met woorden, die ook de hasj.Dit is nog niet alles, je kan zelfs tussen de woorden en in een aantal, en die kunnen worden opgeslagen op de tafel, rekening houdend met de opslag van goedkoop kunnen worden geproduceerd en gebruikt, grote Regenboog.,, stel, een grote gegevensbank voor gestolen, samen met de code - waarde van 10 miljoen.Als iedereen naar de Regenboog tabel is nogal makkelijk.Natuurlijk, niet iedereen zal worden gevonden, maar een aantal van hen wel.Hoe kan voorkomen?We kunnen proberen om een "zout".Hier is een voorbeeld:,, het wachtwoord is "easypassword dollar"; ////////gevonden is het mogelijk de Regenboog omdat het wachtwoord bestaat uit twee woorden ECHO sha1 ($. //////////////6c94d3b42518febd4ad747801d50a8972022f956); het gebruik van willekeurige karakter, Kan het dan het zout = "f&#@ $v generaal HU ^)% hgfds"; ///////dit niet in een vooraf ontdekte Regenboog tabel ECHO sha1 ($zout.De dollar /cd56a16759623378628c0d9336af69b74d9d71a5 wachtwoord);,, we zijn eigenlijk doen is verbonden met de code voor "zout", string.De daaruit voortvloeiende verplichtingen, blijkbaar niet in een vooraf vastgestelde lijst van de Regenboog.Maar we zijn nog niet veilig.,,, 6.Vraag 3:# Regenboog tabel (opnieuw), onthoud, Regenboog tabel kunnen beginnen zodra de databank die is gestolen, en hoe dit kan worden gebruikt,???????En zelfs het gebruik van zout, dit kan de database is gestolen.Ze gaat van nul te beginnen, een nieuwe generatie van de Regenboog, maar deze keer zullen ze het zout in de tabel, ze hebben elk woord.,, bijvoorbeeld in een algemene lijst van de Regenboog, easypassword, "," kan bestaan.Maar in deze nieuwe tabel van de Regenboog, ze ", F&#@ V) HU ^% en hgfdseasypassword,".Als ze alle 10 miljoen stelen van gezouten hasj voor deze tabel kan vinden, zullen ze weer een wedstrijd. En hoe dit kan worden voorkomen?,, we kunnen gebruik maken van een speciale "zout", integendeel, het verandert elke gebruiker van het zout,., de kandidaten uit de database van gebruikers - ID 's waarde:,, - = sha1 (user_id dollar.Dit is gebaseerd op de veronderstelling dat de gebruikers id nummer nooit veranderen, dit is een typisch geval voor elke gebruiker, we kunnen ook tot een willekeurige reeks, en gebruik het als enige het zout.Maar we moeten ervoor zorgen dat onze winkel in de opname, ergens,, ///////. Tot een willekeurige reeks functies 22 tekens lang unique_salt () {terug substr (sha1 (mt_rand ()), 0,22);} $unique_salt = unique_salt (sha1 - waarde); - dollar (USD unique_salt.Als de code); ///////unique_salt dollar bewaren de gegevens /..., deze methode ons beschermen tegen de Regenboog, omdat nu een wachtwoord is met elk een verschillende waarde.De aanvaller moet leiden tot een afzonderlijke tabel 10 miljoen van de Regenboog, dit is totaal onrealistisch, 7.De functie van de grootste problemen 4:# hasj, snelheid, snelheid van gedachten is ontworpen, want ze worden vaak gebruikt voor de berekening van de gegevens en de controle van de documenten van grote waarde, het controleren van de integriteit van de gegevens.,, hoe kan dat?En, zoals ik al eerder heb gezegd, een sterke gpu van moderne PC (ja, video) kan door berekening van ongeveer een miljard - waarde per seconde.Zo kunnen ze gebruiken brute kracht tegen pogingen om elke mogelijke wachtwoorden.,, zou je denken dat de lengte moet ten minste acht karakter van de code kunnen handhaven van de veiligheid van de brute aanvallen, maar we beoordelen, inderdaad, zaak:,,, als wachtwoord kan bevatten, de kleine letters, cijfers en letters zijn hoofdletters, 62 (26 + 26 + 10) mogelijke karakter.,, een lange reeks van acht letters 62 ^ 8 mogelijke versie.Dit is een kleine dan 218 miljard, waar het percentage per seconde. En 10 miljard - waarden op te lossen, ongeveer 60 uur.,,, en van de code van zes tekens, dit is ook zeer vaak, en het zal in 1 minuut nodig.,, 9 of 10 letters van het wachtwoord, maar je Kan zou je wat gebruikers begon te haten. En hoe dit kan worden voorkomen?Het gebruik van een langzaam, de hasj, je gebruikt een hasj, in dezelfde hardware kan per seconde 100 miljoen keer, in plaats van 10 miljard keer per seconde.Dan zou de aanvaller 1000 keer zo lang de brute kracht van hasj.60 uur wordt bijna zeven jaar.,,, een methode is om haar eigen functie, en myhash ($wachtwoord, unique_salt dollar) {% zout = "f&#@ V) HU ^% hgfds"; de dollar (USD unique_salt sha1 - waarde.Als dat het wachtwoord); ///////1000 keer (i = 0; ik < 1000, $I + +) (= sha1 hasj dollar);} naar hasj;}, of je kan een algoritme, ter ondersteuning van de kosten van deze parameters, "de kogelvis.In de PHP, dit kan worden gebruikt, de crypte (), functie, myhash ($wachtwoord, unique_salt dollar) {///////kogelvis zout moet 22 tekens lang terug naar de crypte ($2 dollar. "$10 dollar. Unique_salt);},,, de crypte () tweede parameter met een waarde van $($) scheiding met symbolen, de eerste waarde is. En $2, dat we met blowfish algoritme.,, de tweede waarde van 10 dollar, in dit geval, is de" kosten van parameters.Dit is het aantal herhalingen van basis - 2 log (10 = > 2 = 1024 iteratieve ^ 10). Dit cijfer tussen en binnen de grenzen van de 31 04.,, laten we kijken naar een voorbeeld:,, de functie van myhash ($wachtwoord, unique_salt dollar) {terugkeer pauze ($2 dollar. "Voor $10 dollar. Unique_salt); unique_salt () {} functie terug substr (sha1 (mt_rand ()), 0,22);}, code =" geheim "; ECHO myhash ($wachtwoord, unique_salt ()); ///////2 dfda807d832b094184faeu1elwhtr2xhtuvs3r9j1nfrgbcudcczc resultaten: 10 dollar, die hasj met algoritme (2 de dollar), de kosten van parameters (10 dollar) en van 22 karakter, met zout.De rest is de berekening van de hash.We doen de test:,, ///////aannemen dat het uit de database - = $10 dollar dfda807d832b094184faeu1elwhtr2xhtuvs3r9j1nfrgbcudcczc 2 "; ///////gebruiker van een hypothese is het wachtwoord =" dollar "is geheim wachtwoord; als (check_password ($ha en wachtwoord dollar)) {ECHO" toegang ".- ECHO "toegang geweigerd.";) functie (- code check_password dollar) {///////29, met inbegrip van de kosten van het algoritme karakter en zout /noemen we full_salt full_salt dollar = substr ($hasj, 0, 29); ///////new_hash die hasj wachtwoord dollar = pauze ($wachtwoord, full_salt dollar); ///////terug naar waar of onwaar ($- = = $new_hash);}, als we dit, zien we dat de "toegang tot!",,, 8.Zet hem op, rekening houdend met alle samen meer dan, we schrijven een op basis van wat we geleerd hebben op dit moment het nut van klasse:,, passhash (//kogelvis particuliere statische algoritme = "2" dollar; ///////kosten van de parameters van de statische kosten = 10 dollar voor intern gebruik; ///////openbare statische functie unique_salt () {terug substr (sha1 (mt_rand ()), 0,22)) ///////; dit zal worden gebruikt voor de productie van hasj - (dollar van de statische wachtwoord, wachtwoord () {terugkeer pauze,:: $algoritme.Zelf: de kosten."$".Sinds unique_salt:: ()); deze zal worden gebruikt voor de vergelijking van de) ///////- de statische functie check_password identificatienummer (pin - dollar full_salt = substr () {% $hasj, 0, 29% ($); new_hash = encryptie, full_salt dollar); - = =% terug ($new_hash);}}, hier is voor de registratie van de gebruikers, het gebruik van: ///////klasse, bevat ("passhash s"); ////////_post dollar lees alle vormen van input...Je materiaal van de conventionele vormen van controle //////////////////////////////////////////////////...//- wachtwoord pass_hash dollar = passhash:: - ($_post; ///////'password "[]) opslag van alle gebruikers van de gegevensbank informatie, met inbegrip van $_post ['password. ////////pass_hash in plaats van de dollar, de winkel... Dit is Het gebruik van een gebruiker:,, ///////passhash met klasse (" s "); ////////_post dollar lees alle vormen van input...Op basis van _post $/('username] of soortgelijke /gebruiker opnemen...///////- wachtwoord probeerde in te loggen als van de gebruikers (passhash:: check_password ($gebruikers'pass_hash] [, [is] _post dollar'password) //////////////- toegang tot...(/////////////////////- Weigering van toegang - ///////////////////////////////////////...}, 9.De beschikbaarheid van de kogelvis, een briefje, blowfish algoritme kan niet in alle systemen te bereiken, ook al is in de mode.Kun je de code, controleer je systeem, als (crypt_blowfish = = 1) {'} {"is", of "nee";}, ECHO, maar in de PHP 5.3, u hoeft zich geen zorgen te maken over de tenuitvoerlegging van het vaartuig; PHP hier.,,,, dat een conclusie, - de code moet stevig genoeg voor de meeste aanvragen.Zei, vergeet het niet, je kan ook verzoeken de leden van je krachtiger wachtwoord, door de uitvoering van een minimale lengte, gemengde letters, cijfers en bijzondere karakter.Kan je je voorstellen voor verbeteringen op dit vlak voor je?,



Previous:
Next Page: