Как сети и системы хранят пароли и другую информацию для входа?

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

Благодаря сегодняшним меняющимся технологиям и арендуемому оборудованию это время сократилось до нескольких часов. Но как эти пароли хранятся в первую очередь? Проверять Пароли ушли в прошлое: почему их отказываются от использования в этом году.

Как сети и системы хранят пароли и другую информацию для входа? - защита

Как хранятся пароли в Интернете?

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

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

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

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

В начале 8-х потребовались бы сотни лет, чтобы перепробовать все комбинации 123456-символьных паролей, зашифрованных популярными алгоритмами хеширования. Конечно, очень простые комбинации вроде «XNUMX» или «мой пароль» в эту комбинацию не входят. С развитием программных и аппаратных технологий сегодня сильно изменился и способ взлома паролей. Проверять Можно ли доверять безопасности менеджеров паролей?

Эффект появления видеокарт

Как сети и системы хранят пароли и другую информацию для входа? - защита

Возможности параллельной обработки данных графических процессоров (GPU) со временем улучшились. Видеокарты не способны выполнять универсальные операции, как ЦП общего назначения. Таким образом, несмотря на то, что имеется много ядер и параллельная вычислительная мощность, нет смысла использовать ее почти для каждой задачи, как процессор.

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

Чтобы получить представление, изучите количество хэшей в секунду (термин скорость хеширования относится к скорости, с которой компьютер может выполнять хэш-вычисления) для алгоритмов хеширования, таких как NTLM, MD5 и SHA1, в таблице ниже. Пока достаточно знать, что эти алгоритмы — всего лишь алгоритм хеширования. Для создания этой таблицы я использовал кластер из 25 графических процессоров AMD Radeon.

алгоритм Количество хэшей в секунду
NTLM 350.000.000.000
MD5 180.000.000.000
SHA1 63.000.000.000
SHA512Крипта 364.000
Бикрипт 71.000
Scrypt 33.000

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

Что делать разработчикам программного обеспечения?

Как сети и системы хранят пароли и другую информацию для входа? - защита

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

Если разработчики работают с программной средой, которая также поддерживает криптографию паролей, например Django, Ruby on Rails и Spring Security, им следует проверить, были ли приняты правильные решения в рамках этой среды с точки зрения безопасности.

Например, используется Девиз , которая является одной из наиболее широко используемых библиотек для пользовательских операций в Ruby on Rails, использует Bcrypt в качестве алгоритма хеширования по умолчанию. Это также позволяет использовать другой метод в качестве алгоритма хеширования. Алгоритм Bcrypt надежен, потому что видеокарте требуется много времени, чтобы добраться до нужной точки.

Короче говоря, чем дольше вы вычисляете хеш-значение, тем в большей безопасности вы находитесь.

Сколько символов должен содержать ваш пароль?

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

Рассмотрим эту ситуацию при двух разных сценариях. Рассмотрим значения, приведенные в приведенной выше таблице для алгоритма хэширования NTLM, и представьте, что вы собираетесь попытаться взломать пароль. Представьте, что вы нацеливаете пароли из восьми или более символов.

количество символов Прописные/строчные буквы и цифры Прописные/строчные буквы, цифры и специальные символы
8 менее одной минуты Пара минут
9 Пара минут Два часа
10 Два часа Одна неделя
11 Шесть дней два года
12 Один год 200 سنة
13 Более 100 лет Более 1000 лет

При изучении таблицы видно, что пароль длиной не менее 12 символов безопасен при использовании всех комбинаций прописных/строчных букв, цифр и специальных символов. Если вы не используете специальные символы, получается, что вам нужно использовать 13 символов, чтобы получить длину безопасного пароля. Если вы используете метод хеширования Bcrypt вместо хэша NTLM в этой системе, будет достаточно 8 символов. Однако у вас нет возможности увидеть, какой метод хеширования используется системой, в которую вы входите через Интернет и которая содержит ваш пароль. Вот почему вы должны рассмотреть все возможности.

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

Последнее предложение для разработчиков — проверять не только минимальную длину, но и максимальную длину входных данных, поступающих через формы, которые вы дали пользователю. В частности, когда вы разрешаете использование вычислительно медленного алгоритма хэширования, такого как Bcrypt, в целях безопасности, вы можете столкнуться с некоторыми рисками, если не контролируете максимальную длину пароля, вводимого пользователем. Например, злоумышленники могут выполнять атаки, одновременно перебирая десятки 100 XNUMX-символьных паролей с помощью некоторых специально созданных запросов. В такой ситуации весьма вероятно, что ваша система перестанет отвечать на запросы других пользователей. Проверять Как узнать, продаются ли ваши пароли в Интернете.

Совет конечному пользователю

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

Перейти к верхней кнопке