Как GCHQ сделала свое приложение CyberChef с открытым исходным кодом


Тематическое исследование о том, как GCHQ создала приложение с открытым исходным кодом CyberChef, которое помогает проводить кибер-операции через веб-браузер.

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.

Управление и получение поддержки заинтересованных сторон было самым большим препятствием, но как только создатель получил одобрение, он смог создать учетную запись и начать публиковать код. Сообщество разработчиков открытого кода понимает, что открытый код не всегда совершенен, и именно сообщество должно помочь улучшить его со временем.


Добавить комментарий