Русский

Инструменты разработчика · SHA хеш-калькулятор

Почему Web Crypto предлагает SHA-1 до SHA-512, но не MD5 или SHA-3

· Как это работает

криптография API-интерфейс браузера ша-256 javascript

Четыре поля алгоритмов, помеченные от SHA-1 до SHA-512, с галочками и соответствующими отсутствующими полями для MD5 и SHA-3.
Оригинальная векторная иллюстрация ToolAcre

Дайджест браузера API поддерживает ровно четыре алгоритма. В этом посте объясняется, почему MD5 был исключен, почему SHA-3 не был добавлен и что это означает для инструмента, который отказывается поставлять то, чего не предоставляет платформа.

Где MD5? — первый вопрос от любого, кто переносит устаревший рабочий процесс контрольной суммы

Web Crypto API браузера поддерживает ровно четыре алгоритма дайджеста: SHA-1, SHA-256, SHA-384 и SHA-512. Если вы обратитесь к хеш-калькулятору ToolAcre SHA, ожидающему MD5 или SHA-3, вы их не найдете. Эта специфика не является ограничением инструмента; это отражает осознанный выбор платформы. Понимание того, почему были включены эти четыре варианта и почему две популярные альтернативы были исключены, многое расскажет вам о том, как устроены API браузера.

Каждый крупный браузер предоставляет crypto.subtle.digest в безопасном источнике. Когда ваш JavaScript вызывает этот метод, он передается в криптографическую реализацию платформы — собственный код, работающий с изолированной программной средой безопасности и оптимизацией производительности. Предлагаемые алгоритмы дайджеста были выбраны рабочей группой W3C Web Crypto с конкретными приоритетами: совместимость с существующими стандартами безопасности, доступная поддержка криптографических библиотек, зрелость и практические потребности веб-платформы в безопасности.

Поддерживаются четыре алгоритма SubtleCrypto.digest — SHA-1, SHA-256, SHA-384 и SHA-512, и ничего больше.

ToolAcre принимает те же четыре идентификатора, которые используются в digiesBytes: SHA-1, SHA-256, SHA-384 и SHA-512. Неизвестное имя отклоняется до вызова Web Crypto, и набор тестов специально передает MD5 для подтверждения этого отклонения. Таким образом, сборщик описывает границы протестированного продукта, а не обзор каждого когда-либо стандартизированного дайджеста.

SHA-1, появляющийся в этом списке, не дает всех четырех эквивалентных рекомендаций. Его объект результата содержит флаг неисправности, и интерфейс повторяет устаревшее предупреждение; остальные три — доступные варианты SHA-2. Доступность и пригодность должны оставаться отдельными всякий раз, когда инструмент совместимости воспроизводит старое значение, не поощряя новую зависимость от него.

MD5 отсутствует в этой реализации и в Web Crypto; эта статья не добавляет обоснование стандартов без исходных данных.

MD5 — это криптографическая хеш-функция, которая создает 128-битный дайджест, что делает его короче и вычислительно дешевле, чем SHA-256. На протяжении десятилетий это был стандартный выбор для контрольных сумм и цифровых подписей. Однако устойчивость MD5 к столкновениям существенно нарушена. В 2004 криптографы продемонстрировали практические коллизии — два разных ввода с одним и тем же дайджестом — и алгоритм был полностью разобран академическими работами. Математическая уязвимость абсолютна и постоянна.

Спецификация W3C Web Crypto сознательно решила не включать MD5. Аргументация проста: доставка сломанного алгоритма миллионам пользователей браузеров нормализует его использование в новых приложениях, хотя он должен появляться только в сценариях совместимости с устаревшими версиями. Если приложению действительно требуется MD5 для взаимодействия со старыми системами, этот код принадлежит серверной среде выполнения, где требование понимается и проверяется, а не в браузере. Обеспечение удобного доступа к сломанному алгоритму повысит требования к безопасности в новых системах.

Хэш-калькулятор ToolAcre SHA также не включает реализацию MD5. Как и платформа API, которую он использует, он отказывается сделать сломанный алгоритм удобным доступным. Если вашему приложению абсолютно необходим MD5 — что редко встречается за пределами устаревших систем Git — реализация принадлежит вашей собственной кодовой базе с четким указанием, что это прокладка совместимости. Доступность порождает ожидания, а сломанные алгоритмы не заслуживают ожиданий.

SHA-3 находится за пределами браузера API и инструмента; история его принятия находится за пределами хранилища

SHA-3 был стандартизирован NIST в 2015 после длительного публичного конкурса и является криптографически надежным. Он использует принципиально отличную от SHA-2 конструкцию, называемую губкой, которая предлагает интересные теоретические свойства и компромиссы в производительности в зависимости от вашего оборудования. В современных системах SHA-3 может быть быстрее, чем SHA-256. Тем не менее, платформа браузера сегодня не раскрывает эту проблему, и эта задержка отражает практические решения о зрелости платформы и темпах внедрения.

Задержка доставки SHA-3 отражает реальность: Web Crypto был разработан для охвата алгоритмов, наиболее широко используемых в Интернете и в HTTPS/TLS. В API доработка, SHA-2 (256, 384, 512) был подавляющий консенсус в пользу новых систем, и переход к SHA-3 происходит гораздо медленнее, чем переход от MD5 или SHA-1. Большинству приложений не требуется SHA-3 еще. Стоимость расширения API и тестирование его во всех браузерах и платформах не было оправдано спросом при запуске.

