Режимы, сценарии и уровни доказательства

Один журнал. Четыре режима сбора. Восемь уровней проверки.

TgWitness записывает то, что видит подключённый аккаунт. Третья сторона проверяет целостность записи по заранее доверенному ключу.

Обзор за 3–5 минут · вымышленные примеры · текущая реализация

  1. Telegram

    Обновления, видимые для учетной записи

  2. Коллектор

    Связанные записи, каждая из которых подписана

  3. Верификатор

    Доверенный ключ + сохраненная граница

h₁ → h₂ → h₃ · Ed25519Целостность проверяется. Происхождение из Telegram и достоверность сообщения остаются отдельными вопросами.

Выберите режим сбора

Три области наблюдения и пресет расследования. Исключения и выбранные типы источников действуют во всех соответствующих режимах.

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

Чего не делает Не обнаруживает другие чаты и не загружает прежнюю историю автоматически.

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

Чего не делает Не применяет меняющиеся условия папки «без звука» и «прочитано».

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

Чего не делает Не вступает в чаты сам и не обходит ограничения доступа.

Что записывает
Все типы источников, собственные действия, профили источников и последние 200 видимых сообщений каждого нового источника.
Новые чаты
Для нового чата или бота сохраняются профиль и снимок истории.
Когда выбирать
Вступление в команду или диалог с ботом из панели. Просмотрите настройки и сохраните пресет.

Чего не делает Не делает снимки всех уже известных чатов и не видит callback-нажатия в другом клиенте.

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

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

Подробности

Что фиксируется

В журнал попадают доставленные или явно запрошенные наблюдения. Неизвестный участник действия остаётся неизвестным.

Переключатели записи · локальный пример

В панели переключатели действуют на весь workspace. Отключение сохраняет прежние записи; повторное включение не восстанавливает пропущенные события.

Матрица событий: сохранённое и неизвестное
КатегорияЧто сохраняетсяЧто остаётся неизвестным
СообщениеТекст, идентификаторы, метаданные отправителя, контекст ответа и исходный конверт обновления.Отсутствует подпись Telegram, поддающаяся проверке третьими сторонами.
ПравкаВсе наблюдённые версии без подмены предыдущих.Промежуточные правки могут быть пропущены; редактор не обязательно совпадает с отправителем.
УдалениеУведомление плюс ранее сохраненный текст, если таковой имеется.Удаливший и точное время действия не приходят.
Unscoped deletionУведомление уровня аккаунта; неизвестный чат отмечен явно.Чат не угадывается. Если возможно, используется связь с ранее сохранёнными ID в области аккаунта.
РеакцияПолученные счётчики и доступные недавние участники реакций.Не все участники видны; доступный список требует отдельных запросов.
ЧленствоДоставленные служебные сообщения и обновления участников.Роль и тип чата ограничивают видимость; отсутствие сообщений не означает отсутствия.
ВложениеДескриптор исходной версии, сохранённые байты, SHA-256 и результаты попыток загрузки.Исчезнувший файл может оказаться недоступным; более новая версия не заменяет его.
Снимок историиСнимок сообщений, видимых в момент запроса, с отметкой о происхождении из истории.Предыдущие правки и удалённый контент не восстанавливаются.
Собственные действияИсходящие сообщения и правки; button_press при совпадении с сохранённой клавиатурой ответа.Callback-нажатия в другом клиенте Telegram не видны.
Кнопки ботаМетаданные callback, URL, web app и запросов вместе с сообщением.URL, запрос номера и геолокации сохраняются как текст, не открываются и не выполняются автоматически.

Лимиты вложений по умолчанию

Фотографии
20 MiB
Видео
100 MiB
Файлы
50 MiB
Анимации
20 MiB
Видеосообщения
50 MiB
Голосовые
20 MiB
Аудио
50 MiB
Стикеры
5 MiB

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

Подробности

Подключение и гибкость

На каждый аккаунт — свой workspace, журнал, ключ подписи, маршрут и очередь.

Direct · SOCKS5 · HTTP CONNECT · MTProxyMTProxy — экспериментальный маршрут; доступны встроенные публичные списки MTProxy. При ошибке прокси отката на прямое соединение нет.

Два workspace на одной машине — не два независимых свидетеля.

Чего не делает Импорт не обходит авторизацию Telegram, 2FA и ограничения форматов сессий. Аккаунты продолжают работать в общем процессе приложения.

Форматы учётных записей

Активные действия из панели

Написать или ответить, нажать кнопку бота, сохранить превью ссылки, затем явно вступить в чат или открыть бота со start-параметром.

