Expérience d'application de la technologie RUTOKEN pour l'enregistrement et l'authentification des utilisateurs dans le systÚme (partie 1)

Bonjour ! Je voudrais partager mon expérience sur ce sujet.

Routoken est une solution matérielle et logicielle dans le domaine de l'authentification, de la protection des informations et de la signature électronique. En gros, c'est une clé USB qui peut stocker des données d'authentification utilisées par l'utilisateur pour se connecter au systÚme.

Dans cet exemple, nous utilisons le Routoken EDS 2.0.

Pour travailler avec ce Routoken, il est nécessaire d'installer le pilote sur Windows.

Pour Windows, l'installation d'un seul pilote permet d'installer tout ce qui est nécessaire pour que le systÚme d'exploitation reconnaisse votre Routoken et que vous puissiez travailler avec.

Avec le Routoken, il existe différentes maniÚres d'interagir. Vous pouvez y accéder depuis la partie serveur de l'application ou directement depuis la partie client. Dans cet exemple, nous examinerons l'interaction avec le Routoken depuis la partie client de l'application.

La partie client de l'application interagit avec le Routoken via le plug-in Routoken. C'est un programme qui doit ĂȘtre installĂ© sĂ©parĂ©ment sur chaque navigateur. Pour Windows, il suffit de tĂ©lĂ©charger et d'installer le plug-in, qui se trouve Ă  ce lien.

Tout est prĂȘt, maintenant nous pouvons interagir avec le Routoken depuis la partie client de l'application.

Cet exemple prĂ©sente l'idĂ©e de mise en Ɠuvre d'un algorithme d'autorisation d'utilisateur dans le systĂšme en utilisant le schĂ©ma de challenge-rĂ©ponse.

L'idée est la suivante :

  1. Le client envoie une demande d'autorisation au serveur.
  2. Le serveur, en réponse à la demande du client, envoie une chaßne aléatoire.
  3. Le client complÚte cette chaßne par 32 bits aléatoires.
  4. Le client signe la chaĂźne obtenue avec son certificat.
  5. Le client envoie au serveur le message codé obtenu.
  6. Le serveur vérifie la signature, obtenant le message initial non codé.
  7. Le serveur détache les 32 derniers bits du message non codé reçu.
  8. Le serveur compare le résultat obtenu avec le message qui a été envoyé lors de la demande d'autorisation.
  9. Si les messages sont identiques, l'autorisation est considérée comme réussie.

Dans l'algorithme ci-dessus, il y a un concept appelé certificat. Dans le cadre de cet exemple, il est nécessaire de comprendre une certaine théorie cryptographique. Sur Habr, il y a un excellent article à ce sujet..

Dans cet exemple, nous allons utiliser des algorithmes de chiffrement asymĂ©triques. Pour mettre en Ɠuvre des algorithmes asymĂ©triques, il est nĂ©cessaire de disposer d'une paire de clĂ©s et d'un certificat.

Une paire de clĂ©s se compose de deux parties : une clĂ© privĂ©e et une clĂ© publique. La clĂ© privĂ©e, comme son nom l'indique, doit rester secrĂšte. Nous l'utilisons pour dĂ©chiffrer des informations. La clĂ© publique peut ĂȘtre distribuĂ©e Ă  quiconque. Cette clĂ© est utilisĂ©e pour chiffrer les donnĂ©es. Ainsi, tout utilisateur peut chiffrer des donnĂ©es en utilisant la clĂ© publique, mais seul le propriĂ©taire de la clĂ© privĂ©e peut dĂ©chiffrer ces informations.

Un certificat est un document électronique qui contient des informations sur l'utilisateur auquel appartient le certificat, ainsi qu'une clé publique. Avec un certificat, l'utilisateur peut signer toutes les données et les envoyer à un serveur, qui peut vérifier cette signature et déchiffrer les données.

Pour qu'il soit possible de signer correctement un message avec un certificat, il faut le crĂ©er correctement. Pour cela, sur le Rutoken, une paire de clĂ©s est d'abord créée, puis le certificat doit ĂȘtre liĂ© Ă  la clĂ© publique de cette paire de clĂ©s. Le certificat doit contenir exactement la clĂ© publique qui se trouve sur le Rutoken, c'est important. Si nous crĂ©ons simplement une paire de clĂ©s et un certificat immĂ©diatement sur le cĂŽtĂ© client de l'application, comment le serveur pourra-t-il ensuite dĂ©chiffrer ce message chiffrĂ© ? En effet, il ne sait rien de la paire de clĂ©s ou du certificat.

Si nous plongeons plus profondément dans ce sujet, nous pouvons trouver des informations intéressantes sur Internet. Il existe certains centres de certification auxquels nous faisons confiance. Ces centres de certification peuvent délivrer des certificats aux utilisateurs, et ils installent ces certificats sur leur serveur. Ensuite, lorsque le client se connecte à ce serveur, il voit ce certificat et constate qu'il a été délivré par un centre de certification, ce qui signifie qu'il peut faire confiance à ce serveur. Il y a également beaucoup d'informations sur Internet sur la maniÚre de tout configurer correctement. Par exemple, vous pouvez commencer par ça.

Si nous revenons à notre tùche, la solution semble évidente. Il faut d'une certaine maniÚre créer son propre centre de certification. Mais avant cela, il faut comprendre sur quelle base le centre de certification doit délivrer un certificat à l'utilisateur, car il ne le connaßt pas. (Par exemple, son prénom, son nom de famille, etc.) Il existe une chose qui s'appelle une demande de certificat. Vous pouvez en savoir plus sur cette norme, par exemple, sur Wikipédia. fr.wikipedia.org/wiki/PKCS
Nous utiliserons la version 1.7 — PKCS#10.

DĂ©crivons l'algorithme de formation d'un certificat sur Rutoken (source originale — documentation):

  1. Sur le client, nous créons une paire de clés et l'enregistrons sur Rutoken. (l'enregistrement se fait automatiquement)
  2. Sur le client, nous créons une demande de certificat.
  3. Nous envoyons cette demande au serveur depuis le client.
  4. Lors de la réception de la demande de certificat sur le serveur, nous délivrons le certificat avec notre propre centre de certification.
  5. Nous envoyons ce certificat au client.
  6. Sur le client, nous enregistrons le certificat sur Rutoken.
  7. Le certificat doit ĂȘtre liĂ© Ă  la paire de clĂ©s qui a Ă©tĂ© créée Ă  l'Ă©tape prĂ©cĂ©dente.

Il devient maintenant Ă©vident comment le serveur pourra dĂ©chiffrer la signature du client, puisqu'il lui a lui-mĂȘme dĂ©livrĂ© le certificat.

Dans la prochaine partie, nous examinerons en détail comment configurer son propre centre de certification basé sur une bibliothÚque cryptographique complÚte et open-source comme OpenSSL.

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster