Identidade Auto-Soberana — Parte 4: uPort

Mais do que uma prova de conceito — um projeto que já está sendo implementado.

Mosaico University
Mosaico University
8 min readJul 27, 2018

--

Por Juan Meleiro

Nos posts anteriores, discutimos o conceito de identidade auto-soberana, quais problemas resolve, e quais vantagens traz. O que não discutimos são muitas das questões concretas e detalhes com que eventuais implementações terão que lidar. Nesse contexto, vamos olhar para a plataforma uPort — um “sistema de identidade aberta para a Web descentralizada” — que talvez seja uma das primeiras plataformas de identidade digital de sucesso.

Resumindo os posts anteriores, num sistema de identidade auto-soberana usuário & senha são substituídos por certificados, de posse do usuário, assinados por autoridades certificadoras. Qualquer interação entre usuários usa esses certificados para comprovar afirmações (claims) sobre a parte afirmante. Assim, não é preciso fornecer informações demais e é possível estabelecer confiança na validade de certos dados sem relacionamento prévio e sem prova.

Mas existem algumas questões práticas que não discutimos.

Problemas práticos

Primeiramente, o mundo é um lugar incerto — e chaves podem ser perdidas. No caso de chaves físicas, é possível esquivar esse problema (afinal, toda porta pode ser aberta com força bruta suficiente). No mundo digital, é preciso muito mais poder computacional para derrubar certas chaves do que está disponível para um usuário médio. Uma possível solução para esse problema seria “cada um por si”. Mas pode ser uma solução ingênua se o que queremos é que a tecnologia se popularize. O usuário final não quer esse tipo de preocupação, quer a segurança de que não irá perder todos os seus dados. Para que a tecnologia se popularize, é preciso torná-la mais humana (Braendgaard (2017)).

Em segundo lugar, existem questões mais logísticas. Embora seja possível verificar um certificado checando a validade da assinatura, ainda é necessário obter essa assinatura de alguma forma. Isso se torna efetivo somente se há alguma maneira padronizada de acessar as chaves de qualquer autoridade certificadora. Uma solução é um repositório centralizado — seja fisicamente ou numa blockchain.

Além disso, relacionado ainda à incerteza-do-mundo, está o fato de que chaves privadas podem ser, e eventualmente são, comprometidas. Nesse caso, o que impede qualquer um que tenha acesso a elas de usá-las? A resposta é: um mecanismo de revogação de chaves.

Um sistema do tipo também está acoplado à possibilidade de transferir a propriedade de uma identidade. Afinal, se o que queremos é uma identidade persistente¹, pouco adianta dispor unicamente de um botão de autodestruição. No caso da perda de chaves privadas, é necessário alguma forma de recuperá-las. Ou seja, de transferir sua posse a um novo contrato. Essa funcionalidade não serve só para isso: identidades não individuais, como as de uma empresa, podem estar sob controle de alguém só temporariamente; e para além desse tempo uma lógica sofisticada (talvez uma DAO) possa controlar a transferência de sua posse.

Por fim, retornamos à ideia de uma tecnologia “mais humana”. Talvez um dos motivos que Bitcoin não tenha se popularizado mais seja o fato de que suas interfaces são pouco amigáveis. É muitas vezes desconfortável ficar copiando endereços hexadecimais para lá e para cá, com a constante preocupação de que se pode cometer um erro e queimar todas essas moedas. Além disso, para muitos contratos na Ethereum, o usuário está mais interessado em usar o contrato do que pensar sobre os detalhes envolvendo Ether e o preço de Gas. É possível abstrair esses detalhes? Criar uma interface que seja amigável o suficiente para ser adotada em larga escala?

Como a uPort aborda todas essas questões?
Há, de grosso modo, duas classes de problemas a serem resolvidos: as questões logísticas, e as questões de interface.

Logística

