У кого-нибудь есть какие-либо предложения относительно того, как я могу сделать свою модель более безопасной?
Вы правы в том, что любая служба, работающая в Сетевые службы , которая может быть взломана, потенциально может получить доступ к закрытому ключу.Когда-то в 2005 году или около того, Microsoft осознала это и начала создавать уникальные учетные записи служб, чтобы ограничить ущерб, нанесенный общей скомпрометированной службе, такой как Network Services .Например, сервер SQL был перенесен в свою собственную учетную запись службы, IIRC.
Основная проблема - это проблема проектирования безопасности в модели Microsoft, и с ней мало что можно сделать.Microsoft поняла это и перешла на немного другую модель с CryptoNG, IIRC.В CryptoNG операции, использующие закрытый ключ, выполняются вне процесса, а IPC используется для передачи запросов и результатов между службой и процессом, который выполняет ключевые операции.В основном это побочный шаг к проблеме, которая вас волнует.
Даже в новой модели вам все равно понадобится программное обеспечение, осведомленное о модели.Вы должны быть в порядке с, скажем, IIS 7, но Apache может вызвать проблемы, потому что его модель распознает только ACL файловой системы.
Удаление ключевых операций вне процесса становится стандартной практикой.Например, GnuPG делает то же самое.GnuPG использует библиотеку под названием libassuan , которая выполняет маршалинг запросов и результатов между потребителями и производителями.
Я бы не слишком беспокоился о проблемах эффективности между клиентом и сервером вмодель процесса.Windows Pipes, Unix Pipes и Unix Domain Sockets быстро растут.Кроме того, это очень похоже на Dr.Джон Бентли сказал: Если это не должно быть правильно, я могу сделать это так быстро, как вам хотелось бы.