Uma máquina do tempo para os DPPs

Imagine que tem um produto na mão e digitaliza o código QR que nele se encontra. Em vez de um PDF, abre-se uma pequena aplicação. Vê o produto no momento presente: de que é feito, de onde vem, o que é preciso ter em conta. Um simples deslizar do dedo leva-o a recuar no tempo - é possível ver todas as versões que já foram publicadas.

É exatamente isso que pode experimentar agora: a demonstração mostra um passaporte de produto completo com dados de exemplo.

Esta é a Transpareo Time Machine, a nossa aplicação de código aberto para consumidores, compatível com qualquer Passaporte Digital do Produto. O código está disponível sob a licença GPL v3 no GitHub.

Estamos a desenvolvê-la porque o regulamento da UE relativo ao Passaporte Digital do Produto foi concebido para os consumidores - para a pessoa que tem o produto nas mãos. A maioria dos fornecedores transforma-o num formulário de conformidade que ninguém volta a consultar. Nós transformamo-lo numa aplicação que o consumidor também abre.

O que a aplicação faz

Quatro pontos de contacto do ponto de vista da pessoa que tem o produto na mão. Sem necessidade de iniciar sessão, sem necessidade de instalar uma aplicação.

1

Digitalizar

Digitalize o código QR com a câmara do smartphone. A aplicação abre-se no navegador.

2

Ver notícias

O produto no presente - componentes, materiais, origem, cuidados e reciclagem.

3

Folhear a história

Um movimento de deslizar permite recuar no tempo. Cada versão anterior, com a data e o motivo da alteração.

4

Partilhar

Cada versão tem o seu próprio link. Uma pessoa partilha uma determinada versão com amigos ou com as autoridades.

Mas por que razão, afinal?

O regulamento da UE relativo ao Passaporte Digital do Produto representa a maior mudança no sentido da transparência dos produtos das últimas décadas. Se lermos atentamente os textos subjacentes, verificamos que foi explicitamente concebido para os consumidores. As autoridades, as empresas de reciclagem e as oficinas acompanham esta evolução; mas o destinatário principal é a pessoa que tem o produto nas mãos.

Em termos numéricos, a situação é clara. Um cidadão europeu médio poderá, no final desta década, digitalizar dezenas a centenas de passaportes de produto por ano. Calculando com base em 200 milhões de agregados familiares, isso representa milhares de milhões de interações com os consumidores por ano. O mundo das autoridades e das empresas de reciclagem é, em comparação, numericamente insignificante.

Para que o regulamento chegue ao consumidor, a página destinada aos consumidores tem de ser bem concebida - rápida, apelativa e coerente. Caso contrário, falhará o seu objetivo. Decidimos criar esta página de código aberto, para que não dependa de um único fornecedor.

Verificado no navegador, não no nosso servidor

Na parte superior de cada ficha de produto aparece um selo: «Verificado pela Transpareo». Este selo indica o resultado de uma verificação que não é realizada no nosso servidor, mas sim no navegador do visitante - a partir dos bytes carregados e das chaves públicas do fabricante.

Duas entidades independentes uma da outra assinam cada versão do DPP: o fabricante e a Transpareo. Ambas as assinaturas têm de ser verificáveis para que o selo fique verde. Com o «Bring Your Own Key» (BYOK), o fabricante opera o seu próprio ponto final de assinatura - a Transpareo nunca detém a chave privada e apenas acrescenta a contra-assinatura independente. Assim, cria-se uma assinatura do emitente que a própria Transpareo não consegue gerar. Um servidor comprometido não consegue falsificar a marca de verificação, pois a verificação é feita pelo próprio visitante.

Quem quiser saber mais detalhes, clique no selo. Aí poderá ver a cadeia de assinaturas, os hashes e o histórico de versões encadeado. Quem quiser apenas a informação, basta ignorar isso e continuar a ler a ficha do produto.

Esta mesma verificação também está disponível numa página independente: na verificação DPP, basta introduzir o URL do manifesto de qualquer ficha de produto para ver o resultado completo da verificação - sem ter de abrir a própria ficha.

Vamos disponibilizar o código

