Algorytm - kombinacje

Odpowiedz Nowy wątek
2012-09-30 13:05
kryptograf
0

Cześć.
Pisze aplikację, do której będzie trzeba się zalogować. Hasło zaś musi być trzymane na komputerze w osobnym pliku. Siłą rzeczy hasło musi być zaszyfrowane w jakiejś postaci.

Wymyśliłem algorytm, który tworzy 32-literowy ciąg znakowy z hasha danego hasła. Czyli:
Hasło -> hash -> 32-literowy ciąg

gdzie hash != 32-literowego ciągu, jednak posiada te same litery co ten hash i ich liczba również jest taka sama.

Krótko mówiąc aby złamać hasło potrzeba stworzyć kombinacje dla 32 znaków. Oczywiście jeśli hash jest w postaci : "aaaaa...a" to trudno tu mówić o zabezpieczeniu, ale taka sytuacja mieć miejsca nie będzie (ani żadna inna podobnie absurdalna).

Powiedzmy, że ciąg to: "00001122467788899aabbbbbbcccccef".
Ile czasu trzeba by poświęcić na złamanie tego czegoś? Pytam, gdyż program, który piszę nie ma być kryptograficznym Bogiem, a jedynie zabezpieczyć w sposób w miarę sensowny dane użytkownika, tak aby nikt nie miał do nich dostępu po fizycznym dostępie do komputera.

Pozostało 580 znaków

2012-09-30 13:18
1

czyli ten 32-literowy ciąg jest losową permutacją hasha. nie rozumiem jak by to miało działać. czy permutacja jest dla każdego hasła taka sama? jeśli nie, to musisz mieć jakiś algorytm generujący tą permutacje tak, aby aby dla danego hasła zawsze była taka sama. jedyny sposób, aby to miało jakiś sens, to ten algorytm musi być jednostronny - znając go (np. przez dekompilacje programu) i permutacje nie można odtworzyć hasha hasła. czyli de facto robisz hash z hasha. szczerze, nie rozumiem po co się w to bawić... zwyczajny hash z solą powinien w zupełności wystarczyć - skoro systemy linux tak trzymają hasła ;p


#define if(x) if(rand()%6 && (x)) u mad? !user image

Pozostało 580 znaków

2012-09-30 13:23
kryptograf
0

Algorytm działa jak należy. Nie jest on zbyt skomplikowany, ale jednak nieco moich pomysłów w to włożyłem po to aby gotowych narzędzi do deszyfracji nie można było znaleźć.
O algorytm proszę się nie martwić, mnie bardziej ciekawi ile by zajęło przeciętnemu komputerowi stworzenie permutacji 32 znakowej. gdzie algorytm już na wstępie udostępnia potrzebne znaki. Potem jedynie jeszcze trzeba dowiedzieć się co oznacza hash i mamy hasło :)

Po prostu ciekawi mnie prędkość tworzenia 32-znakowej permutacji.

Pozostało 580 znaków

2012-09-30 13:24
3

Pierwsza zasada kryptografii - don't invent it yourself.

edytowany 1x, ostatnio: 0x200x20, 2012-09-30 13:25

Pozostało 580 znaków

2012-09-30 13:25
0

W przypadku implementowania własnych algorytmów związanych z kryptografią należy wykonać rzut kostką K1, by sprawdzić czy za pierwszym razem coś spieprzyłeś...
Użyj jakiś gotowych i sprawdzonych funkcji skrótu, polecam blowfish. Customowe rozwiązania często mają gdzieś straszne wpadki, popularne funkcje skrótu już zostały dokładniej zbadane.


Women were the reason I became a monk - and, ah, the reason I switched back...
edytowany 1x, ostatnio: Demonical Monk, 2012-09-30 13:26

Pozostało 580 znaków

2012-09-30 13:28
0

wszystkich permutacji jest 32! - to powinien wiedzieć uczeń z gimnazjum... chodzi mi to, że jeżeli algorytm generujący permutacje jest słaby (a skoro pytasz się o takie rzeczy pewnie jest słaby), to niedobry haker może łatwo tą permutację odwrócić i uzyskać hash z hasła.


#define if(x) if(rand()%6 && (x)) u mad? !user image
Uczeń z przedszkola od razu. Przypominam, że w dzisiejszych czasach gimnazjum to jeden wielki cyrk w którym nawet trygonometrii nie ma, a społeczeństwo próbuje się tylko ogłupić. - Demonical Monk 2012-09-30 13:52

Pozostało 580 znaków

2012-09-30 18:28
krypto-graf
0

Pierwsza zasada kryptografii - don't invent it yourself.

W życiu o takiej głupocie nie słyszałem. Przecież ktoś zawsze musi być tym pierwszym i wymyślić algorytm. W ten czy inny sposób, z gorszym lub lepszym skutkiem.
Brak nowych pomysłów = brak rozwoju.

