@smlwmy

Есть ли смысл хранить ключ шифрования в базе?

Нужно хранить данные в БД в зашифрованном виде (не пароли). Шифрую с помощью node-rsa. Дабы в случае взлома бд, данные были не в сухом виде. Что бы расшифровать данные, в другом контроллере, нужен тот же ключ, что бы сгенерирован в момент шифрования. Единственный вариант, сохранять его в базу. Правильно ли я понимаю, что в случае взлома БД, злоумышленник возьмет этот ключ и без труда расшифрует данные? Может есть другой подход к данному вопросу?
  • Вопрос задан
  • 280 просмотров
Решения вопроса 1
DevMan
@DevMan
хранить в базе смысла не имеет - вы же уходя из дома вряд ли вешаете ключ рядом с замком.

хранить можно в конфиге, переменных окружения, отдельном хранилище.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
2ord
@2ord
Хранить ключ лучше в переменных окружения пользователя, под которым работает веб-сервер.
Ответ написан
Комментировать
asilonos
@asilonos
Программист
> Правильно ли я понимаю, что в случае взлома БД, злоумышленник возьмет этот
> ключ и без труда расшифрует данные?
Да .

Это вполне оправданно - но надо изменить протокол шифрования , например ввести еще и СОЛЬ для ключа (Ключ = КлючБД + СОЛЬ).
В таком случае у тебя КлючБД будет храниться в базе, но чтобы его использовать Нужна будет еще и Соль которая храниться в Конфиге. Ключи могут быть даже разные (на каждую таблицу) но СОЛЬ одна.
При потере базы - никто не сможет восстановить Ключ. При потере Конфига - там только СОЛЬ.

Это на порядок увеличивает Уровень Сложности Атаки.
Конечно защититься от Админов-Инсайдеров все равно не получиться. Но по крайней мере, Ты как Архитектор не проявиш Халатность :)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы