Czy to jest bezpieczne (Md5)

0

Witam
Mam zamiar napisać program, który będzie przechowywał hasła...
Chcę aby dostepu do wpisów chroniło jedno, główne hasło. Zakoduje je algorytmem md5 (moduł pobrałem ze strony 4p - Dimka Maslov md5.pas).

Chcę żeby to działało tak.
Przy pierwszym uruchomieniu podaję hasło. Program je hashuje md5 i wynik zapisuje do pliku (function MD5String(const S: string): TMD5Digest; i to w string'a -> function MD5DigestToStr(const Digest: TMD5Digest): string;)

Teraz przy otwieraniu programu użytkownik proszony jest o podanie hasła.
Hasło to jest hashowane i następnie porównywane z tym zapisanym w pliku.

CZY TO SIĘ TAK ROBI? CZY TO JEST BEZPIECZNE?
Bardzo proszę o konstruktywne porady.
Pozdr, pepe

0

Jest względnie bezpieczne, bo nic nie jest bezpieczne. Zawsze ktoś może walnąć bruteforca, i jeśli ma kilkaset lat wolnego czasu to może złamie ;) .

0

Dobrze myslisz i wszystko bedzie ok, nie powinno byc zadnych zgrzytow :)

0
Sheitar napisał(a)

Jest względnie bezpieczne, bo nic nie jest bezpieczne. Zawsze ktoś może walnąć bruteforca, i jeśli ma kilkaset lat wolnego czasu to może złamie ;) .
oj byłbym ostrożny z tym kilkaset, jesli hasło bedzie krótkie, powiedzmy 6-8 znaków to z tych kilkuset lat robi się kilkanaście - kilkaset godzin na zwykłym pececie...

0
Qyon napisał(a)

oj byłbym ostrożny z tym kilkaset, jesli hasło bedzie krótkie, powiedzmy 6-8 znaków to z tych kilkuset lat robi się kilkanaście - kilkaset godzin na zwykłym pececie...

Na studiach kazali głównie wyliczać koszty pesymistyczne, a nie optymistyczne.

0

To też chyba zależy jak je zapiszez w pliku, bo jak na przyklad w INI :)

[Haslo]
Hash=jakis_tam_hash

To można łatwo się domyślić i wygenerować własny hash do swojego hasła i podmienić ten ciąg.

0
Cool_Programming napisał(a)

To też chyba zależy jak je zapiszez w pliku, bo jak na przyklad w INI :)

[Haslo]
Hash=jakis_tam_hash

To można łatwo się domyślić i wygenerować własny hash do swojego hasła i podmienić ten ciąg.

bardzo słuszna uwaga...
A jak można to obejść? ( ładnie i bezboleśnie ;) ) Rzeczywiście, gdzieś muszę trzymać to zahashowane hasło... Jak to się profesjonalnie robi?
Pozdr

0

Też się do tego przymierzam i dokładnie ten sam problem rotrząsałem, na razie wymyśliłem że można by to jeszcze zaszyfrować, nawet bardzo prostym algorytmem (zwykłe przestawianie znaków powinno wystarczyć).
Oczywiście to tylko moja teoria.

0

ja tez robie przez md5, tyle ze nie zapisuje tego jako
[haslo]
hash_md5_hasla = costam
tylko raczej "po cichu" w rejestrze i to jeszcze zaxorowane... albo inaczej szyfrowane...

Aha, taka uwaga: dla kogos kto bedzie chcial skrackowac to bedzie chwila zeby cos zmienic w funkcji porownujacej hash wpisanego hasla z ciagiem wydobytym... :]

0
migajek napisał(a)

ja tez robie przez md5, tyle ze nie zapisuje tego jako
[haslo]
hash_md5_hasla = costam
tylko raczej "po cichu" w rejestrze i to jeszcze zaxorowane... albo inaczej szyfrowane...

Aha, taka uwaga: dla kogos kto bedzie chcial skrackowac to bedzie chwila zeby cos zmienic w funkcji porownujacej hash wpisanego hasla z ciagiem wydobytym... :]

Moglbyś rozwinąć tę uwagę?... Bo mi wychodzi na to, że nie ma sensu zabezpieczać programu...

Mówisz, że zapisujesz w rejestrze. Ok. Ale potem i tak porównujesz, tak?
Hmm, same problemy...
Pozdr

0
Pepe napisał(a)

Moglbyś rozwinąć tę uwagę?

Nie moglbym - totalnie sie na tym nie znam... Ale wiem ze jest to stosunkowo latwe jesli ktos ma praktyke

Pepe napisał(a)

Bo mi wychodzi na to, że nie ma sensu zabezpieczać programu...

