Le stockage des clés sur les jetons et les cartes à puce offre une protection supplémentaire contre les intrus externes et internes, y compris ceux ayant un certain niveau d'accès au système d'information et aux équipements.
Aujourd'hui, je vais vous expliquer comment nous protégeons les clés de chiffrement et les signatures électroniques dans nos systèmes d'information, et je le ferai dans un guide détaillé et bien illustré pour configurer SUSE Linux Enterprise Server 12 SP3 pour travailler avec le jeton PKI Aladdin JaCarta et CryptoPro CSP KC2 4.0.9944.
Il y avait plusieurs raisons pour publier ce guide:
Raison 1
La documentation officielle sur
Aladdin-RD JaCarta est plus adaptée aux systèmes d'exploitation Astra Linux et ALT Linux, certifiés par le ministère de la Défense, le FSTEC et le FSB comme moyen de protéger les informations.
Raison 2
La meilleure instruction sur la configuration de l'interaction avec les supports matériels sous Linux, qui a été trouvée,
provenait également de
wiki.astralinux.ru - Travailler avec CryptoPro CSPRaison 3
UPD 16/04/2019: Lors de la configuration de l'environnement et des équipements, il s'est avéré que le premier opérateur disponible n'était pas du tout JaCarta PKI Nano, comme prévu, mais un appareil fonctionnant en mode SafeNet Authentication Client eToken PRO.
UPD 16/04/2019: Une fois que la Banque avait besoin d'un appareil qui pouvait fonctionner dans la même infrastructure qu'eToken PRO (Java). En tant que tel appareil, la société «ZAO Aladdin R.D.» a offert un jeton JaCarta PRO, qui a été sélectionné par la banque. Cependant, au stade de la constitution de l'article et des documents d'expédition, un employé de l'entreprise a commis une erreur. Au lieu du modèle JaCarta PRO, JaCarta PKI a été accidentellement entrée dans l'article et les documents d'expédition.
UPD 16/04/2019: Je remercie la société Aladdin R.D. pour avoir aidé à comprendre et à établir la vérité.
Il n'y a aucune signification politique et cachée dans cette erreur, mais seulement une erreur technique d'un employé dans la préparation des documents. Token JaCarta PRO est un produit de la société Aladdin R.D. L'applet réalisant la partie fonctionnelle a été développée par la société "ZAO Aladdin R.D."
Cet eToken PRO était destiné à une fête publiée avant le 1er décembre 2017.
Après cette date, la société "Aladdin R.D." Arrêt de la vente des appareils eToken PRO (Java).
Un peu en avance, je dois dire que le travail avec lui a été configuré via les pilotes appropriés -
SafenetAuthenticationClient-10.0.32-0.x86_64 , qui ne peuvent être obtenus qu'à l'appui d'Aladdin R.D. sur une demande en ligne distincte.
Dans CryptoPro CSP, pour travailler avec ce jeton, il était nécessaire d'installer le
package cprocsp-rdr-emv-64 | Module de support EMV / Gemalto .
Ce jeton a été déterminé et a répondu. En utilisant l'utilitaire
SACTools du package
SafenetAuthenticationClient , il a été possible de l'initialiser. Mais en travaillant avec la protection des informations cryptographiques, il s'est comporté de façon extrêmement étrange et imprévisible.
Il a été montré comme suit, sur la commande:
csptest -keyset -cont '\\.\Aladdin RD JaCarta [SCR Interface] (205D325E5842) 00 00\alfa_shark' -check
La réponse était que tout allait bien:
[ErrorCode: 0x00000000]
Mais immédiatement après avoir essayé de lire les clés par programme, la même vérification a commencé à produire une erreur:
[ErrorCode: 0x8009001a]
Selon la liste des codes d'erreur du modèle d'objet des composants de Microsoft
COM Error Codes (Security and Setup) NTE_KEYSET_ENTRY_BAD 0x8009001A Keyset as registered is invalid.
«Jeu de clés invalide» - la raison d'un tel message peut résider soit dans l'ancienne puce, le micrologiciel et l'applet Gemalto, soit dans leurs pilotes pour le système d'exploitation qui ne prend pas en charge les nouvelles normes de génération ES et les fonctions de hachage GOST R 34.10-2012 et GOST R 34.11- 2012.
Dans cet état, le jeton a été bloqué. L'index de protection des informations cryptographiques a commencé à montrer l'état non pertinent du lecteur et du conteneur de clés. Le
redémarrage du service de fournisseur de chiffrement
cprocsp , des
services de jeton pcscd et de carte à puce et de l'ensemble du système d'exploitation n'a pas aidé, seulement la réinitialisation.
Pour être honnête, il convient de noter que SafeNet eToken PRO fonctionnait correctement avec les clés GOST R 34.10-2001 dans les systèmes d'exploitation Windows 7 et 10.
Vous pouvez essayer d'installer le
CryptoPro CSP 4.0 FCN (Gemalto) , mais l'objectif est de protéger nos clés ES et de chiffrement avec les produits FSB et FSTEC certifiés par la famille JaCarta qui prennent en charge les nouvelles normes.
Le problème a été résolu en prenant le vrai jeton PKI JaCarta dans le boîtier (XL) normal.
Mais beaucoup de temps a été consacré à essayer de faire fonctionner Safenet eToken PRO. Je voulais attirer l'attention sur cela et, peut-être, protéger quelqu'un de cela.
Raison 4
Parfois, vous devez vous-même revenir à d'anciens articles et instructions. Ceci est pratique lorsque les informations sont placées dans une source externe. Merci donc à Habr pour l'opportunité.
Guide d'installation
Après avoir installé le jeton JaCarta PKI dans le port USB du serveur et démarré le système, nous vérifions que le nouveau périphérique est détecté et apparaît dans la liste:
lsusb

