Wpisy z tagiem: matematyka

środa, 22 lutego 2012

Od dłuższego czasu serwis blogowy Blox boryka się z plagą spamu. Słyszałem zapewnienia, że moderatorzy/admini walczą z tym zjawiskiem, ale wydaje mi się, że bez większych sukcesów, a nawet, że problem spamu się nasila. Jest to zjawisko dla wszystkich (poza spamerami) niekorzystne, a nierzadko na stronie głównej o pewnych porach spamy stanowią 30 i więcej procent wpisów.

Postanowiłem zerknąć na proces zakładania konta od początku. Pierwsze co rzuciło mi się w oczy, to prostota CAPTCHA. Być może parę lat temu wystarczało coś takiego, by odstraszyć spamerów, ale wojna trwa - istnieją narzędzia do automatycznego rozpoznawania nawet dość skomplikowanych CAPTCHA ze stosunkowo dużą pewnością (grubo ponad 50%). Niedawno nawet Jogger, który pozwalał właścicielowi bloga na mocne zmiany wyglądu CAPTCHA (kształt, wielkość, kolor), przy komentarzach dorzucił do niej litery obok cyfr, bo spamerzy się przebijali...

Żeby sprawdzić, czy nie przypadek, że CAPTCHA jest taka słaba, wcisnąłem F5, raz, drugi, trzeci... I okazało się, że trafiłem na powtarzające się słowa. Chwilę się pobawiłem i faktycznie, nie da się ukryć, CAPTCHA powtarza się i to - na oko - często. Postanowiłem sprawę zbadać dokładniej.

Sposób badania: uruchomienie przeglądarki, wyczyszczenie historii, w każdej serii 50 przeładowań strony (F5 lub ctrl-r), zapisanie wyników do pliku (każdy wynik w pojedynczej linii) w takiej kolejności, w jakiej się pojawiały. Żeby wykluczyć wpływ User Agent i czasu, każda seria wykonywana na różnej przeglądarce i w odstępie minimum kilkudziesięciu minut.

W pierwszej serii (przeglądarka chromium) 50 ciągów wyrazów wystąpiły 32 unikatowe ciągi, przy czym 4 wystąpiły trzykrotnie, 10 dwukrotnie, a 18 tylko raz. Dodatkowo rzuciła mi się w oczy prawdopodobna metoda powstawania wielu CAPTCHA - podział słowa na sylaby, połączone z ew. wyrzuceniem niektórych liter, a następnie wymieszanie tych slab. Przykładowo zykamu i kazymu (czyli muzyka), letefon, fontele i fonlete (czyli telefon), zetagagataze (czyli gazeta), lafiorka, fiorkala, fiorlaka (czyli kalafior).

Druga seria, kilkadziesiąt minut później na midori - 34 unikatowe ciągi, jeden wystąpił czterokrotnie, 13 dwukrotnie, 20 jednokrotnie. Wyrazy zdecydowanie powtarzają się między seriami - dla obu serii łącznie wystąpiło 46 unikatowych ciągów, 2 wystąpiły pięciokrotnie, 6 - czterokrotnie, 8 - trzykrotnie, 12 -dwukrotnie, 18 - jednokrotnie.

Ponieważ ciąg znaków pod którym można poprać losowany obrazek może być stały (z danego można korzystać wiele razy), postanowiłem uprościć sobie pobieranie i przeliczanie. Szybki skrypt, który przy pomocy wget pobiera zadaną ilość obrazków i zapisuje do kolejnych plików, a następnie sprawdzenie sum kontrolnych (md5) tychże plików. I tu ciekawostka - sumy kontrolne praktycznie się nie powtarzają. Sprawdziłem organoleptycznie i faktycznie - o ile wyrazy powtarzają się często, to praktycznie każdy plik jest binarnie inny. Czyli raczej mała ilość wyrazów raczej nie wynika z chęci cache'owania.

Dla porządku: dla 100 plików 3 miały takie same sumy kontrolne, a kolejne 5 sum występowało dwa razy. Powtórzyłem eksperyment dla 1000 plików. Pojawiło się 611 unikatowych sum kontrolnych, jedna z sum występowała 7 razy, jedna 6, sześć wystąpiło 5 razy, cztery - 20 razy, trzy - 53 razy, dwie - 188 razy i jedna - 342 razy.

