Jump to content
B3st

Idei rst IM

Recommended Posts

Posted (edited)

Ma tot gandesc la o metoda de im safe.

Cred ca as putea sa vorbesc cu cei de la tor, iar server ul trebuie configurat sa stearga detallile despre user.

Toate serviciile im functioneaza cam asa:

1. Clientul incearca sa se conecteze la server ul im principal.

2. Serverul primeste de la client: ip ul, portul ascultat, nick name ul si lista de contacte.

3. Daca conexiunea sa stabilit atunci server ul creaza un fisier cu informatiile tale, dupa aceea server ul verifica statut ul contactelor tale > offline/online/invisible ..

4. Apoi conexiunea este ip to ip, nu mai este nevoie de server ul principal pentru a comunica.

Teoretic server ul principal intervine doar in situatii de offline/online/invisible, iar server ul nu stocheaza informatii sau log uri despre utlizatori.

Majoritatea serviilor im salveaza toate ip urile si chat urile care le-ai avut.

Chiar daca uni spun ca nu o fac, altfel conexiunea n-ar fi posibila, sau probabil ar putea doar sa stearga detaliile tale dupa ce ai dat log out.

Veniti cu idei de functionare a protocolului, fara sa fie nevoie de ascultarea unui port, ceea ce implica trimiterea ip ului si portului catre server ul principal.

Edited by B3st
Posted

N-ar fi chiar bun ip to ip din cauza port forwardului. Eu de exemplu ma conectez la un wireless al vecinilor si nu stiu parola panoului de control ca sa pot face port forward. Probabil mai sunt si altii in aceeasi situatie.

Eventual sa verifice daca merge o conectare directa la ip-ul celeilalte persoane, iar daca nu atunci sa se faca prin server.

Posted (edited)

@caramea

Si de unde stie client ul ce ip:port are fiecare contact din lista pentru a incepe conexiunea, doar sa il suni inainte si sa ii zici ip ul :)

Cred ca s-ar putea face ceva de genu

Nick name ul sa fie in urmator ul format: <nume la alegere> + ip cryptatat

Iar client ul sa desparta id/ip si sa inceapa conexiunea

Doar ca asta ar insemna ca id ul fiecarui utilizator sa fie mereu schimbat.

Se poate implementa un server principal pentru id uri, iar tu cand adaugi/vorbesti cu cineva server ul sa returneze nickname + ip cryptat.

Edited by B3st
Posted

Nu poti face in asa fel incat sa se conecteze la baza de date rst?

Sa te conectezi cu user + pass de pe rst si sa ai undeva ceva gen member list unde sa iti listeze toti utilizatorii? Sa se foloseasca de mesajele private?

Posted

Why in the world would you use ip to ip?

Ai un server acolo, cel mai bine faci trimiterea mesajelor prin intermediul lor. Serverul stie cui sa trimita mesajul atat timp cat acesta vine cu aceasta informatie.

Poti face ca serverul sa foloseasca un set de chei asimetrice si sa hardcodezi cheia publica in aplicatia client. Astfel stii ca doar serverul poate sa citeasca mesajele pe care le trimiti. (ca sa scapi de MITM)

In momentul in care mesajul ajunge la server acesta trebuie sa stie ce sa faca cu el. Eventul e nevoie de un sistem de managmenet al cheilor(cheile clientilor) pe server.

Nickname-ul e unic pentru fiecare client deci folosesti asta pentru a identifica clientii si constrangi ca actiunile sa poata avea loc doar cand clientul este autentificat.

Retii intr-un DB si frecventa incercarilor de autentificare si blochezi accestul pe un anumit User in momentul in care se fac prea multe requesturi de autentificare intr-un anumit interval de timp. Asta pentru a opri atacurile bruteforce.

etc etc etc

Posted
@M2G Ce zici tu este ip <> server <> ip, nu se poate chema IM.

@Paul4games Normal, doar ca romani mai au pana ajung la nivelul ala.

Argumenteaza!

Si conversatiile din Y! trec prin server si raman chiar retinute acolo.

Se fac probabil si monitorizari de cuvinte cheie pe retelele de IM. Pentru asta e nevoie ca mesajele sa ajunga intr-un server.

De ce zici ca nu e ok client - server -client?

Posted

@M2G Daca proiectul o sa fie destul de mare, autoritatile se pot implica pentru a lua anumite conversati.

Dar daca conversatia este doar ip to ip, iar traficul este cryptat atunci nu au ce sa mai faca.

Posted

Si eu m-am gandit la o chestie de genul asta. Din pacate are inconvenientul ca trebuie sa faci port forwarding.

Ideea mea ar fi urmatoarea. Pe server stochezi userul, parola criptata , si cheia publica a userului de asemenea criptata cu parola userului. In acest fel nu ai cum sa accesezi cheia publica a userilor. Cand acesta se logheaza salvezi parola intr-o sesiune, decriptezi cheia publica si o trimiti celui cu care doreste sa vorbeasca. Serverul va mai stoca si o lista cu contactele fiecaruia (ip, port). Cand se initiaza convorbirea cheia publica este trimisa catre cei 2 interlocutori, iar restul se face strict intre cele 2 persoane. De asemenea aplicatia are hard coded o cheie publica(a serverului) si cheia ei proprie privata. In felul asta eviti atacul de tip mitm si te speli si pe maini deoarece nu poti obtine informatiile utilizatorilor.

Posted (edited)

Normal, doar ca implicarea serverului implica folosirea de prea multe resurse din partea serverului si din partea clientului..

Cred ca cel mai simplu fac protocol normal, doar ca infomatiile despre utilizatori sa fie sterse dupa log out.

Edited by B3st

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...