[{"data":1,"prerenderedAt":868},["ShallowReactive",2],{"blog-password-strength-checker-accuracy":3},[4,459],{"id":5,"title":6,"alt":7,"author":8,"body":9,"category":436,"description":437,"extension":438,"faq":439,"image":446,"meta":447,"navigation":448,"path":449,"publishedAt":450,"seo":451,"stem":452,"tags":453,"updatedAt":457,"__hash__":458},"blog\u002Fen\u002Fpassword-strength-checker-accuracy.md","Why Password Strength Meters Lie: I Tested 10 Checkers","Password strength checker accuracy: 10 checkers rating P@ssw0rd2026!, from Very Weak to 2 million years","kodewright",{"type":10,"value":11,"toc":425},"minimark",[12,26,29,34,64,67,196,203,207,217,230,245,249,258,265,282,285,289,292,302,312,315,319,325,338,342,348,367,370,374,377,380,391,395,400,409,414,417,422],[13,14,15,16,20,21,25],"p",{},"I ran ",[17,18,19],"code",{},"P@ssw0rd2026!"," through ten password strength checkers on the same afternoon. One told me it would take ",[22,23,24],"strong",{},"two million years"," to crack. A small script I pointed at the same password found it in about 50,000 guesses, faster than you can blink. Both can't be right, and the gap between them is the whole problem with password strength meters.",[13,27,28],{},"The short version: a strength meter is only as good as the attack it imagines. Most of the honest ones imagine the attack a real cracker runs. The bad ones imagine an attacker who guesses randomly, which no attacker does. If you want to know whether a checker is worth trusting, that single difference tells you.",[30,31,33],"h2",{"id":32},"the-test","The test",[13,35,36,37,39,40,44,45,48,49,52,53,48,56,59,60,63],{},"I picked ",[17,38,19],{}," on purpose. It has 13 characters, upper and lower case, a digit, two symbols and a year. It ticks every box a 2003-era \"strong password\" rule asks for. It is also one of the most guessable strings a person can type: the word ",[41,42,43],"em",{},"password",", dressed up with the swaps (",[17,46,47],{},"a","→",[17,50,51],{},"@",", ",[17,54,55],{},"o",[17,57,58],{},"0",") that every cracking tool tries first, plus the current year and a ",[17,61,62],{},"!"," on the end.",[13,65,66],{},"I ran it through ten checkers and recorded exactly what each one showed on 2 November 2026. Here is the spread.",[68,69,70,86],"table",{},[71,72,73],"thead",{},[74,75,76,80,83],"tr",{},[77,78,79],"th",{},"Checker",[77,81,82],{},"Verdict",[77,84,85],{},"Crack time it showed",[87,88,89,101,112,122,133,143,153,163,174,185],"tbody",{},[74,90,91,95,98],{},[92,93,94],"td",{},"PasswordMonster",[92,96,97],{},"Very Weak",[92,99,100],{},"6.41 seconds",[74,102,103,106,109],{},[92,104,105],{},"Service Victoria (AU gov)",[92,107,108],{},"Weak",[92,110,111],{},"12 days",[74,113,114,117,119],{},[92,115,116],{},"Bitwarden",[92,118,97],{},[92,120,121],{},"17 minutes",[74,123,124,127,130],{},[92,125,126],{},"SecuredKit (mine)",[92,128,129],{},"Weak, 23 bits",[92,131,132],{},"17 minutes (bcrypt)",[74,134,135,138,141],{},[92,136,137],{},"NordPass",[92,139,140],{},"Moderate",[92,142,121],{},[74,144,145,148,150],{},[92,146,147],{},"RoboForm",[92,149,108],{},[92,151,152],{},"(no time shown)",[74,154,155,158,161],{},[92,156,157],{},"Kaspersky",[92,159,160],{},"\"Time to change your password\"",[92,162,152],{},[74,164,165,168,171],{},[92,166,167],{},"zxcvbn demo",[92,169,170],{},"Score 2 \u002F 4",[92,172,173],{},"17 minutes (slow hash)",[74,175,176,179,182],{},[92,177,178],{},"passwordmeter.com",[92,180,181],{},"Fair, ~77 bits",[92,183,184],{},"20,000 years (fast hash)",[74,186,187,190,193],{},[92,188,189],{},"Security.org",[92,191,192],{},"(no label)",[92,194,195],{},"2,000,000 years",[13,197,198,199,202],{},"Seven of the ten got it roughly right: weak, crackable, change it. Two got it badly wrong. One sat on the fence. The interesting part isn't the scores, it's ",[41,200,201],{},"why"," they split, because the ones that agreed with each other are running the same idea under the hood.",[30,204,206],{"id":205},"what-the-honest-ones-do","What the honest ones do",[13,208,209,210,216],{},"Six of the seven accurate checkers are built on, or behave like, ",[47,211,215],{"href":212,"rel":213},"https:\u002F\u002Fgithub.com\u002Fdropbox\u002Fzxcvbn",[214],"nofollow","zxcvbn",", the estimator Dropbox published in 2016. RoboForm says so on its own page. Bitwarden, the Australian government's Service Victoria tool and the reference zxcvbn demo return the same warning and the same suggestions word for word, which is the tell that they share an engine, even though each picks a different line of zxcvbn's output for its headline time.",[13,218,219,220,223,224,226,227,229],{},"zxcvbn doesn't measure your alphabet. It tries to guess your password the way a cracker would, and reports how many guesses that takes. It carries word lists (common passwords, English words, names), and it knows the tricks: leetspeak substitutions, a capital on the first letter, a year or a short number on the end, keyboard walks like ",[17,221,222],{},"qwerty",". For ",[17,225,19],{}," it finds the word ",[41,228,43],{}," under the substitutions, peels them off, adds the year as a cheap suffix, and lands on about 10 million guesses total. Against a password stored with a slow hash like bcrypt, that's roughly 17 minutes. Against a fast hash like MD5, it's a fraction of a second. Its warning is blunt: \"This is similar to a commonly used password.\"",[13,231,232,233,237,238,240,241,244],{},"My own ",[47,234,236],{"href":235},"\u002Fpassword-strength-checker","Password Strength Checker"," uses the same approach, and it runs entirely in your browser, so the password you type never leaves your device. It rated the test string ",[22,239,129],{},", flagged the ",[17,242,243],{},"P@ssw0rd"," substitution by name, and told me a capital first letter \"barely helps.\" That is the behaviour you want: the meter naming the exact shortcut an attacker would take.",[30,246,248],{"id":247},"what-the-dishonest-ones-do","What the dishonest ones do",[13,250,251,252,254,255,257],{},"Now the two that failed. Security.org's tester said ",[17,253,19],{}," would take ",[22,256,24],{}," to crack. passwordmeter.com called it \"Fair,\" put it at about 77 bits, and showed crack times stretching past a trillion years for an online attack.",[13,259,260,261,264],{},"These meters are doing arithmetic, not simulation. The formula is ",[17,262,263],{},"entropy = length × log₂(charset)",". For a 13-character password drawn from the 95 printable ASCII characters, that's 13 × log₂(95) ≈ 85 bits, an astronomically large number. Then they divide a made-up keyspace by a guess rate and print the result.",[13,266,267,268,271,272,275,276,278,279,281],{},"The math isn't wrong. It's answering the wrong question. ",[17,269,270],{},"length × log₂(charset)"," is the strength of a password chosen ",[41,273,274],{},"at random"," from that alphabet. ",[17,277,19],{}," was not chosen at random. It was chosen by a human reaching for the obvious word and the obvious decorations, and an attacker knows that. The charset formula has no concept of \"the word ",[41,280,43],{}," is in here.\" So it rates the costume instead of the person wearing it, and the costume looks great.",[13,283,284],{},"To be fair to passwordmeter.com, it did flag \"Contains a date or year\" in its pattern notes, so it half-knows. It just doesn't let that knowledge override the headline number. Security.org gave no such hint.",[30,286,288],{"id":287},"i-tried-to-crack-it","I tried to crack it",[13,290,291],{},"The claim \"an attacker would find this fast\" is easy to assert and worth actually checking, so I wrote a short hybrid dictionary attack and ran it against an MD5 hash of the password. The rules were the ordinary ones any cracker ships with: take a list of the 1,000 most common passwords, apply leetspeak substitutions and an optional capital, then append a year from 1900–2099 and optionally one symbol.",[293,294,299],"pre",{"className":295,"code":297,"language":298},[296],"language-text","cracked: P@ssw0rd2026! after 50,360 guesses in 0.028 s\n","text",[17,300,297],{"__ignoreMap":301},"",[13,303,304,305,307,308,311],{},"Fifty thousand guesses. On a two-core cloud VM, not a cracking rig. The word ",[41,306,43],{}," sits at rank two in that list, so the moment the script layered the standard substitutions and years onto it, the match fell out almost immediately. The ",[41,309,310],{},"entire"," ruleset I used, every word times every variation times every year and symbol, is about 88 million candidates. On one RTX 4090 against unsalted MD5 (hashcat 6.2.6 benchmarks it at ~164 billion guesses a second), exhausting all 88 million would take under a thousandth of a second. The two-million-year estimate was off by roughly fourteen orders of magnitude.",[13,313,314],{},"That is the practical meaning of a bad strength meter. It isn't a little optimistic. It is wrong by a factor you can't round away.",[30,316,318],{"id":317},"why-the-lie-is-dangerous","Why the lie is dangerous",[13,320,321,322,324],{},"A strength meter is advice, and people act on it. If a meter tells you ",[17,323,19],{}," is good for two million years, you stop there and you reuse it. The composition checklist that most of these tools still show, upper, lower, number, symbol, actively points you toward passwords like this one: short, pattern-heavy, and exactly what rule-based attacks are built to catch.",[13,326,327,328,332,333,337],{},"This is also why NIST stopped recommending composition rules. Its guidance (SP 800-63B) now tells services to drop forced complexity and screen passwords against breach and common-password lists instead, because length and unpredictability beat a symbol quota. A meter that rewards the symbol quota is optimising for the thing the standard abandoned. I've written more on where that line sits in ",[47,329,331],{"href":330},"\u002Fblog\u002Fpassword-entropy-minimum-length","the math of entropy"," and on ",[47,334,336],{"href":335},"\u002Fblog\u002Fhow-long-to-crack-my-password","how long real passwords survive a GPU",".",[30,339,341],{"id":340},"how-to-tell-a-good-checker-from-a-bad-one-in-ten-seconds","How to tell a good checker from a bad one in ten seconds",[13,343,344,345,347],{},"You don't need to read the source. Type ",[17,346,19],{},", or any dictionary word with leet swaps and a year, and watch what happens:",[349,350,351,361],"ul",{},[352,353,354,357,358,360],"li",{},[22,355,356],{},"Good sign:"," it rates the password weak and tells you ",[41,359,201],{}," (\"looks like a common password,\" \"predictable substitutions,\" \"contains a year\"). It's simulating the attack.",[352,362,363,366],{},[22,364,365],{},"Bad sign:"," it rates the password strong because it's 13 characters with mixed types, or it quotes a crack time in thousands of years. It's counting your alphabet, not your choices.",[13,368,369],{},"A second check: type a genuinely random 16-character string and then type four random words. A charset-math meter loves the 16-character string and often calls the four words \"weak\" because they're all lowercase, which is backwards. A pattern-aware meter rates both as strong, because both actually are.",[30,371,373],{"id":372},"where-id-change-my-mind","Where I'd change my mind",[13,375,376],{},"zxcvbn isn't perfect, and I don't want to oversell it. Its word lists are mostly English and a few years old, so a password built from current slang, a non-English dictionary, or a very recent breach list can score higher than it should, because the word genuinely isn't in the list the meter carries. It also can't see that you used the same \"strong\" password on nine other sites, which is the risk that actually gets most people. No strength meter catches reuse; that's what breach checks and a password manager are for.",[13,378,379],{},"So the honest framing isn't \"trust zxcvbn blindly.\" It's \"a meter that simulates guessing is in the right business, and a meter that counts characters isn't.\" The first kind can be improved. The second kind is measuring something that was never the question.",[13,381,382,383,385,386,390],{},"If you want one that does it right and keeps your password on your machine, that's exactly what I built mine to do: paste a candidate into the ",[47,384,236],{"href":235}," to see the specific patterns an attacker would exploit, then let the ",[47,387,389],{"href":388},"\u002Fpassword-generator","Password Generator"," hand you something with no patterns to find.",[30,392,394],{"id":393},"faq","FAQ",[13,396,397],{},[22,398,399],{},"Are password strength checkers accurate?",[13,401,402,403,405,406,408],{},"Some are, some aren't, and the difference is the engine. A checker built on zxcvbn plays out a real guessing attack (dictionary words, leetspeak, keyboard runs, a year on the end) and rates ",[17,404,19],{}," as weak. A checker that just multiplies length by character-set size has no idea the word ",[41,407,43],{}," is inside it, so it reports a huge number. When two checkers disagree wildly, the arithmetic one is almost always the wrong one.",[13,410,411],{},[22,412,413],{},"Why does one checker say my password is strong and another says it's weak?",[13,415,416],{},"Because they're not measuring the same thing. The charset-math meter scores the alphabet you could have drawn from, so any 13-character string with a capital, a digit and a symbol looks great. The pattern-aware meter scores how predictable your actual string is, so a dictionary word with the usual swaps scores low no matter how long it is. Trust the second kind.",[13,418,419],{},[22,420,421],{},"Is it safe to type my real password into an online checker?",[13,423,424],{},"Only when the scoring runs entirely in your browser and nothing is sent anywhere. A breach check that sends the first few characters of a hash is fine; sending the password itself is not. If a site doesn't say clearly that it's client-side, test a password with the same shape instead of your real one, or use a checker like mine that states plainly the password never leaves the page.",{"title":301,"searchDepth":426,"depth":426,"links":427},2,[428,429,430,431,432,433,434,435],{"id":32,"depth":426,"text":33},{"id":205,"depth":426,"text":206},{"id":247,"depth":426,"text":248},{"id":287,"depth":426,"text":288},{"id":317,"depth":426,"text":318},{"id":340,"depth":426,"text":341},{"id":372,"depth":426,"text":373},{"id":393,"depth":426,"text":394},"Security","I ran P@ssw0rd2026! through 10 password strength checkers. Some said 2 million years, one script cracked it in 50,000 guesses. Here's which meters you can trust.","md",[440,442,444],{"question":399,"answer":441},"It depends on the engine. Checkers built on zxcvbn simulate real guessing (dictionary, leetspeak, keyboard patterns, years) and rate a password like P@ssw0rd2026! as weak. Checkers that only count length times character-set size overrate it badly, sometimes by millions of years.",{"question":413,"answer":443},"They measure different things. A charset-math meter scores the alphabet you drew from, so any 13-character password with mixed case and symbols looks strong. A pattern-aware meter scores how guessable the specific string is, so a dictionary word with predictable substitutions scores low even when it is long.",{"question":421,"answer":445},"Only if the analysis runs entirely in your browser and nothing is sent to a server. Some checkers send a partial hash to check breach databases, which is fine, but the strength scoring itself should never leave your device. If a site is vague about this, use a throwaway variant instead of your real password.","\u002Fimages\u002Fblog\u002Fpassword-strength-checker-accuracy\u002Fhero.webp",{},true,"\u002Fen\u002Fpassword-strength-checker-accuracy","2026-11-02",{"title":6,"description":437},"en\u002Fpassword-strength-checker-accuracy",[454,455,215,456],"password strength checker accuracy","password strength meter","password entropy",null,"X1v5Xr7nBOfPkjRx4Muh2tgfRV06956er8Z_4SK8UEE",{"id":460,"title":461,"alt":462,"author":8,"body":463,"category":436,"description":849,"extension":438,"faq":850,"image":858,"meta":859,"navigation":448,"path":860,"publishedAt":450,"seo":861,"stem":862,"tags":863,"updatedAt":457,"__hash__":867},"blog\u002Fuk\u002Fpassword-strength-checker-accuracy.md","Чому вимірювачі надійності пароля брешуть: тест 10 перевірок","Точність перевірки надійності пароля: 10 сервісів оцінюють P@ssw0rd2026! від «дуже слабкий» до «2 мільйони років»",{"type":10,"value":464,"toc":839},[465,475,478,482,503,506,624,631,635,642,654,667,671,680,687,704,707,711,714,719,729,732,736,742,752,756,762,779,782,786,789,792,803,805,810,819,824,831,836],[13,466,467,468,470,471,474],{},"Я прогнав ",[17,469,19],{}," через десять перевірок надійності пароля за один вечір. Одна повідомила, що на його злам піде ",[22,472,473],{},"два мільйони років",". Невеликий скрипт, який я нацькував на той самий пароль, знайшов його приблизно за 50 тисяч спроб — швидше, ніж ви встигнете кліпнути. Обидві відповіді правильними бути не можуть, і саме ця прірва між ними — головна проблема вимірювачів надійності пароля.",[13,476,477],{},"Коротко: вимірювач надійності настільки хороший, наскільки реалістичну атаку він уявляє. Чесні уявляють ту атаку, яку запускає справжній зломщик. Погані уявляють зловмисника, що вгадує навмання, а так не робить ніхто. Якщо хочете зрозуміти, чи вартий перевірки довіри, саме ця відмінність вам усе й скаже.",[30,479,481],{"id":480},"тест","Тест",[13,483,484,485,487,488,490,491,48,493,52,495,48,497,499,500,502],{},"Я взяв ",[17,486,19],{}," навмисно. У ньому 13 символів, великі й малі літери, цифра, два знаки і рік. Він відповідає всім вимогам до «надійного пароля» зразка 2003 року. І водночас це один із найбільш передбачуваних рядків, які людина може набрати: слово ",[41,489,43],{},", прикрашене замінами (",[17,492,47],{},[17,494,51],{},[17,496,55],{},[17,498,58],{},"), які будь-який інструмент для злому пробує найперше, плюс поточний рік і ",[17,501,62],{}," в кінці.",[13,504,505],{},"Я прогнав його через десять перевірок і записав, що саме показала кожна з них 2 листопада 2026 року. Ось розкид.",[68,507,508,521],{},[71,509,510],{},[74,511,512,515,518],{},[77,513,514],{},"Перевірка",[77,516,517],{},"Вердикт",[77,519,520],{},"Показаний час злому",[87,522,523,533,544,553,564,573,582,591,602,612],{},[74,524,525,527,530],{},[92,526,94],{},[92,528,529],{},"Дуже слабкий",[92,531,532],{},"6,41 секунди",[74,534,535,538,541],{},[92,536,537],{},"Service Victoria (уряд Австралії)",[92,539,540],{},"Слабкий",[92,542,543],{},"12 днів",[74,545,546,548,550],{},[92,547,116],{},[92,549,529],{},[92,551,552],{},"17 хвилин",[74,554,555,558,561],{},[92,556,557],{},"SecuredKit (моя)",[92,559,560],{},"Слабкий, 23 біти",[92,562,563],{},"17 хвилин (bcrypt)",[74,565,566,568,571],{},[92,567,137],{},[92,569,570],{},"Помірний",[92,572,552],{},[74,574,575,577,579],{},[92,576,147],{},[92,578,540],{},[92,580,581],{},"(час не показано)",[74,583,584,586,589],{},[92,585,157],{},[92,587,588],{},"«Час змінити пароль»",[92,590,581],{},[74,592,593,596,599],{},[92,594,595],{},"демо zxcvbn",[92,597,598],{},"Оцінка 2 \u002F 4",[92,600,601],{},"17 хвилин (повільний хеш)",[74,603,604,606,609],{},[92,605,178],{},[92,607,608],{},"Прийнятний, ~77 бітів",[92,610,611],{},"20 000 років (швидкий хеш)",[74,613,614,616,619],{},[92,615,189],{},[92,617,618],{},"(без мітки)",[92,620,621],{},[22,622,623],{},"2 000 000 років",[13,625,626,627,630],{},"Сім перевірок із десяти оцінили його приблизно правильно: слабкий, піддається злому, змініть його. Дві помилилися грубо. Одна залишилася сидіти на паркані. Але найцікавіше — не самі оцінки, а ",[41,628,629],{},"чому"," вони розійшлися, бо ті, що збіглися між собою, працюють на одній і тій самій ідеї всередині.",[30,632,634],{"id":633},"що-роблять-чесні","Що роблять чесні",[13,636,637,638,641],{},"Шість із семи точних перевірок побудовані на ",[47,639,215],{"href":212,"rel":640},[214]," — оцінювачі, який Dropbox опублікував 2016 року, — або поводяться так само. RoboForm прямо пише про це на власній сторінці. Bitwarden, урядовий інструмент Service Victoria і довідкове демо zxcvbn повертають однакове попередження й однакові поради слово в слово — це і є ознака спільного рушія, — хоча кожен бере для заголовного часу свій рядок із виводу zxcvbn.",[13,643,644,645,647,648,650,651,653],{},"zxcvbn не вимірює ваш алфавіт. Він намагається вгадати пароль так, як це зробив би зломщик, і повідомляє, скільки спроб на це піде. Він несе з собою словники (поширені паролі, англійські слова, імена) і знає всі хитрощі: leet-заміни, велику літеру на початку, рік чи коротке число в кінці, клавіатурні ряди на кшталт ",[17,646,222],{},". Для ",[17,649,19],{}," він знаходить слово ",[41,652,43],{}," під замінами, здирає їх, додає рік як дешевий суфікс і зупиняється приблизно на 10 млн спроб загалом. Проти пароля, збереженого з повільним хешем на зразок bcrypt, це близько 17 хвилин. Проти швидкого хешу на кшталт MD5 — частка секунди. Його попередження відверте: «Це схоже на поширений пароль».",[13,655,656,657,660,661,663,664,666],{},"Моя власна ",[47,658,659],{"href":235},"Перевірка стійкості пароля"," використовує той самий підхід і працює повністю у браузері, тож пароль, який ви вводите, ніколи не залишає пристрій. Вона оцінила тестовий рядок як ",[22,662,560],{},", назвала заміну ",[17,665,243],{}," поіменно й повідомила, що велика перша літера «майже не допомагає». Саме такої поведінки й треба хотіти: щоб вимірювач називав точний прийом, яким скористався б зловмисник.",[30,668,670],{"id":669},"що-роблять-нечесні","Що роблять нечесні",[13,672,673,674,676,677,679],{},"Тепер про дві, що провалилися. Перевірка Security.org показала, що на злам ",[17,675,19],{}," піде ",[22,678,473],{},". passwordmeter.com назвав його «прийнятним», оцінив приблизно в 77 бітів і показав час злому понад трильйон років для онлайн-атаки.",[13,681,682,683,686],{},"Ці вимірювачі роблять арифметику, а не імітацію. Формула така: ",[17,684,685],{},"ентропія = довжина × log₂(набір_символів)",". Для пароля з 13 символів із 95 друкованих символів ASCII це 13 × log₂(95) ≈ 85 бітів — астрономічно велике число. Далі вони ділять вигаданий простір ключів на швидкість вгадування й друкують результат.",[13,688,689,690,693,694,697,698,700,701,703],{},"Сама математика не хибна. Вона відповідає не на те запитання. ",[17,691,692],{},"довжина × log₂(набір_символів)"," — це надійність пароля, обраного ",[41,695,696],{},"випадково"," з того алфавіту. ",[17,699,19],{}," випадково не обирали. Його обрала людина, яка потяглася до очевидного слова й очевидних прикрас, і зловмисник це знає. Формула набору символів не має уявлення про те, що «слово ",[41,702,43],{}," тут усередині». Тож вона оцінює костюм, а не того, хто його носить, — і костюм має чудовий вигляд.",[13,705,706],{},"Віддам належне passwordmeter.com: він усе ж позначив «Містить дату або рік» у своїх нотатках про шаблони, тож наполовину здогадується. Просто не дозволяє цьому знанню перекрити головне число. Security.org не дав і такого натяку.",[30,708,710],{"id":709},"я-спробував-його-зламати","Я спробував його зламати",[13,712,713],{},"Твердження «зловмисник знайшов би це швидко» легко заявити, але варто й насправді перевірити, тож я написав короткий гібридний словниковий скрипт і запустив його проти MD5-хешу пароля. Правила — найзвичайніші, які постачаються з будь-яким зломщиком: узяти список 1000 найпоширеніших паролів, застосувати leet-заміни й необов'язкову велику літеру, а потім додати рік із 1900–2099 і за бажанням один знак.",[293,715,717],{"className":716,"code":297,"language":298},[296],[17,718,297],{"__ignoreMap":301},[13,720,721,722,724,725,728],{},"П'ятдесят тисяч спроб. На двоядерній хмарній віртуалці, не на зломлювальній фермі. Слово ",[41,723,43],{}," стоїть другим у тому списку, тож щойно скрипт наклав на нього стандартні заміни й роки, збіг випав майже миттєво. ",[41,726,727],{},"Увесь"," набір правил, який я застосував, — кожне слово на всі варіації на всі роки й знаки — це близько 88 млн кандидатів. На одній RTX 4090 проти несоленого MD5 (hashcat 6.2.6 дає ~164 млрд спроб на секунду) перебір усіх 88 млн зайняв би менш як тисячну частку секунди. Оцінка в два мільйони років промахнулася приблизно на чотирнадцять порядків.",[13,730,731],{},"Ось що на практиці означає поганий вимірювач надійності. Він не трохи оптимістичний. Він помиляється в стільки разів, що це не заокруглиш.",[30,733,735],{"id":734},"чому-ця-брехня-небезпечна","Чому ця брехня небезпечна",[13,737,738,739,741],{},"Вимірювач надійності — це порада, і люди за нею діють. Якщо вимірювач каже, що ",[17,740,19],{}," протримається два мільйони років, ви на цьому спиняєтесь і використовуєте його повторно. Чекліст складу, який досі показує більшість таких інструментів — велика літера, мала, цифра, знак, — активно штовхає вас до паролів на кшталт цього: коротких, рясних на шаблони й саме таких, які атаки за правилами й створені ловити.",[13,743,744,745,748,749,337],{},"Саме тому NIST перестав рекомендувати правила складу. Його настанова (SP 800-63B) тепер радить сервісам відмовитися від примусової складності й натомість звіряти паролі з базами витоків і поширених паролів, бо довжина й непередбачуваність перемагають квоту на знаки. Вимірювач, що винагороджує квоту на знаки, оптимізує саме те, від чого стандарт відмовився. Докладніше про те, де проходить ця межа, я писав у ",[47,746,747],{"href":330},"математиці ентропії"," і про те, ",[47,750,751],{"href":335},"скільки реальні паролі витримують проти GPU",[30,753,755],{"id":754},"як-за-десять-секунд-відрізнити-хорошу-перевірку-від-поганої","Як за десять секунд відрізнити хорошу перевірку від поганої",[13,757,758,759,761],{},"Читати код не треба. Наберіть ",[17,760,19],{}," або будь-яке словникове слово з leet-замінами й роком і подивіться, що станеться:",[349,763,764,773],{},[352,765,766,769,770,772],{},[22,767,768],{},"Хороша ознака:"," перевірка оцінює пароль як слабкий і каже ",[41,771,629],{}," («схоже на поширений пароль», «передбачувані заміни», «містить рік»). Вона імітує атаку.",[352,774,775,778],{},[22,776,777],{},"Погана ознака:"," перевірка оцінює пароль як надійний, бо в ньому 13 символів із різними типами, або називає час злому в тисячі років. Вона рахує ваш алфавіт, а не ваш вибір.",[13,780,781],{},"Друга перевірка: наберіть справді випадковий рядок із 16 символів, а потім чотири випадкові слова. Вимірювач на арифметиці набору символів обожнює рядок із 16 символів і часто називає чотири слова «слабкими», бо вони всі малими літерами, — а це навпаки. Вимірювач, що розпізнає шаблони, оцінює обидва як надійні, бо обидва такими й є.",[30,783,785],{"id":784},"де-я-змінив-би-думку","Де я змінив би думку",[13,787,788],{},"zxcvbn не ідеальний, і я не хочу його перехвалювати. Його словники переважно англійські й на кілька років застарілі, тож пароль із сучасного сленгу, неанглійського словника чи дуже свіжого списку витоків може отримати вищу оцінку, ніж мав би, — бо слова справді немає в тому списку, що несе вимірювач. Він також не бачить, що ви використали той самий «надійний» пароль ще на дев'яти сайтах, а це той ризик, який насправді дістає більшість людей. Повторне використання не ловить жоден вимірювач надійності — для цього є перевірки витоків і менеджер паролів.",[13,790,791],{},"Тож чесне формулювання — не «вірте zxcvbn наосліп». Воно таке: вимірювач, що імітує вгадування, займається правильною справою, а вимірювач, що рахує символи, — ні. Перший можна поліпшити. Другий вимірює те, що ніколи й не було запитанням.",[13,793,794,795,798,799,802],{},"Якщо хочете той, що робить це правильно й лишає пароль на вашій машині, — саме для цього я свій і будував: вставте кандидата у ",[47,796,797],{"href":235},"Перевірку стійкості пароля",", щоб побачити конкретні шаблони, якими скористався б зловмисник, а тоді дозвольте ",[47,800,801],{"href":388},"Генератору паролів"," видати вам щось, у чому нема шаблонів, які можна знайти.",[30,804,394],{"id":393},[13,806,807],{},[22,808,809],{},"Чи точні перевірки надійності пароля?",[13,811,812,813,815,816,818],{},"Якісь точні, якісь ні, і вся різниця — у рушії. Перевірка на zxcvbn програє реальну атаку вгадування (словникові слова, leet, клавіатурні ряди, рік у кінці) й оцінює ",[17,814,19],{}," як слабкий. Перевірка, що просто множить довжину на розмір набору символів, навіть не здогадується, що слово ",[41,817,43],{}," сидить усередині, тож видає величезне число. Коли дві перевірки різко не збігаються, помиляється майже завжди саме арифметична.",[13,820,821],{},[22,822,823],{},"Чому одна перевірка каже «надійний», а інша — «слабкий»?",[13,825,826,827,830],{},"Бо вони міряють різне. Вимірювач на арифметиці набору символів оцінює алфавіт, з якого ви ",[41,828,829],{},"могли"," взяти символи, тож будь-який рядок із 13 символів із великою літерою, цифрою та знаком має чудовий вигляд. Вимірювач, що розпізнає шаблони, оцінює, наскільки передбачуваний ваш справжній рядок, тож словникове слово зі звичними замінами отримує низьку оцінку за будь-якої довжини. Вірте другому.",[13,832,833],{},[22,834,835],{},"Чи безпечно вводити справжній пароль в онлайн-перевірку?",[13,837,838],{},"Лише коли оцінювання виконується повністю у браузері й нічого нікуди не надсилається. Перевірка витоку, що надсилає кілька перших символів хешу, — це нормально; надсилати сам пароль — ні. Якщо сайт чітко не каже, що працює на стороні клієнта, перевірте пароль тієї самої форми замість справжнього або скористайтеся перевіркою на кшталт моєї, яка прямо заявляє, що пароль не залишає сторінку.",{"title":301,"searchDepth":426,"depth":426,"links":840},[841,842,843,844,845,846,847,848],{"id":480,"depth":426,"text":481},{"id":633,"depth":426,"text":634},{"id":669,"depth":426,"text":670},{"id":709,"depth":426,"text":710},{"id":734,"depth":426,"text":735},{"id":754,"depth":426,"text":755},{"id":784,"depth":426,"text":785},{"id":393,"depth":426,"text":394},"Я прогнав P@ssw0rd2026! через 10 перевірок надійності пароля. Одна показала 2 мільйони років, а скрипт зламав його за 50 тисяч спроб. Яким вимірювачам можна вірити.",[851,853,856],{"question":809,"answer":852},"Залежить від рушія. Перевірки на основі zxcvbn імітують реальне вгадування (словник, leet-заміни, клавіатурні ряди, рік) і оцінюють пароль на кшталт P@ssw0rd2026! як слабкий. Перевірки, які лише множать довжину на розмір набору символів, завищують його на мільйони років.",{"question":854,"answer":855},"Чому одна перевірка каже, що пароль надійний, а інша — що слабкий?","Вони вимірюють різне. Вимірювач на арифметиці набору символів оцінює алфавіт, з якого ви взяли символи, тож будь-який пароль із 13 символів із різним регістром і знаками виглядає надійним. Вимірювач, що розпізнає шаблони, оцінює, наскільки передбачуваний конкретний рядок, тому словникове слово зі звичними замінами отримує низьку оцінку навіть за великої довжини.",{"question":835,"answer":857},"Лише якщо аналіз виконується повністю у вашому браузері й нічого не надсилається на сервер. Деякі перевірки надсилають частину хешу, щоб звіритися з базами витоків, і це нормально, але сама оцінка надійності не повинна залишати ваш пристрій. Якщо сайт про це мовчить, скористайтеся тимчасовим варіантом замість справжнього пароля.","\u002Fimages\u002Fblog\u002Fpassword-strength-checker-accuracy\u002Fhero-uk.webp",{},"\u002Fuk\u002Fpassword-strength-checker-accuracy",{"title":461,"description":849},"uk\u002Fpassword-strength-checker-accuracy",[864,865,215,866],"перевірка надійності пароля","вимірювач надійності пароля","ентропія пароля","pknea34ksVOR5n54Av81BfXoRvvBTpkC7l1qHqYqHQM",1794303498133]