janeiro 05, 2014

[Segurança] Engenharia reversa dos tokens de autenticação

Recentemente, o Thiago Valverde publicou um artigo em seu blog, chamado "Reverse engineering my bank's security token", em que descreve como ele fez a engenharia reversa nos tokens de autenticação utilizados para acesso ao Internet Banking do Bradesco. Rapidamente o artigo foi tirado do ar, mas é possível ver uma cópia dele no cache do Google.



Conforme descrito em seu artigo original, o Thiago descobriu como funciona a versão para celulares Android do token do Bradesco e, com base no algoritmo do token e em uma chave criptográfica armazenada nele, o conseguiu criar um clone de seu token utilizando um Arduino, como mostra o vídeo abaixo.



Existe um algoritmo padrão de mercado para criar os tokens OTP ( "One Time Password"), chamado OATH (sigla criada a partir de "Open Authentication") - que, inclusive, é um padrão que tem sua própria RFC. Desde que foi criado, muitos fabricantes adotaram este padrão, embora alguns fabricantes mais antigos e tradicionais de tokens (como RSA e Vasco) ainda utilizem seus algoritmos proprietários.

O padrão OATH utiliza um algoritmo aberto para geração das senhas, cuja especificação está disponível no próprio site do projeto: é, basicamente, um algoritmo que utiliza uma "semente" única (um valor único para cada token), uma espécie de contador (que pode ser baseado em tempo, isto é, utilizando um relógio para medir o tempo desde um momento inicial) e combina isso tudo utilizando um algoritmo de hash criptográfico (os mesmos utilizados para fazer assinaturas digitais), o HMAC-SHA-1.


Ou seja, não há nenhum mistério e, muito menos, nenhuma ciência oculta no funcionamento destes tokens, que são amplamente utilizados para redes privadas de empresas (VPNs) e acessos a sites de Internet Banking em todo o mundo. No final das contas, independente do algoritmo utilizado, o segredo e a segurança dos tokens segue o mesmo princípio dos algoritmos de criptografia: está na chave, ou seja, na semente única que serve de base para cada token funcionar.

Nenhum comentário:

Creative Commons License
Disclaimer: The views expressed on this blog are my own and do not necessarily reflect the views of my employee.