Русский

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

Вставка секретов в онлайн-инструменты хеширования: почему дайджест должен быть локальным

· Почему это важно

ша-256 безопасность конфиденциальность API-интерфейс браузера

Сетевая панель DevTools показывает ноль запросов при локальном хешировании ключа API
Оригинальная векторная иллюстрация ToolAcre

Если инструмент хеширования отправляет ваши данные на свой сервер, секрет, который вы хешировали, уже покинул вашу машину. В этом посте объясняется риск, как Web Crypto делает сервер ненужным и как проверить локальность инструмента.

Ключ API, который вы хешировали для сравнения с файлом конфигурации, и куда он делся

Разработчику необходимо хэшировать ключ API, чтобы сравнить его со значением, хранящимся в конфигурации, поэтому он обращается к ближайшему онлайн-инструменту хеширования. Они вставляют ключ, нажимают кнопку и получают дайджест. Хэш совпадает, поэтому тест пройден. Чего они, вероятно, не осознают, так это того, что ключ API уже покинул их компьютер. Любой хеш-инструмент, работающий на сервере, получает входные данные в виде открытого текста перед вычислением дайджеста. Сервер может зарегистрировать его, сохранить, продать или переслать конкурентам.

Обман тонкий, поскольку инструмент хеширования действительно может выдавать правильный результат и при этом отправлять входные данные на сервер. Математическая операция хеширования не зависит от местоположения, поэтому хеш на стороне сервера является криптографически правильным, даже если архитектура небезопасна. Злоумышленнику не нужно искажать хэш-вычисления, чтобы победить; им просто нужен ввод открытого текста. Разработчик, который предполагает, что инструмент хеширования является локальным, поскольку выходные данные верны, доверяет неправильному свойству.

Что получает серверный хэш-инструмент — полный ввод открытого текста, по определению, до того, как будет вычислен какой-либо дайджест.

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

Альтернативой является использование Web Crypto, который является собственной криптографической реализацией браузера. В безопасном источнике, то есть HTTPS или localhost, браузер предоставляет crypto.subtle.digest, функцию, которая вычисляет дайджесты SHA-1, SHA-256, SHA-384 и SHA-512 полностью в процессе браузера. Ввод никогда не покидает устройство, и сервер не задействован. Реализация браузера проверяется поставщиками браузеров, исправляется поставщиками браузеров и работает как оптимизированный собственный код, а не поставляется как JavaScript.

Почему сервер не нужен — собственная функция Web Crypto браузера вычисляет каждый дайджест SHA-2 локально

Чтобы убедиться, что инструмент хеширования является локальным, достаточно открыть сетевую панель DevTools и посмотреть, что инструмент отправляет по сети. В большинстве браузеров DevTools открывается с помощью F12 или Cmd+Option+I, а вкладка «Сеть» — это место для просмотра сетевого трафика. Открыв вкладку сети и видимый инструмент хеширования, вставьте открытый текст, нажмите кнопку хэша и посмотрите, что произойдет. Если используется локальный инструмент, на сетевой панели не отображаются новые запросы.

Этот метод проверки работает, поскольку браузеры реализуют ограничение одного и того же происхождения. Страница может отправлять запросы к своему источнику, не вызывая проблем CORS, поэтому локальный инструмент может отправлять запросы к серверу в том же домене, если захочет. Когда сетевой запрос появляется на панели DevTools, это доказывает, что инструмент куда-то отправляет данные. Разработчик, который проверяет это и не видит сетевого трафика, имеет полную уверенность в том, что вводимые данные не покидают браузер. Хэш-калькулятор ToolAcre SHA создает сетевую панель, которая остается пустой при хешировании.

Проверка с помощью сетевой панели — вставка, хеширование и отслеживание отсутствия запросов.

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

Заголовки политики безопасности контента отправляются с ответом HTTP и их можно проверить в разделе «Заголовки ответов» на вкладке «Сеть DevTools». Строка типа Content-Security-Policy: default-src 'self'; script-src 'self' заявляет, что сценарии могут иметь только одно и то же происхождение. Более строгая политика, включающая «нет» предков фреймов, предотвращает встраивание страницы в iframe, что блокирует один вектор атаки, если вредоносный iframe пытается украсть фокус. Эти детали полезны для понимания защиты, но проверка сетевой панели остается основной проверкой.

CSP — глубокоэшелонированная защита; прочитанные здесь источники репозитория не устанавливают развернутый заголовок

Рабочий пример: вставка ключа API из AWS или Azure в хеш-калькулятор ToolAcre SHA, чтобы сверить его с сохраненным отпечатком пальца. Откройте DevTools, выберите вкладку «Сеть» и убедитесь, что идет запись. Вставьте ключ API в инструмент хеширования, выберите SHA-256 и нажмите хэш. Дайджест появляется в инструменте, а на панели сети не отображаются новые запросы. Тестовый вектор доступен в документации инструмента, чтобы при необходимости перепроверить правильность хэша. Ключевым моментом является то, что ключ API никогда не покидал браузер, и теперь дайджест можно сравнивать с сохраненным значением, даже не раскрывая секрет.

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

Рабочий пример: используйте безобидный маркер и проверяйте запросы вместо вставки действующего ключа API.

Совет всем, кто вставляет секреты в инструменты, — перед вставкой убедитесь, что инструмент является локальным. Это простой шаг, который устраняет самый большой риск: оператор сервера, его сотрудники, их резервные копии и их журналы видят открытый текст. Используйте сетевую панель DevTools, следите за отсутствием запросов, а затем доверьте инструменту секрет. Хэш-калькулятор ToolAcre SHA предназначен для использования таким образом. Он ничего не сохраняет, ничего не загружает, а панель «Сеть» остается пустой.

Для разработчиков, которые уже вставили секреты в серверные инструменты, следующим шагом будет ротация этих секретов. Ключ API, отправленный на неизвестный сервер, следует считать скомпрометированным. Его следует отменить и издать новый. Пароли следует сменить. SSH ключей следует заменить. Для статических секретов, таких как ключи инфраструктуры API, это одноразовая операция. Для токенов сеанса или временных учетных данных ротация происходит автоматически по мере истечения срока действия токенов.

Чего это не касается — расширения браузера и взломанные компьютеры, от которых не может защитить ни один веб-инструмент.

Укрепление доверия к онлайн-инструментам начинается с понимания того, где происходят вычисления, и проверки этого понимания с помощью инструментов разработчика браузера. Сетевая панель — это четкий сигнал: если данные покинут браузер, они появятся там. Если ни один запрос не содержит отличительных тестовых входных данных, этот сеанс предоставляет доказательства локального пути преобразования. Это не гарантия относительно расширений, взломанного кода браузера или будущих развертываний. Сочетание этой проверки с проверкой исходного кода, если таковой имеется, обеспечивает уверенность.

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

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

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

Когда разработчик видит, что сетевая панель пуста и исходный код открыт, доверительные отношения имеют прочную основу. Инструмент делает то, что заявляет: вычисляет хэши локально, используя собственную реализацию браузера. Затем разработчик может принять обоснованное решение о том, соответствует ли инструмент его варианту использования. Для проверки ключа API подходит идеально. Для производственной аутентификации необходим HMAC. Для хранения паролей необходима функция получения ключей, такая как Argon2id. Знание этих границ — первый шаг к созданию безопасных систем.