Identidade Descentralizada com Sovrin – parte 2 | iMasters
Tem 32 artigos publicados com 102400 visualizações desde 2017
Design Patterns com JavaScript & TypeScript: Padrões Estruturais
O Lado Escuro do JavaScript: O retorno
Design Patterns com JavaScript & TypeScript
No último artigo conversamos sobre como poderíamos criar um sistema de identidade decentralizado usando blockchain e Sovrin de forma rápida e com sucesso. Falamos um pouco sobre os problemas atuais e os problemas que poderíamos resolver utilizando esta nova tecnologia.
Comentamos um pouco sobre relacionamentos, chaves, identificadores e os chamados claims (reivindicações) e tudo isso em uma pequena história sobre Jane, nossa personagem principal, e suas interações com outras entidades como: escolas, governo, bancos, emprego e etc. Como o artigo anterior ficaria muito comprido se continuássemos falando de todos os conceitos restantes do Sovrin, então, neste artigo vamos continuar de onde paramos!
Os claims que comentamos no artigo anterior podem ser reutilizados e modificados para servir a um propósito específico usando o que é chamado de Disclosure proof (prova de divulgação). Essas provas permitem que os claims possam ser utilizados sem que o sujeito principal desse claim precise divulgar informações desnecessárias.
Vamos supor que nossa personagem principal, Jane, está agora aplicando para uma vaga de emprego, para isso, ela precisa provar que estudou em algum lugar, referências do seu antigo emprego, informações de que ela está de acordo com o governo e não tem nenhuma pendência com o Estado e também informações sobre ela mesma. Mas Jane deveria poder escolher os atributos destes claims que ela quer compartilhar sem ter que compartilhar o conteúdo completo dos mesmos, por exemplo, ela pode querer provar que ela tem mais de 18 anos simplesmente divulgando a sua data de nascimento, mas não o resto das suas informações pessoais, ou então que ela está em um determinado ano de sua faculdade sem precisar divulgar outras informações sobre a mesma. Para isso ela pode criar uma disclosure.
Uma disclosure usa um master secret, que é uma chave especial, para poder ser criado usando uma classe algoritmos chamada de zero-knowledge proof, que é um modelo de algoritmo criptográfico que basicamente diz que uma parte – chamada de desafiante (ou prover) – pode provar para outra parte (o verificador) que ele sabe de uma determinada informação X, sem dizer nada além disso. A grande sacada desses algoritmos é que é trivial provar que uma parte possui o conhecimento sobre o valor X simplesmente revelando ela, a dificuldade está justamente em provar essa informação sem revelar ela própria ou qualquer outra coisa relacionada a mesma.
Usando uma disclosure proof, o empregador pode saber as informações que Jane quer que ele saiba sem de fato saber todo o resto que Jane sabe sobre ela mesma. Veja que no losango laranja, Jane inclui diversas partes de diversos claims anteriores, o 1, 2 e 5 relacionados a interações diferentes e também a ela mesma, e agora temos um trapézio ms que é o master secret usado por Jane para criptografar a disclosure. Desta forma o empregador que receber a disclosure poderá verificar cada um destes atributos como pertencendo a parte que fez, fato a asserção (no caso, Jane). O empregador possui a chave de verificação de Jane que permite que ele valide os claims que Jane faz. Mesmo que os algoritmos utilizados por trás dessas verificações sejam complexos, Jane pode, no futuro, revelar mais informações a seu empregador a medida que sua relação com ele progride, mantendo uma experiência natural de uso.
Informações correlatas
Um grande problema que o Sovrin resolve de forma impressionante é o problema do correlacionamento de informações. Por exemplo, imagine que o empregador tenha um amigo no governo, e ele quer saber se as informações são de Jane ou não.
Um grande problema de criptografia hoje é que é possível, por mais que sejamos anônimos, correlacionar dados de fontes diferentes, como uma compra em uma padaria em um local X, a ida em um mercado próximo de X e um histórico de localizações para dizer com uma margem grande de certeza de que uma determinada pessoa mora ou trabalha perto de X, por exemplo, se qualquer pessoa analisar um histórico de localização de 7 dias sobre qualquer um, já vai saber dizer, com uma margem de erro pequena, aonde aquela pessoa mora e trabalha, isto sem sequer falar com a pessoa. O correlacionamento de informações é algo que deve ser levado muito a sério porque a mesma lógica que temos para proteger nossos dados pode também ser usada para descobrir a origem deles.
Os claims e disclosures, por outro lado, não podem ser correlacionados, porque cada um deles foi criado usando uma chave diferente, então, o empregador não poderia pedir a um amigo no governo para confirmar as informações, já que ele também não saberia dizer se aquele claim é ou não da mesma pessoa com certeza. E isto vale para todos os conceitos que temos.
Usando disclosures para verificar dados de terceiros
Jane agora tem um novo relacionamento com uma loja. Isso pode ser afirmado já que a loja possui a chave de verificação de Jane e vice-versa. Mas ela está com um pé atrás de realizar a compra porque não sabe se a loja é confiável, ela decide então pedir a loja uma confirmação de que a mesma está em dia com a câmara de comércio e com o governo local.
Da mesma forma que Jane pode enviar uma confirmação sobre suas informações para seu empregador, a loja pode enviar a Jane uma disclosure obtida a partir de um claim da câmara de comércio – que foi enviado pela própria câmara para a loja – e então, da mesma forma que seu empregador verificou suas próprias informações, ela também pode verificar a veracidade da loja com o disclosure que acabou de receber
Veja que agora ela tem um outro quadro preenchido com as provas que ela recebe de outros (proofs from others), nesta seção ela possui tanto a chave verificadora da câmara de comércio (que também é pública pois pertence ao grupo de chaves que deve ser conhecido por todos), que é a chave Q, quanto a chave da loja, a chave R. E a loja possui uma nova chave E de Jane que foi enviada somente para essa interação. Perceba como é possível agrupar e separar todas as interações que foram feitas em pequenos grupos de forma que é fácil saber e contar o que temos feito até agora, mas ao mesmo tempo torna a verificação externa e correlacionamento de dados impossível.
Ainda temos mais alguns conceitos na manga para vermos sobre Sovrin, então fiquem ligados no próximo post onde vamos concluir nosso aprendizado sobre essa nova forma de identidade que pode mudar o mundo!