Хеш и шифрование в комбинации: сохранение безопасности - PullRequest
0 голосов
/ 29 октября 2011

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

Очевидно, что при создании мастер-ключа я должен сохранять его только как хеш-значение (например, SHA). Но тогда мне также нужен ключ для шифрования данных (например, AES). Я думал об использовании значения хэша мастер-ключа в качестве ключа для шифрования.

Но, наверное, это небезопасно, верно?

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

Но сохранение значения хеш-функции главного ключа и использование его в качестве ключа для шифрования, вероятно, представляет собой угрозу безопасности, верно?

Должен ли я использовать реальную (незашифрованную) версию мастер-ключа для шифрования данных с помощью?

Или просто пропустить шаг, сравнивая значение хеш-функции с введенным паролем, и вместо этого просто пытаться зашифровать данные введенным паролем?

Надеюсь, вы понимаете, что я пытаюсь рассказать вам о моей проблеме. Заранее большое спасибо!

1 Ответ

3 голосов
/ 29 октября 2011

Всегда лучше четко разделить обязанности и использовать только один криптографический объект для одной цели и ничего больше.

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

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

Только не используйте пароль для входа в систему в качестве ключа шифрования.

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