Arbeiten Sie mit kryptografischem Informationsschutz und Hardwareschlüsselträgern unter Linux


Das Speichern von Schlüsseln auf Token und Smartcards bietet zusätzlichen Schutz vor externen und internen Eindringlingen, einschließlich solcher, die einen bestimmten Zugriff auf das Informationssystem und die Ausrüstung haben.

Heute werde ich Ihnen erklären, wie wir Verschlüsselungsschlüssel und elektronische Signaturen in unseren Informationssystemen schützen, und ich werde dies in einer detaillierten, gut illustrierten Anleitung zum Einrichten von SUSE Linux Enterprise Server 12 SP3 für die Arbeit mit dem Aladdin JaCarta PKI-Token und CryptoPro CSP KC2 4.0.9944 tun.

Es gab mehrere Gründe für die Veröffentlichung dieses Handbuchs:

Grund 1


Die offizielle Dokumentation zu Aladdin-RD JaCarta ist besser für Astra Linux- und ALT Linux-Betriebssysteme geeignet, die vom Verteidigungsministerium, FSTEC und dem FSB als Mittel zum Schutz von Informationen zertifiziert wurden.

Grund 2


Die beste Anleitung zum Einrichten der Interaktion mit Hardwaremedien unter Linux stammt auch von wiki.astralinux.ru - Arbeiten mit CryptoPro CSP

Grund 3


UPD 16.04.2019: Bei der Einrichtung der Umgebung und der Ausrüstung stellte sich heraus, dass der zuerst verfügbare Netzbetreiber erwartungsgemäß überhaupt nicht JaCarta PKI Nano war, sondern ein Gerät, das im eToken PRO-Modus des SafeNet Authentication Client betrieben wird.

UPD 16.04.2019: Einmal brauchte die Bank ein Gerät, das in derselben Infrastruktur wie eToken PRO (Java) arbeiten konnte. Als solches Gerät hat die Firma "ZAO Aladdin R.D." bot einen JaCarta PRO-Token an, der von der Bank ausgewählt wurde. Bei der Erstellung des Artikels und der Versanddokumente hat ein Mitarbeiter des Unternehmens jedoch einen Fehler gemacht. Anstelle des JaCarta PRO-Modells wurde JaCarta PKI versehentlich in den Artikel und die Versanddokumente eingegeben.

UPD 16.04.2019: Ich danke der Firma Aladdin R.D. für ihre Hilfe bei der Ermittlung und Feststellung der Wahrheit.

Dieser Fehler enthält keine politischen und versteckten Bedeutungen, sondern nur den technischen Fehler eines Mitarbeiters bei der Erstellung von Dokumenten. Token JaCarta PRO ist ein Produkt der Firma Aladdin R.D. Das Applet für den Funktionsteil wurde von der Firma „ZAO Aladdin R.D.“ entwickelt.


Dieser eToken PRO war für eine Party, die vor dem 1. Dezember 2017 veröffentlicht wurde.
Nach diesem Datum wurde die Firma "Aladdin R.D." Verkauf von eToken PRO (Java) -Geräten eingestellt.

Ich muss sagen, dass die Arbeit mit ihm über die entsprechenden Treiber konfiguriert wurde - SafenetAuthenticationClient-10.0.32-0.x86_64 , die nur zur Unterstützung von Aladdin R.D. auf einer separaten Online-Bewerbung.

In CryptoPro CSP musste das Paket cprocsp-rdr-emv-64 | installiert werden, um mit diesem Token arbeiten zu können EMV / Gemalto-Unterstützungsmodul .

Dieses Token wurde ermittelt und beantwortet. Mit dem Dienstprogramm SACTools aus dem Paket SafenetAuthenticationClient konnte es initialisiert werden. Bei der Arbeit mit dem Schutz kryptografischer Informationen verhielt er sich jedoch äußerst seltsam und unvorhersehbar.

Auf dem Befehl wurde Folgendes angezeigt:

csptest -keyset -cont '\\.\Aladdin RD JaCarta [SCR Interface] (205D325E5842) 00 00\alfa_shark' -check 

Die Antwort war, dass alles in Ordnung war:

 [ErrorCode: 0x00000000] 

Unmittelbar nach dem Versuch, die Tasten programmgesteuert zu lesen, führte dieselbe Überprüfung zu einem Fehler:

 [ErrorCode: 0x8009001a] 

