Walka z Tor – blokowanie i atak.

Każdy medal ma dwie strony. To, że popieram prawo do anonimowości i wolności wypowiedzi nie znaczy, że nie rozumiem osób, które z różnych względów chciałyby ograniczyć dostępu do swojej sieci czy swojego serwisu użytkownikom sieci Tor. Poza tym, w znacznej mierze bawię się Torem, żeby lepiej poznać z czym wiążą się różne, zwłaszcza administracyjne aspekty sieci na sieci.

Sieć Tor z założenia ma sprzyjać anonimowości i omijaniu cenzury, a jak to wygląda w praktyce? Moim zdaniem, ma wiele słabości, chwilami sprawia po prostu broken by design. Ostatnio słychać było, o skompromitowaniu sieci Tor. Na blogu projektu Tor pojawiło się sprostowanie, wytykające błędy ale nie znaczy to, że różne słabości zupełnie nie istnieją.

Podstawową, znaną i opisaną w FAQ, słabością projektu, wynikającą z założeń projektowych jest, moim zdaniem, fakt, że publicznie dostępna, a przynajmniej trywialna do uzyskania jest lista wszystkich węzłów wyjściowych (exit node) i pośredniczących (relay node) Tora. Znacznie trudniej uzyskać listę bridge nodes, czyli węzłów służących wyłącznie do przyjęcia pierwszego połączenia od użytkownika, ale nie jest ona tak naprawdę potrzebna, by któryś duży gracz przeciwko Torowi mógł zaszkodzić sieci.

Niejawność bridge nodes wynikała z założeń projektu i z założenia miała służyć do tego, aby żaden ISP/kraj nie mógł w prosty sposób pozbawić swoich użytkowników możliwości połączenia z siecią Tor. I to zadanie spełnia przyzwoicie. Użytkownicy nadal mają możliwość uzyskania częściowych danych o bridge nodes z listy i podania ich ręcznie w swoim kliencie Tor, co w połączeniu ze zmiennymi IP bridge nodes bardzo utrudnia (o ile nie eliminuje) możliwości całkowitego zablokowania łączności z siecią Tor. Przynajmniej zablokowania opartego tylko o blokadę IP, nie analizę ruchu, ale to jakby zupełnie inny temat i skala trudności.

Natomiast mając listę węzłów końcowych, można je zablokować na wejściu do sieci czy dostępie do serwisu. Istnieją nawet serwisy, które zapewniają – mniej lub bardziej aktualne – gotowce. Ten serwis na przykład udostępnia aktualizowaną co godzinę blacklistę opartą na DNS z podziałem na węzły wychodzące i zwykłe.

Ale nie jest to jedyna metoda walki serwisów czy ISP z Torem. W praktyce mało kto, przynajmniej w naszym kraju, udostępnia węzeł wychodzący. Przyczyna jest prosta – dość szybko może skończyć się to (i kończy, nie mówię z własnego doświadczenia, ale słyszałem z pierwszej ręki o takich przypadkach) wizytą policji z powodu nadużyć z danego IP. Węzeł pośredniczący, o ile nie ma uruchomionej tzw. ukrytej usługi (hidden service) nie przechowuje ani nie udostępnia żadnych danych, więc jego uruchomienie w domu nie pociąga za sobą żadnych problemów (poza zużyciem części pasma).

Przynajmniej teoretycznie. W praktyce bowiem serwery serwisów nie lubiących Tora mogą sprawdzać nie tylko, czy użytkownik nie łączy się z IP na którym uruchomiony jest węzeł wychodzący, ale także czy połączenie nie jest z IP na którym uruchomiony jest węzeł pośredniczący i… także odmawiać dostępu. Przykładem jest choćby powyższy serwis z listami. Łącząc się z IP, na którym uruchomiony jest relay node zobaczymy:

Forbidden – TOR Node / Anonymous Proxy I’m sorry, but I really don’t see why anyone would need to use a TOR node or Anonymous Proxy server to look at my site. So i’m afraid you can’t look. Stop running TOR / using an anonymous proxy and you can view my site.

Przy względnie częstej aktualizacji listy węzłów (choćby wspomniana godzina), rozwiązanie takie praktycznie nie generuje skutków ubocznych dla serwisu, który ją wykorzystuje i minimalizuje ryzyko false positives, nawet przy zmiennym IP węzłów. Zakładając oczywiście, że lista jest prawidłowa i kompletna.

Zresztą, sami twórcy projektu Tor dają o to, żeby administratorzy którzy muszą blokować węzły wyjściowe Tora, mogli robić to w prosty sposób. Banowanie użytkowników sieci Tor także ma swój wpis w FAQ. Uprzykrzanie życia właścicielom relay nodes to już raczej otwarta wojna, której chcą uniknąć.

Skoro o otwartej wojnie mowa, gdyby jakieś państwo chciało unieruchomić sieć Tor, to obok blokowania bridge nodes może sięgnąć po (D)DoS (w sumie wystarczy zwykły flood) na – niekoniecznie szybkie – węzły pośredniczące. Węzły wyjściowe często są na dedykowanych maszynach i łączach, pośredniczące (tylko pośredniczące, każdy wyjściowy jest jednocześnie pośredniczącym) – niekoniecznie. Zresztą ponownie – istnieje strona podająca status sieci Tor, a na niej szczegółowe informacje o węzłach – rola, tzw. flagi, system, ilość przesyłanego ruchu… Zapewne można na jej podstawie szacować, jakie zasoby potrzebne są do przeprowadzenia ataku.

