Comment faire correctement la gestion des clés privées

Quelqu'un a-t-il une expérience pratique ou une référence pour un schéma qui implémente un schéma de gestion des clés conforme à la norme de sécurité PCI DSS?

Il y a évidemment pas mal d'implémentations étant donné le nombre d'entreprises compatibles avec PCI DSS, mais essayer d'en trouver les détails est difficile. Quand il s'agit de stocker des données privées, la discussion s'arrête normalement à quel algorithme de chiffrement utiliser. Après cela il y a normalement une déclaration sur stocker de manière appropriée la clé privée mais pas de discussion sur les moyens pratiques de le faire ou des choses comme changer périodiquement la clé ou fournir la clé aux applications, etc.

Specificlly je suis intéressé par les exigences des sections 3.5 et 3.6 de la norme PCI DSS.

3.5.2 stockez les clés cryptographiques en toute sécurité dans le moins d'emplacements et de formulaires possibles.

3.6.A Vérifier l'existence de procédures de gestion des clés pour les clés utilisées pour le chiffrement données de titulaire de carte. Note: de nombreuses normes de l'industrie pour la gestion des clés sont disponibles à partir de diverses ressources, y compris NIST, qui peut être trouvé à http://csrc.nist.gov .

3.6.4 vérifier que des procédures de gestion des clés sont mises en œuvre pour exiger des changements périodiques des clés au moins une fois par année.

J'ai regardé les publications cryptographiques NIST comme le suggère le document sur les exigences PCI DSS, mais en dehors des notes récentes d'une clé cryptographique Atelier de gestion il ne semble pas y avoir beaucoup de schémas ou de normes réellement implémentables.

Quant à ce que j'essaie de faire, ce n'est pas:

  1. stocker les mots de passe + sels en tant que hachages à Sens Unique Pour l'authentification,
  2. choisissez un algorithme symétrique fort pour le chiffrement des données,
  3. évitez d'avoir à stocker des données privées en premier lieu.
  4. éviter la nécessité d'une gestion des clés avec d'autres mécanismes: sécurité physique, sécurité des bases de données, dragons et sorciers etc.

Tous valides préoccupations, mais dans ce cas ne sont pas la réponse. Les écrous et les boulons de mes exigences sont dans une question SO différente . Net Design pattern pour stocker et récupérer des données sensibles par utilisateur mais tout se résume à la gestion des clés d'où cette question plus raffinée.

48
demandé sur Community 2009-10-18 03:57:47

2 réponses

Je connais la douleur que vous traversez. Nous avons eu du mal à mettre à jour un ancien système EFT vers la conformité PCI. La gestion des clés était certainement (de mon point de vue logiciel) la partie la plus difficile.

Je pense que J'ai aussi trébuché sur les recommandations du NIST pour la gestion des clés que Martin a publiées, et j'ai été incroyablement frustré par le manque d'exemples concrets.

ANSI X9. 17-la gestion des clés des institutions financières {[4] } est probablement la plus pertinente pour votre besoins, avec PCI-DSS. Bonne chance de le lire cependant, le document est une collection massive de TLA que je sais que j'ai certainement eu du mal à lire. (X9. 17 est mis à jour chaque année, et la dernière version est maintenant: NIST SP 800-57 Pt. 1 Rév. 4 )

Lorsque la frustration s'est transformée en désespoir, je suis tombé sur Le Moulin à monnaie électronique qui est un conte fictif, avec un bon nombre de références techniques pertinentes. Le Chapitre 17 traite de X9. 17 et peut aider avec le compréhension.

À partir de tout ce matériel de référence, j'ai conçu un système de gestion clé dont notre vérificateur était satisfait. Les documents de conception sont assez longs, mais en résumé, l'idée est que votre clé de chiffrement de données est protégée par une clé de chiffrement de clé, et la clé de chiffrement de clé est stockée sur une boîte physiquement séparée, elle-même protégée par une clé principale.

Mon implémentation était d'avoir une application Serveur de clés en cours d'exécution sur une boîte windows. Cette application nécessitait l'entrée de deux "clés principales du serveur principal" distinctes avant qu'il puisse être utilisé. Ces clés ne seraient connues que des administrateurs de serveur de clés. Ces clés sont xor'd ensemble pour générer la clé principale, qui est stockée uniquement dans la mémoire protégée pendant que l'application est en cours d'exécution. L'Application peut alors générer automatiquement des clés cryptographiquement fortes, qui sont stockées sous forme cryptée à l'aide de la clé principale.

Les Applications qui ont besoin de chiffrement demanderont un chiffrement de clé Clé à partir du Serveur de Clés. Le KEK est utilisé par l'application pour chiffrer / déchiffrer la clé de chiffrement des données, qui peut être stockée en toute sécurité avec les données de l'application.

Bonne chance. J'espère que vous trouverez également un défi intéressant!

35
répondu PaulG 2018-05-04 15:55:24

Avez-vous vu NIST SP 800-57, recommandation pour la gestion des clés?

7
répondu Martin v. Löwis 2009-10-18 00:26:28