To Know: We’ll soon finish elliptic curves, isogenies and lattices, so I’ll be putting together an assessment soon. Next up: quantum key exchange, quantum computers and quantum cryptanalysis.

To Do: A Ring-LWE ciphertext chain! You may want to review the course video on canvas and the class notes under “History“. Here’s what you’ll need:

Our general setup with be the prime p = 100000000003 and n=8. We will use k=100. (This will allow us enough room for a 3-letter word in ASCII as the message m.)

At the Ring-LWE Tools page you’ll see how to initialize the polynomial ring, and you’ll have two functions that generate short and random elements. In our case, “short” means coefficients from {0,1,-1}.

First, generate your own private/public key pair and post the public key (a,b) on the discord #ciphertexts channel. Keep your secret key for later (e.g. in a text file). Important note: to make it easier on everyone, surround your polynomials with backticks ` when pasting into discord, and it will post it verbatim, i.e. not interpret the asterisks as emphasis etc. This will make cutting-and-pasting into Sage easier.

Next, choose your favourite three-letter word and put it into ASCII (Here’s the tool). This is your message. Now, encrypt your message to the most recent unused public key on the #ciphertexts channel. Post your message (v,w) on the #ciphertexts channel and mention the appropriate person.

Wait until someone sends you a message. When this happens, decrypt it using your secret key (here’s the ascii to letters tool), and announce their favourite 3-letter word on #ciphertexts, mentioning them so they can confirm.

Post your record of the events/computations to the canvas dropbox.