O sistema de [in]segurança do Banco do Brasil

Primeiro eu gostaria de falar oi para os internautas: oi internautas. Agora eu queria falar de uma coisa muito séria. CAPTCHAs são ridículos. Sim, CAPTCHAs são falhos e a maioria é facilmente burlável. Opa, você não sabe o que é CAPTCHA? CAPTCHAs são aquelas letrinhas que você não consegue digitar quando quer fazer alguma coisa na internet, tipo um perfil falso no orkut para estalkear aquela gatinha. O termo CAPTCHA significa Completely Automated Public Turing test to tell Computers and Humans Apart, que, em tradução livre, quer dizer “método inseguro e sádico para descobrir se você é um humano ou não”.

Fonte: http://xkcd.com/632/

Fonte: http://xkcd.com/632/

Mas o motivo desse post não é a existência do CAPTCHA em si, e sim algo que eu descobri recentemente. Não sei há quanto tempo o Banco do Brasil faz isso, mas eu fui fazer uma trasferência de 100 milhões de reais hoje para pagar a conta do bar que meu amigo Bill Gates pagou ontem, e me deparei com essa surpresinha no site do net banking do Banco do Brasil:

3T8O acertei??

Sim, meus caros. Um CAPTCHA! Neste momento você deve se perguntar: “poxa, como será que eles fazem esse texto ser visto apenas por humanos e não por computadores, né?” O que você não sabe porque ninguém quer dizer é o seguinte: esse texto é tão facilmente lido por computadores quanto é por humanos. Na verdade, vai demorar mais ensinar uma criança a ler números do que ensinar um computador a ler esses números.

Tanto é que eu, que nunca trabalhei com CAPTCHAS e tenho apenas o conhecimento básico de visão computacional (que são técnicas para se extrair informações de imagens) , demorei menos de 5 minutos para fazer meu computador lê-lo.

Sim, 5 minutos. E isso não é um eufemismo. Ok., eu usei o Photoshop e um OCR (Optical Character Recognition, que numa tradução livre significa “Bagulho Loko Que Lê Os Texto Na Moral”) já pronto. Mas o ponto é o seguinte: se eu faço isso com o meu Photoshop supostamente legalizado e com um OCR online, qualquer um definitivamente pode fazer isso em um programa automatizado.

Eu só não faço porque, se o Banco do Brasil prefere por um CAPTCHA fedido no seu site ao invés de colocar um sistema de assinaturas digitais apenas para economizar dinheiro na sua ” incansável busca pela segurança do dinheiro dos seus clien zzzzz ronc”, ele deve ser mau caráter o suficiente para tentar me processar por automatizar a quebra e expor ao ridículo o ingênuo sistema de segurança que eles tentam vender. (E é claro que eu também não faço porque tenho preguiça e daria trabalho fazer algo bonitinho).

A quebra desse CAPTCHA é simples. Como em todo programa de visão computacional, há primeiro a fase de pré-processamento e depois a leitura da imagem para extrair o texto. A fase de pré-processamento se enquadra em tornar o CAPTCHA mais bonito, cheirosinho e cuti-cuti para que o algoritmo escolhido para leitura (como, por exemplo, redes neurais artificiais) possa efetivamente extrair as informações necessárias da imagem, que no caso são esses números.

A primeira parte da fase de pré-processamento consiste em retirar o ruído artificial inserido no CAPTCHA (é assim que eles pretendem fazer com que o computador não leia o texto). O que é simples, posto que o ruído também é bem simples. Neste caso específico, eu apenas “binarizei” a imagem (Thresholding) e posteriormente passei um filtro de mediana (median filter) para retirar o ruído restante. O resultado final foi:

ainda acho que é 3T8O

Percebem como essa imagem está mais nítida e legítvel que a anterior? Pois é; e se ela está mais simples para nós, ela também está mais simples para um computador. Também é legal ficar registrado que thresholding e um filtro de mediana são bem simples de serem implementados em um programa de computador.

