Шифрование файлов конфигурации для развертывания - PullRequest
1 голос
/ 19 февраля 2009

У меня есть служба Windows, которая читает из app.config.

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

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

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

Ответы [ 2 ]

9 голосов
/ 19 февраля 2009

приведите проблему к простейшей форме:

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

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

2 голосов
/ 19 февраля 2009

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

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

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

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

...