Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как спрятать пароли в программе? [D5, XP]


Progger ©   (2005-12-03 22:48:00) 

Делаю программу в которой будет работать юзер (оператор). Его работу будет контролировать второй юзер (админ) Этот админ может закрыть своим паролем некоторые функции программы чтобы оператор ими не мог воспользоваться. Где и как сохранить пароль админа? Как подстраховаться от того что оператор просто не стерет пароль админа, например ключ в реестре в которой он сохранен, что бы программа думала что пароль админа не был установлен. Как сделать посложнее? Может есть какие-то решения?


Saimon   (2005-12-05 15:04:00) [1]

Не знаю... Просто сам не вребаюсь в то, что ты написал... :(

> Админ устанавливает пароль и через диалог сохраняет его
> где хочет, например на дискете. В реестр пишу хеш этого
> пароля и путь к нему.


Хех... Ты упускаешь из виду, что путь из реестра и хеш опять-же мона просто убить!!!

А то про что говорю я, делается так...
Просто пиши в свой-же exe во время выполнения проги (в дельфи есть функции, правда не помню какие) как ресурс в RCData с непонятным именем и юзер, как правило, подумает, что это двоичные данные или еще что-то... главное шифруй...


Progger   (2005-12-05 12:37:00) [2]


> А почему бы не впихнуть пароль прямиком в exe-шник твоей
> проги??


Нужно чтобы и оператор и админ могли пароли менять.
Думаю сделать примерно так. Админ устанавливает пароль и через диалог сохраняет его где хочет, например на дискете. В реестр пишу хеш этого пароля и путь к нему. При проверке по этому пути сравниваю хеши. Получается что узнать пароль админа оператор не сможет, есть только хеш, осталось придумать как программа узнает что пароль админа установлен. Наверное все-таки до кучи шифровать этим паролем какую-то строку и при проверке пытаться расшифровать дефолтным паролем, если неудача, то искать пароль по сохраненному пути?
Запутанно как-то.


Gydvin   (2005-12-05 12:07:00) [3]

Saimon   (05.12.05 11:16) [10]
Ну и я о том же, только я говорю о поролях дописываемые уже к готовому ехе в динамическом порядке


Saimon   (2005-12-05 11:16:00) [4]

А почему бы не впихнуть пароль прямиком в exe-шник твоей проги?? Или ДЛЛ??
Вдобавок в зашифрованном-захешированном виде... Плюсс сверху мона повесить UPX, ASProtect и т.п.
Я сомневаюсь, что юзер (оператор) сможет их снять... При том если будешь шифровать пароли по алгоритму PGP.


Gydvin   (2005-12-05 06:12:00) [5]

А такой вопрос, результаты работы будут хранится в файлах закрытого (тоесть как бы не в текстовом виде) формата или открытого? Потом файлы с результатами перебегать с компа на комп будут или будут использоваться стационарно?

Навеено ASProtec (new stain)

Короче такая идея (зашифрованые) пороли хранить в файлах-результатах + просто дорисовывать пороль в конце вашей ехе ну и для верности можно еще в реестр закинуть. При пропаже одного из этих поролей можно создать лог и заблокировать прогу до разборок.


Progger   (2005-12-04 19:34:00) [6]


> makvell   (04.12.05 18:03) [7]


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


makvell   (2005-12-04 18:03:00) [7]

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


Progger   (2005-12-04 14:57:00) [8]


> palva ©   (04.12.05 10:30) [5]


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


palva   (2005-12-04 10:30:00) [9]

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

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


Eraser   (2005-12-04 00:17:00) [10]


> Progger   (03.12.05 23:24) [3]


> Оператор должен иметь права администратора на этой машине.
>  При этом условии реально ограничить доступ к ключу?

практически не реально.
В данном случае по-настоящему защититься очень сложно.


Progger   (2005-12-03 23:24:00) [11]


> пароль хранить не надо, храни хэш пароля.


Что хеш, что пароль, смысл тот же. Хеш тоже нужно где-то хранить, значит его можно удалить?


> работает оператор, у него должны быть ограничения на доступ
> к нужному ключу реестра.


А можно подробнее? Оператор должен иметь права администратора на этой машине. При этом условии реально ограничить доступ к ключу?

Думаю сделать что-то типа этого. Программа при первом запуске записывает в реестр зашифрованую зашитым в нее ключем строку. Когда устанавливается пароль админа, эта строка перешифровывается при помощи этого пароля. А потом проверять каким паролем она зашифрована. Если дефолтным, то пароля админа нет.
Но пока как это все реализовать еще не придумал. Может Еще какие-нибудь варианты можно попробовать?


Eraser   (2005-12-03 23:07:00) [12]


> Делаю программу в которой будет работать юзер (оператор)

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


Eraser   (2005-12-03 23:06:00) [13]


> Progger   (03.12.05 22:48)

пароль хранить не надо, храни хэш пароля.


Наверх

Титульная страница Поиск, карта сайта Написать письмо