PC & Mobile

Zymkey HSM pour l'authentification SSH – DAC Technology Blog

Zymkey HSM pour l'authentification SSH - DAC Technology Blog


Figure 2. Configuration de Raspberry Pi - Zymkey

Essayons. Nous allons vous montrer comment configurer un Raspberry Pi équipé de Zymkey (Figure 2) pour utiliser une clé privée SSH sécurisée pour le matériel afin de s’authentifier sur un hôte distant.

Reliure au plateau

La première étape pour renforcer la sécurité de notre carte consiste à la lier avec le produit Zymkey 4i. Suivez la communauté Zymbit instruction activer la liaison temporaire (mode développeur). Une lumière bleue clignotant lentement indique que la liaison a réussi. Vérifiez-le en récupérant la clé publique ECDSA à l'aide des utilitaires officiels Zymkey App Utils.

Figure 3. Obtention de la clé publique avec Zymkey App Utils en Python

Extraire la clé publique

Zymbit fournit une bibliothèque Python qui vous permet d'extraire la clé publique de Zymkey et de l'exporter sous forme de fichier (voir: Figure 3). Il est utile pour générer une demande de signature de certificat (CSR), signer les données utiles ou verrouiller et déverrouiller des objets. Les commandes utilisées pour obtenir et exporter la clé publique sont présentées ci-dessous:

Configuration de PKCS # 11

La clé privée reste stockée de manière sécurisée sur un périphérique matériel. Il ne peut pas être exporté et utilisé en dehors du contexte de l'appareil. Pour fonctionner avec une clé privée matérielle, nous utiliserons l’API PKCS # 11.

"Le PKCS # 11 L'API peut être utilisé pour gérer et stocker des clés cryptographiques. Cette interface spécifie comment communiquer avec des périphériques cryptographiques tels que HSM (Hardware Security Modules) et cartes à puce. Ces appareils ont notamment pour but de générer des clés cryptographiques et de signer des informations sans révéler les données de clés privées au monde extérieur. (…) ”- pris à partir de softhsm2-util Manuel.

Zymkey prend en charge PKCS # 11 via un package appelé zkpkcs11. Utilisons-le pour initialiser le jeton d’authentification. Ce jeton utilisera les clés privées et publiques de Zymkey.

pi @ raspberrypi: ~ $ zk_pkcs11-util --init-token --slot 0 --tiquette Zymkey
Le jeton a été initialisé et est réaffecté à l'emplacement 1633051147.

Nous avons initialisé un jeton d'autorisation dans l'emplacement existant (0 par défaut) et l'avons étiqueté Zymkey. L’interface PKCS # 11 vous demandera de définir un code PIN utilisateur et objet partagé (un péché .alors bibliothèque; explication détaillée plus loin dans le texte) PIN du jeton - ne les oubliez pas! En réponse, nous recevons une confirmation que le jeton est initialisé et réaffecté à un nouvel emplacement. La prochaine étape consiste à relier l’emplacement de jeton et l’emplacement Zymkey à la clé privée:

pi @ raspberrypi: ~ $ zk_pkcs11-util --use-zkslot 0 --slot 1633051147 --label sshkey --id 0001

Vous pouvez voir les étapes décrites ci-dessous, à la figure 4.

Figure 4. Initialisation du jeton et affectation du slot Zymkey.

Vous pouvez vérifier si des clés privées et publiques ont été attribuées au jeton à l’aide de pkcs11-tools. N'oubliez pas d'entrer dans le objet partagé Le code PIN que vous avez défini lors de l'initialisation du jeton.

pi @ raspberrypi: ~ $ sudo apt-get install opensc
(...)
pi @ raspberrypi: ~ $ pkcs11-tool --module /usr/lib/libzk_pkcs11.so -l -p 1111 --token Zymey --list-object

Comme vous pouvez le voir dans la réponse (voir: Figure 5), le Zymkey utilise l'algorithme ECDSA pour fournir des clés privées et publiques.

Figure 5. Liste d'objets du jeton initialisé

Configurer l'hôte distant

Maintenant que l’API PKCS # 11 est configurée pour utiliser l’emplacement Zymkey afin de fournir la clé privée, utilisons-la pour se connecter à un hôte distant via SSH. Pour ce faire, nous devons envoyer la clé publique SSH à l'hôte distant (dans notre cas: un autre tableau Raspberry Pi).

pi @ raspberrypi: ~ $ ssh-keygen -D /usr/lib/libzk_pkcs11.so

le ssh-keygen utilise l'interface PKCS # 11 pour obtenir la clé publique. le /usr/lib/libzk_pkcs11.so le fichier est un objet partagé fourni par zkpcs11 package qui permet l'utilisation d'un jeton généré précédemment. Dans la réponse, nous avons obtenu notre clé publique. Vous pouvez le copier manuellement sur un hôte distant ou utiliser le ssh-copy-id outil comme dans la figure 6.

Figure 6. Envoi de la clé publique à l'hôte distant.

Comme vous pouvez le constater, nous pouvons nous connecter à un autre Pi via SSH sans donner le mot de passe. Cependant, chaque fois que nous utilisons le fournisseur PKCS # 11, il nous est demandé de fournir un code PIN. Débarrassons-nous.

pi @ raspberrypi: ~ $ eval $ (ssh-agent)
Agent pid 2117
pi @ raspberrypi: ~ $ ssh-add -s /usr/lib/libzk_pkcs11.so
Entrez la phrase secrète pour PKCS # 11:
Carte ajoutée: /usr/lib/libzk_pkcs11.so

Comme vous pouvez le voir sur la figure 7, nous pouvons connecter l'hôte distant via SSH à l'aide de la clé privée stockée dans le HSM.

Figure 7. Connexion de l'hôte distant via SSH à l'aide de la clé privée stockée dans le HSM

Et voilà! C’est la fin de nos inquiétudes à propos des appareils qui deviennent méchants! Vous pouvez maintenant être sûr que le périphérique parlant à votre hôte distant est à la fois crédible et autorisé.

Afficher plus

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Articles similaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page
Fermer