web-dev-qa-db-fra.com

Comment fonctionnent les jetons RSA?

J'aimerais comprendre le fonctionnement des jetons RSA (SecurID), quel est l'algorithme utilisé ici, s'agit-il du même algorithme que le cryptage/décryptage RSA classique?

38
Jau L

Citer sur Wiki

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 d'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 graine est différente pour chaque jeton et est chargée dans le serveur RSA SecurID correspondant (RSA Authentication Manager, anciennement ACE/Server) en tant que Les jetons sont achetés 1 .

Donc, il peut y avoir quelque chose de lié à l'algorithme de clé publique RSA. On sait peu de choses sur les composants internes réels de SecurID (sécurité par obscurité), mais il existe certaines analyses, par exemple. analyse initiale sécurisée et plus au bas de la page SecurID dans wikipedia.

De plus, les jetons matériels sont inviolables , il est donc presque impossible de dupliquer les jetons volés.

MISE À JOUR: Grâce à l'eyaler, il n'y a pas de clé publique/privée dans SecurID classique; ils sont basés sur un "secret partagé" et non sur un algorithme asymétrique. Selon Wikipedia, cette variante de l'AES-128 est utilisée pour générer des codes de jetons à partir d'une clé secrète ("graine"). La clé secrète est encodée dans la clé en usine.

18
osgx

Vous pouvez voir comment cela fonctionne réellement à http://seclists.org/bugtraq/2000/Dec/459

Le mécanisme (trop simplifié) est

hash = <some initial value>
every x seconds do:
   hash = hashfunction(hash + secret_key)
   print hash
11
VolkerK

Réponse de @ VolkerK liens vers le code C qui décrit l'algorithme pour les jetons RSA "64 bits", qui utilisent un algorithme essentiellement personnalisé (~ 2000 à conception inversée).

Cependant, si vous êtes intéressé par l'algorithme utilisé par les jetons «128 bits» plus modernes (y compris les jetons matériels omniprés SID700 et les jetons logiciels équivalents), jetez un coup d'œil au code source de stoken , un projet open-source qui documente de manière approfondie leurs travaux; securid_compute_tokencode est le point d’entrée principal.

En gros, l'algorithme fonctionne comme ceci:

  • Générer des clés à partir de l'heure actuelle et du numéro de série
  • Chiffrer à plusieurs reprises le secret/la graine avec AES 128 bits
  • Extraire les chiffres de la représentation décimale de la sortie et ajouter le PIN pour une bonne mesure.

Ce n’est pas si différent du standard ouvert TOTP algorithm (faisant partie de Initiative For Open Authentication ) utilisé dans Google Authenticator, YubiKey, accès Symantec VIP , etc. … Juste MOAR SPESHUL ET PROPRIÉTÉ POUR EKSTRA SECURITEH! 

0
Dan Lenski

Vous pouvez vous référer à la RFC TOTP: Algorithme de mot de passe à utilisation unique temporelle

Comme cela est clairement décrit, l'algorithme exact utilisé dans les jetons RSA (SecurID) est l'algorithme TOTP (algorithme de mot de passe à utilisation unique en fonction du temps), un algorithme de hachage.

La graine (éventuellement générée par une variante de AES-128) était déjà enregistrée dans le jeton avant son utilisation.

0
kagb