Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.27;
Скачать: CL | DM;

Вниз

Как делаются пароли?   Найти похожие ветки 

 
Dr.Karter ©   (2003-01-13 11:25) [0]

Я хочу знать где можно - нужно хранить информацию пароля(чтобы юзер не знал)
чтобы потом сделать проверку.
Дайте пример паролевой программки.


 
Dr.Karter ©   (2003-01-13 11:25) [1]

Я надеюсь меня поняли.


 
RWolf   (2003-01-13 11:27) [2]

Сохраняй, где удобно, в зашифрованном виде.


 
vuk ©   (2003-01-13 11:42) [3]

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


 
Novice ©   (2003-01-13 11:43) [4]

Вместо пароля удобно хранить хеш от пароля (напр., MD5) - не видно длину и расшифровать - только перебором, и прятать не надо.


 
smok_er   (2003-01-13 11:45) [5]

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

Если пароль сгенерированный, то подобрать врядли получится.


 
Dr.Karter ©   (2003-01-14 08:54) [6]

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


> Сохраняй, где удобно, в зашифрованном виде

Что значит в зашифрованном виде?
> Novice © (13.01.03 11:43)
> Вместо пароля удобно хранить хеш от пароля (напр., MD5)
> - не видно длину и расшифровать - только перебором, и прятать
> не надо.


И что такое хеш?


 
A2   (2003-01-14 09:19) [7]

Парень!
А сколько часов всего-то ты занимаешься программированием - и сразу за программу с паролями!!!
Разберись сперва с азами.


 
Сергей Зимин   (2003-01-14 09:29) [8]

Вот здесь реализация алгоритма MD5
http://www.fichtner.net/delphi/md5/
Немного упростив - Хеш это контрольная сумма
Хеш двух различных строк (хоть на 1 бит) различен.


 
Спрашивающий   (2003-01-14 09:42) [9]

Все зависит какой степени защита требуется, если от Чайника то вообще ничего прятать и шифровать не надо он порой не может запустить ну например Word. Если программа расчитана на широкий круг ничего не видимого и зашифрованного(100%) не сделаешь, "умельцы" все сломают,хотя я думаю что в данном случае шифровать и прятать надо, ну хотя бы для того чтобы усложнить взлом .


 
Rater2 ©   (2003-01-14 10:02) [10]

ХЕШ хорош при работе с вводимыми паролями,
а для хранения паролей для посылки куда-то (например аутентификациа в инет).
Для шифровки паролей наиболее простой метод XOR & ротация битов
для бешеной шифровки можно конечно PGP попробовать но хранить то придется всё и приватный и публичный ключ, так что ....


 
Anatoly Podgoretsky ©   (2003-01-14 10:16) [11]

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


 
Chubais ©   (2003-01-14 10:27) [12]

ААААААААААААААААААА!!!!!!!!!!!!!!!


 
Сергей   (2003-01-14 11:57) [13]

Доктор Картер. Я смотрю здесь тебе много советчиеов нашлось, которые считают себя величайшими криптографами. Не будем их разубеждать, но скажем, что читать их писанину весьма смешно. Молодцы!
Вот тебе кратко что такое Хэш-Функция. Это такая функция, зная значение которой невозможно определить её аргумент. То есть, если известно f(x), то x - нельзя определить. Например, функция mod (остаток)!
1 mod 3 = 1
2 mod 3 = 2
3 mod 3 = 0
4 mod 3 = 1
5 mod 3 = 2
.......... и т.д. То есть зная что (х mod 3) = 2 , мы не можем определить х, так как он может быть = 2,5,... Вот это и есть простейшая ХэшФункция. В реальных программах/алгоритмах используется не число 3, о большие (>64бит) простые числа.
Тебе же советую сделать файл в этом же каталоге например UserPassword.pwd, и все пароли которые будут использоваться хранить там в отдельной строке, причем не сами пароли, брать от каждого символа пароля отдельно байт/символ высчитывать его (mod 97) и + 101010101010.
Потом когда юзер будет вводить пароль, ты с ним (паролем) провернёшь вышеуказанные вычисления и сравнишь с тем, что есть в файле!
Надеюсь - помог!


 
Reindeer Moss Eater   (2003-01-14 12:02) [14]

