Тематическое исследование о том, как GCHQ создала приложение с открытым исходным кодом CyberChef, которое помогает проводить кибер-операции через веб-браузер.
Статистика открытого приложения CyberChef
CyberChef — это веб-приложение для выполнения многих кибер-операций в веб-браузере. В нем более 300 операций, включая базовое кодирование с помощью Base64, расшифровку с помощью Advanced Encryption Standard (AES) или изменение кодировки символов. Приложение может выполнять множество операций одновременно, что делает его быстрым способом экспериментировать и переводить данные.
Приложение CyberChef:
- было создано за 10% «инновационного времени» аналитика
- его код был полностью открыт в ноябре 2016 года под лицензией Apache 2.0
- используется почти во всех странах мира
- 75 000+ пользователей в месяц
- 1,4 миллиона уникальных пользователей с момента релиза
- 75 участников сообщества разработчиков открытого исходного кода
Информация о GCHQ и CyberChef
GCHQ — это британское агентство разведки, безопасности и кибербезопасности, миссия которого заключается в обеспечении безопасности Великобритании. Его сотрудники используют передовые технологии, техническую изобретательность и ведущие в мире партнерские отношения для выявления, анализа и устранения угроз во все более сложном мире.
GCHQ считает, что успех зависит от великих умов, не думающих одинаково. Для поощрения инноваций и личного развития наряду с обычной работой сотрудникам предлагается тратить 10% рабочего времени на проекты по своему выбору, связанные с их работой. В 2014 году один из аналитиков начал искать открытые инструменты, которые помогли бы автоматизировать некоторые операции по работе с данными. Было слишком трудоемко писать короткие сценарии для каждого необходимого преобразования данных, например, кодирования, шифрования и просмотра данных в различных форматах.
Видя, что инструментов с открытым исходным кодом мало, они начали разрабатывать то, что впоследствии стало известно как CyberChef.
Понимание конструкции приложения CyberChef
Веб-приложение CyberChef имеет простой дизайн и включает в себя:
- поле ввода для добавления файла или текста, с которым вы хотите работать
- список всех операций, которые можно выполнить над файлом или текстом
- окно «рецепт», куда можно перетащить операции, которые вы хотите использовать, и указать, как вы хотите их использовать
- окно вывода для отображения результатов операций.
CyberChef на 100% работает на стороне клиента. Никакие данные или информация о комбинации операций, которые вы используете (известные в приложении как «рецепты»), не передаются за пределы вашего браузера.
GDS взяла интервью у анонимного создателя CyberChef, который сказал: «Мы понимаем, что в индустрии кибербезопасности люди часто работают с данными, которые они хотят держать при себе из-за коммерческой или личной конфиденциальности, поэтому для нас очень важна локальная обработка».
CyberChef:
- построен на JavaScript
- использует webpack для генерации пакетов
- использует Grunt в качестве системы сборки
- использует GitHub Actions для непрерывной интеграции
- размещается на GitHub Pages
- использует ESLint для линтинга и имеет набор тестов, написанный внешними разработчиками
- использует Nightwatch.js для тестирования пользовательского интерфейса
- также доступен через npm
Рассмотрение вопроса о создании CyberChef с открытым исходным кодом
После создания приложения для собственного использования создатель начал делиться CyberChef со своими коллегами в GCHQ:
- своими коллегами в GCHQ
- другими британскими агентствами и партнерами
- международными правительственными разведывательными агентствами
CyberChef стал настолько хорошо использоваться, что другие аналитики начали спрашивать, можно ли использовать приложение более широко для промышленности, студентов, предприятий и всех, кто хочет попробовать перевести данные. Поэтому создатель начал изучать возможность открыть CyberChef для общественности.
Почему GCHQ решили открыть код
Создатель знал, что открытие кода CyberChef:
- создать полезное приложение для широкой индустрии
- поможет пользователям предлагать исправления ошибок, вклады и идеи
- побудить других экспериментировать с данными, кодированием, шифрованием и компьютерными науками.
GCHQ также хотела быть настолько прозрачной, насколько это возможно, одновременно защищая оперативные секреты, поощряя интерес к кибербезопасности и демонстрируя свою поддержку сообщества разработчиков открытого кода.
Как объяснил его создатель: «GCHQ приложила много усилий для повышения прозрачности, поэтому имеет смысл, по возможности, делиться такими приложениями, как CyberChef, чтобы каждый мог ими пользоваться. Это помогает немного демистифицировать то, что мы делаем, и укрепить доверие».
Однако публичный выпуск приложения по кибербезопасности от ведущего мирового разведывательного агентства требует тщательного планирования и исполнения. Создатели знали, что им необходимо:
- получить соответствующее разрешение от GCHQ
- оценить возможные риски, связанные с открытием приложения и его кода
- надлежащим образом снизить любые риски
- решить, как опубликовать код CyberChef в открытом доступе
- договориться о том, как будет осуществляться поддержка приложения и как они будут управлять вкладом сотрудников, не являющихся сотрудниками GCHQ
Получение разрешения на использование CyberChef
CyberChef был не первым продуктом, который GCHQ выпустила в открытый доступ. В 2015 году агентство открыло фреймворк базы данных графов под названием Gaffer.
Зная, что GCHQ и раньше одобряла открытый код, создатель начал общаться с соответствующими командами, такими как команда по инновациям и команда по правовым вопросам и политике, чтобы выяснить, какие согласования необходимы. Реакция была в подавляющем большинстве случаев положительной.
«Сначала я очень беспокоился о том, сможем ли мы сделать это приложение с открытым исходным кодом из-за характера нашей работы, но коллеги успокоили меня, убедившись, что ничего секретного не будет выпущено», — говорит создатель CyberChef. Поговорив с несколькими советами и отделами, чтобы убедиться, что они не раскроют ничего секретного, создатель перешел к техническому процессу открытия кода.
Выбор лицензии
Создатель хотел сделать CyberChef полноценным продуктом с открытым исходным кодом, а не просто опубликовать код в Интернете. При выпуске приложения под лицензией с открытым исходным кодом GCHQ оставался основным автором. Это означает, что они будут контролировать весь вклад и поощрять людей использовать приложение с соответствующим указанием заслуг, но приложение больше не будет «принадлежать» организации.
GCHQ необходимо было выбрать подходящую лицензию, чтобы поощрять сообщество разработчиков открытого кода использовать CyberChef и вносить в него свой вклад, а пользователи должны были отдавать GCHQ должное. Они выбрали Apache 2.0.
Некоторые существующие библиотеки языка кода были несовместимы с Apache 2.0, но после нескольких изменений и замены библиотек код был готов к выпуску.
Открытие кода
Когда дело дошло до публикации кода, создатель CyberChef выбрал GitHub, поскольку он считается отраслевым стандартом для размещения программного обеспечения с открытым исходным кодом.
Получив необходимые подписи, создатель:
- Проверил код в частных сетях GCHQ, чтобы убедиться, что он презентабелен, читабелен, не содержит никаких личных или конфиденциальных данных и безопасен для публикации.
- Протестировал новый открытый код на устройстве, имеющем доступ к публичному интернету.
- Отработали несколько сценариев внесения вклада и публикации кода в открытом доступе.
- Опубликовали код в новом репозитории на GitHub.
Сохранение анонимности
После работы в GCHQ создателю CyberChef необходимо было сохранить анонимность, но так, чтобы это дополняло открытое сотрудничество. Они решили использовать в качестве имени пользователя строку случайных чисел.
Решение о том, как управлять вкладами
Одним из главных преимуществ открытого кода является возможность принимать сторонние вклады. Наряду с лицензией Apache 2.0 создатель опубликовал соглашение о внесении вклада. Лицензионное соглашение GCHQ OSS Contributor License Agreement объясняет, что является вкладом, а также права собственности и интеллектуальной собственности пользователей при внесении вклада в CyberChef.
CyberChef получил много интересных вкладов. Примером из раннего периода проекта является то, как один из участников реализовал набор тестов для работы CyberChef. Команда CyberChef использует этот набор тестов и сегодня.
У CyberChef есть вики с некоторыми соглашениями по коду и принципами проектирования для людей, вносящих свой вклад в проект. Эти кодовые соглашения и принципы проектирования намеренно расширены, чтобы не быть слишком предписывающими, поскольку создатель хочет свести к минимуму препятствия для тех, кто вносит свой вклад.
CyberChef оставляет за собой право отказать в участии, но до сих пор качество вкладов было высоким. CyberChef имеет встроенный в процесс сборки линтер и набор тестов, и если они отмечают вклад, люди обычно могут исправить вклад самостоятельно.
Управление CyberChef
Сотрудники GCHQ добровольно управляют приложением CyberChef наряду со своей повседневной работой.
Управление отзывами и изменениями версий
Для версионирования CyberChef использует semver для 3 различных уровней изменений.
- Патч-изменения для исправления ошибок или небольших доработок.
- Незначительные изменения, когда CyberChef добавляет новые функции или операции.
- Серьезные изменения для тех случаев, когда CyberChef вводит новую функцию или реструктуризацию, например, операцию ‘Magic’.
Общение с пользователями
GCHQ общается с пользователями CyberChef посредством:
- комментирования вопросов и запросов на исправление по мере их добавления
- используя чат Gitter, чтобы напрямую общаться с пользователями о проблемах, которые у них могут возникнуть, и новых областях, над которыми они хотят работать
Влияние открытия CyberChef
GCHQ использует CyberChef для образовательных и просветительских программ. Например, конкурс CyberFirst Girls Competitions проводится для школьниц 8-го класса, чтобы повысить их осведомленность и интерес к кибербезопасности и компьютерным наукам. В нем участницам предлагается использовать CyberChef для решения некоторых задач конкурса.
Уроки, полученные при открытии CyberChef
«Просто действуйте», — советует создатель CyberChef.
Управление и получение поддержки заинтересованных сторон было самым большим препятствием, но как только создатель получил одобрение, он смог создать учетную запись и начать публиковать код. Сообщество разработчиков открытого кода понимает, что открытый код не всегда совершенен, и именно сообщество должно помочь улучшить его со временем.