Projekt RC5
RC5 powraca - edycja 72 bitowa
Kolejne wyzwanie
Następna, tym razem 72-bitowa edycja projektu RC5 rozpoczęła się oficjalnie 3 grudnia 2002 r. Projekt RC5-72 bazuje na wiadomości zaszyfrowanej kluczem o długości 72 bitów. Z drobną pomocą kalkulatora można stwierdzić, iż istnieje 4.722.366.482.869.645.213.696 (czyli 2 do potęgi 72) kluczy. Trochę tego dużo, prawda ? :). Zapewne nasuwa się Wam tutaj pytanie: 'czy tym razem w ogóle to się może udać' ? Zapewniam, że może. Pytanie więc nie powinno raczej brzmieć 'czy' ale 'kiedy' uda się znaleźć zwycięski klucz. Jak już wspominałem w poprzednich artykułach, skuteczność metody używanej w 'łamaniu' szyfru została już dwukrotnie potwierdzona przez distributed.net, który zakończył sukcesem projekty: RC5-56 (zajęło to 250 dni) oraz RC5-64 (tym razem aż 1757 dni). Oczywiście - jak widać i co jest logiczne - ze wzrostem długości klucza wzrasta także ilość czasu potrzebna na odnalezienie właściwego z nich. Chociaż nie musi być to koniecznie zasadą - jak już wspominałem równie dobrze właściwym może się okazać zarówno pierwszy jak i ostatni z przetestowanych kluczy. To tylko teoria, bo dziwnym trafem w dwóch poprzednich projektach poprawny klucz odnalazł się dopiero po sprawdzeniu około 80% wszystkich kluczy. Statystycy analizujący wyniki poprzednich projektów twierdzą że edycja 72-bitowa powinna zostać ukończona w przeciągu 'najwyżej' 40 lat. Pewnie zapytacie: 'chwileczkę, czy to oznacza że ten projekt będzie trwał aż 40 lat ?'. Otóż niezupełnie. W edycji 72-bitowej użyto klucza o długości o 8 bitów większej niż ostatnio. Z ośmiu bitów które mogą przechowywać wartość 0 lub 1 można ułożyć 256 unikalnych kombinacji. Jeżeli więc do każdego klucza z RC5-64 dodamy nowe 8 bitów, to każdy klucz da 256 nowych. A więc RC5-72 jest 256 razy trudniejszy do złamania niż RC5-64. W takim razie skoro RC5-64 łamano 5 lat a wiadomość zaszyfrowaną algorytmem RC5-72 należałoby łamać aż 256 razy większą ilością kombinacji to cały konkurs powinien zająć ponad 1000 lat ! Dlaczego więc przewiduje się tak 'krótki' okres trwania tej edycji ? No cóż, trzeba wziąć pod uwagę duży rozwój technologiczny. Przecież na początku projektu RC5-56 królowały komputery klasy Pentium 100, a teraz procesor o częstotliwości powyżej 2 GHz to w sumie nic niezwykłego. To znaczy, że przez ostatnich 5 lat procesory 'przyspieszyły' aż 20 razy. Gdyby zachować takie tempo rozwoju to za 5 lat powinniśmy mieć procesor taktowany zegarem o częstotliwości 80 GHz lub większej. Niemożliwe ? Obecnie na pewno tak. Główny wróg zwiększania mocy obliczeniowej procesorów jakim jest wydzielana przez nie temperatura, być może zostanie niedługo pokonany (nanotechnologia) a wtedy zobaczymy, gdzie sięgają granice możliwości procesorów i czy to będzie kolejnych 40 czy może 4 lata...
Nowy klient
Od około 10 grudnia 2002 r. distributed.net udostępnia klienty kompatybilne z tą edycją projektu RC5. Aby wziąć udział w projekcie wystarczy zaopatrzyć się w program w wersji 2.9001.000 lub nowszej. Jeśli dotąd uczestniczyłeś w którymś z poprzednich projektów distributed.net'u musisz koniecznie zaktualizować swojego klienta. W takim wypadku, przed instalacją nowej wersji należy koniecznie usunąć z katalogu w którym zainstalowany był stary klient wszystkie pliki oprócz dnetc.ini. Konfiguracja programu nie zmieniła się znacznie od czasów poprzedniej wersji, jednak przy okazji po kolei omówię wszystkie stare i nowe ustawienia które należy zmodyfikować. Po zainstalowaniu nowej wersji klienta NIE uruchamiamy jej za pierwszym razem w tradycyjny sposób. Najpierw wybieramy kolejno: Start > Programy > Distributed.net > Quick Commands > Client Configuration. Ukaże się okno konfiguracji. Poruszanie się po nim nie jest zbyt wygodne, ale w końcu ma ono wyglądać identycznie dla wszystkich wersji klienta przeznaczonych dla różnych systemów operacyjnych, tak więc musi być w trybie pseudo-tekstowym. Daną pozycję wybieramy wpisując liczbę znajdującą się przed nią po czym swoją decyzję potwierdzamy Enterem. Do poprzedniego menu możemy powrócić wpisując 0 i także potwierdzając ten wybór klawiszem Enter. Dobrze, zabierzmy się więc teraz za poszczególne opcje.
- General Client Options > Your E-mail Adress - tutaj należy wpisać swój adres e-mail. Adres ten NIE będzie używany do żadnych innych celów jak jedynie prowadzenie statystyki podesłanych przez Ciebie pakietów i identyfikowanie Ciebie jako unikalnego użytkownika.
- General Client Options > Crunch-o-meter - opcja ta odpowiada za sposób wyświetlania paska postępu analizy każdego z pakietów. Polecam wpisać tutaj 2, oznacza to iż postęp wyświetlany będzie w postaci 'kropkowego' paska postępu opisanego w pierwszym z cyklu artykułów. Według mnie jest to zdecydowanie najczytelniejszy wskaźnik postępu ze wszystkich dostępnych.
- Buffer and Buffer Update Options > Load-work precedence - jest to bardzo ważna pozycja odpowiedzialna za to nad którymi projektami klient ma pracować. Obecnie istnieją dwa projekty prowadzone przez Distributed.net: OGR-P2 (więcej informacji na jego temat na stronie organizatora) i omawiany tu RC5-72. Pierwszy z nich jest ogromnie czasochłonny (przerabianie jednego pakietu na sprzęcie z procesorem Athlon 1,4 GHz trwa ponad 30 godzin !) tak więc polecam go zupełnie wyłączyć. Dzięki temu klient będzie analizował tylko pakiety RC5 i nie będzie niepotrzebnie pobierać pakietów OGR. Aby uzyskać taki efekt należy tu wpisać: OGR=0,OGR-P2=0,RC5-72.
- Buffer and Buffer Update Options > Fetch work threshold - opcja ta decyduje o tym co ile ukończonych pakietów klient będzie starał się odesłać stare i pobrać nowe pakiety. Proponuję ustawienie: OGR=0,RC5-72=25. Oznacza to, że program będzie kontaktować się z serwerem co 25 przerobionych pakietów RC5-72. Zauważ, że ustawienia dotyczące projektu OGR (OGR=0) nie mają tu żadnego znaczenia, gdyż poprzednią opcją całkowicie wyłączyliśmy ten projekt, stąd są właściwie zachowane jedynie dla celów formalnych. Oczywiście liczbę tą możesz dobrać wedle własnych potrzeb, pamiętając jednak o tym, że im bardziej 'stały' masz dostęp do Internetu tym klient powinien częściej komunikować się z Serwerem Kluczy. Ustawienie zalecane dla modemowców to około 50 do nawet 200, ponieważ klient pobierze sporo pakietów i będzie mógł zajmować się nimi przez pewien czas, a więc częsty dostęp do Internetu w celu odesłania ukończonych pakietów nie będzie konieczny.
- Performance related options > Priority level to run at - jest to priorytet z jakim ma pracować program. Zero oznacza że klient będzie korzystać tylko z mocy procesora jaką pozostawiła reszta programów, a dziewięć dokładnie odwrotnie - czyli najważniejszym programem dla systemu stanie się klient distributed.net'u. Polecam zmianę tej opcji tylko i wyłącznie jeżeli naprawdę wiesz co robisz ! Zalecane ustawienie to 0, a używane przeze mnie po długich testach to 5. Uwaga ! Jeśli posiadasz system klasy NT (czyli NT 3/4, 2000, XP) nie zmieniaj domyślnego ustawienia, może to doprowadzić do zmniejszenia stabilności systemu !
- Logging Options - jest to cała grupa opcji odpowiadająca za zapis do pliku dokonywanych przez klienta operacji (czyli 'logowanie') :
- Log file type - odpowiada za to jak będzie obsługiwany plik zawierający log. Zalecam jedno z dwóch ustawień. Albo 0 - czyli wyłączony zapis stanu pracy klienta do pliku albo, jeśli już chcemy posiadać plik log - 3. Oznacza to, że w wypadku przepełnienia pliku log, najnowsze wpisy 'wypchną' najstarsze.
- File to log to - jeśli zdecydowałeś się na 'logowanie', wpisz tutaj ścieżkę dostępu do pliku log. Może to być np. C:\rc5-72.txt.
- Log file limit - pozycja ta określa maksymalny rozmiar pliku log i musi wynosić przynajmniej 100 (wartość podawana w kB). Ja jednak używam limitu 1024 kB. Plik log o rozmiarze 1 MB wystarcza do 'logowania' przez okres około jednego do nawet trzech miesięcy.
Taka konfiguracja powinna w zupełności wystarczyć dla jego poprawnej pracy. Teraz można go uruchomić w normalny sposób, zminimalizować i... zapomnieć :). Oczywiście nic nie stoi na przeszkodzie, żebyś sam trochę 'pogrzebał' w dużej ilości dostępnych opcji.
Statystyki
Po około dwóch dniach od podesłania pierwszego zestawu pakietów przez klienta można spodziewać się, że nasza praca zostanie uwzględniona przez system statystyk. Statystyki całego projektu oraz statystyki osobiste - każdego uczestnika z osobna - można znaleźć tutaj. Wpisując w pole Participant Stats swój adres e-mail (podany podczas konfiguracji klienta) można zobaczyć swoje osobiste statystyki. Zawierają one, kolejno od góry: miejsce w rankingu (wczoraj i dzisiaj), liczbę podesłanych bloków (także rozdzieloną dla porównania na dzień wczorajszy i dzisiejszy), średnią ilość bloków przerabianą w ciągu sekundy, liczbę przetestowanych kluczy, średnią ilość kluczy testowanych na sekundę oraz ilość dni przez które uczestniczymy w projekcie. Statystyki odświeżane są raz dziennie: o północy uniwersalnego czasu UTC. Stąd właśnie dzisiejsze statystyki dotyczą tak naprawdę dnia wczorajszego, a wczorajsze - przedwczorajszego.
Drużyny
Kiedy znajdziesz się już w systemie statystyk, możesz użyć przycisku 'E-mail me my password' umieszczonego się na dole strony z Twoimi statystykami osobistymi. W wyniku tego w przeciągu 10 minut powinieneś otrzymasz hasło. Używając tego hasła oraz jako loginu adresu e-mail podanego w konfiguracji klienta możesz: po pierwsze przeedytować swoje - jako uczestnika projektu - dane. Wystarczy wejść tutaj i kliknąć łącze 'Edit personal information'. Po drugie, i chyba najważniejsze, hasło to przyda się podczas dołączenia do wybranej drużyny. Wystarczy wejść na stronę zawierającą statystyki danej drużyny, kliknąć link 'I want to join this team !' i podać wspomniane dane. Pragnę tutaj przypomnieć o mojej drużynie :). Łącze do jej podstrony w systemie statystyk znajduje się na końcu artykułu. Jeśli dołączysz do mojej drużyny koniecznie skontaktuj się ze mną !
Na koniec
Życząc miłej zabawy chciałbym jeszcze przypomnieć o kilku sprawach. Pierwsza z nich: zalecam zapisać się chociaż do Krytycznej Listy Mailingowej (Announcements List) distributed.net'u. Jak już pisałem wcześniej, Twój adres podany w opcjach nie zostanie użyty do niczego innego jak tylko i wyłącznie do celów statystycznych. Tak więc możesz przegapić pewne ważne wydarzeniach związanych z projektem, jak np. konieczność aktualizacji klientów (przykładowo, gdyby wykryto w nich jakiś błąd) czy nawet zakończenie danego projektu ! Po to właśnie utworzono Krytyczną Listę Mailingową. Druga sprawa: zatrzymując kursor myszy nad ikoną klienta zobaczymy prędkość z jaką program właśnie pracuje. Widząc liczbę typu 4.200.500 kluczy/s możemy sobie pomyśleć, że jest to bardzo duża prędkość i że coś zapewne jest nie tak skoro pasek postępu prac nad jednym pakietem posuwa się tak powoli. Nic bardziej mylnego. Trzeba zauważyć jedną rzecz: pojedynczy pakiet zawiera 2 do potęgi 32 (czyli dokładnie 4.294.967.296) kluczy jakie klient ma przetestować. Jeśli podzielimy tą liczbę przez prędkość naszego klienta czyli wspomniane 4 miliony kluczy na sekundę okaże się, że jeden pakiet powinien być analizowany przez 1022 sekundy czyli ponad 17 minut. I już wszystko jasne: cztery miliony kluczy na sekundę to wcale nie tak dużo skoro jeden pakiet zawiera aż 4 miliardy kluczy do przetestowania !
Na koniec jeszcze dwa małe prezenty. Po pierwsze polecam prawdziwym fanom projektu umieszczenie jednej z dwóch Krowich Tapet mojego autorstwa na swoim Pulpicie :). Link znajduje się poniżej. Po drugie jeśli posiadasz własną stronę WWW możesz promować projekt RC5-72 umieszczając na niej poniższy banner za pomocą następującego kodu. Oczywiście banner ten został wykonany przeze mnie.
![]()
Dodatek - kilka przydatnych linków
Oficjalna strona koordynatora projektu i producenta klientów
Miłego Miłego muuuczenia w RC5-72 :)
Wasz Aionel