В области обработки платежных карточек обычно используются отдельные столбцы для последних четырех цифр номера карты и для зашифрованного токена, представляющего весь номер карты.
Дублирование данных минимальное.
Последние четыре цифры могут храниться в открытом виде, чтобы помочь клиенту узнать, какая платежная карта используется. Имя пользователя, адрес и дата истечения срока действия карты также могут быть сохранены в открытом виде.
Код подтверждения карты (трех- или четырехзначный код, обычно показанный на оборотной стороне карты) должен быть никогда, ни при каких обстоятельствах не должен храниться в какой-либо форме после подтверждения карты.
Важно понимать, что симметричное шифрование (например, AES) в вашей базе данных является слабой защитой от киберпреступников. Он настолько слаб, что почти бесполезен. Это связано с тем, что ваше программное обеспечение для веб-приложений должно иметь ключ, доступный для шифрования новой информации. Многие атаки на онлайн-системы поступают через веб-приложение, поэтому киберпреступник может легко захватить ключ. Затем он имеет данные вашей карты.
Если вы собираете или храните номера платежной карты (номера кредитных карт), ваша компания становится объектом требований к безопасности данных в платежных картах (PCI). В частности, вам, в конце концов, придется заполнить анкету для самооценки https://www.pcisecuritystandards.org/documents/SAQ_A-EP_v3-1.pdf. Это в первый год будет стоить около 50 000 долларов США, а в каждом последующем году - примерно половину этой суммы.
С другой стороны, работа через платежный процессор, такой как stripe.com или Paypal, использует свои требования PCI Data Security и снижает вашу подверженность.
Так что подумайте дважды, хотите ли вы собирать эту информацию и поговорить со своим бухгалтером или финансовым директором.
Если вы должны хранить информацию о платежной карте, вы можете использовать асимметричный (общедоступный/закрытый) механизм шифрования. Чтобы сделать это безопасно, настройте выделенный компьютер и создайте пару ключей (возможно, RSA) на этом компьютере. Экспортируйте открытый ключ в свое веб-приложение и не копируйте закрытый ключ. Затем отключает выделенную машину и ее диски, а отключает ее от сети. (Откройте его и извлеките карты адаптера Wi-Fi и Bluetooth, а затем отсоедините кабель Ethernet.)
Зашифруйте карточки с помощью открытого ключа в своем веб-приложении и сохраните их в своей базе данных. Когда вам нужно использовать номера платежных карт для обработки платежей или что-то подобное, вы можете временно переключиться на выделенный компьютер и использовать его для обработки.
Если у вас есть номера кредитных карт, ваша система станет сочной целью для киберпреступников. Все это может показаться параноидальным, пока вы не поймете, что компетентные, мотивированные и недобросовестные люди на самом деле замышляют против вас.
Нет - не чисто. Шифрование только «части» значения означает, что значение не является атомарным, и поэтому ваша база данных не нормируется. Это можно сделать, создав представление, включающее функции, а затем отключив прямой доступ SELECT к таблице. – symcbean