Inspiration

Learned about secure computation in class.

What it does

Imagine two billionaires, who want to know who has more money, but don't want to reveal anything about their own wealth.

Or imagine the director of a military space agency, who controls several satellites in low Earth orbit, in airspace shared with thousands of enemy satellites. The directors of the space agencies don't want to reveal their satellites' locations, but they also don't want to collide with each other.

Finally, imagine a romantic couple interested in exploring new experiences related to carnal embrace, but who are embarassed to list their desires. They'd like to compute the intersection of their yearnings without revealing anything about what they didn't share in common.

These three problems can be solved with secure computation. Formally, a function f(x, y) on 2 inputs is public, and each party knows their input, and they want to work together to calculate f(x, y), but do not want to reveal anything about x or y to the other party.

jyotir is a fully decentralized, peer-to-peer, library to solve these problems, using Andrew Yao's 2-party garbled circuits secure computation protocol and the RSA trapdoor permutation for oblivious transfer. This means that there is no need to trust any third parties with sensitive information and each party can verify the security of the scheme before engaging in the protocol.

How I built it

I first constructed a model of a Boolean circuit, added garbling and garbled evaluation, and then used sockets to facilitate several hundred one-of-two oblivious transfer protocols in parallel over a peer-to-peer connection.

Challenges I ran into

Cryptography is hard!

Accomplishments that I'm proud of

The colors are pretty.

What I learned

Cryptography is hard!

What's next for jyotir

Multiparty communication, efficiency, more default circuits, security audits.

Built With

Share this project:

Updates