Нужна ми е помощ от програмист - Challenge-response auth.

Компютри и интернет, аудио и видео, GSM, електроуреди и всяка друга техника, различна от автомобилната, обзавеждане
Потребителски аватар
Ivailo
Мнения: 9497
Регистриран на: Пет 27 апр 2007 15:21
Автомобил: VW Golf mk3
Двигател: AAZ
Местоположение: София/Видин
Контакти:

Нужна ми е помощ от програмист - Challenge-response auth.

Мнениеот Ivailo » Чет 29 окт 2009 13:09


Хубаво се натресох с една курсова работа..
Идеята ми беше да напиша проста уеб-базирана login/registration система на PHP + MySQL.
Е да, ама преподавателя иска да я усложня малко с цел security.
По-точно иска криптиране на паролата на юзъра от страна на клиента, с цел да не се предава като plain text от клиента към сървъра.
Каза да търся за Challenge-response authentication.
Това, което разбрах от разни сайтове е, при submit на формата паролата да се хешира, например с md5.
Обаче не ми е ясно как да го постигна.
Намерих някакви саморъчно писани javascript функции за MD5, обаче не знам колко мога да разчитам на тях.
Като плясна функцията в някакъв js файл евентуалния атакуващ няма ли да може да види алгоритъма и да измисли обратен?
Как ще се справи функцията с пароли, писани на кирилица, пароли със space и специални символи *&#@$%!?
Някой занимавал ли се е с подобни простотии?
Предложих му да ползвам един SSL, ама не иска :(




Потребителски аватар
Adnan
Мнения: 3536
Регистриран на: Чет 08 фев 2007 14:36
Автомобил:
Двигател:
Местоположение: София
Контакти:

Re: Нужна ми е помощ от програмист - Challenge-response auth.

Мнениеот Adnan » Чет 29 окт 2009 13:38


А защо изобщо трябва да се използва отделна таблица с усернаме и парола. Защо не се използват усер и парола на самия сървър? Преди и аз правих всякакви криптове и бла бла но сега само използвам една таблица къде държа единствено усернаме и ниво на достъп която таблица се пълни с тригер от създаването на самия усер към сървъра.
Само като пример защо не се опиташ да промениш базата МС-СКЮЛ с пхп много лестно се коннектва към сървъра а ще ползваш пълната функционалсност без криптове.


Потребителски аватар
Ivailo
Мнения: 9497
Регистриран на: Пет 27 апр 2007 15:21
Автомобил: VW Golf mk3
Двигател: AAZ
Местоположение: София/Видин
Контакти:

Re: Нужна ми е помощ от програмист - Challenge-response auth.

Мнениеот Ivailo » Чет 29 окт 2009 13:40


Нищо не разбрах.
Без парола - как ще разбера де факто, че това е реалния потребител?


Потребителски аватар
Ivailo
Мнения: 9497
Регистриран на: Пет 27 апр 2007 15:21
Автомобил: VW Golf mk3
Двигател: AAZ
Местоположение: София/Видин
Контакти:

Re: Нужна ми е помощ от програмист - Challenge-response auth.

Мнениеот Ivailo » Чет 29 окт 2009 13:52


Adnan не ме е разбрал :)
Целта е след клик на submit бутона паролата да се хешира още преди да е тръгнала към сървъра.


Потребителски аватар
Adnan
Мнения: 3536
Регистриран на: Чет 08 фев 2007 14:36
Автомобил:
Двигател:
Местоположение: София
Контакти:

Re: Нужна ми е помощ от програмист - Challenge-response auth.

Мнениеот Adnan » Чет 29 окт 2009 13:56


ISRalien написа:Adnan не ме е разбрал :)

Който пише приложения само на Вин така е :oops:


Потребителски аватар
chefito
Мнения: 9527
Регистриран на: Сря 02 фев 2005 12:41
Автомобил:
Двигател:
Местоположение: Пловдив

Re: Нужна ми е помощ от програмист - Challenge-response auth.

Мнениеот chefito » Чет 29 окт 2009 14:10


он събмит > взимаш валуето > javascript хешира в md5 > и пътува хеширана....всички хеширащи механизми са затова хеширащи, а не реверсибъл...

п.с. сам си стигнал до отговора....


Потребителски аватар
vw_golf_4_tdi
Мнения: 1647
Регистриран на: Чет 09 юли 2009 23:31
Автомобил:
Двигател:
Местоположение: Varna
Контакти:

