![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
namespace |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 4.7.2006 Репутация: нет Всего: нет |
Класс с настройками сериализуется, затем шифруется симметричным ключом и записывается в файл config.bin,
сам ключ сериализуется и записывается в файл config.key Configuration.dll :
config.bin используется несколькими экзешниками, а вариант когда ключ шифрования config.key валяется на диске меня не устраивает, вот я и думаю а нельзя ли его не сериализовывать в config.key как сейчас, а сделать так чтобы он находился внутри этой сборки Configuration.dll? |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
это не защита получится. Ассиметричное шифрование не пойдет?
для защиты строк соединения у мелкофоста есть спец хрень для config файлов, она зашифрует RSA сама, прозрачно для приложения ... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
SKrivosein |
|
||||
![]() Идущий в даль ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 9.6.2007 Где: Praha - Прага Репутация: 4 Всего: 8 |
Ключ внутри сборки легко найти ildasm или .NET Reflector, если это не помеха...
Но есть такой класс ProtectedData , им можно зашифровать ключ, ключом машины или ключом пользователя с помощью Data Protection API. То есть машина своим ключом шифрует твой ключ, и вроде как расшифровать может только администратор компа и то надо знать как
Но есть одно но, ключ машины связан с машиной, поэтому при шифровании базы данных, копию нешифрованего ключа надо иметь где то в резерве, допустим на флешке(на случай аварии), ну и написат чего то для реанимации этим ключом Я, для симметрического шифра, вот таким классом пользуюсь, по оправив для своих нужд.
Это сообщение отредактировал(а) SKrivosein - 23.3.2009, 01:14 |
||||
|
|||||
namespace |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 4.7.2006 Репутация: нет Всего: нет |
да вот дело в том что предполагается что прога будет лежать в сетевой шаре, сети организации. Data Protection - тут кто зашифровал тот и расшифрует, в RSA есть возможность сделать так чтобы расшифровать могли несколько компов, но тогда на компах надо будет импортировать ключ в хранилище.
вот и думаю шифрование то, в принципе, нужно то только для того чтоб сотрудники пароль от сервака не знали, с одной стороны при текущем варианте, надо дешифровать и десереализовать, IL код полюбому смотреть придется. может так и оставить... P.S. кстати, по поводу ассиметричных алгоритмов, хочу сделать защиту на программу, так вот бывает такое что публичным ключом можно только расшифровать, а зашифровать скрытым, т.е. грубо говоря лицензионный файл (с датой окончания, названием организации), в программе зашит ключ для расшифровки, и соответственно только я могу генерировать лицензионные файлы, смотрел примеры мсдн так там публичный ключ используется для зашифровки, а скрытый для расшифровки? Это сообщение отредактировал(а) namespace - 23.3.2009, 18:00 |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Это правильный путь. Каждая защита имеет свою цену и стоимость взлома. Взвесь все за и против и реши, насколько серьзеная защита должна быть в твоей организации, и действуй. |
|||
|
||||
altarvic |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 2.3.2007 Репутация: 1 Всего: 1 |
Вообще в теории криптографии можно кодировать как приватным, так и публичным и расшифровывать соответственно противоположным ключом. Но в .NET, по моему опыту (ткните если ошибаюсь) можно кодировать только публичным (причем нужно это делать НЕ СВОИМ ключом, а того пользователя, кому посылается сообщение. Он его расшифровывает своим приватным ключом ). И это логично. Зачем шифровать приватным ключом, если расшифровать данные может любой используя публичный ключ? Ценность твоя лицензия не представляет никакой - имя, компания ... - это все не секретные данные. Имеет ценность то, что эту лицензию сгенерировал именно ты и никто другой. Для этого применяется цифровая подпись - это когда хеш от твоих данных подписывается твоим приватным ключом. Затем прога проверяет подпись: берет хеш данных и сверяет его с подписанным хешем (используя публичный ключ) Надеюсь понятно ;) |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
||||
|
||||
altarvic |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 2.3.2007 Репутация: 1 Всего: 1 |
и что это нам дает? Смысл то не меняется.
не важно как называются ключи. Если мы кодируем используя приватный ключ (т.е. не доступный другим), то расшифровать можно публичным (доступный всем) - следовательно зачем шифровать, если расшифровать может любой? при обмене секретными данными между Алисой и Бобом используют ДВА публичных ключа: Алиса шифрует данные публичным ключом Боба. Боб шифрует данные публичным ключом Алисы. Все тип топ - данные в секрете. В этом и есть смысл ассимитричного шифрования: когда для шифровки используют публичные ключи. Это сообщение отредактировал(а) altarvic - 24.3.2009, 11:24 |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
altarvic, Вы сами себе противоречите.
Раз: Два: |
|||
|
||||
altarvic |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 2.3.2007 Репутация: 1 Всего: 1 |
не вижу противоречия.
Если вы имеете в виду цифровую подпись, то она не обеспечивает никакой секретности - она гарантирует что: 1) данные не были изменены 2) данные были созданы именно Вами Вот и все. Это сообщение отредактировал(а) altarvic - 24.3.2009, 14:38 |
|||
|
||||
Idsa |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
altarvic, я с этими очевидными фактами и не спорил. Несколько постов назад Вы заявили, что
. На это я ответил:
, тем самым указав, что private и public ключи взаимозаменяемы, а, следовательно, указанной Вами проблемы в .NET нет. |
||||
|
|||||
namespace |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 4.7.2006 Репутация: нет Всего: нет |
altarvic: да тут ценность шифрования не в том что другие не расшифруют, как раз и расшифруют, а вот создать такой же файл но с другими данными не смогут.
P.S. т.е. если кто-то пожелает создать свой лицензионный файл, то ему придется сгенерировать новую пару открытый-закрытый ключ и заменить закрытый ключ в экзешнике программы (пропатчить), ну или просто пропатчить ![]() Это сообщение отредактировал(а) namespace - 24.3.2009, 17:04 |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |