Google Authenticator
Google Authenticator est un logiciel de génération de mots de passe à usage unique permettant l’authentification à deux facteurs, développé par Google. Le logiciel fournit un nombre de 6 chiffres que l'utilisateur doit donner lors de son authentification, en plus de son pseudo et de son mot de passe. Développé à l'origine pour les services Google (comme Gmail), le logiciel permet de s'authentifier sur des services tiers tels que LastPass, Discord ou Dropbox.
Développé par | |
---|---|
Dernière version |
5.10 (Android, )[1] 3.4.0 (iOS, )[2] |
DĂ©pĂ´t | github.com/google/google-authenticator et github.com/google/google-authenticator-android |
Système d'exploitation | Android et iOS |
Environnement | Android et iOS |
Type |
Logiciel d'authentification (en) Application mobile |
Licence | Licence propriétaire |
Site web | play.google.com/store/apps/details?id=com.google.android.apps.authenticator2 |
Implémentation
Google fournit l'application mobile pour les systèmes Android[3], BlackBerry, iOS[4] et des portages compatibles ont été réalisés pour Pebble[5], entre autres.
Des versions passées du logiciels étaient open source, mais les versions actuelles sont sous une licence propriétaire[6].
Description technique
Il s'agit de créer un code éphémère, calculé depuis une clef numérique propre à l'utilisateur. Lors d'une première utilisation Google génère une clef numérique secrète de 80 bits unique pour chaque utilisateur. Cette clef est transmise sous forme d'une chaîne de 16 caractères en base 32 ou par l'intermédiaire d'un code QR. L'application mobile calculera à chaque connexion une signature numérique HMAC-SHA1 basée sur cette clef fixe, en codant le nombre de périodes de 30 secondes écoulées depuis l'« epoch » Unix. Une partie de cette signature est prélevée et convertie en un nombre à 6 chiffres affiché par l'application et que l'utilisateur doit recopier sur le site web, en plus de son mot de passe.
Technologie
Google Authenticator implémente l'algorithme de mot de passe à usage unique définie dans l'IETF RFC 6238[7], et l’algorithme de génération de mot de passe unique basé sur HMAC défini dans l'IETF RFC 4226[8].
Pseudocode de l'algorithme RFC 6238[7]
La RFC 6238[7] est peu précise sur la taille du message passé à HMAC-SHA1. Il est écrit simplement que des tailles supérieures à 32 bits doivent être supportées. La taille de 64 bits est donc issue des implémentations usuelles que l'on trouve. De même pour le caractère Big Endian des nombres utilisés.
function GoogleAuthenticatorCode(string secret)
key := base32decode(secret)
message := floor(current Unix time / 30)
// message is seen by HMAC-SHA1 as a BigEndian 64bits number (8 chars)
hash := HMAC-SHA1(key, message)
offset := last nibble of hash
truncatedHash := hash[offset..offset+3] //4 bytes starting at the offset
Set the first bit of truncatedHash to zero //remove the most significant bit
// truncatedHash is seen as a BigEndian 32bits number (4 chars)
code := truncatedHash mod 1000000
pad code with 0 until length of code is 6
return code
État open source du logiciel pour Android
En l'état de , l'application Google Authenticator disponible sur Google Play Store est couverte par une licence propriétaire. Google a rendu disponibles les versions précédentes de l'app Authenticator sur son répositoire GitHub. La page du projet affirme :
« This open source project allows you to download the code that powered version 2.21 of the application. Subsequent versions contain Google-specific workflows that are not part of the project[9]. »
En réponse à la transition de Google Authenticator vers une licence propriétaire, un clone open source nommé FreeOTP[10] a été créé, en incluant des parties du code original de Authenticator, mais surtout du code nouvellement écrit. Une variante moins populaire nommée OTP Authenticator[11] est également disponible sur Google Play.
Références
- (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Google Authenticator » (voir la liste des auteurs).
- « https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2 » (consulté le )
- « https://apps.apple.com/app/google-authenticator/id388497605 » (consulté le )
- Version Android de Google Authenticator
- Version iOS de Google Authenticator
- (en) « How to get your two-step verification codes on your Pebble »
- (en) Willis, Nathan, « FreeOTP multi-factor authentication », (consulté le )
- (en) Request for comments no 6238.
- (en) Request for comments no 4226.
- (en) « Wiki Google Authenticator sur GitHub » (consulté le )
- « FreeOTP »
- « kaie/otp-authenticator-android », GitHub
Liens externes
- Google Authenticator sur Google.
- Google Authenticator Projet open-source sur GitHub
- Google Authenticator implementation en Python sur Stack Overflow