Divulgar, sem perder a assinatura

Divulgar, sem perder a assinatura

Quem vê campos protegidos a serem revelados tem, na maioria das vezes, de confiar na plataforma. Nós assinamos cada campo individualmente, para que também possam ser verificados de forma independente.

Um passaporte digital do produto não mostra o mesmo a todos. Uma compradora vê os dados públicos. Uma oficina de reparação ou uma empresa de recondicionamento vê mais. Uma autoridade de fiscalização do mercado vê tudo. Isso está esclarecido e as normas europeias já o estabelecem expressamente.

A questão interessante é mais subtil: se alguém tiver acesso a campos protegidos para além dos dados públicos, poderá então comprovar que são precisamente esses campos que são autênticos? Ou terá de confiar em que a plataforma os selecionou corretamente e os transmitiu sem alterações?

Imagine um notário que não autentica a carta na sua totalidade, mas sim cada parágrafo individualmente. A carta pública é disponibilizada a todos. Quem tiver direito a mais informação recebe os parágrafos adicionais, e cada um deles continua a ostentar o selo do mesmo notário. Foi assim que construímos a nossa plataforma. Na maioria das plataformas, a resposta honesta à pergunta acima é: confiança. No nosso caso, é: prova, para cada campo que só é acrescentado no momento da divulgação. Este artigo explica por que razão esta diferença é importante e por que razão optámos pelo caminho mais trabalhoso.

Todos cumprem a regra de acesso da mesma forma

Anorma EN 18239, a norma europeia relativa aos direitos de acesso, segurança e confidencialidade no DPP, exige que o acesso seja controlado campo a campo: para cada campo existe uma regra que define quem o pode ver. Este é o requisito correto e não é difícil de cumprir. Quanto ao estatuto destas normas, já o detalhámos no nosso artigo sobre as normas harmonizadas.

A forma habitual de o fazer é através de um filtro no servidor. O servidor sabe quem está a fazer a consulta, verifica o que essa pessoa tem permissão para ver e devolve exatamente essa parte da informação. A norma não exige mais do que isso. O leitor tem de confiar que o servidor selecionou a informação de forma honesta e que nada foi alterado durante o processo. Para um folheto informativo público, isso é suficiente. No entanto, trata-se de muita confiança quando se trata de um valor no qual um reciclador baseia diretamente o preço de uma pilha usada.

Há aqui um senão que a norma não aborda: o excerto chega sem selo.

A solução mais óbvia é assinar os dados. Para os dois extremos da escala, uma assinatura comum funciona bem: assinar a visualização pública, assinar o conjunto de dados completo. O procedimento detalhado encontra-se na secção «Assinaturas e Certificados» do DPP. No meio, o sistema falha. Uma assinatura sobre todo o documento abrange exatamente os campos que estavam presentes no momento da assinatura. Se se revelar adicionalmente um campo protegido a um leitor autorizado, esse campo fica fora do conjunto assinado e chega-lhe sem cobertura. Ninguém assina antecipadamente todas as combinações possíveis de «quem vê o quê», pois o número de combinações dispara. Recorre-se então ao filtro sem selo, e o nível intermédio volta a basear-se na confiança.

Assinar cada campo individualmente

Existe uma estrutura melhor, e é sobre ela que construímos a plataforma. Em vez de assinar o documento final como um bloco único, o criador define cada campo individualmente numa única etapa (para os especialistas em normas: o procedimento do W3C ecdsa-sd-2023).

Cada visualização começa, assim, com os mesmos campos públicos. O que um leitor vê para além disso é adicionado campo a campo, e cada um desses campos continua a remeter para a chave pública do fabricante, offline, sem necessidade de nova assinatura e sem confiança na entidade que compilou a visualização. Os campos sem direito de acesso simplesmente não existem. Não estão ocultos, mas sim ausentes, e nada sobre eles transparece.

Uma passagem: a oficina de reparação

Uma oficina de reparação manifestou um interesse legítimo relativamente a uma bateria, um dos níveis de acesso expressamente previstos no regulamento relativo às baterias. O sistema da sua oficina autentica-se na nossa interface com a sua chave e solicita o passe. A resposta é o mesmo passe público que a compradora também vê, mas com mais um campo: as instruções de desmontagem, que só são reveladas a leitores autorizados. Não há um segundo documento, nem uma versão especial.

Antes de a empresa confiar neste campo, o seu software verifica o selo fornecido em relação à chave pública do fabricante. Se a verificação for bem-sucedida, incluindo o campo adicional, a empresa sabe que estas instruções provêm, ao pormenor, do fabricante e que ninguém ao longo do processo as alterou. Caso a verificação falhe, a empresa descarta a visualização na sua totalidade. Garantir que receba exatamente os campos a que tem direito continua a ser tarefa do nosso controlo de acesso. A novidade reside no passo seguinte: a empresa verifica por si própria se o que recebe é autêntico, sem nos consultar.

Por que razão «intacto» é o ponto essencial

