Что происходит с вашими словами и файлами после нажатия кнопки «Зашифровать и отправить» и кто может их прочитать.
Шаг за шагом
- Ваш браузер создаёт новый ключ. На вашем устройстве создаётся случайный ключ — только для этого материала.
- Этим ключом шифруется всё. Ваш текст, ваш выбор относительно публикации, ваши контактные данные, если вы их указали, а также каждый файл и его имя шифруются в вашем браузере, прежде чем покинут его.
- Ключ шифруется для редакции. Затем сам ключ шифруется открытым ключом редакции. Открытым ключом можно только зашифровать. Для расшифровки нужен соответствующий закрытый ключ, который есть только у редакции.
- Наш сервер хранит то, что не может прочитать. Он проверяет, что форму отправил человек, а не спам-бот, затем сохраняет зашифрованный текст в своей базе данных, а зашифрованные файлы — в закрытом хранилище, у которого нет публичного адреса. У сервера нет ключа, которым их можно открыть.
- Вам выдаётся код получения (хранить его не обязательно). Сервер создаёт случайный код и показывает его вам один раз. Он хранит только отпечаток кода: этого достаточно, чтобы код распознать, но не чтобы показать его снова. Хранить код не обязательно: с его помощью можно позже дополнить тот же материал. Отправленный материал нельзя отозвать или изменить.
Кто может это прочитать
Только редакция этого сайта, у которой есть закрытый ключ для открытия присланных материалов. Этого ключа никогда нет на нашем сервере: редактор загружает его в собственный браузер только на время чтения материалов, и ключ стирается из памяти, когда редактор блокирует или закрывает страницу.
Больше никто не может прочитать то, что вы присылаете: ни наш хостинг-провайдер, ни тот, кто отслеживает ваше интернет-соединение, ни тот, кто взломает наш сервер или его базу данных.
Что видит наш сервер
Шифрование скрывает то, что вы написали, но не сам факт отправки. Сервер видит:
- когда поступили ваш материал и всё, что вы добавили позже;
- какой тип вы выбрали: ваш опыт, дело или материалы;
- сколько файлов вы отправили, а также размер каждого файла и зашифрованного текста, по которому можно примерно судить об их объёме;
- отпечаток вашего кода получения.
Он не хранит ваш IP-адрес, а журналирование запросов отключено.
Что здесь означает «анонимно»
- Вам не нужна учётная запись, и вы не обязаны называть своё имя.
- Единственное поле для контактов необязательно, и оно шифруется вместе со всем остальным.
- Мы не храним ваш IP-адрес. Однако наш хостинг-провайдер, который также выполняет антиспам-проверку, видит его при подключении, а наш сервер на мгновение использует его, чтобы ограничить частоту отправки с одного подключения.
Перед любой публикацией
- Ничто из присланного не публикуется автоматически. Сначала редакция читает и проверяет материал.
- Ваше свидетельство публикуется, только если вы это разрешили, и никогда не раскрывает ваше имя полнее, чем вы выбрали. У опубликованного свидетельства указан месяц его получения.
- Сведения, позволяющие установить личность переживших насилие, членов их семей и анонимных источников, перед публикацией удаляются из свидетельств и зачерняются в документах. То, что документ сообщает о насилии или сокрытии, не зачерняется: именно для этого и существует архив.
- Каждый публикуемый файл очищается от скрытых данных: никаких сведений об авторе, устройстве, местоположении, программах или истории правок. Фотографии пересохраняются заново из пикселей. PDF-файлы пересобираются из изображения каждой страницы, поэтому скрытый текст и прежние версии сохраниться не могут.
- Внутренние заметки редакции, например об источниках и контактных данных, никогда не публикуются.
Технические подробности
- Криптографические операции выполняются в вашем браузере с помощью libsodium.
- Каждый материал получает случайный 256-битный ключ. Из него с помощью crypto_kdf (BLAKE2b) выводятся отдельные подключи для текста и для файлов, поэтому у них никогда нет общего ключа.
- Текст: XChaCha20-Poly1305 (IETF AEAD) со случайным 192-битным nonce. Зашифрованное сообщение содержит поля формы, выбор согласия, необязательный контакт и список файлов (имена, типы, размеры).
- Файлы: crypto_secretstream_xchacha20poly1305, аутентифицированными блоками по 64 КиБ; финальный тег позволяет обнаружить усечение.
- Обёртывание ключа: ключ материала запечатывается для каждого открытого ключа редактора с помощью crypto_box_seal (X25519 с одноразовой парой ключей, XSalsa20-Poly1305). Открытый ключ редакции встроен в эту страницу.
- Всё, что добавляется позже по коду получения, шифруется новым ключом тем же способом.
- Код получения: 26 символов (130 случайных бит), создаётся сервером; хранится только его хеш SHA-256.
- Хранение: база данных для зашифрованного текста и закрытое файловое хранилище для зашифрованных файлов; и там и там хранится только шифротекст. Ограничение частоты запросов привязано к IP-адресу подключения внутри ограничителя хостинг-провайдера и не сохраняется; токен антиспам-проверки проверяется без передачи вашего IP-адреса.
- Целостность скриптов: каждый файл скрипта, загружаемый формой, закреплён хешем SHA-384 в карте импорта (import map), поэтому браузеры, поддерживающие проверку целостности в картах импорта, отвергают изменённые файлы. Политика безопасности контента (Content Security Policy) разрешает скрипты только с этого сайта и от антиспам-проверки. Это защищает от подмены файлов скриптов, но не от того, кто захватит сайт и изменит саму страницу, поэтому хеши опубликованы: хеши скриптов формы.