QR Based provisioning for MOTP Based systems
In the classic implementation of
MOTP two-factor authentication the secret hashes used to produce one-time passwords are generated on the mobile application during the first initialization.
This is rather inconvenient as the hash needs to be entered manually on the server. Token2 has agreed with the creators of MOTP to introduce a new procedure of initialization of OTP clients: similar to TOTP based systems, the hash can now be generated on the server side and be presented to the clients in the format of a QR code.
Token2 Mobile OTP is the first (and currently the only) mobile application supporting this method
Specifications
Matthias Straub, creator of MOTP has agreed with our proposal to use URI format below:
motp://[SITENAME]
:[USERNAME]
?secret=[SECRET-KEY]
As per MOTP Specifications, the secret key should be a 16-hex-digit hash, so it is rather simple to generate such keys using any programming languages. See a few examples below:
PHP >= 5.3
bin2hex(openssl_random_pseudo_bytes(8));
Perl
my $rand_hex = join "", map { unpack "H*", chr(rand(256)) } 1..8;
Javascript
function genHEX(){
// Make a new array with all available HEX options.
var hexchars = new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
// Make variable to hold 6 character HEX array
digit = new Array(17);
secret="";
for (i=0;i<16;i++){
// Loop through 6 times, randomising the letter added to the array
digit[i]=hexchars[Math.round(Math.random()*14)];
secret = secret+digit[i];
}
return secret;
}
Python
#!/usr/local/bin/python2.7
import random
alpha = ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F")
print ''.join([random.choice(alpha) for _ in range(16)])
QR Image generation
You can use a QR generation library for your platform or for Javascript to keep it at client side (you can search for "QR Generation" on
Github, for example). Or, you can use different online APIs to generate the QR Image using the URI submitted as a GET parameter.
See example below:
https://quickchart.io/qr?text=motp://MotpTest:Alice-always-the-Same?secret=48826cafc8795520
If you scan the QR image above when creating a new profile with Token2 Mobile OTP, you will get a MOTP Profile created automatically
For backward compatibility, Token2 Mobile OTP supports client-side hash generation : by touching the little icon next to hash field will generate and show the secret key immediately, so the application can be used as a standard MOTP client.
Token2 Mobile OTP : your universal two factor authenticator
This application generates OTP using Token2's proprietary algorithm, but is not limited to it only, additionally, it supports
TOTP and
MOTP as well, so you can use the same application for other sites requiring two-factor authentication; e.g. wherever you see a requirement to use Google authenticator, feel free to use our app as it is even more secure due to additional layer of protection with a PIN code .