Um selo intacto não significa que o conteúdo seja verdadeiro. Significa: foi exatamente isto que o fabricante escreveu e, desde então, ninguém alterou qualquer caractere. Assim, todos aqueles que apenas transmitiram o documento ficam fora da questão da confiança: a memória intermédia, a rede, o arquivo, nós.

Quem lhe entregou o passaporte já não tem importância.

E um selo é binário. Ou está intacto ou não está; não existe um selo «meio quebrado». Por isso, não se trata de uma diferença gradual se os campos adicionais chegarem até si com o seu selo ou sem ele: sem selo, não estão apenas ligeiramente menos comprovados, estão completamente sem comprovação.

Ambos os métodos para visualização

Qualquer pessoa pode verificar isso por si própria. A Transpareo Time Machine é a nossa aplicação de visualização de código aberto para passaportes de produto: percorre o histórico de versões de um passaporte e, ao fazê-lo, recalcula cada assinatura no navegador do utilizador, sem consultar nenhum dos nossos servidores. O passaporte de uma t-shirt contém uma assinatura que abrange todo o documento, enquanto o de uma bateria apresenta a validação campo a campo.

Ambos são padrões abertos do W3C, que qualquer pessoa pode implementar. A assinatura que abrange todo o documento é significativamente mais económica de criar e manter, e quem apenas disponibiliza dados públicos consegue satisfazer os requisitos com ela. O facto de a Time Machine dominar ambos os procedimentos é intencional: o passaporte mantém-se um formato padrão comum, que qualquer ferramenta adequada pode verificar, não apenas a nossa.

A quem isso beneficia e o que a norma exige

Para além dos dados públicos ## ,a quem é que, afinal, é divulgada alguma informação? Não é à compradora ocasional. São os processadores, que avaliam o valor de um conjunto de baterias usado; as seguradoras, que calculam o preço de um risco; as empresas de reciclagem, que separam os compostos químicos; e as autoridades, que instruem um processo. Leitores cujas decisões dependem de dinheiro ou segurança. E, na abordagem habitual, precisamente os leitores que não recebem qualquer selo relativamente aos campos em que assenta a sua decisão. Consideramos que um selo de certificação deve significar o mesmo para todos: cada campo apresentado provém do fabricante e não foi alterado desde então. Um selo que apenas abrange os campos públicos é um selo incompleto.

Dizemo-lo abertamente: nada disto é obrigatório. A norma EN 18239 exige que o acesso seja controlado, e um filtro no servidor cumpre essa função na perfeição. Tornar os campos divulgados verificáveis é algo que fazemos além disso, porque todo o sentido de um passaporte assinado reside no facto de ninguém ter de confiar na plataforma. Excluir o nível intermédio como exceção restabelece precisamente a confiança que a assinatura deveria eliminar.

O mesmo princípio permite que um campo seja omitido

Definir cada campo individualmente acarreta uma segunda característica, e esta é, de facto, exigida pela legislação europeia. O Regulamento Geral sobre a Proteção de Dados confere às pessoas o direito de solicitar a eliminação dos seus dados pessoais. Um conjunto de dados assinado como um bloco não pode cumprir este requisito sem destruir a própria assinatura.

Como, neste caso, cada campo é independente, é possível remover um único campo, enquanto todo o resto continua a ser válido. Caso dados pessoais sejam incluídos acidentalmente num passaporte, estes são removidos de forma limpa e o passaporte mantém-se válido: sem necessidade de reemissão, sem registo histórico danificado. Os campos cuja conservação é exigida por lei permanecem inalterados; o que for passível de eliminação pode ser eliminado mediante pedido, mesmo anos mais tarde.

Por que razão isto é difícil e como o resolvemos

Não fomos nós ## queinventámos o procedimento; trata-se de uma norma pública do W3C. O difícil não é ter a ideia. O difícil é implementá-la de forma a que um passaporte continue a ser válido daqui a dez anos. Uma assinatura comum baseia-se nos bytes de um documento. A assinatura por campo baseia-se nos seus dados individuais e, para tal, o passaporte é transformado, antes da assinatura, num formato fixo, no qual cada dado aparece como uma frase separada. Este formato deve ser reproduzido, carácter a carácter, daqui a dez anos; caso contrário, o selo deixará de ser válido. Três aspetos aparentemente insignificantes impedem isso, e resolvemos os três na sua origem.

Os números perdem o seu tipo. Um valor como 2,0, após passar por um formato de dados comum, regressa como 2. Para um ser humano, é a mesma coisa; para a sintaxe fixa, é uma frase diferente. No nosso sistema, cada valor é armazenado com o seu tipo, e a publicação é interrompida assim que surgir sequer um número sem tipo.

As designações, por si só, não têm significado. Cada nome de campo deve remeter para um significado unívoco num dicionário; caso contrário, o campo desaparece silenciosamente durante a conversão e o selo não o abrange. No nosso sistema, cada dicionário está disponível localmente e nunca é obtido através da rede; um nome de campo desconhecido interrompe a assinatura, em vez de apresentar silenciosamente um resultado vazio.

