Выгодно ли шифровать имена пользователей, хранящиеся в базе данных? - PullRequest
6 голосов
/ 15 ноября 2011

Первый и принятый ответ на на этот вопрос об управлении паролями предлагает зашифровать идентификаторы пользователей в БД.

Хорошо, что если кто-то получает пароль, он должен знать,как расшифровать логин пользователя, чтобы получить полную пару логин / пароль.

Некоторые недостатки, которые я вижу, например:

  • вам необходимо дешифровать логины пользователей каждый раз, когда вы хотите отобразитьих
  • Если вы хотите выполнить поиск «начинается с» при входе в систему, чтобы найти пользователей, вы не можете просто использовать LIKE '...%'
  • ORDER BY в поле входа в систему, что может быть довольно сложно...

Что бы вы порекомендовали (шифровать идентификаторы пользователей или нет)?

Ответы [ 2 ]

7 голосов
/ 15 ноября 2011

Как обычно, ответ «это зависит».

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

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

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

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

3 голосов
/ 15 ноября 2011

Шифрование считается меньшей формой секретного хранения, чем функции дайджеста сообщений. Фактически, хранение зашифрованного пароля является явным нарушением CWE-257 .

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...