SpaceHawks' WorldNews
Issue #16

Az Amiga és az RC5

Bizonyára hallottál már az RC5 projektről, és bizonyára ugyanúgy vonogattad a vállad, mint eleinte én. (Tisztelet a kivételnek!) Mi is ez a projekt, és mi köze van egyáltalán az Amigához? Erre, meg még néhány érdekes kérdésre kaphatsz most választ rövid, de velős cikkemben. (sic!)

Egyszer volt, hol nem volt (sőt, még van is) egy RSA Data Security, INC. nevű cég, aki unatkozó programozóit azért fizeti, hogy ravaszabbnál-ravaszabb kódolási eljárásokat fejlesszenek ki a csúnya, rossz, gonosz hacker és cracker bácsik dolgának megnehezítésére.
Nos, mikor az RSA úgy gondolta, hogy most aztán már nagyon tökös kódolást találtak ki, meghirdettek egy versenyt, melyben 10.000 USD üti annak a markát, aki elsőnek visszakódol egy általuk megadott adatcsomagot, melynek csak a kezdetét ismerjük. (Így kezdődik: "The unknown message is:".)
Erre okos bácsik kitalálták, hogy remekül meg lehet ezt törni az un. "brutal force" módszerrel, ami nem más, mint egy egyszerű próbálgatás. Addig megy a próbálgatás, amíg sikerül visszafejteni a dolgot. A ügy azon áll vagy bukik, hogy mikor sikerül azt a bizonyos egyetlen kódolókulcsot fellelni, amellyel az üzenetet kódolták.
Tulajonképpen ha lenne egy nagyon izom gépünk (értsd: valami mainframe célgép, például egy Cray), akkor már egyedül is nekiállhatnánk, de mostanában nem igazán hemzsegnek a 10.000 dolláros kategóriában a mainframe gépek. Ezért kitalálták, hogy miért nem használunk inkább sok, viszonylag kis teljesítményű gépet erre? Ez az, amit általában az RC5 kifejezés alatt értenek.
A próbálgatásnak egyetlen nagy hátránya van, mégpedig az, hogy a 64 bites kulcsú kódolás legrosszabb esetben 2^64 (18.446.744.073.709.551.616) darab kulcs átvizsgálásával jár, ugyanis ezek közül pontosan egyetlen egy felel meg nekünk. Ez a szám már milliméterből is szép távolságot ad, nemhogy még számításkapacitásból. Szerencsére nem valószínű, hogy tényleg végig kell nyálazni az összes kulcsot, ahogy az 56 bites kódolásnál sem volt szükséges.

Több különböző projekt létezik a kódolás megtörésére, ezek egymástól függetlenek. A legismertebb, és egyben az egyetlen, amelynek Amigára is van kliense, a Bovine RC5-64 Projekt. (Ők készítették a klienseket, és a kiszolgáló szervereket, jelképük egy aranyos kis bocika.)

Hogyan működik az RC5?

Tulajdonképpen ebben az esetben a projektben résztvevő összes számítógép egyetlen megagéppé áll össze, és így már komoly esélye van a megfejtésnek.
Ahhoz, hogy egy gép bekapcsolódjon, és felesleges idejét kódtöréssel töltse, a következő dolgokra van szükség:
* a kliens program, ami a tényleges törést végzi,
* egy akármilyen számítógép (persze minél izmosabb, annál jobb),
* egy e-mail cím, amin esetleg majd értesítenek, és ami alapján nyilvántartanak
* Internet kapcsolat, bár ez nem feltétlenül szükséges. (Elég, ha néha fér Internethez a tulaj, és az sem muszáj feltétlenül az ő saját gépéről.)

A kliens csatlakozik a kulcs-szerverhez (valójában ez nem egyetlen gép), letölt egy adag kulcsot, aztán nekilát törögetni. Ha végzett a letöltött kulcsok végigvizsgálásával, visszaküldi a szervernek, és újra letölt egy adagot.
Ha nincs Internet kapcsolat, akkor egy Internetre csatlakozó gépről el kell hozni egy (nagyobb adag) letöltött kulcsot, majd a végeredményt visszavinni az ottani kliensnek, és az visszaküldi a szerverre. A kliens addig sem vár, amíg nem jut újabb kulcshoz, akkor véletlen kulcsokat generál, és azokat próbálgatja. (Persze a végpróbált véletlen kulcsokat is visszaküldi a szervernek, hogy azzal is haladjon a projekt.)
A kulcsokat un. blokkokba csoportosítják. Egy blokkban 2^28 (268.435.456) darab kulcs található, a kulcsszervernek ez a legkisebb adag.

