Kryptografische Workstation basierend auf Public-Key-Standards. Funktionen zum Parsen und Anzeigen der ASN1-Struktur

Die Hauptarbeit beim Erstellen des Dienstprogramms cryptoarmpkcs war nicht die Entwicklung von Code oder einer grafischen Oberfläche, sondern die Arbeit mit ASN1- Strukturen. In diesen Strukturen werden x509v3-Zertifikate, elektronische Dokumentensignaturen (PKCS # 7, CMS), Zertifikatanforderungen (PKCS # 10, CSR), öffentliche und private Schlüssel, sichere PKCS # 12 / PFX-Container, Listen widerrufener CRL-Zertifikate und Zeitstempel gespeichert für elektronische Signaturen, OCSP-Anfragen und -Antworten usw. Ständig mussten vorhandene Strukturen durchgesehen werden, um zu verstehen, wie andere es taten, und die gerade von uns zusammengebauten AN1-Strukturen durchsehen. Der Prozess ist klar. Da ich jedoch unter Linux arbeite (jetzt ist es Mageia und bereite auch Code für Windows unter Linux vor), waren die Dienstprogramme openssl und derdump aus dem NSS- Paket über die verfügbaren Tools zum Parsen von ASN1-Strukturen verfügbar. Persönlich waren meine Vorlieben auf der Seite von derdump. Sie wurde zum Prototyp des Dienstprogramms derdump.tcl / tclderdump, das hier für die Anzeige von ASN1-Strukturen in Betracht gezogen wurde. Und wenn Sie die Ausgabe des Dienstprogramms derdump aus dem NSS-Paket und des Dienstprogramms derdump.tcl vergleichen, werden Sie kaum Unterschiede feststellen:



Unterschiede beziehen sich auf OID-Namen. Das Dienstprogramm hat die folgende Syntax:

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

wo

  • <Eingabedatei> - Gibt den Pfad zur Datei mit der ASN1-Struktur an.
  • <Ausgabedatei> - Gibt die Datei an, in der das Ergebnis der Analyse gespeichert wird: Wenn stdout als Ausgabedatei angegeben wird, wird das Ergebnis an die Standardausgabe gesendet.
  • Der dritte Parameter zeigt an, dass vollständige (1) Informationen angezeigt werden müssen.
  • Der vierte Parameter legt das Format der Eingabedatei fest, wobei der eine Binärdatei ist. Pem gibt an, dass die Datei base64-codierte Daten mit der Überschrift „----- BEGIN ... -“ und dem Trailer „----- END ... -“ enthält. wie es in openssl üblich ist, und schließlich sagt hex, dass die Datei hexadezimalen Code enthält. Darüber hinaus kann es Sonderzeichen (\ r, \ n, \ t), Leerzeichen und Zeichen "enthalten." und ":". Woher die Punkt- und Doppelpunktsymbole stammen, wird unten deutlich.

Das Hex-Format war für mich von entscheidender Bedeutung. Um ein Teil aus der analysierten Datei zu analysieren, mussten Sie es in eine binäre Form (Der-Codierung) übersetzen und erneut durch das Dienstprogramm übergeben. Das Hex-Format hat das Leben viel einfacher gemacht.

Natürlich ist die Verwendung von reinem tcl-Code (sowie von jedem anderen Skriptcode, z. B. Python) nicht ganz bequem. Daher sind die Dienstprogramme in tclderdump- Distributionen für die Linux-, Windows- und OS X-Plattformen eingebettet . Diese Distributionen sind autark: Sie laden sie herunter und führen sie aus.

Zurück zur Möglichkeit, hexadezimal gespeicherte ASN1-Strukturen anzuzeigen. Zusätzlich zu den oben genannten Dienstprogrammen zum Anzeigen von ASN1-Strukturen gibt es in Python ein gutes pyderasn- Dienstprogramm, das Punkt- und Doppelpunktzeichen in der Ausgabe verwendet, und es wurde entschieden, dass sie auch in hexadezimalem Code vorhanden sein können. Das Folgende ist das Ergebnis des Parsens desselben x509 v.3-Zertifikats mit den Dienstprogrammen derdump.tcl und pederasn:



Aber ich wollte mehr, nämlich eine grafische Oberfläche und die Möglichkeit, interne Blöcke im laufenden Betrieb zu analysieren. Es wurde beschlossen, diese Funktionalität dem Dienstprogramm cryptoarmpkcs hinzuzufügen, zumal es viel zu entwickeln hat, beispielsweise um Dokumente auf dem Empfängerzertifikat zu verschlüsseln. Und auch hier kann man nicht auf einen Viewer ASN1-Strukturen verzichten.

Zu diesem Zweck wurde beschlossen, die Funktionstaste „Token Information“ neu auszurichten. Wir haben die Schaltfläche neu ausgerichtet und ihr die neue Funktion "ASN1-Struktur anzeigen" zugewiesen. Sie können weiterhin Informationen zum verbundenen Token abrufen, indem Sie den Mauszeiger über den Token-Namen rechts neben der Bezeichnung "Token / Smartcard auswählen" bewegen:



Hier ist alles einfach. Wir wählen die Datei mit der ASN1-Struktur aus, geben an, in welchem ​​Format sie sich befindet, entscheiden, ob wir zusätzliche Details benötigen, und klicken auf die Schaltfläche „ASN1-Datei anzeigen“:



Wenn Sie die rechten und linken Screenshots vergleichen, können Sie persönlich sehen, welche zusätzlichen Informationen Sie erhalten, wenn Sie auf die Schaltfläche "Zusätzliche Informationen" klicken. Um die Struktur in zerlegter Form zu speichern, klicken Sie einfach auf die Schaltfläche "Speichern".

Wenn Sie die linke Maustaste gedrückt halten, können Sie den für uns interessanten Block auswählen. Wenn Sie jetzt auf dem ausgewählten Block die rechte Maustaste drücken, wird ein Menü mit den folgenden Elementen angezeigt:

  • in die Zwischenablage kopieren;
  • Zeigen Sie den markierten Block an.

Wenn Sie das Element "Ausgewählten Block anzeigen" auswählen, wird ein Fenster mit dem analysierten Block angezeigt:



Wenn Sie auf die Schaltfläche "In Zwischenablage kopieren" klicken, wird der ausgewählte Block in die Zwischenablage kopiert. Die Zwischenablage kann durch Klicken auf die Schaltfläche „ASN1-Zwischenablage“ angezeigt werden. Der Benutzer kann die Daten mit seinem eigenen Geld in die Zwischenablage legen und dann hier anzeigen.

Und da das Dienstprogramm häufig aktualisiert wird, wurde die Möglichkeit hinzugefügt, neue Versionen des Dienstprogramms direkt von ihm abzurufen. Bewegen Sie dazu einfach den Mauszeiger über das Feld "PKCS # 11, x509v3, PKCS # 10, PKCS # 7, CMS, PKCS # 12, ASN1", drücken Sie die rechte Maustaste und wählen Sie im angezeigten Menü "Über das Programm". Wählen Sie im angezeigten Fenster einfach die Plattform aus und drücken Sie die linke Maustaste:



Nach erfolgreichem Erhalt des Distributionskits erhalten Sie eine entsprechende Nachricht darüber, wo das empfangene Archiv gespeichert wurde:



PS Für diejenigen, die zum ersten Mal Dienstprogramme erhalten möchten, kann dies hier noch getan werden:

Distributionen für Linux, OS X und Windows

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


All Articles