web-dev-qa-db-fra.com

Comment fonctionnent les dispositifs de jetons matériels?

Récemment, ma banque m'a envoyé ce minuscule appareil qui génère un code unique qui doit être utilisé lors de transactions en ligne. Tout l'appareil ne génère que ce code unique lorsque j'appuie sur un bouton blanc particulier et il ne semble pas qu'il se connecte à un serveur distant ou quoi que ce soit de tel.

J'ai fait quelques recherches et je me suis retrouvé dans la cryptographie avec quelque chose appelé la fonction Hash mais je ne comprends toujours pas.

Mes questions

  • Comment les serveurs de ma banque savent-ils que le code généré par cet appareil est correct?
  • Puisqu'il génère seulement cinq chiffres aléatoires toutes les 30 secondes, pourquoi le serveur n'authentifie-t-il pas un nombre aléatoire que j'ai également décidé d'utiliser?
27
Feyisayo Sonubi

Cela a très peu à voir avec les fonctions de hachage. Une fonction de hachage cryptographique peut faire partie de l'implémentation, mais ce n'est pas obligatoire.

En fait, il génère les chiffres sur un intervalle temporel. Si j'appuie sur le bouton pour générer les chiffres, il génère les chiffres et, après environ 25 secondes, et j'appuie de nouveau dessus, les chiffres ne changent pas lorsque je réappuie. immédiatement après que je venais de l'appuyer.

Il y a votre indice. C'est un algorithme pseudo-aléatoire ou cryptographique basé sur le temps. Basé sur le temps, il y a un code. Le dongle et le serveur connaissent - ou plutôt peuvent calculer - le code de chaque fenêtre. Ceci est un secret partagé - le dongle ne se connecte pas à un serveur distant. Le serveur autorisera probablement une ou deux des clés secrètes les plus récentes pour éviter que vous ne saisissiez une clé dont la date d'expiration est {juste} _ alors que la transmission était en cours.

(Bien que mon expérience récente avec l'authentification multifacteur Amazon Web Service ait certainement provoqué des échecs de connexion dans les 5 secondes qui suivent l'affichage d'un code. En d'autres termes, certains fournisseurs sont très stricts avec leurs fenêtres de minutage. Comme toujours , c’est un compromis entre sécurité et convivialité.)

Les abréviations CodesInChaos sont Mot de passe à usage unique basé sur le temps (TOTP) et Mot de passe à usage unique (HOTP) basé sur HMAC , deux algorithmes couramment utilisés dans l’authentification à deux facteurs.

Wikipedia a ceci à dire à propos de RSA SecurID , une marque particulière de authentification à deux facteurs dongle.

Le mécanisme d’authentification RSA SecurID consiste en un "jeton" - matériel (par exemple un dongle USB) ou logiciel (un jeton logiciel) - - attribué à un utilisateur de l’ordinateur et qui génère un code d’authentification à intervalles fixes (généralement 60 secondes) à l’aide de: une horloge intégrée et la clé aléatoire codée en usine de la carte (appelée "graine"). La valeur de départ est différente pour chaque jeton et est chargée dans le serveur RSA SecurID correspondant (RSA Authentication Manager, anciennement ACE/Server) lors de l'achat des jetons.

J'ai choisi cet article parce qu'il contient une description physique raisonnable. les articles de niveau supérieur mettent l'accent sur la mise en œuvre théorique plutôt que physique.

L'article confirme également que vous devez conserver le secret du jeton. Sinon, une autre personne peut emprunter l'identité de vos identifiants de connexion en sachant quels codes sont aussi faciles que vous le faites.

Le matériel de jeton est conçu pour être inviolable afin d'empêcher l'ingénierie inverse. Lorsque des implémentations logicielles du même algorithme ("jetons logiciels") sont apparues sur le marché, un code public a été développé par la communauté de la sécurité, permettant à un utilisateur d’émuler le logiciel RSA SecurID dans le logiciel, mais uniquement s’ils ont accès à un code RSA SecurID actuel. et le fichier d'origine RSA SecurID 64 bits introduit sur le serveur.

Cependant, puisque le serveur vérificateur doit avoir une connaissance préalable des jetons}, les secrets à deux facteurs sont également vulnérables aux attaques sur la source. SecurID a été victime d'un vol très médiatisé qui visait ses propres serveurs et a finalement conduit à des incursions secondaires sur les serveurs de ses clients.

Enfin, des informations supplémentaires sont disponibles sur le site security.stackexchange sister-site sous la balise à plusieurs facteurs, ainsi que sur ce site sous la balise à deux facteurs d'authentification .

34
Patrick M

Avant de commencer:

Je suis un ingénieur en électricité et électronique et vient d'ouvrir un ancien dispositif de sécurité et un brainstorming à ce sujet.

J'ai une réponse qui est liée au temps écoulé:

Chacun de ces dispositifs de sécurité contient un cristal de quartz et chaque fois que ce cristal est alimenté, son cycle de vie commence (comme tout le monde à naissance) et aucun des dispositifs ne démarre au même moment précis (car il ne génère pas le même nombre au même moment) donc chaque fois que vous appuyez sur le bouton, il génère un nombre unique en calculant le temps écoulé (probablement de l’ordre de 1/1000000 en raison du 6 chiffres affichés sur mon appareil avec des intervalles de 15 secondes) converti en un nombre unique. Mais comment le serveur de banque connaît-il mon numéro unique généré?

Réponse au serveur de banque:

La banque compte probablement le temps écoulé après son activation. car vous devez activer ces dispositifs de sécurité lors de la première utilisation avec un numéro unique généré à partir de votre propre appareil. Ainsi, dans un calcul de minutage exact, le serveur de banque sait que le nombre saisi doit être xxx-xxx et qu'il changera pendant le temps écoulé.

Je suis sûr que la batterie de l'appareil alimente le cristal de quartz pendant son cycle de vie, même si vous n'utilisez jamais le dispositif de sécurité. Si la batterie est retirée, le numéro de génération échoue car le cristal de quartz n’est pas alimenté et le temps ne peut pas être compté à ce moment. Donc, il ne peut plus jamais générer les mêmes numéros uniques.

0
Gem