Aller au contenu

→ Lire l’explication complète de la marmotte

Brouillon editorial.

Donner une premiere lecture de PKCS#11 comme interface entre application, bibliotheque cliente et composant de gestion de cles.

PKCS#11 decrit une API, un modele d’objets et des mecanismes pour manipuler des cles et des operations cryptographiques sans exposer toute la logique applicative au stockage direct des secrets.

  • vue d’ensemble du standard ;
  • slots, tokens, sessions et objets ;
  • mecanismes cryptographiques et attributs ;
  • lien avec module cryptographique materiel, SoftHSM et middleware ;
  • pieges d’integration frequents.
  • ajouter un schema objet / session / token
  • ajouter un exemple minimal d’appel
  • ajouter une FAQ
  • ajouter les erreurs frequentes
  • ajouter les sources officielles

Sans interface de ce type, l’application manipule directement les clés : elles vivent dans sa mémoire, dans ses fichiers de configuration et dans leurs sauvegardes, et toute compromission du serveur se termine par une copie de la clé, utilisable ensuite depuis n’importe où. Sans norme commune, chaque application est écrite pour un seul fabricant, et changer de module revient à réécrire le code qui signe, ce qui encourage à garder indéfiniment un équipement vieillissant. L’économie réalisée en contournant l’interface se paie donc deux fois : en sécurité aujourd’hui, en migration demain.

PKCS#11 est une norme publique qui décrit comment un programme parle à un composant chargé de garder des clés cryptographiques, par exemple un module matériel de sécurité. Elle définit trois choses : une interface de programmation, c’est-à-dire la liste des fonctions que l’application peut appeler, un modèle d’objets, et des mécanismes, qui sont les opérations cryptographiques disponibles.

L’application charge une bibliothèque cliente fournie par le fabricant du module. Cette bibliothèque présente des emplacements, et chaque emplacement contient un jeton, le conteneur logique où vivent les clés. L’application ouvre une session sur un jeton, puis s’authentifie, en général avec un code. Elle voit alors des objets : clés, certificats, données. Chaque objet porte des attributs qui disent ce qu’il a le droit de faire, par exemple signer, déchiffrer, envelopper une autre clé, ou être exporté.

Pour signer, l’application ne récupère jamais la clé. Elle désigne l’objet par une référence, choisit un mécanisme et envoie les données ; le module fait le calcul et renvoie le résultat. Le même programme peut ainsi fonctionner avec différents modules, ou avec SoftHSM, une imitation logicielle utilisée pour les essais. Si les attributs sont mal réglés, une clé peut devenir exportable, et si le code d’accès est mal protégé, n’importe qui peut ouvrir une session et utiliser les clés.

À lire aussi

Pages voisines

: les deux pages se citent l’une l’autre.