Whiteboard design/control flow
What helped inspired this project was a way to be able to send pictures in a way that no one would be able to see them unless you wanted someone, by using encryption.
What it does
Conceptually, the app allows you to:
- Take a picture using a built-in camera app.
- Save that picture in an encrypted manner (protected by user password)
- Send that picture to a specific set of recipients, where the image is encrypted such that only these recipients can see it (using their own passwords)
... along with basic management tasks for a photo viewer app (rename, delete, etc.)
Only this first point is properly implemented.
How we built it
We used a mobile app that used the phone's camera that securely stored the pictures and used a web service to store the pictures by encrypting it and sending it to a recipient.
Challenges we ran into
The biggest challenge was setting up a backend framework to store user data-- since the sharing functionality was intended to be based on public key encryption, the backend would have been responsible for associating users with public keys and distributing those keys. AWS was uncooperative, and it was difficult to figure out remote database communications in an Android app.
Implementing cryptography ended up taking too much time to actually integrate into the app.
Only one of our team members was familiar with Android development, and we lost a lot of time to setting up the development tools for that, along with working around Android's many quirks.
Accomplishments that we're proud of
Getting the camera to be able to take a picture.
What we learned
How access a phone's camera and store images on a phone locally.
What's next for cryptapic
Proper encryption and being able to send it between users, and allowing encryption of other files, such as video, or documents.