Resumo
Prova pública de existência temporal para evidências privadas
Sistemas de CFTV são usados como fonte de evidência em auditorias, disputas, investigações e processos de conformidade. O problema é que um arquivo de vídeo armazenado em ambiente centralizado pode ser contestado: ele pode ter sido alterado, ter trechos removidos, ter segmentos reordenados ou ter sido substituído depois da captura.
A solução proposta segmenta o vídeo, calcula hashes SHA-256, gera um manifesto, assina esse manifesto com a chave do dispositivo de borda e usa OpenTimestamps para produzir uma prova de existência temporal ancorada em Bitcoin. Assim, um verificador independente pode comparar o pacote apresentado com os compromissos criptográficos registrados anteriormente.
Problema
Armazenar o vídeo não basta para provar cadeia de custódia
Em um sistema tradicional, a confiança fica concentrada no operador do DVR, NVR, servidor ou banco de vídeos. Mesmo que o arquivo exista, ainda falta uma prova externa de que aquele conteúdo já existia naquele estado em um instante anterior.
Com ferramentas modernas de edição e geração por inteligência artificial, a contestação fica mais plausível. Por isso, o projeto separa três perguntas:
- O pacote apresentado está íntegro?
- O manifesto foi produzido por uma chave autorizada?
- Esse manifesto existia antes de uma determinada data?
Relevância
Bitcoin como infraestrutura de verificação, não como banco de dados
O projeto não tenta gravar vídeos em Bitcoin. Isso seria caro, lento e inadequado. A contribuição está em usar Bitcoin apenas como uma camada pública, resistente a adulteração retroativa, para provar anterioridade temporal de um manifesto assinado.
Privacidade
O vídeo e os metadados operacionais permanecem fora da blockchain.
Auditabilidade
Terceiros podem verificar integridade sem confiar no operador do armazenamento.
Baixo acoplamento
A solução pode complementar CFTV existente, storages, DVRs e NVRs.
Fundamentos
Conceitos da disciplina aplicados ao projeto
A proposta combina primitivas estudadas em Bitcoin para resolver um problema de cadeia de custódia: transformar um vídeo privado em evidência verificável sem colocar o conteúdo do vídeo na blockchain.
- Hash SHA-256
- Cada segmento e o manifesto recebem um digest determinístico. Qualquer alteração de bytes muda o hash esperado e torna a adulteração detectável.
- Merkle tree
- A agregação por árvore de Merkle permite representar muitos compromissos por uma raiz verificável, reduzindo custo e evitando publicar cada segmento separadamente.
- Assinatura digital
- A assinatura vincula o manifesto a uma chave do dispositivo ou custodiante. Sem ela, o timestamp prova existência; com ela, há também autoria criptográfica.
- UTXO e OP_RETURN
-
Em Bitcoin, transações consomem UTXOs e criam novas saídas. Uma saída
OP_RETURNé um caso no-one-can-spend: registra dados arbitrários de forma comprovadamente não gastável. - OpenTimestamps
- O protocolo agrega compromissos criptográficos e ancora uma raiz em Bitcoin, produzindo uma prova verificável de anterioridade temporal.
Arquitetura
Fluxo do pacote verificável
CFTV
temporal
SHA-256
assinado
Bitcoin
independente
O manifesto funciona como o centro do pacote. Ele referencia os segmentos, declara a
câmera/dispositivo, guarda os hashes e recebe a assinatura. A prova .ots
é preservada junto ao pacote para verificação posterior.
Prova Bitcoin
Como o manifesto é vinculado a uma transação confirmada
O hash do manifesto não precisa aparecer diretamente como uma transação exclusiva. No OpenTimestamps, esse hash entra em uma prova composta por operações criptográficas como concatenação e SHA-256, até chegar a um compromisso agregado ancorado em Bitcoin.
Caminho lógico da prova
manifesto assinado
-> SHA-256 do manifesto
-> prova .ots
-> operações append/prepend + SHA-256
-> compromisso agregado
-> transação Bitcoin
-> bloco confirmado
Verificação independente
O verificador recalcula o hash do manifesto, valida a assinatura e usa a prova
.ots para reconstruir o caminho até a atestação Bitcoin. A evidência
não depende de confiar no servidor que armazenou o vídeo.
Implementação
MVP em Python com empacotamento, assinatura e verificação
O MVP usa um arquivo local como entrada e simula o dispositivo de borda no próprio ambiente de execução. O foco da implementação é reproduzir o fluxo essencial de custódia: segmentar o vídeo, calcular hashes, gerar um manifesto assinado, produzir a prova OpenTimestamps e permitir verificação posterior por terceiro independente. O código-fonte do MVP está disponível no repositório cftv-vilarins.
Arquivos principais
src/segmenter/segment_video.pysrc/packager/create_package.pysrc/gateway/validate_package.pysrc/anchor/stamp_manifest.pysrc/verifier/verify_package.py
Execução local
python3 src/segmenter/segment_video.py
python3 src/packager/create_package.py
python3 src/gateway/validate_package.py
python3 src/anchor/stamp_manifest.py
python3 src/verifier/verify_package.py
Experimentos
Resultado esperado: pacote íntegro passa, adulterações falham
Pacote original
O pacote camera-001-20260615T210000Z foi validado com checksums,
sequência temporal, assinatura e prova OpenTimestamps presentes.
Segmento alterado
O verificador detectou divergência de checksum e hash no segmento adulterado.
Segmento removido
O verificador detectou arquivo ausente, lacuna temporal e quebra de encadeamento.
Manifesto alterado
A modificação invalidou checksum e assinatura digital.
Segmentos reordenados
O verificador detectou sequência inesperada, lacunas e assinatura inválida.
Discussão
O que a prova resolve e o que ela não resolve
O timestamp prova que um determinado compromisso criptográfico existia antes de certo momento. A assinatura digital ajuda a atribuir o manifesto a uma chave. Os hashes detectam alterações no conteúdo. Em conjunto, esses mecanismos fortalecem a cadeia de custódia.
Ainda assim, o modelo não prova sozinho que a câmera estava apontada para o local correto, que o relógio local estava certo ou que a chave privada nunca foi comprometida. Esses pontos dependem de governança operacional, proteção da chave e controles físicos do dispositivo.
Conclusão
Uma camada de confiança mínima para evidências de vídeo
A proposta mostra que é possível construir uma cadeia de custódia leve para vídeos CFTV usando ferramentas abertas e verificáveis. O vídeo permanece privado e off-chain; o Bitcoin entra apenas como infraestrutura pública de timestamp para o manifesto assinado.
Para a disciplina, o resultado principal é demonstrar uma arquitetura coerente e um MVP que identifica adulterações práticas: alteração de bytes, remoção de segmentos, modificação do manifesto e reordenação temporal.
Referências
Materiais base
- Nakamoto, S. Bitcoin: A Peer-to-Peer Electronic Cash System.
- OpenTimestamps.
- RFC 6962: Certificate Transparency.
- Documentação e código do MVP em cftv-vilarins.