Перейти к содержимому

Руководство по быстрому старту C2PA

Начните работу с C2PA за 5 минут! Это руководство поможет вам понять, проверить и создать контент с подписью C2PA.

  1. Понимание C2PA
  2. Проверка контента C2PA
  3. Создание контента C2PA
  4. Следующие шаги

C2PA добавляет криптографически подписанный “manifest” (манифест) к вашим медиафайлам, содержащий:

  • Кто: Идентификация создателя/редактора
  • Что: Выполненные действия (создано, отредактировано, создано ИИ)
  • Когда: Временные метки
  • Как: Использованные инструменты и настройки
  • Откуда: Исходные материалы (ингредиенты)
Оригинальное фото → [Добавить манифест C2PA] → Подписанное фото
Содержит метаданные:
• Создатель: John Doe
• Камера: Nikon Z9
• Дата: 2025-11-21
• GPS: 37.7749°N, 122.4194°W
• Подпись: ✓ Действительна

При редактировании:

Подписанное фото → [Редактирование в Photoshop] → Новое подписанное фото
Новый манифест ссылается
на оригинал как "ингредиент"

Результат: Полная цепочка происхождения от оригинала до текущей версии.


Установка не требуется!

  1. Посетите https://contentcredentials.org/verify
  2. Перетащите любое изображение/видео/документ
  3. Просмотрите информацию о происхождении:
    • Идентификация создателя
    • История редактирования
    • Статус подписи
    • Оригинальный контент (если доступен)

Попробуйте сейчас с примерами изображений из: https://contentauthenticity.org/examples

Для автоматической проверки при просмотре:

  1. Установите Content Credentials Extension
    • Доступно для Chrome, Edge, Brave
  2. Просматривайте как обычно
  3. Расширение автоматически обнаруживает контент C2PA
  4. Нажмите на значок, чтобы просмотреть детали происхождения

Для разработчиков и продвинутых пользователей:

Окно терминала
# macOS/Linux (используя Cargo)
cargo install c2patool
# macOS (используя Homebrew)
brew install c2patool
# Windows
# Скачайте с: https://github.com/contentauth/c2patool/releases
Окно терминала
# Базовая проверка
c2patool photo.jpg
# Подробный вывод в JSON
c2patool photo.jpg --detailed
# Сохранить манифест в JSON-файл
c2patool photo.jpg --output manifest.json
# Проверить несколько файлов
c2patool *.jpg
File: photo.jpg
Status: ✓ Valid C2PA signature
Creator: John Doe (john@example.com)
Created: 2025-11-21T10:30:00Z
Camera: Nikon Z9
Signature: Valid
Certificate: DigiCert
Actions: Captured

Интегрируйте проверку в ваше приложение:

const c2pa = require('c2pa-node');
async function verify(imagePath) {
const manifest = await c2pa.read(imagePath);
if (manifest) {
console.log('Creator:', manifest.claim.creator);
console.log('Created:', manifest.claim.created);
console.log('Valid:', manifest.validation_status);
} else {
console.log('No C2PA data found');
}
}
verify('photo.jpg');
from c2pa import Reader
reader = Reader('photo.jpg')
manifest = reader.manifest()
if manifest:
print(f"Creator: {manifest.creator}")
print(f"Created: {manifest.created}")
print(f"Valid: {manifest.is_valid}")
else:
print("No C2PA data found")

Метод 1: Использование поддерживаемого программного обеспечения

Заголовок раздела «Метод 1: Использование поддерживаемого программного обеспечения»

Программирование не требуется:

  1. Откройте изображение в Photoshop/Lightroom
  2. Перейдите в Edit → Content Credentials
  3. Заполните информацию о создателе
  4. Сохраните файл → Манифест C2PA добавляется автоматически
  • Nikon Z9/Z8: Включите в настройках камеры → фотографии подписываются при съемке
  • Leica M11-P/SL3: Автоматическое подписание включено
  • Sony Alpha серии: Включите через обновление прошивки

Вам нужен сертификат подписи:

Для тестирования (самоподписанный):

Окно терминала
# Сгенерировать тестовый сертификат (не доверяется валидаторами)
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes

Для производства:

  • Приобретите сертификат у доверенного CA (DigiCert, GlobalSign и т.д.)
  • Укажите требования к использованию ключа C2PA

Создайте manifest.json:

