# CAPTCHA

CAPTCHA é um acrônimo da expressão "Completely Automated Public Turing test to tell Computers and Humans Apart" (teste de Turing público completamente automatizado para diferenciação entre computadores e humanos): um teste de desafio cognitivo, utilizado como ferramenta antispam, desenvolvido de forma pioneira na universidade de Carnegie-Mellon. Como o teste é administrado por um computador, em contraste ao teste de Turing padrão que é administrado por um ser humano, este teste é na realidade corretamente descrito como um teste de Turing reverso.
Um CAPTCHA usual envolve um computador (um servidor) que pede que um usuário termine um teste. Como os computadores são incapazes de resolver o CAPTCHA, todo usuário que incorpora uma solução correta é presumidamente humano. O termo foi inventado em 2000 por Luis von Ahn, por Manuel Blum, Nicholas J. Hopper (todos da universidade do Carnegie-Mellon), e por John Langford (da IBM).
Um tipo comum de CAPTCHA requer que o usuário identifique as letras de uma imagem distorcida, às vezes com a adição de uma sequência obscurecida das letras ou dos dígitos que apareça na tela.
Atualmente, o reCAPTCHA é recomendado pelos criadores de CAPTCHA como a implementação oficial.

## Aplicações

CAPTCHAs são utilizados para impedir que softwares automatizados executem ações que degradam a qualidade do serviço de um sistema dado, devido à despesa do abuso ou do recurso. Embora CAPTCHAs sejam utilizados mais frequentemente como uma resposta a proteção de interesses comerciais, a noção que existem para parar somente spammers é um erro, ou uma simples redução.
CAPTCHAs pode ser desdobrado para proteger os sistemas vulneráveis ao Spam de E-mail, tal como os serviços do AOL Webmail, do GMail, do Hotmail, e do Yahoo. São também ativamente utilizados para limitar e controlar o acesso automatizado aos blogs ou os fóruns, em consequência de promoções comerciais, ou de vandalismo. CAPTCHAs servem também a uma função importante no controle da taxa limite, como o uso automatizado de um serviço pôde ser desejável até que tal uso esteja sendo realizado em excesso, e em detrimento de usuários humanos. Em tal caso, um CAPTCHA pode reforçar políticas automatizadas do uso como ajusta-se pelo administrador quando determinadas medidas do uso excedem um ponto inicial dado.
CAPTCHA é também o mecanismo sugerido para impedir listas automatizadas em placares e em votações de discussão pública. Um estudo por Arora e outros descreveu os vulnerabilidades nos vários fóruns públicos que não usam este tipo de teste (incluindo a BBC).

## Características

Um sistema de CAPTCHAs consiste em meios automatizados de gerar novos desafios que os computadores atuais são incapazes de resolver exatamente, mas a maioria de seres humanos podem resolver. Um CAPTCHA não confia nunca no atacante que conheça previamente o desafio. Por exemplo, um checkbox "clique aqui se você é um bot" pode servir para distinguir entre seres humanos e computadores, mas não é um CAPTCHA porque confia no fato que um atacante não precisa se esforçar para quebrar esse formulário específico. Para ser um CAPTCHA, um sistema deve gerar automaticamente os novos desafios que requerem técnicas da inteligência artificial na resolução.
Na prática, o algoritmo usado para criar o CAPTCHA não necessita ser público, mas pode ser coberto por uma patente. Embora a publicação possa ajudar a demonstrar que a resolução requer a solução a um problema difícil no campo da inteligência artificial, reter deliberadamente o algoritmo pode aumentar a integridade de um jogo limitado dos sistemas (ver a segurança por meio do obscurecimento). O fator mais importante em decidir se um algoritmo deve ser feito aberto ou restrito é o tamanho do sistema. Embora um algoritmo que sobrevivesse a investida por peritos de segurança pudesse ser escolhido por ser conceitualmente mais seguro do que o algoritmo não validado, por outro lado apostar em um algoritmo desconhecido é sempre menos interessante àqueles que apostam no abuso automatizado. Quebrar um CAPTCHA requer geralmente algum esforço específico àquele implementação em particular, e um abusador pode decidir-se que o benefício concedido pelo desvio automatizado é inviável pelo esforço requerido para engajar no abuso desse sistema em primeiro lugar.

