web-dev-qa-db-fra.com

Comment l'identification en ligne «clé USB» peut-elle fonctionner?

Ma banque a récemment réorganisé son site Web, et cela a changé pour le mieux en ce qui me concerne. Surtout, la sécurité semble avoir été considérablement améliorée.

Plus important encore, ils ont introduit une méthode d’identification plutôt inhabituelle (je n’ai jamais vu cela auparavant), qu’ils appellent le "certificat électronique". Fondamentalement, vous devez vous rendre à la banque en personne et le gars vous donne une petite clé USB bon marché avec une très faible capacité. À partir de ce moment, vous devrez brancher la clé sur votre ordinateur chaque fois que vous souhaitez vous connecter. La clé seule ne suffit pas, vous devez également taper votre mot de passe - en gros, l'authentification à 2 facteurs avec un périphérique USB étant le deuxième facteur.

Comment cela peut-il fonctionner? Bien sûr, je pense que la clé USB contient des certificats/clés de cryptage d'une certaine sorte, qui sont utilisés dans le processus de connexion, mais ils ne nécessitent pas que l'utilisateur en installe logiciel sur la machine. Je trouve plutôt effrayant qu'un site Web accessible à partir d'un navigateur Web en bac à sable, sans aucun plug-in/module/application/barre d'outils installé, puisse voir la clé USB que vous venez de brancher. Et pas seulement voir ce bâton, mais lisez-le et utilisez son contenu suffisamment profondément pour vous connecter au niveau le plus sensible de votre application de banque en ligne.

Je ne suis pas un grand fan de brancher des appareils inconnus sur mon ordinateur pour commencer, et mon voyant lumineux a clignoté quand cela m'a été expliqué, alors j'ai opté pour une autre méthode d'identification (vous pouvez choisir). Je suis juste curieux.

PS: la mesure ne s'applique évidemment pas à leurs applications mobiles, car les smartphones n'ont pas de ports USB, mais ce n'est pas grave car vous ne pouvez pas faire grand-chose avec leur application téléphonique (c'est principalement une application de consultation, pas quelque chose que vous pouvez réellement faire gros paiements/transferts avec).

Edit: aucune boîte de dialogue d'ouverture de fichier n'est utilisée, ce qui rendrait l'explication assez claire.

70
user135452

Ce que votre banque vous a donné est un jeton de sécurité USB avec un certificat numérique ( comme ceux-ci ). Il s'agit de standardisés périphériques matériels que presque tous les systèmes d'exploitation prennent en charge plug & play prêts à l'emploi. Ils sont très courants pour l'implémentation de l'authentification multifacteur sur les systèmes à haute sécurité dans l'informatique d'entreprise.

Votre navigateur Web utilise HTTPS avec des certificats client pour accéder au site Web de votre banque. Il utilise le magasin de certificats de votre système d'exploitation pour trouver un certificat installé qui correspond à l'identité demandée par le serveur Web. Lorsque vous avez installé un jeton de sécurité USB standard, le système d'exploitation recherchera également tous les certificats sur le jeton.

