
                                   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 :).
 