Mozliwe. Jakbys nie zauwazyl polowa polakow jedzie na nielegalnym Windowsie. Jesli specjalisci z M$ nie potrafili tego zabezpieczyc, to co my mamy zrobic?

Pepe napisał(a)

Ale potem i tak porównujesz, tak?

A jak inaczej? ;)

Pepe napisał(a)

Hmm, same problemy...

I to jest wlasnie piekne w programowaniu ;)

0

Jabym caly plik zakodowal tym glownym haslem, a pierwsze kilka bajtow pliku to musi byc jakas stala. Wtedy uzywasz halsa do odszyfrowania pliku, a jak to nie to samo haslo to albo blad ( ktory wylapiesz albo sieczka ktora sprawdzisz po pierwszych kilka bajtach ) radze uzywac RSA 256 bo RSA 128 juz zlamalem - 8 min na zwyklym PC. Na temat Md5 nic nie wiem trza pomyslec jak to sie lamie.

0

MD5 jest hashem i tego sie w teorii nie lamie :]

0

W teorii również nie należy wykorzystywać go do zabezpieczania hasła.

0
Qyon napisał(a)
Sheitar napisał(a)

Jest względnie bezpieczne, bo nic nie jest bezpieczne. Zawsze ktoś może walnąć bruteforca, i jeśli ma kilkaset lat wolnego czasu to może złamie ;) .
oj byłbym ostrożny z tym kilkaset, jesli hasło bedzie krótkie, powiedzmy 6-8 znaków to z tych kilkuset lat robi się kilkanaście - kilkaset godzin na zwykłym pececie...
a nawet minut ;) wystarczy użyć google - najlepszy sposób na odzyskiwanie haseł ;) a co do miejsca przechowywania haseł to hm.. ciężej jest zapisaś gdzieś hasło niż je wygenerować, ale imho katalog usera w documents and settings będzie dobrym miejscem

0
Bełdzio napisał(a)
Qyon napisał(a)
Sheitar napisał(a)

Jest względnie bezpieczne, bo nic nie jest bezpieczne. Zawsze ktoś może walnąć bruteforca, i jeśli ma kilkaset lat wolnego czasu to może złamie ;) .
oj byłbym ostrożny z tym kilkaset, jesli hasło bedzie krótkie, powiedzmy 6-8 znaków to z tych kilkuset lat robi się kilkanaście - kilkaset godzin na zwykłym pececie...
a nawet minut ;) wystarczy użyć google - najlepszy sposób na odzyskiwanie haseł ;) a co do miejsca przechowywania haseł to hm.. ciężej jest zapisaś gdzieś hasło niż je wygenerować, ale imho katalog usera w documents and settings będzie dobrym miejscem

Hmm, zatem jak się robi profesjonalnie hasło do programu? Otwarcie Programu. Wpisanie hasła. Jego weryfikacja.
Jeśli nie md5 to co? I jak?
Już w końcu nie wiem.
Pozdr

0
Pepe napisał(a)

Teraz przy otwieraniu programu użytkownik proszony jest o podanie hasła.
Hasło to jest hashowane i następnie porównywane z tym zapisanym w pliku.

Podobnie zrobiłem u siebie tyle, że hasło "rozciągałem" do 64 bajtów i wtedy szyfrowałem (RC5).

0
0x666 napisał(a)

Podobnie zrobiłem u siebie tyle, że hasło "rozciągałem" do 64 bajtów i wtedy szyfrowałem (RC5).

Hm, ale takie coś nie zda egzaminu, bo skoro szyfrujesz hasło, to prawdopodobnie zapisujesz hasło do odszyfrowywania w swoim programie. Nawet jeśli zrobiłeś to jeszcze inaczej to pamiętaj, że atak brutalforce i tak złamie hasło i tak.
Najlepiej nie korzystać z łatwo dostępnych algorytmów.

0
-=PcSA=- napisał(a)

Hm, ale takie coś nie zda egzaminu, bo skoro szyfrujesz hasło, to prawdopodobnie zapisujesz hasło do odszyfrowywania w swoim programie.

Nie. 64 bajtowe hasło/klucz jest szyfrowane tym samym, wprowadzonym przez użytkownika hasłem i zapisane w pliku (a dokładniej w archiwum). Więc w programie nie ma żadnego oddzielnego klucza do szyfrowania wprowadzonych haseł.

Nawet jeśli zrobiłeś to jeszcze inaczej to pamiętaj, że atak brutalforce i tak złamie hasło i tak

No w ten sposób to większość szyfrów złamiesz ;) tyle, że jest to operacja czasochłonna, zbyt kosztowna i nie zawsze warta zachodu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1