Si vous stockez le PAN (numéro de carte) alors il doit absolument être crypté.
Si vous stockez le nom du titulaire de la carte, la date d'expiration, le numéro d'émission (et qu'ils peuvent être liés au PAN), alors ils devraient être crypté, mais (ma compréhension) est que ce n'est pas absolument nécessaire. PCI-DSS indique seulement qu'au minimum le PAN doit être chiffré.
Le code CV2/AVS/CSC ne peut pas être stocké après l'autorisation, et idéalement, vous voudriez prouver qu'il n'est pas du tout stocké (par exemple, uniquement conservé en mémoire lors de l'exécution de l'autorisation)
En ce qui concerne les certificats/clés, vous pouvez utiliser une seule clé pour le cryptage de toutes les données liées à la carte. La meilleure pratique consiste à ne pas utiliser de clés à des fins multiples, donc si vous avez d'autres données (non liées à la carte) qui sont cryptées, utilisez une clé distincte pour cela.
La partie la plus difficile est celle que vous n'avez pas vraiment mentionnée en détail - et c'est la gestion des clés. Pour répondre aux exigences PCI, la clé doit être stockée dans une boîte physique distincte de la base de données, et vous devez pouvoir changer la clé au moins une fois par an. SQL 2008 le prend en charge avec Extensible Key Management (EKM)
Il est préférable de discuter de tous ces points avec un QSA (Qualified Security Assessor) indépendant que vous devrez à un moment donné impliquer afin de respecter la conformité PCI. Votre QSA sera en mesure de vous guider sur des questions telles que celle-ci et, en fin de compte, ses conseils que vous devriez suivre afin de respecter la conformité.
Il convient de mentionner que la plupart des gens réalisent rapidement à quel point la conformité PCI peut représenter un fardeau et cherchent à minimiser ce fardeau en utilisant une passerelle de paiement tierce. La plupart des passerelles de paiement vous permettront d'effectuer une autorisation/règlement et de stocker les détails de la carte sur leurs serveurs (déjà conformes à la norme PCI). Il vous suffit ensuite de stocker un TokenId qui fait référence à ces détails de paiement si vous devez effectuer d'autres frais/remboursements sur cette carte.
Bonne chance dans tous les cas !