{
"claim_generator": "my-app/1.0",
"assertions": [
{
"label": "stds.schema-org.CreativeWork",
"data": {
"@context": "https://schema.org",
"@type": "CreativeWork",
"author": [
{
"@type": "Person",
"name": "John Doe"
}
]
}
},
{
"label": "c2pa.actions",
"data": {
"actions": [
{
"action": "c2pa.created"
}
]
}
}
]
}
Окно терминала
# Подписать с вашим сертификатом
c2patool photo.jpg \
--manifest manifest.json \
--signer-cert cert.pem \
--signer-key key.pem \
--output signed_photo.jpg
# Проверить, что сработало
c2patool signed_photo.jpg
use c2pa::{Builder, SigningAlg};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut builder = Builder::from_file("input.jpg")?;
// Добавить утверждение о создателе
builder.add_assertion("stds.schema-org.CreativeWork",
r#"{"author": [{"name": "John Doe"}]}"#)?;
// Подписать и сохранить
let signer = get_signer(); // Ваш сертификат/ключ
builder.sign("output.jpg", signer)?;
Ok(())
}
const c2pa = require('c2pa-node');
async function sign(inputPath, outputPath) {
const manifest = {
claim_generator: 'my-app/1.0',
assertions: [
{
label: 'stds.schema-org.CreativeWork',
data: {
author: [{ name: 'John Doe' }]
}
}
]
};
const signer = {
cert: 'path/to/cert.pem',
key: 'path/to/key.pem'
};
await c2pa.sign(inputPath, outputPath, manifest, signer);
console.log('Signed successfully!');
}
sign('input.jpg', 'output.jpg');
from c2pa import Builder, Signer
# Создать builder
builder = Builder.from_file('input.jpg')
# Добавить утверждения
builder.add_assertion('stds.schema-org.CreativeWork', {
'author': [{'name': 'John Doe'}]
})
# Подписать
signer = Signer('cert.pem', 'key.pem')
builder.sign('output.jpg', signer)
print('Signed successfully!')

Метод 4: Редактирование подписанного контента (сохранение происхождения)

Заголовок раздела «Метод 4: Редактирование подписанного контента (сохранение происхождения)»

При редактировании контента с подписью C2PA ссылайтесь на оригинал как на “ингредиент”:

Окно терминала
# Редактировать и сохранить цепочку
c2patool edited_photo.jpg \
--parent original_photo.jpg \
--manifest edit_manifest.json \
--signer-cert cert.pem \
--signer-key key.pem \
--output final_photo.jpg

Новый манифест будет ссылаться на original_photo.jpg как на ингредиент, сохраняя полную историю.


Понимание спецификации:

Изучите инструменты:

Распространенные вопросы:

Официальные учебные пособия:

Примеры кода:

Перед выходом в продакшн:

  1. Получите производственный сертификат

    • Приобретите у доверенного CA (DigiCert, GlobalSign и т.д.)
    • Убедитесь в совместимости использования ключа с C2PA
    • Стоимость: ~$50-500/год
  2. Безопасное хранение ключей

    • Используйте Hardware Security Module (HSM) для закрытых ключей
    • Или облачный HSM (AWS CloudHSM, Azure Key Vault)
    • Никогда не коммитьте ключи в систему контроля версий
  3. Тщательно тестируйте

    • Проверяйте подписи с несколькими валидаторами
    • Тестируйте на разных форматах файлов
    • Проверьте кроссплатформенную совместимость
  4. Мониторинг и обслуживание

    • Внедрите ротацию сертификатов
    • Отслеживайте отзывы
    • Поддерживайте SDK в актуальном состоянии

Ключевые точки интеграции:

Рабочий процесс вашего приложения:
1. Создание/загрузка контента
2. [Добавить манифест C2PA] ← Ваша точка интеграции
3. Подписать с сертификатом
4. Сохранить/опубликовать подписанный контент
5. [Опционально] Проверить при отображении ← Еще одна точка интеграции

Типичное время интеграции:

  • Простая проверка: 1-2 дня
  • Базовое подписание: 3-5 дней
  • Полное производственное развертывание: 2-4 недели

Тестирование (бесплатно):

  • Самоподписанные сертификаты
  • Подходит только для разработки
  • Не доверяется валидаторами

Производство:

Получите помощь:

Внесите вклад:


Окно терминала
c2patool image.jpg
Окно терминала
c2patool input.jpg \
--manifest manifest.json \
--signer-cert cert.pem \
--signer-key key.pem \
--output signed.jpg
https://contentcredentials.org/verify
{
"claim_generator": "app-name/version",
"assertions": [
{
"label": "stds.schema-org.CreativeWork",
"data": {
"author": [{"name": "Creator Name"}]
}
}
]
}

  • Файл может не иметь манифеста C2PA
  • Метаданные могли быть удалены
  • Попробуйте другой формат файла
  • Файл изменен после подписания
  • Сертификат отозван или истек
  • Цепочка доверия нарушена
  • Используется самоподписанный сертификат (ожидаемо для тестирования)
  • CA не в списке доверия
  • При необходимости добавьте пользовательские якоря доверия
  • C2PA добавляет ~10-50KB на манифест (минимально)
  • Подписание занимает <1 секунды для типичных файлов
  • Проверка практически мгновенная

Готовы начать? Выберите свой метод выше и погрузитесь!

Вопросы? Проверьте FAQ или откройте проблему.


Последнее обновление: Ноябрь 2025