Daily Due Monday October 21st, 2024

  1. We are mid-semester, so please make sure your self-eval sheet is up to date and hand in a copy with today’s daily post, so I can see how things are going.  Please contact me if you are concerned about your grade.  The computed grade in canvas is NOT RELIABLE (the raw grades are reliable, but the conversion to estimated grade is not); you can compute for yourself using the grading tab above.
  2. To Do:  An Elliptic Curve El Gamal Ciphertext Chain!  Today’s question:  best hallowe’en costume?  You will encrypt your answer.  Here are the steps:
      1. Keep notes as you do all this.
      2. Here are the EC El Gamal Tools you can use to do this.
      3. As a group, we will all use the elliptic curve E given by $y^2 = x^3 + x^2 + x + 1$ over the finite field of p = 123456789101234567891027
        elements.  We will furthermore use the point P = [3,11655832467975276266127,1] on $E$, which has order 61728394550949287614731.
      4. You should create a private and public key pair based on the information given above.  Publish your public key on the #public-keys channel on discord (note: this is a point (x,y) on the curve).  Keep your private key in a text document somewhere to use for decrypting later.
      5. You should answer the question (Best hallowe’en costume?) with a word of 6 or fewer letters.  Translate this to an integer (text to integer tool as usual) and add three digits of “padding” “000” at the end.
      6. Turn your message into a point on the elliptic curve as described in class.  This might mean updating the padding to “001”, “010” etc. until it works.  For this step, you need to take modular square roots.  The command is sqrt.  For example, sqrt(Mod(2,7)) will give you the square root of 2 modulo 7 (which is 3).  If it returns something with a the string ‘sqrt’ in it, that means it failed (no square root), e.g. sqrt(Mod(3,7)) will just return “sqrt3” — that means no square root.
      7. You should then obtain the most recent public key on the #public-keys channel, and encrypt your ASCII message (turned into a point on the curve) to that public key.  Post your encryption to the #ciphertexts channel, @mentioning the  owner of the public key it is encrypted to.
      8. You should then keep an eye on the channel and when someone encrypts a message to your public key (they should @mention you), you should decrypt it and announce what the plaintext was, @mentioning them back.
      9. When someone decrypts your message, you should give them a thumbs up to let them know it’s right (or let them know if it isn’t).
      10. Hand in your notes from this exercise to the canvas dropbox.