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?
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.
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
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:
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!
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.