https://github.com/mding022/ciena-p2p

Inspiration

The increasing need for secure and decentralized file sharing inspired this project. Traditional cloud-based solutions often compromise on privacy and security, while centralized servers present a single point of failure. We wanted to build a peer-to-peer platform that would not only provide us a strong foundation in low level networking but equally abstract algorithmic cryptography.

What it does

The platform enables secure, encrypted peer-to-peer file sharing by splitting files into chunks and distributing them across multiple nodes. It ensures that data transfers remain private and resilient by utilizing a tunnelling service for secure connections and a hashing system to verify the integrity of the files. Users can upload, download, and manage files across the network without relying on a central server, offering a truly distributed solution. Trusted Nodes are securely protected through the tunnelling solution

How we built it

We built the frontend using Next.js, which handles the user interface for managing files and connecting with peers. The backend is powered by Spring, managing the nodes responsible for splitting files into chunks and distributing them. We implemented Sockets and REST API for real-time communication between peers, allowing for seamless file transfers. Additionally, a tunneling service was developed to ensure encrypted, secure connections between users. The hashing system is employed to verify file integrity, ensuring each file chunk remains intact during transfers.

Challenges we ran into

One of the biggest challenges was managing the secure distribution of file chunks across nodes. Ensuring that the tunnelling service operated efficiently without sacrificing speed or security was another key challenge. Additionally, balancing file verification with the hashing system and ensuring that network traffic was optimized for both large and small file transfers proved difficult and brought a big algorithmic complexity. Overall, coordinating multiple peer-to-peer connections in a distributed system required fine-tuning to avoid bottlenecks and failures due to the low level

Accomplishments that we're proud of

We're proud of successfully building a secure and scalable peer-to-peer network that maintains high file integrity through hashing and chunk verification. We also successfully implemented the tunnelling service, which provides users with an added layer of privacy and encryption. The seamless integration of a Next.js frontend with the Maven backend powers our strong platform architecture that is used in industry standard solutions.

What we learned

Throughout the project, we learned a great deal about building decentralized systems and the complexities of secure file sharing. We deepened our understanding of how to use cryptography for file integrity and protection. Developing the tunnelling service gave us hands-on experience with encryption and secure communications. We also learned about optimizing network traffic to efficiently handle peer-to-peer connections without compromising on security. Moreover, working with low level networking interfaces such as sockets and REST API showed the complexities of day-to-day abstractions in our modern apps use.

What's next for Distributed Encrypted Peer-to-Peer File Management Platform

Future iterations will include further scaling the platform to handle a larger number of nodes and users while maintaining efficiency, particularly with connecting new users to the p2p network easier. We are also considering adding a mobile app component for users to manage their files on the go, with continued emphasis on security and encryption. Moreover, a strong emphasis on remodelling the interface to be more standard.

Built With

Share this project:

Updates