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 Retake photo Send to server for authentication Failure: prompt user to retry Success: server returns token

1.2. Considerations

1.2.1. Technical issues Lighting affects the login photo a lot

1.2.2. Security issues Logging in as someone else is quite easy

1.2.3. UX issues Not available on phones with no front-facing camera

1.3. Available solutions

1.3.1. OpenCV Description Plus Free and open source Widely used, lots of implementations First-party, we don't rely on others Minus 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 Description Decent pricing: $64 for 5000 face recognitions per month, 1 cent per extra recognition over 5000 Plus Judging from their documentation and samples, the implementation is piece of cake Server-side implementation minimal, the Android client does all the work Minus Third-party 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 NFC tag can be stored in a secure pocket, or attached to a permanently worn accessory (watch, bracelet) 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 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 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 The resulting recording is sent to the server 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 Would need specialized algorithms for cleanup

4.3. Available solutions

4.3.1. Description lightweight audio analysis library, written in Java, with the purpose of extracting both high level and low level audio features. Some features can be used for voice identification, no idea how reliable Plus Free and open source Minus No idea if it works

4.3.2. Description Commercial, not much info Seems focused on the client side, lock/unlock access to the device rather than login using a server Third-party $24 per year Plus Theoretically, offers support Minus 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 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 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 Hard to reproduce a complex signature on a phone screen Simple signatures are easy to guess (circle, X etc)

5.3. Available solutions

5.3.1. OpenCV SIFT (Scale Invariant Feature Transform) is something that could be used 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 The user defines their own pattern, which is stored on the server The user draws a pattern by connecting the dots and sends to the server the resulting data

6.2. Available implementations


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 Same security level as a PIN 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)