Inspiration

We live in a world were data breaches are common occurrances, yet people still use centralized servers, ether not realizing how dangerous it is to trust a third party, or just don't care as much as they should. Not only can these servers be hacked, and so would all your data, but also they have complete control over your use of their servers. Therefore we asked ourselves, wouldn't it be nice to distribute some trust? After debating and brainstorming we ended up with the idea of a decentralized app that allows you to keep important data saved, similar to a safe deposit box.

What it does

ShardSafe uses a military-grade encryption algorithm (AES-256-CBC) that encrypts a file locally, afterwards, we use a key fragmentation so as not to store the master key(of the password's file) in a single device. Instead, many other devices will hold a shard of the key. Our app also includes a P2P distribution, so that all fragments are securely distributed among all the peer connected to the network. Finally, to decrypt a file, a minimum 'k' thresholds would be needed, since the system doesn't need to have a hold of all the fragments. Because of this fact, with at least k fragments, the password can be decrypted, and so can the file.

How we built it

We designed the frontend and core application logic using React + Byte. For the cryptographic engine, we built a custom Node.js module implementing the AES-256-CBC advanced algorithm alongside the SSS mathematical logic. The networking layer relies on a peer-to-peer approach where devices are identified via public keys (stored in a distributed hash table or registry) to route and verify "pings" and shard deliveries.

Challenges we ran into

To begin with, we started trying to fragment the encrypted file directly, however this method was very inefficient due to the large sizes of the files, hence our idea to fragment only the file password(once it is encrypted. Another problem we encountered was the poor connectivity of the P2P technology, as well as the wifi's own firewalls and, consequently, the impossibility to actually use the upcs' wifi. We could also add how difficult it was to come across such a great idea as ShardSafe. During our planning process, we had problems trying to come up with an original and innovative perspective of our problem, but after investing some time deep-thinking, we finally gathered dome common thoughts that finally turned into the app.

Accomplishments that we're proud of

Not only were we able to figure up any problems we had(and there were uncountable), but we also were able to really get the teamwork spirit up the whole time, we solved every dispute with reason and objective thinking, while really getting along as a team.

What we learned

The whole experience was truly a new for all of us, we learned about technologies we didn't know about, experienced actual teamwork problems, decision-making... Staying up burning the midnight oil really makes a team grow up and we all surely learned a little more about ourselves that we didn't know, we tested our limits and went beyond them.

What's next for ShardSafe

Refining the mobile UI would be the most straightforward answer, yet we are trying to think outside the box, and thought about many new features for the app. Furthermore, we would like to expand our horizons by giving the opportunity of making large nodes networks that can store safely delicate information.

Share this project:

Updates