Nie sprawdzałem dokładnie, czy dany wyraz w CAPTCHA koreluje z ciągiem w treści (na oko nie), ani z jaką skutecznością zadziała automatyczne rozpoznawanie, ale przy tak częstym powtarzaniu się ciągów znaków i plików nie ma to znaczenia - wygląda, że baza jest za mała, a przekształcenie zbyt proste i można spokojnie stworzyć skrypt, który porówna sumę md5 wygenerowanego pliku z arbitralną bazą.

O problemie pisałem wstępnie na forum, póki co bez odzewu. W każdym razie liczę na to, że wpis zmotywuje administratorów blox do załatania ewidentnej dziury w zakładaniu nowych kont. Obecne likwidowanie spamerskich blogów przypomina wylewanie wody z łódki, zamiast załatania w niej dziury, przez którą wody nabiera.

Oczywiście najlepsze byłoby podpięcie jakiegoś znanej, sprawdzonej implementacji CAPTCHA, zamiast wymyślania koła od nowa (i to sugestia dla tych, którzy chcą stosować tego typu rozwiązanie) ale wydaje się, że nawet z istniejącą implementacją można prosto zadziałać w taki sposób, że stanie się ona choć w części efektywna. Przede wszystkim mam na myśli zwiększenie bazy słów i ilości przekształceń.

Obok złych wiadomości są też i dobre - co prawda problem nie jest to Blox, tylko ogólnie dotyczy konto.gazeta.pl, ale - jak wynika z korespondencji z administratorami Blox - jest znany i ma być najdalej w kwietniu poprawiony. Pozostaje uzbroić się w odrobinę cierpliwości i liczyć na to, że po załataniu dziury uda się skutecznie pozbyć spamerów. W tej chwili bywa tak, że 100% wpisów na głównej stanowią spamy...

sobota, 30 lipca 2011

W temacie globalnego ocieplenia znowu zrobiło się gorąco. Ostanie trzy dni przyniosły aż trzy newsy. Chronologicznie środkowy to głos sceptyków i tradycyjne obecne modele ocieplenia klimatu są złe, to nie jest takie straszne. Na co, jako ostatni news, oczywiście pojawiły się odpowiedzi typu modele są dobre, próba obalenia jest zła.

Pojawiać się może pytanie, skąd takie rozbieżności u naukowców, którzy operują na obiektywnych danych? Wiadomo, że klimat rozmów o klimacie nie jest najlepszy. Nie chodzi o przyczynę (jak nie wiadomo o co chodzi, to chodzi o..., chociaż zwykła niemożność przyznania się, że ileś tam lat pracy powinno trafić do kosza też wchodzi w grę), tylko o jak to jest, że biorą to samo i mają przeciwne wyniki? No właśnie... nie biorą tego samego.

Po pierwsze, nie wszyscy mają dostęp do tych samych danych. Publikacja przez Wikileaks danych, modeli i emaili dotyczących badań nad globalnym ociepleniem pokazała, jak naukowcy z grupy "proociepleniowej" opracowujący modele starają się utrudnić "reszcie świata" dostęp do danych i modeli (odmowa publikacji, obscufowanie).

Po drugie, dane "nie pasujące do modelu" są pomijane. Przez obie strony, gwoli ścisłości. Pozostaje pytanie o kryteria odrzucenia danych - statystyka i prognozowanie jak najbardziej dopuszcza coś takiego, ale przy odrobinie złej woli lub zwykłym błędzie w prosty sposób pozwala to też wypaczyć wyniki.

Po trzecie, są różne metody budowania modeli. Oczywiście każda daje trochę inne rezultaty. I zakłada pominięcie innych danych, więc jest naturalne, że wyniki będą się różnić, pozostaje pytanie jak bardzo.

O rozbieżności czy błędy w obliczeniach, nawet tych stosunkowo prostych, nie jest trudno. Nawet wtedy, gdy liczy się proste sprawy, takie jak np. ile tak naprawdę płacimy podatku od przychodu z wykonanej pracy (wpis na ten temat niebawem, sprawa ciekawa bo wahania były od 83%, przez 70% do ok. 50%). Dlatego jestem zwolennikiem publikowania pełnych danych, zarówno źródłowych, jak i dotyczących modelu obliczeń. Jest szansa, że ktoś przejrzy i znajdzie błędy, nieścisłości, nieuwzględnione dane i model będzie lepszy. Tworzenie sekretów i knucie prowadzi do podejrzliwości i teorii spiskowych, zaczyna się kombinowanie, FUD i propaganda zamiast nauki. Co nie dziwi, biorąc pod uwagę, że na wynikach tych badań opierają się decyzje w zakresie prawa i polityki. Ale IMHO nauka powinna być ponad tym.

