Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Программа, генерирующая пароль из генератора случайных чисел.
Program that generates password from random number generator
Генератор случайных паролей – это программное обеспечение или аппаратное устройство, которое принимает данные от генератора случайных или псевдослучайных чисел и автоматически генерирует пароль. Случайные пароли можно создавать вручную, используя простые источники случайности, такие как игральные кости или монеты, или с помощью компьютера. Хотя в интернете доступно множество программ генераторов "случайных" паролей, генерация случайности может быть сложной задачей, и многие программы не генерируют случайные символы таким образом, чтобы обеспечить надежную безопасность. Рекомендуется использовать инструменты безопасности с открытым исходным кодом, когда это возможно, поскольку они позволяют проводить независимую оценку качества используемых методов. Простое случайное создание пароля не гарантирует его надежность, поскольку существует (хотя и крайне малая) вероятность сгенерировать легко угадываемый или взламываемый пароль. Фактически, пароль не обязательно должен быть создан идеально случайным процессом – он должен быть достаточно сложным для подбора. Генератор паролей может быть частью менеджера паролей. Если политика паролей требует соблюдения сложных правил, использовать генератор паролей, основанный на этих правилах, может быть проще, чем создавать пароли вручную. Длинные последовательности случайных символов трудно запомнить большинству людей. Мнемонические хэши, которые обратимо преобразуют случайные строки в более запоминающиеся пароли, могут значительно облегчить запоминание. Поскольку хэш может быть обработан компьютером для восстановления исходной 60-битной строки, он содержит не меньше информации, чем исходная строка. Аналогичные методы используются в спортивной мнемонике.
A random password generator is a software program or hardware device that takes input from a random or pseudo random number generator and automatically generates a password. Random passwords can be generated manually, using simple sources of randomness such as dice or coins, or they can be generated using a computer. While there are many examples of "random" password generator programs available on the Internet, generating randomness can be tricky, and many programs do not generate random characters in a way that ensures strong security. A common recommendation is to use open source security tools where possible, since they allow independent checks on the quality of the methods used. Simply generating a password at random does not ensure the password is a strong password, because it is possible, although highly unlikely, to generate an easily guessed or cracked password. In fact, there is no need at all for a password to have been produced by a perfectly random process: it just needs to be sufficiently difficult to guess. A password generator can be part of a password manager. When a password policy enforces complex rules, it can be easier to use a password generator based on that set of rules than to manually create passwords. Long strings of random characters are difficult for most people to memorize. Mnemonic hashes, which reversibly convert random strings into more memorable passwords, can substantially improve the ease of memorization. As the hash can be processed by a computer to recover the original 60 bit string, it has at least as much information content as the original string. Similar techniques are used in memory sport.
Тип пароля и его сила
Случайные генераторы паролей обычно выдают строку символов заданной длины. Это могут быть отдельные символы из определенного набора, слоги, предназначенные для создания легко произносимых паролей, или слова из списка слов для формирования парольной фразы. Программу можно настроить для обеспечения соответствия сгенерированного пароля локальной политике безопасности, например, всегда создавая комбинацию букв, цифр и специальных символов. Такие политики обычно немного снижают надежность пароля по сравнению с теоретической формулой, поскольку символы больше не генерируются независимо друг от друга. Надежность случайного пароля против конкретной атаки (например, перебора) можно оценить, вычислив информационную энтропию случайного процесса, который его создал. Если каждый символ пароля генерируется независимо и с равномерной вероятностью, энтропия в битах вычисляется по формуле , где N – количество возможных символов, а L – количество символов в пароле. Функция log2 – это логарифм по основанию 2. H обычно измеряется в битах. Любой генератор паролей ограничен пространством состояний используемого генератора псевдослучайных чисел, если он его использует. Следовательно, пароль, сгенерированный с помощью 32-битного генератора, имеет максимальную энтропию 32 бита, независимо от количества символов в пароле.
Random password generators normally output a string of symbols of specified length. These can be individual characters from some character set, syllables designed to form pronounceable passwords, or words from some word list to form a passphrase. The program can be customized to ensure the resulting password complies with the local password policy, say by always producing a mix of letters, numbers and special characters. Such policies typically reduce strength slightly below the formula that follows, because symbols are no longer independently produced. The Password strength of a random password against a particular attack (brute force search), can be calculated by computing the information entropy of the random process that produced it. If each symbol in the password is produced independently and with uniform probability, the entropy in bits is given by the formula , where N is the number of possible symbols and L is the number of symbols in the password. The function log2 is the base 2 logarithm. H is typically measured in bits. Any password generator is limited by the state space of the pseudo random number generator used if it is based on one. Thus a password generated using a 32 bit generator is limited to 32 bits entropy, regardless of the number of characters the password contains.
Сайты
В Интернете доступно большое количество программ и веб-сайтов для генерации паролей. Их качество сильно различается, и оценить его бывает сложно, если нет чёткого описания источника случайных чисел, используемого в работе, и если исходный код не предоставлен для проверки заявленных свойств. Более того, и, пожалуй, самое главное, передача предлагаемых паролей через Интернет вызывает очевидные опасения с точки зрения безопасности, особенно если соединение с программой генерации паролей на сайте не защищено должным образом или если сам сайт скомпрометирован. Без защищённого канала невозможно предотвратить перехват данных, особенно в общедоступных сетях, таких как Интернет. Одним из возможных решений этой проблемы является генерация пароля с использованием языка программирования на стороне клиента, например, JavaScript. Преимущество такого подхода заключается в том, что сгенерированный пароль остаётся на компьютере пользователя и не передаётся на внешний сервер и обратно.
A large number of password generator programs and websites are available on the Internet. Their quality varies and can be hard to assess if there is no clear description of the source of randomness that is used and if source code is not provided to allow claims to be checked. Furthermore, and probably most importantly, transmitting candidate passwords over the Internet raises obvious security concerns, particularly if the connection to the password generation site's program is not properly secured or if the site is compromised in some way. Without a secure channel, it is not possible to prevent eavesdropping, especially over public networks such as the Internet. A possible solution to this issue is to generate the password using a client side programming language such as JavaScript. The advantage of this approach is that the generated password stays in the client computer and is not transmitted to or from an external server.
Web-криптографический API
Web Cryptography API — это рекомендация Консорциума Всемирной паутины (W3C) по созданию низкоуровневого интерфейса, который повысит безопасность веб-приложений, позволяя им выполнять криптографические функции без доступа к необработанному ключевому материалу. Web Crypto API предоставляет надежный способ генерации паролей с использованием метода `crypto.getRandomValues`. Вот простой код на Javascript, который генерирует надежный пароль, используя Web Crypto API.
The Web Cryptography API is the World Wide Web Consortium’s (W3C) recommendation for a low level interface that would increase the security of web applications by allowing them to perform cryptographic functions without having to access raw keying material. The Web Crypto API provides a reliable way to generate passwords using the crypto. getRandomValues method. Here is the simple Javascript code that generate the strong password using web crypto API.
Стандарт FIPS 181
Многие компьютерные системы уже имеют приложение (обычно называемое "apg") для реализации стандарта FIPS 181 по генерации паролей. FIPS 181 — Automated Password Generator — описывает стандартный процесс преобразования случайных битов (из аппаратного генератора случайных чисел) в относительно произносимые "слова", подходящие для использования в качестве парольной фразы. Однако в 1994 году была обнаружена уязвимость в алгоритме FIPS 181, позволяющая злоумышленнику, в среднем, взломать 1% учетных записей с паролями, созданными на его основе, после перебора всего 1,6 миллиона паролей. Это связано с неравномерностью распределения генерируемых паролей, которую можно решить, используя более длинные пароли или модифицировав алгоритм.
Many computer systems already have an application (typically named "apg") to implement the password generator standard FIPS 181. FIPS 181—Automated Password Generator—describes a standard process for converting random bits (from a hardware random number generator) into somewhat pronounceable "words" suitable for a passphrase. However, in 1994 an attack on the FIPS 181 algorithm was discovered, such that an attacker can expect, on average, to break into 1% of accounts that have passwords based on the algorithm, after searching just 1.6 million passwords. This is due to the non uniformity in the distribution of passwords generated, which can be addressed by using longer passwords or by modifying the algorithm.