Quando estamos desenvolvendo um sistema web, eventualmente nos deparamos com os dados de autenticação dos nossos usuários: normalmente login e senha. Vamos fazer um pequeno exercício mental para verificar o quão seguros esses dados estão.
Pense por um instante nas informações mais importantes que você tem em um serviço online. Talvez seja seu email, talvez uma conta na sua rede social preferida, talvez alguma aplicação bancária. Pense na senha que você utiliza para esse serviço e, em seguida, lembre todos os outros serviços nos quais você utiliza essa mesma senha. O que aconteceria hoje se as informações guardadas em qualquer um desses bancos de dados vazassem? Muito possivelmente seus dados de login e senha do serviço principal também estariam comprometidos.
Vemos sempre por aí notícias de alguns sites famosos que sofreram algum vazamento de informações, como Dropbox, Patreon, etc..
Inclusive, você já checou se você foi vítima de algum vazamento de informações? Dê uma olhada no site “Have I been pwned?” e descubra.
Para resolver esse problema, temos uma solução que funciona como no mundo real. Você utiliza chaves diferentes para abrir a sua casa, o seu carro, o seu armário, etc. No mundo virtual, temos a mesma solução disponível: um chaveiro eletrônico. Um software que gerencia senhas aleatórias e seguras e, mais importante, diferentes para cada um dos serviços que você queira utilizar. O meu chaveiro favorito é o KeePassX, mas também existem vários outros por aí.
Pronto. Problema resolvido. Nossas senhas já estão guardadas em um chaveiro. Então discussão encerrada, certo?
Hmmmm, vamos com calma… Apesar da solução do chaveiro ser definitivamente superior, sabemos que a esmagadora maioria dos usuários nunca nem ouviu falar dela. Alguns até ouviram falar mas não utilizam. Usuários esses que utilizarão nossos serviços com a mesma senha que utilizam nos serviços que consideram mais importantes. Quem sabe o serviço mais importante de um usuário não seja exatamente o seu!
Para garantir que o seu serviço tenha uma ótima qualidade e seja confiável, precisamos garantir que os dados dos usuários estejam muito bem protegidos. Além disso, se grandes empresas como Patreon e Dropbox tem seus dados roubados, temos motivos o suficiente para acreditar que nenhum sistema é impenetrável.
Então como podemos fazer para nos assegurar de que, mesmo que os dados de autenticação dos nossos usuários sejam acessados, não seja possível que algum atacante os utilize?
Um atacante que tivesse acesso, teria muito mais dificuldade para desvendar as informações!
É aí que podemos utilizar a criptografia para deixar os dados irreconhecíveis para pessoas não autorizadas.
A criptografia como ferramenta para acesso aos dados
A criptografia transforma o conteúdo dos dados de uma maneira que apenas as partes autorizadas (no caso, você) possa ler.
Vamos ver um exemplo de uma técnica bem simples, aplicada sobre a senha password:
qbttxpse
Você consegue identificar como foi feita a transformação? Nesse caso, simplesmente trocamos cada uma das letras pela letra seguinte. Então a letra ‘p’ vira ‘q’, a letra ‘a’ vira ‘b’ e assim vai até o final da palavra.
Esse método é conhecido como Cifra de César, e foi utilizada pelo imperador romano Júlio César para esconder informações sigilosas. Nele, apenas quem sabe qual foi a transformação utilizada consegue resgatar a informação imediatamente. Quem não souber vai ter que tentar várias técnicas diferentes até conseguir chegar no texto original. Quando uma pessoa já sabe ou descobre qual foi a transformação feita, então dizemos que essa pessoa tem a chave para acessar a informação.
É claro que, no nosso caso, vamos utilizar uma técnica muito mais avançada para criptografar nossa informação! A figura abaixo mostra um exemplo de como poderia ficar guardada a senha password de maneira transformada.
Autenticação de forma segura com criptografia
Quando estamos desenvolvendo um sistema web, eventualmente nos deparamos com os dados de autenticação dos nossos usuários: normalmente login e senha. Vamos fazer um pequeno exercício mental para verificar o quão seguros esses dados estão.
Pense por um instante nas informações mais importantes que você tem em um serviço online. Talvez seja seu email, talvez uma conta na sua rede social preferida, talvez alguma aplicação bancária. Pense na senha que você utiliza para esse serviço e, em seguida, lembre todos os outros serviços nos quais você utiliza essa mesma senha. O que aconteceria hoje se as informações guardadas em qualquer um desses bancos de dados vazassem? Muito possivelmente seus dados de login e senha do serviço principal também estariam comprometidos.
Vemos sempre por aí notícias de alguns sites famosos que sofreram algum vazamento de informações, como Dropbox, Patreon, etc..
Inclusive, você já checou se você foi vítima de algum vazamento de informações? Dê uma olhada no site “Have I been pwned?” e descubra.
Para resolver esse problema, temos uma solução que funciona como no mundo real. Você utiliza chaves diferentes para abrir a sua casa, o seu carro, o seu armário, etc. No mundo virtual, temos a mesma solução disponível: um chaveiro eletrônico. Um software que gerencia senhas aleatórias e seguras e, mais importante, diferentes para cada um dos serviços que você queira utilizar. O meu chaveiro favorito é o KeePassX, mas também existem vários outros por aí.
Pronto. Problema resolvido. Nossas senhas já estão guardadas em um chaveiro. Então discussão encerrada, certo?
Hmmmm, vamos com calma… Apesar da solução do chaveiro ser definitivamente superior, sabemos que a esmagadora maioria dos usuários nunca nem ouviu falar dela. Alguns até ouviram falar mas não utilizam. Usuários esses que utilizarão nossos serviços com a mesma senha que utilizam nos serviços que consideram mais importantes. Quem sabe o serviço mais importante de um usuário não seja exatamente o seu!
Para garantir que o seu serviço tenha uma ótima qualidade e seja confiável, precisamos garantir que os dados dos usuários estejam muito bem protegidos. Além disso, se grandes empresas como Patreon e Dropbox tem seus dados roubados, temos motivos o suficiente para acreditar que nenhum sistema é impenetrável.
Então como podemos fazer para nos assegurar de que, mesmo que os dados de autenticação dos nossos usuários sejam acessados, não seja possível que algum atacante os utilize?
Um atacante que tivesse acesso, teria muito mais dificuldade para desvendar as informações!
É aí que podemos utilizar a criptografia para deixar os dados irreconhecíveis para pessoas não autorizadas.
A criptografia como ferramenta para acesso aos dados
A criptografia transforma o conteúdo dos dados de uma maneira que apenas as partes autorizadas (no caso, você) possa ler.
Vamos ver um exemplo de uma técnica bem simples, aplicada sobre a senha password:
qbttxpse
Você consegue identificar como foi feita a transformação? Nesse caso, simplesmente trocamos cada uma das letras pela letra seguinte. Então a letra ‘p’ vira ‘q’, a letra ‘a’ vira ‘b’ e assim vai até o final da palavra.
Esse método é conhecido como Cifra de César, e foi utilizada pelo imperador romano Júlio César para esconder informações sigilosas. Nele, apenas quem sabe qual foi a transformação utilizada consegue resgatar a informação imediatamente. Quem não souber vai ter que tentar várias técnicas diferentes até conseguir chegar no texto original. Quando uma pessoa já sabe ou descobre qual foi a transformação feita, então dizemos que essa pessoa tem a chave para acessar a informação.
É claro que, no nosso caso, vamos utilizar uma técnica muito mais avançada para criptografar nossa informação! A figura abaixo mostra um exemplo de como poderia ficar guardada a senha password de maneira transformada.
Hash criado pelo jBCrypt