Як “Гравітація Фоллз” може допомогти вам навчити своїх дітей основам криптографії

Зараз середа ввечері. Два мої сини та дочка готові. Я натискаю гру, і ми починаємо подорож, яка відведе нас усіх далі, ніж ми коли-небудь передбачали.

Ми переглянули перший серіал Gravity Falls. Візуальні ефекти, персонажі, сюжет та гумор є першокласними, і ми точно хотіли більшого, але… ми помітили щось наприкінці титрів. Те, чого ми не очікували. Щось, що зробило перегляд цієї серії набагато цікавішим та цікавішим.

Ан encrypted message.

Ось як ми розшифрували коди. І нам було дуже цікаво робити це самостійно. Не перевіряючи нічого з цього в Інтернеті. Якщо я зацікавив вас, рекомендую припинити читати і спробувати зробити це самостійно. Тоді ви можете повернутися і прочитати мої рішення та пояснення нижче.

ZHOFRPH WR JUDYLWB ІДОВ

Ми були впевнені, що це повідомлення. За зовнішнім виглядом я здогадувався, що він зашифрований якимсь замінним шифром.

Шифрування за допомогою шифру заміщення в основному замінює літери іншими буквами на основі якогось загального правила. Розшифровка виконується шляхом застосування цього правила в зворотному порядку до зашифрованого тексту. Цей тип шифрів більше не використовується, оскільки їх легко зламати, тобто за допомогою криптоаналізу. Більш детальну інформацію ви можете знайти на цій вікі-сторінці.

Спочатку ми були надто схвильовані історією, щоб поки зосередитись на шифрах. Ми просто визнали, що шифри існують, і не знали, як їх розшифрувати. Я думав, ми їх просто зламаємо пізніше, але ...

Після одного епізоду у мого сина з’явилася ідея. Він хотів переглянути вступне шоу. Назад. Я думав why not? Вгадай що! Коли ви переглядаєте його назад у якийсь момент, ви можете почути приховане повідомлення:

Три листи назад

Хм ... three letters back. Зазвичай це не має жодного сенсу. Але у нас були шифри, які ми не знали, як розшифровувати. Для нас це мало цілком сенс.

Привіт пане Цезаре

Шифр Цезаря - один із найдавніших відомих і найпростіших шифрів. Це тип замінного шифру, в якому кожна буква в відкритому тексті «зміщується» на певну кількість місць внизу за алфавітом. Наприклад, зі зсувом на 1 А замінюється на В, В стає С тощо. Метод названий на честь Юлія Цезаря, який, очевидно, використовував його для спілкування зі своїми генералами. Детальніше читайте тут.

Я надрукував англійський алфавіт для всіх звідси, і почалося розшифрування:

ZWтому що, якщо ми переносимо 3літери назад, Zми закінчуємоW

HE

...

BYтому що якщо ми 1повернемо літеру назад, ми опинимось далі, Aа наступну 2ми маємо зробити countз кінця алфавіту, тож врешті-решт цеY

Через деякий час ми знали, що ZHOFRPH WR JUDYLWB IDOOV насправді ЗАПРОШУЄМО ДО ВАЖЛИВОСТІ.

Мої діти любили це.

Коли вони manuallyрозшифровували наступні повідомлення, я думав, що це чудова можливість насправді показати їм, що я роблю на роботі. Для них це легше зрозуміти.

Я розпочав нове, Swift Playgroundоскільки це пропонує чудовий спосіб роботи з кодом. І приступив до кодування. Я написав це просто для розваги, тому, будь ласка, не судіть?:

Коли було зроблено декодування вручну, я сідаю з дітьми перед комп’ютером. Я пояснив, що мій код робить те саме, що робив при розшифровці повідомлень. Але замість того, щоб робити це вручну, це автоматично і може використовуватися багато разів. Вони не зрозуміли коду, я був би здивований, якщо б зрозуміли, але я майже впевнений, що зрозуміли the idea.

KZKVI QZN WRKKVI HZBH: “ZFFTSDCJTSTZWHZWFS!”