Gemäß der Liste der Fehlercodes des Objektmodells der Komponenten von Microsoft COM-Fehlercodes (Sicherheit und Einrichtung)

 NTE_KEYSET_ENTRY_BAD 0x8009001A Keyset as registered is invalid. 

"Ungültiger Schlüsselsatz" - Der Grund für diese Meldung kann entweder im alten Gemalto-Chip, in der Firmware und im Applet oder in den Treibern für das Betriebssystem liegen, die die neuen ES-Generierungsstandards und Hash-Funktionen GOST R 34.10-2012 und GOST R 34.11- nicht unterstützen. 2012.

In diesem Zustand wurde das Token blockiert. Der kryptografische Informationsschutzindex zeigte den irrelevanten Zustand des Lesers und des Schlüsselcontainers an. Das Neustarten des cprocsp- Dienstes für kryptografische Anbieter, der pcscd-Token- und Smartcard- Dienste und des gesamten Betriebssystems hat nicht geholfen, sondern nur die Neuinitialisierung.

Fairerweise sollte beachtet werden, dass SafeNet eToken PRO mit den Schlüsseln GOST R 34.10-2001 unter Windows 7 und 10 ordnungsgemäß funktioniert hat.

Sie können versuchen, den CryptoPro CSP 4.0 FCN (Gemalto) zu installieren. Ziel ist es jedoch, unsere ES- und Verschlüsselungsschlüssel mit von der JaCarta-Familie zertifizierten FSB- und FSTEC-Produkten zu schützen, die neue Standards unterstützen.

Das Problem wurde gelöst, indem der echte JaCarta PKI-Token in das (XL) reguläre Gehäuse gesteckt wurde.

Es wurde jedoch viel Zeit darauf verwendet, Safenet eToken PRO zum Laufen zu bringen. Ich wollte darauf aufmerksam machen und vielleicht jemanden davor schützen.

Grund 4


Manchmal müssen Sie selbst zu alten Artikeln und Anweisungen zurückkehren. Dies ist praktisch, wenn die Informationen in einer externen Quelle gespeichert werden. Also danke an Habr für die Gelegenheit.

Setup-Anleitung


Nach der Installation des JaCarta PKI-Tokens am USB-Anschluss des Servers und dem Starten des Systems überprüfen wir, ob das neue Gerät erkannt wurde und in der Liste angezeigt wird:

lsusb



In unserem Fall handelt es sich um das Bus 004-Gerät 003: ID 24dc: 0101

Zur Diagnose von Lesern können Sie das Dienstprogramm pcsc-tools aus dem Projekt security: chipcard (software.opensuse.org) verwenden .

Es wird durch den Befehl gestartet:

pcsc_scan



Bis alle erforderlichen Pakete installiert sind, werden keine Informationen zum Token angezeigt.

Installation von Treibern und Software für die Arbeit mit JaCarta PKI


Auf der Support-Seite der Website "Aladdin R.D." Wir laden Dokumentation und Software herunter , um nur mit JaCarta PKI zu arbeiten

Gemäß dem JaCarta for Linux-Implementierungshandbuch, Abschnitt 4.2, besteht der erste Schritt darin, pcsc-lite , ccid und libusb zu installieren.
Damit das JaCarta-Verwaltungsdienstprogramm funktioniert, müssen die folgenden Komponenten installiert sein:

  • PC / SC Lite - eine Zwischenschicht für den Zugriff auf Smartcards gemäß dem PC / SC-Standard, pcsc-lite-Paket.
  • Ccid- und libusb-Bibliotheken für die Arbeit mit USB-Sticks, Smartcards und Smartcard-Lesegeräten.
Wir prüfen die Verfügbarkeit dieser Pakete und installieren:

zypper search pcsc-lite



zypper search libusb



zypper install pcsc-lite





zypper search CCID



zypper install pcsc-ccid



zypper search CCID



zypper install libusb



Infolgedessen wurde das pcsc-lite-Paket aktualisiert, CCID installiert, libusb keine Aktion erforderlich.

Die folgenden zwei Befehle installieren das Paket mit Treibern und Software direkt für die Arbeit mit JaCarta PKI:

zypper install idprotectclientlib-637.03-0.x86_64.rpm



zypper install idprotectclient-637.03-0.x86_64.rpm



