Если вы храните PAN (номер карты), то он обязательно должен быть зашифрован.
Если вы храните имя держателя карты, дату истечения срока действия, номер выпуска (и они могут быть связаны с PAN), то они должны быть зашифрованы, но (насколько я понимаю), это не является абсолютно необходимым. PCI-DSS только заявляет, что как минимум PAN должен быть зашифрован.
Код CV2 / AVS / CSC не может быть сохранен после авторизации, и в идеале вы хотели бы доказать, что он вообще не сохраняется (например, хранится только в памяти при выполнении авторизации)
Что касается сертификатов / ключей - вы можете просто использовать один ключ для шифрования всех данных, связанных с картой. Рекомендуется не использовать ключи для разных целей, поэтому, если у вас есть другие (не связанные с картой) данные, которые зашифрованы, используйте для этого отдельный ключ.
Самая сложная часть - та, которую вы не упомянули в деталях - и это управление ключами. Чтобы соответствовать требованиям PCI, ключ должен храниться в отдельном физическом ящике с базой данных, и вам требуется возможность менять ключ по крайней мере раз в год. SQL 2008 поддерживает это с помощью расширяемого управления ключами (EKM)
Все эти моменты лучше всего обсудить с независимым QSA (квалифицированным оценщиком безопасности), которого вы в какой-то момент должны будете привлечь независимо от того, чтобы соответствовать требованиям PCI. Ваш QSA сможет направить вас по таким вопросам, как этот, и, в конечном счете, по его / ее совету, которому вы должны следовать, чтобы обеспечить соблюдение.
Стоит отметить, что большинство людей вскоре осознают, насколько серьезным может быть бремя соблюдения PCI, и стремятся минимизировать это бремя, используя сторонние платежные шлюзы. Большинство платежных шлюзов позволяют вам выполнять авторизацию / расчет и хранить данные карты на своих (уже совместимых с PCI) серверах. Затем вам нужно только сохранить TokenId, который ссылается на эти платежные реквизиты, если вам потребуется произвести дополнительные платежи / возвраты по этой карте.
Удачи в любом случае!