Google Authenticator

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche

Google Authenticator est un logiciel permettant l’authentification en deux étapes, 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.

Implémentation[modifier | modifier le code]

Google fournit l'application mobile pour les systèmes Android[1], BlackBerry, iOS[2] et des portages compatibles ont été réalisés pour Pebble[3], entre autres.

Des versions passées du logiciels étaient open source, mais les version actuelles sont sous une licence propriétaire. [4]

Description technique[modifier | modifier le code]

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[modifier | modifier le code]

Google Authenticator implémente l'algorithme de mot de passe à usage unique définie dans l'IETF RFC 6238[5], et l’algorithme de génération de mot de passe unique basé sur HMAC défini dans l'IETF RFC 4226[6].

Pseudocode de l'algorithme RFC 6238[5][modifier | modifier le code]

La RFC 6238 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

Etat open source du logiciel pour Android[modifier | modifier le code]

En l'état de janvier 2019, l'application Google Authenticator disponible sur Google Play Store est couverte par une licence propriétaire. Google a rendu disponibles les versions précédents 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. [7] »

En réponse à la transition de Google Authenticator vers une licence propriétaire, un clone open source nommé FreeOTP[8] 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[9] est également disponible sur Google Play.

Références[modifier | modifier le code]

Liens externes[modifier | modifier le code]