Хранение SHA256 имени и фамилии вместе с 4 последними цифрами номера кредитной карты

Я пытаюсь найти лучший способ однозначно идентифицировать клиентов, прежде чем они совершат покупку, чтобы гарантировать, что код купона не используется дважды одним и тем же человеком. Я не собираюсь делать свой веб-сайт полностью совместимым с PCI, поскольку я не планирую хранить номера кредитных карт (только POST). Я хочу сгенерировать SHA 256 (одностороннее шифрование) первого имени, объединенного с фамилией и номер кредитной карты и сохраните его в моей базе данных. Требуется ли для этого соответствие PCI, хотя это одностороннее шифрование? Как насчет использования имени + фамилии + последних 4 цифр кредитной карты, потребуется ли полное соответствие PCI?

Спасибо,


person Loic Duros    schedule 08.05.2013    source источник
comment
SHA 256 называется хешированием, а не односторонним шифрованием. В общем случае вы не можете расшифровать хеш, поскольку несколько допустимых входных данных обязательно создадут один и тот же хеш (бесконечный набор входных данных, конечный набор значений хеш-функции).   -  person Eric J.    schedule 08.05.2013
comment
Правильно, хеш, но разве не факт, что вы не можете его расшифровать, что делает его методом одностороннего шифрования?   -  person Loic Duros    schedule 08.05.2013
comment
Афайк, хранение любых данных держателя карты повышает безопасность вашей компьютерной системы, я не знаю ни одного стандартного исключения для хэшей. Кроме того, если система когда-либо будет получать сообщения с незашифрованными номерами кредитных карт, она обязательно добавит дополнительные ограничения, даже если вы их не сохраните.   -  person Joachim Isaksson    schedule 08.05.2013
comment
Нет, шифрование по самой своей природе также может быть расшифровано (по крайней мере, так, как это слово определяется в области криптографии).   -  person Eric J.    schedule 09.05.2013


Ответы (1)


Тот факт, что вы можете получить полные номера карт вообще, означает, что вы будете участвовать в соблюдении требований PCI, независимо от того, как вы планируете генерировать хэш.

Если вы можете хэшировать номера карт и хранить только хеш, то это, безусловно, упростит вам путь к соблюдению требований PCI, но вам все равно нужно будет проработать другие проблемы, чтобы (например) ни один мошенник не смог собрать данные карты до хеширования.

Хеширование с помощью SHA256 допустимо, если каждая карта имеет уникальную соль. Ваш план использовать имя + фамилию в качестве соли, вероятно, будет сочтен приемлемым здесь.

В идеале вы должны работать с платежным шлюзом, который собирает и токенизирует данные карты. Это означало бы, что у вас никогда не будет доступа к полному номеру карты, и вы почти полностью исключите свои обязанности с соблюдением требований PCI, а также означало бы, что вы, вероятно, могли бы просто использовать идентификатор токена вместо номера карты, и никакого хеширования не требуется.

person PaulG    schedule 09.05.2013