Сергей , не находишь, что способ твой ограниченно годен? Годится лишь для случаев, когда автор программы сам проверяет подлинность вводимого пароля.


 
mrcat ©   (2003-01-14 12:27) [15]

=)))))))


 
vuk ©   (2003-01-14 13:01) [16]

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


 
Reindeer Moss Eater   (2003-01-14 13:06) [17]

vuk, в 11:57 было сказано новое слово в криптографии. А мы не заметили :)))


 
Dr.Karter ©   (2003-01-14 15:32) [18]

А как насчет невидимого файла? Можно ли делать такие
Тебе Сергей СПАСИБО

A2 (14.01.03 09:19)

Я не знаю сколько ты за этим непростым делом, но что касается меня то за мной много программ, и единственный способ к познанию
учиться, что не когда не поздно!
За рекомендациями обращаться к Литвинову Илье Николаевичу по адресу: nsk_school_163@list.ru Меня зовут Денисов Игорь А.
или просто Dr.Karter! Милости Прошу!!!


 
Dr.Karter ©   (2003-01-14 15:34) [19]


> A2 (14.01.03 09:19)

А Если я чего не знаю, то я учусь, благодаря Мастера DELPHI-
Спасибо вам!


 
les ©   (2003-01-14 16:05) [20]

> Dr.Karter © (14.01.03 15:34
> А Если я чего не знаю, то я учусь

Молодец! Хочу подарить тебе ключ к любому познанию, держи:

RTFM, STFW.


 
Sha ©   (2003-01-14 22:47) [21]

2 Сергей (14.01.03 11:57)

:)


 
MXA   (2003-01-15 00:05) [22]

2 Сергей (14.01.03 11:57)

:(

и вообще
>...Это такая функция, зная значение которой невозможно определить её аргумент...
не правда

2 Dr.Karter © (14.01.03 15:32)
>А как насчет невидимого файла? Можно ли делать такие
на устройстве nul :)
и как бы ты хотел увидеть такой файл?
а чайник не увидит и файл с аттрибутом "скрытый"

по-моему стоит или придумать свой "оригинальный" алгоритм/способ
хранения паролей, стойкость которого и будет состоять в том,
что он не известен, или изучать (не по форумам) известные
теоретически стойкие алгоритмы.



 
vuk ©   (2003-01-15 01:24) [23]

to MXA
>не правда
Я бы сказал, это не вся правда, а точнее её часть. В принципе, хеширование - алгоритм отображения одного множества значений на другое, обычно меньшее. И поскольку второе множество значений меньше, то точно определить элемент первого множества не получится.


>по-моему стоит или придумать свой "оригинальный"
>алгоритм/способ хранения паролей, стойкость которого и будет
>состоять в том, что он не известен
Для более или менее серьезных применений такой подход не годится. Да и уже давно известно - самые надежные алогритмы шифрования - те, алгоритмы которых известны всем и хорошо изучены.

>или изучать (не по форумам) известные
>теоретически стойкие алгоритмы.
Вот это есть правильно! А вообще сочетание хранения хешей вместо паролей и шифрования даст хорошоший эффект.





 
mrcat ©   (2003-01-15 04:01) [24]

vuk © (15.01.03 01:24)
...
то точно определить элемент первого множества не получится.
...


собственно определять нет никакого смысла, ибо находится посредством поиска коллизий


 
anatolyk   (2003-01-15 10:07) [25]

Народ, а что если для защиты применить след. способ.
На машине юзера создается файл, зашифрованный с каким-то паролем, напр. номером дистрибутива + s/n винта (С)+ какие-либо действия с этими числами (или строками) и т.п. Этот файл создается отдельной программой при установке (лично я установки делаю сам, и программа-инсталятор всегда со мной. Бабки, все-таки.8)). Сам файл можно разместить, напр. в каталоге Windows (GetSystemDirectory) и дать ему имя, напр. device.sys

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

Для чайника вполне годится.


 
Reindeer Moss Eater   (2003-01-15 10:15) [26]

>anatolyk
А каково назначение такой защиты?


 
mrcat ©   (2003-01-15 10:18) [27]

