Aké dôležité je udržiavať dĺžku hesla v tajnosti

Udržiavanie kritického hesla pri zachovaní bezpečnosti?

udržiavať

Vie niekto, že máte heslo s dĺžkou 17, hovorí sa, že vynútenie hesla je oveľa jednoduchšie?

10 odpovedí

Začnime matematikou: Za predpokladu, že sa vaše heslo skladá zo zostupov, tvárí a čísel, je na výber 62 znakov (pre ľahkú matematiku, skutočné heslá tiež používajú symboly). Heslo dĺžky 1 má 62 možností, heslo dĺžky 2 má 62 ^ 2 možností. heslo dĺžky n má 62 možností.

To znamená, že ak viem, že vaše heslo má presne 17 znakov, môžem preskočiť všetky heslá s dĺžkou menej ako 17 a existuje iba 62 ^ 17 hesiel na vyskúšanie.

Koľko hesiel však existuje s dĺžkou menej ako 17 v porovnaní s 62 ^ 17?

Ak teda spočítame 62 ^ n a vydelíme 62 ^ 17, dostaneme (súčet od n = 1 do n = 16 zo 62 ^ n)/62 ^ 17 = 0,016 (odkaz na výpočet), takže kontrolujeme iba heslá dĺžky 17 je len o 1,6% rýchlejší ako kontrola všetkých hesiel do dĺžky 17

Ak máme schému hesla, ktorá umožňuje všetkých 95 tlačiteľných znakov ASCII, potom úspora z toho, že nemusíte skúšať heslá kratšie ako 17, klesne na 1,06% (odkaz na výpočet).

Zaujímavá matematická interakcia o tomto pomere počtu hesiel kratších ako n, k počtu hesiel dĺžky n, je tá, že vôbec nezávisí od n. Je to spôsobené tým, že už sme veľmi blízko k asymptote 1/95 = 0,0105 . Útočník teda z tohto triku získa rovnakú relatívnu alebo percentuálnu časovú úsporu bez ohľadu na dĺžku hesla; vždy je to medzi 1% - 2%. Aj keď samozrejme, absolútny čas, ktorý by to trvalo, sa zvyšuje v poradí podľa veľkosti s každou novou postavou, ktorú pridáte.

Vyššie uvedená matematika predpokladá jednoduchého brutálneho vynútiteľa, ktorý vyskúša a, b, c,. aa, ab,. Čo je dobrý model (ish) na správne lámanie hesiel generovaných počítačom, ale je to hrozný model na odhadovanie hesiel generovaných ľuďmi.

Skutočné crackery hesiel sú založené na slovníku a skúšajú slová (a kombinácie slov) z anglického slovníka, zoznamy uniknutých hesiel atď., takže tieto výpočty treba brať s rezervou.

Ďalším efektom poznania vašej dĺžky je, že nemusíte skúšať žiadne heslá viac ako 17, čo by pre surové vynútené algoritmy skúšajúce kombinácie slovníkových slov mohlo byť skutočne obrovskou úsporou.

Ako uviedli @SteveSether, @xeon a @CountIblis, odhalenie dĺžky (alebo entropie) hesla môže mať tiež efekt, ak sa útočník pokúsi vaše heslo dokonca prelomiť, odradiť ho od silných hesiel a priťahovať ich. slabý. Takže ak viete, že máte silné heslo, odhalte ho! Odhalenie dĺžok (alebo entropií) hesiel pre všetkých používateľov v systéme má však za následok, že silné heslá sú silnejšie a slabé heslá slabšie.

Spodná čiara:

Povedať niekomu dĺžku svojho hesla nie je to najhoršie, čo môžete urobiť, ale stále by som to neurobil.

Okrem podrobnej matematiky @Mike si myslíme, že dĺžka hesla uniká všade:

Po zadaní textu sa ho jasný účastník môže naučiť, a to buď počítaním „*“ na obrazovke, alebo počúvaním stlačenia klávesov (v druhom prípade môže zvuk zaznamenať pomocou svojho smartfónu a hrať sa ako voľnočasová aktivita).

V klasickom scenári „webového prehliadača“ sa používateľské meno a heslo odošle na server prostredníctvom protokolu HTTPS POST. Vrstva SSL zašifruje údaje, ale protokol SSL neskryje dĺžku údajov, takže pasívny sieťový pozorovateľ sa tiež dozvie dĺžku hesla.