Re: Нужна ми е помощ от програмист - Challenge-response auth.

Мнениеот vw_golf_4_tdi » Чет 29 окт 2009 14:16


http://pajhome.org.uk/crypt/md5/contrib/md5_crypt.js

имай впредвид, че дори да е хеширана през md5, имаш salt и по нея могат да ти я декриптират.
мислех си за Diffie-Hellman, но като гледах в нета... javascript-a щи умре ако почне да генерира такива числа.
единственият сигурен вариант е SSL

btw кажи на учителя си, че от гледна точка на сигурност за нищо не става.

http://209.85.135.132/search?q=cache:O7 ... clnk&gl=bg


Потребителски аватар
Ivailo
Мнения: 9497
Регистриран на: Пет 27 апр 2007 15:21
Автомобил: VW Golf mk3
Двигател: AAZ
Местоположение: София/Видин
Контакти:

Re: Нужна ми е помощ от програмист - Challenge-response auth.

Мнениеот Ivailo » Пет 30 окт 2009 11:04


chefito написа:он събмит > взимаш валуето > javascript хешира в md5 > и пътува хеширана....всички хеширащи механизми са затова хеширащи, а не реверсибъл...

п.с. сам си стигнал до отговора....

За това е Challenge-response, защото сървъра подава challenge, демек накакъв salt, клиента го конкатенира с паролата, минава през MD5 или SHA1, и го връща на сървъра (response). Така го иска.

Друг даскал ми каза да видя логин-а на yahoo. Е, гледам го, във формата си има едно поле challenge с някъв стринг.. Он събмит го конкатенира с паролата и го праща.
Е ОК. Така сървъра никога не разбира паролата... Няма лошо.
При регистрация на тоя юзър му се дава някакъв salt, който сървъра си записва в базата. Ама как аджеба преди логин сървъра ще знае кой юзър иска да се логне, та да му прати съответния salt?
Ако при регистрация (и при смяна на паролата) сървъра разбира паролата, ще е много по-лесно, ама за тая цел трябва да се предава като plain text..


Потребителски аватар
Garion
Мнения: 145
Регистриран на: Вто 15 апр 2008 11:33
Автомобил:
Двигател:
Местоположение: София

Re: Нужна ми е помощ от програмист - Challenge-response auth.

Мнениеот Garion » Пет 30 окт 2009 11:58


ISRalien написа:За това е Challenge-response, защото сървъра подава challenge, демек накакъв salt, клиента го конкатенира с паролата, минава през MD5 или SHA1, и го връща на сървъра (response). Така го иска.


Както каза колегата по-горе сам си си отговорил на въпроса ;)
Лепиш паролата и салт-а, правиш хеш и пращаш. МД5 алгоритми с лопата да ги ринеш из нета :)
Аз бих направил нещо такова:
md5(md5(salt).md5(password))

На колегата по-горе, не знам колко разбираш и не искам да те обидя, но мисля че не си прав.
По салт-а не може да декриптират паролата, напротив, това е случайно избран стринг, който има
за цел да затрудни брутфорсването на добре познатите пароли, които ги има из така наречените
речници :) Другата му цел е да предотврати man in the middle атаки - т.е. ако просто пратиш
хеш на паролата до сървъра, то този хеш ще е винаги един и същ и трето лице може да го използва
без дори да има нужда да научава паролата...

За Diffie-Hellman забравете просто... първо трябва библиотека като OpenSSL, второ сами трябва да
имплементирате протокола, трето трябва да използвате сертификати или други методи за ауторизация,
което май не е целта на задачата :)

И като за край, не използвайте МД5 :) Иначе за задачи по университетите няма проблем, целта е да
се види дали можеш да мислиш :)


Потребителски аватар
Ivailo
Мнения: 9497
Регистриран на: Пет 27 апр 2007 15:21
Автомобил: VW Golf mk3
Двигател: AAZ
Местоположение: София/Видин
Контакти:

Re: Нужна ми е помощ от програмист - Challenge-response auth.

Мнениеот Ivailo » Пет 30 окт 2009 15:27


Добре де, мен ми е ясно как да хеширам, намерих разни JS функции и за SHA1.
Проблема е, като клиента прати хеша, сървъра с какво да го сравни, ако не знае предварително паролата?