I na koniec pierwszy chronologicznie news - po latach starań "sceptyków klimatycznych" zostały opublikowane dane z większości stacji na świecie. Polska jak zwykle się popisała i odmówiła zgody na publikację danych (ciekawe czemu, bo mam wrażenie, że zostały on uzyskane za pomocą środków publicznych). Czyli teraz każdy może spróbować zbudować swój model zmian klimatu, albo po prostu sprawdzić, czy naukowcy nie zrobili gdzieś błędu (o ile opublikują swój model, tj. algorytm/funkcję z której korzystają). Małe, a cieszy.

niedziela, 26 czerwca 2011

Czy naprawdę piątek przypada trzynastego dnia miesiąca częściej, niż inne dni tygodnia, jak wynika z tego wpisu? Postanowiłem to sprawdzić, metodą najdoskonalszą, czyli brute force. Co prawda tylko dla lat 1970-2037 czyli w Unix Epoch (pełne lata).

Kod był praktycznie gotowy z czasów obliczeń, czy pracownicy zyskają, czy stracą na wolnym 6. stycznia. Ostatecznie wygląda on tak:

a wynik działania wygląda tak:

DOW - ilosc
1 - 116
2 - 118
3 - 115
4 - 117
5 - 117
6 - 116
7 - 117
Suma: 816

1 - Monday, ... , 7 - Sunday

Piątek oznaczony jest cyfrą 5, jak widać występuje on jako trzynasty dzień miesiąca 117 razy, podobnie jak czwartek i niedziela , więcej w badanym okresie jest wtorków trzynastego (118), a najmniej śród (113).

Pozostaje pytanie, dla jakich dokładnie lat prowadzona była analiza w oryginalnym wpisie. Na oko wygląda na jakieś 335 lat, pytanie które dokładnie. W każdym razie w badanym okresie nic nie wskazuje na większą częstotliwość występowania piątku w trzynasty dzień miesiąca.

piątek, 27 maja 2011

Euronet zrobił nową promocję (UPDATE: zakończoną już, patrz ostatni akapit). W sumie loterię. Szczegółowe zasady są opisane na stronie, a w skrócie: wypłacasz 50 lub 100 zł z bankomatu Euronetu uczestniczącego w loterii. Masz szansę 1 na 3000 (nie prawdopodobieństwo, tylko równo co 3000, ale IMO pomijalne, chyba, że ktoś zna dobowy/tygodniowy rozkład wypłat) wygrania 100 zł. Nagród jest równe 2241. Proste.

Loteria ciekawa, bo wygląda, nie nie ma nic do stracenia, ale czy na pewno? Euronet rozdawałby pieniądze za darmo? Nic nie zyskując? Oczywiście jak nie wiadomo o co chodzi, to chodzi o pieniądze. Euronet od każdej wypłaty z bankomatu dostaje od banku pieniądze (podobno około 1,5 zł). Od wypłaty, czyli od sztuki. Na wypłaceniu cztery razy po 50 zł zarabiają cztery razy tyle, co na pojedynczym 200 zł.

No dobrze, skoro dają pieniądze za darmo, to nic tylko biec do bankomatu i wypłacać po 50 zł? W zasadzie tak, jeśli dla kogoś czas jest bezwartościowy. Wypłata kosztuje czas wypłacającego. Bardzo skromnie liczmy 30 sekund (pewnie bardziej minuta, ale nie testowałem, policzmy skromnie). Daje to 120 wypłat na godzinę. Wartość oczekiwana wygranej to w pojedynczej grze to... 3 gr (3,(3) dokładnie). Przy powyższych założeniach jest to 4 zł w ciągu godziny. Podczas której trzeba by wypłacić 6000 zł.

