A Completely Automated Public Turing test to tell Computers and Humans Apart, or CAPTCHA, is a Turing test employed most frequently in websites to discriminate between humans and computer programs. Usually implemented as an image analysis problem, CAPTCHAs present a problem which is trivial for a human to solve, but very difficult for a computer program (see artificial intelligence).
Many companies offer online services free of charge. However, people who want to exploit those services will often attempt to write a computer program that can automatically register for and use said services. CAPTCHAs are one of the most successful methods for foiling such attacks.
CAPTCHAs are most frequently implemented as a distorted image containing a short text. The user is asked to type the text from the image into a form field. The distortion usually defeats state of the art Optical Character Recognition (OCR) algorithms.
Criticism of CAPTCHAs
Handicap accessible CAPTCHAs have not yet been developed. As a result, common image CAPTCHAs prevent people who are blind or who have poor eyesight from using web services.
Attacks Against CAPTCHAs
The major problem with CAPTCHAs is that they do not prevent the test subject (human or computer) from passing the test onto another party. This can be exploited by an attacker A to gain access to a target website B, by use of an intermediate website:
- Attacker A creates an online service with high demand, such as a pornographic website.
- Some third party C visit's the attacker's website, and attempts to register.
- The attacker's website begins a registration procedure at the target website B, and receives a CAPTCHA from it.
- The attacker's website presents the CAPTCHA from B to the third party C.
- The third party voluntarily solves the CAPTCHA assuming it was generated by A's website.
- The attacker's website uses the solution to the CAPTCHA to complete registration at the target website B.
In doing so, the attacker can repeatedly access the CAPTCHA-protected web service without his own direct intervention. This is an example of a man-in-the-middle attack.
The attack of directly solving the CAPTCHA using a computer is becoming more and more viable, though, and many CAPTCHAs have been essentially broken by this method.