Fournisseur de Services Cryptographiques (CSP)
Définition
Un fournisseur de services cryptographiques (CSP) sert différentes implémentations d'algorythmes et de standards de cryptographies. Au minimum, un CSP est compilé sous la forme d'une bibliothèque dynamique contenant l'Interface de Programme Système Cryptographique, la CryptoSPI et un fichier de signature numérique; ce fichier est périodiquement utilisé pour vérifier l'authenticité de la bibliothèque. Par héritage, si une fonction n'est pas implémentée dans un CSP, son appel passe au travers de ce dernier.
Spécificité
Idéalement, un fournisseur de services cryptographique est indépendant d'une application particulière de la crypto API, mais généralement ils sont écrits sur mesure pour satisfaire ses besoins spécifiques; les fonctionnalités de base étant déja servies par les fournisseurs existants.
La qualité de la sécurité est alors directement liée au CSP, un programme identique, utilisant des CSP différent offrira des environnements de sécurité différents. Cela est possible les applications ont un accès soigneusement réstreint aux fonctionnalités cryptographiques internes grace à trois règles:
- Les applications ne peuvent pas accéder directement au matériel de base:
- Tous les matériaux de base sont générés et utilisés directement dans le CSP, l'application les utilisent via des gestionnaires opaques.
- Les applications ne peuvent pas spécifier les détails des opérations cryptographiques:
- Le CSP propose un choix d'algorithme ou de mécanisme cryptographique, leur implémentation est donc lié au CSP et non à l'application.
- Les applications ne gèrent pas les crédentiels ni les autres données d'authentification des utilisateurs:
- L'authentification des utilisateurs est effectuée par le CSP, ainsi, en changeant uniquement le CSP, il est possible d'intégrer de nouvelle manière d'identifier un utilisateur sans pour autant avoir à modifier l'applciation.
Contexte
Avant toute application cryptographique, un contexte d'application est demandée (via CryptAcquireContext). Un contexte applicatif se traduit par un gestionnaire lié à un CSP particulier disposant d'un contenneur de clé (nécessaire aux opérations cryptographiques) spécifique ou par défaut.
Chaque CSP a un titre et appartient à une des familles de CSP. Par CSP, chaque titre est unique, la famille ne l'est pas.
L'appel d'un CSP se fait soit par famille et titre, soit par famille, dans ce dernier cas, le système récupère les CSP par défaut pour l'utilisateur dans la famille demandée, sinon par défaut pour l'ordinateur.