manual spear

15
Spear : The Semantic Peer Stefan Silvestru 1 , 1 Master Securitatea Informatiei II, Facultatea de Informatica Iasi, Romania [email protected] Abstract. Documentul introduce Spear, o aplicatie ce creaza o retea Friend-to- Friend (F2F), menita sa usureze cautarea de resurse pe retea. Acest lucru este realizat in principal prin folosirea bazelor de date semantice si a cererilor de cautare semantice. Keywords: P2P, F2F, semantic storage, semantic queries, filesharing 1 Introducere 1.1 Problema initiala Semantic Windows Similar iniţiativei Nepomuk pentru KDE, să se imagineze o soluţie pentru Windows (de dorit, vizând ultima versiune). Se va dezvolta un prototip de instrument "inteligent" de regăsire şi recomandare de resurse (fişiere) în funcţie de interesele utilizatorului. 1.2 Problema rafinata Se doreste crearea unei aplicatii Peer-to-Peer (P2P) care sa imbunatateasca gasirea de resurse pe retea. Acest lucru va fi posibil prin atasarea de metadate, resurselor ce vor fi facute publice. Metadatele vor fi stocate in format RDF iar interogarile vor fi facute cu limbajul Sparql. Astfel, aplicatia trebuie sa puna la dispozitie servicii ca: chat, adaugare de metadate, cautare de fisiere (dupa metadate) si filesharing.

Upload: dilcroco

Post on 22-May-2015

607 views

Category:

Education


4 download

TRANSCRIPT

Page 1: Manual Spear

Spear :The Semantic Peer

Stefan Silvestru1,

1 Master Securitatea Informatiei II, Facultatea de Informatica Iasi, [email protected]

Abstract. Documentul introduce Spear, o aplicatie ce creaza o retea Friend-to-Friend (F2F), menita sa usureze cautarea de resurse pe retea. Acest lucru este realizat in principal prin folosirea bazelor de date semantice si a cererilor de cautare semantice.

Keywords: P2P, F2F, semantic storage, semantic queries, filesharing

1 Introducere

1.1 Problema initiala

Semantic WindowsSimilar iniţiativei Nepomuk pentru KDE, să se imagineze o soluţie pentru Windows (de dorit, vizând ultima versiune). Se va dezvolta un prototip de instrument "inteligent" de regăsire şi recomandare de resurse (fişiere) în funcţie de interesele utilizatorului.

1.2 Problema rafinata

Se doreste crearea unei aplicatii Peer-to-Peer (P2P) care sa imbunatateasca gasirea de resurse pe retea. Acest lucru va fi posibil prin atasarea de metadate, resurselor ce vor fi facute publice. Metadatele vor fi stocate in format RDF iar interogarile vor fi facute cu limbajul Sparql. Astfel, aplicatia trebuie sa puna la dispozitie servicii ca: chat, adaugare de metadate, cautare de fisiere (dupa metadate) si filesharing.

Page 2: Manual Spear

2 Arhitectura

2.1 Arhitectura retelei

Arhitectura retelei Spear este de tip F2F (P2P cu anumite restrictii ce imbunatatesc securitatea). Figura 1 prezinta un exemplu de o astfel de retea. Alice are o serie de prieteni pe care ii are in lista si cu care comunica, insa prietenii lui Alice nu stiu pe cine are aceasta in lista. Fiecare din ei o are pe Alice in lista, si o multime de alti prieteni. Imaginea prezinta de fapt punctul de vedere al lui Alice asupra retelei. Arhitectura retelelor F2F este de obicei de tip stea (ca si aceasta), spre deosebire de arhitectura retelelor P2P clasice care este de tip (full) mesh.

2.2 Logica aplicatiei

Spear este derivat dintr-o alta aplicatie F2F, Gazebo F2F, si ca imbunatatire aduce capabilitatile semantice. Tot protocolul de baza (Gazebo) cu schimbul de mesaje si formatul acestora, partea criptografica, adaugarea de utilizatori noi , adaugarea de prieteni noi, serviciile disponibile, intr-un cuvant “anatomia” aplicatiei, sunt descrise pe larg in lucrarea [1].

In cele ce urmeaza vom prezenta principalele adaugiri si diferente fata de Gazebo F2F, urmand ca in capitolul urmator sa fie prezentat un studiu de caz folosind Spear, si pe alocuri vor mai fi discutate elemente ce tin de logica aplicatiei.

Remarca 1. Pe parcursul acestei lucrari vom considera cazul a doi utilizatori ce utilizeaza aceasta aplicatie. Ei vor fi numiti generic Alice si Bob, Alice fiind utilizatorul “principal”, astfel ca atunci cand nu vom specifica nici un nume, va fi vorba despre actiunile intreprinse de ea.

