Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3      [все]
 Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5943
Доброго времени суток.

Имеется некоторое приложение TargetApp, в конфигурационных настройках которого хранится строка подключения к БД. Физически, настройки подключений к БД вынесены в отдельный файл connections.config. Т.о. общая картина следующая:

TargetApp.exe.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
  <connectionStrings configSource="connections.config"/>
</configuration>


connections.config:
<?xml version="1.0" encoding="utf-8" ?>
<connectionStrings>
  <clear/>
  <add name="crmdev" providerName="System.Data.SqlClient"
       connectionString="тут_некоторая_строка_подключения"/>
</connectionStrings>


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

Написал консольное приложение ConfigTools.exe, задача которого - шифровать/дешифровывать config-файлы того exe, имя которого было передано ему через параметры с одним из ключей: --encrypt, --decrypt.

При помощи ConfigTools.exe выполняю шифрование строк подключения в конфиг-файлах, используемых приложением TargetApp.exe.

Код шифровки/дешифровки достаточно простой:

static void EncryptConfig(string exeConfigName, bool encrypt)
{
	var resMng = new ResourceManager(typeof(Program));
	// Takes the executable file name without the
	// .config extension.

	// Open the configuration file and retrieve 
	// the connectionStrings section.
	var config = ConfigurationManager.
		OpenExeConfiguration(exeConfigName);

	var section = config.GetSection("connectionStrings")
		as ConnectionStringsSection;

	if (section == null)
	{
		Console.WriteLine(
			resMng.GetString("connectionStringsNotFound"));
		resMng.ReleaseAllResources();
		return;
	}

	if (encrypt && !section.SectionInformation.IsProtected)
	{
		// Encrypt the section.
		section.SectionInformation.ProtectSection(
			"DataProtectionConfigurationProvider");
		Console.WriteLine(resMng.GetString("connectionStringsEncrypted"));
		config.Save();
	}
	else if (!encrypt && section.SectionInformation.IsProtected)
	{
		// Remove encryption.
		section.SectionInformation.UnprotectSection();
		Console.WriteLine(resMng.GetString("connectionStringsDecrypted"));
		config.Save();
	}
	else
	{
		Console.WriteLine(resMng.GetString("connectionStringsDoNothing"));
	}
	resMng.ReleaseAllResources();
}


TargetApp.exe успешно извлекает из настроек строки подключения, не зависимо от того зашифрованы они или нет. Т.е. одно приложение шифрует/расшифровывает config-файл, но при этом оба приложения успешно считывают строки подключения (платформа .net framework сама автоматом всё расшифровывает при обращении к соответствующей записи, хранящей строку подключения).

Т.е. с одной стороны вроде всё нормально - открыв в Notepad мой config-фай, юзер увидит зашифрованную строку подключения... Но вот с другой стороны всё же возникает большой вопрос о надёжности такой защиты... Ведь получается, что любой желающий может написать подобный код, запустить его на целевой машине и с лёгкостью расшифровать строки подключения... Может я чего-то упускаю из вида?

Как защитить шифруемую информацию от подобных случаев?

С уважением, Андрей
27 май 19, 16:44    [21895018]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3404
Compositum,

если так рассуждать, то защиты вообще не существует и в целом, так и есть. Можно запустить отладчик на целевой машине и перехватить пароли в незашифрованном виде, рано или поздно они всё равно расшифруются.
данная операция (шифрование\дешифрование) секции конфигурационного файла требует права администратора с повышением, то есть, если пользователь захочет зашифровать или расшифровать файл на компьютере у него не получится.
если злоумышленник скопирует файл, то расшифровать он его уже не сможет.
Ну, а если злоумышленник обладает правами администратора на целевом компьютере, то его уже ничего не остановит, это картблашн на любые действия.
27 май 19, 16:55    [21895038]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Compositum,
Если ты админ то никак или слишком дорого.
Защита не дороже стоимости защищаемых данных (с)
Сколько твои стоят?
Или теория?
Ну и защита это комплексные мероприятия. А не строка Пароль.
27 май 19, 17:33    [21895080]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3404
Еще пароли можно хранить в Credential Manager'е ОС Windows, довольно удобно
27 май 19, 18:13    [21895103]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
BlackEric
Member