Užívateľské rozhranie aj prijímajúci systém spracujú heslo pomocou funkcií, ktorých doba vykonania a vzory prístupu do pamäte budú závisieť od dĺžky hesla. Útočníci, ktorí môžu vykonávať synchronizačné opatrenia, budú zvyčajne schopní z týchto opatrení odvodiť dĺžku hesla.

Dobrým prístupom je preto považovať dĺžku hesla za verejné údaje. Niektorí útočníci k nej nebudú mať prístup (typ útočníkov, ktorí si vzali kópiu databázy servera); ostatní to budú vedieť. Je veľmi ťažké vedieť, „aká je tajná“ dĺžka hesla, a keďže bezpečnosť súvisí s kvantifikáciou vecí, je dobré predpokladať, že všetci útočníci môžu poznať dĺžku hesla. Uveriť, že to môžete tajiť, a odhadnúť bezpečnosť na základe tejto predstavy by bolo príliš nebezpečné.

Zistenie dĺžky hesla prezrádza niečo o sile hesla. V podstate teda niekomu dávate návrh, aké ťažké by to bolo uhádnuť.

Takže ak je vaše heslo veľmi dlhé (vo vašom príklade 17 znakov), informácie sú väčšinou zbytočné. Ak je heslo krátke (6 znakov), informuje útočníka, že by vás mohli napadnúť. Útočníci idú za najľahšími cieľmi.

Nesúhlasím s prijatou odpoveďou. Je pravda, že dĺžka hesla je takmer zbytočná, ak všetky heslá vytvorí stroj náhodne. Toto už neplatí, ak heslá vytvárajú obyčajní ľudia: na základe slov v slovníku zmiešajte malé písmená, nahraďte niektoré znaky číslami alebo špeciálnymi znakmi a pridajte predponu a príponu (napr. „! 1“) atď.

Pozrime sa na 2 scenáre, jeden je, že máme 10 000 000 hesiel a naším cieľom je nájsť čo najviac hesiel vhodných pre tieto typy korešpondencie. Druhé je hash heslo a chceme ho prelomiť. V obidvoch scenároch sa rozdiel ukázal ako významný. Ako obvykle, pri útoku môžu byť zneužité všetky informácie, aj keď sa to na prvý pohľad nezdá .

Scenár 1: Vytvára mnoho z 10 000 000 hesiel s obmedzenými zdrojmi.

Môžeme vyskúšať iba útoky bruteforce na všetky hodnoty hash hesla, bez rozlišovania, ak nepoznáme dĺžku hesla.

Ak použijeme vyčerpávajúci útok bruteforce (ktorý zaručene nájde heslo), znalosť dĺžok hesiel ponúkne iba veľmi minimálny zisk. Prečo? Hrubé vynútenie všetkých 7-ciferných hesiel trvá asi 1 - 2%, kým bude hrubé vynútenie všetkých 8-ciferných hesiel. Jediná vec, ktorú získame znalosťou dĺžky, je, že nemusíme hrubou silou používať všetkých 7-ciferných (a menších) hesiel, ak už vieme, že heslo má 8 číslic. Okrem toho, že útok bruteforce vyžaduje takmer nekonečné zdroje (výpočtový výkon a/alebo čas), a preto nie je to, čo môžeme alebo urobíme.

Namiesto toho testujeme sériu „pravdepodobných“ hesiel pre každú dĺžku hesla. Jedným zo spôsobov, ako to dosiahnuť, je slovníkový útok. Testovanie pravdepodobných hesiel je o niekoľko rádov lacnejšie ako použitie vyčerpávajúcej hrubej sily, má to však obrovskú nevýhodu: Len čo sme vyskúšali všetky „pravdepodobné“ sedemmiestne heslá proti hašovaniu hesiel, nenašli sme zodpovedajúce heslo, nenájdeme vedieť, či je zodpovedajúce heslo pre tento hash hesla dlhšie ako 7 číslic. Pokiaľ teda nevieme s istotou, že heslo nie je dlhšie ako 7 číslic, musíme toto hash hesla ešte otestovať proti všetkým „pravdepodobným“ 8-miestnym heslám, 9-miestnym heslám, 10-miestnym heslám atď. - a pri testovaní pravdepodobných hesiel, rovnako ako vyčerpávajúca bruteforce, náklady na testovanie dlhších hesiel exponenciálne stúpajú. Pretože teraz vieme, že heslo má 7 číslic, nemusíme ho testovať na pravdepodobných 8, 9, 10, 11, 12-ciferných a ešte dlhších heslách, čo šetrí skutočne obrovské množstvo práce.

