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.

Google Authenticator
Informations
Développé par Google
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

Liens externes

  • Portail de l’informatique
  • Portail de Google
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.