Существует ли лучший алгоритм.NET для шифрования кредитной карты?

Почему бы не связать текст с программой и использовать ее как глобальную переменную! Вот пример. Я рассматриваю возможность использования этого для включения файлов шейдера Open GL в исполняемый файл, поскольку GL-шейдеры должны быть скомпилированы для GPU во время выполнения.

8
задан Jeremy McGee 6 September 2008 в 15:51
поделиться

9 ответов

Без обид, но вопрос немного "дезинформирован". Нет никакого решения "для серебряной пули". Я рекомендовал бы читать на криптографии в целом и затем сделать некоторое моделирование угроз. Некоторые вопросы (ни в коем случае всесторонний список) необходимо спросить себя:

  • Модуль, делающий шифрование то, которое должно дешифровать его (в симметричном crypto использования этого случая), или будет это отправлять данные в другой модуль (на другой машине), который будет использовать его (в этом случае, необходимо рассмотреть открытый ключ crypto),
  • От чего Вы хотите защитить? Кто-то получающий доступ к базе данных, но не имеющий исходный код (в этом случае Вы можете hardcode ключ шифрования непосредственно в источник)? Кто-то осуществляющий сниффинг Вашей локальной сети (необходимо рассмотреть прозрачные решения как IPSec)? Кого-то крадущего Ваш сервер (это может произойти даже в дата-центрах - в этом случае полное шифрование диска, нужно рассмотреть)?
  • Необходимо ли действительно сохранить данные? Разве Вы не можете непосредственно передать его процессору кредитной карты и стереть его после того, как Вы получите подтверждение? Разве Вы не можете сохранить его локально в клиенте в cookie или Flash LSO? При хранении его в клиенте удостоверьтесь, что Вы шифруете его в стороне сервера прежде, чем поместить его в cookie. Кроме того, при использовании cookie удостоверьтесь, что Вы делаете их http только.
  • Достаточно сравнить равенство данных (т.е. данные, которые клиент дал мне, те же данные, которые я имею)? Если так, рассмотрите хранение хеша его. Поскольку номера кредитных карт относительно коротки и используют уменьшенный набор символов, уникальная соль должна быть сгенерирована для каждого перед хешированием.

Более позднее редактирование: обратите внимание, что стандартные алгоритмы шифрования от той же категории (например, 3DES и AES - оба являющийся симметричными шифрами блока) имеют сопоставимую силу. Большинство (коммерческих) систем не повреждается, потому что кто-то bruteforced их шифрование, но потому что их моделирование угроз не было детализировано достаточно (или утончаются, у них не было никого). Например, можно зашифровать все данные, но если у Вас, окажется, будет общедоступный веб-интерфейс, который уязвим для Внедрения SQL, то они не помогут Вам очень.

23
ответ дан 5 December 2019 в 04:35
поделиться

Это это не имеет значения.

Полные номера карты никогда не должны касаться диска.

Все, что имеет значение, является подлинным кодом.

Для трассировок и т.д. Вы будете только использовать последние 4 цифры xxxx xxxx xxxx 1234 и истекать дата.

Если Вы будете к числам магазинной карточки, то выбор криптографии получит мандат банком получения.

Если Вы не получатель, который случай, там должен быть старый Unix-программист/db2 парень, которого необходимо спросить.

"Не можете Вы хранить его локально в клиенте в cookie" <-НИКОГДА

12
ответ дан 5 December 2019 в 04:35
поделиться

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

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

Действительно, просто не делайте этого!

Также Вы никогда никогда никогда не должны сохранять код CCV.

7
ответ дан 5 December 2019 в 04:35
поделиться

Согласно PCI правила соответствия DSS, любой ведущий в отрасли стандарт шифрования достаточно. Так 3DES с ключом на 256 битов достаточно хорошо (хотя другие стандарты могут использоваться). Проверьте это http://pcianswers.com/2006/08/09/methods-of-encrypting-data/

5
ответ дан 5 December 2019 в 04:35
поделиться

При использовании стороннего платежного шлюза Вы не должны хранить числа.

Нет никакого смысла.

1
ответ дан 5 December 2019 в 04:35
поделиться

3des довольно хорошо, сохраните соль вдоль стороны и сохраните стандартный ключ где-нибудь не в базе данных или файле конфигурации. Тот путь, если Вы получаете pwned, они не могут дешифровать его.

0
ответ дан 5 December 2019 в 04:35
поделиться

Не забывайте о целостности здесь. Существуют нападения подделки на out-of-the-box crypto, когда взломщик не знает ключ, но может управлять шифрованным текстом. Они могут быть особенно противными когда:

  • шифрование коротких строк,
  • с известными подстроками

Это точно имеет место для кредитных карт. Так использование Системы. Безопасность. AES криптографии или 3DES в режиме CBC, не прокручивая Вашу собственную контрольную сумму может быть опасной. Читайте: существует, немного случаются, взломщик без секретного ключа мог заменить один номер кредитной карты другим.

1
ответ дан 5 December 2019 в 04:35
поделиться

Существует также легальный аспект для рассмотрения. Я не знаю ситуации в другом месте, но в Германии Вам просто не разрешают сохранить кредитную карту numbers1). Период. Не имеет значения, шифруете ли Вы их или не и в том, какой формат Вы храните их.

Все, что можно сделать (и здесь я отношусь из памяти без судебного ведома) действительно ли хранилище является сильным хешем (SHA-256?) номера кредитной карты, наряду с последними четырьмя цифрами и номером аккаунта. И да, это тривиально для восстановления полного числа от них одна только информация. Законы не всегда логичны.


1) Кроме того, если Вы - федерально сертифицированный институт кредитной карты.

0
ответ дан 5 December 2019 в 04:35
поделиться

Подсказка: необходимо заняться расследованиями, если законно сохранить номера кредитных карт. В Швеции, например, Вы должны будете быть сертифицированы PCI (Промышленность Платежной карты), где Ваша внутренняя и внешняя безопасность будет протестирована (длинное с большим количеством других вещей).

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

0
ответ дан 5 December 2019 в 04:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: