Inspiration

We wanted to make an easy, secure way for people to grant access to buildings and alleviate having to check in everywhere you go.

What it does

This solution provides a robust admin side database system to manage access based on asymmetric elliptic curve encryption to authentic access requests. Additionally, we built an intuitive client side app to make it easy to interface with the database side through NFC to easily gain access. Also, we wanted to make sure everything was secure, so we used private keys generated on the users' devices to sign access requests, which are checked against a server side database of approved credentials. Finally, for added security, we designed the system to be able to work over LAN to allow clients to run the solution on an air-gapped system for extra security.

How we built it

All of the apps are built for Android using Java. We used the Spongy Castle API to provide cutting edge elliptic curve cryptography and key generation. Also, we used Google Maps to pull up a list of nearby buildings using the interface.

On the admin side, we built our database using MongoDB and built a powerful admin dashboard website with HTML and CSS.

Challenges we ran into

We initially were hoping to run authentication through an Arduino with an NFC reader, but the reader we had was not compatible with android smartphones, so that plan had to be scrapped. This led to even more problems because we decided to use another android phone to act as a base station NFC reader and quickly found out that NFC is very hard to work with. Additionally, we had a lot of trouble setting up the crypto, especially making sure that Spongy Castle was used to generate elliptic curve keys instead of the native Bouncy Castle, which did not have elliptic curve key support. And of course, to top things off, we had to wrestle with the key encoding format when we finally figured out a way to generate them! After quite a bit of frustration, we (Ryan) discovered quite the neat little trick; he parsed the keys with a Bitcoin library, since Bitcoin uses elliptic curve encryption as well.

Accomplishments that we're proud of

We made the NFC work, we are also quite proud of the breadth that we were able to work into our project, from 2 Android apps, to Google Maps, to a full server application, and even a website admin control!

What we learned

After our experiences with our employee information management app PanID and GateKeeper, we learned that successfully deploying good crypto is often a lot harder than seems. Also we learned a great deal about Android app development, seeing as none of us really had that much app experience.

What's next for GateKeeper

Well, if all goes according to plan, we will be using GateKeeper to secure our on-campus apartment next school year.

Built With

Share this project:

Updates