web-dev-qa-db-fra.com

Comment fonctionne HSBC "Secure Key"?

Ma banque m'a récemment envoyé un Digipass/Secure Key, qui ressemble à une petite calculatrice . Vous appuyez sur le bouton vert pour l'activer, tapez a PIN pour le déverrouiller, puis appuyez à nouveau sur le bouton vert pour générer un code à 6 chiffres que vous tapez lors de la connexion.

Cependant, je ne comprends pas vraiment comment cet appareil augmente la sécurité. Je suppose que chaque appareil est lié au compte d'une personne. Mais il n'y a aucune communication de l'appareil. Je peux appuyer 10 fois sur le bouton et générer 10 codes différents, qui semblent fonctionner.

Comment la banque sait-elle que le code est authentique?

42
DisgruntledGoat

Il existe deux façons standard de construire un tel appareil:

  • basé sur le temps. L'appareil possède une clé secrète [~ # ~] k [~ # ~] (connu uniquement des l'appareil et à votre banque). Lorsque vous appuyez sur le bouton, l'appareil calcule F (K, T) (où [~ # ~] t [~ # ~] est l'heure actuelle) et l'affiche sous la forme d'un code à 6 chiffres.

    Votre banque, qui connaît également [~ # ~] k [~ # ~] , peut calculer la même fonction. Pour faire face au fait que les horloges peuvent ne pas être parfaitement synchronisées, la banque calculera une plage de valeurs et testera si le code à 6 chiffres que vous fournissez se situe n'importe où dans cette plage. En d'autres termes, la banque peut calculer F (K, T-2) , F (K, T- 1) , F (K, T) , F (K, T + 1) , F (K, T + 2) , et si le code que vous fournissez correspond à l'un des ces 5 valeurs, la banque accepte votre login.

    Je soupçonne que ce n'est pas ainsi que fonctionne votre appareil , car votre appareil vous donne toujours une valeur différente chaque fois que vous appuyez sur le bouton.

  • Basé sur une séquence. L'appareil possède une clé secrète [~ # ~] k [~ # ~] (connu uniquement des l'appareil et à votre banque). Il contient également un compteur [~ # ~] c [~ # ~] , qui compte combien de fois vous avez appuyé sur le bouton jusqu'à présent. [~ # ~] c [~ # ~] est stocké dans la mémoire non volatile de votre appareil. Lorsque vous appuyez sur le bouton, le périphérique incrémente [~ # ~] c [~ # ~] , calcule F (K, C) , et le renvoie sous forme de code à 6 chiffres. Cela garantit que vous obtenez un code différent à chaque fois.

    La banque suit également la valeur actuelle du compteur pour votre appareil et l'utilise pour reconnaître si le code à 6 chiffres que vous avez fourni est valide. Souvent, la banque testera une fenêtre de valeurs. Par exemple, si la dernière valeur de compteur qu'elle a vue était [~ # ~] c [~ # ~] , alors la banque pourrait calculer F (K, C + 1) , F (K, C + 2) , F (K, C + 3) , F (K, C + 4) et acceptez votre code à 6 chiffres s'il correspond à l'une de ces quatre possibilités. Cela permet de garantir que si vous appuyez une fois sur le bouton et que vous ne l'envoyez pas à la banque, vous pouvez toujours vous connecter (vous n'êtes pas verrouillé pour toujours). Dans certains systèmes, s'il y a un écart dans les codes (par exemple, parce que vous avez appuyé sur le bouton plusieurs fois et que vous n'avez pas envoyé le code à la banque), vous devrez entrer deux codes valides consécutifs avant que la banque ne vous connecte sur.

Sur la base de ce que vous nous avez dit, je suppose que votre appareil utilise probablement l'approche basée sur la séquence.

46
D.W.

Si vous voulez une explication "ouverte" de la façon dont le mot de passe unique est dérivé, vous pouvez lire ici la norme Oath et les spécifications de l'algorithme, https://openauthentication.org/specifications-technical-resources / . Le produit Vasco/Digipass prend en charge cette spécification, et il peut être utilisé par votre jeton dans ce cas, mais il prend en charge d'autres algorithmes de génération OTP.

En règle générale, le numéro de série du jeton est conservé en tant qu'enregistrement dans la base de données du serveur d'authentification et le numéro de série est attribué à un nom d'utilisateur. Le numéro de série est également associé à une valeur de "graine" qui, lorsqu'elle est combinée via l'algorithme avec la valeur de temps/séquence, dérive l'OTP.

De plus, vous avez pu saisir plusieurs fois PIN et être authentifié car le serveur d'authentification autorisera quelques minutes de dérive d'horloge. Le jeton que vous avez possède une horloge intégrée à générer le composant basé sur le temps. Le serveur génère des valeurs pour une plage de temps. Il peut ensuite voir quel code vous soumettez et écrire une valeur de dérive dans votre enregistrement. Certains systèmes auront un mode "code suivant", qui est utilisé si les horloges dérivent trop loin les unes des autres. Le système vous demandera de soumettre deux valeurs et de voir si elles sont correctes et dans le bon ordre, sur une plus grande "plage" de temps. Si les valeurs sont correctes, le serveur d'authentification peut écrire la dérive de l'horloge valeur à l'enregistrement.

9
Fearmonger

Je pense que cette question se prête à un aperçu de très haut niveau du fonctionnement de l'authentification multifacteur ( MFA ). Bien sûr, nous devons survoler beaucoup et beaucoup de détails techniques.

En bref, voici ce qui se passe:

  1. La banque programme le jeton avec un cryptage unique clé . (Dans ce cas, votre jeton Digipass est fabriqué par Vasco, mais il y a beaucoupautresociétés qui font des jetons similaires, qui sont " quelque chose que vous avez "en ce qui concerne l'authentification à plusieurs facteurs).

  2. Le jeton générera une série de caractères dérivés de la clé de chiffrement, de l'heure actuelle et (éventuellement) d'autres divers facteurs.

  3. Étant donné que la banque connaît la clé de chiffrement (unique) et tous les autres facteurs utilisés par le jeton, elle peut procéder à une rétro-ingénierie de l'entrée pour savoir à qui "appartient" ce jeton. Si le propriétaire du jeton correspond au propriétaire du compte bancaire auquel vous êtes connecté, la connexion est authentique.

Il existe de nombreuses variantes sur ce thème central, mais en général, elles impliquent toujours "quelque chose que vous avez" (un jeton physique ou une application pour smartphone), une clé secrète stockée dans le jeton et un algorithme mathématique pour produire la sortie.

Souvent, le temps est un facteur critique pour générer la sortie. Selon l'algorithme, la sortie peut être différente à chaque fois (dans votre cas), ou elle ne peut varier qu'occasionnellement (par exemple, toutes les heures).

4
scuzzy-delta