credentio-local-checker
GitHub: https://github.com/vbel254/credentio-local-checker
Небольшой локальный веб-интерфейс с упором на приватность для проверки C2PA Content Credentials с помощью открытой C++-библиотеки Google Credentio.
Приложение запускается на вашем компьютере, принимает файл через локальный интерфейс в браузере, вызывает собранный на компьютере бинарный файл Credentio и показывает результат проверки в понятном виде.
Важно: это независимый экспериментальный проект. Он не является официальным продуктом Google или C2PA и не поддерживается этими организациями.
Скриншоты
Локальный интерфейс
Встроенные сценарии проверки
На каждом скриншоте показаны тестовый файл, результат проверки и сведения, полученные от Credentio. Нажмите на изображение, чтобы открыть его в полном разрешении.
Что умеет приложение
- Проверяет 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 — лицензия Apache 2.0
- Android LibCppBor — лицензия Apache 2.0
- Списки доверия для проверки соответствия C2PA
- Публичные тестовые файлы C2PA
- Тестовое изображение c2pa-rs
На загруженные материалы распространяются соответствующие лицензии и условия. «Google», «Credentio», «C2PA» и другие названия могут являться товарными знаками их владельцев.
Статус
Это локальный инструмент для исследований и демонстраций, а не промышленный сервис проверки. Credentio активно развивается, поэтому его интерфейсы и поддерживаемые форматы могут измениться. Сценарий установки намеренно фиксирует известные версии, чтобы эта сборка оставалась воспроизводимой.
Лицензия
Оригинальный код репозитория доступен по лицензии MIT. Загруженные сторонние компоненты остаются под своими лицензиями.