Нужно хранить данные в БД в зашифрованном виде (не пароли). Шифрую с помощью node-rsa. Дабы в случае взлома бд, данные были не в сухом виде. Что бы расшифровать данные, в другом контроллере, нужен тот же ключ, что бы сгенерирован в момент шифрования. Единственный вариант, сохранять его в базу. Правильно ли я понимаю, что в случае взлома БД, злоумышленник возьмет этот ключ и без труда расшифрует данные? Может есть другой подход к данному вопросу?
Таких документов будет много. И возникает проблема хранения множества ключей для каждого документа. Пришла в голову мысль: Сгенерировать один единственный ключ, и использовать его через переменную окружения. Таким образом, отпадает проблема хранения множества ключей. Но встает вопрос: Безопасно ли это? Шифровать все одним ключом?
> Правильно ли я понимаю, что в случае взлома БД, злоумышленник возьмет этот
> ключ и без труда расшифрует данные?
Да .
Это вполне оправданно - но надо изменить протокол шифрования , например ввести еще и СОЛЬ для ключа (Ключ = КлючБД + СОЛЬ).
В таком случае у тебя КлючБД будет храниться в базе, но чтобы его использовать Нужна будет еще и Соль которая храниться в Конфиге. Ключи могут быть даже разные (на каждую таблицу) но СОЛЬ одна.
При потере базы - никто не сможет восстановить Ключ. При потере Конфига - там только СОЛЬ.
Это на порядок увеличивает Уровень Сложности Атаки.
Конечно защититься от Админов-Инсайдеров все равно не получиться. Но по крайней мере, Ты как Архитектор не проявиш Халатность :)