Справочник / Доказательства
Как устроены доказательства
Объяснение принципов работы цепочки хешей, подписей, контрольных точек и свидетелей с указанием точных формул, используемых верификатором.
TgWitness сохраняет данные, зафиксированные учетной записью-сборщиком, объединяет эти данные в подписанный журнал и позволяет другому лицу проверить экспортированные данные с помощью доверенного ключа и ранее сохраненной контрольной точки.
На местном веб-сайте документации представлены
интерактивные примеры по адресу /docs/concepts/, а также инструмент для анализа решений на контрольных точках по адресу
/docs/witness/. Все примеры сообщений,
количества и задержки являются вымышленными. Хэши в тестовой среде цепочки рассчитываются с помощью
алгоритма SHA-256 в браузере. Никакие данные не отправляются в Telegram.
Сообщение изменяется; наблюдения накапливаются#
Схема в текстовом формате
- Telegram → Collector: Новое сообщение: Встречаемся в 10:00
- Collector → Подписанный журнал: Добавить сообщение.new
- Telegram → Collector: Изменение: Встреча в 11:00
- Collector → Подписанный журнал: Добавить сообщение.отредактировано
- Telegram → Collector: Уведомление об удалении
- Collector → Подписанный журнал: Добавить сообщение.deleted
- Примечание относительно Подписанный журнал: Сохраняются данные об оригинале, редактировании и удалении
В данной упрощённой последовательности предполагается, что Telegram доставил каждое обновление и что выбранный аккаунт мог его увидеть. Операционные события также фиксируются в журнале. Уведомление об удалении не содержит информации об авторе удаления или точном времени удаления. Повторные доставки считаются отдельными наблюдениями; в журнале не происходит подавления дубликатов.
Что включает в себя хеш#
Прочитайте формулу «изнутри наружу»: C преобразует девять полей в точные байты; SHA-256 вычисляет их дайджест; hex — это формат хранения данного дайджеста. Предыдущий хэш уже находится внутри события. unhex преобразует сохраненный хэш обратно в 32 байта, которые подписывает алгоритм Ed25519.
Пусть C(ei) — это канонический JSON-файл в кодировке UTF-8, содержащий девять полей событий. Первая
запись previous_hash состоит из 64 нулей. Каждая последующая запись содержит шестнадцатеричный хеш
предыдущей записи:
Подпись охватывает 32 исходных байта дайджеста. В хеш входят ровно следующие поля: seq, observed_at, source_at, kind, chat_id, message_id, actor_id, payload и previous_hash. Ключи объектов сортируются; пробельные разделители и ASCII-экранирование не используются; NaN и бесконечность отклоняются. См. точные правила кодирования.
Схема в текстовом формате
- 64 нулевых символа → Запись 1 / хеш h1
- Запись 1 / хеш h1 → Запись 2 содержит h1 / хэш h2
- Запись 2 содержит h1 / хэш h2 → Запись 3 содержит теги h2 и h3
- Запись 3 содержит теги h2 и h3 → Контрольная точка с подписью: счет 3, заголовок h3 (сохранить в другом месте)
| Перейти к предоставленному журналу | Что позволяет его распознать |
|---|---|
| Измените запись № 2, сохранив при этом её хэш | Пересчитанный хеш события отличается; его подпись больше не охватывает измененное событие |
| Восстановление измененной записи и всех последующих хэшей | Исходные подписи не проходят проверку; сохраненная контрольная точка на затронутой границе также не совпадает |
| Удалите конец фразы, но сохраните оставшийся префикс без изменений | Ранее сохраненная контрольная точка, расположенная за пределами указанного префикса, указывает на то, что экспортный файл имеет недостаточный объем |
| Повторная подпись замещающего журнала с использованием другого ключа | Отпечаток ключа, прошедшего отдельную проверку на доверие, отклоняет попытку подмены идентификационных данных |
Попробуйте применить эту логику к записи № 2: замените Meet at 11:00 на Meet at 12:00 в
сохраненном событии. Пересчитанный хеш больше не совпадает. Пересчет последующей цепочки
позволяет восстановить её звенья, но не может заставить исходные подписи покрывать новые дайджесты.
Напротив, зафиксированное редактирование в Telegram становится новой записью в журнале.
Наличие одних лишь хеш-ссылок не препятствует пересчёту цепочки замен. Доверие основывается на проверке подписей с помощью независимого доверенного ключа и сравнении с эталонными данными, хранящимися за пределами коллектора.
Что добавляет предыдущий контрольный пункт#
Контрольная точка остаётся неизменной, в то время как журнал пополняется. Если в контрольной точке указано: «3 записи, заголовок h3», экспорт из четырёх записей может пройти проверку благодаря совпадению с h3 на третьей позиции. Его новейший заголовок — h4, который, как и ожидается, будет отличаться. Экспорт, содержащий только две записи, не пройдёт проверку.
Схема статических контрольных точек
После проверки подписи контрольной точки необходимо:
Экспорт данных может выходить за пределы контрольной точки. Он должен совпадать на сохраненной границе. Настоящий верификатор также проверяет последовательность каждого события, предыдущую ссылку, хеш и подпись. Сравнение только конечной сохраненной заголовки приведёт к пропуску измененной внутренней записи, хеш которой не был обновлён.
Где находится «Witness»#
Схема в текстовом формате
- Сборщик / сессия учетной записи / ключ A → Конечная точка контрольной точки, доступная только для чтения
- Witness / закреплённый ключ сборщика / собственный ключ B → Отдельный подписанный журнал свидетельств
- Witness / закреплённый ключ сборщика / собственный ключ B → Конечная точка контрольной точки, доступная только для чтения (Запросить проверку)
- Конечная точка контрольной точки, доступная только для чтения → Witness / закреплённый ключ сборщика / собственный ключ B (Подписанный ответ)
- Witness / закреплённый ключ сборщика / собственный ключ B → Канал с подписанными сообщениями TGW1 (API бота / собственный токен)
Свидетель фиксирует откат записей, наличие другого заголовка при том же счётчике, смену ключей, недопустимые ответы и отсутствующие ответы. Увеличение значения счётчика само по себе не доказывает, что все более ранние записи остались неизменными; сравните экспорт с сохраненными контрольными точками. Размещение свидетеля на другом хосте позволяет избежать последствий сбоев на хосте сборщика данных; наличие отдельного оператора обеспечивает дополнительную независимость.
Свидетель подтверждает состояние журнала, сообщаемое сборщиком данных. Он не осуществляет независимого мониторинга всех сообщений Telegram. См. инструкцию по настройке свидетеля.
Проверка доставки с учётом известных действий#
Используйте контрольную группу, отдельные учетные записи для сбора данных и новый маркер. Направляйте, редактируйте и удаляйте сообщения целенаправленно, проверяя запись на каждом этапе. Определите ожидаемые действия и предельный срок перед проверкой результатов.
Учитываются только ожидаемые действия; дубликаты подтверждений не увеличивают числитель. Знаменатель должен быть не равен нулю. Отсутствующее подтверждение не имеет измеренной задержки. Укажите погрешность времени; используйте собственное контролируемое время действия удаления, поскольку Telegram не предоставляет точное время удаления. Результат, например, 5/6 (83,3 %), описывает тестовые действия, а не полноту всего трафика Telegram.
Выберите рабочий процесс#
Полный пример расследования прослеживает инцидент в канале, группе, боте и личном чате:
- Включите режим «Расследование всего аккаунта» и проведите инвентаризацию всех доступных чатов.
- Получайте моментальные снимки журнала, полную историю каждого чата и сохраненные вложения.
- Отражайте оперативные изменения и любые целенаправленные действия с панелями вместе с соответствующими подтверждениями.
- Отслеживайте цифровые идентификаторы отправителей, связи между ответами, повторяющиеся адресаты и хэши файлов посредством ссылок на записи и профилей пользователей.
- Восстановление хронологии переписки между чатами с указанием временных меток и явных пробелов.
- Сравнивайте рабочие пространства других учетных записей, сохраняя при этом их происхождение и ключи отдельно.
- Соберите и проверьте подписанные журналы, профили и экспортированные данные истории вместе с примечаниями по делу.
Руководство «/docs/cases/» на сайте содержит интерактивную карту дел и варианты
решений для споров с ботами, удалённых сообщений и случаев смены имён участниками. Заметки по делам
и межрабочих пространств анализ осуществляются внешними средствами; приложение не генерирует автоматически
глобальный график расследования или объединенный архив дел.
Завершённая валидация и оставшиеся задачи · Экспорт и проверка · Начните с одной учетной записи