Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Manual Spear
1. Spear :
The Semantic Peer
Stefan Silvestru1,
1
Master Securitatea Informatiei II, Facultatea de Informatica Iasi, Romania
stefan.silvestru@infoiasi.ro
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.
2. 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-
3. 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.
4. 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.
5. 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).
6. 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
7. 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
8. 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
9. 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
10. 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.
12. 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).
13. 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.
14. 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.