Это не постоянный отказ. Веб-криптография API может развиваться. Если внедрение SHA-3 ускорится, рабочая группа может добавить его. Текущий набор представляет собой зрелые, широко стандартизированные алгоритмы, необходимые Web Crypto для удовлетворения неотложных потребностей платформы в области безопасности. API браузера должны быть стабильными и тщательно поддерживаться; Спешка с добавлением новых функций до того, как возникнет массовая необходимость, создаст нагрузку на обслуживание и риск совместимости на долгие годы вперед.

Почему SHA-1 все еще существует: необходимость устаревшей проверки и разница между предложением и рекомендацией

SHA-1 включен в Web Crypto, несмотря на то, что он криптографически взломан. Этот нелогичный выбор часто удивляет разработчиков. Алгоритм создает 160-битный дайджест, а атаки на коллизии против SHA-1 теперь практичны — можно создать два разных документа, использующих один и тот же дайджест. Конфликты выбранных префиксов позволяют злоумышленникам создать два документа, которые имеют смысл при столкновении, что приводит к нарушению подписей и сертификатов. Тем не менее, он остается на платформе.

SHA-1 остается в Web Crypto по одной необходимой причине: совместимость с устаревшими версиями. Идентификаторы объектов Git основаны на SHA-1, и хотя проект Git переходит на SHA-256, миллионы существующих репозиториев, ссылок и систем сборки по-прежнему выдают хеши SHA-1. TLS отпечатки сертификатов старых систем содержат дайджесты SHA-1. API, выдавшие подписи HMAC-SHA1 много лет назад, все еще нуждаются в проверке. Эти развернутые системы должны быть проверены или перенесены. Платформа включает SHA-1, чтобы сделать эту необходимую работу возможной.

Платформа API включает SHA-1 с четким пониманием того, что она предназначена для совместимости, а не для рекомендаций. Пользовательский интерфейс браузера помечает SHA-1 предупреждением. Хэш-калькулятор ToolAcre SHA отображает надпись «Криптографически сломано» рядом с результатом SHA-1, гарантируя, что любой, кто его использует, понимает, что он работает с устаревшим материалом. Прозрачность имеет важное значение; пользователи никогда не должны путать совместимость SHA-1 с одобрением SHA-1.

Если для совместимости требуется MD5, используйте проверенную реализацию вне этого инструмента и никогда не путайте совместимость с безопасностью.

Четыре алгоритма Web Crypto соответствуют экосистеме набора шифров TLS и наиболее важным стандартам безопасности. SHA-256 — текущее значение по умолчанию для хеширования общего назначения, используемое при проверке целостности подресурсов, адресации контента и новых системах безопасности. SHA-512 работает быстрее на 64-битном оборудовании и предлагает более широкий обзор. SHA-384 в первую очередь известен своим использованием в наборах шифров TLS.

SHA-1 сохраняется для совместимости, а не потому, что кто-то должен запускать с ним новую систему. Если вы проверяете существующую контрольную сумму SHA-1, сопоставляете отпечаток старого сертификата или воспроизводите идентификатор фиксации Git, SHA-1 в ToolAcre позволяет вам это сделать. Если вы разрабатываете новую систему, очевидным выбором будет SHA-256. Выбранный вами алгоритм свидетельствует о вашем понимании модели безопасности.

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

Если вашему приложению действительно нужен MD5, SHA-3 или любой другой алгоритм, выбор ясен: сохранить этот код во время выполнения на стороне сервера и предоставить браузеру только конечный результат. Не отправляйте собственную JavaScript реализацию криптографического алгоритма для использования в браузере. Собственная функция Web Crypto браузера работает быстрее, безопаснее и проверяется так, как не может сравниться с написанной вручную функцией JavaScript. Делегирование платформе всегда является правильным выбором, если платформа предоставляет то, что вам нужно.

Это касается даже «простых» алгоритмов. Самописная реализация MD5 может показаться безобидной, потому что MD5 в любом случае сломан, но у сломанных алгоритмов нет градаций — они просто сломаны. Поставка нормализует практику реализации криптографии в коде приложения. Браузер предоставляет то, что нужно платформе; используйте то, что он предоставляет. Ручная криптография является крупнейшим источником уязвимостей безопасности в веб-приложениях, поскольку разработчики недооценивают тонкости и крайние случаи.

Вывод: ограничения являются частью продукта: ToolAcre SHA хеш-калькулятор предлагает четыре алгоритма, которые браузер реализует изначально, и документирует эти границы.

Хэш-калькулятор ToolAcre SHA напрямую отображает это ограничение: вы видите именно четыре алгоритма, которые предоставляет Web Crypto, не больше и не меньше. Если вы вставляете значение и думаете: «Мне нужно MD5», его отсутствие является намеренным. Если вам это нужно, это сигнал о том, что в вашей системе есть устаревший компонент, требующий осторожного обращения — именно для этого и нужен специализированный инструмент миграции на стороне сервера, а не утилита браузера. Честность инструмента в отношении того, что он предлагает, а что нет, сама по себе является ценной информацией.

Дизайн Web Crypto отражает десятилетия криптографической практики: алгоритмы, которые стандартизированы, проверены и проверены в широком применении. SHA-256 и SHA-512 — разумные значения по умолчанию. SHA-384 несет свою линию TLS. SHA-1 существует, потому что в сети есть SHA-1 дайджесты, которые нужно будет проверять годами. MD5 и SHA-3 отсутствуют, поскольку MD5 не работает, а SHA-3 еще не критичен для платформы.