Inspiration
It was inspired by a rather silly thought, maybe a pun if you stretch the definition. Crypt's Greek route means hidden, thus its usage in the word 'cryptography', but it is also a mausoleum or resting place. The '-ography' led us to geography, map locations and such - something that overlaps with resting places. The ridiculous idea of a cryptosystem based on the location of the dead and buried came to thought, and the initial tagline thought of "Because dead men tell no tales" sealed the deal (although we later changed it to "Taking secrets to the grave" because it's more inclusive).
What it does
Crypt(ge)ography is an encrypted messaging service using a unique private key encryption system - the keys are the notable deceased, with the geographical coordinates of their place of burial being using to carry out encryption. The same famous person is then used to decrypt the message on the receiver's end, through the same process (calculating the key and then carrying out the inverse operations).
How we built it
Crypt(ge)ography is heavily reliant on two APIs: the Wikipedia API and a geocoding tool related to the Open Street Map API called Nominatim. When someone is entered as a key, their Wikipedia page (if it exists) is scraped, pulling out their place of rest. Sometimes this location has coordinates attached (this makes the process a lot easier) but most of the time, it is just the description of a location. The geocoding API extracts the coordinates of the location in this case, providing us with a way of producing a numeric output that can be used to generate a key from the deceased through some silly mathematics. With React, we built a front-end messaging service, calling the cryptosystem as an API. This allows you to send messages to other users, encrypted, that can then be decrypted if they know the correct famed corpse.
Challenges we ran into
Wikipedia is a mess; the formatting of the data we needed was highly varying across articles, e.g. different wording and encoding of 'resting place' ('resting_place' vs 'restingplace' vs 'resting place' vs 'burial_place'), and different coordinate units being used on different pages. Processing this required repeated application of spaghetti code but we made it work. Some locations didn't process well either; there are a few strange cases where celebrated cadavers are said to be at rest in places very far from the truth (much to the chagrin of the residents of Kralendijk, Bonaire, Netherlands). Making this clearly insecure system somewhat secure was a challenge that we couldn't overcome; initial plans were to use the coordinates to generate large primes for RSA encryption, but the non-polynomial computing time of finding primes made it infeasible, thus we went for a shifting substitution cipher.
Accomplishments that we're proud of
It generally works! While any individual might not process perfectly, that has the beneficial side effect of making the system more secure against attackers unfamiliar with the internal mechanisms of the system, and if the information is present, it will encrypt the message in a reversible manner. We're also very happy with the presentation of the application.
What we learned
It was the first time anyone of us had worked with the Wikipedia API and related services such as wikidata. While wikidata never made it into the final project, it required using SPARQL which was a new experience for me. We had little to no experience using Next.js yet we wanted to learn it so we made a web messenger app. The API was made in Python FastAPI which was also new to us but turned out to be conveniently fast to use. We spent a lot of time teaching our inexperienced member about web development so she learnt how to design web pages using React and Tailwind.
What's next for Crypt(ge)ography
Crypt(ge)ography has the bizarre property of having a constantly growing set of keys, so it will passively get more secure over time. However, security improves could definitely be made to remove weaknesses to cryptanalytic attack. We would also like to add a mode where the map location of the burial site is displayed, allowing for a small amount of historical education for users.


Log in or sign up for Devpost to join the conversation.