quarta-feira, 30 de junho de 2021

O que é CAPTCHA?


Muitos ataques e acessos indevidos a sites são feitos com o uso de robôs de software - programas de computador - que simulam ser uma pessoa e acessam o site.  Saber identificar se quem (ou o que) está acessando o site é uma pessoa ou um robô pode ajudar a protegê-lo.

Por que robôs?
Um site pode ser usado indevidamente ou atacado por uma pessoa mal intencionada, manualmente. Por exemplo, a pessoa pode tentar descobrir a senha de entrada em uma área reservada do site, experimentando digitar várias senhas, para ver se acerta. 

Outro exemplo de ataque manual seria uma pessoa acessar o formulário de contato do site e em vez de mandar uma mensagem normal, digitar lá um link para um vírus e mandar. Se o funcionário da empresa que recebe as mensagens vindas do site estiver meio desatento, pode clicar no link e infestar a empresa de vírus.

Embora essas e muitas outras pilantragens possam ser feitas por pessoas interagindo manualmente com sites, na prática, os bandidos preferem usar robôs de software - programas de computador - para a grande maioria desses serviços sujos, em vez de fazer manualmente. 

Esses robôs (às vezes chamados de bots, abreviação do inglês robots) interagem com os sites simulando que são uma pessoa, um usuário comum. Porém, como um computador pode fazer tarefas repetitivas muito rápida e incansavelmente, o robô pode atacar milhares, ou milhões de sites e/ou atacar um mesmo site milhares de vezes.

Tentando muitas vezes em muitos lugares, jogam com a estatística. Mesmo que a maioria dos acessos ou ataques não traga resultados do interesse do bandido, numa grande massa de ataques um pequeno percentual de acerto já pode ser muito útil para quem criou o robô.

O teste de Turing
Como muitos dos acessos indevidos e ataques a sites são feitos por robôs, se o o site souber identificar se quem (ou o que) está tentando usá-lo é uma pessoa ou é um robô, é possível abortar muitas tentativas de acesso indevido ou ataque. É só barrar os robôs e deixar passar as pessoas.

Para fazer essa distinção, entre pessoas e robôs, se usa conceitos introduzidos por um pioneiro da computação, o inglês Alan Turing. Ele observou que apesar das capacidades enormes dos computadores, há algumas tarefas intelectuais nas quais o humanos são melhores que computadores e que isso pode ser testado.

Então, se o site propuser ao visitante um desafio intelectual que um humano resolve bem e um computador não resolve tão bem - um teste de Turing - só os humanos passarão e os robôs serão barrados.

CAPTCHA
Completely Automated Public Turing test to tell Computers and Humans Apart (Teste de Turing Público Totalmente Automatizado para Diferenciar Computadores de Humanos) é o nome genérico e sua iniciais - CAPTCHA - a respectiva sigla genérica, usada para nomear as medidas de segurança que se baseiam em desafios intelectuais que sejam mais fáceis para humanos do que para computadores, permitindo identificá-los.

A primeira geração destes testes apostou na leitura de textos com as letras distorcidas ou com riscos, manchas e outras interferências, para dificultar a leitura. Alguns desses textos são relativamente fáceis de decifrar por uma pessoa, mas atrapalham os programas de leitura automática (veja na imagem).

Depois, se começou a usar nossa capacidade de reconhecer imagens. Por exemplo, exibir uma foto ou uma série de fotos de ruas de cidade e pedir para o visitante do site marcar quais partes da foto ou quais fotos contém sinais de trânsito. 

Embora seja fácil para um humano reconhecer se uma paisagem contém ou não um sinal de trânsito, é difícil se construir um programa de computador que reconheça todo os possíveis sinais de trânsito, fotografados em diferentes ângulos, distâncias, ambientes e planos de fundo. 

O mesmo truque pode ser usado com quaisquer  imagens que contenham elementos que pertençam a um grupo semântico óbvio, mas que possam ser apresentados graficamente de formas muito diferentes. (veja na imagem).