A már kiosztott, de hosszú ideje (min. 90 nap) vissza nem érkezett blokkokat természetesen újra kiosztják, nehogy egy is elvesszen. Azért ilyen hosszú az idő, hogy ha valaki egy lassabb géppel töröget, és ráadásul ritkán fér Internethez, annak se kelljen felhagynia a töréssel.

És mi értelme ennek az egésznek?

Hát ez egy ravasz kérdés. Mindenki másért csinálja. Van aki csak úgy heccből (mint én is: nehogy már unatkozzon szegény procim), van aki azért, hogy jól megmutassa a politikusoknak (lásd még: 128 bites tikosító szoftverek export tilalma az USA-ban), van aki a pénzért (olyan, mint a lottó, csak kisebb az esélyed...), van aki menőzésből ("látod milyen izom is a gépem?!"), van aki a statisztikák miatt ("Megint előbbre jutottam a toplistán!"), van aki a boci miatt (mert olyan kis cuki).
Tulajdonképpen úgysem ez a lényeg, csak hogy törj te is! (Persze azért a pénzt se utasítsd vissza, ha mégis te nyered meg!)

Mi történik, ha megvan a kulcs?

Nos, ezt azonnal nem fogod észrevenni, ugyanis a kliens semmilyen formában nem fog figyelmeztetni. Ennek több oka is van: elméletileg lehet vaklárma (bár ennek elég kevés az esélye), meg a készítők szeretnék kézben tartani az eseményeket. (Pl. hogy nehogy véletlenül beállíts nélkülük az RSA-hoz a kulccsal...)

Azt, hogy te voltál a szerencsés, akkor fogod megtudni, amikor a kliensnek általad megadott e-mail címre megérkezik a gratuláció. Ekkor már biztos lehetsz benne, hogy megnő az éves adód.
Az e-mail cím kódolva szerepel az általad visszaküldött blokkban, ezért nagyon fontos, hogy beállítsd a kliensben!

A díjat nem teljes egészében te kapod ha nyersz, hanem a következőképp osztják meg: 2.000 dollárt eltesz a Bovine projekt szervező csapata, 1.000 dollárt kap aki megtörte a kódot, 1.000 dollárt a csapat, ha volt neki (egyébként a versenyzőé), a maradék 6.000 dollárt pedig egy non-profit szervezetnek ajándékozzák, hogy melyiknek, az egyelőre még nincs eldöntve, de te is javasolhatsz szervezeteket a Bovine honlapján. (Gutenberg Project, Free Software Foundation, stb.)

A sebességről

Tulajdonképpen a sebesség nem a legfontosabb tényező az egészben, inkább a szerencse meghatározó, de van egyfajta verseny a személyek és bizonyos csapatok között is. A visszaküldött kulcsok számából egy ranglistát készít a projekt szerver-rendszere minden nap éjfélkor (Greenwich-i középidő szerint).
Egy gép törési sebességét kilokulcs/másodpercben (KKeys/sec) mérik. Tulajdonképpen nem igazán van pontos összefüggés a gép valós teljesítménye és a törési teljesítménye között, mert inkább bizonyos utasítások sebességtől függ a teljesítmény (32 bites forgatási műveletek). Ezért van az, hogy a PowerAmigák odazúznak a hasonló teljesítményű Intelvackoknak, a PowerPC nagyon jó törési teljesítményt ad.
A kliensben a -benchmark vagy a -benchmark2 opcióval mérheted meg a sebességet. (A második egy rövidebb és pontatlanabb teszt.)

Néhány processzor teljesítménye:
68030-50Mhz AmigaDos 14.430 keys/s
68040-40Mhz AmigaDos 33.414 keys/s
68060-50Mhz AmigaDos 105.971 keys/s

PowerPC603e-160Mhz AmigaDos 597.805 keys/s
PowerPC604e-233Mhz AmigaDos 750.623 keys/s
PowerPC750-333Mhz MacOS 8 1.180.000 keys/s

5x86-133Mhz Win95 126.167 keys/s
Pentium-166Mhz Win95 236.730 keys/s
PentiumII-233Mhz NT4.0 627.467 keys/s
Celeron-500Mhz NT4.0 1.375.000 keys/s

