Какое лучшее место для сохранение ключа кодирования?
Доброе время суток,
В проекте (.NET) есть ключ для кодирования/раскодирования данных в виде строки. Сейчас он просто записан в коде.
Такой вариант не очень хорош тем, что если код попадет в руки третьей стороны, то данные при обмене могут быть перехвачены и расшифрованы.
Как вариант хранить данные в базе данных. Какие плюсы и минусы такого хранения?
Какие еще варианты хранения важной для безопасности информации вы знаете?
Да, только БД не вариант. Но как часть комплексного решения - может быть. Можно хранить части ключа по разным местам (SQL, файл, регистр, RSA key container). Если хочется еще больше усилить безопастность то делать этот ключ до определенной даты, а потом генерировать новый.
Лучший способ сохранить ключ шифрования - HSM (Hardware Security Module).
Причем генерация ключа тоже должна происходить внутри HSM.
Суть HSM в неизвлекаемости ключа. Все операции по расшифровке с использованием этого ключа будут производиться только внутри HSM. Таким образом ключ шифрования не будет доступен даже в оперативной памяти сервера на котором вертится БД.
Если интересуют подробности - обращайтесь.
Для этого нужно специяльное железо? То есть чем больше, клиентов которым нужен этот клю для чтения зашифрованного сообщения, тем больше надо устройств?
HSM - это и есть специальное железо. Для одной базы вам нужен 1 HSM. Пользователи напрямую с HSM не работают. Это будет делать ваш софт, обрабатывающий запросы к базе. Промышленные HSM - недешевое удовольствие. Крупнейшие производители: Thales, Safenet, Utimaco, Bull.
Смарт-карта - это по сути тоже HSM в простейшем виде.