Le système d'exploitation ne peut pas effectuer seul le processus de vérification avec le serveur Web, car le jeton ne permet pas de lire directement la clé privée des certificats qui y sont stockés. Le jeton inclut le matériel pour effectuer la vérification. La clé privée ne quitte donc jamais la clé USB. Cela signifie que même si votre PC est compromis par des logiciels malveillants, la clé privée du certificat ne risque pas d'être volée (mais gardez à l'esprit que cette méthode n'offre aucune protection après la réussite de l'authentification. votre navigateur Web).

Au fait: de quelle banque s'agit-il? Si ma banque prend également en charge cette méthode d'authentification, je pourrais même commencer à faire des opérations bancaires en ligne.

64
Philipp

Une façon dont cela pourrait fonctionner est que Chrome prend en charge FIDO U2F sans plugin. Étant donné que maintenant Chrome est maintenant le navigateur le plus populaire et que Chrome fonctionne sur Windows, Mac et Linux, il n'est pas totalement incorrect de prétendre que "cela fonctionne dans n'importe quel appareil qui a un port USB, Windows, Mac, Linux et plus, et de fonctionner hors de la boîte".

Ont-ils prétendu que cela fonctionne dans tous les navigateurs ou tout système d'exploitation?

29
Lie Ryan

.... ils n'exigent pas que l'utilisateur installe un logiciel sur la machine .... Je pensais que la possibilité pour une page Web de parcourir le système de fichiers librement sans action de l'utilisateur est trop souvent limitée par défaut

Oui, cela ne devrait certainement pas être possible sans pilotes de carte à puce. Il s'agit d'un mécanisme de sécurité fondamental de tout navigateur. Qu'est-ce qui donne la certitude que le certificat est lu sans cliquer sur une boîte de dialogue "Ouvrir un fichier", une boîte de dialogue Java ou pré-installation? Vous avez dit que vous avez choisi une autre option de vérification.

Cela ressemble à la clé USB utilisée, par exemple, par la Bank Of China. ne telle technologie est décrite ici.

aurait été compatible avec "tout appareil doté d'un port USB"

Avoir un certificat PKCS # 11, ou un # 12 à combiner avec une phrase secrète fonctionnera sur tous les OS. C'est de la même manière que les gestionnaires de mots de passe comme Keepass fonctionnent, en combinant quelque chose que vous savez avec quelque chose que vous devez obtenir 2 facteurs d'authentification.

25
J.A.K.

Ce n'est probablement qu'un lecteur de carte à puce USB, avec une carte à puce de taille SIM insérée.

L'installation manuelle des pilotes n'est pas nécessaire car au moins des pilotes génériques pour le lecteur et la carte sont déjà installés dans la plupart des systèmes d'exploitation modernes.

Voir l'image ci-dessous pour un exemple d'un tel appareil:

Photo of USB device.

Il y a un certificat avec une clé privée stockée sur cette carte à puce SIM à l'intérieur du lecteur. Lorsque vous le branchez sur l'ordinateur, ce certificat de la carte à puce est chargé dans le magasin de certificats du système d'exploitation. À partir de là, il se comporte essentiellement comme n'importe quel autre certificat qui est enregistré sur l'ordinateur et peut être utilisé pour accéder à des ressources sécurisées, signer des documents/du courrier, chiffrer des choses, etc.

Celui-ci en particulier est délivré par Cert Authority qui est approuvé par ma banque (banque en ligne) et par l'État (principalement utilisé par moi pour les trucs liés à l'IRS et pour demander des documents réels).

12
user2720406