Dans notre cas, il s'agit du
bus 004 périphérique 003: ID 24dc: 0101Pour diagnostiquer les lecteurs, vous pouvez utiliser l'
utilitaire pcsc-tools du projet security: chipcard (software.opensuse.org) .
Il est lancé par la commande:
pcsc_scan

Jusqu'à ce que tous les packages nécessaires soient installés, les informations sur le jeton ne seront pas affichées.
Installation de pilotes et de logiciels pour travailler avec JaCarta PKI
Sur la page Support du site "Aladdin R.D." Nous téléchargeons la
documentation et les logiciels pour qu'ils fonctionnent uniquement avec JaCarta PKISelon le Guide d'implémentation de JaCarta pour Linux, clause 4.2., La première étape consiste à installer
pcsc-lite ,
ccid et
libusb .
Pour que l'utilitaire de gestion JaCarta fonctionne, les composants suivants doivent être installés:
- PC / SC Lite - une couche intermédiaire pour fournir un accès aux cartes à puce selon la norme PC / SC, paquet pcsc-lite.
- Bibliothèques Ccid et libusb pour travailler avec des clés USB, des cartes à puce et des lecteurs de cartes à puce.
Nous vérifions la disponibilité de ces packages et installons:
zypper search pcsc-lite

zypper search libusb

zypper install pcsc-lite


zypper search CCID

zypper install pcsc-ccid

zypper search CCID

zypper install libusb

En conséquence, le paquet pcsc-lite a été mis à jour, CCID a été installé, libusb aucune action n'a été requise.
Les deux commandes suivantes installent le package avec les pilotes et les logiciels directement pour travailler avec JaCarta PKI:
zypper install idprotectclientlib-637.03-0.x86_64.rpm

zypper install idprotectclient-637.03-0.x86_64.rpm

Vérifiez que les pilotes et les logiciels pour JaCarta PKI sont installés:
zypper search idprotectclient

En essayant de faire fonctionner SafeNet eToken PRO, j'ai trouvé des informations selon lesquelles le
package openct - Library for Smart Card Readers préinstallé dans SLES peut entrer en conflit avec
pcsc-lite - PCSC Smart Cards Library , dont l'installation nécessite Aladdin R.D.
zypper search openct

Par conséquent, nous supprimons le package openct:
rpm -e openct
Maintenant, tous les pilotes et logiciels nécessaires pour travailler avec le jeton sont installés.
Nous effectuons des diagnostics à l'aide de l'
utilitaire pcsc-tools et nous assurons que JaCarta est détecté dans le système d'exploitation:
pcsc_scan

Installation des packages CryptoPro CSP
Lors de l'installation de CryptoPro CSP par défaut, les packages nécessaires pour travailler avec des jetons et des cartes à puce sont manquants.
zypper search cprocsp

Installation des
composants JaCarta pour le composant de prise en charge
CryptoPro CSP dans le CSPzypper install cprocsp-rdr-jacarta-64-3.6.408.683-4.x86_64.rpm

Certains composants ont des dépendances. Ainsi, par exemple, si vous essayez d'installer le package de support SafeNet eToken PRO
cprocsp-rdr-emv-64-4.0.9944-5.x86_64.rpm - module de support EMV / Gemalto , nous recevrons un message sur la nécessité d'installer d'abord le composant de base du support de lecteur CSP
cprocsp -rdr-pcsc-64-4.0.9944-5.x86_64.rpm - Composants PC / SC pour lecteurs CryptoPro CSP :
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
Installez les packages de support de base pour les lecteurs et les supports clés:
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
Vous pouvez maintenant installer des modules pour travailler avec d'autres types de médias et de composants GUI:
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

Vérifiez la configuration finale de 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

Pour appliquer les modifications, nous redémarrons le service du fournisseur de cryptographie et vérifions son état:
/etc/init.d/cprocsp restart /etc/init.d/cprocsp status

Configuration et diagnostics CryptoPro CSP
Vérifiez si le fournisseur de chiffrement voit notre jeton et d'autres types de médias disponibles avec les commandes suivantes:
/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 [Interface SCR] (000000000000) 00 00 est notre support.
En suivant les instructions de
CryptoPro CSP pour Linux. Configurer , effectuer son enregistrement dans le fournisseur cryptographique:
/opt/cprocsp/sbin/amd64/cpconfig -hardware reader -add "Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00"

