Надежное шифрование данных кредитной карты

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

Теперь я решил использовать шифрование с открытым ключом Curve25519 (используя libsodium), а закрытый ключ надежно хранится в автономном режиме. Предположим, я реализовал это правильно. Я полагал, что когда я шифрую только номер кредитной карты и дату истечения срока действия, это будет легко взломать, поскольку известны первые 6 и последние 4 цифры номера карты, а также дата истечения срока действия, потому что они уже представляют собой обычный текст в база данных где-то.

Допустим, я шифрую это

1234561111118762|10|21|VISA

Теперь единственный секрет в этой строке — 111111 (6 цифр). Это будет стоить кому-то 10 ^ 6 попыток узнать это число.

Но что, если я шифрую так

1234561111118762|10|21|VISA|aVeryLongPsuedoRandomStringGeneratedUniquelyForEachEncryptedString

Предотвратит ли это сценарий грубой силы 10 ^ 6? Или я что-то упускаю?

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

Luke Joshua Park 29.05.2019 08:07

Я просто сказал. Либо вы намеренно игнорируете свои обязательства в соответствии с PCI, либо вы не имеете права выполнять их.

Luke Joshua Park 29.05.2019 08:15

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

ZT827 29.05.2019 08:26
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Говорит только о шифровании...

Я предполагаю, что под «грубой силой» вы имеете в виду взять открытый ключ, зашифровать и сравнить с зашифрованным текстом, который вы сохранили. Если это то, что вы имеете в виду, то ответ зависит от реализации.

Нужно определить, является ли реализация детерминированной — если да, то да, можно будет брутфорсить и сравнивать. Если это не так (чего и следовало ожидать), то это не будет проблемой.

Я ожидаю, что libsodium решит эту проблему.

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

ZT827 29.05.2019 08:54

Другие вопросы по теме