Stopping Screenlock Smudge Attacks On Android
whispersys.com
whispersys.com
http://cdn.cbsi.com.au/story_media/339308370/moto-atrix-fing...
Not only is is faster and more secure, but it also creates many interesting opportunities:
-User accounts with different permissions (your kids could play games but not access the dialer or edit files).
-different actions for different fingers (ring finger sends a call to voicemail).
-True wallet replacement (square could have a field day).
-A trustworthy form of temporary bricking would nearly eliminate simple theft (10 wrong swipes and you have to visit a vendor with some id to have it unlocked)
Additionally, the history of swipe sensors in laptops is a mixed bag as far as this sort of solution goes. They are in almost all laptops, but almost no one actually uses them. Most people perceive them as too much of a hassle compared to the standard username/password setup. Maybe if phones start holding data that people value more (like digital money) they'd be willing put up with the additional work of using the sensor.
The ultimate solution would probably be something that grabs the biometric data without the user having to do anything special. This would make it easier to use and more secure. Apple actually already has a patent on this: http://www.engadget.com/2009/03/27/recent-apple-patent-filin...
At this point aren't all bets off? If a person is willing to do that, I would think they'd also be willing to disassemble the phone and extract the information that way. You would need a sort of whole-disk encryption too.
For other authentication applications, all security lies in fact that it's not possible (for reasonable values of "possible") to fool the sensor or bypass it. But most commonly used fingerprint scanners are incredibly easy to fool (even including so called "high-security" sensors that happily accept photocopy of fingerprint as valid finger). Bypassing the sensor is often even easier, but on the other hand I've seen systems (for example BIOS level fingerprint authentication on ThinkPads) that are explicitly designed as to make that very expensive (in the ThinkPad case you would have to actually decapsulate the sensor chip from it's package).
In essence, relying on your fingerprint for authentication amounts to leaving a copy of your password on everything you touch.
I suppose it may be possible to decipher the stopping points, but if there's a final circle to confirm the code/cover them up, I could see that working.
edit: added "(circular)" to clarify
Let me clarify it a bit: Just like a rotary telephone, the numbers are in a circle. To open the lock, you drag your finger in a circle around the ring, alternating left and right like a combination lock.
But to make sure the smudges are meaningless, the device rotates the rings randomly before each attempt.
You still enter the same code, in the same pattern, but the rotation of the device changes each time.
Let's say your combo is 74798; one occasion the unlock shows 31920, next 88935, etc. but never opening the phone on a collision. So if it lands on 74798 (your current combo), it would not unlock the phone automatically.
It shouldn't be too hard to catch someone PIN when they enter it on a static vertical list. Then again, neither is it on the default static PIN grid.
4 distinct digits = 4! = 24 permutations
3 distinct digits (one repeated) = 4!/2*3 = 36 permutations
Note: division by 2 is because of the symmetry of swapping the order of the repeated digit, multiplication by 3 is because it is not known which of the 3 digits is repeated.Note2: Using 2 distinct digits (both used twice or one used 3 times) is not as ideal as that results in: 4c1*2 + 4c2 = 14 permutations
BUT: That's if you use it like Swype for a 9-digit keypad, choosing a truly random 4- to 9-digit pin with no repeating digits. I'm not sure that's really possible: can you move between opposite corner dots without hitting the center dot? I speculate that in practice this input mechanism encourages a much smaller pool of options. For instance, in my anecdotal experience most users will only move to adjacent dots and won't cross their lines (presumably due to their cultural heritage of Tron and Ghostbusters). That turns this into a graph problem, and you would probably have to write a simulator to get the real numbers.
... Here's that simulation, in C++: http://pastebin.com/xKd7UMr3
Note that the adjacency constraint implies the no-crossing-lines constraint. Total possible paths given the constraints: 10096. That is a nontrivial reduction in bit strength, from 20 bits to less than 14, or from 7 to 5 base-10 digits. As a complimentary check, if you eliminate the adjacency constraint in the simulator you will see the expected 985,824 number.
Experimentation on my Droid X running the 2.2 OS indicates that you not only must wait 30 seconds after every 5 invalid patterns, but are locked out completely after 20 (at which point you have to login with your Google account to regain access). The OS remembers the number of invalid attempts across reboots, even if you abruptly cycle the power by pulling the battery out of your poor little Droid X.
Suppose an Android phone firmware was not quite properly implemented, and the invalid attempt count was only flushed to nonvolatile memory every, say, five attempts. I might then build a brute force pattern cracking machine, something servo-driven with a stylus to contact the screen (à la Clarke's "Rama II"). If my cracking device takes 3 seconds to try a pattern, and assuming a 40-second boot time, I would need 52 seconds to make 4 guesses, or 13s/guess. For the ideal case of 985,824 equally likely options, I would have to run that machine continuously for over 21 weeks to try every pattern. Given the adjacency constraint, however, I would need less than 37 hours -- a day and a half! -- to try all 10096 possible patterns, and would expect an average search time of about 18 hours.
Would the average user change their passwords if they accidentally left their smartphone in the office for the weekend (60 hours)? But this doesn't even need to be a single block of time. Does your significant other have access to your smartphone during weeknights (8hrs * 5 days = 40 hrs)?
Though if you have the kind of significant other who discovers your phone has a minor firmware flaw, builds a servo-driven cracking device to exploit it, and proceeds to steal your phone every night while you sleep, your life was going to be difficult anyway.
[EDIT: "No crossing lines" is a vague description. What I mean is that I don't see many users go back across a previously-visited dot to reach an unvisited dot. Since a dot on the other side of a previously-visited dot would have to be at least two dots away, the line-crossing constraint is covered by the adjacency constraint. As far as I can tell, the line-crossing constraint is actually somewhat enforced by the Android OS: you are not allowed to cross over unvisited dots without the OS forcibly "visiting" the intermediate dot on your behalf, although you are allowed to cross over visited dots.]
Regardless of whether your device has a limit on total attempts, you ought to be aware that the security of your lockout resides not in the complexity of your pattern, but rather in a subtle facet of your phone's volatile->nonvolatile memory transfer timing.
I would still like to have my data encrypted though...
But in principle you can change it to anything you want (since you can replace the component).
This is one thing I've found that my Apple using friends are always a bit jealous of because it is slightly easier than punching in a pin number.