Откуда:
Сообщений: 745
Для работы с кредами есть такая штука:
https://www.vaultproject.io/

Шарповая либа к ней: https://github.com/rajanadar/VaultSharp
27 май 19, 18:54    [21895122]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3404
BlackEric
Для работы с кредами есть такая штука:
https://www.vaultproject.io/

Шарповая либа к ней: https://github.com/rajanadar/VaultSharp

очередной велосипед?
            [DllImport("Advapi32.dll", EntryPoint = "CredReadW", CharSet = CharSet.Unicode, SetLastError = true)]
            internal static extern bool CredRead(string target, CredentialType type, int reservedFlag, out IntPtr CredentialPtr);

            [DllImport("Advapi32.dll", EntryPoint = "CredWriteW", CharSet = CharSet.Unicode, SetLastError = true)]
            internal static extern bool CredWrite([In] ref CREDENTIAL userCredential, [In] uint flags);
27 май 19, 19:39    [21895147]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5943
Roman Mejtes
данная операция (шифрование\дешифрование) секции конфигурационного файла требует права администратора с повышением, то есть, если пользователь захочет зашифровать или расшифровать файл на компьютере у него не получится.

Увы... Проверил с правами рядового пользователя - всё успешно расшифровалось, к сожалению безо всяких админских прав.
Roman Mejtes
Сколько твои стоят?
Или теория?

Не теория. Стоят прилично. Данные не мои, а компании. Предлагаю флуд не разводить.
27 май 19, 21:02    [21895183]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Compositum
Предлагаю флуд не разводить.
это не флуд. Это в ВУЗЕ преподают.

Compositum
Проверил с правами рядового пользователя
пользователь Иванов расшифровал свой пароль или чужой?
27 май 19, 21:53    [21895196]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5943
На тот случай, если будет интересно проверить - во вложении архив, в котором инструкция и два подопытных кролика: консолька шифровки\расшифровки строки подключения в конфиг-файле, и другая консолька, над конфиг-файлом которой выполняются опыты (согласно инструкции, обозначенной в readme.txt).

К сожалению, шифровка\расшифровка без проблем выполняется из под обычного юзера. ☹

К сообщению приложен файл (example.zip - 11Kb) cкачать
27 май 19, 21:53    [21895197]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Compositum
если будет интересно
никому не интересно. В конфиге юзаеря не хранятсе все пароли.
27 май 19, 21:55    [21895198]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5943
Petro123
пользователь Иванов расшифровал свой пароль или чужой?

Оба варианта успешно отработали.
27 май 19, 21:59    [21895203]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Compositum
Petro123
пользователь Иванов расшифровал свой пароль или чужой?

Оба варианта успешно отработали.
откуда в конфиге чужие пароли?
27 май 19, 22:03    [21895204]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5943
Petro123
откуда в конфиге чужие пароли?

Не "чужие", а специальные учётные записи, от имени которых должны выполняться определённые операции на различных серверах.
27 май 19, 22:06    [21895208]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Compositum
Petro123
откуда в конфиге чужие пароли?

Не "чужие", а специальные учётные записи, от имени которых должны выполняться определённые операции на различных серверах.
тебе решать.
Нужна безопасность? Раздели конфиги. Не нужна? Не дели.
Ваш КЭП.
27 май 19, 22:09    [21895212]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
fkthat
Member

Откуда:
Сообщений: 1163
Я что-то не пойму цель - спрятать пароль пользователя от самого этого пользователя? :))
27 май 19, 23:50    [21895267]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1976
>Roman Mejtes, сегодня, 16:55 [21895038]
>...Ну, а если злоумышленник обладает правами администратора на целевом компьютере…
< Поместил файл в шифроконтейнер WinRAR и записал на целевой компьютер, злоумышленник обладает правами администратора на нем и ...
27 май 19, 23:57    [21895270]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1976
>fkthat, сегодня, 23:50 [21895267]
>Я что-то не пойму цель - спрятать пароль пользователя от самого этого пользователя? :))
<Можно попытаться спрятать строку соединения и от самого пользователя
28 май 19, 00:01    [21895272]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
fkthat
Member

