Nếu bạn lưu trữ PAN (số thẻ) thì nó hoàn toàn phải được mã hóa.
Nếu bạn lưu trữ tên chủ thẻ, ngày hết hạn, số phát hành (và chúng có thể được liên kết với PAN), thì chúng nên được mã hóa, nhưng (sự hiểu biết của tôi) là nó không hoàn toàn cần thiết. PCI-DSS chỉ nói rằng tối thiểu PAN phải được mã hóa.
Mã CV2 / AVS / CSC không thể được lưu trữ sau khi ủy quyền và lý tưởng là bạn muốn chứng minh rằng nó hoàn toàn không được lưu trữ (ví dụ - chỉ được lưu trong bộ nhớ khi thực hiện ủy quyền)
Về chứng chỉ / khóa - bạn chỉ có thể sử dụng một khóa để mã hóa tất cả dữ liệu liên quan đến thẻ. Phương pháp hay nhất là không sử dụng khóa cho nhiều mục đích, vì vậy nếu bạn có dữ liệu khác (không liên quan đến thẻ) được mã hóa, thì hãy sử dụng khóa riêng cho việc đó.
Phần khó nhất là phần mà bạn không thực sự đề cập chi tiết - và đó là quản lý chính. Để đáp ứng các yêu cầu của PCI, khóa phải được lưu trữ trên một hộp vật lý riêng biệt với cơ sở dữ liệu và bạn cần có khả năng thay đổi khóa ít nhất hàng năm. SQL 2008 hỗ trợ điều này với Quản lý khóa mở rộng (EKM)
Tất cả những điểm này nên được thảo luận tốt nhất với một QSA độc lập (Người đánh giá bảo mật đủ điều kiện), người mà bạn sẽ cần tham gia vào một thời điểm nào đó bất kể để đáp ứng việc tuân thủ PCI. QSA của bạn sẽ có thể hướng dẫn bạn về những câu hỏi như thế này và cuối cùng là lời khuyên của anh ấy / cô ấy mà bạn nên làm theo để đáp ứng sự tuân thủ.
Điều đáng nói là hầu hết mọi người đều sớm nhận ra rằng việc tuân thủ PCI có thể có gánh nặng như thế nào và tìm cách giảm thiểu gánh nặng đó bằng cách sử dụng cổng thanh toán của bên thứ ba. Hầu hết các cổng thanh toán sẽ cho phép bạn thực hiện ủy quyền / thanh toán và lưu trữ chi tiết thẻ trên máy chủ (đã tuân thủ PCI) của họ. Sau đó, bạn chỉ cần lưu trữ một TokenId tham chiếu đến các chi tiết thanh toán đó nếu bạn cần thực hiện thêm các khoản phí / hoàn phí trên thẻ đó.
Chúc bạn may mắn!