Adaugarea de prieteni noi in Gazebo se bazeaza pe schimbul de certificate intre persoanele participante, aceste certificate continand diverse elemente de securitate, informatii personale si chei publice. In Spear acest sistem a fost relaxat, astfel ca, atunci cand Alice se conecteaza la Bob pentru prima data dorind sa il adauge ca prieten, este trimis un mesaj de tip PublicKey-Request. Bob ii raspunde cu un mesaj PublicKey-Reply in care se gaseste cheia sa publica. Alice ii raspunde la randul ei cu un mesaj PublicKey-Reply in care se regaseste cheia ei publica.

Dupa ce fac rost de cheile publice cei doi continua protocolul precum este prezentat in [1]. Dupa ce s-au adaugat in lista de prieteni vor dori sa comunice. Pentru a nu folosi cheile publice la criptarea fiecarui mesaj (costisitor din punct de vedere al timpului de criptare) vor desfasura noi pasi in protocol pentru a stabili o cheie (AES) de sesiune. Cu aceasta cheie simetrica vor cripta si decripta mesajele.

Resursele pe care vrem sa le facem publice (pentru ca altii sa aiba acces la ele, sa le poata descarca) le adaugam dintr-un meniu special Tags. Fiecarui fisier trebuie sa ii atasam macar un tag principal (unul din : Any, Archive, Audio, CD-

Page 3: Manual Spear

Image, Document, Picture, Program, Source File, Video). Apoi intr-un camp special ii putem atasa oricate alte taguri definite de noi, si de asemenea ii putem atasa si o descriere. In Figura 2 se poate vedea un exemplu de resurse facute publice, asa cum apar ele in Spear dupa ce li se ataseaza metadate.

Fig. 1. Arhitectura retelei Spear

“In spate” se creaza o noua descriere pentru resursa adaugata. Descrierea este in format RDF (rdf:description), si contine proprietati ca HasMainTag (tagul principal) si HasTag pentru taguri secundare (cele definite de utilizator), si de asemenea contine descrierea introdusa de utilizator, care va fi pusa intre taguri RDFS:comment. Aceasta descriere in RDF este stocata la nivelul fiecarui utilizator intr-un model (baza de date) RDF, care apoi este salvat pe disc intr-un repository central – Centro. In Figura 3 se poate vedea modelul RDF serializat pentru resursele din Figura 2.

Page 4: Manual Spear

Fig. 2. Metadate atasate unor resurse

Fig. 3. Modelul RDF serializat

La un moment dat, Alice va dori sa caute pe retea anumite fisiere. In meniul Search, ea poate alege diferite moduri in care se poate realiza cautarea. Poate alege sa caute dupa numele fisierului, sa caute dupa tagul principal, sa caute dupa taguri secundare, sau sa caute dupa combinatii de aceste optiuni. Cand apasa butonul Search un mesaj de tip Query-Request va fi trimis in modul broadcast tuturor prietenilor ei din lista, care la momentul acela sunt online. Cererea contine optiunile introduse de ea pentru cautare. La fiecare din prietenii ei, cererea este procesata si pe baza informatiilor din ea se creaza o interogare Sparql. Apoi, pe baza acesteia, este interogat modelul RDF (baza de date), si se primesc anumite informatii despre fisiere.

Page 5: Manual Spear

Acestea sunt transmise lui Alice intr-un mesaj Query-Response. Mesajele Query-Request contin un numar de secventa care va fi regasit cu aceeasi valoare in mesajele de Response. Astfel cand Query-Response este primit, intai se verifica daca numarul sau de secventa este egal cu numarul de secventa curent. Daca da, atunci rezultatele sunt afisate pe ecran, daca nu (inseamna ca utilizatorul a initiat alte cautari), mesajul este ignorat. Atat lucrul cu triplele RDF cat si interogarile Sparql sunt realizate cu API-ul oferit de Soprano, aceeasi biblioteca de functii fiind folosita la crearea proiectului Nepomuk.

Utilizatorul alege apoi ce resurse doreste sa descarce.

3 Scenariu de utilizare

In continuare vom prezenta un scenariu de utilizare a aplicatiei Spear intre aceiasi utilizatori generici, Alice si Bob.

Cum este prezentat si in Figura 4, cei doi utilizatori trebuie sa isi creeze cate un profil pentru a putea utiliza aplicatia.

Fig. 4. Crearea unui nou profil

Apoi, acestia vor dori sa comunice unul cu celalalt. Astfel, fiecare va adauga adresa IP a celuilalt in Meniul Chat, dand click dreapta pe arborele Friends si alegand optiunea Add New Friend (Figura 5).

Page 6: Manual Spear

Fig. 5. Adaugarea unui nou prieten