As entradas necessitam de nomes fixos. Cada entrada no documento possui, no nosso sistema, um identificador fixo, para que a sintaxe permaneça a mesma em cada execução, em vez de atribuir novos nomes auxiliares de cada vez.

A parte mais delicada reside na chave própria do fabricante. Para cada emissão, é necessária uma chave adicional de curta duração, com a qual os campos divulgáveis são assinados individualmente. Esta chave é gerada e descartada pelo próprio fabricante. Se estivesse na nossa posse, poderíamos inventar campos individuais posteriormente. Cada passaporte ostenta dois selos deste tipo: um do fabricante e outro da Transpareo, mesmo para um campo divulgado individualmente.

Para nós, este esforço é justificado. Cada passaporte é assinado no momento da publicação e encadeado à versão anterior, e o arquivo inalterável de dez anos entra em vigor assim que os passaportes forem registados no Registo DPP da UE. Assinar cada campo, em vez de todo o bloco, constitui uma extensão deste núcleo, não um acréscimo.

Onde nos encontramos

Optámos pela prova, para todos os leitores, porque um selo deve significar uma coisa única, independentemente de quem o observe. Quem quiser ver como funciona: os dois passaportes de exemplo com links acima podem ser verificados diretamente no navegador, sem necessidade de consultar um servidor.

Perguntas sobre este artigo

Existe alguma norma que imponha a assinatura campo a campo?

Não. A norma europeia EN 18239, relativa aos direitos de acesso no DPP, exige que o acesso seja controlado campo a campo, e um filtro no servidor cumpre integralmente esse requisito. Tornar os campos divulgados passíveis de verificação é uma decisão nossa e não um requisito imposto por qualquer entidade reguladora. Consideramos que este esforço se justifica, pois todo o sentido de um passe assinado reside no facto de ninguém ter de confiar na plataforma. O estatuto destas normas está descrito na nossa publicação sobre as normas harmonizadas.

Apenas divulgamos dados públicos. Será que precisamos disso?

Provavelmente não, e é isso mesmo que afirmamos. Uma assinatura que abrange todo o documento cobre um passaporte cujos campos são todos públicos, sendo significativamente mais económica de implementar e manter. A validação campo a campo justifica-se assim que surge um segundo grupo-alvo, como uma rede de reparação, uma empresa de reciclagem ou uma autoridade a quem, de outra forma, entregaria excertos sem selo. Ambos os procedimentos são normas abertas do W3C (ecdsa-sd-2023 para a assinatura por campo); qualquer ferramenta que domine a norma pode verificá-las, e ambas funcionam atualmente no Transpareo Time Machine, no passaporte de uma t-shirt e no passaporte de uma bateria.

É possível apagar posteriormente os dados pessoais sem invalidar o passaporte?

Sim, e esta parte é, de facto, exigida pela legislação europeia. O Regulamento Geral sobre a Proteção de Dados confere às pessoas o direito de solicitar a eliminação dos seus dados pessoais, e um registo de dados assinado como um bloco não pode cumprir essa exigência sem destruir a sua própria assinatura. Uma vez que, neste caso, cada campo é definido individualmente, é possível remover um único campo, enquanto todo o resto continua a ser válido, sem necessidade de reemissão e sem que o histórico de versões seja comprometido. Os campos que a lei exige que sejam conservados permanecem inalterados.

Quem detém a chave de assinatura?

Cada passaporte ostenta dois selos, e um deles pode ser o seu. Cada emissão requer, além disso, uma chave de curta duração que assina individualmente os campos divulgáveis; esta é gerada e descartada pelo próprio fabricante, pois, se ficasse na nossa posse, poderíamos inventar campos individuais posteriormente. Verificamos o selo recebido em relação à chave pública registada antes de o considerarmos fiável. Cada passaporte ostenta, assim, dois selos de duas entidades independentes, tanto para um campo divulgado individualmente como para o conjunto completo de dados.

Será que um passaporte ainda será válido daqui a dez anos?

É precisamente aí que reside o esforço. A assinatura por campo calcula com base nos dados individuais de um documento, em vez de nos seus bytes; por isso, a mesma forma fixa de escrita tem de ser reproduzida, carácter a carácter, uma década mais tarde. Três fatores comprometem essa precisão, e nós eliminámos todos eles na sua origem. Cada valor é armazenado com o seu tipo, cada dicionário encontra-se nas nossas instalações e nunca é obtido através da rede, e cada entrada possui um identificador fixo. O arquivo imutável de dez anos está criado e entra em vigor assim que os passaportes forem registados no registo da UE. Mais informações sobre este assunto na nossa análise do regulamento relativo ao registo.

Atualizações relativas aos níveis de acesso e comprovativos

Divulgação seletiva, assinaturas e o desenvolvimento das normas DPP - um resumo mensal diretamente na sua caixa de entrada.