2009-02-19 3 views
0

У меня есть служба Windows, которая читается из app.config.Шифрование файлов конфигурации для развертывания

Я хочу, чтобы некоторые настройки были зашифрованы, однако я не хочу использовать классы ProtectedConfigurationProvider, предоставляемые в .NET, потому что они шифруют файлы на основе машины, на которой они работают, используя DPAPI.

Я хочу, чтобы наш администратор разворачивал конфигурационный файл, уже зашифрованный на многие машины, и каждый из них расшифровывал их по мере необходимости.

Я не хочу жестко указывать пароль в сборке, так что я не уверен, как я могу это сделать.

+5

Кто такой Винс и почему он задал этот самый вопрос? http://stackoverflow.com/questions/559995/encrypting-config-files-for-deployment-net – spender

ответ

8

свести задачу к простейшей форме:

  • у вас есть программа
  • , который будет дан зашифрованный файл
  • , и вы хотите, чтобы расшифровать файл
  • без жесткого кодирования ключ

Очевидным решением является запрос ключа, если необходимо, доверенной третьей стороне

+1

доверенная третья часть не обязательно является пользователем. Возможно, сервер аутентификации сорта –

2

Одним из возможных способов сделать это будет включение ключа дешифрования в начале файла, а ключ был переработан каким-то образом, который вы можете определить из ключа. Одна из возможностей заключалась бы в том, чтобы выбрать, например, шестнадцать разных вещей, 0, скажем, повернуть первые два байта до конца; 1 - вращение последних двух байтов спереди; 2 - добавить 1 к каждому байту; и т. д. для 14 дополнительных функций. Теперь добавьте это значение перед ключом как «флаг обработки».

Первый байт ключа затем будет таблицей ветвей в одну из 16 различных подпрограмм, чтобы сказать, что делать с ключом. Обратите внимание, что флаг перепрограммирования не должен быть первым байтом, он может быть любым байтом в ключе, если вы помните, что вы удаляете этот байт при обработке ключа.

Затем вы обрабатываете ключ в соответствии с любым алгоритмом дешифрования, который вы использовали бы.

Теперь, учитывая этот флаг перепрограммирования, особенно если весь ключ был в шестнадцатеричном формате, потребовалось бы, чтобы кто-то следовал логике, чтобы определить, какая из 16 различных функций выполняет ваш код, а затем выяснить способ дешифрования. Это не остановит всех, но это, вероятно, сделает довольно хорошую работу, отгоняя всех, кроме самых решительных.

+1

по-прежнему технически жестко кодирует ключ, просто запутанный в конфигурационном файле, а не существующий в коде - +1 для вдумчивого ответа, хотя! –

Смежные вопросы