Т.е.
1. Юзъра се регистрира.
2. Паролата тръгне към сървъра като plain text, сървъра разбира паролата и натам ясно. Проблема е, че тогава може да се "чуе" паролата.
3. Сървъра записва паролата като SHA1 хеш.
4. Юзъра опитва да се логне. Сървъра генерира форма с hidden поле "challenge", със стойност някакъв хеш от рандом число.
5. Юзъра пише паролата си и цъка на бутона. Преди да се submit-не формата се генерира SHA1(password.challenge) чрез javascript и реално то се изпраща към сървъра.
6. Сървъра прави хеш SHA1(password.challenge) и сравнява него, с изпратения от юзъра.
7. Ако са еднакви юзъра се логва.


Потребителски аватар
Garion
Мнения: 145
Регистриран на: Вто 15 апр 2008 11:33
Автомобил:
Двигател:
Местоположение: София

Re: Нужна ми е помощ от програмист - Challenge-response auth.

Мнениеот Garion » Пет 30 окт 2009 15:45


ISRalien написа:Добре де, мен ми е ясно как да хеширам, намерих разни JS функции и за SHA1.
Проблема е, като клиента прати хеша, сървъра с какво да го сравни, ако не знае предварително паролата?

Т.е.
1. Юзъра се регистрира.
2. Паролата тръгне към сървъра като plain text, сървъра разбира паролата и натам ясно. Проблема е, че тогава може да се "чуе" паролата.
3. Сървъра записва паролата като SHA1 хеш.
4. Юзъра опитва да се логне. Сървъра генерира форма с hidden поле "challenge", със стойност някакъв хеш от рандом число.
5. Юзъра пише паролата си и цъка на бутона. Преди да се submit-не формата се генерира SHA1(password.challenge) чрез javascript и реално то се изпраща към сървъра.
6. Сървъра прави хеш SHA1(password.challenge) и сравнява него, с изпратения от юзъра.
7. Ако са еднакви юзъра се логва.


Ами не знам каква точно ти е задачата, сървъра ти ли го правиш, само фронтенда ли правиш, имаш ли установен протокол или ти го създаваш...
Помисли кое е най-простото решение. Първото за което се сещам е сървъра да прати паролата на мейл при регистрация. Но както ти казах изобщо не съм наясно какво точно се иска от теб ;)


Потребителски аватар
Ivailo
Мнения: 9497
Регистриран на: Пет 27 апр 2007 15:21
Автомобил: VW Golf mk3
Двигател: AAZ
Местоположение: София/Видин
Контакти:

Re: Нужна ми е помощ от програмист - Challenge-response auth.

Мнениеот Ivailo » Пет 30 окт 2009 16:39


Трябва да направя акаунтинг система за сайт. Стандартните неща се използват - уеб сървър Apache, PHP и MySQL.


Потребителски аватар
vw_golf_4_tdi
Мнения: 1647
Регистриран на: Чет 09 юли 2009 23:31
Автомобил:
Двигател:
Местоположение: Varna
Контакти:

Re: Нужна ми е помощ от програмист - Challenge-response auth.

Мнениеот vw_golf_4_tdi » Съб 31 окт 2009 1:45


Garion написа:
ISRalien написа:За това е Challenge-response, защото сървъра подава challenge, демек накакъв salt, клиента го конкатенира с паролата, минава през MD5 или SHA1, и го връща на сървъра (response). Така го иска.


Както каза колегата по-горе сам си си отговорил на въпроса ;)
Лепиш паролата и салт-а, правиш хеш и пращаш. МД5 алгоритми с лопата да ги ринеш из нета :)
Аз бих направил нещо такова:
md5(md5(salt).md5(password))

На колегата по-горе, не знам колко разбираш и не искам да те обидя, но мисля че не си прав.
По салт-а не може да декриптират паролата, напротив, това е случайно избран стринг, който има
за цел да затрудни брутфорсването на добре познатите пароли, които ги има из така наречените
речници :) Другата му цел е да предотврати man in the middle атаки - т.е. ако просто пратиш
хеш на паролата до сървъра, то този хеш ще е винаги един и същ и трето лице може да го използва
без дори да има нужда да научава паролата...

За Diffie-Hellman забравете просто... първо трябва библиотека като OpenSSL, второ сами трябва да
имплементирате протокола, трето трябва да използвате сертификати или други методи за ауторизация,
което май не е целта на задачата :)

И като за край, не използвайте МД5 :) Иначе за задачи по университетите няма проблем, целта е да
се види дали можеш да мислиш :)


