🔐 Uma proposta para eliminar as senhas de todos os serviços online
Proposta teórica para eliminação da senha e uso do celular, aliado a um serviço na nuvem, como alternativa para identificação de usuários em serviços online.
A senha normalmente é a parte mais frágil de um sistema de segurança. Por praticidade, pessoas tendem a escolher senhas fáceis de lembrar e repeti-las em múltiplos sites, o que reduz drasticamente a segurança de qualquer serviço online.
Por enquanto estou chamando este serviço de Cloud 2F Login. É um nome bobo e descritivo demais, mas serve para o propósito deste artigo. O Cloud 2F Login é uma proposta de serviço na nuvem, que usa o padrão oAuth para autorizar o acesso à sites e serviços online.
Para exemplificar o processo de autenticação sem senha, vamos supor que Alice queira fazer login em lojadecanetas.com:
- Alice abre lojadecanetas.com;
- Alice preenche seu ID pessoal em lojadecanetas.com, este ID precisa ser único, como um endereço de e-mail, mas não precisa ser secreto;
- lojadecanetas.com pergunta para o Cloud 2F Login: “posso autorizar a entrada deste ID?” e aguarda a resposta;
- Cloud 2F Login pergunta para Alice “é você tentando entrar na lojadecanetas.com?” através de um canal de comunicação independente (notificação push, SMS, ligação telefônica, e-mail);
- Alice responde o Cloud 2F Login: sim, sou eu;
- Cloud 2F Login responde à lojadecanetas.com “sim, pode autorizar a entrada deste ID”;
- lojadecanetas.com autoriza a entrada de Alice.
Alice entrou em lojadecanetas.com sem precisar digitar um password e a lojadecanetas.com não precisa se preocupar em armazenar com segurança as senhas de cada cliente.
O mesmo processo pode ser usado também em autenticação em dispositivos móveis, conforme diagrama abaixo.
Algumas características importantes da tecnologia que proponho:
- No ponto 4, o Cloud 2F Login precisa entrar em contato com Alice para perguntar se é ela mesma tentando acessar a lojadecanetas.com, por velocidade e praticidade, esta verificação idealmente deve ser feita por notificação push no celular, mas caso tal recurso não esteja disponível, a verificação também pode ser feita por SMS, ligação telefônica, e-mail, painel de controle na web ou qualquer outro meio disponível no momento da autenticação;
- O ID de Alice em Cloud 2F Login pode ser um username, endereço de e-mail, número de telefone, número de usuário (como tínhamos no ICQ) ou qualquer outro identificador único, mas não precisa ser secreto, já que a entrada só será autorizada quando Alice confirmar sua identidade para o Cloud 2f Login.
- O processo de comunicação entre a lojadecanetas.com e o Cloud 2F Login é feito com o protocolo de autorização oAuth, uma tecnologia já bem estabelecida e com segurança robusta, usada por Facebook, Google e outros gigantes;
- Caso Alice não esteja em posse de seu celular, é possível que o pedido de autenticação seja apresentado em um painel de controle na Web;
- Ainda há o risco de comprometimento do dispositivo de autenticação (celular), comprometimento do serviço Cloud 2F Login e outros riscos inerentes à centralização de sistemas; o objetivo desta proposta não é eliminar todos os riscos de uma autenticação digital, apenas propor uma solução melhor que a dupla usuário/senha usada atualmente.
Esta ainda é uma proposta embrionária, que pode ser implementada por qualquer desenvolvedor ou time de desenvolvedores interessados em abraçar a ideia. Também estou aberto a sugestões, desafios e considerações, por favor colabore abaixo nos comentários!
* a solução que proponho foi apresentada de maneira muito parecida também pelo Google em 22 de dezembro de 2015. O diferencial que proponho é o aplicação de uma plataforma aberta, independente e possivelmente pulverizada. Teste agora mesmo o login sem senha do Google.
[ATUALIZAÇÃO] O CristianTM comentou sobre a iniciativa a FIDO Alliance, que tem uma proposta muito parecida para login sem password, e já está bastante desenvolvida. Veja o diagrama abaixo.
Marco, a idéia é boa mas o que voce propõe é o 2FA travestido de 1FA.
O conceito é exatamente igual ao 2FA, bastante difundido na internet.
2fa exige que vc preencha a senha no f1.
o que estou propondo é diferente, tanto que o Google está testando desde 2015-12.
Exato, Marco. Mas é o que eu falei: é igual ao 2FA (sendo que sem o primeiro fator – que usualmente é o ‘knowledge factor’ ou ‘algo que voce sabe’). A diferença prática é a eliminação do primeiro fator.
Sobre os testes: O Google mudou de ideia, e tem buscado uma abordagem relacionada ao fingerprint de dispositivos: http://www.androidcentral.com/project-abacus-atap-project-aimed-killing-password
Acho que você está enganado. A matéria que você mandou é de maio de 2015, a que eu linkei no meu artigo é de dezembro de 2015. A minha referência é mais recente.
Ok, então la vai uma de 5 dias atrás:
http://www.independent.co.uk/life-style/gadgets-and-tech/news/google-project-abacus-trust-api-passwords-a7047651.html
Max, acho que você está equivocado http://googlediscovery.com/2016/06/21/google-agora-autoriza-o-acesso-sua-conta-partir-de-um-toque-no-celular/
Se a ID vai ser pública eu fico aqui imaginado se alguém quiser te sacanear o tanto de notificação que você vai ficar recebendo no celular. E outra pessoa pode estar tentando acessar um site com a sua ID ao mesmo tempo que você. Isso nem é tão fantasioso pensando em pessoas famosas que tem vários seguidores.
Estes problemas já existem com telefone e email.
O problema do flood dá pra resolver com limite de requests, o problema do pedido de autenticação simultânea vc resolve gerando um token único no cliente pra cada request de autenticação, e aí tem como trackear pra qual request a pessoa autorizou.
BIG UP! Thanks :)
Trabalhei em uma empresa onde fizemos algo parecido. O usuário entrava com o login e aí aparecia um QRCode que ele deveria ler com o nosso aplicativo que validava e já liberava o login na página. Um ponto sensível dessa solução é quando o usuário deve registrar o seu dispositivo, se for em um site aí vai no problema da senha já q o usuário não tem nada cadastrado pra 2f provavelmente ele ainda precisaria da senha. No nosso caso como era o banco, era obrigado a pessoa ir pessoalmente no banco pra registrar o dispositivo ou número
Gostei da sua proposta Marco e acredito que precisa de uma segurança bastante reforçada no servidor que concentra os dados do usuário para confirmar a autenticação. Um invasor poderia alterar esses dados para receber a confirmação da autenticação no dispositivo dele.
E periodicamente o usuário deve ser notificado para atualizar os dados, pois ele pode trocar o número do celular e esquecer de atualizar no serviço Cloud 2F Login.
Marco,
Como eu tinha comentado antes, é perigoso se apoiar em apenas um dos três tipos de autenticação (nesse caso o que você possui) pois em um curto período de tempo, alguém pode possuir o seu celular, correto?
Essa idéia poderia incluir algum outro fator (como o que você é, já que a intenção seria eliminar a senha) como a voz, digital, etc.
Obrigado pela sugestão. O celular não é apenas “o que você possui”, mas ele também precisa ser desbloqueado para ter a confirmação enviada após a notificação. Este desbloqueio depende do OS, pode ser por senha, digital, gesto ou outro meio ainda não implementado.
Vamos aguardar o desenvolvimento da iniciativa por outros desenvolvedores, ou até a solução do Google, para ver a direção que vão apontar.
Vide: http://googlediscovery.com/2016/06/21/google-agora-autoriza-o-acesso-sua-conta-partir-de-um-toque-no-celular/
Marco, você entrou numa área que muito me interessa (segurança).
Tem duas ideias que vão nessa linha que tem que ser consideradas, por já entrarem em alguns aspectos importantes das complexidades que existem no assunto quando você vai mais a fundo nele, e também por não serem restritas e fechadas a um sistema (ou nuvem) como parece ser a referência da iniciativa do google.
SQRL: https://www.grc.com/sqrl/sqrl.htm (muito parecido com o que você propõe, mas baseado em QRCode… a principio poderia existir um servidor no meio pra submeter isso via push pra você)
Fido Alliance: https://fidoalliance.org/ (essa tem grandes players investindo e é bem mais amplo)
Um problema grande a tratar é a questão de como associar seu ID a um telefone pela primeira vez, e como trocar de celular. E principalmente, penso ser fundamental, como o provedor do serviço ser impedido de roubar sua identidade.
Sensacional a FIDO Alliance! Obrigado pela dica :) Vou atualizar o post.
Perfeito o UAF STANDARDS porque une o que você possui (o dispositivo com o app) com o que você é (biometria), mantendo a segurança de usar o segundo fator é eliminando a necessidade do que você sabe (a senha).
Procura no Google por Bank ID, é um serviço de autenticação utilizado na Suécia e que está ligado a sua “carteira de identidade”.
Através dele é possível inclusive buscar o endereço do usuário e efetuar compras online sem registro prévio e com apenas 1 clique (de verdade). A Klarna (klarna.com) opera assim.
Já ouviu falar no OpenID?
É um projeto que surgiu já faz um tempo e tem como objetivo não só realizar a parte de login, mas também se tornar uma especie de centralizador de informações.
Por exemplo, digamos que a lojadecanetas.com precise que você informe além de seu login e senha. Seu endereço para realizar as entregas, com o OpenId não seria necessário informar o endereço novamente por que o site realizaria esta solicitação via Web Service e ele forneceria esta informação.
O Google e o Facebook acabaram adotando alguns pontos deste projeto e criando o OAuth 2.0, que é ferramenta utilizada por eles para autenticação em sites de terceiros.
Quando vi que a Mozila estava envolvida, até achei que o OpenId poderia ir para frente, mas o projeto acabou ficando meio de lado e outras empresas acabaram se destacando. Uma das discussões que mais aconteceram era com relação a essa centralização de dados, seria algo como colocar todos os ovos na mesma cesta.
Links úteis: developers.google.com/identity/protocols/OAuth2
developers.google.com/identity/protocols/OpenIDConnect
openid.net/connect/
Olha, gostei bastante da proposta, mas não sei dizer ao certo se seria 100% seguro. Ainda tenho algumas desconfianças com sistemas em nuvem.
Eu vou adorar se eu não precisar mais lembrar 350 senhas… rs