web-dev-qa-db-fra.com

Quelqu'un utilise-t-il des certificats de navigateur client?

Les certificats de navigateur client semblent être un bon moyen de protéger les sites contre les intrus - il est impossible de deviner et devrait être plus difficile à voler. Bien sûr, ils ne résolvent pas tous les problèmes, mais ils ajoutent de la sécurité.

Cependant, je n'ai rencontré aucun site public les utilisant. Y a-t-il des sites qui les utilisent? Y a-t-il des défauts qui empêchent leur utilisation même lorsque la sécurité est importante ou une autre raison pour laquelle ils sont si peu utilisés?

43
StasM

Le côté client certifié n'a tout simplement pas eu un bon compromis coût/avantage. Ils sont très déroutants pour les utilisateurs, donc les coûts de support augmentent. Et ils ne sont encore que des bits et donc "quelque chose que vous savez" et sont vulnérables à une gamme d'attaques logicielles sur le navigateur, le schéma de distribution, le phishing, etc.

Les schémas de jetons matériels (authn à deux facteurs) sont meilleurs pour un bon authn. Les schémas d'authentification unique (SSO), potentiellement fédérés et potentiellement soutenus par des jetons matériels, résolvent plus de problèmes et sont plus faciles à déployer.

La gestion d'un grand nombre de certificats serait beaucoup plus compliquée pour un utilisateur que le problème épineux de plusieurs mots de passe actuel, et les navigateurs n'offrent pas un bon support pour sélectionner le bon certificat. Et si un utilisateur utilise un seul certificat pour de nombreux sites, il y a des problèmes de confidentialité car l'utilisation du certificat identifie l'utilisateur.

Au fil des décennies, beaucoup d'entre nous ont pensé que l'ère de la cryptographie PK de l'utilisateur final était imminente, en particulier ceux comme moi amoureux de la beauté de RSA. Il se trouve que la façon dont il a évolué, les coûts du service d'assistance et de développement, les subtilités et les complexités et les enchevêtrements juridiques de l'ICP du monde réel continuent de grignoter les avantages.

L'équipement semble plus cher que les embouts, mais pas si les embouts ne font pas le travail, ou si leur utilisation efficace gruge la productivité.

20
nealmcb

J'utilise des certificats de navigateur pour une poignée de sites, mais comme vous l'avez dit principalement pas sites publics.

La principale difficulté des certificats côté client est leur distribution eux. Autrement dit, comment puis-je vous donner en toute sécurité le certificat "tout-puissant" qui vous permettra d'accéder à mon système, si je ne vous connais pas?
Les systèmes d'entreprise sont bien sûr plus faciles, tout comme les systèmes ouverts à un petit cercle de partenaires. Mais la distribution des clés est toujours un casse-tête difficile à résoudre. C'est beaucoup plus difficile que de simplement partager un mot de passe entre deux parties, compte tenu des aspects de la clé privée et de la protection du certificat, ....

Il existe en fait sont des solutions à cela, bien sûr, et j'en utilise même une pour un site Web "public". (Il se trouve que c'est dans le domaine de l'identité, donc ça vaut le coût pour eux ...). Cette solution est basée sur l'authentification principale par mot de passe, et après avoir été complètement authentifié, j'ai la possibilité de télécharger mon certificat - en supposant que je sais quoi en faire.
Pas beaucoup mieux, car le canal de mot de passe est toujours ouvert ... mais cela me donne au moins la possibilité de changer le mot de passe en quelque chose d'impossible et d'inutilisable, et d'avoir seulement le CSC. ...

Mais ce n'est pas anodin et un peu complexe à mettre en œuvre correctement. La distribution bogue toujours la plupart des utilisateurs.

18
AviD

