Как хранить ключи шифрования пользовательских данных с обработкой на сервере?

Здравствуйте. Предположим, есть база данных, в которой хранятся пользовательские данные (логины и пароли к сторонним ресурсам, на которых нет API). По понятным причинам хочется эти доступы уберечь, но при этом они будут использоваться сервером для сбора данных с этих ресурсов.
Планирую зашифровать эти данные в базе ключом, уникальным для каждого пользователя. Встает вопрос, где хранить ключи шифрования. Если на сервере, то есть два варианта:
  • в отдельной БД, но здесь надо думать, как обезопасить уже эту базу.
  • в хранилище ключей на сервере.

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

Проблема еще в том, что я первый раз решаю такую задачу и сомневаюсь в каждом шаге. Подскажите, пожалуйста, как?
  • Вопрос задан
  • 2781 просмотр
Пригласить эксперта
Ответы на вопрос 1
В Вашей модели угроз 2 очевидных высоковероятных риска :

1) получение административных привилегий на сервере (от этого не спасет никакое шифрование, поскольку Ваш сервер вынужден посылать пароль на опрашиваемый сервер в открытом виде, а, следовательно, злоумышленник "повисев" день-неделю-месяц всё равно перехватит все пароли в открытом виде);

2) кража БД и/или кода без получения административных привилегий - тут уж решайте сами - либо Вы шифруете данные на ключевой информации клиента, либо например, на аппаратных токенах (но тогда при рестарте сервиса извольте каждый раз вводить ПИН вручную - так делают на серьезных HSM-модулях)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы