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