One-Touch Login

Get Started. It's Free
or sign up with your email address
Rocket clouds
One-Touch Login by Mind Map: One-Touch Login

1. Face Unlock

1.1. How does it work?

1.1.1. The user takes a photo of their face

1.1.1.1. Retake photo

1.1.1.2. Send to server for authentication

1.1.1.2.1. Failure: prompt user to retry

1.1.1.2.2. Success: server returns token

1.2. Considerations

1.2.1. Technical issues

1.2.1.1. Lighting affects the login photo a lot

1.2.2. Security issues

1.2.2.1. Logging in as someone else is quite easy

1.2.3. UX issues

1.2.3.1. Not available on phones with no front-facing camera

1.3. Available solutions

1.3.1. OpenCV

1.3.1.1. Description

1.3.1.1.1. opencv.org

1.3.1.2. Plus

1.3.1.2.1. Free and open source

1.3.1.2.2. Widely used, lots of implementations

1.3.1.2.3. First-party, we don't rely on others

1.3.1.3. Minus

1.3.1.3.1. No idea on what it would take to implement the server-side part. There are at least two wrappers for OpenCV in .NET, but I don't know more details

1.3.2. LambdaLabs

1.3.2.1. Description

1.3.2.1.1. http://lambdal.com/

1.3.2.1.2. Decent pricing: $64 for 5000 face recognitions per month, 1 cent per extra recognition over 5000

1.3.2.2. Plus

1.3.2.2.1. Judging from their documentation and samples, the implementation is piece of cake

1.3.2.2.2. Server-side implementation minimal, the Android client does all the work

1.3.2.3. Minus

1.3.2.3.1. Third-party

1.3.2.3.2. Not free

1.4. Unavailable solutions

1.4.1. The Google API used for Face Unlock on Android 4.0+ devices is closed-source and proprietary

2. NFC

2.1. How does it work?

2.1.1. Encrypted token is written on an NFC tag. Can be done by the user through the application, or by support using a dedicated application

2.1.1.1. NFC tag can be stored in a secure pocket, or attached to a permanently worn accessory (watch, bracelet)

2.1.1.2. The tag is scanned with the phone and the info sent to the server. The server returns the token on success

2.2. Considerations

2.2.1. Very secure

2.2.2. Easy to implement and maintain

2.2.3. Cheap

2.2.4. Not available on the currently used phones :(

3. Barcode / QR Code

3.1. How does it work?

3.1.1. An encrypted token is printed on a badge

3.1.1.1. The badge is scanned with the phone and sent to the server. The server returns the token on success

3.2. Considerations

3.2.1. Insecure

3.2.1.1. Can be easily (even accidentally) copied

3.2.2. Security can be enhanced by using a control token generated by the application, so only requests coming from a recognized source (Android application, website) will be considered

3.3. Available solutions

3.3.1. The implementation is more or less already done, we would only need the UI interaction

4. Voice Unlock

4.1. How does it work?

4.1.1. A voice sample is recorded and assigned to the user, kept on the server

4.1.2. The user is prompted to read a phrase

4.1.2.1. The resulting recording is sent to the server

4.1.2.1.1. The server analyses and compares the two recordings and decides if they match. Returns the token on success

4.2. Considerations

4.2.1. Insecure

4.2.2. Prone to noise

4.2.2.1. Would need specialized algorithms for cleanup

4.3. Available solutions

4.3.1. https://code.google.com/p/musicg/

4.3.1.1. Description

4.3.1.1.1. lightweight audio analysis library, written in Java, with the purpose of extracting both high level and low level audio features.

4.3.1.1.2. Some features can be used for voice identification, no idea how reliable

4.3.1.2. Plus

4.3.1.2.1. Free and open source

4.3.1.3. Minus

4.3.1.3.1. No idea if it works

4.3.2. http://amsecure.aftek.com/

4.3.2.1. Description

4.3.2.1.1. Commercial, not much info

4.3.2.1.2. Seems focused on the client side, lock/unlock access to the device rather than login using a server

4.3.2.1.3. Third-party

4.3.2.1.4. $24 per year

4.3.2.2. Plus

4.3.2.2.1. Theoretically, offers support

4.3.2.3. Minus

4.3.2.3.1. Judging by their website, it's an old-fashioned company, serving large, inflexible corporations. Not exactly what we would need.

4.4. Not available solutions

4.4.1. The Android built in voice recognition

4.4.1.1. Won't work because it's focused on speech recogniton, not actual voice matching

5. Signature

5.1. How does it work?

5.1.1. The user draws a pattern on the screen

5.1.1.1. The pattern is compared with the one stored on the server. If the algorithm decides they match, the server returns the auth token

5.2. Considerations

5.2.1. Quite secure, until it's stolen

5.2.2. Could be bad UX

5.2.2.1. Hard to reproduce a complex signature on a phone screen

5.2.2.2. Simple signatures are easy to guess (circle, X etc)

5.3. Available solutions

5.3.1. OpenCV

5.3.1.1. SIFT (Scale Invariant Feature Transform) is something that could be used

5.3.1.2. No idea if there is any .NET implementation

6. Dot Pattern

6.1. How does it work?

6.1.1. Uses a dot pattern similar to the one used by Android for unlocking the screen

6.1.1.1. The user defines their own pattern, which is stored on the server

6.1.1.2. The user draws a pattern by connecting the dots and sends to the server the resulting data

6.2. Available implementations

6.2.1. https://code.google.com/p/android-lockpattern/

6.2.2. Easy to create a custom one from scratch

6.3. Plus

6.3.1. Easy, familiar UX

6.3.2. Quite secure, difficult to steal

6.3.2.1. Same security level as a PIN

6.3.2.2. If nobody else sees it, it can only be guessed by usual password-cracking techniques

6.3.3. Server implementation is a no-brainer

6.4. Minus

6.4.1. Can be forgotten often

7. General Considerations

7.1. Using a unique token for each device along with the actual authentication data would improve security

7.1.1. We can use the unique id I'm sending for tracking the UI interaction, or a hash of it

7.1.2. This way, we have the option to blacklist certain devices, if they fall into the wrong hands

7.1.3. One could not login without an approved device id, even if the authentication data is valid (could be stolen)