## História

A primeira discussão acerca dos testes automatizados que distinguem seres humanos dos computadores com objetivo de controlar o acesso aos serviços da web aparece em um manuscrito 1996 de Moni Naor do instituto de Weizmann de ciência, intitulado "Verification of a human in the loop, or Identification via the Turing Test" (verificação de um ser humano no laço, ou identificação através do teste de Turing).
CAPTCHAs primitivos parecem ter sido desenvolvido mais tarde, em 1997, para o site de procura AltaVista por Andrei Broder e seus colegas para impedir que os bots adicionassem URLs a sua Ferramenta de Busca. Procurando uma maneira fazer suas imagens resistentes ao ataque do OCR, Optical Character Recognition (Reconhecimento Óptico de Caracteres), a equipe olhou o manual de scanner, obtendo recomendações para melhorar os resultados do OCR (typefaces similares, fundos lisos, etc.). A equipe criou enigmas tentando simular o que o manual reivindicado causaria a OCR mau. Em 2000, Von Ahn e Blum desenvolveram e publicaram a noção de um CAPTCHA, que incluísse todo o programa que puder distinguir seres humanos dos computadores. Inventaram exemplos múltiplos, incluindo o primeiro CAPTCHAs a ser usado extensamente no Yahoo!.

## Acessibilidade

CAPTCHAs baseados em leitura de texto — ou outras tarefas de percepção visual — impedem que um usuário cego ou com restrições na visão acesse o recurso protegido. Cria também barreiras para um número grande de pessoas com as inabilidades de aprendizagem que envolvem a interpretação de texto. As falhas de projeto em alguns CAPTCHAs impedem mesmo a acessibilidade para usuários sem qualquer impedimento, por exemplo usando um zero (0) e (o). Para resolver corretamente um CAPTCHA, o usuário é requerido geralmente reconhecer todos os itens do CAPTCHA. Uma falha resulta que o usuário deva responder a um desafio novo.
Por ser projetado para ser ilegível às máquinas, as ferramentas de assistência comuns da tecnologia tais como leitores da tela não podem interpretá-los. Um CAPTCHA visual impede o acesso por usuários cegos, e pode impedir pessoas daltônicas. Para esta razão, algumas implementações permitem aos usuários optarem por um CAPTCHA de áudio. Mesmo com uma combinação de desafios do visual e do áudio, alguns usuários serão incapazes de usar um CAPTCHA, por exemplo usuários surdos.
A escolha de adicionar um CAPTCHA a uma aplicação é um contrapeso entre a facilidade de utilização para usuários legítimos e criar desafios para abusadores. A inconveniência causada por um CAPTCHA é às vezes mais elevada para usuários com inabilidades. Para algumas aplicações, o potencial para o abuso é de tal forma elevada que o autor da aplicação sente que um CAPTCHA é necessário. Para outras aplicações, a necessidade de acessibilidade compensa o abuso que impediria.

## Tentativas em CAPTCHAs acessível

Houve várias tentativas em criar CAPTCHAs mais acessíveis. As tentativas incluem o uso do Javascript, de perguntas matemáticas ("o que é 1+1"), ou "de perguntas do sentido comum" ("que cor é o céu"). Estas tentativas violam um ou ambos os princípios de CAPTCHAs: ou não podem automaticamente ser gerados ou podem facilmente ser resolvidos dada o estado da inteligência artificial. Como está, a única segurança fornecida pelo CAPTCHA é segurança por meio do obscurecimento; um atacante é improvável encontrar a formulação do CAPTCHA na pergunta, e improvável encontrá-la pelos recursos, da despesa e do tempo para quebrar o CAPTCHA mesmo de um site pequeno.

## Contornando o CAPTCHA

Há algumas aproximações em derrotar CAPTCHAs: usando o trabalho humano para reconhecê-los, explorando erros na implementação que permitam ao atacante contornar completamente o CAPTCHA, e finalmente em improvisar um software de reconhecimento de caracteres.

### Servos humanos