No primeiro grupo estão as necessidades de lidar com perda de chaves privadas, acesso a chaves públicas, a revogação e transferência de chaves e identidades em geral. A todas essas questões a resposta da uPort é (como já esperávamos) blockchain. Afinal, uma blockchain é simplesmente isso: um livro-razão público, descentralizado, e com o histórico inalterável. Já discutimos em outros posts as vantagens da descentralização, mas mesmo os outros aspectos são exatamente o que precisamos: para busca de chaves públicas, precisamos de uma base de dados pública; para revogação e transferência de identidades, um livro-razão com controle de escrita²; a perda de chaves privadas é mais complexa, mas ainda assim pode facilmente resolvida com smart-contracts.

Alguns dos detalhes são os seguintes:

Uma identidade em uPort consiste em dois smart-contracts na Ethereum: um proxy (Proxy), que representa a identidade persistente de um usuário, e um gerenciador (IdentityManager), que permite que o usuário interaja com o proxy. (Kohlhaas (2017))

  • No caso da perda de chaves privadas que dão acesso ao gerenciador, há um mecanismo de recuperação social das chaves, pelo qual outros usuários confiáveis, previamente designados pelo usuário primário, podem votar para atribuir um novo gerenciador ao mesmo proxy (que estará sob o controle de novas chaves privadas do usuário primário) (Rush (2017)). A troca de proxy também é o mecanismo pelo qual se pode trocar o controlador de uma identidade (num caso institucional, por exemplo).
  • Procuram-se chaves públicas através do contrato uport-registry, registro uPort. Quando um aplicativo recebe uma mensagem assinada, também recebe um endereço na Ethereum. Esse endereço pode ser buscado na memória do smart-contracts, o que retornará um endereço na IPFS³ que aponta para um documento de identidade. Isso é feito para não sobrecarregar a blockchain com informações não essenciais para o estado do livro-razão. De fato, apenas uma [hash] é suficiente, pois é infalsificável. O resto pode estar disponível por outros meios.

É importante nota que, apesar de existir uma base de dados pública, nela somente estão guardados dados públicos. Afinal, não é numa blockchain, conhecida por sua transparência e imutabilidade, que se vão guardar dados privados. Esses dados, como os certificados, são todos guardados no smartphone do usuário. Da Ethereum só se acessam algumas informações básicas como chaves públicas.

Interface

A uPort resolve a interface fazendo com que todos os protocolos de requerimento de informações passem pelo seu aplicativo, criando uma experiência única de interação com o usuário — muito como um usuário médio está plenamente acostumado a usar usuários e senhas.

QR-Code apresentado no navegador, quando se pede para fazer login.

De maneira geral, sempre que se vai interagir com algum sistema que requer algum pedaço da sua identidade, esse sistema irá gerar um código QR que pode ser escaneado pelo aplicativo da uPort. Por trás dos panos, o sistema começa a constantemente monitorar a chegada de respostas. Caso o usuário aprove o acesso às informações que o aplicativo indique, elas serão enviadas ao sistema original, que então as pode verificar ao validar suas assinaturas. Assim, pode ser feito login sem digitar absolutamente nada.

De forma similar, seria possível compartilhar informações relevantes com qualquer web-app. Por exemplo, um banco poderia verificar a sua identidade. Seria possível assinar um documento eletronicamente. Ou mesmo provar a sua maioridade ao entrar num bar, com o certificado adequado⁴.

Por fim, existe a questão do Ether. É possível assinar transações na Ethereum usando o uPort ((“Ethereum Transaction Flow” [s.d.])). No entanto, em nenhum momento é necessário lidar com Ether (o que seria de se esperar, para pagar taxas de transações). Mas a uPort criou um sistema que chamam de “estações de reabastecimento”, que automaticamente enviam o Ether suficiente e lidam com o preço de Gas nos bastidores. O usuário final nem fica sabendo do que aconteceu (embora pudesse, se quisesse).

Pedido de liberação de informação, apresentado no aplicativo depois de se escanear o QR-Code

Aplicação: ZUG ID

Zug ID é “a primeira implementação ativa de uma identidade auto-soberana emitida pelo governo na Ethereum”⁵, em Zug (como o nome indica), na Suíça.