Überprüfen Sie, ob die Treiber und die Software für JaCarta PKI installiert sind:

zypper search idprotectclient



Beim Versuch, SafeNet eToken PRO zum Laufen zu bringen, habe ich Informationen gefunden, dass das in SLES vorinstallierte Paket openct - Library for Smart Card Readers möglicherweise mit der PCSC Smart Cards Library von pcsc-lite in Konflikt steht , für deren Installation Aladdin R.D.

zypper search openct



Deshalb entfernen wir das openct-Paket:

rpm -e openct

Jetzt sind alle notwendigen Treiber und Software für die Arbeit mit dem Token installiert.

Wir führen Diagnosen mit dem Dienstprogramm pcsc-tools durch und stellen sicher, dass JaCarta im Betriebssystem erkannt wird:

pcsc_scan



Installieren von CryptoPro CSP-Paketen


Bei der standardmäßigen Installation von CryptoPro CSP fehlen die erforderlichen Pakete für die Arbeit mit Token und Smartcards.

zypper search cprocsp



Installieren der JaCarta-Komponenten für die CryptoPro CSP- Unterstützungskomponente im CSP

zypper install cprocsp-rdr-jacarta-64-3.6.408.683-4.x86_64.rpm



Einige Komponenten haben Abhängigkeiten. Wenn Sie beispielsweise versuchen, das SafeNet eToken PRO-Supportpaket cprocsp-rdr-emv-64-4.0.9944-5.x86_64.rpm - EMV / Gemalto-Supportmodul zu installieren, wird eine Meldung angezeigt, dass zuerst die Basiskomponente des CSP-Reader-Support- cprocsp installiert werden muss -rdr-pcsc-64-4.0.9944-5.x86_64.rpm - PC / SC-Komponenten für CryptoPro CSP-Reader :

 zypper install cprocsp-rdr-emv-64-4.0.9944-5.x86_64.rpm Loading repository data... Reading installed packages... Resolving package dependencies... Problem: nothing provides cprocsp-rdr-pcsc-64 >= 4.0 needed by cprocsp-rdr-emv-64-4.0.9944-5.x86_64 Solution 1: do not install cprocsp-rdr-emv-64-4.0.9944-5.x86_64 Solution 2: break cprocsp-rdr-emv-64-4.0.9944-5.x86_64 by ignoring some of its dependencies Choose from above solutions by number or cancel [1/2/c] (c): c 

Installieren Sie die grundlegenden Support-Pakete für Leser und wichtige Medien:

zypper install cprocsp-rdr-pcsc-64-4.0.9944-5.x86_64.rpm



zypper install lsb-cprocsp-pkcs11-64-4.0.9944-5.x86_64.rpm

Jetzt können Sie Module für die Arbeit mit anderen Arten von Medien und GUI-Komponenten installieren:

zypper install cprocsp-rdr-emv-64-4.0.9944-5.x86_64.rpm



 zypper install cprocsp-rdr-novacard-64-4.0.9944-5.x86_64.rpm zypper install cprocsp-rdr-mskey-64-4.0.9944-5.x86_64.rpm zypper install cprocsp-rdr-gui-gtk-64-4.0.9944-5.x86_64.rpm 



Überprüfen Sie die endgültige Konfiguration von CryptoPro CSP:

 zypper search cprocsp Loading repository data... Reading installed packages... 


S | Name | Summary | Type
---+-----------------------------+----------------------------------------------------+--------
i+ | cprocsp-curl-64 | CryptoPro Curl shared library and binaris. Build 9944. | package
i+ | cprocsp-rdr-emv-64 | EMV/Gemalto support module | package
i+ | cprocsp-rdr-gui-gtk-64 | GUI components for CryptoPro CSP readers. Build 9944. | package
i+ | cprocsp-rdr-jacarta-64 | JaCarta components for CryptoPro CSP. Build 683. | package
i+ | cprocsp-rdr-mskey-64 | Mskey support module | package
i+ | cprocsp-rdr-novacard-64 | Novacard support module | package
i+ | cprocsp-rdr-pcsc-64 | PC/SC components for CryptoPro CSP readers. Build 9944.| package
i+ | lsb-cprocsp-base | CryptoPro CSP directories and scripts. Build 9944. | package
i+ | lsb-cprocsp-ca-certs | CA certificates. Build 9944. | package
i+ | lsb-cprocsp-capilite-64 | CryptoAPI lite. Build 9944. | package
i+ | lsb-cprocsp-kc2-64 | CryptoPro CSP KC2. Build 9944. | package
i+ | lsb-cprocsp-pkcs11-64 | CryptoPro PKCS11. Build 9944. | package
i+ | lsb-cprocsp-rdr-64 | CryptoPro CSP readers. Build 9944. | package




