Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
blog:ldap-2fa [2023/04/02 19:43] pcblog:ldap-2fa [2023/04/16 15:58] (Version actuelle) pc
Ligne 1: Ligne 1:
 ====== Authentification à deux facteurs (OTP) partout… ou presque ====== ====== Authentification à deux facteurs (OTP) partout… ou presque ======
  
-De nos jours, tout le monde vante l'authentification multi-facteurs comme la solution à tous les maux du //phishing//. À y regarder de plus près, chaque constructeur, chaque éditeur de logiciel, etc. fournit sa solution. Par exemple, sur les équipements réseau, chaque éditeur impose son autorité de certification si on veut authentifier les accès à privilèges par certificat X.509.+De nos jours, tout le monde vante l'authentification multi-facteurs comme la solution à tous les maux du //phishing//. À y regarder de plus près, chaque constructeur, chaque éditeur de logiciel, etc. fournit sa solution d'authentification forte. Par exemple, sur les équipements réseau, chaque éditeur impose son autorité de certification si on veut authentifier les accès à privilèges par certificat X.509. Ça n'est pas viable si on veut s'épargner la gestion d'une autorité de certification.
  
-Il existe des solutions normalisées et sûres comme FIDO ou OATH. Heureux propriétaire de YubiKey depuis presque dix ans, je n'utilisais jusqu'à il y a peu que HMAC-SHA1 et OpenPGP mais j'utilise de plus en plus FIDO (clefs SSH) et OATH TOTP.+Il existe des solutions d'authentification forte normalisées et sûres comme FIDO ou OATH. Heureux propriétaire de YubiKey depuis presque dix ans, je n'utilisais jusqu'à il y a peu que HMAC-SHA1 et OpenPGP mais j'utilise de plus en plus FIDO (clefs SSH) et surtout OATH TOTP.
  
 Commençons par TOTP : il s'agit de //Time-based One Time Password// c'est à dire mot de passe à usage unique **basé sur le temps** : l'horloge fait varier le mot de passe. L'algorithme est spécifié dans la RFC [[rfc>6238]] ; il est décrit dans [[wpfr>Mot de passe à usage unique basé sur le temps]] et utilise un secret partagé (20 octets aléatoires), stocké sur un serveur et dans la YubiKey. L'échange de secrets se fait par une URI OATH [[https://docs.yubico.com/yesdk/users-manual/application-oath/uri-string-format.html|détaillée sur cette page]], URI souvent échangée par QR code. Commençons par TOTP : il s'agit de //Time-based One Time Password// c'est à dire mot de passe à usage unique **basé sur le temps** : l'horloge fait varier le mot de passe. L'algorithme est spécifié dans la RFC [[rfc>6238]] ; il est décrit dans [[wpfr>Mot de passe à usage unique basé sur le temps]] et utilise un secret partagé (20 octets aléatoires), stocké sur un serveur et dans la YubiKey. L'échange de secrets se fait par une URI OATH [[https://docs.yubico.com/yesdk/users-manual/application-oath/uri-string-format.html|détaillée sur cette page]], URI souvent échangée par QR code.
Ligne 36: Ligne 36:
 </code> </code>
  
-''oathSecret'' contient le secret partagé encodé en base64''oathSerialNumber''le numéro de série du jeton YubiKey.+''oathSecret'' contient le secret partagé encodé en base64 (ici ''oathSerialNumber'' contient le numéro de série du jeton YubiKey, c'est purement optionnel).
  
 Lorsque ''jdoe'' s'authentifie, il saisit son mot de passe suivi des six chiffres donnés par sa « calculatrice OATH » (un script, une application comme [[https://www.yubico.com/products/yubico-authenticator/|Yubico Authenticator]], …). Par exemple ''monpasswordamoiquejai123456''. Lorsque ''jdoe'' s'authentifie, il saisit son mot de passe suivi des six chiffres donnés par sa « calculatrice OATH » (un script, une application comme [[https://www.yubico.com/products/yubico-authenticator/|Yubico Authenticator]], …). Par exemple ''monpasswordamoiquejai123456''.
Ligne 51: Ligne 51:
 NB : sur OpenBSD, le module ''login_totp-and-pwd(8)'' permet lui aussi une authentification à deux facteurs avec OATH TOTP. Par contre, il faut saisir ''123456/password'' et non pas ''password123456'' //ie//. dans l'ordre inverse et avec un ''/'' entre les deux. NB : sur OpenBSD, le module ''login_totp-and-pwd(8)'' permet lui aussi une authentification à deux facteurs avec OATH TOTP. Par contre, il faut saisir ''123456/password'' et non pas ''password123456'' //ie//. dans l'ordre inverse et avec un ''/'' entre les deux.
  
-Pour finir, rappelons que le secret TOTP peut être stocké dans un jeton USB comme une YubiKey mais aussi dans un logiciel comme [[https://keepass.info/|Keepass]] (ou une variante compatible) ou [[https://freeotp.github.io/|FreeOTP]].+Pour finir, rappelons que le secret TOTP peut être stocké dans un jeton USB comme une YubiKey mais aussi dans un gestionnaire de mots de passe sérieux comme [[https://keepass.info/|Keepass]] (ou une variante compatible) ou encore [[https://freeotp.github.io/|FreeOTP]].
  • blog/ldap-2fa.txt
  • Dernière modification : 2023/04/16 15:58
  • de pc