Генератор випадкових паролів — це програмне забезпечення або апаратний пристрій, який отримує вхідні дані від генератора випадкових чи псевдовипадкових чисел і автоматично генерує пароль. Випадкові паролі можна згенерувати вручну, використовуючи прості джерела випадковості, такі як [en] чи монети, або їх можна створити за допомогою комп'ютера.
Хоча в Інтернеті є багато прикладів програм для генерування «випадкових» паролів, генерація випадкових паролів може бути складною, і багато програм не генерують випадкові символи таким чином, щоб забезпечити надійну безпеку. Загальною рекомендацією є використання інструментів безпеки з відкритим кодом де це можливо оскільки вони дозволяють незалежно перевіряти якість використовуваних методів. Зауважте, що просте генерування пароля навмання не гарантує, що пароль є надійним, оскільки можливо, хоча й дуже малоймовірно, створити пароль, який легко вгадати або зламати. Насправді немає жодної потреби, щоб пароль створювався абсолютно випадковим процесом: його просто має бути достатньо важко вгадати.
Генератор паролів може бути частиною менеджера паролів. Коли [en] забезпечує виконання складних правил, може бути легше використовувати генератор паролів на основі цього набору правил, ніж створювати паролі вручну.
Більшості людей важко запам'ятати довгі рядки випадкових символів. Мнемонічні хеші, які оборотно перетворюють випадкові рядки в паролі, які краще запам'ятовуються, можуть значно покращити легкість запам'ятовування. Оскільки хеш може бути оброблений комп'ютером для відновлення вихідного 60-бітного рядка, він містить принаймні стільки ж інформації, скільки вихідний рядок. Подібні прийоми використовуються в спортивному запам'ятовуванні.
Наївний підхід
Ось два зразки коду, які програміст, який не знайомий з обмеженнями генераторів випадкових чисел у стандартних бібліотеках програмування, може застосувати:
C
# include <time.h> # include <stdio.h> # include <stdlib.h> int main(void) { /* Length of the password */ unsigned short int length = 8; /* Seed number for rand() */ srand((unsigned int) time(0)); /* ASCII characters 33 to 126 */ while (length--) { putchar(rand() % 94 + 33); } printf("\n"); return EXIT_SUCCESS; }
У цьому випадку стандартна функція C rand, яка є генератором псевдовипадкових чисел, спочатку заповнюється за допомогою функції C time, але в подальших ітераціях замість неї використовується rand. Відповідно до стандарту ANSI C, time повертає значення типу time_t, яке визначається реалізацією, але найчастіше це 32-розрядне ціле число, що містить поточну кількість секунд з 1 січня 1970 року (див.: час Unix). У році є приблизно 31 мільйон секунд, тому зловмисник, який знає рік (проста справа в ситуаціях, коли часта зміна пароля вимагається політикою паролів) та ідентифікатор процесу, з яким було згенеровано пароль, стикається з відносно невеликою кількістю, за криптографічними стандартами варіантів для тестування. Якщо зловмисник знає точніше, коли був згенерований пароль, він стикається з ще меншою кількістю кандидатів для тестування — серйозний недолік у цій реалізації.
У ситуаціях, коли зловмисник може отримати зашифровану версію пароля, таке тестування можна виконати досить швидко, щоб кілька мільйонів пробних паролів можна було перевірити за лічені секунди. Дивіться: злом паролів .
Функція rand представляє іншу проблему. Усі генератори псевдовипадкових чисел мають внутрішню пам'ять або стан. Розмір цього стану визначає максимальну кількість різних значень, які він може створити: n -розрядний стан може створити щонайбільше різних значень. У багатьох системах rand має 31 або 32-бітний стан, що вже є значним обмеженням безпеки. Документація Microsoft не описує внутрішній стан реалізації rand стандартної бібліотеки C у , але вона має лише 32767 можливих виходів (15 біт) на виклик. Корпорація Microsoft рекомендує використовувати іншу, більш безпечну функцію, rand_s. Вихід rand_s є криптографічно захищеним, згідно з Microsoft, і він не використовує початкове значення, завантажене функцією srand. Однак його інтерфейс програмування відрізняється від rand.
PHP
function pass_gen(int $length = 8): string { $pass = array(); for ($i = 0; $i < $length; $i++) { $pass[] = chr(mt_rand(32, 126)); } return implode($pass); }
У другому випадку використовується функція PHP microtime, яка повертає поточну позначку часу Unix із мікросекундами. Це збільшує кількість можливостей, але той, хто добре здогадується, коли було згенеровано пароль, наприклад, дату початку роботи працівника, все ще має досить малий простір для пошуку. Крім того, деякі операційні системи не забезпечують час для мікросекундної роздільної здатності, що різко зменшує кількість варіантів. Нарешті, функція rand зазвичай використовує базову функцію C rand і може мати невеликий простір станів, залежно від того, як вона реалізована. Альтернативний генератор випадкових чисел, mt_rand, який базується на генераторі псевдовипадкових чисел вихор Мерсенна, доступний у PHP, але він також має 32-розрядний стан. Є пропозиції щодо додавання сильної генерації випадкових чисел до PHP.
Сильніші методи
Існує безліч методів генерації надійних, криптографічно безпечних випадкових паролів. На платформах Unix зазвичай використовуються (/dev/random і /dev/urandom) або програмно, або в поєднанні з такою програмою, як makepasswd. Програмісти Windows можуть використовувати функцію CryptGenRandom з [en]. Мова програмування Java включає клас під назвою SecureRandom. Інша можливість полягає в отриманні випадковості шляхом вимірювання якогось зовнішнього явища, наприклад визначення часу введення користувача з клавіатури.
Багато комп'ютерних систем вже мають програму (зазвичай звану «apg») для реалізації FIPS 181.FIPS 181 — Automated Password Generator — описує стандартний процес перетворення випадкових бітів (з апаратного генератора випадкових чисел) у певною мірою вимовні «слова», придатні для парольної фрази. Однак у 1994 році було виявлено атаку на алгоритм FIPS 181, так що зловмисник може розраховувати в середньому на злам 1 % облікових записів, які мають паролі на основі алгоритму, після пошуку лише 1,6 мільйона паролів. Це пов'язано з нерівномірністю розподілу згенерованих паролів, яку можна вирішити, використовуючи довші паролі або змінюючи алгоритм.
Bash
Ось приклад коду, який використовує (/dev/urandom) для створення пароля за допомогою простої функції Bash . Ця функція приймає довжину пароля як параметр або використовує 16 за замовчуванням:
function mkpw() { LC_ALL=C tr -dc '[:graph:]' < /dev/urandom | head -c ${1:-16}; echo; }
Java
Ось зразок коду (адаптований з класу PasswordGenerator), який використовує SecureRandom для генерації пароля з 10 шістнадцяткових символів:
char[] symbols = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; int length = 10; Random random = SecureRandom.getInstanceStrong(); // as of JDK 8, this returns a SecureRandom implementation known to be strong StringBuilder sb = new StringBuilder(length); for (int i = 0; i < length; i++) { int randomIndex = random.nextInt(symbols.length); sb.append(symbols[randomIndex]); } String password = sb.toString();
JavaScript
У цьому прикладі використовується модуль Node.js Crypto для створення криптографічно захищених випадкових чисел із рівномірним розподілом.
"use strict"; const { randomInt } = require("crypto"); const secret = (length = 64) => { const upperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; const lowerCase = "abcdefghijklmnopqrstuvwxyz"; const digits = "0123456789"; const minus = "-"; const underline = "_"; const special = "!\"#$%&'*+,./:;=?@\\^`|~"; const brackets = "[]{}()<>"; const all = upperCase + lowerCase + digits + minus + underline + special + brackets; let secret = ""; for (let index = 0; index < length; index++) secret += all.charAt(randomInt(all.length)); return secret; };
Perl
У цьому прикладі використовується модуль Crypt::Random::Source для пошуку джерела сильних випадкових чисел (що залежить від платформи).
use Crypt::Random::Source qw(get_strong); while(length($out) < 15) { my $a = get_strong(1); $a =~ s/[^[:graph:]]//g; $out .= $a; } print $out;
Python
Мова Python включає клас SystemRandom, який отримує випадкові біти криптографічного рівня з /dev/urandom в Unix-подібній системі, включаючи Linux і macOS, тоді як у Windows він використовує CryptGenRandom. Ось простий сценарій Python, який демонструє використання цього класу:
#!/usr/bin/env python3 import random, string myrg = random.SystemRandom() length = 10 alphabet = string.ascii_letters + string.digits # a-z A-Z 0-9 password = "".join(myrg.choice(alphabet) for _ in range(length)) print(password)
PHP
Програма PHP може відкривати та читати з /dev/urandom, якщо доступно, або викликати утиліти Microsoft. Третім варіантом, якщо доступний виклик OpenSSL, є використання функції openssl_random_pseudo_bytes.
Механічні методи
Ще один метод полягає у використанні фізичних пристроїв, таких як гральні кістки, для створення випадковості. Один простий спосіб зробити це — використання таблиці символів 6 на 6. Перший кидок кубика вибирає рядок у таблиці, а другий — стовпець. Так, наприклад, кидок 2, а потім кидок 4 вибере літеру «j» із таблиці перестановки нижче. Для генерації символів верхнього/нижнього регістру або деяких символів можна використовувати підкидання монети, орел — велика літера, решка — мала. Якщо під час кидання кубиків була вибрана цифра, при підкиданні монети випав орел можна вибрати символ над цифрою на стандартній клавіатурі, наприклад «$» над «4» замість «4».
Тип і надійність згенерованого пароля
Генератори випадкових паролів зазвичай виводять рядок символів заданої довжини. Це можуть бути окремі символи з певного набору символів, склади, призначені для створення паролів, які можна вимовити, або слова з певного списку слів для створення [en]. Програму можна налаштувати так, щоб кінцевий пароль відповідав місцевій політиці паролів, скажімо, завжди створюючи суміш літер, цифр і спеціальних символів. Такі політики зазвичай знижують міцність трохи нижче наступної формули, оскільки символи більше не створюються незалежно.
Надійність випадкового пароля проти певної атаки (пошук грубою силою) можна обчислити шляхом обчислення інформаційної ентропії випадкового процесу, який створив його. Якщо кожен символ у паролі створюється незалежно та з однаковою ймовірністю, ентропія в бітах визначається за формулою
де N — кількість можливих символів, а L — кількість символів у паролі. Функція log2 є логарифмом за основою 2 . H зазвичай вимірюється в бітах.
Ентропія на символ для різних наборів символів Набір символів Число символів N Ентропія на символ H Арабські числа (0–9) (напр. PIN) 10 3.32 бітів Шістнадцяткові числа (0–9, A–F) (напр. ключ WEP) 16 4.00 бітів [en] літери латинської абетки (a–z або A–Z) 26 4.70 бітів [en]літероцифрові символи (a–z або A–Z, 0–9) 36 5.17 бітів [en] літери латинської абетки (a–z, A–Z) 52 5.70 бітів [en]літероцифрові символи (a–z, A–Z, 0–9) 62 5.95 бітів Всі друковані символи ASCII 94 6.55 бітів Підкидання кубика 7776 12.9 бітів
Бажана ентропія пароля, H | Арабські числа | Шістнадцяткові числа | [en] літери латинської абетки | [en]літероцифрові символи | [en] літери латинської абетки | [en]літероцифрові символи | Всі друковані символи ASCII | Всі символи [en] | Підкидання кубика |
---|---|---|---|---|---|---|---|---|---|
32 бітів | 10 | 8 | 7 | 7 | 6 | 6 | 5 | 5 | 3 |
40 бітів | 13 | 10 | 9 | 8 | 8 | 7 | 7 | 6 | 4 |
64 бітів | 20 | 16 | 14 | 13 | 12 | 11 | 10 | 9 | 5 |
80 бітів | 25 | 20 | 18 | 16 | 15 | 14 | 13 | 11 | 7 |
96 бітів | 29 | 24 | 21 | 19 | 17 | 17 | 15 | 13 | 8 |
128 бітів | 39 | 32 | 28 | 25 | 23 | 22 | 20 | 17 | 10 |
160 бітів | 49 | 40 | 35 | 31 | 29 | 27 | 25 | 21 | 13 |
192 бітів | 58 | 48 | 41 | 38 | 34 | 33 | 30 | 25 | 15 |
224 бітів | 68 | 56 | 48 | 44 | 40 | 38 | 35 | 29 | 18 |
256 бітів | 78 | 64 | 55 | 50 | 45 | 43 | 40 | 33 | 20 |
384 бітів | 116 | 96 | 82 | 75 | 68 | 65 | 59 | 50 | 30 |
512 бітів | 155 | 128 | 109 | 100 | 90 | 86 | 79 | 66 | 40 |
1024 бітів | 309 | 256 | 218 | 199 | 180 | 172 | 157 | 132 | 80 |
- За виключенням "пробілу".
Будь-який генератор паролів обмежений простором стану використовуваного генератора псевдовипадкових чисел, якщо він заснований на одному. Таким чином, пароль, згенерований за допомогою 32-бітного генератора, обмежений 32-бітовою ентропією, незалежно від кількості символів, які містить пароль.
Зауважте, однак, що інший тип атаки може бути успішним проти пароля, оціненого як «дуже надійний» за наведеними вище обчисленнями.
Програми та веб-сайти для створення паролів
В Інтернеті доступна велика кількість програм і веб-сайтів для створення паролів. Їх якість змінюється, і її важко оцінити, якщо немає чіткого опису джерела випадковості, яке використовується, і якщо вихідний код не надається для перевірки тверджень. Більше того, і, мабуть, найважливіше, передача потенційних паролів через Інтернет викликає очевидні занепокоєння щодо безпеки, особливо якщо підключення до програми сайту генерації паролів не захищено належним чином або якщо сайт якимось чином скомпрометовано. Без [en] неможливо запобігти прослуховування, особливо через публічні мережі, такі як Інтернет. Можливим вирішенням цієї проблеми є створення пароля за допомогою мови програмування на стороні клієнта, наприклад JavaScript. Перевага цього підходу полягає в тому, що згенерований пароль залишається на клієнтському комп'ютері і не передається на зовнішній сервер або з нього.
Див. також
Примітки
- Ghazvininejad, Marjan; Knight, Kevin (May–June 2015). How to Memorize a Random 60-Bit String. Proceedings of the 2015 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. Т. Proceedings of the 2015 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. Denver, Colorado: Association for Computational Linguistics. с. 1569—1575. doi:10.3115/v1/N15-1180.
- RAND_MAX. docs.microsoft.com.
- Visual Studio 2005 Retired documentation. Microsoft Download Center.
- PHP: microtime – Manual. php.net.
- PHP: rand – Manual. php.net.
- . Архів оригіналу за 19 жовтня 2008. Процитовано 17 жовтня 2008.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - Linux / UNIX: Generating Random Password With mkpasswd / makepasswd / pwgen. cyberciti.biz. November 2007.
- StrongPasswords – Community Help Wiki. help.ubuntu.com. Процитовано 25 березня 2016.
- NIST. Automated Password Generator standard FIPS 181
- Shay, Richard; Kelley, Patrick Gage; Komanduri, Saranga; Mazurek, Michelle L.; Ur, Blase; Vidas, Timothy; Bauer, Lujo; Christin, Nicolas; Cranor, Lorrie Faith (2012). Correct horse battery staple: Exploring the usability of system-assigned passphrases (PDF). SOUPS '12 Proceedings of the Eighth Symposium on Usable Privacy and Security. doi:10.1145/2335356.2335366.
- Ganesan, Ravi; Davies, Chris (1994). A New Attack on Random Pronounceable Password Generators (PDF). Proceedings of the 17th {NIST}-{NCSC} National Computer Security Conference. NIST: 184—197. Процитовано 17 грудня 2014.
- Rate my random password generator!. Crypto.
- 9.6. random — Generate pseudo-random numbers — Python 3.5.1 documentation. docs.python.org. Процитовано 25 березня 2016.
- 16.1. os — Miscellaneous operating system interfaces — Python 3.5.1 documentation. docs.python.org. Процитовано 25 березня 2016.
- "Secure" Random Numbers in PHP. What the Daily WTF?. 18 квітня 2010.
- PHP: openssl_random_pseudo_bytes – Manual. php.net. Процитовано 25 березня 2016.
- Levine, John R., Ed.: Internet Secrets, Second edition, page 831 ff. John Wiley and Sons.
- Schneier, B: Applied Cryptography, Second edition, page 233 ff. John Wiley and Sons.
- Burr, W. E.; Dodson, D. F.; Polk, W. T. (2006). Electronic Authentication Guideline (PDF). NIST. doi:10.6028/NIST.SP.800-63v1.0.2.
Посилання
- Криптографічно захищене випадкове число в Windows без використання CryptoAPI від MSDN
- RFC 4086 про випадкові рекомендації щодо безпеки (замінює попередній RFC 1750 .)
- Генератор випадкових паролів онлайн [безкоштовно]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Generator vipadkovih paroliv ce programne zabezpechennya abo aparatnij pristrij yakij otrimuye vhidni dani vid generatora vipadkovih chi psevdovipadkovih chisel i avtomatichno generuye parol Vipadkovi paroli mozhna zgeneruvati vruchnu vikoristovuyuchi prosti dzherela vipadkovosti taki yak en chi moneti abo yih mozhna stvoriti za dopomogoyu komp yutera Hocha v Interneti ye bagato prikladiv program dlya generuvannya vipadkovih paroliv generaciya vipadkovih paroliv mozhe buti skladnoyu i bagato program ne generuyut vipadkovi simvoli takim chinom shob zabezpechiti nadijnu bezpeku Zagalnoyu rekomendaciyeyu ye vikoristannya instrumentiv bezpeki z vidkritim kodom de ce mozhlivo oskilki voni dozvolyayut nezalezhno pereviryati yakist vikoristovuvanih metodiv Zauvazhte sho proste generuvannya parolya navmannya ne garantuye sho parol ye nadijnim oskilki mozhlivo hocha j duzhe malojmovirno stvoriti parol yakij legko vgadati abo zlamati Naspravdi nemaye zhodnoyi potrebi shob parol stvoryuvavsya absolyutno vipadkovim procesom jogo prosto maye buti dostatno vazhko vgadati Generator paroliv mozhe buti chastinoyu menedzhera paroliv Koli en zabezpechuye vikonannya skladnih pravil mozhe buti legshe vikoristovuvati generator paroliv na osnovi cogo naboru pravil nizh stvoryuvati paroli vruchnu Bilshosti lyudej vazhko zapam yatati dovgi ryadki vipadkovih simvoliv Mnemonichni heshi yaki oborotno peretvoryuyut vipadkovi ryadki v paroli yaki krashe zapam yatovuyutsya mozhut znachno pokrashiti legkist zapam yatovuvannya Oskilki hesh mozhe buti obroblenij komp yuterom dlya vidnovlennya vihidnogo 60 bitnogo ryadka vin mistit prinajmni stilki zh informaciyi skilki vihidnij ryadok Podibni prijomi vikoristovuyutsya v sportivnomu zapam yatovuvanni Nayivnij pidhidOs dva zrazki kodu yaki programist yakij ne znajomij z obmezhennyami generatoriv vipadkovih chisel u standartnih bibliotekah programuvannya mozhe zastosuvati C include lt time h gt include lt stdio h gt include lt stdlib h gt int main void Length of the password unsigned short int length 8 Seed number for rand srand unsigned int time 0 ASCII characters 33 to 126 while length putchar rand 94 33 printf n return EXIT SUCCESS U comu vipadku standartna funkciya C rand yaka ye generatorom psevdovipadkovih chisel spochatku zapovnyuyetsya za dopomogoyu funkciyi C time ale v podalshih iteraciyah zamist neyi vikoristovuyetsya rand Vidpovidno do standartu ANSI C time povertaye znachennya tipu time t yake viznachayetsya realizaciyeyu ale najchastishe ce 32 rozryadne cile chislo sho mistit potochnu kilkist sekund z 1 sichnya 1970 roku div chas Unix U roci ye priblizno 31 miljon sekund tomu zlovmisnik yakij znaye rik prosta sprava v situaciyah koli chasta zmina parolya vimagayetsya politikoyu paroliv ta identifikator procesu z yakim bulo zgenerovano parol stikayetsya z vidnosno nevelikoyu kilkistyu za kriptografichnimi standartami variantiv dlya testuvannya Yaksho zlovmisnik znaye tochnishe koli buv zgenerovanij parol vin stikayetsya z she menshoyu kilkistyu kandidativ dlya testuvannya serjoznij nedolik u cij realizaciyi U situaciyah koli zlovmisnik mozhe otrimati zashifrovanu versiyu parolya take testuvannya mozhna vikonati dosit shvidko shob kilka miljoniv probnih paroliv mozhna bulo pereviriti za licheni sekundi Divitsya zlom paroliv Funkciya rand predstavlyaye inshu problemu Usi generatori psevdovipadkovih chisel mayut vnutrishnyu pam yat abo stan Rozmir cogo stanu viznachaye maksimalnu kilkist riznih znachen yaki vin mozhe stvoriti n rozryadnij stan mozhe stvoriti shonajbilshe 2n displaystyle 2 n riznih znachen U bagatoh sistemah rand maye 31 abo 32 bitnij stan sho vzhe ye znachnim obmezhennyam bezpeki Dokumentaciya Microsoft ne opisuye vnutrishnij stan realizaciyi rand standartnoyi biblioteki C u Visual C ale vona maye lishe 32767 mozhlivih vihodiv 15 bit na viklik Korporaciya Microsoft rekomenduye vikoristovuvati inshu bilsh bezpechnu funkciyu rand s Vihid rand s ye kriptografichno zahishenim zgidno z Microsoft i vin ne vikoristovuye pochatkove znachennya zavantazhene funkciyeyu srand Odnak jogo interfejs programuvannya vidriznyayetsya vid rand PHP function pass gen int length 8 string pass array for i 0 i lt length i pass chr mt rand 32 126 return implode pass U drugomu vipadku vikoristovuyetsya funkciya PHP microtime yaka povertaye potochnu poznachku chasu Unix iz mikrosekundami Ce zbilshuye kilkist mozhlivostej ale toj hto dobre zdogaduyetsya koli bulo zgenerovano parol napriklad datu pochatku roboti pracivnika vse she maye dosit malij prostir dlya poshuku Krim togo deyaki operacijni sistemi ne zabezpechuyut chas dlya mikrosekundnoyi rozdilnoyi zdatnosti sho rizko zmenshuye kilkist variantiv Nareshti funkciya rand zazvichaj vikoristovuye bazovu funkciyu C rand i mozhe mati nevelikij prostir staniv zalezhno vid togo yak vona realizovana Alternativnij generator vipadkovih chisel mt rand yakij bazuyetsya na generatori psevdovipadkovih chisel vihor Mersenna dostupnij u PHP ale vin takozh maye 32 rozryadnij stan Ye propoziciyi shodo dodavannya silnoyi generaciyi vipadkovih chisel do PHP Silnishi metodiIsnuye bezlich metodiv generaciyi nadijnih kriptografichno bezpechnih vipadkovih paroliv Na platformah Unix zazvichaj vikoristovuyutsya dev random i dev urandom abo programno abo v poyednanni z takoyu programoyu yak makepasswd Programisti Windows mozhut vikoristovuvati funkciyu CryptGenRandom z en Mova programuvannya Java vklyuchaye klas pid nazvoyu SecureRandom Insha mozhlivist polyagaye v otrimanni vipadkovosti shlyahom vimiryuvannya yakogos zovnishnogo yavisha napriklad viznachennya chasu vvedennya koristuvacha z klaviaturi Bagato komp yuternih sistem vzhe mayut programu zazvichaj zvanu apg dlya realizaciyi FIPS 181 FIPS 181 Automated Password Generator opisuye standartnij proces peretvorennya vipadkovih bitiv z aparatnogo generatora vipadkovih chisel u pevnoyu miroyu vimovni slova pridatni dlya parolnoyi frazi Odnak u 1994 roci bulo viyavleno ataku na algoritm FIPS 181 tak sho zlovmisnik mozhe rozrahovuvati v serednomu na zlam 1 oblikovih zapisiv yaki mayut paroli na osnovi algoritmu pislya poshuku lishe 1 6 miljona paroliv Ce pov yazano z nerivnomirnistyu rozpodilu zgenerovanih paroliv yaku mozhna virishiti vikoristovuyuchi dovshi paroli abo zminyuyuchi algoritm Bash Os priklad kodu yakij vikoristovuye dev urandom dlya stvorennya parolya za dopomogoyu prostoyi funkciyi Bash Cya funkciya prijmaye dovzhinu parolya yak parametr abo vikoristovuye 16 za zamovchuvannyam function mkpw LC ALL C tr dc graph lt dev urandom head c 1 16 echo Java Os zrazok kodu adaptovanij z klasu PasswordGenerator yakij vikoristovuye SecureRandom dlya generaciyi parolya z 10 shistnadcyatkovih simvoliv char symbols 0 1 2 3 4 5 6 7 8 9 a b c d e f int length 10 Random random SecureRandom getInstanceStrong as of JDK 8 this returns a SecureRandom implementation known to be strong StringBuilder sb new StringBuilder length for int i 0 i lt length i int randomIndex random nextInt symbols length sb append symbols randomIndex String password sb toString JavaScript U comu prikladi vikoristovuyetsya modul Node js Crypto dlya stvorennya kriptografichno zahishenih vipadkovih chisel iz rivnomirnim rozpodilom use strict const randomInt require crypto const secret length 64 gt const upperCase ABCDEFGHIJKLMNOPQRSTUVWXYZ const lowerCase abcdefghijklmnopqrstuvwxyz const digits 0123456789 const minus const underline const special amp const brackets lt gt const all upperCase lowerCase digits minus underline special brackets let secret for let index 0 index lt length index secret all charAt randomInt all length return secret Perl U comu prikladi vikoristovuyetsya modul Crypt Random Source dlya poshuku dzherela silnih vipadkovih chisel sho zalezhit vid platformi use Crypt Random Source qw get strong while length out lt 15 my a get strong 1 a s graph g out a print out Python Mova Python vklyuchaye klas SystemRandom yakij otrimuye vipadkovi biti kriptografichnogo rivnya z dev urandom v Unix podibnij sistemi vklyuchayuchi Linux i macOS todi yak u Windows vin vikoristovuye CryptGenRandom Os prostij scenarij Python yakij demonstruye vikoristannya cogo klasu usr bin env python3 import random string myrg random SystemRandom length 10 alphabet string ascii letters string digits a z A Z 0 9 password join myrg choice alphabet for in range length print password PHP Programa PHP mozhe vidkrivati ta chitati z dev urandom yaksho dostupno abo viklikati utiliti Microsoft Tretim variantom yaksho dostupnij viklik OpenSSL ye vikoristannya funkciyi openssl random pseudo bytes Mehanichni metodi She odin metod polyagaye u vikoristanni fizichnih pristroyiv takih yak gralni kistki dlya stvorennya vipadkovosti Odin prostij sposib zrobiti ce vikoristannya tablici simvoliv 6 na 6 Pershij kidok kubika vibiraye ryadok u tablici a drugij stovpec Tak napriklad kidok 2 a potim kidok 4 vibere literu j iz tablici perestanovki nizhche Dlya generaciyi simvoliv verhnogo nizhnogo registru abo deyakih simvoliv mozhna vikoristovuvati pidkidannya moneti orel velika litera reshka mala Yaksho pid chas kidannya kubikiv bula vibrana cifra pri pidkidanni moneti vipav orel mozhna vibrati simvol nad cifroyu na standartnij klaviaturi napriklad nad 4 zamist 4 Tip i nadijnist zgenerovanogo parolyaGeneratori vipadkovih paroliv zazvichaj vivodyat ryadok simvoliv zadanoyi dovzhini Ce mozhut buti okremi simvoli z pevnogo naboru simvoliv skladi priznacheni dlya stvorennya paroliv yaki mozhna vimoviti abo slova z pevnogo spisku sliv dlya stvorennya en Programu mozhna nalashtuvati tak shob kincevij parol vidpovidav miscevij politici paroliv skazhimo zavzhdi stvoryuyuchi sumish liter cifr i specialnih simvoliv Taki politiki zazvichaj znizhuyut micnist trohi nizhche nastupnoyi formuli oskilki simvoli bilshe ne stvoryuyutsya nezalezhno Nadijnist vipadkovogo parolya proti pevnoyi ataki poshuk gruboyu siloyu mozhna obchisliti shlyahom obchislennya informacijnoyi entropiyi vipadkovogo procesu yakij stvoriv jogo Yaksho kozhen simvol u paroli stvoryuyetsya nezalezhno ta z odnakovoyu jmovirnistyu entropiya v bitah viznachayetsya za formuloyu H Llog2 N Llog Nlog 2 displaystyle H L log 2 N L log N over log 2 de N kilkist mozhlivih simvoliv a L kilkist simvoliv u paroli Funkciya log2 ye logarifmom za osnovoyu 2 H zazvichaj vimiryuyetsya v bitah Entropiya na simvol dlya riznih naboriv simvoliv Nabir simvoliv Chislo simvoliv N Entropiya na simvol HArabski chisla 0 9 napr PIN 10 3 32 bitivShistnadcyatkovi chisla 0 9 A F napr klyuch WEP 16 4 00 bitiv en literi latinskoyi abetki a z abo A Z 26 4 70 bitiv en literocifrovi simvoli a z abo A Z 0 9 36 5 17 bitiv en literi latinskoyi abetki a z A Z 52 5 70 bitiv en literocifrovi simvoli a z A Z 0 9 62 5 95 bitivVsi drukovani simvoli ASCII 94 6 55 bitivPidkidannya kubika 7776 12 9 bitivDovzhina L spravdi vipadkovo zgenerovanih paroliv neobhidnih dlya dosyagnennya bazhanoyi entropiyi parolya H dlya naboriv simvoliv sho mistyat N simvoliv Bazhana entropiya parolya H Arabski chisla Shistnadcyatkovi chisla en literi latinskoyi abetki en literocifrovi simvoli en literi latinskoyi abetki en literocifrovi simvoli Vsi drukovani simvoli ASCII Vsi simvoli en Pidkidannya kubika32 bitiv 10 8 7 7 6 6 5 5 340 bitiv 13 10 9 8 8 7 7 6 464 bitiv 20 16 14 13 12 11 10 9 580 bitiv 25 20 18 16 15 14 13 11 796 bitiv 29 24 21 19 17 17 15 13 8128 bitiv 39 32 28 25 23 22 20 17 10160 bitiv 49 40 35 31 29 27 25 21 13192 bitiv 58 48 41 38 34 33 30 25 15224 bitiv 68 56 48 44 40 38 35 29 18256 bitiv 78 64 55 50 45 43 40 33 20384 bitiv 116 96 82 75 68 65 59 50 30512 bitiv 155 128 109 100 90 86 79 66 401024 bitiv 309 256 218 199 180 172 157 132 80Za viklyuchennyam probilu Bud yakij generator paroliv obmezhenij prostorom stanu vikoristovuvanogo generatora psevdovipadkovih chisel yaksho vin zasnovanij na odnomu Takim chinom parol zgenerovanij za dopomogoyu 32 bitnogo generatora obmezhenij 32 bitovoyu entropiyeyu nezalezhno vid kilkosti simvoliv yaki mistit parol Zauvazhte odnak sho inshij tip ataki mozhe buti uspishnim proti parolya ocinenogo yak duzhe nadijnij za navedenimi vishe obchislennyami Programi ta veb sajti dlya stvorennya parolivV Interneti dostupna velika kilkist program i veb sajtiv dlya stvorennya paroliv Yih yakist zminyuyetsya i yiyi vazhko ociniti yaksho nemaye chitkogo opisu dzherela vipadkovosti yake vikoristovuyetsya i yaksho vihidnij kod ne nadayetsya dlya perevirki tverdzhen Bilshe togo i mabut najvazhlivishe peredacha potencijnih paroliv cherez Internet viklikaye ochevidni zanepokoyennya shodo bezpeki osoblivo yaksho pidklyuchennya do programi sajtu generaciyi paroliv ne zahisheno nalezhnim chinom abo yaksho sajt yakimos chinom skomprometovano Bez en nemozhlivo zapobigti prosluhovuvannya osoblivo cherez publichni merezhi taki yak Internet Mozhlivim virishennyam ciyeyi problemi ye stvorennya parolya za dopomogoyu movi programuvannya na storoni kliyenta napriklad JavaScript Perevaga cogo pidhodu polyagaye v tomu sho zgenerovanij parol zalishayetsya na kliyentskomu komp yuteri i ne peredayetsya na zovnishnij server abo z nogo Div takozhKriptografichno zahishenij generator psevdovipadkovih chisel en Aparatnij generator vipadkovih chisel en en en Menedzher parolivPrimitkiGhazvininejad Marjan Knight Kevin May June 2015 How to Memorize a Random 60 Bit String Proceedings of the 2015 Conference of the North American Chapter of the Association for Computational Linguistics Human Language Technologies T Proceedings of the 2015 Conference of the North American Chapter of the Association for Computational Linguistics Human Language Technologies Denver Colorado Association for Computational Linguistics s 1569 1575 doi 10 3115 v1 N15 1180 RAND MAX docs microsoft com Visual Studio 2005 Retired documentation Microsoft Download Center PHP microtime Manual php net PHP rand Manual php net Arhiv originalu za 19 zhovtnya 2008 Procitovano 17 zhovtnya 2008 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Linux UNIX Generating Random Password With mkpasswd makepasswd pwgen cyberciti biz November 2007 StrongPasswords Community Help Wiki help ubuntu com Procitovano 25 bereznya 2016 NIST Automated Password Generator standardFIPS181 Shay Richard Kelley Patrick Gage Komanduri Saranga Mazurek Michelle L Ur Blase Vidas Timothy Bauer Lujo Christin Nicolas Cranor Lorrie Faith 2012 Correct horse battery staple Exploring the usability of system assigned passphrases PDF SOUPS 12 Proceedings of the Eighth Symposium on Usable Privacy and Security doi 10 1145 2335356 2335366 Ganesan Ravi Davies Chris 1994 A New Attack on Random Pronounceable Password Generators PDF Proceedings of the 17th NIST NCSC National Computer Security Conference NIST 184 197 Procitovano 17 grudnya 2014 Rate my random password generator Crypto 9 6 random Generate pseudo random numbers Python 3 5 1 documentation docs python org Procitovano 25 bereznya 2016 16 1 os Miscellaneous operating system interfaces Python 3 5 1 documentation docs python org Procitovano 25 bereznya 2016 Secure Random Numbers in PHP What the Daily WTF 18 kvitnya 2010 PHP openssl random pseudo bytes Manual php net Procitovano 25 bereznya 2016 Levine John R Ed Internet Secrets Second edition page 831 ff John Wiley and Sons Schneier B Applied Cryptography Second edition page 233 ff John Wiley and Sons Burr W E Dodson D F Polk W T 2006 Electronic Authentication Guideline PDF NIST doi 10 6028 NIST SP 800 63v1 0 2 PosilannyaKriptografichno zahishene vipadkove chislo v Windows bez vikoristannya CryptoAPI vid MSDN RFC 4086 pro vipadkovi rekomendaciyi shodo bezpeki zaminyuye poperednij RFC 1750 Generator vipadkovih paroliv onlajn bezkoshtovno