Zlepšuje sa. Akonáhle otestujeme všetky heslá s pravdepodobnosťou až do dĺžky, povedzme, 20 číslic, môžeme teraz minúť zvyšné prostriedky na útok hrubou silou na tieto haše hesiel, s malou dĺžkou hesla, ktorú naše vyhľadávanie predchádzajúce pre „pravdepodobné“ heslá. Hovoríme, že nám zostáva 2 000 000 nevyžiadaných hesiel a 100 000 z nich má heslá s menej ako 6 číslicami. Pamätajte, že máme obmedzený rozpočet. Šesťciferné heslá sú lacné na prelomenie. Ale pretože vieme, čo je 100 000 6 číslic alebo menej, teraz musíme vynútiť hrubé 100 000 šesťciferných hesiel, aby sme zlomili 100 000, namiesto hrubého vynútenia 2 000 000 hesiel, aby sa zlomil 100 ' 000 6 digitálnych slov. To je 5% práce za rovnaký výsledok!

Ak sa pozrieme na všetky výhody kombinované, presný zisk, ktorý získame zo znalosti dĺžok hesiel, závisí od rýchlosti našej metódy na testovanie „pravdepodobných“ hesiel, príslušnej úspešnosti našej metódy na testovanie pravdepodobných hesiel pre každú dĺžku hesla, rozloženie dĺžok hesiel v zbierke hash hesiel, ktoré chceme prelomiť, a množstvo zdrojov, ktoré máme k dispozícii (rýchlosť výpočtu, čas). Ale tým, že poznáme dĺžky hesiel, môžeme ľahko zvýšiť počet hesiel, ktoré nájdeme, pri danom množstve zdrojov niekoľkokrát - ak čísla budú pracovať v náš prospech, môžeme pravdepodobne znížiť náklady na zdroje na prelomenie 30% hesiel rádovo alebo viac.

Scenár 2: Zlomte jedno heslo pri cielenom útoku

Ak nepoznáme dĺžku hesla, musíme rozdeliť naše zdroje medzi surové, vynútiť všetky kľúče krátkou dĺžkou a otestovať heslá dlhšej dĺžky. Za predpokladu, že na každé minieme polovicu svojich zdrojov, vieme, že dĺžka hesla nám umožňuje úplne prejsť na jeden z týchto dvoch zdrojov, a teda zdvojnásobiť naše dostupné zdroje.

Získavame tiež ďalšie informácie, ktoré môžu byť pri cielenom útoku mimoriadne cenné:

Ak je heslo dosť krátke na to, aby ste si ho brutálne vynútili, môžeme vám určiť hornú hranicu, dokedy nám heslo trvá. Môže to spôsobiť, že sa pokúsime o niektoré útoky, ktoré by sme inak nebrali do úvahy.

Môžeme tiež vypočítať pravdepodobnosť porušenia hesla. Ak vieme, že heslo pravdepodobne nezlomíme, môžeme svoje zdroje minúť hľadaním ďalších spôsobov narušenia bezpečnosti systému.

Ak máme 2 rôzne heslá od toho istého používateľa, môžeme zistiť, či existuje šanca, že v skutočnosti ide o rovnaké heslo. Ak sa líši iba o 2 - 3 číslice, môžeme získať zdvorilú predstavu, že dlhšie heslo by mohlo byť rovnaké ako kratšie plus predpona alebo prípona.

Ak získame ešte viac informácií o hesle, môže to mať za následok vyšší zisk ako u 2 jednotlivých častí. . Napríklad, ak zistíme, že heslo je v slovníku Oxford jedno slovo, máte stále možnosť uchovať heslo v bezpečí, ak napríklad môžeme vynútiť iba jedno heslo za minútu. Ak ale tiež vieme, že dĺžka hesla je 17 číslic, je koniec.