---
draft: true
title: "Помогите мне протестировать веб-криптографию: совместный исследовательский проект"
description: "Помогите собрать данные о производительности SHA-256, SHA-384 и SHA-512 на реальных браузерах и устройствах."
abstract: "Эта статья запускает исследовательский проект, основанный на сообществе, для анализа реальной производительности криптографического хеширования (SHA-256, SHA-384, SHA-512) в современных веб-браузерах. Я создал интеллектуальный инструмент для бенчмаркинга в один клик, который собирает анонимные данные о производительности браузера, ОС и оборудования. Предоставляя свои результаты, вы можете помочь количественно оценить влияние различных движков JavaScript (V8, SpiderMonkey, JavaScriptCore), оборудования (настольные ПК против мобильных устройств) и состояний питания на эти критически важные примитивы веб-безопасности. Цель состоит в том, чтобы создать наиболее полный и реалистичный набор данных о скорости веб-криптографии на сегодняшний день, все выводы и необработанные данные которого будут опубликованы в последующем анализе."
backstory: "При реализации верификации хешей Content Security Policy для этого сайта я заметил существенную разницу в производительности между различными браузерами и устройствами. Простой хеш SHA-256, который занимал 2 мс на моём настольном ПК, требовал 15 мс на некоторых мобильных устройствах — этого достаточно, чтобы вызвать заметные задержки при загрузке страницы. Когда я искал данные о реальной производительности для понимания этих характеристик, я обнаружил только синтетические лабораторные тесты, которые не учитывали троттлинг, состояние батареи или разнообразие реальных пользовательских устройств. Я осознал, что сообществу веб-безопасности нужен комплексный краудсорсинговый набор данных, отражающий реальную производительность криптографических примитивов в продакшн-среде. Этот проект — моя попытка заполнить этот пробел, демонстрируя лучшие практики высокоточного бенчмаркинга в браузерах."
publishDate: "2025-08-11"
modifiedDate: "2025-08-12"
cover: "./images/browser-hash-benchmark-cover.svg"
coverAlt: "Футуристическая панель управления, показывающая графики производительности для логотипов различных браузеров и названий криптографических алгоритмов."
coverLicense: "https://creativecommons.org/licenses/by/4.0/"
coverCreator: "https://david-osipov.vision/ru/about/#person"
coverCopyrightHolder: "https://david-osipov.vision/ru/about/#person"
coverCopyrightNotice: "© 2025 David Osipov. Лицензировано по CC BY 4.0."
hub: "Кибербезопасность"
tier: "Исследование"
license: "https://creativecommons.org/licenses/by/4.0/"
keywords: ["бенчмарк", "производительность", "sha-256", "sha-512", "web-crypto-api", "javascript", "исследование", "краудсорсинг", "v8", "spidermonkey", "javascriptcore", "SharedArrayBuffer", "мобильный бенчмарк", "троттлинг"]
keywordsEn: ["benchmark", "performance", "sha-256", "sha-512", "web-crypto-api", "javascript", "research", "crowdsourcing", "v8", "spidermonkey", "javascriptcore", "SharedArrayBuffer", "mobile-benchmark", "throttling"]
isFeatured: true
author:
  collection: "people"
  id: "david-osipov"
---
import CryptoBenchmark from "@components/research/CryptoBenchmark.astro";

Я запускаю новый исследовательский проект, чтобы ответить на фундаментальный для веб-производительности и безопасности вопрос, и мне нужна ваша помощь. Насколько быстры современные браузеры в выполнении криптографического хеширования? Не в синтетической лаборатории, а на бесчисленных реальных устройствах, которыми пользуетесь вы и ваши пользователи каждый день.

Это исследование направлено на то, чтобы выйти за рамки простых тестов и создать «живой бенчмарк», основанный на данных от мирового технологического сообщества. Собранные нами данные прольют свет на практические вопросы, которые волнуют разработчиков, инженеров по безопасности и энтузиастов производительности.

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

Хеширование — это незаметный труженик веба. Это ключевой компонент <abbr title="Content Security Policy">Content Security Policy (CSP)</abbr>, основа для <abbr title="Subresource Integrity">Subresource Integrity (SRI)</abbr> и множества других механизмов безопасности. Но у этой безопасности есть своя цена в производительности. Моя цель — количественно оценить эту цену с максимально возможной точностью.

Это исследование призвано ответить на такие вопросы, как:
1.  **Войны браузерных движков:** Как соотносятся по производительности в чистой криптографии <dfn>V8</dfn> от Chrome, <dfn>SpiderMonkey</dfn> от Firefox и <dfn>JavaScriptCore</dfn> от Safari?
2.  **Влияние оборудования и платформы:** Насколько новый MacBook серии M быстрее Android-смартфона среднего класса, учитывая реальные ограничения, такие как троттлинг?
3.  **Вопрос о состоянии питания:** Значительно ли снижается производительность при работе от аккумулятора для таких интенсивных задач?