Alpha 21164-333Mhz NT 4.0 377.169
Mips R10000-200Mhz Irix 6.4 2.218.939 keys/s
Sparc2-248MHz Solaris 2.6 6.094.913 keys/s
HP PA-200 Mhz HPUX 10 295.962 keys/s

(Több infót találhatsz a http://www.distributed.net/speed oldalon!)

A csapatokról

Az egésznek a lényege (számomra legalább is) mégis az, hogy megmutassuk: az Amigák sem olyan kis fika gépek mostanában, léteznek ugyanis bizonyos csapatok az RC5 versenyben. Csapatot bárki alapíthat, de igazából inkább érdemes egy már létező szimpatikus csapathoz csatlakozni. És ki is lehetne szimpatikusabb egy Amigásnak, mint az Amiga RC5 Team Effort, azaz az Amigásokat tömörítő csapat!
Ha veszed magadnak a fáradtságot, és a Bovine Projekt szerverén beállítod a kedvenc csapatodnak az Amigást, akkor minden egyes általad megvizsgált blokk ennek a csapatnak és neked is jóvá lesz írva. (Elsősorban Amigásokat várnak, de szabad a pálya, én felraktam a munkahelyemre is a klienst az izom kis PC-re, aki persze így az Amigás csapatot erősíti...)

A csapatversenyt toronymagasan a Team EvangeLista nevű csapat vezeti, ők ugyanis a Mac-esek... (A G3 kicsit jó eredményt biztosít...)
Az Amiga RC5 Team Effort is szép helyen áll, pillanatnyilag a 6., de volt már 5. is. A magyarokat tömörítő csapat (STB+) pedig a 13.

Hogyan állj neki

Ha megtetszett a dolog, és szeretnéd te is megmutatni, hogy az Amigád milyen kis izomgolyó, akkor első lépésként szerezz be egy megfelelő klienst. Ezt megteheted mind a hivatalos Bovine oldalakon, mind pedig az Amiga RC5 Team Effort oldalán.
Amigára van külön M68K és PowerPC kliens is, ezek ráadásul egyszerre is futhatnak, azaz a két proci paralel dolgozik egymástól függetlenül! (De ha ezt ki akarod használni, ügyelj arra, hogy külön állományokba dolgozzanak, mert nagy probléma lehet belőle!)
A konfigurálás tulajdonképpen gyerekjáték, a kliens első indításkor automatikusan is belép a konfigurálásba, de a -config paraméterrel is ráveheted erre.

Szerintem a következőket célszerű beállítani (amit kihagyok, az maradjon alapbeállításon):

1. Required options

1. Your e-mail: feltétlenül meg kell adni, ahogy azt már írtam!
2. RC5 Blocks to Buffer: nem muszáj megváltoztatni, egyszerre ennyi blokkot akar letölteni majd a szerverről. Ha offline törögetsz (Internet nélküli gépen), akkor ez az érték teljesen mellékes.

2. Logging options

1. File to log to: ha akarod a törés folyamatát logolni, akkor ide kell a logfile nevét megadni. Inkább akkor van jelentősége, ha nem lehetsz ott állandóan a gép mellett, mert pl. a titkárnőé a gép, és te vagy a rendszergazdi. Igazából Amigán nem sok jelentőségét látom.

3. Communication Options

1. Firewall Communications mode: ha esetleg tűzfal mögött lenne a géped, ez sem túl valószínű.
9. Offline operation mode: amikor nincs Internet kapcsolatod, akkor ezt az Offline Always vagy Finish Buffers and exit módba kell kapcsolni. Ekkor nem próbál meg csatlakozni a szerverekhez. A második lehetőség beállításakor nem kezd el véletlen kulcsokat probálgatni, ha végzett a letöltött blokkokkal. (Miért ne? Úgyis ráér...)

4. Performance Options

1. Level of niceness to run at: mikor foglaljon processzoridőt, azaz hogyan állítsa be a taszk prioritását. Célszerű Extremely Nice-ra állítani (alap), így elvileg csak akkor fog futni, ha a procinak tényleg nem kell más taszkokkal foglalkozni. A PowerPC-s kliensben ez nem működik rendesen, ahogy észrevettem, de erről majd később.

5. Miscellaneous Options

10. Interval between saving of checkpoints (minutes): mivel a rendszer Amigán könnyebben fejreáll, ezért elég könnyen el lehetne veszíteni az éppen ellenőrzött blokk egy részét. Szerencsére lehet checkpoint-ot beállítani, ami mindig tárolja a blokk aktuális állását, még mielőtt a kliens befejezné a blokkot. Célszerű ezt legalább 2 percre állítani, hogy minél kevesebb vesszen el. (A tárolás egy pillanat alatt megvan, így nem fogja a rendszert.)

Itt lehet letiltani az outputokat, de valószínűleg ez megint nem annyira fontos.

6. Filenames & Path Options

1. RC5 Checkpoint Path/Name: állítsd "ckpoint.cp"-re, a legtöbb kliens ezt használja. Valójában akkor van nagyobb jelentősége a checkpoint nevének, ha offline működik a kliens, de erről majd később.

Hát ennyi, még el kell menteni a beállításokat, és már mehet is a törés. (0. menüpont a főmenüben.)

Sajnos a PowerPC-s kliensből csak PowerUp-os van (és ez miért baj?-Emeric SH), de szerencsére működik a PPCLibEmu legújabb (0.6a) verziójával. Célszerű a PowerPC-s kliens indítása előtt beállítani a taszkprioritásokat. A legjobb kombináció, ha annak a taszknak az M68K prioritása magas, a PPC prioritása viszont alacsony. Nagyrészt úgyis a PPC dolgozik, de célszerűen a másik oldalról gyors kiszolgálást kaphat.

A következőképp lehet ezt WarpOS alatt megtenni:

changetaskpri 2
niceppc 20

Hogyan lehet offline törni?

Kicsit nehezebb az eset, ha nincs Internet hozzáférésed az Amigádról. Ekkor kell egy gép, ahol viszont van, meg kell még az azon a gépen futó kliens. Majd a következő lépéseket kell megtenni:
Konfiguráld be úgy a klienst, hogy egy nagyobb adagot töltsön le egyszerre. (Főmenü 1.-es pontjának 2.-es alpontja, pl. 200 blokk.) Indítsd el a klienst a -fetch vagy az -update paraméterrel. Ekkor -ha minden jól megy- kapcsolódik a szerverhez, és letölti a megfelelő blokkmennyiséget, majd kiszáll. Ha nem száll ki, akkor állítsd le! (Pl. a Win32-es GUI-s kliens nem áll le, hanem azonnal elkezd törni.)
Fogd a buff-in.rc5 állományt és mozgasd át (ne csak másold) a saját lemezedre! (Nem nagy, 200 blokk kb. 26 Kbyte.) Vidd haza az állományt, konfiguráld be a kliensed, ahogy előzőleg leírtam, majd másold mellé az állományod ckpoint.cp néven.
A következő indításkor automatikusan létrehozza a buff-in.rc5 állományt a checkpoint állományból.
Amikor végzett az összes blokkal (200 blokk egy 603e-160-asnak kb. 80 órányi munkát ad), akkor mozgasd ki a buff-out.rc5 állományt lemezre, cipeld el az Internetes géphez, másold a klienssel egy könyvtárba a kész állományt azonos néven, majd indítsd el a klienst egy -update paraméterrel. Ekkor a kész blokkokat visszaküldi, és helyette újakat tölt le, amiket megint boldogan hazacipelhetsz. (És így megy ez az idők végezetéig...)
Vigyázz arra, hogy ha az ottani kliens is aktív, akkor mielőtt felülírod a buff-out.rc5 állományát, csinálj egy frissítést (-flush paraméter)!

Fontosabb Internet oldalak

distributed.net (A cég, aki a Bovine projektet kezelgeti) http://www.distributed.net/rc5/

RC5-64 Overall Project Stats
http://tally.distributed.net/rc5-64/

The Amiga RC5 Team effort
http://distributed.amiga.org/

STB+ Team Hungary (Jó kis FAQ van az oldalukon, innen okosodtam ki én is.)
http://www.elte.hu/~rc5/

RSA Data Security, INC.
http://www.rsa.com/

"Egy újabb érdekes adat"

Amíg ezt a szöveget megírtam, az unatkozó PowerPC proci kb. 5 és fél blokkot nézett végig, ami kb. 1.476.395.000 (2^28x5,5) kulcs átvizsgálását jelenti. (Ez az összes kulcs 0,00000000800355%-a...)

Rachy of Bi0Hazard

PS.: Na, Emeric, megírtam. Akkor most visszamehetek Hexen-ezni végre? :) (Na, menjél...-Emeric SH :)

 

 

 

 
(C) Copyright 1999 SpaceHawks