Projekt RC5
Czym to się je ?
RC5 ? A co to jest ?
Od pewnego czasu bardzo powszechnym zjawiskiem stało się udostępnianie innym praktycznie wszystkiego co przechowujemy na dyskach twardych naszych komputerów. Mówię tu m.in. o wymianie plików MP3, filmów itp. w sieciach P2P. Dlaczego by więc nie udostępniać czegoś nieco innego, jak np. mocy obliczeniowej naszego procesora ? Pewnie niektórzy pomyślą 'o czym on mówi ?'. Inni jednak od początku wiedzą, że mam tutaj na myśli projekt SETI@H, którego to celem jest poszukiwanie pozaziemskich cywilizacji za pomocą analizy danych odbieranych z radioteleskopu. Brzmi dziwnie - cóż, jest dziwne. Mały programik pracujący w tle (także jako wygaszacz) używa do analizy odbieranych danych tej części mocy procesora z której w danej chwili nie korzystamy. Ale moment, nie o tym miała być mowa w tym artykule :). Szansa powodzenia projektu SETI@H jest jak dla mnie zbyt mała (o ile w ogóle istnieje). Lepiej więc użyć niepotrzebnej nam części mocy procesora do jakiegoś ciekawszego celu. I tu właśnie pojawia się projekt RC5-64. Pewnie teraz zapytacie się 'co oznacza ten skrót ?'. Szczerze mówiąc nie mam pojęcia co oznacza skrót RC5. Istotne jest jednak to, iż w wersji '64' jest jednym z najsilniejszych algorytmów szyfrujących wymyślonych przez ludzkość. Jeśli chodzi o szczegóły to istnieje dokładnie 18.446.744.073.709.551.616 (czyli 2 do potęgi 64) kluczy którymi można próbować rozkodować zaszyfrowane tymże algorytmem dane.
Teoria ...
No dobrze, ale na czym polega cała zabawa z RC5-64 ? Otóż pewna organizacja (RSA Labs, projektant algorytmu RC5) ogłosiła konkurs na znalezienie odpowiedniego klucza, którym można by odkodować pewną 'tajną' informację tekstową. Oczywiście nie jest ona do końca taka 'tajna', ponieważ znają ją organizatorzy :). Test ten ma na celu wykazanie siły szyfrowania tegoż algorytmu. Tak się składa, że na znalazcę kodu czeka nawet spora nagroda, a konkretnie 10.000 $. Wszystko pięknie, łatwe pieniądze, prawda ? No niezupełnie, otóż nawet najszybszym obecnie dostępnym komputerom znalezienie odpowiedniego klucza zajęłoby setki tysięcy lat. Właśnie dlatego narodziła się idea stworzenia najpotężniejszego komputera na świecie złożonego z mniejszych, połączonych w całość. Oczywiście tylko w cudzysłowie 'połączonych', bo tak naprawdę każdy z komputerów biorący udział w projekcie otrzymuje pojedyncze klucze (a właściwie całe zestawy kolejnych kluczy dostępnych w całej puli wszystkich możliwych kombinacji) i próbuje nimi odkodować tą właśnie wiadomość. Jedyne co wiadomo o niej to to, że jej początek powinien po odkodowaniu odpowiednim kluczem brzmieć : 'The unknown message is:'. To wystarczy, aby testować kolejne klucze. 'Zużyte' odsyłane są do centralnego komputera który oznacza je jako wypróbowane i wysyła klientom kolejne do analizy.
... i praktyka
W praktyce wygląda to tak, że ściągamy mały programik, konfigurujemy go (jedyne wymagane dane to adres e-mail który jest używany jako identyfikator danego użytkownika), a on ukryty pod postacią ikony w zasobniku systemowym analizuje kolejne pakiety kluczy. Program nie przeciąża procesora i nie przeszkadza nam w tym co aktualnie robimy na komputerze, bo używa tylko tej części mocy obliczeniowej procesora której nie wykorzystujemy w danym momencie. Jeśli np. uruchomisz bardzo wymagającą grę, program automatycznie przestanie wykorzystywać tak dużą cześć mocy procesora i co za tym idzie po prostu zacznie wolniej analizować pakiety, ale za to Ty będziesz mógł spokojnie zagrać w Twoją ulubioną grę :).
Świetnie, tylko co Oni z tego mają ?
Oczywiście organizacja, która napisała klienty oraz koordynuje całą ich sieć (Distributed Computing, w skrócie distributed.net lub po prostu d.net) ma pewną korzyść z tego wszystkiego. Gdyby któremuś z klientów udało się znaleźć dany klucz, to podział nagrody ufundowanej przez RSA Labs wyglądałby tak: 1000 $ trafia do osoby która znalazła dany klucz, 1000 $ dla jej drużyny lub dla niej samej jeśli nie była członkiem żadnej drużyny (o drużynach możesz poczytać nieco niżej), 2000 $ dla distributed.net'u, a pozostała kwota (6000 $) zostanie przeznaczona dla organizacji o charakterze charytatywnym (np. Projektu Gutenberg), wybranej w drodze głosowania przez wszystkich uczestników projektu.
Gwarancja powodzenia
A więc projekt zaczyna Ci się podobać, prawda ? :). Ale, jaka jest gwarancja że w końcu odpowiedni klucz zostanie odnaleziony ? No cóż, distributed.net ma już w tej kwestii pewne osiągnięcia świadczące o skuteczności metody przez nich stosowanej, m.in. jakiś czas temu ukończony został projekt RC5-56 (obecny projekt nazywa się RC5-64 dlatego, iż klucz może być o 8 bitów dłuższy niż w edycji 56-bitowej, co daje 2 do potęgi 8 razy więcej dodatkowych kombinacji). Projekt RC5-56 trwał 250 dni, a właściwy klucz został odnaleziony przez bardzo słaby komputer.
Co potrzeba ?
Żeby przyłączyć się do całego projektu wcale nie musisz mieć superszybkiego procesora, a wymagane połączenie z Internetem jest jedynie wtedy, kiedy trzeba wysłać skończone i pobrać nowe pakiety kluczy (na moim komputerze średnio raz na tydzień), tak więc modem do tego celu spokojnie wystarczy. Proces wymiany sprawdzonych pakietów na nowe trwa jedynie kilka sekund. Oczywiście dołączenie do całego projektu nic nie kosztuje, a można zyskać (i to w sumie całkiem sporo :).
Jak zacząć
No dobrze, ściągnąłeś klienta, zainstalowałeś i zapewne jesteś teraz w konfiguracji. Na początku może trochę zaskoczyć sposób nawigacji (tekstowy), ale to kwestia obycia z DOSowymi programami. Tak naprawdę program jest w pełni 32-bitowy ale po to aby wyglądał identycznie pod różnymi systemami operacyjnymi zrezygnowano z interfejsu graficznego. Teraz właściwie wystarczy tylko wybrać opcje w następującej kolejności: General options, Your e-mail adress, wpisać swój e-mail, potem Enter, 0, Enter i gotowe. To właściwie tyle, ale jeśli chcesz aby wyświetlany był czytelny pasek postępu w postaci niżej opisanych kropek należy z menu głównego konfiguracji wybrać także kolejno: General options, potem Crunch-o-Meter, a następnie wpisać 2, teraz dwa razy pod rząd 0 i Enter. Reszta opcji może zostać tak jak jest, mimo to jeśli chcesz możesz w nich nieco pogrzebać (np. ustawić zapis dokonywanych przez program operacji do pliku). [Późniejszy dopisek: w edycji 72-bitowej wymagana jest dokładniejsza niż w edycji 64-bitowej konfiguracja, więcej na ten temat w trzecim artykule: 'RC5 powraca - edycja 72-bitowa').] Od teraz zawsze - program uruchamia się automatycznie ze startem systemu - towarzyszyć Ci będzie ikona krowy w zasobniku systemowym (tak, to właśnie ta śliczna krówka jest symbolem projektu :). Dwuklik na tej ikonie spowoduje pokazanie głównego okna programu, pamiętaj by je koniecznie minimalizować a nie zamykać. W głównym oknie programu widać postęp dekodowania, który może wyglądać np. tak:
[May 24 08:35:58 UTC] Automatic processor detection found 1 processor.
[May 24 08:35:59 UTC] Loaded CA:537B44B5:00000000:1*2^16 (11.10% done)
[May 24 08:35:59 UTC] 7 RC5 packets (7 work units) remain in buff-in.rc5
[May 24 08:35:59 UTC] 16 RC5 packets (16 work units) are in buff-out.rc5
[May 24 08:35:59 UTC] 1 cruncher has been started.
.....10%R....20%.....30%.....40%.....
Część '7 RC5 packets (7 work units) remain in buff-in.rc5' oznacza że pozostało jeszcze 7 pakietów do przetworzenia zanim te zostaną odesłane i pobrane nowe. Fragment '16 RC5 packets (16 work units) are in buff-out.rc5' oznacza że przetworzonych zostało już 16 pakietów. Pod spodem znajduje się pasek postępu w postaci kropek, których ilość stopniowo zwiększa się (5 kropek to 10% przetworzenia danego pakietu). Kiedy kropki dotrą do końca ekranu (fakt potwierdzony napisem 100%) przetwarzanie pakietu zostało zakończone i wczytany zostaje kolejny. Litera R na pasku postępu symbolizuje, że w tym miejscu praca została wznowiona (po ponownym włączeniu komputera).
Uwagi
Jeszcze kilka uwag na koniec, zanim ściągniecie klienta :). Na całym świecie istnieją lokalne drużyny (także i w Polsce) w które można się łączyć, dzięki czemu przetworzone przez wszystkich członków drużyny pakiety liczą się wspólnie, a szansa zwycięstwa jest większa. Sam jestem koordynatorem jednej z drużyn. Jeśli będziesz chciał dołączyć do mojej drużyny i odesłałeś już swój pierwszy ukończony zestaw pakietów napisz do mnie, a wytłumaczę Ci co dalej. Druga niezwykle ważna rzecz to 'resety' ! Jeśli system się zawiesił i zrestartujesz go sprzętowo, pakiet nad którym trwały w danej chwili prace zostaje utracony gdyż i tak prawdopodobnie zostałby uszkodzony. Podczas odsyłania pakietów klient poinformuje serwer o zaistniałej sytuacji i dany pakiet trafi potem do kogoś innego. A przecież utracony przez Ciebie pakiet mógł zawierać właśnie Ten jeden jedyny właściwy klucz ! Uważaj więc na nieoczekiwane 'resety' i zawsze zamykaj system poprawnie (wtedy zostaje zapisany postęp prac i przy ponownym starcie systemu prace zostaną rozpoczęte od miejsca ich przerwania).
Podsumowanie
Mam nadzieję, że zachęciłem Was do przyłączenia się do projektu RC5. Już dziś macie szansę stać się częścią największego na świecie komputera który obecnie posiada sumaryczną moc rzędu 42.356 GHz ! Jeśli nawet nie przyłączycie się to i tak przynajmniej wiecie coś nowego o komputerach :). Ściągajcie więc czym prędzej klienta. Sam biorę udział w projekcie od stycznia 2002 r.
Linki
Więcej informacji oraz klienty do pobrania znajdziecie na oficjalnej stronie projektu. Po wczytaniu się strony wybierz język a następnie kliknij na: 'Moo ! Get the client'.
Miłego muuuczenia ;)
Wasz Aionel