Я создаю программное обеспечение с пользователем + пароль.После аутентификации пользователь может получить доступ к некоторым частично общедоступным службам, но также зашифровать некоторые файлы, к которым имеет доступ только пользователь.
Пользователь должен храниться как есть, без изменений, если это возможно.После аутентификации пользователь и пароль хранятся в памяти до тех пор, пока работает программное обеспечение (я тоже не знаю, нормально ли это).
Вопрос в том, как сохранить эту комбинацию пользователь + пароль впотенциально небезопасная база данных?
Я не совсем понимаю, что мне показывать.
Допустим, я создаю расширенный ключ, подобный этому:
salt = random 32 characters string (is it okay?)
key = hash(usr password + salt)
for 1 to 65000 do
key = hash(key + usr password + salt)
Должен ли я хранить[пользователь открытого текста], [расширенный ключ] и [соль] в базе данных?
Кроме того, что мне следует использовать для шифрования (с помощью AES или Blowfish) некоторых файлов, каждый раз используя новый пароль?Должен ли я генерировать новую соль и создавать новый расширенный ключ, используя (пароль, сохраненный в памяти программы + соль)?И в этом случае, если я храню зашифрованный файл в базе данных, я, вероятно, должен хранить только соль.База данных аналогична той, в которой я храню комбинацию пользователь + пароль.
Файл может быть расшифрован, только если кто-то может сгенерировать ключ, но он не знает пароль.Правильно?
Я использую Python с PyCrypto, но это не очень важно, общий пример просто отлично.Я прочитал несколько похожих вопросов, но они не очень ясны.
Большое спасибо!