Il s'agit très probablement d'un appareil qui prétend être un clavier et est donc reconnu par n'importe quel système d'exploitation sans nécessiter de pilotes spéciaux. En interne, il utiliserait probablement HOTP (ou TOTP, s'il avait une puce RTC et une batterie) et juste "taper" l'OTP chaque fois que le bouton est enfoncé, comme un Yubikey ou appareil U2F similaire.

Le navigateur ne parle pas et ne sait pas que l'USB est là; il demande simplement à l'utilisateur d'appuyer sur un bouton physique sur l'appareil (pour dire à l'appareil de "taper" le code, car le navigateur lui-même ne peut pas lui parler), puis interprète toutes les frappes (jusqu'à la longueur du code) il reçoit comme provenant de l'appareil.

11
André Borie

Cela ressemble à une idée théorique que j'ai eue il y a une dizaine d'années.

Presque tous les systèmes d'exploitation prennent en charge les périphériques réseau USB. Votre clé USB peut prétendre être une carte réseau, connectée à un réseau local, avec également un serveur Web sur ce réseau. Ce serveur Web peut également avoir des certificats HTTPS.

Votre navigateur Web peut faire des demandes HTTPS à ce serveur Web et découvrir que la clé USB et le site Web de la banque se font mutuellement confiance. Cela n'est pas considéré comme une fuite de sandbox, car ni le navigateur ni le système d'exploitation ne savent que le serveur Web est réellement sur la clé USB.

Avertissement de propriété intellectuelle: à ma connaissance, mon ancien employeur détient un brevet sur cette idée dans la plupart des juridictions. Contactez un conseil en brevets avant de copier cette idée.

9
MSalters

Comme certaines des autres réponses mentionnées, il s'agit très probablement d'un jeton de sécurité USB. Considérez-le comme un lecteur de carte à puce + une carte à puce intégrée (et parfois ils sont en fait mis en œuvre de cette façon). Pensez carte CAC utilisée par les organisations de défense américaines. Pensez à la carte PGP. Certains modèles Yubikey prennent également en charge l'utilisation d'une carte à puce.

Ce type d'appareils est largement utilisé par les banques en Chine pour protéger leur site Web de banque en ligne/logiciel client de bureau, et ma réponse est principalement basée sur mon expérience personnelle en utilisant ces jetons en Chine.

Comment l'utilisez-vous?

Lorsque vous vous inscrivez aux services bancaires en ligne et optez pour un jeton USB, la banque vous donne le jeton, crée une paire de clés publique/privée et votre certificat personnel, et chargez-les dans le jeton. Vous définissez un mot de passe sur le jeton, qui est distinct de votre mot de passe de connexion aux services bancaires en ligne.

Vous installez le pilote fourni par la banque sur votre ordinateur personnel, branchez le jeton et accédez au site Web de la banque. Chaque fois que vous vous connectez ou effectuez une opération sensible (transfert de fonds, modification des informations de contact, autorisation d'achat en ligne, etc.), le navigateur/système d'exploitation vous invite à saisir votre mot de passe de jeton, le voyant du jeton clignote pendant quelques secondes et la transaction passe par.

Attendez, je dois installer des pilotes?

Oui. Le système d'exploitation Windows possède une interface de carte à puce standard, mais chaque modèle de jeton USB nécessite toujours un pilote. Très rarement, Windows Update installera les pilotes appropriés pour vous, mais dans la plupart des cas, vous devrez télécharger un package sur le site Web de la banque.

Souvent, le seul système d'exploitation pris en charge est Windows et le seul navigateur pris en charge est IE. (Ils les aiment certains ActiveX.) Il est certainement possible en général pour les cartes à puce/jetons USB de prendre en charge d'autres OS/navigateurs, voir la carte CAC ci-dessus; vous devez vérifier la compatibilité avec votre propre banque.

Alors, comment vous authentifie-t-il?

Le navigateur demande au système d'exploitation de demander au jeton de signer un petit morceau de données (peut-être les détails de votre transaction). Le jeton le signe à l'aide de votre clé privée et de votre certificat. Le navigateur envoie la signature à la banque. La banque vérifie la signature et est convaincue que seul le jeton qu'elle vous a donné possède la clé privée pour produire cette signature.

La clé privée ne quitte jamais le jeton. S'il est correctement conçu, le jeton ne doit jamais divulguer la clé privée.

7

Tout d'abord, permettez-moi de dire que je suis assez sceptique quant à l'affirmation d'un employé non technique selon laquelle cela fonctionne sur "tout appareil doté d'un port USB", quel que soit le navigateur ou le système d'exploitation. Je ne serais pas surpris si le système d'exploitation pris en charge se révélait être seulement quelques versions de Windows (et, peut-être, MacOS). Cependant, il est intéressant de penser comment un tel appareil pourrait fonctionner.

La plupart des solutions ne nécessitant pas de pilotes, comme la proposition d'André Borie d'un clavier USB, nécessiteraient cependant une interface supplémentaire (comme un bouton matériel).

Pourtant, le message de user2720406 m'a donné une idée d'un appareil qui fonctionnerait en effet [à certains endroits] pour tout appareil [allumé] qui possède un port USB:

Le périphérique USB contiendrait simplement un carte SIM , en l'utilisant pour accéder à Internet de lui-même via GPRS/3G. Ensuite, l'appareil enverrait simplement des messages signés numériquement "Le client avec le jeton 12312121 utilise les services bancaires en ligne". La session en ligne n'est pas autorisée à moins qu'elle n'ait été reçue au cours des 5 dernières minutes (plus peut-être d'autres facteurs, comme l'IP du client ayant une géolocalisation similaire à l'IP de l'appareil). Ainsi, le port USB ne serait utilisé que pour l'alimentation et l'appareil serait complètement indépendant de ce qui est installé sur l'ordinateur.

5
Ángel

Cela ressemble à un Yubikey. Ils sont bien connus et fonctionnent très bien. https://www.yubico.com/products/yubikey-hardware/yubikey4/

  • En ce qui concerne le fait de ne pas avoir besoin de pilotes: le Yubikey s'identifie comme un clavier afin que toute machine dotée d'un pilote de clavier puisse en lire le texte.
  • Comment cela fonctionne: vous appuyez sur le bouton et le Yubikey émet une clé publique (à partir d'une clé privée sécurisée intégrée dans l'appareil). La banque peut alors vous authentifier et confirmer que vous avez ce que vous savez (votre mot de passe) et ce que vous avez (votre clé privée physiquement sécurisée).
  • Pourquoi est-il sécurisé: les logiciels de votre ordinateur ne peuvent pas accéder à votre clé privée, de sorte que les logiciels malveillants ne peuvent pas copier la clé et prétendre être vous. Il faudrait qu'il vous soit volé physiquement. (ce qui est possible, mais c'est pourquoi vous l'associez à quelque chose que vous connaissez)

  • Qui les utilise et pourquoi: Google a aidé à concevoir le yubikey afin qu'ils puissent résoudre le problème des logiciels malveillants sur un ordinateur saisissant les informations d'identification locales alors que l'utilisateur n'était pas présent. Chaque ingénieur Google en a un. Je les utilise depuis des années et déploie de nombreuses solutions 2fa autour d'eux.

2
jorfus