вземи малко прочети какво е "сол" в криптирането!!!!
пусни 5 пъти md5 на един и същи стринг без сол и ще видиш, че резултата е корено различен.
целта на солта е един и същи стринг при хеширане през md5, sha да излиза по 1,1 начин!!!!
и точно по солта могат да ти декриптират паролата.
прочети и малко за brute force atack, има си една програма - john the reaper.
писна ми пишман програмисти да обясняват на администраторите за сигурност!!!

единственият вариант познат в науката за обмяна на пароли по несигурен канал се нарича Diffie-Hellman
има го в wiki, прочети и за него!!!
има направени скриптове за dh под java. проблема е не липса на библиотеки, а това че за генериране на dh се използват доста големи числа и пресмятания.
за не-натоварена система, пускане на dh през openssl отнема около минута. сметни сам на кой потребител би му се чакало всеки път да му забива браузъра за по 1-2 мин?!

реализирайки горепосочените варианти без ssl или dh, не представляват вмъкване на елемент на сигурност а чисто и просто хвърляне на пясък в очите на хората. една заблуда!

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

виждам, че сте забъркали и chap в тая каша. chap и salt са различни неща. chap се базира на идеята, че двете страни имат предварително известни един на друг стрингове. особеността на chap е, че на определен момент се подават chalange заявки на която другата страна трябва да отговори, целта е да се предотврати подслушване на канала и улавяне на паролата. chap не е механизъм за криптиране на информация, а за удостоверяване и валидация, т.н. AAA (authorization, authentication and accounting).


Потребителски аватар
Ivailo
Мнения: 9497
Регистриран на: Пет 27 апр 2007 15:21
Автомобил: VW Golf mk3
Двигател: AAZ
Местоположение: София/Видин
Контакти:

Re: Нужна ми е помощ от програмист - Challenge-response auth.

Мнениеот Ivailo » Нед 01 ное 2009 9:41


Не се карайте!
CHAP, CRAM, както искате го наричайте, трябва ми за курсовата.
Ако работя по проект на голяма фирма със сигурност ще ползвам SSL.


Потребителски аватар
Garion
Мнения: 145
Регистриран на: Вто 15 апр 2008 11:33
Автомобил:
Двигател:
Местоположение: София

Re: Нужна ми е помощ от програмист - Challenge-response auth.

Мнениеот Garion » Нед 01 ное 2009 17:20


vw_golf_4_tdi написа:
вземи малко прочети какво е "сол" в криптирането!!!!
пусни 5 пъти md5 на един и същи стринг без сол и ще видиш, че резултата е корено различен.
целта на солта е един и същи стринг при хеширане през md5, sha да излиза по 1,1 начин!!!!
и точно по солта могат да ти декриптират паролата.
прочети и малко за brute force atack, има си една програма - john the reaper.
писна ми пишман програмисти да обясняват на администраторите за сигурност!!!

единственият вариант познат в науката за обмяна на пароли по несигурен канал се нарича Diffie-Hellman
има го в wiki, прочети и за него!!!
има направени скриптове за dh под java. проблема е не липса на библиотеки, а това че за генериране на dh се използват доста големи числа и пресмятания.
за не-натоварена система, пускане на dh през openssl отнема около минута. сметни сам на кой потребител би му се чакало всеки път да му забива браузъра за по 1-2 мин?!

реализирайки горепосочените варианти без ssl или dh, не представляват вмъкване на елемент на сигурност а чисто и просто хвърляне на пясък в очите на хората. една заблуда!

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

виждам, че сте забъркали и chap в тая каша. chap и salt са различни неща. chap се базира на идеята, че двете страни имат предварително известни един на друг стрингове. особеността на chap е, че на определен момент се подават chalange заявки на която другата страна трябва да отговори, целта е да се предотврати подслушване на канала и улавяне на паролата. chap не е механизъм за криптиране на информация, а за удостоверяване и валидация, т.н. AAA (authorization, authentication and accounting).



Ай, ай.. ядосахме админчето.. пич ти на 15 ли си та говориш така :)

vw_golf_4_tdi написа:пусни 5 пъти md5 на един и същи стринг без сол и ще видиш, че резултата е корено различен.


Тука уби всичко детско в мен :) Няма нужда да казвам каквото и да е повече :Д



Върни се в “ОФФ-Топик - електроника, техника, обзавеждане”

Кой е на линия

Потребители, разглеждащи този форум: ktamen и 43 госта