Когда мне следует зашифровать свой файл конфигурации?

У меня есть приложение C #, которое поставляется с файлом app.config. Приложение создается на сервере сборки и развертывается для нескольких пользователей.
Я бы хотел зашифровать app.config, но не знаю, когда это сделать: если я сделаю это сразу после сборки, выиграет Разве шифрование не зависит от учетных данных сервера сборки? Как приложение может расшифровать на других машинах? Если я сделаю шифрование на машине пользователя, не останется ли время, когда app.config не будет защищен?

Спасибо

Изменить:
Я рассматривал возможность использования DPAPI. Он использует учетные данные пользователя для шифрования и дешифрования. Вот почему я думаю, что у меня могут возникнуть проблемы с доставкой зашифрованного файла пользователям.


person Noich    schedule 08.07.2012    source источник
comment
Вам не следует не беспокоиться о шифровании файла, когда вы также доставляете средства для его расшифровки тем же пользователям. звучит так, как будто вам нужно где-то здесь реализовать службу, чтобы защитить код от злых рук.   -  person Andrew Barber    schedule 08.07.2012
comment
Важная информация, которая требует шифрования, не должна попадать в файл конфигурации.   -  person GETah    schedule 08.07.2012
comment
Но разве не должна туда идти строка подключения?   -  person Noich    schedule 08.07.2012
comment
Ваша строка подключения не должна содержать пароль, если вы можете использовать встроенную безопасность, в этом случае я не вижу смысла в ее шифровании, потому что все, что она содержит, - это сервер и имя базы данных. Если он действительно содержит пароль, имеет смысл его зашифровать.   -  person Akos Lukacs    schedule 08.07.2012
comment
Взгляните на этот ответ. Это возможно сделать с помощью шифрования публично-приватного ключа RSA.   -  person oleksii    schedule 08.07.2012
comment
@Noich, если вы помещаете конфиденциальную информацию в файл конфигурации, вам не следует не доставлять этот файл ненадежным пользователям. Зашифрованные или нет ... они будут иметь доступ к вашим учетным данным. Вам необходимо использовать службу, которая обрабатывает вход в систему отдельно, или использовать собственные учетные данные для входа в систему.   -  person Andrew Barber    schedule 08.07.2012
comment
@oleksii это решение просто отодвигает шифрование на один уровень назад. Как только они найдут ключ, игра окончена. На мой взгляд, этого делать не стоит. (неискушенные пользователи не будут тыкать в app.config; опытные могут проследить за кроличьей норой, куда бы она ни пошла.)   -  person Andrew Barber    schedule 08.07.2012
comment
Я должен отметить, что под службой вы не должны неправильно понимать это, например, служба Windows. @AndrewBarber имеет в виду удаленную службу (то есть онлайн), недоступную для пользователя неавторизованными способами.   -  person user541686    schedule 08.07.2012
comment
@ Mehrdad о, да; отличная информация для добавления!   -  person Andrew Barber    schedule 08.07.2012


Ответы (1)


Я только что прочитал дополнение к вашему сообщению и не думаю, что вам вообще нужно шифрование ...

Вы говорите, что намеревались использовать систему, которая будет шифровать / дешифровать на основе учетных данных пользователя. Это означает две вещи:

  1. Вы не шифруете во время сборки; вы не можете использовать такую ​​систему во время сборки по причинам, указанным вами ранее.
  2. Похоже, вы согласны с тем, что пользователи имеют доступ к данным. В этом случае вам вообще не следует использовать конфигурацию, но вы должны запрашивать у них данные для входа (возможно, безопасно сохранять их позже для повторного использования) или просто использовать их логины Windows / домена.

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

person Andrew Barber    schedule 08.07.2012
comment
Из того, что я читал, шифрование строки подключения - обычная практика, не так ли? Я также планирую хранить там несколько строк подключения, я не хочу, чтобы пользователи их редактировали. - person Noich; 08.07.2012
comment
часто это бессмысленная практика. не делайте этого, если вы пытаетесь скрыть информацию от пользователей. потому что он скрывает это только от тех, кто все равно не хочет смотреть. что касается предотвращения их редактирования ... ммм ... шифрование ничего не делает для этой цели. Вообще ничего. Тем не менее, правильное разрешение файла. (обычные пользователи не должны не иметь права записи в каталог установки программы. - person Andrew Barber; 08.07.2012