|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
Доброго времени суток. Имеется некоторое приложение TargetApp , в конфигурационных настройках которого хранится строка подключения к БД. Физически, настройки подключений к БД вынесены в отдельный файл connections.config . Т.о. общая картина следующая: TargetApp.exe.config: Код: xml 1. 2. 3. 4. 5. 6. 7.
connections.config: Код: xml 1. 2. 3. 4. 5. 6.
Согласно документации Майкрософт, шифрование строк подключений, хранящихся в конфигурационном файле приложения, должно выполняться на той машине, где этот конфиг-файл будет использоваться. Т.е. шифровать конфиг на машине разработчика смысла нет. Написал консольное приложение ConfigTools.exe , задача которого - шифровать/дешифровывать config-файлы того exe, имя которого было передано ему через параметры с одним из ключей: --encrypt, --decrypt. При помощи ConfigTools.exe выполняю шифрование строк подключения в конфиг-файлах, используемых приложением TargetApp.exe . Код шифровки/дешифровки достаточно простой: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43.
TargetApp.exe успешно извлекает из настроек строки подключения, не зависимо от того зашифрованы они или нет. Т.е. одно приложение шифрует/расшифровывает config-файл, но при этом оба приложения успешно считывают строки подключения (платформа .net framework сама автоматом всё расшифровывает при обращении к соответствующей записи, хранящей строку подключения). Т.е. с одной стороны вроде всё нормально - открыв в Notepad мой config-фай, юзер увидит зашифрованную строку подключения... Но вот с другой стороны всё же возникает большой вопрос о надёжности такой защиты... Ведь получается, что любой желающий может написать подобный код, запустить его на целевой машине и с лёгкостью расшифровать строки подключения... Может я чего-то упускаю из вида? Как защитить шифруемую информацию от подобных случаев? С уважением, Андрей ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 16:44 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
Compositum, если так рассуждать, то защиты вообще не существует и в целом, так и есть. Можно запустить отладчик на целевой машине и перехватить пароли в незашифрованном виде, рано или поздно они всё равно расшифруются. данная операция (шифрование\дешифрование) секции конфигурационного файла требует права администратора с повышением, то есть, если пользователь захочет зашифровать или расшифровать файл на компьютере у него не получится. если злоумышленник скопирует файл, то расшифровать он его уже не сможет. Ну, а если злоумышленник обладает правами администратора на целевом компьютере, то его уже ничего не остановит, это картблашн на любые действия. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 16:55 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
Compositum, Если ты админ то никак или слишком дорого. Защита не дороже стоимости защищаемых данных (с) Сколько твои стоят? Или теория? Ну и защита это комплексные мероприятия. А не строка Пароль. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 17:33 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
Еще пароли можно хранить в Credential Manager'е ОС Windows, довольно удобно ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 18:13 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
Для работы с кредами есть такая штука: https://www.vaultproject.io/ Шарповая либа к ней: https://github.com/rajanadar/VaultSharp ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 18:54 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
BlackEricДля работы с кредами есть такая штука: https://www.vaultproject.io/ Шарповая либа к ней: https://github.com/rajanadar/VaultSharp очередной велосипед? Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 19:39 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
Roman Mejtesданная операция (шифрование\дешифрование) секции конфигурационного файла требует права администратора с повышением, то есть, если пользователь захочет зашифровать или расшифровать файл на компьютере у него не получится. Увы... Проверил с правами рядового пользователя - всё успешно расшифровалось, к сожалению безо всяких админских прав. Roman MejtesСколько твои стоят? Или теория? Не теория. Стоят прилично. Данные не мои, а компании. Предлагаю флуд не разводить. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 21:02 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
CompositumПредлагаю флуд не разводить.это не флуд. Это в ВУЗЕ преподают. CompositumПроверил с правами рядового пользователяпользователь Иванов расшифровал свой пароль или чужой? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 21:53 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
На тот случай, если будет интересно проверить - во вложении архив, в котором инструкция и два подопытных кролика: консолька шифровки\расшифровки строки подключения в конфиг-файле, и другая консолька, над конфиг-файлом которой выполняются опыты (согласно инструкции, обозначенной в readme.txt). К сожалению, шифровка\расшифровка без проблем выполняется из под обычного юзера. ☹ ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 21:53 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
Compositumесли будет интересноникому не интересно. В конфиге юзаеря не хранятсе все пароли. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 21:55 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
Petro123пользователь Иванов расшифровал свой пароль или чужой? Оба варианта успешно отработали. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 21:59 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
CompositumPetro123пользователь Иванов расшифровал свой пароль или чужой? Оба варианта успешно отработали.откуда в конфиге чужие пароли? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 22:03 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
Petro123откуда в конфиге чужие пароли? Не "чужие", а специальные учётные записи, от имени которых должны выполняться определённые операции на различных серверах. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 22:06 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
CompositumPetro123откуда в конфиге чужие пароли? Не "чужие", а специальные учётные записи, от имени которых должны выполняться определённые операции на различных серверах.тебе решать. Нужна безопасность? Раздели конфиги. Не нужна? Не дели. Ваш КЭП. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 22:09 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
Я что-то не пойму цель - спрятать пароль пользователя от самого этого пользователя? :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 23:50 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
>Roman Mejtes, сегодня, 16:55 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1312991&msg=21895038][21895038] >...Ну, а если злоумышленник обладает правами администратора на целевом компьютере… < Поместил файл в шифроконтейнер WinRAR и записал на целевой компьютер, злоумышленник обладает правами администратора на нем и ... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 23:57 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
>fkthat, сегодня, 23:50 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1312991&msg=21895267][21895267] >Я что-то не пойму цель - спрятать пароль пользователя от самого этого пользователя? :)) <Можно попытаться спрятать строку соединения и от самого пользователя ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 00:01 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
ВМоисеев>fkthat, сегодня, 23:50 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1312991&msg=21895267][21895267] >Я что-то не пойму цель - спрятать пароль пользователя от самого этого пользователя? :)) <Можно попытаться спрятать строку соединения и от самого пользователя Зачем? Пользователь либо может коннектиться к БД со своего хоста, либо не может. И, если может, то никакими ухищрениями ты на 100% ему не запретишь делать это как угодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 00:15 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
User расшифровывает LocalMachine секции конфигов? что то не верится ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 00:40 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
>fkthat, сегодня, 00:15 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1312991&msg=21895274][21895274] >Зачем? Пользователь либо может коннектиться к БД со своего хоста, либо не может… <Вообще говоря, коннектится приложение, пользователю строка соединения по барабану ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 01:42 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
ВМоисеевВообще говоря, коннектится приложение, пользователю строка соединения по барабану Да, но оно коннектится с логином и паролем того пользователя, который его использует (потому что иначе это вообще какой-то треш), поэтому какой смысл там прятать что-то - прятать от пользователя его же собственные логин и пароль? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 02:06 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
для начала пароли в строке подключения вообще нельзя держать (к тому-же там скорее всего у тебя пароль админа лежит), должна использоваться виндовая аутентификация. Во-вторых, велосипеды по шифрованию конфигов писать не надо, они уже есть, например aspnet_regiis, все что нужно сделать - скопировать на пользовательские машины ключ, пользователький конкекст конечно-же должен иметь доступ к нему иначе как он его расшифрует ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 02:06 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
CompositumНе "чужие", а специальные учётные записи, от имени которых должны выполняться определённые операции на различных серверах. Треш угар и содомия. Выходит, что к бесценным данным компании куча пользователей имеет доступ с использованием одного и того же логина и пароля. У тебя в консерватории защиты данных изначально не так, а твои ухишрения с шифрованием это как в том самом борделе кровати переставлять. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 02:24 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
stenford, В двузвенке (а речь, как я понял, идет именно о двузвенке), ни логин ни пароль не следует держать нигде, в принципе. У каждого пользователя должен быть свой персональный логин и пароль, который он должен помнить и вводить для коннекта к БД. Ну, или, как правильно сказали, и вообще следовало было бы сделать - виндовая аутентификация. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 02:30 |
|
Как защитить зашифрованную в config-файле информацию от расшифровки извне?
|
|||
---|---|---|---|
#18+
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.05.2019, 06:35 |
|
|
start [/forum/topic.php?fid=20&fpage=20&tid=1398926]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 176ms |
0 / 0 |