Contributor
Bhavik Mangla

Peer to Peer Messaging Application (Open Peer Chat)


Mentors
Bruno, jddeep, Manav Sarkar, hackeramitkumar, Chandan S Gowda, Harish Dendukuri, Prarabdh Shukla
Organization
AOSSIE
Technologies
python, mysql, flutter, dart, Encryption, P2P, RSA
Topics
security, mobile development, network security, encryption, State Management, Peer-to-Peer Networking, File Sharing, Multimedia File Handling, Local Network Communication, Nearby Service
I propose to augment the current project by implementing pending pipeline features which will drastically improve the security and capability of the base application. Specifically I propose implementing secure RSA encryption to the messaging service, implement secure file sharing with audio and video support and enable user discovery on a WiFi network using UIDs RSA encryption I propose using the rsa_encrypt library in dart to secure the chat service being created between two clients on the same peer network. When two clients are connected on the same peer network, a connection is created using FPTP protocol. This project proposes to use rsa_encrypt to create a security layer over the FPTP layer. Hence the chat service is secure from other possible listeners on the peer network. Secure file sharing I propose to extend the messaging service with file sharing capabilities. We transcribe the file stored in the client’s local storage into raw metadata and securely stream the bytes to the connected client using the RSA encryption layer. The client checks for the file type using MIMETypes and decodes the bytes into the intended file. This implementation is expected to use the dart:convert library for encoding and decoding. The challenge which I aim to surpass is encoding the raw bytes through the RSA layer to ensure that unauthorized listeners cannot access the raw bytes. File Viewing I propose to implement in app file previews for supported file types using open-file-x and also enable in app viewing for image and video file types. User Discovery on a Local Network The challenge here would be for the application to persist UIDs which can be advertised over the WiFi network. Flutter does not have the capability to access users connected to a WiFi network unless the application is the router. Hence I propose to use mDNS to allow the devices to broadcast their presence on the same network without needing a central server.