Тип пароля, который вы должны создать, во многом зависит от того, как он хранится.

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

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

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

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

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

instagram viewer

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

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

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

Влияние новых графических процессоров

Возможности параллельной обработки данных графических процессоров (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

Bcrypt

71.000

Скрипт

33.000

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

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

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

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

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

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

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

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

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

Количество символов

Прописные/строчные буквы и цифры

Прописные/строчные буквы, цифры и специальные символы

8

менее 1 минуты

2 минуты

9

2 минуты

2 часа

10

2 часа

1 неделя

11

6 дней

2 года

12

1 год

200 лет

13

более 100 лет

более 1000 лет

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

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

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

Совет конечным пользователям

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