30/06/2010

chiffrement des numéros de carte de crédit (PAN)

Il ne faut pas confondre HTTPS et chiffrement des numéros de carte. Car c'est une réponse que j'obtiens assez souvent dans des interviews préliminaires : "Tout est chiffré en HTTPS, nous sommes déjà conformes ".

Le HTTPS, de sa version SSLv3, répond à l'exigence PCI 4.1 relative aux transports des numéros de carte sur des réseaux publics.

Lorsque l'environnement doit conserver des numéros de carte et donc les chiffrer selon exigence PCI 3.4 "Render PAN, at minimum, unreadable anywhere it is stored") ET gérer les clés de chiffrement selon les exigences 3.6 "...Implement all key-management processes and procedures for cryptographic keys..". Cette deuxième partie n'est pas anodine.

Tout d'abord, il faut chiffrer les numéros de cartes avec un algorithme sur et reconnu. Autrement dit, choisir l'un des algorithmes validés par VISA dans son whitepaper "Visa Europe’s Best Practices for Data Field Encryption, Version 1.0" . Le choix se porte donc sur AES (128 bits minimum, de préférence 256 bits), RSA (2048 bits minimum) ou triple-DES (2 keys, 112bits minimum).

Ensuite, la ou les clés de chiffrement doivent être elles-mêmes protégées et chiffrées par une master key (appelée "key encryption key"). C'est ici que tout se complique. Car cette master key ne doit pas être connue d'une seule personne, mais de deux personnes qui ne doivent en connaitre qu'une moitié chacune. Le PCI appelle cela le "Split knowledge and dual control of keys".

De surcroit, la master key devrait être uniquement stockée en mémoire : cela impose donc que deux personnes se déplacent en cas de reboot du serveur et la réalisation d'une "cérémonie des clés"..et dans la vraie vie ?

Aucun commentaire:

Enregistrer un commentaire