Como fiquei com preguiça de treinar uma RNA (Rede Neural Artificial) para ler essa imagem, preferi usar um OCR on-line gratuito para sua leitura. As vantagens são que, para a demonstração da “prova de conceitos”, eu não preciso avançar muito mais no pré-processamento e que o OCR em questão já está treinado e funcionando.

Bem, o resultado foi que o OCR leu a imagem; “3780″ foi o texto extraído. E se vocês duvidam da minha gloriosa e honrada palavra, copiem a imagem acima para seus computadores e enviem para o site do OCR (curiosamente, ele também usa um CAPTCHA, embora o dele seja melhor).

Enfim. Esse CAPTCHA é um sistema quase infantil de segurança. Se vocês acham que retirar o dinheiro de baixo do colchão para por no banco foi uma boa atitude, talvez estejam enganados… Na verdade, a única segurança que o público tem ao colocar dinheiro no banco não está no fato dele ser supostamente mais seguro. Está no fato de que as leis obrigam o banco a te ressarcir caso sua conta seja furtada.

Na prática, a segurança do CAPTCHA, senhas de cartões, microchips, chaveiros com geradores de números aleatórios (?), bloqueios de cartões quando esses são clonados etc. Enfim, todas as supostas medidas de segurança – sejam elas realmente seguras ou não - são única e exclusivamente para aumentar a segurança do próprio banco, que é obrigado legalmente a te ressarcir caso seu dinheiro seja tomado de você da sua conta.

Por isso, banqueiro algum se importa: se o investimento na segurança é maior que o prejuízo com as fraudes sofridas, por que gastar dinheiro em segurança? Se é possível economizar para aumentar os lucros – mesmo que seja ao custo da sua dor de cabeça – é isso o que será feito.

Leitura recomendada: O que há de errado com o Projeto Azeredo? por Tulio Vianna.

Francisco de Souza Junior

Desenvolvedor de sistemas embarcados de Veículos Aéreos Não Tripulados (massa né?) na XMobots Aeroespacial e Defesa.

Website - Twitter - Facebook - More Posts

  • Usuário

    O BB oferece acesso por meio de certificado digital, conforme link “https://www2.bancobrasil.com.br/aapf/login.jsp?aapf.A3=sim”. Até onde sei, porém, esse meio de acesso é opcional ao cliente e não obrigatório. É possível e provável, porém, que em um futuro próximo passe a ser obrigatório.

    • http://twitter.com/Bullshico Francisco de Souza Junior

      Bacana. Bom saber!

  • http://www.facebook.com/weslly.honorato Weslly Honorato

    Já vi casos piores: http://pro.sony.com/bbsc/jsp/forms/generateCaptcha.jsp

    (sim, tá em texto puro)

    • http://twitter.com/Bullshico Francisco de Souza Junior

      hahahaah. Que horrível! Mas pelo menos isso não está em um banco, né? Esses CAPTCHAS não servem nem para caixa de comentários de sites pornôs gratuitos com filmes caseiros, quanto mais um banco de verdade!

  • http://twitter.com/ars_nihili ander

    Eu estava lendo sobre reconhecimento de imagens usando redes neurais esses dias =^.^=

    • http://twitter.com/Bullshico Francisco de Souza Junior

      Bacana. O que tava vendo especificamente?

      • http://twitter.com/ars_nihili ander

        Estava perambulando pela biblioteca e vi esse livro sobre redes neurais e lógica difusa. Achei interessante e peguei.

  • Crsarti

    Não sei também como vai aumentar a segurança. São apenas mais uns caracrteres para se digitar. Esse serviço de captcha do BB começou neste mês (agosto/2011) e parece mesmo sem utilidade para quem já se apoderou de alguma senha de internet e do cartão.

    • http://twitter.com/Bullshico Francisco de Souza Junior

      Sem duvida… A ideia é proteger eles mesmos de fraudes em lotes, imagino eu.

  • Felipe Oliveira

    cara, muito bom esse artigo!