We were inspired to create SpeakEasy by torrents and secure online messaging applications. The foundation of our application is built around peer-to-peer networking. Due to the decentralized nature of p2p networks, our users are offered capabilities of speech at no expense of privacy.

What it does

  • Announces hash of message to tracker to let peers know that a message is available at the sender's ip
  • Peers request hashes of message announced to the tracker, if a new message is found, query the tracker for IP that has message
  • Uses encryption to prevent man in the middle attacks
  • Uses hashes & signatures to prevent the messages from being tampered with
  • Protects identity of its users through the utilization of a public key as an identity instead of an IP address

How we built it

We used Python 3 for both the tracker and the client. The GUI was made with the qt wrapper PySide2. Communication between clients and trackers were done with Python's built-in socket & SSL support. Communication between peers was done using HTTPS and the built-in http.server module. Public and private keys were generated using GPG.

Challenges we ran into

At several times, we underestimated the workload and man-power needed to progress certain periods of the project. Some of our groupmates' lack of experience surrounding computer networking made it difficult to debug errors and slowed hours of progress spent searching for working solutions. Not only did we face the challenge of information, we also struggled with balancing our wild ambitions with the time we had. Prior ideas to strengthen encryption in addition to expanding the project's compatibility onto an app had all been scrapped as we discovered the time consumption of even creating a working framework. A supposed 30 min completion snowballed onto an all-nighter for 2 of our groupmates. We had to accept the importance of simpler ideas, recognizing that preserving a working demo is far more important than any idea imagined on paper.

Accomplishments that we're proud of

Despite the numerous challenges we faced, we had our fair share of accomplishments. We were able to implement full encryption and a hashing system to protect the integrity of messages. We also used multithreading to increase performance efficiency and we designed a light and minimalistic UI.

What we learned

We learned that:

  • Sleep is important
  • How to work with encryption & cryptography
  • How to work with p2p networking
  • Prioritize foundation before expanding
  • How to work with PySide 2 GUI library

What's next for SpeakEasy

  • Sleep for its members
  • Displaying public key random arts as profile pictures to assist with intuitive chatting
  • Implement proxy support for more anonymity

Built With

Share this project: