views:

133

answers:

4

I've been thinking of a dynamic way of creating a CAPTCHA that uses morphing shapes or dynamic colors.

My first idea is to have a graphic, flash or something, that gradually changes from, say a square into a sphere. The user will be required to click the button when it becomes spherical enough.

Second idea is to have an area of color that slowly changes from, say, red to blue and the user will be required to press a button when it becomes blue enough.

Third idea is a combination of both methods.

I'd say the difficulty will be to match the clicks with the transitions. But it should be hard for automated code to detect shades or shapes.

Can people please offer some comments on my idea.

  • edit -

Thanks for the feedback. I'm now considering using a flash based video playback of a server fed video feed of a few colored shapes that morph into other colored shapes. The user will be required to pause the feed when the colors and shapes match some canned questions: such as : click on the video when you see two green squares turn into 3 blue triangles. The shapes will be amongst over overlapping and moving morphing shapes. Fun for the whole family!

A: 

Good idea, you could also do it so that the shapes keep turning or moving. I don't know if it would be safer than a regular letter capcha tho.

mnml
A: 

I'm not sure why you think color would be any harder to detect than text. Shapes possibly, but they would have to be more complex than n-sided polygons. The gradual animation is a good idea however. But if you can code it to show, someone can code something that watches it.

The real test is to prove humanness by identifying semantic meanings, rather than syntactic meanings.

For instance show pictures of animals and make the user click when a bird shows up. Or just say "click on the thing that can fly." And show some pictures of animals. This would be rather unbeatable by a machine until all images had been cataloged. The trouble with CAPTCHA of course is trying to make semantics with syntax. Therefore defeating itself from the onset.

You're on the right track, and I'm sure your proof of concepts are interesting. But remember: made by a computer: solved by a computer.

Trey Stout
+1  A: 

Color is a bad idea as (a) its very easy for a computer to detect; (b) very hard for some humans — the color blind — to detect. Even if you're OK with denying access to the disabled, you'd have to worry about different monitors, systems, lighting conditions, etc. giving rise to different color perceptions.

How hard do you think it is for a computer to compare the red component and blue component in a pixel (or averaged over several pixels)? Trivial. So this isn't a problem for a computer.

Similarly, it isn't that hard to program the difference between a square and a circle. One has strait lines, one doesn't!

derobert
A: 

Although these ideas will almost certainly work, it's a security-through-obscurity effect. Classic CAPTCHA images are "one-way" in that the correct answer can't (theoretically) be deduced by a computer. The problem with saying "click here when the image turns blue" is that a computer could easily do this, if somebody considered the stakes to be worth developing a program for.

Additionally, unusual captchas will force your users to think. Depending on your audience this may mean losing some users.

I did a fair bit of research when developing a CAPTCHA system, and the classic method of printing text to an image seems to be the most effective. The trick is not in having lots of "background noise" behind the text, or different colours. It's about the following two things:

1) Random text kerning, with most or all letters slightly overlapping each other.

2) Random distortion, translation and rotation of the text.

If you have a look at Google's CAPTCHA, they pretty well only have those two features: https://www.google.com/accounts/NewAccount?service=mail

Abignale
@abignale classic captcha relies on the computer being not able to use character recognition to read some text that humans find 'easy'. Not really a one-way. Just something current algorithms are poor at.
Martlark