Status: Prova de Conceito (POC) para implementação do padrão C2PA (Coalition for Content Provenance and Authenticity).
O Canary.io nasceu para explorar a integridade digital de ativos visuais. O foco principal é demonstrar o fluxo completo de "ingestão-assinatura-exibição":
- Recebimento de uma imagem original.
- Otimização (redução da imagem em 20%) e conversão da imagem original (formato .webp).
- Injeção de um Manifesto C2PA (metadados criptográficos).
- Armazenamento em nuvem.
- Validação e extração desses dados de proveniência no Frontend para o usuário final.
A interface permite o upload e exibe instantaneamente o manifesto injetado ao lado da imagem otimizada.
- Backend: Deno para a API principal e workers (otimização de imagem e content-auth).
- Frontend: Interface em html puro para visualização e envio das imagens.
- Cloud Storage: AWS S3 (simulado via LocalStack) para persistência de imagens assinadas.
- Segurança: Implementação de corrente de confiança (Certs/Private Keys) para assinatura digital.
- Infraestrutura: Docker e Docker Compose para orquestração de ambiente.
- Docker & Docker Compose instalado.
- Deno.js (v2.7.11+ recomendado).
-
Configuração de Ambiente: Crie o arquivo de variáveis baseado no exemplo:
cp .env.example .env
💡 Nota Técnica: No arquivo
.env, certifique-se de que a variávelLOCALSTACK_CORS_ORIGINesteja no formato de array JSON:'["http://localhost:3000", ...]'. -
Inicialização: Suba os containers (isso iniciará todos os serviços):
docker compose up -d
-
Acesse o Navegador: Abra
http://localhost:[PORTA_CONFIGURADA]para testar o fluxo de assinatura.
- C2PA Standard: Implementação prática de um padrão emergente da indústria para combate a desinformação e IA generativa.
- Arquitetura Cloud-Native: Uso de buckets S3 com políticas de CORS customizadas via LocalStack.
- Otimização prévia: Uso do Sharp para otimizar as imagens, mudando o formato e reduzindo-as em 20%.
- Cadeia de workers: Workes em cadeia foram implementados para manipulação das imagens.
Criado e mantido por Ítalo (brazuca-dev).
Foto de exemplo por @Đặng Thanh Tú via Pexels.
