In this activity, you will examine the effects of encrypting your messages on a sniffing cyberattack. You will leave the sniffer micro:bit’s script the same receiver script, but add Caesar cipher encryption to the transmitter and intended receiver scripts.
Cybersecurity: Encryption Intro has activities introducing the Caesar cipher if you want to learn more about it.
- Repeat the setup from the previous activity, Share Something Personal -Unencrypted.
- Enter, name, save, and flash the radio_send_images_caesar transmitter script into the micro:bit you chose as the transmitter—the one sending the HAPPY/SAD/ANGRY images.
- The micro:bit you chose to be the sniffer should still be running the radio_receive_images receiver script from the previous activity.
- Enter, name, save, and flash the radio_receive_images_caesar receiver script into the micro:bit you chose to be the intended receiver. The receiver script is below the transmitter script.
- Remember, if you only have two micro:bit modules, you can enter flash, save and test the intended receiver script after testing the sniffer.
Transmitter Script: radio_send_images_caesar
# radio_send_images_caesar.py from microbit import * import radio ''' Function converts plaintext to ciphertext using key ''' def caesar(key, word): alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" result = "" for letter in word: letter = letter.upper() index = ( alpha.find(letter) + key ) % 26 result = result + alpha[index] return result ''' Script starts from here... ''' radio.on() radio.config(channel=7) sleep(1000) string_list = ["HAPPY", "SAD", "ANGRY"] while True: for packet in string_list: print("packet:", packet) display.show(getattr(Image, packet)) packet = caesar(3, packet) print("Send encrypted:", packet) radio.send(packet) sleep(2500)
Receiver Script: radio_receive_images_caesar
# radio_receive_images_caesar.py from microbit import * import radio ''' Function converts plaintext to ciphertext using key ''' def caesar(key, word): alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" result = "" for letter in word: letter = letter.upper() index = ( alpha.find(letter) + key ) % 26 result = result + alpha[index] return result ''' Script starts from here... ''' radio.on() radio.config(channel=7) sleep(1000) while True: packet = radio.receive() if packet: print("Receive encrypted:", packet) packet = caesar(-3, packet) print("packet:", packet) display.show(getattr(Image, packet))
Test Sniffer and Intended Receiver Responses
- Click the Show serial button in any of the browsers where the serial monitor is not already open.
- Compare the intended receiver micro:bit’s terminal to the sniffer’s terminal.
- In this case, the KDSSB instead of HAPPY should cause an exception. You will correct this in the upcoming activities.
- Compare the intended receiver micro:bit’s LED display to the sniffers as well.
- Reminder: If you are only using two micro:bit modules, test the sniffer first while it’s running the previous activity’s receiver script. Then, load this activity's receiver script and compare the difference.