• взлом-паролей
  • атака-радужной-таблицы
  • хеширование

Как взламывают ваши пароли? Как улучшить безопасность паролей?

В этой статье мы представили несколько классических методов взлома паролей, а также принципы, лежащие в основе этих подходов. Учитывая эти концепции, мы предоставили практические советы как с точки зрения хранителей паролей, так и владельцев аккаунтов о том, как повысить безопасность паролей.

Darcy Ye
Darcy Ye
Developer

Мы часто видим новости о том, что пароли пользователей некоторых известных приложений с большой пользовательской базой утечены. Вы можете подумать, что раз вы не используете это конкретное приложение, такие инциденты не имеют к вам отношения, но это не так на самом деле.

Недавно также были новости в Twitter, что методы ИИ способны значительно ускорить взлом паролей. Поэтому мы хотели понять тонкости, стоящие за этим, и посмотреть, как мы можем улучшить безопасность наших паролей.

PassGAN Twitter

Как взламывают пароли?

В общем, пароли аккаунтов обычно обрабатываются с использованием различных алгоритмов хеширования и затем хранятся в базах данных. Вы можете ознакомиться с нашим предыдущим блогом, чтобы лучше понять хеширование паролей. К сожалению, некоторые поставщики услуг, не обладая здравым смыслом, хранят пароли в виде обычного текста в своих базах данных. Эта практика может привести к еще большему ущербу, если данные будут утекать.

Сохраняя хешированные пароли, даже администраторы баз данных не могут получить доступ к вашему исходному паролю, что значительно повышает безопасность. При проверке правильности вводимого пароля используется тот же алгоритм хеширования для обработки введенного пароля. Полученный хеш затем сравнивается со значением, хранящимся в базе данных. Если два хеш-значения совпадают, введенный пароль считается правильным.

В простых терминах взлом пароля включает в себя создание строк, соответствующих разрешенным правилам пароля. Затем это включает в себя постоянную проверку этих строк с использованием указанного метода, чтобы в конечном итоге раскрыть правильный пароль в виде обычного текста.

Общие методы взлома паролей

В этом разделе мы кратко представим три общих способа взлома паролей.

Атака перебором

Атаки перебором обычно перечисляют все возможные варианты в пределах разрешенных правил пароля и пробуют их один за другим.

Например, мобильные телефоны могут иметь 4-значный числовой пароль. Атаки перебором будут пробовать все возможности одну за другой, начиная с 0000, 0001, 0002, и так далее до 9999.

Атаки перебором занимают много времени, потому что требуется много попыток. Предполагая, что длина пароля $L$, а число возможных символов на каждую цифру пароля $n$, количество возможностей, которые атаки перебором должны попробовать, составляет $n^L$, что является очень большим числом.

Причина, по которой многие пароли требуют комбинации чисел, заглавных и строчных букв, а также специальных символов, заключается в увеличении $n$, что значительно увеличивает количество возможностей, тем самым повышая сложность взлома пароля.

Атака по словарю

Атаки по словарю используют слова из словарей, часто комбинируя их с пробелами, числами, специальными символами и другими элементами для формирования различных комбинаций паролей. Эти комбинации затем используются для попыток совпадения паролей.

Многие люди предпочитают использовать предложения с ясным смыслом в качестве паролей для легкого запоминания. Атаки по словарю становятся эффективным методом для взлома паролей с такими характеристиками.

Атака с использованием радужной таблицы

Радужная таблица — это предварительно вычисленная таблица соответствия паролей в виде открытого текста и их соответствующих хеш-значений. Сравнивая хеш-значения, хранящиеся в базе данных, с теми, что есть в радужной таблице, любые найденные совпадения могут быть использованы для поиска и прямого извлечения соответствующего пароля в виде открытого текста.

Радужные таблицы предоставляют возможность мгновенного доступа к паролям в открытом виде, если хеш-значение было предварительно вычислено (и записано в радужной таблице). Однако важно отметить, что если хеш-значение не было предварительно вычислено (и, следовательно, не присутствует в таблице), радужная таблица не может быть использована.

Помимо описанных выше методов, существует множество других техник, не описанных здесь. Как правило, используется комбинация этих методов, чтобы охватить все возможные пароли и ускорить процесс взлома.

Как ускорить взлом паролей?

В предыдущем разделе мы кратко представили некоторые классические методы взлома паролей. Из них мы можем обобщить некоторые идеи по улучшению скорости взлома паролей или уровня успеха.

Для взлома пароля часто требуется два шага:

  1. Определить пространство поиска для пароля (создать возможные пароли)
  2. Использовать алгоритм хеширования для генерации хешей для возможных паролей, полученных на предыдущем шаге, и сравнить их с хешем пароля, который нужно взломать