Откуда:
Сообщений: 1163
ВМоисеев
>fkthat, сегодня, 23:50 [21895267]
>Я что-то не пойму цель - спрятать пароль пользователя от самого этого пользователя? :))
<Можно попытаться спрятать строку соединения и от самого пользователя


Зачем? Пользователь либо может коннектиться к БД со своего хоста, либо не может. И, если может, то никакими ухищрениями ты на 100% ему не запретишь делать это как угодно.
28 май 19, 00:15    [21895274]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3404
User расшифровывает LocalMachine секции конфигов? что то не верится
28 май 19, 00:40    [21895280]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1976
>fkthat, сегодня, 00:15 [21895274]
>Зачем? Пользователь либо может коннектиться к БД со своего хоста, либо не может…
<Вообще говоря, коннектится приложение, пользователю строка соединения по барабану
28 май 19, 01:42    [21895290]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
fkthat
Member

Откуда:
Сообщений: 1163
ВМоисеев
Вообще говоря, коннектится приложение, пользователю строка соединения по барабану

Да, но оно коннектится с логином и паролем того пользователя, который его использует (потому что иначе это вообще какой-то треш), поэтому какой смысл там прятать что-то - прятать от пользователя его же собственные логин и пароль?
28 май 19, 02:06    [21895291]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
stenford
Member

Откуда: урал
Сообщений: 2756
для начала пароли в строке подключения вообще нельзя держать (к тому-же там скорее всего у тебя пароль админа лежит), должна использоваться виндовая аутентификация. Во-вторых, велосипеды по шифрованию конфигов писать не надо, они уже есть, например aspnet_regiis, все что нужно сделать - скопировать на пользовательские машины ключ, пользователький конкекст конечно-же должен иметь доступ к нему иначе как он его расшифрует
28 май 19, 02:06    [21895292]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
fkthat
Member

Откуда:
Сообщений: 1163
Compositum
Не "чужие", а специальные учётные записи, от имени которых должны выполняться определённые операции на различных серверах.

Треш угар и содомия. Выходит, что к бесценным данным компании куча пользователей имеет доступ с использованием одного и того же логина и пароля. У тебя в консерватории защиты данных изначально не так, а твои ухишрения с шифрованием это как в том самом борделе кровати переставлять.
28 май 19, 02:24    [21895293]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
fkthat
Member

Откуда:
Сообщений: 1163
stenford,

В двузвенке (а речь, как я понял, идет именно о двузвенке), ни логин ни пароль не следует держать нигде, в принципе. У каждого пользователя должен быть свой персональный логин и пароль, который он должен помнить и вводить для коннекта к БД. Ну, или, как правильно сказали, и вообще следовало было бы сделать - виндовая аутентификация.
28 май 19, 02:30    [21895294]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5011
Roman Mejtes
данная операция (шифрование\дешифрование) секции конфигурационного файла требует права администратора с повышением, то есть, если пользователь захочет зашифровать или расшифровать файл на компьютере у него не получится

С чего бы это? DataProtectionConfigurationProvider - это DpapiProtectedConfigurationProvider, т.е. используется DPAPI, причем уровня хоста, а не приложения. Им может пользоваться кто угодно.

