Как создать надежный генератор паролей
Вы знаете, что делать. Не используйте простые пароли, такие как день рождения или имя вашей домашней игуаны. Не используйте один и тот же пароль везде. Создайте длинный, случайный, уникальный пароль для каждого веб-сайта. Не пытайтесь сделать это без посторонней помощи — найдите менеджер паролей. После того, как все ваши пароли надежно спрятаны в диспетчере, замените любые слабые или повторяющиеся пароли уникальными паролями, которые никто не сможет угадать — и даже вы не сможете вспомнить. Хакер может угадать простодушный пароль вроде Fido или взломать его методом перебора, но никто не сможет угадать что-то вроде P5$e?KqA+unh$RhPTlp1, а его перебор займет невероятно много времени.
Вопрос в том, где вы получить эти случайные пароли? Почти каждый менеджер паролей имеет собственный генератор случайных паролей, некоторые из которых лучше других. Однако в большинстве случаев программа использует то, что называется псевдослучайный алгоритм. Теоретически хакер, знающий алгоритм и имеющий доступ к одному из сгенерированных вами паролей, может воспроизвести все последующие сгенерированные пароли (хотя это будет сложно). Если вы достаточно параноик, вы можете создать свой собственный генератор случайных паролей. Мы можем помочь вам построить его, используя Microsoft Excel.
Некоторые задачи по обеспечению безопасности, несомненно, выходят за рамки самостоятельной работы. Например, вы вряд ли создадите собственную глобальную сеть VPN-серверов. Вы же не будете делать самодельную антивирусную утилиту. Но для создания этого небольшого проекта не требуются дополнительные знания, достаточно умения следовать инструкциям. Он не использует макросы или причудливые вещи, только обычные функции Excel, хотя некоторые из них вы, возможно, не видели раньше. Обратите внимание, что этот проект обязательно использует псевдослучайный алгоритм Excel. Разница здесь в том, что злоумышленники могут изучить генератор паролей, встроенный в любой общедоступный менеджер паролей, в то время как к вашему самодельному они доступа не имеют.
Одно предупреждение. Вам нужен Текущий Версия Excel, чтобы этот проект работал. С этой задачей справится Office 2019 или более поздней версии, а также последняя версия Office 365. Если вы не уверены, Microsoft объяснит, как получить последнюю версию (откроется в новом окне).
Создайте скаффолд генератора паролей
Во-первых, давайте создадим каркас, который будет обрамлять наш генератор паролей, то есть метки и статические компоненты. Пожалуйста, поместите вещи точно в ячейки, как я описываю ниже, чтобы формулы работали. После того, как он заработает, вы можете настроить его, чтобы сделать его полностью своим.
В ячейке B1 введите «Генератор случайных паролей» или любое другое название, которое вы хотите для своего проекта. Начиная с ячейки B3 и спускаясь вниз, введите метки «Длина», «Заглавные буквы», «Строчные буквы», «Цифры» и «Специальные символы». Пропустите ячейку B8, введите «Нажмите F9 для регенерации» в ячейке B9 и «ПАРОЛЬ» в ячейке B10. Это должно выглядеть как на картинке выше.
В ячейке C3 введите 20 или предпочтительную длину пароля по умолчанию. Введите «Да» в следующие четыре ячейки под ним. Теперь введите весь прописной алфавит в ячейку D4 и весь строчный алфавит в D5. Введите 10 цифр в D6 и любые специальные символы, которые вы хотите использовать в D7. Совет для профессионалов: ставьте 0 последним, а не первым в списке цифр, иначе Excel его удалит. Готовый каркас должен выглядеть примерно так:
Добавьте формулы, которые генерируют пароли
Когда каркас на месте, пришло время добавить формулы. Для начала нам нужно построить строку текста, включающую все символы, которые мы выбрали для использования. Формула для этого выглядит немного сложной, но на самом деле она просто длинная. Введите эту формулу в ячейку D8:
=ЕСЛИ(C4=»Да»,D4,»») &ЕСЛИ(C5=»Да»,D5,»») &ЕСЛИ(C6=»Да»,D6,»») &IF(C7=»Да»,D7, «»)
Оператор & склеивает строки текста. Эта формула говорит о том, что для каждого из четырех наборов символов, если соседняя ячейка содержит значение «Да», включить набор символов. Но если эта ячейка содержит что-либо, кроме Да (независимо от верхнего или нижнего регистра), не включайте его. Попробуй это сейчас; измените некоторые из ячеек «Да» на «Нет», «Нет» или «Мех». Строка доступных символов изменится в соответствии с тем, что вы сделали.
Используйте немного магии Excel
Когда я впервые создал эту электронную таблицу, я использовал простую технику для создания случайного пароля. Я начал с формулы, которая возвращает один случайный символ из строки, находящейся в ячейке D8:
=СРЕДН(D8,СЛУЧМЕЖДУ(1,ДЛСТР(D8)),1)
Это говорит Excel сгенерировать случайное число от единицы до длины строки и вернуть один символ в этом месте. Я склеил 40 повторений этой формулы, чтобы получилась строка из 40 случайных символов. И я использовал функцию LEFT(), чтобы сократить результат до нужной длины. Это было некрасиво. Окончательная формула весила 1329 символов!
Благодаря небольшой магии Excel, которой я научился с тех пор, моя текущая формула для генерации случайного пароля намного меньше, всего 78 символов:
=TEXTJOIN(«»,ИСТИНА,СРЕДН(D8,СЛУЧМЕЖДУ(ЗНАК(СТРОКА(ДВССЫЛ(«1:»&C3))),ДЛСТР(D8)),1))
Если вы просто хотите использовать эту формулу, не беспокоясь о том, как она работает, нет проблем! Скопируйте его в ячейку C10. Вы увидите случайный пароль, который меняется, когда вы нажимаете F9 для пересчета, как по волшебству.
Изучите немного магии Excel
Что это, вы говорите? Вы хотите знать, почему эта сумасшедшая формула работает? Я могу помочь с этим. Но сначала признание. Я не знаю, является ли это Лучший способ сделать то, что я сделал. Я просто возился, пока у меня не получилось. Возможно есть более элегантное решение.
Прежде всего, познакомьтесь с функцией TEXTJOIN(). Эта малоизвестная жемчужина принимает на вход массив значений и объединяет их. Это довольно недавнее дополнение, для которого требуется по крайней мере Office 2019 или Microsoft 365. Перед массивом есть два других ввода: разделитель для разделения значений и выбор true/false, который указывает, следует ли игнорировать пустые значения. Попробуй это. На новом листе введите несколько имен в столбец A, строки с 1 по 5. Введите эту формулу в ячейку B1:
=TEXTJOIN(«***», ИСТИНА, A1:A5)
В ячейке B1 отображаются имена от A1 до A5 в виде одной строки текста с тремя звездочками между ними. Вот еще один пример.
=TEXTJOIN(» и «,ИСТИНА,СТРОКА(A1:A9))
Прежде чем скопировать эту функцию на рабочий лист, можете ли вы угадать, что она делает? A1:A9 — это массив, и функция ROW() возвращает массив результатов, числа от 1 до 9. TEXTJOIN склеивает их вместе, используя «и» между ними. Вы можете использовать эту технику для обработки списков чисел другими способами.
Однако нам не нужен список чисел. Нам просто нужно, чтобы Excel вытаскивал случайный символ определенное количество раз. Опять же, эта формула вырывает один случайный персонаж:
=СРЕДН(D8,СЛУЧМЕЖДУ(1,ДЛСТР(D8)),1)
Чтобы Excel обработал эту функцию, скажем, восемь раз, нам нужно заменить цифру 1, определяющую нижний предел случайного диапазона, формулой, которая возвращает массив из восьми единиц. Функция SIGN() возвращает 1 для любого положительного числа, поэтому мы будем использовать это, чтобы преобразовать массив возрастающих чисел в массив из 1. Затем мы используем TEXTJOIN() для объединения результатов. Эта формула возвращает восьмизначный пароль, состоящий из случайных символов из строки, найденной в D8:
=TEXTJOIN(«»,ИСТИНА,СРЕДН(D8,СЛУЧМЕЖДУ(ЗНАК(СТРОКА(1:8)),ДЛСТР(D8)),1))
Почти готово! Что нам нужно вместо диапазона 1:8, так это диапазон от 1 до любого значения в C3, желаемой длины. Удобная функция ДВССЫЛ() выполняет эту работу. Он принимает текстовую строку, описывающую ячейку или местоположение, и возвращает эту ячейку или местоположение. На этом формула завершена. Вот еще раз:
=TEXTJOIN(«»,ИСТИНА,СРЕДН(D8,СЛУЧМЕЖДУ(ЗНАК(СТРОКА(ДВССЫЛ(«1:»&C3))),ДЛСТР(D8)),1))
Тонкая настройка генератора паролей
На данный момент генератор паролей полностью функционален. Если вы довольны этим как есть, отлично: вы сделали это! Но если вам интересно, вы можете улучшить его внешний вид и функциональность несколькими способами. Для начала щелкните правой кнопкой мыши букву D в верхней части столбца D и выберите в меню Скрыть. Теперь вам не нужно видеть списки наборов символов и промежуточные вычисления.
Как правило, вы хотите установить верхний и нижний пределы длины в генераторе паролей. Кроме того, если вы введете в поле «Длина» что-либо, кроме числа, формула не будет работать. Мы можем это исправить. Щелкните ячейку C3, определяющую длину, щелкните «Данные» на ленте, щелкните, чтобы открыть «Инструменты данных», и выберите «Проверка данных».
Рекомендовано нашими редакторами
В появившемся всплывающем окне щелкните раскрывающееся меню «Разрешить» и выберите «Целое число». Снимите флажок «Игнорировать пустое поле» и установите для параметра «Минимум» значение 8, а для параметра «Максимум», скажем, 64. Когда все будет выглядеть так, как показано на этом снимке экрана, щелкните следующую вкладку «Ввод сообщения». В качестве входного сообщения введите «Введите длину от 8 до 64». Скопируйте этот текст в буфер обмена и вставьте его в поле «Сообщение об ошибке» на вкладке «Предупреждение об ошибке», затем нажмите «ОК». Теперь, когда вы щелкаете по ячейке «Длина», вам будет предложено ввести допустимую длину, а если вы сделаете ошибку, вы получите информативное сообщение об ошибке.
Готовы к последней настройке? Щелкните ячейку C4, ячейку справа от надписи «Прописные буквы». Еще раз нажмите «Данные» на ленте и выберите «Проверка данных». Выберите «Список» в раскрывающемся списке, снимите флажок «Игнорировать пробел», щелкните поле «Источник» и введите «Да, Нет» без кавычек. На вкладке «Входящее сообщение» снимите флажок «Показать входное сообщение» вверху. На странице «Предупреждение об ошибке» введите «Да или нет» в качестве сообщения об ошибке. Нажмите OK, чтобы закончить. Скопируйте эту ячейку в три ячейки под ней.
Вот и все! Теперь эти четыре ячейки принимают только значения «Да» или «Нет». Более того, у каждого теперь есть раскрывающийся список, позволяющий выбрать одно из этих значений.
На этом этапе вы можете проявить творческий подход и добавить форматирование, чтобы ваш генератор паролей выглядел менее индустриальным. Выбирайте шрифты, которые вам нравятся, добавляйте цвета, настраивайте вещи, пока они не будут выглядеть великолепно.
Наконец, давайте заблокируем его, чтобы вы случайно не уничтожили формулу, введя данные не в ту ячейку. Выделите ячейки от C3 до C7 (это ячейка длины плюс четыре ячейки «да/нет»), щелкните правой кнопкой мыши и выберите «Формат ячеек». Перейдите на вкладку «Защита» и снимите флажок «Заблокировано», затем нажмите «ОК». Нажмите «Просмотреть» на ленте и нажмите «Защитить лист». Просто нажмите OK, чтобы принять настройки в появившемся диалоговом окне; вы не пытаетесь защитить лист паролем, просто чтобы защитить его от неловких пальцев. Сохраните великолепный результат!
Сделать генератор паролей в Google Sheets
Я гений Excel, и я им был еще до того, как появились Google Sheets. Может быть, еще до того, как Google существовал! Но я знаю, что многие люди клянутся Google Sheets, поэтому я запустил его, чтобы убедиться, что он поддерживает этот проект.
Я следовал своим собственным инструкциям, чтобы создать генератор паролей в Sheets, и обнаружил, что все работает джим-денди, вплоть до формулы, отображающей один случайный символ. Все заработало, но нажатие F9 не помогло обновиться новым случайным символом. Проконсультировавшись с Google, я обнаружил, что для принудительного обновления необходимо нажать F5, тем самым обновив всю страницу, или изменить значение любой ячейки. Это неудобно, но выполнимо. Я изменил подсказку на «Нажмите F5 для регенерации».
Я столкнулся с еще одним отличием, когда скопировал важнейшую функцию, которая фактически создает пароль. Это не сработало. Он просто вернул один случайный символ. Чтобы листы могли обрабатывать задействованные вычисления массива, мне пришлось явно передать существующую формулу в функцию ArrayFormula(). Таким образом, в Sheets формула, которая генерирует случайный пароль, становится следующей:
=ArrayFormula(TEXTJOIN(«»,TRUE,MID(D8,RANDBETWEEN(SIGN(СТРОКА(ДВССЫЛ(«1:»&C3))),LEN(D8)),1)))
Я не буду вдаваться в подробности, но мне удалось заново создать правила проверки данных и скрыть ненужные столбцы. Если вы используете Таблицы, а не Excel, этот проект все равно может вам подойти.
Ты сделал это!
Независимо от того, приняли ли вы простую версию этой электронной таблицы или продолжили применять модные настройки, теперь у вас есть генератор паролей, который вы написали сами. Правда, Excel использует генератор псевдослучайных чисел, но вы можете добавить свою собственную случайность, бросив кубик и нажав F9 столько раз, прежде чем принять сгенерированный пароль. И хотя хакер может работать над перепроектированием генератора паролей в продукте для управления паролями, используемом миллионами, ваша одноразовая утилита просто не находится на радаре. Ты сделал это!