2010-09-06 3 views
2

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

alt text

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

+0

Хорошая панель администратора, которую я могу сказать. :) – janosrusiczki

ответ

3

Если вы хотите, чтобы пароли были доступны для просмотра, они никогда не могут быть действительно защищены в случае нарушения.

Вы можете быть заинтересованы в проверке следующие сообщения о переполнении стека для дальнейшего чтения:

1

хранить пароли в 2-х формах:

1) MF5/SHA1 для безопасной проверки

2) AES с указанием главного пароля. То есть для просмотра паролей вы вводите главный пароль и бинго. В случае кражи злоумышленник не получит пароли, которые бы легки (но могут быть грубой силой).

+0

Я определенно не рекомендовал бы использовать MD5 для хэширования; почти то же самое относится к SHA-1. Пойдите с * bcrypt * в этом случае, который имеет длительное время настройки; скорость - это то, чего вы не хотите в хэш-функции пароля, и * bcrypt *, безусловно, является хорошим выбором в этом случае. –

+0

bcrypt? Шифрование файлов Blowfish ??? Зачем? SHA1 криптографически безопасен. Если вы хотите сделать это медленнее, просто делайте это 10'000 раз в цикле. То же самое относится к MD5. Никакой реальной слабости не было. – BarsMonster

+0

На самом деле, я думаю, здесь подразумевается Eksblowfish. К сожалению, выбранное имя является источником большой путаницы: http://chargen.matasano.com/chargen/2007/9/7/enough-with-the-rainbow-tables-what-you-need-to-know- aboutout -s.html – Piskvor

0

У вас может быть один XOR другой.

  • Если пароли должны быть безопасными, вы не должны хранить их в базе данных (хранилище some_hash(per_user_salt + password) и сравнить, что при входе в систему (как @Daniel Vassallo говорит)

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

+2

Возможно, проверьте это решение с адвокатами клиента. Real Story ™: компания, в которой я работала, обладала доступными для администратора паролями; один из обычных пользователей отправился изгоев, затем построил защиту на «не я, любой администратор может видеть мой пароль и выдавать себя за меня». Не могу сказать вам больше, но мораль должна быть очевидной. – Piskvor

1

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

Я бы посоветовал сделать какой-то генератор отчетов для печати паролей, которые создают (генерируют/соли, хэши и сохраняют) их на лету для печати. С помощью этого вы могли бы генерировать письма для отправки. Делает процесс в основном автоматизированным, и человек должен будет отправлять их только на принтер (если это даже необходимо).

Удачи.

+0

... и установите флаг, чтобы изменить пароль при первом входе в систему. – caf

1

Вы не должны этого делать.

Создайте одноразовый пароль, который можно использовать (а также можно сохранить в текстовом виде), чтобы установить новый пароль через Интернет.

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

0

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

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

Чтобы получить пароль, используйте закрытый ключ (защищенный, то есть на другом изолированном компьютере), чтобы расшифровать пароль + соль и выбросить соль.

Против: асимметричное шифрование может быть дорогостоящим, вычислительным, но пароли имеют тенденцию быть короткими.

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

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