
Eines der zentralen Objekte der Public Key Infrastructure (PKI / PKI) ist neben dem Schlüsselpaar ein Zertifikat, das heute eigentlich ein Analogon eines Zivilpasses ist.
Mit einem Zertifikat in der Hand kann ein Bürger Zugang zum State Services-Portal erhalten, Steuern zahlen, seine
E-Mails schützen, Dokumente signieren und verschlüsseln und vieles mehr.
Eine Bescheinigung wird wie ein
Reisepass auf der Grundlage eines Antrags und der Bereitstellung einer Reihe von Dokumenten ausgestellt. Die Liste der Dokumente zur Erlangung eines Zertifikats befindet sich in jedem
vom Ministerium für Kommunikation akkreditierten Zertifizierungszentrum (der neue Name lautet Ministerium für digitale Entwicklung, Telekommunikation und Massenkommunikation). Der Passantrag hat die handschriftliche Unterschrift des Antragstellers. Nach Erhalt des Passes wird der Antragsteller seine Unterschrift auf den Pass setzen, der vom Mitarbeiter des Passbüros und dem offiziellen Stempel bestätigt wird. Das Foto und die Fähigkeit des Eigentümers, seine Unterschrift zu reproduzieren und ihn als Eigentümer eines bestimmten Passes zu identifizieren.
Ein ähnliches Schema wird verwendet, um ein Zertifikat eines SKEPEP (Electronic Signature Verification Key) zu erhalten. Erstens muss ein Bürger, der eine Bescheinigung erhalten möchte, die „Fähigkeit“ erwerben, seine eigene Unterschrift anzubringen. Diese „Fähigkeit“ wird dadurch realisiert, dass der Antragsteller ein Schlüsselpaar erhält, das den öffentlichen Schlüssel oder den Verifizierungsschlüssel für die elektronische Signatur (KEPP) und den privaten Schlüssel oder den Schlüssel für die elektronische Signatur enthält. Auf diese Weise können Sie eine elektronische Signatur erstellen und ein elektronisches Dokument unterschreiben. Die Identifizierung einer elektronischen Signatur unter einem Dokument erfolgt nach dem folgenden Algorithmus. Aus dem Zertifikat wird bestimmt, mit welchem Schlüssel (GOST R 34.10-2001, GOST R 34.10-2012 mit einer Schlüssellänge von 64 oder 128 Byte) das Dokument signiert wurde. Der Schlüsseltyp bestimmt den Hashing-Algorithmus, der beim Signieren des Dokuments verwendet wurde. Es kann GOST R 34.11-94 oder GOST R 34.11-2012 mit einer Hash-Länge von 256 oder 512 Bit sein. Entsprechend dem ausgewählten Algorithmus wird der Hash aus dem Quelldokument berücksichtigt. Durch den Wert des berechneten Hashs aus dem Quelldokument, dem öffentlichen Schlüssel (KEPP) und seinen Parametern (all dies wird dem SKEPEP-Zertifikat entnommen) wird die Echtheit der elektronischen Signatur unter dem Dokument überprüft.
Um ein Schlüsselpaar zu erstellen, werden verschiedene Mittel zum Schutz kryptografischer Informationen (CPSI) verwendet, die die kryptografischen Algorithmen GOST R 34.10-2001 und GOST R 34.10-2012 unterstützen. Es ist zu beachten, dass die Verwendung des Signaturschemas GOST R 34.10-2001 zum Generieren einer Signatur nach dem 31. Dezember 2018 nicht zulässig ist! Tools zum Schutz kryptografischer Informationen, die verschiedene kryptografische Algorithmen und Protokolle implementieren, können sowohl Software als auch Hardware sein. Der Zugriff auf den Schutz kryptografischer Informationen erfolgt über kryptografische Schnittstellen. Die überwiegende Mehrheit der zertifizierten kryptografischen Informationsschutzsysteme mit russischer Kryptografie unterstützt entweder die universelle kryptografische
PKCS # 11- Schnittstelle, die auf allen Plattformen unterstützt wird, oder die Microsoft CSP- und CryptoAPI-Schnittstelle auf MS Windows-Plattformen (im Folgenden als MS CSP bezeichnet). Diese beiden kryptografischen Schnittstellen werden beispielsweise vom
State Services- Portal unterstützt. Diese beiden Arten des Schutzes kryptografischer Informationen werden weiter betrachtet:
Es sollte berücksichtigt werden, dass PKCS # 11-Token mit Unterstützung für die russische Kryptographie ausgewählt werden sollten, wenn nicht nur auf der Windows-Plattform, sondern auch auf anderen Plattformen (Linux, macOS usw.) mit einer elektronischen Signatur gearbeitet werden soll oder muss.
Zusätzlich zu der Hauptfunktion zum Generieren einer Anforderung bietet das Dienstprogramm Funktionen zum Arbeiten mit Token und Zertifikaten:
Kombiniertes Feld (Combobox) „Token auswählen:“ im Hauptfenster enthält eine Liste der verfügbaren Tools zum Schutz kryptografischer Informationen zum Generieren eines Schlüsselpaars. Wenn das Dienstprogramm zur Anforderungsgenerierung auf der Windows-Plattform ausgeführt wird und CSP-Kryptografieanbieter mit Unterstützung für russische Kryptografie darauf installiert sind, wird das virtuelle MS_CSP-Token in der Liste der verfügbaren Tools zum Schutz kryptografischer Informationen definiert („Token auswählen:“). Wenn Sie den kryptografischen MS CSP-Anbieter verwenden möchten, muss er vor dem Starten des Dienstprogramms auf dem System installiert werden.
Um Unterstützung für das neue PKCS # 11-Token hinzuzufügen, wählen Sie einfach den Menüpunkt "Token-Verwaltung-> Token hinzufügen". Das Hinzufügen von Unterstützung für das neue Token besteht darin, die PKCS # 11-Bibliothek für den Plug-In-Typ von Token / Smartcards auszuwählen und einen geeigneten Namen (Spitznamen) festzulegen. Wenn Sie Unterstützung für einen neuen Token-Typ (sowie beim Starten des Dienstprogramms, wenn zuvor Token-Unterstützung hinzugefügt wurde) mit einem verbundenen (eingefügten) Token hinzufügen, ist ein PIN-Code erforderlich, um darauf zuzugreifen:
Dies geschieht jedoch nur, wenn das Token nicht nur verbunden ist, sondern auch funktioniert, d. H. initialisiert. Überprüfen Sie das Token und initialisieren Sie es gegebenenfalls, ändern Sie den PIN-Code, um darauf zuzugreifen usw. bequem mit
dem Dienstprogramm
p11conf :
Durch Auswahl des Elements „Token-Verwaltung-> Token-Mechanismen“ können Sie die kryptografischen Mechanismen eines bestimmten Tokens anzeigen. Wird beispielsweise der GOST R 34.10-2012-Algorithmus unterstützt? Für das virtuelle Token MS_CSP werden alle CSP-Anbieter aufgelistet, die GOST-Algorithmen und die von ihnen unterstützten Mechanismen unterstützen:
Wenn das ausgewählte Token den ausgewählten Schlüsselpaartyp nicht unterstützt, wird eine entsprechende Meldung angezeigt:
Bevor Sie direkt mit dem Ausfüllen der Anforderungsfelder fortfahren, müssen Sie entscheiden, für welchen Zweck ein Zertifikat benötigt wird, d. H. Geben Sie die "Rolle des Zertifikats" an. Heute haben sich solche Rollen mehr als ein Dutzend angesammelt:
Jede Rolle ist mit vielen verschiedenen OIDs verknüpft, die im Zertifikat enthalten sind. So werden beispielsweise für den Zugang zum Portal der öffentlichen Dienste folgende Oids benötigt:
{} {clientAuth, emailProtection, 1.3.6.1.4.1.311.20.2.2, 1.2.643.100.2.1, 1.2.643.2.2.34.6, 1.3.6.1.5.5.7.3.2, 1.3.6.1.5.5.7.3.4, 1.2.643.5.1.24.2.1.3, 1.2.643.6.14, 1.2.643.3.215.4, 1.2.643.3.215.5, 1.2.643.3.215.6, 1.2.643.3.215.7, 1.2.643.3.215.8, 1.2.643.3.215.9, 1.2.643.3.215.11, 1.2.643.3.215.12, 1.2.643.3.215.13, 1.3.6.1.4.1.40870.1.1.1, 1.2.643.2.64.1.1.1, 1.2.643.3.5.10.2.12, 1.2.643.6.3.2, 1.2.643.5.1.24.2.46, 1.2.643.6.45.1.1.1, 1.2.643.5.1.24.2.30, 1.2.643.5.1.28.2, 1.2.643.5.1.28.3, 1.2.643.3.202.1.8}
OIDs für andere Rollen (z. B. "Gazprombank Site", "Alcohol Consumer" usw.) finden Sie im Quellcode des Dienstprogramms (Variable oid_roles_bad, operator:
set oid_roses_bad {. . .}
)
Das Vorhandensein so vieler Oids ist schwer zu verstehen. Es handelt sich um qualifizierte Zertifikate, bei denen es sich um OID-TIN, PSRN, SNILS usw. handelt, die sowohl eine natürliche als auch eine juristische Person eindeutig identifizieren, und es scheint, dass dies ausreichen würde, um auf das Portal der staatlichen Dienste und andere zuzugreifen auch. Aber, Dura Lex, Sed Lex - Das Gesetz ist hart, aber es ist ein Gesetz.
Im Feld „Name der CIPF“ muss der Name der CIPF (Token / Smart Card, CSP) angegeben werden, der in der Konformitätsbescheinigung (nicht zu verwechseln mit der X509-Bescheinigung) des Föderalen Sicherheitsdienstes Russlands oder einem anderen ähnlichen Dokument angegeben ist, dessen Kopie zum Zeitpunkt des Kaufs der CIPF vorgelegt werden muss. Anschließend wird der Wert dieses Feldes in das Zertifikat eingegeben.
Nachdem Sie sich für das kryptografische Informationsschutzsystem und das Schlüsselpaar entschieden haben, können Sie den elektronischen Antrag / die Anforderung für das Zertifikat des Verifizierungsschlüssels für die elektronische Signatur (SKEPEP) ausfüllen:
Das erste Feld, das ausgefüllt werden muss, ist der „Common Name“, in den der vollständige Name des zukünftigen Zertifikatsinhabers eingegeben wird. Für eine Person ist dies der vollständige Name wie im Reisepass. Für eine juristische Person ist dies der Name des Unternehmens aus dem Register. Diese Informationen für eine juristische Person werden automatisch im Feld „Organisationsname“ („O“) dupliziert:
Beim Ausfüllen des Formulars wird die Richtigkeit des Ausfüllens der Felder TIN, BIN, SNILS überprüft (bei Eingabe einer Nummer wird das Feld rot, die korrekt ausgefüllten Felder werden grünlich). E-Mail-Adressen:
Nachdem Sie alle Anforderungsfelder ausgefüllt und auf die Schaltfläche „Fertig stellen“ geklickt haben, wird am Ende eine Zertifikatsanforderung empfangen:
Beim Erstellen einer Anforderung wird ein Schlüsselpaar für das ausgewählte Token generiert. Wenn gleichzeitig das virtuelle Token "MS_CSP" als Token ausgewählt wird, das wiederum verschiedene Medien zum Speichern des Schlüsselpaars unterstützt, wird vorgeschlagen, ein bestimmtes Medium auszuwählen:
Denken Sie daran, dass ein Schlüsselpaar zwei Schlüssel enthält: privat und öffentlich. Der öffentliche Schlüssel, auch als Verifizierungsschlüssel für die elektronische Signatur bezeichnet, wird an die Zertifikatanforderung gesendet. Verwenden Sie das Menü "Zertifikate-> Anfrage anzeigen", um die generierte Anfrage anzuzeigen, die den öffentlichen Schlüssel enthält:
Der private Schlüssel verbleibt beim Antragsteller auf seinem Token, dessen PIN-Code (Passwort) als Apfel seines Auges gespeichert werden muss. Und da zwischen öffentlichen und privaten Schlüsseln eine
eindeutige Entsprechung besteht , können Sie jederzeit überprüfen, wem die Zertifikatsanforderung und später das Zertifikat selbst, die Signatur auf dem Dokument usw. gehören.
Mit allen erforderlichen Dokumenten und der generierten Anforderung auf einem Flash-Laufwerk können Sie jetzt zum nächsten Zertifizierungszentrum gehen und ein Zertifikat erhalten. Daher wird beantragt, ein Zertifikat in einer der Zertifizierungsstellen auszustellen, das unter Berücksichtigung des Bundesgesetzes vom 6. April 2011 erstellt wurde. Nr. 63- "Auf elektronischer Signatur":
Die Anfrage an die Zertifizierungsstelle durchläuft die Phasen des Imports, der Überprüfung, Genehmigung und Ausstellung eines Zertifikats für diese Anfrage:
Das ausgestellte Zertifikat wird auf einem der CA-Dienste veröffentlicht, von wo es heruntergeladen werden kann. Und jetzt reicht es aus, das ausgestellte Zertifikat auf das Flash-Laufwerk des Antragstellers zu exportieren:
Und jetzt, wenn das Zertifikat empfangen wird, muss es noch auf dem CIP abgelegt werden (PKCS # 11, MS CSP) (Zertifikate-> Import x509):
Um zu überprüfen, ob sich das Zertifikat auf dem Token befindet, können Sie den Inhalt des Tokens / der Smartcard anzeigen (Zertifikate-> x509 auf dem Token anzeigen):
Nun, damit es sich um eine „Rüstung“ handelte (gib mir so ein PAPIER! Abschlusspapier, Rüstung (Hundeherz c / f)), verbinde das Token mit dem
Firefox- Browser mit Unterstützung für die russische Kryptographie und finde das ausgestellte Zertifikat in persönlichen Zertifikaten (einschließlich solcher Zertifikate). für die das Token einen privaten Schlüssel hat):
Das auf
Tcl / Tk entwickelte Dienstprogramm CreateCSRCAFL63. Für den Zugriff auf die kryptografischen Funktionen von MS CSP- und PKCS # 11-Token wurde das cwapi-Paket entwickelt, das die Anforderungen für C-Bibliotheken von Tcl implementiert. Es ist
nicht schwierig, diese Anforderungen umzusetzen, aber manchmal dauert es aufgrund seiner Routine viel Zeit. Und hier kommt das öffentliche Versorgungsunternehmen
SWIG zur Rettung
. Hiermit können Sie Schnittstellenmodule zwischen C / C ++ - Bibliotheken und anderen Sprachen erstellen. Dies ist nicht nur Tcl, sondern auch Java und andere. Das Projekt ist sehr gut dokumentiert und hat gute Beispiele. Die Verwendung ist nicht schwierig. In unserem Fall wurde zum Erhalt des Schnittstellenmoduls eine einfache Quelldatei cwapi.i für das Dienstprogramm swig geschrieben:
%module cwapi %inline %{ #include "cwapi.h" %} %include "cwapi_SWIG.h"
Die Datei cwapi.h enthält Beschreibungen der Funktionen des Hauptprojekts cwapi:
#ifdef __cplusplus extern "C" { #endif int CW_Initialize (char *configdir); int CW_Finalize (); int addp11mod (char *nickname, char *library); int remp11mod (char *nickname); char * lmod (); char * ltok (); char * lcert (char *token, int priv_cert); char* createreq (char *token, char *subject, char *keyusage, int keyparams, int pem, char *skzi, char* role); char* viewx509 (char *nickname, int CertOrReq); char* x509pem (char *nickname); char* x509fromfile(char *token, char *infile, char *trusts); int delcert (char *nickname, int priv_cert); int p12tofile (char *token, char *nickname, char *outfile); char* p12fromfile(char *token, char *infile); char* lmech(char* token); char* tinfo(char* token); #ifdef __cplusplus } #endif
Durch Ausführen des Befehls:
$export SWIG_LIB=/usr/local/swig-3.0.12/Lib $/usr/local/swig-3.0.12/swig -tcl8 -o cwapi_wrap.c cwapi_.i $
In der Datei cwapi_wrap.c erhalten wir ein vorgefertigtes Schnittstellenmodul. Fügen Sie es dem cwapi-Projekt hinzu, erstellen Sie es neu und erhalten Sie ein neues Paket, das in diesem Dienstprogramm verwendet wird.
Um das Distributionskit zu erhalten, ist es sehr praktisch, das Dienstprogramm
freewrap zu verwenden, während die cwapi-Bibliothek auch direkt im Distributionspaket enthalten ist. Quellcode-Dienstprogramme und -Distributionen sind für die Windows- und Linux-Plattformen verfügbar.
Ich möchte ein anderes Dienstprogramm erwähnen, nämlich
tcl2c . Dieses Dienstprogramm "umschließt" tcl / tk-Code in C-Code.
Führen Sie einfach den Befehl aus, um den ausführbaren Code abzurufen
$cc -o create_csr_ create_csr.c -ltcl -ltk $
Distributionen für die Linux-Plattform enthalten auch eine C-Distribution mit einer statischen Verbindung des cwapi-Pakets.