Les jetons matériels/logiciels ou les modules de sécurité matériels (HSM) sont utilisés avec différentes applications pour stocker les clés cryptographiques (publiques et privées) et les certificats. Par exemple, NitroKey et Smartcard-HSM sont deux HSM. Cependant, il existe également des alternatives logicielles telles que SoftHSM (v2), qui est spécifiquement développée dans le cadre du projet OpenDNSSEC.
SoftHSM est essentiellement une implémentation d'un magasin cryptographique accessible via une interface PKCS #11. L'interface PKCS#11 est utilisée pour communiquer ou accéder aux dispositifs cryptographiques tels que les HSM (Hardware Security Modules) et les cartes à puce. L'objectif principal des dispositifs HSM est de générer des clés cryptographiques et de signer/chiffrer des informations sans révéler la clé privée aux autres.
Pour vous donner un aperçu rapide, il n'était pas possible pour les utilisateurs d'OpenDNSSEC d'acheter un nouveau jeton matériel pour le stockage des clés cryptographiques. Ainsi, pour contrer ce problème, OpenDNSSEC a commencé à fournir "SoftHSM", une implémentation logicielle d'un dispositif cryptographique générique avec une interface PKCS#11. SoftHSM est conçu pour répondre aux exigences d'OpenDNSSEC et fonctionne également avec d'autres produits cryptographiques.
Dépendances
Les bibliothèques cryptographiques Botan ou OpenSSL peuvent être utilisées avec le projet SoftHSM. Si Botan est utilisé avec SoftHSM, assurez-vous qu'il prend en charge GNU MP (--with-gnump), ce qui améliorera les performances lors des opérations de clé publique.
Installation
SoftHSM est disponible sur le site Web OpenDNSSEC et peut être téléchargé à l'aide de la commande wget de la manière suivante.
wget https://dist.opendnssec.org/source/softhsm-2.3.0.tar.gz
Maintenant, extrayez le package à l'aide de la commande tar de la manière suivante.
Après l'extraction, exécutez le script de configuration pour vérifier les dépendances du logiciel SoftHSM.
./configure
L'instantané suivant montre que le script de configuration affiche une erreur due à l'absence du package "OpenSSL header".
Alors résolvez cela, installez le package "openssl-dev" de la manière indiquée ci-dessous.
apt-get install ouvressl-dev
La sortie du script de configuration montre que tous les packages requis sont maintenant disponibles pour la compilation de l'outil.
L'instantané suivant montre les options disponibles pour le script de configuration de l'outil SoftHSM.
Toutes les options proposées par le script de configuration sont accessibles via la commande suivante :
./configure --help
--disable-ecc Disable support for ECC (default enabled)
--disable-gost Disable support for GOST (default enabled)
--disable-visibility Disable hidden visibilty link mode [enabled]
--with-crypto-backend Select crypto backend (openssl|botan)
--with-openssl=PATH Specify prefix of path of OpenSSL
--with-botan=PATH Specify prefix of path of Botan
--with-migrate Build the migration tool. Used when migrating
a SoftHSM v1 token database. Requires SQLite3
--with-objectstore-backend-db
Build with database object store (SQLite3)
--with-sqlite3=PATH Specify prefix of path of SQLite3
--disable-p11-kit Disable p11-kit integration (default enabled)
--with-p11-kit=PATH Specify install path of the p11-kit module, will
override path given by pkg-config
Maintenant, exécutez la commande make pour compiler le code source de SoftHSM.
make
Ensuite, exécutez la "commande make install" pour installer l'outil SoftHSM.
make install
Fichier de configuration
L'emplacement par défaut du fichier de configuration est /etc/softhsm2.conf qui peut être modifié en définissant le SOFTHSM2_CONF
variable d'environnement.
export SOFTHSM2_CONF=Path_of_SoftHSM_Conf_file
Le paramètre par défaut de SoftHSM est affiché dans l'instantané suivant.
Initialiser le jeton logiciel
La toute première étape pour utiliser SoftHSM consiste à l'initialiser. Nous pouvons utiliser l'interface "softhsm2-util" ou l'interface "PKCS#11" pour initialiser l'appareil. L'instantané suivant montre l'initialisation de l'appareil SoftHSM.
softhsm2-util --init-token --slot 0 --label "Token-1"
Le code PIN du responsable de la sécurité (SO) est utilisé pour réinitialiser le jeton et le code PIN de l'utilisateur est transmis à l'application afin qu'elle puisse interagir avec le jeton (comme l'utilisation avec Mozilla Firefox). C'est pourquoi, définissez à la fois le SO et le PIN de l'utilisateur. Une fois qu'un jeton a été initialisé, d'autres emplacements seront ajoutés automatiquement à un nouveau jeton non initialisé. Les jetons initialisés seront réaffectés à un autre emplacement en fonction du numéro de série du jeton. Il est recommandé de trouver et d'interagir avec le jeton en recherchant l'étiquette du jeton ou le numéro de série dans la liste des emplacements/les informations sur le jeton.
D'autres options de "softhsm2-util" sont présentées ci-dessous.
L'instantané suivant montre les emplacements du jeton.
Sauvegarde
Tous les jetons et leurs objets sont stockés à l'emplacement indiqué par softhsm2.conf. La sauvegarde peut donc être effectuée comme une copie de fichier ordinaire.
softhsm avec opensc utilities
Dans ce tutoriel, les utilitaires PKCS11 du projet OpenSC sont utilisés pour accéder au périphérique SoftHSM. Les détails sur l'installation et l'utilisation de "OpenSC" sont disponibles sur le site howtoforge.
apt-get install opensc
L'instantané suivant montre que la commande PKCS#11 est exécutée sur le SoftHSM. Le commutateur "-t" est utilisé pour tester le mécanisme de SoftHSM.
pkcs11-tool --module /usr/local/lib/softhsm/libsofthsm2.so -l -t
Conclusion
Dans cet article, nous avons expliqué comment l'outil logiciel HSM SoftHSM peut être installé et initialisé sur la plate-forme Ubuntu. Il peut être configuré à l'aide de la norme PKCS11 pour que le HSM/Smartcard accède aux appareils.