anatolyk (15.01.03 10:07)
...
На машине юзера создается файл, зашифрованный с каким-то
...


http://www.pgp.com/


 
ZeroDivide ©   (2003-01-15 10:36) [28]

Хотел даже что-то написать сначала, но потом передумал. Я просто в истерике от ваших реплик. Не знаю мне смеяться или плакать. Сперва я смеялся.
Нужно проводить долгий ликбез.
Но в общем скажу все таки кратко:
1 Криптография и защита программ от взлома это 2 разные вещи.
2 Современные криптографические алгоритмы взломать нереально.
3 Программу нельзя защитить от взлома. Даже если она защищена
современными криптографическими алгоритмами, то она будет ломаться на 5 минут дольше. (а может и быстрее)

Известно ли вам уважаемые "защитники программ", "собиратели серийных номеров винчестеров", что как правило все ваши старания
отключаются изменением всего 2-х маленьких байтиков на 90h - No Operation?
И все :(


 
Anatolyk   (2003-01-15 11:45) [29]

To: Reindeer Moss Eater
Назначение - просто затруднить перенос проги.


 
Anatolyk   (2003-01-15 11:50) [30]

То: Zero...
Это и ежу понятно. Но вопрос был задан, и если можно чем-то помочь, то почему бы нет? Здесь же не идет речь о создании абсолютной защиты. А для того, чтобы изменить те же 2 байтика, тоже надо кое-что знать.


 
anaTolik   (2003-01-15 11:55) [31]

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


 
Reindeer Moss Eater   (2003-01-15 12:01) [32]

Anatolyk (15.01.03 11:45)
To: Reindeer Moss Eater
Назначение - просто затруднить перенос проги.


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



 
anaTolik   (2003-01-15 12:17) [33]

Не совсем. Я же ВЫЧИСЛЯЮ его при каждом запуске. В готовом (в том числе зашифрованном) виде он нигде не хранится. Прога, вычислив пароль, пытается открыть файл и получить из него данные - и все. Если комп другой, то и пароль будет вычислен другой. Поэтому хотя бы данные будут искажены.


 
Reindeer Moss Eater   (2003-01-15 12:22) [34]

Полет мысли не понят.
Я - легитимный юзер. И у меня есть файл и пароль к нему.
Беру все это с собой и несу куда-то. Заменяю аналогичный файл на другом рабочем месте и работаю на двух местах с одним паролем.


 
anaTolik   (2003-01-15 12:34) [35]

1.Я пришел. Установил прогу. Напр., с дискеты запустил свой crack, который создал файл, вычислив пароль для этой машины. Забрал дискету. Ушел.
2.Умный (не через чур, а вмеру) перец пришел. Скопировал все на др. комп. Запустил прогу. Она вычислила пароль (используя комбинацию SN харда и пр.) уже для этого компа. С этим паролем попыталась открыть файл. И, сам скажи, что будет? Пароль-то другой.
Я еще раз говорю - пароля как такового нет. Программа сама его высчитывает и даже не надо его у юзера запрашивать.
Может, я термин пароль неправильно употребил?


 
mrcat ©   (2003-01-15 12:54) [36]

anaTolik (15.01.03 12:34)
и что прикажете делать юзеру, заменившему, например винт?


 
anaTolik   (2003-01-15 13:00) [37]

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


 
Kruger ©   (2003-01-15 13:03) [38]

Набить морду человеку, который сделал привязку к харду.
Лучше использовать шифрование. Однозначно. Ссылок народ накидал уйму, см выше. А вообще я бы посоветовал сделать свой шифровалшик. Тогда алгоритм шифрования будет уникальным и сломать его будет труднее.


 
anaTolik   (2003-01-15 13:04) [39]

to: mrcat

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

вариант: придумать передачу какого-нибудь кода и ответа на него. Но это слабо, т.к. процедура регистрации будет находиться на компе клиента.


 
Reindeer Moss Eater   (2003-01-15 13:07) [40]

Святая наивность. (про "взять бабки за вызов") :)


 
anaTolik   (2003-01-15 13:10) [41]