Si je comprends bien, l'utilisation de certificats clients pose de nombreux problèmes dans la pratique. Voici quelques-uns des problèmes que j'ai entendus:

  1. Obtention de certificats clients. Il est difficile pour les utilisateurs d'obtenir initialement un certificat client en premier lieu. De toute évidence, les sites ne veulent pas créer d'obstacles inutiles que les utilisateurs doivent franchir avant même de commencer à utiliser leur site. (Même le fait que le site génère le certificat client et le fournisse au client n'est pas une opération familière pour un utilisateur - sans oublier qu'il a des problèmes de sécurité, car idéalement, seul le client devrait connaître la clé privée du client.) Navigateurs modernes fournir des moyens de créer ou d'importer des clés privées et des certificats clients, mais l'expérience utilisateur est horrible.

  2. J'ai entendu dire que certains serveurs ne prennent apparemment pas bien en charge les certificats client (par exemple, http://osdir.com/ml/encryption.cryptlib/2005-09/msg00000.html).

  3. La mobilité est un problème. Malgré tous leurs problèmes, les mots de passe sont très portables; les certificats clients ne le sont pas. Même si le client parvient à générer une clé privée et à obtenir un certificat client pour cela, s'il veut commencer à utiliser un deuxième ordinateur, il devra faire une danse compliquée et déroutante pour transférer la clé privée et le certificat sur le second ordinateur. Si leur premier ordinateur meurt (ou subit une panne de disque dur) et qu'il doit réinstaller son système d'exploitation ou acheter un nouvel ordinateur, et si le client n'a pas sauvegardé sa clé privée, il n'aura aucun moyen de mettre sa clé privée clé et cert sur leur nouvel ordinateur; ils sont assez foutus. Un site peut créer une méthode d'authentification de sauvegarde afin que les utilisateurs qui ont perdu leur clé privée puissent générer et soumettre une nouvelle clé privée, mais cette méthode d'authentification de sauvegarde peut facilement devenir le maillon le plus faible de la chaîne. Peu importe la force de votre méthode d'authentification principale, si votre méthode de sauvegarde est facilement vaincue.

  4. Il n'est pas clair s'il existe un support suffisant des navigateurs pour les certificats clients. Je ne sais pas si tous les différents navigateurs (y compris les navigateurs mobiles) prennent correctement en charge les certificats clients.

  5. Le modèle PKI est assez bien cassé de toute façon. L'hypothèse était que l'autorité de certification vérifierait l'identité de l'utilisateur (par exemple, son vrai nom) avant de lui donner un certificat client, et le protocole a été conçu autour de cette hypothèse. Cependant, les autorités de certification actuelles ne vérifient pas vraiment l'identité. Cela crée un décalage entre les hypothèses de conception et la réalité.

  6. Les certificats clients créent risques pour la confidentialité pour les utilisateurs. Dans certains navigateurs, ils permettent le suivi des utilisateurs à travers les domaines. (Tous les navigateurs veillent à ce que les cookies se défendent soigneusement contre cette menace: seul le domaine qui a défini le cookie peut le lire. Cependant, les navigateurs n'intègrent pas de protections similaires pour les certificats client SSL.) Je ne sais pas si les navigateurs modernes ont traité efficacement ce problème. problème, mais c'est un domaine où les certificats clients sont relativement immatures, pour autant que je sache.

  7. Il y a des problèmes techniques gênants si le client génère et signe son propre certificat client. Selon le protocole TLS, le serveur est censé demander d'abord une liste des autorités de certification qu'il est prêt à accepter; le client répond ensuite avec un certificat client émis par cette autorité de certification, s'il en a un. (Notez que cela se produit avant que le client ait envoyé une demande HTTP, des cookies HTTP, un nom d'utilisateur ou toute autre information d'identification.) Cela signifie que, si vous souhaitez utiliser des certificats client émis par le client (auto-signé), alors le le serveur doit connaître le nom de l'autorité de certification que le client utilise avant même que le client s'authentifie ou s'identifie. C'est délicat.

  8. Enfin, la cerise sur le gâteau: les certificats clients ne résolvent pas le problème du phishing. Ils empêchent le vol de la clé privée du client, mais pas d'autres informations personnelles. Les méchants peuvent toujours créer un faux site bancaire (qui rejette tous les certificats clients qui lui sont envoyés). Le site de phishing n'apprendra pas la clé privée de l'utilisateur, mais si l'utilisateur pense qu'il s'est connecté au site réel de la banque, il peut saisir son numéro de compte bancaire, SSN, PIN, etc., révélant ces informations à l'attaquant.

Tout cela se traduit par une mauvaise convivialité et une augmentation des coûts de support (par exemple, les appels au service d'assistance). En bref, vous pouvez utiliser des certificats clients, au moins en principe; c'est juste que, dans la pratique, cela n'est pas pratique pour tout le monde et l'utilisabilité est nulle.

Plus fondamentalement, il y a un problème de poulet et d'œufs: jusqu'à ce que de nombreux sites commencent à utiliser les certificats clients, les fabricants de navigateurs n'accorderont pas une priorité élevée à la possibilité d'utiliser les certificats clients; et tant que les navigateurs ne rendront pas les certificats clients utilisables, les sites ne les adopteront pas. En d'autres termes, si nous voulons utiliser les certificats clients pour résoudre le problème général d'authentification, nous devons les deux convaincre tous les fabricants de navigateurs d'apporter des changements majeurs aux navigateurs, et convaincre les sites d'adopter de nouvelles technologies. Aucun avantage ne revient à personne jusqu'à ce que toutes ces parties apportent des modifications coordonnées. C'est un énorme obstacle à l'adoption.

Il existe de meilleures solutions pour l'authentification sécurisée sur le Web, impliquant HTTPS, les cookies persistants sécurisés et la récupération par courrier électronique. Cependant, cela dépasse la portée de votre question.

Dernier commentaire: Le défi fondamental de l'authentification Web sécurisée est la convivialité, la convivialité, la convivialité. Rendre les systèmes qui fonctionnent bien pour les utilisateurs - et qui sont sûrs, lorsqu'ils sont utilisés comme des utilisateurs ordinaires sont susceptibles de les utiliser - est très difficile et c'est tout ce qui compte. La crypto n'est qu'une infime partie de ce problème.

15
D.W.

Je pense que principalement ils ne sont pas utilisés parce que la personne moyenne (c'est-à-dire pas vous puisque vous posez cette question) ne peut pas comprendre leur utilisation. Il existe quelques sites commerciaux qui les utilisent, mais ils sont généralement à des fins très spéciales ou pour l'automatisation. Par exemple, Oracle utilise des certificats clients pour valider les utilisateurs finaux avec des contrats de support valides pour les mises à jour de packages. Mais même avec des utilisateurs très techniques, l'échange de clés approprié peut être difficile.

Cela étant dit, j'utilise des certificats clients pour protéger des parties de mes sites Web que je laisse ouvertes au public, et je pense qu'elles sont fantastiques.

7
bahamat

La carte d'identité nationale estonienne est une carte à puce qui contient un certificat client intégré. Vous pouvez vous procurer des lecteurs de cartes à puce et les utiliser chez vous pour postuler à des services gouvernementaux ou vous authentifier auprès des principales banques estoniennes. Tout ce que l'utilisateur voit est une invite de carte/pin et la prochaine chose qu'il sait est qu'il est authentifié.

6
blowdart

L'un de nos clients utilise des certificats clients pour authentifier les systèmes de kiosques à écran tactile. Les systèmes sont distribués aux revendeurs et chacun obtient son certificat racine CA installé ainsi qu'un certificat client unique.

Le certificat client est utilisé pour authentifier le système de kiosque auprès du serveur Web, sans obliger le revendeur à effectuer une authentification manuelle au démarrage de l'appareil. Si un système individuel doit être fermé, notre client peut facilement révoquer le certificat.

5
Martijn Heemels

Le ministre français de l'Économie a publié un site internet public de gestion fiscale (paiement en ligne des taxes, informations sur les délais, téléchargement de formulaires ...) qui utilise le certificat SSL pour l'authentification des utilisateurs. L'enregistrement des utilisateurs (ce rôle est attribué à un Autorité d'enregistrement dans l'ICP) qui a été signalé par AviD ♦ comme étant la principale difficulté dans un tel projet, a été résolu car cette administration a déjà suffisamment d'informations pour identifier les contribuables.

4
Jcs

Une variante des certificats de navigateur est utilisée dans le protocole ActiveSync basé sur HTTP/S.

Plusieurs administrateurs de messagerie utilisent des certificats pour authentifier un appareil mobile afin que la messagerie mobile ne s'arrête pas soudainement de fonctionner lorsque l'utilisateur change de mot de passe.

1
goodguys_activate

Les certificats clients ont la meilleure qualité d'authentification. Mais en raison d'un problème de poulet et d'oeufs, les utilisateurs n'ont aucune raison d'acquérir un certificat sérieux (cela coûte de l'argent et du temps car la livraison devrait être une opération en face à face) car peu de sites les utilisent et les administrateurs du site n'ont aucune raison de les soutenir activement depuis leurs utilisateurs n'ont généralement pas de certificat.

Les systèmes d'entreprise sont différents car si les exigences de sécurité sont suffisamment élevées, le coût global d'une infrastructure PKI est parfaitement acceptable.

Mais lorsque vous vous souvenez du coût total réel et de la procédure à suivre pour une carte d'identité nationale (sans parler d'un passeport), l'ajout d'un certificat établi par une administration nationale n'ajouterait pas grand-chose et résoudrait bien toutes les questions d'authentification avec des sites institutionnels comme les administrations, les banques, ... Bien sûr je ne l'utiliserais pas pour les sites marchands ou les petits forums contrôlés

1
Serge Ballesta

Je travaille au développement d'un site qui propose l'authentification par carte à puce. L'utilisateur connecte un lecteur de carte USB, se rend sur le site et lorsqu'il souhaite se connecter, il insère la carte et fournit un code PIN. Le problème est que le système utilise une applet Java, et ces applets ne sont plus prises en charge par Chrome ou par MS Edge. Un nouveau middleware est en cours de développement qui ne ne pas utiliser Java Applets, et c'est une course contre la montre car nous pouvons voir tous les principaux navigateurs arrêter Java Applets d'interagir avec le matériel sur votre PC à l'avenir.

0
Totoro53

Si nous développons la portée OP pour dépasser le navigateur. Les certificats clients peuvent également être utilisés dans le contexte sans navigateur. Par exemple, Docker utilise TLS et des certificats clients pour sécuriser leurs connexions entre un client docker distant et leurs démons.

Cela devrait néanmoins être géré, mais il n'est pas nécessaire de passer par une autorité de certification à part entière, il peut s'agir d'une autorité de certification d'entreprise interne pour gérer tous les certificats utilisés par les machines.

0
Archimedes Trajano