Compositum,
При использовании DataProtectionConfigurationProvider шифрование можно перенести с уровня хоста на уровень приложения - см. здесь: https://stackoverflow.com/questions/21336455/protect-config-file-with-user-level-dpapi-winforms
Но я всё же присоединяюсь к предыдущим ораторам. Неправильно это. Раз используется MSSQL, то вин-аутентификация, и права на сервере строго в рамках выполняемой задачи (а то некоторые админы как писать grant-скрипты не знают, тыкать галки на объектах в SSMS им долго, поэтому сделают на сервере логин, дадут ему sa - и можно пить чай, такого супергероя даже на соответствующих пользователей в базе мапить не нужно).
28 май 19, 06:35    [21895316]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1976
>fkthat, сегодня, 02:24 [21895293]
>Треш угар и содомия. Выходит, что к бесценным данным компании куча пользователей имеет доступ с использованием одного и того же логина и пароля.
<Ну почему же, к бесценным данным компании, в одной базе данных, имеет доступ только одна куча приложений.
Аутентификация для доступа к приложениям,- подчеркиваю - к приложениям, а не к базам данных,- по логин и пароль с ограничениями по правам.
Для аутентификации служит общая строка соединения, что находится в криптоконтейнере с файлом настройки, но доступ к базе данных аутентификации, а не базе с бесценным данным компании, ограничивается только одной хранимой процедурой аутентификации.
Если аутентификация ок, то строку соединения к базе с бесценными данных с получит приложение, заметьте - приложение, а не пользователь. Пользователь имеет права в рамках приложения.
При таком подходе win-аутентификация мало что даёт.
28 май 19, 13:00    [21895622]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1976
>fkthat, сегодня, 02:24 [21895293]
>Треш угар и содомия. Выходит, что к бесценным данным компании куча пользователей имеет доступ с использованием одного и того же логина и пароля.
<Ну почему же, к бесценным данным компании, в одной базе данных, имеет доступ только одна куча приложений.
Аутентификация для доступа к приложениям,- подчеркиваю - к приложениям, а не к базам данных,- по логин и пароль с ограничениями по правам.
Для аутентификации служит общая строка соединения, что находится в криптоконтейнере с файлом настройки, но доступ к базе данных аутентификации, а не базе с бесценным данным компании, ограничивается только одной хранимой процедурой аутентификации.
Если аутентификация ок, то строку соединения к базе с бесценными данных с получит приложение, заметьте - приложение, а не пользователь. Пользователь имеет права в рамках приложения.
При таком подходе win-аутентификация мало что даёт.
28 май 19, 13:02    [21895624]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
fkthat
Member

Откуда:
Сообщений: 1163
ВМоисеев,

Блин, уже утомляет объяснять. То что ты делаешь это называется "security by obscurity". C тем же успехом можно просто захардкодить креденшиалы в приложение, рассчитывая на то, что у пользователя не хватит масла в голове вытащить их оттуда декомпилятором. Если у приложения, которое я запускаю, есть права на то, чтобы прочитать откуда-то и дешифровать логин/пароль, то это автоматически означает, что такие же права есть и у меня без этого приложения и если я захочу заполучить этот логин и пароль в чистом виде, то это будет лишь вопрос усилий и времени.
28 май 19, 13:37    [21895664]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
ВМоисеев,
Я понимаю что ты написал целый свой криптоконтейнер.
Но видишь авто пропал?
Значит тоже смекнул, что не нужно все это.
Удачи!
28 май 19, 13:58    [21895701]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1976
>fkthat, сегодня, 13:37 [21895664]
>Блин, уже утомляет объяснять…
<В банке часто применяют вариант доступ к хранилищу ценностей с двумя ключами.
Моделируем эту ситуацию. Приложение требует ввода двух паролей (пинкодов) - пользователя и секадмина, например,
объединяет их и получает доступ к криптоконтейнеру с файлом настройки.
Приложение не содержит в коде паролей. Поэтому декомпилятор тебе не поможет.
Другое дело - можешь сделать дамп работающего приложения, но в серьёзных конторах, кто тебе даст это сделать.
В этом вопросе надо не просто объяснять - надо строить модель нарушителя.
28 май 19, 14:50    [21895793]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5943
Сон Веры Павловны
При использовании DataProtectionConfigurationProvider шифрование можно перенести с уровня хоста на уровень приложения - см. здесь: https://stackoverflow.com/questions/21336455/protect-config-file-with-user-level-dpapi-winforms
Но я всё же присоединяюсь к предыдущим ораторам. Неправильно это. Раз используется MSSQL, то вин-аутентификация, и права на сервере строго в рамках выполняемой задачи (а то некоторые админы как писать grant-скрипты не знают, тыкать галки на объектах в SSMS им долго, поэтому сделают на сервере логин, дадут ему sa - и можно пить чай, такого супергероя даже на соответствующих пользователей в базе мапить не нужно).

