nedo Posted June 5, 2012 Report Posted June 5, 2012 (edited) Salut, va prezint o mica aplicatie la care lucrez de ceva vreme.Inainte de toate tin sa multumesc lui Nytro si lui Python3 pentru ca mi-au raspuns la cateva intrebari.In mare ce face programul asta al meu?E un program de chat. Conectarea se face direct ip la ip.Setezi catre ce ip vrei sa te conectezi, pe ce port asculta cel cu care vrei sa vorbesti si dai connect.Simplu ca buna ziua.The twist? Ceea ce se trimite este criptat cu o cheie publica - algoritmul utilizat? RSA.De asemenea pentru siguranta transmisiei messajul este codat si cu base64 dupa cryptarea cu cheia publica.Cheia publica si cea privata sunt generate la pornirea aplicatiei si cea publica este criptata in base64 si trimia catre persoana care vorbim atunci cand se initializeaza conexiunea catre aceasta.Aviz totusi celor care folosesc routere - o sa va dea eroare ca portul este deja in utilizare, nu am avut cum sa testez dar tind sa cred ca trebuie facut port forwarding si totul ar trebui sa fie ok. Altfel puteti sa modificati programul sa nu mai porneasca serverul si doar sa il folositi sa va conectati la alte persoane Va atasez atat un proiect pentru windows cat si pentru linux - testat pe debian, pe ambele sisteme s-a folosit IDE-ul code blocks.Pentru versiunea de windows veti avea nevoie sa compilati libraria wxWidgets versiunea 2.8.12, librari statice, unicode, debug si release, si libraria crypo++ de asemena tot librarie statica, sau puteti direct folosi executabilul din folderul release alaturi de dll-ul de langa el.Pentru linux am folosit libraria wxWidgets2.8.10 cea din repositoriy-ul debian, si librarya crypto++ tot din acelasi repository al debian 6(squeeze).Atat proiectu de linux cat si cel de windows au deja compilate versiunea de release si de debug totusi pe linux s-ar putea sa nu il puteti rula daca nu aveti librariile wxWidgets si crypo++ instalate.Link Proiect Windows ROLink Proiect Linux ROLink English windows projectLink English linux projectSper sa va placa si sa va fie de folos.Totusi o avertizare, la fel ca si ssl-ul aplicatia este vulnerabila unui atac man in the middle, totusi pentru siguranta de zi cu zi atat timp cat cineva nu incearca expre sa vada ce vorbiti, sunteti in siguranta. Din ce m-am documentat brutforce asupra unei key rsa este dificil de executat asa ca ar trebui sa fie ok. Eng short vers:I present you a simple ip to ip chat application. It connects by giving to the application the ip of the person you wish to talk to.Above you have the links for the english version of the application.The communication between the applications is done encrypted using a rather big RSA key.Be aware that the application is vulnerable to a man in the middle attack.Also if you have a router you will not be able to listen on any port without port forwarding. One way to work around this is to modify the project so that the mpSockServ is never initalized, this way you can only connect to other people, but you will be able to use the application behind a router.To successfully compile the application you will need the wxWidgets library version 2.8.12 or above compiled with with unicode, as static link library, both release and debug, and crypto++ library also as static link library.On linux the libraries from the debian squeeze repository ware used. Le: Fixed, intrasem printr-un proxy online si a modificat link-ul. Acum ar trebui sa fie ok.Le2: Am adaugat si proiectul pentru pentru interfata in limba engleza, atat versiune pentru windows cat si linux Edited July 3, 2012 by nedo 5 Quote
M2G Posted June 5, 2012 Report Posted June 5, 2012 Felicitari! Aceasi chestie vroiam sa o fac si eu dar nu am mai apucat sa o termin. Poate pe viitor...Vezi ca nu sunt bune link-urile de download. Quote
nedo Posted June 5, 2012 Author Report Posted June 5, 2012 (edited) Gata am reparat.Se pare ca s-a reparat si problema cu ip-ul categorisit ca din alta tara, bun, nu mai trebuie sa intru cu proxy sau de la scarbici Edited June 5, 2012 by nedo Quote
MrRip Posted June 5, 2012 Report Posted June 5, 2012 Stai ca se mai gasesc 2-3 sa zica faptul ca mai aveau putin si terminau si ei acelasi proiect ca al tau sau ca le cacase si lor mintea acelasi lucru.No offence M2G, stiu ca esti baiat capabil De restu' ma cam indoiesc. Quote
M2G Posted June 5, 2012 Report Posted June 5, 2012 Secure chat system (sketch)Schita postata in 26 aprilie. Oricum al meu e diferit fata de acesta. Ma rog...o sa fie ca deocamdata e doar asa un mockup. Quote
nedo Posted June 9, 2012 Author Report Posted June 9, 2012 Am adaugat si o versiune in limba engleza, si am adaugat o mica verificare pentru a nu te putea conecta aceeasi aplicatie - 127.0.0.1 si acelasi port. Enjoy. Quote
kNigHt Posted June 11, 2012 Report Posted June 11, 2012 Felicitari pentru proiect, ma bucur ca in sfarsit a finalizat cineva asa ceva.Primesc asta la compilare, ai idee cum s-o fixez?knight@knight-xxxxxxx ~/Downloads/Crypted ip2ip chat eng vers $ g++ Crypted_Ip2Ip_chatApp.cpp -o cc `wx-config --cxxflags` `wx-config --libs`/tmp/ccooKF9C.o: In function `Crypted_Ip2Ip_chatApp::OnInit()':Crypted_Ip2Ip_chatApp.cpp:(.text+0x25d): undefined reference to `Crypted_Ip2Ip_chatFrame::Crypted_Ip2Ip_chatFrame(wxWindow*, int)'collect2: ld returned 1 exit status Quote
nedo Posted June 11, 2012 Author Report Posted June 11, 2012 La utilizarea compilatorului din linia de comanda stau foarte prost, dar ce observ este ca, tu incerci sa compilezi doar Crypted_Ip2IpchatApp.cpp, trebuie inclus si Crypted_Ip2IpchatApp.h si CryptedIp2IpchatMain.h/cpp, in plus trebuie legata si libraria crypti++.Ar fi mult mai simplu sa folosesci code::blocks si proiectul pe care l-am atasat. Quote
B3st Posted July 7, 2012 Report Posted July 7, 2012 @kNigHt Rusi fac programe de genu de ani buni, incearca psi sau cspace.@nedo O grafica mai avansata ar da bine in domeniul asta, astept un nou update Quote
cmiN Posted August 6, 2012 Report Posted August 6, 2012 (edited) Felicitari, facusem si eu ceva asemanator (multi-user) , insa cred ca ar fi mai eficient (si cu scop universal) daca criptarea datelor s-ar face cu un algoritm simetric (AES testat, mult mai rapid), iar numai schimbul de chei (pentru a nu compromite securitatea conversatiei) s-ar face criptand cu un algoritm asimetric (RSA similar cum faceai pentru conversatii). Ce tine de base64 si orice alta forma de codare nu face decat sa mareasca cantitatea de date si sa o faca mai lizibila (in caz de octeti neprintabili), dar nu opreste pe nimeni sa dea un b64decode . Edited August 6, 2012 by cmiN Quote
nedo Posted August 6, 2012 Author Report Posted August 6, 2012 Criptarea in base64 am utilizat-o doar pentru a fi sigur ca primesc datele cum trebuie, si ca nu am probleme la transformarea dintr-o parte in alta, exemplu cand trimiti unicode dupa linux si unicod dupa windows. Cand o sa am timp/chef o sa incerc sa aduc cateva imbunatatiri. Ce ziceti, poate trimitere fisiere intr-o maniera criptata? Cam ce alte optiuni ati mai dori. Eventual preluarea chei dintr-o cheie pgp, am inteles ca are la baza tot rsa. Quote
Nytro Posted August 6, 2012 Report Posted August 6, 2012 Concentreaza-te pe partea de comunicatie "secure" apoi contacteaza-ma. Quote
nedo Posted August 6, 2012 Author Report Posted August 6, 2012 Ce idei ati avea in privinta sigurantei comunicarii? Se poate repara sistemul asta pentru a nu mai fi vulnerabil unui atac man in the midle? Din ce m-am documentat asta ar fi singura portita. In rest. De decripatat nu decripteaza nimeni, cel putin pentru inca 1-2 ani, o cheie rsa de marimea celei alese. 1 Quote
phreak Posted August 6, 2012 Report Posted August 6, 2012 Faci un site pe care se pot inregistra useri si-si pot inregistra propriile key-uri sa le poata folosi numai pe alea, asa scapi si de man in the middle.Sau integreaza direct in forum. Quote
UnixDevel Posted June 30, 2013 Report Posted June 30, 2013 si eu lucrez la aceeasi chestie doar ca pe java ... Quote
JaJe Posted July 31, 2013 Report Posted July 31, 2013 (edited) Foarte buna initiativa!Daca pot sa-ti recomand ceva, acela sa implementezi pe langa algoritmul RSA sa mai adaugi si AES. Base64 este usor de spart, Eventual ai putea sa faci ceva de genul acesta (la alegerea utilizatorului bineinteles): RSA + AES + TWO Fish + Base64 + Serpent.//EDIT:Am uitat sa precizez un lucru.Nu sunt priceput in Programare, insa cam cum functioneaza acest soft?USER1: Scrie textul -> softul in cripteaza folosind RSA apoi BASE64 -> informatia criptata trece prin internet -> Ajunge la USER2 -> Softul de la USER2 primeste informatia criptata si foloseste algoritmul invers? BASE64 + RSA? Edited July 31, 2013 by JaJe Quote
yoyois Posted July 31, 2013 Report Posted July 31, 2013 Foarte buna initiativa!Daca pot sa-ti recomand ceva, acela sa implementezi pe langa algoritmul RSA sa mai adaugi si AES. Base64 este usor de spart, Eventual ai putea sa faci ceva de genul acesta (la alegerea utilizatorului bineinteles): RSA + AES + TWO Fish + Base64 + Serpent.Informeaza-te despre RSA si ai sa afli ca e mai mult decat suficient pentru un chat. Fara base-ul acela.+ diferenta dintre AES, Blow/two/alti fish, si base64Cat despre un chat multi-user poti folosi un key-exchanger si AES Dar asta nu garanteaza ca un "man in the end" nu ar putea forta o autentificare si sa obtina si el cheia AES.Cat despre man in the mid:Cred ca poate fi combatut cu o criptare asimetrica. Am si inceput sa lucrez ceva javascript-php pentru a trimite datele de autentificare "sigur".Cat despre chat (multi-user): mi se pare mai greu sa determini daca o persoana e legita decat sa criptezi informatia din chat.O varianta buna ar fi Tuning (asemanator engimei) in care dispozitivele trebuie sa fie "sincronizate" cu serverul pentru a decripta informatia + ceva criptare asimetrica pentru a stabili sursa de postare a unui mesaj.ON: topic mort si reinviat degeaba! Quote
M.cod3r Posted May 17, 2014 Report Posted May 17, 2014 A?a acum to?i avea?i ideea dar nimeni nu a finalizato, felicit?rile mele nedo o treab? bine f?cut? ! Quote