What is TypingDNA?
With TypingDNA
you can recognize users by the way they type on their keyboards (we support both desktop & mobile).
Our AI-powered typing biometrics engine, exposed by a RESTful API,
analyzes typing patterns and accurately determines if they are a match with a known,
enrolled user, leveraging artificial intelligence for enhanced precision and security.
Our solution is deployed in scenarios in which the identity of a user needs confirmation -- such as enforcing password resets, complimenting primary authentication means with an additional layer of security,
or in the place of 2FA and OTP flows. The API is not constrained to specific use-cases or authentication stacks, and can be incorporated anywhere within your architecture that end-users are typing.
Keep in mind: While TypingDNA can be used on identical texts (SameText solution), different texts (AnyText solution), long and short, desktop and mobile, the best and most recommended type of integration is the “short phrase” method using the SameText solution, where a text of 30-40 chars is used every single time for the same user, for both enrollment and future verifications. Ideally, a client would use this method in the browser for desktops/laptops, or native apps for mobile phones.
If you have any questions feel free to contact us.
How does it work?
A successful TypingDNA implementation is conceptually a three step process. First, one of our recorders is included in the front-end of an application
to collect
typing patterns from end-users.
Collected typing patterns are submitted to our API for enrollment or analysis, along with a User ID. Patterns submitted to the /auto endpoint will be intelligently handled
as
enrollment or verification attempts depending on the context of the request (whether previous enrollments exist, and if there are sufficient), see below for details.
Finally, the Authentication API will return a verification or enrollment JSON response depending on the action performed. In the case of a verification (there were previous saved patterns for comparison), the
API will
return an actionable result to your application, along with score and additional data for the /verify endpoint.
Typingdna.js
In order to match typing patterns (step 3), you start by capturing the typing pattern of a user. Implement the TypingDNA JavaScript recorder in your front-end web app.
RESTful Authentication API
Send the recorded typing pattern to our API via RESTful request to store or match against a previously recorded pattern. Then, our API will output a JSON response containing the result of authentication.
All requests to our API should be done from your application backend.
Same text (RECOMMENDED)
Uses identical enrollment and verification texts: In this case, user authentication via typing biometrics, only works with a text identical to the enrollment text.
- A short phrase, 4-7 words contains 30-40 chars (for any purpose, including 2FA, password recovery) - RECOMMENDED METHOD
- An average email + password contains 30 chars (for login purpose)
- An average username + password contains 15+ chars (for login purpose)
- An average email contains 15+ chars (for password recovery purpose)
- An average credit card + name contains 30+ chars (for payment purpose)
A good example is "your typing biometrics are unique and natural" (for enrollment) and again, "your typing biometrics are unique and natural" (for verification).
A bad example: "your typing biometrics are unique and natural" (enrollment) and "a completely different short phrase" (verification).
Please note that for best accuracy we recommend texts that have between 30 and 40 characters, but feel free to try texts up to 100 chars (please note that although the technology works with texts of as low as 10 chars, our technology is not that accurate with such short texts). The only requirement is that the typed text/string on which you get the pattern from javascript to be
identical (even if errors occur while typing but they are corrected by the user in the process).
Any text
Authenticate a user based on different text than previously used for enrollment. This method is supported by the API but is not recommended in favor of the “Same text” method described above.
A good example would be "this is a great experience..." (for enrollment) and "how could we improve..." (for verification).
A bad example: "I agree to do..." (enrollment) and "I agree to do..." (verification).