A interface é, como planejado, similar ao que já vimos. Primeiro, um cidadão cria uma identidade ao baixar o aplicativo da uPort. A seguir, pode “logar” no site da cidade ao escanear um QR-Code e autorizar a interação, pelo aplicativo. Uma vez que tenha fornecido sua data de nascimento e número de passaporte⁶, é pedido que se dirija ao “escritório de registro de cidadãos”, onde sua identidade será confirmada. Feito isso, o “escrivão” da cidade, cuja identidade uPort está autorizada a manejar a identidade uPort da cidade (como pontuamos antes), envia ao usuário requerente o certificado de identidade. A partir desse ponto, todas as interações com o Estado podem ser feitas pela Internet⁷. A identidade do cidadão pode ser comprovada com os mecanismos da uPort — tudo o que precisa fazer é escanear um QR-Code. (Kohlhaas (2017))

Benefícios

Como nota final, os benefícios de um sistema de identidade e ICP como a uPort vão além de convicções sobre soberania sobre a própria identidade, embora isso seja importante. Mais relevante para possíveis adoções dessa tecnologia é que ela funciona. Mais do que isso, devolver a propriedade da identidade para o cidadão não vem com custos adicionais, mas sim com economia. Porquê os dados são descentralizados, uma autoridade certificadora (como a prefeitura) não precisa de uma base de dados de identidades. Não só isso reduz custos como também reduz riscos — é mais difícil hackear um sistema distribuído, já que as informações não estão num ponto único de falha. Afinal, também é uma solução a médio ou longo prazo. Por não armazenar muitos dados na blockchain, seu crescimento é controlado. É possível escalar o sistema para bases muito maiores de usuários.

¹E, de fato, isso é uma das coisas que identidades auto-soberanas buscam concertar. Hoje, nossas identidades digitais
são fragmentadas. O “eu” registrado no Facebook não é o mesmo “eu” registrado na Google. Uma identidade persistente
é o que permite evitar a redundância e vulnerabilidade dessa multiplicidade de cadastros.

² Há condições sobre quem pode gerar uma transação. O exemplo clássico: somente os donos de certas moedas pode
gastá-las.

³Exploraremos a InterPlanetary File System no futuro. Por enquanto, pode-se entendê-la apenas como uma grande
base de dados, que no caso contem informações sobre identidades.

⁴Caso você queira testar a interface por conta própria, você pode baixar o app da uPort, e então clicar em “Try uPort” na
tela das configurações.

⁵O que também aponta o fato notável de que “auto-soberana” não significa “sem dependência de autoridades”, mas sim
que, um certificado, uma vez emitido, é de posse do usuário. Para mais, veja Sean (2017)

⁶ Note que esse tipo de informação não poderia ter sido pelo próprio sistema, porque o usuário ainda não tem uma
identidade certificada. Esse processo serve exatamente para certificar a identidade. Uma vez que isso aconteça, ele não
mais precisará fornecer esses tipos de dados quando interaja com a cidade.

⁷Não que sejam, de fato, feitas. O projeto está em fase de testes.

Referências

Braendgaard, Pelle. 2017. “What is a uPort identity? uPort”. 27º de fevereiro de 2017. https://medium.com/uport/what-is-a-uport-identity-b790b065809c.

“Ethereum Transaction Flow”. [s.d.]. Acessado 3º de julho de 2018. https://developer.uport.me//flows/tx.

Kohlhaas, Paul. 2017. “Zug ID: Exploring the First Publicly Verified Blockchain Identity. Medium”. 6º de dezembro de 2017. https://medium.com/uport/zug-id-exploring-the-first-publicly-verified-blockchain-identity-38bd0ee3702.

Rush, Nate. 2017. “Making the uPort Smart Contracts Smarter. uPort”. 14º de agosto de 2017. https://medium.com/uport/making-the-uport-smart-contracts-smarter-e1798d8c1cf9.

Sean. 2017. “Don’t forget what self sovereign identity system uPort doesn’t claim to do. Decentralize Today”. 28º de fevereiro de 2017. https://decentralize.today/dont-forget-what-self-sovereign-identity-system-uport-doesn-t-claim-to-do-1f43ca228575.

--

--