2014-08-29 4 views
0

Мне нужно поместить важные данные в базу данных, которые могут видеть все в нашей организации. Я хочу зашифровать данные, а затем поместить их в текстовое поле. . Данные будут доступны через GUI, который попросит пользователя ввести пароль, который будет использоваться для шифрования/дешифрования данных. Я не доверяю пользователям запомнить их пароли, поэтому я хочу иметь один главный ключ, который будет дешифровать все данные.Шифрование Python с помощью главного ключа

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

Это разумный способ сделать это, или я делаю это сложнее, чем мне нужно?

Я буду делать это на Python. Если посмотреть на другие сообщения, кажется, что Pycrypto - это библиотека, на которую я должен смотреть. Это правильно?

Благодаря

+0

Эти вопросы лучше задавать на нашем [веб-сайте безопасности] (http://security.stackexchange.com/). –

ответ

0

Я думаю, что этот метод может привести к сложной конструкции, которая будет более осложнить масштабировать и поддерживать.

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

0

Вы никогда не должны шифровать пароль, если это не требуется строго протоколом.

Что вы могли бы сделать вместо:

  1. создать случайный симметричный ключ для каждого поля
  2. шифровать, что ключ с помощью открытого ключа мастер (для которого закрытый ключ мастер в целости и сохранности, например, on a stick)
  3. шифровать тот же ключ с симметричным ключом пользователя извлекается из выполнения PBKDF2 над паролем
  4. шифровать данные с помощью симметричного ключа
  5. мАГАЗИНУ symmetr IC ключ «обернут» с помощью открытого ключа мастер и ключа пользователя, соли, необходимой для функции PBKDF2 (с префиксом какой-то индикатор версии протокола, если это возможно) и шифротекста вместе

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

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