В сентябре 2013 года британская разведслужба GCHQ объявила очередной конкурс в интернете. Всем предлагалось поломать голову над несколькими криптографическими задачами. А тех, кто удачно с ними справится, приглашали на собеседование в офис GCHQ.
«Ваша новая задача — найти и разгадать 5 кодов, которые мы спрятали в Интернете. Те, кто примет вызов и найдёт все коды, сможет присоединиться к элитному сообществу людей с некоторыми из конкретных навыков, которые мы ищем в GCHQ».
Профессор информатики Алан Вудворд из университета в английском графстве Суррей по прошествии некоторого времени после окончания конкурса опубликовал статью с решением этих головоломок. Ниже можно посмотреть, какого уровня задачи предлагали будущим британским разведчикам, а также ознакомиться с методами решения подобных задач.
Головоломка по подбору персонала GCHQ начиналась на странице с объявлением о конкурсе: https://canyoufindit.co.uk.
Первая головоломка находилась на стартовой странице и содержала ряд символов:
AWVLI QIQVT QOSQO ELGCV IIQWD LCUQE EOENN WWOAO LTDNU QTGAW TSMDO QTLAO QSDCH PQQIQ DQQTQ OOTUD BNIQH BHHTD UTEET FDUEA UMORE SQEQE MLTME TIREC LICAI QATUN QRALT ENEIN RKG
Для взломщика кода есть несколько особенностей, которые в этом тексте сразу бросаются в глаза:
Так как это самая первая задачка, то предполагаем, что это что-то несложное, например, шифр перестановки. Попробуем уместить эти 143 символа в табличку 11×13 или 13×11, удалить все «пробельные» символы Q и посмотреть, что получится.
В первой табличке ничего внятного не получилось, а вот во второй табличке можно увидеть вполне узнаваемые слова в столбцах. В результате, прочитав буквы по столбцам, получим сообщение:
A COMPUTER WOULD DESERVE TO BE CALLED INTELLIGENT IF IT COULD DECEIVE A HUMAN INTO BELIEVING THAT IT WAS HUMAN WWWDOTMETRODOTCODOTUKSLASHTURING
Итак, мы действительно столкнулись с шифром перестановки. У него много форм, но здесь используется одна из самых простых – транспонирование. У перестановочных шифров долгая история, и до электронных устройств шифрования он и его варианты были основой для многих секретных сообщений.
Последнее самое длинное слово начинается на WWW и имеет внутри комбинации DOT («точка») и SLASH («слэш» ). Поэтому логично предположить, что это URL, а именно www.metro.co.uk/turing. В результате получаем следующий пункт в квесте, плюс ответ на первую подсказку, а именно: «turing».
На следующем шаге открывалась страничка, на которой можно было скачать файл с названием «comp1.key».
Судя по расширению это был какой-то ключ шифрования. Если его загрузить и открыть в текстовом редакторе, то можно было увидеть следующий код:
-----BEGIN RSA PRIVATE KEY----- MIIC2gIBAAKBgDfABK8+joDLdbFTDJ+y3PTTzkqCi1L2qEjgxdg1iyZshJTeKUck SYVyKBeOBtB3FwwqXVa6iNEHJeLFewFE6ulEOIcatVp11Zg0ibMfnqTivbd6t8/z 3KzqrFksg9xQiicMactmTqFkm8ro5ODc2NTQzMjEwLy4tLCslBOCOVHxAgMBAAEC gYATW12FB2BtQbecmSxh6rWjYENZRZhgdvoZS8oF9xlYfwdNtRF5/RR1/BwFia++ BAuBktgTu/KzORsjcNPzrd0uTCbTG6hW8YPK2ROVOOeAMHek8Nl3+SW5wdePKuWw MdjDDjqxXDns+ZC1d2Cpz5V+x+2znOYL0bsEKei0sWl7LQKBgDfABK8+joDLdbFT DJ+y3PTTzkqCi1L2qEjgxdg1iyZshJTeKUckSYVyKBeOBtB3FwwqXVa6iNEHJeLF ewFE6uhVSior5HGPArFhsOQ0v9ob1NCV7P8M99qN4XplmX/xs05HgQCVh9aMWtio pKCcmJSQjIiEgHx4dHBsU9JB+TvkAkB3dy53aHRzaXNpbGd1b2VjdHNyZWhzcmku ZW9jdS4va2xidGVoY2VsIHkgICAgICAgICAgICAgICAgICAgIAuPAkATpSSd/C5S IEAbUPk+ZYAdt7OYVzay7ViAiaukhkt+/sJG+m8GmHnAKyLf9ohx3/aIcd/2iHHf 9ohx3/ayirJPAkAIefJYEpdAoRjJQCHPGUpOVjLiyQMyPcnsutG+ctAGGU8lZTDU yUim9V7iwqTE4sKkxOLCpMTiwqTE4sKkxOFNAoGAFInzTsAOkauW3crd1XfxMhxi tUkapdQqlwvFhZuouNIybfEOfW6WkjtghBDyqf50cEFWXMJ7Vk8mr6cwTosPvYKU VXKUCblretLTeU95TlbkprizPky++5b7pQuSi3mpLMi+6VgvcjTthfXPYNg2JjJp gmteC4felYL/2FTAmT8= -----END RSA PRIVATE KEY-----
По внешнему виду сразу было ясно, что это закрытый ключ RSA из пары открытых/закрытых ключей RSA. Но гораздо менее ясно было то, что именно им нужно расшифровывать. Кроме этого файла на странице не было больше ничего подходящего для расшифровки.
А раз кроме ключа ничего нет, нужно попытаться извлечь информацию из самого ключа, т.к. в килобайте текста можно зашифровать и спрятать очень многое.
Как принято при передаче ключей, файл кодируется с использованием Base64. Если в текстовом редакторе удалить верхний и нижний колонтитулы (—–BEGIN RSA PRIVATE KEY—– и —–END RSA PRIVATE KEY—–) и попробовать скормить оставшийся текст какому-нибудь онлайн-декодеру, например http://www.base64decode.org/, то получим вот что:
Самое простое (и, наверное, единственно правильное в этой ситуации) решение — применить метод «пристального вглядывания» на предмет нахождения в этом декодированном тексте чего-нибудь необычного.
И внезапно это необычное находится. Среди мешанины символов видим что-то узнаваемое: ww.whtsisilguoectsrehsri.eocu./klbtehcel y
Снова очень похоже на URL, только символы как-то немного перепутаны. Если попробовать в каждой паре символов поменять их местами, то получим уже совсем другое дело: www.thisisgloucestershire.co.uk/blechley .
Конечно же, это следующий URL, а «blechley» — следующий ответ для главной страницы.
На новой странице видим новую порцию символов:
2910404C21CF8BF4CC93B7D4A518BABF34B42A8AB0047627998D633E653AF63A873C\ 8FABBE8D095ED125D4539706932425E78C261E2AB9273D177578F20E38AFEF124E06\ 8D230BA64AEB8FF80256EA015AA3BFF102FE652A4CBD33B4036F519E5899316A6250\ 840D141B8535AB560BDCBDE8A67A09B7C97CB2FA308DFFBAD9F9
Вот теперь у нас появился текст, к которому можно применить ранее скачанный ключ. Вернёмся к нашему ключу. Для начала выполним команду
openssl.exe RSA –in comp1.key –text
и она выведет следующее:
Теперь нужна какая-нибудь утилита для расшифровки RSA, например, эта. С её помощью можно декодировать имеющийся текст..
Для последовательности в блоке Prime1 получится вот такая декодированная шестнадцатеричная строка:
20 20 20 20 20 20 20 20 77 77 2e 77 68 74 72 65 67 65 73 69 65 74 2e 72 6f 63 75 2e 2f 6b 6e 65 67 69 61 6d 30 32 33 31 20 20 20 20 20 20 20 20
Если открыть шестнадцатеричный редактор и снова применить «метод вглядывания», то вновь увидим веб-адрес, в котором соседние пары «свопнуты»:
Поменяем местами пары символов в строке ww.whtregesiet.rocu./knegiam0231 и получим URL-адрес: www.theregister.co.uk/enigma2013 Следовательно, мы получили новый адрес и, следуя шаблону, где последняя часть URL-адреса является ответом, получаем и следующий код — Enigma2013. Энигма – это такая немецкая переносная военная шифровальная машина, активно применявшаяся фашистами во время войны, и над взломом шифров которой как раз активно трудились сотни человек в том самом Блетчли-Парке из предыдущей задачи. Ну а 2013 – год, в котором проводился набор рекрутов в GCHQ.
На следующей странице представлено кое-что новое:
Новый элемент — картинка. Любой, кто бывал в Блетчли-парке, узнает машину, изображенную на картинке. Кто не знал, будет вынужден гуглить. На картинке Колосс – первый компьютер, который использовался для взлома кода машины Лоренца во время Второй мировой войны.
Как и раньше, возьмем этот файл изображения и откроем его в нашем шестнадцатеричном редакторе:
Сначала это выглядит как стандартный файл jpeg с обычным заголовком (видим в начале символы …JFIF…). Однако, после «пристального вглядывания» можно заметить, что внутри картинки есть ещё одна комбинация символов JFIF, то есть второй заголовок. А вот это уже ненормально. Кто-то вручную «склеил» две картинки, добавив второе изображение в конец основного. При просмотре, естественно, показывается только первая.
С помощью нашего любимого шестнадцатеричного редактора очень просто удалить всё до второго заголовка jpeg, сохранить отредактированный файл и попытаться открыть этот только что укороченный файл.
И вот что мы увидим:
Как и прежде, получили очередное кодовое слово (Colossus) и следующий адрес. Можно было, конечно, сразу, увидев на картинке компьютер Colossus, так и написать. И даже не узнать, что там было что-то не так с картинкой :)
На этой странице сразу показывается некий адрес. При решении головоломок иногда очевидный ответ является правильным ответом. Если пойти по этому адресу, то нас вернет на стартовую страницу. А если предыдущие правила получения кодового слова как последнего кусочка URL остаются в силе, то новый код - это «Secured».
Ну вот, собственно, и всё. Квест пройден. Осталось ввести полученные кодовые слова (ответы) в соответствующие поля на форме:
Почему-то они все должны вводиться с большой буквы, что не очевидно. Возможно, что пропускало и независимо от регистра.
После корректного ввода показывалась страничка с поздравлением и возможностью предоставить GCHQ свои контактные данные (если прошедший квест хотел, чтобы его рассмотрели в качестве кандидата на приём на работу в GCHQ).
Сейчас все эти URL уже недоступны, особого смысла пытаться всё это повторить нет, поэтому я и не делал на них гиперссылки активными. Но по этому прохождению, описанному выше, можно прикинуть, какой образ мышления необходим для работы в области безопасности связи и прочих областях, которыми занимается британская разведка. Для наших потенциальных IT-специалистов и просто любителей головоломок это тоже будет полезно.
Я уверен, что изучение подобных квестов расширяет навыки и тренирует мозги для решения более грандиозных задач!