CAPTCHA é vulnerável a um ataque que use seres humanos na resolução dos enigmas. De acordo com uma estimativa, os operadores poderiam facilmente resolver centenas delas cada hora. Se os seres humanos forem empregados dedicados que recebem salário mínimo isto não pode ser considerado viável, mas os serviços como o Amazon Mechanical Turk tiveram o sucesso usando pagamento de pequeno vulto para atrair humanos na solução de outras tarefas. Uma outra variação desta técnica envolve copiar as imagens de CAPTCHA e usá-las como CAPTCHAs para um local do elevado-tráfego possuído pelo atacante. Com bastante tráfego, o atacante pode conseguir uma solução ao enigma do CAPTCHA.

### Execução Insegura

As falhas de projeto em um CAPTCHA podem permitir burlar uma medida de segurança, ou poderiam tornar um ataque OCR mais fácil de montar.
* Os sistemas de proteção de alguns CAPTCHAs podem ser contorneados sem usar o OCR simplesmente reutilizando a identificação de uma imagem conhecida do CAPTCHA. Corretamente projetado, um CAPTCHA não permite tentativas múltiplas da solução. Isto impede reutilização de uma solução correta ou de fazer uma segunda suposição depois de uma tentativa incorreta do OCR.
* Usar um sistema de criptografia muito simples e com poucas combinações.
* Usando somente um pool fixo pequeno de imagens. Eventualmente, quando bastante soluções de imagem forem coletadas por um atacante sobre um período de tempo, o CAPTCHA pode ser quebrado simplesmente olhando acima das soluções em uma tabela, baseada em uma mistura da imagem do desafio.

### Reconhecimento de caracteres pelo computador

Embora CAPTCHAs visuais sejam projetados originalmente para derrotar o software padrão do OCR projetado para a exploração do original, um número de projetos de pesquisa provaram que é possível derrotar muitos CAPTCHAs com programas que são ajustados especificamente para um tipo particular. Para CAPTCHAs com letras distorcidas, a aproximação consiste tipicamente nas seguintes etapas:
* Extração da imagem da Web page.
* Remoção da desordem do fundo, por exemplo com filtros da cor e detecção de linhas finas.
* Segmentação, isto é rachando a imagem nos segmentos que contêm uma única letra.
* Identificando a letra para cada segmento.
A maioria dos CAPTCHAs presentes na web trabalham como uma única linha de imagem. Algumas execuções racham a imagem nas peças múltiplas ou codificam as partes da imagem no código do HTML, forçando um processo automático para ler e executar o OCR na página.
A remoção da desordem é tipicamente muito fácil de fazer automaticamente. Em 2005, mostrou-se também que os algoritmos da rede neural têm uma taxa de erro mais baixa do que seres humanos na identificação do glyph. A única parte onde os seres humanos ganham ainda dos computadores é segmentação. Se a desordem do fundo consistir em formas similares, e as letras estiverem conectadas por esta desordem, a segmentação torna-se quase impossível com software atual. Conclui-se que um CAPTCHA eficaz deve focalizar na segmentação.

### Reconhecimento de imagens contra o Reconhecimento de textos

Com a demonstração (através das publicações da pesquisa) que alguns CAPTCHAs são vulneráveis a reconhecedores de caractere e ataques, alguns estudiosos propuseram as alternativas ao reconhecimento de caráter, no formulário de reconhecimento CAPTCHA os usuários identificariam objetos simples nas imagens apresentadas. O argumento é que o reconhecimento do objeto está considerado tipicamente um problema mais complexo do que o reconhecimento de caractere, devido ao domínio limitado dos caracteres e dos dígitos nos alfabetos da maioria de línguas naturais.

## Benefícios colaterais

Alguns dos inventores originais do sistema de CAPTCHA implementaram meios para medir e utilizar o esforço e tempo gasto pelas pessoas que estão respondendo aos desafios de CAPTCHA. Contando trabalho com elementos resolvidos" e "não resolvidos" incluindo imagens que não foram reconhecidos com sucesso através do OCR em cada desafio. Os mantedores do CAPTCHA estimam que os sistemas existentes de CAPTCHA representam aproximadamente 150.000 horas de trabalho por dia que poderia transparente ser batido através da revisão dos sistemas. Isto é aproximadamente 75 anos de trabalho diário realizado.
O ReCAPTCHA, projeto continuado do CAPTCHA utiliza como teste trechos não reconhecidos por OCRs em livros digitalizados. As respostas dos usuários, deste modo, serão utilizados na digitalização de conteúdo para web.