Насколько я понял из общения с нашими IT-шниками, виндовая аутентификация у нас не для всего работает. У нас множество CRM, которые раскиданы по разным континентам. Для их использования на компах разработчиков запускаем SSL VPN Client. Для подключения к CRM приходится в строке подключения явным образом указывать логин и пароль. К сожалению, я не силён в вопросах, касающихся сетей. Если бы нам всегда подходила виндовая аутентификация, то использовали бы её, конечно.
28 май 19, 14:58    [21895811]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Compositum,
Вопрос был не про виндовую, а про то что Вася пупкин имеет конфиг генерального директора.
То есть все вместе.
Зачем?
28 май 19, 15:08    [21895831]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
fkthat
Member

Откуда:
Сообщений: 1163
ВМоисеев
Другое дело - можешь сделать дамп работающего приложения, но в серьёзных конторах, кто тебе даст это сделать.

В совсем серьезной конторе так можно вообще раздать всем логины и пароли от всего и просто объявить, что тому, кто не туда куда надо залезет СБшники переломают ноги на заднем дворе. Речь-то идет о защите информации с т.з. ИТ, а не о том, чтобы ходил по офису надзиратель и за каждым следил - куда там он логинится.
29 май 19, 08:26    [21896263]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20437
fkthat
ВМоисеев
Другое дело - можешь сделать дамп работающего приложения, но в серьёзных конторах, кто тебе даст это сделать.

В совсем серьезной конторе так можно вообще раздать всем логины и пароли от всего и просто объявить, что тому, кто не туда куда надо залезет СБшники переломают ноги на заднем дворе. Речь-то идет о защите информации с т.з. ИТ, а не о том, чтобы ходил по офису надзиратель и за каждым следил - куда там он логинится.
Нормальный обычный пользователь, он на то и обычный, чтобы работой заниматься, а не лезть куда попало. А злоумышленник - он на то и злоумышленник, угрозы СБ его не остановят
29 май 19, 08:47    [21896275]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
fkthat
Member

Откуда:
Сообщений: 1163
Shocker.Pro,

Ну, так тогда можно и двери, из дома уходя, не запирать. Нормальный обычный чел, он на то и обычный, что не полезет, а настоящий злодей он на то и злодей, что его запертая дверь не остановит :)
29 май 19, 09:03    [21896290]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5943
Petro123
Вопрос был не про виндовую, а про то что Вася пупкин имеет конфиг генерального директора.

Конфиг не имеет отношения к какому-либо конкретному юзеру (генеральному директору или кому-то ещё). Конфиг относится к приложению в целом. В конфигурационном файле указано, какой логин и пароль следует использовать приложению для подключения к тому или иному URL. Это те логин и пароль, которые на удалённом ресурсе (указываемому через URL) созданы специально для данного приложения. Не важно, кто запустит приложение (Вася или Петя) - логин и пароль разрешается использовать один и тот же. Это приложение для разработчиков, а не для пользователей, поэтому одного логина/пароля нам вполне достаточно.

Поскольку подключаться приходится к разным URL, т.е. в конфиг-файле имеется несколько записей, указывающих URL, логин и пароль.

Если для подключения к удалённому ресурсу приходится явным образом использовать логин и пароль, то значит другого варианта сделать это не нашли. В виду этого и возникает необходимость шифровать соответствующую секцию конфигурационного файла.
29 май 19, 09:07    [21896295]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20437
fkthat
Shocker.Pro,

Ну, так тогда можно и двери, из дома уходя, не запирать. Нормальный обычный чел, он на то и обычный, что не полезет, а настоящий злодей он на то и злодей, что его запертая дверь не остановит :)
Замок - это физическое препятствие. А угрозы СБ - это как табличка на открытой двери "не входить - это незаконно".
29 май 19, 09:30    [21896328]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
fkthat
Member

Откуда:
Сообщений: 1163
Compositum
Если для подключения к удалённому ресурсу приходится явным образом использовать логин и пароль, то значит другого варианта сделать это не нашли.

Ну тебе уже сто раз написали про вариант для такого варианта - каждому пользователю свой логин/пароль и настройка прав в БД, - все остальное это детские костыли.
29 май 19, 09:36    [21896336]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
fkthat
Member

Откуда:
Сообщений: 1163
Shocker.Pro
А угрозы СБ - это как табличка на открытой двери "не входить - это незаконно".

