4. In this question you will double encrypt/decrypt your first and last name (separated by a '_) using public and symmetric key approaches (if you are working in pairs you will use the first name of each member). Specifically, first encrypt your name using the One-Time Pad algorithm, resulting in ciphertext L1. Then, using the RSA algorithm encrypt Li into ciphertext L2, which would be the transmitted message. You will then decrypt L2 to yield L3, and then decrypt L3 to result in L4, which will be a list of integers corresponding to the letters of your first and last name, as expected. That is, L4 should be identical to the corresponding list of integers from the original message.
Use the following table to translate between characters and their integer representation. Be sure to show each step of the encryption and decryption processes.
Use the RSA algorithm shown in class, for p= 1153 and q = 997 (noting that key generation is only needed to be performed once for the entire message). Given the large number of digits is suggested to use a powerful calculator such as www.wolframalpha.com.
The One-Time Pad: Believe it or not, but “perfect" encryption techniques are theoretically possible! In this context, “perfect" means that there exists a mathematical proof showing that crypt analysis is impossible (how cool is that!). The proof idea is to show that an attacker does not gain any additional information by having the ciphertext in hand. That is, seeing the encoded message provides zero information to somebody wanting to decipher it. One example of such a system that is completely unbreakable is known as the One-Time Pad (OTP).
The basic idea that OTP relies upon is that adding a random number to a nonrandom number yields a random number. If both the receiver and sender have the same list of random numbers, then it becomes possible to encrypt and decrypt a message with perfect security since a potential attacker will only see a stream of random numbers. The procedure is:
Key generation:
1. Randomly create a list of letters from the above table (> # characters in your name).
2. Generate the encryption key. The key will be a list of the numbers between 00 and 26 that correspond to the character string in the previous step.
3. The sender and receiver exchange the list in person, so they both have the same list.
Encryption:
1. Translate your message into numbers: for each letter in your name represent it with it's corresponding number from the above table.
2. Use Fibonacci addition to add the above translated message to the encryption key. Note that Fibonacci addition works as traditional addition but does not carry numbers when adding and is performed digit-wise (i.e., 3+9= 2 or 67 +53 = 10).
3. The resulting ciphertext is then sent to the receiver.
Decryption:
1. Receive the ciphertext from the sender.
2. Subtract the encryption key from the ciphertext using Fibonacci subtraction. Fibonacci subtraction works as traditional subtraction but does not allow negative numbers; instead when a number is negative you will need to add 10 to it. Subtraction is performed digit-wise (i.e, 4-8= -4+ 10 = 6 or 10 – 53 = 67).
3. For each pair of digits from the previous step, look up it's corresponding character from the table above and report the decoded string (it should be the same as your original message).
(a) Perform the double-encryption and decryption. Be sure to show all your work. You can use online calculators to help (just remember to reference them)!
Students succeed in their courses by connecting and communicating with an expert until they receive help on their questions
Consult our trusted tutors.