Dobar dan!
Želio bih podijeliti zanimljive misli o stvaranju autonomne decentralizirane e-pošte i demonstrirati rad već postojeće implementacije.
Isprva je 'Telegraph' razvijan kao amaterski komunikacijski alat među članovima naše male studentske zajednice, koja je na ovaj ili onaj način posvetila svoju aktivnost računalnoj tehničkoj i komunikacijama.
Nota Bene: 'Telegraph' je amaterski komunikacijski alat; praktična korist u industrijskim razmjerima čini se prilično problematičnom, međutim teško da bi se ovaj problem mogao nazvati značajnim — najvažniji cilj nam je privući pažnju na razvoj ovakvih komunikacijskih sustava.
Skloni smo vjerovati da je povećanje opće zainteresiranosti za razvoj raznih komunikacijskih sustava potrebno i dovoljno važno, budući da razumijevanje osnovnih principa kako ti sustavi rade i na čemu se temelje — ključ za povećanje osviještenosti građana o pitanjima informacijske sigurnosti.

Achtung!Kako bismo izbjegli moguće nesporazume — u nekim slučajevima slike se mogu pregledavati:

Sustav se temelji na dobrovoljnom radu i čistom entuzijazmu — jednostavno uživamo u onome što radimo. Možete to smatrati hobijem i nećete pogriješiti — budući da još uvijek postoje ljubitelji komunikacije putem papirnate korespondencije; 'Telegraph' se u većini slučajeva može zamisliti kao digitalna implementacija principa rada obične pošte.
'Telegraph' je autonomni analog e-pošte, koji omogućava slanje jednostavnih tekstualnih poruka bez korištenja interneta. 'Telegraph' se može svrstati u — način razmjene informacija bez korištenja mreže.
Kao poštanski sandučići koriste se USB flash diskovi, dok terminali služe kao poštanske ispostave — računala koja predstavljaju svojevrsne pristupne točke za primanje i slanje elektroničke korespondencije.
Pogledajmo najjednostavniji primjer interakcije s sustavom. Imamo dvije USB memorijske jedinice i jedan terminal. U samom skriptu su definirane potrebne globalne varijable za daljnju interakciju sa sustavom - broj terminala, put do korijena i slično.
Ako priključimo prijenosni uređaj na terminal i pokrenemo skript, pokušat će prikupiti izlazne poruke iz direktorija /mnt/Telegraph/Outbox i premjestiti ih u svoju memoriju, a zatim provjeriti postoje li u njegovoj memoriji nove poruke za trenutnog korisnika. Ako ih ima - zapisuje ih u /mnt/Telegraph/Inbox.
Registracija novih uređaja
Događa se prilično običnim putem. Skript pronalazi nove USB memorijske uređaje priključene na sustav i pokušava uskladiti njihove jedinstvene identifikatore s onima koji su predstavljeni u korijenu. Ako uređaji ranije nisu bili registrirani, bit će formatirani prema pravilima 'Telegraga'.
Nakon registracije novog uređaja, struktura korijena izgleda ovako:
U konfiguracijskoj datoteci config.ini, koja se nalazi u korijenu USB memorijske jedinice, nalaze se sustavne informacije - jedinstveni identifikator i tajni ključ.
Dajte ljudima rum!
Ne, ozbiljno! Izvore se može pronaći , a mi polako moramo prelaziti s teorije na praksu.
Ali moram reći još nekoliko riječi o tome kako je sustav za razmjenu poruka zapravo organiziran.
Za početak, razjasnimo iz čega se sastoji jedanaesteroznamenkasti jedinstveni identifikator. Na primjer, 10455000001.
Prva znamenka, 1, odgovara za broj države. Međunarodni kod - 0, Rusija u ovom slučaju - 1.
Nakon toga slijede četiri znamenke koje odgovaraju broju regije u kojoj se nalazi terminal. 0455 - to je Kolomenski gradski okrug.
Za njima slijede dvije znamenke, - 00, - koje se izravno odnose na broj terminala.
I tek tada - četiri znamenke koje predstavljaju redni broj korisnika koji je dodijeljen ovom terminalu. Za nas je to - 0001. Također postoji i 0000 - ovaj broj pripada samom terminalu. Na njega se ne može slati pisana korespondencija, ali samo terminal koristi ovaj broj za slanje službenih poruka korisnicima. Na primjer, ako dostava poruke nije uspjela iz određenih razloga.
U korijenu naše "poštanske kutije" nalaze se dvije direktorije potrebne za primanje i slanje tekstualnih poruka. Kada se uređaj priključi terminalu, iz direktorija "Outbox" na poslužitelj se isporučuju odlazne poruke, dok se u direktorij "Inbox", logično, učitavaju dolazne poruke.
Svaka datoteka, ovisno o direktoriju, imenovana je brojem primatelja ili pošiljatelja.
Ako pokušamo poslati poruku nepostojećem adresatu, terminal će nam poslati poruku o grešci.
Međutim, ako odlučimo poslati pismo adresatu koji se nalazi na drugom terminalu (neovisno o tome postoji li ili ne), bit će pohranjeno u memoriju terminala dok agent ne prenese pisanu korespondenciju s našeg terminala na svoj.
Kada agent pošte 10500000000 (drugim riječima — poštar) priključi svoje uređaj našem terminalu, odlazna pisma će biti prenesena na njegov spremnik. Kasnije, kada priključi svoje uređaj svom terminalu, ova pisma će biti otpuštena u memoriju terminala i čekat će da ih adresat preuzme na svoj USB uređaj.
Sesija povezivanja
Pokušajmo prenijeti poruku s tekstom "Pozdrav!" od 10455000001 za 10455000002.
To je to!
Bit ću zahvalan na bilo kojoj kritici vezano uz izvorni kod projekta i samu članku.
Hvala na pažnji.
Izvor: habr.com
