Локальный интерфейс проверки Credentio Local Checker

credentio-local-checker

Опубликовано: 17 августа 2026 г. Обновлено: 17 августа 2026 г.

Теги

c2pacontent-credentialsprivacylocal-tool

Стек

Node.jsC++CredentioC2PABazel

GitHub: https://github.com/vbel254/credentio-local-checker

Небольшой локальный веб-интерфейс с упором на приватность для проверки C2PA Content Credentials с помощью открытой C++-библиотеки Google Credentio.

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

Важно: это независимый экспериментальный проект. Он не является официальным продуктом Google или C2PA и не поддерживается этими организациями.

Скриншоты

Локальный интерфейс

Интерфейс Credentio Local Checker

Встроенные сценарии проверки

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

Результат успешной проверки Content Credentials для good.jpg
Валидный JPEG
Результат с несовпадением хеша содержимого для bad.jpg
Изменённый JPEG
Результат без Content Credentials для plain.jpg
Неподписанный JPEG
Результат успешной проверки Content Credentials для good.mp4
Валидный MP4

Что умеет приложение

  • Проверяет Content Credentials в поддерживаемых изображениях, видео, аудиофайлах и документах.
  • Сообщает о целостности манифеста, доверии к сертификату и ошибках проверки C2PA.
  • Использует зафиксированные версии Credentio, LibCppBor, списков доверия C2PA и тестовых файлов.
  • Проверяет контрольные суммы SHA-256 загруженных списков доверия и примеров файлов.
  • Потоково записывает загруженный файл во временную папку с ограниченными правами доступа и удаляет его сразу после проверки.
  • Привязывает веб-сервер к 127.0.0.1, поэтому он недоступен другим устройствам в сети.
  • Включает валидный, изменённый, неподписанный и видеофайл для быстрой локальной демонстрации.

Чего приложение не делает

  • Оно не определяет сгенерированные ИИ материалы посредством анализа пикселей, кадров или звука.
  • Оно не ищет исходный источник файла в интернете.
  • Оно не доказывает фактическую достоверность сцены или утверждения, показанного в файле.
  • Оно не добавляет, не подписывает и не встраивает новые Content Credentials.

Отсутствие Content Credentials — нейтральный результат: файл может быть подлинным, синтетическим, отредактированным или просто обработанным программой, которая не сохранила метаданные C2PA. Валидные учётные данные подтверждают целостность подписанной информации о происхождении, но их полезность всё равно зависит от того, доверяете ли вы подписавшей стороне.

Требования

Сценарий установки сейчас рассчитан на macOS и требует:

  • Node.js 20 или новее
  • Git
  • Xcode Command Line Tools (xcode-select --install)
  • подключение к интернету для первоначальной загрузки зависимостей и примеров

Проект протестирован на Apple Silicon. Первая нативная сборка может занять несколько минут; при последующих запусках используется локальный кеш Bazel.

Быстрый запуск

npm install
npm run setup
npm start

Откройте http://127.0.0.1:3210. Чтобы остановить сервер, нажмите Ctrl+C в терминале.

Команда npm run setup загружает зафиксированные версии исходного кода в игнорируемую папку .runtime/, проверяет известные хеши, собирает CLI Credentio, загружает официальные списки доверия и устанавливает четыре публичных тестовых файла. Сгенерированные исходники, бинарные файлы, списки доверия и тестовые материалы не добавляются в этот репозиторий.

Проверка приложения

Запуск всех автоматических тестов:

npm test

Одновременный запуск проверки синтаксиса и тестов:

npm run check

Интеграционный тест автоматически пропускается, пока не выполнена команда npm run setup. После подготовки локальной среды он проверяет все четыре встроенных сценария:

Пример Ожидаемый результат
Валидный JPEG Валидные Content Credentials с доверенным подписантом
Изменённый JPEG Ошибка из-за несовпадения хеша содержимого
Неподписанный JPEG Content Credentials отсутствуют
Валидный MP4 Валидные Content Credentials видео

Поддерживаемые расширения

Поддержка определяется зафиксированной сборкой Credentio.

  • Изображения: avif, dng, gif, heic, heif, jpeg, jpg, png, tif, tiff, webp
  • Видео и аудио: avi, m4a, mov, mp3, mp4, wav, flac
  • Документы: pdf, docx, pptx, xlsx

Настройка

Сервер всегда слушает только loopback-интерфейс. Можно изменить порт и ограничение размера загрузки, не делая сервер доступным из локальной сети:

PORT=4321 MAX_UPLOAD_BYTES=536870912 npm start
Переменная Значение по умолчанию Описание
PORT 3210 Локальный HTTP-порт
MAX_UPLOAD_BYTES 2147483648 Максимальный размер принимаемого файла в байтах (2 ГиБ)

Приватность и безопасность

  • Выбранные файлы передаются только из браузера на локальный сервер 127.0.0.1.
  • Приложение не загружает файл в Google или другой облачный сервис.
  • Временные файлы создаются с правами доступа только для владельца и удаляются в блоке finally после проверки.
  • Межсайтовые POST-запросы отклоняются, а интерфейс отдаётся с ограничительной политикой Content Security Policy.
  • Необработанный crJSON показывается только в локальном браузере. Он может содержать метаданные о происхождении, уже встроенные в файл.
  • На этапе установки выполняются внешние запросы для загрузки зафиксированных открытых зависимостей, списков доверия и публичных примеров.

Не публикуйте этот сервер для разработки через перенаправление портов, обратный прокси или публичный туннель. Рекомендации по отправке сообщений об уязвимостях и дополнительные меры предосторожности приведены в файле SECURITY.md.

Структура проекта

public/              Интерфейс в браузере
docs/screenshots/    Скриншоты интерфейса для README и публикаций
lib/credentio.mjs    Обёртка процесса Credentio и подготовка сводки результата
scripts/setup.mjs    Воспроизводимая загрузка и нативная сборка
test/                Модульные и интеграционные тесты
server.mjs           Локальный HTTP-сервер, доступный только через loopback
.runtime/            Сгенерированная локальная среда (игнорируется Git)

Стороннее ПО и тестовые данные

Репозиторий не включает в себя исходники Credentio или его тестовые файлы. Сценарий установки загружает зафиксированные версии из исходных публичных источников:

На загруженные материалы распространяются соответствующие лицензии и условия. «Google», «Credentio», «C2PA» и другие названия могут являться товарными знаками их владельцев.

Статус

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

Лицензия

Оригинальный код репозитория доступен по лицензии MIT. Загруженные сторонние компоненты остаются под своими лицензиями.

Назад к списку