Station de travail cryptographique basée sur des normes de clé publique. Fonctions d'analyse et de visualisation de la structure ASN1

Le travail principal lors de la création de l'utilitaire cryptoarmpkcs n'était pas le développement de code ou d'une interface graphique, mais le travail avec les structures ASN1 . C'est dans ces structures que sont stockés les certificats x509v3, les signatures électroniques de documents (PKCS # 7, CMS), les demandes de certificats (PKCS # 10, CSR), les clés publiques et privées, les conteneurs protégés PKCS # 12 / PFX, les listes des certificats CRL révoqués et les horodatages. pour les signatures électroniques, les demandes et les réponses OCSP, etc. Il fallait constamment regarder à travers les structures existantes pour comprendre comment les autres le faisaient, regarder à travers les structures AN1 que nous venons d' assembler . Le processus est clair. Mais depuis que je travaille sur Linux (maintenant c'est Mageia, et je prépare aussi du code pour Windows sur Linux), les utilitaires openssl et derdump du package NSS étaient à portée de main des outils disponibles pour analyser les structures ASN1. Personnellement, mes préférences étaient du côté du derdump. C'est elle qui est devenue le prototype de l' utilitaire derdump.tcl / tclderdump considéré ici pour visualiser les structures ASN1. Et si vous comparez la sortie de l'utilitaire derdump du package NSS et de l'utilitaire derdump.tcl, vous ne verrez pratiquement aucune différence:



Les différences concernent les noms d'oid. L'utilitaire a la syntaxe suivante:

$dertcl.tcl < > <  | stdout> <1 | 0> <der | pem | hex> 



  • <fichier d'entrée> - indique le chemin d'accès au fichier avec la structure ASN1;
  • <fichier de sortie> - indique le fichier dans lequel le résultat de l'analyse sera enregistré: si stdout est spécifié comme fichier de sortie, le résultat sera envoyé à la sortie standard;
  • le troisième paramètre indique qu'il est nécessaire d'afficher des informations complètes (1);
  • le quatrième paramètre définit le format du fichier d'entrée, où der est un fichier binaire, pem indique que le fichier contient des données codées en base64 avec le titre "----- BEGIN ... -" et la bande-annonce "----- END ... -" comme il est de coutume dans openssl, et enfin hex indique que le fichier contient du code hexadécimal. De plus, il peut contenir des caractères spéciaux (\ r, \ n, \ t), des espaces et des caractères "." et ":". L'origine des symboles de points et de deux points apparaîtra clairement ci-dessous.

Le format hexadécimal était vital pour moi. En effet, afin d'analyser n'importe quel morceau du fichier analysé, vous avez dû le traduire sous forme binaire (der-encoding) et le passer à nouveau via l'utilitaire. Le format hexagonal a rendu la vie beaucoup plus facile.

Bien sûr, l'utilisation de code tcl pur (ainsi que l'utilisation de tout autre code de script, par exemple python) n'est pas entièrement confortable. Par conséquent, les utilitaires sont encadrés dans des distributions tclderdump pour les plates-formes Linux, Windows et OS X. Ces distributions sont autonomes: vous téléchargez et exécutez.

Mais revenons à la possibilité de visualiser les structures ASN1 stockées en hexadécimal. En plus des utilitaires mentionnés ci-dessus pour visualiser les structures ASN1, il existe également un bon utilitaire pyderasn écrit en Python, qui utilise des points et des deux-points dans la sortie, et il a été décidé qu'ils peuvent également être présents en code hexadécimal. Ce qui suit est le résultat de l'analyse du même certificat x509 v.3 avec les utilitaires derdump.tcl et pederasn:



Mais je voulais plus, à savoir une interface graphique et la possibilité d'analyser les blocs internes à la volée. Il a été décidé d'ajouter cette fonctionnalité à l'utilitaire cryptoarmpkcs, d'autant plus qu'il a beaucoup à développer, par exemple, chiffrer des documents sur le certificat du destinataire. Et là encore, vous ne pouvez pas vous passer d'une visionneuse ASN1-structures.

À ces fins, il a été décidé de réorienter le bouton de fonction «Token Information». Nous avons réorienté le bouton et lui avons attribué la nouvelle fonction «Afficher la structure ASN1», et vous pouvez toujours obtenir des informations sur le jeton connecté en déplaçant le curseur sur le nom du jeton à droite de l'étiquette «Choisir un jeton / carte à puce»:



Ici, tout est simple. Nous sélectionnons le fichier avec la structure ASN1, indiquons de quel format il s'agit, décidons si nous avons besoin de détails supplémentaires et cliquez sur le bouton «Voir le fichier ASN1»:



En comparant les captures d'écran de droite et de gauche, vous pouvez personnellement voir les informations supplémentaires que vous pouvez obtenir lorsque vous appuyez sur le bouton "Informations supplémentaires". Pour enregistrer la structure sous forme démontée, cliquez simplement sur le bouton "Enregistrer".

Si vous maintenez le bouton gauche de la souris enfoncé, vous pouvez sélectionner le bloc qui nous intéresse. Et, si maintenant sur le bloc sélectionné, appuyez sur le bouton droit de la souris, un menu apparaîtra avec les éléments suivants:

  • copier dans le presse-papiers;
  • afficher le bloc en surbrillance.

Et si vous sélectionnez l'élément "Afficher le bloc sélectionné", une fenêtre avec le bloc analysé apparaîtra:



Si vous cliquez sur le bouton «copier dans le presse-papiers», le bloc sélectionné sera copié dans le presse-papiers. Le presse-papiers peut être consulté en cliquant sur le bouton «ASN1-clipboard». L'utilisateur peut mettre les données dans le presse-papiers avec ses propres fonds, puis les visualiser ici.

Et puisque l'utilitaire est souvent mis à jour, la possibilité d'obtenir de nouvelles versions de l'utilitaire directement à partir de celui-ci a été ajoutée. Pour ce faire, déplacez simplement le curseur de la souris sur le champ "PKCS # 11, x509v3, PKCS # 10, PKCS # 7, CMS, PKCS # 12, ASN1", appuyez sur le bouton droit de la souris et sélectionnez "A propos du programme" dans le menu qui apparaît. Dans la fenêtre qui apparaît, sélectionnez simplement la plateforme et appuyez sur le bouton gauche de la souris:



Une fois le kit de distribution reçu avec succès, vous recevrez un message correspondant indiquant où l'archive reçue a été enregistrée:



PS Pour ceux qui veulent obtenir des utilitaires pour la première fois, cela peut encore être fait ici:

Distributions pour Linux, OS X et Windows

Source: https://habr.com/ru/post/fr473886/


All Articles