Как да скриете паролите в програмата

Правя програма, в която ще работи потребителя (оператора). Работата му ще се контролира от втория потребител (admin), който може да затвори някои функции на програмата с паролата си, така че операторът да не може да ги използва. Къде и как да запазя администраторската парола? Как да се уверите, че операторът просто няма да изтрие паролата на администратора, например ключа в регистъра, в който се съхранява, така че програмата да мисли, че паролата на администратора не е зададена. Как да стане по-трудно? Може би има някакви решения?

> Progger (03.12.05 22:48)не е нужно да съхранявате паролата, запазете хеша на паролата.

> Правя програма, в която ще работи потребителят (оператор), от своя страна, когато операторът работи на машината, той трябва да има ограничения за достъп до желания ключ на регистъра.

> не съхранявайте паролата, съхранявайте хеша на паролата.

Какво е хеша, каква е паролата, значението е същото. Хешът също трябва да се съхранява някъде, за да може да се изтрие?

> операторът работи, трябва да има ограничения за достъп > до желания ключ на системния регистър.

И възможно ли е по-подробно? Операторът трябва да има администраторски права на тази машина. При това условие наистина ли е възможно да се ограничи достъпът до ключа?

Мисля да направя нещо такова. Когато програмата се стартира за първи път, тя записва в системния регистър низ, шифрован с ключ, зашит в него. Когато е зададена администраторска парола, този низ се криптира отново с тази парола. И след това проверете с каква парола е шифровано. Ако е по подразбиране, тогава няма администраторска парола. Но досега не съм разбрал как да приложа всичко това. Има ли други опции, които можете да опитате?

> Progger (12/3/05 23:24) [3]> Операторът трябва да има администраторски права на тази машина. > При това условие е реалистично да се ограничидостъпът до ключа?е практически невъзможен. В този случай е много трудно наистина да се защитите.

Ако операторът има възможност да анализира програмния код и да прави вмъквания в него, тогава можете да се защитите с ключова дискета, която администраторът изважда от джоба си, когато иска да работи с програмата в административен режим. Тази дискета може да съдържа например малка dll с необходимата част от програмата.

Ако потребителят само чете програмата, но не смее да промени нито един байт в нея, тогава критични части от програмата, които са забранени за изпълнение от потребителя, могат просто да бъдат вмъкнати в програмата и защитени с парола, чийто хеш също ще бъде в програмата. Ако паролата трябва да се променя от време на време, хешът може да се съхранява в малък файл, разположен в същата директория като програмата. Използването на регистъра според мен не дава допълнителни предимства.

Floppy е добра идея. Вероятно е още по-добре да позволите на администратора да избере чрез диалогов прозорец къде да запази паролата. Флашка, дискета и запаметете пътя до паролата. Трябва да помислим за това.

Защо да усложнявате нещата толкова много? Може би просто да съхранявате паролите във файл, в криптирана форма, разбира се, и ако файлът бъде изтрит, тогава да възстановите паролите по подразбиране, зададени в самата програма? Просто всеки път проверявайте първо съществуването на файла и след това правилната парола.

Пароли, които ще бъдат известни на оператора по подразбиране. Следователно, за да използвате настройките, затворени с паролата на администратора, е достатъчно операторът да изтрие файла с пароли и да използва тези по подразбиране. И това трябва да се избягва.

И такъв въпрос, дали резултатите от работата ще се съхраняват във файлове в затворен (тоест, така да се каже, не в текстова форма) формат или отворен? След това файловете с резултатите ще се изпълняват от компютър на компютърИли ще се използват постоянно?

Вдъхновен от ASProtec (ново петно)

Накратко, такава идея е да съхранявате (криптирани) пароли във файловете с резултати + просто добавете паролата в края на вашия exe и за да сте сигурни, можете също да я хвърлите в регистъра. Ако една от тези пароли бъде изгубена, можете да създадете дневник и да блокирате програмата до шоудауна.

А защо не пъхнете паролата направо в exe-файла на вашата програма ?? Или DLL?? В допълнение, в криптирана хеширана форма. Освен това отгоре закачете UPX, ASProtect и т. н. Съмнявам се, че потребителят (операторът) ще може да ги премахне. Освен това, ако шифровате пароли с помощта на PGP алгоритъма.

Saimon (05.12.05 11:16) [10]Е, аз говоря за същото нещо, само че говоря за напляскване, добавено към готовия exe в динамичен ред

> Защо не пъхнете паролата директно във вашия > програми??

Необходимо е както операторът, така и администраторът да могат да променят паролите. Мисля да направя нещо подобно. Администраторът задава парола и я записва където пожелае, например на дискета, чрез диалогов прозорец. В системния регистър записвам хеша на тази парола и пътя до нея. Когато проверявам по този път, сравнявам хешовете. Оказва се, че операторът няма да може да разбере паролата на администратора, има само хеш, остава да разберем как програмата научава, че паролата на администратора е зададена. Вероятно все още трябва да шифровате някакъв низ с тази парола и когато проверявате, опитайте да го дешифрирате с паролата по подразбиране, ако не успеете, след това потърсете паролата по запазения път? Донякъде е объркващо.

не знам Просто не влизам в това, което си написал. :(> Администраторът задава парола и чрез диалоговия прозорец я записва > където пожелае, например на дискета. Записвам хеша на тази > парола и пътя до нея в системния регистър.

Той Х. Изпускате от поглед факта, че пътят от регистъра и хешът отново са лесни за убиване.

И това, за което говоря, се прави така. Просто пишете във вашия exe, докато програмата работи (има функции в delphi, но не помня кои) като ресурс в RCData с неразбираемо име и потребителят обикновено ще си помисли, че това са двоични данни или нещо друго. най-важното криптиране.