Poza tym na świecie systematycznie powstają własnie nowe algorytmy z powodu narastających potrzeb coraz lepszej ochrony danych.

Pozostało 580 znaków

2012-09-30 18:52
3
krypto-graf napisał(a):

Pierwsza zasada kryptografii - don't invent it yourself.

W życiu o takiej głupocie nie słyszałem. Przecież ktoś zawsze musi być tym pierwszym i wymyślić algorytm. W ten czy inny sposób, z gorszym lub lepszym skutkiem.
Brak nowych pomysłów = brak rozwoju.

Poza tym na świecie systematycznie powstają własnie nowe algorytmy z powodu narastających potrzeb coraz lepszej ochrony danych.

Ale są badane przez grupy naukowców obeznanych z tematem i mających dużo wolnego czasu na takie pierdoły. Obecnie wszystkie powszechnie stosowane rzeczy są cholernie skomplikowane. Wynajdując nową funkcję skrótu w momencie kiedy jest ich od ciula i trochę (znacznie lepiej zbadanych niż Twoja inwencja kiedykolwiek będzie) to szukanie sobie wyłącznie guza na głowę.


Women were the reason I became a monk - and, ah, the reason I switched back...
edytowany 1x, ostatnio: Demonical Monk, 2012-09-30 18:52

Pozostało 580 znaków

2012-09-30 19:26
krypto=graf
0

Ale są badane przez grupy naukowców obeznanych z tematem i mających dużo wolnego czasu na takie pierdoły. Obecnie wszystkie powszechnie stosowane rzeczy są cholernie skomplikowane. Wynajdując nową funkcję skrótu w momencie kiedy jest ich od ciula i trochę (znacznie lepiej zbadanych niż Twoja inwencja kiedykolwiek będzie) to szukanie sobie wyłącznie guza na głowę.

Masz rację, ale w takim razie proszę nie pisać jakichś bzdur o prawach i zasadach, które nigdy nie miały miejsca.
Co do innych rad to bardzo dziękuję z pewnością mi się przydadzą.

Pozostało 580 znaków

2012-09-30 20:06
3

Chciałeś odpowiedź na swoje pytanie: zajęłoby to czas liczony w minutach. Czemu? Bo złamałeś zasadę:
http://pl.wikipedia.org/wiki/Zasada_Kerckhoffsa
Opierasz swój magiczny algorytm na tym że nikt nie zna twojego algorytmu a to jest błąd. Jeśli szyfrujesz tak jak powiedziałeś to znaczy że w kodzie masz gdzieś zapisane jak permutujesz klucz (nie ma znaczenia czy to jakoś wyliczasz czy masz w kodzie zahardkodowane). W efekcie można twój kod deasemblować i sprawdzić jakie operacje wykonujesz na kluczu i je zwyczajnie odwrócić. Dziecięca igraszka.
Zamiast zgrywać mądralę może jednak posłuchasz kolegów i skorzystasz z już gotowych algorytmów...

przy okazji:

Przecież ktoś zawsze musi być tym pierwszym i wymyślić algorytm.

masz rację, tylko że na te aktualnie używane algorytmy "wpadły" dziesiątki najlepszych matematyków świata opłacanych za grubą kasę przez amerykańskie NSA...


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2012-09-30 20:08

Pozostało 580 znaków

2012-09-30 20:58
krypto-graf
0

Chciałeś odpowiedź na swoje pytanie: zajęłoby to czas liczony w minutach. Czemu? Bo złamałeś zasadę:
http://pl.wikipedia.org/wiki/Zasada_Kerckhoffsa
Opierasz swój magiczny algorytm na tym że nikt nie zna twojego algorytmu a to jest błąd. Jeśli szyfrujesz tak jak powiedziałeś to znaczy że w kodzie masz gdzieś zapisane jak permutujesz klucz (nie ma znaczenia czy to jakoś wyliczasz czy masz w kodzie zahardkodowane). W efekcie można twój kod deasemblować i sprawdzić jakie operacje wykonujesz na kluczu i je zwyczajnie odwrócić. Dziecięca igraszka.
Zamiast zgrywać mądralę może jednak posłuchasz kolegów i skorzystasz z już gotowych algorytmów...

No to niespodzianka, bo nie masz racji. Podany wyżej hash jest stworzony za pomocą MD5 (od początku z niego korzystałem) plus w odpowiednim momencie posortowany (w odpowiednim momencie, gdyż wiadomo, iż sortować nie można w czasie autoryzacji). Ergo - zasada nie złamana.

zdajesz sobie sprawę że sortowanie znaków w sposób bardzo znaczący zwiększa ryzyko kolizji? - dawidgarus 2012-09-30 22:56

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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

Robot: Bingbot