Jasne, jeśli ktoś i tak wypłaca z bankomatu, a Euronet stoi obok, to nic nie traci. Natomiast czy warto rozbijać większą kwotę na mniejsze? IMHO niekoniecznie (chyba, że nie mamy nic innego do roboty w tym czasie).

Podsumowująć: Euronet znalazł fajną dziurę w systemie, która niewielkim nakładem z jego strony, pozwoli zaprząc ludzi do pracy i zwiększyć dochody. Trochę to świadczy o tym, że system opłat za wypłaty wymaga dostosowania, bo w tej chwili ma nie do końca rynkowe reguły (zbyt wysoką marżę przy małych wypłatach).

Ciekawe z której strony banki podejdą do zagadnienia. Czy powrócą opłaty za wypłaty (już przy 5 gr nie opłacałoby się w to bawić na obecnych zasadach)? Limity ilości transakcji bankomatowych? Tak czy inaczej, IMO wszystko to na dłuższą metę odbywa się kosztem klientów. Jak nie popracują dla Euronetu, to zapewne niebawem będą mieli gorsze warunki korzystania z wypłat w bankomatach...

UPDATE: Promocja jest zakończona. W bankomatach kwoty 50 i 100 zł nadal są oznaczone czerwonym kolorem, ale jest to zwykły chwyt marketingowy/socjotechnika i liczenie na nieczytanie napisów przez wypłacających. Napis obecnie brzmi wypłacaj małe kwoty i bold nic nie daje. Więcej o dalszym zachęcaniu do wypłacania małych kwot przez Euronet można przeczytać we wpisie Tomasza Topy.

piątek, 31 grudnia 2010

Ostatnie wydarzenia coraz bardziej skłaniają mnie do - paranoicznego, przyznaję - wniosku, że żadne dane, niezależnie od tego jak zabezpieczane, nie są bezpieczne i prędzej czy później nastąpi ich ujawnienie. O ile tylko komuś będzie zależało.

Na początek - hasła. Niektóre portale, jak Allegro, trzymają hasła otwartym tekstem. Niezależnie od podjętych środków bezpieczeństwa, przy takim podejściu wyciek tych haseł jest IMHO kwestią czasu.

Wiele nie zmienia trzymanie skrótów (hashy) haseł. Ostatnio - poza małymi wyciekami polskimi typu JP - wyciekły hashe haseł z Gawkera i niesolone hashe haseł z FSF. To drugie jest wielką porażką, bo mówimy o środowisku z - teoretycznie - wysoką świadomością dotyczącą bezpieczeństwa i spraw technicznych, a tymczasem korzystano z najsłabszej funkcji skrótu i w najgorszym wydaniu. Powinno być najlepiej, było najgorzej. Klasyczne szewc bez butów chodzi.

Zresztą, pomału można zacząć stawiać znak równości między wyciekiem hashy haseł (zwł. niesolonych), a wyciekiem samych haseł - crackery MD5 są coraz szybsze. Co prawda to tylko benchmark, ale najnowsza wersja crackera whitepixel, który podobno jest chyba obecnie najszybszy, sprawdza 33 miliardy (nie miliony, miliardy) kombinacji na sekundę (dla pojedynczego hasha). Na potężnym, co prawda (4 dwurdzeniowe GPU; 1,2 kW poboru prądu przy obciążeniu, 2700 USD w tej chwili), ale pojedynczym komputerze PC.

Inne funkcje skrótu też nie są wiele lepsze. SHA1 to wg tego benchmarku w tym momencie 390 milionów kombinacji na sekundę, oczywiście na pojedynczej maszynie. A przecież bez problemu można mieć tych maszyn więcej, i to za niewielkie pieniądze.

Ale nie tylko haseł się to tyczy. Dane, które nie powinny ujrzeć światła dziennego wyciekły z "wewnętrznego", rządowego systemu. Oczywiście mowa o wikileaksowym Cablegate. Swoją drogą ciekawe, jak długo w tych okolicznościach w stanie nieujawnionym pozostanie polisa Wikileaks?

