2017-02-14 5 views
1

Мы делаем обновления безопасности на всех наших сайтах, а два шага - шифрование данных при передаче и шифровании данных в состоянии покоя.Должны ли мы шифровать данные, хранящиеся в таблице aspnet_Profile

Добавление сертификата SSL будет шифровать данные при передаче, и нам необходимо зашифровать все данные в базе данных, которые классифицируются как личные данные пользователей.

Некоторые из этих данных хранятся в таблице aspnet_profile.

Может ли кто-нибудь посоветоваться о шифровании данных, хранящихся в этой таблице? Нужно ли нам шифровать данные как часть обновления безопасности?

ответ

0

Это зависит. Вы хотите иметь доступ к информации пользователя или пользователь является единственным человеком, который имеет доступ к данным?

В первый раз я считаю, что шифрование данных имеет смысл только в том случае, если база данных хранится на отдельном сервере с веб-сервера или ключи дешифрования хранятся на отдельном сервере. Чтобы расшифровать данные и представить их пользователям, вам необходимо их расшифровать. Если зашифрованные данные и ключи находятся на одном и том же сервере, и этот сервер становится скомпрометированным, злоумышленники смогут расшифровать все, так как они также будут иметь доступ к ключам. Если вы храните их отдельно, им нужно будет скомпрометировать 2 (или более) сервера, что, вероятно, будет сложнее. Кроме того, поскольку шифрование является тяжелой задачей, вы, вероятно, должны только шифровать конфиденциальные данные (независимо от того, что вы считаете чувствительным для своего сценария). Такие данные, как пароли, не должны быть зашифрованы, а хешированы и соленые (в Интернете есть много информации о том, как это сделать). Если вы решили зашифровать все, у вас также должны быть разные ключи для каждого пользователя, так что, если один из ключей будет скомпрометирован, пострадает только один пользователь.

Если вы хотите, чтобы только пользователь мог видеть сохраненную информацию, вы должны знать, что не будет иметь к ней доступа (если вы не храните его в отдельной базе данных также без шифрования или зашифрованы своими собственными ключами). Пользователь, который теряет свой пароль, будет в затруднительном положении, если у вас нет резервной копии информации, используя ваш собственный ключ (или сохраняя их в виде открытого текста), что не соответствует цели. Даже если у вас есть копия данных, восстановление данных будет означать дешифрование его с помощью вашего ключа (если он не сохранен в открытом тексте) и снова зашифровать его новым ключом, установленным пользователем. Это может быть тяжелой задачей, если объем данных большой. Наконец, если вы хотите, чтобы у пользователя был доступ и полная ответственность (так что вы не сможете получить к нему доступ вообще), вы должны сделать это ясно и предпочтительно выполнить шифрование на стороне клиента. Опять же, только секретные данные лучше шифруются. Кроме того, информация, подобная именам пользователей и паролям для входа пользователя, не должна быть зашифрована. Тот же принцип солевого хеширования применяется и к паролям по этому поводу.

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

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

Смежные вопросы