PKCS # 11 Desarrollo sin hardware: SoftHSM como tarjeta inteligente o sustitución de hardware HSM

A pedido de las personas que desean probar software de firma digital, y no disponen de un dispositivo hardware token, en este post te mostraré cómo tener tu SoftHSM instalado y configurado para usarlo como PKCS # 11 token.


¿Alguna vez has querido experimentar con PKCS # 11? El problema es que por lo general necesita un pedazo de hardware, que se puede tratar con PKCS # 11.
Antecedentes: PKCS # 11 (actual especificación) es un estándar para la criptografía asimétrica y define una interfaz para utilizar fichas criptográficas. Esto se puede usar, por ejemplo, para dirigir tarjetas inteligentes o tokens USB. Las tarjetas internas PCI de acelerador criptográfico con PKCS # 11 también están integradas en el entorno de la empresa.
Instalación

Descargue la última versión 2.0.0 de SoftHSM desde https://www.opendnssec.org/2015/07/softhsm-2-0-0/. (No olvide comprobar la firma o sumas de comprobación). Entonces el archivo tiene que ser desempaquetado y el conjunto compilado.

1
2
3
4
5
$ tar xzf softhsm-2.0.0.tgz
$ cd softhsm-2.0.0/
$ ./configure 
$ make
$ sudo make install

Con el ./configure uno todavía puede hacer algunos ajustes, que para mí, sin embargo, en la configuración estándar están perfectamente en orden. Así se utiliza OpenSSL y las claves se almacenan en forma de archivo. Para completar la compilación, necesita algunos paquetes:

1
$ sudo apt-get install build-essential openssl libssl-dev

Después de la instalación deberías poder llamar a softhsm2-util test-



1
2
$ softhsm2-util -v
2.0.0
configuración

Inmediatamente después de la instalación, la inicialización sin root no se puede realizar ya que no se puede acceder a la ruta predeterminada para almacenar el token. Por lo tanto, tienes que cambiar la configuración con sudo gedit /etc/softhsm2.conf a una ruta diferente:



1
2
3
4
5
# SoftHSM v2 configuration file
directories.tokendir = /home/wladislaw/devtools/softhsm/tokens/
objectstore.backend = file
# ERROR, WARNING, INFO, DEBUG
log.level = DEBUG
Alternativamente, puede crear su propio archivo de configuración y publicar la ruta a él con la exportación SOFTHSM2_CONF = / home / user / config.file. En este archivo, puede especificar una ruta específica del usuario para almacenar los tokens.

Ahora puede configurar su token virtual. Tienes que asignar un usuario y un PIN. Cuando se utiliza el PIN de usuario para acceder al material clave, se utiliza el pin del agente de seguridad (SO) cuando desea restablecer el dispositivo o realizar otras tareas administrativas. Al final, el mensaje El token se ha inicializado. aparece.



1
2
3
4
5
6
7
8
$ softhsm2-util --init-token --slot 0 --label "wlami Token 1"
*** SO PIN (4-255 characters) ***
Please enter SO PIN: 
Please reenter SO PIN: 
*** User PIN (4-255 characters) ***
Please enter user PIN: 
Please reenter user PIN: 
The token has been initialized.
Con softhsm2-util --show-slots se puede comprobar el resultado. Los valores Token presente e Inicializado deben ser ambos establecidos en yes.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ softhsm2-util --show-slots
Available slots:
Slot 0
    Slot info:
        Description:      SoftHSM slot 0                                                  
        Manufacturer ID:  SoftHSM project                 
        Hardware version: 2.0
        Firmware version: 2.0
        Token present:    yes
    Token info:
        Manufacturer ID:  SoftHSM project                 
        Model:            SoftHSM v2      
        Hardware version: 2.0
        Firmware version: 2.0
        Serial number:    xxx
        Initialized:      yes
        User PIN init.:   yes
        Label:            wlami Token 1           
Ahora se puede usar el token. Para ello, normalmente necesita hacer referencia a la biblioteca específica de tokens en su aplicación que desea acceder al token. Para SoftHSM, esto es /usr/local/lib/softhsm/libsofthsm2.so. ¡Utilizo XCA para la gestión de claves y certificados, que también es compatible con PKCS # 11 y funciona maravillosamente con SoftHSM!

Comentarios