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. Com um simples gesto de deslizar, recua no tempo - é possível ver todas as versões que já foram lançadas.

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 realmente abre.

Veja por si mesmo

A demonstração apresenta fichas técnicas completas do produto com dados de exemplo: percorra o histórico de versões e abra a etiqueta de inspeção - diretamente no navegador, sem necessidade de criar uma conta.

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 constitui a maior mudança no sentido da transparência dos produtos desde há décadas. Se se lerem atentamente os textos subjacentes, verifica-se 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 é inequívoca. Um cidadão europeu médio poderá, no final desta década, digitalizar dezenas a centenas de passaportes de produto por ano. Calculando para 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 para os consumidores com código aberto, para que não dependa de um único fornecedor.

O percurso é uma regra, o manifesto é da nossa autoria

Uma ficha de produto sofre alterações: uma reparação, uma nova quota de materiais reciclados, uma recolha de produtos. Por isso, as normas exigem que as versões anteriores permaneçam acessíveis: a norma relativa ao armazenamento congela cada versão, enquanto a norma relativa às interfaces prevê que cada versão possa ser lida de forma específica. O que as normas deixam em aberto é a parte intermédia: uma lista que liga todas as versões de um passaporte, formando uma história. A Transpareo publica-a para cada passaporte sob a forma de um manifesto, assinado, com cada versão ligada à sua antecessora por meio de uma impressão digital. Assim, a «máquina do tempo» percorre a história de um produto, e um leitor verifica não só que uma versão é autêntica, mas também que é a versão atual de uma sequência ininterrupta.

No entanto, a aplicação não se limita a isso. Se, em vez do manifesto, lhe for apresentado um único passaporte - tal como qualquer fornecedor o publica de acordo com os padrões abertos - , a aplicação apresenta essa versão específica, verifica a sua assinatura, caso a possua, e simplesmente omite a linha do tempo. Um passe sem assinatura não é considerado um erro, mas é simplesmente apresentado sem selo de verificação. Assim , a mesma aplicação apresenta também passes que nunca estiveram na Transpareo.

Mudança de fornecedor sem interrupção

O regulamento da UE relativo ao passaporte digital do produto exige que os passaportes digitais sejam interoperáveis e baseados em normas abertas - transferíveis entre serviços e sistemas, em vez de estarem vinculados a um único fornecedor. A independência em relação ao prestador de serviços não é, portanto, um elemento adicional, mas sim parte integrante do requisito.

O Transpareo Time Machine é a solução que concretiza esta exigência. Uma vez que cada passaporte de produto é fornecido em normas abertas - identificação independente do resolvedor, serialização canónica, chaves publicadas publicamente - e o renderizador é de código aberto ao abrigo da GPL v3, a apresentação de um passaporte nunca depende da nossa plataforma.

O responsável por um passaporte de produto é um agente económico - o fabricante, um importador ou um representante autorizado. Caso decida abandonar a Transpareo e mudar para outro fornecedor, a apresentação permanece estável: as versões já publicadas, juntamente com o histórico, continuam a ser apresentadas inalteradas pelo mesmo renderizador de código aberto, e um novo fornecedor que utilize os mesmos padrões abertos será apresentado exatamente pela mesma aplicação.

Os dados migram consigo, os consumidores não notam qualquer interrupção e ninguém tem de aguardar uma migração.

A migração em si não constitui um projeto. O Transpareo Time Machine é um pacote estático: basta criá-lo uma vez, copiá-lo para qualquer servidor web e está concluído. O design que configurou no Transpareo para os seus passaportes é transferido como uma folha de estilo publicada juntamente com cada passaporte. A visualização do passaporte, à qual os seus clientes se habituaram, tem, portanto, exatamente o mesmo aspeto no seu próprio servidor, incluindo cores, tipo de letra e logótipo.

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 emitente.

Cada versão do DPP é assinada por duas entidades independentes uma da outra: o emitente 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 emitente opera o seu próprio ponto final de assinatura - a Transpareo nunca guarda a chave privada e limita-se a adicionar a contra-assinatura independente. Desta forma, 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 ocorre junto do 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 pretender 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: em Verificação DPP, insira o URL do manifesto de qualquer ficha de produto e veja 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. As modificações publicadas devem, por sua vez, estar sob a GPL v3, para que qualquer desenvolvimento posterior beneficie a comunidade.

Clonar, criar um fork, hospedar por conta própria - tudo é permitido.

A forma de integrar a aplicação, seja com uma linha no código da página, como um pacote na sua própria aplicação ou totalmente hospedada por si próprio, está descrita no ficheiro README disponível nesse local. Encontrará também nesse ficheiro o componente complementar para a verificação exclusiva da assinatura, que está em funcionamento 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 emitente. 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 a rescisão do contrato, 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.