Głośno też było o rzekomym backdoorze w OpenBSD, a konkretniej IPSEC, który miało zamieścić FBI 10 lat temu (celowo nie linkuję, AFAIK rozeszło się po kościach i backdoora nie było, ale nie śledziłem). Co nie jest takie niemożliwe, bo korzystając z różnych "dziwnych" właściwości matematyki, da się zmusić algorytm szyfrujący, by "wyciekał" klucze. W mało zauważalny sposób - na przykład 128 bajt zaszyfrowanej wiadomości, przexorowany przez arbitralny klucz, będzie ujawniał klucz, którym była szyfrowana cała wiadomość. Albo coś na podobnej zasadzie - sky - i wiedza matematyczna - is the limit.

I raczej nie wierzę w to, żeby programista - czy użytkownik, który zwykle nie ma wielkiej wiedzy matematycznej/kryptograficznej, był w stanie coś takiego zauważyć. Przykład tego widać było przy dziurze w OpenSSL w Debianie. Efekt był dość spektakularny - do każdego konta umożliwiającego logowanie SSH po kluczach można się było dostać przy - IIRC - maksimum 65 tys. prób (bo tylko tyle różnych kluczy było generowanych). Na dowolnym systemie. O ile tylko klucz publiczny użytkownika był generowany na podatnym Debianie.

Niedowiarkom przykład ciekawych właściwości matematycznych można łatwo i zrozumiale zaprezentować na przykładzie listy 18 ulubionych filmów. Oto test (przetłumaczyłem na polski, z wyjtkiem tytułów, polecam IMDB):

Zrób test i dowiedz się, jaki film jest twoim ulubionym. Ten prosty matematyczny quiz przewiduje, który z 18 filmów spodoba ci się najbardziej. Nie pytaj w jaki sposób, ale to działa!

  • Wybierz cyfrę z zakresu 1-9.
  • Pomnóż ją przez 3.
  • Do wyniku dodaj 3.
  • Otrzymany wynik ponownie pomnóż przez 3.
  • Zsumuj obie cyfry otrzymanej liczby. Wynik to numer twojego przewidzianego ulubionego film na poniższej liście:

Lista filmów:

  1. Gone With The Wind
  2. E.T.
  3. Blazing Saddles
  4. Star Wars
  5. Forrest Gump
  6. The Good, The Bad, and the Ugly
  7. Jaws
  8. Grease
  9. The Joy of Anal Sex With A sheep
  10. Casablanca
  11. Jurassic Park
  12. Shrek
  13. Pirates of the Caribbean
  14. Titanic
  15. Raiders Of The Lost Ark
  16. Home Alone
  17. Mrs. Doubtfire
  18. Toy Story

W zasadzie koniec mijającego roku widzę trochę na zasadzie do kogóż to włamano się dzisiaj? I to tylko patrząc na najgłośniejsze i ujawnione sprawy i dziury (taki wariant minimum dla administratora - trochę wypada się w security orientować)...

Korzystając z okazji - bo to ostatni wpis, życzę wszystkim użytkownikom komputerów (ze specjalnym uwzględnieniem adminów) w nadchodzącym Nowym Roku mniej dziur bezpieczeństwa i awarii.

UPDATE: Paranoje dotyczące postępującej szybkości łamania hashy studzi ten wpis o przechowywaniu haseł. Polecam.

niedziela, 14 listopada 2010

Wszystko zaczęło się od tego wpisu, którego głównym bohaterem jest paradoks urodzin, a który przeczytałem niedawno. Kto by pomyślał, że wybierając losowo (tylko) tysiąc liczb ze zbioru (aż) czterech milionów liczb mamy (aż!) 10% szans na to, że wybrane liczby się powtórzą? Co prawda nie liczyłem samodzielnie, ale wynik wygląda na prawidłowy. WolframAlpha co prawda wymięka dla czterech milionów, ale dla jednego miliona liczy i wychodzi ok. 39%.

Przypomniało mi się niedawne narzekanie - nie pamiętam niestety czyje - że w hasłach jednorazowych przysyłanych przez mbank SMSem takie same cyfry występują obok siebie się zbyt często, więc chyba generator pseudolosowy jest słaby czy też wręcz zepsuty. Jak mi się przypomniał ten temat, to postanowiłem policzyć prawdopodobieństwo zdarzenia, że SMS, który dostaliśmy, zawiera hasło jednorazowe z powtarzającymi się obok siebie cyframi.