Ну, можно ведь, для примера, просто нескольким случайно выбраным работникам показательно ноги переломать, тогда угроза будет восприниматься вполне физически
29 май 19, 09:38    [21896339]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5943
fkthat
Ну тебе уже сто раз написали про вариант для такого варианта - каждому пользователю свой логин/пароль и настройка прав в БД, - все остальное это детские костыли.

Программка и её исходники хранятся в составе git-репозитория, совместно используемого разработчиками, так что вариант с логином/паролем для каждого разработчика - в данном случае не подходит. Предлагаю писать либо по теме топика, либо ничего. Вопрос был о проблеме, связанной с возможностью расшифровки.
29 май 19, 09:42    [21896342]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Compositum
Конфиг не имеет отношения к какому-либо конкретному юзеру (генеральному директору или кому-то ещё). Конфиг относится к приложению в целом.
отпад.
Это решил?
А положение формы на экране?
А путь к базе данных?
...
Даже тотал коммандер при установке спрашивает: "вам один ini для всех или индивидуальный?
Что относится к приложению в целом у меня в коде зашито))
29 май 19, 09:44    [21896343]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Compositum
Предлагаю писать либо по теме топика, либо ничего.
изучи тотал коммандер, потом приходи
29 май 19, 09:46    [21896345]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Compositum
Программка и её исходники хранятся в составе git-репозитория, совместно используемого разработчиками, так что вариант с логином/паролем для каждого разработчика
для юзверя в продакшене, а не при разработке!
Ты о чем вообще?
29 май 19, 09:47    [21896348]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5943
Печально, во что превратился форум... Если модераторы так и не будут блокировать троллей, то в конце-концов форум станет бесполезен. имхо.
29 май 19, 09:56    [21896358]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
fkthat
Member

Откуда:
Сообщений: 1163
Compositum
Программка и её исходники хранятся в составе git-репозитория, совместно используемого разработчиками, так что вариант с логином/паролем для каждого разработчика - в данном случае не подходит. Предлагаю писать либо по теме топика, либо ничего. Вопрос был о проблеме, связанной с возможностью расшифровки.


ОМГ. При чем тут вообще какие-то логины разработчиков и ГИТ? Вопрос был (как я его понял) такой - "Я хацу, чтобы пользовательская программа могла расшифровать логин/пароль, а сам пользователь при этом не мог". И тебе тут уже четвертую страницу объясняют, что такое невозможно в принципе - если логин/пароль может расшифровать пользовательское приложение, то в конечном итоге его может расшифровать и сам пользователь. Если у меня есть ключ от сейфа где лежат ключи от кабинете директора, то значит у меня есть и ключи от кабинета директора.
29 май 19, 09:58    [21896362]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Compositum,
Ты вместо
access пошире посмотри на защиту в мире IT.
Потом на защиту Оси своей. Наверно не тотал коммандер, а нортон до сих пор?
Потом посмотри в каком конфиге пароль к sql.ru.
Удачи!
29 май 19, 09:59    [21896364]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1976
>Compositum, сегодня, 09:42 [21896342]
>Программка и её исходники хранятся в составе git-репозитория…
<Поступил так:
1. Создал отдельную базу (можно и отдельный сервер) данных с параметрами приложений и пользователей, включая и связь приложение-пользователь (у меня не все пользователи имеют доступ ко всем приложениям).
2. Сделал открытый доступ только к одной хранимой процедуре - аутентификации. Строку соединения для данного доступа положил в файл настройки (у меня в криптоконтейнер, но это не суть).
3. Ввожу логин и пароль доступа к приложению и обращаюсь к ХП аутентификации (строка соединения есть).
4. Если ок, получаю параметры работы с приложениями (получаю крипто ключ для расшифровки криптоконтейнера с параметрами работы с приложением(-ями))
29 май 19, 11:05    [21896437]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
stenford
Member

