Jak przechowywać hasło?

0

Witam
Piszę aplikcaję, w której użytkownik musi podać hasło aby potem mieć dostęp do plików, które będą szyfrowane na podstawie tego hasła. I teraz pojawia się probelem bo gdzieś musze zapisać to hasło. Może ktoś wie czy istnieje jakiś bezpieczny sposób przechowania hasła ?

0

Po co je zapisywac? Jezeli chcesz je zapisywac tylko po to, zeby sprawdzic, czy uzytkownik wpisal poprawne to zapisuj skrot hasla (MD5, SHA-1, 5, itp). Ten sposob jest bezpieczny, bo odwrocenie skrotu jest niemozliwe, a znalezienie hasla o takim samym skrocie bardzo trudne.

0

Dzięki za radę [soczek]

0
johny_bravo napisał(a)

bo odwrocenie skrotu jest niemozliwe
ekhm

0

Taaa, za pomoca bazy danych to nawet szybko liczby pierwsze mozna rozkladac :P Teoretycznie odwrocenie skrotu jest niemozliwe, bo to funkcja jednostronna - fakt, ze w powyzszym to ma male znaczenie, ale jednak :)

0

Nawet bez bazy można odwrócić - no ale metodą brutalną, co zajmuuuuuuje czaaaaaaaasu dużo.

0
Marooned napisał(a)

Nawet bez bazy można odwrócić - no ale metodą brutalną, co zajmuuuuuuje czaaaaaaaasu dużo.

TEORETYCZNIE jest nikla szansa uzyskania tego samego hasla dokladnie, z ktorego wygenerowany skrot. Wieksza znalezienia innego hasla, co generuje ten sam skrot - wiec praktycznie niemozliwe odwrocenie :) (odwrocenie w sensie haslo ->skrot, skrot -> to samo haslo)

0

no... niezupełnie...
Jeśli ktoś pisze jakieś hasło to nie będzie to od razu cały "Pan Tadzio" tylko krótka fraza. Prawdopodobieństwo kolizji dla krótkich fraz jest absolutnie znikome, ba nawet zerowe, więc pierwsza ze znalezionych fraz z identycznym hashem z prawdopodobieństwem nieskończenie bliskim 1 będzie identyczna z hasłem oryginalnym.

0

No tak, musze sie zgodzic. W sumie schodzimy z tematu - faktem jest, ze jest to jeden z bezpieczniejszych sposobow porownywania hasla. :)

0
johny_bravo napisał(a)

odwrocenie skrotu jest niemozliwe, a znalezienie hasla o takim samym skrocie bardzo trudne.

Brute force czy bazy to nie jest odwracanie tylko znajdowanie hasła. Więc moim zdaniem johny_bravo słusznie napisał i nie wiem po co ta dyskusja. Funkcji skrótu nie da się z założenia odwrócić, bo jest jednostronna. Ale można próbować oszukać. Jeżeli się mylę, to mnie oświećcie, bym w średniowieczu nie krążył.

//dobrze prawisz Kuba :) - M

0

Samo przetrzymywanie hash'y w miejscach ograniczajacych dostep jak np. baza danych powoduje juz wieksze problemy z samym pobraniem tego hash'a. Dobrze tez sie zastanowic nad tym aby wymuszac zmiane hasla co pewien okres czasu.

0

@Dryobates: dzieki za wsparcie, juz zaczynalem watpic w swoje przekonanie o slusznosci racji :)

0

hmm moim skromnym zdaniem to hash haselka mozna trzymac w najzwyklejszym dostepnym pliku, no bo nie ma ukrywac czegos co i tak dla wiekszosci ludzi niewiele sie przyda, poza tym mozna uzyc metody mieszanej np: md5 polaczone z sha i wynik zmiksowany, to skutecznie utrudnia zlamanie, poza tym nie ma co sie ludzic bo bezpieczny hash po prostu nie istnieje - kazda funkcja hashujaca jest okresowa, wiec pytanie nie czy da sie zlamac tylko jak dlugo zajmnie znalezenie okresow w przebiegu danej funkcji...

0

Jest patent, który zastosowałem w moim programie nie tak dawno.

W pliku gdzie trzymany jest hash hasła, jest hash, ale zrobiony dziko tzn. w pliku trzymany jest hash hasła w sha-1 zxorowany z hashem md5 a jako klucz do kodowania użyte jest sha-512 hasła zxorowane z rorlniętym CRC32 hasła o długość hasła mod 32. Działanie takie jest bardzo zryte, dodatkowo dzięki wykorzystaniu rolowania w pamięci jest ciut trudniej zakumać o co w ogóle chodzi.

0

i tak nikt nic nie kuma a cokolwiek byś nie rolował, grillował i lał ketchupem to będzie to tylko nowy rodzaj hashowania któremu równie dobrze można stworzyć bazę "znanych hashy". Jedyna różnica że twój sposób jest unikalny więc raczej nikt nie będzie dla ciebie tylko marnował sporej przestrzeni dyskowej na tego typu dane. Chociaż jak podałeś na forum to już to nie jest unikalne i może ktoś się skusi. Jakkolwiek wydaje mi się że to samo otrzymasz np zapisując hash połączonego hasła z jego odwróconą wersją (md5('ABccBA') zamiast md5('ABc')) a chociaż by ktoś zrozumiał o co chodzi ;P no i komputer by się tyle nie męczył z liczeniem ...

0

jeśli to aplikacja Windowsowa, to problem bezpiecznego sposobu przechowywania haseł/kluczy szyfrujących można rozwiązać za pomocą Data Protection API (DPAPI) i funkcji CryptProtectData. DPAPI szyfruje dane korzystając z klucza generowanego na podstawie konta usera, który wywołuje funkcje DPAPI - tak więc o zarządzanie kluczem martwi się już system operacyjny.

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