В криптоанализе и компьютерной безопасности атака по словарю — это атака с использованием ограниченного подмножества пространства ключей для взлома шифра или механизма аутентификации путем попытки определить его ключ дешифрования или парольную фразу , иногда перебирая тысячи или миллионы вероятных возможностей [1], часто полученных из списки прошлых нарушений безопасности.
Атака по словарю основана на проверке всех строк в заранее составленном списке. В таких атаках первоначально использовались слова, найденные в словаре (отсюда и фразовая атака по словарю ); [2] однако сейчас в открытом Интернете доступны гораздо более крупные списки, содержащие сотни миллионов паролей, восстановленных в результате прошлых утечек данных. [3] Существует также программное обеспечение для взлома, которое может использовать такие списки и создавать общие варианты, такие как замена похожих букв цифрами . Атака по словарю пробует только те возможности, которые считаются наиболее вероятными для успеха. Атаки по словарю часто бывают успешными, поскольку многие люди склонны выбирать короткие пароли, представляющие собой обычные слова или общие пароли; или варианты, полученные, например, путем добавления цифры или знака пунктуации. Атаки по словарю часто бывают успешными, поскольку многие часто используемые методы создания паролей включены в доступные списки в сочетании с генерацией шаблонов программного обеспечения для взлома. Более безопасный подход — случайным образом сгенерировать длинный пароль (15 или более букв) или парольную фразу из нескольких слов с помощью программы- менеджера паролей или ввести пароль вручную.
Можно достичь компромисса между временем и пространством , предварительно вычислив список хешей словарных слов и сохранив его в базе данных, используя хеш в качестве ключа . Это требует значительного времени на подготовку, но позволяет быстрее выполнить реальную атаку. Требования к хранилищу для заранее рассчитанных таблиц когда-то были серьезной проблемой, но теперь они не являются проблемой из-за низкой стоимости дискового хранилища . Предварительно рассчитанные атаки по словарю особенно эффективны, когда необходимо взломать большое количество паролей. Предварительно рассчитанный словарь необходимо сгенерировать только один раз, а по его завершении хэши паролей можно будет просмотреть практически мгновенно в любое время, чтобы найти соответствующий пароль. Более усовершенствованный подход предполагает использование радужных таблиц , которые уменьшают требования к хранению за счет немного большего времени поиска. См. LM-хеш , где приведен пример системы аутентификации, скомпрометированной в результате такой атаки.
Предварительно рассчитанные атаки по словарю, или «атаки по радужным таблицам», можно предотвратить с помощью salt — метода, который заставляет пересчитывать хэш-словарь для каждого искомого пароля, что делает предварительные вычисления невозможными, при условии, что количество возможных значений соли не превышает достаточно большой. [4]