Cyfr w przysyłanym haśle jednorazowym jest osiem. Prawdopodobieństwo, że cyfra kolejna jest różna od cyfry poprzedniej wynosi dokładnie 0,9. Czyli, żeby cyfry się nie powtarzały, to druga musi być inna, niż pierwsza, trzecia inna, niż druga, ..., i na koniec ósma inna, niż siódma. Pierwsza cyfra nie ma się z czym powtarzać, oczywiście.

Prawdopodobieństwo zdarzenia, że wszystkie cyfry są różne wynosi zatem dla ośmiocyfrowego hasła jednorazowego 0,9^7 (pierwsza cyfra nie ma znaczenia, bo nie ma się z czym powtarzać) czyli 47,83%. Jaka jest zatem szansa, że cyfry się koło siebie powtórzą? Oczywiście prawdopodobieństwo odwrotne, czyli 1 - 0,9^7. Czyli 52,17%. Zatem, jeśli wszystkie cyfry mają takie samo prawdopodobieństwo wylosowania na wszystkich pozycjach (a tak teoretycznie być powinno), to częściej dostaniemy hasło jednorazowe, gdzie mamy powtarzające się cyfry koło siebie, niż takie, w którym się nie powtarzają. Nie ma to oczywiście nic wspólnego z pierwotnym paradoksem urodzin, ale jest ciekawe.

Nawiasem, prawdopodobieństwo, że którekolwiek cyfry w otrzymanym haśle jednorazowym się powtórzą (niekoniecznie obok siebie) wynosi aż 98% (i to już liczymy wykorzystując wzór do paradoksu urodzin).

czwartek, 15 lipca 2010

Odkąd mieszkam w Poznaniu, poruszam się niemal wyłącznie pieszo i przy pomocy MPK. Jak tu przyjechałem i zobaczyłem, jakie są korki i organizacja ruchu, to stwierdziłem, że auta nie ma sensu tutaj mieć. I jestem tego zdania do dziś. Najpierw do pracy chodziłem pieszo, ale odkąd zmieniliśmy siedzibę, trzeba dojeżdżać. Potem zmieniłem miejsce zamieszkania i tak jakoś się jeździło, jeździło...

Obecne upały były dobrym powodem do przemyślenia strategii dojazdu. Teoretycznie mogę dojeżdżać dwiema różnymi liniami, przy czym jedna wypada koło dobrze zaopatrzonego sklepu (ale idę po odsłoniętej patelni wg Google maps - 700m), a druga koło małych sklepików (może nieco mniej odsłonięte, też 700m), gdzie czasem jest to, co chcę, czasem nie ma. Plus, na najkrótszej trasie jest często klepisko, nie chodnik.

Ostatnio testuję wariant pośredni - 900m wg Google maps, ale za to miejsce takie, że jeżdżą obie linie, a około jednej trzeciej do połowy trasy jest zacienione. I nadal przechodzę przez dobrze zaopatrzony sklep. I mam chodnik cały czas.

Teraz część najlepsza. Aktualnie każda z linii jeździ co 15 minut (kiedyś wydaje mi się, że jedna z linii jeździła częściej). Z przesunięciem o 5 minut między sobą (tj. raz jest 5 a raz 10 minut przerwy między kolejnymi tramwajami). Przejście 700m wg google maps to ok. 8 minut (i zgadam się z tym, głównie za sprawą niesłychanie skopanych świateł), 900m - 11 minut (trochę nie rozumiem ichniej matematyki, ale niech będzie). Średni czas oczekiwania na tramwaj przy dojeździe tylko jedną linią to 7,5 minuty, a maksymalny 15 minut. Przy wariancie z dwiema liniami jest to odpowiednio 3,75 minuty i 10 minut. Łączny czas potrzebny na wejście do tramwaju to 15,5 minuty średnio i 23 minuty maksymalnie w wariancie z jedną linią i 14,75 minuty średnio, a 21 minut maksymalnie w wariancie drugim.

Jak widać, opłaca się chodzić tam, gdzie są 2 linie, zamiast jednej. Lepszy jest i średni, i maksymalny czas dojazdu, droga jest utwardzona, przyjemnie zacieniona i jest po drodze sklep. I tak, musiałem to policzyć, na czuja nie wystarczy!



Subskrybcja RSS (wpisy)
RSS - Subskrybuj kanał RSS Pomiędzy bitami
Staty
Related Posts Plugin for WordPress, Blogger...
statystyka
Nawigacja
Blogroll