addon ................... ...::: phearless zine #5 :::... ...................>---[ Loa - Artificial Computer? ]---<................... .........................>---[ by Wintermuth ]---<.......................... anikolic@phearless.org http://anikolic.phearless.org U poslednje vreme sam prilicno filozofski nastrojen. Padaju mi svakakve ideje na pamet. Pustam masti na volju i tripujem se kad mi dosadno. Mnogo ne valja kad je meni dosadno. Obicno majem svoj mozak razvijanjem planova za dominaciju svetom ili za putovanje kroz vreme ili nekim drugim dubioznim glupostima. Skorije sam se setio knjige "Count Zero" Viljema Gibsona. To je nastavak poznatog cyberpunk romana "Neuromancer". Anywayz, u tom svetu, u mrezi tog sveta, postoje neki entiteti cije je postojanje nejasno. Generaije jahaca mreze su stvorile i religiju koja se klanja tim inteligencijama bez postojanja u prostoru. Ime tih bozanstava je loa. Loa predstavalja to bozanstvo koje egzistira u mrezi i javlja se jahacima povremeno. Otud i ime teksta. Mnogo istripovana knjiga, preporucujem da je procitate. Uzeo sam da se tripujem razmisljajuci da li je moguce da ce takve stvari postojati u buducnosti. Sta bi nam trebalo? Treba nam kompjuter, bez trunke hardwarea, bez milimetra kubnog koji zauzima u prostoru. Jedini njegov oblik postojanja bi bilo jurcanje elektrona kroz beskrajne puteve zica i kablova koje cine Mrezu. Prvo sto kompjuteru treba da bi uopste mogao da se zove kompjuter jeste aritmeticko logicka jedinica (kod realnih kompjutera to bi bio CPU). AL jedinica omogucava resavanje prostih Bulovih logickih operacija (znate , AND, XOR, OR, NOT). U jednom clanku koji je izasao u "Nature" casopisu u sekciji "Letters to Nature" pod imenom "Parasitic Computing" naisao sam na krajnje interesantnu i posve neverovatnu ideju. U svom clanku cenjena gospoda su opisala tehniku kojom je moguce koristiti sve kompjutere sveta, bez njihovog pristanka, za resavanje NP kompletnih problema. Ukratko, NP (non polinomial) kompletni problemi su problemi koji se ne mogu resiti u polinomialnom vremenu, a to znaci da je jedino moguce resenje isprobavanje svih mogucih kombinacija. Sad ce se naci neki matematicar koji to zna mnogo bolje od mene i reci kako to nije to, ali molim vas matematicari ne zamerite mi na slabom poznavanju materije jer to nije ni cilj onoga sto ovde hocu da predstavim. Za vise i bolje objasnjenje molim vas pogledajte na wikipediji. E, ovi su se setili kako da resavaju te NP kompletne probleme. Posto se svaki od tih problema moze postaviti u obliku logickih operacija dosli su na ideju da proveravaju tacnost kombinacija pomocu checksum vrednosti TCP paketa. U slucaju da kombinacija vrednsoti koja se salje u odredjenom paketu nije istinita za taj logicki problem, taj isti paket bi, od strane primaoca, bio samo slepo odbacen kao los. U slucaju da je istinitost utvrdjena, paket bi se smatrao za validan i na njega bi se odgovorilo. To je moguce jer TCP checksum izracunavanja mogu da se predstave u obliku Booleanskih logickih funkcija. Kako NP kompletni problemi imaju jako veliki broj mogucih resenja testiranje svake kombinacije za istinitost je veoma naporan posao slozicete se. Npr. SAP ili ti satisfiability problem koji izgleda ovako: (X1 XOR X2) AND (~X2 AND X3) Ovaj problem ima 2^3 mogucih resenja ali ima samo jedno resenje za koje je cela funkcija istinita. To su vrednosti za X1 1, za X2 0 i za X3 1. Samo u tom slucaju bi funkcija bila tacna. U stvari, ovo izgleda da je NP hard problem np kompletan bi bio kada bi imali 3 promenljive u svakoj zagradi ako se ne varam. Opet, matematicari ne zamerite. E sad, po onom tekstu iz Nature-a, napadacki sistem salje TCP pakete sa posebnim checksum poljima koja odgovaraju svim mogucim kombinacijama za resenje problema. Paketi se slaju svakom hostu na internetu i naravno pamti se koje je moguce resenje gde poslato. Kao sto sam vec rekao na one vrednosti koje su tacne se odgovara i napadacki sistem po tome moze da sazna koja su od mogucih resenja tacna. Za vise o ovome posetite sajt likova koji su radili ovo strazivanje na Univerzitetu Noter Dama na www.nd.edu/~parasite. Tu imate i sam clanak iz Nature casopisa. Izracunavanje logickih funkcija ovim putem ne zahteva upotrebu procesorske snage onoga ko zeli da dobije rezultat. To u sustini moze da znaci da nam ne treba CPU da bi smo vrsili ovakva izracunavanja, a to je upravo ono sto nama treba za nas loa. Dalje, svaki kompjuter mora da ima i neku vrstu memorije. Tacnije treba mu dve vrste memorije. Radna memorija (kod realnih kompjutera RAM recimo) i storage memorija (kod realnih kompjutera hard disk, usb flash drive ili sta vec, nebitno) za skladistenje podataka. Nasa divna svetska Mreza nam omogucava i ovo svojim postojanje i svojim dizajnom. Fokusirajmo se trenutno na radnu memoriju. Osobine postojecih radnih memorija jesu veca brzina ali manji kapacitet u odnosu na storage memorije. Dakle treba nam nesto sto bi radilo relativno brzo i omogucavalo nam relativno kratkotrajno pamcenje relativno malog broja podataka. U mnogim postojecim protokolima koji su danas siroko rasprostranjeni cesto postoji slucaj kada kao povratnu vrednost na ono sto ste poslali dobijete upravo isto to. Recimo echo reply, koji bi vam vratio sadrzaj koji ste poslali. Doduse echo reply u nasem slucaju nije bas od prevelike koristi. Ali postoje druge mogucnosti. Cesto ima slucajeva, kod smtp ili pojedinih implementacija ftp protokola, da se ceka odredjeni signal da je to kraj unosa i odna vam se vraca reply sa sadrzajem koji ste poslali. Npr. saljete neke podatke , recimo nekih 567 bajta, ali da bi vam server odgovorio sa reply, mora da primi sekvencu SENDREPLY na kraju. Kad primi SENDREPLY sekvencu bajtova, on i posalje taj reply. Ako se dobro secam sta je Michal Zalewski rekao, MS Exchange server ima upravo slican slucaj koji omogucava skladistenje do pola megabajta pre slanja replya sa vasim sadrzajem. Kada bi recimo koristili sve svetske javno vidjlive MS Exchange servere ili pak nasli drugi servis u kome postoji slican slucaj siguran sam da bi kolicina memorije koju trenutno mozete uskladistiti bila prilicno velika na globalnom nivou. Za sada nas loa ima cpu i ram, fali nam trajna memorija. Osobine trajne memorije su nesto sporiji pristup podacima ali u mnogome veci kapacitet. Za potrebe ovoga namece se savrseno resenje koje je jedno od najrasprostranjenijih na Mrezi. To je Simple Mail Transfer Protocol ili ti smtp krace. Kada posaljete mail na neku adresu koja ne postoji, server preko kojeg saljete ce, u zavisnosti od konfiguracije, u vise navrata pokusati da taj mail posalje iako nema kome. Pojedini serveri salju non stop, drugi imaju neki delay izmedju slanja od recimo 2 sata, treci pak slaju jednom, pa ako ne stigne posalju opet sutra, ako ni sutra ne stigne, onda za nedelju dana i sl. razumete sta hocu da kazem. E sad, za nase potrebe, za potrebe skladistenja podataka na internetu iskoriscavanjem njegovog dizajna, mozemo poslati mail sami sebi, ali recimo blokirati firewallom da kada taj mail bude treba da stigne nazad do naseg servera bude jednostavno upucan i unisten. Sta se sad desava? Poslali smo neke podatke u vidu maila. Skaldistili ih negde i odbijamo da ih primimo natrag dok nam ne zatrebaju. Kad nam zatrebaju ti podaci koje smo skaldistili na ovaj nacin jednostavno ugasimo to firewall pravilo koje je blokiralo primanje tog maila i dobijemo ih natrag. Postavlja se pitanje koliko bi podataka mogli da uskladistimo na ovaj nacin. Naravno, svi znamo da svi moguci smtp serveri imaju ogranicenje u velicini fajla. To ogranicenje varira od servera do servera, nisam siguran koliko gmail ima ali pretpostavljam da je oko 10mb ,i yahoo je tu negde siguran sam. Naravno, verovatno postoje i serveri koji nemaju ogranicenje, ali to vec nije bitno. Uzmimo da imamo ogranicenu velicinu fajlova. Koliko god to malo bilo, koristeci dostupne smtp servere sirom sveta, a njih ima na miljone siguran sam , imamo vrlo veliku kolicinu podataka koje mozemo pohraniti u samu Mrezu da se tako izrazim. Sad nas loa ima cpu, ram i storage memoriju. Ja sam taj loa kompjuter zamislio kako egzistira na samoj mrezi, bez ijedne centralizovane stvari, bez mogucnosti da uperite prstom u neki njegov deo. To naravno nije moguce, gore opisane price su zaista impresivna razmisljanja koja definitivno nisu moja. Nisam ja toliko lud. Samo su te price bilo dovojene. A ja sam se istripovao i ubacio se razmisljajuci o njihovom sklapanju u jednu celinu koja bi cinila neki jedinstven kompjuter - loa. Da bi loa zaista postojao trebala bi mu verovatno i neka vrsta vestacke inteligencije koja bi upravljala svime. To naravno danas realno nije moguce i trebao bih biti zaista lud da bih mislio da je moguce. Ali u ne tako dalekoj buducnosti, zasto da ne. Mozda su sadasnji wormovi i trojanci i automatizovani botovi za svasta samo preteca necega mnogo veceg, necega sto ce tek da ugleda svetlost dana ili pak neonsku svetlost matrixa (ako tamo ima svetlsoti:)). Ovo sam napisao bezveze, hteo sam da vam predstavim neke ideje koje sam nasao, citajuci knjigu Silence On The Wire od Michala Zalewskog, za koje mislim da su genijalne, kao i uostalom cela knjiga. Takodje, mogu smao da vam posavetujem da procitate knjigu jer lcamtuf sve to mnogo dublje opisuje. Meni nije bio cilj da opisem tehnike vec da vam predstavim njihovo postojanje kroz relativno fikcionu pricu o necemu cemu ni sam ne mogu da smislim ime :).