Dupa acest pas si dupa ce se termina protocolul de initializare cu succes, fiecare din cei doi apare in lista de prieteni a celuilalt (Figura 6).

Fig. 6. Lista de prieteni

Urmand apoi pasii prezentati in capitolul anterior, dupa ce vor stabili o cheie de sesiune, vor putea comunica (in siguranta). In Figurile 7 si 8 este prezentata o sesiune de chat intre cei doi utilizatori.

Fig. 7. Alice utilizand serviciul de chat

Page 7: Manual Spear

Fig. 8. Bob utilizand serviciul de chat

Dand click dreapta pe un prieten, apare un meniu cu anumite optiuni : chat, sa pot vizualiza profilul prietenului, sau sa-i modific detaliile de contact (Figura 9).

Fig. 9. Actiuni posibile asupra unui prieten din lista

Utilizatorii adauga apoi metadate resurselor pe care le vor face publice, din meniul Tags. In partea stanga exista un arbore ce simuleaza sistemul de fisiere (Figura 10)

Fig. 10. Sistemul de fisiere simulat in Spear

Page 8: Manual Spear

Din acest arbore alegem o resursa, dam dublu click pe ea si va aparea o fereastra ca in Figura 11. In aceasta fereastra trebuie sa alegem macar un tag principal pentru resursa. De asemenea putem pune alte taguri proprii (separate prin cate o virgula), si o descriere a resursei.

Fig. 11. Adaugare de metadate unei resurse

Figura 12 prezinta cateva resurse cu metadatele aferente, adaugate de Bob.

Fig. 12. Metadatele lui Bob

Page 9: Manual Spear

Fig. 13. Optiunile de cautare

Alice va dori sa caute anumite resurse pe retea. Astfel ea va selecta meniul Search. Acolo va putea selecta dupa ce optiuni doreste sa faca interogarea de cautare. Optiunile prezentate in sectiunea 2 se pot vedea in Figura 13.

Alice doreste sa invete sa joace sah, astfel ca pentru inceput va dori sa caute carti de sah pe retea. Avand un singur prieten in lista, in momentul cautarii doar el va primi aceasta cerere. Avand metadatele lui Bob in Figura 12 si stiind ca ea va cauta dupa cuvantul Chess, rezultatul cautarii este destul de previzibil si se poate vedea in Figura 14.

Fig. 14. Rezultatele cautarii

Pentru a vedea descrierea fiecarei resurse gasite, Alice poate da click dreapta pe fiecare din ele – Figurile 15 si 16.

Fig. 15. Descrierea unei resurse

Page 10: Manual Spear

Fig. 16. Descrierea unei resurse

Alice va dori sa descarce cele doua carti si sistemul de operare Ubuntu 10.10 pe care l-a gasit pe computerul lui Bob. Astfel ea da dublu click pe fiecare resursa gasita. In Figura 17 se pot vedea fisierele descarcate de Alice de la Bob in timp ce in Figura 18 se regasesc fisierele ce au fost uploadate de Bob catre Alice.

Fig. 17. Fisierele descarcate de Alice de la Bob

Fig. 18. Fisierele uploadate de Bob catre Alice

Pe langa acestea, Spear mai are si un meniu Events ce retine evenimentele care s-au petrecut in aplicatie – Figura 19.

Page 11: Manual Spear

Fig. 19. Meniul Events

Fig. 20. Meniul Options

Page 12: Manual Spear

De asemenea aplicatia mai include si un meniu Options (Figura 20), folosit pentru a seta anumite informatii. Meniul contine categorii de optiuni generale, pentru vizualizarea aplicatiei, pentru setarea cailor de acces la directoarele utilizate, pentru retea, pentru securitate si pentru informatiile pe care utilizatorul le publica despre sine.

Fig. 21. Meniul About

Nu in ultimul rand, aplicatia contine informatii despre creatorul ei. Acestea pot fi vizulizate in meniul About (Figura 21).

Page 13: Manual Spear

4 Instrumente utilizate

4.1 wxWidgets [2]

wxWidgets este un widget toolkit pentru crearea de interfete(cu utilizatorul) grafice (GUI) pentru aplicatii cross-platform. wxWidgets permite codului GUI a unui program sa fie compilat si rulat pe platforme diferite cu schimbari ale codului minime. Ruleaza pe sisteme ca Windows, Linux, MacOS, OpenVMS, OS/2, AmigaOS.

Este unul dintre cele mai complete toolkit-uri GUI, avand foarte multe clase utile si documentatie pentru ele. Oricand este posibil, wxWidgets foloseste SDK-ul platformei native. Asta inseamna ca un program compilat pe Windows va avea “look and feel”-ul unui program Windows, iar un program compilat pe Linux va avea “look and feel”-ul unui program Linux. Toolkit-ul este atat open source cat si gratuit pentru folos personal si comercial.