To: Kruger

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


 
anaTolik   (2003-01-15 13:11) [42]

To: Reindeer Moss Eater

Ну, пива попить вместе. но за его счет 8)


 
mrcat ©   (2003-01-15 13:11) [43]

anaTolik (15.01.03 13:00)
...
забъешь в код проги однажды вычисленный пароль
...


=)))))
и кто после этого злому дядьке мешает перенести программу на другой PC?


 
Reindeer Moss Eater   (2003-01-15 13:16) [44]

>anaTolik
Представления у тебя какие-то извращенные. У тебя кто-то купил твою программу, которая потеряла свою функциональность в результате смены конфигурации у пользователя.
Ты полагаешь что тебя должны поить пивом за восстановление её работоспособности ?
Все как раз наоборот!


 
mrcat ©   (2003-01-15 13:17) [45]

anaTolik (15.01.03 13:04)
...
прийти, снова запустить Crack с дискеты, взять бабки за вызов
...


Предполагаемые мысли легитимного пользователя: "А на кой мне сдалась такая прога??????"


 
anaTolik   (2003-01-15 13:18) [46]

to: mrcat

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


 
mrcat ©   (2003-01-15 13:21) [47]


anaTolik (15.01.03 13:18)
...
Тебе надо будет править машинный код
...


могу только пожелать успехов в написании самоперекомпилируемой программы.


 
anaTolik   (2003-01-15 13:25) [48]

To: Reindeer Moss Eater

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


 
Reindeer Moss Eater   (2003-01-15 13:29) [49]

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


 
anaTolik   (2003-01-15 13:38) [50]

To: Reindeer Moss Eater
Давай так, если юзер - твой друг или типа того, тогда не мучайся, зашей пароль в прогу, перед запуском его спроси, и все.

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


 
mrcat ©   (2003-01-15 13:44) [51]

anaTolik (15.01.03 13:38)
...
если юзер - твой друг или типа того
...


Если пользователь - друг, то зачем вообще пароль?

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


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


 
Reindeer Moss Eater   (2003-01-15 13:45) [52]

anaTolik
Не путай две разные вещи:
1. Пользователь каждый раз вводит пароль при запуске программы в целях защиты своих данных. И в этом он заинтересован сам, а не в том что бы пить пиво.

2. Программа предусматривает какие-то действия пользователя для того, что бы защитить себя (твои права). И пользователю (покупателю) на это (твои желания) наплевать.


 
anaTolik   (2003-01-15 13:49) [53]

To: mrcat

см ответ от 13:04, вариант 2.


 
anaTolik   (2003-01-15 14:00) [54]

To: Reindeer Moss Eater
Ему наплевать - тебе нет.
1.Если комп стоит в проходном дворе, а юзер заботится о своих данных, тогда для защиты следует прежде попытаться ограничить доступ к данным на уровне ситемы. иначе - копируй, и сиди дома ковыряй сколько душе угодно.
2.Если это компьютер общего пользования, рекомендую юзерам пользоваться различными доп. устройствами: mobile rack-ами, Flash-ами, дискетами, наконец, и не оставлять свои данные на компе.
3.Если надо разделить данные в одной программе между юзерами, используй готовые решения средствами СУБД. Практически все мало-мальски уважающие себя конторы позволяют ограничивать доступ на уровне пользователей. Включай Login prompt, и - вперед.


 
Reindeer Moss Eater   (2003-01-15 14:03) [55]

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


 
anaTolik   (2003-01-15 14:08) [56]

Надо идти. Буду после 17 по Москве. Было приятно пообщаться. Пока!

Желающие и спамеры. Если есть интересные темы, предложения, или просто желание пообчаться, пишите на celeron@mail.sochi.ru. C удовольствием отвечу.


 
Anatoly Podgoretsky ©   (2003-01-15 14:27) [57]

anaTolik (15.01.03 13:04)
Если процесс выщибания денег не зафпксированн особо в договоре, то пользователю пора обратится в суд на взыскания с тебя разного рода ущерба, и не думай что жто тебе сойдет с рук, прецеденты есть, бедныи защитники пользователя были после этого бледные и бедные.


 
anaTolik   (2003-01-15 14:56) [58]

