Содержание
О KasperskyOS Community Edition
KasperskyOS Community Edition (CE) — общедоступная версия KasperskyOS, предназначенная для освоения основных принципов разработки приложений под KasperskyOS. KasperskyOS Community Edition позволит вам увидеть, как концепции, заложенные в KasperskyOS, работают на практике. KasperskyOS Community Edition включает в себя примеры приложений с исходным кодом, подробные пояснения, а также инструкции и инструменты для сборки приложений.
KasperskyOS Community Edition пригодится вам для:
- изучения принципов и приемов разработки "secure by design" на практических примерах;
- изучения KasperskyOS как возможной платформы для реализации своих проектов;
- прототипирования решений (прежде всего, Embedded/IoT) на основе KasperskyOS;
- портирования приложений/компонентов на KasperskyOS;
- изучения вопросов безопасности в разработке ПО.
KasperskyOS Community Edition позволяет разрабатывать приложения как на языке C, так и на C++. Подробнее о настройке среды разработки см. "Настройка среды разработки".
Для получения KasperskyOS Community Edition перейдите по ссылке.
Помимо этой документации, также рекомендуем изучить материалы раздела сайта KasperskyOS для разработчиков.
В началоОб этом документе
Руководство разработчика KasperskyOS Community Edition адресовано специалистам, которые осуществляют разработку безопасных решений на базе KasperskyOS.
Руководство предназначено специалистам, обладающим следующими навыками: знание языков C/C++, опыт разработки под POSIX-совместимые системы, знакомство с GNU Binary Utilities (далее также "binutils").
Вы можете применять информацию в этом руководстве для выполнения следующих задач:
- установка и удаление KasperskyOS Community Edition;
- использование KasperskyOS Community Edition.
Комплект поставки
KasperskyOS SDK представляет собой набор программных средств для создания решений на базе KasperskyOS.
В комплект поставки KasperskyOS Community Edition входят:
- deb-пакет для установки KasperskyOS Community Edition, содержащий:
- образ ядра операционной системы KasperskyOS;
- инструменты для разработки (компилятор GCC, компоновщик LD, отладчик GDB, набор утилит binutils, эмулятор QEMU и сопутствующие инструменты);
- утилиты и скрипты (например, генераторы исходного кода, скрипт
makekss
для создания модуля безопасности Kaspersky Security Module, скриптmakeimg
для создания образа решения); - набор библиотек, обеспечивающих частичную совместимость со стандартом POSIX;
- драйверы;
- системные программы (например, виртуальную файловую систему);
- примеры работы с компонентами KasperskyOS Community Edition;
- лицензионное соглашение;
- файл с информацией о стороннем коде (Legal Notices).
- Руководство разработчика KasperskyOS Community Edition (онлайн-документация).
- Информация о версии (Release Notes);
KasperskyOS SDK устанавливается на компьютер под управлением ОС Debian GNU/Linux.
Следующие компоненты, входящие в комплект поставки KasperskyOS Community Edition, являются "Runtime компонентами" в соответствии с условиями лицензионного соглашения:
- Образ ядра операционной системы KasperskyOS.
Остальные части комплекта поставки не являются "Runtime компонентами". Условия и возможности использования каждого компонента могут быть дополнительно указаны в разделе "Информация о стороннем коде".
В началоСистемные требования
Для установки KasperskyOS Community Edition и запуска примеров под QEMU необходимы:
- Операционная система: Debian GNU/Linux 10 "Buster". Возможно использование Docker-контейнера.
- Процессор: процессор с архитектурой x86-64 (для большей производительности требуется поддержка аппаратной виртуализации).
- Оперативная память: для комфортной работы с инструментами сборки рекомендуется иметь не менее 4 ГБ оперативной памяти.
- Дисковое пространство: не менее 3 ГБ свободного пространства в директории
/opt
(в зависимости от разрабатываемого решения).
Для запуска примеров на аппаратной платформе Raspberry Pi необходимы:
- модель Raspberry Pi 4 Model B (ревизии 1.1, 1.2, 1.4, 1.5) с объемом оперативной памяти равным 2, 4 или 8 Гб;
- microSD-карта объемом не менее 2 Гб;
- преобразователь USB-UART.
Включенные сторонние библиотеки и приложения
Для упрощения процесса разработки приложений в состав KasperskyOS Community Edition также включены следующие сторонние библиотеки и приложения:
- Automated Testing Framework (ATF) (v.0.20) – набор библиотек для написания тестов для программ на C, C++ и POSIX shell.
Документация: https://github.com/jmmv/atf
- Boost (v.1.78.0) – собрание библиотек классов, использующих функциональность языка C++ и предоставляющих удобный кроссплатформенный высокоуровневый интерфейс для лаконичного кодирования различных повседневных подзадач программирования (работа с данными, алгоритмами, файлами, потоками и т. п.).
Документация: https://www.boost.org/doc/
- Arm Mbed TLS (v.2.28.0) – реализация протоколов TLS и SSL, а также соответствующих криптографических алгоритмов и необходимого кода поддержки.
Документация: https://github.com/Mbed-TLS/mbedtls
- Civetweb (v.1.11) – простой в использовании, мощный, встраиваемый веб-сервер на C / C ++ с дополнительной поддержкой CGI, SSL и Lua.
Документация: http://civetweb.github.io/civetweb/UserManual.html
- FFmpeg (v.5.1) – набор библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровые аудио- и видеозаписи в различных форматах.
Документация: https://ffmpeg.org/ffmpeg.html
- fmt (v.8.1.1) – библиотека для форматирования с открытым исходным кодом.
Документация: https://fmt.dev/latest/index.html
- GoogleTest (v.1.10.0) – библиотека для тестирования кода на C++.
Документация: https://google.github.io/googletest/
- iperf (v.3.10.1) – библиотека для тестирования производительности сети.
Документация: https://software.es.net/iperf/
- libffi (v.3.2.1) – библиотека, предоставляющая C-интерфейс для вызова заранее скомпилированного кода.
Документация: https://github.com/libffi/libffi
- libjpeg-turbo (v.2.0.91) – библиотека для работы с JPEG-изображениями.
Документация: https://libjpeg-turbo.org/
- jsoncpp (v.1.9.4) – библиотека для работы с форматом JSON.
Документация: https://github.com/open-source-parsers/jsoncpp
- libpng (v.1.6.38) – библиотека для работы с PNG-изображениями.
Документация: http://www.libpng.org/pub/png/libpng.html
- libxml2 (v.2.9.14) – библиотека для работы с XML.
Документация: http://xmlsoft.org/
- Eclipse Mosquitto (v.2.0.14) – брокер сообщений, реализующий протокол MQTT.
Документация: https://mosquitto.org/documentation/
- nlohmann_json (v.3.9.1) – библиотека для работы с форматом JSON.
Документация: https://github.com/nlohmann/json
- NTP (v.4.2.8P15) – библиотека для работы протоколом времени NTP.
Документация: http://www.ntp.org/documentation.html
- opencv (v.4.6.0) – библиотека компьютерного зрения с открытым исходным кодом.
Документация: https://docs.opencv.org/
- OpenSSL (v.1.1.1q) – полноценная криптографическая библиотека с открытым исходным кодом.
Документация: https://www.openssl.org/docs/
- pcre (v.8.44) – библиотека для работы с регулярными выражениями.
Документация: https://www.pcre.org/current/doc/html/
- protobuf (v.3.19.4) – библиотека для сериализации данных.
Документация: https://developers.google.com/protocol-buffers/docs/overview
- spdlog (v.1.9.2) – библиотека для журналирования.
Документация: https://github.com/gabime/spdlog
- sqlite (v.3.39.2) – библиотека для работы с базами данных.
Документация: https://www.sqlite.org/docs.html
- Zlib (v.1.2.12) – библиотека для сжатия данных.
Документация: https://zlib.net/manual.html
- usb (v.13.0.0) – библиотека для работы с USB-устройствами.
Документация: https://github.com/freebsd/freebsd-src/tree/release/13.0.0/sys/dev/usb
- libevdev (v.1.6.0) – библиотека для работы с периферийными устройствами типа evdev.
Документация: https://www.freedesktop.org/software/libevdev/doc/latest/
- Lwext4 (v.1.0.0) – библиотека для работы с файловыми системами ext2/3/4.
Документация: https://github.com/gkostka/lwext4.git
Также см. Информация о стороннем коде.
В началоОграничения и известные проблемы
Поскольку KasperskyOS Community Edition предназначен для обучения, мы интегрировали в пакет ряд ограничений:
- Не поддерживается динамическая загрузка библиотек.
- Максимальное поддерживаемое количество запущенных программ: 32.
- При завершении работы программы любым способом (например, return из основного потока исполнения) выделенные программой ресурсы не освобождаются, а сама программа переводится в "спящее" состояние. Программы не могут быть запущены повторно.
- Не поддерживается запуск двух и более программ с одинаковым EDL-описанием.
- Система останавливается, если не осталось работающих программ или если один из потоков программы-драйвера завершился (штатным или нештатным образом).