My interest in Cryptography

I’m increasingly interested in steering my career towards cryptography. Two applications of cryptography especially interest me: privacy and cryptocurrency.

TL;DR I’m teaching myself this stuff with the list at the bottom.

Privacy

There were headlines recently that Facebook has all this data on its users. Most everyone I know in software development were only surprised that other people were surprised. Of course Facebook (and Google, and Amazon, and Twitter, and every big “free” web application that exists) are harvesting data about you to sell to each other and to others, leading to a prominent culture of psychological manipulation based on data about you.

Anyway everyone knows that. It’s how the world works. But it doesn’t have to be. Anonymity is a value I hold and that I think more would hold if it were available to them. It’s just simply not available, in a lot of cases.

Facebook messenger is listening to your conversations. Signal messenger, by Open Whisper Systems, uses one of the most sophisticated cryptographic protocols invented. And it’s just as easy to use as Facebook messenger but is completely private, end-to-end encrypted so that you can digitally “whisper” to your friends and family. I fundamentally believe that I have the right to communicate in private without eavesdroppers, but it’s surprisingly rare to be able to do that in today’s internet, and I want to dedicate my working life to helping make that possible (and easy!) for the average joe.

Cryptocurrency

Everyone has heard of Bitcoin by now. I was a relatively early adopter and have moved on to other currencies now, but I still believe in the idea. The cool thing about cryptocurrency is the cryptographic proof of the public ledger. There’s no such thing as counterfeit on the blockchain. Proof of Work works because of the “hard problem” vs “simple problem”, in the same way that asymmetric cryptography does. You can’t fake that you did the work to find a one-way hash of the transactions in the block. There’s a part of me that revels in provable correctness and I like the blockchain because it has this, while traditional money does not. I have no idea what amount of dollars the Federal Reserve is creating out of thin air this month, and the only reason to believe that my bank is not scamming me is the government “manually” enforcing good behavior. I think the former is superior to the latter and I’d like to contribute to the future of this all-important system in society.

Self-study

So I’ve decided to spend my free time studying this stuff so that I can start contributing to one or both of those two applications of cryptography, which I think will make the world a better place. There are a lot of things I have to learn. Even though I’ve been a software developer for about 10 years now, there are a lot of sub-disciplines with which I am rusty, or which I never learned properly in the first place. So I’m working on filling those gaps.

For that purpose, below is my self-selected curriculum to get myself up to speed on the things I’ll need to know to make this transition. I’ll keep this updated with my progress and changes/removals/additions to the list.

Math and Computer Science

I want to have a deeper understanding of the math behind cryptography.

Cryptography

Cryptographic methods, protocols, history, etc. The meat.

C++

C++ seems to be the lingua franca of cryptography so I need to get a little more familiar with it.

Networking and Network Security

I want to brush up on the details of network protocols and network security. I know enough to do my job as a web developer, but I want to study the details more closely.