Hello everyone and welcome back to my blog! After the website deleted my first draft, I have finally mustered up the will to redo this. I began my senior project by researching the math behind cybersecurity and encryption as well as the assumptions and principles used.
I began with computational hardness assumptions-assumptions about how hard it would be (how long it would take a computer) to decrypt messages/”crack the code” without the key. Computational hardness assumptions are what all cryptographic algorithms are built upon. I learned that while in theory it is possible to have an algorithm (such as “one-time pad”) with an infinitely difficult computational hardness assumption, in practice, algorithms that are used such as RSA do not as algorithms with infinitely difficult computational hardness assumptions are comically impractical.
I continued my research by looking at RSA. I created a list of question which will be my basis for research in future weeks based on problems I faced in attempting to recreate RSA in python. For example, how large primes used for RSA are generated and how computational difficulties (even with the key) are overcome. I also did some math to figure out generally how to decipher messages encrypted with RSA (I found the multiplicative inverse of a mod b given the multiplicative inverse of b mod a).