Все було чудово до епізоду 7. Ми розпочали декодування першого слова і:

KZKVIHWHSF

О-о, наше щастя просто закінчилося. Було ясно, що шифр змінився. На щастя, clueу повідомленні ми розшифрували епізод 6:

МІСТЕР. ЦЕЗАР ІАН БУДЕ ВИХОДЕНИЙ НАСТУПНИЙ ТИЖДЕНЬ Г-Н . Atbash підставить

Ceasar cipherAtbash cipher

Привіт пане Атбаш

Шифр Atbash - це замінний шифр із певним ключем, де букви алфавіту зворотні. Тобто всі "A" замінено на "Z", усі "B" замінено на "Y" тощо. Спочатку він використовувався для єврейського алфавіту, але може використовуватися для будь-якого алфавіту. Детальніше читайте тут. Зашифровані рядки Atbash можна знайти навіть у Біблії. Ви можете прочитати трохи більше про це тут.

Цього разу це зайняло трохи більше часу, тому що нам довелося перевіряти індекс символів від початку, а потім знаходити букву з цим індексом, відраховану від кінця алфавіту. Знову мої діти розшифровували це вручну:

KPтому що індекс Kє, 11і коли ми відлічуємо 11від кінця алфавіту, отримуємоP

ZA

KP

VE

IR

KZKVIPAPERЦе знову мало сенс.

Через кілька хвилин дочка підійшла до мене і запитала, чи правильно вона розшифрувала повідомлення. Вона зробила. Але це було не найцікавіше. Я помітив, що вона щось написала на друкованій сторінці алфавіту. Над алфавітними індексами 1, 2, 3, …, 26вона додала зворотні номери індексів 26, 25, 24, …, 1.

Завдяки цьому їй більше не довелося рахувати з кінця алфавіту. Ми, програмісти, називаємо це optimization. Мене вразило, що вона вже почала вдосконалювати свій набір інструментів, щоб полегшити роботу.

Знову я підготував невеликий фрагмент коду, який зміг декодувати повідомлення:

14–5–24–20 21–16: «6–15–15–20–2–15–20 20–23–15: 7–18–21–14–11–12–5’19 7–18– 5–22–5–14–7–5 »

Все було добре до епізоду 14.Потім з блакитного шифру знову змінився. Цього разу ми не здогадались. А може просто пропустив?

Ну ... можливо, не зовсім без жодного clue. Найбільша кількість зашифрованого тексту була 24найменшою 2. Букви алфавіту мають індекси від 1до 26. Виходячи з цього, ми зробили освічене припущення, що:

1A

2B

...

26Z

При 14–5–24–20декодуванні NEXTми знали, що наше припущення було правильним.

Це було трохи більше дратує, тому що я не хотів позбавляти повідомлення будь-яких символів при декодуванні. Якщо у вас це не працює - будь-ласка, видаліть non-aplhanumeric-charactersнепідтримувані символи або додайте в них непідтримувані символи .replacingOccurrences. Як я вже сказав. Не судити?

5–19–23–6–21–16 18–9–6 4–16–19 22–12–15–10–20–19–25–19

Ми знову не вдалися, коли спробували розшифрувати перше слово з повідомлення з епізоду 20.

5–19–23–6–21–16ESWFUP

Шифр змінено. Але ми не здавались легко. Hintє, зашифрований clue, який говорить про те, як декодувати це повідомлення. Але я залишаю це вам. Просто надто весело працювати над цими матеріалами.

Зверніть увагу, що ця серія two seasonsзаповнена mysteries and encrypted messages. Вам не набридне.

Кінець?

Тепер, коли я знаю, що мої діти люблять грати з криптографією, у мене є кілька ідей щодо next step. Безумовно, це не останній раз, коли вони працювали з шифрами та зашифрованими повідомленнями.

Дякуємо за читання! Сподіваюсь, я зміг вас цим трохи зацікавити. Якщо ви насправді пробуєте це зі своїми дітьми, додайте про це коментар. Мені дуже цікаво, чи тобі це було так само весело, як і нам.