Um die Änderungen zu übernehmen, starten wir den Dienst für kryptografische Anbieter neu und überprüfen seinen Status:

 /etc/init.d/cprocsp restart /etc/init.d/cprocsp status 



Einrichtung und Diagnose von CryptoPro CSP


Überprüfen Sie mit den folgenden Befehlen, ob der kryptografische Anbieter unser Token und andere verfügbare Medientypen sieht:

/opt/cprocsp/bin/amd64/csptest -card -enum -v –v



/opt/cprocsp/bin/amd64/csptest -enum -info -type PP_ENUMREADERS | iconv -f cp1251



/opt/cprocsp/sbin/amd64/cpconfig -hardware reader -view -f cp1251



Aladdin RD JaCarta [SCR-Schnittstelle] (000000000000) 00 00 ist unser Medium.

Befolgen Sie die Anweisungen von CryptoPro CSP für Linux. Konfigurieren Sie die Registrierung beim kryptografischen Anbieter:

 /opt/cprocsp/sbin/amd64/cpconfig -hardware reader -add "Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00" 



Als Ergebnis der Ausführung in der Konfigurationsdatei /etc/opt/cprocsp/config64.ini
Ein Eintrag wird zum Abschnitt [KeyDevices \ PCSC] hinzugefügt:

[KeyDevices\PCSC\"Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00"\Default]


Um die Anforderungen des CryptoPro CSP-Formulars, der Nutzungsbedingungen und des Sicherheitsadministratorhandbuchs zu erfüllen:
Die Verwendung von CryptoPro CSP CIP Version 4.0 bei deaktiviertem erweiterten Schlüsselsteuerungsmodus ist nicht zulässig. Die Aufnahme dieses Modus ist in den Dokumenten ZHTYA.00087-01 91 02 beschrieben. Sicherheitsadministratorhandbuch.
Es ist erforderlich, eine verbesserte Kontrolle der Schlüsselverwendung zu ermöglichen:

 /opt/cprocsp/sbin/amd64/cpconfig -ini '\config\parameters' -add long StrengthenedKeyUsageControl 1 

Überprüfen Sie, ob der Modus aktiviert ist:

cat /etc/opt/cprocsp/config64.ini | grep StrengthenedKeyUsageControl



Wir starten den Dienst des kryptografischen Anbieters neu:

 /etc/init.d/cprocsp restart /etc/init.d/cprocsp status 

Nach dem Neustart prüfen wir, ob bei der Arbeit des Anbieters mit wichtigen Netzbetreibern keine Fehler vorliegen:

/opt/cprocsp/bin/amd64/csptest -keyset –verifycontext



/opt/cprocsp/bin/amd64/csptest -keyset -verifycontext -enum –unique

 CSP (Type:80) v4.0.9017 KC2 Release Ver:4.0.9944 OS:Linux CPU:AMD64 FastCode:REA AcquireContext: OK. HCRYPTPROV: 16052291 alfa_shark1 |SCARD\JACARTA_4E3900154029304C\CC00\E9F6 OK. Total: SYS: 0.000 sec USR: 0.000 sec UTC: 4.560 sec [ErrorCode: 0x00000000] 

Arbeiten Sie mit JaCarta PKI Token


Lassen Sie uns das Xming-Programm (X11-Weiterleitung) an unserer Station ausführen, damit wir die grafischen Schnittstellen der erforderlichen Dienstprogramme über SSH öffnen und damit arbeiten können.



Nach der Installation der IDProtectClient - Software für die Arbeit mit JaCarta PKI wurden zwei Dateien auf dem Server im Ordner / usr / share / applications angezeigt:

Athena-IDProtectClient.desktop
Athena-IDProtectManager.desktop

Dies sind Verknüpfungen, in denen Sie die Startoptionen für die Dienstprogramme Exec = / usr / bin / SACTools anzeigen können

