Archiwum działu Ogólne (posty do 12.2007) - Ulepszenie kodowania hasel w bazie danych
Przemo - 07-01-2006, 19:48 Temat postu: Ulepszenie kodowania hasel w bazie danych Po bardzo burzliwej dyskusji na GG z Widmo i z FanFataL'em postanowilem napisac ten temat aby zapytac was o zdanie. Oni niestety nie byli w stanie wysunac konkretnego argumentu przeciwko mojemu pomyslowi, choc argumentów mieli kilka i bardzo są temu przeciwni.
Chodzi o kodowanie hasel userow w bazie danych, w tej chwili jest ono kodowane md5('haslo')
Rozkodowanie hasla 4-ro znakowego zajmuje kilka sekund, 5-cio znakowego znacznie dłużej ale też jest do złamania. Zagrożenie pojawia się, gdy baza danych dostanie się w niepowołane ręce, może to nastapić na skutek ataku, lub zwykłej kradzieży tabeli userów przez admina serwera, który ma zamiar np. za tydzień zwolnic się z pracy i postanawia sobie zaszaleć. Na pewno odkoduje kilkaset haseł, z czego wiele będzie takie samo jak np. do e-mail'a lub GG które jest w komórce obok, po wejsciu na skrzynke (gdy user nie kasuje emailow na serwerze) moze znalezc dalsze jego konta do atakowania. Generalnie skutki dla userow moga być fatalne.
Moj pomysl jest taki (i juz to zrobilem w wersji beta8) zeby zapisywac haslo w postaci md5 * 10000
Czas gerowania takiego hasla na celeronie 900 to 0.8 sekundy. Generowanie odbywa sie tylko w przypadku:
- Rejestracji
- Zmiany hasla
- Ręcznego logowania z formularza
Nie jest generowane podczas automatycznego logowania z ciastek gdyz w w nowych wersjach phpBB2 w ciastkach nie ma juz zapisywanego hasla w formie md5() tylko specialny unikalny klucz
Jakie byly argumenty przeciw:
1. Obciazenie serwera
2. Tak się nie robi
3. Wystąpienie kolizji
Ad1. Nie będzie obciążenia, jak pisałem trwa to ułamek sekundy i będzie używane średnio raz na 5 dni na usera
Ad2. A co mnie to obchodzi? Jakby kazdy tak myslal to nikt by nic nowego nie wymyslil
Ad3. No i co z tego??? Niech wystąpi kolizja jaki będzie jej objaw? Żaden.
Chciałbym się dowiedziec co Wy sądzicie na ten temat.
Dodatkowo zastanawiam się aby zamiast md5 użyć sha1 również razy 10000 Tutaj tez były argumenty przeciw lecz w tym przypadku się nie kłucę bo nie znam dobrze zasady działania sha1
nasedo - 07-01-2006, 19:57
Przemo napisał/a: | 1. Obciazenie serwera | ktos ma bardzo popularne forum, powiedzmy 100-200 zalogowanych online, wezmy z tego chocby 10%, ktore moze nie trzymac na kompie ciastek / jest nowe na forum i loguje sie pierwszy raz, czy tez wlasnie tych rejestrujacych sie dopiero. a 0.8s x 10 czy 20 to juz jest roznica.. i tym sposobem wracamy do punktu wyjscia, gdy to zapowiedzi o tym, ze 1.12 przestanie obciazac serwery i bedzie szybsza niz dotychczasowe wersje przestaja byc aktualne.. czyli final na wielkanoc? moim zdaniem juz za duzo tych dodattkowych modow zapychajacych tylko kod, gdzie i tak 50-60% nowosci zostanie wylaczone..
Paszczak000 - 07-01-2006, 19:57
odpada. wtedy łamanie hashy za kasę pójdzie w niepamięć.
a po co razy 1000? nie lepiej zrobić może:
hasło test:
base64: dGVzdA==
i juz base zawiera znaki specjalne, duże małe literki i md5 praktycznie nie do złamania.
a może z md5() przejść na inny szyfr?
przecinek - 07-01-2006, 20:01
0,8s, jak sobie wyobrażasz aktualizację istniejących forów mających kilkanaście tysięcy użytkowników? I po co 10000, lepiej liczbę z zakresu 1-10000 zapisaną w config.php i ustalaną przy zakładaniu/aktualizacji — wtedy ktoś, kto dostanie się tylko do bazy, nie będzie jej znał.
MakArios - 07-01-2006, 20:02
IMO rozwiązanie Paszczaka byłoby lepsze, ale nie wyznaję się aż tak na zabezpieczeniach . Tak czy inaczej obciążenie faktycznie by wzrosło, szczególnie przez pierwsze kilka dni po aktualizacji do 1.12.0, a więc zgadzam się z przedmówcami, Widmem i FanFatalem.
niczeq - 07-01-2006, 20:04
ja bylbym za
bezpieczenstwo userów to podstawa
Paszczak000 - 07-01-2006, 20:04
Przemo, pamiętaj, że jesteś kompatybilny z phpBB. Jak zrobisz deinstalację do czytsego phpBB? Będziesz zamieniał md5()*1000 na md5()? No chyba, że wywalasz deinstalator.... a update z czystego do Twojej wersji, to o czym pisze przecinek?
BUSTED
Widmo - 07-01-2006, 20:06
Przemo napisał/a: | Rozkodowanie hasla 4-ro znakowego zajmuje kilka sekund, 5-cio znakowego znacznie dłużej ale też jest do złamania |
tak, jezeli dzialasz systemem
wez string, zakoduj kilka razy MD5 jezeli wynik == hashowi -> podaj haslo
ale dla 5,6 znakow nie bedzie juz tak prosto.
juz na wstepie mowie: jestem za zrobieniem podwójnego hashowania md5.
mądry admin ustawi minimalna ilosc znakow w hasle na 6 i bedzie spokoj.
Przemo chce zastosować md5 10 tysiecy razy. Nie ma to najmniejszego sensu...
Uwazam ze uzycie tyle razy md5 mimo wszystko obciazy serwer.
po drugie - po co - efekt bedzie ten sam co przy uzyciu dwóch md5...
Przemo napisał/a: | Na pewno odkoduje kilkaset haseł, z czego wiele będzie takie samo jak np. do e-mail'a lub GG które jest w komórce obok, po wejsciu na skrzynke (gdy user nie kasuje emailow na serwerze) moze znalezc dalsze jego konta do atakowania. generalnie skutki dla userow moga być fatalne. |
po co mialo by mu sie chciec? - nie wazne
dlatego to USER powienien dbac o swoje dobrze dobrane haslo - i jezeli ktos mu sie wlamie to powinien miec pretensje tylko do siebie...
Podsumowywyjąc - dla mnie jest to zbyt innowacyjne (10.000 razy md5)
i poniekad nieprzewidywalne...
niczeq - 07-01-2006, 20:07
Paszczak000 napisał/a: | Przemo, pamiętaj, że jesteś kompatybilny z phpBB. Jak zrobisz deinstalację do czytsego phpBB? Będziesz zamieniał md5()*1000 na md5()? No chyba, że wywalasz deinstalator.... a update z czystego do Twojej wersji, to o czym pisze przecinek?
BUSTED |
kto normalny (nie obrazajac nikogo;-)) bedzie chcial zrezygnowac z wersji by Przemo ?
Przemo - 07-01-2006, 20:07
nasedo, odnosnie obciążenia to nawet nie ma o czym mówić, gdzie masz forum gdzie w czasie 5 minut loguje się ręcznie 20 osób? Chyba tylko fora giganty tupu phpbb.com moge zrobić 5000 w razie czego
Paszczak000, wbrew pozorom to nie utrudnia wogóle Zwiększa tylko czas łamania o 100% podobnie jak md5() * 2
przecinek, to tez pozory Po tej zmianie nikt nie odczuje różnicy Podczas logowania jesli haslo usera jest pojedynczym md5() zostanie w bazie zastapione nowym * 10000 Problem jest tylko w przypadku odinstalowywania modyfikacje, wtedy uzytkownicy beda musieli korzystac z generowania nowych hasel, ale mysle, ze nie ma co brac tego za bardzo pod uwage.
Trucker - 07-01-2006, 20:08
ja jestem przeciw; jak ktos ma wolnego kompa to te procesy mogą zająć wieki wieków
Widmo - 07-01-2006, 20:09
Paszczak000 napisał/a: | hasło test:
base64: dGVzdA==
i juz base zawiera znaki specjalne, duże małe literki i md5 praktycznie nie do złamania. |
sensowne - nawet bardzo! przecinek napisał/a: | 0,8s, jak sobie wyobrażasz aktualizację istniejących forów mających kilkanaście tysięcy użytkowników? I po co 10000, lepiej liczbę z zakresu 1-10000 zapisaną w config.php i ustalaną przy zakładaniu/aktualizacji — wtedy ktoś, kto dostanie się tylko do bazy, nie będzie jej znał. |
utworzysz configa od nowa i co - nie bedziesz pamietal ej liczby i cale logowanie idzie sie kochać...
[ Dodano: 07-01-2006, 20:11 ]
dodalem ankiete...
Przemo - 07-01-2006, 20:11
Widmo napisał/a: | ale dla 5,6 znakow nie bedzie juz tak prosto. | Czas łamania hasła jest dokładnie tyle razy większy ile razy powtórzyłeś md5() Ty chcesz zastosowac tylko dwa razy aby zwiększyć trudnośc łamania haseł 5-6 znaków a ja chce zastosować 10000 razy aby uniemożliwić całkowicie łamanie haseł 4 i więcej znaków
nasedo - 07-01-2006, 20:12
Przemo napisał/a: | nasedo, odnosnie obciążenia to nawet nie ma o czym mówić, gdzie masz forum gdzie w czasie 5 minut loguje się ręcznie 20 osób? Chyba tylko fora giganty tupu phpbb.com moge zrobić 5000 w razie czego | no wlasnie te giganty np, czy warezy (chociaz zadko kiedy stoja na phpbb, i jesli ma mi sie strona 20s generowac to im sie nie dziwie ) chocby byl to 1% wszystkich uzytkownikow, to chcesz ich sobie odpuscic, niech wracaja na zwykle phpbb? Trucker napisał/a: | ja jestem przeciw; jak ktos ma wolnego kompa to te procesy mogą zająć wieki wieków | omg.. chodzi o serwer, nie o Twojego kompa..
Paszczak000 - 07-01-2006, 20:13
Przemo, nie utrudnia? nie rozumiem. skoro phpBB hashuje raz... a Ty przykładowo 1000 razy.. to odinstalowując modyfikację musisz hasło (które jest zahashowane 1000 razy) podać w formie zahashowanej 1 raz. Ja nie umiem rozhashować 999 razy ciągu znaków długości 32
|
|
|