Атака по словарю и атака с использованием радужной таблицы, упомянутые выше, соответственно оптимизируют эти два шага:

  • Атака по словарю сужает пространство поиска паролей. Основываясь на предположении, что "пользователи склонны создавать пароли, используя комбинации слов с реальными значениями", такие слова, как zzzz, не включаются в словарь, что означает, что они не будут пробоваться в качестве потенциальных паролей. Эта практика аналогична предварительному исключению неправильных ответов. Подобно решению вопросов с выбором из нескольких вариантов, хотя вы можете не быть уверены в правильном варианте, вы можете определить, какие варианты определенно неверны. Исключив эти очевидно неверные варианты, ваши шансы на правильную угадайку среди оставшихся вариантов увеличиваются.
  • Атака с использованием радужной таблицы ускоряет время выполнения алгоритма хеширования. Для людей, хорошо разбирающихся в структурах данных, поиск — это операция с временной сложностью $O(1)$, и никакая операция не может быть проще, чем $O(1)$, по временной сложности. В отличие от этого, временная сложность обычных алгоритмов хеширования, таких как MD5 и SHA, составляет $O(n)$, что значительно медленнее, чем $O(1)$.

На практике, оптимизация процесса взлома паролей также начинается с вышеуказанных двух точек зрения. Стоит отметить, что из-за относительно малого пространства для оптимизации временной сложности $O(n)$ для алгоритмов хеширования строк, больше внимание уделяется улучшению аппаратного обеспечения или вычислительных методов, которые здесь не будут рассматриваться.

Итак, как ИИ помогает взломать пароли?

Во всей задаче взлома паролей роль ИИ расширяется на изучение определенных шаблонов и методов построения из раскрытых паролей в открытом виде. Впоследствии ИИ может симулировать эти шаблоны построения паролей для генерации кучи потенциальных паролей. После этого ИИ может использовать алгоритмы хеширования или даже специализированное оборудование для выполнения взлома паролей.

На самом деле, по сравнению с другими инструментами взлома паролей, убийственным преимуществом PassGAN является то, что он может "угадывать наиболее вероятные пароли как можно быстрее", что является идеей "уменьшения пространства поиска возможных паролей", которую мы упомянули выше.

Password Guessing Prob

Как сделать пароли более безопасными?

Мы объясним, как защитить пароли с двух точек зрения. Здесь мы просто рассматриваем сам пароль, не обсуждая другие способы обеспечения безопасности аккаунта, такие как многофакторная аутентификация (MFA) и так далее.

Со стороны поставщиков услуг идентификации

Как поставщики услуг идентификации, они хранят все пароли пользователей, что возлагает на них ответственность за обеспечение безопасности этих паролей. Вот несколько схем, которые могут быть реализованы для повышения безопасности паролей пользователей:

  1. Избегать хранения паролей в виде обычного текста: Хотя это может показаться тривиальным, некоторые поставщики услуг все еще хранят пароли в виде обычного текста в своих базах данных. Использование хеш-значений для хранения паролей добавляет уровень безопасности; даже если база данных будет скомпрометирована, хакерам потребуется значительное усилие для взлома хешированных паролей.

  2. Применяйте ограничение скорости на интерфейс API для проверки паролей: Давайте вернемся к процессу взлома паролей, упомянутому ранее. Неотъемлемой частью этого процесса является "проверка" правильности пароля. Поскольку пароли доверяет поставщикам услуг идентификации, только они могут предложить API для проверки паролей. Ограничивая частоту доступа к этому API, мы можем воспрепятствовать хакерам быстро пробовать различные пароли, даже если у них имеются весьма вероятные догадки о паролях.

  3. Навязывайте более сложные комбинации паролей: Например, как упоминалось ранее, большее разнообразие символов в пределах паролей заданной длины способствует увеличению сложности. Кроме того, использование методов ИИ, аналогичных обсуждаемым ранее, позволяет оценивать безопасность пароля до его отправки. Если пароль считается слабым, пользователи могут быть предупреждены об этом и предложено выбрать более надежный вариант.

С точки зрения пользователей

Как владельцы аккаунтов и связанных цифровых активов, пользователи должны уделять максимально возможное внимание обеспечению безопасности своих паролей к аккаунтам.

  1. Избегайте использования одного и того же пароля на разных веб-сайтах: Получив пароли с определенных сайтов, многие хакеры пытаются использовать эти учетные данные для доступа к другим веб-сайтам. Если несколько аккаунтов для различных услуг используют один и тот же пароль, может возникнуть риск потери аккаунтов и утечки информации в упомянутой выше ситуации.

  2. Выбирайте чисто случайные пароли, когда это возможно: Этот подход помогает предотвратить повторное использование общих шаблонов пароля, которые большинство людей использует (как упоминалось ранее, использование английских предложений), тем самым усложняя хакерам усилия по "сужению пространства поиска паролей" и увеличивая уровень сложности пароля.

В качестве поставщика инфраструктуры для услуг идентификации Logto внедрил многие из вышеупомянутых лучших практик для обеспечения безопасности учетных записей пользователей. Это позволяет пользователям взаимодействовать с различными приложениями без опасения потери аккаунта, а также позволяет онлайн-поставщикам услуг обеспечить безопасность пользовательских данных с минимальными усилиями, что позволяет им сосредоточиться на своих основных бизнес-задачах.