Откуда: урал
Сообщений: 2756
Compositum
Конфиг не имеет отношения к какому-либо конкретному юзеру (генеральному директору или кому-то ещё). Конфиг относится к приложению в целом. В конфигурационном файле указано, какой логин и пароль следует использовать приложению для подключения к тому или иному URL. Это те логин и пароль, которые на удалённом ресурсе (указываемому через URL) созданы специально для данного приложения. Не важно, кто запустит приложение (Вася или Петя) - логин и пароль разрешается использовать один и тот же. Это приложение для разработчиков, а не для пользователей, поэтому одного логина/пароля нам вполне достаточно.

Поскольку подключаться приходится к разным URL, т.е. в конфиг-файле имеется несколько записей, указывающих URL, логин и пароль.

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

секция конфигурационного файла шифруется не для того, что-бы спрятать пароль от текущего пользователя, а что-бы другие не смогли его прочитать. Текущий пользователь по определению может расшифровать пароль т.к. его контекст обязан это уметь делать иначе ничего не будет работать.
И как уже было сказано, это плохой подход именно по указанной тобой причине - пользователь может расшифровать пароль и слить его куда-нибудь, а т.к. это общий пароль для всех, то целая система оказывается скомпрометированной. Что-бы этого избжать - необходимо логинить самих пользователей, либо через виндовую аутентификацию, либо через облака либо еще как это вопрос к архитектору системы. В текущем виде система не является безопасной
29 май 19, 11:12    [21896457]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1976
>fkthat, сегодня, 09:58
>... Если у меня есть ключ от сейфа…
<Да нет у тебя ключа, понимаешь - НЕТ.
Приложение, не ты, может попросить безопасника или программу аутентификации дать ей, НЕ ТЕБЕ, ключ.
29 май 19, 11:15    [21896462]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
ВМоисеев,
Сейчас проще делают. У каждого в Оси своя песочница. Храни там хоть имя любовницы.
29 май 19, 11:23    [21896479]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
fkthat
Member

Откуда:
Сообщений: 1163
ВМоисеев
Приложение, не ты, может попросить безопасника или программу аутентификации дать ей, НЕ ТЕБЕ, ключ.

То что ты описываешь, это классический "Open ID" и его более современные потомки (OAuth2, OpenID Connect и т.п.). А в нашем случае этим даже близко не пахнет.
29 май 19, 11:32    [21896497]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5943
stenford
секция конфигурационного файла шифруется не для того, что-бы спрятать пароль от текущего пользователя, а что-бы другие не смогли его прочитать.

Выше я уже писал, что зашифровывал конфиг из под одного пользователя и успешно расшифровывал из под другого.
29 май 19, 12:53    [21896633]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Compositum
Выше я уже писал, что зашифровывал конфиг из под одного пользователя и успешно расшифровывал из под другого.
нет логики. У тебя как бы нет отдельных пользоватей.
Значит слово "из под другого" туфта.
29 май 19, 12:57    [21896640]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5943
Petro123
нет логики. У тебя как бы нет отдельных пользоватей.
Значит слово "из под другого" туфта.

Прекращай разводить срач ради срача.
29 май 19, 12:59    [21896644]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Compositum,
Дак где лежит пароль к sql.ru?
Ответ будет?
29 май 19, 13:05    [21896657]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5011
Compositum
Выше я уже писал, что зашифровывал конфиг из под одного пользователя и успешно расшифровывал из под другого.

Я выше тоже писал о том, что это из-за того, что DpapiProtectedConfigurationProvider по умолчанию использует DPAPI со Scope=LocalMachine, поэтому результаты шифрования доступны любому пользователю, имеющему доступ к хосту с зашифрованными данными. И надо просто сменить scope на CurrentUser - и была дана ссылка, по которой объяснялось, как это сделать.
29 май 19, 13:05    [21896658]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1976
>Compositum, сегодня, 12:53 [21896633]
>Выше я уже писал, что зашифровывал конфиг из под одного пользователя и успешно расшифровывал из под другого.
<Почему не используешь для шифрования тот же WinRAR или подобное?
29 май 19, 13:41    [21896697]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
ВМоисеев,
Потому что даже MD5 расшифровывается, если пароли на руках.
29 май 19, 13:54    [21896709]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1976
>ВМоисеев, сегодня, 13:41 [21896697]
>Почему не используешь для шифрования тот же WinRAR или подобное?
<Уточняю.
Шифруешь не конфиг, а файл настройки. Конфиг содержит только path файла настройки.
Каждый пользователь имеет свой файл настройки, соответственно и свой пароль.
Файл настройки можно хранить на флешке.
29 май 19, 14:56    [21896762]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
fkthat
Member

