Copy Link
Add to Bookmark
Report
5x12 Loa - Artificial Computer?
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 :).