Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Proof of work zamiast captcha
Forum PHP.pl > Forum > Przedszkole
konrados
Hej.

Ostatnio mam za zadanie dla firmy w której pracuję, zrobić pewną aplikację związaną z bitcoinem.

Generalnie chodzi mi o proof of work - w bitcoin miner musi udowodnić, że popracował nad rozwiązaniem szukając jak najmniejszy hash sha256.

Pomyślałem, że to może zastąpić CAPTCHA. Niech komputer, z którego ma być wypełniony formularz kontaktowy, rejestracyjny etc. trochę popracuje. To znacznie utrudniłoby pracę spamerów, którym zależy by wypełniać setki tysięcy formularzy(?) dziennie.

Pomyślałem też, że ktoś już musiał wpaść na ten pomysł i faktycznie jest: http://www.warriorforum.com/blogs/mekdroid...u-computer.html

Ale autor nie za bardzo zainteresował się problemem, który ja teoretycznie znalazłem. Komputery mają różną moc a ja chciałbym aby hash został znaleziony w określonym czasie paru sekund. To chyba(?) spowoduje, że spamowanie stanie się nieoopłacalne, ale jak określić moc komputera?

Pierwszy pomysł jaki mi wpadł do głowy to zadanie komputerowi dwóch zadań, jedno testowe by określić jego prędkość a drugie już prawdziwe. Ale to jest bez sensu - spamer może oszukać przy tym teście.

Macie jakieś pomysły?

Jeśli to jest niewłaściwe miejsce (może lepsze byłoby Forum: Po stronie przegladarki ?) albo się niejasno wyraziłem to prosiłbym o informacje....

Może parę linków:
POW (proof of work): http://en.wikipedia.org/wiki/Proof-of-work_system (nie ma po polsku)
oparty na koncepcji hashcash: http://pl.wikipedia.org/wiki/Hashcash (tym razem jest i to dobrze opisany)

hashcash miał walczyć ze spamem mailowym, ale użycie było raczej zbyt skomplikowane dla zwykłego usera. Moja koncepcja to kompletna automatyzacja POW tylko no napotkałem na problem wspomniany w pierwszym poście.

Byłbym wdzięczny za nawet bardzo luźne myśli.

Edit: Już dawno mnie już tutaj nie było, ale wydaje mi się, że kiedyś jak się weszło na spis tematów to widać było od razu czy ktoś pomógł w tym temacie czy nie. Chciałem komuś pomóc ale nie mam pojęcia komu.
SmokAnalog
Nadal widać przecież. Tematy, gdzie ktoś otrzymał punkt "Pomógł" mają inny kolor tła na liście.

A co do Twojego problemu, to ja nie rozumiem po co to. Nie prościej ograniczyć czasowo możliwość wejść z IP (raz na kilka sekund)?
konrados
Cytat
Nadal widać przecież. Tematy, gdzie ktoś otrzymał punkt "Pomógł" mają inny kolor tła na liście.


No teraz po przyjrzeniu się widzę, ale kiedyś to chyba było wyraźniejsze smile.gif

Cytat
A co do Twojego problemu, to ja nie rozumiem po co to. Nie prościej ograniczyć czasowo możliwość wejść z IP (raz na kilka sekund)?


Dzięki! No to jest stara koncepcja, ale nie wymaga *pracy* ze strony spamera. Zaatakuje serwis A, tam sobie poczeka (np. zapamięta i uderzy cronem) zaatakuje B (tam też sobie zaczeka) etc etc aż do punktu Z, i wtedy wyśle spam w serwisie A. Czyli bez zmian - nic to nie kosztuje spamera. Mi chodzi o to, by tak jak w bitcoinie, "wsadzenie" czegoś w sieć kosztowałoby pracę CPU a tym samym energii elektrycznej czyli pieniędzy.
SmokAnalog
Czy na starszych komputerach nie powodowałoby to zamulenia przeglądarki?
konrados
Cytat
Czy na starszych komputerach nie powodowałoby to zamulenia przeglądarki?


No właśnie na tym polega mój problem. Mamy kompy/smartfony o różnych możliwościach. I jak tu określić trudność? Bo ją można określić. Znajdź hash o takiej trudności albo niższej. Tylko nie wiem jak określić tę trudność.
SmokAnalog
Nie podoba mi się pomysł z tym rozwiązaniem w ogóle. Zresztą jest równie łatwy do przeskoczenia jak captcha. Jeśli wiemy co się dzieje po stronie klienta (a to zawsze wiemy), to możemy to oszukać. W tym przypadku, o ile dobrze rozumiem problem, możemy progresywnie budować sobie bazę tych hashów (coś jak rainbow table).
konrados
Cytat(SmokAnalog @ 5.08.2014, 20:13:58 ) *
Nie podoba mi się pomysł z tym rozwiązaniem w ogóle. Zresztą jest równie łatwy do przeskoczenia jak captcha. Jeśli wiemy co się dzieje po stronie klienta (a to zawsze wiemy), to możemy to oszukać. W tym przypadku, o ile dobrze rozumiem problem, możemy progresywnie budować sobie bazę tych hashów (coś jak rainbow table).


Dzięki, ale no niezupełnie. Musiałbyś trochę poczytać o bitcoinie. Ogólnie musi być znaleziony hash (w tym przypadku sha256d) poniżej pewnej wartości, na podstawie danych, które przedstawię klientowi. Klient ma zmieniać nonce ( jedyną wartość, którą może zmieniać klient poza danymi, które mu przedstawiłem, wikipedia mówi dość ogólnie o nonce, to by tylko zagmatwało sprawę ). Ja zapamiętuję te dane, które przesłałem klientowi, on ma mi przesłać znalezione nonce.

Czyli do tej pory ok.

Pojawia się tylko problem z super słabym sprzętem i super mocnym sprzętem.

Edit: ahh, rainbow table... to jest przydatne raczej przy przewidywalnych ciągach znaków do shashowania, tutaj mamy tak osobliwe ciągi jak np. adfiua09ds34k3jhsdf87askj45adsflkadsf (i dłuższe). Żadne rainbow tables na szczęście nie pomogą smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.