2016-08-21 11 views
0

Я хочу надежно хранить общедоступные и закрытые ключи в базе данных.Безопасное хранение общедоступных/закрытых ключей в базе данных

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

У меня есть два метода в настоящее время.

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

Насколько эти методы достаточны?

Что лучше или они одно и то же?

Есть ли лучшие способы?

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

+1

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

+0

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

+0

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

ответ

1

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

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

+0

Мое предположение о том, почему частные/открытые ключи так часто используются, когда не требуется/не подходит, разработчики не понимают симметричное и асимметричное шифрование, а RSA - это звуковое слово, которое действительно известно, – zaph

+0

Частные и открытые ключи чрезвычайно важны в мой вариант использования и используется даже многими командами, управляемыми паролем, которые я исследовал. –

+0

Шифрование с использованием Symmet также не является достаточным, потому что мы хотим поделиться им с другими пользователями. см. http://security.stackexchange.com/questions/134465/how-to-securely-store-passwords-for-an-online-team-based-password-manager/134492#134492 –