interaction.previewinteraction.requestedinteraction.result

Превью, запрос и результат сохраняются как подписанные записи. Перед нажатием сервер повторно получает сообщение и отказывает, если клавиатура изменилась. Текст callback-ответа и URL остаются в журнале.

Чего не делает Не запускает web apps, платежи, передачу номера или геолокации и инлайн-запросы. Показ URL не открывает ссылку.

Подробности

Восстановление и непрерывность

Разрывы показываются, а не скрываются.

Продолжение с сохранённой позиции

После рестарта коллектор запрашивает у Telegram пропущенные обновления. Срок хранения ограничен: устаревшая разница может оставить разрыв.

Повторная проверка сообщений

По умолчанию: приоритетные источники — каждые 15 минут, остальные — каждые 6 часов. Результаты: message.recovered и message.missing_on_recheck.

Отчёт coverage.json

В подписанном экспорте — периоды наблюдения, разрывы с причиной и ненаблюдённые ID. Отсутствие при recheck не равно уведомлению об удалении.

Чего не делает Поздний снимок истории не отменяет простой и не восстанавливает все исчезнувшие версии. Сохранённая позиция не означает приём журнала без потерь.

Подробности

Семь уровней. Разные вопросы.

Каждый механизм отвечает на ограниченный вопрос. Внешние сервисы настраиваются отдельно; доверенные ключи и контрольные точки храните вне коллектора.

  1. Запись

    SHA-256-цепочка и Ed25519 на каждое событие; первый previous_hash состоит из 64 нулей.

    Что проверяет третья сторона Порядок записей и подписи под заранее доверенным ключом коллектора.

    Чего не делает Не доказывает происхождение от Telegram и полноту доставки.

    Команда проверки
    python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256
  2. Контейнер

    manifest.json перечисляет хеши файлов; manifest.sig подписывает его. media.saved связывает байты вложения с событием.

    Что проверяет третья сторона Файлы согласуются с подписанным манифестом и записями сохранения вложений.

    Чего не делает Не подписывает отдельно скачанные CSV, HTML или скриншоты.

    Команда проверки
    python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256
  3. Граница

    Checkpoint при старте, по умолчанию каждые 5 минут и при штатной остановке. Сохраните копию вне коллектора.

    Что проверяет третья сторона Поздний экспорт совпадает с ранее сохранённой длиной и головным хешем; откат можно обнаружить.

    Чего не делает Не обнаруживает совместную замену журнала и всех сохранённых контрольных точек.

    Команда проверки
    python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 --checkpoint checkpoint.json
  4. Время

    Evidence mode отправляет SHA-256 checkpoint в RFC 3161 TSA (FreeTSA, DigiCert) и календари OpenTimestamps.

    Что проверяет третья сторона Проверенный ответ TSA датирует эти байты; подтверждённое доказательство OpenTimestamps связывает их с Bitcoin.

    Чего не делает Не считает подготовленный запрос или ожидающую подтверждения квитанцию календаря подтверждённой меткой времени.

    Команда проверки
    python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 --tsa-ca trusted-ca.pem
    ots upgrade checkpoint.ots
    ots verify checkpoint.ots
  5. Свидетель

    Отдельный хост, один read-only endpoint, случайный challenge, собственные ключ и журнал, посты TGW1 в канал.

    Что проверяет третья сторона Ранее принятые головные хеши; статусы ok, key_changed, rollback, fork, invalid и no_response.

    Чего не делает Не превращает два workspace на одном хосте коллектора в независимых свидетелей.

    Команда проверки
    python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 --witness witness.zip --witness-fingerprint WITNESS_SHA256 --channel result.json
  6. Реплика

    Копия в S3-совместимом хранилище с AES-256-GCM; Object Lock, если его поддерживает bucket.

    Что проверяет третья сторона Файлы появляются в каталоге восстановления только после проверки журнала, checkpoint и сохранённых вложений.

    Чего не делает Не восстанавливает без экспортированного ключа и не подтверждает срок хранения без проверки ответа хранилища.

    Команда проверки
    python -m tgwitness.replica restore --key-file KEY.json --out EMPTY_DIR
  7. Происхождение

    Подписанный run receipt: хеши исходников, версии зависимостей и контекст процесса. Self-reported.

    Что проверяет третья сторона То, что сам подписывающий коллектор сообщил о своём запуске.

    Чего не делает Не даёт независимой аттестации процесса и не исключает компрометацию до записи.

    Команда проверки
    python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256

Локальный эксперимент с SHA-256

Попробуйте изменить запись №2