Führen Sie das Dienstprogramm IDProtectPINTool aus .

Damit werden PIN-Zugangscodes für das Token festgelegt und geändert.

/usr/bin/IDProtectPINTool



Bei der erstmaligen Initialisierung des Tokens ist standardmäßig ein Link hilfreich, der PIN-Codes (Kennwörter) der wichtigsten Träger enthält

Mit dem Programm IDProtect_Manager können Sie Informationen zum Token und Container mit Schlüsseln und Zertifikat anzeigen:

/usr/bin/IDProtect_Manager



Um mit den Schlüsseln auf den Container zuzugreifen, müssen Sie das Passwort eingeben:





Für die Arbeit mit SafeNet Authentication Client eToken PRO gibt es ähnliche Programme - SafeNet Authentication Client Monitor und SafeNet Authentication Client Tools , die wie folgt ausgeführt werden:

 /usr/bin/SACMonitor /usr/bin/SACTools 



Es ist bequemer, Vorgänge direkt mit Schlüsselcontainern in der Schnittstelle des Kryptografieanbieters CryptoPro JavaCSP auszuführen:

/jdk1.8.0_181/jre/bin/java ru.CryptoPro.JCP.ControlPane.MainControlPane




Um Informationen zum Inhalt des Containers mit den Schlüsseln anzuzeigen, können Sie den folgenden Befehl ausführen:

 /opt/cprocsp/bin/amd64/csptest -keyset -cont '\\.\Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00\alfa_shark1' -info 

Verwenden Sie zur Diagnose des Containers denselben Befehl mit dem Schalter –check

 /opt/cprocsp/bin/amd64/csptest -keyset -cont '\\.\Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00\alfa_shark' –check 

Sie müssen das Passwort für den Container eingeben:





Abrufen von Software-Schlüsseln


Im Allgemeinen lautet ein Beispiel für das Abrufen eines privaten Schlüssels und eines Zertifikats mit öffentlichem Schlüssel aus einem Container auf einem Token mithilfe von CryptoPro Java CSP wie folgt:

 import ru.CryptoPro.JCP.KeyStore.JCPPrivateKeyEntry; import ru.CryptoPro.JCP.params.JCPProtectionParameter; KeyStore keyStore = KeyStore.getInstance("Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00", "JCSP"); keyStore.load(null, null); JCPPrivateKeyEntry entry = null; X509Certificate certificate = null; PrivateKey privateKey = null; try { entry = (JCPPrivateKeyEntry) keyStore.getEntry(keyAlias, new JCPProtectionParameter(pwd)); certificate = (X509Certificate) entry.getCertificate(); privateKey = entry.getPrivateKey(); } catch (UnrecoverableEntryException | NullPointerException e) { LOGGER.log(Level.WARNING, PRIVATE_KEY_NOT_FOUND + keyAlias + ExceptionUtils.getFullStackTrace(e)); } 


Wenn Sie so handeln:

 Key key = keyStore.getKey(keyAlias, pwd); 

Anschließend versucht der kryptografische Anbieter, eine Anforderung zur Eingabe des Kennworts für den Container über die Konsole oder das GUI-Fenster anzuzeigen.

Ergebnisse


Das Token-Key-Carrier-Token wird am internen USB-Anschluss des Servers installiert.

Die Serverhardware selbst ist versiegelt und befindet sich in einem Raum mit eingeschränktem Zugriff.

Solche Maßnahmen können den Schutz unserer Informationssysteme vor Diebstahl und Kompromittierung elektronischer Signaturen oder Verschlüsselungsschlüssel sowohl über das Netzwerk als auch physisch erhöhen.

Nützliche Links


  1. Aladdin-RD JaCarta Dokumentation
  2. wiki.astralinux.ru - Arbeiten Sie mit CryptoPro CSP
  3. Die Liste der Fehlercodes des Objektmodells der Komponenten von Microsoft COM-Fehlercodes (Sicherheit und Einrichtung)
  4. CryptoPro CSP 4.0 CSP 4.0 FCN (Gemalto)
  5. Pcsc-Tools Reader Diagnosedienstprogramm aus Sicherheit: Chipkartenprojekt (software.opensuse.org)
  6. CryptoPro CSP für Linux. Anpassung.
  7. Aladdin-RD-Standardschlüsselträger-PINs (Passwörter)

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


All Articles