to: Anatoly Podgoretsky
Все верно. Но на то он и договор, чтобы все там оговаривать.
Насчет вышибания денег - мне обидно. Это не вышибание. Пользователи (покупающие прогу) обо всем информированы. А брать, или не брать за восстановление деньги - см. договор.
Я не оспариваю их имущественные права, но и не хочу, чтобы мои авторские права были нарушены. А прецедентов - достаточно. Взать всеми любимые винды. Сколько народу зарабатывет на их обслуживании (неофициально). Вообще, вариантов много.

Но цель дискуссии была не "как выбивать деньги", а как защититься. И что вы все с деньгами ко мне прицепились? Неужели так задело?


 
Anatoly Podgoretsky ©   (2003-01-15 15:04) [59]

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


 
anaTolik   (2003-01-15 15:08) [60]

Удачи всем! меня нет.


 
ZeroDivide ©   (2003-01-15 15:22) [61]

Вообще говоря я все сказал в [ZeroDivide © (15.01.03 10:36)],
но вы хотябы один раз взламывали или только пытаетесь защитить?
У меня нет слов. Расскажу анекдотический случай из реальной жизни, который будет вам полезен в вашем деле:
Однажды, когда я еще учился в универе (DOS AGE), мы делали лабы по одной хорошей, очень полезной проге. Препод пытался продать ее студентам за 200р. Ни один человек не купил. Но он упирался и просто так ее отдавать не хотел. Тогда я ее ломанул и раздал всем бесплатно. Потом он выяснил что это сделал я (Я ему сам сказал). Он был профессором, д.т.н. и он у меня спрашивал как же я ее все таки сломал? А еще чуть позже он стал моим научным руководителем!!! А еще чуть позже под его н.р. я получил губернаторскую премию!!!
А взломал я ее так:
Когда он компилял прогу он оставил там галочку "Дебагинг информейшэн". И ТД (Бордандовский) ее конечно же понимал.
И короче прикол:
.........
push eax
add ebx,03h
push ebx
.........
Call Protect
.........
SomeCode
.........


 
RWolf   (2003-01-15 15:32) [62]

ZeroDivide
*пиво :)
со мной был такой же случай, один в один
может, они это нарочно? хакеров воспитывают? :)


 
A2   (2003-01-15 20:30) [63]

Уважаемые!
В "Королевстве Дельфи" есть хороший цикл статей по теме защиты программ, включая такую экзотику для Win32, как самомодифицирующиеся программы. Советую посмотреть -- очень интересно.


 
ZeroDivide ©   (2003-01-16 08:49) [64]

>A2 (15.01.03 20:30)
А я вот советую почитать какой-нибудь "цикл статей" - <интересное выражение]
по взлому программ. Пользы будет побольше.


 
BlockCode ©   (2003-01-17 16:06) [65]

function HeshKey(s0: string): string;
var
n, i, j, k, x: integer;
s: string;
begin
s:=s0;
SetLength(s,30);
n:=Length(s0);
for i:=n+1 to 30 do
s[i]:=Char(i);
for i:=1 to 30 do
begin
k:=1;
x:=Ord(s[i]);
for j:=1 to 30 do
begin
case k of
1: x:=x+Ord(s[j]);
2: x:=x*Ord(s[j]);
3: x:=x-Ord(s[j]);
4: x:=x div Ord(s[j]);
5: k:=0;
end;
k:=k+1;
end;
s[i]:=Char(x Mod 256);
end;
Result:=s;
end;

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



Страницы: 1 2 вся ветка

Текущий архив: 2003.01.27;
Скачать: CL | DM;

Наверх




Память: 0.65 MB
Время: 0.019 c
1-86868
Думкин
2003-01-20 06:35
2003.01.27
Формы


14-87063
Driverrr
2003-01-08 16:14
2003.01.27
Открылся новый раздел...


3-86684
Delphinium
2003-01-08 20:41
2003.01.27
Связывание таблиц в interBase


1-86936
anod
2003-01-16 21:42
2003.01.27
Как мне реализовать


3-86713
anton2v
2003-01-09 16:27
2003.01.27
переход в TTable путем задания Table.RecNo