Лучшая защита - использовать аппаратные средства для защиты ключа - который будет выполнять шифрование, но не будет выдавать сам ключ (и иногда защищен от таких атак, как зондирование проводов, подвергание памяти воздействию низких температур / радиации / других новых вещей) , IBM делает кое-что подходящее (Google IBM-4764), но это не дешево.
рабатываю приложение для интрасети (C #), которое использует некоторые данные (локальные для веб-сервера), которые мы хотели бы сохранить в секрете. Эти данные зашифрованы (AES) с использованием устаревшего хранилища данных. Мы не можем полностью предотвратить физический доступ к машине.
Понятно, что здесь никогда не будет идеальной безопасности. Тем не менее, мы хотим сделать все возможное для получения несанкционированного доступа к данным.
Вопрос в том, как лучше хранить ключ. Шифрование на основе определенного идентификатора компьютера является опцией, но эта информация будет легко доступна любому, кто запускает диагностический инструмент на компьютере.
Кодирование в приложении является опцией (это одноразовое приложение). Тем не менее, сборки .NET довольно легко декомпилировать. Итак, было бы лучше запутать его, использовать средство запуска шифрования, скомпилировать его?
Или есть вариант, который мне не хватает?
Просто для ясности, я знаю, что если кто-то определится, это почти безнадежное дело, но мы стремимся сделать это как можно сложнее в рамках ограничений.