Собирая данные с самых разных устройств, мы сможем создать публичную, основанную на данных картину реальной производительности криптографии в вебе.

## Как вы можете внести свой вклад

Я создал простой и удобный инструмент для бенчмаркинга, чтобы участие было максимально лёгким. Всё, что нужно — это один клик.

Вот как это работает:
1.  Закройте другие ресурсоёмкие приложения и вкладки для наиболее точных результатов.
2.  Нажмите «Start Benchmark» ниже. Тест очень тщательный, и его длительность **адаптируется к вашему устройству** (примерно 30-40 секунд на мобильных, 90 секунд на десктопе).
3.  Просмотрите результаты, затем нажмите «Submit», чтобы анонимно отправить их нашему коллектору.

<CryptoBenchmark lang="ru" />

Вот и всё. Ваш вклад теперь является частью высококачественного публичного набора данных.

## Методология лабораторного уровня

Для тех, кто интересуется техническими деталями, это не просто цикл. Бенчмарк спроектирован для получения исключительно точных и воспроизводимых результатов с низким уровнем шума.

*   **Адаптация к среде выполнения:** Бенчмарк **интеллектуально адаптируется к вашему устройству**. Он определяет мобильные окружения и применяет более консервативный профиль тестирования для предотвращения троттлинга. На мобильных устройствах он даже вставляет **паузы для охлаждения** между тяжелыми задачами, чтобы результаты отражали устойчивую производительность, а не только начальный всплеск.
*   **Обязательная изолированная среда:** Бенчмарк **требует** современный браузер и среду с «изоляцией между источниками» (cross-origin isolation). Это открывает доступ к таймерам высокого разрешения и более строгой изоляции процессов.
*   **Канал данных без копирования:** Все высокочастотные данные о времени передаются из <dfn>Web Worker</dfn> в основной поток через <dfn>`SharedArrayBuffer`</dfn>. Этот «бесшумный» канал связи устраняет помехи в измерениях.
*   **Гарантии целостности данных:** Тест автоматически прерывается, если вы переключаете вкладку, предотвращая сбор невалидных данных из замедленного процесса.
*   **Робастная статистика:** Итоговые цифры — это не простые средние значения. Мы используем робастные статистические оценки, такие как **<dfn>медиана средних (Median-of-Means)</dfn>** и **<dfn>Bootstrap доверительные интервалы</dfn>**, чтобы предоставить более точную картину производительности, устойчивую к системным шумам. Движок также интеллектуально перезапускает нестабильные тесты для улучшения качества данных.

Этот подход минимизирует распространенные ошибки при бенчмаркинге и нацелен на получение истинной картины пропускной способности хеширования в браузере.

## Какие данные собираются?

Процесс спроектирован так, чтобы быть прозрачным и анонимным. Скрипт собирает только неидентифицируемые данные о производительности и оборудовании:
*   **Метрики производительности:** Операций в секунду, медиана средних, Bootstrap 95% доверительные интервалы и другие метрики качества.
*   **Браузер и ОС:** <dfn>Строка User-Agent</dfn> (например, Chrome 127, Windows 11).
*   **Характеристики оборудования:** Количество ядер ЦП (`navigator.hardwareConcurrency`), объём памяти устройства и <dfn>высокоэнтропийные Client Hints</dfn>, если они доступны (например, модель устройства, «iPhone 15 Pro»).
*   **Состояние питания:** Уровень заряда батареи и подключено ли устройство к зарядному устройству.
*   **Анонимные метаданные запуска:** Собираются уникальный, случайно сгенерированный идентификатор для вашего браузера (`anonId`) и для каждого конкретного запуска теста (`runId`). Также включается версия скрипта.

Сборщик данных спроектирован с приоритетом на конфиденциальность. **Мы не храним IP-адреса и не используем файлы cookie.** Отладочная информация с высокой энтропией удаляется из всех публичных отправок. Цель состоит исключительно в анализе тенденций программного и аппаратного обеспечения.

Полный исходный код, методология и политика безопасности доступны для публичного ознакомления в официальном **<a href="https://github.com/DavidOsipov/web-crypto-benchmark" rel="noopener">репозитории на GitHub</a>**.

## Текущие результаты

Это живой проект, и вы можете следить за нашим прогрессом в достижении исследовательских целей.

import RunsCount from "@components/research/RunsCount.astro";

<RunsCount lang="ru" />

Полный анализ и загружаемый набор необработанных данных будут опубликованы, как только мы достигнем нашей первоначальной цели — примерно 200 результатов для каждого основного браузера (Chrome, Firefox, Safari) на десктопных и мобильных платформах. Спасибо, что помогаете нам этого достичь!

## Конечная цель: публичный анализ

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

Кроме того, я сделаю полный анонимизированный набор необработанных данных доступным для скачивания, чтобы другие могли проводить собственные анализы и исследования.

Спасибо за участие в этом совместном исследовательском проекте. Давайте найдем ответы вместе!