Мой вопрос:
Каков наилучший подход к обеспечению безопасности малых данных? Ниже я представляю проблему симметричного и асимметричного шифрования. Мне любопытно, есть ли способ сделать асимметричное шифрование для небольших данных с эквивалентом какой-то «соли», чтобы действительно сделать его безопасным? Если да, то как выбрать «соль» и правильно ее реализовать? Или есть лучший способ справиться с этим?
Объяснение моего беспокойства:
При шифровании чего-то, что имеет «массу», мне кажется, что асимметричные подходы к шифрованию довольно безопасны. Меня беспокоит, если у меня есть небольшое поле данных, скажем, номер кредитной карты, пароль или номер социального страхования в базе данных. Тогда шифруемые данные имеют фиксированную длину и представление. При этом хакер может попытаться зашифровать все возможные номера социального страхования (10 ^ 9 перестановок) с помощью открытого ключа и сравнить его со значениями, хранящимися в базе данных. Как только они находят совпадение, они знают настоящее число. Аналогичные атаки могут быть выполнены и для других типов данных. Из-за этого я решил избегать симметричных методов, таких как встроенная функция mysql AES_ENCRYPT()
, однако теперь я также сомневаюсь в асимметричности.
Как правильно защитить небольшие данные?
Соление обычно используется для хэш-алгоритмов, но мне нужно иметь возможность вернуть данные после этого. Я подумал о том, чтобы иметь некоторый «базовый объемный текст», а затем добавить конфиденциальные данные в конец. Выполните шифрование этой конкатенации. Расшифровка обратит процесс, расшифровав, а затем удалив «базовый объемный текст». Если хакер сможет вычислить базовый объемный текст, то я не вижу, как это добавит дополнительной безопасности.
Выбор других данных для включения в шифрование, чтобы действовать как солт-значение, полученное из других полей в базе данных (или хэш-значения этих полей, или их комбинация приводит к той же проблеме), также кажется уязвимым. Поскольку хакеры могут использовать комбинации, аналогичные атаке, упомянутой выше, чтобы попытаться выполнить более интеллектуальную форму «грубой силы». При этом я не уверен, как правильно защитить небольшие данные, и мои googles мне не помогли.
Как лучше всего обеспечить безопасность небольших данных?