Biblioteca este implementata in C++ dar are binding-uri si pentru alte limbaje de programare : C# (wx.Net), Java (wx4j), Perl(wxPerl), Python (wxPython), Haskell (wxHaskell), Lua (wxLua), Ruby(wxRuby) si altele.

O serie de aplicatii cunoscute au fost construite cu wxWidgets : aMule (aplicatie P2P de filesharing), Audacity (sound editor), BitTorrent(P2P filesharing ), Code::Blocks (C/C++ IDE), RapidSVN(Subversion client) sau TortoiseCVS(CVS client).

4.2 Boost [3]

Bibliotecile de functii Boost sunt o colectie de biblioteci open-source care extind functionalitatea C++. Majoritatea bibliotecilor se gasesc sub licenta Boost, putand fi folosite atat la proiecte open cat si closed source. Multi din fondatorii Boost sunt in comitetul pentru standardizarea C++, iar o serie de biblioteci Boost au fost incluse deja atat in Technical Report 1 cat si in noul standard C++ (C++0x). Mai mult, majoritatea bibliotecilor functioneaza pe mai multe sisteme de operare, permitand astfel dezvoltarea de aplicatii cross-platform.

4.3 Soprano [4]

Soprano este o biblioteca de functii care pune la dispozitie un framework C++/QT pentru manipularea datelor RDF. Soprano a fost creat ca un sub-proiect al Nepomuk si formeaza o parte a desktop-ului semnatic din KDE 4. Soprano functioneaza ca un repository pentru stocarea informatiilor generate de server-ul Nepomuk. Soprano ofera suport pentru backend-urile Redland si Sesame2 ce sunt folosite pentru stocarea si interogarea datelor RDF.

Page 14: Manual Spear

4.4 Premake [5]

Premake este un utilitar open source, folosit pentru a construi automat configurari pentru un anumit cod sursa. Pentru a functiona, trebuie configurat un script premake (folosind limbajul de scripting Lua), care apoi poate genera proiecte Visual Studio, Codelite, Code::Blocks sau makefile-uri. Astfel este un excelent utilitar pentru dezvoltarea de aplicatii cross-platform.

4.5 Crypto++ [6]

Crypto++ este o biblioteca de functii C++, distribuita gratis, folosita pentru criptografie. Include : ciphers, message authentication codes, one-way hash functions, public-key cryptosystems si key agreement schemes.

Este o biblioteca cross-platform; C++ cu Crypto++ poate fi compilat pe diferite sisteme de operare (Windows, Unix, Linux, MacOS, Solaris).

Anumite versiuni de Crypto++ au fost validate de NIST(National Institute of Standards and Technology ) si CSE(The Communications Security Establishment) pentru conformanta de nivel 1 cu FIPS 140-2.

5 Concluzii

Lucrarea a prezentat modul de functionare si de utilizare a Spear, o aplicatie ce creaza o retea Friend-to-Friend, unde utilizatorii se conecteaza doar la prietenii pe care ii cunosc. Astfel, multe din atacurile posibile in retelele Peer-to-Peer (DoS, Sybil sau Eclipse [1] ) sunt neutralizate. Fiecare nod este “single point of failure”, astfel ca, daca un nod pica sau este corupt, asta nu influenteaza in nici un fel buna functionare a retelei. Datorita topologiei retelei , asa cum este vazuta de fiecare nod ( - stea), Spear introduce o alta proprietate de securitate foarte importanta : anonimitatea.

Spre deosebire de proiectul de baza (Gazebo F2F [1]), Spear introduce componenta semantica in capabilitatile aplicatiei. Astfel, resurselor care sunt facute publice, utilizatorul le poate atasa metadate care apoi vor imbunatati rezultatele cautarilor. Legat de aceasta, utilizatorul are de asemenea posibilitatea de a face cautari de resurse nu numai dupa nume ci si dupa metadate. In cazul in care utilizatorul doreste sa descarce anumite resurse gasite pe retea, Spear ii ofera aceasta posibilitate prin serviciul de filesharing.

Ca directii de dezvoltare a aplicatiei ar fi orientarea pe imbunatatirea calitatii serviciilor puse la dispozitie de Spear, si implementarea unui numar mai mare de functionalitati.

Page 15: Manual Spear

6 Referinte

1. Silvestru, S. : Gazebo F2F : A Friend-to-Friend Application, 2009, Bachelor of Science Thesis

2. wxWidgets, http://www.wxwidgets.org/3. Boost, http://www.boost.org/4. Soprano, http://soprano.sourceforge.net/5. Premake, http://premake.sourceforge.net/6. Crypto++, http://www.cryptopp.com/