Przy okazji takie spostrzeżenie – ludzie z projektu Tor naprawdę wydają się skupieni na etyczny zastosowaniach i zapewnieniu anonimowości i wolności ludziom, którzy naprawdę tego potrzebują. I mocno liczą, że administratorzy serwisów to zrozumieją i nie będą w Torze widzieć wyłącznie narzędzia abuserów. W ciągu kilkudziesięciominutowej rozmowy, która się wywiązała na IRC przy okazji wspomnienia na temat tworzenia tego wpisu zostałem odesłany do paru prac naukowych (nie czytałem jeszcze, bo niezupełnie ten temat, podlinkowane poniżej). Atak totalny na tak szczytne przedsięwzięcie chyba nie bardzo mieści im się w głowie, natomiast zaprzątnięci są zapewnieniem anonimowości użytkownikom i pracują nad ulepszeniem możliwości łatwego i pewnego rozdzielenia węzłów wyjściowych od pośredniczących dla tych, którzy muszą blokować dostęp z sieci Tor.

Stąd moje wrażenie o broken by design może być przesadzone lub zwyczajnie mylne – zwyczajnie nie do tego i nie przy takich zastosowaniach było to projektowane… Generalnie Tor ma warstwy – z pozoru wygląda na bardzo prosty twór, ale im dalej się wgłębiać, tym ciekawsze nowe rzeczy się pojawiają. Przyznam, że sam nie grokuję Tora w pełni, stąd ten wpis, będący poniekąd próbą uporządkowania paru faktów.

Linki (które kiedyś mam nadzieję przeczytam, niekoniecznie o Torze):

Testując smartfona, pamiętaj o bezpieczeństwie.

Nie tak dawno operator Play rozpoczął kampanię Testuj smarfona. W skrócie jest to tak, że sprzedajemy swoje dane, wyrażamy zgodę na otrzymywanie reklam na podany email i przez podany numer telefonu, a w zamian dostajemy na 14 dni smartfona Huawei od zabawy i kartę SIM od Play (na zawsze). Teoretycznie sprawa idealna dla mnie (podać spamowy numer telefonu i email, za free pobawić się dłuższy czas Androidem, do którego od dawna się przymierzam, ale nie mogę przekonać), ale w praktyce jak pomyślę, że dostałbym wychuchany i wymacany przez większą liczbę obcych ludzi telefon, to jakoś mnie chęć na testowanie odchodzi. Tym bardziej, że stracę czas na ustawienie wszystkiego pod siebie tylko po to, by zaraz zaorać, żeby mniej lub bardziej prywatne dane nie wyciekły.

No właśnie, tu sedno. Telefon przychodzi (i odchodzi) z kartą pamięci. AFAIK Android sam z siebie zapisuje tam dane z prywatnymi informacjami. A dodatkowo pewnie trafią tam choćby mniej lub bardziej prywatne zdjęcia. Zastanawiam się, ilu użytkowników w ogóle wyczyści ustawienia. Optymistycznie: 30%. Pomijam fakt, że zwykłe usunięcie plików czy sformatowanie karty niewiele pomoże – dowolny program do odzyskiwania plików (będąc linuksiarzem czytaj: photorec) pozwoli odzyskać większość z nich. Nie wiem, co robi Android przy formatowaniu karty/przywracaniu do ustawień domyślnych, ale nie sądzę, by robił pełne zerowanie.

A może ktoś, kto uczestniczy w programie i dostał po kimś telefon bawił się już pod tym kątem?

W każdym razie warto pomyśleć trochę o bezpieczeństwie i swojej prywatności i zaorać kartę przed oddaniem telefonu. Pod Linuksem najprościej skorzystać ze shred, albo zwykłe dd if=/dev/zero of=/dev/sdX (gdzie sdX to oczywiście urządzenie pod jakim system widzi czytnik z kartą).

Z mniej inwazyjnych, prostszych i działających na wszystkich systemach metod: telefon można podłączyć do komputera w takim trybie, że karta jest widziana jako urządzenie pamięci masowej. Wtedy wystarczy skasować dane i nagrać jakieś śmieci do pełnej pojemności (np. jakieś mp3). Następnie wystarczy bezpiecznie odłączyć urządzenie i ew. jeszcze raz skasować mp3 (tylko je będzie w stanie odzyskać potencjalny ciekawski).

Ciekawe, czy w wewnętrznej pamięci też coś zostaje po przywróceniu telefonu do ustawień fabrycznych (dane z karty nie są przy tym usuwane!) i na ile skomplikowane jest dobranie się do tych danych…

Gdyby kogoś bardziej interesowała recenzja samego telefonu, to swoje wrażenia z Testuj smartfona opisał tutaj Jakub Rusinek (niestety po angielsku; dead link).

UPDATE: Zaktualizowane o parę informacji od osoby, która ma smarfona na testach.

Niebezpieczny świat.

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 JPwyciekł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 (dead link)?

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.