reCAPTCHA
Um problema crescente dos CAPTCHAS mais comuns, na sua maioria baseados na habilidade de ler textos e reconhecer padrões em imagens, é que os softwares com uso de Inteligência Artificial estão ficando muito capazes na leitura de texto e reconhecimento de imagens. Estes avanços são gerados para softwares úteis, mas inevitavelmente também vão sendo copiados e incorporados aos robôs mal intencionados. 

Com isso, está ficando cada vez mais difícil produzir textos ou imagens que um humano reconheça e um computador não. Para os melhores robôs não vencerem o desafio de um CAPTCHA, é necessário ele apresentar um texto tão distorcido, ou uma imagem tão vaga, que fica difícil ou muito desconfortável para um humano vencer o mesmo desafio.

Para se lidar com esse problema os CAPTCHAS de mais nova geração acrescentaram uma nova ferramenta, também baseada em técnicas de Inteligência Artificial, na tarefa de tentar reconhecer e barrar robôs de usarem sites. É a chamada análise comportamental

Ao interagir com um site, os seres humanos seguem padrões de comportamento, como por exemplo velocidade e ordem de digitação, cliques, pausas e movimentos. Também costumam seguir padrões de conteúdo quando escrevem. 

Tudo isso pode ser monitorado e comparado entre usuários do mesmo site e com amostragens de outros sites, para detectar anomalias ou comportamentos atípicos, que denunciem um robô.

O sistema mais conhecido desse tipo de reconhecimento comportamental é o reCAPTCHA da Google. Ele pode ser configurado para só fazer a análise comportamental do usuário, ou fazer uma certificação em dois níveis: verificar o comportamental e também apresentar imagens para reconhecimento.

Quando você clica com o mouse (ou com o dedo) naquele botão "Eu não sou um robô" do reCAPTCHA, não faz só uma declaração inócua, ou redundante, de sua humanidade. Faz um movimento com a mão que o site monitora, para ver se você está se movendo como uma pessoa.

Dificuldades e incertezas
Eu gostaria de alertar a prezada leitora e o prezado leitor que, apesar dos avanços das tecnologias de CAPTCHA, pode haver robôs que conseguem enganá-los. 

No mundo da tecnologia da informação acontece uma espécie de corrida armamentista interminável: continuamente os criadores de mecanismos de CAPTCHA vão melhorando seus produtos e os criminosos vão melhorando seus robôs. Ainda não chegamos no apocalipse do filme Exterminador do Futuro, mas hoje já estamos vendo alguns sistemas baseados em Inteligência Artificial tentando derrotar outros sistemas baseados em Inteligência Artificial...

Outra ameaça aos sistemas de CAPTCHA, menos tecnológica, é que alguns bandidos usam enormes grupos de pessoas contratadas, para resolver os desafios intelectuais apresentados pelos CAPTCHA. O bandido paga alguns centavos por desafio vencido e os contratados passam horas resolvendo milhares de CAPTCHAs de diferentes sites. 

Isso geralmente é feito remotamente, um uso perverso de home office: quando o robô encontra em um site um desafio de CAPTCHA que não consegue entender ou resolver, faz uma cópia e manda pela Internet para um dos humanos contratados. O humano pilantra, que ganha uns trocados como ajudante de robô pilantra, resolve o desafio e manda de volta a resposta para o robô usar. 

Segurança nunca é simples
Apesar das dificuldades e incertezas que relatamos, os mecanismos de CAPTCHA mais modernos podem sim barrar muitos robôs de software - bots - que tentem atacar ou acessar indevidamente seu site prezada leitora, prezado leitor. 

Da nossa experiência prática, o uso de mecanismos CAPTCHA reduz bastante, ou zera, muitas das chateações geradas por robôs, como por exemplo mensagens indesejadas - spam - recebidas via formulários do site.

No entanto, como qualquer mecanismo de segurança, não são perfeitos ou infalíveis e precisam ser complementados com outras ferramentas, procedimentos e treinamentos da equipe, para compor uma política de segurança mais completa.

Gostou do post?
Compartilhe! ↓ →