El almacenamiento de claves en tokens y tarjetas inteligentes proporciona protección adicional contra intrusos externos e internos, incluidos aquellos que tienen un cierto nivel de acceso al sistema y al equipo de información.
Hoy les contaré cómo protegemos las claves de cifrado y las firmas electrónicas en nuestros sistemas de información, y lo haré en una guía detallada y bien ilustrada para configurar SUSE Linux Enterprise Server 12 SP3 para trabajar con el token Aladdin JaCarta PKI y CryptoPro CSP KC2 4.0.9944.
Hubo varias razones para publicar esta guía:
Razón 1
La documentación oficial sobre
Aladdin-RD JaCarta está más adaptada para los sistemas operativos Astra Linux y ALT Linux, certificada por el Ministerio de Defensa, FSTEC y FSB como un medio para proteger la información.
Razón 2
La mejor instrucción sobre cómo configurar la interacción con los medios de hardware en Linux, que se encontró, también fue de
wiki.astralinux.ru - Trabajar con CryptoPro CSPRazón 3
UPD 16/04/2019: En el proceso de configuración del entorno y el equipo, resultó que el operador que estaba disponible por primera vez no era JaCarta PKI Nano, como se esperaba, sino un dispositivo que funcionaba en modo SafeNet Authentication Client eToken PRO.
UPD 16/04/2019: Una vez que el Banco necesitaba un dispositivo que pudiera funcionar en la misma infraestructura que eToken PRO (Java). Como tal dispositivo, la empresa "ZAO Aladdin R.D." ofreció un token JaCarta PRO, que fue seleccionado por el banco. Sin embargo, en la etapa de formación del artículo y los documentos de envío, un empleado de la empresa cometió un error. En lugar del modelo JaCarta PRO, JaCarta PKI se introdujo accidentalmente en el artículo y en los documentos de envío.
UPD 16/04/2019: Agradezco a la compañía Aladdin R.D. por ayudarme a descubrir y establecer la verdad.
No hay significados políticos y ocultos en este error, sino solo el error técnico de un empleado al preparar documentos. Token JaCarta PRO es un producto de la empresa Aladdin R.D. El applet que realiza la parte funcional fue desarrollado por la empresa "ZAO Aladdin R.D."
Este eToken PRO fue para una fiesta lanzada antes del 1 de diciembre de 2017.
Después de esta fecha, la empresa "Aladdin R.D." Dejó de vender dispositivos eToken PRO (Java).
Mirando un poco más adelante, debo decir que el trabajo con él se configuró a través de los controladores apropiados:
SafenetAuthenticationClient-10.0.32-0.x86_64 , que solo se puede obtener en apoyo de Aladdin R.D. en una solicitud en línea separada.
En CryptoPro CSP, para trabajar con este token, era necesario instalar el
paquete cprocsp-rdr-emv-64 | Módulo de soporte EMV / Gemalto .
Este token se determinó y respondió. Utilizando la utilidad
SACTools del paquete
SafenetAuthenticationClient , fue posible inicializarlo. Pero cuando trabajaba con la protección de la información criptográfica, se comportó de manera extremadamente extraña e impredecible.
Se mostró de la siguiente manera, en el comando:
csptest -keyset -cont '\\.\Aladdin RD JaCarta [SCR Interface] (205D325E5842) 00 00\alfa_shark' -check
La respuesta fue que todo estaba bien:
[ErrorCode: 0x00000000]
Pero inmediatamente después de intentar leer las claves mediante programación, la misma verificación comenzó a producir un error:
[ErrorCode: 0x8009001a]
De acuerdo con la lista de códigos de error del modelo de objetos de los componentes de los
códigos de error COM de Microsoft
(seguridad y configuración) NTE_KEYSET_ENTRY_BAD 0x8009001A Keyset as registered is invalid.
“Conjunto de claves inválidas”: la razón de tal mensaje puede estar en el antiguo chip, firmware y applet Gemalto, o en sus controladores para el sistema operativo que no admite los nuevos estándares de generación ES y las funciones hash GOST R 34.10-2012 y GOST R 34.11- 2012
En este estado, el token fue bloqueado. El índice de protección de información criptográfica comenzó a mostrar el estado irrelevante del lector y el contenedor de claves. Reiniciar el servicio de proveedor criptográfico
cprocsp , el
token pcscd y los
servicios de tarjeta inteligente y todo el sistema operativo no ayudaron, solo la reinicialización.
Para ser justos, debe tenerse en cuenta que SafeNet eToken PRO funcionó correctamente con las teclas GOST R 34.10-2001 en el sistema operativo Windows 7 y 10.
Puede intentar instalar el
CryptoPro CSP 4.0 FCN (Gemalto) , pero el objetivo es proteger nuestras claves ES y de cifrado con los productos FSB y FSTEC certificados por la familia JaCarta que admiten nuevos estándares.
El problema se resolvió tomando el token JaCarta PKI real en la carcasa regular (XL).
Pero se dedicó mucho tiempo a intentar que Safenet eToken PRO funcionara. Quería llamar la atención sobre esto y, tal vez, proteger a alguien de esto.
Razón 4
A veces, usted mismo necesita volver a los artículos e instrucciones anteriores. Esto es conveniente cuando la información se coloca en una fuente externa. Así que gracias a Habr por la oportunidad.
Guía de configuración
Después de instalar el token JaCarta PKI en el puerto USB del servidor e iniciar el sistema, verificamos que el nuevo dispositivo se detecte y aparezca en la lista:
lsusb