Следующая запись хранит прежнюю ссылку. При изменении текста пересчитывается хеш записи №2.

Запись 1h1Начинается с 64 нулей
Запись 2h2Содержит сохранённый h1
Запись 3h3Содержит сохранённый h2

Статический пример: h2 включает «Meet at 11:00». Изменение текста меняет h2; запись №3 по-прежнему ссылается на прежний h2.

Посмотреть полные хеши
Хеш сохраненной записи № 2
SHA-256(e₂)
Пересчитанный хеш записи № 2
SHA-256(e₂)
Здесь вычисляются хеши, а не подписи. Настоящий верификатор проверяет каждую подпись и связь по доверенному ключу.
Подробности

Сценарии применения

Вымышленные ситуации. Начинайте сбор до интересующего события; сохраняйте границы и разрывы вместе с содержимым.

Канал изменяет платежные реквизиты

Режим → события
Выбранные чаты → сообщения, правки, удаления.
Что получаем
Наблюдаемые версии сообщений и вложения по хешу.
Проверка
Подписанный ZIP + сохранённый checkpoint + проверенный ответ TSA.

Чего не делает Он не восстанавливает оригинал, который никогда не был зафиксирован.

Сообщения исчезают после инцидента

Режим → события
Папка или весь аккаунт → все категории событий.
Что получаем
Сохранённые оригиналы, уведомления об удалении и coverage с разрывами.
Проверка
Подписанный ZIP + независимый журнал свидетеля.

Чего не делает Он не позволяет идентифицировать лицо, удалившее сообщение, на основании уведомления, в котором не указан субъект действия.

Расследование бота-магазина

Режим → события
Investigation mode → кнопки, превью ссылок и явный запуск бота.
Что получаем
Подписанные interaction-записи, callback-квитанции и сохранённые профили.
Проверка
Подписанный ZIP; досье проверяется по этому ZIP.

Чего не делает Он не открывает веб-приложение бота, не осуществляет платежи и не регистрирует обратные вызовы других клиентов.

Участник меняет имена в разных чатах

Режим → события
Любой режим → наблюдённые метаданные отправителя и профиля.
Что получаем
История имён и username по численному ID, ссылки «также в…» и извлечённые зацепки.
Проверка
Dossier JSON с проверкой против подписанного ZIP.

Чего не делает Он не превращает кошелек, строку, похожую на номер телефона, или имя пользователя в подтверждённую личность.

Долгое наблюдение с внешней копией

Режим → события
Любой режим → Evidence mode и S3-реплика с поддержкой Object Lock.
Что получаем
Зашифрованная копия, сохраненные контрольные точки и ответы с временными метками.
Проверка
Восстановите данные с помощью экспортированного ключа, а затем проверите их без использования исходного сервера.

Чего не делает Он не заменяет независимого свидетеля или отдельно хранящийся ключ дешифрования.

Подробности

Экспорт и передача

Передайте подписанный оригинал, заранее сохранённый отпечаток ключа, подходящий checkpoint и результат проверки.

python -m tgwitness.verify evidence.zip --fingerprint TRUSTED_SHA256 --checkpoint checkpoint.json

Верификатор берите из доверенной копии, а не из проверяемого архива.

Чего не делает Отдельные CSV и HTML не являются подписанными контейнерами. Пароль защищает передачу, но не подтверждает подлинность. Экспорты разных аккаунтов не объединяют журналы.

Подробности

Честное сравнение подходов

Базовые артефакты без добавленных подписей, меток времени и свидетелей. Возможности скриптов и логгеров зависят от реализации; «частично» означает только наблюдённый или видимый материал.

ПодходИзменения / удаленияПодпись записиВнешняя метка времениНезависимый свидетельПокрытие / разрывыПроверка без автора
Экспорт из Telegram DesktopЧастичноНетНетНетНетНет
Telethon-скрипт выгрузкиЧастичноНетНетНетНетНет
Логгер удалений: текстовый журналЧастичноНетНетНетНетНет
Скриншоты / веб-фиксацияЧастичноНетНетНетНетНет
TgWitness с настроенными дополнениямиЧастичноДаДаДаЧастичноДа

Чего не делает Не оценивает каждый скрипт или логгер. Метки времени и свидетель требуют отдельных сервисов и доверенных ключей; они не устанавливают истинность источника.

Подробности

Границы и честные оговорки

Проверка полезна, когда ясно, что именно она проверяет.

Чего не делает Ни один режим или уровень не устанавливает допустимость в суде, доставку каждого обновления Telegram или личность реального человека.