Инструменты разработчика · Генератор UUID
Генерация UUID без сервера: почему панель «Сеть» остается пустой
· Почему это важно
uuid криптография API-интерфейс браузера
Онлайн-генератор UUID, который обращается к своему серверу, отправляет вам метаданные, которыми вам никогда не нужно было делиться. В этом посте объясняется, почему локальная генерация сама по себе является завершенной и как проверить, что инструмент действительно является локальным.
Зачем генератору идентификаторов вообще нужен сервер — и почему для случайных UUID он не нужен
Зачем генератору UUID сервер, если генерация UUID полностью локальна? UUID математически независим от любого состояния, внешнего по отношению к генератору. Версия 4 UUID представляет собой 122 bits криптографически случайных данных с 4 bits для версии и 2 bits для варианта. Клиент имеет доступ к криптографически безопасному случайному источнику Web Crypto в браузерах, локальным библиотекам шифрования на серверах, поэтому он может генерировать весь UUID локально, не обращаясь к какой-либо внешней службе. Тем не менее, многие онлайн-генераторы UUID выполняют запросы HTTP, отправляя данные, которые никогда не должны покидать клиент. Это ненужно и потенциально вредно для конфиденциальности.
Что может сохранить размещенный генератор — журналы запросов, адреса и временные метки, описываемые как возможности, а не как обвинения.
Генератор, отправляющий ваш запрос на сервер, может сохранять журналы запросов, временные метки и IP-адреса, связанные с вашими шаблонами генерации UUID. Даже если он не хранит сами UUID, он знает, когда и откуда вы сгенерировали идентификаторы. Для разработчика, работающего над конфиденциальными проектами, создание идентификатора может привести к утечке информации о сроках и активности разработки. В целях тестирования UUID, который правильно отформатирован, но все же отправлен на сервер, возможно, скомпрометирован: сервер теперь знает, какие операции или системы вы тестируете. Эти метаданные представляют ценность для агрегаторов и могут использоваться для анализа или профилирования.
Почему сами идентификаторы чувствительны: UUID, который становится ключом записи, представляет собой небольшую часть структуры вашей системы.
Ответом на ненужное участие сервера является то, что локальная генерация проще, быстрее и более конфиденциальна, чем генерация на базе сервера. В вашем браузере уже встроена функция Web Crypto или у вашего сервера есть доступ к источнику энтропии ОС. Результат можно скопировать, загрузить или использовать немедленно, не дожидаясь обратного прохождения по сети. UUID никогда не перемещается по сети. Генератор никогда не узнает, что вы его запустили. Локальная генерация является очевидным вариантом по умолчанию для UUID; Участие сервера — это ненужный посредник, который создает риск, не принося никакой пользы. У клиента есть все необходимое для создания действительного RFC 9562 UUID.
Проверка локальности инструмента — открытие сетевой панели браузера, генерация и отслеживание запросов.
Размещенный генератор, который обращается к своему серверу, может сохранять журналы по различным заявленным причинам: аналитика для понимания моделей использования, предотвращение злоупотреблений для обнаружения атак, отладка для устранения проблем или по причинам, не указанным пользователю: продажа данных маркетинговым агрегаторам, поведенческое профилирование для создания досье пользователей, интеграция с другими службами или отслеживание между службами. Сам запрос содержит метаданные: ваш IP-адрес показывает местоположение и происхождение, заголовок User-Agent идентифицирует версию вашего браузера, а иногда и ОС, временные метки показывают, когда вы получили доступ к инструменту, а файлы cookie или идентификаторы отслеживания могут коррелировать между посещениями. Если вы генерируете UUID, этот запрос регистрируется. Если вы позже используете этот UUID в своей системе, сопоставление журнала с вашей системой может привести к утечке информации о том, что вы создаете.
Что добавляет строгая Политика безопасности контента — отсутствие сторонних скриптов, шрифтов или тегов означает отсутствие скрытого канала для третьих лиц.
Генератор ToolAcre использует строгую политику безопасности контента, которая предотвращает внешние запросы, сторонние скрипты и удаленные шрифты. Вы можете убедиться в этом в заголовках ответов браузера или прочитав метатег CSP страницы. Никакая сторонняя аналитика, рекламные теги, пиксели отслеживания или внешние ресурсы не загружаются. Код генерации UUID загружается из того же источника, что и страница, поэтому он находится в той же области аудита, что и остальная часть инструмента. Реализация использует только API-интерфейсы Web Crypto и не выполняет никаких сетевых вызовов. Эта политика поддается проверке, а не просто утверждается.
Проработанный пример — пошаговая проверка генератора ToolAcre в DevTools, и что доказывает и что не доказывает пустая панель
Проверка проста и занимает менее минуты. Откройте инструменты разработчика браузера, переключитесь на панель «Сеть», очистите все существующие запросы, сгенерируйте UUID и наблюдайте за панелью. Никакие новые запросы не должны появляться, за исключением потенциально статических ресурсов, если страница изначально не была полностью загружена. Сгенерированный UUID отображается в области вывода на странице, а не в ответе сети. Если вы видите запросы к внешним доменам, рекламным сетям или сервисам аналитики, генератор не локальный. Если вы вообще не видите запросов, генерация произошла в JavaScript и выполнялась локально в вашем браузере.
Что здесь не распространяется — телеметрия вашего собственного приложения, которая находится вне контроля любого инструмента.
Проработанный пример демонстрирует процесс проверки в современном браузере. Нажмите F12 или щелкните правой кнопкой мыши и выберите «Проверить», чтобы открыть DevTools. Откройте вкладку «Сеть». Перезагрузите страницу генератора ToolAcre и дождитесь ее завершения; вы увидите запросы к самой странице HTML, таблицы стилей CSS, код JavaScript и любые встроенные изображения. Как только страница станет стабильной, найдите кнопку «Очистить» на панели «Сеть» и нажмите ее, чтобы очистить список запросов. Теперь создайте UUID, нажав кнопку или нажав Enter. Если реализация локальная, новые запросы в панели не появляются. Если это серверная часть, вы увидите запрос к конечной точке, например /api/generate-uuid или https://uuid.example.com/v1/random..
Вывод: локальность поддается проверке — генератор ToolAcre полностью работает в браузере, ничего не сохраняет между посещениями и его можно проверить на панели сети.
Инструмент ToolAcre создан для того, чтобы пройти этот тест благодаря архитектурному проектированию. Web Crypto API предоставляет crypto.randomUUID именно для этого случая использования, и если он недоступен в старых браузерах или небезопасных контекстах, crypto.getRandomValues предоставляет необработанные случайные байты, которые инструмент может отформатировать в UUID. Реализация достаточно коротка для аудита: генератор вызывает один из этих методов Web Crypto, форматирует результат как строку UUID и отображает его. Ни один сервер не участвует ни в одном этапе. Эта архитектура также означает, что инструмент работает в автономном режиме; после загрузки страницы вы можете отключить сеть и продолжить создание UUID. Локальная криптография браузера по-прежнему отлично работает без доступа к сети.