Инструменты разработчика · SHA хеш-калькулятор
Столкновение, прообраз и второй прообраз: три цели безопасности хэша
· Фон
ша-256 криптография безопасность
В рекомендации говорится, что у алгоритма есть проблемы с коллизиями, и вам необходимо знать, влияет ли это на ваше использование. В этом посте определяются три свойства устойчивости, показаны варианты использования, от которых зависят, и применяются их к SHA-1.
Это повлияет на мое использование? — вопрос, на который рекомендация редко дает прямой ответ.
Появляется сообщение о том, что у SHA-1 проблемы с коллизиями, поэтому необходимо обновить вашу систему. Но что, если ваша система использует SHA-1 только для получения ключа, а не для аутентификации сообщений? Что, если SHA-1 используется только для дедупликации идентичных файлов, а не для подтверждения подлинности? Вопрос «затронута ли моя система?» невозможно ответить, не понимая, какое свойство хеш-функции на самом деле нарушено и от какого свойства зависит ваш вариант использования.
Хэш-функция обеспечивает несколько свойств безопасности: устойчивость к прообразу, устойчивость ко второму прообразу и устойчивость к коллизиям. Нарушение одного свойства не нарушает другое, а некоторые варианты использования зависят только от свойств, которые остаются в безопасности. Хэш-калькулятор ToolAcre SHA отображает алгоритмы и их ширину дайджеста — свойства, определяющие границы для каждой цели безопасности. Понимание этих свойств — первый шаг к принятию решения о том, повлияет ли рекомендация на вашу систему.
Сопротивление прообразу — учитывая хэш, вы не можете найти ввод, который его создает.
Устойчивость к прообразу означает, что при наличии дайджеста невозможно найти входные данные, которые создают этот дайджест. Вы получили хэш пароля и хотите его угадать; это атака на прообраз. Сопротивление второму прообразу означает, что при наличии сообщения и его хэша должно быть невозможно найти другое сообщение с тем же хешем. У вас есть загруженный файл и его контрольная сумма SHA-256; злоумышленник хочет заменить файл другим файлом с тем же хешем; это вторая атака прообраза.
Устойчивость к коллизиям означает, что невозможно найти два разных сообщения с одинаковым хешем. Вы подписываете документ; злоумышленник хочет создать другой документ с той же подписью; это столкновение. Эти три сценария требуют от злоумышленника разного объема работы, а также различаются границы безопасности. Сопротивление прообразу — самое сильное свойство, и оно редко нарушается. Учитывая дайджест, поиск прообраза требует грубого поиска по пространству возможных входных данных. Ширина дайджеста влияет на общее пространство поиска, но в этой статье не указывается количество операций без его получения и определения модели атаки.
Сопротивление второму прообразу — учитывая входные данные, вы не можете найти другой ввод с тем же хешем.
Сопротивление второго прообраза является следующим по силе, и оно также редко преодолевается изолированно. Учитывая сообщение и его хэш, поиск другого сообщения с тем же хешем также требует экспоненциальной работы над размером дайджеста. Поиск по второму прообразу и поиск коллизий предоставляют злоумышленнику разные варианты выбора, поэтому их общие границы не являются взаимозаменяемыми. Качественного различия здесь достаточно; никакая числовая граница не утверждается без встроенного вывода. Алгоритм теряет устойчивость ко второму прообразу, если происходит структурная атака, не требующая грубой силы.
Устойчивость к столкновениям — самое слабое из трех свойств, и именно оно чаще всего нарушается или сгибается. Поиск коллизий позволяет злоумышленнику выбрать оба входа, в отличие от двух других целей, поэтому он имеет другую общую границу. В этой статье намеренно опущены цифры, связанные с днями рождения, и графики выпуска оборудования, поскольку их получение и источники выходят за рамки проверенного материала.
Устойчивость к коллизиям — невозможно найти два входа с одинаковым хешем, и почему это самый слабый из трёх
Сопоставление трех свойств безопасности с вариантами использования показывает, какое свойство требуется для каждой задачи. Дедупликация основана на предположении, что если два файла имеют одинаковый хэш, это один и тот же файл. Для этого необходима устойчивость к коллизиям: если коллизии возможны, злоумышленник может создать два разных файла с одинаковым хешем и нарушить инвариант дедупликации. Однако это слабое требование, поскольку практические столкновения крайне редки, даже если они теоретически возможны.
Цифровые подписи требуют стойкости к коллизиям в сильной форме. Когда подписывающая сторона создает подпись для хеша документа, а проверяющий позже проверяет подпись, эти двое должны проверять один и тот же хэш. Если конфликты просты, злоумышленник может подделать подпись для другого документа, обнаружив конфликт с подписанным документом. Именно эта атака послужила причиной обновления сертификатов с SHA-1 до SHA-256. Сертификат, подписанный центром сертификации, и поддельный сертификат с той же подписью проходят проверку, если хеш-код имеет коллизию.
Устойчивость к столкновению отличается от прообраза цели; никакие цифры, связанные с днем рождения, не появляются без вывода
Хранилище с адресацией по содержимому использует хеши в качестве ключей поиска. Если файл хранится в месте, определенном его хешем, а затем извлекается с использованием того же хеша, две операции должны достичь одного и того же файла. Для этого требуется сопротивление столкновению, если есть активные злоумышленники, но требуется сопротивление второму прообразу только в том случае, если злоумышленники пассивны. Пассивный атакующий не может создать столкновение; они могут только наблюдать, не сталкиваются ли случайно законные файлы.
Проверка загрузки использует контрольную сумму, чтобы подтвердить, что файл, полученный из Интернета, не поврежден. Контрольная сумма обычно публикуется вместе с файлом из надежного источника. Злоумышленник, изменяющий загруженный файл, не сможет обновить контрольную сумму без доступа к доверенному источнику. Этот вариант использования требует сопротивления второму прообразу: учитывая исходный файл и его контрольную сумму, злоумышленник не сможет создать другой файл с той же контрольной суммой. SHA-1 сопротивление второго прообраза все еще остается устойчивым, несмотря на разрушение столкновения.
Сопоставление целостности и именования с необходимыми свойствами; простые хеши не являются хранилищем паролей
Хранение паролей — это тот случай, когда хеш-функция не является подходящим инструментом. Если пароли хранятся в виде хешей SHA-256 и произошла утечка базы данных хэшей, злоумышленник может провести атаку по словарю: хэшировать миллионы предположений и проверить, совпадают ли какие-либо из них с сохраненными хэшами. Злоумышленнику нужен только один прообраз для каждого пароля, а быстрая функция дает злоумышленнику эффективный автономный цикл сравнения без ограничений скорости применения.
Для паролей требуется намеренно медленная, требовательная к памяти функция с солью для каждого пользователя, такая как Argon2id, scrypt или bcrypt. Уникальная соль для каждого пользователя приводит к тому, что одинаковые пароли создают разные хранимые записи, в то время как настроенная память и временные затраты функции пароля делают каждого кандидата намеренно более дорогим. Точные параметры требуют местного сравнительного анализа и здесь не описываются. Хэш-калькулятор ToolAcre SHA не выполняет хеширование паролей, а в справочной документации объясняется, почему SHA-256 не подходит для этого варианта использования.
Рабочий пример — применение сопоставления с SHA-1 в репозитории Git и SHA-1 в сертификате.
Рабочий пример: SHA-1 в репозитории Git. Каждый коммит Git имеет хэш SHA-1 в качестве идентификатора объекта. Если устойчивость к коллизиям SHA-1 нарушена, уязвим ли репозиторий Git? Ответ: возможно. Злоумышленник может создать коммит с тем же SHA-1, что и существующий коммит, и отправить его на сервер репозитория, который затем может обслуживать разные коммиты для разных клиентов. Однако для этого требуется выбрать конкретную цель и вычислить столкновение, что дорого даже при сломанном SHA-1.
Участники проекта Git опубликовали план перехода на SHA-256, но срочность умеренная, поскольку практическая атака требует как методов коллизии, так и компрометации сервера. Для разработчика, спрашивающего: «Зависит ли безопасность моего репозитория Git от устойчивости к коллизиям SHA-1?» ответ — да, но практический риск невелик по сравнению с другими угрозами безопасности. Хэш-калькулятор ToolAcre SHA предоставляет как SHA-1, так и SHA-256, помеченные соответствующим образом, чтобы разработчики могли вычислить любой из них и понять разницу.
Вывод: назовите свойство, прежде чем паниковать — ToolAcre SHA хэш-калькулятор позволяет вам увидеть длину дайджеста, которая устанавливает границы каждого алгоритма.
Для любой системы, использующей SHA-1, решение об обновлении зависит от того, требует ли вариант использования конкретного нарушенного свойства. Если вариант использования — цифровые подписи или дедупликация против активных злоумышленников, требуется устойчивость к коллизиям, а SHA-1 не работает, поэтому немедленно обновите его до SHA-256. Если вариантом использования является хранилище с адресацией содержимого или контрольные суммы, требуется устойчивость второго прообраза, и SHA-1 по-прежнему безопасен для этой цели, хотя SHA-256 предпочтительнее для будущего.
Если случаем использования является деривация ключа или проверка пароля, требуется устойчивость к прообразу, и ничего из этого набора инструментов не следует использовать вообще, поскольку более быстрые функции лучше подходят для деривации ключей. Хэш-калькулятор ToolAcre SHA позволяет разработчикам вычислять дайджесты и видеть свойства в действии. Понимание этих трех свойств и сопоставление их с вариантами использования является основой принятия безопасного криптографического выбора в реальных системах.