En nuestro caso, es el
Bus 004 Dispositivo 003: ID 24dc: 0101Para diagnosticar lectores, puede usar la utilidad
pcsc-tools del proyecto security: chipcard (software.opensuse.org) .
Se inicia con el comando:
pcsc_scan

Hasta que se instalen todos los paquetes necesarios, no se mostrará información sobre el token.
Instalación de controladores y software para trabajar con JaCarta PKI
En la página de soporte del sitio "Aladdin R.D." Descargamos
Documentación y software para trabajar solo con JaCarta PKIDe acuerdo con la Guía de implementación de JaCarta para Linux, cláusula 4.2., El primer paso es instalar
pcsc-lite ,
ccid y
libusb .
Para que la utilidad de administración JaCarta funcione, se deben instalar los siguientes componentes:
- PC / SC Lite: una capa intermedia para proporcionar acceso a tarjetas inteligentes de acuerdo con el paquete PC / SC estándar, pcsc-lite.
- Bibliotecas Ccid y libusb para trabajar con llaves USB, tarjetas inteligentes y lectores de tarjetas inteligentes.
Verificamos la disponibilidad de estos paquetes e instalamos:
zypper search pcsc-lite

zypper search libusb

zypper install pcsc-lite


zypper search CCID

zypper install pcsc-ccid

zypper search CCID

zypper install libusb

Como resultado, se actualizó el paquete pcsc-lite, se instaló CCID, libusb no se requirió ninguna acción.
Los siguientes dos comandos instalan el paquete con controladores y software directamente para trabajar con JaCarta PKI:
zypper install idprotectclientlib-637.03-0.x86_64.rpm

zypper install idprotectclient-637.03-0.x86_64.rpm

Compruebe que los controladores y el software para JaCarta PKI estén instalados:
zypper search idprotectclient

Al intentar que SafeNet eToken PRO funcionara, encontré información de que el
paquete openct - Library for Smart Card Readers preinstalado en SLES puede entrar en conflicto con
pcsc-lite - PCSC Smart Cards Library , cuya instalación requiere Aladdin R.D.
zypper search openct

Por lo tanto, eliminamos el paquete openct:
rpm -e openct
Ahora están instalados todos los controladores y software necesarios para trabajar con el token.
Realizamos diagnósticos utilizando la utilidad
pcsc-tools y nos aseguramos de que JaCarta se detecte en el sistema operativo:
pcsc_scan

Instalar paquetes CryptoPro CSP
Al instalar CryptoPro CSP de forma predeterminada, faltan los paquetes necesarios para trabajar con tokens y tarjetas inteligentes.
zypper search cprocsp

Instalación de los
componentes JaCarta para el componente de soporte
CryptoPro CSP en el CSPzypper install cprocsp-rdr-jacarta-64-3.6.408.683-4.x86_64.rpm

Algunos componentes tienen dependencias. Entonces, por ejemplo, si intenta instalar el paquete de soporte SafeNet eToken PRO
cprocsp-rdr-emv-64-4.0.9944-5.x86_64.rpm - Módulo de soporte EMV / Gemalto, recibiremos un mensaje sobre la necesidad de instalar primero el componente base del soporte de lector CSP
cprocsp -rdr-pcsc-64-4.0.9944-5.x86_64.rpm - Componentes de PC / SC para lectores 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
Instale los paquetes de soporte básicos para lectores y medios clave:
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
Ahora puede instalar módulos para trabajar con otros tipos de medios y componentes de 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

Verifique la configuración final 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

Para aplicar los cambios, reiniciamos el servicio del proveedor criptográfico y verificamos su estado:
/etc/init.d/cprocsp restart /etc/init.d/cprocsp status

Configuración y diagnóstico de CryptoPro CSP
Verifique si el proveedor criptográfico ve nuestro token y otros tipos de medios disponibles con los siguientes comandos:
/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 [Interfaz SCR] (000000000000) 00 00 es nuestro medio.
Siguiendo las instrucciones de
CryptoPro CSP para Linux. Configure , realice su registro en el proveedor criptográfico:
/opt/cprocsp/sbin/amd64/cpconfig -hardware reader -add "Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00"

