Funkcja "jakby hashująca" ale zupełnie inaczej

0

Na gruncie kryptografii, czy algorytmiki mówimy od odległości kryptograficznej (czy jest takie słowo "odleglość hashowania" ?), Czyli ALAMAKOTA daje bardzo różną wynikową liczbę w porównaniu oLAmAkOTA (i fikcją są filmy, gdzie w miarę zbliżania się do złamania hasła coraz więcej zielonych cyfr jest zgodnych)

Czy istnieje, i jakoś się nazywa algorytm, który dla ALAMOKOTA i oLAmAkOTA daje względnie bliskie liczby?
Niektóre systemy baz danych mają dedykowany dla języka angielskiego algorytm "soundex" (string->string) który ma za zadanie wykryć podobnie (podobnie brzmiące) słowa, i jest to algorytm o niskim zużyciu RAM a nie gigantyczne słowniki (było na bardzo biednych architekturach)

EDIT: podobne słowa: skrót, digest. Słowa *hash *użyłem dla ilustracji, wiem że moje zagadnienie to nie hash.

EDIT2: gdyby algorytm istniał, jestem w stanie wprowadzić ograniczenie, np string nie dłuższy niż N (np 16 ) -> long unsigned

0

Hej,
wydaje mi się, że wystarczy zastosować odległość Hamminga, po zamianie wszystkich liter obu stringów na przykład na duże :)

0
hurgadion napisał(a):

Hej,
wydaje mi się, że wystarczy zastosować odległość Hamminga, po zamianie wszystkich liter obu stringów na przykład na duże :)

Dzięki, już czytam.

Hhmmm . Może doprecyzuję.
Gdzieś kiedyś powstaje string ALAMAKOTA. o drugim nawet wróbelki nie ćwierkają, tzreba z niego liczbę (niekoniecznie liczbę, coś, jakąś miarę).
W zupełnie innym miejscu i czasie powstaje drugi string, z niego liczba (miara).

Trzeci fragment ma te dwie liczby (nie zna źródłowych stringów), i na tej podstawie może zrobić domniemanie o ich podobieństwie.
Choć liczę się z tym, przy w/w założeniach jest jakaś niewielka/prawdopodobna odwracalność algorytmu, odwrotnie niż przy "dobrym prawdziwym hashu"

0

rozwiń może temat, bo nie do końca rozumiem, a najlepiej podaj jakiś przykład obrazujący Twój problem.

1

Zamień obydwa ciągi znaków na lower case i dopiero wtedy hashuj ;-)

Obstawiam jednak, że mamy do czynienia z problemem X/Y - co próbujesz osiągnąć?

0
Patryk27 napisał(a):

Zamień obydwa ciągi znaków na lower case i dopiero wtedy hashuj ;-)

Obstawiam jednak, że mamy do czynienia z problemem X/Y - co próbujesz osiągnąć?

Źródłem pytania jest:

systemy ustawiania hasła (w Linux, Active Directory czy podobnych) mają blokade użycia np 5 poprzednich haseł. Zacząłem kombinować w głowie, gdybym miał robić coś podobnego (ale nie hasła plain-text) to jak bym zrobił. Tamta blokada jest teoretycznie "silna" (czyli w praktyce "słaba") tzn dotyczy identycznych haseł, wystarczy najmniejsza zmiana i będzie uznane za inne.

Moje ancymonki mają "aa", system się domaga zmiany, dają "Aa" albo "aaa", próbowałem sobie to wyobrazić -> żeby dwa hashe/niehashe były podobne.
Odp kol. @hurgadion nt odległości Hamminga - na ile rozumiem - jest do zaimplementowania z hasłami trzymanymi "plain-text".

hurgadion napisał(a):

Hej,
wydaje mi się, że wystarczy zastosować odległość Hamminga, po zamianie wszystkich liter obu stringów na przykład na duże :)

co do Hamminga, czytam nt Odległość Levenshteina, nieco lepsza.

0

Nie wiem jaki jest dokładnie Twój problem (hackerką się nie zajmuję i nie interesuję, co więcej, nie zamierzam), natomiast w przypadku znajdowania haseł podobnych wystarczy chyba iterować po alfabecie zmieniając na przykład jedną literę, i do tego chyba nie trzeba jakichś większych, skomplikowanych procedur, o ile hasło nie ma na przykład trzystu znaków i brakuje nam dziesięciu znaków do właściwego hasła :)

0
hurgadion napisał(a):

Nie wiem jaki jest dokładnie Twój problem (hackerką się nie zajmuję i nie interesuję, co więcej, nie zamierzam), natomiast w przypadku znajdowania haseł podobnych wystarczy chyba iterować po alfabecie zmieniając na przykład jedną literę, i do tego chyba nie trzeba jakichś większych, skomplikowanych procedur, o ile hasło nie ma na przykład trzystu znaków i brakuje nam dziesięciu znaków do właściwego hasła :)

No tak, ale będąc zupełnie rzetelny, ja NIE MAM starego hasła (no dobra, oszukując na formatce zmiany *), mam stare hasło, ale nie mam drugiego, trzeciego poprzedniego)

*) Formatka typu: hasło stare / hasło nowe / hasło nowe

1

Cała magia hashowania polega na tym, że nawet podobne ciągi powinny dawać zupełnie różne hashe. Chcesz średni system (wymaganie zmiany hasła na przynajmniej nie takie jak poprzednie) zamienić na tragiczny.

4
  1. Takie rzeczy z hasłami (np. partial passwords) to się robi za pomocą jakiegoś Shamir Secret Sharing a nie hashami. Łatwo wtedy zrobić tak że trzeba znać dowolne k z n znaków hasła na poprawnych pozycjach żeby się zalogować.
  2. Można coś podobnego osiągnąć też jakimś szyfrowaniem homomorficznym, bo pozwala na wykonywanie operacji na ciphertexcie, bez deszyfrowania go.
  3. Można poprosić usera o podanie aktualnego hasła kiedy zmienia, a stare hasła trzymać szyfrowane symetrycznie z jego aktualnym hasłem jako kluczem. I pewnie o coś takiego ci tutaj chodzi.
0

Może coś takiego jak Odległość Levenshteina ?

0

Możesz użyć takiej funkcji do haszowania: en.wikipedia.org/wiki/Identity_function

A potem odległość Levenshteina

0

To już zadanie dla AI, bo jak user miał hasło mama i zmienił na |\/|@|\/|@ to z punktu widzenia OP są to te same hasła, podobnie z |\/|am@ itd.;-)

0

Tylko bruteforce :D

1
Czarny Mleczarz napisał(a):

Tylko bruteforce :D

a wiesz co to zart?

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