Откуда:
Сообщений: 1163
Petro123
ВМоисеев,
Потому что даже MD5 расшифровывается, если пароли на руках.

Ты в своем репертуаре. MD5 это так-то хеш, а вовсе не шифрование. А насчет подбора MD5-хеша, так он уже давным-давно считается недостаточно надежным и вместо него рекомендуется SHA-2
29 май 19, 15:04    [21896774]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
fkthat
Member

Откуда:
Сообщений: 1163
ВМоисеев
Каждый пользователь имеет свой файл настройки, соответственно и свой пароль.

У тебя и в винду что ли пользователи под одним аккаунтом заходят? Прямо бригада Стаханова какая-то.
29 май 19, 15:06    [21896777]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1976
>fkthat, сегодня, 15:06 [21896777]
>У тебя и в винду что ли пользователи под одним аккаунтом заходят? Прямо бригада Стаханова какая-то.
<Странно и неадекватно. Бред какой-то.
Причём здесь винда.
Разговор о шифровании файла настройки.
Берешь WinRAR и шифруешь файл настройки со своим паролем. Результирующий крипто контейнер где-то размещаешь. Path размещения помещаешь в конфиг приложения.
Что не понятно?
29 май 19, 15:19    [21896795]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3404
ВМоисеев,

а пароль от архива где сохранить?
29 май 19, 15:20    [21896796]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1976
>Roman Mejtes, сегодня, 15:20 [21896796]
>а пароль от архива где сохранить?
<можно в голове
29 май 19, 15:26    [21896816]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
ВМоисеев
>Roman Mejtes, сегодня, 15:20 [21896796]
>а пароль от архива где сохранить?
<можно в голове

Архив на 20 паролей от предприятии у Сидорова в голове?
29 май 19, 15:29    [21896832]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5011
На всякий случай.
И смысл использовать WinRar, который использует при шифровании AES-128/AES-256+HMAC-based PBKDF2 - всё перечисленное доступно в виде соответствующих стандартных классов фреймворка. И без вызова сторонних программ.
29 май 19, 15:29    [21896833]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Eolt
Member

Откуда:
Сообщений: 1481
В качестве пароля использовать ID чипа флешки. Такой себе аппаратный ключ получается.
29 май 19, 15:34    [21896849]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1976
>Сон Веры Павловны, сегодня, 15:29 [21896833]
>...всё перечисленное доступно в виде соответствующих стандартных классов фреймворка…
<Вы абсолютно правы.
Но я попытался своять прототип инфосистемы, и вопрос шифрования стоит несколько в стороне от моих главных интересов.
Есть готовый инструментарий, им и воспользовался.
По-взрослому, конечно надо делать как Вы предлагаете. Но смысл идеи от этого не меняется.
29 май 19, 15:39    [21896862]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
ВМоисеев,
Вот и выходит, что 3 страницы обсуждения того что есть, доступно и работает)
29 май 19, 15:49    [21896895]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3404
Eolt, если секьюрность имеет такой значение, стоит задуматься о приобретении токенов.
для примера, у меня есть RSA брелок для подключения, каждые 30 секунд на этом брелке меняет 6-значный код для подключения
а за использование пользовательского (своего) логин\пароля в любом конфиге, сразу прилетает по шапке от админов.
уровень безопасности там параноидальный.
29 май 19, 15:52    [21896900]     Ответить | Цитировать Сообщить модератору
 Re: Как защитить зашифрованную в config-файле информацию от расшифровки извне?  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1976
>Сон Веры Павловны, сегодня, 15:29 [21896833]
>На всякий случай.
<Прибавление.
В некоторых случаях полный WinRAR нужен только безопасникам. В приложении можно использовать unrar.exe, а он похоже бесплатный.
Можно перейти и на 7-zip. Но это так сказать лирика.
Если серьёзно - Ваш вариант однознак.
29 май 19, 16:10    [21896954]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / WinForms, .Net Framework Ответить