À la suite de l'exécution dans le fichier de configuration
/etc/opt/cprocsp/config64.iniune entrée sera ajoutée à la section [KeyDevices \ PCSC]:
[KeyDevices\PCSC\"Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00"\Default]
Afin de se conformer aux exigences du formulaire CryptoPro CSP, des conditions d'utilisation et du guide de l'administrateur de la sécurité:
L'utilisation de CryptoPro CSP CIP version 4.0 avec le mode de contrôle de clé amélioré désactivé n'est pas autorisée. L'inclusion de ce mode est décrite dans les documents ZHTYA.00087-01 91 02. Guide de l'administrateur de la sécurité.
Il est nécessaire d'activer un contrôle amélioré de l'utilisation des clés:
/opt/cprocsp/sbin/amd64/cpconfig -ini '\config\parameters' -add long StrengthenedKeyUsageControl 1
Vérifiez que le mode est activé:
cat /etc/opt/cprocsp/config64.ini | grep StrengthenedKeyUsageControl

Nous redémarrons le service du fournisseur cryptographique:
/etc/init.d/cprocsp restart /etc/init.d/cprocsp status
Après le redémarrage, nous vérifions qu'il n'y a pas d'erreur dans le travail du fournisseur avec les principaux transporteurs:
/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]
Travailler avec JaCarta PKI Token
Exécutons le programme Xming (transfert X11) sur notre station afin de pouvoir ouvrir et travailler avec les interfaces graphiques des utilitaires nécessaires via SSH.

Après avoir installé
IDProtectClient - logiciel pour travailler avec JaCarta PKI, deux fichiers sont apparus sur le serveur dans le dossier
/ usr / share / applications :
Athena-IDProtectClient.desktop
Athena-IDProtectManager.desktop
Ce sont des raccourcis où vous pouvez voir les options de démarrage des utilitaires
Exec = / usr / bin / SACToolsExécutez l'utilitaire
IDProtectPINTool .
À l'aide de celui-ci, les codes d'accès PIN pour le jeton sont définis et modifiés.
/usr/bin/IDProtectPINTool

Lors de l'initialisation du token pour la première fois, un lien contenant les
codes PIN (mots de passe) des principaux porteurs par défaut sera utile
Le programme
IDProtect_Manager vous permet d'afficher des informations sur le jeton et le conteneur avec des clés et un certificat:
/usr/bin/IDProtect_Manager

Pour accéder au conteneur avec les clés, vous devez saisir le mot de passe:


Pour fonctionner avec
SafeNet Authentication Client eToken PRO, il existe des programmes similaires -
SafeNet Authentication Client Monitor et
SafeNet Authentication Client Tools , qui fonctionnent comme suit:
/usr/bin/SACMonitor /usr/bin/SACTools

Il est plus pratique d'effectuer des opérations directement avec des conteneurs de clés dans l'interface du fournisseur cryptographique CryptoPro JavaCSP:
/jdk1.8.0_181/jre/bin/java ru.CryptoPro.JCP.ControlPane.MainControlPane

Pour afficher des informations sur le contenu du conteneur avec les clés, vous pouvez exécuter la commande:
/opt/cprocsp/bin/amd64/csptest -keyset -cont '\\.\Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00\alfa_shark1' -info
Pour diagnostiquer le conteneur, utilisez la même commande avec le commutateur –check
/opt/cprocsp/bin/amd64/csptest -keyset -cont '\\.\Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00\alfa_shark' –check
Vous devrez saisir le mot de passe du conteneur:


Récupération de clé logicielle
En général, un exemple de récupération d'une clé privée et d'un certificat de clé publique à partir d'un conteneur sur un jeton à l'aide de CryptoPro Java CSP est le suivant:
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)); }
Si vous agissez comme ceci:
Key key = keyStore.getKey(keyAlias, pwd);
le fournisseur de cryptographie essaiera alors d'afficher une demande pour entrer le mot de passe du conteneur via la console ou la fenêtre GUI.
Résultats
Le jeton de support de clé de jeton est installé dans le port USB interne du serveur.
Le matériel du serveur lui-même est scellé et placé dans une pièce à accès limité.
De telles mesures peuvent augmenter le niveau de protection de nos systèmes d'information contre le vol et la compromission des clés de signature électronique ou de chiffrement, à distance sur le réseau et physiquement.
Liens utiles
- Documentation d'Aladdin-RD JaCarta
- wiki.astralinux.ru - Travailler avec CryptoPro CSP
- La liste des codes d'erreur du modèle d'objet des composants des codes d'erreur Microsoft COM (sécurité et configuration)
- CryptoPro CSP 4.0 CSP 4.0 FCN (Gemalto)
- Utilitaire de diagnostic du lecteur PCSC-Tools de la sécurité: projet de carte à puce (software.opensuse.org)
- CryptoPro CSP pour Linux. Personnalisation.
- NIP de porte-clés par défaut Aladdin-RD (mots de passe)