O Transpareo Time Machine está disponível sob a GPL v3 no GitHub. Clonar, criar um fork, hospedar por conta própria - tudo é permitido. As modificações publicadas têm, por sua vez, de estar sob a licença GPL v3, para que qualquer desenvolvimento posterior beneficie a comunidade em geral.

Três formas de integrar o pacote:

  • Através de uma tag de script: basta inserir um <script> e um <transpareo-time-machine src="…"> na página - sem necessidade de compilação.
  • Através do npm: npm install transpareo-time-machine na sua própria aplicação.
  • Alojamento próprio: compilar o pacote, infraestrutura própria, sem dependências de terceiros em tempo de execução.

Quem precisar apenas da verificação da assinatura, sem a visualização completa do produto, deve importar o elemento associado <dpp-verifier> - ideal para ferramentas de auditoria. Pode ser visto em tempo real na verificação DPP.

Quem utiliza a aplicação de forma sensata

A aplicação foi concebida, em primeiro lugar, para os consumidores. No entanto, funciona para todos aqueles que pretendam consultar ou verificar os dados dos produtos de forma independente.

  • Os consumidores finais digitalizam, visualizam, navegam e partilham. Sem necessidade de iniciar sessão, sem rastreadores.
  • As entidades de fiscalização do mercado e as autoridades consultam o passaporte do produto numa aplicação cujo código-fonte é passível de auditoria pública.
  • As oficinas e as empresas de reciclagem consultam a composição dos materiais e as instruções de desmontagem diretamente no produto.
  • As marcas e os operadores de fork personalizam o pacote de acordo com a sua própria marca - tokens CSS, componentes próprios, alojamento próprio.

O que acontece se a Transpareo deixar de existir?

A UE exige que um passaporte do produto registado permaneça disponível durante, pelo menos, dez anos - mesmo após a insolvência ou liquidação do fabricante. Um fornecedor de SaaS raramente se mantém em atividade durante tanto tempo. Por isso, estamos a construir a plataforma, desde o início, de forma a que os passaportes de produto continuem a poder ser utilizados independentemente de nós:

  • Cada versão assinada do DPP encontra-se num armazenamento de acesso público. Os bytes, juntamente com as chaves públicas publicadas, são suficientes para uma verificação posterior.
  • Assim que os passaportes de produto forem registados no registo da UE, um segundo repositório, protegido contra gravação, espelha cada versão do DPP e o registo de eventos durante mais dez anos. Ninguém - nem mesmo nós - pode alterar estas cópias espelhadas posteriormente.
  • Após uma rescisão, os URLs curtos dos passaportes de produto continuam acessíveis através de um redirecionamento na plataforma Transpareo.
  • O Transpareo Time Machine continua a funcionar sem alterações, mesmo com conjuntos de dados arquivados. O pacote não nos contacta durante a execução; necessita apenas dos bytes e das chaves.

Se a plataforma Transpareo desaparecesse amanhã, as versões do DPP e o renderizador de código aberto permaneceriam.

Para os curiosos em tecnologia

Eis o que se passa nos bastidores. Quem não precisar de saber os detalhes pode saltar esta secção - a aplicação continua a funcionar na mesma.

  • GS1 Digital Link (ISO/IEC 18975): O URL do «Product Pass» contém a identificação do produto num formato padronizado - independente do resolvedor e intercambiável entre fornecedores.
  • JSON Canonicalization Scheme (RFC 8785): Uma serialização determinística. Desta forma, o hash permanece reproduzível independentemente da ordem dos campos ou dos espaços em branco - qualquer pessoa pode calculá-lo por si própria.
  • W3C Data Integrity Proofs (eddsa-jcs-2022): Assinatura Ed25519 sobre a forma canónica (JCS).
  • /.well-known/dpp-keys/ (RFC 8615): as chaves públicas dos emissores encontram-se num caminho padronizado - não é necessário contactar a Transpareo, qualquer verificador encontra-as por si próprio.

Tudo está documentado no README no GitHub - incluindo a arquitetura do front-end (núcleo React próprio, sem frameworks externos) e as instruções de compilação para auto-hospedagem.

Ver o código no GitHub

Pode encontrar o código-fonte completo, todas as versões e a discussão sobre o problema no repositório público.