Я столкнулся с ситуацией, когда мне необходимо хранить данные держателя кредитной карты в моей базе данных, и я ищу наиболее безопасный способ справиться с этим. Обратите внимание, что я полностью осведомлен о PCI-DSS, поэтому мой вопрос касается исключительно аспекта шифрования.
Теперь я решил использовать шифрование с открытым ключом Curve25519 (используя libsodium), а закрытый ключ надежно хранится в автономном режиме. Предположим, я реализовал это правильно. Я полагал, что когда я шифрую только номер кредитной карты и дату истечения срока действия, это будет легко взломать, поскольку известны первые 6 и последние 4 цифры номера карты, а также дата истечения срока действия, потому что они уже представляют собой обычный текст в база данных где-то.
Допустим, я шифрую это
1234561111118762|10|21|VISA
Теперь единственный секрет в этой строке — 111111
(6 цифр). Это будет стоить кому-то 10 ^ 6 попыток узнать это число.
Но что, если я шифрую так
1234561111118762|10|21|VISA|aVeryLongPsuedoRandomStringGeneratedUniquelyForEachEncryptedString
Предотвратит ли это сценарий грубой силы 10 ^ 6? Или я что-то упускаю?
Я просто сказал. Либо вы намеренно игнорируете свои обязательства в соответствии с PCI, либо вы не имеете права выполнять их.
Мой вопрос здесь о шифровании. Не будем отходить от этой темы. Если вам нечего добавить, кроме предположений о моем соответствии PCI, вы зря тратите время. Спасибо.
Говорит только о шифровании...
Я предполагаю, что под «грубой силой» вы имеете в виду взять открытый ключ, зашифровать и сравнить с зашифрованным текстом, который вы сохранили. Если это то, что вы имеете в виду, то ответ зависит от реализации.
Нужно определить, является ли реализация детерминированной — если да, то да, можно будет брутфорсить и сравнивать. Если это не так (чего и следовало ожидать), то это не будет проблемой.
Я ожидаю, что libsodium решит эту проблему.
Это было очень полезно :) Поэтому я могу с уверенностью предположить, что пока (правильно реализованное) вероятностное шифрование используется, нет возможности грубой силы и сравнения с сохраненным текстом.
Тот факт, что вам нужно спросить об этом, должен быть достаточным для вашего собственного разума красным флажком...