Como resultado de la ejecución en el archivo de configuración
/etc/opt/cprocsp/config64.inise agregará una entrada a la sección [KeyDevices \ PCSC]:
[KeyDevices\PCSC\"Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00"\Default]
Para cumplir con los requisitos del formulario CryptoPro CSP, los términos de uso y la guía del administrador de seguridad:
No se permite el uso de CryptoPro CSP CIP versión 4.0 con el modo de control de clave mejorado desactivado. La inclusión de este modo se describe en los documentos ZHTYA.00087-01 91 02. Guía del administrador de seguridad.
Es necesario habilitar un control mejorado del uso de la clave:
/opt/cprocsp/sbin/amd64/cpconfig -ini '\config\parameters' -add long StrengthenedKeyUsageControl 1
Verifique que el modo esté habilitado:
cat /etc/opt/cprocsp/config64.ini | grep StrengthenedKeyUsageControl

Reiniciamos el servicio de proveedor criptográfico:
/etc/init.d/cprocsp restart /etc/init.d/cprocsp status
Después del reinicio, verificamos que no haya errores en el trabajo del proveedor con operadores clave:
/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]
Trabajar con JaCarta PKI Token
Ejecutemos el programa Xming (reenvío X11) en nuestra estación para que podamos abrir y trabajar con las interfaces gráficas de las utilidades necesarias a través de SSH.

Después de instalar
IDProtectClient - software para trabajar con JaCarta PKI, aparecieron dos archivos en el servidor en la carpeta
/ usr / share / aplicaciones :
Athena-IDProtectClient.desktop
Athena-IDProtectManager.desktop
Estos son accesos directos donde puede ver las opciones de inicio para las utilidades
Exec = / usr / bin / SACToolsEjecute la utilidad
IDProtectPINTool .
Al usarlo, los códigos de acceso PIN para el token se configuran y cambian.
/usr/bin/IDProtectPINTool

Al inicializar el token por primera vez, un enlace que contiene los
códigos PIN (contraseñas) de los proveedores de claves de forma predeterminada será útil
El programa
IDProtect_Manager le permite ver información sobre el token y el contenedor con claves y certificado:
/usr/bin/IDProtect_Manager

Para acceder al contenedor con las claves, debe ingresar la contraseña:


Para trabajar con
SafeNet Authentication Client eToken PRO, existen programas similares:
SafeNet Authentication Client Monitor y
SafeNet Authentication Client Tools , que se ejecutan así:
/usr/bin/SACMonitor /usr/bin/SACTools

Es más conveniente realizar operaciones directamente con contenedores de claves en la interfaz del proveedor criptográfico CryptoPro JavaCSP:
/jdk1.8.0_181/jre/bin/java ru.CryptoPro.JCP.ControlPane.MainControlPane

Para mostrar información sobre el contenido del contenedor con las teclas, puede ejecutar el comando:
/opt/cprocsp/bin/amd64/csptest -keyset -cont '\\.\Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00\alfa_shark1' -info
Para diagnosticar el contenedor, use el mismo comando con el interruptor –check
/opt/cprocsp/bin/amd64/csptest -keyset -cont '\\.\Aladdin RD JaCarta [SCR Interface] (000000000000) 00 00\alfa_shark' –check
Deberá ingresar la contraseña para el contenedor:


Recuperación de clave de software
En general, un ejemplo de recuperación de una clave privada y un certificado de clave pública de un contenedor en un token utilizando CryptoPro Java CSP es el siguiente:
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 actúas así:
Key key = keyStore.getKey(keyAlias, pwd);
entonces el proveedor criptográfico intentará mostrar una solicitud para ingresar la contraseña al contenedor a través de la consola o la ventana de la GUI.
Resultados
El token del portador de la clave de token se instala en el puerto USB interno del servidor.
El hardware del servidor en sí está sellado y colocado en una habitación con acceso limitado.
Dichas medidas pueden aumentar el nivel de protección de nuestros sistemas de información contra el robo y el compromiso de la firma electrónica o las claves de cifrado, tanto de forma remota a través de la red como físicamente.
Enlaces utiles
- Documentación de Aladdin-RD JaCarta
- wiki.astralinux.ru - Trabaja con CryptoPro CSP
- La lista de códigos de error del modelo de objetos de los componentes de los códigos de error COM de Microsoft (seguridad y configuración)
- CryptoPro CSP 4.0 CSP 4.0 FCN (Gemalto)
- Utilidad de diagnóstico de lector de pcsc-tools de seguridad: proyecto de tarjeta chip (software.opensuse.org)
- CryptoPro CSP para Linux. Personalización
- PIN de portador de clave predeterminado de Aladdin-RD (contraseñas)